60a06040523480156200001157600080fd5b5060405162004c4338038062004c43833981810160405281019062000037919062000604565b6040518060400160405280600c81526020017f49646f6c476f6c646c69737400000000000000000000000000000000000000008152506040518060400160405280600881526020017f474f4c444c4953540000000000000000000000000000000000000000000000008152508160019080519060200190620000bb92919062000317565b508060029080519060200190620000d492919062000317565b5050506001600781905550620000ff620000f36200024960201b60201c565b6200025160201b60201c565b8260098190555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426080818152505080600e90805190602001906200016792919062000317565b506001600f60007382af9d2ea81810582657f6dc04b1d7d0d573f61673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000735eefd9c64d8c35142b7611ae3a6decfc6d7a8a5e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050620006e4565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200032590620006ae565b90600052602060002090601f01602090048101928262000349576000855562000395565b82601f106200036457805160ff191683800117855562000395565b8280016001018555821562000395579182015b828111156200039457825182559160200191906001019062000377565b5b509050620003a49190620003a8565b5090565b5b80821115620003c3576000816000905550600101620003a9565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b620003f081620003db565b8114620003fc57600080fd5b50565b6000815190506200041081620003e5565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004438262000416565b9050919050565b620004558162000436565b81146200046157600080fd5b50565b60008151905062000475816200044a565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004d08262000485565b810181811067ffffffffffffffff82111715620004f257620004f162000496565b5b80604052505050565b600062000507620003c7565b9050620005158282620004c5565b919050565b600067ffffffffffffffff82111562000538576200053762000496565b5b620005438262000485565b9050602081019050919050565b60005b838110156200057057808201518184015260208101905062000553565b8381111562000580576000848401525b50505050565b60006200059d62000597846200051a565b620004fb565b905082815260208101848484011115620005bc57620005bb62000480565b5b620005c984828562000550565b509392505050565b600082601f830112620005e957620005e86200047b565b5b8151620005fb84826020860162000586565b91505092915050565b60008060006060848603121562000620576200061f620003d1565b5b60006200063086828701620003ff565b9350506020620006438682870162000464565b925050604084015167ffffffffffffffff811115620006675762000666620003d6565b5b6200067586828701620005d1565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006c757607f821691505b60208210811415620006de57620006dd6200067f565b5b50919050565b60805161453c620007076000396000818161130601526129cb015261453c6000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80636352211e1161011a5780639e971d99116100ad578063c0e3fd551161007c578063c0e3fd55146105c4578063c87b56dd146105e0578063da7d3f3514610610578063e985e9c514610640578063f2fde38b14610670576101fb565b80639e971d9914610552578063a22cb4651461056e578063b621513e1461058a578063b88d4fde146105a8576101fb565b8063729dcc37116100e9578063729dcc37146104c85780637a40624b146104f85780638da5cb5b1461051657806395d89b4114610534576101fb565b80636352211e14610442578063641ce1401461047257806370a082311461048e578063715018a6146104be576101fb565b80632f745c59116101925780634d1c5d99116101615780634d1c5d99146103aa5780634f6ccce7146103da578063501d442e1461040a57806353b61d3914610426576101fb565b80632f745c591461032257806332cb6b0c14610352578063355e0c5d1461037057806342842e0e1461038e576101fb565b80630a398b88116101ce5780630a398b881461029a57806318160ddd146102ca57806323b872dd146102e85780632eb4a7ab14610304576101fb565b806301ffc9a71461020057806306fdde0314610230578063081812fc1461024e578063095ea7b31461027e575b600080fd5b61021a60048036038101906102159190612c60565b61068c565b6040516102279190612ca8565b60405180910390f35b6102386107d6565b6040516102459190612d5c565b60405180910390f35b61026860048036038101906102639190612db4565b610868565b6040516102759190612e22565b60405180910390f35b61029860048036038101906102939190612e69565b6108ed565b005b6102b460048036038101906102af9190612ea9565b610a06565b6040516102c19190612ca8565b60405180910390f35b6102d2610a26565b6040516102df9190612ee5565b60405180910390f35b61030260048036038101906102fd9190612f00565b610a2f565b005b61030c610a3f565b6040516103199190612f6c565b60405180910390f35b61033c60048036038101906103379190612e69565b610a45565b6040516103499190612ee5565b60405180910390f35b61035a610c37565b6040516103679190612ee5565b60405180910390f35b610378610c3d565b6040516103859190612d5c565b60405180910390f35b6103a860048036038101906103a39190612f00565b610ccb565b005b6103c460048036038101906103bf9190612ea9565b610ceb565b6040516103d19190612ca8565b60405180910390f35b6103f460048036038101906103ef9190612db4565b610d0b565b6040516104019190612ee5565b60405180910390f35b610424600480360381019061041f9190612ea9565b610d5e565b005b610440600480360381019061043b9190612db4565b610e2c565b005b61045c60048036038101906104579190612db4565b610f4c565b6040516104699190612e22565b60405180910390f35b61048c60048036038101906104879190612fec565b610f62565b005b6104a860048036038101906104a39190612ea9565b61117b565b6040516104b59190612ee5565b60405180910390f35b6104c6611264565b005b6104e260048036038101906104dd9190612ea9565b6112ec565b6040516104ef9190612ee5565b60405180910390f35b610500611304565b60405161050d9190612ee5565b60405180910390f35b61051e611328565b60405161052b9190612e22565b60405180910390f35b61053c611352565b6040516105499190612d5c565b60405180910390f35b61056c60048036038101906105679190612ea9565b6113e4565b005b6105886004803603810190610583919061308c565b611491565b005b610592611612565b60405161059f9190612ee5565b60405180910390f35b6105c260048036038101906105bd91906131fc565b611618565b005b6105de60048036038101906105d99190612ea9565b611674565b005b6105fa60048036038101906105f59190612db4565b61174b565b6040516106079190612d5c565b60405180910390f35b61062a60048036038101906106259190612ea9565b611827565b6040516106379190612ee5565b60405180910390f35b61065a6004803603810190610655919061327f565b611890565b6040516106679190612ca8565b60405180910390f35b61068a60048036038101906106859190612ea9565b611924565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061075757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107bf57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107cf57506107ce82611a1c565b5b9050919050565b6060600180546107e5906132ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610811906132ee565b801561085e5780601f106108335761010080835404028352916020019161085e565b820191906000526020600020905b81548152906001019060200180831161084157829003601f168201915b5050505050905090565b600061087382611a86565b6108b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a990613392565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108f882610f4c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096090613424565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610988611a93565b73ffffffffffffffffffffffffffffffffffffffff1614806109b757506109b6816109b1611a93565b611890565b5b6109f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ed906134b6565b60405180910390fd5b610a01838383611a9b565b505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b60008054905090565b610a3a838383611b4d565b505050565b60095481565b6000610a508361117b565b8210610a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8890613548565b60405180910390fd5b6000610a9b610a26565b905060008060005b83811015610bf5576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610b9557806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610be75786841415610bde578195505050505050610c31565b83806001019450505b508080600101915050610aa3565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c28906135da565b60405180910390fd5b92915050565b61037881565b600e8054610c4a906132ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610c76906132ee565b8015610cc35780601f10610c9857610100808354040283529160200191610cc3565b820191906000526020600020905b815481529060010190602001808311610ca657829003601f168201915b505050505081565b610ce683838360405180602001604052806000815250611618565b505050565b600f6020528060005260406000206000915054906101000a900460ff1681565b6000610d15610a26565b8210610d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4d9061366c565b60405180910390fd5b819050919050565b610d66611a93565b73ffffffffffffffffffffffffffffffffffffffff16610d84611328565b73ffffffffffffffffffffffffffffffffffffffff1614610dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd1906136d8565b60405180910390fd5b600f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b610e34610a26565b81610e3f9190613756565b600b54610e4c9190613787565b600b81905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401610eb1939291906137dd565b602060405180830381600087803b158015610ecb57600080fd5b505af1158015610edf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f039190613829565b610f0c57600080fd5b7f267cc97b679f43e46b6107568cd114e3a56195737853b5c67b9e06489164b5dd81600b5433604051610f4193929190613856565b60405180910390a150565b6000610f578261208d565b600001519050919050565b61037883610f6e610a26565b610f789190613787565b1115610fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb0906138d9565b60405180910390fd5b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103d9061396b565b60405180910390fd5b6000848460405160200161105b9291906139f4565b6040516020818303038152906040528051906020012090506110c1838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505060095483612227565b611100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f790613a92565b60405180910390fd5b6001600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611174858560405180602001604052806000815250600061223e565b5050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e390613b24565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b61126c611a93565b73ffffffffffffffffffffffffffffffffffffffff1661128a611328565b73ffffffffffffffffffffffffffffffffffffffff16146112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d7906136d8565b60405180910390fd5b6112ea60006125bc565b565b600c6020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054611361906132ee565b80601f016020809104026020016040519081016040528092919081815260200182805461138d906132ee565b80156113da5780601f106113af576101008083540402835291602001916113da565b820191906000526020600020905b8154815290600101906020018083116113bd57829003601f168201915b5050505050905090565b6002600754141561142a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142190613b90565b60405180910390fd5b6002600781905550600061143d8261117b565b1161147d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147490613c22565b60405180910390fd5b61148681612682565b600160078190555050565b611499611a93565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe90613c8e565b60405180910390fd5b8060066000611514611a93565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166115c1611a93565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116069190612ca8565b60405180910390a35050565b600b5481565b611623848484611b4d565b61162f8484848461279b565b61166e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166590613d20565b60405180910390fd5b50505050565b61167c611a93565b73ffffffffffffffffffffffffffffffffffffffff1661169a611328565b73ffffffffffffffffffffffffffffffffffffffff16146116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e7906136d8565b60405180910390fd5b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b606061175682611a86565b611795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178c90613db2565b60405180910390fd5b600e80546117a2906132ee565b80601f01602080910402602001604051908101604052809291908181526020018280546117ce906132ee565b801561181b5780601f106117f05761010080835404028352916020019161181b565b820191906000526020600020905b8154815290600101906020018083116117fe57829003601f168201915b50505050509050919050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600b546118769190613dd2565b61187f8361117b565b6118899190613e06565b9050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61192c611a93565b73ffffffffffffffffffffffffffffffffffffffff1661194a611328565b73ffffffffffffffffffffffffffffffffffffffff16146119a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611997906136d8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0790613ed2565b60405180910390fd5b611a19816125bc565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000805482109050919050565b600033905090565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000611b588261208d565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611b7f611a93565b73ffffffffffffffffffffffffffffffffffffffff161480611bdb5750611ba4611a93565b73ffffffffffffffffffffffffffffffffffffffff16611bc384610868565b73ffffffffffffffffffffffffffffffffffffffff16145b80611bf75750611bf68260000151611bf1611a93565b611890565b5b905080611c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3090613f64565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca290613ff6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1290614088565b60405180910390fd5b611d288585856001612932565b611d386000848460000151611a9b565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561201d57611f7c81611a86565b1561201c5782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46120868585856001612aff565b5050505050565b612095612bba565b61209e82611a86565b6120dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d49061411a565b60405180910390fd5b60008290505b600081106121e6576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146121d7578092505050612222565b508080600190039150506120e3565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612219906141ac565b60405180910390fd5b919050565b6000826122348584612b05565b1490509392505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156122b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ab9061423e565b60405180910390fd5b60008414156122f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ef906142d0565b60405180910390fd5b6123056000868387612932565b83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b8581101561259f57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4831561258a5761254a600088848861279b565b612589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258090613d20565b60405180910390fd5b5b818060010192505080806001019150506124d3565b5080600081905550506125b56000868387612aff565b5050505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600061268d82611827565b9050600081111561279757600b54600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161273b9291906142f0565b602060405180830381600087803b15801561275557600080fd5b505af1158015612769573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278d9190613829565b61279657600080fd5b5b5050565b60006127bc8473ffffffffffffffffffffffffffffffffffffffff16612b7a565b15612925578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026127e5611a93565b8786866040518563ffffffff1660e01b8152600401612807949392919061436e565b602060405180830381600087803b15801561282157600080fd5b505af192505050801561285257506040513d601f19601f8201168201806040525081019061284f91906143cf565b60015b6128d5573d8060008114612882576040519150601f19603f3d011682016040523d82523d6000602084013e612887565b606091505b506000815114156128cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c490613d20565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061292a565b600190505b949350505050565b61293e84848484612b9d565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612a9357600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612a3557426301e133807f00000000000000000000000000000000000000000000000000000000000000006129f49190613787565b10612a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2b9061446e565b60405180910390fd5b5b612a3e84612682565b80612a488561117b565b1415612a9257600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090555b5b6000612a9e8461117b565b1115612ab257612aad83612682565b612af9565b600b54600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50505050565b50505050565b60008082905060005b8451811015612b6f576000858281518110612b2c57612b2b61448e565b5b60200260200101519050808311612b4e57612b478382612ba3565b9250612b5b565b612b588184612ba3565b92505b508080612b67906144bd565b915050612b0e565b508091505092915050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b50505050565b600082600052816020526040600020905092915050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612c3d81612c08565b8114612c4857600080fd5b50565b600081359050612c5a81612c34565b92915050565b600060208284031215612c7657612c75612bfe565b5b6000612c8484828501612c4b565b91505092915050565b60008115159050919050565b612ca281612c8d565b82525050565b6000602082019050612cbd6000830184612c99565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612cfd578082015181840152602081019050612ce2565b83811115612d0c576000848401525b50505050565b6000601f19601f8301169050919050565b6000612d2e82612cc3565b612d388185612cce565b9350612d48818560208601612cdf565b612d5181612d12565b840191505092915050565b60006020820190508181036000830152612d768184612d23565b905092915050565b6000819050919050565b612d9181612d7e565b8114612d9c57600080fd5b50565b600081359050612dae81612d88565b92915050565b600060208284031215612dca57612dc9612bfe565b5b6000612dd884828501612d9f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e0c82612de1565b9050919050565b612e1c81612e01565b82525050565b6000602082019050612e376000830184612e13565b92915050565b612e4681612e01565b8114612e5157600080fd5b50565b600081359050612e6381612e3d565b92915050565b60008060408385031215612e8057612e7f612bfe565b5b6000612e8e85828601612e54565b9250506020612e9f85828601612d9f565b9150509250929050565b600060208284031215612ebf57612ebe612bfe565b5b6000612ecd84828501612e54565b91505092915050565b612edf81612d7e565b82525050565b6000602082019050612efa6000830184612ed6565b92915050565b600080600060608486031215612f1957612f18612bfe565b5b6000612f2786828701612e54565b9350506020612f3886828701612e54565b9250506040612f4986828701612d9f565b9150509250925092565b6000819050919050565b612f6681612f53565b82525050565b6000602082019050612f816000830184612f5d565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612fac57612fab612f87565b5b8235905067ffffffffffffffff811115612fc957612fc8612f8c565b5b602083019150836020820283011115612fe557612fe4612f91565b5b9250929050565b6000806000806060858703121561300657613005612bfe565b5b600061301487828801612e54565b945050602061302587828801612d9f565b935050604085013567ffffffffffffffff81111561304657613045612c03565b5b61305287828801612f96565b925092505092959194509250565b61306981612c8d565b811461307457600080fd5b50565b60008135905061308681613060565b92915050565b600080604083850312156130a3576130a2612bfe565b5b60006130b185828601612e54565b92505060206130c285828601613077565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61310982612d12565b810181811067ffffffffffffffff82111715613128576131276130d1565b5b80604052505050565b600061313b612bf4565b90506131478282613100565b919050565b600067ffffffffffffffff821115613167576131666130d1565b5b61317082612d12565b9050602081019050919050565b82818337600083830152505050565b600061319f61319a8461314c565b613131565b9050828152602081018484840111156131bb576131ba6130cc565b5b6131c684828561317d565b509392505050565b600082601f8301126131e3576131e2612f87565b5b81356131f384826020860161318c565b91505092915050565b6000806000806080858703121561321657613215612bfe565b5b600061322487828801612e54565b945050602061323587828801612e54565b935050604061324687828801612d9f565b925050606085013567ffffffffffffffff81111561326757613266612c03565b5b613273878288016131ce565b91505092959194509250565b6000806040838503121561329657613295612bfe565b5b60006132a485828601612e54565b92505060206132b585828601612e54565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061330657607f821691505b6020821081141561331a576133196132bf565b5b50919050565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b600061337c602d83612cce565b915061338782613320565b604082019050919050565b600060208201905081810360008301526133ab8161336f565b9050919050565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b600061340e602283612cce565b9150613419826133b2565b604082019050919050565b6000602082019050818103600083015261343d81613401565b9050919050565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b60006134a0603983612cce565b91506134ab82613444565b604082019050919050565b600060208201905081810360008301526134cf81613493565b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b6000613532602283612cce565b915061353d826134d6565b604082019050919050565b6000602082019050818103600083015261356181613525565b9050919050565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b60006135c4602e83612cce565b91506135cf82613568565b604082019050919050565b600060208201905081810360008301526135f3816135b7565b9050919050565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b6000613656602383612cce565b9150613661826135fa565b604082019050919050565b6000602082019050818103600083015261368581613649565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006136c2602083612cce565b91506136cd8261368c565b602082019050919050565b600060208201905081810360008301526136f1816136b5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061376182612d7e565b915061376c83612d7e565b92508261377c5761377b6136f8565b5b828204905092915050565b600061379282612d7e565b915061379d83612d7e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156137d2576137d1613727565b5b828201905092915050565b60006060820190506137f26000830186612e13565b6137ff6020830185612e13565b61380c6040830184612ed6565b949350505050565b60008151905061382381613060565b92915050565b60006020828403121561383f5761383e612bfe565b5b600061384d84828501613814565b91505092915050565b600060608201905061386b6000830186612ed6565b6138786020830185612ed6565b6138856040830184612e13565b949350505050565b7f4d696e7420776f756c6420657863656564206d617820737570706c7900000000600082015250565b60006138c3601c83612cce565b91506138ce8261388d565b602082019050919050565b600060208201905081810360008301526138f2816138b6565b9050919050565b7f476f6c646c697374204e465473206861766520616c7265616479206265656e2060008201527f6d696e74656420666f7220746861742061646472657373000000000000000000602082015250565b6000613955603783612cce565b9150613960826138f9565b604082019050919050565b6000602082019050818103600083015261398481613948565b9050919050565b60008160601b9050919050565b60006139a38261398b565b9050919050565b60006139b582613998565b9050919050565b6139cd6139c882612e01565b6139aa565b82525050565b6000819050919050565b6139ee6139e982612d7e565b6139d3565b82525050565b6000613a0082856139bc565b601482019150613a1082846139dd565b6020820191508190509392505050565b7f4661696c656420746f2061757468656e7469636174652077697468206d65726b60008201527f6c65207472656500000000000000000000000000000000000000000000000000602082015250565b6000613a7c602783612cce565b9150613a8782613a20565b604082019050919050565b60006020820190508181036000830152613aab81613a6f565b9050919050565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000613b0e602b83612cce565b9150613b1982613ab2565b604082019050919050565b60006020820190508181036000830152613b3d81613b01565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613b7a601f83612cce565b9150613b8582613b44565b602082019050919050565b60006020820190508181036000830152613ba981613b6d565b9050919050565b7f43616e206f6e6c7920636c61696d2069662062616c616e6365206f662075736560008201527f72203e2030000000000000000000000000000000000000000000000000000000602082015250565b6000613c0c602583612cce565b9150613c1782613bb0565b604082019050919050565b60006020820190508181036000830152613c3b81613bff565b9050919050565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b6000613c78601a83612cce565b9150613c8382613c42565b602082019050919050565b60006020820190508181036000830152613ca781613c6b565b9050919050565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b6000613d0a603383612cce565b9150613d1582613cae565b604082019050919050565b60006020820190508181036000830152613d3981613cfd565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613d9c602f83612cce565b9150613da782613d40565b604082019050919050565b60006020820190508181036000830152613dcb81613d8f565b9050919050565b6000613ddd82612d7e565b9150613de883612d7e565b925082821015613dfb57613dfa613727565b5b828203905092915050565b6000613e1182612d7e565b9150613e1c83612d7e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e5557613e54613727565b5b828202905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ebc602683612cce565b9150613ec782613e60565b604082019050919050565b60006020820190508181036000830152613eeb81613eaf565b9050919050565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b6000613f4e603283612cce565b9150613f5982613ef2565b604082019050919050565b60006020820190508181036000830152613f7d81613f41565b9050919050565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b6000613fe0602683612cce565b9150613feb82613f84565b604082019050919050565b6000602082019050818103600083015261400f81613fd3565b9050919050565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614072602583612cce565b915061407d82614016565b604082019050919050565b600060208201905081810360008301526140a181614065565b9050919050565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b6000614104602a83612cce565b915061410f826140a8565b604082019050919050565b60006020820190508181036000830152614133816140f7565b9050919050565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b6000614196602f83612cce565b91506141a18261413a565b604082019050919050565b600060208201905081810360008301526141c581614189565b9050919050565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614228602183612cce565b9150614233826141cc565b604082019050919050565b600060208201905081810360008301526142578161421b565b9050919050565b7f455243373231413a207175616e74697479206d7573742062652067726561746560008201527f72207468616e2030000000000000000000000000000000000000000000000000602082015250565b60006142ba602883612cce565b91506142c58261425e565b604082019050919050565b600060208201905081810360008301526142e9816142ad565b9050919050565b60006040820190506143056000830185612e13565b6143126020830184612ed6565b9392505050565b600081519050919050565b600082825260208201905092915050565b600061434082614319565b61434a8185614324565b935061435a818560208601612cdf565b61436381612d12565b840191505092915050565b60006080820190506143836000830187612e13565b6143906020830186612e13565b61439d6040830185612ed6565b81810360608301526143af8184614335565b905095945050505050565b6000815190506143c981612c34565b92915050565b6000602082840312156143e5576143e4612bfe565b5b60006143f3848285016143ba565b91505092915050565b7f546f6b656e2063616e206f6e6c79206265207472616e73666572726564206f6e60008201527f636520312d79656172206c6f636b206861732065787069726564000000000000602082015250565b6000614458603a83612cce565b9150614463826143fc565b604082019050919050565b600060208201905081810360008301526144878161444b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006144c882612d7e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156144fb576144fa613727565b5b60018201905091905056fea2646970667358221220992e44306e5009fdec624062881571aedc611cf38a06fa1867232cc0604bbd8d64736f6c634300080900331581dfb1d82845c3972f303ea463e2b6181def6294e676454426831690b2d0530000000000000000000000009416ba76e88d873050a06e5956a3ebf10386b86300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044697066733a2f2f62616679626569687573667432777a7a6a6579696e71616f376e6464746f6164627a36366870636b62376d6c766a7a37727a6d7171776664796c342f3000000000000000000000000000000000000000000000000000000000