{
  "fileName": "ERC1155PresetMinterPauser.sol",
  "contractName": "ERC1155PresetMinterPauser",
  "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"../access/AccessControl.sol\";\nimport \"../GSN/Context.sol\";\nimport \"../token/ERC1155/ERC1155.sol\";\nimport \"../token/ERC1155/ERC1155Burnable.sol\";\nimport \"../token/ERC1155/ERC1155Pausable.sol\";\n\n/**\n * @dev {ERC1155} token, including:\n *\n *  - ability for holders to burn (destroy) their tokens\n *  - a minter role that allows for token minting (creation)\n *  - a pauser role that allows to stop all token transfers\n *\n * This contract uses {AccessControl} to lock permissioned functions using the\n * different roles - head to its documentation for details.\n *\n * The account that deploys the contract will be granted the minter and pauser\n * roles, as well as the default admin role, which will let it grant both minter\n * and pauser roles to other accounts.\n */\ncontract ERC1155PresetMinterPauser is Context, AccessControl, ERC1155Burnable, ERC1155Pausable {\n    bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n    bytes32 public constant PAUSER_ROLE = keccak256(\"PAUSER_ROLE\");\n\n    /**\n     * @dev Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE`, and `PAUSER_ROLE` to the account that\n     * deploys the contract.\n     */\n    constructor(string memory uri) ERC1155(uri) {\n        _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());\n\n        _setupRole(MINTER_ROLE, _msgSender());\n        _setupRole(PAUSER_ROLE, _msgSender());\n    }\n\n    /**\n     * @dev Creates `amount` new tokens for `to`, of token type `id`.\n     *\n     * See {ERC1155-_mint}.\n     *\n     * Requirements:\n     *\n     * - the caller must have the `MINTER_ROLE`.\n     */\n    function mint(address to, uint256 id, uint256 amount, bytes memory data) public virtual {\n        require(hasRole(MINTER_ROLE, _msgSender()), \"ERC1155PresetMinterPauser: must have minter role to mint\");\n\n        _mint(to, id, amount, data);\n    }\n\n    /**\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] variant of {mint}.\n     */\n    function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) public virtual {\n        require(hasRole(MINTER_ROLE, _msgSender()), \"ERC1155PresetMinterPauser: must have minter role to mint\");\n\n        _mintBatch(to, ids, amounts, data);\n    }\n\n    /**\n     * @dev Pauses all token transfers.\n     *\n     * See {ERC1155Pausable} and {Pausable-_pause}.\n     *\n     * Requirements:\n     *\n     * - the caller must have the `PAUSER_ROLE`.\n     */\n    function pause() public virtual {\n        require(hasRole(PAUSER_ROLE, _msgSender()), \"ERC1155PresetMinterPauser: must have pauser role to pause\");\n        _pause();\n    }\n\n    /**\n     * @dev Unpauses all token transfers.\n     *\n     * See {ERC1155Pausable} and {Pausable-_unpause}.\n     *\n     * Requirements:\n     *\n     * - the caller must have the `PAUSER_ROLE`.\n     */\n    function unpause() public virtual {\n        require(hasRole(PAUSER_ROLE, _msgSender()), \"ERC1155PresetMinterPauser: must have pauser role to unpause\");\n        _unpause();\n    }\n\n    function _beforeTokenTransfer(\n        address operator,\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory amounts,\n        bytes memory data\n    )\n        internal virtual override(ERC1155, ERC1155Pausable)\n    {\n        super._beforeTokenTransfer(operator, from, to, ids, amounts, data);\n    }\n}\n",
  "sourcePath": "contracts/presets/ERC1155PresetMinterPauser.sol",
  "sourceMap": "828:2526:73:-:0;;;1205:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1244:3;742:40:10;418:10;761:20;;742:18;;;:40;;:::i;:::-;2006:12:76;2014:3;2006:7;;;:12;;:::i;:::-;2107:41;1752:10;2126:21;;2107:18;;;:41;;:::i;:::-;2248:54;1904:10;2267:34;;2248:18;;;:54;;:::i;:::-;1964:345;924:5:110;914:7;;:15;;;;;;;;;;;;;;;;;;1259:44:73::1;1762:4:6;1270:18:73::0;::::1;1290:12;:10;;;:12;;:::i;:::-;1259:10;;;:44;;:::i;:::-;1314:37;967:24;1338:12;:10;;;:12;;:::i;:::-;1314:10;;;:37;;:::i;:::-;1361;1035:24;1385:12;:10;;;:12;;:::i;:::-;1361:10;;;:37;;:::i;:::-;1205:200:::0;828:2526;;1473:198:10;1571:10;1556:25;;:11;:25;;;;;1548:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1660:4;1624:20;:33;1645:11;1624:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1473:198;:::o;7578:86:76:-;7651:6;7644:4;:13;;;;;;;;;;;;:::i;:::-;;7578:86;:::o;590:104:0:-;643:15;677:10;670:17;;590:104;:::o;6578:110:6:-;6656:25;6667:4;6673:7;6656:10;;;:25;;:::i;:::-;6578:110;;:::o;7015:184::-;7088:33;7113:7;7088:6;:12;7095:4;7088:12;;;;;;;;;;;:20;;:24;;;;;;:33;;;;:::i;:::-;7084:109;;;7169:12;:10;;;:12;;:::i;:::-;7142:40;;7160:7;7142:40;;7154:4;7142:40;;;;;;;;;;7084:109;7015:184;;:::o;4864:141:109:-;4934:4;4957:41;4962:3;:10;;4990:5;4982:14;;4974:23;;4957:4;;;:41;;:::i;:::-;4950:48;;4864:141;;;;:::o;1611:404::-;1674:4;1695:21;1705:3;1710:5;1695:9;;;:21;;:::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;3776:127::-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o;828:2526:73:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "828:2526:73:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2946:220:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;939:140:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2707:97:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1964:278:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4272:112:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5573:1184:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4634:223:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5808:205;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2827:177:73;;;:::i;:::-;;3323:615:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1031:76:110;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;598:312:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1616:246:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2447:171;;;:::i;:::-;;3955:136:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2940:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1717:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4006:306:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3245:125:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;929:62:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5091:226:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;997:62:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4379:158:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4604:897;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;312:280:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2946:220:76;3024:7;3070:1;3051:21;;:7;:21;;;;3043:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3137:9;:13;3147:2;3137:13;;;;;;;;;;;:22;3151:7;3137:22;;;;;;;;;;;;;;;;3130:29;;2946:220;;;;:::o;939:140:10:-;1016:4;1039:20;:33;1060:11;1039:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1032:40;;939:140;;;:::o;2707:97:76:-;2761:13;2793:4;2786:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2707:97;;;:::o;1964:278:73:-;2095:34;967:24;2116:12;:10;:12::i;:::-;2095:7;:34::i;:::-;2087:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2201:34;2212:2;2216:3;2221:7;2230:4;2201:10;:34::i;:::-;1964:278;;;;:::o;4272:112:6:-;4329:7;4355:6;:12;4362:4;4355:12;;;;;;;;;;;:22;;;4348:29;;4272:112;;;:::o;5573:1184:76:-;5827:7;:14;5813:3;:10;:28;5805:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5918:1;5904:16;;:2;:16;;;;5896:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6001:12;:10;:12::i;:::-;5993:20;;:4;:20;;;:60;;;;6017:36;6034:4;6040:12;:10;:12::i;:::-;6017:16;:36::i;:::-;5993:60;5972:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6140:16;6159:12;:10;:12::i;:::-;6140:31;;6182:60;6203:8;6213:4;6219:2;6223:3;6228:7;6237:4;6182:20;:60::i;:::-;6258:9;6253:349;6277:3;:10;6273:1;:14;6253:349;;;6308:10;6321:3;6325:1;6321:6;;;;;;;;;;;;;;6308:19;;6341:14;6358:7;6366:1;6358:10;;;;;;;;;;;;;;6341:27;;6405:123;6446:6;6405:123;;;;;;;;;;;;;;;;;:9;:13;6415:2;6405:13;;;;;;;;;;;:19;6419:4;6405:19;;;;;;;;;;;;;;;;:23;;:123;;;;;:::i;:::-;6383:9;:13;6393:2;6383:13;;;;;;;;;;;:19;6397:4;6383:19;;;;;;;;;;;;;;;:145;;;;6562:29;6584:6;6562:9;:13;6572:2;6562:13;;;;;;;;;;;:17;6576:2;6562:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;6542:9;:13;6552:2;6542:13;;;;;;;;;;;:17;6556:2;6542:17;;;;;;;;;;;;;;;:49;;;;6253:349;;6289:3;;;;;6253:349;;;;6647:2;6617:47;;6641:4;6617:47;;6631:8;6617:47;;;6651:3;6656:7;6617:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6675:75;6711:8;6721:4;6727:2;6731:3;6736:7;6745:4;6675:35;:75::i;:::-;5573:1184;;;;;;:::o;4634:223:6:-;4717:45;4725:6;:12;4732:4;4725:12;;;;;;;;;;;:22;;;4749:12;:10;:12::i;:::-;4717:7;:45::i;:::-;4709:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4825:25;4836:4;4842:7;4825:10;:25::i;:::-;4634:223;;:::o;5808:205::-;5905:12;:10;:12::i;:::-;5894:23;;:7;:23;;;5886:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5980:26;5992:4;5998:7;5980:11;:26::i;:::-;5808:205;;:::o;2827:177:73:-;2879:34;1035:24;2900:12;:10;:12::i;:::-;2879:7;:34::i;:::-;2871:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2987:10;:8;:10::i;:::-;2827:177::o;3323:615:76:-;3480:16;3539:3;:10;3520:8;:15;:29;3512:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3606:30;3653:8;:15;3639:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3606:63;;3685:9;3680:221;3704:8;:15;3700:1;:19;3680:221;;;3771:1;3748:25;;:8;3757:1;3748:11;;;;;;;;;;;;;;:25;;;;3740:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3860:9;:17;3870:3;3874:1;3870:6;;;;;;;;;;;;;;3860:17;;;;;;;;;;;:30;3878:8;3887:1;3878:11;;;;;;;;;;;;;;3860:30;;;;;;;;;;;;;;;;3841:13;3855:1;3841:16;;;;;;;;;;;;;:49;;;;;3721:3;;;;;3680:221;;;;3918:13;3911:20;;;3323:615;;;;:::o;1031:76:110:-;1070:4;1093:7;;;;;;;;;;;1086:14;;1031:76;:::o;598:312:77:-;738:12;:10;:12::i;:::-;727:23;;:7;:23;;;:66;;;;754:39;771:7;780:12;:10;:12::i;:::-;754:16;:39::i;:::-;727:66;706:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;871:32;882:7;891:3;896:6;871:10;:32::i;:::-;598:312;;;:::o;1616:246:73:-;1722:34;967:24;1743:12;:10;:12::i;:::-;1722:7;:34::i;:::-;1714:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1828:27;1834:2;1838;1842:6;1850:4;1828:5;:27::i;:::-;1616:246;;;;:::o;2447:171::-;2497:34;1035:24;2518:12;:10;:12::i;:::-;2497:7;:34::i;:::-;2489:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2603:8;:6;:8::i;:::-;2447:171::o;3955:136:6:-;4028:7;4054:30;4078:5;4054:6;:12;4061:4;4054:12;;;;;;;;;;;:20;;:23;;:30;;;;:::i;:::-;4047:37;;3955:136;;;;:::o;2940:137::-;3009:4;3032:38;3062:7;3032:6;:12;3039:4;3032:12;;;;;;;;;;;:20;;:29;;:38;;;;:::i;:::-;3025:45;;2940:137;;;;:::o;1717:49::-;1762:4;1717:49;;;:::o;4006:306:76:-;4124:8;4108:24;;:12;:10;:12::i;:::-;:24;;;;4100:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4234:8;4189:18;:32;4208:12;:10;:12::i;:::-;4189:32;;;;;;;;;;;;;;;:42;4222:8;4189:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;4286:8;4257:48;;4272:12;:10;:12::i;:::-;4257:48;;;4296:8;4257:48;;;;;;;;;;;;;;;;;;;;4006:306;;:::o;3245:125:6:-;3308:7;3334:29;:6;:12;3341:4;3334:12;;;;;;;;;;;:20;;:27;:29::i;:::-;3327:36;;3245:125;;;:::o;929:62:73:-;967:24;929:62;:::o;5091:226:6:-;5175:45;5183:6;:12;5190:4;5183:12;;;;;;;;;;;:22;;;5207:12;:10;:12::i;:::-;5175:7;:45::i;:::-;5167:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5284:26;5296:4;5302:7;5284:11;:26::i;:::-;5091:226;;:::o;997:62:73:-;1035:24;997:62;:::o;4379:158:76:-;4470:4;4493:18;:27;4512:7;4493:27;;;;;;;;;;;;;;;:37;4521:8;4493:37;;;;;;;;;;;;;;;;;;;;;;;;;4486:44;;4379:158;;;;:::o;4604:897::-;4833:1;4819:16;;:2;:16;;;;4811:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4916:12;:10;:12::i;:::-;4908:20;;:4;:20;;;:60;;;;4932:36;4949:4;4955:12;:10;:12::i;:::-;4932:16;:36::i;:::-;4908:60;4887:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5046:16;5065:12;:10;:12::i;:::-;5046:31;;5088:96;5109:8;5119:4;5125:2;5129:21;5147:2;5129:17;:21::i;:::-;5152:25;5170:6;5152:17;:25::i;:::-;5179:4;5088:20;:96::i;:::-;5217:77;5241:6;5217:77;;;;;;;;;;;;;;;;;:9;:13;5227:2;5217:13;;;;;;;;;;;:19;5231:4;5217:19;;;;;;;;;;;;;;;;:23;;:77;;;;;:::i;:::-;5195:9;:13;5205:2;5195:13;;;;;;;;;;;:19;5209:4;5195:19;;;;;;;;;;;;;;;:99;;;;5324:29;5346:6;5324:9;:13;5334:2;5324:13;;;;;;;;;;;:17;5338:2;5324:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;5304:9;:13;5314:2;5304:13;;;;;;;;;;;:17;5318:2;5304:17;;;;;;;;;;;;;;;:49;;;;5400:2;5369:46;;5394:4;5369:46;;5384:8;5369:46;;;5404:2;5408:6;5369:46;;;;;;;;;;;;;;;;;;;;;;;;5426:68;5457:8;5467:4;5473:2;5477;5481:6;5489:4;5426:30;:68::i;:::-;4604:897;;;;;;:::o;312:280:77:-;427:12;:10;:12::i;:::-;416:23;;:7;:23;;;:66;;;;443:39;460:7;469:12;:10;:12::i;:::-;443:16;:39::i;:::-;416:66;395:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;560:25;566:7;575:2;579:5;560;:25::i;:::-;312:280;;;:::o;4864:141:109:-;4934:4;4957:41;4962:3;:10;;4990:5;4982:14;;4974:23;;4957:4;:41::i;:::-;4950:48;;4864:141;;;;:::o;590:104:0:-;643:15;677:10;670:17;;590:104;:::o;8964:700:76:-;9112:1;9098:16;;:2;:16;;;;9090:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9184:7;:14;9170:3;:10;:28;9162:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9254:16;9273:12;:10;:12::i;:::-;9254:31;;9296:66;9317:8;9335:1;9339:2;9343:3;9348:7;9357:4;9296:20;:66::i;:::-;9378:6;9373:124;9394:3;:10;9390:1;:14;9373:124;;;9449:37;9464:9;:17;9474:3;9478:1;9474:6;;;;;;;;;;;;;;9464:17;;;;;;;;;;;:21;9482:2;9464:21;;;;;;;;;;;;;;;;9449:7;9457:1;9449:10;;;;;;;;;;;;;;:14;;:37;;;;:::i;:::-;9425:9;:17;9435:3;9439:1;9435:6;;;;;;;;;;;;;;9425:17;;;;;;;;;;;:21;9443:2;9425:21;;;;;;;;;;;;;;;:61;;;;9406:3;;;;;;;9373:124;;;;9548:2;9512:53;;9544:1;9512:53;;9526:8;9512:53;;;9552:3;9557:7;9512:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9576:81;9612:8;9630:1;9634:2;9638:3;9643:7;9652:4;9576:35;:81::i;:::-;8964:700;;;;;:::o;3010:342:73:-;3279:66;3306:8;3316:4;3322:2;3326:3;3331:7;3340:4;3279:26;:66::i;:::-;3010:342;;;;;;:::o;1746:187:17:-;1832:7;1864:1;1859;:6;;1867:12;1851:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:9;1906:1;1902;:5;1890:17;;1925:1;1918:8;;;1746:187;;;;;:::o;874:176::-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o;13264:778:76:-;13508:15;:2;:13;;;:15::i;:::-;13504:532;;;13560:2;13543:43;;;13587:8;13597:4;13603:3;13608:7;13617:4;13543:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13539:487;;;;:::i;:::-;;;;;;;;13902:6;13895:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13539:487;13949:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13539:487;13683:52;;;13671:64;;;:8;:64;;;;13667:161;;13759:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13667:161;13623:219;13504:532;13264:778;;;;;;:::o;7015:184:6:-;7088:33;7113:7;7088:6;:12;7095:4;7088:12;;;;;;;;;;;:20;;:24;;:33;;;;:::i;:::-;7084:109;;;7169:12;:10;:12::i;:::-;7142:40;;7160:7;7142:40;;7154:4;7142:40;;;;;;;;;;7084:109;7015:184;;:::o;7205:188::-;7279:36;7307:7;7279:6;:12;7286:4;7279:12;;;;;;;;;;;:20;;:27;;:36;;;;:::i;:::-;7275:112;;;7363:12;:10;:12::i;:::-;7336:40;;7354:7;7336:40;;7348:4;7336:40;;;;;;;;;;7275:112;7205:188;;:::o;2033:117:110:-;1601:7;;;;;;;;;;;1593:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2101:5:::1;2091:7;;:15;;;;;;;;;;;;;;;;;;2121:22;2130:12;:10;:12::i;:::-;2121:22;;;;;;;;;;;;;;;;;;;;2033:117::o:0;10645:705:76:-;10784:1;10765:21;;:7;:21;;;;10757:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10858:7;:14;10844:3;:10;:28;10836:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10928:16;10947:12;:10;:12::i;:::-;10928:31;;10970:69;10991:8;11001:7;11018:1;11022:3;11027:7;10970:69;;;;;;;;;;;;:20;:69::i;:::-;11055:6;11050:220;11071:3;:10;11067:1;:14;11050:220;;;11131:128;11179:7;11187:1;11179:10;;;;;;;;;;;;;;11131:128;;;;;;;;;;;;;;;;;:9;:17;11141:3;11145:1;11141:6;;;;;;;;;;;;;;11131:17;;;;;;;;;;;:26;11149:7;11131:26;;;;;;;;;;;;;;;;:30;;:128;;;;;:::i;:::-;11102:9;:17;11112:3;11116:1;11112:6;;;;;;;;;;;;;;11102:17;;;;;;;;;;;:26;11120:7;11102:26;;;;;;;;;;;;;;;:157;;;;11083:3;;;;;;;11050:220;;;;11326:1;11285:58;;11309:7;11285:58;;11299:8;11285:58;;;11330:3;11335:7;11285:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10645:705;;;;:::o;8047:572::-;8180:1;8161:21;;:7;:21;;;;8153:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8231:16;8250:12;:10;:12::i;:::-;8231:31;;8273:107;8294:8;8312:1;8316:7;8325:21;8343:2;8325:17;:21::i;:::-;8348:25;8366:6;8348:17;:25::i;:::-;8375:4;8273:20;:107::i;:::-;8416:34;8443:6;8416:9;:13;8426:2;8416:13;;;;;;;;;;;:22;8430:7;8416:22;;;;;;;;;;;;;;;;:26;;:34;;;;:::i;:::-;8391:9;:13;8401:2;8391:13;;;;;;;;;;;:22;8405:7;8391:22;;;;;;;;;;;;;;;:59;;;;8502:7;8465:57;;8498:1;8465:57;;8480:8;8465:57;;;8511:2;8515:6;8465:57;;;;;;;;;;;;;;;;;;;;;;;;8533:79;8564:8;8582:1;8586:7;8595:2;8599:6;8607:4;8533:30;:79::i;:::-;8047:572;;;;;:::o;1786:115:110:-;1337:7;;;;;;;;;;;1336:8;1328:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1855:4:::1;1845:7;;:14;;;;;;;;;;;;;;;;;;1874:20;1881:12;:10;:12::i;:::-;1874:20;;;;;;;;;;;;;;;;;;;;1786:115::o:0;6085:147:109:-;6159:7;6201:22;6205:3;:10;;6217:5;6201:3;:22::i;:::-;6193:31;;6178:47;;6085:147;;;;:::o;5401:156::-;5481:4;5504:46;5514:3;:10;;5542:5;5534:14;;5526:23;;5504:9;:46::i;:::-;5497:53;;5401:156;;;;:::o;5638:115::-;5701:7;5727:19;5735:3;:10;;5727:7;:19::i;:::-;5720:26;;5638:115;;;:::o;14048:193:76:-;14114:16;14142:22;14181:1;14167:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14142:41;;14204:7;14193:5;14199:1;14193:8;;;;;;;;;;;;;:18;;;;;14229:5;14222:12;;;14048:193;;;:::o;12517:741::-;12736:15;:2;:13;;;:15::i;:::-;12732:520;;;12788:2;12771:38;;;12810:8;12820:4;12826:2;12830:6;12838:4;12771:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12767:475;;;;:::i;:::-;;;;;;;;13118:6;13111:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12767:475;13165:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12767:475;12904:47;;;12892:59;;;:8;:59;;;;12888:156;;12975:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12888:156;12844:214;12732:520;12517:741;;;;;;:::o;9913:538::-;10027:1;10008:21;;:7;:21;;;;10000:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10080:16;10099:12;:10;:12::i;:::-;10080:31;;10122:105;10143:8;10153:7;10170:1;10174:21;10192:2;10174:17;:21::i;:::-;10197:25;10215:6;10197:17;:25::i;:::-;10122:105;;;;;;;;;;;;:20;:105::i;:::-;10263:108;10303:6;10263:108;;;;;;;;;;;;;;;;;:9;:13;10273:2;10263:13;;;;;;;;;;;:22;10277:7;10263:22;;;;;;;;;;;;;;;;:26;;:108;;;;;:::i;:::-;10238:9;:13;10248:2;10238:13;;;;;;;;;;;:22;10252:7;10238:22;;;;;;;;;;;;;;;:133;;;;10429:1;10387:57;;10412:7;10387:57;;10402:8;10387:57;;;10433:2;10437:6;10387:57;;;;;;;;;;;;;;;;;;;;;;;;9913:538;;;;:::o;1611:404:109:-;1674:4;1695:21;1705:3;1710:5;1695:9;:21::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;622:393:79:-;865:66;892:8;902:4;908:2;912:3;917:7;926:4;865:26;:66::i;:::-;951:8;:6;:8::i;:::-;950:9;942:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;622:393;;;;;;:::o;718:413:104:-;778:4;981:12;1090:7;1078:20;1070:28;;1123:1;1116:4;:8;1109:15;;;718:413;;;:::o;5173:147:109:-;5246:4;5269:44;5277:3;:10;;5305:5;5297:14;;5289:23;;5269:7;:44::i;:::-;5262:51;;5173:147;;;;:::o;4423:201::-;4490:7;4538:5;4517:3;:11;;:18;;;;:26;4509:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4599:3;:11;;4611:5;4599:18;;;;;;;;;;;;;;;;4592:25;;4423:201;;;;:::o;3776:127::-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o;3984:107::-;4040:7;4066:3;:11;;:18;;;;4059:25;;3984:107;;;:::o;12284:227:76:-;;;;;;;:::o;2183:1512:109:-;2249:4;2365:18;2386:3;:12;;:19;2399:5;2386:19;;;;;;;;;;;;2365:40;;2434:1;2420:10;:15;2416:1273;;2777:21;2814:1;2801:10;:14;2777:38;;2829:17;2870:1;2849:3;:11;;:18;;;;:22;2829:42;;3111:17;3131:3;:11;;3143:9;3131:22;;;;;;;;;;;;;;;;3111:42;;3274:9;3245:3;:11;;3257:13;3245:26;;;;;;;;;;;;;;;:38;;;;3391:1;3375:13;:17;3349:3;:12;;:23;3362:9;3349:23;;;;;;;;;;;:43;;;;3498:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;3590:3;:12;;:19;3603:5;3590:19;;;;;;;;;;;3583:26;;;3631:4;3624:11;;;;;;;;2416:1273;3673:5;3666:12;;;2183:1512;;;;;:::o;5:97:-1:-;;93:2;89:7;84:2;77:5;73:14;69:28;59:38;;53:49;;;:::o;110:106::-;;200:5;195:3;191:15;169:37;;163:53;;;:::o;224:739::-;;297:4;279:16;276:26;273:2;;;305:5;;273:2;339:1;336;333;318:23;357:34;388:1;382:8;357:34;:::i;:::-;414:10;409:3;406:19;396:2;;429:5;;;396:2;460;454:9;514:1;496:16;492:24;489:1;483:4;468:49;543:4;537:11;624:16;617:4;609:6;605:17;602:39;576:18;568:6;565:30;556:91;553:2;;;655:5;;;;;553:2;693:6;687:4;683:17;725:3;719:10;748:18;740:6;737:30;734:2;;;770:5;;;;;;;734:2;814:6;807:4;802:3;798:14;794:27;847:16;841:4;837:27;832:3;829:36;826:2;;;868:5;;;;;;;;826:2;912:29;934:6;912:29;:::i;:::-;905:4;900:3;896:14;892:50;888:2;881:62;955:3;948:10;;267:696;;;;;;;;:::o",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "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": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "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"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MINTER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PAUSER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "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": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "burnBatch",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getRoleMember",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleMemberCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "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": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "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": "mintBatch",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "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": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "uri",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "ast": {
    "absolutePath": "contracts/presets/ERC1155PresetMinterPauser.sol",
    "exportedSymbols": {
      "ERC1155PresetMinterPauser": [
        7003
      ]
    },
    "id": 7004,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 6824,
        "literals": [
          "solidity",
          "^",
          "0.7",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:23:73"
      },
      {
        "absolutePath": "contracts/access/AccessControl.sol",
        "file": "../access/AccessControl.sol",
        "id": 6825,
        "nodeType": "ImportDirective",
        "scope": 7004,
        "sourceUnit": 1468,
        "src": "58:37:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "contracts/GSN/Context.sol",
        "file": "../GSN/Context.sol",
        "id": 6826,
        "nodeType": "ImportDirective",
        "scope": 7004,
        "sourceUnit": 23,
        "src": "96:28:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "contracts/token/ERC1155/ERC1155.sol",
        "file": "../token/ERC1155/ERC1155.sol",
        "id": 6827,
        "nodeType": "ImportDirective",
        "scope": 7004,
        "sourceUnit": 8314,
        "src": "125:38:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "contracts/token/ERC1155/ERC1155Burnable.sol",
        "file": "../token/ERC1155/ERC1155Burnable.sol",
        "id": 6828,
        "nodeType": "ImportDirective",
        "scope": 7004,
        "sourceUnit": 8383,
        "src": "164:46:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "contracts/token/ERC1155/ERC1155Pausable.sol",
        "file": "../token/ERC1155/ERC1155Pausable.sol",
        "id": 6829,
        "nodeType": "ImportDirective",
        "scope": 7004,
        "sourceUnit": 8482,
        "src": "211:46:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6831,
              "name": "Context",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22,
              "src": "866:7:73",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Context_$22",
                "typeString": "contract Context"
              }
            },
            "id": 6832,
            "nodeType": "InheritanceSpecifier",
            "src": "866:7:73"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6833,
              "name": "AccessControl",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1467,
              "src": "875:13:73",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AccessControl_$1467",
                "typeString": "contract AccessControl"
              }
            },
            "id": 6834,
            "nodeType": "InheritanceSpecifier",
            "src": "875:13:73"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6835,
              "name": "ERC1155Burnable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8382,
              "src": "890:15:73",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC1155Burnable_$8382",
                "typeString": "contract ERC1155Burnable"
              }
            },
            "id": 6836,
            "nodeType": "InheritanceSpecifier",
            "src": "890:15:73"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6837,
              "name": "ERC1155Pausable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8481,
              "src": "907:15:73",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC1155Pausable_$8481",
                "typeString": "contract ERC1155Pausable"
              }
            },
            "id": 6838,
            "nodeType": "InheritanceSpecifier",
            "src": "907:15:73"
          }
        ],
        "contractDependencies": [
          22,
          1467,
          1802,
          2048,
          8313,
          8382,
          8481,
          8631,
          8646,
          13994
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 6830,
          "nodeType": "StructuredDocumentation",
          "src": "259:568:73",
          "text": " @dev {ERC1155} token, including:\n  - ability for holders to burn (destroy) their tokens\n  - a minter role that allows for token minting (creation)\n  - a pauser role that allows to stop all token transfers\n This contract uses {AccessControl} to lock permissioned functions using the\n different roles - head to its documentation for details.\n The account that deploys the contract will be granted the minter and pauser\n roles, as well as the default admin role, which will let it grant both minter\n and pauser roles to other accounts."
        },
        "fullyImplemented": true,
        "id": 7003,
        "linearizedBaseContracts": [
          7003,
          8481,
          13994,
          8382,
          8313,
          8646,
          8631,
          1802,
          2048,
          1467,
          22
        ],
        "name": "ERC1155PresetMinterPauser",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "functionSelector": "d5391393",
            "id": 6843,
            "mutability": "constant",
            "name": "MINTER_ROLE",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 7003,
            "src": "929:62:73",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 6839,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "929:7:73",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "4d494e5445525f524f4c45",
                  "id": 6841,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "977:13:73",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6",
                    "typeString": "literal_string \"MINTER_ROLE\""
                  },
                  "value": "MINTER_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6",
                    "typeString": "literal_string \"MINTER_ROLE\""
                  }
                ],
                "id": 6840,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "967:9:73",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 6842,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "967:24:73",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "functionSelector": "e63ab1e9",
            "id": 6848,
            "mutability": "constant",
            "name": "PAUSER_ROLE",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 7003,
            "src": "997:62:73",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 6844,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "997:7:73",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "5041555345525f524f4c45",
                  "id": 6846,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1045:13:73",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a",
                    "typeString": "literal_string \"PAUSER_ROLE\""
                  },
                  "value": "PAUSER_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a",
                    "typeString": "literal_string \"PAUSER_ROLE\""
                  }
                ],
                "id": 6845,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "1035:9:73",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 6847,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "1035:24:73",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 6875,
              "nodeType": "Block",
              "src": "1249:156:73",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6858,
                        "name": "DEFAULT_ADMIN_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1210,
                        "src": "1270:18:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 6859,
                          "name": "_msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10,
                          "src": "1290:10:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                            "typeString": "function () view returns (address payable)"
                          }
                        },
                        "id": 6860,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1290:12:73",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 6857,
                      "name": "_setupRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1393,
                      "src": "1259:10:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 6861,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1259:44:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6862,
                  "nodeType": "ExpressionStatement",
                  "src": "1259:44:73"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6864,
                        "name": "MINTER_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6843,
                        "src": "1325:11:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 6865,
                          "name": "_msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10,
                          "src": "1338:10:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                            "typeString": "function () view returns (address payable)"
                          }
                        },
                        "id": 6866,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1338:12:73",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 6863,
                      "name": "_setupRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1393,
                      "src": "1314:10:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 6867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1314:37:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6868,
                  "nodeType": "ExpressionStatement",
                  "src": "1314:37:73"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6870,
                        "name": "PAUSER_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6848,
                        "src": "1372:11:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 6871,
                          "name": "_msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10,
                          "src": "1385:10:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                            "typeString": "function () view returns (address payable)"
                          }
                        },
                        "id": 6872,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1385:12:73",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 6869,
                      "name": "_setupRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1393,
                      "src": "1361:10:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 6873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1361:37:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6874,
                  "nodeType": "ExpressionStatement",
                  "src": "1361:37:73"
                }
              ]
            },
            "documentation": {
              "id": 6849,
              "nodeType": "StructuredDocumentation",
              "src": "1066:134:73",
              "text": " @dev Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE`, and `PAUSER_ROLE` to the account that\n deploys the contract."
            },
            "id": 6876,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 6854,
                    "name": "uri",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6851,
                    "src": "1244:3:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 6855,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6853,
                  "name": "ERC1155",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8313,
                  "src": "1236:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ERC1155_$8313_$",
                    "typeString": "type(contract ERC1155)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1236:12:73"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6852,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6851,
                  "mutability": "mutable",
                  "name": "uri",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6876,
                  "src": "1217:17:73",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6850,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1217:6:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1216:19:73"
            },
            "returnParameters": {
              "id": 6856,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1249:0:73"
            },
            "scope": 7003,
            "src": "1205:200:73",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6904,
              "nodeType": "Block",
              "src": "1704:158:73",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6890,
                            "name": "MINTER_ROLE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6843,
                            "src": "1730:11:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 6891,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10,
                              "src": "1743:10:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                "typeString": "function () view returns (address payable)"
                              }
                            },
                            "id": 6892,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1743:12:73",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 6889,
                          "name": "hasRole",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1256,
                          "src": "1722:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) view returns (bool)"
                          }
                        },
                        "id": 6893,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1722:34:73",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "455243313135355072657365744d696e7465725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e74",
                        "id": 6894,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1758:58:73",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8955910be8371dda281e80fa38d092164791ccbd984aaa07b76276bef2682e9c",
                          "typeString": "literal_string \"ERC1155PresetMinterPauser: must have minter role to mint\""
                        },
                        "value": "ERC1155PresetMinterPauser: must have minter role to mint"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8955910be8371dda281e80fa38d092164791ccbd984aaa07b76276bef2682e9c",
                          "typeString": "literal_string \"ERC1155PresetMinterPauser: must have minter role to mint\""
                        }
                      ],
                      "id": 6888,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1714:7:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6895,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1714:103:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6896,
                  "nodeType": "ExpressionStatement",
                  "src": "1714:103:73"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6898,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6879,
                        "src": "1834:2:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6899,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6881,
                        "src": "1838:2:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6900,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6883,
                        "src": "1842:6:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6901,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6885,
                        "src": "1850:4:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 6897,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7861,
                      "src": "1828:5:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,uint256,bytes memory)"
                      }
                    },
                    "id": 6902,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1828:27:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6903,
                  "nodeType": "ExpressionStatement",
                  "src": "1828:27:73"
                }
              ]
            },
            "documentation": {
              "id": 6877,
              "nodeType": "StructuredDocumentation",
              "src": "1411:200:73",
              "text": " @dev Creates `amount` new tokens for `to`, of token type `id`.\n See {ERC1155-_mint}.\n Requirements:\n - the caller must have the `MINTER_ROLE`."
            },
            "functionSelector": "731133e9",
            "id": 6905,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6886,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6879,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6905,
                  "src": "1630:10:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6878,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1630:7:73",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6881,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6905,
                  "src": "1642:10:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6880,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1642:7:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6883,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6905,
                  "src": "1654:14:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6882,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1654:7:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6885,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6905,
                  "src": "1670:17:73",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6884,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1670:5:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1629:59:73"
            },
            "returnParameters": {
              "id": 6887,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1704:0:73"
            },
            "scope": 7003,
            "src": "1616:246:73",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6935,
              "nodeType": "Block",
              "src": "2077:165:73",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6921,
                            "name": "MINTER_ROLE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6843,
                            "src": "2103:11:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 6922,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10,
                              "src": "2116:10:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                "typeString": "function () view returns (address payable)"
                              }
                            },
                            "id": 6923,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2116:12:73",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 6920,
                          "name": "hasRole",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1256,
                          "src": "2095:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) view returns (bool)"
                          }
                        },
                        "id": 6924,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2095:34:73",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "455243313135355072657365744d696e7465725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e74",
                        "id": 6925,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2131:58:73",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8955910be8371dda281e80fa38d092164791ccbd984aaa07b76276bef2682e9c",
                          "typeString": "literal_string \"ERC1155PresetMinterPauser: must have minter role to mint\""
                        },
                        "value": "ERC1155PresetMinterPauser: must have minter role to mint"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8955910be8371dda281e80fa38d092164791ccbd984aaa07b76276bef2682e9c",
                          "typeString": "literal_string \"ERC1155PresetMinterPauser: must have minter role to mint\""
                        }
                      ],
                      "id": 6919,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2087:7:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6926,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2087:103:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6927,
                  "nodeType": "ExpressionStatement",
                  "src": "2087:103:73"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6929,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6908,
                        "src": "2212:2:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6930,
                        "name": "ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6911,
                        "src": "2216:3:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6931,
                        "name": "amounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6914,
                        "src": "2221:7:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6932,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6916,
                        "src": "2230:4:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 6928,
                      "name": "_mintBatch",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7969,
                      "src": "2201:10:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256[] memory,uint256[] memory,bytes memory)"
                      }
                    },
                    "id": 6933,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2201:34:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6934,
                  "nodeType": "ExpressionStatement",
                  "src": "2201:34:73"
                }
              ]
            },
            "documentation": {
              "id": 6906,
              "nodeType": "StructuredDocumentation",
              "src": "1868:91:73",
              "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] variant of {mint}."
            },
            "functionSelector": "1f7fdffa",
            "id": 6936,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mintBatch",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6917,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6908,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6936,
                  "src": "1983:10:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6907,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1983:7:73",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6911,
                  "mutability": "mutable",
                  "name": "ids",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6936,
                  "src": "1995:20:73",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6909,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1995:7:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6910,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1995:9:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6914,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6936,
                  "src": "2017:24:73",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6912,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2017:7:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6913,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2017:9:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6916,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6936,
                  "src": "2043:17:73",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6915,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2043:5:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1982:79:73"
            },
            "returnParameters": {
              "id": 6918,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2077:0:73"
            },
            "scope": 7003,
            "src": "1964:278:73",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6952,
              "nodeType": "Block",
              "src": "2479:139:73",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6942,
                            "name": "PAUSER_ROLE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6848,
                            "src": "2505:11:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 6943,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10,
                              "src": "2518:10:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                "typeString": "function () view returns (address payable)"
                              }
                            },
                            "id": 6944,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2518:12:73",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 6941,
                          "name": "hasRole",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1256,
                          "src": "2497:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) view returns (bool)"
                          }
                        },
                        "id": 6945,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2497:34:73",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "455243313135355072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f207061757365",
                        "id": 6946,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2533:59:73",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d5053a301adec69bf5c7c3782556a354b14090e41fa7ca93c4de3863fd6a98b9",
                          "typeString": "literal_string \"ERC1155PresetMinterPauser: must have pauser role to pause\""
                        },
                        "value": "ERC1155PresetMinterPauser: must have pauser role to pause"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d5053a301adec69bf5c7c3782556a354b14090e41fa7ca93c4de3863fd6a98b9",
                          "typeString": "literal_string \"ERC1155PresetMinterPauser: must have pauser role to pause\""
                        }
                      ],
                      "id": 6940,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2489:7:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6947,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2489:104:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6948,
                  "nodeType": "ExpressionStatement",
                  "src": "2489:104:73"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 6949,
                      "name": "_pause",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13977,
                      "src": "2603:6:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 6950,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2603:8:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6951,
                  "nodeType": "ExpressionStatement",
                  "src": "2603:8:73"
                }
              ]
            },
            "documentation": {
              "id": 6937,
              "nodeType": "StructuredDocumentation",
              "src": "2248:194:73",
              "text": " @dev Pauses all token transfers.\n See {ERC1155Pausable} and {Pausable-_pause}.\n Requirements:\n - the caller must have the `PAUSER_ROLE`."
            },
            "functionSelector": "8456cb59",
            "id": 6953,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "pause",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6938,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2461:2:73"
            },
            "returnParameters": {
              "id": 6939,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2479:0:73"
            },
            "scope": 7003,
            "src": "2447:171:73",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6969,
              "nodeType": "Block",
              "src": "2861:143:73",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6959,
                            "name": "PAUSER_ROLE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6848,
                            "src": "2887:11:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 6960,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10,
                              "src": "2900:10:73",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                "typeString": "function () view returns (address payable)"
                              }
                            },
                            "id": 6961,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2900:12:73",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 6958,
                          "name": "hasRole",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1256,
                          "src": "2879:7:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) view returns (bool)"
                          }
                        },
                        "id": 6962,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2879:34:73",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "455243313135355072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e7061757365",
                        "id": 6963,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2915:61:73",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_be510562063387b7714478be5eff01a8c39efbb1b76d9be224d34aac440c9e31",
                          "typeString": "literal_string \"ERC1155PresetMinterPauser: must have pauser role to unpause\""
                        },
                        "value": "ERC1155PresetMinterPauser: must have pauser role to unpause"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_be510562063387b7714478be5eff01a8c39efbb1b76d9be224d34aac440c9e31",
                          "typeString": "literal_string \"ERC1155PresetMinterPauser: must have pauser role to unpause\""
                        }
                      ],
                      "id": 6957,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2871:7:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6964,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2871:106:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6965,
                  "nodeType": "ExpressionStatement",
                  "src": "2871:106:73"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 6966,
                      "name": "_unpause",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13993,
                      "src": "2987:8:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 6967,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2987:10:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6968,
                  "nodeType": "ExpressionStatement",
                  "src": "2987:10:73"
                }
              ]
            },
            "documentation": {
              "id": 6954,
              "nodeType": "StructuredDocumentation",
              "src": "2624:198:73",
              "text": " @dev Unpauses all token transfers.\n See {ERC1155Pausable} and {Pausable-_unpause}.\n Requirements:\n - the caller must have the `PAUSER_ROLE`."
            },
            "functionSelector": "3f4ba83a",
            "id": 6970,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "unpause",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6955,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2843:2:73"
            },
            "returnParameters": {
              "id": 6956,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2861:0:73"
            },
            "scope": 7003,
            "src": "2827:177:73",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              8152,
              8480
            ],
            "body": {
              "id": 7001,
              "nodeType": "Block",
              "src": "3269:83:73",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6993,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6972,
                        "src": "3306:8:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6994,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6974,
                        "src": "3316:4:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6995,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6976,
                        "src": "3322:2:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6996,
                        "name": "ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6979,
                        "src": "3326:3:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6997,
                        "name": "amounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6982,
                        "src": "3331:7:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6998,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6984,
                        "src": "3340:4:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 6990,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "3279:5:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_ERC1155PresetMinterPauser_$7003",
                          "typeString": "contract super ERC1155PresetMinterPauser"
                        }
                      },
                      "id": 6992,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_beforeTokenTransfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8480,
                      "src": "3279:26:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                      }
                    },
                    "id": 6999,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3279:66:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7000,
                  "nodeType": "ExpressionStatement",
                  "src": "3279:66:73"
                }
              ]
            },
            "documentation": null,
            "id": 7002,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_beforeTokenTransfer",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6988,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 6986,
                  "name": "ERC1155",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 8313,
                  "src": "3239:7:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERC1155_$8313",
                    "typeString": "contract ERC1155"
                  }
                },
                {
                  "contractScope": null,
                  "id": 6987,
                  "name": "ERC1155Pausable",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 8481,
                  "src": "3248:15:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERC1155Pausable_$8481",
                    "typeString": "contract ERC1155Pausable"
                  }
                }
              ],
              "src": "3230:34:73"
            },
            "parameters": {
              "id": 6985,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6972,
                  "mutability": "mutable",
                  "name": "operator",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7002,
                  "src": "3049:16:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6971,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3049:7:73",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6974,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7002,
                  "src": "3075:12:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6973,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3075:7:73",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6976,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7002,
                  "src": "3097:10:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6975,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3097:7:73",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6979,
                  "mutability": "mutable",
                  "name": "ids",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7002,
                  "src": "3117:20:73",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6977,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3117:7:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6978,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3117:9:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6982,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7002,
                  "src": "3147:24:73",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6980,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3147:7:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6981,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3147:9:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6984,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7002,
                  "src": "3181:17:73",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6983,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3181:5:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3039:165:73"
            },
            "returnParameters": {
              "id": 6989,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3269:0:73"
            },
            "scope": 7003,
            "src": "3010:342:73",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          }
        ],
        "scope": 7004,
        "src": "828:2526:73"
      }
    ],
    "src": "33:3322:73"
  },
  "bytecode": "0x60806040523480156200001157600080fd5b506040516200482b3803806200482b833981810160405260208110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b5060405250505080620001116301ffc9a760e01b6200021b60201b60201c565b62000122816200032460201b60201c565b6200013a63d9b67a2660e01b6200021b60201b60201c565b62000152630e89341c60e01b6200021b60201b60201c565b506000600560006101000a81548160ff021916908315150217905550620001926000801b620001866200034060201b60201c565b6200034860201b60201c565b620001d37f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6620001c76200034060201b60201c565b6200034860201b60201c565b620002147f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a620002086200034060201b60201c565b6200034860201b60201c565b506200057c565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620002b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b80600490805190602001906200033c929190620004d6565b5050565b600033905090565b6200035a82826200035e60201b60201c565b5050565b6200038c816000808581526020019081526020016000206000016200040160201b620024711790919060201c565b15620003fd57620003a26200034060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600062000431836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200043960201b60201c565b905092915050565b60006200044d8383620004b360201b60201c565b620004a8578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050620004ad565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200051957805160ff19168380011785556200054a565b828001600101855582156200054a579182015b82811115620005495782518255916020019190600101906200052c565b5b5090506200055991906200055d565b5090565b5b80821115620005785760008160009055506001016200055e565b5090565b61429f806200058c6000396000f3fe608060405234801561001057600080fd5b50600436106101725760003560e01c8063731133e9116100de578063ca15c87311610097578063e63ab1e911610071578063e63ab1e914610df9578063e985e9c514610e17578063f242432a14610e91578063f5298aca14610fa057610172565b8063ca15c87314610d4b578063d539139314610d8d578063d547741f14610dab57610172565b8063731133e914610b1e5780638456cb5914610c0d5780639010d07c14610c1757806391d1485414610c79578063a217fddf14610cdd578063a22cb46514610cfb57610172565b80632f2ff15d116101305780632f2ff15d1461074b57806336568abe146107995780633f4ba83a146107e75780634e1273f4146107f15780635c975abb146109925780636b20c454146109b257610172565b8062fdd58e1461017757806301ffc9a7146101d95780630e89341c1461023c5780631f7fdffa146102e3578063248a9ca3146104e65780632eb2c2d614610528575b600080fd5b6101c36004803603604081101561018d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ff8565b6040518082815260200191505060405180910390f35b610224600480360360208110156101ef57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506110d8565b60405180821515815260200191505060405180910390f35b6102686004803603602081101561025257600080fd5b8101908080359060200190929190505050611140565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a857808201518184015260208101905061028d565b50505050905090810190601f1680156102d55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104e4600480360360808110156102f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561033657600080fd5b82018360208201111561034857600080fd5b8035906020019184602083028401116401000000008311171561036a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156103ca57600080fd5b8201836020820111156103dc57600080fd5b803590602001918460208302840111640100000000831117156103fe57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561045e57600080fd5b82018360208201111561047057600080fd5b8035906020019184600183028401116401000000008311171561049257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506111e4565b005b610512600480360360208110156104fc57600080fd5b810190808035906020019092919050505061127c565b6040518082815260200191505060405180910390f35b610749600480360360a081101561053e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561059b57600080fd5b8201836020820111156105ad57600080fd5b803590602001918460208302840111640100000000831117156105cf57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561062f57600080fd5b82018360208201111561064157600080fd5b8035906020019184602083028401116401000000008311171561066357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156106c357600080fd5b8201836020820111156106d557600080fd5b803590602001918460018302840111640100000000831117156106f757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061129b565b005b6107976004803603604081101561076157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611726565b005b6107e5600480360360408110156107af57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117af565b005b6107ef611848565b005b61093b6004803603604081101561080757600080fd5b810190808035906020019064010000000081111561082457600080fd5b82018360208201111561083657600080fd5b8035906020019184602083028401116401000000008311171561085857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156108b857600080fd5b8201836020820111156108ca57600080fd5b803590602001918460208302840111640100000000831117156108ec57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506118d8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561097e578082015181840152602081019050610963565b505050509050019250505060405180910390f35b61099a611aca565b60405180821515815260200191505060405180910390f35b610b1c600480360360608110156109c857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610a0557600080fd5b820183602082011115610a1757600080fd5b80359060200191846020830284011164010000000083111715610a3957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610a9957600080fd5b820183602082011115610aab57600080fd5b80359060200191846020830284011164010000000083111715610acd57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611ae1565b005b610c0b60048036036080811015610b3457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610b8557600080fd5b820183602082011115610b9757600080fd5b80359060200191846001830284011164010000000083111715610bb957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611b94565b005b610c15611c2c565b005b610c4d60048036036040811015610c2d57600080fd5b810190808035906020019092919080359060200190929190505050611cbc565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610cc560048036036040811015610c8f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ced565b60405180821515815260200191505060405180910390f35b610ce5611d1e565b6040518082815260200191505060405180910390f35b610d4960048036036040811015610d1157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611d25565b005b610d7760048036036020811015610d6157600080fd5b8101908080359060200190929190505050611ebe565b6040518082815260200191505060405180910390f35b610d95611ee4565b6040518082815260200191505060405180910390f35b610df760048036036040811015610dc157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f08565b005b610e01611f91565b6040518082815260200191505060405180910390f35b610e7960048036036040811015610e2d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fb5565b60405180821515815260200191505060405180910390f35b610f9e600480360360a0811015610ea757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610f1857600080fd5b820183602082011115610f2a57600080fd5b80359060200191846001830284011164010000000083111715610f4c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612049565b005b610ff660048036036060811015610fb657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506123be565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613f4b602b913960400191505060405180910390fd5b6002600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600060016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111d85780601f106111ad576101008083540402835291602001916111d8565b820191906000526020600020905b8154815290600101906020018083116111bb57829003601f168201915b50505050509050919050565b6112157f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66112106124a1565b611ced565b61126a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806140ca6038913960400191505060405180910390fd5b611276848484846124a9565b50505050565b6000806000838152602001908152602001600020600201549050919050565b81518351146112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141f26028913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561137b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806140506025913960400191505060405180910390fd5b6113836124a1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806113c957506113c8856113c36124a1565b611fb5565b5b61141e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806140756032913960400191505060405180910390fd5b60006114286124a1565b90506114388187878787876127cb565b60005b845181101561160957600085828151811061145257fe5b60200260200101519050600085838151811061146a57fe5b602002602001015190506114f1816040518060600160405280602a8152602001614102602a91396002600086815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e19092919063ffffffff16565b6002600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115a8816002600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a190919063ffffffff16565b6002600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505080600101905061143b565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156116b957808201518184015260208101905061169e565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156116fb5780820151818401526020810190506116e0565b5050505090500194505050505060405180910390a461171e818787878787612929565b505050505050565b61174c600080848152602001908152602001600020600201546117476124a1565b611ced565b6117a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613f1c602f913960400191505060405180910390fd5b6117ab8282612cb8565b5050565b6117b76124a1565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461183a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061423b602f913960400191505060405180910390fd5b6118448282612d4b565b5050565b6118797f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6118746124a1565b611ced565b6118ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b81526020018061412c603b913960400191505060405180910390fd5b6118d6612dde565b565b60608151835114611934576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806141c96029913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561194e57600080fd5b5060405190808252806020026020018201604052801561197d5781602001602082028036833780820191505090505b50905060005b8451811015611abf57600073ffffffffffffffffffffffffffffffffffffffff168582815181106119b057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613f766031913960400191505060405180910390fd5b60026000858381518110611a3557fe5b602002602001015181526020019081526020016000206000868381518110611a5957fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110611aa857fe5b602002602001018181525050806001019050611983565b508091505092915050565b6000600560009054906101000a900460ff16905090565b611ae96124a1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611b2f5750611b2e83611b296124a1565b611fb5565b5b611b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613ff76029913960400191505060405180910390fd5b611b8f838383612ed1565b505050565b611bc57f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6611bc06124a1565b611ced565b611c1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806140ca6038913960400191505060405180910390fd5b611c268484848461320c565b50505050565b611c5d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a611c586124a1565b611ced565b611cb2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806141676039913960400191505060405180910390fd5b611cba61340f565b565b6000611ce58260008086815260200190815260200160002060000161350390919063ffffffff16565b905092915050565b6000611d168260008086815260200190815260200160002060000161351d90919063ffffffff16565b905092915050565b6000801b81565b8173ffffffffffffffffffffffffffffffffffffffff16611d446124a1565b73ffffffffffffffffffffffffffffffffffffffff161415611db1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806141a06029913960400191505060405180910390fd5b8060036000611dbe6124a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611e6b6124a1565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6000611edd60008084815260200190815260200160002060000161354d565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b611f2e60008084815260200190815260200160002060020154611f296124a1565b611ced565b611f83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806140206030913960400191505060405180910390fd5b611f8d8282612d4b565b5050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156120cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806140506025913960400191505060405180910390fd5b6120d76124a1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061211d575061211c856121176124a1565b611fb5565b5b612172576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613ff76029913960400191505060405180910390fd5b600061217c6124a1565b905061219c81878761218d88613562565b61219688613562565b876127cb565b612219836040518060600160405280602a8152602001614102602a91396002600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e19092919063ffffffff16565b6002600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122d0836002600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a190919063ffffffff16565b6002600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a46123b68187878787876135d2565b505050505050565b6123c66124a1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061240c575061240b836124066124a1565b611fb5565b5b612461576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613ff76029913960400191505060405180910390fd5b61246c8383836138df565b505050565b6000612499836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613afb565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561252f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061421a6021913960400191505060405180910390fd5b8151835114612589576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141f26028913960400191505060405180910390fd5b60006125936124a1565b90506125a4816000878787876127cb565b60005b84518110156126ad57612639600260008784815181106125c357fe5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485838151811061262357fe5b60200260200101516128a190919063ffffffff16565b6002600087848151811061264957fe5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806001019150506125a7565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561275e578082015181840152602081019050612743565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156127a0578082015181840152602081019050612785565b5050505090500194505050505060405180910390a46127c481600087878787612929565b5050505050565b6127d9868686868686613b6b565b505050505050565b600083831115829061288e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612853578082015181840152602081019050612838565b50505050905090810190601f1680156128805780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008082840190508381101561291f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6129488473ffffffffffffffffffffffffffffffffffffffff16613bdf565b15612cb0578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015612a005780820151818401526020810190506129e5565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015612a42578082015181840152602081019050612a27565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015612a81578082015181840152602081019050612a66565b50505050905090810190601f168015612aae5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015612ad357600080fd5b505af1925050508015612b0757506040513d6020811015612af357600080fd5b810190808051906020019092919050505060015b612c1157612b13613de7565b80612b1e5750612bc0565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612b85578082015181840152602081019050612b6a565b50505050905090810190601f168015612bb25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180613e9e6034913960400191505060405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613ef46028913960400191505060405180910390fd5b505b505050505050565b612cdf8160008085815260200190815260200160002060000161247190919063ffffffff16565b15612d4757612cec6124a1565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b612d7281600080858152602001908152602001600020600001613bf290919063ffffffff16565b15612dda57612d7f6124a1565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600560009054906101000a900460ff16612e60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612ea46124a1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f57576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140a76023913960400191505060405180910390fd5b8051825114612fb1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141f26028913960400191505060405180910390fd5b6000612fbb6124a1565b9050612fdb818560008686604051806020016040528060008152506127cb565b60005b83518110156130fe5761308a838281518110612ff657fe5b6020026020010151604051806060016040528060248152602001613fa7602491396002600088868151811061302757fe5b6020026020010151815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e19092919063ffffffff16565b6002600086848151811061309a57fe5b6020026020010151815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050612fde565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156131af578082015181840152602081019050613194565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156131f15780820151818401526020810190506131d6565b5050505090500194505050505060405180910390a450505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061421a6021913960400191505060405180910390fd5b600061329c6124a1565b90506132bd816000876132ae88613562565b6132b788613562565b876127cb565b613320836002600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a190919063ffffffff16565b6002600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a4613408816000878787876135d2565b5050505050565b600560009054906101000a900460ff1615613492576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586134d66124a1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60006135128360000183613c22565b60001c905092915050565b6000613545836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613ca5565b905092915050565b600061355b82600001613cc8565b9050919050565b606080600167ffffffffffffffff8111801561357d57600080fd5b506040519080825280602002602001820160405280156135ac5781602001602082028036833780820191505090505b50905082816000815181106135bd57fe5b60200260200101818152505080915050919050565b6135f18473ffffffffffffffffffffffffffffffffffffffff16613bdf565b156138d7578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156136aa57808201518184015260208101905061368f565b50505050905090810190601f1680156136d75780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1580156136fa57600080fd5b505af192505050801561372e57506040513d602081101561371a57600080fd5b810190808051906020019092919050505060015b6138385761373a613de7565b8061374557506137e7565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156137ac578082015181840152602081019050613791565b50505050905090810190601f1680156137d95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180613e9e6034913960400191505060405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146138d5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613ef46028913960400191505060405180910390fd5b505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613965576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140a76023913960400191505060405180910390fd5b600061396f6124a1565b905061399f8185600061398187613562565b61398a87613562565b604051806020016040528060008152506127cb565b613a1c82604051806060016040528060248152602001613fa7602491396002600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e19092919063ffffffff16565b6002600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a450505050565b6000613b078383613ca5565b613b60578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613b65565b600090505b92915050565b613b79868686868686613cd9565b613b81611aca565b15613bd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613fcb602c913960400191505060405180910390fd5b505050505050565b600080823b905060008111915050919050565b6000613c1a836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613ce1565b905092915050565b600081836000018054905011613c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613ed26022913960400191505060405180910390fd5b826000018281548110613c9257fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600001805490509050919050565b505050505050565b60008083600101600084815260200190815260200160002054905060008114613dbd5760006001820390506000600186600001805490500390506000866000018281548110613d2c57fe5b9060005260206000200154905080876000018481548110613d4957fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480613d8157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613dc3565b60009150505b92915050565b6000601f19601f8301169050919050565b60008160e01c9050919050565b600060443d1015613df757613e9a565b60046000803e613e08600051613dda565b6308c379a08114613e195750613e9a565b60405160043d036004823e80513d602482011167ffffffffffffffff82111715613e4557505050613e9a565b808201805167ffffffffffffffff811115613e64575050505050613e9a565b8060208301013d8501811115613e7f57505050505050613e9a565b613e8882613dc9565b60208401016040528296505050505050505b9056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2062617463682062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365455243313135355061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373455243313135355072657365744d696e7465725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e74455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135355072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e7061757365455243313135355072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f207061757365455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368455243313135353a206d696e7420746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a26469706673582212204fee27c960f425ee83a3a0c36abd8b06af6c3edc3fa2ec786175458a6c0a5c5564736f6c63430007000033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101725760003560e01c8063731133e9116100de578063ca15c87311610097578063e63ab1e911610071578063e63ab1e914610df9578063e985e9c514610e17578063f242432a14610e91578063f5298aca14610fa057610172565b8063ca15c87314610d4b578063d539139314610d8d578063d547741f14610dab57610172565b8063731133e914610b1e5780638456cb5914610c0d5780639010d07c14610c1757806391d1485414610c79578063a217fddf14610cdd578063a22cb46514610cfb57610172565b80632f2ff15d116101305780632f2ff15d1461074b57806336568abe146107995780633f4ba83a146107e75780634e1273f4146107f15780635c975abb146109925780636b20c454146109b257610172565b8062fdd58e1461017757806301ffc9a7146101d95780630e89341c1461023c5780631f7fdffa146102e3578063248a9ca3146104e65780632eb2c2d614610528575b600080fd5b6101c36004803603604081101561018d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ff8565b6040518082815260200191505060405180910390f35b610224600480360360208110156101ef57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506110d8565b60405180821515815260200191505060405180910390f35b6102686004803603602081101561025257600080fd5b8101908080359060200190929190505050611140565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a857808201518184015260208101905061028d565b50505050905090810190601f1680156102d55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104e4600480360360808110156102f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561033657600080fd5b82018360208201111561034857600080fd5b8035906020019184602083028401116401000000008311171561036a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156103ca57600080fd5b8201836020820111156103dc57600080fd5b803590602001918460208302840111640100000000831117156103fe57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561045e57600080fd5b82018360208201111561047057600080fd5b8035906020019184600183028401116401000000008311171561049257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506111e4565b005b610512600480360360208110156104fc57600080fd5b810190808035906020019092919050505061127c565b6040518082815260200191505060405180910390f35b610749600480360360a081101561053e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561059b57600080fd5b8201836020820111156105ad57600080fd5b803590602001918460208302840111640100000000831117156105cf57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561062f57600080fd5b82018360208201111561064157600080fd5b8035906020019184602083028401116401000000008311171561066357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156106c357600080fd5b8201836020820111156106d557600080fd5b803590602001918460018302840111640100000000831117156106f757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061129b565b005b6107976004803603604081101561076157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611726565b005b6107e5600480360360408110156107af57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117af565b005b6107ef611848565b005b61093b6004803603604081101561080757600080fd5b810190808035906020019064010000000081111561082457600080fd5b82018360208201111561083657600080fd5b8035906020019184602083028401116401000000008311171561085857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156108b857600080fd5b8201836020820111156108ca57600080fd5b803590602001918460208302840111640100000000831117156108ec57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506118d8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561097e578082015181840152602081019050610963565b505050509050019250505060405180910390f35b61099a611aca565b60405180821515815260200191505060405180910390f35b610b1c600480360360608110156109c857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610a0557600080fd5b820183602082011115610a1757600080fd5b80359060200191846020830284011164010000000083111715610a3957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610a9957600080fd5b820183602082011115610aab57600080fd5b80359060200191846020830284011164010000000083111715610acd57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611ae1565b005b610c0b60048036036080811015610b3457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610b8557600080fd5b820183602082011115610b9757600080fd5b80359060200191846001830284011164010000000083111715610bb957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611b94565b005b610c15611c2c565b005b610c4d60048036036040811015610c2d57600080fd5b810190808035906020019092919080359060200190929190505050611cbc565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610cc560048036036040811015610c8f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ced565b60405180821515815260200191505060405180910390f35b610ce5611d1e565b6040518082815260200191505060405180910390f35b610d4960048036036040811015610d1157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611d25565b005b610d7760048036036020811015610d6157600080fd5b8101908080359060200190929190505050611ebe565b6040518082815260200191505060405180910390f35b610d95611ee4565b6040518082815260200191505060405180910390f35b610df760048036036040811015610dc157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f08565b005b610e01611f91565b6040518082815260200191505060405180910390f35b610e7960048036036040811015610e2d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fb5565b60405180821515815260200191505060405180910390f35b610f9e600480360360a0811015610ea757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610f1857600080fd5b820183602082011115610f2a57600080fd5b80359060200191846001830284011164010000000083111715610f4c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612049565b005b610ff660048036036060811015610fb657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506123be565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613f4b602b913960400191505060405180910390fd5b6002600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600060016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111d85780601f106111ad576101008083540402835291602001916111d8565b820191906000526020600020905b8154815290600101906020018083116111bb57829003601f168201915b50505050509050919050565b6112157f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66112106124a1565b611ced565b61126a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806140ca6038913960400191505060405180910390fd5b611276848484846124a9565b50505050565b6000806000838152602001908152602001600020600201549050919050565b81518351146112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141f26028913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561137b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806140506025913960400191505060405180910390fd5b6113836124a1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806113c957506113c8856113c36124a1565b611fb5565b5b61141e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806140756032913960400191505060405180910390fd5b60006114286124a1565b90506114388187878787876127cb565b60005b845181101561160957600085828151811061145257fe5b60200260200101519050600085838151811061146a57fe5b602002602001015190506114f1816040518060600160405280602a8152602001614102602a91396002600086815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e19092919063ffffffff16565b6002600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115a8816002600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a190919063ffffffff16565b6002600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505080600101905061143b565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156116b957808201518184015260208101905061169e565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156116fb5780820151818401526020810190506116e0565b5050505090500194505050505060405180910390a461171e818787878787612929565b505050505050565b61174c600080848152602001908152602001600020600201546117476124a1565b611ced565b6117a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613f1c602f913960400191505060405180910390fd5b6117ab8282612cb8565b5050565b6117b76124a1565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461183a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061423b602f913960400191505060405180910390fd5b6118448282612d4b565b5050565b6118797f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6118746124a1565b611ced565b6118ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b81526020018061412c603b913960400191505060405180910390fd5b6118d6612dde565b565b60608151835114611934576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806141c96029913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561194e57600080fd5b5060405190808252806020026020018201604052801561197d5781602001602082028036833780820191505090505b50905060005b8451811015611abf57600073ffffffffffffffffffffffffffffffffffffffff168582815181106119b057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613f766031913960400191505060405180910390fd5b60026000858381518110611a3557fe5b602002602001015181526020019081526020016000206000868381518110611a5957fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110611aa857fe5b602002602001018181525050806001019050611983565b508091505092915050565b6000600560009054906101000a900460ff16905090565b611ae96124a1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611b2f5750611b2e83611b296124a1565b611fb5565b5b611b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613ff76029913960400191505060405180910390fd5b611b8f838383612ed1565b505050565b611bc57f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6611bc06124a1565b611ced565b611c1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806140ca6038913960400191505060405180910390fd5b611c268484848461320c565b50505050565b611c5d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a611c586124a1565b611ced565b611cb2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806141676039913960400191505060405180910390fd5b611cba61340f565b565b6000611ce58260008086815260200190815260200160002060000161350390919063ffffffff16565b905092915050565b6000611d168260008086815260200190815260200160002060000161351d90919063ffffffff16565b905092915050565b6000801b81565b8173ffffffffffffffffffffffffffffffffffffffff16611d446124a1565b73ffffffffffffffffffffffffffffffffffffffff161415611db1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806141a06029913960400191505060405180910390fd5b8060036000611dbe6124a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611e6b6124a1565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6000611edd60008084815260200190815260200160002060000161354d565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b611f2e60008084815260200190815260200160002060020154611f296124a1565b611ced565b611f83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806140206030913960400191505060405180910390fd5b611f8d8282612d4b565b5050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156120cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806140506025913960400191505060405180910390fd5b6120d76124a1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061211d575061211c856121176124a1565b611fb5565b5b612172576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613ff76029913960400191505060405180910390fd5b600061217c6124a1565b905061219c81878761218d88613562565b61219688613562565b876127cb565b612219836040518060600160405280602a8152602001614102602a91396002600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e19092919063ffffffff16565b6002600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122d0836002600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a190919063ffffffff16565b6002600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a46123b68187878787876135d2565b505050505050565b6123c66124a1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061240c575061240b836124066124a1565b611fb5565b5b612461576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613ff76029913960400191505060405180910390fd5b61246c8383836138df565b505050565b6000612499836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613afb565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561252f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061421a6021913960400191505060405180910390fd5b8151835114612589576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141f26028913960400191505060405180910390fd5b60006125936124a1565b90506125a4816000878787876127cb565b60005b84518110156126ad57612639600260008784815181106125c357fe5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485838151811061262357fe5b60200260200101516128a190919063ffffffff16565b6002600087848151811061264957fe5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806001019150506125a7565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561275e578082015181840152602081019050612743565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156127a0578082015181840152602081019050612785565b5050505090500194505050505060405180910390a46127c481600087878787612929565b5050505050565b6127d9868686868686613b6b565b505050505050565b600083831115829061288e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612853578082015181840152602081019050612838565b50505050905090810190601f1680156128805780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008082840190508381101561291f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6129488473ffffffffffffffffffffffffffffffffffffffff16613bdf565b15612cb0578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015612a005780820151818401526020810190506129e5565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015612a42578082015181840152602081019050612a27565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015612a81578082015181840152602081019050612a66565b50505050905090810190601f168015612aae5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015612ad357600080fd5b505af1925050508015612b0757506040513d6020811015612af357600080fd5b810190808051906020019092919050505060015b612c1157612b13613de7565b80612b1e5750612bc0565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612b85578082015181840152602081019050612b6a565b50505050905090810190601f168015612bb25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180613e9e6034913960400191505060405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613ef46028913960400191505060405180910390fd5b505b505050505050565b612cdf8160008085815260200190815260200160002060000161247190919063ffffffff16565b15612d4757612cec6124a1565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b612d7281600080858152602001908152602001600020600001613bf290919063ffffffff16565b15612dda57612d7f6124a1565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600560009054906101000a900460ff16612e60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612ea46124a1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f57576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140a76023913960400191505060405180910390fd5b8051825114612fb1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141f26028913960400191505060405180910390fd5b6000612fbb6124a1565b9050612fdb818560008686604051806020016040528060008152506127cb565b60005b83518110156130fe5761308a838281518110612ff657fe5b6020026020010151604051806060016040528060248152602001613fa7602491396002600088868151811061302757fe5b6020026020010151815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e19092919063ffffffff16565b6002600086848151811061309a57fe5b6020026020010151815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050612fde565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156131af578082015181840152602081019050613194565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156131f15780820151818401526020810190506131d6565b5050505090500194505050505060405180910390a450505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061421a6021913960400191505060405180910390fd5b600061329c6124a1565b90506132bd816000876132ae88613562565b6132b788613562565b876127cb565b613320836002600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128a190919063ffffffff16565b6002600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a4613408816000878787876135d2565b5050505050565b600560009054906101000a900460ff1615613492576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586134d66124a1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60006135128360000183613c22565b60001c905092915050565b6000613545836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613ca5565b905092915050565b600061355b82600001613cc8565b9050919050565b606080600167ffffffffffffffff8111801561357d57600080fd5b506040519080825280602002602001820160405280156135ac5781602001602082028036833780820191505090505b50905082816000815181106135bd57fe5b60200260200101818152505080915050919050565b6135f18473ffffffffffffffffffffffffffffffffffffffff16613bdf565b156138d7578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156136aa57808201518184015260208101905061368f565b50505050905090810190601f1680156136d75780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1580156136fa57600080fd5b505af192505050801561372e57506040513d602081101561371a57600080fd5b810190808051906020019092919050505060015b6138385761373a613de7565b8061374557506137e7565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156137ac578082015181840152602081019050613791565b50505050905090810190601f1680156137d95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180613e9e6034913960400191505060405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146138d5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613ef46028913960400191505060405180910390fd5b505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613965576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140a76023913960400191505060405180910390fd5b600061396f6124a1565b905061399f8185600061398187613562565b61398a87613562565b604051806020016040528060008152506127cb565b613a1c82604051806060016040528060248152602001613fa7602491396002600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127e19092919063ffffffff16565b6002600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a450505050565b6000613b078383613ca5565b613b60578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613b65565b600090505b92915050565b613b79868686868686613cd9565b613b81611aca565b15613bd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613fcb602c913960400191505060405180910390fd5b505050505050565b600080823b905060008111915050919050565b6000613c1a836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613ce1565b905092915050565b600081836000018054905011613c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613ed26022913960400191505060405180910390fd5b826000018281548110613c9257fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600001805490509050919050565b505050505050565b60008083600101600084815260200190815260200160002054905060008114613dbd5760006001820390506000600186600001805490500390506000866000018281548110613d2c57fe5b9060005260206000200154905080876000018481548110613d4957fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480613d8157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613dc3565b60009150505b92915050565b6000601f19601f8301169050919050565b60008160e01c9050919050565b600060443d1015613df757613e9a565b60046000803e613e08600051613dda565b6308c379a08114613e195750613e9a565b60405160043d036004823e80513d602482011167ffffffffffffffff82111715613e4557505050613e9a565b808201805167ffffffffffffffff811115613e64575050505050613e9a565b8060208301013d8501811115613e7f57505050505050613e9a565b613e8882613dc9565b60208401016040528296505050505050505b9056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2062617463682062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365455243313135355061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373455243313135355072657365744d696e7465725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e74455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135355072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e7061757365455243313135355072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f207061757365455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368455243313135353a206d696e7420746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a26469706673582212204fee27c960f425ee83a3a0c36abd8b06af6c3edc3fa2ec786175458a6c0a5c5564736f6c63430007000033",
  "compiler": {
    "name": "solc",
    "version": "0.7.0+commit.9e61f92b.Emscripten.clang",
    "optimizer": {
      "enabled": false,
      "runs": 200
    },
    "evmVersion": "petersburg"
  }
}
