ETH Price: $3,680.21 (+19.22%)
Gas: 9 Gwei

Contract

0x5079FC4e96338be1B5aff236ff4b00eC4452B2D3
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Safe Transfer Fr...199039952024-05-19 12:31:1139 hrs ago1716121871IN
OCM Dessert: OCM Dessert Token
0 ETH0.000173863.34617703
Safe Transfer Fr...199039082024-05-19 12:13:4739 hrs ago1716120827IN
OCM Dessert: OCM Dessert Token
0 ETH0.000108373.17540562
Safe Transfer Fr...199038952024-05-19 12:11:1139 hrs ago1716120671IN
OCM Dessert: OCM Dessert Token
0 ETH0.000107833.15953456
Set Approval For...198788272024-05-16 0:01:235 days ago1715817683IN
OCM Dessert: OCM Dessert Token
0 ETH0.000122545.05335623
Set Approval For...198710162024-05-14 21:51:356 days ago1715723495IN
OCM Dessert: OCM Dessert Token
0 ETH0.000238225.16051114
Set Approval For...198625152024-05-13 17:13:357 days ago1715620415IN
OCM Dessert: OCM Dessert Token
0 ETH0.0016390235.4498576
Set Approval For...198622812024-05-13 16:26:357 days ago1715617595IN
OCM Dessert: OCM Dessert Token
0 ETH0.0009651620.87520481
Set Approval For...198217702024-05-08 0:29:2313 days ago1715128163IN
OCM Dessert: OCM Dessert Token
0 ETH0.000177253.83372373
Set Approval For...198159712024-05-07 5:01:2313 days ago1715058083IN
OCM Dessert: OCM Dessert Token
0 ETH0.000179883.89669071
Safe Transfer Fr...198145682024-05-07 0:18:1114 days ago1715041091IN
OCM Dessert: OCM Dessert Token
0 ETH0.000202383.89503852
Set Approval For...197711682024-04-30 22:41:2320 days ago1714516883IN
OCM Dessert: OCM Dessert Token
0 ETH0.000411768.91969761
Safe Transfer Fr...197653912024-04-30 3:18:5921 days ago1714447139IN
OCM Dessert: OCM Dessert Token
0 ETH0.000317446.09974117
Set Approval For...197057172024-04-21 18:58:1129 days ago1713725891IN
OCM Dessert: OCM Dessert Token
0 ETH0.00038358.30760546
Set Approval For...197011772024-04-21 3:44:1129 days ago1713671051IN
OCM Dessert: OCM Dessert Token
0 ETH0.000252285.46518417
Safe Transfer Fr...197007402024-04-21 2:15:3530 days ago1713665735IN
OCM Dessert: OCM Dessert Token
0 ETH0.000296195.70039432
Safe Transfer Fr...197007362024-04-21 2:14:4730 days ago1713665687IN
OCM Dessert: OCM Dessert Token
0 ETH0.00029165.61207812
Set Approval For...196871102024-04-19 4:28:4731 days ago1713500927IN
OCM Dessert: OCM Dessert Token
0 ETH0.000358637.768934
Set Approval For...196541212024-04-14 13:38:2336 days ago1713101903IN
OCM Dessert: OCM Dessert Token
0 ETH0.0005060410.96212219
Safe Transfer Fr...196432022024-04-13 0:50:5938 days ago1712969459IN
OCM Dessert: OCM Dessert Token
0 ETH0.0009149817.60934505
Safe Transfer Fr...196428822024-04-12 23:45:4738 days ago1712965547IN
OCM Dessert: OCM Dessert Token
0 ETH0.0005223314.9536915
Set Approval For...196296832024-04-11 3:23:4740 days ago1712805827IN
OCM Dessert: OCM Dessert Token
0 ETH0.0006702414.51905876
Set Approval For...196275412024-04-10 20:13:2340 days ago1712780003IN
OCM Dessert: OCM Dessert Token
0 ETH0.0005546421.11881014
Set Approval For...196275412024-04-10 20:13:2340 days ago1712780003IN
OCM Dessert: OCM Dessert Token
0 ETH0.0005546421.11881014
Set Approval For...196275412024-04-10 20:13:2340 days ago1712780003IN
OCM Dessert: OCM Dessert Token
0 ETH0.0005546421.11881014
Set Approval For...196275412024-04-10 20:13:2340 days ago1712780003IN
OCM Dessert: OCM Dessert Token
0 ETH0.000974921.11881014
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OCMDesserts

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 9 of 10: OCMDesserts.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.6;

import "./ERC1155.sol";
import "./Ownable.sol";

//   
//    ______     __   __     ______     __  __     ______     __     __   __    
//   /\  __ \   /\ "-.\ \   /\  ___\   /\ \_\ \   /\  __ \   /\ \   /\ "-.\ \   
//   \ \ \/\ \  \ \ \-.  \  \ \ \____  \ \  __ \  \ \  __ \  \ \ \  \ \ \-.  \  
//    \ \_____\  \ \_\\"\_\  \ \_____\  \ \_\ \_\  \ \_\ \_\  \ \_\  \ \_\\"\_\ 
//     \/_____/   \/_/ \/_/   \/_____/   \/_/\/_/   \/_/\/_/   \/_/   \/_/ \/_/ 
//                                                                              
//    __    __     ______     __   __     __  __     ______     __  __          
//   /\ "-./  \   /\  __ \   /\ "-.\ \   /\ \/ /    /\  ___\   /\ \_\ \         
//   \ \ \-./\ \  \ \ \/\ \  \ \ \-.  \  \ \  _"-.  \ \  __\   \ \____ \        
//    \ \_\ \ \_\  \ \_____\  \ \_\\"\_\  \ \_\ \_\  \ \_____\  \/\_____\       
//     \/_/  \/_/   \/_____/   \/_/ \/_/   \/_/\/_/   \/_____/   \/_____/       
//                                                                              
//   
// 
// OnChainMonkey (OCM) Genesis was the first 100% On-Chain PFP collection in 1 transaction 
// (contract: 0x960b7a6BCD451c9968473f7bbFd9Be826EFd549A)
// 
// created by Metagood
//
// OCM Desserts is a 100% On-Chain collection in 1 transaction too! It is one that OCM Genesis 
// can eat (burn) to create the new Karma collection.
//
// OCM Desserts, being On-Chain, will also live forever, just like OCM Genesis. However,
// the Desserts will need to be burned to create Karma, so the Dessert supply will be 
// decreasing over time as people burn their Desserts.
//
//
//                            .';cllllc;'.                               
//                       .;dOXMMMMMMMMMMMMXOl'                           
//                     ,xNMMMMMMMMMMMMMMMMMMMMNk,                        
//                   ;0MMMMMMMMMMMMMMMMMMMMMMMMMM0;                      
//                 .kWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMk.                    
//                .KMMMMMMMMMMMMMMMMMMMXo;',c0MMMMMMK.                   
//               ;NMMMMMMMMMMMMMMMMMMM0.      :NMMMMMK.                  
//              lWMMMMMMNd:,;ckWMMMMMMd        oMMMMMMd                  
//             xXWMMMMM0.      ;WMMMMMX.       .XMMMMMWlclll:,.          
//           .Ox;MMMMMMo        dMMMMMMd        cMMMMMMMMMMMMMW0o'       
//          .0d 'MMMMMMK.       .NMMMMMN.        0MMMMMMMMMMMMMMMMO.     
//          Ox   XMMMMMMl        lMMMMMMx        ;MMMMMMMOxkXMMMMMMN'    
//         :N.   lMMMMMMN.       .KMMMMMW,        kMMMMMMc   :NMMMMM0    
//         lK   .cWMMMMMMd        :MMMMMMO        ,WMMMMMX.   cMMMMMM'   
//         ;N:lKWMMMMMMMMW'        0MMMMMM:        xMMMMMMl   xMMMMMN.   
//          KWMMMMMMMMMMMMk        ;WMMMMMK        .NMMMMMN,;OMMMMMMd    
//        .kMMMMMMXOWMMMMMW;        kMMMMMMl        oMMMMMMMMMMMMMMd     
//       ,KMMMMMNc  kMMMMMM0        'WMMMMMX.       .XMMMMMMMMMMMWl      
//      :NWMMMMMd   'WMMMMMMd        dMMMMMMd        cMMMMMMW0OWN:       
//     oK,OMMMMM0.   dMMMMMMW;       .NMMMMMW.        0MMMMMWoK0.        
//    d0. .XMMMMMXl'.;WMMMMMM0        lMMMMMMx        ;MMMMMMMk.         
//   ;W'   .KMMMMMMMMMMMMMMMMMc       .KMMMMMWc        kMMMMMMc          
//   oX      cKMMMMMMMMMMMMMMMK.       :MMMMMMN.       ,WMMMMMX.         
//   :W'       'lx0XNXNMMMMMMMMl        0MMMMMMk       'WMMMMMMo         
//    k0.            .OOKMMMMMMN.       ;MMMMMMMx.    ;KMMMMMMMN'        
//     dK;          .0x ;WMMMMMMd       'WMMMMMMMMX00NMMMMMMMMMMK.       
//      'x0d,.     'Kl   kMMMMMMWd.    ,KMMMMMMMMMMMMMMMMMMMMMMMMo       
//         'lddddooKO    'WMMMMMMMWKO0NMMMMMMMMMMMMMMMMMMMWX0xdNN:       
//                 ,N,    dMMMMMMMMMMMMMMMMMMMMMMMMWXOdl;'.  .OO.        
//                  x0    .NMMMMMMMMMMMMMMMMN0kdc;..        .0x          
//                  .Nc    lMMMMMMMMWX0xo:'.  .';:     .';ldKl           
//                   lX.   'WWXOxl;'.   ,:ok0NMMMMdoxxxxo:,.             
//                   .Ko  'Kk.         .0MMMMMMMMMN,.                    
//                    :N.;Kc    .';ldxxxkWMMMMMMMMMl                     
//                     OXWkcoxxxxo:,.    xMMMMMMMMMX.                    
//                     'xo:,..           .NMMMMMMMMMo                    
//                                        oMMMMMMMMMN.                   
//                                        .XMMMMMMMMM;                   
//                                         ,XMMMMMMWd                    
//                                           ;oxkxl.                     
//                                                                       
//                                                                       
//
//

/// [MIT License]
/// @title Base64
/// @notice Provides a function for encoding some bytes in base64
/// @author Brecht Devos <[email protected]>
library Base64 {
    bytes internal constant TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

    /// @notice Encodes some bytes to the base64 representation
    function encode(bytes memory data) internal pure returns (string memory) {
        uint256 len = data.length;
        if (len == 0) return "";

        // multiply by 4/3 rounded up
        uint256 encodedLen = 4 * ((len + 2) / 3);

        // Add some extra buffer at the end
        bytes memory result = new bytes(encodedLen + 32);
        bytes memory table = TABLE;

        assembly {
            let tablePtr := add(table, 1)
            let resultPtr := add(result, 32)
            for {
                let i := 0
            } lt(i, len) {
            } {
                i := add(i, 3)
                let input := and(mload(add(data, i)), 0xffffff)
                let out := mload(add(tablePtr, and(shr(18, input), 0x3F)))
                out := shl(8, out)
                out := add(out, and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF))
                out := shl(8, out)
                out := add(out, and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF))
                out := shl(8, out)
                out := add(out, and(mload(add(tablePtr, and(input, 0x3F))), 0xFF))
                out := shl(224, out)
                mstore(resultPtr, out)
                resultPtr := add(resultPtr, 4)
            }
            switch mod(len, 3)
            case 1 {
                mstore(sub(resultPtr, 2), shl(240, 0x3d3d))
            }
            case 2 {
                mstore(sub(resultPtr, 1), shl(248, 0x3d))
            }
            mstore(result, encodedLen)
        }
        return string(result);
    }
}

