0x60806040526611c37937e08000600c55683635c9adc5dea00000600d55685150ae84a8cdf00000600e55600160105561dead601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200007e57600080fd5b50604051620050ab380380620050ab8339818101604052810190620000a491906200051d565b6040518060400160405280600e81526020017f5452433a2046756c6c20426f64790000000000000000000000000000000000008152506040518060400160405280600581526020017f5452434642000000000000000000000000000000000000000000000000000000815250816000908051906020019062000128929190620003d8565b50806001908051906020019062000141929190620003d8565b50505062000164620001586200022360201b60201c565b6200022b60201b60201c565b6001600b8190555082601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001ff81620002f160201b60201c565b6000601160006101000a81548160ff021916908315150217905550505050620007ed565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620003016200031d60201b60201c565b80600f908051906020019062000319929190620003d8565b5050565b6200032d6200022360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000353620003ae60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620003ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003a390620005bf565b60405180910390fd5b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620003e690620006bb565b90600052602060002090601f0160209004810192826200040a576000855562000456565b82601f106200042557805160ff191683800117855562000456565b8280016001018555821562000456579182015b828111156200045557825182559160200191906001019062000438565b5b50905062000465919062000469565b5090565b5b80821115620004845760008160009055506001016200046a565b5090565b60006200049f62000499846200060a565b620005e1565b905082815260208101848484011115620004be57620004bd6200078a565b5b620004cb84828562000685565b509392505050565b600081519050620004e481620007d3565b92915050565b600082601f83011262000502576200050162000785565b5b81516200051484826020860162000488565b91505092915050565b60008060006060848603121562000539576200053862000794565b5b60006200054986828701620004d3565b93505060206200055c86828701620004d3565b925050604084015167ffffffffffffffff81111562000580576200057f6200078f565b5b6200058e86828701620004ea565b9150509250925092565b6000620005a760208362000640565b9150620005b482620007aa565b602082019050919050565b60006020820190508181036000830152620005da8162000598565b9050919050565b6000620005ed62000600565b9050620005fb8282620006f1565b919050565b6000604051905090565b600067ffffffffffffffff82111562000628576200062762000756565b5b620006338262000799565b9050602081019050919050565b600082825260208201905092915050565b60006200065e8262000665565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b83811015620006a557808201518184015260208101905062000688565b83811115620006b5576000848401525b50505050565b60006002820490506001821680620006d457607f821691505b60208210811415620006eb57620006ea62000727565b5b50919050565b620006fc8262000799565b810181811067ffffffffffffffff821117156200071e576200071d62000756565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b620007de8162000651565b8114620007ea57600080fd5b50565b6148ae80620007fd6000396000f3fe6080604052600436106101f95760003560e01c80636352211e1161010d578063a243d3b6116100a0578063c002d23d1161006f578063c002d23d146106fe578063c87b56dd14610729578063e985e9c514610766578063f2fde38b146107a3578063fae9806a146107cc576101f9565b8063a243d3b614610665578063a4435dfd14610681578063a88fe42d146106ac578063b88d4fde146106d5576101f9565b80638da5cb5b116100dc5780638da5cb5b146105bb57806395d89b41146105e65780639604ad4614610611578063a22cb4651461063c576101f9565b80636352211e146104ff5780636aa003711461053c57806370a0823114610567578063715018a6146105a4576101f9565b80632f745c59116101905780633b67cf1a1161015f5780633b67cf1a146104305780633ccfd60b1461045957806342842e0e146104705780634f6ccce71461049957806355f804b3146104d6576101f9565b80632f745c591461037457806332682559146103b157806332cb6b0c146103dc5780633b58524d14610407576101f9565b80630e2d56cf116101cc5780630e2d56cf146102cc57806318160ddd146102f55780631ec93f911461032057806323b872dd1461034b576101f9565b806301ffc9a7146101fe57806306fdde031461023b578063081812fc14610266578063095ea7b3146102a3575b600080fd5b34801561020a57600080fd5b506102256004803603810190610220919061338c565b6107f7565b6040516102329190613a6c565b60405180910390f35b34801561024757600080fd5b50610250610871565b60405161025d9190613a87565b60405180910390f35b34801561027257600080fd5b5061028d6004803603810190610288919061342f565b610903565b60405161029a91906139aa565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c591906132a5565b610949565b005b3480156102d857600080fd5b506102f360048036038101906102ee9190613332565b610a61565b005b34801561030157600080fd5b5061030a610a86565b6040516103179190613dc9565b60405180910390f35b34801561032c57600080fd5b50610335610a93565b6040516103429190613dc9565b60405180910390f35b34801561035757600080fd5b50610372600480360381019061036d919061318f565b610a99565b005b34801561038057600080fd5b5061039b600480360381019061039691906132a5565b610af9565b6040516103a89190613dc9565b60405180910390f35b3480156103bd57600080fd5b506103c6610b9e565b6040516103d39190613dc9565b60405180910390f35b3480156103e857600080fd5b506103f1610ba4565b6040516103fe9190613dc9565b60405180910390f35b34801561041357600080fd5b5061042e6004803603810190610429919061314f565b610baa565b005b34801561043c57600080fd5b50610457600480360381019061045291906132e5565b610c38565b005b34801561046557600080fd5b5061046e610f47565b005b34801561047c57600080fd5b506104976004803603810190610492919061318f565b610fa8565b005b3480156104a557600080fd5b506104c060048036038101906104bb919061342f565b610fc8565b6040516104cd9190613dc9565b60405180910390f35b3480156104e257600080fd5b506104fd60048036038101906104f891906133e6565b611039565b005b34801561050b57600080fd5b506105266004803603810190610521919061342f565b61105b565b60405161053391906139aa565b60405180910390f35b34801561054857600080fd5b506105516110e2565b60405161055e91906139aa565b60405180910390f35b34801561057357600080fd5b5061058e600480360381019061058991906130f5565b611108565b60405161059b9190613dc9565b60405180910390f35b3480156105b057600080fd5b506105b96111c0565b005b3480156105c757600080fd5b506105d06111d4565b6040516105dd91906139aa565b60405180910390f35b3480156105f257600080fd5b506105fb6111fe565b6040516106089190613a87565b60405180910390f35b34801561061d57600080fd5b50610626611290565b60405161063391906139aa565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e9190613265565b6112b6565b005b61067f600480360381019061067a919061345c565b6112cc565b005b34801561068d57600080fd5b506106966114fe565b6040516106a39190613a6c565b60405180910390f35b3480156106b857600080fd5b506106d360048036038101906106ce919061349c565b611511565b005b3480156106e157600080fd5b506106fc60048036038101906106f791906131e2565b611533565b005b34801561070a57600080fd5b50610713611595565b6040516107209190613dc9565b60405180910390f35b34801561073557600080fd5b50610750600480360381019061074b919061342f565b61159b565b60405161075d9190613a87565b60405180910390f35b34801561077257600080fd5b5061078d6004803603810190610788919061314f565b611652565b60405161079a9190613a6c565b60405180910390f35b3480156107af57600080fd5b506107ca60048036038101906107c591906130f5565b6116e6565b005b3480156107d857600080fd5b506107e161176a565b6040516107ee9190613dc9565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061086a575061086982611770565b5b9050919050565b60606000805461088090614059565b80601f01602080910402602001604051908101604052809291908181526020018280546108ac90614059565b80156108f95780601f106108ce576101008083540402835291602001916108f9565b820191906000526020600020905b8154815290600101906020018083116108dc57829003601f168201915b5050505050905090565b600061090e82611852565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109548261105b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc90613ce9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166109e461189d565b73ffffffffffffffffffffffffffffffffffffffff161480610a135750610a1281610a0d61189d565b611652565b5b610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4990613d29565b60405180910390fd5b610a5c83836118a5565b505050565b610a6961195e565b80601160006101000a81548160ff02191690831515021790555050565b6000600880549050905090565b600e5481565b610aaa610aa461189d565b826119dc565b610ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae090613aa9565b60405180910390fd5b610af4838383611a71565b505050565b6000610b0483611108565b8210610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c90613ac9565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600d5481565b61138881565b610bb261195e565b81601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601160009054906101000a900460ff1615610c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7f90613c09565b60405180910390fd5b600082829050905060005b81811015610ddc576000848483818110610cb057610caf6141c1565b5b9050602002013590503373ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401610d2b9190613dc9565b60206040518083038186803b158015610d4357600080fd5b505afa158015610d57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7b9190613122565b73ffffffffffffffffffffffffffffffffffffffff1614610dc8576040517f4c084f1400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b508080610dd4906140bc565b915050610c93565b507fed38d8732856e4b58bfd8edce96464b7f141ccf88afd262c682aea5ec205aebe8383604051610e0e929190613a48565b60405180910390a1601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d5485610e869190613f15565b6040518463ffffffff1660e01b8152600401610ea4939291906139c5565b602060405180830381600087803b158015610ebe57600080fd5b505af1158015610ed2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef6919061335f565b50610f4233848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050611d6b565b505050565b610f4f61195e565b610f57611df7565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610f9d573d6000803e3d6000fd5b50610fa6611e47565b565b610fc383838360405180602001604052806000815250611533565b505050565b6000610fd2610a86565b8210611013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100a90613d49565b60405180910390fd5b60088281548110611027576110266141c1565b5b90600052602060002001549050919050565b61104161195e565b80600f9080519060200190611057929190612e89565b5050565b60008061106783611e51565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090613cc9565b60405180910390fd5b80915050919050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611179576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117090613c29565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111c861195e565b6111d26000611e8e565b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461120d90614059565b80601f016020809104026020016040519081016040528092919081815260200182805461123990614059565b80156112865780601f1061125b57610100808354040283529160200191611286565b820191906000526020600020905b81548152906001019060200180831161126957829003601f168201915b5050505050905090565b601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112c86112c161189d565b8383611f54565b5050565b6112d4611df7565b6000826112df610a86565b6112e99190613ebf565b9050601160009054906101000a900460ff1661133a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133190613be9565b60405180910390fd5b6000831161137d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137490613ca9565b60405180910390fd5b600a8311156113c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b890613c89565b60405180910390fd5b6113888110611405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fc90613b89565b60405180910390fd5b60008367ffffffffffffffff811115611421576114206141f0565b5b60405190808252806020026020018201604052801561144f5781602001602082028036833780820191505090505b50905060005b848110156114db57600060105490505b6113888110156114c757611478816120c1565b6114b457808383815181106114905761148f6141c1565b5b6020026020010181815250506001816114a99190613ebf565b6010819055506114c7565b80806114bf906140bc565b915050611465565b5080806114d3906140bc565b915050611455565b506114e68484612102565b6114f03382611d6b565b50506114fa611e47565b5050565b601160009054906101000a900460ff1681565b61151961195e565b82600c8190555081600d8190555080600e81905550505050565b61154461153e61189d565b836119dc565b611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157a90613aa9565b60405180910390fd5b61158f84848484612243565b50505050565b600c5481565b60606115a6826120c1565b6115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90613da9565b60405180910390fd5b816113886115f39190613ebf565b915060006115ff61229f565b9050600081511161161f576040518060200160405280600081525061164a565b8061162984612331565b60405160200161163a929190613986565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6116ee61195e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561175e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175590613b09565b60405180910390fd5b61176781611e8e565b50565b60105481565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061183b57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061184b575061184a82612409565b5b9050919050565b61185b816120c1565b61189a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189190613cc9565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166119188361105b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61196661189d565b73ffffffffffffffffffffffffffffffffffffffff166119846111d4565b73ffffffffffffffffffffffffffffffffffffffff16146119da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d190613c69565b60405180910390fd5b565b6000806119e88361105b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611a2a5750611a298185611652565b5b80611a6857508373ffffffffffffffffffffffffffffffffffffffff16611a5084610903565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611a918261105b565b73ffffffffffffffffffffffffffffffffffffffff1614611ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ade90613b29565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4e90613ba9565b60405180910390fd5b611b648383836001612473565b8273ffffffffffffffffffffffffffffffffffffffff16611b848261105b565b73ffffffffffffffffffffffffffffffffffffffff1614611bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd190613b29565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611d6683838360016125d3565b505050565b6000815111611daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da690613b69565b60405180910390fd5b60005b8151811015611df257611ddf83838381518110611dd257611dd16141c1565b5b60200260200101516125d9565b8080611dea906140bc565b915050611db2565b505050565b6002600b541415611e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3490613d89565b60405180910390fd5b6002600b81905550565b6001600b81905550565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fba90613bc9565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516120b49190613a6c565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff166120e383611e51565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b801561215d57600c54826121169190613f15565b341015612158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214f90613d09565b60405180910390fd5b61223f565b601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e54866121cd9190613f15565b6040518463ffffffff1660e01b81526004016121eb939291906139c5565b602060405180830381600087803b15801561220557600080fd5b505af1158015612219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223d919061335f565b505b5050565b61224e848484611a71565b61225a848484846125f7565b612299576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229090613ae9565b60405180910390fd5b50505050565b6060600f80546122ae90614059565b80601f01602080910402602001604051908101604052809291908181526020018280546122da90614059565b80156123275780601f106122fc57610100808354040283529160200191612327565b820191906000526020600020905b81548152906001019060200180831161230a57829003601f168201915b5050505050905090565b6060600060016123408461278e565b01905060008167ffffffffffffffff81111561235f5761235e6141f0565b5b6040519080825280601f01601f1916602001820160405280156123915781602001600182028036833780820191505090505b509050600082602001820190505b6001156123fe578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816123e8576123e7614134565b5b04945060008514156123f9576123fe565b61239f565b819350505050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61247f848484846128e1565b60018111156124c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ba90613d69565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561250b57612506816128e7565b61254a565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612549576125488582612930565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561258d5761258881612a9d565b6125cc565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146125cb576125ca8482612b6e565b5b5b5050505050565b50505050565b6125f3828260405180602001604052806000815250612bed565b5050565b60006126188473ffffffffffffffffffffffffffffffffffffffff16612c48565b15612781578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261264161189d565b8786866040518563ffffffff1660e01b815260040161266394939291906139fc565b602060405180830381600087803b15801561267d57600080fd5b505af19250505080156126ae57506040513d601f19601f820116820180604052508101906126ab91906133b9565b60015b612731573d80600081146126de576040519150601f19603f3d011682016040523d82523d6000602084013e6126e3565b606091505b50600081511415612729576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272090613ae9565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612786565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106127ec577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816127e2576127e1614134565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612829576d04ee2d6d415b85acef8100000000838161281f5761281e614134565b5b0492506020810190505b662386f26fc10000831061285857662386f26fc10000838161284e5761284d614134565b5b0492506010810190505b6305f5e1008310612881576305f5e100838161287757612876614134565b5b0492506008810190505b61271083106128a657612710838161289c5761289b614134565b5b0492506004810190505b606483106128c957606483816128bf576128be614134565b5b0492506002810190505b600a83106128d8576001810190505b80915050919050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161293d84611108565b6129479190613f6f565b9050600060076000848152602001908152602001600020549050818114612a2c576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050612ab19190613f6f565b9050600060096000848152602001908152602001600020549050600060088381548110612ae157612ae06141c1565b5b906000526020600020015490508060088381548110612b0357612b026141c1565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480612b5257612b51614192565b5b6001900381819060005260206000200160009055905550505050565b6000612b7983611108565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b612bf78383612c6b565b612c0460008484846125f7565b612c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3a90613ae9565b60405180910390fd5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd290613c49565b60405180910390fd5b612ce4816120c1565b15612d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1b90613b49565b60405180910390fd5b612d32600083836001612473565b612d3b816120c1565b15612d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7290613b49565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612e856000838360016125d3565b5050565b828054612e9590614059565b90600052602060002090601f016020900481019282612eb75760008555612efe565b82601f10612ed057805160ff1916838001178555612efe565b82800160010185558215612efe579182015b82811115612efd578251825591602001919060010190612ee2565b5b509050612f0b9190612f0f565b5090565b5b80821115612f28576000816000905550600101612f10565b5090565b6000612f3f612f3a84613e09565b613de4565b905082815260208101848484011115612f5b57612f5a61422e565b5b612f66848285614017565b509392505050565b6000612f81612f7c84613e3a565b613de4565b905082815260208101848484011115612f9d57612f9c61422e565b5b612fa8848285614017565b509392505050565b600081359050612fbf8161481c565b92915050565b600081519050612fd48161481c565b92915050565b60008083601f840112612ff057612fef614224565b5b8235905067ffffffffffffffff81111561300d5761300c61421f565b5b60208301915083602082028301111561302957613028614229565b5b9250929050565b60008135905061303f81614833565b92915050565b60008151905061305481614833565b92915050565b6000813590506130698161484a565b92915050565b60008151905061307e8161484a565b92915050565b600082601f83011261309957613098614224565b5b81356130a9848260208601612f2c565b91505092915050565b600082601f8301126130c7576130c6614224565b5b81356130d7848260208601612f6e565b91505092915050565b6000813590506130ef81614861565b92915050565b60006020828403121561310b5761310a61423d565b5b600061311984828501612fb0565b91505092915050565b6000602082840312156131385761313761423d565b5b600061314684828501612fc5565b91505092915050565b600080604083850312156131665761316561423d565b5b600061317485828601612fb0565b925050602061318585828601612fb0565b9150509250929050565b6000806000606084860312156131a8576131a761423d565b5b60006131b686828701612fb0565b93505060206131c786828701612fb0565b92505060406131d8868287016130e0565b9150509250925092565b600080600080608085870312156131fc576131fb61423d565b5b600061320a87828801612fb0565b945050602061321b87828801612fb0565b935050604061322c878288016130e0565b925050606085013567ffffffffffffffff81111561324d5761324c614233565b5b61325987828801613084565b91505092959194509250565b6000806040838503121561327c5761327b61423d565b5b600061328a85828601612fb0565b925050602061329b85828601613030565b9150509250929050565b600080604083850312156132bc576132bb61423d565b5b60006132ca85828601612fb0565b92505060206132db858286016130e0565b9150509250929050565b600080602083850312156132fc576132fb61423d565b5b600083013567ffffffffffffffff81111561331a57613319614233565b5b61332685828601612fda565b92509250509250929050565b6000602082840312156133485761334761423d565b5b600061335684828501613030565b91505092915050565b6000602082840312156133755761337461423d565b5b600061338384828501613045565b91505092915050565b6000602082840312156133a2576133a161423d565b5b60006133b08482850161305a565b91505092915050565b6000602082840312156133cf576133ce61423d565b5b60006133dd8482850161306f565b91505092915050565b6000602082840312156133fc576133fb61423d565b5b600082013567ffffffffffffffff81111561341a57613419614233565b5b613426848285016130b2565b91505092915050565b6000602082840312156134455761344461423d565b5b6000613453848285016130e0565b91505092915050565b600080604083850312156134735761347261423d565b5b6000613481858286016130e0565b925050602061349285828601613030565b9150509250929050565b6000806000606084860312156134b5576134b461423d565b5b60006134c3868287016130e0565b93505060206134d4868287016130e0565b92505060406134e5868287016130e0565b9150509250925092565b6134f881613fa3565b82525050565b600061350a8385613e81565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561353d5761353c614238565b5b60208302925061354e838584614017565b82840190509392505050565b61356381613fb5565b82525050565b600061357482613e6b565b61357e8185613e92565b935061358e818560208601614026565b61359781614242565b840191505092915050565b60006135ad82613e76565b6135b78185613ea3565b93506135c7818560208601614026565b6135d081614242565b840191505092915050565b60006135e682613e76565b6135f08185613eb4565b9350613600818560208601614026565b80840191505092915050565b6000613619602d83613ea3565b915061362482614253565b604082019050919050565b600061363c602b83613ea3565b9150613647826142a2565b604082019050919050565b600061365f603283613ea3565b915061366a826142f1565b604082019050919050565b6000613682602683613ea3565b915061368d82614340565b604082019050919050565b60006136a5602583613ea3565b91506136b08261438f565b604082019050919050565b60006136c8601c83613ea3565b91506136d3826143de565b602082019050919050565b60006136eb600983613ea3565b91506136f682614407565b602082019050919050565b600061370e600a83613ea3565b915061371982614430565b602082019050919050565b6000613731602483613ea3565b915061373c82614459565b604082019050919050565b6000613754601983613ea3565b915061375f826144a8565b602082019050919050565b6000613777600883613ea3565b9150613782826144d1565b602082019050919050565b600061379a601883613ea3565b91506137a5826144fa565b602082019050919050565b60006137bd602983613ea3565b91506137c882614523565b604082019050919050565b60006137e0602083613ea3565b91506137eb82614572565b602082019050919050565b6000613803602083613ea3565b915061380e8261459b565b602082019050919050565b6000613826601083613ea3565b9150613831826145c4565b602082019050919050565b6000613849600f83613ea3565b9150613854826145ed565b602082019050919050565b600061386c601883613ea3565b915061387782614616565b602082019050919050565b600061388f602183613ea3565b915061389a8261463f565b604082019050919050565b60006138b2600e83613ea3565b91506138bd8261468e565b602082019050919050565b60006138d5603d83613ea3565b91506138e0826146b7565b604082019050919050565b60006138f8602c83613ea3565b915061390382614706565b604082019050919050565b600061391b603583613ea3565b915061392682614755565b604082019050919050565b600061393e601f83613ea3565b9150613949826147a4565b602082019050919050565b6000613961603083613ea3565b915061396c826147cd565b604082019050919050565b6139808161400d565b82525050565b600061399282856135db565b915061399e82846135db565b91508190509392505050565b60006020820190506139bf60008301846134ef565b92915050565b60006060820190506139da60008301866134ef565b6139e760208301856134ef565b6139f46040830184613977565b949350505050565b6000608082019050613a1160008301876134ef565b613a1e60208301866134ef565b613a2b6040830185613977565b8181036060830152613a3d8184613569565b905095945050505050565b60006020820190508181036000830152613a638184866134fe565b90509392505050565b6000602082019050613a81600083018461355a565b92915050565b60006020820190508181036000830152613aa181846135a2565b905092915050565b60006020820190508181036000830152613ac28161360c565b9050919050565b60006020820190508181036000830152613ae28161362f565b9050919050565b60006020820190508181036000830152613b0281613652565b9050919050565b60006020820190508181036000830152613b2281613675565b9050919050565b60006020820190508181036000830152613b4281613698565b9050919050565b60006020820190508181036000830152613b62816136bb565b9050919050565b60006020820190508181036000830152613b82816136de565b9050919050565b60006020820190508181036000830152613ba281613701565b9050919050565b60006020820190508181036000830152613bc281613724565b9050919050565b60006020820190508181036000830152613be281613747565b9050919050565b60006020820190508181036000830152613c028161376a565b9050919050565b60006020820190508181036000830152613c228161378d565b9050919050565b60006020820190508181036000830152613c42816137b0565b9050919050565b60006020820190508181036000830152613c62816137d3565b9050919050565b60006020820190508181036000830152613c82816137f6565b9050919050565b60006020820190508181036000830152613ca281613819565b9050919050565b60006020820190508181036000830152613cc28161383c565b9050919050565b60006020820190508181036000830152613ce28161385f565b9050919050565b60006020820190508181036000830152613d0281613882565b9050919050565b60006020820190508181036000830152613d22816138a5565b9050919050565b60006020820190508181036000830152613d42816138c8565b9050919050565b60006020820190508181036000830152613d62816138eb565b9050919050565b60006020820190508181036000830152613d828161390e565b9050919050565b60006020820190508181036000830152613da281613931565b9050919050565b60006020820190508181036000830152613dc281613954565b9050919050565b6000602082019050613dde6000830184613977565b92915050565b6000613dee613dff565b9050613dfa828261408b565b919050565b6000604051905090565b600067ffffffffffffffff821115613e2457613e236141f0565b5b613e2d82614242565b9050602081019050919050565b600067ffffffffffffffff821115613e5557613e546141f0565b5b613e5e82614242565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613eca8261400d565b9150613ed58361400d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613f0a57613f09614105565b5b828201905092915050565b6000613f208261400d565b9150613f2b8361400d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613f6457613f63614105565b5b828202905092915050565b6000613f7a8261400d565b9150613f858361400d565b925082821015613f9857613f97614105565b5b828203905092915050565b6000613fae82613fed565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614044578082015181840152602081019050614029565b83811115614053576000848401525b50505050565b6000600282049050600182168061407157607f821691505b6020821081141561408557614084614163565b5b50919050565b61409482614242565b810181811067ffffffffffffffff821117156140b3576140b26141f0565b5b80604052505050565b60006140c78261400d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156140fa576140f9614105565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f6e656564206d6f72650000000000000000000000000000000000000000000000600082015250565b7f6d617820737570706c7900000000000000000000000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f6e6f74206f70656e000000000000000000000000000000000000000000000000600082015250565b7f796f752063616e6e6f7420636c61696d20616e796d6f72650000000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f63616e6e6f74206d696e74206d6f726500000000000000000000000000000000600082015250565b7f63616e6e6f74206265207a65726f2e0000000000000000000000000000000000600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f696e7375662062616c616e63652e000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e2e00000000000000000000000000000000602082015250565b61482581613fa3565b811461483057600080fd5b50565b61483c81613fb5565b811461484757600080fd5b50565b61485381613fc1565b811461485e57600080fd5b50565b61486a8161400d565b811461487557600080fd5b5056fea2646970667358221220560b1a33e082559e72bf9c54f5c4b87fc3d4cb1a7192a91b6a112a1bfd2a451464736f6c63430008070033000000000000000000000000b1b0de0b760d4454585e4e4f16db87bc294d7db90000000000000000000000000644def359b95c0a640196b28d88e5e0de8e4c6600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d65664339456e69337a4c327945666b6e5a48475968444e597252354b51447643486b79436b4738315258504e2f00000000000000000000