Token Cult Items
Overview ERC-1155
Total Supply:
986 ITEMS
Holders:
111 addresses
Transfers:
-
Contract:
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
CultItems
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-06 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } interface IERC1155 is IERC165 { event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); event ApprovalForAll(address indexed account, address indexed operator, bool approved); event URI(string value, uint256 indexed id); function balanceOf(address account, uint256 id) external view returns (uint256); function balanceOfBatch( address[] calldata accounts, uint256[] calldata ids ) external view returns (uint256[] memory); function setApprovalForAll(address operator, bool approved) external; function isApprovedForAll(address account, address operator) external view returns (bool); function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external; function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; } interface IERC1155Receiver is IERC165 { function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); } interface IERC1155MetadataURI is IERC1155 { function uri(uint256 id) external view returns (string memory); } pragma solidity ^0.8.1; library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } abstract contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI { using Address for address; // Mapping from token ID to account balances mapping(uint256 => mapping(address => uint256)) private _balances; // Mapping from account to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json string private _uri; function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC1155).interfaceId || interfaceId == type(IERC1155MetadataURI).interfaceId || super.supportsInterface(interfaceId); } function uri(uint256) public view virtual override returns (string memory) { return _uri; } function balanceOf(address account, uint256 id) public view virtual override returns (uint256) { require(account != address(0), "ERC1155: address zero is not a valid owner"); return _balances[id][account]; } function balanceOfBatch( address[] memory accounts, uint256[] memory ids ) public view virtual override returns (uint256[] memory) { require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch"); uint256[] memory batchBalances = new uint256[](accounts.length); for (uint256 i = 0; i < accounts.length; ++i) { batchBalances[i] = balanceOf(accounts[i], ids[i]); } return batchBalances; } function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } function isApprovedForAll(address account, address operator) public view virtual override returns (bool) { return _operatorApprovals[account][operator]; } function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: caller is not token owner or approved" ); _safeTransferFrom(from, to, id, amount, data); } /** * @dev See {IERC1155-safeBatchTransferFrom}. */ function safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: caller is not token owner or approved" ); _safeBatchTransferFrom(from, to, ids, amounts, data); } function _safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); uint256[] memory ids = _asSingletonArray(id); uint256[] memory amounts = _asSingletonArray(amount); _beforeTokenTransfer(operator, from, to, ids, amounts, data); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; emit TransferSingle(operator, from, to, id, amount); _afterTokenTransfer(operator, from, to, ids, amounts, data); _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data); } function _safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, ids, amounts, data); for (uint256 i = 0; i < ids.length; ++i) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; } emit TransferBatch(operator, from, to, ids, amounts); _afterTokenTransfer(operator, from, to, ids, amounts, data); _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data); } function _setURI(string memory newuri) internal virtual { _uri = newuri; } function _mint(address to, uint256 id, uint256 amount, bytes memory data) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); address operator = _msgSender(); uint256[] memory ids = _asSingletonArray(id); uint256[] memory amounts = _asSingletonArray(amount); _beforeTokenTransfer(operator, address(0), to, ids, amounts, data); _balances[id][to] += amount; emit TransferSingle(operator, address(0), to, id, amount); _afterTokenTransfer(operator, address(0), to, ids, amounts, data); _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data); } function _mintBatch( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, ids, amounts, data); for (uint256 i = 0; i < ids.length; i++) { _balances[ids[i]][to] += amounts[i]; } emit TransferBatch(operator, address(0), to, ids, amounts); _afterTokenTransfer(operator, address(0), to, ids, amounts, data); _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data); } function _burn(address from, uint256 id, uint256 amount) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); address operator = _msgSender(); uint256[] memory ids = _asSingletonArray(id); uint256[] memory amounts = _asSingletonArray(amount); _beforeTokenTransfer(operator, from, address(0), ids, amounts, ""); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } emit TransferSingle(operator, from, address(0), id, amount); _afterTokenTransfer(operator, from, address(0), ids, amounts, ""); } function _burnBatch(address from, uint256[] memory ids, uint256[] memory amounts) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), ids, amounts, ""); for (uint256 i = 0; i < ids.length; i++) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } } emit TransferBatch(operator, from, address(0), ids, amounts); _afterTokenTransfer(operator, from, address(0), ids, amounts, ""); } function _setApprovalForAll(address owner, address operator, bool approved) internal virtual { require(owner != operator, "ERC1155: setting approval status for self"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual {} function _afterTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual {} function _doSafeTransferAcceptanceCheck( address operator, address from, address to, uint256 id, uint256 amount, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) { if (response != IERC1155Receiver.onERC1155Received.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non-ERC1155Receiver implementer"); } } } function _doSafeBatchTransferAcceptanceCheck( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns ( bytes4 response ) { if (response != IERC1155Receiver.onERC1155BatchReceived.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non-ERC1155Receiver implementer"); } } } function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) { uint256[] memory array = new uint256[](1); array[0] = element; return array; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface ICandle { function transferFrom(address from, address to, uint256 amount) external; function balanceOf(address sender) external view returns (uint256); } contract CultItems is ERC1155, Ownable { uint256 public burn_high = 3000; uint256 public burn_mid = 1000; string public name = "Cult Items"; string public symbol = "ITEMS"; ICandle public CANDLE = ICandle(0x208234F4f8B1bBEA59cfDc38666141654e851DCe); //0x37B53840b6820075E9e17ff16D80471E29fE8705 //ICandle public CANDLE = ICandle(0x37B53840b6820075E9e17ff16D80471E29fE8705); function changeCandleAddress (address newAddy) public onlyOwner { CANDLE = ICandle(newAddy); } uint256 private _totalSupply; function totalSupply() public view virtual returns (uint256) { return _totalSupply; } struct Item { uint256 id; // the tokenId of the Item string name; // the name of the Item uint256 candleBurn; // integer amount not including decimals string description; // a short description of the item string imgdata; uint256 maxsupply; uint256 totalSupply; } mapping (uint256 => Item) public itemById; function _addItem( uint256 id, string memory _name, uint256 candleBurn, string memory description, string memory imgdata, uint256 maxsupply ) internal { require(id > 0, "id cannot be zero"); require(itemById[id].id == 0, "item with matching id already exists"); itemById[id] = Item(id, _name, candleBurn, description, imgdata, maxsupply, 0); } function addItem( uint256 id, string memory _name, uint256 candleBurn, string memory description, string memory imgdata, uint256 maxsupply ) public onlyOwner { _addItem(id, _name, candleBurn, description, imgdata, maxsupply); } function _changeItem_Name( uint256 index, string memory _name ) internal { Item memory theItem = itemById[index]; itemById[index] = Item(theItem.id, _name, theItem.candleBurn, theItem.description, theItem.imgdata, theItem.maxsupply, theItem.totalSupply); } function _changeItem_CandleBurn( uint256 index, uint256 candleBurn ) internal { Item memory theItem = itemById[index]; itemById[index] = Item(index, theItem.name, candleBurn, theItem.description, theItem.imgdata, theItem.maxsupply, theItem.totalSupply); } function _changeItem_Description( uint256 index, string memory description ) internal { Item memory theItem = itemById[index]; itemById[index] = Item(index, theItem.name, theItem.candleBurn, description, theItem.imgdata, theItem.maxsupply, theItem.totalSupply); } function _changeItem_ImgData( uint256 index, string memory imgdata ) internal { Item memory theItem = itemById[index]; itemById[index] = Item(index, theItem.name, theItem.candleBurn, theItem.description, imgdata, theItem.maxsupply, theItem.totalSupply); } function _changeItem_MaxSupply( uint256 index, uint256 maxsupply ) internal { Item memory theItem = itemById[index]; itemById[index] = Item(index, theItem.name, theItem.candleBurn, theItem.description, theItem.imgdata, maxsupply, theItem.totalSupply); } function changeItem_Name( uint256 index, string memory _name ) public onlyOwner { _changeItem_Name(index, _name); } function changeItem_CandleBurn( uint256 index, uint256 candleBurn ) public onlyOwner { _changeItem_CandleBurn(index, candleBurn); } function changeItem_Description( uint256 index, string memory description ) public onlyOwner { _changeItem_Description(index, description); } function changeItem_ImgData( uint256 index, string memory imgdata ) public onlyOwner { _changeItem_ImgData(index, imgdata); } function changeItem_MaxSupply( uint256 index, uint256 maxsupply ) public onlyOwner { _changeItem_MaxSupply(index, maxsupply); } function getItem(uint256 id) public view returns (Item memory) { return itemById[id]; } function mintItem(uint256 id) public { Item memory theItem = itemById[id]; require(theItem.id == id, "incorrect item id"); require(theItem.totalSupply + 1 <= theItem.maxsupply, "max supply reached"); bytes memory data = bytes(""); CANDLE.transferFrom( msg.sender, address(0x000000000000000000000000000000000000dEaD), theItem.candleBurn * 10 ** 18 ); _mint(msg.sender, id, 1, data); itemById[id].totalSupply = theItem.totalSupply + 1; _totalSupply++; } constructor() Ownable() { addItem( 1, "Apple", 1, "An apple.", "https://candle.farmgod.finance/static/media/apple.png", 1e6); addItem( 2, "Apple", burn_mid, "Someone took a bite of this apple...", "https://candle.farmgod.finance/static/media/apple_bite.png", 100); addItem( 11, "Briefcase", 1, "A small briefcase resembling the one King Cold used to defeat the Devil.", "https://candle.farmgod.finance/static/media/briefcase_plain.png", 1e6); addItem( 12, "Briefcase", burn_mid, "A small briefcase with a sticker, resembling the one King Cold used to defeat the Devil.", "https://candle.farmgod.finance/static/media/briefcase.png", 100); addItem( 13, "Briefcase", burn_high, "A small briefcase with stickers and a bone handle, resembling the one King Cold used to defeat the Devil.", "https://candle.farmgod.finance/static/media/briefcase_bone.png", 100); addItem( 21, "Skeleton Key", 1, "A mysterious key.", "https://candle.farmgod.finance/static/media/key.png", 1e6); addItem( 22, "Skeleton Key", burn_high, "A mysterious key made of bone.", "https://candle.farmgod.finance/static/media/key_bone.png", 100); } function jsonify(uint256 tokenId) internal view returns (string memory) { Item memory theItem = itemById[tokenId]; string memory json = Base64.encode(bytes(string(abi.encodePacked( '{"name": "', theItem.name, '", "description": "', theItem.description, '", "image": "', theItem.imgdata, '"}')))); return string(abi.encodePacked('data:application/json;base64,', json)); } function uri(uint256 id) public view override returns (string memory) { return jsonify(id); } } library Base64 { bytes internal constant TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; /// @notice Encodes some bytes to the base64 representation function encode(bytes memory data) internal pure returns (string memory) { uint256 len = data.length; if (len == 0) return ""; // multiply by 4/3 rounded up uint256 encodedLen = 4 * ((len + 2) / 3); // Add some extra buffer at the end bytes memory result = new bytes(encodedLen + 32); bytes memory table = TABLE; assembly { let tablePtr := add(table, 1) let resultPtr := add(result, 32) for { let i := 0 } lt(i, len) { } { i := add(i, 3) let input := and(mload(add(data, i)), 0xffffff) let out := mload(add(tablePtr, and(shr(18, input), 0x3F))) out := shl(8, out) out := add(out, and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF)) out := shl(8, out) out := add(out, and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF)) out := shl(8, out) out := add(out, and(mload(add(tablePtr, and(input, 0x3F))), 0xFF)) out := shl(224, out) mstore(resultPtr, out) resultPtr := add(resultPtr, 4) } switch mod(len, 3) case 1 { mstore(sub(resultPtr, 2), shl(240, 0x3d3d)) } case 2 { mstore(sub(resultPtr, 1), shl(248, 0x3d)) } mstore(result, encodedLen) } return string(result); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[],"name":"CANDLE","outputs":[{"internalType":"contract ICandle","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint256","name":"candleBurn","type":"uint256"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"imgdata","type":"string"},{"internalType":"uint256","name":"maxsupply","type":"uint256"}],"name":"addItem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burn_high","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burn_mid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddy","type":"address"}],"name":"changeCandleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"candleBurn","type":"uint256"}],"name":"changeItem_CandleBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"string","name":"description","type":"string"}],"name":"changeItem_Description","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"string","name":"imgdata","type":"string"}],"name":"changeItem_ImgData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"maxsupply","type":"uint256"}],"name":"changeItem_MaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"string","name":"_name","type":"string"}],"name":"changeItem_Name","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getItem","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"candleBurn","type":"uint256"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"imgdata","type":"string"},{"internalType":"uint256","name":"maxsupply","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"internalType":"struct CultItems.Item","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"itemById","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"candleBurn","type":"uint256"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"imgdata","type":"string"},{"internalType":"uint256","name":"maxsupply","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"mintItem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
610bb86004556103e860055560c0604052600a60809081526943756c74204974656d7360b01b60a0526006906200003790826200067f565b506040805180820190915260058152644954454d5360d81b60208201526007906200006390826200067f565b50600880546001600160a01b03191673208234f4f8b1bbea59cfdc38666141654e851dce1790553480156200009757600080fd5b50620000a333620003af565b6200010f6001604051806040016040528060058152602001644170706c6560d81b81525060016040518060400160405280600981526020016820b71030b83836329760b91b81525060405180606001604052806035815260200162004abe60359139620f424062000401565b620001726002604051806040016040528060058152602001644170706c6560d81b815250600554604051806060016040528060248152602001620049cc602491396040518060600160405280603a815260200162004c16603a9139606462000401565b620001da600b6040518060400160405280600981526020016842726965666361736560b81b815250600160405180608001604052806048815260200162004bce604891396040518060600160405280603f815260200162004b8f603f9139620f424062000401565b62000241600c6040518060400160405280600981526020016842726965666361736560b81b815250600554604051806080016040528060588152602001620049f0605891396040518060600160405280603981526020016200499360399139606462000401565b620002a8600d6040518060400160405280600981526020016842726965666361736560b81b8152506004546040518060a001604052806069815260200162004b26606991396040518060600160405280603e815260200162004a80603e9139606462000401565b6200032360156040518060400160405280600c81526020016b536b656c65746f6e204b657960a01b815250600160405180604001604052806011815260200170209036bcb9ba32b934b7bab99035b2bc9760791b81525060405180606001604052806033815260200162004af360339139620f424062000401565b620003a960166040518060400160405280600c81526020016b536b656c65746f6e204b657960a01b8152506004546040518060400160405280601e81526020017f41206d7973746572696f7573206b6579206d616465206f6620626f6e652e000081525060405180606001604052806038815260200162004a4860389139606462000401565b6200074b565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6003546001600160a01b03163314620004615760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6200047186868686868662000479565b505050505050565b60008611620004bf5760405162461bcd60e51b815260206004820152601160248201527069642063616e6e6f74206265207a65726f60781b604482015260640162000458565b6000868152600a602052604090205415620005295760405162461bcd60e51b8152602060048201526024808201527f6974656d2077697468206d61746368696e6720696420616c72656164792065786044820152636973747360e01b606482015260840162000458565b6040805160e0810182528781526020808201888152828401889052606083018790526080830186905260a08301859052600060c084018190528a8152600a90925292902081518155915190919060018201906200058790826200067f565b506040820151600282015560608201516003820190620005a890826200067f565b5060808201516004820190620005bf90826200067f565b5060a0820151600582015560c090910151600690910155505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200060957607f821691505b6020821081036200062a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200067a57600081815260208120601f850160051c81016020861015620006595750805b601f850160051c820191505b81811015620004715782815560010162000665565b505050565b81516001600160401b038111156200069b576200069b620005de565b620006b381620006ac8454620005f4565b8462000630565b602080601f831160018114620006eb5760008415620006d25750858301515b600019600386901b1c1916600185901b17855562000471565b600085815260208120601f198616915b828110156200071c57888601518255948401946001909101908401620006fb565b50858210156200073b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b614238806200075b6000396000f3fe608060405234801561001057600080fd5b50600436106101b85760003560e01c80636f90702f116100f9578063b34085fc11610097578063d6fd5e4e11610071578063d6fd5e4e146103ca578063e985e9c5146103dd578063f242432a14610426578063f2fde38b1461043957600080fd5b8063b34085fc14610371578063c06b8dc014610391578063c51a7945146103a457600080fd5b80638da5cb5b116100d35780638da5cb5b1461030457806395d89b4114610343578063a22cb4651461034b578063a6e9f6ea1461035e57600080fd5b80636f90702f146102d6578063715018a6146102e95780637b8de08b146102f157600080fd5b806318160ddd11610166578063306c642311610140578063306c64231461027a5780633129e7731461028d5780634e1273f4146102ad578063526489a0146102cd57600080fd5b806318160ddd1461024c5780631c379a53146102545780632eb2c2d61461026757600080fd5b80630e06a3fe116101975780630e06a3fe1461021b5780630e89341c1461022457806317fb85941461023757600080fd5b8062fdd58e146101bd57806301ffc9a7146101e357806306fdde0314610206575b600080fd5b6101d06101cb3660046134a2565b61044c565b6040519081526020015b60405180910390f35b6101f66101f13660046134fa565b610512565b60405190151581526020016101da565b61020e6105f5565b6040516101da919061358c565b6101d060055481565b61020e61023236600461359f565b610683565b61024a61024536600461359f565b61068e565b005b6009546101d0565b61024a6102623660046135b8565b610a66565b61024a61027536600461377b565b610adb565b61024a610288366004613825565b610b8a565b6102a061029b36600461359f565b610c38565b6040516101da9190613840565b6102c06102bb3660046138ec565b610e7b565b6040516101da91906139f2565b6101d060045481565b61024a6102e4366004613a05565b610fb9565b61024a61102a565b61024a6102ff3660046135b8565b61109d565b60035473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101da565b61020e61110e565b61024a610359366004613a42565b61111b565b61024a61036c366004613a7e565b611126565b60085461031e9073ffffffffffffffffffffffffffffffffffffffff1681565b61024a61039f366004613a05565b6111a3565b6103b76103b236600461359f565b611214565b6040516101da9796959493929190613b22565b61024a6103d8366004613a05565b6113e7565b6101f66103eb366004613b7e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b61024a610434366004613bb1565b611458565b61024a610447366004613825565b611500565b600073ffffffffffffffffffffffffffffffffffffffff83166104dc5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060008181526020818152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014806105a557507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061050c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461050c565b6006805461060290613c16565b80601f016020809104026020016040519081016040528092919081815260200182805461062e90613c16565b801561067b5780601f106106505761010080835404028352916020019161067b565b820191906000526020600020905b81548152906001019060200180831161065e57829003601f168201915b505050505081565b606061050c826115fc565b6000600a60008381526020019081526020016000206040518060e0016040529081600082015481526020016001820180546106c890613c16565b80601f01602080910402602001604051908101604052809291908181526020018280546106f490613c16565b80156107415780601f1061071657610100808354040283529160200191610741565b820191906000526020600020905b81548152906001019060200180831161072457829003601f168201915b505050505081526020016002820154815260200160038201805461076490613c16565b80601f016020809104026020016040519081016040528092919081815260200182805461079090613c16565b80156107dd5780601f106107b2576101008083540402835291602001916107dd565b820191906000526020600020905b8154815290600101906020018083116107c057829003601f168201915b505050505081526020016004820180546107f690613c16565b80601f016020809104026020016040519081016040528092919081815260200182805461082290613c16565b801561086f5780601f106108445761010080835404028352916020019161086f565b820191906000526020600020905b81548152906001019060200180831161085257829003601f168201915b50505050508152602001600582015481526020016006820154815250509050818160000151146108e15760405162461bcd60e51b815260206004820152601160248201527f696e636f7272656374206974656d20696400000000000000000000000000000060448201526064016104d3565b60a081015160c08201516108f6906001613c98565b11156109445760405162461bcd60e51b815260206004820152601260248201527f6d617820737570706c792072656163686564000000000000000000000000000060448201526064016104d3565b604080516020810182526000815260085491830151909173ffffffffffffffffffffffffffffffffffffffff16906323b872dd90339061dead9061099090670de0b6b3a7640000613cab565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b158015610a0457600080fd5b505af1158015610a18573d6000803e3d6000fd5b50505050610a29338460018461185c565b60c0820151610a39906001613c98565b6000848152600a60205260408120600601919091556009805491610a5c83613cc2565b9190505550505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610acd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d3565b610ad782826119b3565b5050565b73ffffffffffffffffffffffffffffffffffffffff8516331480610b045750610b0485336103eb565b610b765760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206f7220617070726f76656400000000000000000000000000000000000060648201526084016104d3565b610b838585858585611c7c565b5050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d3565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610c786040518060e00160405280600081526020016060815260200160008152602001606081526020016060815260200160008152602001600081525090565b600a60008381526020019081526020016000206040518060e001604052908160008201548152602001600182018054610cb090613c16565b80601f0160208091040260200160405190810160405280929190818152602001828054610cdc90613c16565b8015610d295780601f10610cfe57610100808354040283529160200191610d29565b820191906000526020600020905b815481529060010190602001808311610d0c57829003601f168201915b5050505050815260200160028201548152602001600382018054610d4c90613c16565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7890613c16565b8015610dc55780601f10610d9a57610100808354040283529160200191610dc5565b820191906000526020600020905b815481529060010190602001808311610da857829003601f168201915b50505050508152602001600482018054610dde90613c16565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0a90613c16565b8015610e575780601f10610e2c57610100808354040283529160200191610e57565b820191906000526020600020905b815481529060010190602001808311610e3a57829003601f168201915b50505050508152602001600582015481526020016006820154815250509050919050565b60608151835114610ef45760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d61746368000000000000000000000000000000000000000000000060648201526084016104d3565b6000835167ffffffffffffffff811115610f1057610f106135da565b604051908082528060200260200182016040528015610f39578160200160208202803683370190505b50905060005b8451811015610fb157610f84858281518110610f5d57610f5d613cfa565b6020026020010151858381518110610f7757610f77613cfa565b602002602001015161044c565b828281518110610f9657610f96613cfa565b6020908102919091010152610faa81613cc2565b9050610f3f565b509392505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633146110205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d3565b610ad78282611f60565b60035473ffffffffffffffffffffffffffffffffffffffff1633146110915760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d3565b61109b60006121dd565b565b60035473ffffffffffffffffffffffffffffffffffffffff1633146111045760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d3565b610ad78282612254565b6007805461060290613c16565b610ad73383836124cd565b60035473ffffffffffffffffffffffffffffffffffffffff16331461118d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d3565b61119b868686868686612606565b505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff16331461120a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d3565b610ad78282612786565b600a602052600090815260409020805460018201805491929161123690613c16565b80601f016020809104026020016040519081016040528092919081815260200182805461126290613c16565b80156112af5780601f10611284576101008083540402835291602001916112af565b820191906000526020600020905b81548152906001019060200180831161129257829003601f168201915b5050505050908060020154908060030180546112ca90613c16565b80601f01602080910402602001604051908101604052809291908181526020018280546112f690613c16565b80156113435780601f1061131857610100808354040283529160200191611343565b820191906000526020600020905b81548152906001019060200180831161132657829003601f168201915b50505050509080600401805461135890613c16565b80601f016020809104026020016040519081016040528092919081815260200182805461138490613c16565b80156113d15780601f106113a6576101008083540402835291602001916113d1565b820191906000526020600020905b8154815290600101906020018083116113b457829003601f168201915b5050505050908060050154908060060154905087565b60035473ffffffffffffffffffffffffffffffffffffffff16331461144e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d3565b610ad782826129ff565b73ffffffffffffffffffffffffffffffffffffffff8516331480611481575061148185336103eb565b6114f35760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206f7220617070726f76656400000000000000000000000000000000000060648201526084016104d3565b610b838585858585612c78565b60035473ffffffffffffffffffffffffffffffffffffffff1633146115675760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d3565b73ffffffffffffffffffffffffffffffffffffffff81166115f05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104d3565b6115f9816121dd565b50565b6000818152600a60209081526040808320815160e0810190925280548252600181018054606095948401919061163190613c16565b80601f016020809104026020016040519081016040528092919081815260200182805461165d90613c16565b80156116aa5780601f1061167f576101008083540402835291602001916116aa565b820191906000526020600020905b81548152906001019060200180831161168d57829003601f168201915b50505050508152602001600282015481526020016003820180546116cd90613c16565b80601f01602080910402602001604051908101604052809291908181526020018280546116f990613c16565b80156117465780601f1061171b57610100808354040283529160200191611746565b820191906000526020600020905b81548152906001019060200180831161172957829003601f168201915b5050505050815260200160048201805461175f90613c16565b80601f016020809104026020016040519081016040528092919081815260200182805461178b90613c16565b80156117d85780601f106117ad576101008083540402835291602001916117d8565b820191906000526020600020905b8154815290600101906020018083116117bb57829003601f168201915b50505050508152602001600582015481526020016006820154815250509050600061183182602001518360600151846080015160405160200161181d93929190613d29565b604051602081830303815290604052612e82565b9050806040516020016118449190613e13565b60405160208183030381529060405292505050919050565b73ffffffffffffffffffffffffffffffffffffffff84166118e55760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104d3565b3360006118f18561305f565b905060006118fe8561305f565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b1684529091528120805487929061193d908490613c98565b9091555050604080518781526020810187905273ffffffffffffffffffffffffffffffffffffffff808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46119aa836000898989896130aa565b50505050505050565b6000600a60008481526020019081526020016000206040518060e0016040529081600082015481526020016001820180546119ed90613c16565b80601f0160208091040260200160405190810160405280929190818152602001828054611a1990613c16565b8015611a665780601f10611a3b57610100808354040283529160200191611a66565b820191906000526020600020905b815481529060010190602001808311611a4957829003601f168201915b5050505050815260200160028201548152602001600382018054611a8990613c16565b80601f0160208091040260200160405190810160405280929190818152602001828054611ab590613c16565b8015611b025780601f10611ad757610100808354040283529160200191611b02565b820191906000526020600020905b815481529060010190602001808311611ae557829003601f168201915b50505050508152602001600482018054611b1b90613c16565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4790613c16565b8015611b945780601f10611b6957610100808354040283529160200191611b94565b820191906000526020600020905b815481529060010190602001808311611b7757829003601f168201915b505050505081526020016005820154815260200160068201548152505090506040518060e00160405280848152602001826020015181526020018260400151815260200182606001518152602001826080015181526020018381526020018260c00151815250600a6000858152602001908152602001600020600082015181600001556020820151816001019081611c2c9190613ea3565b506040820151600282015560608201516003820190611c4b9082613ea3565b5060808201516004820190611c609082613ea3565b5060a0820151600582015560c090910151600690910155505050565b8151835114611cf35760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016104d3565b73ffffffffffffffffffffffffffffffffffffffff8416611d7c5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104d3565b3360005b8451811015611ed3576000858281518110611d9d57611d9d613cfa565b602002602001015190506000858381518110611dbb57611dbb613cfa565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8e168352909352919091205490915081811015611e6e5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016104d3565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8e8116855292528083208585039055908b16825281208054849290611eb8908490613c98565b9250508190555050505080611ecc90613cc2565b9050611d80565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611f4a929190613fbd565b60405180910390a461119b8187878787876132e6565b6000600a60008481526020019081526020016000206040518060e001604052908160008201548152602001600182018054611f9a90613c16565b80601f0160208091040260200160405190810160405280929190818152602001828054611fc690613c16565b80156120135780601f10611fe857610100808354040283529160200191612013565b820191906000526020600020905b815481529060010190602001808311611ff657829003601f168201915b505050505081526020016002820154815260200160038201805461203690613c16565b80601f016020809104026020016040519081016040528092919081815260200182805461206290613c16565b80156120af5780601f10612084576101008083540402835291602001916120af565b820191906000526020600020905b81548152906001019060200180831161209257829003601f168201915b505050505081526020016004820180546120c890613c16565b80601f01602080910402602001604051908101604052809291908181526020018280546120f490613c16565b80156121415780601f1061211657610100808354040283529160200191612141565b820191906000526020600020905b81548152906001019060200180831161212457829003601f168201915b505050505081526020016005820154815260200160068201548152505090506040518060e00160405280826000015181526020018381526020018260400151815260200182606001518152602001826080015181526020018260a0015181526020018260c00151815250600a6000858152602001908152602001600020600082015181600001556020820151816001019081611c2c9190613ea3565b6003805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000600a60008481526020019081526020016000206040518060e00160405290816000820154815260200160018201805461228e90613c16565b80601f01602080910402602001604051908101604052809291908181526020018280546122ba90613c16565b80156123075780601f106122dc57610100808354040283529160200191612307565b820191906000526020600020905b8154815290600101906020018083116122ea57829003601f168201915b505050505081526020016002820154815260200160038201805461232a90613c16565b80601f016020809104026020016040519081016040528092919081815260200182805461235690613c16565b80156123a35780601f10612378576101008083540402835291602001916123a3565b820191906000526020600020905b81548152906001019060200180831161238657829003601f168201915b505050505081526020016004820180546123bc90613c16565b80601f01602080910402602001604051908101604052809291908181526020018280546123e890613c16565b80156124355780601f1061240a57610100808354040283529160200191612435565b820191906000526020600020905b81548152906001019060200180831161241857829003601f168201915b505050505081526020016005820154815260200160068201548152505090506040518060e001604052808481526020018260200151815260200183815260200182606001518152602001826080015181526020018260a0015181526020018260c00151815250600a6000858152602001908152602001600020600082015181600001556020820151816001019081611c2c9190613ea3565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361256e5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084016104d3565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600086116126565760405162461bcd60e51b815260206004820152601160248201527f69642063616e6e6f74206265207a65726f00000000000000000000000000000060448201526064016104d3565b6000868152600a6020526040902054156126d75760405162461bcd60e51b8152602060048201526024808201527f6974656d2077697468206d61746368696e6720696420616c726561647920657860448201527f697374730000000000000000000000000000000000000000000000000000000060648201526084016104d3565b6040805160e0810182528781526020808201888152828401889052606083018790526080830186905260a08301859052600060c084018190528a8152600a90925292902081518155915190919060018201906127339082613ea3565b5060408201516002820155606082015160038201906127529082613ea3565b50608082015160048201906127679082613ea3565b5060a0820151600582015560c090910151600690910155505050505050565b6000600a60008481526020019081526020016000206040518060e0016040529081600082015481526020016001820180546127c090613c16565b80601f01602080910402602001604051908101604052809291908181526020018280546127ec90613c16565b80156128395780601f1061280e57610100808354040283529160200191612839565b820191906000526020600020905b81548152906001019060200180831161281c57829003601f168201915b505050505081526020016002820154815260200160038201805461285c90613c16565b80601f016020809104026020016040519081016040528092919081815260200182805461288890613c16565b80156128d55780601f106128aa576101008083540402835291602001916128d5565b820191906000526020600020905b8154815290600101906020018083116128b857829003601f168201915b505050505081526020016004820180546128ee90613c16565b80601f016020809104026020016040519081016040528092919081815260200182805461291a90613c16565b80156129675780601f1061293c57610100808354040283529160200191612967565b820191906000526020600020905b81548152906001019060200180831161294a57829003601f168201915b505050505081526020016005820154815260200160068201548152505090506040518060e001604052808481526020018260200151815260200182604001518152602001826060015181526020018381526020018260a0015181526020018260c00151815250600a6000858152602001908152602001600020600082015181600001556020820151816001019081611c2c9190613ea3565b6000600a60008481526020019081526020016000206040518060e001604052908160008201548152602001600182018054612a3990613c16565b80601f0160208091040260200160405190810160405280929190818152602001828054612a6590613c16565b8015612ab25780601f10612a8757610100808354040283529160200191612ab2565b820191906000526020600020905b815481529060010190602001808311612a9557829003601f168201915b5050505050815260200160028201548152602001600382018054612ad590613c16565b80601f0160208091040260200160405190810160405280929190818152602001828054612b0190613c16565b8015612b4e5780601f10612b2357610100808354040283529160200191612b4e565b820191906000526020600020905b815481529060010190602001808311612b3157829003601f168201915b50505050508152602001600482018054612b6790613c16565b80601f0160208091040260200160405190810160405280929190818152602001828054612b9390613c16565b8015612be05780601f10612bb557610100808354040283529160200191612be0565b820191906000526020600020905b815481529060010190602001808311612bc357829003601f168201915b505050505081526020016005820154815260200160068201548152505090506040518060e001604052808481526020018260200151815260200182604001518152602001838152602001826080015181526020018260a0015181526020018260c00151815250600a6000858152602001908152602001600020600082015181600001556020820151816001019081611c2c9190613ea3565b73ffffffffffffffffffffffffffffffffffffffff8416612d015760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104d3565b336000612d0d8561305f565b90506000612d1a8561305f565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8c16845290915290205485811015612dc05760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016104d3565b60008781526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8d8116855292528083208985039055908a16825281208054889290612e0a908490613c98565b9091555050604080518881526020810188905273ffffffffffffffffffffffffffffffffffffffff808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4612e77848a8a8a8a8a6130aa565b505050505050505050565b80516060906000819003612ea6575050604080516020810190915260008152919050565b60006003612eb5836002613c98565b612ebf9190613feb565b612eca906004613cab565b90506000612ed9826020613c98565b67ffffffffffffffff811115612ef157612ef16135da565b6040519080825280601f01601f191660200182016040528015612f1b576020820181803683370190505b50905060006040518060600160405280604081526020016141c3604091399050600181016020830160005b86811015612fa7576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b835260049092019101612f46565b506003860660018114612fc1576002811461300b57613051565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830152613051565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b505050918152949350505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061309957613099613cfa565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b1561119b576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e61906131219089908990889088908890600401614026565b6020604051808303816000875af192505050801561317a575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261317791810190614076565b60015b61322f57613186614093565b806308c379a0036131bf575061319a6140af565b806131a557506131c1565b8060405162461bcd60e51b81526004016104d3919061358c565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e74657200000000000000000000000060648201526084016104d3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146119aa5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016104d3565b73ffffffffffffffffffffffffffffffffffffffff84163b1561119b576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c819061335d9089908990889088908890600401614157565b6020604051808303816000875af19250505080156133b6575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526133b391810190614076565b60015b6133c257613186614093565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c8100000000000000000000000000000000000000000000000000000000146119aa5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016104d3565b803573ffffffffffffffffffffffffffffffffffffffff8116811461349d57600080fd5b919050565b600080604083850312156134b557600080fd5b6134be83613479565b946020939093013593505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146115f957600080fd5b60006020828403121561350c57600080fd5b8135613517816134cc565b9392505050565b60005b83811015613539578181015183820152602001613521565b50506000910152565b6000815180845261355a81602086016020860161351e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006135176020830184613542565b6000602082840312156135b157600080fd5b5035919050565b600080604083850312156135cb57600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561364d5761364d6135da565b6040525050565b600067ffffffffffffffff82111561366e5761366e6135da565b5060051b60200190565b600082601f83011261368957600080fd5b8135602061369682613654565b6040516136a38282613609565b83815260059390931b85018201928281019150868411156136c357600080fd5b8286015b848110156136de57803583529183019183016136c7565b509695505050505050565b600082601f8301126136fa57600080fd5b813567ffffffffffffffff811115613714576137146135da565b60405161374960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160182613609565b81815284602083860101111561375e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561379357600080fd5b61379c86613479565b94506137aa60208701613479565b9350604086013567ffffffffffffffff808211156137c757600080fd5b6137d389838a01613678565b945060608801359150808211156137e957600080fd5b6137f589838a01613678565b9350608088013591508082111561380b57600080fd5b50613818888289016136e9565b9150509295509295909350565b60006020828403121561383757600080fd5b61351782613479565b60208152815160208201526000602083015160e06040840152613867610100840182613542565b90506040840151606084015260608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160808601526138ad8383613542565b925060808601519150808584030160a0860152506138cb8282613542565b91505060a084015160c084015260c084015160e08401528091505092915050565b600080604083850312156138ff57600080fd5b823567ffffffffffffffff8082111561391757600080fd5b818501915085601f83011261392b57600080fd5b8135602061393882613654565b6040516139458282613609565b83815260059390931b850182019282810191508984111561396557600080fd5b948201945b8386101561398a5761397b86613479565b8252948201949082019061396a565b965050860135925050808211156139a057600080fd5b506139ad85828601613678565b9150509250929050565b600081518084526020808501945080840160005b838110156139e7578151875295820195908201906001016139cb565b509495945050505050565b60208152600061351760208301846139b7565b60008060408385031215613a1857600080fd5b82359150602083013567ffffffffffffffff811115613a3657600080fd5b6139ad858286016136e9565b60008060408385031215613a5557600080fd5b613a5e83613479565b915060208301358015158114613a7357600080fd5b809150509250929050565b60008060008060008060c08789031215613a9757600080fd5b86359550602087013567ffffffffffffffff80821115613ab657600080fd5b613ac28a838b016136e9565b9650604089013595506060890135915080821115613adf57600080fd5b613aeb8a838b016136e9565b94506080890135915080821115613b0157600080fd5b50613b0e89828a016136e9565b92505060a087013590509295509295509295565b87815260e060208201526000613b3b60e0830189613542565b8760408401528281036060840152613b538188613542565b90508281036080840152613b678187613542565b60a0840195909552505060c0015295945050505050565b60008060408385031215613b9157600080fd5b613b9a83613479565b9150613ba860208401613479565b90509250929050565b600080600080600060a08688031215613bc957600080fd5b613bd286613479565b9450613be060208701613479565b93506040860135925060608601359150608086013567ffffffffffffffff811115613c0a57600080fd5b613818888289016136e9565b600181811c90821680613c2a57607f821691505b602082108103613c63577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561050c5761050c613c69565b808202811582820484141761050c5761050c613c69565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613cf357613cf3613c69565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f7b226e616d65223a202200000000000000000000000000000000000000000000815260008451613d6181600a85016020890161351e565b7f222c20226465736372697074696f6e223a202200000000000000000000000000600a918401918201528451613d9e81601d84016020890161351e565b7f222c2022696d616765223a202200000000000000000000000000000000000000601d92909101918201528351613ddc81602a84016020880161351e565b7f227d000000000000000000000000000000000000000000000000000000000000602a9290910191820152602c0195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251613e4b81601d85016020870161351e565b91909101601d0192915050565b601f821115613e9e57600081815260208120601f850160051c81016020861015613e7f5750805b601f850160051c820191505b8181101561119b57828155600101613e8b565b505050565b815167ffffffffffffffff811115613ebd57613ebd6135da565b613ed181613ecb8454613c16565b84613e58565b602080601f831160018114613f245760008415613eee5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561119b565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015613f7157888601518255948401946001909101908401613f52565b5085821015613fad57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000613fd060408301856139b7565b8281036020840152613fe281856139b7565b95945050505050565b600082614021577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261406b60a0830184613542565b979650505050505050565b60006020828403121561408857600080fd5b8151613517816134cc565b600060033d11156140ac5760046000803e5060005160e01c5b90565b600060443d10156140bd5790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff816024840111818411171561410b57505050505090565b82850191508151818111156141235750505050505090565b843d870101602082850101111561413d5750505050505090565b61414c60208286010187613609565b509095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261419060a08301866139b7565b82810360608401526141a281866139b7565b905082810360808401526141b68185613542565b9897505050505050505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa264697066735822122074a446ca0cff9725ca0607bc46df639a7b84b418828ad27d640b4b6e11a85ef664736f6c6343000812003368747470733a2f2f63616e646c652e6661726d676f642e66696e616e63652f7374617469632f6d656469612f6272696566636173652e706e67536f6d656f6e6520746f6f6b20612062697465206f662074686973206170706c652e2e2e4120736d616c6c206272696566636173652077697468206120737469636b65722c20726573656d626c696e6720746865206f6e65204b696e6720436f6c64207573656420746f206465666561742074686520446576696c2e68747470733a2f2f63616e646c652e6661726d676f642e66696e616e63652f7374617469632f6d656469612f6b65795f626f6e652e706e6768747470733a2f2f63616e646c652e6661726d676f642e66696e616e63652f7374617469632f6d656469612f6272696566636173655f626f6e652e706e6768747470733a2f2f63616e646c652e6661726d676f642e66696e616e63652f7374617469632f6d656469612f6170706c652e706e6768747470733a2f2f63616e646c652e6661726d676f642e66696e616e63652f7374617469632f6d656469612f6b65792e706e674120736d616c6c20627269656663617365207769746820737469636b65727320616e64206120626f6e652068616e646c652c20726573656d626c696e6720746865206f6e65204b696e6720436f6c64207573656420746f206465666561742074686520446576696c2e68747470733a2f2f63616e646c652e6661726d676f642e66696e616e63652f7374617469632f6d656469612f6272696566636173655f706c61696e2e706e674120736d616c6c2062726965666361736520726573656d626c696e6720746865206f6e65204b696e6720436f6c64207573656420746f206465666561742074686520446576696c2e68747470733a2f2f63616e646c652e6661726d676f642e66696e616e63652f7374617469632f6d656469612f6170706c655f626974652e706e67
Deployed ByteCode Sourcemap
19571:7308:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7687:230;;;;;;:::i;:::-;;:::i;:::-;;;620:25:1;;;608:2;593:18;7687:230:0;;;;;;;;7256:310;;;;;;:::i;:::-;;:::i;:::-;;;1253:14:1;;1246:22;1228:41;;1216:2;1201:18;7256:310:0;1088:187:1;19698:33:0;;;:::i;:::-;;;;;;;:::i;19655:30::-;;;;;;26767:107;;;;;;:::i;:::-;;:::i;23927:597::-;;;;;;:::i;:::-;;:::i;:::-;;20146:99;20225:12;;20146:99;;23647:163;;;;;;:::i;:::-;;:::i;9254:438::-;;;;;;:::i;:::-;;:::i;19993:108::-;;;;;;:::i;:::-;;:::i;23818:101::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7925:499::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19617:31::-;;;;;;22953:152;;;;;;:::i;:::-;;:::i;18764:94::-;;;:::i;23114:168::-;;;;;;:::i;:::-;;:::i;18113:87::-;18186:6;;;;18113:87;;;9266:42:1;9254:55;;;9236:74;;9224:2;9209:18;18113:87:0;9090:226:1;19738:30:0;;;:::i;8432:155::-;;;;;;:::i;:::-;;:::i;21087:300::-;;;;;;:::i;:::-;;:::i;19777:75::-;;;;;;;;;23477:161;;;;;;:::i;:::-;;:::i;20594:41::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;23291:177::-;;;;;;:::i;:::-;;:::i;8595:168::-;;;;;;:::i;:::-;8718:27;;;;8694:4;8718:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;8595:168;8771:406;;;;;;:::i;:::-;;:::i;19013:192::-;;;;;;:::i;:::-;;:::i;7687:230::-;7773:7;7801:21;;;7793:76;;;;-1:-1:-1;;;7793:76:0;;12790:2:1;7793:76:0;;;12772:21:1;12829:2;12809:18;;;12802:30;12868:34;12848:18;;;12841:62;12939:12;12919:18;;;12912:40;12969:19;;7793:76:0;;;;;;;;;-1:-1:-1;7887:9:0;:13;;;;;;;;;;;:22;;;;;;;;;;;7687:230;;;;;:::o;7256:310::-;7358:4;7395:41;;;7410:26;7395:41;;:110;;-1:-1:-1;7453:52:0;;;7468:37;7453:52;7395:110;:163;;;-1:-1:-1;6699:25:0;6684:40;;;;7522:36;6575:157;19698:33;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26767:107::-;26822:13;26855:11;26863:2;26855:7;:11::i;23927:597::-;23975:19;23997:8;:12;24006:2;23997:12;;;;;;;;;;;23975:34;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24042:2;24028:7;:10;;;:16;24020:46;;;;-1:-1:-1;;;24020:46:0;;13643:2:1;24020:46:0;;;13625:21:1;13682:2;13662:18;;;13655:30;13721:19;13701:18;;;13694:47;13758:18;;24020:46:0;13441:341:1;24020:46:0;24112:17;;;;24085:19;;;;:23;;24107:1;24085:23;:::i;:::-;:44;;24077:75;;;;-1:-1:-1;;;24077:75:0;;14308:2:1;24077:75:0;;;14290:21:1;14347:2;14327:18;;;14320:30;14386:20;14366:18;;;14359:48;14424:18;;24077:75:0;14106:342:1;24077:75:0;24193:9;;;;;;;;24173:17;24193:9;;24222:6;;24347:18;;;;24193:9;;24222:6;;;:19;;24256:10;;24289:42;;24347:29;;24368:8;24347:29;:::i;:::-;24222:165;;;;;;;;;;14838:42:1;14907:15;;;24222:165:0;;;14889:34:1;14959:15;;;;14939:18;;;14932:43;14991:18;;;14984:34;14801:18;;24222:165:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24400:30;24406:10;24418:2;24422:1;24425:4;24400:5;:30::i;:::-;24468:19;;;;:23;;24490:1;24468:23;:::i;:::-;24441:12;;;;:8;:12;;;;;:24;;:50;;;;24502:12;:14;;;;;;:::i;:::-;;;;;;23964:560;;23927:597;:::o;23647:163::-;18186:6;;18333:23;18186:6;6334:10;18333:23;18325:68;;;;-1:-1:-1;;;18325:68:0;;15431:2:1;18325:68:0;;;15413:21:1;;;15450:18;;;15443:30;15509:34;15489:18;;;15482:62;15561:18;;18325:68:0;15229:356:1;18325:68:0;23763:39:::1;23785:5;23792:9;23763:21;:39::i;:::-;23647:163:::0;;:::o;9254:438::-;9487:20;;;6334:10;9487:20;;:60;;-1:-1:-1;9511:36:0;9528:4;6334:10;8595:168;:::i;9511:36::-;9465:156;;;;-1:-1:-1;;;9465:156:0;;15792:2:1;9465:156:0;;;15774:21:1;15831:2;15811:18;;;15804:30;15870:34;15850:18;;;15843:62;15941:16;15921:18;;;15914:44;15975:19;;9465:156:0;15590:410:1;9465:156:0;9632:52;9655:4;9661:2;9665:3;9670:7;9679:4;9632:22;:52::i;:::-;9254:438;;;;;:::o;19993:108::-;18186:6;;18333:23;18186:6;6334:10;18333:23;18325:68;;;;-1:-1:-1;;;18325:68:0;;15431:2:1;18325:68:0;;;15413:21:1;;;15450:18;;;15443:30;15509:34;15489:18;;;15482:62;15561:18;;18325:68:0;15229:356:1;18325:68:0;20068:6:::1;:25:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;19993:108::o;23818:101::-;23868:11;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23868:11:0;23899:8;:12;23908:2;23899:12;;;;;;;;;;;23892:19;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23818:101;;;:::o;7925:499::-;8061:16;8117:3;:10;8098:8;:15;:29;8090:83;;;;-1:-1:-1;;;8090:83:0;;16207:2:1;8090:83:0;;;16189:21:1;16246:2;16226:18;;;16219:30;16285:34;16265:18;;;16258:62;16356:11;16336:18;;;16329:39;16385:19;;8090:83:0;16005:405:1;8090:83:0;8186:30;8233:8;:15;8219:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8219:30:0;;8186:63;;8267:9;8262:122;8286:8;:15;8282:1;:19;8262:122;;;8342:30;8352:8;8361:1;8352:11;;;;;;;;:::i;:::-;;;;;;;8365:3;8369:1;8365:6;;;;;;;;:::i;:::-;;;;;;;8342:9;:30::i;:::-;8323:13;8337:1;8323:16;;;;;;;;:::i;:::-;;;;;;;;;;:49;8303:3;;;:::i;:::-;;;8262:122;;;-1:-1:-1;8403:13:0;7925:499;-1:-1:-1;;;7925:499:0:o;22953:152::-;18186:6;;18333:23;18186:6;6334:10;18333:23;18325:68;;;;-1:-1:-1;;;18325:68:0;;15431:2:1;18325:68:0;;;15413:21:1;;;15450:18;;;15443:30;15509:34;15489:18;;;15482:62;15561:18;;18325:68:0;15229:356:1;18325:68:0;23067:30:::1;23084:5;23091;23067:16;:30::i;18764:94::-:0;18186:6;;18333:23;18186:6;6334:10;18333:23;18325:68;;;;-1:-1:-1;;;18325:68:0;;15431:2:1;18325:68:0;;;15413:21:1;;;15450:18;;;15443:30;15509:34;15489:18;;;15482:62;15561:18;;18325:68:0;15229:356:1;18325:68:0;18829:21:::1;18847:1;18829:9;:21::i;:::-;18764:94::o:0;23114:168::-;18186:6;;18333:23;18186:6;6334:10;18333:23;18325:68;;;;-1:-1:-1;;;18325:68:0;;15431:2:1;18325:68:0;;;15413:21:1;;;15450:18;;;15443:30;15509:34;15489:18;;;15482:62;15561:18;;18325:68:0;15229:356:1;18325:68:0;23233:41:::1;23256:5;23263:10;23233:22;:41::i;19738:30::-:0;;;;;;;:::i;8432:155::-;8527:52;6334:10;8560:8;8570;8527:18;:52::i;21087:300::-;18186:6;;18333:23;18186:6;6334:10;18333:23;18325:68;;;;-1:-1:-1;;;18325:68:0;;15431:2:1;18325:68:0;;;15413:21:1;;;15450:18;;;15443:30;15509:34;15489:18;;;15482:62;15561:18;;18325:68:0;15229:356:1;18325:68:0;21315:64:::1;21324:2;21328:5;21335:10;21347:11;21360:7;21369:9;21315:8;:64::i;:::-;21087:300:::0;;;;;;:::o;23477:161::-;18186:6;;18333:23;18186:6;6334:10;18333:23;18325:68;;;;-1:-1:-1;;;18325:68:0;;15431:2:1;18325:68:0;;;15413:21:1;;;15450:18;;;15443:30;15509:34;15489:18;;;15482:62;15561:18;;18325:68:0;15229:356:1;18325:68:0;23595:35:::1;23615:5;23622:7;23595:19;:35::i;20594:41::-:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23291:177::-;18186:6;;18333:23;18186:6;6334:10;18333:23;18325:68;;;;-1:-1:-1;;;18325:68:0;;15431:2:1;18325:68:0;;;15413:21:1;;;15450:18;;;15443:30;15509:34;15489:18;;;15482:62;15561:18;;18325:68:0;15229:356:1;18325:68:0;23417:43:::1;23441:5;23448:11;23417:23;:43::i;8771:406::-:0;8979:20;;;6334:10;8979:20;;:60;;-1:-1:-1;9003:36:0;9020:4;6334:10;8595:168;:::i;9003:36::-;8957:156;;;;-1:-1:-1;;;8957:156:0;;15792:2:1;8957:156:0;;;15774:21:1;15831:2;15811:18;;;15804:30;15870:34;15850:18;;;15843:62;15941:16;15921:18;;;15914:44;15975:19;;8957:156:0;15590:410:1;8957:156:0;9124:45;9142:4;9148:2;9152;9156:6;9164:4;9124:17;:45::i;19013:192::-;18186:6;;18333:23;18186:6;6334:10;18333:23;18325:68;;;;-1:-1:-1;;;18325:68:0;;15431:2:1;18325:68:0;;;15413:21:1;;;15450:18;;;15443:30;15509:34;15489:18;;;15482:62;15561:18;;18325:68:0;15229:356:1;18325:68:0;19102:22:::1;::::0;::::1;19094:73;;;::::0;-1:-1:-1;;;19094:73:0;;16806:2:1;19094:73:0::1;::::0;::::1;16788:21:1::0;16845:2;16825:18;;;16818:30;16884:34;16864:18;;;16857:62;16955:8;16935:18;;;16928:36;16981:19;;19094:73:0::1;16604:402:1::0;19094:73:0::1;19178:19;19188:8;19178:9;:19::i;:::-;19013:192:::0;:::o;26262:497::-;26347:19;26369:17;;;:8;:17;;;;;;;;26347:39;;;;;;;;;;;;;;;;;26319:13;;26347:19;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26397:18;26418:252;26503:7;:12;;;26566:7;:19;;;26631:7;:15;;;26445:222;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;26418:13;:252::i;:::-;26397:273;;26745:4;26695:55;;;;;;;;:::i;:::-;;;;;;;;;;;;;26681:70;;;;26262:497;;;:::o;11932:686::-;12042:16;;;12034:62;;;;-1:-1:-1;;;12034:62:0;;19206:2:1;12034:62:0;;;19188:21:1;19245:2;19225:18;;;19218:30;19284:34;19264:18;;;19257:62;19355:3;19335:18;;;19328:31;19376:19;;12034:62:0;19004:397:1;12034:62:0;6334:10;12109:16;12174:21;12192:2;12174:17;:21::i;:::-;12151:44;;12206:24;12233:25;12251:6;12233:17;:25::i;:::-;12206:52;;12350:9;:13;;;;;;;;;;;:17;;;;;;;;;;:27;;12371:6;;12350:9;:27;;12371:6;;12350:27;:::i;:::-;;;;-1:-1:-1;;12393:52:0;;;19580:25:1;;;19636:2;19621:18;;19614:34;;;12393:52:0;;;;;12426:1;;12393:52;;;;;;19553:18:1;12393:52:0;;;;;;;12536:74;12567:8;12585:1;12589:2;12593;12597:6;12605:4;12536:30;:74::i;:::-;12023:595;;;11932:686;;;;:::o;22645:299::-;22755:19;22777:8;:15;22786:5;22777:15;;;;;;;;;;;22755:37;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22821:115;;;;;;;;22826:5;22821:115;;;;22833:7;:12;;;22821:115;;;;22847:7;:18;;;22821:115;;;;22867:7;:19;;;22821:115;;;;22888:7;:15;;;22821:115;;;;22905:9;22821:115;;;;22916:7;:19;;;22821:115;;;22803:8;:15;22812:5;22803:15;;;;;;;;;;;:133;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;22803:133:0;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;22803:133:0;;;;;;;;;;;;:::i;:::-;-1:-1:-1;22803:133:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;22645:299:0:o;10682:1146::-;10909:7;:14;10895:3;:10;:28;10887:81;;;;-1:-1:-1;;;10887:81:0;;22244:2:1;10887:81:0;;;22226:21:1;22283:2;22263:18;;;22256:30;22322:34;22302:18;;;22295:62;22393:10;22373:18;;;22366:38;22421:19;;10887:81:0;22042:404:1;10887:81:0;10987:16;;;10979:66;;;;-1:-1:-1;;;10979:66:0;;22653:2:1;10979:66:0;;;22635:21:1;22692:2;22672:18;;;22665:30;22731:34;22711:18;;;22704:62;22802:7;22782:18;;;22775:35;22827:19;;10979:66:0;22451:401:1;10979:66:0;6334:10;11058:16;11175:421;11199:3;:10;11195:1;:14;11175:421;;;11231:10;11244:3;11248:1;11244:6;;;;;;;;:::i;:::-;;;;;;;11231:19;;11265:14;11282:7;11290:1;11282:10;;;;;;;;:::i;:::-;;;;;;;;;;;;11309:19;11331:13;;;;;;;;;;:19;;;;;;;;;;;;;11282:10;;-1:-1:-1;11373:21:0;;;;11365:76;;;;-1:-1:-1;;;11365:76:0;;23059:2:1;11365:76:0;;;23041:21:1;23098:2;23078:18;;;23071:30;23137:34;23117:18;;;23110:62;23208:12;23188:18;;;23181:40;23238:19;;11365:76:0;22857:406:1;11365:76:0;11485:9;:13;;;;;;;;;;;:19;;;;;;;;;;;11507:20;;;11485:42;;11557:17;;;;;;;:27;;11507:20;;11485:9;11557:27;;11507:20;;11557:27;:::i;:::-;;;;;;;;11216:380;;;11211:3;;;;:::i;:::-;;;11175:421;;;;11643:2;11613:47;;11637:4;11613:47;;11627:8;11613:47;;;11647:3;11652:7;11613:47;;;;;;;:::i;:::-;;;;;;;;11745:75;11781:8;11791:4;11797:2;11801:3;11806:7;11815:4;11745:35;:75::i;21395:302::-;21502:19;21524:8;:15;21533:5;21524:15;;;;;;;;;;;21502:37;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21568:121;;;;;;;;21573:7;:10;;;21568:121;;;;21585:5;21568:121;;;;21592:7;:18;;;21568:121;;;;21612:7;:19;;;21568:121;;;;21633:7;:15;;;21568:121;;;;21650:7;:17;;;21568:121;;;;21669:7;:19;;;21568:121;;;21550:8;:15;21559:5;21550:15;;;;;;;;;;;:139;;;;;;;;;;;;;;;;;;;;;:::i;19213:173::-;19288:6;;;;19305:17;;;;;;;;;;;19338:40;;19288:6;;;19305:17;19288:6;;19338:40;;19269:16;;19338:40;19258:128;19213:173;:::o;21706:302::-;21819:19;21841:8;:15;21850:5;21841:15;;;;;;;;;;;21819:37;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21885:115;;;;;;;;21890:5;21885:115;;;;21897:7;:12;;;21885:115;;;;21911:10;21885:115;;;;21923:7;:19;;;21885:115;;;;21944:7;:15;;;21885:115;;;;21961:7;:17;;;21885:115;;;;21980:7;:19;;;21885:115;;;21867:8;:15;21876:5;21867:15;;;;;;;;;;;:133;;;;;;;;;;;;;;;;;;;;;:::i;15172:297::-;15293:8;15284:17;;:5;:17;;;15276:71;;;;-1:-1:-1;;;15276:71:0;;23940:2:1;15276:71:0;;;23922:21:1;23979:2;23959:18;;;23952:30;24018:34;23998:18;;;23991:62;24089:11;24069:18;;;24062:39;24118:19;;15276:71:0;23738:405:1;15276:71:0;15358:25;;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;;;;;;;;;;;;15420:41;;1228::1;;;15420::0;;1201:18:1;15420:41:0;;;;;;;15172:297;;;:::o;20644:434::-;20878:1;20873:2;:6;20865:36;;;;-1:-1:-1;;;20865:36:0;;24350:2:1;20865:36:0;;;24332:21:1;24389:2;24369:18;;;24362:30;24428:19;24408:18;;;24401:47;24465:18;;20865:36:0;24148:341:1;20865:36:0;20920:12;;;;:8;:12;;;;;:15;:20;20912:69;;;;-1:-1:-1;;;20912:69:0;;24696:2:1;20912:69:0;;;24678:21:1;24735:2;24715:18;;;24708:30;24774:34;24754:18;;;24747:62;24845:6;24825:18;;;24818:34;24869:19;;20912:69:0;24494:400:1;20912:69:0;21007:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21007:63:0;;;;;;20992:12;;;:8;:12;;;;;;:78;;;;;;21007:63;;20992:12;:78;;;;;;;;:::i;:::-;-1:-1:-1;20992:78:0;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;20992:78:0;;;;;;;;;;;;:::i;:::-;-1:-1:-1;20992:78:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20644:434:0:o;22335:301::-;22447:19;22469:8;:15;22478:5;22469:15;;;;;;;;;;;22447:37;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22513:115;;;;;;;;22518:5;22513:115;;;;22525:7;:12;;;22513:115;;;;22539:7;:18;;;22513:115;;;;22559:7;:19;;;22513:115;;;;22580:7;22513:115;;;;22589:7;:17;;;22513:115;;;;22608:7;:19;;;22513:115;;;22495:8;:15;22504:5;22495:15;;;;;;;;;;;:133;;;;;;;;;;;;;;;;;;;;;:::i;22017:309::-;22137:19;22159:8;:15;22168:5;22159:15;;;;;;;;;;;22137:37;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22203:115;;;;;;;;22208:5;22203:115;;;;22215:7;:12;;;22203:115;;;;22229:7;:18;;;22203:115;;;;22249:11;22203:115;;;;22262:7;:15;;;22203:115;;;;22279:7;:17;;;22203:115;;;;22298:7;:19;;;22203:115;;;22185:8;:15;22194:5;22185:15;;;;;;;;;;;:133;;;;;;;;;;;;;;;;;;;;;:::i;9700:974::-;9888:16;;;9880:66;;;;-1:-1:-1;;;9880:66:0;;22653:2:1;9880:66:0;;;22635:21:1;22692:2;22672:18;;;22665:30;22731:34;22711:18;;;22704:62;22802:7;22782:18;;;22775:35;22827:19;;9880:66:0;22451:401:1;9880:66:0;6334:10;9959:16;10024:21;10042:2;10024:17;:21::i;:::-;10001:44;;10056:24;10083:25;10101:6;10083:17;:25::i;:::-;10056:52;;10194:19;10216:13;;;;;;;;;;;:19;;;;;;;;;;;10254:21;;;;10246:76;;;;-1:-1:-1;;;10246:76:0;;23059:2:1;10246:76:0;;;23041:21:1;23098:2;23078:18;;;23071:30;23137:34;23117:18;;;23110:62;23208:12;23188:18;;;23181:40;23238:19;;10246:76:0;22857:406:1;10246:76:0;10358:9;:13;;;;;;;;;;;:19;;;;;;;;;;;10380:20;;;10358:42;;10422:17;;;;;;;:27;;10380:20;;10358:9;10422:27;;10380:20;;10422:27;:::i;:::-;;;;-1:-1:-1;;10467:46:0;;;19580:25:1;;;19636:2;19621:18;;19614:34;;;10467:46:0;;;;;;;;;;;;;;;19553:18:1;10467:46:0;;;;;;;10598:68;10629:8;10639:4;10645:2;10649;10653:6;10661:4;10598:30;:68::i;:::-;9869:805;;;;9700:974;;;;;:::o;27077:1607::-;27175:11;;27135:13;;27161:11;27201:8;;;27197:23;;-1:-1:-1;;27211:9:0;;;;;;;;;-1:-1:-1;27211:9:0;;;27077:1607;-1:-1:-1;27077:1607:0:o;27197:23::-;27272:18;27310:1;27299:7;:3;27305:1;27299:7;:::i;:::-;27298:13;;;;:::i;:::-;27293:19;;:1;:19;:::i;:::-;27272:40;-1:-1:-1;27370:19:0;27402:15;27272:40;27415:2;27402:15;:::i;:::-;27392:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27392:26:0;;27370:48;;27431:18;27452:5;;;;;;;;;;;;;;;;;27431:26;;27521:1;27514:5;27510:13;27566:2;27558:6;27554:15;27617:1;27585:777;27640:3;27637:1;27634:10;27585:777;;;27695:1;27738:12;;;;;27732:19;27833:4;27821:2;27817:14;;;;;27799:40;;27793:47;27942:2;27938:14;;;27934:25;;27920:40;;27914:47;28071:1;28067:13;;;28063:24;;28049:39;;28043:46;28191:16;;;;28177:31;;28171:38;27869:1;27865:11;;;27963:4;27910:58;;;27901:68;27994:11;;28039:57;;;28030:67;;;;28122:11;;28167:49;;28158:59;28246:3;28242:13;28275:22;;28345:1;28330:17;;;;27688:9;27585:777;;;27589:44;28394:1;28389:3;28385:11;28415:1;28410:84;;;;28513:1;28508:82;;;;28378:212;;28410:84;28462:16;28443:17;;;28436:43;28410:84;;28508:82;28560:14;28541:17;;;28534:41;28378:212;-1:-1:-1;;;28606:26:0;;;28613:6;27077:1607;-1:-1:-1;;;;27077:1607:0:o;17507:198::-;17627:16;;;17641:1;17627:16;;;;;;;;;17573;;17602:22;;17627:16;;;;;;;;;;;;-1:-1:-1;17627:16:0;17602:41;;17665:7;17654:5;17660:1;17654:8;;;;;;;;:::i;:::-;;;;;;;;;;:18;17692:5;17507:198;-1:-1:-1;;17507:198:0:o;15934:744::-;16149:13;;;2102:19;:23;16145:526;;16185:72;;;;;:38;;;;;;:72;;16224:8;;16234:4;;16240:2;;16244:6;;16252:4;;16185:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16185:72:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;16181:479;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;16533:6;16526:14;;-1:-1:-1;;;16526:14:0;;;;;;;;:::i;16181:479::-;;;16582:62;;-1:-1:-1;;;16582:62:0;;27143:2:1;16582:62:0;;;27125:21:1;27182:2;27162:18;;;27155:30;27221:34;27201:18;;;27194:62;27292:22;27272:18;;;27265:50;27332:19;;16582:62:0;26941:416:1;16181:479:0;16307:55;;;16319:43;16307:55;16303:154;;16387:50;;-1:-1:-1;;;16387:50:0;;27564:2:1;16387:50:0;;;27546:21:1;27603:2;27583:18;;;27576:30;27642:34;27622:18;;;27615:62;27713:10;27693:18;;;27686:38;27741:19;;16387:50:0;27362:404:1;16686:813:0;16926:13;;;2102:19;:23;16922:570;;16962:79;;;;;:43;;;;;;:79;;17006:8;;17016:4;;17022:3;;17027:7;;17036:4;;16962:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16962:79:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;16958:523;;;;:::i;:::-;17123:60;;;17135:48;17123:60;17119:159;;17208:50;;-1:-1:-1;;;17208:50:0;;27564:2:1;17208:50:0;;;27546:21:1;27603:2;27583:18;;;27576:30;27642:34;27622:18;;;27615:62;27713:10;27693:18;;;27686:38;27741:19;;17208:50:0;27362:404:1;14:196;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:254::-;283:6;291;344:2;332:9;323:7;319:23;315:32;312:52;;;360:1;357;350:12;312:52;383:29;402:9;383:29;:::i;:::-;373:39;459:2;444:18;;;;431:32;;-1:-1:-1;;;215:254:1:o;656:177::-;741:66;734:5;730:78;723:5;720:89;710:117;;823:1;820;813:12;838:245;896:6;949:2;937:9;928:7;924:23;920:32;917:52;;;965:1;962;955:12;917:52;1004:9;991:23;1023:30;1047:5;1023:30;:::i;:::-;1072:5;838:245;-1:-1:-1;;;838:245:1:o;1280:250::-;1365:1;1375:113;1389:6;1386:1;1383:13;1375:113;;;1465:11;;;1459:18;1446:11;;;1439:39;1411:2;1404:10;1375:113;;;-1:-1:-1;;1522:1:1;1504:16;;1497:27;1280:250::o;1535:330::-;1577:3;1615:5;1609:12;1642:6;1637:3;1630:19;1658:76;1727:6;1720:4;1715:3;1711:14;1704:4;1697:5;1693:16;1658:76;:::i;:::-;1779:2;1767:15;1784:66;1763:88;1754:98;;;;1854:4;1750:109;;1535:330;-1:-1:-1;;1535:330:1:o;1870:220::-;2019:2;2008:9;2001:21;1982:4;2039:45;2080:2;2069:9;2065:18;2057:6;2039:45;:::i;2095:180::-;2154:6;2207:2;2195:9;2186:7;2182:23;2178:32;2175:52;;;2223:1;2220;2213:12;2175:52;-1:-1:-1;2246:23:1;;2095:180;-1:-1:-1;2095:180:1:o;2280:248::-;2348:6;2356;2409:2;2397:9;2388:7;2384:23;2380:32;2377:52;;;2425:1;2422;2415:12;2377:52;-1:-1:-1;;2448:23:1;;;2518:2;2503:18;;;2490:32;;-1:-1:-1;2280:248:1:o;2533:184::-;2585:77;2582:1;2575:88;2682:4;2679:1;2672:15;2706:4;2703:1;2696:15;2722:308;2828:66;2823:2;2817:4;2813:13;2809:86;2801:6;2797:99;2962:6;2950:10;2947:22;2926:18;2914:10;2911:34;2908:62;2905:88;;;2973:18;;:::i;:::-;3009:2;3002:22;-1:-1:-1;;2722:308:1:o;3035:183::-;3095:4;3128:18;3120:6;3117:30;3114:56;;;3150:18;;:::i;:::-;-1:-1:-1;3195:1:1;3191:14;3207:4;3187:25;;3035:183::o;3223:724::-;3277:5;3330:3;3323:4;3315:6;3311:17;3307:27;3297:55;;3348:1;3345;3338:12;3297:55;3384:6;3371:20;3410:4;3433:43;3473:2;3433:43;:::i;:::-;3505:2;3499:9;3517:31;3545:2;3537:6;3517:31;:::i;:::-;3583:18;;;3675:1;3671:10;;;;3659:23;;3655:32;;;3617:15;;;;-1:-1:-1;3699:15:1;;;3696:35;;;3727:1;3724;3717:12;3696:35;3763:2;3755:6;3751:15;3775:142;3791:6;3786:3;3783:15;3775:142;;;3857:17;;3845:30;;3895:12;;;;3808;;3775:142;;;-1:-1:-1;3935:6:1;3223:724;-1:-1:-1;;;;;;3223:724:1:o;3952:614::-;3994:5;4047:3;4040:4;4032:6;4028:17;4024:27;4014:55;;4065:1;4062;4055:12;4014:55;4101:6;4088:20;4127:18;4123:2;4120:26;4117:52;;;4149:18;;:::i;:::-;4198:2;4192:9;4210:126;4330:4;4261:66;4254:4;4250:2;4246:13;4242:86;4238:97;4230:6;4210:126;:::i;:::-;4360:2;4352:6;4345:18;4406:3;4399:4;4394:2;4386:6;4382:15;4378:26;4375:35;4372:55;;;4423:1;4420;4413:12;4372:55;4487:2;4480:4;4472:6;4468:17;4461:4;4453:6;4449:17;4436:54;4534:1;4510:15;;;4527:4;4506:26;4499:37;;;;4514:6;3952:614;-1:-1:-1;;;3952:614:1:o;4571:943::-;4725:6;4733;4741;4749;4757;4810:3;4798:9;4789:7;4785:23;4781:33;4778:53;;;4827:1;4824;4817:12;4778:53;4850:29;4869:9;4850:29;:::i;:::-;4840:39;;4898:38;4932:2;4921:9;4917:18;4898:38;:::i;:::-;4888:48;;4987:2;4976:9;4972:18;4959:32;5010:18;5051:2;5043:6;5040:14;5037:34;;;5067:1;5064;5057:12;5037:34;5090:61;5143:7;5134:6;5123:9;5119:22;5090:61;:::i;:::-;5080:71;;5204:2;5193:9;5189:18;5176:32;5160:48;;5233:2;5223:8;5220:16;5217:36;;;5249:1;5246;5239:12;5217:36;5272:63;5327:7;5316:8;5305:9;5301:24;5272:63;:::i;:::-;5262:73;;5388:3;5377:9;5373:19;5360:33;5344:49;;5418:2;5408:8;5405:16;5402:36;;;5434:1;5431;5424:12;5402:36;;5457:51;5500:7;5489:8;5478:9;5474:24;5457:51;:::i;:::-;5447:61;;;4571:943;;;;;;;;:::o;5519:186::-;5578:6;5631:2;5619:9;5610:7;5606:23;5602:32;5599:52;;;5647:1;5644;5637:12;5599:52;5670:29;5689:9;5670:29;:::i;5710:1062::-;5883:2;5872:9;5865:21;5928:6;5922:13;5917:2;5906:9;5902:18;5895:41;5846:4;5983:2;5975:6;5971:15;5965:22;6023:4;6018:2;6007:9;6003:18;5996:32;6051:52;6098:3;6087:9;6083:19;6069:12;6051:52;:::i;:::-;6037:66;;6157:2;6149:6;6145:15;6139:22;6134:2;6123:9;6119:18;6112:50;6211:2;6203:6;6199:15;6193:22;6234:66;6365:2;6353:9;6345:6;6341:22;6337:31;6331:3;6320:9;6316:19;6309:60;6392:41;6426:6;6410:14;6392:41;:::i;:::-;6378:55;;6482:3;6474:6;6470:16;6464:23;6442:45;;6552:2;6540:9;6532:6;6528:22;6524:31;6518:3;6507:9;6503:19;6496:60;;6579:41;6613:6;6597:14;6579:41;:::i;:::-;6565:55;;;6675:3;6667:6;6663:16;6657:23;6651:3;6640:9;6636:19;6629:52;6737:3;6729:6;6725:16;6719:23;6712:4;6701:9;6697:20;6690:53;6760:6;6752:14;;;5710:1062;;;;:::o;6777:1208::-;6895:6;6903;6956:2;6944:9;6935:7;6931:23;6927:32;6924:52;;;6972:1;6969;6962:12;6924:52;7012:9;6999:23;7041:18;7082:2;7074:6;7071:14;7068:34;;;7098:1;7095;7088:12;7068:34;7136:6;7125:9;7121:22;7111:32;;7181:7;7174:4;7170:2;7166:13;7162:27;7152:55;;7203:1;7200;7193:12;7152:55;7239:2;7226:16;7261:4;7284:43;7324:2;7284:43;:::i;:::-;7356:2;7350:9;7368:31;7396:2;7388:6;7368:31;:::i;:::-;7434:18;;;7522:1;7518:10;;;;7510:19;;7506:28;;;7468:15;;;;-1:-1:-1;7546:19:1;;;7543:39;;;7578:1;7575;7568:12;7543:39;7602:11;;;;7622:148;7638:6;7633:3;7630:15;7622:148;;;7704:23;7723:3;7704:23;:::i;:::-;7692:36;;7655:12;;;;7748;;;;7622:148;;;7789:6;-1:-1:-1;;7833:18:1;;7820:32;;-1:-1:-1;;7864:16:1;;;7861:36;;;7893:1;7890;7883:12;7861:36;;7916:63;7971:7;7960:8;7949:9;7945:24;7916:63;:::i;:::-;7906:73;;;6777:1208;;;;;:::o;7990:435::-;8043:3;8081:5;8075:12;8108:6;8103:3;8096:19;8134:4;8163:2;8158:3;8154:12;8147:19;;8200:2;8193:5;8189:14;8221:1;8231:169;8245:6;8242:1;8239:13;8231:169;;;8306:13;;8294:26;;8340:12;;;;8375:15;;;;8267:1;8260:9;8231:169;;;-1:-1:-1;8416:3:1;;7990:435;-1:-1:-1;;;;;7990:435:1:o;8430:261::-;8609:2;8598:9;8591:21;8572:4;8629:56;8681:2;8670:9;8666:18;8658:6;8629:56;:::i;8696:389::-;8774:6;8782;8835:2;8823:9;8814:7;8810:23;8806:32;8803:52;;;8851:1;8848;8841:12;8803:52;8887:9;8874:23;8864:33;;8948:2;8937:9;8933:18;8920:32;8975:18;8967:6;8964:30;8961:50;;;9007:1;9004;8997:12;8961:50;9030:49;9071:7;9062:6;9051:9;9047:22;9030:49;:::i;9321:347::-;9386:6;9394;9447:2;9435:9;9426:7;9422:23;9418:32;9415:52;;;9463:1;9460;9453:12;9415:52;9486:29;9505:9;9486:29;:::i;:::-;9476:39;;9565:2;9554:9;9550:18;9537:32;9612:5;9605:13;9598:21;9591:5;9588:32;9578:60;;9634:1;9631;9624:12;9578:60;9657:5;9647:15;;;9321:347;;;;;:::o;9673:947::-;9807:6;9815;9823;9831;9839;9847;9900:3;9888:9;9879:7;9875:23;9871:33;9868:53;;;9917:1;9914;9907:12;9868:53;9953:9;9940:23;9930:33;;10014:2;10003:9;9999:18;9986:32;10037:18;10078:2;10070:6;10067:14;10064:34;;;10094:1;10091;10084:12;10064:34;10117:49;10158:7;10149:6;10138:9;10134:22;10117:49;:::i;:::-;10107:59;;10213:2;10202:9;10198:18;10185:32;10175:42;;10270:2;10259:9;10255:18;10242:32;10226:48;;10299:2;10289:8;10286:16;10283:36;;;10315:1;10312;10305:12;10283:36;10338:51;10381:7;10370:8;10359:9;10355:24;10338:51;:::i;:::-;10328:61;;10442:3;10431:9;10427:19;10414:33;10398:49;;10472:2;10462:8;10459:16;10456:36;;;10488:1;10485;10478:12;10456:36;;10511:51;10554:7;10543:8;10532:9;10528:24;10511:51;:::i;:::-;10501:61;;;10609:3;10598:9;10594:19;10581:33;10571:43;;9673:947;;;;;;;;:::o;10872:835::-;11229:6;11218:9;11211:25;11272:3;11267:2;11256:9;11252:18;11245:31;11192:4;11299:46;11340:3;11329:9;11325:19;11317:6;11299:46;:::i;:::-;11381:6;11376:2;11365:9;11361:18;11354:34;11436:9;11428:6;11424:22;11419:2;11408:9;11404:18;11397:50;11470:33;11496:6;11488;11470:33;:::i;:::-;11456:47;;11552:9;11544:6;11540:22;11534:3;11523:9;11519:19;11512:51;11580:33;11606:6;11598;11580:33;:::i;:::-;11644:3;11629:19;;11622:35;;;;-1:-1:-1;;11688:3:1;11673:19;11666:35;11572:41;10872:835;-1:-1:-1;;;;;10872:835:1:o;11712:260::-;11780:6;11788;11841:2;11829:9;11820:7;11816:23;11812:32;11809:52;;;11857:1;11854;11847:12;11809:52;11880:29;11899:9;11880:29;:::i;:::-;11870:39;;11928:38;11962:2;11951:9;11947:18;11928:38;:::i;:::-;11918:48;;11712:260;;;;;:::o;11977:606::-;12081:6;12089;12097;12105;12113;12166:3;12154:9;12145:7;12141:23;12137:33;12134:53;;;12183:1;12180;12173:12;12134:53;12206:29;12225:9;12206:29;:::i;:::-;12196:39;;12254:38;12288:2;12277:9;12273:18;12254:38;:::i;:::-;12244:48;;12339:2;12328:9;12324:18;12311:32;12301:42;;12390:2;12379:9;12375:18;12362:32;12352:42;;12445:3;12434:9;12430:19;12417:33;12473:18;12465:6;12462:30;12459:50;;;12505:1;12502;12495:12;12459:50;12528:49;12569:7;12560:6;12549:9;12545:22;12528:49;:::i;12999:437::-;13078:1;13074:12;;;;13121;;;13142:61;;13196:4;13188:6;13184:17;13174:27;;13142:61;13249:2;13241:6;13238:14;13218:18;13215:38;13212:218;;13286:77;13283:1;13276:88;13387:4;13384:1;13377:15;13415:4;13412:1;13405:15;13212:218;;12999:437;;;:::o;13787:184::-;13839:77;13836:1;13829:88;13936:4;13933:1;13926:15;13960:4;13957:1;13950:15;13976:125;14041:9;;;14062:10;;;14059:36;;;14075:18;;:::i;14453:168::-;14526:9;;;14557;;14574:15;;;14568:22;;14554:37;14544:71;;14595:18;;:::i;15029:195::-;15068:3;15099:66;15092:5;15089:77;15086:103;;15169:18;;:::i;:::-;-1:-1:-1;15216:1:1;15205:13;;15029:195::o;16415:184::-;16467:77;16464:1;16457:88;16564:4;16561:1;16554:15;16588:4;16585:1;16578:15;17011:1522;17672:66;17667:3;17660:79;17642:3;17768:6;17762:13;17784:75;17852:6;17847:2;17842:3;17838:12;17831:4;17823:6;17819:17;17784:75;:::i;:::-;17923:66;17918:2;17878:16;;;17910:11;;;17903:87;18015:13;;18037:76;18015:13;18099:2;18091:11;;18084:4;18072:17;;18037:76;:::i;:::-;18178:66;18173:2;18132:17;;;;18165:11;;;18158:87;18270:13;;18292:76;18270:13;18354:2;18346:11;;18339:4;18327:17;;18292:76;:::i;:::-;18433:66;18428:2;18387:17;;;;18420:11;;;18413:87;18524:2;18516:11;;17011:1522;-1:-1:-1;;;;;17011:1522:1:o;18538:461::-;18800:31;18795:3;18788:44;18770:3;18861:6;18855:13;18877:75;18945:6;18940:2;18935:3;18931:12;18924:4;18916:6;18912:17;18877:75;:::i;:::-;18972:16;;;;18990:2;18968:25;;18538:461;-1:-1:-1;;18538:461:1:o;19785:545::-;19887:2;19882:3;19879:11;19876:448;;;19923:1;19948:5;19944:2;19937:17;19993:4;19989:2;19979:19;20063:2;20051:10;20047:19;20044:1;20040:27;20034:4;20030:38;20099:4;20087:10;20084:20;20081:47;;;-1:-1:-1;20122:4:1;20081:47;20177:2;20172:3;20168:12;20165:1;20161:20;20155:4;20151:31;20141:41;;20232:82;20250:2;20243:5;20240:13;20232:82;;;20295:17;;;20276:1;20265:13;20232:82;;19876:448;19785:545;;;:::o;20566:1471::-;20692:3;20686:10;20719:18;20711:6;20708:30;20705:56;;;20741:18;;:::i;:::-;20770:97;20860:6;20820:38;20852:4;20846:11;20820:38;:::i;:::-;20814:4;20770:97;:::i;:::-;20922:4;;20986:2;20975:14;;21003:1;20998:782;;;;21824:1;21841:6;21838:89;;;-1:-1:-1;21893:19:1;;;21887:26;21838:89;20472:66;20463:1;20459:11;;;20455:84;20451:89;20441:100;20547:1;20543:11;;;20438:117;21940:81;;20968:1063;;20998:782;19732:1;19725:14;;;19769:4;19756:18;;21046:66;21034:79;;;21211:236;21225:7;21222:1;21219:14;21211:236;;;21314:19;;;21308:26;21293:42;;21406:27;;;;21374:1;21362:14;;;;21241:19;;21211:236;;;21215:3;21475:6;21466:7;21463:19;21460:261;;;21536:19;;;21530:26;21637:66;21619:1;21615:14;;;21631:3;21611:24;21607:97;21603:102;21588:118;21573:134;;21460:261;-1:-1:-1;;;;;21767:1:1;21751:14;;;21747:22;21734:36;;-1:-1:-1;20566:1471:1:o;23268:465::-;23525:2;23514:9;23507:21;23488:4;23551:56;23603:2;23592:9;23588:18;23580:6;23551:56;:::i;:::-;23655:9;23647:6;23643:22;23638:2;23627:9;23623:18;23616:50;23683:44;23720:6;23712;23683:44;:::i;:::-;23675:52;23268:465;-1:-1:-1;;;;;23268:465:1:o;24899:274::-;24939:1;24965;24955:189;;25000:77;24997:1;24990:88;25101:4;25098:1;25091:15;25129:4;25126:1;25119:15;24955:189;-1:-1:-1;25158:9:1;;24899:274::o;25178:584::-;25400:4;25429:42;25510:2;25502:6;25498:15;25487:9;25480:34;25562:2;25554:6;25550:15;25545:2;25534:9;25530:18;25523:43;;25602:6;25597:2;25586:9;25582:18;25575:34;25645:6;25640:2;25629:9;25625:18;25618:34;25689:3;25683;25672:9;25668:19;25661:32;25710:46;25751:3;25740:9;25736:19;25728:6;25710:46;:::i;:::-;25702:54;25178:584;-1:-1:-1;;;;;;;25178:584:1:o;25767:249::-;25836:6;25889:2;25877:9;25868:7;25864:23;25860:32;25857:52;;;25905:1;25902;25895:12;25857:52;25937:9;25931:16;25956:30;25980:5;25956:30;:::i;26021:179::-;26056:3;26098:1;26080:16;26077:23;26074:120;;;26144:1;26141;26138;26123:23;-1:-1:-1;26181:1:1;26175:8;26170:3;26166:18;26074:120;26021:179;:::o;26205:731::-;26244:3;26286:4;26268:16;26265:26;26262:39;;;26205:731;:::o;26262:39::-;26328:2;26322:9;26350:66;26471:2;26453:16;26449:25;26446:1;26440:4;26425:50;26504:4;26498:11;26528:16;26563:18;26634:2;26627:4;26619:6;26615:17;26612:25;26607:2;26599:6;26596:14;26593:45;26590:58;;;26641:5;;;;;26205:731;:::o;26590:58::-;26678:6;26672:4;26668:17;26657:28;;26714:3;26708:10;26741:2;26733:6;26730:14;26727:27;;;26747:5;;;;;;26205:731;:::o;26727:27::-;26831:2;26812:16;26806:4;26802:27;26798:36;26791:4;26782:6;26777:3;26773:16;26769:27;26766:69;26763:82;;;26838:5;;;;;;26205:731;:::o;26763:82::-;26854:57;26905:4;26896:6;26888;26884:19;26880:30;26874:4;26854:57;:::i;:::-;-1:-1:-1;26927:3:1;;26205:731;-1:-1:-1;;;;;26205:731:1:o;27771:850::-;28093:4;28122:42;28203:2;28195:6;28191:15;28180:9;28173:34;28255:2;28247:6;28243:15;28238:2;28227:9;28223:18;28216:43;;28295:3;28290:2;28279:9;28275:18;28268:31;28322:57;28374:3;28363:9;28359:19;28351:6;28322:57;:::i;:::-;28427:9;28419:6;28415:22;28410:2;28399:9;28395:18;28388:50;28461:44;28498:6;28490;28461:44;:::i;:::-;28447:58;;28554:9;28546:6;28542:22;28536:3;28525:9;28521:19;28514:51;28582:33;28608:6;28600;28582:33;:::i;:::-;28574:41;27771:850;-1:-1:-1;;;;;;;;27771:850:1:o
Swarm Source
ipfs://74a446ca0cff9725ca0607bc46df639a7b84b418828ad27d640b4b6e11a85ef6