contract OCMDesserts is ERC1155, Ownable {
    string private svg1='<svg xmlns="http://www.w3.org/2000/svg" width="999" height="999"><path fill="#fff61d" d="M0 0h999v999H0z"/><g><path d="M0-45V0v-45" id="a"/><animateMotion dur="5s" repeatCount="indefinite" keyPoints="0;.50;1;.50;0" keyTimes="0;.25;.50;.75;1" keySplines="0.5 0 0.5 1; 0.5 0 0.5 1; 0.5 0 0.5 1; 0.5 0 0.5 1" calcMode="spline"><mpath href="#a"/></animateMotion><g fill="#ff8ff9"><path d="m310 443-30 53 42-11-12-42z"/><circle cx="346" cy="532" r="74" transform="rotate(344 346 532)"/></g><path d="m429 667 257-71-30 54-257 72 30-55zm190-204 78-21-38 69-78 21 38-69z" fill="#d0b"/><path d="m399 722 30-55 39-11-103-369-31 54c-13 24-28 46-16 91l81 290z" fill="#ff8ff9"/><path fill="#af8200" d="m506 675 70.172-20.122 28.115 98.049-70.172 20.122z"/><circle cx="376" cy="477" transform="rotate(344 376 477)" fill="#f0f" r="74"/><circle cx="568" cy="765" transform="rotate(344 568 765)" fill="#af8200" r="35"/><g fill="#f0f"><circle cx="632" cy="406" transform="rotate(344 632 406)" r="74"/><circle cx="481" cy="354" r="133" transform="rotate(344 481 354)"/></g><g fill="#d0b"><circle transform="scale(1 -1) rotate(15.543 1935.567 1139.037)" r="30"/><circle transform="scale(1 -1) rotate(15.543 1803.447 2112.435)" r="30"/></g><path fill="#f0f" d="m352 389 257.289-71.353 77.232 278.489-257.289 71.353z"/><path fill="#ffe386" d="m528 728 68.404-19.025 10.45 37.574-68.404 19.025z"/><path fill="#dab754" d="m511 666 68.25-19.57 17.916 62.482-68.25 19.57z"/><circle cx="573" cy="757" transform="rotate(344 573 757)" fill="#ffe386" r="35"/><path d="m511 666-5 9 7-2-2-7z" fill="#af8200"/><g fill="#ff8ff9"><rect x="390" y="325" width="59" height="290" rx="29" transform="rotate(344 390 325)"/><rect x="494" y="296" width="59" height="290" rx="29" transform="rotate(344 494 296)"/></g><path fill-rule="evenodd" d="M365 604c-23 6-47 0-65-14l31-54c18 14 41 19 65 13l-31 55z" fill="#d0b"/></g><ellipse cx="521" cy="895" rx="73" ry="11" fill-opacity=".2"><animate values="73;90;73" keyTimes="0;.50;1" dur="2.5s" attributeName="rx" fill="freeze" keySplines="0.5 0 0.5 1; 0.5 0 0.5 1" calcMode="spline" repeatCount="indefinite"/></ellipse></svg>';
    string private svg2='<svg xmlns="http://www.w3.org/2000/svg" width="999" height="999"><path fill="#f0f" d="M0 0h999v999H0z"/><g><path d="M0-70V0v-70z" id="a"/><animateMotion dur="6s" repeatCount="indefinite" keyPoints="0;.50;1;.50;0" keyTimes="0;.25;.50;.75;1" keySplines="0.5 0 0.5 1; 0.5 0 0.5 1; 0.5 0 0.5 1; 0.5 0 0.5 1" calcMode="spline"><mpath href="#a"/></animateMotion><circle cx="496" cy="526" transform="rotate(351 496 526)" fill="#db5" r="245"/><mask id="b" maskUnits="userSpaceOnUse" x="256" y="262" width="491" height="491" mask-type="alpha"><circle cx="501" cy="508" r="245" transform="rotate(351 501 508)" fill="#db5"/></mask><g mask="url(#b)"><circle cx="499" cy="496" transform="rotate(351 499 496)" fill="#fe8" r="246"/></g><mask id="c" maskUnits="userSpaceOnUse" x="185" y="439" width="229" height="230" mask-type="alpha"><circle cx="300" cy="554" transform="rotate(351 300 554)" fill="#db5" r="114"/></mask><g mask="url(#c)"><circle cx="297" cy="541" transform="rotate(351 297 541)" fill="#fe8" r="113"/><circle cx="301" cy="527" transform="rotate(351 301 527)" fill="#5cf" r="96"/></g><mask id="d" maskUnits="userSpaceOnUse" x="621" y="371" width="227" height="226" mask-type="alpha"><circle cx="734" cy="484" transform="rotate(351 734 484)" fill="#db5" r="113"/></mask><g mask="url(#d)"><circle cx="705" cy="486" transform="rotate(351 705 486)" fill="#fe8" r="111"/><circle cx="711" cy="467" transform="rotate(351 711 467)" fill="#5cf" r="95"/></g><mask id="e" maskUnits="userSpaceOnUse" x="257" y="267" width="491" height="491" mask-type="alpha"><path d="M744 473c21 134-69 259-203 281-133 21-259-69-281-203-21-133 69-259 203-281 134-21 259 70 281 203z" fill="#db5"/></mask><g mask="url(#e)"><circle cx="502" cy="473" transform="rotate(351 502 473)" fill="#5cf" r="221"/><circle cx="504" cy="455" transform="rotate(351 504 455)" fill="#67d9fd" r="203"/></g><g fill="#67d9fd"><circle cx="306" cy="509" transform="rotate(351 306 509)" r="71"/><circle cx="711" cy="443" transform="rotate(351 711 443)" r="71"/></g><circle cx="500" cy="466" transform="rotate(351 500 466)" fill="#fe8" r="50"/><mask id="f" maskUnits="userSpaceOnUse" x="450" y="415" width="101" height="102" mask-type="alpha"><circle cx="500" cy="466" r="50" transform="rotate(351 500 466)" fill="#fe8"/></mask><g mask="url(#f)"><circle cx="483" cy="504" transform="rotate(351 483 504)" fill="#db5" r="60"/><circle cx="479" cy="510" transform="rotate(351 479 510)" fill="#f0f" r="43"/></g><path fill-rule="evenodd" d="M540 498c11-11 16-27 13-43-4-28-31-48-59-43-24 4-41 23-43 45 6-16 20-28 37-31 27-4 53 14 57 41 2 11 0 22-5 31z" fill="#5cf"/><path d="m369 367 33.871 2.963-.61 6.973-33.871-2.963zm168-51-32.54 9.856-2.029-6.699 32.54-9.856z" fill="#f0f"/><path d="m431 319 27.507 19.985-4.114 5.663-27.507-19.985zm79 51 31.016-13.928 2.867 6.386-31.016 13.928zm-96 137-11.721-31.916 6.571-2.413 11.721 31.916z" fill="#fe0"/><path d="m458 393-29 17-4-7 29-17 4 7z" fill="#75cc0a"/><path d="m650 467 13.928 31.017-6.386 2.867-13.928-31.017zm-48 116 8.8-32.841 6.761 1.812-8.8 32.841zm1-177-33.129-7.648 1.575-6.821 33.129 7.648z" fill="#f0f"/><path d="m744 434-27.57-19.897 4.096-5.676 27.57 19.897zm-141 14 27.889-19.448 4.004 5.742-27.889 19.448z" fill="#fe0"/><path d="m579 500 32 8-1 7-33-8 2-7zm20-157 24 24-5 5-24-24 5-5zm97 111 31-14 3 7-31 14-3-7z" fill="#75cc0a"/><path d="m502 562-33.871-2.963.61-6.973 33.871 2.963zM368 438l-17 29.445-6.062-3.5 17-29.445z" fill="#f0f"/><path d="m423 596 2.963-33.871 6.973.61-2.963 33.871zm-124-60-27.923-19.399 3.994-5.749 27.923 19.399zm271 16-21.307 26.495-5.455-4.387 21.307-26.495z" fill="#fe0"/><path d="m385 550-17-29 7-4 17 29-7 4zm-88-46 31-14 3 7-31 13-3-6zm226 116-29-17 3-7 30 17-4 7z" fill="#75cc0a"/><g fill="#fff"><path d="M582 298c13 1 42 42 42 42-11-17-27-43-26-53 2-10 13-23 18-26 0 0-19 12-29 9-11-2-39-40-39-40 9 13 26 43 23 52s-16 22-23 28c0 0 22-13 34-12z"><animate attributeName="opacity" values="1;0;1" dur="1s" repeatCount="indefinite"/></path><path d="M236 510c13 2 41 41 41 41-11-16-26-41-25-51 2-10 13-22 17-25 0 0-18 11-28 8-10-2-38-39-38-39 9 13 25 43 22 51-2 9-15 21-22 27 0 0 21-13 33-12z"><animate attributeName="opacity" values="0;1;0" dur="1s" repeatCount="indefinite"/></path></g></g><ellipse cx="500" cy="880" rx="149" ry="17" fill-opacity=".2"><animate values="149;190;149" keyTimes="0;.50;1" dur="3s" attributeName="rx" fill="freeze" keySplines="0.5 0 0.5 1; 0.5 0 0.5 1" calcMode="spline" repeatCount="indefinite"/></ellipse></svg>';
    string private svg3='<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="999" height="999"><style>.B{fill:#fc0}.C{fill:#fff}.D{fill-rule:evenodd}</style><path fill="#0a4" d="M0 0h999v999H0z"/><path d="M293 0h402l224 919H79L293 0Z" fill="#7c0"/><ellipse cx="499" cy="920" rx="420" ry="44" fill="#bf4"/><g><path d="M0-30V0v-30z" id="a"/><animateMotion dur="8s" repeatCount="indefinite" keyPoints="0;.50;1;.50;0" keyTimes="0;.25;.50;.75;1" keySplines="0.5 0 0.5 1; 0.5 0 0.5 1; 0.5 0 0.5 1; 0.5 0 0.5 1" calcMode="spline"><mpath href="#a"/></animateMotion><g fill="#083"><path d="m350 225 42 14 10-20-11-18-45-8-13 14-7 28 20-11 2-9 2 10zm94-95 3 60 30 3 17-24-12-59-25-10-38 5 23 19 14-1-12 7z"/><path d="m495 211 8 35 18-1 8-16-14-34-15-3-22 7 16 9 7-2-6 5zm-100 20-21 19 36-4 32-37-20-33-29-12-32 12 20 17 5 16c4 9 9 22 9 22z"/><path d="m522 178-13 20-27-8-7-26 19-47 29 1 23 21-23 8-7 21 6 10zm31 71-17 22-30-11-6-31 26-53 33 3 26 27-28 7-11 24 7 12z"/><path d="m550 147 32 29-29-2-3-12-1 13-26 7-8-13 5 15-17 20-7-3 13-43 41-11zm11 68 48 29-33 4-9-15 5 17-27 13-14-14 11 17-10 29-9-2-3-56 41-22zm-201 16-32 44 36-10v-17l4 17 34 2 7-18-2 20 26 22 8-6-27-51-54-3zm44-113-57 32 41 7 10-18-5 20 32 17 17-15-14 19 14 35 11-2 2-67-51-28zm75 91-32 14 23 7 6-10-3 11 19 12 9-8-7 10 8 21 6-1 1-37-30-19z"/></g><g class="B D"><path d="M365 214c43 5 83-22 94-65 1-4 2-7 3-11 11 15 15 34 10 53-8 33-42 53-74 44-14-3-25-11-33-21z"/><path d="M378 254c49-8 86-52 85-103 0-5-1-9-1-13 17 13 28 33 28 56 1 39-30 72-69 73-16 0-31-5-43-13z"/></g><path d="M472 217c11-26-2-58-10-75 6 23-7 56-19 71-8 9-16 26-60 39 41 11 76-6 89-35zm-27-18c7-9 15-28 15-53-6 30-21 42-33 52-9 5-20 15-61 16 35 12 65 2 79-15z" fill="#ff2"/><g class="D"><path d="M451 280c38-32 46-89 18-132-2-3-4-6-7-10 21 2 41 13 53 32 22 33 13 77-20 99-14 9-29 12-44 11z" class="B"/><path d="M459 260c28-23 34-69 12-109-2-5-5-9-7-12 19 4 37 20 45 43 12 33 1 68-25 77-8 3-17 3-25 1z" fill="#ff2"/></g><path d="m586 177 14-1-12 86-14-2 12-83z" fill="#b80"/><g fill="#0a3"><path d="m570 175 30-3-44 37 14-34z"/><path d="m617 175-29-3 33 37-4-34z"/><path d="m587 154 9 21-52-7 43-14z"/><path d="m604 154-15 21 53-8-38-13z"/></g><path fill="#b80" d="m336 203-11.6 3.071 27.01 69.968 11.6-3.071z"/><g fill="#0a3"><path d="m349 199-25 4 44 22-19-26z"/><path d="m310 209 24-9-20 39-4-30z"/><path d="m331 184-3 21 41-19-38-2z"/><path d="m317 188 17 15-46 5 29-20z"/></g><path d="M566.19 244.48h-27.48v10.99h27.48v-10.99z" class="C"/><g class="B"><use xlink:href="#B"/><use xlink:href="#B" x="10.99"/></g><use xlink:href="#C" class="C"/><path d="M538.73 232.32a1.89 1.89 0 1 0 0-3.79 1.89 1.89 0 1 0 0 3.79z" class="B"/><use xlink:href="#C" x="27.48" class="C"/><path d="M566.17 232.32a1.895 1.895 0 0 0 0-3.79 1.89 1.89 0 1 0 0 3.79z" class="B"/><path d="M552.45 244.48a13.74 13.74 0 0 0 0-27.48 13.74 13.74 0 1 0 0 27.48z" class="C"/><path d="M552.45 241.78a10.88 10.88 0 1 0 0-21.76 10.88 10.88 0 1 0 0 21.76z" class="B"/><g class="C"><use xlink:href="#D"/><use xlink:href="#D" x="9.46"/></g><path d="M547.32 228.68a1.965 1.965 0 1 0-1.97-1.97 1.97 1.97 0 0 0 1.97 1.97zm9.39-.14a1.895 1.895 0 1 0-1.9-1.9 1.9 1.9 0 0 0 1.9 1.9z" class="B"/><use xlink:href="#E"/><use xlink:href="#E" x="9.46"/><path d="M560.49 223.8h-16.08v2.84h16.08v-2.84z" class="B"/><path d="M552.45 239.77c4.12 0 7.46-1.41 7.46-3.14 0-1.74-3.34-3.14-7.46-3.14s-7.46 1.4-7.46 3.14c0 1.73 3.34 3.14 7.46 3.14z" class="C"/><g fill="#caa000"><use xlink:href="#F"/><use xlink:href="#F" x="-3.14"/></g><path d="M557.65 237.05h-10.4v.95h10.4v-.95z" class="B"/><g class="C"><path d="m322 290 276.942-24.229 9.936 113.566-276.942 24.229z"/><ellipse cx="460" cy="278" rx="139" ry="21" transform="rotate(355 460 278)"/></g><g class="B"><ellipse cx="468" cy="366" rx="139" ry="21" transform="rotate(355 468 366)"/><path d="m330 378 276.942-24.229 4.794 54.791-276.942 24.229z"/><circle cx="237" cy="743" transform="rotate(355 237 743)" r="73"/><circle cx="763" cy="696" transform="rotate(175 763 696)" r="73"/></g><g fill="#da0"><circle transform="scale(1 -1) rotate(5.064 8519.427 2308.205)" r="29"/><circle transform="matrix(-.9961 .08827 .08827 .9961 763 696)" r="29"/></g><path d="m228.481 640.757 525.991-46.018 16.908 193.262-525.991 46.018z" class="C"/><path d="M202 679c-24 13-39 40-37 70 3 29 23 53 49 62l-12-132zm597 80c25-14 40-40 38-70-3-29-22-53-49-63l11 133z" fill="#ff2" class="D"/><g class="C"><path d="m275 448 399.474-34.949 14.206 162.38-399.474 34.949z"/><ellipse cx="475" cy="430" rx="200" ry="31" transform="rotate(355 475 430)"/></g><g class="B"><ellipse cx="484" cy="540" rx="200" ry="29" transform="rotate(355 484 540)"/><path d="m285 559 399.474-34.949 5.055 57.779-399.474 34.949z"/></g><ellipse cx="491" cy="616" rx="264" ry="41" transform="rotate(355 491 616)" class="C"/><g class="B"><ellipse cx="503" cy="745" rx="264" ry="43" transform="rotate(355 503 745)"/><path d="m240 771 525.991-46.018 5.317 60.768-525.991 46.018z"/></g><ellipse cx="509" cy="811" rx="264" ry="41" transform="rotate(355 509 811)" fill="#da0"/><path d="m434 134 18-19 15 24-7 7-26-12z" class="B"/><path d="m233 689 32-76m-32 76 32-76m13 129 71-148m-71 148 71-148m19 126 66-139m-66 139 66-139m24 126 64-135m-64 135 64-135m32 127 59-130m-59 130 59-130m31 128 60-123m-60 123 60-123m24 130 29-65m-29 65 29-65m4.616 44.32-94.797-113.655m94.797 113.655-94.797-113.655M688 700 577 570m111 130L577 570m18 128L488 576m107 122L488 576m11 126L395 586m104 116L395 586m14 128L307 601m102 113L307 601m12 130-88-98m88 98-88-98" stroke="#da0"/><g class="B"><circle cx="384" cy="685" r="6"/><circle cx="419" cy="613" r="6"/><circle cx="510" cy="601" r="6"/><circle cx="601" cy="598" r="6"/><circle cx="692" cy="601" r="6"/><circle cx="474" cy="673" r="6"/><circle cx="568" cy="666" r="6"/><circle cx="660" cy="664" r="6"/><circle cx="746" cy="666" r="6"/><circle cx="297" cy="705" r="6"/><circle cx="333" cy="629" r="6"/><circle cx="248" cy="654" r="6"/></g><path d="m327 348 36-77m-36 77 36-77m34 82 41-94m-41 94 41-94m49 83 33-88m-33 88 33-88m48 88 28-79m-28 79 28-79m-219 95-56-70m56 70-56-70m133.595 58.294-59.323-81.742m59.323 81.742-59.323-81.742M536 341l-56-86m56 86-56-86m124 75-50-76m50 76-50-76" stroke="#da0"/><g class="B"><circle cx="343" cy="314" r="6"/><circle cx="421" cy="300" r="6"/><circle cx="505" cy="293" r="6"/><circle cx="584" cy="298" r="6"/></g><path d="m336 533 51-8 10 67-53 7-8-66zm-31 200 51-10 9 65-52 11-8-66zm75-377 51-8 8 56-53 7-6-55z" fill-opacity=".3" class="C"/><path d="m481 705 45-5 8 67-47 4-6-66z" fill="#ff2"/><path d="m487 764 46-4 1 7-47 4v-7z" fill="#da0"/><g class="B"><path d="m624 677-48 2 10 57 49-2-11-57z"/><ellipse cx="596" cy="684" rx="29" ry="14" transform="rotate(352 596 684)"/></g><g fill="#da0"><ellipse cx="608" cy="740" rx="28" ry="10" transform="rotate(345 608 740)"/><path d="m605 752-79 14 60-28 19 14z"/></g><g class="B"><path d="m576 676-49 24 7 62 53-26-11-60zm-193 28 40-11 3 61-40 9-3-59z"/><ellipse rx="28" ry="11" transform="matrix(-.99462 .1036 .10703 .99426 412 702)"/></g><g fill="#da0"><ellipse rx="28" ry="10" transform="matrix(-.99987 -.01602 -.0042 .99999 414 763)"/><path d="m420 773 83-6-79-14-4 20z"/></g><path d="m423 691 59 14 6 60-63-12-2-62z" class="B"/><g><animate attributeName="opacity" values="0;1;0" dur="1s" repeatCount="indefinite"/><g class="C"><path d="M436 137c4 0 13 13 13 13-3-5-8-13-8-17 1-3 4-7 6-8 0 0-6 4-9 3-4-1-13-13-13-13 3 4 8 14 7 17 0 3-5 7-7 9 0 0 7-5 11-4zM283 561c7 1 23 23 23 23-6-9-15-23-14-29s7-12 10-14c0 0-11 6-17 5-5-2-21-23-21-23 5 8 14 25 13 30-2 5-9 12-13 15 0 0 12-7 19-7zm15 247c7 1 23 23 23 23-6-8-15-23-14-29s7-13 10-14c0 0-11 6-16 5-6-2-22-23-22-23 5 7 14 25 13 30-2 5-9 12-13 15 0 0 12-7 19-7zm493-175c5 0 16 16 16 16-4-6-10-17-10-21 1-4 5-9 7-10 0 0-7 5-11 4s-16-17-16-17c4 6 10 18 9 21-1 4-6 9-9 12 0 0 9-6 14-5z"/><use xlink:href="#A"/></g></g><g><animate attributeName="opacity" values="1;0;1" dur="1s" repeatCount="indefinite"/><g class="C"><path d="M605 732c5 1 18 18 18 18-5-7-11-18-11-22 1-5 6-10 8-11 0 0-9 4-13 3s-17-17-17-17c4 6 11 19 10 23-1 3-7 9-10 12 0 0 10-6 15-6zm80-204c5 0 17 18 17 18-4-7-11-18-10-23 0-4 5-10 7-11 0 0-8 5-12 4-5-1-17-17-17-17 4 5 11 18 10 22-2 4-7 10-10 12 0 0 9-6 15-5zM167 729c6 0 20 20 20 20-6-8-13-21-13-26 1-4 7-10 9-12 0 0-9 6-14 4-5-1-19-19-19-19 5 6 13 21 11 25-1 5-7 11-11 14 0 0 11-7 17-6z"/><use xlink:href="#A" x="-224" y="-135"/><path d="M502 180c8 0 26 25 26 25-7-10-17-26-16-32 1-7 8-14 11-16 0 0-12 7-18 5-7-1-25-25-25-25 7 8 17 27 15 33-2 5-10 13-15 17 0 0 14-8 22-7z"/></g></g></g><ellipse cx="499" cy="922" rx="215" ry="24" fill="#0a4"><animate values="230;250;230" keyTimes="0;.50;1" dur="4s" attributeName="rx" fill="freeze" keySplines="0.5 0 0.5 1; 0.5 0 0.5 1" calcMode="spline" repeatCount="indefinite"/></ellipse><defs><path id="A" d="M605 358c5 0 17 17 17 17-4-7-11-18-10-22 0-4 5-10 7-11 0 0-8 5-12 4-5-1-17-17-17-17 4 5 11 18 10 22s-7 9-10 12c0 0 9-6 15-5z"/><path id="B" d="M547.06 250.81c.28 0 .5-.22.5-.5a.5.5 0 0 0-.5-.5.51.51 0 0 0-.5.5.5.5 0 0 0 .5.5z"/><path id="C" d="M538.71 235.06c2.6 0 4.71-2.11 4.71-4.71 0-2.61-2.11-4.71-4.71-4.71s-4.71 2.1-4.71 4.71c0 2.6 2.11 4.71 4.71 4.71z"/><path id="D" d="M547.72 230.43c1.83 0 3.31-1.27 3.31-2.84s-1.48-2.84-3.31-2.84-3.31 1.27-3.31 2.84 1.48 2.84 3.31 2.84z"/><path id="E" d="M547.25 227.59a.94.94 0 1 0 0-1.89.94.94 0 0 0-.95.94c0 .53.42.95.95.95z"/><path id="F" d="M554.02 235.06c.22 0 .39-.18.39-.4a.39.39 0 0 0-.78 0c0 .22.17.4.39.4z"/></defs></svg>';

    address public eatingContract; // allowed to eat/burn Desserts
    address public randomizerContract;
    uint256 private dessertCount = 0; // maximum of 10,000 Desserts can be minted

    constructor() ERC1155("") {}

    // owner will air drop Desserts via this mint function, designed to minimize gas used for multiple mints
    // if ads.length > quantity.length, transaction will fail and no mints will go through
    // if ads.length < quantity.length, the extra values in quantity will be ignored
    function ownerMint(address[] calldata ads, uint256[] calldata quantity, uint256 typeId) external onlyOwner {
        require(typeId>0 && typeId<4, "type err");
        for (uint256 i=0; i<ads.length; i++) {
          require(dessertCount+quantity[i] < 10001, "10k");
          _mint(ads[i], typeId, quantity[i], "");
          dessertCount += quantity[i];
        }
    }

    // owner will air drop Desserts via this mint function, designed to minimize gas used for single mints
    function ownerMint1(address[] calldata ads, uint256 typeId) external onlyOwner {
        require(typeId>0 && typeId<4, "type err");
        require(dessertCount+ads.length < 10001, "10k");
        for (uint256 i=0; i<ads.length; i++) {
          _mint(ads[i], typeId, 1, "");
        }
        dessertCount += ads.length;
    }    

    function setEatingContractAddress(address eatingContractAddress) external onlyOwner {
        eatingContract = eatingContractAddress;
    }

    function setRandomizerContractAddress(address randomizerContractAddress) external onlyOwner {
        randomizerContract = randomizerContractAddress;
    }

    function burnDessertForAddress(uint256 typeId, address burnTokenAddress) external {
        require(msg.sender == eatingContract, "ad err");
        _burn(burnTokenAddress, typeId, 1);
    }

    function uri(uint256 typeId) public view override returns (string memory) {
        require(typeId>0 && typeId<4, "type err");
        bytes memory svg;
        string memory num;
        if (typeId == 1) {
            svg = bytes(svg1);
            num = '1 Incredible Ice Pop","attributes":[{"trait_type": "Dessert Type", "value": "D1';
        } else if (typeId == 2) {
            svg = bytes(svg2);
            num = '2 Divine Donut","attributes":[{"trait_type": "Dessert Type", "value": "D2';
        } else {
            svg = bytes(svg3);
            num = '3 Celestial Cake","attributes":[{"trait_type": "Dessert Type", "value": "D3';
        }
        return string(abi.encodePacked('data:application/json;base64,', Base64.encode(abi.encodePacked(
            '{"name": "D', num, '"}],"image": "data:image/svg+xml;base64,',
            Base64.encode(svg),'"}'))));
    }
}

File 1 of 10: Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)

pragma solidity ^0.8.1;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

File 2 of 10: Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 3 of 10: ERC1155.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC1155/ERC1155.sol)

pragma solidity ^0.8.0;

