0x608060405273420000000000000000000000000000000000000660015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734752ba5dbc23f44d87826276bf6fd6b1c372ad2460025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6008553480156100bb575f80fd5b506040516142a43803806142a483398181016040528101906100dd9190610318565b6100eb6101f260201b60201c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361015b575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101529190610365565b60405180910390fd5b61016a816101f960201b60201c565b508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505061037e565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102e7826102be565b9050919050565b6102f7816102dd565b8114610301575f80fd5b50565b5f81519050610312816102ee565b92915050565b5f806040838503121561032e5761032d6102ba565b5b5f61033b85828601610304565b925050602061034c85828601610304565b9150509250929050565b61035f816102dd565b82525050565b5f6020820190506103785f830184610356565b92915050565b613f198061038b5f395ff3fe608060405234801561000f575f80fd5b5060043610610091575f3560e01c8063d6d5b5ca11610064578063d6d5b5ca146100f5578063d9a1162a14610113578063e0eb6c631461012f578063e0fd51d31461014b578063f2fde38b1461016757610091565b806352a9364b146100955780636d8b2498146100b1578063715018a6146100cd5780638da5cb5b146100d7575b5f80fd5b6100af60048036038101906100aa91906118ae565b610183565b005b6100cb60048036038101906100c6919061191f565b61071e565b005b6100d56108e9565b005b6100df6108fc565b6040516100ec919061196c565b60405180910390f35b6100fd610923565b60405161010a919061199f565b60405180910390f35b61012d60048036038101906101289190611a19565b610935565b005b61014960048036038101906101449190611b9c565b610dac565b005b6101656004803603810190610160919061191f565b6110e9565b005b610181600480360381019061017c9190611c38565b61151c565b005b61019361018e6115a0565b6115a7565b6101d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101c990611cbd565b60405180910390fd5b5f8290505f8173ffffffffffffffffffffffffffffffffffffffff166370a0823160065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610231919061196c565b602060405180830381865afa15801561024c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102709190611cef565b90508173ffffffffffffffffffffffffffffffffffffffff166305dcb36b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630846040518463ffffffff1660e01b81526004016102d093929190611d29565b6020604051808303815f875af11580156102ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103109190611d88565b505f670de0b6b3a7640000826103269190611de0565b90505f8373ffffffffffffffffffffffffffffffffffffffff166323b872dd60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630856040518463ffffffff1660e01b815260040161038793929190611d29565b6020604051808303815f875af11580156103a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103c79190611d88565b9050806103d2575f80fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561043c575f80fd5b505af115801561044e573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016104ce929190611e13565b6020604051808303815f875af11580156104ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061050e9190611d88565b61054d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054490611e84565b60405180910390fd5b5f600267ffffffffffffffff81111561056957610568611a78565b5b6040519080825280602002602001820160405280156105975781602001602082028036833780820191505090505b50905087815f815181106105ae576105ad611ea2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061061e5761061d611ea2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe5855f848b610384426106a79190611ecf565b6040518663ffffffff1660e01b81526004016106c7959493929190611ffb565b5f604051808303815f875af11580156106e2573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061070a9190612113565b506107145f61163c565b5050505050505050565b61072e6107296115a0565b6115a7565b61076d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076490611cbd565b60405180910390fd5b8160045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107c8919061196c565b602060405180830381865afa1580156107e3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108079190611cef565b1015610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083f906121a4565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846040518363ffffffff1660e01b81526004016108a4929190611e13565b6020604051808303815f875af11580156108c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e49190611d88565b505050565b6108f16116ee565b6108fa5f611775565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095f9054906101000a900460ff1681565b61093d6116ee565b5f5b82829050811015610da7575f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823185858581811061099b5761099a611ea2565b5b90506020020160208101906109b09190611c38565b6040518263ffffffff1660e01b81526004016109cc919061196c565b602060405180830381865afa1580156109e7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0b9190611cef565b90505f81118015610a90575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16848484818110610a6257610a61611ea2565b5b9050602002016020810190610a779190611c38565b73ffffffffffffffffffffffffffffffffffffffff1614155b8015610aef57503073ffffffffffffffffffffffffffffffffffffffff16848484818110610ac157610ac0611ea2565b5b9050602002016020810190610ad69190611c38565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610d99575f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166305dcb36b868686818110610b4557610b44611ea2565b5b9050602002016020810190610b5a9190611c38565b30856040518463ffffffff1660e01b8152600401610b7a93929190611d29565b6020604051808303815f875af1158015610b96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bba9190611d88565b905080610bc5575f80fd5b5f61271060085484610bd791906121c2565b610be19190612230565b90505f8184610bf09190611de0565b90505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd898989818110610c4357610c42611ea2565b5b9050602002016020810190610c589190611c38565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b8152600401610c9993929190611d29565b6020604051808303815f875af1158015610cb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd99190611d88565b905080610ce4575f80fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166379c65068898989818110610d3457610d33611ea2565b5b9050602002016020810190610d499190611c38565b846040518363ffffffff1660e01b8152600401610d67929190611e13565b5f604051808303815f87803b158015610d7e575f80fd5b505af1158015610d90573d5f803e3d5ffd5b50505050505050505b50808060010191505061093f565b505050565b610db46116ee565b8360045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f838383604051610e0490611836565b610e10939291906122b0565b604051809103905ff080158015610e29573d5f803e3d5ffd5b5090508060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f738909dc15e40173ff4699343b6eb8132c65e18ec690505f8690505f73420000000000000000000000000000000000000690505f808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610edc578284610edf565b83835b915091505f8282604051602001610ef7929190612338565b6040516020818303038152906040528051906020012090508581604051602001610f2292919061242a565b604051602081830303815290604052805190602001205f1c60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff906124b5565b60405180910390fd5b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663f732208660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016040518363ffffffff1660e01b815260040161108a9291906124d3565b5f604051808303815f87803b1580156110a1575f80fd5b505af11580156110b3573d5f803e3d5ffd5b505050506110c1600161163c565b600160095f6101000a81548160ff021916908315150217905550505050505050505050505050565b6110f96110f46115a0565b6115a7565b611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f90611cbd565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016111d5929190611e13565b6020604051808303815f875af11580156111f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112159190611d88565b611254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124b90611e84565b60405180910390fd5b8160045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112af919061196c565b602060405180830381865afa1580156112ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ee9190611cef565b101561132f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611326906121a4565b60405180910390fd5b5f600267ffffffffffffffff81111561134b5761134a611a78565b5b6040519080825280602002602001820160405280156113795781602001602082028036833780820191505090505b50905060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815f815181106113b1576113b0611ea2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061142157611420611ea2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe5845f8486610384426114aa9190611ecf565b6040518663ffffffff1660e01b81526004016114ca959493929190611ffb565b5f604051808303815f875af11580156114e5573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061150d9190612113565b506115175f61163c565b505050565b6115246116ee565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611594575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161158b919061196c565b60405180910390fd5b61159d81611775565b50565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061163557508173ffffffffffffffffffffffffffffffffffffffff1661161d6108fc565b73ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663225a0de060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016116bd9291906124d3565b5f604051808303815f87803b1580156116d4575f80fd5b505af11580156116e6573d5f803e3d5ffd5b505050505050565b6116f66115a0565b73ffffffffffffffffffffffffffffffffffffffff166117146108fc565b73ffffffffffffffffffffffffffffffffffffffff1614611773576117376115a0565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161176a919061196c565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6119e9806124fb83390190565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61187d82611854565b9050919050565b61188d81611873565b8114611897575f80fd5b50565b5f813590506118a881611884565b92915050565b5f80604083850312156118c4576118c361184c565b5b5f6118d18582860161189a565b92505060206118e28582860161189a565b9150509250929050565b5f819050919050565b6118fe816118ec565b8114611908575f80fd5b50565b5f81359050611919816118f5565b92915050565b5f80604083850312156119355761193461184c565b5b5f6119428582860161190b565b92505060206119538582860161189a565b9150509250929050565b61196681611873565b82525050565b5f60208201905061197f5f83018461195d565b92915050565b5f8115159050919050565b61199981611985565b82525050565b5f6020820190506119b25f830184611990565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126119d9576119d86119b8565b5b8235905067ffffffffffffffff8111156119f6576119f56119bc565b5b602083019150836020820283011115611a1257611a116119c0565b5b9250929050565b5f8060208385031215611a2f57611a2e61184c565b5b5f83013567ffffffffffffffff811115611a4c57611a4b611850565b5b611a58858286016119c4565b92509250509250929050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611aae82611a68565b810181811067ffffffffffffffff82111715611acd57611acc611a78565b5b80604052505050565b5f611adf611843565b9050611aeb8282611aa5565b919050565b5f67ffffffffffffffff821115611b0a57611b09611a78565b5b611b1382611a68565b9050602081019050919050565b828183375f83830152505050565b5f611b40611b3b84611af0565b611ad6565b905082815260208101848484011115611b5c57611b5b611a64565b5b611b67848285611b20565b509392505050565b5f82601f830112611b8357611b826119b8565b5b8135611b93848260208601611b2e565b91505092915050565b5f805f8060808587031215611bb457611bb361184c565b5b5f611bc18782880161189a565b9450506020611bd28782880161190b565b935050604085013567ffffffffffffffff811115611bf357611bf2611850565b5b611bff87828801611b6f565b925050606085013567ffffffffffffffff811115611c2057611c1f611850565b5b611c2c87828801611b6f565b91505092959194509250565b5f60208284031215611c4d57611c4c61184c565b5b5f611c5a8482850161189a565b91505092915050565b5f82825260208201905092915050565b7f67670000000000000000000000000000000000000000000000000000000000005f82015250565b5f611ca7600283611c63565b9150611cb282611c73565b602082019050919050565b5f6020820190508181035f830152611cd481611c9b565b9050919050565b5f81519050611ce9816118f5565b92915050565b5f60208284031215611d0457611d0361184c565b5b5f611d1184828501611cdb565b91505092915050565b611d23816118ec565b82525050565b5f606082019050611d3c5f83018661195d565b611d49602083018561195d565b611d566040830184611d1a565b949350505050565b611d6781611985565b8114611d71575f80fd5b50565b5f81519050611d8281611d5e565b92915050565b5f60208284031215611d9d57611d9c61184c565b5b5f611daa84828501611d74565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611dea826118ec565b9150611df5836118ec565b9250828203905081811115611e0d57611e0c611db3565b5b92915050565b5f604082019050611e265f83018561195d565b611e336020830184611d1a565b9392505050565b7f617070726f7665206661696c65640000000000000000000000000000000000005f82015250565b5f611e6e600e83611c63565b9150611e7982611e3a565b602082019050919050565b5f6020820190508181035f830152611e9b81611e62565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f611ed9826118ec565b9150611ee4836118ec565b9250828201905080821115611efc57611efb611db3565b5b92915050565b5f819050919050565b5f819050919050565b5f611f2e611f29611f2484611f02565b611f0b565b6118ec565b9050919050565b611f3e81611f14565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611f7681611873565b82525050565b5f611f878383611f6d565b60208301905092915050565b5f602082019050919050565b5f611fa982611f44565b611fb38185611f4e565b9350611fbe83611f5e565b805f5b83811015611fee578151611fd58882611f7c565b9750611fe083611f93565b925050600181019050611fc1565b5085935050505092915050565b5f60a08201905061200e5f830188611d1a565b61201b6020830187611f35565b818103604083015261202d8186611f9f565b905061203c606083018561195d565b6120496080830184611d1a565b9695505050505050565b5f67ffffffffffffffff82111561206d5761206c611a78565b5b602082029050602081019050919050565b5f61209061208b84612053565b611ad6565b905080838252602082019050602084028301858111156120b3576120b26119c0565b5b835b818110156120dc57806120c88882611cdb565b8452602084019350506020810190506120b5565b5050509392505050565b5f82601f8301126120fa576120f96119b8565b5b815161210a84826020860161207e565b91505092915050565b5f602082840312156121285761212761184c565b5b5f82015167ffffffffffffffff81111561214557612144611850565b5b612151848285016120e6565b91505092915050565b7f496e73756666696369656e7420746f6b656e2062616c616e63650000000000005f82015250565b5f61218e601a83611c63565b91506121998261215a565b602082019050919050565b5f6020820190508181035f8301526121bb81612182565b9050919050565b5f6121cc826118ec565b91506121d7836118ec565b92508282026121e5816118ec565b915082820484148315176121fc576121fb611db3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61223a826118ec565b9150612245836118ec565b92508261225557612254612203565b5b828204905092915050565b5f81519050919050565b8281835e5f83830152505050565b5f61228282612260565b61228c8185611c63565b935061229c81856020860161226a565b6122a581611a68565b840191505092915050565b5f6060820190506122c35f830186611d1a565b81810360208301526122d58185612278565b905081810360408301526122e98184612278565b9050949350505050565b5f8160601b9050919050565b5f612309826122f3565b9050919050565b5f61231a826122ff565b9050919050565b61233261232d82611873565b612310565b82525050565b5f6123438285612321565b6014820191506123538284612321565b6014820191508190509392505050565b5f81905092915050565b7fff000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6123a1600183612363565b91506123ac8261236d565b600182019050919050565b5f819050919050565b5f819050919050565b6123da6123d5826123b7565b6123c0565b82525050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f5f82015250565b5f612414602083612363565b915061241f826123e0565b602082019050919050565b5f61243482612395565b91506124408285612321565b60148201915061245082846123c9565b60208201915061245f82612408565b91508190509392505050565b7f6765742070616972206661696c656400000000000000000000000000000000005f82015250565b5f61249f600f83611c63565b91506124aa8261246b565b602082019050919050565b5f6020820190508181035f8301526124cc81612493565b9050919050565b5f6040820190506124e65f83018561195d565b6124f36020830184611990565b939250505056fe608060405234801561000f575f80fd5b506040516119e93803806119e9833981810160405281019061003191906102f0565b815f908161003f919061057c565b50806001908161004f919061057c565b50670de0b6b3a7640000836100649190610678565b6002819055503360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050506106b9565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b61019381610181565b811461019d575f80fd5b50565b5f815190506101ae8161018a565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610202826101bc565b810181811067ffffffffffffffff82111715610221576102206101cc565b5b80604052505050565b5f610233610170565b905061023f82826101f9565b919050565b5f67ffffffffffffffff82111561025e5761025d6101cc565b5b610267826101bc565b9050602081019050919050565b8281835e5f83830152505050565b5f61029461028f84610244565b61022a565b9050828152602081018484840111156102b0576102af6101b8565b5b6102bb848285610274565b509392505050565b5f82601f8301126102d7576102d66101b4565b5b81516102e7848260208601610282565b91505092915050565b5f805f6060848603121561030757610306610179565b5b5f610314868287016101a0565b935050602084015167ffffffffffffffff8111156103355761033461017d565b5b610341868287016102c3565b925050604084015167ffffffffffffffff8111156103625761036161017d565b5b61036e868287016102c3565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806103c657607f821691505b6020821081036103d9576103d8610382565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261043b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610400565b6104458683610400565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61048061047b61047684610181565b61045d565b610181565b9050919050565b5f819050919050565b61049983610466565b6104ad6104a582610487565b84845461040c565b825550505050565b5f90565b6104c16104b5565b6104cc818484610490565b505050565b5b818110156104ef576104e45f826104b9565b6001810190506104d2565b5050565b601f82111561053457610505816103df565b61050e846103f1565b8101602085101561051d578190505b610531610529856103f1565b8301826104d1565b50505b505050565b5f82821c905092915050565b5f6105545f1984600802610539565b1980831691505092915050565b5f61056c8383610545565b9150826002028217905092915050565b61058582610378565b67ffffffffffffffff81111561059e5761059d6101cc565b5b6105a882546103af565b6105b38282856104f3565b5f60209050601f8311600181146105e4575f84156105d2578287015190505b6105dc8582610561565b865550610643565b601f1984166105f2866103df565b5f5b82811015610619578489015182556001820191506020850194506020810190506105f4565b868310156106365784890151610632601f891682610545565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61068282610181565b915061068d83610181565b925082820261069b81610181565b915082820484148315176106b2576106b161064b565b5b5092915050565b611323806106c65f395ff3fe608060405234801561000f575f80fd5b50600436106100b2575f3560e01c8063715018a61161006f578063715018a6146101a057806379c65068146101aa5780638da5cb5b146101c657806395d89b41146101e4578063a9059cbb14610202578063dd62ed3e14610232576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd14610122578063313ce5671461015257806370a0823114610170575b5f80fd5b6100be610262565b6040516100cb9190610cc6565b60405180910390f35b6100ee60048036038101906100e99190610d77565b6102ed565b6040516100fb9190610dcf565b60405180910390f35b61010c610303565b6040516101199190610df7565b60405180910390f35b61013c60048036038101906101379190610e10565b610309565b6040516101499190610dcf565b60405180910390f35b61015a6103ae565b6040516101679190610e7b565b60405180910390f35b61018a60048036038101906101859190610e94565b6103b3565b6040516101979190610df7565b60405180910390f35b6101a86103f9565b005b6101c460048036038101906101bf9190610d77565b61052e565b005b6101ce6106de565b6040516101db9190610ece565b60405180910390f35b6101ec610703565b6040516101f99190610cc6565b60405180910390f35b61021c60048036038101906102179190610d77565b61078f565b6040516102299190610dcf565b60405180910390f35b61024c60048036038101906102479190610ee7565b6107a5565b6040516102599190610df7565b60405180910390f35b5f805461026e90610f52565b80601f016020809104026020016040519081016040528092919081815260200182805461029a90610f52565b80156102e55780601f106102bc576101008083540402835291602001916102e5565b820191905f5260205f20905b8154815290600101906020018083116102c857829003601f168201915b505050505081565b5f6102f9338484610827565b6001905092915050565b60025481565b5f6103158484846109ea565b6103a384338460055f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461039e9190610faf565b610827565b600190509392505050565b601281565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047f9061102c565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a25f60035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b49061102c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361062b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062290611094565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516106d29190610df7565b60405180910390a35050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6001805461071090610f52565b80601f016020809104026020016040519081016040528092919081815260200182805461073c90610f52565b80156107875780601f1061075e57610100808354040283529160200191610787565b820191905f5260205f20905b81548152906001019060200180831161076a57829003601f168201915b505050505081565b5f61079b3384846109ea565b6001905092915050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088c906110fc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fa90611164565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109dd9190610df7565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4f906111cc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abd90611234565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3d9061129c565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610b929190610faf565b925050819055508060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610be591906112ba565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c499190610df7565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610c9882610c56565b610ca28185610c60565b9350610cb2818560208601610c70565b610cbb81610c7e565b840191505092915050565b5f6020820190508181035f830152610cde8184610c8e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d1382610cea565b9050919050565b610d2381610d09565b8114610d2d575f80fd5b50565b5f81359050610d3e81610d1a565b92915050565b5f819050919050565b610d5681610d44565b8114610d60575f80fd5b50565b5f81359050610d7181610d4d565b92915050565b5f8060408385031215610d8d57610d8c610ce6565b5b5f610d9a85828601610d30565b9250506020610dab85828601610d63565b9150509250929050565b5f8115159050919050565b610dc981610db5565b82525050565b5f602082019050610de25f830184610dc0565b92915050565b610df181610d44565b82525050565b5f602082019050610e0a5f830184610de8565b92915050565b5f805f60608486031215610e2757610e26610ce6565b5b5f610e3486828701610d30565b9350506020610e4586828701610d30565b9250506040610e5686828701610d63565b9150509250925092565b5f60ff82169050919050565b610e7581610e60565b82525050565b5f602082019050610e8e5f830184610e6c565b92915050565b5f60208284031215610ea957610ea8610ce6565b5b5f610eb684828501610d30565b91505092915050565b610ec881610d09565b82525050565b5f602082019050610ee15f830184610ebf565b92915050565b5f8060408385031215610efd57610efc610ce6565b5b5f610f0a85828601610d30565b9250506020610f1b85828601610d30565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610f6957607f821691505b602082108103610f7c57610f7b610f25565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610fb982610d44565b9150610fc483610d44565b9250828203905081811115610fdc57610fdb610f82565b5b92915050565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f611016601783610c60565b915061102182610fe2565b602082019050919050565b5f6020820190508181035f8301526110438161100a565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f61107e601f83610c60565b91506110898261104a565b602082019050919050565b5f6020820190508181035f8301526110ab81611072565b9050919050565b7f417070726f76652066726f6d20746865207a65726f20616464726573730000005f82015250565b5f6110e6601d83610c60565b91506110f1826110b2565b602082019050919050565b5f6020820190508181035f830152611113816110da565b9050919050565b7f417070726f766520746f20746865207a65726f206164647265737300000000005f82015250565b5f61114e601b83610c60565b91506111598261111a565b602082019050919050565b5f6020820190508181035f83015261117b81611142565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f206164647265737300005f82015250565b5f6111b6601e83610c60565b91506111c182611182565b602082019050919050565b5f6020820190508181035f8301526111e3816111aa565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373000000005f82015250565b5f61121e601c83610c60565b9150611229826111ea565b602082019050919050565b5f6020820190508181035f83015261124b81611212565b9050919050565b7f5472616e7366657220616d6f756e7420657863656564732062616c616e6365005f82015250565b5f611286601f83610c60565b915061129182611252565b602082019050919050565b5f6020820190508181035f8301526112b38161127a565b9050919050565b5f6112c482610d44565b91506112cf83610d44565b92508282019050808211156112e7576112e6610f82565b5b9291505056fea2646970667358221220635bc3f5c226e42e70cb17f13b2e152436dd0d58fae56c79da9ef8e62bb5612664736f6c634300081a0033a2646970667358221220051a64392c6241d832fd4758691aabbb0a38892832055374fbe934a49bd7849964736f6c634300081a003300000000000000000000000061f59585cb1918ea15d855f8c2af74d1cf88ce930000000000000000000000008b6f9532823c45f9c24de47aaedbda0adde6bfed