0x608060405234801561000f575f80fd5b5060043610610179575f3560e01c80635aeb4d77116100d25780638da5cb5b11610088578063ba770a7b11610063578063ba770a7b146103f4578063c1dba86414610409578063d21220a714610429575f80fd5b80638da5cb5b146103a1578063a7119869146103c1578063b16e8502146103e1575f80fd5b806379ba5097116100b857806379ba509714610373578063819d4cc61461037b5780638980f11f1461038e575f80fd5b80635aeb4d771461032e5780635c36b1861461036b575f80fd5b80631627540c1161013257806347ccca021161010d57806347ccca02146102db57806348c9d974146102fb57806353a47bb71461030e575f80fd5b80631627540c146102855780632e11b3b51461029857806336e9332d146102bb575f80fd5b80630dfe1681116101625780630dfe1681146101dc57806314d71c29146101fc578063150b7a021461021d575f80fd5b80630173c2561461017d57806309dacc0414610192575b5f80fd5b61019061018b366004611b62565b610449565b005b6009546101b29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6005546101b29073ffffffffffffffffffffffffffffffffffffffff1681565b61020f61020a366004611b85565b6104e9565b6040519081526020016101d3565b61025461022b366004611c69565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101d3565b610190610293366004611d45565b6104ff565b6102ab6102a6366004611d5e565b6105c9565b6040516101d39493929190611dfa565b6003546101b29073ffffffffffffffffffffffffffffffffffffffff1681565b6004546101b29073ffffffffffffffffffffffffffffffffffffffff1681565b6102ab610309366004611d45565b6105f1565b6002546101b29073ffffffffffffffffffffffffffffffffffffffff1681565b600b546103569074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff90911681526020016101d3565b610190610617565b6101906107fe565b610190610389366004611d5e565b6108f3565b61019061039c366004611d5e565b610a25565b6001546101b29073ffffffffffffffffffffffffffffffffffffffff1681565b600b546101b29073ffffffffffffffffffffffffffffffffffffffff1681565b6101906103ef366004611d45565b610a85565b6103fc610b1d565b6040516101d39190611e31565b600a546101b29073ffffffffffffffffffffffffffffffffffffffff1681565b6006546101b29073ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461049a576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b805463ffffffff90921674010000000000000000000000000000000000000000027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600781600281106104f8575f80fd5b0154905081565b60015473ffffffffffffffffffffffffffffffffffffffff163314610550576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b5f6105d2611b08565b5f60606105e186600187610cf1565b9299919850965090945092505050565b5f6105fa611b08565b5f6060610608855f80610cf1565b93509350935093509193509193565b60025f5403610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60025f55600b54600a5460405133602482015242604482015273ffffffffffffffffffffffffffffffffffffffff92831692633dbb202b921690606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fab219c4a00000000000000000000000000000000000000000000000000000000179052600b5490517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815261079693929163ffffffff740100000000000000000000000000000000000000009091041690600401611e61565b5f604051808303815f87803b1580156107ad575f80fd5b505af11580156107bf573d5f803e3d5ffd5b50506040514281523392507fd5fd11568fef84379772ca0ede26f57178e76ab3f922db124b3ef166646a1b58915060200160405180910390a260015f55565b60025473ffffffffffffffffffffffffffffffffffffffff16331461084f576040517fd74b334e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546002546040805173ffffffffffffffffffffffffffffffffffffffff93841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160028054600180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b60015473ffffffffffffffffffffffffffffffffffffffff163314610944576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f42842e0e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff918216602482015260448101839052908316906342842e0e906064015f604051808303815f87803b1580156109bb575f80fd5b505af11580156109cd573d5f803e3d5ffd5b50506040805173ffffffffffffffffffffffffffffffffffffffff86168152602081018590527f57519b6a0997d7d44511836bcee0a36871aa79d445816f6c464abb0cd9d3f3e8935001905060405180910390a15050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a76576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a81823383611308565b5050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610ad6576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610b25611b26565b60015473ffffffffffffffffffffffffffffffffffffffff163314610b76576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610be2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c069190611ea5565b81526006546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610c74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c989190611ea5565b6020820152600554610cc89073ffffffffffffffffffffffffffffffffffffffff1633835f5b6020020151611308565b600654610cee9073ffffffffffffffffffffffffffffffffffffffff1633836001610cbe565b90565b5f610cfa611b08565b5f606060025f5403610d68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161067e565b60025f5573ffffffffffffffffffffffffffffffffffffffff8716610db9576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546040517f92ad41590000000000000000000000000000000000000000000000000000000081523360048201525f9173ffffffffffffffffffffffffffffffffffffffff16906392ad4159906024015f60405180830381865afa158015610e24573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e699190810190611efa565b6009546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529192505f9173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610eda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efe9190611ea5565b90505f5b8251811015610ffc575f838281518110610f1e57610f1e611ebc565b60200260200101515f015190505f848381518110610f3e57610f3e611ebc565b60200260200101516020015190505f811115610ff2578a8015610f615750898214155b610ff2575f610f70838361139a565b805160208b0180519293509091610f8890839061202f565b905250602081015160408a018051610fa190839061202f565b905250604081015160608a018051610fba90839061202f565b905250606081015160808a018051610fd390839061202f565b905250610fe0828b61202f565b99508b15610ff057505050610ffc565b505b5050600101610f02565b50855f03611036576040517f764c157f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152829173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156110a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c69190611ea5565b6110d09190612048565b85526009546110f79073ffffffffffffffffffffffffffffffffffffffff1633875f610cbe565b60085461110590600a61217c565b60808601516111149190612187565b60075461112290600a61217c565b60608701516111319190612187565b61113b919061202f565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8b16604482015260648101829052909450608401604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529181526020820180517fa7a53248000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff909116179052600b54600a5491517f3dbb202b00000000000000000000000000000000000000000000000000000000815292955073ffffffffffffffffffffffffffffffffffffffff80821693633dbb202b936112639392169188917401000000000000000000000000000000000000000090910463ffffffff1690600401611e61565b5f604051808303815f87803b15801561127a575f80fd5b505af115801561128c573d5f803e3d5ffd5b505050508873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167e57f6120ad0cb6034e01af747c86402cc944df3a98b4d09b426a6feb18b6e6d86886040516112ee92919061219e565b60405180910390a3505060015f8190555093509350935093565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611395908490611800565b505050565b6113a2611b44565b6003546040517f575959bf0000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063575959bf906044015f604051808303815f87803b158015611411575f80fd5b505af1158015611423573d5f803e3d5ffd5b50506040805160808101825286815233602082019081526fffffffffffffffffffffffffffffffff828401818152606084018281526004805496517ffc6f7865000000000000000000000000000000000000000000000000000000008152865191810191909152935173ffffffffffffffffffffffffffffffffffffffff90811660248601529151831660448501525190911660648301529194505f93508392919091169063fc6f78659060840160408051808303815f875af11580156114ec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061151091906121b2565b855191935091508290859061152690839061202f565b905250808460016020020181815161153e919061202f565b905250506040805160a0810182528681526fffffffffffffffffffffffffffffffff861660208201525f91810182905260608101829052909150608081016115894262093a8061202f565b905260048054604080517f0c49ccbe00000000000000000000000000000000000000000000000000000000815284519381019390935260208401516fffffffffffffffffffffffffffffffff166024840152830151604483015260608301516064830152608083015160848301529192505f91829173ffffffffffffffffffffffffffffffffffffffff90911690630c49ccbe9060a40160408051808303815f875af115801561163b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061165f91906121b2565b604080516080810182528a815230602082019081526fffffffffffffffffffffffffffffffff828401818152606084018281526004805496517ffc6f7865000000000000000000000000000000000000000000000000000000008152865191810191909152935173ffffffffffffffffffffffffffffffffffffffff9081166024860152915183166044850152519091166064830152919850939550919350169063fc6f78659060840160408051808303815f875af1158015611724573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061174891906121b2565b505060408501805183919061175e90839061202f565b9052508085600360200201818151611776919061202f565b90525050600480546040517f42966c6800000000000000000000000000000000000000000000000000000000815291820188905273ffffffffffffffffffffffffffffffffffffffff1692506342966c6891506024015f604051808303815f87803b1580156117e3575f80fd5b505af11580156117f5573d5f803e3d5ffd5b505050505092915050565b5f611861826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661190b9092919063ffffffff16565b805190915015611395578080602001905181019061187f91906121d4565b611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161067e565b606061191984845f85611923565b90505b9392505050565b6060824710156119b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161067e565b73ffffffffffffffffffffffffffffffffffffffff85163b611a33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161067e565b5f808673ffffffffffffffffffffffffffffffffffffffff168587604051611a5b91906121f3565b5f6040518083038185875af1925050503d805f8114611a95576040519150601f19603f3d011682016040523d82523d5f602084013e611a9a565b606091505b5091509150611aaa828286611ab5565b979650505050505050565b60608315611ac457508161191c565b825115611ad45782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e9190612209565b6040518060a001604052806005906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b5f60208284031215611b72575f80fd5b813563ffffffff8116811461191c575f80fd5b5f60208284031215611b95575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611bbf575f80fd5b919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160e0810167ffffffffffffffff81118282101715611c1457611c14611bc4565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c6157611c61611bc4565b604052919050565b5f805f8060808587031215611c7c575f80fd5b611c8585611b9c565b9350611c9360208601611b9c565b925060408501359150606085013567ffffffffffffffff811115611cb5575f80fd5b8501601f81018713611cc5575f80fd5b803567ffffffffffffffff811115611cdf57611cdf611bc4565b611d1060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c1a565b818152886020838501011115611d24575f80fd5b816020840160208301375f6020838301015280935050505092959194509250565b5f60208284031215611d55575f80fd5b61191c82611b9c565b5f8060408385031215611d6f575f80fd5b611d7883611b9c565b946020939093013593505050565b805f5b6005811015611da8578151845260209384019390910190600101611d89565b50505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b848152611e0a6020820185611d86565b8260c082015261010060e08201525f611e27610100830184611dae565b9695505050505050565b6040810181835f5b6002811015611e58578151835260209283019290910190600101611e39565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f611e8f6060830185611dae565b905063ffffffff83166040830152949350505050565b5f60208284031215611eb5575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600281900b8114611bbf575f80fd5b5f60208284031215611f0a575f80fd5b815167ffffffffffffffff811115611f20575f80fd5b8201601f81018413611f30575f80fd5b805167ffffffffffffffff811115611f4a57611f4a611bc4565b611f5960208260051b01611c1a565b80828252602082019150602060e08402850101925086831115611f7a575f80fd5b6020840193505b82841015611e275760e08488031215611f98575f80fd5b611fa0611bf1565b8451815260208086015190820152604080860151908201526060808601519082015260808086015190820152611fd860a08601611ee9565b60a0820152611fe960c08601611ee9565b60c0820152825260e09390930192602090910190611f81565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561204257612042612002565b92915050565b8181038181111561204257612042612002565b6001815b60018411156120965780850481111561207a5761207a612002565b600184161561208857908102905b60019390931c92800261205f565b935093915050565b5f826120ac57506001612042565b816120b857505f612042565b81600181146120ce57600281146120d8576120f4565b6001915050612042565b60ff8411156120e9576120e9612002565b50506001821b612042565b5060208310610133831016604e8410600b8410161715612117575081810a612042565b6121427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461205b565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561217457612174612002565b029392505050565b5f61191c838361209e565b808202811582820484141761204257612042612002565b82815260c0810161191c6020830184611d86565b5f80604083850312156121c3575f80fd5b505080516020909101519092909150565b5f602082840312156121e4575f80fd5b8151801515811461191c575f80fd5b5f82518060208501845e5f920191825250919050565b602081525f61191c6020830184611dae56fea26469706673582212208949ef698b876903f16f1c25be4dba98f062b1b48e0684dd2ea73413821e14cc64736f6c634300081a0033
0x6080604052600480546001600160a01b031990811673c36442b4a4522e871399cd717abdd847ab11fe881790915560098054909116733432b6a60d23ca0dfca7761b7ab56459d9c964d0179055600b80547607a120126bcc31bc076b3d515f60fbc81fdde0b0d542ed6001600160c01b0319909116179055348015610082575f80fd5b506040516126713803806126718339810160408190526100a191610368565b60015f55826001600160a01b0381166100cd57604051639b15e16f60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b038316908117909155604080515f815260208101929092527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a150600a80546001600160a01b038085166001600160a01b03199283161790925560038054928416929091168217905560408051635e415e6960e01b81529051635e415e69916004808201926020929091908290030181865afa15801561018d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101b191906103a8565b60055f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b031663377be6516040518163ffffffff1660e01b8152600401602060405180830381865afa158015610212573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061023691906103a8565b600680546001600160a01b0319166001600160a01b039283161790556005546040805163313ce56760e01b81529051919092169163313ce5679160048083019260209291908290030181865afa158015610292573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b691906103c8565b6102c19060126103e8565b60ff166007556006546040805163313ce56760e01b815290516001600160a01b039092169163313ce567916004808201926020929091908290030181865afa15801561030f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061033391906103c8565b61033e9060126103e8565b60ff1660085550610413915050565b80516001600160a01b0381168114610363575f80fd5b919050565b5f805f6060848603121561037a575f80fd5b6103838461034d565b92506103916020850161034d565b915061039f6040850161034d565b90509250925092565b5f602082840312156103b8575f80fd5b6103c18261034d565b9392505050565b5f602082840312156103d8575f80fd5b815160ff811681146103c1575f80fd5b60ff828116828216039081111561040d57634e487b7160e01b5f52601160045260245ffd5b92915050565b612251806104205f395ff3fe608060405234801561000f575f80fd5b5060043610610179575f3560e01c80635aeb4d77116100d25780638da5cb5b11610088578063ba770a7b11610063578063ba770a7b146103f4578063c1dba86414610409578063d21220a714610429575f80fd5b80638da5cb5b146103a1578063a7119869146103c1578063b16e8502146103e1575f80fd5b806379ba5097116100b857806379ba509714610373578063819d4cc61461037b5780638980f11f1461038e575f80fd5b80635aeb4d771461032e5780635c36b1861461036b575f80fd5b80631627540c1161013257806347ccca021161010d57806347ccca02146102db57806348c9d974146102fb57806353a47bb71461030e575f80fd5b80631627540c146102855780632e11b3b51461029857806336e9332d146102bb575f80fd5b80630dfe1681116101625780630dfe1681146101dc57806314d71c29146101fc578063150b7a021461021d575f80fd5b80630173c2561461017d57806309dacc0414610192575b5f80fd5b61019061018b366004611b62565b610449565b005b6009546101b29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6005546101b29073ffffffffffffffffffffffffffffffffffffffff1681565b61020f61020a366004611b85565b6104e9565b6040519081526020016101d3565b61025461022b366004611c69565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101d3565b610190610293366004611d45565b6104ff565b6102ab6102a6366004611d5e565b6105c9565b6040516101d39493929190611dfa565b6003546101b29073ffffffffffffffffffffffffffffffffffffffff1681565b6004546101b29073ffffffffffffffffffffffffffffffffffffffff1681565b6102ab610309366004611d45565b6105f1565b6002546101b29073ffffffffffffffffffffffffffffffffffffffff1681565b600b546103569074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff90911681526020016101d3565b610190610617565b6101906107fe565b610190610389366004611d5e565b6108f3565b61019061039c366004611d5e565b610a25565b6001546101b29073ffffffffffffffffffffffffffffffffffffffff1681565b600b546101b29073ffffffffffffffffffffffffffffffffffffffff1681565b6101906103ef366004611d45565b610a85565b6103fc610b1d565b6040516101d39190611e31565b600a546101b29073ffffffffffffffffffffffffffffffffffffffff1681565b6006546101b29073ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461049a576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b805463ffffffff90921674010000000000000000000000000000000000000000027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600781600281106104f8575f80fd5b0154905081565b60015473ffffffffffffffffffffffffffffffffffffffff163314610550576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b5f6105d2611b08565b5f60606105e186600187610cf1565b9299919850965090945092505050565b5f6105fa611b08565b5f6060610608855f80610cf1565b93509350935093509193509193565b60025f5403610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60025f55600b54600a5460405133602482015242604482015273ffffffffffffffffffffffffffffffffffffffff92831692633dbb202b921690606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fab219c4a00000000000000000000000000000000000000000000000000000000179052600b5490517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815261079693929163ffffffff740100000000000000000000000000000000000000009091041690600401611e61565b5f604051808303815f87803b1580156107ad575f80fd5b505af11580156107bf573d5f803e3d5ffd5b50506040514281523392507fd5fd11568fef84379772ca0ede26f57178e76ab3f922db124b3ef166646a1b58915060200160405180910390a260015f55565b60025473ffffffffffffffffffffffffffffffffffffffff16331461084f576040517fd74b334e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546002546040805173ffffffffffffffffffffffffffffffffffffffff93841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160028054600180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b60015473ffffffffffffffffffffffffffffffffffffffff163314610944576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f42842e0e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff918216602482015260448101839052908316906342842e0e906064015f604051808303815f87803b1580156109bb575f80fd5b505af11580156109cd573d5f803e3d5ffd5b50506040805173ffffffffffffffffffffffffffffffffffffffff86168152602081018590527f57519b6a0997d7d44511836bcee0a36871aa79d445816f6c464abb0cd9d3f3e8935001905060405180910390a15050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a76576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a81823383611308565b5050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610ad6576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610b25611b26565b60015473ffffffffffffffffffffffffffffffffffffffff163314610b76576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610be2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c069190611ea5565b81526006546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610c74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c989190611ea5565b6020820152600554610cc89073ffffffffffffffffffffffffffffffffffffffff1633835f5b6020020151611308565b600654610cee9073ffffffffffffffffffffffffffffffffffffffff1633836001610cbe565b90565b5f610cfa611b08565b5f606060025f5403610d68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161067e565b60025f5573ffffffffffffffffffffffffffffffffffffffff8716610db9576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546040517f92ad41590000000000000000000000000000000000000000000000000000000081523360048201525f9173ffffffffffffffffffffffffffffffffffffffff16906392ad4159906024015f60405180830381865afa158015610e24573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e699190810190611efa565b6009546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529192505f9173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610eda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efe9190611ea5565b90505f5b8251811015610ffc575f838281518110610f1e57610f1e611ebc565b60200260200101515f015190505f848381518110610f3e57610f3e611ebc565b60200260200101516020015190505f811115610ff2578a8015610f615750898214155b610ff2575f610f70838361139a565b805160208b0180519293509091610f8890839061202f565b905250602081015160408a018051610fa190839061202f565b905250604081015160608a018051610fba90839061202f565b905250606081015160808a018051610fd390839061202f565b905250610fe0828b61202f565b99508b15610ff057505050610ffc565b505b5050600101610f02565b50855f03611036576040517f764c157f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152829173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156110a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c69190611ea5565b6110d09190612048565b85526009546110f79073ffffffffffffffffffffffffffffffffffffffff1633875f610cbe565b60085461110590600a61217c565b60808601516111149190612187565b60075461112290600a61217c565b60608701516111319190612187565b61113b919061202f565b60405133602482015273ffffffffffffffffffffffffffffffffffffffff8b16604482015260648101829052909450608401604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529181526020820180517fa7a53248000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff909116179052600b54600a5491517f3dbb202b00000000000000000000000000000000000000000000000000000000815292955073ffffffffffffffffffffffffffffffffffffffff80821693633dbb202b936112639392169188917401000000000000000000000000000000000000000090910463ffffffff1690600401611e61565b5f604051808303815f87803b15801561127a575f80fd5b505af115801561128c573d5f803e3d5ffd5b505050508873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167e57f6120ad0cb6034e01af747c86402cc944df3a98b4d09b426a6feb18b6e6d86886040516112ee92919061219e565b60405180910390a3505060015f8190555093509350935093565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611395908490611800565b505050565b6113a2611b44565b6003546040517f575959bf0000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063575959bf906044015f604051808303815f87803b158015611411575f80fd5b505af1158015611423573d5f803e3d5ffd5b50506040805160808101825286815233602082019081526fffffffffffffffffffffffffffffffff828401818152606084018281526004805496517ffc6f7865000000000000000000000000000000000000000000000000000000008152865191810191909152935173ffffffffffffffffffffffffffffffffffffffff90811660248601529151831660448501525190911660648301529194505f93508392919091169063fc6f78659060840160408051808303815f875af11580156114ec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061151091906121b2565b855191935091508290859061152690839061202f565b905250808460016020020181815161153e919061202f565b905250506040805160a0810182528681526fffffffffffffffffffffffffffffffff861660208201525f91810182905260608101829052909150608081016115894262093a8061202f565b905260048054604080517f0c49ccbe00000000000000000000000000000000000000000000000000000000815284519381019390935260208401516fffffffffffffffffffffffffffffffff166024840152830151604483015260608301516064830152608083015160848301529192505f91829173ffffffffffffffffffffffffffffffffffffffff90911690630c49ccbe9060a40160408051808303815f875af115801561163b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061165f91906121b2565b604080516080810182528a815230602082019081526fffffffffffffffffffffffffffffffff828401818152606084018281526004805496517ffc6f7865000000000000000000000000000000000000000000000000000000008152865191810191909152935173ffffffffffffffffffffffffffffffffffffffff9081166024860152915183166044850152519091166064830152919850939550919350169063fc6f78659060840160408051808303815f875af1158015611724573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061174891906121b2565b505060408501805183919061175e90839061202f565b9052508085600360200201818151611776919061202f565b90525050600480546040517f42966c6800000000000000000000000000000000000000000000000000000000815291820188905273ffffffffffffffffffffffffffffffffffffffff1692506342966c6891506024015f604051808303815f87803b1580156117e3575f80fd5b505af11580156117f5573d5f803e3d5ffd5b505050505092915050565b5f611861826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661190b9092919063ffffffff16565b805190915015611395578080602001905181019061187f91906121d4565b611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161067e565b606061191984845f85611923565b90505b9392505050565b6060824710156119b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161067e565b73ffffffffffffffffffffffffffffffffffffffff85163b611a33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161067e565b5f808673ffffffffffffffffffffffffffffffffffffffff168587604051611a5b91906121f3565b5f6040518083038185875af1925050503d805f8114611a95576040519150601f19603f3d011682016040523d82523d5f602084013e611a9a565b606091505b5091509150611aaa828286611ab5565b979650505050505050565b60608315611ac457508161191c565b825115611ad45782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e9190612209565b6040518060a001604052806005906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b5f60208284031215611b72575f80fd5b813563ffffffff8116811461191c575f80fd5b5f60208284031215611b95575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611bbf575f80fd5b919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160e0810167ffffffffffffffff81118282101715611c1457611c14611bc4565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c6157611c61611bc4565b604052919050565b5f805f8060808587031215611c7c575f80fd5b611c8585611b9c565b9350611c9360208601611b9c565b925060408501359150606085013567ffffffffffffffff811115611cb5575f80fd5b8501601f81018713611cc5575f80fd5b803567ffffffffffffffff811115611cdf57611cdf611bc4565b611d1060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c1a565b818152886020838501011115611d24575f80fd5b816020840160208301375f6020838301015280935050505092959194509250565b5f60208284031215611d55575f80fd5b61191c82611b9c565b5f8060408385031215611d6f575f80fd5b611d7883611b9c565b946020939093013593505050565b805f5b6005811015611da8578151845260209384019390910190600101611d89565b50505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b848152611e0a6020820185611d86565b8260c082015261010060e08201525f611e27610100830184611dae565b9695505050505050565b6040810181835f5b6002811015611e58578151835260209283019290910190600101611e39565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f611e8f6060830185611dae565b905063ffffffff83166040830152949350505050565b5f60208284031215611eb5575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600281900b8114611bbf575f80fd5b5f60208284031215611f0a575f80fd5b815167ffffffffffffffff811115611f20575f80fd5b8201601f81018413611f30575f80fd5b805167ffffffffffffffff811115611f4a57611f4a611bc4565b611f5960208260051b01611c1a565b80828252602082019150602060e08402850101925086831115611f7a575f80fd5b6020840193505b82841015611e275760e08488031215611f98575f80fd5b611fa0611bf1565b8451815260208086015190820152604080860151908201526060808601519082015260808086015190820152611fd860a08601611ee9565b60a0820152611fe960c08601611ee9565b60c0820152825260e09390930192602090910190611f81565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561204257612042612002565b92915050565b8181038181111561204257612042612002565b6001815b60018411156120965780850481111561207a5761207a612002565b600184161561208857908102905b60019390931c92800261205f565b935093915050565b5f826120ac57506001612042565b816120b857505f612042565b81600181146120ce57600281146120d8576120f4565b6001915050612042565b60ff8411156120e9576120e9612002565b50506001821b612042565b5060208310610133831016604e8410600b8410161715612117575081810a612042565b6121427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461205b565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561217457612174612002565b029392505050565b5f61191c838361209e565b808202811582820484141761204257612042612002565b82815260c0810161191c6020830184611d86565b5f80604083850312156121c3575f80fd5b505080516020909101519092909150565b5f602082840312156121e4575f80fd5b8151801515811461191c575f80fd5b5f82518060208501845e5f920191825250919050565b602081525f61191c6020830184611dae56fea26469706673582212208949ef698b876903f16f1c25be4dba98f062b1b48e0684dd2ea73413821e14cc64736f6c634300081a0033000000000000000000000000625e700125ff054f75e5348497cbfab1ee4b7a400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f22471ac2156b489cc4a59092c56713f813ff53e