60a060405234801562000010575f80fd5b50604051620029b4380380620029b4833981810160405281019062000036919062000464565b8383816003908162000049919062000748565b5080600490816200005b919062000748565b5050508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050620000a333620000f460201b60201c565b3360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806005819055505050505062000925565b6200011b815f60028111156200010f576200010e6200082c565b5b6200011e60201b60201c565b50565b62000137828260ff166001901b6200013b60201b60201c565b5050565b5f816200014e84620001b860201b60201c565b179050620001638382620001d760201b60201c565b8273ffffffffffffffffffffffffffffffffffffffff167f34e73c57659d4b6809b53db4feee9b007b892e978114eda420d2991aba15014383604051620001ab91906200086a565b60405180910390a2505050565b5f80620001cb83620001f360201b60201c565b90508054915050919050565b5f620001e983620001f360201b60201c565b9050818155505050565b5f7fde9bdca322e1a848f72215bc15cf2c87fe7749145789a9ee281a2a6290af26ab8260405160200162000229929190620008f6565b604051602081830303815290604052805190602001209050919050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620002a7826200025f565b810181811067ffffffffffffffff82111715620002c957620002c86200026f565b5b80604052505050565b5f620002dd62000246565b9050620002eb82826200029c565b919050565b5f67ffffffffffffffff8211156200030d576200030c6200026f565b5b62000318826200025f565b9050602081019050919050565b5f5b838110156200034457808201518184015260208101905062000327565b5f8484015250505050565b5f620003656200035f84620002f0565b620002d2565b9050828152602081018484840111156200038457620003836200025b565b5b6200039184828562000325565b509392505050565b5f82601f830112620003b057620003af62000257565b5b8151620003c28482602086016200034f565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620003f682620003cb565b9050919050565b6200040881620003ea565b811462000413575f80fd5b50565b5f815190506200042681620003fd565b92915050565b5f819050919050565b62000440816200042c565b81146200044b575f80fd5b50565b5f815190506200045e8162000435565b92915050565b5f805f80608085870312156200047f576200047e6200024f565b5b5f85015167ffffffffffffffff8111156200049f576200049e62000253565b5b620004ad8782880162000399565b945050602085015167ffffffffffffffff811115620004d157620004d062000253565b5b620004df8782880162000399565b9350506040620004f28782880162000416565b925050606062000505878288016200044e565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200056057607f821691505b6020821081036200057657620005756200051b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005da7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200059d565b620005e686836200059d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620006306200062a6200062484620005fe565b62000607565b620005fe565b9050919050565b5f819050919050565b6200064b8362000610565b620006636200065a8262000637565b848454620005a9565b825550505050565b5f90565b620006796200066b565b6200068681848462000640565b505050565b5b81811015620006ad57620006a15f826200066f565b6001810190506200068c565b5050565b601f821115620006fc57620006c6816200057c565b620006d1846200058e565b81016020851015620006e1578190505b620006f9620006f0856200058e565b8301826200068b565b50505b505050565b5f82821c905092915050565b5f6200071e5f198460080262000701565b1980831691505092915050565b5f6200073883836200070d565b9150826002028217905092915050565b620007538262000511565b67ffffffffffffffff8111156200076f576200076e6200026f565b5b6200077b825462000548565b62000788828285620006b1565b5f60209050601f831160018114620007be575f8415620007a9578287015190505b620007b585826200072b565b86555062000824565b601f198416620007ce866200057c565b5f5b82811015620007f757848901518255600182019150602085019450602081019050620007d0565b8683101562000817578489015162000813601f8916826200070d565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6200086481620005fe565b82525050565b5f6020820190506200087f5f83018462000859565b92915050565b5f819050919050565b620008a36200089d826200042c565b62000885565b82525050565b5f8160601b9050919050565b5f620008c182620008a9565b9050919050565b5f620008d482620008b5565b9050919050565b620008f0620008ea82620003ea565b620008c8565b82525050565b5f6200090382856200088e565b602082019150620009158284620008db565b6014820191508190509392505050565b60805161206f620009455f395f81816105df0152610606015261206f5ff3fe608060405260043610610134575f3560e01c8063983b2d56116100aa578063aa271e1a1161006e578063aa271e1a1461041c578063b5ef694d14610458578063bc0ba3c514610480578063cf86a95a1461049c578063d5f39488146104c4578063dd62ed3e146104ee57610134565b8063983b2d561461034c5780639c176677146103745780639dc29fac1461039c578063a60fee37146103c4578063a9059cbb146103e057610134565b806323b872dd116100fc57806323b872dd1461021c578063313ce5671461025857806340c10f191461028257806370a08231146102aa57806395a8c58d146102e657806395d89b411461032257610134565b806306fdde0314610138578063095ea7b31461016257806309c6bed91461019e578063129d8188146101c857806318160ddd146101f2575b5f80fd5b348015610143575f80fd5b5061014c61052a565b60405161015991906116df565b60405180910390f35b34801561016d575f80fd5b5061018860048036038101906101839190611794565b6105ba565b60405161019591906117ec565b60405180910390f35b3480156101a9575f80fd5b506101b26105dc565b6040516101bf9190611814565b60405180910390f35b3480156101d3575f80fd5b506101dc610603565b6040516101e99190611845565b60405180910390f35b3480156101fd575f80fd5b506102066106c6565b604051610213919061186d565b60405180910390f35b348015610227575f80fd5b50610242600480360381019061023d9190611886565b6106cf565b60405161024f91906117ec565b60405180910390f35b348015610263575f80fd5b5061026c6106fd565b60405161027991906118f1565b60405180910390f35b34801561028d575f80fd5b506102a860048036038101906102a39190611794565b610705565b005b3480156102b5575f80fd5b506102d060048036038101906102cb919061190a565b610713565b6040516102dd919061186d565b60405180910390f35b3480156102f1575f80fd5b5061030c6004803603810190610307919061195f565b610758565b60405161031991906117ec565b60405180910390f35b34801561032d575f80fd5b50610336610773565b60405161034391906116df565b60405180910390f35b348015610357575f80fd5b50610372600480360381019061036d919061190a565b610803565b005b34801561037f575f80fd5b5061039a6004803603810190610395919061190a565b61080f565b005b3480156103a7575f80fd5b506103c260048036038101906103bd9190611794565b61082f565b005b6103de60048036038101906103d99190611a53565b6108a6565b005b3480156103eb575f80fd5b5061040660048036038101906104019190611794565b610951565b60405161041391906117ec565b60405180910390f35b348015610427575f80fd5b50610442600480360381019061043d919061190a565b610973565b60405161044f91906117ec565b60405180910390f35b348015610463575f80fd5b5061047e6004803603810190610479919061190a565b610997565b005b61049a60048036038101906104959190611b2a565b610a20565b005b3480156104a7575f80fd5b506104c260048036038101906104bd919061190a565b610ac4565b005b3480156104cf575f80fd5b506104d8610b4d565b6040516104e59190611814565b60405180910390f35b3480156104f9575f80fd5b50610514600480360381019061050f9190611bee565b610b72565b604051610521919061186d565b60405180910390f35b60606003805461053990611c59565b80601f016020809104026020016040519081016040528092919081815260200182805461056590611c59565b80156105b05780601f10610587576101008083540402835291602001916105b0565b820191905f5260205f20905b81548152906001019060200180831161059357829003601f168201915b5050505050905090565b5f806105c4610bf4565b90506105d1818585610bfb565b600191505092915050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a5269ef160065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005546040518363ffffffff1660e01b8152600401610682929190611c89565b602060405180830381865afa15801561069d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c19190611cda565b905090565b5f600254905090565b5f806106d9610bf4565b90506106e6858285610c0d565b6106f1858585610c5e565b60019150509392505050565b5f6012905090565b61070f8282610d4e565b5050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f61076b61076584610dcd565b83610de4565b905092915050565b60606004805461078290611c59565b80601f01602080910402602001604051908101604052809291908181526020018280546107ae90611c59565b80156107f95780601f106107d0576101008083540402835291602001916107f9565b820191905f5260205f20905b8154815290600101906020018083116107dc57829003601f168201915b5050505050905090565b61080c81610dfa565b50565b61082c81335f600281111561082757610826611d05565b5b610e19565b50565b5f600281111561084257610841611d05565b5b61085461084e33610dcd565b82610de4565b6108975733816040517fbb6c163900000000000000000000000000000000000000000000000000000000815260040161088e929190611d32565b60405180910390fd5b6108a18383610e30565b505050565b6108b1883385610c0d565b6108c18888888888888888610eaf565b6108c96105dc565b73ffffffffffffffffffffffffffffffffffffffff166370756cde346108ed610603565b8b8b8b8b8b8b8b8b6040518b63ffffffff1660e01b815260040161091999989796959493929190611dcf565b5f604051808303818588803b158015610930575f80fd5b505af1158015610942573d5f803e3d5ffd5b50505050505050505050505050565b5f8061095b610bf4565b9050610968818585610c5e565b600191505092915050565b5f610990825f600281111561098b5761098a611d05565b5b610758565b9050919050565b5f60028111156109aa576109a9611d05565b5b6109bc6109b633610dcd565b82610de4565b6109ff5733816040517fbb6c16390000000000000000000000000000000000000000000000000000000081526004016109f6929190611d32565b60405180910390fd5b610a1c33835f6002811115610a1757610a16611d05565b5b610eb9565b5050565b5f339050610a343389898989898989610eaf565b610a3c6105dc565b73ffffffffffffffffffffffffffffffffffffffff166370756cde34610a60610603565b848c8c8c8c8c8c8c6040518b63ffffffff1660e01b8152600401610a8c99989796959493929190611dcf565b5f604051808303818588803b158015610aa3575f80fd5b505af1158015610ab5573d5f803e3d5ffd5b50505050505050505050505050565b5f6002811115610ad757610ad6611d05565b5b610ae9610ae333610dcd565b82610de4565b610b2c5733816040517fbb6c1639000000000000000000000000000000000000000000000000000000008152600401610b23929190611d32565b60405180910390fd5b610b4933835f6002811115610b4457610b43611d05565b5b610ed0565b5050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b610c088383836001610ee7565b505050565b5f610c188484610b72565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c5857610c5784848484610c529190611e76565b610bfb565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cce575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610cc59190611814565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d3e575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610d359190611814565b60405180910390fd5b610d498383836110b6565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dbe575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610db59190611814565b60405180910390fd5b610dc95f83836110b6565b5050565b5f80610dd8836112cf565b90508054915050919050565b5f808260ff166001901b84161415905092915050565b610e16815f6002811115610e1157610e10611d05565b5b611320565b50565b610e2b83838360ff166001901b611335565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ea0575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610e979190611814565b60405180910390fd5b610eab825f836110b6565b5050565b5050505050505050565b610ecb83838360ff166001901b6113a1565b505050565b610ee283838360ff166001901b61146b565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610f57575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610f4e9190611814565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fc7575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610fbe9190611814565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156110b0578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110a7919061186d565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611106578060025f8282546110fa9190611ea9565b925050819055506111d4565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561118f578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161118693929190611edc565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361121b578060025f8282540392505081905550611265565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112c2919061186d565b60405180910390a3505050565b5f7fde9bdca322e1a848f72215bc15cf2c87fe7749145789a9ee281a2a6290af26ab82604051602001611303929190611f76565b604051602081830303815290604052805190602001209050919050565b611331828260ff166001901b6114d9565b5050565b806113408484611544565b14611386578282826040517f6004fe4000000000000000000000000000000000000000000000000000000000815260040161137d93929190611fa1565b60405180910390fd5b61139183835f61155d565b61139c83838361146b565b505050565b6113b36113ad84610dcd565b82611573565b6113f65782816040517f7fa6fbb40000000000000000000000000000000000000000000000000000000081526004016113ed929190611fd6565b60405180910390fd5b61140183838361155d565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167ff7158d1591c2cf17c0e6b9459d86365c47fe0969c79f40ef49e0c437d8f399148360405161145e919061186d565b60405180910390a3505050565b61147d61147784610dcd565b82611573565b6114c05782816040517f7fa6fbb40000000000000000000000000000000000000000000000000000000081526004016114b7929190611fd6565b60405180910390fd5b6114ca8382611581565b6114d482826114d9565b505050565b5f816114e484610dcd565b1790506114f183826115ed565b8273ffffffffffffffffffffffffffffffffffffffff167f34e73c57659d4b6809b53db4feee9b007b892e978114eda420d2991aba15014383604051611537919061186d565b60405180910390a2505050565b5f806115508484611601565b9050805491505092915050565b5f6115688484611601565b905081815550505050565b5f8182841614905092915050565b5f811961158d84610dcd565b16905061159a83826115ed565b8273ffffffffffffffffffffffffffffffffffffffff167fccf920c8facee98a9c2a6c6124f2857b87b17e9f3a819bfcc6945196ee77366b836040516115e0919061186d565b60405180910390a2505050565b5f6115f7836112cf565b9050818155505050565b5f7ff96e07b2f4fbb81c31567d2b261589af429e98f0958d53f7e6ad5d63aea0ab7c838360405160200161163793929190611ffd565b60405160208183030381529060405280519060200120905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561168c578082015181840152602081019050611671565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6116b182611655565b6116bb818561165f565b93506116cb81856020860161166f565b6116d481611697565b840191505092915050565b5f6020820190508181035f8301526116f781846116a7565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61173082611707565b9050919050565b61174081611726565b811461174a575f80fd5b50565b5f8135905061175b81611737565b92915050565b5f819050919050565b61177381611761565b811461177d575f80fd5b50565b5f8135905061178e8161176a565b92915050565b5f80604083850312156117aa576117a96116ff565b5b5f6117b78582860161174d565b92505060206117c885828601611780565b9150509250929050565b5f8115159050919050565b6117e6816117d2565b82525050565b5f6020820190506117ff5f8301846117dd565b92915050565b61180e81611726565b82525050565b5f6020820190506118275f830184611805565b92915050565b5f819050919050565b61183f8161182d565b82525050565b5f6020820190506118585f830184611836565b92915050565b61186781611761565b82525050565b5f6020820190506118805f83018461185e565b92915050565b5f805f6060848603121561189d5761189c6116ff565b5b5f6118aa8682870161174d565b93505060206118bb8682870161174d565b92505060406118cc86828701611780565b9150509250925092565b5f60ff82169050919050565b6118eb816118d6565b82525050565b5f6020820190506119045f8301846118e2565b92915050565b5f6020828403121561191f5761191e6116ff565b5b5f61192c8482850161174d565b91505092915050565b61193e816118d6565b8114611948575f80fd5b50565b5f8135905061195981611935565b92915050565b5f8060408385031215611975576119746116ff565b5b5f6119828582860161174d565b92505060206119938582860161194b565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126119be576119bd61199d565b5b8235905067ffffffffffffffff8111156119db576119da6119a1565b5b6020830191508360018202830111156119f7576119f66119a5565b5b9250929050565b5f8083601f840112611a1357611a1261199d565b5b8235905067ffffffffffffffff811115611a3057611a2f6119a1565b5b602083019150836001820283011115611a4c57611a4b6119a5565b5b9250929050565b5f805f805f805f8060a0898b031215611a6f57611a6e6116ff565b5b5f611a7c8b828c0161174d565b985050602089013567ffffffffffffffff811115611a9d57611a9c611703565b5b611aa98b828c016119a9565b9750975050604089013567ffffffffffffffff811115611acc57611acb611703565b5b611ad88b828c016119fe565b95509550506060611aeb8b828c01611780565b935050608089013567ffffffffffffffff811115611b0c57611b0b611703565b5b611b188b828c016119fe565b92509250509295985092959890939650565b5f805f805f805f6080888a031215611b4557611b446116ff565b5b5f88013567ffffffffffffffff811115611b6257611b61611703565b5b611b6e8a828b016119a9565b9750975050602088013567ffffffffffffffff811115611b9157611b90611703565b5b611b9d8a828b016119fe565b95509550506040611bb08a828b01611780565b935050606088013567ffffffffffffffff811115611bd157611bd0611703565b5b611bdd8a828b016119fe565b925092505092959891949750929550565b5f8060408385031215611c0457611c036116ff565b5b5f611c118582860161174d565b9250506020611c228582860161174d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611c7057607f821691505b602082108103611c8357611c82611c2c565b5b50919050565b5f604082019050611c9c5f830185611805565b611ca96020830184611836565b9392505050565b611cb98161182d565b8114611cc3575f80fd5b50565b5f81519050611cd481611cb0565b92915050565b5f60208284031215611cef57611cee6116ff565b5b5f611cfc84828501611cc6565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f604082019050611d455f830185611805565b611d5260208301846118e2565b9392505050565b828183375f83830152505050565b5f611d72838561165f565b9350611d7f838584611d59565b611d8883611697565b840190509392505050565b5f82825260208201905092915050565b5f611dae8385611d93565b9350611dbb838584611d59565b611dc483611697565b840190509392505050565b5f60c082019050611de25f83018c611836565b611def602083018b611805565b8181036040830152611e0281898b611d67565b90508181036060830152611e17818789611da3565b9050611e26608083018661185e565b81810360a0830152611e39818486611da3565b90509a9950505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611e8082611761565b9150611e8b83611761565b9250828203905081811115611ea357611ea2611e49565b5b92915050565b5f611eb382611761565b9150611ebe83611761565b9250828201905080821115611ed657611ed5611e49565b5b92915050565b5f606082019050611eef5f830186611805565b611efc602083018561185e565b611f09604083018461185e565b949350505050565b5f819050919050565b611f2b611f268261182d565b611f11565b82525050565b5f8160601b9050919050565b5f611f4782611f31565b9050919050565b5f611f5882611f3d565b9050919050565b611f70611f6b82611726565b611f4e565b82525050565b5f611f818285611f1a565b602082019150611f918284611f5f565b6014820191508190509392505050565b5f606082019050611fb45f830186611805565b611fc16020830185611805565b611fce604083018461185e565b949350505050565b5f604082019050611fe95f830185611805565b611ff6602083018461185e565b9392505050565b5f6120088286611f1a565b6020820191506120188285611f5f565b6014820191506120288284611f5f565b60148201915081905094935050505056fea26469706673582212206505bb93e3994e4d46cc9675d4b00ff7f7ddf6156efc2f9b7b39e77691562ca564736f6c63430008160033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000b5fb4be02232b1bba4dc8f81dc24c26980de9e3cae9b0c006acf96376dcda26bc8f7c640de9fbf0f40c076408c8e4363eda2d41d000000000000000000000000000000000000000000000000000000000000000842656e205465737400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024254000000000000000000000000000000000000000000000000000000000000