608060405234801562000010575f80fd5b5060405162002644380380620026448339818101604052810190620000369190620001ea565b8181815f9081620000489190620004a4565b5080600190816200005a9190620004a4565b505050505062000588565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620000c6826200007e565b810181811067ffffffffffffffff82111715620000e857620000e76200008e565b5b80604052505050565b5f620000fc62000065565b90506200010a8282620000bb565b919050565b5f67ffffffffffffffff8211156200012c576200012b6200008e565b5b62000137826200007e565b9050602081019050919050565b5f5b838110156200016357808201518184015260208101905062000146565b5f8484015250505050565b5f620001846200017e846200010f565b620000f1565b905082815260208101848484011115620001a357620001a26200007a565b5b620001b084828562000144565b509392505050565b5f82601f830112620001cf57620001ce62000076565b5b8151620001e18482602086016200016e565b91505092915050565b5f80604083850312156200020357620002026200006e565b5b5f83015167ffffffffffffffff81111562000223576200022262000072565b5b6200023185828601620001b8565b925050602083015167ffffffffffffffff81111562000255576200025462000072565b5b6200026385828601620001b8565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620002bc57607f821691505b602082108103620002d257620002d162000277565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620003367fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002f9565b620003428683620002f9565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200038c6200038662000380846200035a565b62000363565b6200035a565b9050919050565b5f819050919050565b620003a7836200036c565b620003bf620003b68262000393565b84845462000305565b825550505050565b5f90565b620003d5620003c7565b620003e28184846200039c565b505050565b5b818110156200040957620003fd5f82620003cb565b600181019050620003e8565b5050565b601f82111562000458576200042281620002d8565b6200042d84620002ea565b810160208510156200043d578190505b620004556200044c85620002ea565b830182620003e7565b50505b505050565b5f82821c905092915050565b5f6200047a5f19846008026200045d565b1980831691505092915050565b5f62000494838362000469565b9150826002028217905092915050565b620004af826200026d565b67ffffffffffffffff811115620004cb57620004ca6200008e565b5b620004d78254620002a4565b620004e48282856200040d565b5f60209050601f8311600181146200051a575f841562000505578287015190505b62000511858262000487565b86555062000580565b601f1984166200052a86620002d8565b5f5b8281101562000553578489015182556001820191506020850194506020810190506200052c565b868310156200057357848901516200056f601f89168262000469565b8355505b6001600288020188555050505b505050505050565b6120ae80620005965f395ff3fe608060405234801561000f575f80fd5b50600436106100fe575f3560e01c80638fc88c4811610095578063c2f1f14a11610064578063c2f1f14a146102ba578063c87b56dd146102ea578063e030565e1461031a578063e985e9c514610336576100fe565b80638fc88c481461023457806395d89b4114610264578063a22cb46514610282578063b88d4fde1461029e576100fe565b806323b872dd116100d157806323b872dd1461019c57806342842e0e146101b85780636352211e146101d457806370a0823114610204576100fe565b806301ffc9a71461010257806306fdde0314610132578063081812fc14610150578063095ea7b314610180575b5f80fd5b61011c600480360381019061011791906117fc565b610366565b6040516101299190611841565b60405180910390f35b61013a6103df565b60405161014791906118e4565b60405180910390f35b61016a60048036038101906101659190611937565b61046e565b60405161017791906119a1565b60405180910390f35b61019a600480360381019061019591906119e4565b610489565b005b6101b660048036038101906101b19190611a22565b61049f565b005b6101d260048036038101906101cd9190611a22565b61059e565b005b6101ee60048036038101906101e99190611937565b6105bd565b6040516101fb91906119a1565b60405180910390f35b61021e60048036038101906102199190611a72565b6105ce565b60405161022b9190611aac565b60405180910390f35b61024e60048036038101906102499190611937565b610684565b60405161025b9190611aac565b60405180910390f35b61026c6106be565b60405161027991906118e4565b60405180910390f35b61029c60048036038101906102979190611aef565b61074e565b005b6102b860048036038101906102b39190611c59565b610764565b005b6102d460048036038101906102cf9190611937565b610781565b6040516102e191906119a1565b60405180910390f35b61030460048036038101906102ff9190611937565b6107fd565b60405161031191906118e4565b60405180910390f35b610334600480360381019061032f9190611d16565b610863565b005b610350600480360381019061034b9190611d66565b610980565b60405161035d9190611841565b60405180910390f35b5f7fad092b5c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103d857506103d782610a0e565b5b9050919050565b60605f80546103ed90611dd1565b80601f016020809104026020016040519081016040528092919081815260200182805461041990611dd1565b80156104645780601f1061043b57610100808354040283529160200191610464565b820191905f5260205f20905b81548152906001019060200180831161044757829003601f168201915b5050505050905090565b5f61047882610aef565b5061048282610b75565b9050919050565b61049b8282610496610bae565b610bb5565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361050f575f6040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161050691906119a1565b60405180910390fd5b5f610522838361051d610bae565b610bc7565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610598578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161058f93929190611e01565b60405180910390fd5b50505050565b6105b883838360405180602001604052805f815250610764565b505050565b5f6105c782610aef565b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361063f575f6040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161063691906119a1565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60065f8381526020019081526020015f205f0160149054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b6060600180546106cd90611dd1565b80601f01602080910402602001604051908101604052809291908181526020018280546106f990611dd1565b80156107445780601f1061071b57610100808354040283529160200191610744565b820191905f5260205f20905b81548152906001019060200180831161072757829003601f168201915b5050505050905090565b610760610759610bae565b8383610dd2565b5050565b61076f84848461049f565b61077b84848484610f3b565b50505050565b5f4260065f8481526020019081526020015f205f0160149054906101000a900467ffffffffffffffff1667ffffffffffffffff16106107f45760065f8381526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506107f8565b5f90505b919050565b606061080882610aef565b505f6108126110ed565b90505f8151116108305760405180602001604052805f81525061085b565b8061083a84611103565b60405160200161084b929190611e70565b6040516020818303038152906040525b915050919050565b61086d33846111cd565b6108ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a390611f03565b60405180910390fd5b5f60065f8581526020019081526020015f20905082815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081815f0160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff16847f4e06b4e7000e659094299b3533b47b6aa8ad048e95e872d23d1f4ee55af89cfe846040516109729190611f30565b60405180910390a350505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ad857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610ae85750610ae782611261565b5b9050919050565b5f80610afa836112ca565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b6c57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610b639190611aac565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b610bc28383836001611303565b505050565b5f80610bd2846112ca565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610c1357610c128184866114c2565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c9e57610c525f855f80611303565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614610d1d57600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e4257816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401610e3991906119a1565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610f2e9190611841565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b11156110e7578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02610f7e610bae565b8685856040518563ffffffff1660e01b8152600401610fa09493929190611f9b565b6020604051808303815f875af1925050508015610fdb57506040513d601f19601f82011682018060405250810190610fd89190611ff9565b60015b61105c573d805f8114611009576040519150601f19603f3d011682016040523d82523d5f602084013e61100e565b606091505b505f81510361105457836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161104b91906119a1565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146110e557836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016110dc91906119a1565b60405180910390fd5b505b50505050565b606060405180602001604052805f815250905090565b60605f600161111184611585565b0190505f8167ffffffffffffffff81111561112f5761112e611b35565b5b6040519080825280601f01601f1916602001820160405280156111615781602001600182028036833780820191505090505b5090505f82602001820190505b6001156111c2578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816111b7576111b6612024565b5b0494505f850361116e575b819350505050919050565b5f806111d8836105bd565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061124757508373ffffffffffffffffffffffffffffffffffffffff1661122f8461046e565b73ffffffffffffffffffffffffffffffffffffffff16145b8061125857506112578185610980565b5b91505092915050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b808061133b57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561146d575f61134a84610aef565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113b457508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156113c757506113c58184610980565b155b1561140957826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161140091906119a1565b60405180910390fd5b811561146b57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6114cd8383836116d6565b611580575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361154157806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016115389190611aac565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401611577929190612051565b60405180910390fd5b505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106115e1577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816115d7576115d6612024565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061161e576d04ee2d6d415b85acef8100000000838161161457611613612024565b5b0492506020810190505b662386f26fc10000831061164d57662386f26fc10000838161164357611642612024565b5b0492506010810190505b6305f5e1008310611676576305f5e100838161166c5761166b612024565b5b0492506008810190505b612710831061169b57612710838161169157611690612024565b5b0492506004810190505b606483106116be57606483816116b4576116b3612024565b5b0492506002810190505b600a83106116cd576001810190505b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561178d57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061174e575061174d8484610980565b5b8061178c57508273ffffffffffffffffffffffffffffffffffffffff1661177483610b75565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6117db816117a7565b81146117e5575f80fd5b50565b5f813590506117f6816117d2565b92915050565b5f602082840312156118115761181061179f565b5b5f61181e848285016117e8565b91505092915050565b5f8115159050919050565b61183b81611827565b82525050565b5f6020820190506118545f830184611832565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611891578082015181840152602081019050611876565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6118b68261185a565b6118c08185611864565b93506118d0818560208601611874565b6118d98161189c565b840191505092915050565b5f6020820190508181035f8301526118fc81846118ac565b905092915050565b5f819050919050565b61191681611904565b8114611920575f80fd5b50565b5f813590506119318161190d565b92915050565b5f6020828403121561194c5761194b61179f565b5b5f61195984828501611923565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61198b82611962565b9050919050565b61199b81611981565b82525050565b5f6020820190506119b45f830184611992565b92915050565b6119c381611981565b81146119cd575f80fd5b50565b5f813590506119de816119ba565b92915050565b5f80604083850312156119fa576119f961179f565b5b5f611a07858286016119d0565b9250506020611a1885828601611923565b9150509250929050565b5f805f60608486031215611a3957611a3861179f565b5b5f611a46868287016119d0565b9350506020611a57868287016119d0565b9250506040611a6886828701611923565b9150509250925092565b5f60208284031215611a8757611a8661179f565b5b5f611a94848285016119d0565b91505092915050565b611aa681611904565b82525050565b5f602082019050611abf5f830184611a9d565b92915050565b611ace81611827565b8114611ad8575f80fd5b50565b5f81359050611ae981611ac5565b92915050565b5f8060408385031215611b0557611b0461179f565b5b5f611b12858286016119d0565b9250506020611b2385828601611adb565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b6b8261189c565b810181811067ffffffffffffffff82111715611b8a57611b89611b35565b5b80604052505050565b5f611b9c611796565b9050611ba88282611b62565b919050565b5f67ffffffffffffffff821115611bc757611bc6611b35565b5b611bd08261189c565b9050602081019050919050565b828183375f83830152505050565b5f611bfd611bf884611bad565b611b93565b905082815260208101848484011115611c1957611c18611b31565b5b611c24848285611bdd565b509392505050565b5f82601f830112611c4057611c3f611b2d565b5b8135611c50848260208601611beb565b91505092915050565b5f805f8060808587031215611c7157611c7061179f565b5b5f611c7e878288016119d0565b9450506020611c8f878288016119d0565b9350506040611ca087828801611923565b925050606085013567ffffffffffffffff811115611cc157611cc06117a3565b5b611ccd87828801611c2c565b91505092959194509250565b5f67ffffffffffffffff82169050919050565b611cf581611cd9565b8114611cff575f80fd5b50565b5f81359050611d1081611cec565b92915050565b5f805f60608486031215611d2d57611d2c61179f565b5b5f611d3a86828701611923565b9350506020611d4b868287016119d0565b9250506040611d5c86828701611d02565b9150509250925092565b5f8060408385031215611d7c57611d7b61179f565b5b5f611d89858286016119d0565b9250506020611d9a858286016119d0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611de857607f821691505b602082108103611dfb57611dfa611da4565b5b50919050565b5f606082019050611e145f830186611992565b611e216020830185611a9d565b611e2e6040830184611992565b949350505050565b5f81905092915050565b5f611e4a8261185a565b611e548185611e36565b9350611e64818560208601611874565b80840191505092915050565b5f611e7b8285611e40565b9150611e878284611e40565b91508190509392505050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f5f8201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b5f611eed603183611864565b9150611ef882611e93565b604082019050919050565b5f6020820190508181035f830152611f1a81611ee1565b9050919050565b611f2a81611cd9565b82525050565b5f602082019050611f435f830184611f21565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f611f6d82611f49565b611f778185611f53565b9350611f87818560208601611874565b611f908161189c565b840191505092915050565b5f608082019050611fae5f830187611992565b611fbb6020830186611992565b611fc86040830185611a9d565b8181036060830152611fda8184611f63565b905095945050505050565b5f81519050611ff3816117d2565b92915050565b5f6020828403121561200e5761200d61179f565b5b5f61201b84828501611fe5565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6040820190506120645f830185611992565b6120716020830184611a9d565b939250505056fea2646970667358221220f830f044cbe58f37b1d657f6183e635c40fc5691f8fef87efcc6b194f9f4569c64736f6c63430008140033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000009455243343930372d3100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007574d343930373100000000000000000000000000000000000000000000000000