60806040525f60065534801562000014575f80fd5b506040518060400160405280600c81526020017f4672616d6564204e6f756e7300000000000000000000000000000000000000008152506040518060400160405280600c81526020017f4672616d6564204e6f756e730000000000000000000000000000000000000000815250815f908162000091919062000310565b508060019081620000a3919062000310565b505050620003f4565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200012857607f821691505b6020821081036200013e576200013d620000e3565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620001a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000165565b620001ae868362000165565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620001f8620001f2620001ec84620001c6565b620001cf565b620001c6565b9050919050565b5f819050919050565b6200021383620001d8565b6200022b6200022282620001ff565b84845462000171565b825550505050565b5f90565b6200024162000233565b6200024e81848462000208565b505050565b5b818110156200027557620002695f8262000237565b60018101905062000254565b5050565b601f821115620002c4576200028e8162000144565b620002998462000156565b81016020851015620002a9578190505b620002c1620002b88562000156565b83018262000253565b50505b505050565b5f82821c905092915050565b5f620002e65f1984600802620002c9565b1980831691505092915050565b5f620003008383620002d5565b9150826002028217905092915050565b6200031b82620000ac565b67ffffffffffffffff811115620003375762000336620000b6565b5b62000343825462000110565b6200035082828562000279565b5f60209050601f83116001811462000386575f841562000371578287015190505b6200037d8582620002f3565b865550620003ec565b601f198416620003968662000144565b5f5b82811015620003bf5784890151825560018201915060208501945060208101905062000398565b86831015620003df5784890151620003db601f891682620002d5565b8355505b6001600288020188555050505b505050505050565b611be280620004025f395ff3fe608060405234801561000f575f80fd5b50600436106100e8575f3560e01c80636a6278421161008a578063a22cb46511610064578063a22cb46514610258578063b88d4fde14610274578063c87b56dd14610290578063e985e9c5146102c0576100e8565b80636a627842146101ee57806370a082311461020a57806395d89b411461023a576100e8565b8063095ea7b3116100c6578063095ea7b31461016a57806323b872dd1461018657806342842e0e146101a25780636352211e146101be576100e8565b806301ffc9a7146100ec57806306fdde031461011c578063081812fc1461013a575b5f80fd5b6101066004803603810190610101919061137c565b6102f0565b60405161011391906113c1565b60405180910390f35b6101246103d1565b6040516101319190611464565b60405180910390f35b610154600480360381019061014f91906114b7565b610460565b6040516101619190611521565b60405180910390f35b610184600480360381019061017f9190611564565b61047b565b005b6101a0600480360381019061019b91906115a2565b610491565b005b6101bc60048036038101906101b791906115a2565b610590565b005b6101d860048036038101906101d391906114b7565b6105af565b6040516101e59190611521565b60405180910390f35b610208600480360381019061020391906115f2565b6105c0565b005b610224600480360381019061021f91906115f2565b6105e4565b604051610231919061162c565b60405180910390f35b61024261069a565b60405161024f9190611464565b60405180910390f35b610272600480360381019061026d919061166f565b61072a565b005b61028e600480360381019061028991906117d9565b610740565b005b6102aa60048036038101906102a591906114b7565b61075d565b6040516102b79190611464565b60405180910390f35b6102da60048036038101906102d59190611859565b6107b3565b6040516102e791906113c1565b60405180910390f35b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103ba57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103ca57506103c982610841565b5b9050919050565b60605f80546103df906118c4565b80601f016020809104026020016040519081016040528092919081815260200182805461040b906118c4565b80156104565780601f1061042d57610100808354040283529160200191610456565b820191905f5260205f20905b81548152906001019060200180831161043957829003601f168201915b5050505050905090565b5f61046a826108aa565b5061047482610930565b9050919050565b61048d8282610488610969565b610970565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610501575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016104f89190611521565b60405180910390fd5b5f610514838361050f610969565b610982565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461058a578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610581939291906118f4565b60405180910390fd5b50505050565b6105aa83838360405180602001604052805f815250610740565b505050565b5f6105b9826108aa565b9050919050565b60065f81546105ce90611956565b919050819055506105e181600654610b8d565b50565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610655575f6040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161064c9190611521565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6060600180546106a9906118c4565b80601f01602080910402602001604051908101604052809291908181526020018280546106d5906118c4565b80156107205780601f106106f757610100808354040283529160200191610720565b820191905f5260205f20905b81548152906001019060200180831161070357829003601f168201915b5050505050905090565b61073c610735610969565b8383610c80565b5050565b61074b848484610491565b61075784848484610de9565b50505050565b60605f600a8361076d91906119ca565b0361079257604051806080016040528060588152602001611afd6058913990506107ae565b604051806080016040528060588152602001611b556058913990505b919050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f806108b583610f9b565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361092757826040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161091e919061162c565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b61097d8383836001610fd4565b505050565b5f8061098d84610f9b565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146109ce576109cd818486611193565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a5957610a0d5f855f80610fd4565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614610ad857600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bfd575f6040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610bf49190611521565b60405180910390fd5b5f610c0983835f610982565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c7b575f6040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401610c729190611521565b60405180910390fd5b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cf057816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401610ce79190611521565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610ddc91906113c1565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1115610f95578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02610e2c610969565b8685856040518563ffffffff1660e01b8152600401610e4e9493929190611a4c565b6020604051808303815f875af1925050508015610e8957506040513d601f19601f82011682018060405250810190610e869190611aaa565b60015b610f0a573d805f8114610eb7576040519150601f19603f3d011682016040523d82523d5f602084013e610ebc565b606091505b505f815103610f0257836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610ef99190611521565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610f9357836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610f8a9190611521565b60405180910390fd5b505b50505050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b808061100c57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561113e575f61101b846108aa565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561108557508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611098575061109681846107b3565b155b156110da57826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016110d19190611521565b60405180910390fd5b811561113c57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b61119e838383611256565b611251575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361121257806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611209919061162c565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401611248929190611ad5565b60405180910390fd5b505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561130d57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806112ce57506112cd84846107b3565b5b8061130c57508273ffffffffffffffffffffffffffffffffffffffff166112f483610930565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61135b81611327565b8114611365575f80fd5b50565b5f8135905061137681611352565b92915050565b5f602082840312156113915761139061131f565b5b5f61139e84828501611368565b91505092915050565b5f8115159050919050565b6113bb816113a7565b82525050565b5f6020820190506113d45f8301846113b2565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156114115780820151818401526020810190506113f6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611436826113da565b61144081856113e4565b93506114508185602086016113f4565b6114598161141c565b840191505092915050565b5f6020820190508181035f83015261147c818461142c565b905092915050565b5f819050919050565b61149681611484565b81146114a0575f80fd5b50565b5f813590506114b18161148d565b92915050565b5f602082840312156114cc576114cb61131f565b5b5f6114d9848285016114a3565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61150b826114e2565b9050919050565b61151b81611501565b82525050565b5f6020820190506115345f830184611512565b92915050565b61154381611501565b811461154d575f80fd5b50565b5f8135905061155e8161153a565b92915050565b5f806040838503121561157a5761157961131f565b5b5f61158785828601611550565b9250506020611598858286016114a3565b9150509250929050565b5f805f606084860312156115b9576115b861131f565b5b5f6115c686828701611550565b93505060206115d786828701611550565b92505060406115e8868287016114a3565b9150509250925092565b5f602082840312156116075761160661131f565b5b5f61161484828501611550565b91505092915050565b61162681611484565b82525050565b5f60208201905061163f5f83018461161d565b92915050565b61164e816113a7565b8114611658575f80fd5b50565b5f8135905061166981611645565b92915050565b5f80604083850312156116855761168461131f565b5b5f61169285828601611550565b92505060206116a38582860161165b565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6116eb8261141c565b810181811067ffffffffffffffff8211171561170a576117096116b5565b5b80604052505050565b5f61171c611316565b905061172882826116e2565b919050565b5f67ffffffffffffffff821115611747576117466116b5565b5b6117508261141c565b9050602081019050919050565b828183375f83830152505050565b5f61177d6117788461172d565b611713565b905082815260208101848484011115611799576117986116b1565b5b6117a484828561175d565b509392505050565b5f82601f8301126117c0576117bf6116ad565b5b81356117d084826020860161176b565b91505092915050565b5f805f80608085870312156117f1576117f061131f565b5b5f6117fe87828801611550565b945050602061180f87828801611550565b9350506040611820878288016114a3565b925050606085013567ffffffffffffffff81111561184157611840611323565b5b61184d878288016117ac565b91505092959194509250565b5f806040838503121561186f5761186e61131f565b5b5f61187c85828601611550565b925050602061188d85828601611550565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806118db57607f821691505b6020821081036118ee576118ed611897565b5b50919050565b5f6060820190506119075f830186611512565b611914602083018561161d565b6119216040830184611512565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61196082611484565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361199257611991611929565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6119d482611484565b91506119df83611484565b9250826119ef576119ee61199d565b5b828206905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f611a1e826119fa565b611a288185611a04565b9350611a388185602086016113f4565b611a418161141c565b840191505092915050565b5f608082019050611a5f5f830187611512565b611a6c6020830186611512565b611a79604083018561161d565b8181036060830152611a8b8184611a14565b905095945050505050565b5f81519050611aa481611352565b92915050565b5f60208284031215611abf57611abe61131f565b5b5f611acc84828501611a96565b91505092915050565b5f604082019050611ae85f830185611512565b611af5602083018461161d565b939250505056fe68747470733a2f2f6261666b726569636e6e66786b37786b796b796f7134646f34326c6a727867623573737469786773797233616c35796435797a786d34706c68346d2e697066732e6e667473746f726167652e6c696e6b68747470733a2f2f6261666b72656968356577756b3575796d616636736c3462357669767977367a3269687468706f6f6f6b776a7732776572646d6b663568766773792e697066732e6e667473746f726167652e6c696e6ba2646970667358221220e31efa0da657c8eb7f2c356e103406caa0a06bbb2d14b374a62a66da33abc4e264736f6c63430008140033