import "./IERC1155.sol";
import "./IERC1155Receiver.sol";
import "./IERC1155MetadataURI.sol";
import "./Address.sol";
import "./Context.sol";
import "./ERC165.sol";

/**
 * @dev Implementation of the basic standard multi-token.
 * See https://eips.ethereum.org/EIPS/eip-1155
 * Originally based on code by Enjin: https://github.com/enjin/erc-1155
 *
 * _Available since v3.1._
 */
contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
    using Address for address;

    // Mapping from token ID to account balances
    mapping(uint256 => mapping(address => uint256)) private _balances;

    // Mapping from account to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json
    string private _uri;

    /**
     * @dev See {_setURI}.
     */
    constructor(string memory uri_) {
        _setURI(uri_);
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC1155).interfaceId ||
            interfaceId == type(IERC1155MetadataURI).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC1155MetadataURI-uri}.
     *
     * This implementation returns the same URI for *all* token types. It relies
     * on the token type ID substitution mechanism
     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
     *
     * Clients calling this function must replace the `\{id\}` substring with the
     * actual token type ID.
     */
    function uri(uint256) public view virtual override returns (string memory) {
        return _uri;
    }

    /**
     * @dev See {IERC1155-balanceOf}.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
        require(account != address(0), "ERC1155: balance query for the zero address");
        return _balances[id][account];
    }

    /**
     * @dev See {IERC1155-balanceOfBatch}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(address[] memory accounts, uint256[] memory ids)
        public
        view
        virtual
        override
        returns (uint256[] memory)
    {
        require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");

        uint256[] memory batchBalances = new uint256[](accounts.length);

        for (uint256 i = 0; i < accounts.length; ++i) {
            batchBalances[i] = balanceOf(accounts[i], ids[i]);
        }

        return batchBalances;
    }

    /**
     * @dev See {IERC1155-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        _setApprovalForAll(_msgSender(), operator, approved);
    }

    /**
     * @dev See {IERC1155-isApprovedForAll}.
     */
    function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[account][operator];
    }

    /**
     * @dev See {IERC1155-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: caller is not owner nor approved"
        );
        _safeTransferFrom(from, to, id, amount, data);
    }

    /**
     * @dev See {IERC1155-safeBatchTransferFrom}.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: transfer caller is not owner nor approved"
        );
        _safeBatchTransferFrom(from, to, ids, amounts, data);
    }

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function _safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);

        uint256 fromBalance = _balances[id][from];
        require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
        unchecked {
            _balances[id][from] = fromBalance - amount;
        }
        _balances[id][to] += amount;

        emit TransferSingle(operator, from, to, id, amount);

        _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function _safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, ids, amounts, data);

        for (uint256 i = 0; i < ids.length; ++i) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

            uint256 fromBalance = _balances[id][from];
            require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
            unchecked {
                _balances[id][from] = fromBalance - amount;
            }
            _balances[id][to] += amount;
        }

        emit TransferBatch(operator, from, to, ids, amounts);

        _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);
    }

    /**
     * @dev Sets a new URI for all token types, by relying on the token type ID
     * substitution mechanism
     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
     *
     * By this mechanism, any occurrence of the `\{id\}` substring in either the
     * URI or any of the amounts in the JSON file at said URI will be replaced by
     * clients with the token type ID.
     *
     * For example, the `https://token-cdn-domain/\{id\}.json` URI would be
     * interpreted by clients as
     * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`
     * for token type ID 0x4cce0.
     *
     * See {uri}.
     *
     * Because these URIs cannot be meaningfully represented by the {URI} event,
     * this function emits no events.
     */
    function _setURI(string memory newuri) internal virtual {
        _uri = newuri;
    }

    /**
     * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function _mint(
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), to, _asSingletonArray(id), _asSingletonArray(amount), data);

        _balances[id][to] += amount;
        emit TransferSingle(operator, address(0), to, id, amount);

        _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function _mintBatch(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);

        for (uint256 i = 0; i < ids.length; i++) {
            _balances[ids[i]][to] += amounts[i];
        }

        emit TransferBatch(operator, address(0), to, ids, amounts);

        _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);
    }

    /**
     * @dev Destroys `amount` tokens of token type `id` from `from`
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `from` must have at least `amount` tokens of token type `id`.
     */
    function _burn(
        address from,
        uint256 id,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC1155: burn from the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, address(0), _asSingletonArray(id), _asSingletonArray(amount), "");

        uint256 fromBalance = _balances[id][from];
        require(fromBalance >= amount, "ERC1155: burn amount exceeds balance");
        unchecked {
            _balances[id][from] = fromBalance - amount;
        }

        emit TransferSingle(operator, from, address(0), id, amount);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     */
    function _burnBatch(
        address from,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal virtual {
        require(from != address(0), "ERC1155: burn from the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, address(0), ids, amounts, "");

        for (uint256 i = 0; i < ids.length; i++) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

            uint256 fromBalance = _balances[id][from];
            require(fromBalance >= amount, "ERC1155: burn amount exceeds balance");
            unchecked {
                _balances[id][from] = fromBalance - amount;
            }
        }

        emit TransferBatch(operator, from, address(0), ids, amounts);
    }

    /**
     * @dev Approve `operator` to operate on all of `owner` tokens
     *
     * Emits a {ApprovalForAll} event.
     */
    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal virtual {
        require(owner != operator, "ERC1155: setting approval status for self");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting
     * and burning, as well as batched variants.
     *
     * The same hook is called on both single and batched variants. For single
     * transfers, the length of the `id` and `amount` arrays will be 1.
     *
     * Calling conditions (for each `id` and `amount` pair):
     *
     * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * of token type `id` will be  transferred to `to`.
     * - When `from` is zero, `amount` tokens of token type `id` will be minted
     * for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
     * will be burned.
     * - `from` and `to` are never both zero.
     * - `ids` and `amounts` have the same, non-zero length.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {}

    function _doSafeTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) private {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {
                if (response != IERC1155Receiver.onERC1155Received.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _doSafeBatchTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) private {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (
                bytes4 response
            ) {
                if (response != IERC1155Receiver.onERC1155BatchReceived.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {
        uint256[] memory array = new uint256[](1);
        array[0] = element;

        return array;
    }
}

File 4 of 10: ERC165.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)

pragma solidity ^0.8.0;

import "./IERC165.sol";

/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

File 5 of 10: IERC1155.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol)

pragma solidity ^0.8.0;

import "./IERC165.sol";

/**
 * @dev Required interface of an ERC1155 compliant contract, as defined in the
 * https://eips.ethereum.org/EIPS/eip-1155[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155 is IERC165 {
    /**
     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
     */
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

    /**
     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
     * transfers.
     */
    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] values
    );

    /**
     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
     * `approved`.
     */
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);

    /**
     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
     *
     * If an {URI} event was emitted for `id`, the standard
     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
     * returned by {IERC1155MetadataURI-uri}.
     */
    event URI(string value, uint256 indexed id);

    /**
     * @dev Returns the amount of tokens of token type `id` owned by `account`.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) external view returns (uint256);

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
        external
        view
        returns (uint256[] memory);

    /**
     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
     *
     * Emits an {ApprovalForAll} event.
     *
     * Requirements:
     *
     * - `operator` cannot be the caller.
     */
    function setApprovalForAll(address operator, bool approved) external;

    /**
     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
     *
     * See {setApprovalForAll}.
     */
    function isApprovedForAll(address account, address operator) external view returns (bool);

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) external;

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external;
}

File 6 of 10: IERC1155MetadataURI.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)

pragma solidity ^0.8.0;

import "../IERC1155.sol";

/**
 * @dev Interface of the optional ERC1155MetadataExtension interface, as defined
 * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155MetadataURI is IERC1155 {
    /**
     * @dev Returns the URI for token type `id`.
     *
     * If the `\{id\}` substring is present in the URI, it must be replaced by
     * clients with the actual token type ID.
     */
    function uri(uint256 id) external view returns (string memory);
}

File 7 of 10: IERC1155Receiver.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)

pragma solidity ^0.8.0;

import "./IERC165.sol";

/**
 * @dev _Available since v3.1._
 */
interface IERC1155Receiver is IERC165 {
    /**
     * @dev Handles the receipt of a single ERC1155 token type. This function is
     * called at the end of a `safeTransferFrom` after the balance has been updated.
     *
     * NOTE: To accept the transfer, this must return
     * `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
     * (i.e. 0xf23a6e61, or its own function selector).
     *
     * @param operator The address which initiated the transfer (i.e. msg.sender)
     * @param from The address which previously owned the token
     * @param id The ID of the token being transferred
     * @param value The amount of tokens being transferred
     * @param data Additional data with no specified format
     * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
     */
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    ) external returns (bytes4);

    /**
     * @dev Handles the receipt of a multiple ERC1155 token types. This function
     * is called at the end of a `safeBatchTransferFrom` after the balances have
     * been updated.
     *
     * NOTE: To accept the transfer(s), this must return
     * `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
     * (i.e. 0xbc197c81, or its own function selector).
     *
     * @param operator The address which initiated the batch transfer (i.e. msg.sender)
     * @param from The address which previously owned the token
     * @param ids An array containing ids of each token being transferred (order and length must match values array)
     * @param values An array containing amounts of each token being transferred (order and length must match ids array)
     * @param data Additional data with no specified format
     * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
     */
    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    ) external returns (bytes4);
}

File 8 of 10: IERC165.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

File 10 of 10: Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

import "./Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"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":"uint256","name":"typeId","type":"uint256"},{"internalType":"address","name":"burnTokenAddress","type":"address"}],"name":"burnDessertForAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"eatingContract","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"ads","type":"address[]"},{"internalType":"uint256[]","name":"quantity","type":"uint256[]"},{"internalType":"uint256","name":"typeId","type":"uint256"}],"name":"ownerMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"ads","type":"address[]"},{"internalType":"uint256","name":"typeId","type":"uint256"}],"name":"ownerMint1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"randomizerContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"eatingContractAddress","type":"address"}],"name":"setEatingContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"randomizerContractAddress","type":"address"}],"name":"setRandomizerContractAddress","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"typeId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

