{
  "_format": "hh-sol-artifact-1",
  "contractName": "WitnetRandomness",
  "sourceName": "witnet-solidity-bridge/contracts/apps/WitnetRandomness.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract WitnetRequestBoard",
          "name": "_wrb",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "by",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "contract Clonable",
          "name": "self",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "contract Clonable",
          "name": "clone",
          "type": "address"
        }
      ],
      "name": "Cloned",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "prevBlock",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "witnetQueryId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "witnetRequestHash",
          "type": "bytes32"
        }
      ],
      "name": "Randomized",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "clone",
      "outputs": [
        {
          "internalType": "contract Clonable",
          "name": "_newInstance",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_salt",
          "type": "bytes32"
        }
      ],
      "name": "cloneDeterministic",
      "outputs": [
        {
          "internalType": "contract Clonable",
          "name": "_newInstance",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cloned",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_gasPrice",
          "type": "uint256"
        }
      ],
      "name": "estimateRandomizeFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_block",
          "type": "uint256"
        }
      ],
      "name": "getRandomizeData",
      "outputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_prevBlock",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_nextBlock",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_block",
          "type": "uint256"
        }
      ],
      "name": "getRandomnessAfter",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_block",
          "type": "uint256"
        }
      ],
      "name": "getRandomnessNextBlock",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_block",
          "type": "uint256"
        }
      ],
      "name": "getRandomnessPrevBlock",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_initData",
          "type": "bytes"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_block",
          "type": "uint256"
        }
      ],
      "name": "isRandomized",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "latestRandomizeBlock",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_range",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "_nonce",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_block",
          "type": "uint256"
        }
      ],
      "name": "random",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_range",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "_nonce",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_seed",
          "type": "bytes32"
        }
      ],
      "name": "random",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "randomize",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_usedFunds",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "self",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_block",
          "type": "uint256"
        }
      ],
      "name": "upgradeRandomizeFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_usedFunds",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "witnet",
      "outputs": [
        {
          "internalType": "contract WitnetRequestBoard",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "witnetRandomnessRequest",
      "outputs": [
        {
          "internalType": "contract WitnetRequestRandomness",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60c06040523073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50604051620070e3380380620070e383398181016040528101906200006d91906200023f565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000d890620002c6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250505060405162000127906200021a565b604051809103906000f08015801562000144573d6000803e3d6000fd5b506000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b8152600401620001df9190620002a9565b600060405180830381600087803b158015620001fa57600080fd5b505af11580156200020f573d6000803e3d6000fd5b50505050506200039d565b613cb0806200343383390190565b600081519050620002398162000383565b92915050565b60006020828403121562000258576200025762000355565b5b6000620002688482850162000228565b91505092915050565b6200027c81620002f9565b82525050565b600062000291601983620002e8565b91506200029e826200035a565b602082019050919050565b6000602082019050620002c0600083018462000271565b92915050565b60006020820190508181036000830152620002e18162000282565b9050919050565b600082825260208201905092915050565b6000620003068262000335565b9050919050565b60006200031a8262000335565b9050919050565b60006200032e826200030d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b7f5573696e675769746e65743a207a65726f206164647265737300000000000000600082015250565b6200038e8162000321565b81146200039a57600080fd5b50565b60805160601c60a05160601c6130086200042b60003960008181610960015281816109ca01528181610ecb01528181610fd301528181611507015261161001526000818161070301528181610cf501528181610da3015281816112c60152818161138f015281816114540152818161169301528181611763015281816119e10152611a9801526130086000f3fe6080604052600436106101095760003560e01c80639938fd0c11610095578063a60ee26811610064578063a60ee2681461038b578063daaa360c146103c8578063e35329f814610405578063e7d4a01614610435578063fb476cad1461047257610109565b80639938fd0c146102b85780639bc86fec146102e3578063a04daef014610320578063a3252f681461034b57610109565b806340b41daa116100dc57806340b41daa146101de578063439fab911461021b57806346d1d21a14610244578063699b328a1461026f5780637104ddb21461028d57610109565b806309ed46071461010e57806324cbbfc11461013957806336b651bb146101765780633b13e76e146101b3575b600080fd5b34801561011a57600080fd5b506101236104af565b6040516101309190612626565b60405180910390f35b34801561014557600080fd5b50610160600480360381019061015b919061219c565b6104c7565b60405161016d91906127d8565b60405180910390f35b34801561018257600080fd5b5061019d600480360381019061019891906120ef565b61050d565b6040516101aa9190612794565b60405180910390f35b3480156101bf57600080fd5b506101c861055c565b6040516101d59190612677565b60405180910390f35b3480156101ea57600080fd5b50610205600480360381019061020091906120ef565b610580565b6040516102129190612794565b60405180910390f35b34801561022757600080fd5b50610242600480360381019061023d9190612003565b61061c565b005b34801561025057600080fd5b50610259610701565b604051610266919061265c565b60405180910390f35b610277610725565b6040516102849190612794565b60405180910390f35b34801561029957600080fd5b506102a261095e565b6040516102af919061251c565b60405180910390f35b3480156102c457600080fd5b506102cd610982565b6040516102da9190612794565b60405180910390f35b3480156102ef57600080fd5b5061030a600480360381019061030591906120ef565b610988565b60405161031791906125a5565b60405180910390f35b34801561032c57600080fd5b506103356109c6565b60405161034291906125a5565b60405180910390f35b34801561035757600080fd5b50610372600480360381019061036d91906120ef565b610a1d565b6040516103829493929190612560565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad91906120ef565b610a7e565b6040516103bf9190612794565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea9190611fa9565b610a90565b6040516103fc9190612626565b60405180910390f35b61041f600480360381019061041a91906120ef565b610aab565b60405161042c9190612794565b60405180910390f35b34801561044157600080fd5b5061045c60048036038101906104579190612149565b610b40565b60405161046991906127d8565b60405180910390f35b34801561047e57600080fd5b50610499600480360381019061049491906120ef565b610bc7565b6040516104a691906125c0565b60405180910390f35b60006104b9610ec6565b90506104c48161104f565b90565b60006105048484336104d886610bc7565b6040516020016104e9929190612537565b60405160208183030381529060405280519060200120610b40565b90509392505050565b600080821161051f5761051e612c52565b5b600060015490508083116105525761054d8360026000848152602001908152602001600020600101546111ed565b610554565b805b915050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105fd576105f882600154611225565b610615565b60026000838152602001908152602001600020600201545b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906126b2565b60405180910390fd5b808060200190518101906106bf9190611f4f565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600043600154101561094a57600061075c60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611274565b80935081925050506000600260004381526020019081526020016000209050818160030181905550338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600154905080826001018190555043600260008381526020019081526020016000206002018190555043600181905550803373ffffffffffffffffffffffffffffffffffffffff167faf291bb4e1767569c77502edb6ad1009e856f57c09f214886c6becc9836c20c08560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166309bd5a606040518163ffffffff1660e01b815260040160206040518083038186803b15801561089957600080fd5b505afa1580156108ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d19190611fd6565b6040516108df9291906127af565b60405180910390a334841015610942573373ffffffffffffffffffffffffffffffffffffffff166108fc85346109159190612a52565b9081150290604051600060405180830381858888f19350505050158015610940573d6000803e3d6000fd5b505b50505061095a565b61095343610aab565b905061095b565b5b90565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b60008060026000848152602001908152602001600020905060008160030154141580156109be57506109bd8160030154611377565b5b915050919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415905090565b6000806000806000600260008781526020019081526020016000209050806003015493508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1694508060010154925080600201549150509193509193565b6000610a8982611450565b9050919050565b6000610a9b82611502565b9050610aa68161104f565b919050565b6000806002600084815260200190815260200160002090506000816003015414610adf57610adc816003015461168e565b91505b34821015610b3a573373ffffffffffffffffffffffffffffffffffffffff166108fc8334610b0d9190612a52565b9081150290604051600060405180830381858888f19350505050158015610b38573d6000803e3d6000fd5b505b50919050565b600080610b4c856117f8565b60ff610b589190612a86565b905060006001826002610b6b91906128da565b610b759190612a52565b8486604051602001610b889291906125db565b6040516020818303038152906040528051906020012060001c1690508160ff168663ffffffff1682610bba91906129f8565b901c925050509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610c3f57610c3c82610580565b91505b6000600260008481526020019081526020016000206003015490506000811415610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9590612732565b60405180910390fd5b610ca781611377565b610ce6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdd906126d2565b60405180910390fd5b6000610cf1826119d7565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a8604c1a826040518263ffffffff1660e01b8152600401610d4c9190612772565b60206040518083038186803b158015610d6457600080fd5b505afa158015610d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9c9190611f7c565b15610e53577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663cf62d115826040518263ffffffff1660e01b8152600401610dfa9190612772565b60206040518083038186803b158015610e1257600080fd5b505afa158015610e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4a9190611fd6565b92505050610ec1565b6000600260008681526020019081526020016000206002015490506000811415610eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea990612692565b60405180910390fd5b610ebb81610bc7565b93505050505b919050565b6000807f000000000000000000000000000000000000000000000000000000000000000090506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f0925050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb190612752565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ff376596be5039d6b2fb36fead4c8a370eae426e790a869be8db074ab608cc24860405160405180910390a45090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166309ed46076040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156110ba57600080fd5b505af11580156110ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f2919061204c565b90508073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b815260040161112d919061251c565b600060405180830381600087803b15801561114757600080fd5b505af115801561115b573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663439fab918260405160200161118c919061251c565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016111b79190612604565b600060405180830381600087803b1580156111d157600080fd5b505af11580156111e5573d6000803e3d6000fd5b505050505050565b600081831161121b576112168360026000858152602001908152602001600020600101546111ed565b61121d565b815b905092915050565b6000818310156112545761124f836002600085815260200190815260200160002060010154611225565b61126c565b60026000838152602001908152602001600020600201545b905092915050565b60008061127f611a94565b9050348111156112c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bb906126f2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b281a7bd82856040518363ffffffff1660e01b815260040161131e9190612641565b6020604051808303818588803b15801561133757600080fd5b505af115801561134b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611370919061211c565b9150915091565b60006002600381111561138d5761138c612cb0565b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636f07abcc846040518263ffffffff1660e01b81526004016113e69190612794565b60206040518083038186803b1580156113fe57600080fd5b505afa158015611412573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114369190612079565b600381111561144857611447612cb0565b5b149050919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2e87561836040518263ffffffff1660e01b81526004016114ab9190612794565b60206040518083038186803b1580156114c357600080fd5b505afa1580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb919061211c565b9050919050565b6000807f000000000000000000000000000000000000000000000000000000000000000090506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152836037826000f5925050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee90612712565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ff376596be5039d6b2fb36fead4c8a370eae426e790a869be8db074ab608cc24860405160405180910390a450919050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631dd27daf846040518263ffffffff1660e01b81526004016116ea9190612794565b60206040518083038186803b15801561170257600080fd5b505afa158015611716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173a919061211c565b90506000611746611a94565b905060008282111561176157828261175e9190612a52565b90505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166366bfdc7582876040518363ffffffff1660e01b81526004016117bb9190612794565b6000604051808303818588803b1580156117d457600080fd5b505af11580156117e8573d6000803e3d6000fd5b5050505050809350505050919050565b600080604051806104000160405280600060ff168152602001600960ff168152602001600160ff168152602001600a60ff168152602001600d60ff168152602001601560ff168152602001600260ff168152602001601d60ff168152602001600b60ff168152602001600e60ff168152602001601060ff168152602001601260ff168152602001601660ff168152602001601960ff168152602001600360ff168152602001601e60ff168152602001600860ff168152602001600c60ff168152602001601460ff168152602001601c60ff168152602001600f60ff168152602001601160ff168152602001601860ff168152602001600760ff168152602001601360ff168152602001601b60ff168152602001601760ff168152602001600660ff168152602001601a60ff168152602001600560ff168152602001600460ff168152602001601f60ff16815250905060018363ffffffff16901c8317925060028363ffffffff16901c8317925060048363ffffffff16901c8317925060088363ffffffff16901c8317925060108363ffffffff16901c8317925080601b6307c4acdd8563ffffffff166119ab91906129f8565b63ffffffff16901c63ffffffff16602081106119ca576119c9612cdf565b5b6020020151915050919050565b6119df611b44565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d4da69ac836040518263ffffffff1660e01b8152600401611a389190612794565b60006040518083038186803b158015611a5057600080fd5b505afa158015611a64573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611a8d91906120a6565b9050919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2e875613a6040518263ffffffff1660e01b8152600401611aef9190612794565b60206040518083038186803b158015611b0757600080fd5b505afa158015611b1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3f919061211c565b905090565b6040518060400160405280600015158152602001611b60611b66565b81525090565b6040518060c00160405280611b79611bbf565b8152602001600060ff168152602001600060ff168152602001600060ff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b604051806040016040528060608152602001600063ffffffff1681525090565b6000611bf2611bed84612818565b6127f3565b905082815260208101848484011115611c0e57611c0d612d4c565b5b611c19848285612bdf565b509392505050565b6000611c34611c2f84612818565b6127f3565b905082815260208101848484011115611c5057611c4f612d4c565b5b611c5b848285612bee565b509392505050565b600081519050611c7281612f0a565b92915050565b600081519050611c8781612f21565b92915050565b600081359050611c9c81612f38565b92915050565b600081519050611cb181612f38565b92915050565b600082601f830112611ccc57611ccb612d3d565b5b8135611cdc848260208601611bdf565b91505092915050565b600082601f830112611cfa57611cf9612d3d565b5b8151611d0a848260208601611c21565b91505092915050565b600081519050611d2281612f4f565b92915050565b600081519050611d3781612f66565b92915050565b600060408284031215611d5357611d52612d42565b5b611d5d60406127f3565b9050600082015167ffffffffffffffff811115611d7d57611d7c612d47565b5b611d8984828501611ce5565b6000830152506020611d9d84828501611f10565b60208301525092915050565b600060c08284031215611dbf57611dbe612d42565b5b611dc960c06127f3565b9050600082015167ffffffffffffffff811115611de957611de8612d47565b5b611df584828501611d3d565b6000830152506020611e0984828501611f3a565b6020830152506040611e1d84828501611f3a565b6040830152506060611e3184828501611f3a565b6060830152506080611e4584828501611f25565b60808301525060a0611e5984828501611f25565b60a08301525092915050565b600060408284031215611e7b57611e7a612d42565b5b611e8560406127f3565b90506000611e9584828501611c78565b600083015250602082015167ffffffffffffffff811115611eb957611eb8612d47565b5b611ec584828501611da9565b60208301525092915050565b600081359050611ee081612f76565b92915050565b600081519050611ef581612f76565b92915050565b600081359050611f0a81612f8d565b92915050565b600081519050611f1f81612f8d565b92915050565b600081519050611f3481612fa4565b92915050565b600081519050611f4981612fbb565b92915050565b600060208284031215611f6557611f64612d56565b5b6000611f7384828501611c63565b91505092915050565b600060208284031215611f9257611f91612d56565b5b6000611fa084828501611c78565b91505092915050565b600060208284031215611fbf57611fbe612d56565b5b6000611fcd84828501611c8d565b91505092915050565b600060208284031215611fec57611feb612d56565b5b6000611ffa84828501611ca2565b91505092915050565b60006020828403121561201957612018612d56565b5b600082013567ffffffffffffffff81111561203757612036612d51565b5b61204384828501611cb7565b91505092915050565b60006020828403121561206257612061612d56565b5b600061207084828501611d13565b91505092915050565b60006020828403121561208f5761208e612d56565b5b600061209d84828501611d28565b91505092915050565b6000602082840312156120bc576120bb612d56565b5b600082015167ffffffffffffffff8111156120da576120d9612d51565b5b6120e684828501611e65565b91505092915050565b60006020828403121561210557612104612d56565b5b600061211384828501611ed1565b91505092915050565b60006020828403121561213257612131612d56565b5b600061214084828501611ee6565b91505092915050565b60008060006060848603121561216257612161612d56565b5b600061217086828701611efb565b935050602061218186828701611ed1565b925050604061219286828701611c8d565b9150509250925092565b6000806000606084860312156121b5576121b4612d56565b5b60006121c386828701611efb565b93505060206121d486828701611ed1565b92505060406121e586828701611ed1565b9150509250925092565b6121f881612aba565b82525050565b61220781612ade565b82525050565b61221681612ade565b82525050565b61222581612aea565b82525050565b600061223682612849565b6122408185612854565b9350612250818560208601612bee565b61225981612d5b565b840191505092915050565b600061226f82612849565b6122798185612865565b9350612289818560208601612bee565b61229281612d5b565b840191505092915050565b6122a681612b61565b82525050565b6122b581612b73565b82525050565b6122c481612b85565b82525050565b6122d381612b97565b82525050565b60006122e6602283612876565b91506122f182612d79565b604082019050919050565b6000612309602583612876565b915061231482612dc8565b604082019050919050565b600061232c602383612876565b915061233782612e17565b604082019050919050565b600061234f601b83612876565b915061235a82612e66565b602082019050919050565b6000612372601883612876565b915061237d82612e8f565b602082019050919050565b6000612395602083612876565b91506123a082612eb8565b602082019050919050565b60006123b8601783612876565b91506123c382612ee1565b602082019050919050565b600060408301600083015184820360008601526123eb828261222b565b915050602083015161240060208601826124e0565b508091505092915050565b600060c083016000830151848203600086015261242882826123ce565b915050602083015161243d602086018261250d565b506040830151612450604086018261250d565b506060830151612463606086018261250d565b50608083015161247660808601826124fe565b5060a083015161248960a08601826124fe565b508091505092915050565b60006040830160008301516124ac60008601826121fe565b50602083015184820360208601526124c4828261240b565b9150508091505092915050565b6124da81612b26565b82525050565b6124e981612b30565b82525050565b6124f881612b30565b82525050565b61250781612b40565b82525050565b61251681612b54565b82525050565b600060208201905061253160008301846121ef565b92915050565b600060408201905061254c60008301856121ef565b612559602083018461221c565b9392505050565b600060808201905061257560008301876121ef565b61258260208301866124d1565b61258f60408301856124d1565b61259c60608301846124d1565b95945050505050565b60006020820190506125ba600083018461220d565b92915050565b60006020820190506125d5600083018461221c565b92915050565b60006040820190506125f0600083018561221c565b6125fd60208301846124d1565b9392505050565b6000602082019050818103600083015261261e8184612264565b905092915050565b600060208201905061263b600083018461229d565b92915050565b600060208201905061265660008301846122ac565b92915050565b600060208201905061267160008301846122bb565b92915050565b600060208201905061268c60008301846122ca565b92915050565b600060208201905081810360008301526126ab816122d9565b9050919050565b600060208201905081810360008301526126cb816122fc565b9050919050565b600060208201905081810360008301526126eb8161231f565b9050919050565b6000602082019050818103600083015261270b81612342565b9050919050565b6000602082019050818103600083015261272b81612365565b9050919050565b6000602082019050818103600083015261274b81612388565b9050919050565b6000602082019050818103600083015261276b816123ab565b9050919050565b6000602082019050818103600083015261278c8184612494565b905092915050565b60006020820190506127a960008301846124d1565b92915050565b60006040820190506127c460008301856124d1565b6127d1602083018461221c565b9392505050565b60006020820190506127ed60008301846124ef565b92915050565b60006127fd61280e565b90506128098282612c21565b919050565b6000604051905090565b600067ffffffffffffffff82111561283357612832612d0e565b5b61283c82612d5b565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000808291508390505b60018511156128d1578086048111156128ad576128ac612c81565b5b60018516156128bc5780820291505b80810290506128ca85612d6c565b9450612891565b94509492505050565b60006128e582612b26565b91506128f083612b54565b925061291d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612925565b905092915050565b60008261293557600190506129f1565b8161294357600090506129f1565b8160018114612959576002811461296357612992565b60019150506129f1565b60ff84111561297557612974612c81565b5b8360020a91508482111561298c5761298b612c81565b5b506129f1565b5060208310610133831016604e8410600b84101617156129c75782820a9050838111156129c2576129c1612c81565b5b6129f1565b6129d48484846001612887565b925090508184048111156129eb576129ea612c81565b5b81810290505b9392505050565b6000612a0382612b26565b9150612a0e83612b26565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612a4757612a46612c81565b5b828202905092915050565b6000612a5d82612b26565b9150612a6883612b26565b925082821015612a7b57612a7a612c81565b5b828203905092915050565b6000612a9182612b54565b9150612a9c83612b54565b925082821015612aaf57612aae612c81565b5b828203905092915050565b6000612ac582612b06565b9050919050565b6000612ad782612b06565b9050919050565b60008115159050919050565b6000819050919050565b6000612aff82612aba565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b6000612b6c82612ba9565b9050919050565b6000612b7e82612ba9565b9050919050565b6000612b9082612bbb565b9050919050565b6000612ba282612ba9565b9050919050565b6000612bb482612bcd565b9050919050565b6000612bc682612bcd565b9050919050565b6000612bd882612b06565b9050919050565b82818337600083830152505050565b60005b83811015612c0c578082015181840152602081019050612bf1565b83811115612c1b576000848401525b50505050565b612c2a82612d5b565b810181811067ffffffffffffffff82111715612c4957612c48612d0e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f5769746e657452616e646f6d6e6573733a206661756c74792072616e646f6d6960008201527f7a65000000000000000000000000000000000000000000000000000000000000602082015250565b7f5769746e657452616e646f6d6e6573733a20616c726561647920696e6974696160008201527f6c697a6564000000000000000000000000000000000000000000000000000000602082015250565b7f5769746e657452616e646f6d6e6573733a2070656e64696e672072616e646f6d60008201527f697a650000000000000000000000000000000000000000000000000000000000602082015250565b7f5573696e675769746e65743a2072657761726420746f6f206c6f770000000000600082015250565b7f436c6f6e61626c653a2043524541544532206661696c65640000000000000000600082015250565b7f5769746e657452616e646f6d6e6573733a206e6f742072616e646f6d697a6564600082015250565b7f436c6f6e61626c653a20435245415445206661696c6564000000000000000000600082015250565b612f1381612acc565b8114612f1e57600080fd5b50565b612f2a81612ade565b8114612f3557600080fd5b50565b612f4181612aea565b8114612f4c57600080fd5b50565b612f5881612af4565b8114612f6357600080fd5b50565b60048110612f7357600080fd5b50565b612f7f81612b26565b8114612f8a57600080fd5b50565b612f9681612b30565b8114612fa157600080fd5b50565b612fad81612b40565b8114612fb857600080fd5b50565b612fc481612b54565b8114612fcf57600080fd5b5056fea2646970667358221220f4691b938720c3e8f10b1b6d4c19bdf6f673f6bcd601a4aee2842c50207e6baa64736f6c6343000807003360a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000686200005c6200008e60201b60201c565b6200009660201b60201c565b62000088604051806020016040528060008152506200017e60201b60201c565b62001259565b600033905090565b6000620000a8620001cc60201b60201c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081620000df620001cc60201b60201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620001c96040518060400160405280601181526020017f0a0f120508021a01801a0210022202100b000000000000000000000000000000815250620001f460201b62000e261760201c565b50565b60007f375930152e1d0d102998be6e496b0cee86c9ecd0efef01014ecff169b17dfba7905090565b600062000206620001cc60201b60201c565b6001018054620002169062000f58565b9050146200025b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002529062000d78565b60405180910390fd5b6200026c816200028f60201b60201c565b6200028c620002806200008e60201b60201c565b6200009660201b60201c565b50565b6000815111620002a457620002a362000fc4565b5b80620002b5620001cc60201b60201c565b6001019080519060200190620002cd92919062000a17565b506000620002e0620001cc60201b60201c565b600401905060028160000160006101000a81548160ff021916908360ff16021790555060338160000160016101000a81548160ff021916908360ff160217905550633b9aca008160000160026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506207a12081600001600a6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506203d0908160000160126101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506200042b8160000160009054906101000a900460ff168260000160019054906101000a900460ff168360000160029054906101000a900467ffffffffffffffff1684600001600a9054906101000a900467ffffffffffffffff168560000160129054906101000a900467ffffffffffffffff166200042f60201b60201c565b5050565b60008267ffffffffffffffff16116200047f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004769062000d56565b60405180910390fd5b60018560ff1610158015620004985750607f8560ff1611155b620004da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004d19062000d9a565b60405180910390fd5b60338460ff1610158015620004f3575060638460ff1611155b62000535576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200052c9062000d34565b60405180910390fd5b633b9aca008367ffffffffffffffff16101562000589576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005809062000dbc565b60405180910390fd5b62000599620001cc60201b60201c565b600101620005b2601060f81b846200078860201b60201c565b620005c8601860f81b886200099a60201b60201c565b620005de602060f81b856200078860201b60201c565b620005f4602860f81b896200099a60201b60201c565b6200060a603060f81b896200078860201b60201c565b604051602001620006219695949392919062000cd0565b60405160208183030381529060405262000640620001cc60201b60201c565b60020190805190602001906200065892919062000a17565b50620007126200066d620001cc60201b60201c565b60020180546200067d9062000f58565b80601f0160208091040260200160405190810160405280929190818152602001828054620006ab9062000f58565b8015620006fc5780601f10620006d057610100808354040283529160200191620006fc565b820191906000526020600020905b815481529060010190602001808311620006de57829003601f168201915b5050505050620009b960201b62000e9c1760201c565b62000722620001cc60201b60201c565b600301819055503373ffffffffffffffffffffffffffffffffffffffff167f897a395aeb2699d9730b6377870654a5c371d6bb6dc4486cfc5c80eeafd095b086868686866040516200077995949392919062000dde565b60405180910390a25050505050565b606060008290506000600290505b607f8267ffffffffffffffff161115620007d25760078267ffffffffffffffff16901c9150600181620007ca919062000e77565b905062000796565b60008167ffffffffffffffff1667ffffffffffffffff811115620007fb57620007fa62001080565b5b6040519080825280601f01601f1916602001820160405280156200082e5781602001600182028036833780820191505090505b50905084925085816000815181106200084c576200084b62001051565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600190505b8267ffffffffffffffff168167ffffffffffffffff1610156200091f57607f841660801760f81b828267ffffffffffffffff1681518110620008c957620008c862001051565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060078467ffffffffffffffff16901c93508080620009169062000f8e565b91505062000882565b50607f60f81b8160018462000935919062000ebc565b67ffffffffffffffff168151811062000953576200095262001051565b5b6020010181815160f81c60f81b169150907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080935050505092915050565b6060620009b1838360ff166200078860201b60201c565b905092915050565b6000600282604051620009cd919062000cb7565b602060405180830381855afa158015620009eb573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019062000a10919062000ade565b9050919050565b82805462000a259062000f58565b90600052602060002090601f01602090048101928262000a49576000855562000a95565b82601f1062000a6457805160ff191683800117855562000a95565b8280016001018555821562000a95579182015b8281111562000a9457825182559160200191906001019062000a77565b5b50905062000aa4919062000aa8565b5090565b5b8082111562000ac357600081600090555060010162000aa9565b5090565b60008151905062000ad8816200123f565b92915050565b60006020828403121562000af75762000af6620010af565b5b600062000b078482850162000ac7565b91505092915050565b600062000b1d8262000e50565b62000b29818562000e5b565b935062000b3b81856020860162000f22565b80840191505092915050565b6000815462000b568162000f58565b62000b62818662000e5b565b9450600182166000811462000b80576001811462000b925762000bc9565b60ff1983168652818601935062000bc9565b62000b9d8562000e3b565b60005b8381101562000bc15781548189015260018201915060208101905062000ba0565b838801955050505b50505092915050565b600062000be1603d8362000e66565b915062000bee82620010b4565b604082019050919050565b600062000c0860258362000e66565b915062000c158262001103565b604082019050919050565b600062000c2f602f8362000e66565b915062000c3c8262001152565b604082019050919050565b600062000c56603c8362000e66565b915062000c6382620011a1565b604082019050919050565b600062000c7d603d8362000e66565b915062000c8a82620011f0565b604082019050919050565b62000ca08162000f01565b82525050565b62000cb18162000f15565b82525050565b600062000cc5828462000b10565b915081905092915050565b600062000cde828962000b47565b915062000cec828862000b10565b915062000cfa828762000b10565b915062000d08828662000b10565b915062000d16828562000b10565b915062000d24828462000b10565b9150819050979650505050505050565b6000602082019050818103600083015262000d4f8162000bd2565b9050919050565b6000602082019050818103600083015262000d718162000bf9565b9050919050565b6000602082019050818103600083015262000d938162000c20565b9050919050565b6000602082019050818103600083015262000db58162000c47565b9050919050565b6000602082019050818103600083015262000dd78162000c6e565b9050919050565b600060a08201905062000df5600083018862000ca6565b62000e04602083018762000ca6565b62000e13604083018662000c95565b62000e22606083018562000c95565b62000e31608083018462000c95565b9695505050505050565b60008190508160005260206000209050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600062000e848262000f01565b915062000e918362000f01565b92508267ffffffffffffffff0382111562000eb15762000eb062000ff3565b5b828201905092915050565b600062000ec98262000f01565b915062000ed68362000f01565b92508282101562000eec5762000eeb62000ff3565b5b828203905092915050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b60005b8381101562000f4257808201518184015260208101905062000f25565b8381111562000f52576000848401525b50505050565b6000600282049050600182168062000f7157607f821691505b6020821081141562000f885762000f8762001022565b5b50919050565b600062000f9b8262000f01565b915067ffffffffffffffff82141562000fb95762000fb862000ff3565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b7f5769746e6574526571756573744d616c6c6561626c65426173653a207769746e60008201527f657373696e6720636f6e73656e737573206f7574206f662072616e6765000000602082015250565b7f5769746e6574526571756573744d616c6c6561626c65426173653a206e6f207260008201527f6577617264000000000000000000000000000000000000000000000000000000602082015250565b7f5769746e6574526571756573744d616c6c6561626c65426173653a20616c726560008201527f61647920696e697469616c697a65640000000000000000000000000000000000602082015250565b7f5769746e6574526571756573744d616c6c6561626c65426173653a206e756d6260008201527f6572206f66207769746e6573736573206f7574206f662072616e676500000000602082015250565b7f5769746e6574526571756573744d616c6c6561626c65426173653a207769746e60008201527f657373696e6720636f6c6c61746572616c2062656c6f77203120574954000000602082015250565b6200124a8162000ef7565b81146200125657600080fd5b50565b60805160601c612a156200129b600039600081816106290152818161079101528181610f220152818161102a01528181611473015261157c0152612a156000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638da5cb5b116100a2578063daaa360c11610071578063daaa360c14610287578063ef53d97a146102b7578063f0940002146102d5578063f2fde38b146102f3578063ff21c3ba1461030f57610116565b80638da5cb5b14610213578063a04daef014610231578063d196c2e31461024f578063d9b9a9611461026b57610116565b806352d1902d116100e957806352d1902d146101915780636f2ddd93146101af5780637104ddb2146101cd578063715018a6146101eb5780638a481dad146101f557610116565b806309bd5a601461011b57806309ed460714610139578063439fab911461015757806348f9b83114610173575b600080fd5b61012361032b565b6040516101309190612113565b60405180910390f35b61014161033e565b60405161014e9190612172565b60405180910390f35b610171600480360381019061016c9190611be5565b61042d565b005b61017b61046e565b60405161018891906122ad565b60405180910390f35b610199610561565b6040516101a69190612113565b60405180910390f35b6101b761058c565b6040516101c4919061212e565b60405180910390f35b6101d5610627565b6040516101e291906120dd565b60405180910390f35b6101f361064b565b005b6101fd6106d3565b60405161020a91906122c8565b60405180910390f35b61021b61075a565b60405161022891906120dd565b60405180910390f35b61023961078d565b60405161024691906120f8565b60405180910390f35b61026960048036038101906102649190611c9b565b6107e4565b005b61028560048036038101906102809190611c2e565b610903565b005b6102a1600480360381019061029c9190611b8b565b610a1c565b6040516102ae9190612172565b60405180910390f35b6102bf610b0e565b6040516102cc91906122c8565b60405180910390f35b6102dd610b66565b6040516102ea919061212e565b60405180910390f35b61030d60048036038101906103089190611b5e565b610c01565b005b61032960048036038101906103249190611c5b565b610cf9565b005b6000610335610ef5565b60030154905090565b6000610348610f1d565b90508073ffffffffffffffffffffffffffffffffffffffff1663439fab9161036e610ef5565b6001016040518263ffffffff1660e01b815260040161038d9190612150565b600060405180830381600087803b1580156103a757600080fd5b505af11580156103bb573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b81526004016103f891906120dd565b600060405180830381600087803b15801561041257600080fd5b505af1158015610426573d6000803e3d6000fd5b5050505090565b61046b6040518060400160405280601181526020017f0a0f120508021a01801a0210022202100b000000000000000000000000000000815250610e26565b50565b61047661198f565b61047e610ef5565b6004016040518060a00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201600a9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160129054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050905090565b60007f851d0a92a3ad30295bef33afc69d6874779826b7789386b336e22621365ed2c260001b905090565b6060610596610ef5565b60010180546105a49061258a565b80601f01602080910402602001604051908101604052809291908181526020018280546105d09061258a565b801561061d5780601f106105f25761010080835404028352916020019161061d565b820191906000526020600020905b81548152906001019060200180831161060057829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6106536110a6565b73ffffffffffffffffffffffffffffffffffffffff1661067161075a565b73ffffffffffffffffffffffffffffffffffffffff16146106c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106be9061224d565b60405180910390fd5b6106d160006110ae565b565b6000806106de610ef5565b600401905080600001600a9054906101000a900467ffffffffffffffff168160000160129054906101000a900467ffffffffffffffff1660026107219190612417565b61072b91906123d9565b8160000160009054906101000a900460ff1660ff1661074a9190612417565b67ffffffffffffffff1691505090565b6000610764610ef5565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415905090565b6107ec6110a6565b73ffffffffffffffffffffffffffffffffffffffff1661080a61075a565b73ffffffffffffffffffffffffffffffffffffffff1614610860576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108579061224d565b60405180910390fd5b600061086a610ef5565b6004019050828160000160006101000a81548160ff021916908360ff160217905550818160000160016101000a81548160ff021916908360ff1602179055506108fe83838360000160029054906101000a900467ffffffffffffffff1684600001600a9054906101000a900467ffffffffffffffff168560000160129054906101000a900467ffffffffffffffff16611186565b505050565b61090b6110a6565b73ffffffffffffffffffffffffffffffffffffffff1661092961075a565b73ffffffffffffffffffffffffffffffffffffffff161461097f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109769061224d565b60405180910390fd5b6000610989610ef5565b6004019050818160000160026101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610a188160000160009054906101000a900460ff168260000160019054906101000a900460ff168484600001600a9054906101000a900467ffffffffffffffff168560000160129054906101000a900467ffffffffffffffff16611186565b5050565b6000610a278261146e565b90508073ffffffffffffffffffffffffffffffffffffffff1663439fab91610a4d610ef5565b6001016040518263ffffffff1660e01b8152600401610a6c9190612150565b600060405180830381600087803b158015610a8657600080fd5b505af1158015610a9a573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b8152600401610ad791906120dd565b600060405180830381600087803b158015610af157600080fd5b505af1158015610b05573d6000803e3d6000fd5b50505050919050565b600080610b19610ef5565b60040190508060000160029054906101000a900467ffffffffffffffff168160000160009054906101000a900460ff1660ff16610b569190612417565b67ffffffffffffffff1691505090565b6060610b70610ef5565b6002018054610b7e9061258a565b80601f0160208091040260200160405190810160405280929190818152602001828054610baa9061258a565b8015610bf75780601f10610bcc57610100808354040283529160200191610bf7565b820191906000526020600020905b815481529060010190602001808311610bda57829003601f168201915b5050505050905090565b610c096110a6565b73ffffffffffffffffffffffffffffffffffffffff16610c2761075a565b73ffffffffffffffffffffffffffffffffffffffff1614610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c749061224d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce49061218d565b60405180910390fd5b610cf6816110ae565b50565b610d016110a6565b73ffffffffffffffffffffffffffffffffffffffff16610d1f61075a565b73ffffffffffffffffffffffffffffffffffffffff1614610d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6c9061224d565b60405180910390fd5b6000610d7f610ef5565b60040190508281600001600a6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550818160000160126101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610e218160000160009054906101000a900460ff168260000160019054906101000a900460ff168360000160029054906101000a900467ffffffffffffffff168686611186565b505050565b6000610e30610ef5565b6001018054610e3e9061258a565b905014610e80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e779061220d565b60405180910390fd5b610e89816115fa565b610e99610e946110a6565b6110ae565b50565b6000600282604051610eae919061206e565b602060405180830381855afa158015610ecb573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610eee9190611bb8565b9050919050565b60007f375930152e1d0d102998be6e496b0cee86c9ecd0efef01014ecff169b17dfba7905090565b6000807f000000000000000000000000000000000000000000000000000000000000000090506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f0925050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611011576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110089061228d565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ff376596be5039d6b2fb36fead4c8a370eae426e790a869be8db074ab608cc24860405160405180910390a45090565b600033905090565b60006110b8610ef5565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816110e7610ef5565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008267ffffffffffffffff16116111d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ca906121cd565b60405180910390fd5b60018560ff16101580156111eb5750607f8560ff1611155b61122a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112219061222d565b60405180910390fd5b60338460ff1610158015611242575060638460ff1611155b611281576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611278906121ad565b60405180910390fd5b633b9aca008367ffffffffffffffff1610156112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c99061226d565b60405180910390fd5b6112da610ef5565b6001016112eb601060f81b8461177d565b6112f9601860f81b88611978565b611307602060f81b8561177d565b611315602860f81b89611978565b611323603060f81b8961177d565b60405160200161133896959493929190612085565b60405160208183030381529060405261134f610ef5565b60020190805190602001906113659291906119e2565b50611402611371610ef5565b600201805461137f9061258a565b80601f01602080910402602001604051908101604052809291908181526020018280546113ab9061258a565b80156113f85780601f106113cd576101008083540402835291602001916113f8565b820191906000526020600020905b8154815290600101906020018083116113db57829003601f168201915b5050505050610e9c565b61140a610ef5565b600301819055503373ffffffffffffffffffffffffffffffffffffffff167f897a395aeb2699d9730b6377870654a5c371d6bb6dc4486cfc5c80eeafd095b0868686868660405161145f9594939291906122e3565b60405180910390a25050505050565b6000807f000000000000000000000000000000000000000000000000000000000000000090506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152836037826000f5925050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a906121ed565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ff376596be5039d6b2fb36fead4c8a370eae426e790a869be8db074ab608cc24860405160405180910390a450919050565b600081511161160c5761160b61261e565b5b80611615610ef5565b600101908051906020019061162b9291906119e2565b506000611636610ef5565b600401905060028160000160006101000a81548160ff021916908360ff16021790555060338160000160016101000a81548160ff021916908360ff160217905550633b9aca008160000160026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506207a12081600001600a6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506203d0908160000160126101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506117798160000160009054906101000a900460ff168260000160019054906101000a900460ff168360000160029054906101000a900467ffffffffffffffff1684600001600a9054906101000a900467ffffffffffffffff168560000160129054906101000a900467ffffffffffffffff16611186565b5050565b606060008290506000600290505b607f8267ffffffffffffffff1611156117c35760078267ffffffffffffffff16901c91506001816117bc91906123d9565b905061178b565b60008167ffffffffffffffff1667ffffffffffffffff8111156117e9576117e86126da565b5b6040519080825280601f01601f19166020018201604052801561181b5781602001600182028036833780820191505090505b5090508492508581600081518110611836576118356126ab565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600190505b8267ffffffffffffffff168167ffffffffffffffff16101561190257607f841660801760f81b828267ffffffffffffffff16815181106118af576118ae6126ab565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060078467ffffffffffffffff16901c935080806118fa906125ed565b91505061186c565b50607f60f81b816001846119169190612459565b67ffffffffffffffff1681518110611931576119306126ab565b5b6020010181815160f81c60f81b169150907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080935050505092915050565b6060611987838360ff1661177d565b905092915050565b6040518060a00160405280600060ff168152602001600060ff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b8280546119ee9061258a565b90600052602060002090601f016020900481019282611a105760008555611a57565b82601f10611a2957805160ff1916838001178555611a57565b82800160010185558215611a57579182015b82811115611a56578251825591602001919060010190611a3b565b5b509050611a649190611a68565b5090565b5b80821115611a81576000816000905550600101611a69565b5090565b6000611a98611a938461235b565b612336565b905082815260208101848484011115611ab457611ab361270e565b5b611abf848285612548565b509392505050565b600081359050611ad681612983565b92915050565b600081359050611aeb8161299a565b92915050565b600081519050611b008161299a565b92915050565b600082601f830112611b1b57611b1a612709565b5b8135611b2b848260208601611a85565b91505092915050565b600081359050611b43816129b1565b92915050565b600081359050611b58816129c8565b92915050565b600060208284031215611b7457611b73612718565b5b6000611b8284828501611ac7565b91505092915050565b600060208284031215611ba157611ba0612718565b5b6000611baf84828501611adc565b91505092915050565b600060208284031215611bce57611bcd612718565b5b6000611bdc84828501611af1565b91505092915050565b600060208284031215611bfb57611bfa612718565b5b600082013567ffffffffffffffff811115611c1957611c18612713565b5b611c2584828501611b06565b91505092915050565b600060208284031215611c4457611c43612718565b5b6000611c5284828501611b34565b91505092915050565b60008060408385031215611c7257611c71612718565b5b6000611c8085828601611b34565b9250506020611c9185828601611b34565b9150509250929050565b60008060408385031215611cb257611cb1612718565b5b6000611cc085828601611b49565b9250506020611cd185828601611b49565b9150509250929050565b611ce48161248d565b82525050565b611cf38161249f565b82525050565b611d02816124ab565b82525050565b6000611d13826123a1565b611d1d81856123ac565b9350611d2d818560208601612557565b611d368161271d565b840191505092915050565b6000611d4c826123a1565b611d5681856123bd565b9350611d66818560208601612557565b80840191505092915050565b60008154611d7f8161258a565b611d8981866123ac565b94506001821660008114611da45760018114611db657611de9565b60ff1983168652602086019350611de9565b611dbf8561238c565b60005b83811015611de157815481890152600182019150602081019050611dc2565b808801955050505b50505092915050565b60008154611dff8161258a565b611e0981866123bd565b94506001821660008114611e245760018114611e3557611e68565b60ff19831686528186019350611e68565b611e3e8561238c565b60005b83811015611e6057815481890152600182019150602081019050611e41565b838801955050505b50505092915050565b611e7a81612512565b82525050565b6000611e8d6026836123c8565b9150611e988261272e565b604082019050919050565b6000611eb0603d836123c8565b9150611ebb8261277d565b604082019050919050565b6000611ed36025836123c8565b9150611ede826127cc565b604082019050919050565b6000611ef66018836123c8565b9150611f018261281b565b602082019050919050565b6000611f19602f836123c8565b9150611f2482612844565b604082019050919050565b6000611f3c603c836123c8565b9150611f4782612893565b604082019050919050565b6000611f5f6020836123c8565b9150611f6a826128e2565b602082019050919050565b6000611f82603d836123c8565b9150611f8d8261290b565b604082019050919050565b6000611fa56017836123c8565b9150611fb08261295a565b602082019050919050565b60a082016000820151611fd16000850182612050565b506020820151611fe46020850182612050565b506040820151611ff76040850182612032565b50606082015161200a6060850182612032565b50608082015161201d6080850182612032565b50505050565b61202c816124b5565b82525050565b61203b816124f1565b82525050565b61204a816124f1565b82525050565b61205981612505565b82525050565b61206881612505565b82525050565b600061207a8284611d41565b915081905092915050565b60006120918289611df2565b915061209d8288611d41565b91506120a98287611d41565b91506120b58286611d41565b91506120c18285611d41565b91506120cd8284611d41565b9150819050979650505050505050565b60006020820190506120f26000830184611cdb565b92915050565b600060208201905061210d6000830184611cea565b92915050565b60006020820190506121286000830184611cf9565b92915050565b600060208201905081810360008301526121488184611d08565b905092915050565b6000602082019050818103600083015261216a8184611d72565b905092915050565b60006020820190506121876000830184611e71565b92915050565b600060208201905081810360008301526121a681611e80565b9050919050565b600060208201905081810360008301526121c681611ea3565b9050919050565b600060208201905081810360008301526121e681611ec6565b9050919050565b6000602082019050818103600083015261220681611ee9565b9050919050565b6000602082019050818103600083015261222681611f0c565b9050919050565b6000602082019050818103600083015261224681611f2f565b9050919050565b6000602082019050818103600083015261226681611f52565b9050919050565b6000602082019050818103600083015261228681611f75565b9050919050565b600060208201905081810360008301526122a681611f98565b9050919050565b600060a0820190506122c26000830184611fbb565b92915050565b60006020820190506122dd6000830184612023565b92915050565b600060a0820190506122f8600083018861205f565b612305602083018761205f565b6123126040830186612041565b61231f6060830185612041565b61232c6080830184612041565b9695505050505050565b6000612340612351565b905061234c82826125bc565b919050565b6000604051905090565b600067ffffffffffffffff821115612376576123756126da565b5b61237f8261271d565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006123e4826124f1565b91506123ef836124f1565b92508267ffffffffffffffff0382111561240c5761240b61264d565b5b828201905092915050565b6000612422826124f1565b915061242d836124f1565b92508167ffffffffffffffff048311821515161561244e5761244d61264d565b5b828202905092915050565b6000612464826124f1565b915061246f836124f1565b9250828210156124825761248161264d565b5b828203905092915050565b6000612498826124d1565b9050919050565b60008115159050919050565b6000819050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b600061251d82612524565b9050919050565b600061252f82612536565b9050919050565b6000612541826124d1565b9050919050565b82818337600083830152505050565b60005b8381101561257557808201518184015260208101905061255a565b83811115612584576000848401525b50505050565b600060028204905060018216806125a257607f821691505b602082108114156125b6576125b561267c565b5b50919050565b6125c58261271d565b810181811067ffffffffffffffff821117156125e4576125e36126da565b5b80604052505050565b60006125f8826124f1565b915067ffffffffffffffff8214156126135761261261264d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5769746e6574526571756573744d616c6c6561626c65426173653a207769746e60008201527f657373696e6720636f6e73656e737573206f7574206f662072616e6765000000602082015250565b7f5769746e6574526571756573744d616c6c6561626c65426173653a206e6f207260008201527f6577617264000000000000000000000000000000000000000000000000000000602082015250565b7f436c6f6e61626c653a2043524541544532206661696c65640000000000000000600082015250565b7f5769746e6574526571756573744d616c6c6561626c65426173653a20616c726560008201527f61647920696e697469616c697a65640000000000000000000000000000000000602082015250565b7f5769746e6574526571756573744d616c6c6561626c65426173653a206e756d6260008201527f6572206f66207769746e6573736573206f7574206f662072616e676500000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5769746e6574526571756573744d616c6c6561626c65426173653a207769746e60008201527f657373696e6720636f6c6c61746572616c2062656c6f77203120574954000000602082015250565b7f436c6f6e61626c653a20435245415445206661696c6564000000000000000000600082015250565b61298c8161248d565b811461299757600080fd5b50565b6129a3816124ab565b81146129ae57600080fd5b50565b6129ba816124f1565b81146129c557600080fd5b50565b6129d181612505565b81146129dc57600080fd5b5056fea264697066735822122018d3be95fdcbd8bc6f0654dc2eb3dcdc04b923b60a7642bd2f454937f279d0f064736f6c63430008070033",
  "deployedBytecode": "0x6080604052600436106101095760003560e01c80639938fd0c11610095578063a60ee26811610064578063a60ee2681461038b578063daaa360c146103c8578063e35329f814610405578063e7d4a01614610435578063fb476cad1461047257610109565b80639938fd0c146102b85780639bc86fec146102e3578063a04daef014610320578063a3252f681461034b57610109565b806340b41daa116100dc57806340b41daa146101de578063439fab911461021b57806346d1d21a14610244578063699b328a1461026f5780637104ddb21461028d57610109565b806309ed46071461010e57806324cbbfc11461013957806336b651bb146101765780633b13e76e146101b3575b600080fd5b34801561011a57600080fd5b506101236104af565b6040516101309190612626565b60405180910390f35b34801561014557600080fd5b50610160600480360381019061015b919061219c565b6104c7565b60405161016d91906127d8565b60405180910390f35b34801561018257600080fd5b5061019d600480360381019061019891906120ef565b61050d565b6040516101aa9190612794565b60405180910390f35b3480156101bf57600080fd5b506101c861055c565b6040516101d59190612677565b60405180910390f35b3480156101ea57600080fd5b50610205600480360381019061020091906120ef565b610580565b6040516102129190612794565b60405180910390f35b34801561022757600080fd5b50610242600480360381019061023d9190612003565b61061c565b005b34801561025057600080fd5b50610259610701565b604051610266919061265c565b60405180910390f35b610277610725565b6040516102849190612794565b60405180910390f35b34801561029957600080fd5b506102a261095e565b6040516102af919061251c565b60405180910390f35b3480156102c457600080fd5b506102cd610982565b6040516102da9190612794565b60405180910390f35b3480156102ef57600080fd5b5061030a600480360381019061030591906120ef565b610988565b60405161031791906125a5565b60405180910390f35b34801561032c57600080fd5b506103356109c6565b60405161034291906125a5565b60405180910390f35b34801561035757600080fd5b50610372600480360381019061036d91906120ef565b610a1d565b6040516103829493929190612560565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad91906120ef565b610a7e565b6040516103bf9190612794565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea9190611fa9565b610a90565b6040516103fc9190612626565b60405180910390f35b61041f600480360381019061041a91906120ef565b610aab565b60405161042c9190612794565b60405180910390f35b34801561044157600080fd5b5061045c60048036038101906104579190612149565b610b40565b60405161046991906127d8565b60405180910390f35b34801561047e57600080fd5b50610499600480360381019061049491906120ef565b610bc7565b6040516104a691906125c0565b60405180910390f35b60006104b9610ec6565b90506104c48161104f565b90565b60006105048484336104d886610bc7565b6040516020016104e9929190612537565b60405160208183030381529060405280519060200120610b40565b90509392505050565b600080821161051f5761051e612c52565b5b600060015490508083116105525761054d8360026000848152602001908152602001600020600101546111ed565b610554565b805b915050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105fd576105f882600154611225565b610615565b60026000838152602001908152602001600020600201545b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906126b2565b60405180910390fd5b808060200190518101906106bf9190611f4f565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600043600154101561094a57600061075c60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611274565b80935081925050506000600260004381526020019081526020016000209050818160030181905550338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600154905080826001018190555043600260008381526020019081526020016000206002018190555043600181905550803373ffffffffffffffffffffffffffffffffffffffff167faf291bb4e1767569c77502edb6ad1009e856f57c09f214886c6becc9836c20c08560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166309bd5a606040518163ffffffff1660e01b815260040160206040518083038186803b15801561089957600080fd5b505afa1580156108ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d19190611fd6565b6040516108df9291906127af565b60405180910390a334841015610942573373ffffffffffffffffffffffffffffffffffffffff166108fc85346109159190612a52565b9081150290604051600060405180830381858888f19350505050158015610940573d6000803e3d6000fd5b505b50505061095a565b61095343610aab565b905061095b565b5b90565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b60008060026000848152602001908152602001600020905060008160030154141580156109be57506109bd8160030154611377565b5b915050919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415905090565b6000806000806000600260008781526020019081526020016000209050806003015493508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1694508060010154925080600201549150509193509193565b6000610a8982611450565b9050919050565b6000610a9b82611502565b9050610aa68161104f565b919050565b6000806002600084815260200190815260200160002090506000816003015414610adf57610adc816003015461168e565b91505b34821015610b3a573373ffffffffffffffffffffffffffffffffffffffff166108fc8334610b0d9190612a52565b9081150290604051600060405180830381858888f19350505050158015610b38573d6000803e3d6000fd5b505b50919050565b600080610b4c856117f8565b60ff610b589190612a86565b905060006001826002610b6b91906128da565b610b759190612a52565b8486604051602001610b889291906125db565b6040516020818303038152906040528051906020012060001c1690508160ff168663ffffffff1682610bba91906129f8565b901c925050509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610c3f57610c3c82610580565b91505b6000600260008481526020019081526020016000206003015490506000811415610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9590612732565b60405180910390fd5b610ca781611377565b610ce6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdd906126d2565b60405180910390fd5b6000610cf1826119d7565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a8604c1a826040518263ffffffff1660e01b8152600401610d4c9190612772565b60206040518083038186803b158015610d6457600080fd5b505afa158015610d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9c9190611f7c565b15610e53577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663cf62d115826040518263ffffffff1660e01b8152600401610dfa9190612772565b60206040518083038186803b158015610e1257600080fd5b505afa158015610e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4a9190611fd6565b92505050610ec1565b6000600260008681526020019081526020016000206002015490506000811415610eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea990612692565b60405180910390fd5b610ebb81610bc7565b93505050505b919050565b6000807f000000000000000000000000000000000000000000000000000000000000000090506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f0925050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb190612752565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ff376596be5039d6b2fb36fead4c8a370eae426e790a869be8db074ab608cc24860405160405180910390a45090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166309ed46076040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156110ba57600080fd5b505af11580156110ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f2919061204c565b90508073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b815260040161112d919061251c565b600060405180830381600087803b15801561114757600080fd5b505af115801561115b573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663439fab918260405160200161118c919061251c565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016111b79190612604565b600060405180830381600087803b1580156111d157600080fd5b505af11580156111e5573d6000803e3d6000fd5b505050505050565b600081831161121b576112168360026000858152602001908152602001600020600101546111ed565b61121d565b815b905092915050565b6000818310156112545761124f836002600085815260200190815260200160002060010154611225565b61126c565b60026000838152602001908152602001600020600201545b905092915050565b60008061127f611a94565b9050348111156112c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bb906126f2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b281a7bd82856040518363ffffffff1660e01b815260040161131e9190612641565b6020604051808303818588803b15801561133757600080fd5b505af115801561134b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611370919061211c565b9150915091565b60006002600381111561138d5761138c612cb0565b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636f07abcc846040518263ffffffff1660e01b81526004016113e69190612794565b60206040518083038186803b1580156113fe57600080fd5b505afa158015611412573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114369190612079565b600381111561144857611447612cb0565b5b149050919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2e87561836040518263ffffffff1660e01b81526004016114ab9190612794565b60206040518083038186803b1580156114c357600080fd5b505afa1580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb919061211c565b9050919050565b6000807f000000000000000000000000000000000000000000000000000000000000000090506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152836037826000f5925050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee90612712565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ff376596be5039d6b2fb36fead4c8a370eae426e790a869be8db074ab608cc24860405160405180910390a450919050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631dd27daf846040518263ffffffff1660e01b81526004016116ea9190612794565b60206040518083038186803b15801561170257600080fd5b505afa158015611716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173a919061211c565b90506000611746611a94565b905060008282111561176157828261175e9190612a52565b90505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166366bfdc7582876040518363ffffffff1660e01b81526004016117bb9190612794565b6000604051808303818588803b1580156117d457600080fd5b505af11580156117e8573d6000803e3d6000fd5b5050505050809350505050919050565b600080604051806104000160405280600060ff168152602001600960ff168152602001600160ff168152602001600a60ff168152602001600d60ff168152602001601560ff168152602001600260ff168152602001601d60ff168152602001600b60ff168152602001600e60ff168152602001601060ff168152602001601260ff168152602001601660ff168152602001601960ff168152602001600360ff168152602001601e60ff168152602001600860ff168152602001600c60ff168152602001601460ff168152602001601c60ff168152602001600f60ff168152602001601160ff168152602001601860ff168152602001600760ff168152602001601360ff168152602001601b60ff168152602001601760ff168152602001600660ff168152602001601a60ff168152602001600560ff168152602001600460ff168152602001601f60ff16815250905060018363ffffffff16901c8317925060028363ffffffff16901c8317925060048363ffffffff16901c8317925060088363ffffffff16901c8317925060108363ffffffff16901c8317925080601b6307c4acdd8563ffffffff166119ab91906129f8565b63ffffffff16901c63ffffffff16602081106119ca576119c9612cdf565b5b6020020151915050919050565b6119df611b44565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d4da69ac836040518263ffffffff1660e01b8152600401611a389190612794565b60006040518083038186803b158015611a5057600080fd5b505afa158015611a64573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611a8d91906120a6565b9050919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2e875613a6040518263ffffffff1660e01b8152600401611aef9190612794565b60206040518083038186803b158015611b0757600080fd5b505afa158015611b1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3f919061211c565b905090565b6040518060400160405280600015158152602001611b60611b66565b81525090565b6040518060c00160405280611b79611bbf565b8152602001600060ff168152602001600060ff168152602001600060ff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b604051806040016040528060608152602001600063ffffffff1681525090565b6000611bf2611bed84612818565b6127f3565b905082815260208101848484011115611c0e57611c0d612d4c565b5b611c19848285612bdf565b509392505050565b6000611c34611c2f84612818565b6127f3565b905082815260208101848484011115611c5057611c4f612d4c565b5b611c5b848285612bee565b509392505050565b600081519050611c7281612f0a565b92915050565b600081519050611c8781612f21565b92915050565b600081359050611c9c81612f38565b92915050565b600081519050611cb181612f38565b92915050565b600082601f830112611ccc57611ccb612d3d565b5b8135611cdc848260208601611bdf565b91505092915050565b600082601f830112611cfa57611cf9612d3d565b5b8151611d0a848260208601611c21565b91505092915050565b600081519050611d2281612f4f565b92915050565b600081519050611d3781612f66565b92915050565b600060408284031215611d5357611d52612d42565b5b611d5d60406127f3565b9050600082015167ffffffffffffffff811115611d7d57611d7c612d47565b5b611d8984828501611ce5565b6000830152506020611d9d84828501611f10565b60208301525092915050565b600060c08284031215611dbf57611dbe612d42565b5b611dc960c06127f3565b9050600082015167ffffffffffffffff811115611de957611de8612d47565b5b611df584828501611d3d565b6000830152506020611e0984828501611f3a565b6020830152506040611e1d84828501611f3a565b6040830152506060611e3184828501611f3a565b6060830152506080611e4584828501611f25565b60808301525060a0611e5984828501611f25565b60a08301525092915050565b600060408284031215611e7b57611e7a612d42565b5b611e8560406127f3565b90506000611e9584828501611c78565b600083015250602082015167ffffffffffffffff811115611eb957611eb8612d47565b5b611ec584828501611da9565b60208301525092915050565b600081359050611ee081612f76565b92915050565b600081519050611ef581612f76565b92915050565b600081359050611f0a81612f8d565b92915050565b600081519050611f1f81612f8d565b92915050565b600081519050611f3481612fa4565b92915050565b600081519050611f4981612fbb565b92915050565b600060208284031215611f6557611f64612d56565b5b6000611f7384828501611c63565b91505092915050565b600060208284031215611f9257611f91612d56565b5b6000611fa084828501611c78565b91505092915050565b600060208284031215611fbf57611fbe612d56565b5b6000611fcd84828501611c8d565b91505092915050565b600060208284031215611fec57611feb612d56565b5b6000611ffa84828501611ca2565b91505092915050565b60006020828403121561201957612018612d56565b5b600082013567ffffffffffffffff81111561203757612036612d51565b5b61204384828501611cb7565b91505092915050565b60006020828403121561206257612061612d56565b5b600061207084828501611d13565b91505092915050565b60006020828403121561208f5761208e612d56565b5b600061209d84828501611d28565b91505092915050565b6000602082840312156120bc576120bb612d56565b5b600082015167ffffffffffffffff8111156120da576120d9612d51565b5b6120e684828501611e65565b91505092915050565b60006020828403121561210557612104612d56565b5b600061211384828501611ed1565b91505092915050565b60006020828403121561213257612131612d56565b5b600061214084828501611ee6565b91505092915050565b60008060006060848603121561216257612161612d56565b5b600061217086828701611efb565b935050602061218186828701611ed1565b925050604061219286828701611c8d565b9150509250925092565b6000806000606084860312156121b5576121b4612d56565b5b60006121c386828701611efb565b93505060206121d486828701611ed1565b92505060406121e586828701611ed1565b9150509250925092565b6121f881612aba565b82525050565b61220781612ade565b82525050565b61221681612ade565b82525050565b61222581612aea565b82525050565b600061223682612849565b6122408185612854565b9350612250818560208601612bee565b61225981612d5b565b840191505092915050565b600061226f82612849565b6122798185612865565b9350612289818560208601612bee565b61229281612d5b565b840191505092915050565b6122a681612b61565b82525050565b6122b581612b73565b82525050565b6122c481612b85565b82525050565b6122d381612b97565b82525050565b60006122e6602283612876565b91506122f182612d79565b604082019050919050565b6000612309602583612876565b915061231482612dc8565b604082019050919050565b600061232c602383612876565b915061233782612e17565b604082019050919050565b600061234f601b83612876565b915061235a82612e66565b602082019050919050565b6000612372601883612876565b915061237d82612e8f565b602082019050919050565b6000612395602083612876565b91506123a082612eb8565b602082019050919050565b60006123b8601783612876565b91506123c382612ee1565b602082019050919050565b600060408301600083015184820360008601526123eb828261222b565b915050602083015161240060208601826124e0565b508091505092915050565b600060c083016000830151848203600086015261242882826123ce565b915050602083015161243d602086018261250d565b506040830151612450604086018261250d565b506060830151612463606086018261250d565b50608083015161247660808601826124fe565b5060a083015161248960a08601826124fe565b508091505092915050565b60006040830160008301516124ac60008601826121fe565b50602083015184820360208601526124c4828261240b565b9150508091505092915050565b6124da81612b26565b82525050565b6124e981612b30565b82525050565b6124f881612b30565b82525050565b61250781612b40565b82525050565b61251681612b54565b82525050565b600060208201905061253160008301846121ef565b92915050565b600060408201905061254c60008301856121ef565b612559602083018461221c565b9392505050565b600060808201905061257560008301876121ef565b61258260208301866124d1565b61258f60408301856124d1565b61259c60608301846124d1565b95945050505050565b60006020820190506125ba600083018461220d565b92915050565b60006020820190506125d5600083018461221c565b92915050565b60006040820190506125f0600083018561221c565b6125fd60208301846124d1565b9392505050565b6000602082019050818103600083015261261e8184612264565b905092915050565b600060208201905061263b600083018461229d565b92915050565b600060208201905061265660008301846122ac565b92915050565b600060208201905061267160008301846122bb565b92915050565b600060208201905061268c60008301846122ca565b92915050565b600060208201905081810360008301526126ab816122d9565b9050919050565b600060208201905081810360008301526126cb816122fc565b9050919050565b600060208201905081810360008301526126eb8161231f565b9050919050565b6000602082019050818103600083015261270b81612342565b9050919050565b6000602082019050818103600083015261272b81612365565b9050919050565b6000602082019050818103600083015261274b81612388565b9050919050565b6000602082019050818103600083015261276b816123ab565b9050919050565b6000602082019050818103600083015261278c8184612494565b905092915050565b60006020820190506127a960008301846124d1565b92915050565b60006040820190506127c460008301856124d1565b6127d1602083018461221c565b9392505050565b60006020820190506127ed60008301846124ef565b92915050565b60006127fd61280e565b90506128098282612c21565b919050565b6000604051905090565b600067ffffffffffffffff82111561283357612832612d0e565b5b61283c82612d5b565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000808291508390505b60018511156128d1578086048111156128ad576128ac612c81565b5b60018516156128bc5780820291505b80810290506128ca85612d6c565b9450612891565b94509492505050565b60006128e582612b26565b91506128f083612b54565b925061291d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612925565b905092915050565b60008261293557600190506129f1565b8161294357600090506129f1565b8160018114612959576002811461296357612992565b60019150506129f1565b60ff84111561297557612974612c81565b5b8360020a91508482111561298c5761298b612c81565b5b506129f1565b5060208310610133831016604e8410600b84101617156129c75782820a9050838111156129c2576129c1612c81565b5b6129f1565b6129d48484846001612887565b925090508184048111156129eb576129ea612c81565b5b81810290505b9392505050565b6000612a0382612b26565b9150612a0e83612b26565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612a4757612a46612c81565b5b828202905092915050565b6000612a5d82612b26565b9150612a6883612b26565b925082821015612a7b57612a7a612c81565b5b828203905092915050565b6000612a9182612b54565b9150612a9c83612b54565b925082821015612aaf57612aae612c81565b5b828203905092915050565b6000612ac582612b06565b9050919050565b6000612ad782612b06565b9050919050565b60008115159050919050565b6000819050919050565b6000612aff82612aba565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b6000612b6c82612ba9565b9050919050565b6000612b7e82612ba9565b9050919050565b6000612b9082612bbb565b9050919050565b6000612ba282612ba9565b9050919050565b6000612bb482612bcd565b9050919050565b6000612bc682612bcd565b9050919050565b6000612bd882612b06565b9050919050565b82818337600083830152505050565b60005b83811015612c0c578082015181840152602081019050612bf1565b83811115612c1b576000848401525b50505050565b612c2a82612d5b565b810181811067ffffffffffffffff82111715612c4957612c48612d0e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f5769746e657452616e646f6d6e6573733a206661756c74792072616e646f6d6960008201527f7a65000000000000000000000000000000000000000000000000000000000000602082015250565b7f5769746e657452616e646f6d6e6573733a20616c726561647920696e6974696160008201527f6c697a6564000000000000000000000000000000000000000000000000000000602082015250565b7f5769746e657452616e646f6d6e6573733a2070656e64696e672072616e646f6d60008201527f697a650000000000000000000000000000000000000000000000000000000000602082015250565b7f5573696e675769746e65743a2072657761726420746f6f206c6f770000000000600082015250565b7f436c6f6e61626c653a2043524541544532206661696c65640000000000000000600082015250565b7f5769746e657452616e646f6d6e6573733a206e6f742072616e646f6d697a6564600082015250565b7f436c6f6e61626c653a20435245415445206661696c6564000000000000000000600082015250565b612f1381612acc565b8114612f1e57600080fd5b50565b612f2a81612ade565b8114612f3557600080fd5b50565b612f4181612aea565b8114612f4c57600080fd5b50565b612f5881612af4565b8114612f6357600080fd5b50565b60048110612f7357600080fd5b50565b612f7f81612b26565b8114612f8a57600080fd5b50565b612f9681612b30565b8114612fa157600080fd5b50565b612fad81612b40565b8114612fb857600080fd5b50565b612fc481612b54565b8114612fcf57600080fd5b5056fea2646970667358221220f4691b938720c3e8f10b1b6d4c19bdf6f673f6bcd601a4aee2842c50207e6baa64736f6c63430008070033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