61090060405261084f608081815290620025c160a03980516200002b916004916020909101906200013e565b50604051806111a0016040528061117f815260200162002e1061117f913980516200005f916005916020909101906200013e565b5060405180612540016040528061251c815260200162003f8f61251c9139805162000093916006916020909101906200013e565b506000600955348015620000a657600080fd5b50604080516020810190915260008152620000c181620000d3565b50620000cd33620000ec565b62000221565b8051620000e89060029060208401906200013e565b5050565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200014c90620001e4565b90600052602060002090601f016020900481019282620001705760008555620001bb565b82601f106200018b57805160ff1916838001178555620001bb565b82800160010185558215620001bb579182015b82811115620001bb5782518255916020019190600101906200019e565b50620001c9929150620001cd565b5090565b5b80821115620001c95760008155600101620001ce565b600181811c90821680620001f957607f821691505b602082108114156200021b57634e487b7160e01b600052602260045260246000fd5b50919050565b61239080620002316000396000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c8063707599a2116100a2578063bee0e2fd11610071578063bee0e2fd1461025b578063d39d71ef1461026e578063e985e9c514610281578063f242432a146102bd578063f2fde38b146102d057600080fd5b8063707599a21461021c578063715018a61461022f5780638da5cb5b14610237578063a22cb4651461024857600080fd5b8063265c2b5a116100e9578063265c2b5a146101985780632eb2c2d6146101ab5780633078f6fd146101be57806336c7c12c146101d15780634e1273f4146101fc57600080fd5b8062fdd58e1461011a57806301ffc9a7146101405780630e89341c1461016357806314ab563314610183575b600080fd5b61012d610128366004611a77565b6102e3565b6040519081526020015b60405180910390f35b61015361014e366004611c32565b61037a565b6040519015158152602001610137565b610176610171366004611c6c565b6103cc565b6040516101379190611ec8565b6101966101913660046118d7565b61066c565b005b6101966101a6366004611b15565b6106b8565b6101966101b936600461192c565b6107d2565b6101966101cc366004611c85565b610869565b6008546101e4906001600160a01b031681565b6040516001600160a01b039091168152602001610137565b61020f61020a366004611b61565b6108bc565b6040516101379190611e87565b61019661022a3660046118d7565b6109e6565b610196610a32565b6003546001600160a01b03166101e4565b610196610256366004611a3b565b610a68565b610196610269366004611aa1565b610a73565b6007546101e4906001600160a01b031681565b61015361028f3660046118f9565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6101966102cb3660046119d6565b610bd3565b6101966102de3660046118d7565b610c5a565b60006001600160a01b0383166103545760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b14806103ab57506001600160e01b031982166303a24d0760e21b145b806103c657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000821180156103de5750600482105b6103fa5760405162461bcd60e51b815260040161034b90611f68565b60608083600114156104b35760048054610413906120b6565b80601f016020809104026020016040519081016040528092919081815260200182805461043f906120b6565b801561048c5780601f106104615761010080835404028352916020019161048c565b820191906000526020600020905b81548152906001019060200180831161046f57829003601f168201915b505050505091506040518060800160405280604f8152602001612238604f91399050610612565b836002141561056957600580546104c9906120b6565b80601f01602080910402602001604051908101604052809291908181526020018280546104f5906120b6565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b505050505091506040518060800160405280604981526020016122d2604991399050610612565b60068054610576906120b6565b80601f01602080910402602001604051908101604052809291908181526020018280546105a2906120b6565b80156105ef5780601f106105c4576101008083540402835291602001916105ef565b820191906000526020600020905b8154815290600101906020018083116105d257829003601f168201915b505050505091506040518060800160405280604b8152602001612287604b913990505b6106448161061f84610cf5565b604051602001610630929190611d0f565b604051602081830303815290604052610cf5565b6040516020016106549190611d9f565b60405160208183030381529060405292505050919050565b6003546001600160a01b031633146106965760405162461bcd60e51b815260040161034b90611fd4565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031633146106e25760405162461bcd60e51b815260040161034b90611fd4565b6000811180156106f25750600481105b61070e5760405162461bcd60e51b815260040161034b90611f68565b6009546127119061072090849061202d565b106107535760405162461bcd60e51b815260206004820152600360248201526231306b60e81b604482015260640161034b565b60005b828110156107b2576107a08484838181106107735761077361214f565b905060200201602081019061078891906118d7565b83600160405180602001604052806000815250610e5b565b806107aa8161211e565b915050610756565b5082829050600960008282546107c8919061202d565b9091555050505050565b6001600160a01b0385163314806107ee57506107ee853361028f565b6108555760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606482015260840161034b565b6108628585858585610f65565b5050505050565b6007546001600160a01b031633146108ac5760405162461bcd60e51b815260206004820152600660248201526530b21032b93960d11b604482015260640161034b565b6108b88183600161113a565b5050565b606081518351146109215760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b606482015260840161034b565b6000835167ffffffffffffffff81111561093d5761093d612165565b604051908082528060200260200182016040528015610966578160200160208202803683370190505b50905060005b84518110156109de576109b185828151811061098a5761098a61214f565b60200260200101518583815181106109a4576109a461214f565b60200260200101516102e3565b8282815181106109c3576109c361214f565b60209081029190910101526109d78161211e565b905061096c565b509392505050565b6003546001600160a01b03163314610a105760405162461bcd60e51b815260040161034b90611fd4565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b03163314610a5c5760405162461bcd60e51b815260040161034b90611fd4565b610a6660006112b4565b565b6108b8338383611306565b6003546001600160a01b03163314610a9d5760405162461bcd60e51b815260040161034b90611fd4565b600081118015610aad5750600481105b610ac95760405162461bcd60e51b815260040161034b90611f68565b60005b84811015610bcb57612711848483818110610ae957610ae961214f565b90506020020135600954610afd919061202d565b10610b305760405162461bcd60e51b815260206004820152600360248201526231306b60e81b604482015260640161034b565b610b89868683818110610b4557610b4561214f565b9050602002016020810190610b5a91906118d7565b83868685818110610b6d57610b6d61214f565b9050602002013560405180602001604052806000815250610e5b565b838382818110610b9b57610b9b61214f565b9050602002013560096000828254610bb3919061202d565b90915550819050610bc38161211e565b915050610acc565b505050505050565b6001600160a01b038516331480610bef5750610bef853361028f565b610c4d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b606482015260840161034b565b61086285858585856113e7565b6003546001600160a01b03163314610c845760405162461bcd60e51b815260040161034b90611fd4565b6001600160a01b038116610ce95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161034b565b610cf2816112b4565b50565b805160609080610d15575050604080516020810190915260008152919050565b60006003610d2483600261202d565b610d2e9190612045565b610d39906004612067565b90506000610d4882602061202d565b67ffffffffffffffff811115610d6057610d60612165565b6040519080825280601f01601f191660200182016040528015610d8a576020820181803683370190505b509050600060405180606001604052806040815260200161231b604091399050600181016020830160005b86811015610e16576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b835260049092019101610db5565b506003860660018114610e305760028114610e4157610e4d565b613d3d60f01b600119830152610e4d565b603d60f81b6000198301525b505050918152949350505050565b6001600160a01b038416610ebb5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b606482015260840161034b565b33610ed581600087610ecc88611504565b61086288611504565b6000848152602081815260408083206001600160a01b038916845290915281208054859290610f0590849061202d565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46108628160008787878761154f565b8151835114610fc75760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b606482015260840161034b565b6001600160a01b038416610fed5760405162461bcd60e51b815260040161034b90611f23565b3360005b84518110156110d457600085828151811061100e5761100e61214f565b60200260200101519050600085838151811061102c5761102c61214f565b602090810291909101810151600084815280835260408082206001600160a01b038e16835290935291909120549091508181101561107c5760405162461bcd60e51b815260040161034b90611f8a565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906110b990849061202d565b92505081905550505050806110cd9061211e565b9050610ff1565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611124929190611e9a565b60405180910390a4610bcb8187878787876116ba565b6001600160a01b03831661119c5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b606482015260840161034b565b336111cc818560006111ad87611504565b6111b687611504565b5050604080516020810190915260009052505050565b6000838152602081815260408083206001600160a01b0388168452909152902054828110156112495760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b606482015260840161034b565b6000848152602081815260408083206001600160a01b03898116808652918452828520888703905582518981529384018890529092908616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b0316141561137a5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b606482015260840161034b565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b03841661140d5760405162461bcd60e51b815260040161034b90611f23565b3361141d818787610ecc88611504565b6000848152602081815260408083206001600160a01b038a1684529091529020548381101561145e5760405162461bcd60e51b815260040161034b90611f8a565b6000858152602081815260408083206001600160a01b038b811685529252808320878503905590881682528120805486929061149b90849061202d565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46114fb82888888888861154f565b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061153e5761153e61214f565b602090810291909101015292915050565b6001600160a01b0384163b15610bcb5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906115939089908990889088908890600401611e42565b602060405180830381600087803b1580156115ad57600080fd5b505af19250505080156115dd575060408051601f3d908101601f191682019092526115da91810190611c4f565b60015b61168a576115e961217b565b806308c379a0141561162357506115fe612197565b806116095750611625565b8060405162461bcd60e51b815260040161034b9190611ec8565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606482015260840161034b565b6001600160e01b0319811663f23a6e6160e01b146114fb5760405162461bcd60e51b815260040161034b90611edb565b6001600160a01b0384163b15610bcb5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906116fe9089908990889088908890600401611de4565b602060405180830381600087803b15801561171857600080fd5b505af1925050508015611748575060408051601f3d908101601f1916820190925261174591810190611c4f565b60015b611754576115e961217b565b6001600160e01b0319811663bc197c8160e01b146114fb5760405162461bcd60e51b815260040161034b90611edb565b80356001600160a01b038116811461179b57600080fd5b919050565b60008083601f8401126117b257600080fd5b50813567ffffffffffffffff8111156117ca57600080fd5b6020830191508360208260051b85010111156117e557600080fd5b9250929050565b600082601f8301126117fd57600080fd5b8135602061180a82612009565b60405161181782826120f1565b8381528281019150858301600585901b8701840188101561183757600080fd5b60005b858110156118565781358452928401929084019060010161183a565b5090979650505050505050565b600082601f83011261187457600080fd5b813567ffffffffffffffff81111561188e5761188e612165565b6040516118a5601f8301601f1916602001826120f1565b8181528460208386010111156118ba57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156118e957600080fd5b6118f282611784565b9392505050565b6000806040838503121561190c57600080fd5b61191583611784565b915061192360208401611784565b90509250929050565b600080600080600060a0868803121561194457600080fd5b61194d86611784565b945061195b60208701611784565b9350604086013567ffffffffffffffff8082111561197857600080fd5b61198489838a016117ec565b9450606088013591508082111561199a57600080fd5b6119a689838a016117ec565b935060808801359150808211156119bc57600080fd5b506119c988828901611863565b9150509295509295909350565b600080600080600060a086880312156119ee57600080fd5b6119f786611784565b9450611a0560208701611784565b93506040860135925060608601359150608086013567ffffffffffffffff811115611a2f57600080fd5b6119c988828901611863565b60008060408385031215611a4e57600080fd5b611a5783611784565b915060208301358015158114611a6c57600080fd5b809150509250929050565b60008060408385031215611a8a57600080fd5b611a9383611784565b946020939093013593505050565b600080600080600060608688031215611ab957600080fd5b853567ffffffffffffffff80821115611ad157600080fd5b611add89838a016117a0565b90975095506020880135915080821115611af657600080fd5b50611b03888289016117a0565b96999598509660400135949350505050565b600080600060408486031215611b2a57600080fd5b833567ffffffffffffffff811115611b4157600080fd5b611b4d868287016117a0565b909790965060209590950135949350505050565b60008060408385031215611b7457600080fd5b823567ffffffffffffffff80821115611b8c57600080fd5b818501915085601f830112611ba057600080fd5b81356020611bad82612009565b604051611bba82826120f1565b8381528281019150858301600585901b870184018b1015611bda57600080fd5b600096505b84871015611c0457611bf081611784565b835260019690960195918301918301611bdf565b5096505086013592505080821115611c1b57600080fd5b50611c28858286016117ec565b9150509250929050565b600060208284031215611c4457600080fd5b81356118f281612221565b600060208284031215611c6157600080fd5b81516118f281612221565b600060208284031215611c7e57600080fd5b5035919050565b60008060408385031215611c9857600080fd5b8235915061192360208401611784565b600081518084526020808501945080840160005b83811015611cd857815187529582019590820190600101611cbc565b509495945050505050565b60008151808452611cfb816020860160208601612086565b601f01601f19169290920160200192915050565b6a1ec89b985b59488e88089160aa1b81528251600090611d3681600b850160208801612086565b7f227d5d2c22696d616765223a2022646174613a696d6167652f7376672b786d6c600b91840191820152670ed8985cd94d8d0b60c21b602b8201528351611d84816033840160208801612086565b61227d60f01b60339290910191820152603501949350505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251611dd781601d850160208701612086565b91909101601d0192915050565b6001600160a01b0386811682528516602082015260a060408201819052600090611e1090830186611ca8565b8281036060840152611e228186611ca8565b90508281036080840152611e368185611ce3565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090611e7c90830184611ce3565b979650505050505050565b6020815260006118f26020830184611ca8565b604081526000611ead6040830185611ca8565b8281036020840152611ebf8185611ca8565b95945050505050565b6020815260006118f26020830184611ce3565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252600890820152673a3cb8329032b93960c11b604082015260600190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600067ffffffffffffffff82111561202357612023612165565b5060051b60200190565b6000821982111561204057612040612139565b500190565b60008261206257634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561208157612081612139565b500290565b60005b838110156120a1578181015183820152602001612089565b838111156120b0576000848401525b50505050565b600181811c908216806120ca57607f821691505b602082108114156120eb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f1916810167ffffffffffffffff8111828210171561211757612117612165565b6040525050565b600060001982141561213257612132612139565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d11156121945760046000803e5060005160e01c5b90565b600060443d10156121a55790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156121d557505050505090565b82850191508151818111156121ed5750505050505090565b843d87010160208285010111156122075750505050505090565b612216602082860101876120f1565b509095945050505050565b6001600160e01b031981168114610cf257600080fdfe3120496e6372656469626c652049636520506f70222c2261747472696275746573223a5b7b2274726169745f74797065223a2022446573736572742054797065222c202276616c7565223a20224431332043656c65737469616c2043616b65222c2261747472696275746573223a5b7b2274726169745f74797065223a2022446573736572742054797065222c202276616c7565223a202244333220446976696e6520446f6e7574222c2261747472696275746573223a5b7b2274726169745f74797065223a2022446573736572742054797065222c202276616c7565223a202244324142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212203ff9d3bb0c53b458bf1f6b5ded3812c2859a0c8bf159f7eccb031951abfcdeb364736f6c634300080600333c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667222077696474683d2239393922206865696768743d22393939223e3c706174682066696c6c3d22236666663631642220643d224d302030683939397639393948307a222f3e3c673e3c7061746820643d224d302d34355630762d3435222069643d2261222f3e3c616e696d6174654d6f74696f6e206475723d2235732220726570656174436f756e743d22696e646566696e69746522206b6579506f696e74733d22303b2e35303b313b2e35303b3022206b657954696d65733d22303b2e32353b2e35303b2e37353b3122206b657953706c696e65733d22302e35203020302e3520313b20302e35203020302e3520313b20302e35203020302e3520313b20302e35203020302e352031222063616c634d6f64653d2273706c696e65223e3c6d7061746820687265663d222361222f3e3c2f616e696d6174654d6f74696f6e3e3c672066696c6c3d2223666638666639223e3c7061746820643d226d333130203434332d33302035332034322d31312d31322d34327a222f3e3c636972636c652063783d22333436222063793d223533322220723d22373422207472616e73666f726d3d22726f7461746528333434203334362035333229222f3e3c2f673e3c7061746820643d226d34323920363637203235372d37312d33302035342d3235372037322033302d35357a6d3139302d3230342037382d32312d33382036392d37382032312033382d36397a222066696c6c3d2223643062222f3e3c7061746820643d226d333939203732322033302d35352033392d31312d3130332d3336392d3331203534632d31332032342d32382034362d31362039316c3831203239307a222066696c6c3d2223666638666639222f3e3c706174682066696c6c3d22236166383230302220643d226d353036203637352037302e3137322d32302e3132322032382e3131352039382e3034392d37302e3137322032302e3132327a222f3e3c636972636c652063783d22333736222063793d2234373722207472616e73666f726d3d22726f7461746528333434203337362034373729222066696c6c3d22236630662220723d223734222f3e3c636972636c652063783d22353638222063793d2237363522207472616e73666f726d3d22726f7461746528333434203536382037363529222066696c6c3d22236166383230302220723d223335222f3e3c672066696c6c3d2223663066223e3c636972636c652063783d22363332222063793d2234303622207472616e73666f726d3d22726f74617465283334342036333220343036292220723d223734222f3e3c636972636c652063783d22343831222063793d223335342220723d2231333322207472616e73666f726d3d22726f7461746528333434203438312033353429222f3e3c2f673e3c672066696c6c3d2223643062223e3c636972636c65207472616e73666f726d3d227363616c652831202d312920726f746174652831352e35343320313933352e35363720313133392e303337292220723d223330222f3e3c636972636c65207472616e73666f726d3d227363616c652831202d312920726f746174652831352e35343320313830332e34343720323131322e343335292220723d223330222f3e3c2f673e3c706174682066696c6c3d22236630662220643d226d33353220333839203235372e3238392d37312e3335332037372e323332203237382e3438392d3235372e3238392037312e3335337a222f3e3c706174682066696c6c3d22236666653338362220643d226d353238203732382036382e3430342d31392e3032352031302e34352033372e3537342d36382e3430342031392e3032357a222f3e3c706174682066696c6c3d22236461623735342220643d226d353131203636362036382e32352d31392e35372031372e3931362036322e3438322d36382e32352031392e35377a222f3e3c636972636c652063783d22353733222063793d2237353722207472616e73666f726d3d22726f7461746528333434203537332037353729222066696c6c3d22236666653338362220723d223335222f3e3c7061746820643d226d353131203636362d35203920372d322d322d377a222066696c6c3d2223616638323030222f3e3c672066696c6c3d2223666638666639223e3c7265637420783d223339302220793d22333235222077696474683d22353922206865696768743d22323930222072783d22323922207472616e73666f726d3d22726f7461746528333434203339302033323529222f3e3c7265637420783d223439342220793d22323936222077696474683d22353922206865696768743d22323930222072783d22323922207472616e73666f726d3d22726f7461746528333434203439342032393629222f3e3c2f673e3c706174682066696c6c2d72756c653d226576656e6f64642220643d224d33363520363034632d323320362d343720302d36352d31346c33312d35346331382031342034312031392036352031336c2d33312035357a222066696c6c3d2223643062222f3e3c2f673e3c656c6c697073652063783d22353231222063793d22383935222072783d223733222072793d223131222066696c6c2d6f7061636974793d222e32223e3c616e696d6174652076616c7565733d2237333b39303b373322206b657954696d65733d22303b2e35303b3122206475723d22322e357322206174747269627574654e616d653d227278222066696c6c3d22667265657a6522206b657953706c696e65733d22302e35203020302e3520313b20302e35203020302e352031222063616c634d6f64653d2273706c696e652220726570656174436f756e743d22696e646566696e697465222f3e3c2f656c6c697073653e3c2f7376673e3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667222077696474683d2239393922206865696768743d22393939223e3c706174682066696c6c3d22236630662220643d224d302030683939397639393948307a222f3e3c673e3c7061746820643d224d302d37305630762d37307a222069643d2261222f3e3c616e696d6174654d6f74696f6e206475723d2236732220726570656174436f756e743d22696e646566696e69746522206b6579506f696e74733d22303b2e35303b313b2e35303b3022206b657954696d65733d22303b2e32353b2e35303b2e37353b3122206b657953706c696e65733d22302e35203020302e3520313b20302e35203020302e3520313b20302e35203020302e3520313b20302e35203020302e352031222063616c634d6f64653d2273706c696e65223e3c6d7061746820687265663d222361222f3e3c2f616e696d6174654d6f74696f6e3e3c636972636c652063783d22343936222063793d2235323622207472616e73666f726d3d22726f7461746528333531203439362035323629222066696c6c3d22236462352220723d22323435222f3e3c6d61736b2069643d226222206d61736b556e6974733d227573657253706163654f6e5573652220783d223235362220793d22323632222077696474683d2234393122206865696768743d2234393122206d61736b2d747970653d22616c706861223e3c636972636c652063783d22353031222063793d223530382220723d2232343522207472616e73666f726d3d22726f7461746528333531203530312035303829222066696c6c3d2223646235222f3e3c2f6d61736b3e3c67206d61736b3d2275726c28236229223e3c636972636c652063783d22343939222063793d2234393622207472616e73666f726d3d22726f7461746528333531203439392034393629222066696c6c3d22236665382220723d22323436222f3e3c2f673e3c6d61736b2069643d226322206d61736b556e6974733d227573657253706163654f6e5573652220783d223138352220793d22343339222077696474683d2232323922206865696768743d2232333022206d61736b2d747970653d22616c706861223e3c636972636c652063783d22333030222063793d2235353422207472616e73666f726d3d22726f7461746528333531203330302035353429222066696c6c3d22236462352220723d22313134222f3e3c2f6d61736b3e3c67206d61736b3d2275726c28236329223e3c636972636c652063783d22323937222063793d2235343122207472616e73666f726d3d22726f7461746528333531203239372035343129222066696c6c3d22236665382220723d22313133222f3e3c636972636c652063783d22333031222063793d2235323722207472616e73666f726d3d22726f7461746528333531203330312035323729222066696c6c3d22233563662220723d223936222f3e3c2f673e3c6d61736b2069643d226422206d61736b556e6974733d227573657253706163654f6e5573652220783d223632312220793d22333731222077696474683d2232323722206865696768743d2232323622206d61736b2d747970653d22616c706861223e3c636972636c652063783d22373334222063793d2234383422207472616e73666f726d3d22726f7461746528333531203733342034383429222066696c6c3d22236462352220723d22313133222f3e3c2f6d61736b3e3c67206d61736b3d2275726c28236429223e3c636972636c652063783d22373035222063793d2234383622207472616e73666f726d3d22726f7461746528333531203730352034383629222066696c6c3d22236665382220723d22313131222f3e3c636972636c652063783d22373131222063793d2234363722207472616e73666f726d3d22726f7461746528333531203731312034363729222066696c6c3d22233563662220723d223935222f3e3c2f673e3c6d61736b2069643d226522206d61736b556e6974733d227573657253706163654f6e5573652220783d223235372220793d22323637222077696474683d2234393122206865696768743d2234393122206d61736b2d747970653d22616c706861223e3c7061746820643d224d37343420343733633231203133342d3639203235392d323033203238312d3133332032312d3235392d36392d3238312d3230332d32312d3133332036392d323539203230332d323831203133342d32312032353920373020323831203230337a222066696c6c3d2223646235222f3e3c2f6d61736b3e3c67206d61736b3d2275726c28236529223e3c636972636c652063783d22353032222063793d2234373322207472616e73666f726d3d22726f7461746528333531203530322034373329222066696c6c3d22233563662220723d22323231222f3e3c636972636c652063783d22353034222063793d2234353522207472616e73666f726d3d22726f7461746528333531203530342034353529222066696c6c3d22233637643966642220723d22323033222f3e3c2f673e3c672066696c6c3d2223363764396664223e3c636972636c652063783d22333036222063793d2235303922207472616e73666f726d3d22726f74617465283335312033303620353039292220723d223731222f3e3c636972636c652063783d22373131222063793d2234343322207472616e73666f726d3d22726f74617465283335312037313120343433292220723d223731222f3e3c2f673e3c636972636c652063783d22353030222063793d2234363622207472616e73666f726d3d22726f7461746528333531203530302034363629222066696c6c3d22236665382220723d223530222f3e3c6d61736b2069643d226622206d61736b556e6974733d227573657253706163654f6e5573652220783d223435302220793d22343135222077696474683d2231303122206865696768743d2231303222206d61736b2d747970653d22616c706861223e3c636972636c652063783d22353030222063793d223436362220723d22353022207472616e73666f726d3d22726f7461746528333531203530302034363629222066696c6c3d2223666538222f3e3c2f6d61736b3e3c67206d61736b3d2275726c28236629223e3c636972636c652063783d22343833222063793d2235303422207472616e73666f726d3d22726f7461746528333531203438332035303429222066696c6c3d22236462352220723d223630222f3e3c636972636c652063783d22343739222063793d2235313022207472616e73666f726d3d22726f7461746528333531203437392035313029222066696c6c3d22236630662220723d223433222f3e3c2f673e3c706174682066696c6c2d72756c653d226576656e6f64642220643d224d353430203439386331312d31312031362d32372031332d34332d342d32382d33312d34382d35392d34332d323420342d34312032332d343320343520362d31362032302d32382033372d33312032372d34203533203134203537203431203220313120302032322d352033317a222066696c6c3d2223356366222f3e3c7061746820643d226d333639203336372033332e38373120322e3936332d2e363120362e3937332d33332e3837312d322e3936337a6d3136382d35312d33322e353420392e3835362d322e3032392d362e3639392033322e35342d392e3835367a222066696c6c3d2223663066222f3e3c7061746820643d226d343331203331392032372e3530372031392e3938352d342e31313420352e3636332d32372e3530372d31392e3938357a6d37392035312033312e3031362d31332e39323820322e38363720362e3338362d33312e3031362031332e3932387a6d2d3936203133372d31312e3732312d33312e39313620362e3537312d322e3431332031312e3732312033312e3931367a222066696c6c3d2223666530222f3e3c7061746820643d226d343538203339332d32392031372d342d372032392d3137203420377a222066696c6c3d2223373563633061222f3e3c7061746820643d226d363530203436372031332e3932382033312e3031372d362e33383620322e3836372d31332e3932382d33312e3031377a6d2d34382031313620382e382d33322e38343120362e37363120312e3831322d382e382033322e3834317a6d312d3137372d33332e3132392d372e36343820312e3537352d362e3832312033332e31323920372e3634387a222066696c6c3d2223663066222f3e3c7061746820643d226d373434203433342d32372e35372d31392e38393720342e3039362d352e3637362032372e35372031392e3839377a6d2d3134312031342032372e3838392d31392e34343820342e30303420352e3734322d32372e3838392031392e3434387a222066696c6c3d2223666530222f3e3c7061746820643d226d3537392035303020333220382d3120372d33332d3820322d377a6d32302d3135372032342032342d3520352d32342d323420352d357a6d3937203131312033312d3134203320372d33312031342d332d377a222066696c6c3d2223373563633061222f3e3c7061746820643d226d353032203536322d33332e3837312d322e3936332e36312d362e3937332033332e38373120322e3936337a4d333638203433386c2d31372032392e3434352d362e3036322d332e352031372d32392e3434357a222066696c6c3d2223663066222f3e3c7061746820643d226d3432332035393620322e3936332d33332e38373120362e3937332e36312d322e3936332033332e3837317a6d2d3132342d36302d32372e3932332d31392e33393920332e3939342d352e3734392032372e3932332031392e3339397a6d3237312031362d32312e3330372032362e3439352d352e3435352d342e3338372032312e3330372d32362e3439357a222066696c6c3d2223666530222f3e3c7061746820643d226d333835203535302d31372d323920372d342031372032392d3720347a6d2d38382d34362033312d3134203320372d33312031332d332d367a6d323236203131362d32392d313720332d372033302031372d3420377a222066696c6c3d2223373563633061222f3e3c672066696c6c3d2223666666223e3c7061746820643d224d3538322032393863313320312034322034322034322034322d31312d31372d32372d34332d32362d353320322d31302031332d32332031382d3236203020302d31392031322d323920392d31312d322d33392d34302d33392d34302039203133203236203433203233203532732d31362032322d3233203238633020302032322d31332033342d31327a223e3c616e696d617465206174747269627574654e616d653d226f706163697479222076616c7565733d22313b303b3122206475723d2231732220726570656174436f756e743d22696e646566696e697465222f3e3c2f706174683e3c7061746820643d224d3233362035313063313320322034312034312034312034312d31312d31362d32362d34312d32352d353120322d31302031332d32322031372d3235203020302d31382031312d323820382d31302d322d33382d33392d33382d333920392031332032352034332032322035312d3220392d31352032312d3232203237203020302032312d31332033332d31327a223e3c616e696d617465206174747269627574654e616d653d226f706163697479222076616c7565733d22303b313b3022206475723d2231732220726570656174436f756e743d22696e646566696e697465222f3e3c2f706174683e3c2f673e3c2f673e3c656c6c697073652063783d22353030222063793d22383830222072783d22313439222072793d223137222066696c6c2d6f7061636974793d222e32223e3c616e696d6174652076616c7565733d223134393b3139303b31343922206b657954696d65733d22303b2e35303b3122206475723d22337322206174747269627574654e616d653d227278222066696c6c3d22667265657a6522206b657953706c696e65733d22302e35203020302e3520313b20302e35203020302e352031222063616c634d6f64653d2273706c696e652220726570656174436f756e743d22696e646566696e697465222f3e3c2f656c6c697073653e3c2f7376673e3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f7376672220786d6c6e733a786c696e6b3d22687474703a2f2f7777772e77332e6f72672f313939392f786c696e6b222077696474683d2239393922206865696768743d22393939223e3c7374796c653e2e427b66696c6c3a236663307d2e437b66696c6c3a236666667d2e447b66696c6c2d72756c653a6576656e6f64647d3c2f7374796c653e3c706174682066696c6c3d22233061342220643d224d302030683939397639393948307a222f3e3c7061746820643d224d3239332030683430326c323234203931394837394c32393320305a222066696c6c3d2223376330222f3e3c656c6c697073652063783d22343939222063793d22393230222072783d22343230222072793d223434222066696c6c3d2223626634222f3e3c673e3c7061746820643d224d302d33305630762d33307a222069643d2261222f3e3c616e696d6174654d6f74696f6e206475723d2238732220726570656174436f756e743d22696e646566696e69746522206b6579506f696e74733d22303b2e35303b313b2e35303b3022206b657954696d65733d22303b2e32353b2e35303b2e37353b3122206b657953706c696e65733d22302e35203020302e3520313b20302e35203020302e3520313b20302e35203020302e3520313b20302e35203020302e352031222063616c634d6f64653d2273706c696e65223e3c6d7061746820687265663d222361222f3e3c2f616e696d6174654d6f74696f6e3e3c672066696c6c3d2223303833223e3c7061746820643d226d333530203232352034322031342031302d32302d31312d31382d34352d382d31332031342d372032382032302d313120322d3920322031307a6d39342d3935203320363020333020332031372d32342d31322d35392d32352d31302d333820352032332031392031342d312d313220377a222f3e3c7061746820643d226d3439352032313120382033352031382d3120382d31362d31342d33342d31352d332d32322037203136203920372d322d3620357a6d2d3130302032302d32312031392033362d342033322d33372d32302d33332d32392d31322d3332203132203230203137203520313663342039203920323220392032327a222f3e3c7061746820643d226d353232203137382d31332032302d32372d382d372d32362031392d343720323920312032332032312d323320382d3720323120362031307a6d33312037312d31372032322d33302d31312d362d33312032362d353320333320332032362032372d323820372d313120323420372031327a222f3e3c7061746820643d226d353530203134372033322032392d32392d322d332d31322d312031332d323620372d382d313320352031352d31372032302d372d332031332d34332034312d31317a6d31312036382034382032392d333320342d392d313520352031372d32372031332d31342d31342031312031372d31302032392d392d322d332d35362034312d32327a6d2d3230312031362d33322034342033362d3130762d31376c34203137203334203220372d31382d3220323020323620323220382d362d32372d35312d35342d337a6d34342d3131332d353720333220343120372031302d31382d352032302033322031372031372d31352d31342031392031342033352031312d3220322d36372d35312d32387a6d37352039312d3332203134203233203720362d31302d3320313120313920313220392d382d37203130203820323120362d3120312d33372d33302d31397a222f3e3c2f673e3c6720636c6173733d22422044223e3c7061746820643d224d3336352032313463343320352038332d32322039342d363520312d3420322d3720332d31312031312031352031352033342031302035332d382033332d34322035332d37342034342d31342d332d32352d31312d33332d32317a222f3e3c7061746820643d224d333738203235346334392d382038362d35322038352d31303320302d352d312d392d312d313320313720313320323820333320323820353620312033392d33302037322d36392037332d313620302d33312d352d34332d31337a222f3e3c2f673e3c7061746820643d224d343732203231376331312d32362d322d35382d31302d373520362032332d372035362d31392037312d3820392d31362032362d36302033392034312031312037362d362038392d33357a6d2d32372d313863372d392031352d32382031352d35332d362033302d32312034322d33332035322d3920352d32302031352d363120313620333520313220363520322037392d31357a222066696c6c3d2223666632222f3e3c6720636c6173733d2244223e3c7061746820643d224d343531203238306333382d33322034362d38392031382d3133322d322d332d342d362d372d313020323120322034312031332035332033322032322033332031332037372d32302039392d313420392d32392031322d34342031317a2220636c6173733d2242222f3e3c7061746820643d224d343539203236306332382d32332033342d36392031322d3130392d322d352d352d392d372d3132203139203420333720323020343520343320313220333320312036382d32352037372d3820332d313720332d323520317a222066696c6c3d2223666632222f3e3c2f673e3c7061746820643d226d353836203137372031342d312d31322038362d31342d322031322d38337a222066696c6c3d2223623830222f3e3c672066696c6c3d2223306133223e3c7061746820643d226d353730203137352033302d332d34342033372031342d33347a222f3e3c7061746820643d226d363137203137352d32392d332033332033372d342d33347a222f3e3c7061746820643d226d3538372031353420392032312d35322d372034332d31347a222f3e3c7061746820643d226d363034203135342d31352032312035332d382d33382d31337a222f3e3c2f673e3c706174682066696c6c3d22236238302220643d226d333336203230332d31312e3620332e3037312032372e30312036392e3936382031312e362d332e3037317a222f3e3c672066696c6c3d2223306133223e3c7061746820643d226d333439203139392d323520342034342032322d31392d32367a222f3e3c7061746820643d226d333130203230392032342d392d32302033392d342d33307a222f3e3c7061746820643d226d333331203138342d332032312034312d31392d33382d327a222f3e3c7061746820643d226d333137203138382031372031352d343620352032392d32307a222f3e3c2f673e3c7061746820643d224d3536362e3139203234342e3438682d32372e34387631302e39396832372e3438762d31302e39397a2220636c6173733d2243222f3e3c6720636c6173733d2242223e3c75736520786c696e6b3a687265663d222342222f3e3c75736520786c696e6b3a687265663d2223422220783d2231302e3939222f3e3c2f673e3c75736520786c696e6b3a687265663d2223432220636c6173733d2243222f3e3c7061746820643d224d3533382e3733203233322e333261312e383920312e383920302031203020302d332e373920312e383920312e3839203020312030203020332e37397a2220636c6173733d2242222f3e3c75736520786c696e6b3a687265663d2223432220783d2232372e34382220636c6173733d2243222f3e3c7061746820643d224d3536362e3137203233322e333261312e38393520312e38393520302030203020302d332e373920312e383920312e3839203020312030203020332e37397a2220636c6173733d2242222f3e3c7061746820643d224d3535322e3435203234342e34386131332e37342031332e373420302030203020302d32372e34382031332e37342031332e373420302031203020302032372e34387a2220636c6173733d2243222f3e3c7061746820643d224d3535322e3435203234312e37386131302e38382031302e383820302031203020302d32312e37362031302e38382031302e383820302031203020302032312e37367a2220636c6173733d2242222f3e3c6720636c6173733d2243223e3c75736520786c696e6b3a687265663d222344222f3e3c75736520786c696e6b3a687265663d2223442220783d22392e3436222f3e3c2f673e3c7061746820643d224d3534372e3332203232382e363861312e39363520312e3936352030203120302d312e39372d312e393720312e393720312e393720302030203020312e393720312e39377a6d392e33392d2e313461312e38393520312e3839352030203120302d312e392d312e3920312e3920312e3920302030203020312e3920312e397a2220636c6173733d2242222f3e3c75736520786c696e6b3a687265663d222345222f3e3c75736520786c696e6b3a687265663d2223452220783d22392e3436222f3e3c7061746820643d224d3536302e3439203232332e38682d31362e303876322e38346831362e3038762d322e38347a2220636c6173733d2242222f3e3c7061746820643d224d3535322e3435203233392e373763342e3132203020372e34362d312e343120372e34362d332e313420302d312e37342d332e33342d332e31342d372e34362d332e3134732d372e343620312e342d372e343620332e3134633020312e373320332e333420332e313420372e343620332e31347a2220636c6173733d2243222f3e3c672066696c6c3d2223636161303030223e3c75736520786c696e6b3a687265663d222346222f3e3c75736520786c696e6b3a687265663d2223462220783d222d332e3134222f3e3c2f673e3c7061746820643d224d3535372e3635203233372e3035682d31302e34762e39356831302e34762d2e39357a2220636c6173733d2242222f3e3c6720636c6173733d2243223e3c7061746820643d226d33323220323930203237362e3934322d32342e32323920392e393336203131332e3536362d3237362e3934322032342e3232397a222f3e3c656c6c697073652063783d22343630222063793d22323738222072783d22313339222072793d22323122207472616e73666f726d3d22726f7461746528333535203436302032373829222f3e3c2f673e3c6720636c6173733d2242223e3c656c6c697073652063783d22343638222063793d22333636222072783d22313339222072793d22323122207472616e73666f726d3d22726f7461746528333535203436382033363629222f3e3c7061746820643d226d33333020333738203237362e3934322d32342e32323920342e3739342035342e3739312d3237362e3934322032342e3232397a222f3e3c636972636c652063783d22323337222063793d2237343322207472616e73666f726d3d22726f74617465283335352032333720373433292220723d223733222f3e3c636972636c652063783d22373633222063793d2236393622207472616e73666f726d3d22726f74617465283137352037363320363936292220723d223733222f3e3c2f673e3c672066696c6c3d2223646130223e3c636972636c65207472616e73666f726d3d227363616c652831202d312920726f7461746528352e30363420383531392e34323720323330382e323035292220723d223239222f3e3c636972636c65207472616e73666f726d3d226d6174726978282d2e39393631202e3038383237202e3038383237202e393936312037363320363936292220723d223239222f3e3c2f673e3c7061746820643d226d3232382e343831203634302e373537203532352e3939312d34362e3031382031362e393038203139332e3236322d3532352e3939312034362e3031387a2220636c6173733d2243222f3e3c7061746820643d224d32303220363739632d32342031332d33392034302d333720373020332032392032332035332034392036326c2d31322d3133327a6d3539372038306332352d31342034302d34302033382d37302d332d32392d32322d35332d34392d36336c3131203133337a222066696c6c3d22236666322220636c6173733d2244222f3e3c6720636c6173733d2243223e3c7061746820643d226d32373520343438203339392e3437342d33342e3934392031342e323036203136322e33382d3339392e3437342033342e3934397a222f3e3c656c6c697073652063783d22343735222063793d22343330222072783d22323030222072793d22333122207472616e73666f726d3d22726f7461746528333535203437352034333029222f3e3c2f673e3c6720636c6173733d2242223e3c656c6c697073652063783d22343834222063793d22353430222072783d22323030222072793d22323922207472616e73666f726d3d22726f7461746528333535203438342035343029222f3e3c7061746820643d226d32383520353539203339392e3437342d33342e39343920352e3035352035372e3737392d3339392e3437342033342e3934397a222f3e3c2f673e3c656c6c697073652063783d22343931222063793d22363136222072783d22323634222072793d22343122207472616e73666f726d3d22726f74617465283335352034393120363136292220636c6173733d2243222f3e3c6720636c6173733d2242223e3c656c6c697073652063783d22353033222063793d22373435222072783d22323634222072793d22343322207472616e73666f726d3d22726f7461746528333535203530332037343529222f3e3c7061746820643d226d32343020373731203532352e3939312d34362e30313820352e3331372036302e3736382d3532352e3939312034362e3031387a222f3e3c2f673e3c656c6c697073652063783d22353039222063793d22383131222072783d22323634222072793d22343122207472616e73666f726d3d22726f7461746528333535203530392038313129222066696c6c3d2223646130222f3e3c7061746820643d226d343334203133342031382d31392031352032342d3720372d32362d31327a2220636c6173733d2242222f3e3c7061746820643d226d323333203638392033322d37366d2d33322037362033322d37366d3133203132392037312d3134386d2d3731203134382037312d3134386d3139203132362036362d3133396d2d3636203133392036362d3133396d3234203132362036342d3133356d2d3634203133352036342d3133356d3332203132372035392d3133306d2d3539203133302035392d3133306d3331203132382036302d3132336d2d3630203132332036302d3132336d3234203133302032392d36356d2d32392036352032392d36356d342e3631362034342e33322d39342e3739372d3131332e3635356d39342e373937203131332e3635352d39342e3739372d3131332e3635354d3638382037303020353737203537306d313131203133304c353737203537306d3138203132384c343838203537366d313037203132324c343838203537366d3131203132364c333935203538366d313034203131364c333935203538366d3134203132384c333037203630316d313032203131334c333037203630316d3132203133302d38382d39386d38382039382d38382d393822207374726f6b653d2223646130222f3e3c6720636c6173733d2242223e3c636972636c652063783d22333834222063793d223638352220723d2236222f3e3c636972636c652063783d22343139222063793d223631332220723d2236222f3e3c636972636c652063783d22353130222063793d223630312220723d2236222f3e3c636972636c652063783d22363031222063793d223539382220723d2236222f3e3c636972636c652063783d22363932222063793d223630312220723d2236222f3e3c636972636c652063783d22343734222063793d223637332220723d2236222f3e3c636972636c652063783d22353638222063793d223636362220723d2236222f3e3c636972636c652063783d22363630222063793d223636342220723d2236222f3e3c636972636c652063783d22373436222063793d223636362220723d2236222f3e3c636972636c652063783d22323937222063793d223730352220723d2236222f3e3c636972636c652063783d22333333222063793d223632392220723d2236222f3e3c636972636c652063783d22323438222063793d223635342220723d2236222f3e3c2f673e3c7061746820643d226d333237203334382033362d37376d2d33362037372033362d37376d33342038322034312d39346d2d34312039342034312d39346d34392038332033332d38386d2d33332038382033332d38386d34382038382032382d37396d2d32382037392032382d37396d2d3231392039352d35362d37306d35362037302d35362d37306d3133332e3539352035382e3239342d35392e3332332d38312e3734326d35392e3332332038312e3734322d35392e3332332d38312e3734324d353336203334316c2d35362d38366d35362038362d35362d38366d3132342037352d35302d37366d35302037362d35302d373622207374726f6b653d2223646130222f3e3c6720636c6173733d2242223e3c636972636c652063783d22333433222063793d223331342220723d2236222f3e3c636972636c652063783d22343231222063793d223330302220723d2236222f3e3c636972636c652063783d22353035222063793d223239332220723d2236222f3e3c636972636c652063783d22353834222063793d223239382220723d2236222f3e3c2f673e3c7061746820643d226d333336203533332035312d382031302036372d353320372d382d36367a6d2d3331203230302035312d313020392036352d35322031312d382d36367a6d37352d3337372035312d3820382035362d353320372d362d35357a222066696c6c2d6f7061636974793d222e332220636c6173733d2243222f3e3c7061746820643d226d343831203730352034352d3520382036372d343720342d362d36367a222066696c6c3d2223666632222f3e3c7061746820643d226d343837203736342034362d34203120372d34372034762d377a222066696c6c3d2223646130222f3e3c6720636c6173733d2242223e3c7061746820643d226d363234203637372d343820322031302035372034392d322d31312d35377a222f3e3c656c6c697073652063783d22353936222063793d22363834222072783d223239222072793d22313422207472616e73666f726d3d22726f7461746528333532203539362036383429222f3e3c2f673e3c672066696c6c3d2223646130223e3c656c6c697073652063783d22363038222063793d22373430222072783d223238222072793d22313022207472616e73666f726d3d22726f7461746528333435203630382037343029222f3e3c7061746820643d226d363035203735322d37392031342036302d32382031392031347a222f3e3c2f673e3c6720636c6173733d2242223e3c7061746820643d226d353736203637362d343920323420372036322035332d32362d31312d36307a6d2d3139332032382034302d313120332036312d343020392d332d35397a222f3e3c656c6c697073652072783d223238222072793d22313122207472616e73666f726d3d226d6174726978282d2e3939343632202e31303336202e3130373033202e3939343236203431322037303229222f3e3c2f673e3c672066696c6c3d2223646130223e3c656c6c697073652072783d223238222072793d22313022207472616e73666f726d3d226d6174726978282d2e3939393837202d2e3031363032202d2e30303432202e3939393939203431342037363329222f3e3c7061746820643d226d343230203737332038332d362d37392d31342d342032307a222f3e3c2f673e3c7061746820643d226d3432332036393120353920313420362036302d36332d31322d322d36327a2220636c6173733d2242222f3e3c673e3c616e696d617465206174747269627574654e616d653d226f706163697479222076616c7565733d22303b313b3022206475723d2231732220726570656174436f756e743d22696e646566696e697465222f3e3c6720636c6173733d2243223e3c7061746820643d224d34333620313337633420302031332031332031332031332d332d352d382d31332d382d313720312d3320342d3720362d38203020302d3620342d3920332d342d312d31332d31332d31332d31332033203420382031342037203137203020332d3520372d3720392030203020372d352031312d347a4d32383320353631633720312032332032332032332032332d362d392d31352d32332d31342d323973372d31322031302d3134633020302d313120362d313720352d352d322d32312d32332d32312d3233203520382031342032352031332033302d3220352d392031322d3133203135203020302031322d372031392d377a6d313520323437633720312032332032332032332032332d362d382d31352d32332d31342d323973372d31332031302d3134633020302d313120362d313620352d362d322d32322d32332d32322d3233203520372031342032352031332033302d3220352d392031322d3133203135203020302031322d372031392d377a6d3439332d313735633520302031362031362031362031362d342d362d31302d31372d31302d323120312d3420352d3920372d3130203020302d3720352d31312034732d31362d31372d31362d31376334203620313020313820392032312d3120342d3620392d392031322030203020392d362031342d357a222f3e3c75736520786c696e6b3a687265663d222341222f3e3c2f673e3c2f673e3c673e3c616e696d617465206174747269627574654e616d653d226f706163697479222076616c7565733d22313b303b3122206475723d2231732220726570656174436f756e743d22696e646566696e697465222f3e3c6720636c6173733d2243223e3c7061746820643d224d36303520373332633520312031382031382031382031382d352d372d31312d31382d31312d323220312d3520362d313020382d3131203020302d3920342d31332033732d31372d31372d31372d3137633420362031312031392031302032332d3120332d3720392d3130203132203020302031302d362031352d367a6d38302d323034633520302031372031382031372031382d342d372d31312d31382d31302d323320302d3420352d313020372d3131203020302d3820352d313220342d352d312d31372d31372d31372d3137203420352031312031382031302032322d3220342d372031302d31302031322030203020392d362031352d357a4d31363720373239633620302032302032302032302032302d362d382d31332d32312d31332d323620312d3420372d313020392d3132203020302d3920362d313420342d352d312d31392d31392d31392d3139203520362031332032312031312032352d3120352d372031312d3131203134203020302031312d372031372d367a222f3e3c75736520786c696e6b3a687265663d2223412220783d222d3232342220793d222d313335222f3e3c7061746820643d224d35303220313830633820302032362032352032362032352d372d31302d31372d32362d31362d333220312d3720382d31342031312d3136203020302d313220372d313820352d372d312d32352d32352d32352d3235203720382031372032372031352033332d3220352d31302031332d3135203137203020302031342d382032322d377a222f3e3c2f673e3c2f673e3c2f673e3c656c6c697073652063783d22343939222063793d22393232222072783d22323135222072793d223234222066696c6c3d2223306134223e3c616e696d6174652076616c7565733d223233303b3235303b32333022206b657954696d65733d22303b2e35303b3122206475723d22347322206174747269627574654e616d653d227278222066696c6c3d22667265657a6522206b657953706c696e65733d22302e35203020302e3520313b20302e35203020302e352031222063616c634d6f64653d2273706c696e652220726570656174436f756e743d22696e646566696e697465222f3e3c2f656c6c697073653e3c646566733e3c706174682069643d22412220643d224d36303520333538633520302031372031372031372031372d342d372d31312d31382d31302d323220302d3420352d313020372d3131203020302d3820352d313220342d352d312d31372d31372d31372d313720342035203131203138203130203232732d3720392d31302031326330203020392d362031352d357a222f3e3c706174682069643d22422220643d224d3534372e3036203235302e3831632e32382030202e352d2e32322e352d2e35612e352e352030203020302d2e352d2e352e35312e35312030203020302d2e352e352e352e35203020302030202e352e357a222f3e3c706174682069643d22432220643d224d3533382e3731203233352e303663322e36203020342e37312d322e313120342e37312d342e373120302d322e36312d322e31312d342e37312d342e37312d342e3731732d342e373120322e312d342e373120342e3731633020322e3620322e313120342e373120342e373120342e37317a222f3e3c706174682069643d22442220643d224d3534372e3732203233302e343363312e3833203020332e33312d312e323720332e33312d322e3834732d312e34382d322e38342d332e33312d322e38342d332e333120312e32372d332e333120322e383420312e343820322e383420332e333120322e38347a222f3e3c706174682069643d22452220643d224d3534372e3235203232372e3539612e39342e393420302031203020302d312e38392e39342e39342030203020302d2e39352e39346330202e35332e34322e39352e39352e39357a222f3e3c706174682069643d22462220643d224d3535342e3032203233352e3036632e32322030202e33392d2e31382e33392d2e34612e33392e33392030203020302d2e373820306330202e32322e31372e342e33392e347a222f3e3c2f646566733e3c2f7376673e

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101155760003560e01c8063707599a2116100a2578063bee0e2fd11610071578063bee0e2fd1461025b578063d39d71ef1461026e578063e985e9c514610281578063f242432a146102bd578063f2fde38b146102d057600080fd5b8063707599a21461021c578063715018a61461022f5780638da5cb5b14610237578063a22cb4651461024857600080fd5b8063265c2b5a116100e9578063265c2b5a146101985780632eb2c2d6146101ab5780633078f6fd146101be57806336c7c12c146101d15780634e1273f4146101fc57600080fd5b8062fdd58e1461011a57806301ffc9a7146101405780630e89341c1461016357806314ab563314610183575b600080fd5b61012d610128366004611a77565b6102e3565b6040519081526020015b60405180910390f35b61015361014e366004611c32565b61037a565b6040519015158152602001610137565b610176610171366004611c6c565b6103cc565b6040516101379190611ec8565b6101966101913660046118d7565b61066c565b005b6101966101a6366004611b15565b6106b8565b6101966101b936600461192c565b6107d2565b6101966101cc366004611c85565b610869565b6008546101e4906001600160a01b031681565b6040516001600160a01b039091168152602001610137565b61020f61020a366004611b61565b6108bc565b6040516101379190611e87565b61019661022a3660046118d7565b6109e6565b610196610a32565b6003546001600160a01b03166101e4565b610196610256366004611a3b565b610a68565b610196610269366004611aa1565b610a73565b6007546101e4906001600160a01b031681565b61015361028f3660046118f9565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6101966102cb3660046119d6565b610bd3565b6101966102de3660046118d7565b610c5a565b60006001600160a01b0383166103545760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b14806103ab57506001600160e01b031982166303a24d0760e21b145b806103c657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000821180156103de5750600482105b6103fa5760405162461bcd60e51b815260040161034b90611f68565b60608083600114156104b35760048054610413906120b6565b80601f016020809104026020016040519081016040528092919081815260200182805461043f906120b6565b801561048c5780601f106104615761010080835404028352916020019161048c565b820191906000526020600020905b81548152906001019060200180831161046f57829003601f168201915b505050505091506040518060800160405280604f8152602001612238604f91399050610612565b836002141561056957600580546104c9906120b6565b80601f01602080910402602001604051908101604052809291908181526020018280546104f5906120b6565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b505050505091506040518060800160405280604981526020016122d2604991399050610612565b60068054610576906120b6565b80601f01602080910402602001604051908101604052809291908181526020018280546105a2906120b6565b80156105ef5780601f106105c4576101008083540402835291602001916105ef565b820191906000526020600020905b8154815290600101906020018083116105d257829003601f168201915b505050505091506040518060800160405280604b8152602001612287604b913990505b6106448161061f84610cf5565b604051602001610630929190611d0f565b604051602081830303815290604052610cf5565b6040516020016106549190611d9f565b60405160208183030381529060405292505050919050565b6003546001600160a01b031633146106965760405162461bcd60e51b815260040161034b90611fd4565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031633146106e25760405162461bcd60e51b815260040161034b90611fd4565b6000811180156106f25750600481105b61070e5760405162461bcd60e51b815260040161034b90611f68565b6009546127119061072090849061202d565b106107535760405162461bcd60e51b815260206004820152600360248201526231306b60e81b604482015260640161034b565b60005b828110156107b2576107a08484838181106107735761077361214f565b905060200201602081019061078891906118d7565b83600160405180602001604052806000815250610e5b565b806107aa8161211e565b915050610756565b5082829050600960008282546107c8919061202d565b9091555050505050565b6001600160a01b0385163314806107ee57506107ee853361028f565b6108555760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606482015260840161034b565b6108628585858585610f65565b5050505050565b6007546001600160a01b031633146108ac5760405162461bcd60e51b815260206004820152600660248201526530b21032b93960d11b604482015260640161034b565b6108b88183600161113a565b5050565b606081518351146109215760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b606482015260840161034b565b6000835167ffffffffffffffff81111561093d5761093d612165565b604051908082528060200260200182016040528015610966578160200160208202803683370190505b50905060005b84518110156109de576109b185828151811061098a5761098a61214f565b60200260200101518583815181106109a4576109a461214f565b60200260200101516102e3565b8282815181106109c3576109c361214f565b60209081029190910101526109d78161211e565b905061096c565b509392505050565b6003546001600160a01b03163314610a105760405162461bcd60e51b815260040161034b90611fd4565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b03163314610a5c5760405162461bcd60e51b815260040161034b90611fd4565b610a6660006112b4565b565b6108b8338383611306565b6003546001600160a01b03163314610a9d5760405162461bcd60e51b815260040161034b90611fd4565b600081118015610aad5750600481105b610ac95760405162461bcd60e51b815260040161034b90611f68565b60005b84811015610bcb57612711848483818110610ae957610ae961214f565b90506020020135600954610afd919061202d565b10610b305760405162461bcd60e51b815260206004820152600360248201526231306b60e81b604482015260640161034b565b610b89868683818110610b4557610b4561214f565b9050602002016020810190610b5a91906118d7565b83868685818110610b6d57610b6d61214f565b9050602002013560405180602001604052806000815250610e5b565b838382818110610b9b57610b9b61214f565b9050602002013560096000828254610bb3919061202d565b90915550819050610bc38161211e565b915050610acc565b505050505050565b6001600160a01b038516331480610bef5750610bef853361028f565b610c4d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b606482015260840161034b565b61086285858585856113e7565b6003546001600160a01b03163314610c845760405162461bcd60e51b815260040161034b90611fd4565b6001600160a01b038116610ce95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161034b565b610cf2816112b4565b50565b805160609080610d15575050604080516020810190915260008152919050565b60006003610d2483600261202d565b610d2e9190612045565b610d39906004612067565b90506000610d4882602061202d565b67ffffffffffffffff811115610d6057610d60612165565b6040519080825280601f01601f191660200182016040528015610d8a576020820181803683370190505b509050600060405180606001604052806040815260200161231b604091399050600181016020830160005b86811015610e16576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b835260049092019101610db5565b506003860660018114610e305760028114610e4157610e4d565b613d3d60f01b600119830152610e4d565b603d60f81b6000198301525b505050918152949350505050565b6001600160a01b038416610ebb5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b606482015260840161034b565b33610ed581600087610ecc88611504565b61086288611504565b6000848152602081815260408083206001600160a01b038916845290915281208054859290610f0590849061202d565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46108628160008787878761154f565b8151835114610fc75760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b606482015260840161034b565b6001600160a01b038416610fed5760405162461bcd60e51b815260040161034b90611f23565b3360005b84518110156110d457600085828151811061100e5761100e61214f565b60200260200101519050600085838151811061102c5761102c61214f565b602090810291909101810151600084815280835260408082206001600160a01b038e16835290935291909120549091508181101561107c5760405162461bcd60e51b815260040161034b90611f8a565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906110b990849061202d565b92505081905550505050806110cd9061211e565b9050610ff1565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611124929190611e9a565b60405180910390a4610bcb8187878787876116ba565b6001600160a01b03831661119c5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b606482015260840161034b565b336111cc818560006111ad87611504565b6111b687611504565b5050604080516020810190915260009052505050565b6000838152602081815260408083206001600160a01b0388168452909152902054828110156112495760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b606482015260840161034b565b6000848152602081815260408083206001600160a01b03898116808652918452828520888703905582518981529384018890529092908616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b0316141561137a5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b606482015260840161034b565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b03841661140d5760405162461bcd60e51b815260040161034b90611f23565b3361141d818787610ecc88611504565b6000848152602081815260408083206001600160a01b038a1684529091529020548381101561145e5760405162461bcd60e51b815260040161034b90611f8a565b6000858152602081815260408083206001600160a01b038b811685529252808320878503905590881682528120805486929061149b90849061202d565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46114fb82888888888861154f565b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061153e5761153e61214f565b602090810291909101015292915050565b6001600160a01b0384163b15610bcb5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906115939089908990889088908890600401611e42565b602060405180830381600087803b1580156115ad57600080fd5b505af19250505080156115dd575060408051601f3d908101601f191682019092526115da91810190611c4f565b60015b61168a576115e961217b565b806308c379a0141561162357506115fe612197565b806116095750611625565b8060405162461bcd60e51b815260040161034b9190611ec8565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606482015260840161034b565b6001600160e01b0319811663f23a6e6160e01b146114fb5760405162461bcd60e51b815260040161034b90611edb565b6001600160a01b0384163b15610bcb5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906116fe9089908990889088908890600401611de4565b602060405180830381600087803b15801561171857600080fd5b505af1925050508015611748575060408051601f3d908101601f1916820190925261174591810190611c4f565b60015b611754576115e961217b565b6001600160e01b0319811663bc197c8160e01b146114fb5760405162461bcd60e51b815260040161034b90611edb565b80356001600160a01b038116811461179b57600080fd5b919050565b60008083601f8401126117b257600080fd5b50813567ffffffffffffffff8111156117ca57600080fd5b6020830191508360208260051b85010111156117e557600080fd5b9250929050565b600082601f8301126117fd57600080fd5b8135602061180a82612009565b60405161181782826120f1565b8381528281019150858301600585901b8701840188101561183757600080fd5b60005b858110156118565781358452928401929084019060010161183a565b5090979650505050505050565b600082601f83011261187457600080fd5b813567ffffffffffffffff81111561188e5761188e612165565b6040516118a5601f8301601f1916602001826120f1565b8181528460208386010111156118ba57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156118e957600080fd5b6118f282611784565b9392505050565b6000806040838503121561190c57600080fd5b61191583611784565b915061192360208401611784565b90509250929050565b600080600080600060a0868803121561194457600080fd5b61194d86611784565b945061195b60208701611784565b9350604086013567ffffffffffffffff8082111561197857600080fd5b61198489838a016117ec565b9450606088013591508082111561199a57600080fd5b6119a689838a016117ec565b935060808801359150808211156119bc57600080fd5b506119c988828901611863565b9150509295509295909350565b600080600080600060a086880312156119ee57600080fd5b6119f786611784565b9450611a0560208701611784565b93506040860135925060608601359150608086013567ffffffffffffffff811115611a2f57600080fd5b6119c988828901611863565b60008060408385031215611a4e57600080fd5b611a5783611784565b915060208301358015158114611a6c57600080fd5b809150509250929050565b60008060408385031215611a8a57600080fd5b611a9383611784565b946020939093013593505050565b600080600080600060608688031215611ab957600080fd5b853567ffffffffffffffff80821115611ad157600080fd5b611add89838a016117a0565b90975095506020880135915080821115611af657600080fd5b50611b03888289016117a0565b96999598509660400135949350505050565b600080600060408486031215611b2a57600080fd5b833567ffffffffffffffff811115611b4157600080fd5b611b4d868287016117a0565b909790965060209590950135949350505050565b60008060408385031215611b7457600080fd5b823567ffffffffffffffff80821115611b8c57600080fd5b818501915085601f830112611ba057600080fd5b81356020611bad82612009565b604051611bba82826120f1565b8381528281019150858301600585901b870184018b1015611bda57600080fd5b600096505b84871015611c0457611bf081611784565b835260019690960195918301918301611bdf565b5096505086013592505080821115611c1b57600080fd5b50611c28858286016117ec565b9150509250929050565b600060208284031215611c4457600080fd5b81356118f281612221565b600060208284031215611c6157600080fd5b81516118f281612221565b600060208284031215611c7e57600080fd5b5035919050565b60008060408385031215611c9857600080fd5b8235915061192360208401611784565b600081518084526020808501945080840160005b83811015611cd857815187529582019590820190600101611cbc565b509495945050505050565b60008151808452611cfb816020860160208601612086565b601f01601f19169290920160200192915050565b6a1ec89b985b59488e88089160aa1b81528251600090611d3681600b850160208801612086565b7f227d5d2c22696d616765223a2022646174613a696d6167652f7376672b786d6c600b91840191820152670ed8985cd94d8d0b60c21b602b8201528351611d84816033840160208801612086565b61227d60f01b60339290910191820152603501949350505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251611dd781601d850160208701612086565b91909101601d0192915050565b6001600160a01b0386811682528516602082015260a060408201819052600090611e1090830186611ca8565b8281036060840152611e228186611ca8565b90508281036080840152611e368185611ce3565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090611e7c90830184611ce3565b979650505050505050565b6020815260006118f26020830184611ca8565b604081526000611ead6040830185611ca8565b8281036020840152611ebf8185611ca8565b95945050505050565b6020815260006118f26020830184611ce3565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252600890820152673a3cb8329032b93960c11b604082015260600190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600067ffffffffffffffff82111561202357612023612165565b5060051b60200190565b6000821982111561204057612040612139565b500190565b60008261206257634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561208157612081612139565b500290565b60005b838110156120a1578181015183820152602001612089565b838111156120b0576000848401525b50505050565b600181811c908216806120ca57607f821691505b602082108114156120eb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f1916810167ffffffffffffffff8111828210171561211757612117612165565b6040525050565b600060001982141561213257612132612139565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d11156121945760046000803e5060005160e01c5b90565b600060443d10156121a55790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156121d557505050505090565b82850191508151818111156121ed5750505050505090565b843d87010160208285010111156122075750505050505090565b612216602082860101876120f1565b509095945050505050565b6001600160e01b031981168114610cf257600080fdfe3120496e6372656469626c652049636520506f70222c2261747472696275746573223a5b7b2274726169745f74797065223a2022446573736572742054797065222c202276616c7565223a20224431332043656c65737469616c2043616b65222c2261747472696275746573223a5b7b2274726169745f74797065223a2022446573736572742054797065222c202276616c7565223a202244333220446976696e6520446f6e7574222c2261747472696275746573223a5b7b2274726169745f74797065223a2022446573736572742054797065222c202276616c7565223a202244324142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212203ff9d3bb0c53b458bf1f6b5ded3812c2859a0c8bf159f7eccb031951abfcdeb364736f6c63430008060033

Deployed Bytecode Sourcemap

6669:18951:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2115:228:2;;;;;;:::i;:::-;;:::i;:::-;;;20225:25:10;;;20213:2;20198:18;2115:228:2;;;;;;;;1166:305;;;;;;:::i;:::-;;:::i;:::-;;;12731:14:10;;12724:22;12706:41;;12694:2;12679:18;1166:305:2;12661:92:10;24738:880:8;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;24236:139::-;;;;;;:::i;:::-;;:::i;:::-;;23899:327;;;;;;:::i;:::-;;:::i;3990:430:2:-;;;;;;:::i;:::-;;:::i;24542:190:8:-;;;;;;:::i;:::-;;:::i;22974:33::-;;;;;-1:-1:-1;;;;;22974:33:8;;;;;;-1:-1:-1;;;;;10390:32:10;;;10372:51;;10360:2;10345:18;22974:33:8;10327:102:10;2500:508:2;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;24381:155:8:-;;;;;;:::i;:::-;;:::i;1661:101:9:-;;;:::i;1029:85::-;1101:6;;-1:-1:-1;;;;;1101:6:9;1029:85;;3076:153:2;;;;;;:::i;:::-;;:::i;23415:371:8:-;;;;;;:::i;:::-;;:::i;22907:29::-;;;;;-1:-1:-1;;;;;22907:29:8;;;3296:166:2;;;;;;:::i;:::-;-1:-1:-1;;;;;3418:27:2;;;3395:4;3418:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;3296:166;3529:389;;;;;;:::i;:::-;;:::i;1911:198:9:-;;;;;;:::i;:::-;;:::i;2115:228:2:-;2201:7;-1:-1:-1;;;;;2228:21:2;;2220:77;;;;-1:-1:-1;;;2220:77:2;;14014:2:10;2220:77:2;;;13996:21:10;14053:2;14033:18;;;14026:30;14092:34;14072:18;;;14065:62;-1:-1:-1;;;14143:18:10;;;14136:41;14194:19;;2220:77:2;;;;;;;;;-1:-1:-1;2314:9:2;:13;;;;;;;;;;;-1:-1:-1;;;;;2314:22:2;;;;;;;;;;;;2115:228::o;1166:305::-;1268:4;-1:-1:-1;;;;;;1303:41:2;;-1:-1:-1;;;1303:41:2;;:109;;-1:-1:-1;;;;;;;1360:52:2;;-1:-1:-1;;;1360:52:2;1303:109;:161;;;-1:-1:-1;;;;;;;;;;937:40:3;;;1428:36:2;1284:180;1166:305;-1:-1:-1;;1166:305:2:o;24738:880:8:-;24797:13;24837:1;24830:6;:8;:20;;;;;24849:1;24842:6;:8;24830:20;24822:41;;;;-1:-1:-1;;;24822:41:8;;;;;;;:::i;:::-;24873:16;24899:17;24930:6;24940:1;24930:11;24926:465;;;24969:4;24957:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24988:87;;;;;;;;;;;;;;;;;;;24926:465;;;25096:6;25106:1;25096:11;25092:299;;;25135:4;25123:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25154:81;;;;;;;;;;;;;;;;;;;25092:299;;;25278:4;25266:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25297:83;;;;;;;;;;;;;;;;;;;25092:299;25464:145;25523:3;25584:18;25598:3;25584:13;:18::i;:::-;25478:130;;;;;;;;;:::i;:::-;;;;;;;;;;;;;25464:13;:145::i;:::-;25414:196;;;;;;;;:::i;:::-;;;;;;;;;;;;;25400:211;;;;24738:880;;;:::o;24236:139::-;1101:6:9;;-1:-1:-1;;;;;1101:6:9;719:10:1;1241:23:9;1233:68;;;;-1:-1:-1;;;1233:68:9;;;;;;;:::i;:::-;24330:14:8::1;:38:::0;;-1:-1:-1;;;;;;24330:38:8::1;-1:-1:-1::0;;;;;24330:38:8;;;::::1;::::0;;;::::1;::::0;;24236:139::o;23899:327::-;1101:6:9;;-1:-1:-1;;;;;1101:6:9;719:10:1;1241:23:9;1233:68;;;;-1:-1:-1;;;1233:68:9;;;;;;;:::i;:::-;24003:1:8::1;23996:6;:8;:20;;;;;24015:1;24008:6;:8;23996:20;23988:41;;;;-1:-1:-1::0;;;23988:41:8::1;;;;;;;:::i;:::-;24047:12;::::0;24073:5:::1;::::0;24047:23:::1;::::0;24060:3;;24047:23:::1;:::i;:::-;:31;24039:47;;;::::0;-1:-1:-1;;;24039:47:8;;17985:2:10;24039:47:8::1;::::0;::::1;17967:21:10::0;18024:1;18004:18;;;17997:29;-1:-1:-1;;;18042:18:10;;;18035:33;18085:18;;24039:47:8::1;17957:152:10::0;24039:47:8::1;24101:9;24096:88;24114:12:::0;;::::1;24096:88;;;24145:28;24151:3;;24155:1;24151:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;24159;24167:1;24145:28;;;;;;;;;;;::::0;:5:::1;:28::i;:::-;24128:3:::0;::::1;::::0;::::1;:::i;:::-;;;;24096:88;;;;24209:3;;:10;;24193:12;;:26;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;;23899:327:8:o;3990:430:2:-;-1:-1:-1;;;;;4215:20:2;;719:10:1;4215:20:2;;:60;;-1:-1:-1;4239:36:2;4256:4;719:10:1;3296:166:2;:::i;4239:36::-;4194:157;;;;-1:-1:-1;;;4194:157:2;;16390:2:10;4194:157:2;;;16372:21:10;16429:2;16409:18;;;16402:30;16468:34;16448:18;;;16441:62;-1:-1:-1;;;16519:18:10;;;16512:48;16577:19;;4194:157:2;16362:240:10;4194:157:2;4361:52;4384:4;4390:2;4394:3;4399:7;4408:4;4361:22;:52::i;:::-;3990:430;;;;;:::o;24542:190:8:-;24656:14;;-1:-1:-1;;;;;24656:14:8;24642:10;:28;24634:47;;;;-1:-1:-1;;;24634:47:8;;19136:2:10;24634:47:8;;;19118:21:10;19175:1;19155:18;;;19148:29;-1:-1:-1;;;19193:18:10;;;19186:36;19239:18;;24634:47:8;19108:155:10;24634:47:8;24691:34;24697:16;24715:6;24723:1;24691:5;:34::i;:::-;24542:190;;:::o;2500:508:2:-;2651:16;2710:3;:10;2691:8;:15;:29;2683:83;;;;-1:-1:-1;;;2683:83:2;;18726:2:10;2683:83:2;;;18708:21:10;18765:2;18745:18;;;18738:30;18804:34;18784:18;;;18777:62;-1:-1:-1;;;18855:18:10;;;18848:39;18904:19;;2683:83:2;18698:231:10;2683:83:2;2777:30;2824:8;:15;2810:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2810:30:2;;2777:63;;2856:9;2851:120;2875:8;:15;2871:1;:19;2851:120;;;2930:30;2940:8;2949:1;2940:11;;;;;;;;:::i;:::-;;;;;;;2953:3;2957:1;2953:6;;;;;;;;:::i;:::-;;;;;;;2930:9;:30::i;:::-;2911:13;2925:1;2911:16;;;;;;;;:::i;:::-;;;;;;;;;;:49;2892:3;;;:::i;:::-;;;2851:120;;;-1:-1:-1;2988:13:2;2500:508;-1:-1:-1;;;2500:508:2:o;24381:155:8:-;1101:6:9;;-1:-1:-1;;;;;1101:6:9;719:10:1;1241:23:9;1233:68;;;;-1:-1:-1;;;1233:68:9;;;;;;;:::i;:::-;24483:18:8::1;:46:::0;;-1:-1:-1;;;;;;24483:46:8::1;-1:-1:-1::0;;;;;24483:46:8;;;::::1;::::0;;;::::1;::::0;;24381:155::o;1661:101:9:-;1101:6;;-1:-1:-1;;;;;1101:6:9;719:10:1;1241:23:9;1233:68;;;;-1:-1:-1;;;1233:68:9;;;;;;;:::i;:::-;1725:30:::1;1752:1;1725:18;:30::i;:::-;1661:101::o:0;3076:153:2:-;3170:52;719:10:1;3203:8:2;3213;3170:18;:52::i;23415:371:8:-;1101:6:9;;-1:-1:-1;;;;;1101:6:9;719:10:1;1241:23:9;1233:68;;;;-1:-1:-1;;;1233:68:9;;;;;;;:::i;:::-;23547:1:8::1;23540:6;:8;:20;;;;;23559:1;23552:6;:8;23540:20;23532:41;;;;-1:-1:-1::0;;;23532:41:8::1;;;;;;;:::i;:::-;23588:9;23583:197;23601:12:::0;;::::1;23583:197;;;23667:5;23653:8;;23662:1;23653:11;;;;;;;:::i;:::-;;;;;;;23640:12;;:24;;;;:::i;:::-;:32;23632:48;;;::::0;-1:-1:-1;;;23632:48:8;;17985:2:10;23632:48:8::1;::::0;::::1;17967:21:10::0;18024:1;18004:18;;;17997:29;-1:-1:-1;;;18042:18:10;;;18035:33;18085:18;;23632:48:8::1;17957:152:10::0;23632:48:8::1;23692:38;23698:3;;23702:1;23698:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23706;23714:8;;23723:1;23714:11;;;;;;;:::i;:::-;;;;;;;23692:38;;;;;;;;;;;::::0;:5:::1;:38::i;:::-;23758:8;;23767:1;23758:11;;;;;;;:::i;:::-;;;;;;;23742:12;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;23615:3:8;;-1:-1:-1;23615:3:8::1;::::0;::::1;:::i;:::-;;;;23583:197;;;;23415:371:::0;;;;;:::o;3529:389:2:-;-1:-1:-1;;;;;3729:20:2;;719:10:1;3729:20:2;;:60;;-1:-1:-1;3753:36:2;3770:4;719:10:1;3296:166:2;:::i;3753:36::-;3708:148;;;;-1:-1:-1;;;3708:148:2;;15238:2:10;3708:148:2;;;15220:21:10;15277:2;15257:18;;;15250:30;15316:34;15296:18;;;15289:62;-1:-1:-1;;;15367:18:10;;;15360:39;15416:19;;3708:148:2;15210:231:10;3708:148:2;3866:45;3884:4;3890:2;3894;3898:6;3906:4;3866:17;:45::i;1911:198:9:-;1101:6;;-1:-1:-1;;;;;1101:6:9;719:10:1;1241:23:9;1233:68;;;;-1:-1:-1;;;1233:68:9;;;;;;;:::i;:::-;-1:-1:-1;;;;;1999:22:9;::::1;1991:73;;;::::0;-1:-1:-1;;;1991:73:9;;14426:2:10;1991:73:9::1;::::0;::::1;14408:21:10::0;14465:2;14445:18;;;14438:30;14504:34;14484:18;;;14477:62;-1:-1:-1;;;14555:18:10;;;14548:36;14601:19;;1991:73:9::1;14398:228:10::0;1991:73:9::1;2074:28;2093:8;2074:18;:28::i;:::-;1911:198:::0;:::o;5117:1548:8:-;5214:11;;5175:13;;5239:8;5235:23;;-1:-1:-1;;5249:9:8;;;;;;;;;-1:-1:-1;5249:9:8;;;5117:1548;-1:-1:-1;5117:1548:8:o;5235:23::-;5307:18;5345:1;5334:7;:3;5340:1;5334:7;:::i;:::-;5333:13;;;;:::i;:::-;5328:19;;:1;:19;:::i;:::-;5307:40;-1:-1:-1;5402:19:8;5434:15;5307:40;5447:2;5434:15;:::i;:::-;5424:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5424:26:8;;5402:48;;5460:18;5481:5;;;;;;;;;;;;;;;;;5460:26;;5547:1;5540:5;5536:13;5591:2;5583:6;5579:15;5638:1;5607:753;5660:3;5657:1;5654:10;5607:753;;;5711:1;5753:12;;;;;5747:19;5845:4;5833:2;5829:14;;;;;5811:40;;5805:47;5952:2;5948:14;;;5944:25;;5930:40;;5924:47;6079:1;6075:13;;;6071:24;;6057:39;;6051:46;6197:16;;;;6183:31;;6177:38;5880:1;5876:11;;;5973:4;5920:58;;;5911:68;6003:11;;6047:57;;;6038:67;;;;6129:11;;6173:49;;6164:59;6251:3;6247:13;6277:22;;6344:1;6329:17;;;;5704:9;5607:753;;;5611:42;6389:1;6384:3;6380:11;6409:1;6404:82;;;;6504:1;6499:80;;;;6373:206;;6404:82;-1:-1:-1;;;;;6436:17:8;;6429:43;6404:82;;6499:80;-1:-1:-1;;;;;6531:17:8;;6524:41;6373:206;-1:-1:-1;;;6592:26:8;;;6599:6;5117:1548;-1:-1:-1;;;;5117:1548:8:o;8340:553:2:-;-1:-1:-1;;;;;8487:16:2;;8479:62;;;;-1:-1:-1;;;8479:62:2;;19879:2:10;8479:62:2;;;19861:21:10;19918:2;19898:18;;;19891:30;19957:34;19937:18;;;19930:62;-1:-1:-1;;;20008:18:10;;;20001:31;20049:19;;8479:62:2;19851:223:10;8479:62:2;719:10:1;8594:102:2;719:10:1;8552:16:2;8637:2;8641:21;8659:2;8641:17;:21::i;:::-;8664:25;8682:6;8664:17;:25::i;8594:102::-;8707:9;:13;;;;;;;;;;;-1:-1:-1;;;;;8707:17:2;;;;;;;;;:27;;8728:6;;8707:9;:27;;8728:6;;8707:27;:::i;:::-;;;;-1:-1:-1;;8749:52:2;;;20435:25:10;;;20491:2;20476:18;;20469:34;;;-1:-1:-1;;;;;8749:52:2;;;;8782:1;;8749:52;;;;;;20408:18:10;8749:52:2;;;;;;;8812:74;8843:8;8861:1;8865:2;8869;8873:6;8881:4;8812:30;:74::i;6013:1045::-;6233:7;:14;6219:3;:10;:28;6211:81;;;;-1:-1:-1;;;6211:81:2;;19470:2:10;6211:81:2;;;19452:21:10;19509:2;19489:18;;;19482:30;19548:34;19528:18;;;19521:62;-1:-1:-1;;;19599:18:10;;;19592:38;19647:19;;6211:81:2;19442:230:10;6211:81:2;-1:-1:-1;;;;;6310:16:2;;6302:66;;;;-1:-1:-1;;;6302:66:2;;;;;;;:::i;:::-;719:10:1;6379:16:2;6492:411;6516:3;:10;6512:1;:14;6492:411;;;6547:10;6560:3;6564:1;6560:6;;;;;;;;:::i;:::-;;;;;;;6547:19;;6580:14;6597:7;6605:1;6597:10;;;;;;;;:::i;:::-;;;;;;;;;;;;6622:19;6644:13;;;;;;;;;;-1:-1:-1;;;;;6644:19:2;;;;;;;;;;;;6597:10;;-1:-1:-1;6685:21:2;;;;6677:76;;;;-1:-1:-1;;;6677:76:2;;;;;;;:::i;:::-;6795:9;:13;;;;;;;;;;;-1:-1:-1;;;;;6795:19:2;;;;;;;;;;6817:20;;;6795:42;;6865:17;;;;;;;:27;;6817:20;;6795:9;6865:27;;6817:20;;6865:27;:::i;:::-;;;;;;;;6533:370;;;6528:3;;;;:::i;:::-;;;6492:411;;;;6948:2;-1:-1:-1;;;;;6918:47:2;6942:4;-1:-1:-1;;;;;6918:47:2;6932:8;-1:-1:-1;;;;;6918:47:2;;6952:3;6957:7;6918:47;;;;;;;:::i;:::-;;;;;;;;6976:75;7012:8;7022:4;7028:2;7032:3;7037:7;7046:4;6976:35;:75::i;10193:630::-;-1:-1:-1;;;;;10315:18:2;;10307:66;;;;-1:-1:-1;;;10307:66:2;;16809:2:10;10307:66:2;;;16791:21:10;16848:2;16828:18;;;16821:30;16887:34;16867:18;;;16860:62;-1:-1:-1;;;16938:18:10;;;16931:33;16981:19;;10307:66:2;16781:225:10;10307:66:2;719:10:1;10426:102:2;719:10:1;10457:4:2;10384:16;10475:21;10493:2;10475:17;:21::i;:::-;10498:25;10516:6;10498:17;:25::i;:::-;-1:-1:-1;;10426:102:2;;;;;;;;;-1:-1:-1;10426:102:2;;-1:-1:-1;;;23415:371:8;10426:102:2;10539:19;10561:13;;;;;;;;;;;-1:-1:-1;;;;;10561:19:2;;;;;;;;;;10598:21;;;;10590:70;;;;-1:-1:-1;;;10590:70:2;;14833:2:10;10590:70:2;;;14815:21:10;14872:2;14852:18;;;14845:30;14911:34;14891:18;;;14884:62;-1:-1:-1;;;14962:18:10;;;14955:34;15006:19;;10590:70:2;14805:226:10;10590:70:2;10694:9;:13;;;;;;;;;;;-1:-1:-1;;;;;10694:19:2;;;;;;;;;;;;10716:20;;;10694:42;;10762:54;;20435:25:10;;;20476:18;;;20469:34;;;10694:19:2;;10762:54;;;;;;20408:18:10;10762:54:2;;;;;;;10297:526;;10193:630;;;:::o;2263:187:9:-;2355:6;;;-1:-1:-1;;;;;2371:17:9;;;-1:-1:-1;;;;;;2371:17:9;;;;;;;2403:40;;2355:6;;;2371:17;2355:6;;2403:40;;2336:16;;2403:40;2326:124;2263:187;:::o;12019:323:2:-;12169:8;-1:-1:-1;;;;;12160:17:2;:5;-1:-1:-1;;;;;12160:17:2;;;12152:71;;;;-1:-1:-1;;;12152:71:2;;18316:2:10;12152:71:2;;;18298:21:10;18355:2;18335:18;;;18328:30;18394:34;18374:18;;;18367:62;-1:-1:-1;;;18445:18:10;;;18438:39;18494:19;;12152:71:2;18288:231:10;12152:71:2;-1:-1:-1;;;;;12233:25:2;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;12233:46:2;;;;;;;;;;12294:41;;12706::10;;;12294::2;;12679:18:10;12294:41:2;;;;;;;12019:323;;;:::o;4870:797::-;-1:-1:-1;;;;;5051:16:2;;5043:66;;;;-1:-1:-1;;;5043:66:2;;;;;;;:::i;:::-;719:10:1;5162:96:2;719:10:1;5193:4:2;5199:2;5203:21;5221:2;5203:17;:21::i;5162:96::-;5269:19;5291:13;;;;;;;;;;;-1:-1:-1;;;;;5291:19:2;;;;;;;;;;5328:21;;;;5320:76;;;;-1:-1:-1;;;5320:76:2;;;;;;;:::i;:::-;5430:9;:13;;;;;;;;;;;-1:-1:-1;;;;;5430:19:2;;;;;;;;;;5452:20;;;5430:42;;5492:17;;;;;;;:27;;5452:20;;5430:9;5492:27;;5452:20;;5492:27;:::i;:::-;;;;-1:-1:-1;;5535:46:2;;;20435:25:10;;;20491:2;20476:18;;20469:34;;;-1:-1:-1;;;;;5535:46:2;;;;;;;;;;;;;;20408:18:10;5535:46:2;;;;;;;5592:68;5623:8;5633:4;5639:2;5643;5647:6;5655:4;5592:30;:68::i;:::-;5033:634;;4870:797;;;;;:::o;15025:193::-;15144:16;;;15158:1;15144:16;;;;;;;;;15091;;15119:22;;15144:16;;;;;;;;;;;;-1:-1:-1;15144:16:2;15119:41;;15181:7;15170:5;15176:1;15170:8;;;;;;;;:::i;:::-;;;;;;;;;;:18;15206:5;15025:193;-1:-1:-1;;15025:193:2:o;13496:725::-;-1:-1:-1;;;;;13703:13:2;;1465:19:0;:23;13699:516:2;;13738:72;;-1:-1:-1;;;13738:72:2;;-1:-1:-1;;;;;13738:38:2;;;;;:72;;13777:8;;13787:4;;13793:2;;13797:6;;13805:4;;13738:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13738:72:2;;;;;;;;-1:-1:-1;;13738:72:2;;;;;;;;;;;;:::i;:::-;;;13734:471;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;14081:6;14074:14;;-1:-1:-1;;;14074:14:2;;;;;;;;:::i;13734:471::-;;;14128:62;;-1:-1:-1;;;14128:62:2;;13184:2:10;14128:62:2;;;13166:21:10;13223:2;13203:18;;;13196:30;13262:34;13242:18;;;13235:62;-1:-1:-1;;;13313:18:10;;;13306:50;13373:19;;14128:62:2;13156:242:10;13734:471:2;-1:-1:-1;;;;;;13859:55:2;;-1:-1:-1;;;13859:55:2;13855:152;;13938:50;;-1:-1:-1;;;13938:50:2;;;;;;;:::i;14227:792::-;-1:-1:-1;;;;;14459:13:2;;1465:19:0;:23;14455:558:2;;14494:79;;-1:-1:-1;;;14494:79:2;;-1:-1:-1;;;;;14494:43:2;;;;;:79;;14538:8;;14548:4;;14554:3;;14559:7;;14568:4;;14494:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14494:79:2;;;;;;;;-1:-1:-1;;14494:79:2;;;;;;;;;;;;:::i;:::-;;;14490:513;;;;:::i;:::-;-1:-1:-1;;;;;;14652:60:2;;-1:-1:-1;;;14652:60:2;14648:157;;14736:50;;-1:-1:-1;;;14736:50:2;;;;;;;:::i;14:173:10:-;82:20;;-1:-1:-1;;;;;131:31:10;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:367::-;255:8;265:6;319:3;312:4;304:6;300:17;296:27;286:2;;337:1;334;327:12;286:2;-1:-1:-1;360:20:10;;403:18;392:30;;389:2;;;435:1;432;425:12;389:2;472:4;464:6;460:17;448:29;;532:3;525:4;515:6;512:1;508:14;500:6;496:27;492:38;489:47;486:2;;;549:1;546;539:12;486:2;276:283;;;;;:::o;564:735::-;618:5;671:3;664:4;656:6;652:17;648:27;638:2;;689:1;686;679:12;638:2;725:6;712:20;751:4;774:43;814:2;774:43;:::i;:::-;846:2;840:9;858:31;886:2;878:6;858:31;:::i;:::-;924:18;;;958:15;;;;-1:-1:-1;993:15:10;;;1043:1;1039:10;;;1027:23;;1023:32;;1020:41;-1:-1:-1;1017:2:10;;;1074:1;1071;1064:12;1017:2;1096:1;1106:163;1120:2;1117:1;1114:9;1106:163;;;1177:17;;1165:30;;1215:12;;;;1247;;;;1138:1;1131:9;1106:163;;;-1:-1:-1;1287:6:10;;628:671;-1:-1:-1;;;;;;;628:671:10:o;1304:555::-;1346:5;1399:3;1392:4;1384:6;1380:17;1376:27;1366:2;;1417:1;1414;1407:12;1366:2;1453:6;1440:20;1479:18;1475:2;1472:26;1469:2;;;1501:18;;:::i;:::-;1550:2;1544:9;1562:67;1617:2;1598:13;;-1:-1:-1;;1594:27:10;1623:4;1590:38;1544:9;1562:67;:::i;:::-;1653:2;1645:6;1638:18;1699:3;1692:4;1687:2;1679:6;1675:15;1671:26;1668:35;1665:2;;;1716:1;1713;1706:12;1665:2;1780;1773:4;1765:6;1761:17;1754:4;1746:6;1742:17;1729:54;1827:1;1803:15;;;1820:4;1799:26;1792:37;;;;1807:6;1356:503;-1:-1:-1;;;1356:503:10:o;1864:186::-;1923:6;1976:2;1964:9;1955:7;1951:23;1947:32;1944:2;;;1992:1;1989;1982:12;1944:2;2015:29;2034:9;2015:29;:::i;:::-;2005:39;1934:116;-1:-1:-1;;;1934:116:10:o;2055:260::-;2123:6;2131;2184:2;2172:9;2163:7;2159:23;2155:32;2152:2;;;2200:1;2197;2190:12;2152:2;2223:29;2242:9;2223:29;:::i;:::-;2213:39;;2271:38;2305:2;2294:9;2290:18;2271:38;:::i;:::-;2261:48;;2142:173;;;;;:::o;2320:943::-;2474:6;2482;2490;2498;2506;2559:3;2547:9;2538:7;2534:23;2530:33;2527:2;;;2576:1;2573;2566:12;2527:2;2599:29;2618:9;2599:29;:::i;:::-;2589:39;;2647:38;2681:2;2670:9;2666:18;2647:38;:::i;:::-;2637:48;;2736:2;2725:9;2721:18;2708:32;2759:18;2800:2;2792:6;2789:14;2786:2;;;2816:1;2813;2806:12;2786:2;2839:61;2892:7;2883:6;2872:9;2868:22;2839:61;:::i;:::-;2829:71;;2953:2;2942:9;2938:18;2925:32;2909:48;;2982:2;2972:8;2969:16;2966:2;;;2998:1;2995;2988:12;2966:2;3021:63;3076:7;3065:8;3054:9;3050:24;3021:63;:::i;:::-;3011:73;;3137:3;3126:9;3122:19;3109:33;3093:49;;3167:2;3157:8;3154:16;3151:2;;;3183:1;3180;3173:12;3151:2;;3206:51;3249:7;3238:8;3227:9;3223:24;3206:51;:::i;:::-;3196:61;;;2517:746;;;;;;;;:::o;3268:606::-;3372:6;3380;3388;3396;3404;3457:3;3445:9;3436:7;3432:23;3428:33;3425:2;;;3474:1;3471;3464:12;3425:2;3497:29;3516:9;3497:29;:::i;:::-;3487:39;;3545:38;3579:2;3568:9;3564:18;3545:38;:::i;:::-;3535:48;;3630:2;3619:9;3615:18;3602:32;3592:42;;3681:2;3670:9;3666:18;3653:32;3643:42;;3736:3;3725:9;3721:19;3708:33;3764:18;3756:6;3753:30;3750:2;;;3796:1;3793;3786:12;3750:2;3819:49;3860:7;3851:6;3840:9;3836:22;3819:49;:::i;3879:347::-;3944:6;3952;4005:2;3993:9;3984:7;3980:23;3976:32;3973:2;;;4021:1;4018;4011:12;3973:2;4044:29;4063:9;4044:29;:::i;:::-;4034:39;;4123:2;4112:9;4108:18;4095:32;4170:5;4163:13;4156:21;4149:5;4146:32;4136:2;;4192:1;4189;4182:12;4136:2;4215:5;4205:15;;;3963:263;;;;;:::o;4231:254::-;4299:6;4307;4360:2;4348:9;4339:7;4335:23;4331:32;4328:2;;;4376:1;4373;4366:12;4328:2;4399:29;4418:9;4399:29;:::i;:::-;4389:39;4475:2;4460:18;;;;4447:32;;-1:-1:-1;;;4318:167:10:o;4490:841::-;4621:6;4629;4637;4645;4653;4706:2;4694:9;4685:7;4681:23;4677:32;4674:2;;;4722:1;4719;4712:12;4674:2;4762:9;4749:23;4791:18;4832:2;4824:6;4821:14;4818:2;;;4848:1;4845;4838:12;4818:2;4887:70;4949:7;4940:6;4929:9;4925:22;4887:70;:::i;:::-;4976:8;;-1:-1:-1;4861:96:10;-1:-1:-1;5064:2:10;5049:18;;5036:32;;-1:-1:-1;5080:16:10;;;5077:2;;;5109:1;5106;5099:12;5077:2;;5148:72;5212:7;5201:8;5190:9;5186:24;5148:72;:::i;:::-;4664:667;;;;-1:-1:-1;5239:8:10;5321:2;5306:18;5293:32;;4664:667;-1:-1:-1;;;;4664:667:10:o;5336:505::-;5431:6;5439;5447;5500:2;5488:9;5479:7;5475:23;5471:32;5468:2;;;5516:1;5513;5506:12;5468:2;5556:9;5543:23;5589:18;5581:6;5578:30;5575:2;;;5621:1;5618;5611:12;5575:2;5660:70;5722:7;5713:6;5702:9;5698:22;5660:70;:::i;:::-;5749:8;;5634:96;;-1:-1:-1;5831:2:10;5816:18;;;;5803:32;;5458:383;-1:-1:-1;;;;5458:383:10:o;5846:1219::-;5964:6;5972;6025:2;6013:9;6004:7;6000:23;5996:32;5993:2;;;6041:1;6038;6031:12;5993:2;6081:9;6068:23;6110:18;6151:2;6143:6;6140:14;6137:2;;;6167:1;6164;6157:12;6137:2;6205:6;6194:9;6190:22;6180:32;;6250:7;6243:4;6239:2;6235:13;6231:27;6221:2;;6272:1;6269;6262:12;6221:2;6308;6295:16;6330:4;6353:43;6393:2;6353:43;:::i;:::-;6425:2;6419:9;6437:31;6465:2;6457:6;6437:31;:::i;:::-;6503:18;;;6537:15;;;;-1:-1:-1;6572:11:10;;;6614:1;6610:10;;;6602:19;;6598:28;;6595:41;-1:-1:-1;6592:2:10;;;6649:1;6646;6639:12;6592:2;6671:1;6662:10;;6681:169;6695:2;6692:1;6689:9;6681:169;;;6752:23;6771:3;6752:23;:::i;:::-;6740:36;;6713:1;6706:9;;;;;6796:12;;;;6828;;6681:169;;;-1:-1:-1;6869:6:10;-1:-1:-1;;6913:18:10;;6900:32;;-1:-1:-1;;6944:16:10;;;6941:2;;;6973:1;6970;6963:12;6941:2;;6996:63;7051:7;7040:8;7029:9;7025:24;6996:63;:::i;:::-;6986:73;;;5983:1082;;;;;:::o;7070:245::-;7128:6;7181:2;7169:9;7160:7;7156:23;7152:32;7149:2;;;7197:1;7194;7187:12;7149:2;7236:9;7223:23;7255:30;7279:5;7255:30;:::i;7320:249::-;7389:6;7442:2;7430:9;7421:7;7417:23;7413:32;7410:2;;;7458:1;7455;7448:12;7410:2;7490:9;7484:16;7509:30;7533:5;7509:30;:::i;7574:180::-;7633:6;7686:2;7674:9;7665:7;7661:23;7657:32;7654:2;;;7702:1;7699;7692:12;7654:2;-1:-1:-1;7725:23:10;;7644:110;-1:-1:-1;7644:110:10:o;7759:254::-;7827:6;7835;7888:2;7876:9;7867:7;7863:23;7859:32;7856:2;;;7904:1;7901;7894:12;7856:2;7940:9;7927:23;7917:33;;7969:38;8003:2;7992:9;7988:18;7969:38;:::i;8018:435::-;8071:3;8109:5;8103:12;8136:6;8131:3;8124:19;8162:4;8191:2;8186:3;8182:12;8175:19;;8228:2;8221:5;8217:14;8249:1;8259:169;8273:6;8270:1;8267:13;8259:169;;;8334:13;;8322:26;;8368:12;;;;8403:15;;;;8295:1;8288:9;8259:169;;;-1:-1:-1;8444:3:10;;8079:374;-1:-1:-1;;;;;8079:374:10:o;8458:257::-;8499:3;8537:5;8531:12;8564:6;8559:3;8552:19;8580:63;8636:6;8629:4;8624:3;8620:14;8613:4;8606:5;8602:16;8580:63;:::i;:::-;8697:2;8676:15;-1:-1:-1;;8672:29:10;8663:39;;;;8704:4;8659:50;;8507:208;-1:-1:-1;;8507:208:10:o;8720:1048::-;-1:-1:-1;;;9220:47:10;;9290:13;;9202:3;;9312:62;9290:13;9362:2;9353:12;;9346:4;9334:17;;9312:62;:::i;:::-;9438:66;9433:2;9393:16;;;9425:11;;;9418:87;-1:-1:-1;;;9529:2:10;9521:11;;9514:31;9570:13;;9592:63;9570:13;9641:2;9633:11;;9626:4;9614:17;;9592:63;:::i;:::-;-1:-1:-1;;;9715:2:10;9674:17;;;;9707:11;;;9700:35;9759:2;9751:11;;9210:558;-1:-1:-1;;;;9210:558:10:o;9773:448::-;10035:31;10030:3;10023:44;10005:3;10096:6;10090:13;10112:62;10167:6;10162:2;10157:3;10153:12;10146:4;10138:6;10134:17;10112:62;:::i;:::-;10194:16;;;;10212:2;10190:25;;10013:208;-1:-1:-1;;10013:208:10:o;10434:826::-;-1:-1:-1;;;;;10831:15:10;;;10813:34;;10883:15;;10878:2;10863:18;;10856:43;10793:3;10930:2;10915:18;;10908:31;;;10756:4;;10962:57;;10999:19;;10991:6;10962:57;:::i;:::-;11067:9;11059:6;11055:22;11050:2;11039:9;11035:18;11028:50;11101:44;11138:6;11130;11101:44;:::i;:::-;11087:58;;11194:9;11186:6;11182:22;11176:3;11165:9;11161:19;11154:51;11222:32;11247:6;11239;11222:32;:::i;:::-;11214:40;10765:495;-1:-1:-1;;;;;;;;10765:495:10:o;11265:560::-;-1:-1:-1;;;;;11562:15:10;;;11544:34;;11614:15;;11609:2;11594:18;;11587:43;11661:2;11646:18;;11639:34;;;11704:2;11689:18;;11682:34;;;11524:3;11747;11732:19;;11725:32;;;11487:4;;11774:45;;11799:19;;11791:6;11774:45;:::i;:::-;11766:53;11496:329;-1:-1:-1;;;;;;;11496:329:10:o;11830:261::-;12009:2;11998:9;11991:21;11972:4;12029:56;12081:2;12070:9;12066:18;12058:6;12029:56;:::i;12096:465::-;12353:2;12342:9;12335:21;12316:4;12379:56;12431:2;12420:9;12416:18;12408:6;12379:56;:::i;:::-;12483:9;12475:6;12471:22;12466:2;12455:9;12451:18;12444:50;12511:44;12548:6;12540;12511:44;:::i;:::-;12503:52;12325:236;-1:-1:-1;;;;;12325:236:10:o;12758:219::-;12907:2;12896:9;12889:21;12870:4;12927:44;12967:2;12956:9;12952:18;12944:6;12927:44;:::i;13403:404::-;13605:2;13587:21;;;13644:2;13624:18;;;13617:30;13683:34;13678:2;13663:18;;13656:62;-1:-1:-1;;;13749:2:10;13734:18;;13727:38;13797:3;13782:19;;13577:230::o;15446:401::-;15648:2;15630:21;;;15687:2;15667:18;;;15660:30;15726:34;15721:2;15706:18;;15699:62;-1:-1:-1;;;15792:2:10;15777:18;;15770:35;15837:3;15822:19;;15620:227::o;15852:331::-;16054:2;16036:21;;;16093:1;16073:18;;;16066:29;-1:-1:-1;;;16126:2:10;16111:18;;16104:38;16174:2;16159:18;;16026:157::o;17011:406::-;17213:2;17195:21;;;17252:2;17232:18;;;17225:30;17291:34;17286:2;17271:18;;17264:62;-1:-1:-1;;;17357:2:10;17342:18;;17335:40;17407:3;17392:19;;17185:232::o;17422:356::-;17624:2;17606:21;;;17643:18;;;17636:30;17702:34;17697:2;17682:18;;17675:62;17769:2;17754:18;;17596:182::o;20514:183::-;20574:4;20607:18;20599:6;20596:30;20593:2;;;20629:18;;:::i;:::-;-1:-1:-1;20674:1:10;20670:14;20686:4;20666:25;;20583:114::o;20702:128::-;20742:3;20773:1;20769:6;20766:1;20763:13;20760:2;;;20779:18;;:::i;:::-;-1:-1:-1;20815:9:10;;20750:80::o;20835:217::-;20875:1;20901;20891:2;;20945:10;20940:3;20936:20;20933:1;20926:31;20980:4;20977:1;20970:15;21008:4;21005:1;20998:15;20891:2;-1:-1:-1;21037:9:10;;20881:171::o;21057:168::-;21097:7;21163:1;21159;21155:6;21151:14;21148:1;21145:21;21140:1;21133:9;21126:17;21122:45;21119:2;;;21170:18;;:::i;:::-;-1:-1:-1;21210:9:10;;21109:116::o;21230:258::-;21302:1;21312:113;21326:6;21323:1;21320:13;21312:113;;;21402:11;;;21396:18;21383:11;;;21376:39;21348:2;21341:10;21312:113;;;21443:6;21440:1;21437:13;21434:2;;;21478:1;21469:6;21464:3;21460:16;21453:27;21434:2;;21283:205;;;:::o;21493:380::-;21572:1;21568:12;;;;21615;;;21636:2;;21690:4;21682:6;21678:17;21668:27;;21636:2;21743;21735:6;21732:14;21712:18;21709:38;21706:2;;;21789:10;21784:3;21780:20;21777:1;21770:31;21824:4;21821:1;21814:15;21852:4;21849:1;21842:15;21706:2;;21548:325;;;:::o;21878:249::-;21988:2;21969:13;;-1:-1:-1;;21965:27:10;21953:40;;22023:18;22008:34;;22044:22;;;22005:62;22002:2;;;22070:18;;:::i;:::-;22106:2;22099:22;-1:-1:-1;;21925:202:10:o;22132:135::-;22171:3;-1:-1:-1;;22192:17:10;;22189:2;;;22212:18;;:::i;:::-;-1:-1:-1;22259:1:10;22248:13;;22179:88::o;22272:127::-;22333:10;22328:3;22324:20;22321:1;22314:31;22364:4;22361:1;22354:15;22388:4;22385:1;22378:15;22404:127;22465:10;22460:3;22456:20;22453:1;22446:31;22496:4;22493:1;22486:15;22520:4;22517:1;22510:15;22536:127;22597:10;22592:3;22588:20;22585:1;22578:31;22628:4;22625:1;22618:15;22652:4;22649:1;22642:15;22668:179;22703:3;22745:1;22727:16;22724:23;22721:2;;;22791:1;22788;22785;22770:23;-1:-1:-1;22828:1:10;22822:8;22817:3;22813:18;22721:2;22711:136;:::o;22852:671::-;22891:3;22933:4;22915:16;22912:26;22909:2;;;22899:624;:::o;22909:2::-;22975;22969:9;-1:-1:-1;;23040:16:10;23036:25;;23033:1;22969:9;23012:50;23091:4;23085:11;23115:16;23150:18;23221:2;23214:4;23206:6;23202:17;23199:25;23194:2;23186:6;23183:14;23180:45;23177:2;;;23228:5;;;;;22899:624;:::o;23177:2::-;23265:6;23259:4;23255:17;23244:28;;23301:3;23295:10;23328:2;23320:6;23317:14;23314:2;;;23334:5;;;;;;22899:624;:::o;23314:2::-;23418;23399:16;23393:4;23389:27;23385:36;23378:4;23369:6;23364:3;23360:16;23356:27;23353:69;23350:2;;;23425:5;;;;;;22899:624;:::o;23350:2::-;23441:57;23492:4;23483:6;23475;23471:19;23467:30;23461:4;23441:57;:::i;:::-;-1:-1:-1;23514:3:10;;22899:624;-1:-1:-1;;;;;22899:624:10:o;23528:131::-;-1:-1:-1;;;;;;23602:32:10;;23592:43;;23582:2;;23649:1;23646;23639:12

Swarm Source

ipfs://3ff9d3bb0c53b458bf1f6b5ded3812c2859a0c8bf159f7eccb031951abfcdeb3

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

The OnChainMonkey Desserts are 100% ON CHAIN and in ONE transaction! These Desserts will stand the test of time. Or they can be eaten (burned) to create the Karma collection.OCM Collection: https://opensea.io/collection/onchainmonkey

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.