608060405260405180602001604052805f815250600b9081610021919061059a565b506103e7601055348015610033575f80fd5b50604051613f40380380613f4083398181016040528101906100559190610906565b86868160029081610066919061059a565b508060039081610076919061059a565b5061008561019a60201b60201c565b5f8190555050506100a861009d6101a260201b60201c565b6101a960201b60201c565b60016009819055506100bf8861026c60201b60201c565b6100ce8861028d60201b60201c565b83600f8190555082600d819055508160115f6101000a81548160ff02191690831515021790555084600b9081610104919061059a565b505f5b815181101561018c57600160125f84848151811061012857610127610a43565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610107565b505050505050505050610ae8565b5f6001905090565b5f33905090565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61027a6102ae60201b60201c565b80600a9081610289919061059a565b5050565b61029b6102ae60201b60201c565b80600c90816102aa919061059a565b5050565b6102bc6101a260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166102e061033860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614610336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032d90610aca565b60405180910390fd5b565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806103db57607f821691505b6020821081036103ee576103ed610397565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610415565b61045a8683610415565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61049e61049961049484610472565b61047b565b610472565b9050919050565b5f819050919050565b6104b783610484565b6104cb6104c3826104a5565b848454610421565b825550505050565b5f90565b6104df6104d3565b6104ea8184846104ae565b505050565b5b8181101561050d576105025f826104d7565b6001810190506104f0565b5050565b601f82111561055257610523816103f4565b61052c84610406565b8101602085101561053b578190505b61054f61054785610406565b8301826104ef565b50505b505050565b5f82821c905092915050565b5f6105725f1984600802610557565b1980831691505092915050565b5f61058a8383610563565b9150826002028217905092915050565b6105a382610360565b67ffffffffffffffff8111156105bc576105bb61036a565b5b6105c682546103c4565b6105d1828285610511565b5f60209050601f831160018114610602575f84156105f0578287015190505b6105fa858261057f565b865550610661565b601f198416610610866103f4565b5f5b8281101561063757848901518255600182019150602085019450602081019050610612565b868310156106545784890151610650601f891682610563565b8355505b6001600288020188555050505b505050505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b61069b82610682565b810181811067ffffffffffffffff821117156106ba576106b961036a565b5b80604052505050565b5f6106cc610669565b90506106d88282610692565b919050565b5f67ffffffffffffffff8211156106f7576106f661036a565b5b61070082610682565b9050602081019050919050565b8281835e5f83830152505050565b5f61072d610728846106dd565b6106c3565b9050828152602081018484840111156107495761074861067e565b5b61075484828561070d565b509392505050565b5f82601f8301126107705761076f61067a565b5b815161078084826020860161071b565b91505092915050565b61079281610472565b811461079c575f80fd5b50565b5f815190506107ad81610789565b92915050565b5f8115159050919050565b6107c7816107b3565b81146107d1575f80fd5b50565b5f815190506107e2816107be565b92915050565b5f67ffffffffffffffff8211156108025761080161036a565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61084082610817565b9050919050565b61085081610836565b811461085a575f80fd5b50565b5f8151905061086b81610847565b92915050565b5f61088361087e846107e8565b6106c3565b905080838252602082019050602084028301858111156108a6576108a5610813565b5b835b818110156108cf57806108bb888261085d565b8452602084019350506020810190506108a8565b5050509392505050565b5f82601f8301126108ed576108ec61067a565b5b81516108fd848260208601610871565b91505092915050565b5f805f805f805f80610100898b03121561092357610922610672565b5b5f89015167ffffffffffffffff8111156109405761093f610676565b5b61094c8b828c0161075c565b985050602089015167ffffffffffffffff81111561096d5761096c610676565b5b6109798b828c0161075c565b975050604089015167ffffffffffffffff81111561099a57610999610676565b5b6109a68b828c0161075c565b965050606089015167ffffffffffffffff8111156109c7576109c6610676565b5b6109d38b828c0161075c565b95505060806109e48b828c0161079f565b94505060a06109f58b828c0161079f565b93505060c0610a068b828c016107d4565b92505060e089015167ffffffffffffffff811115610a2757610a26610676565b5b610a338b828c016108d9565b9150509295985092959890939650565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f610ab4602083610a70565b9150610abf82610a80565b602082019050919050565b5f6020820190508181035f830152610ae181610aa8565b9050919050565b61344b80610af55f395ff3fe608060405260043610610219575f3560e01c806370a0823111610122578063bd7a1998116100aa578063dc33e6811161006e578063dc33e68114610785578063e268e4d3146107c1578063e985e9c5146107e9578063f2c4ce1e14610825578063f2fde38b1461084d57610219565b8063bd7a1998146106a3578063c6682862146106cd578063c87b56dd146106f7578063d5abeb0114610733578063da3ef23f1461075d57610219565b8063940cd05b116100f1578063940cd05b146105e557806395d89b411461060d578063a0712d6814610637578063a22cb46514610653578063b88d4fde1461067b57610219565b806370a082311461052d578063715018a6146105695780638462151c1461057f5780638da5cb5b146105bb57610219565b806323b872dd116101a557806344a0d68a1161017457806344a0d68a1461044d578063518302271461047557806355f804b31461049f5780636352211e146104c75780636c0360eb1461050357610219565b806323b872dd146103c957806336afeca2146103f15780633ccfd60b1461041b57806342842e0e1461042557610219565b8063081c8c44116101ec578063081c8c44146102fb578063095ea7b31461032557806313faede61461034d578063149835a01461037757806318160ddd1461039f57610219565b806301ffc9a71461021d57806306c933d81461025957806306fdde0314610295578063081812fc146102bf575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e919061251f565b610875565b6040516102509190612564565b60405180910390f35b348015610264575f80fd5b5061027f600480360381019061027a91906125d7565b610906565b60405161028c9190612564565b60405180910390f35b3480156102a0575f80fd5b506102a9610923565b6040516102b69190612672565b60405180910390f35b3480156102ca575f80fd5b506102e560048036038101906102e091906126c5565b6109b3565b6040516102f291906126ff565b60405180910390f35b348015610306575f80fd5b5061030f610a2d565b60405161031c9190612672565b60405180910390f35b348015610330575f80fd5b5061034b60048036038101906103469190612718565b610ab9565b005b348015610358575f80fd5b50610361610bf8565b60405161036e9190612765565b60405180910390f35b348015610382575f80fd5b5061039d600480360381019061039891906126c5565b610bfe565b005b3480156103aa575f80fd5b506103b3610c10565b6040516103c09190612765565b60405180910390f35b3480156103d4575f80fd5b506103ef60048036038101906103ea919061277e565b610c25565b005b3480156103fc575f80fd5b50610405610f33565b6040516104129190612765565b60405180910390f35b610423610f39565b005b348015610430575f80fd5b5061044b6004803603810190610446919061277e565b610fe8565b005b348015610458575f80fd5b50610473600480360381019061046e91906126c5565b611007565b005b348015610480575f80fd5b50610489611019565b6040516104969190612564565b60405180910390f35b3480156104aa575f80fd5b506104c560048036038101906104c091906128fa565b61102b565b005b3480156104d2575f80fd5b506104ed60048036038101906104e891906126c5565b611046565b6040516104fa91906126ff565b60405180910390f35b34801561050e575f80fd5b50610517611057565b6040516105249190612672565b60405180910390f35b348015610538575f80fd5b50610553600480360381019061054e91906125d7565b6110e3565b6040516105609190612765565b60405180910390f35b348015610574575f80fd5b5061057d611198565b005b34801561058a575f80fd5b506105a560048036038101906105a091906125d7565b6111ab565b6040516105b291906129f8565b60405180910390f35b3480156105c6575f80fd5b506105cf6112e7565b6040516105dc91906126ff565b60405180910390f35b3480156105f0575f80fd5b5061060b60048036038101906106069190612a42565b61130f565b005b348015610618575f80fd5b50610621611333565b60405161062e9190612672565b60405180910390f35b610651600480360381019061064c91906126c5565b6113c3565b005b34801561065e575f80fd5b5061067960048036038101906106749190612a6d565b611528565b005b348015610686575f80fd5b506106a1600480360381019061069c9190612b49565b61169a565b005b3480156106ae575f80fd5b506106b761170c565b6040516106c49190612765565b60405180910390f35b3480156106d8575f80fd5b506106e1611712565b6040516106ee9190612672565b60405180910390f35b348015610702575f80fd5b5061071d600480360381019061071891906126c5565b61179e565b60405161072a9190612672565b60405180910390f35b34801561073e575f80fd5b506107476118ef565b6040516107549190612765565b60405180910390f35b348015610768575f80fd5b50610783600480360381019061077e91906128fa565b6118f5565b005b348015610790575f80fd5b506107ab60048036038101906107a691906125d7565b611910565b6040516107b89190612765565b60405180910390f35b3480156107cc575f80fd5b506107e760048036038101906107e291906126c5565b611921565b005b3480156107f4575f80fd5b5061080f600480360381019061080a9190612bc9565b611933565b60405161081c9190612564565b60405180910390f35b348015610830575f80fd5b5061084b600480360381019061084691906128fa565b6119c1565b005b348015610858575f80fd5b50610873600480360381019061086e91906125d7565b6119dc565b005b5f6301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108cf57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108ff5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6012602052805f5260405f205f915054906101000a900460ff1681565b60606002805461093290612c34565b80601f016020809104026020016040519081016040528092919081815260200182805461095e90612c34565b80156109a95780601f10610980576101008083540402835291602001916109a9565b820191905f5260205f20905b81548152906001019060200180831161098c57829003601f168201915b5050505050905090565b5f6109bd82611a5e565b6109f3576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065f8381526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600c8054610a3a90612c34565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6690612c34565b8015610ab15780601f10610a8857610100808354040283529160200191610ab1565b820191905f5260205f20905b815481529060010190602001808311610a9457829003601f168201915b505050505081565b5f610ac382611046565b90508073ffffffffffffffffffffffffffffffffffffffff16610ae4611ab8565b73ffffffffffffffffffffffffffffffffffffffff1614610b4757610b1081610b0b611ab8565b611933565b610b46576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8260065f8481526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600d5481565b610c06611abf565b80600f8190555050565b5f610c19611b3d565b6001545f540303905090565b5f610c2f82611b45565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c96576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80610ca184611c08565b91509150610cb78187610cb2611ab8565b611c2b565b610d0357610ccc86610cc7611ab8565b611933565b610d02576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610d68576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d758686866001611c6e565b8015610d7f575f82555b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600190039190508190555060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815460010191905081905550610e4785610e23888887611c74565b7c020000000000000000000000000000000000000000000000000000000017611c9b565b60045f8681526020019081526020015f20819055505f7c0200000000000000000000000000000000000000000000000000000000841603610ec3575f6001850190505f60045f8381526020019081526020015f205403610ec1575f548114610ec0578360045f8381526020019081526020015f20819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610f2b8686866001611cc5565b505050505050565b600e5481565b610f41611abf565b600260095403610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d90612cae565b60405180910390fd5b60026009819055505f479050610f9a611ab8565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610fdc573d5f803e3d5ffd5b50506001600981905550565b61100283838360405180602001604052805f81525061169a565b505050565b61100f611abf565b80600d8190555050565b60115f9054906101000a900460ff1681565b611033611abf565b80600a90816110429190612e69565b5050565b5f61105082611b45565b9050919050565b600a805461106490612c34565b80601f016020809104026020016040519081016040528092919081815260200182805461109090612c34565b80156110db5780601f106110b2576101008083540402835291602001916110db565b820191905f5260205f20905b8154815290600101906020018083116110be57829003601f168201915b505050505081565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611149576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054169050919050565b6111a0611abf565b6111a95f611ccb565b565b60605f805f6111b9856110e3565b90505f8167ffffffffffffffff8111156111d6576111d56127d6565b5b6040519080825280602002602001820160405280156112045781602001602082028036833780820191505090505b50905061120f61246e565b5f611218611b3d565b90505b8386146112d95761122b81611d8e565b915081604001516112ce575f73ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff161461127357815f015194505b8773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036112cd57808387806001019850815181106112c0576112bf612f38565b5b6020026020010181815250505b5b80600101905061121b565b508195505050505050919050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611317611abf565b8060115f6101000a81548160ff02191690831515021790555050565b60606003805461134290612c34565b80601f016020809104026020016040519081016040528092919081815260200182805461136e90612c34565b80156113b95780601f10611390576101008083540402835291602001916113b9565b820191905f5260205f20905b81548152906001019060200180831161139c57829003601f168201915b5050505050905090565b600260095403611408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ff90612cae565b60405180910390fd5b600260098190555060125f61141b611db7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166114be575f3411156114b9576114756112e7565b73ffffffffffffffffffffffffffffffffffffffff166108fc3490811502906040515f60405180830381858888f193505050501580156114b7573d5f803e3d5ffd5b505b61150c565b5f34111561150b573373ffffffffffffffffffffffffffffffffffffffff166108fc3490811502906040515f60405180830381858888f19350505050158015611509573d5f803e3d5ffd5b505b5b61151d611517611ab8565b82611dbe565b600160098190555050565b611530611ab8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611594576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060075f6115a0611ab8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611649611ab8565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161168e9190612564565b60405180910390a35050565b6116a5848484610c25565b5f8373ffffffffffffffffffffffffffffffffffffffff163b14611706576116cf84848484611ddb565b611705576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b60105481565b600b805461171f90612c34565b80601f016020809104026020016040519081016040528092919081815260200182805461174b90612c34565b80156117965780601f1061176d57610100808354040283529160200191611796565b820191905f5260205f20905b81548152906001019060200180831161177957829003601f168201915b505050505081565b60606117a982611a5e565b6117e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117df90612fd5565b60405180910390fd5b5f151560115f9054906101000a900460ff1615150361189157600c805461180e90612c34565b80601f016020809104026020016040519081016040528092919081815260200182805461183a90612c34565b80156118855780601f1061185c57610100808354040283529160200191611885565b820191905f5260205f20905b81548152906001019060200180831161186857829003601f168201915b505050505090506118ea565b5f61189a611f26565b90505f8151116118b85760405180602001604052805f8152506118e6565b806118c284611fb6565b600b6040516020016118d6939291906130ad565b6040516020818303038152906040525b9150505b919050565b600f5481565b6118fd611abf565b80600b908161190c9190612e69565b5050565b5f61191a8261210f565b9050919050565b611929611abf565b8060108190555050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b6119c9611abf565b80600c90816119d89190612e69565b5050565b6119e4611abf565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a499061314d565b60405180910390fd5b611a5b81611ccb565b50565b5f81611a68611b3d565b11158015611a7657505f5482105b8015611ab157505f7c010000000000000000000000000000000000000000000000000000000060045f8581526020019081526020015f205416145b9050919050565b5f33905090565b611ac7611db7565b73ffffffffffffffffffffffffffffffffffffffff16611ae56112e7565b73ffffffffffffffffffffffffffffffffffffffff1614611b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b32906131b5565b60405180910390fd5b565b5f6001905090565b5f8082905080611b53611b3d565b11611bd1575f54811015611bd0575f60045f8381526020019081526020015f205490505f7c0100000000000000000000000000000000000000000000000000000000821603611bce575b5f8103611bc45760045f836001900393508381526020019081526020015f20549050611b9d565b8092505050611c03565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b5f805f60065f8581526020019081526020015f2090508092508254915050915091565b5f73ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b5f8060e883901c905060e8611c8a868684612163565b62ffffff16901b9150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611d9661246e565b611db060045f8481526020019081526020015f205461216b565b9050919050565b5f33905090565b611dd7828260405180602001604052805f81525061221f565b5050565b5f8373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611e00611ab8565b8786866040518563ffffffff1660e01b8152600401611e229493929190613225565b6020604051808303815f875af1925050508015611e5d57506040513d601f19601f82011682018060405250810190611e5a9190613283565b60015b611ed3573d805f8114611e8b576040519150601f19603f3d011682016040523d82523d5f602084013e611e90565b606091505b505f815103611ecb576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600a8054611f3590612c34565b80601f0160208091040260200160405190810160405280929190818152602001828054611f6190612c34565b8015611fac5780601f10611f8357610100808354040283529160200191611fac565b820191905f5260205f20905b815481529060010190602001808311611f8f57829003601f168201915b5050505050905090565b60605f8203611ffc576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061210a565b5f8290505f5b5f821461202b578080612014906132db565b915050600a82612024919061334f565b9150612002565b5f8167ffffffffffffffff811115612046576120456127d6565b5b6040519080825280601f01601f1916602001820160405280156120785781602001600182028036833780820191505090505b5090505b5f851461210357600182612090919061337f565b9150600a8561209f91906133b2565b60306120ab91906133e2565b60f81b8183815181106120c1576120c0612f38565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a856120fc919061334f565b945061207c565b8093505050505b919050565b5f67ffffffffffffffff604060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054901c169050919050565b5f9392505050565b61217361246e565b81815f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060a082901c816020019067ffffffffffffffff16908167ffffffffffffffff16815250505f7c01000000000000000000000000000000000000000000000000000000008316141581604001901515908115158152505060e882901c816060019062ffffff16908162ffffff1681525050919050565b61222983836122b6565b5f8373ffffffffffffffffffffffffffffffffffffffff163b146122b1575f805490505f83820390505b6122655f868380600101945086611ddb565b61229b576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81811061225357815f54146122ae575f80fd5b50505b505050565b5f805490505f82036122f4576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123005f848385611c6e565b600160406001901b17820260055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540192505081905550612372836123635f865f611c74565b61236c8561245f565b17611c9b565b60045f8381526020019081526020015f20819055505f80838301905073ffffffffffffffffffffffffffffffffffffffff8516915082825f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4600183015b81811461240c5780835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a46001810190506123d3565b505f8203612446576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f81905550505061245a5f848385611cc5565b505050565b5f6001821460e11b9050919050565b60405180608001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f67ffffffffffffffff1681526020015f151581526020015f62ffffff1681525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6124fe816124ca565b8114612508575f80fd5b50565b5f81359050612519816124f5565b92915050565b5f60208284031215612534576125336124c2565b5b5f6125418482850161250b565b91505092915050565b5f8115159050919050565b61255e8161254a565b82525050565b5f6020820190506125775f830184612555565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6125a68261257d565b9050919050565b6125b68161259c565b81146125c0575f80fd5b50565b5f813590506125d1816125ad565b92915050565b5f602082840312156125ec576125eb6124c2565b5b5f6125f9848285016125c3565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61264482612602565b61264e818561260c565b935061265e81856020860161261c565b6126678161262a565b840191505092915050565b5f6020820190508181035f83015261268a818461263a565b905092915050565b5f819050919050565b6126a481612692565b81146126ae575f80fd5b50565b5f813590506126bf8161269b565b92915050565b5f602082840312156126da576126d96124c2565b5b5f6126e7848285016126b1565b91505092915050565b6126f98161259c565b82525050565b5f6020820190506127125f8301846126f0565b92915050565b5f806040838503121561272e5761272d6124c2565b5b5f61273b858286016125c3565b925050602061274c858286016126b1565b9150509250929050565b61275f81612692565b82525050565b5f6020820190506127785f830184612756565b92915050565b5f805f60608486031215612795576127946124c2565b5b5f6127a2868287016125c3565b93505060206127b3868287016125c3565b92505060406127c4868287016126b1565b9150509250925092565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61280c8261262a565b810181811067ffffffffffffffff8211171561282b5761282a6127d6565b5b80604052505050565b5f61283d6124b9565b90506128498282612803565b919050565b5f67ffffffffffffffff821115612868576128676127d6565b5b6128718261262a565b9050602081019050919050565b828183375f83830152505050565b5f61289e6128998461284e565b612834565b9050828152602081018484840111156128ba576128b96127d2565b5b6128c584828561287e565b509392505050565b5f82601f8301126128e1576128e06127ce565b5b81356128f184826020860161288c565b91505092915050565b5f6020828403121561290f5761290e6124c2565b5b5f82013567ffffffffffffffff81111561292c5761292b6124c6565b5b612938848285016128cd565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61297381612692565b82525050565b5f612984838361296a565b60208301905092915050565b5f602082019050919050565b5f6129a682612941565b6129b0818561294b565b93506129bb8361295b565b805f5b838110156129eb5781516129d28882612979565b97506129dd83612990565b9250506001810190506129be565b5085935050505092915050565b5f6020820190508181035f830152612a10818461299c565b905092915050565b612a218161254a565b8114612a2b575f80fd5b50565b5f81359050612a3c81612a18565b92915050565b5f60208284031215612a5757612a566124c2565b5b5f612a6484828501612a2e565b91505092915050565b5f8060408385031215612a8357612a826124c2565b5b5f612a90858286016125c3565b9250506020612aa185828601612a2e565b9150509250929050565b5f67ffffffffffffffff821115612ac557612ac46127d6565b5b612ace8261262a565b9050602081019050919050565b5f612aed612ae884612aab565b612834565b905082815260208101848484011115612b0957612b086127d2565b5b612b1484828561287e565b509392505050565b5f82601f830112612b3057612b2f6127ce565b5b8135612b40848260208601612adb565b91505092915050565b5f805f8060808587031215612b6157612b606124c2565b5b5f612b6e878288016125c3565b9450506020612b7f878288016125c3565b9350506040612b90878288016126b1565b925050606085013567ffffffffffffffff811115612bb157612bb06124c6565b5b612bbd87828801612b1c565b91505092959194509250565b5f8060408385031215612bdf57612bde6124c2565b5b5f612bec858286016125c3565b9250506020612bfd858286016125c3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612c4b57607f821691505b602082108103612c5e57612c5d612c07565b5b50919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f612c98601f8361260c565b9150612ca382612c64565b602082019050919050565b5f6020820190508181035f830152612cc581612c8c565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302612d287fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612ced565b612d328683612ced565b95508019841693508086168417925050509392505050565b5f819050919050565b5f612d6d612d68612d6384612692565b612d4a565b612692565b9050919050565b5f819050919050565b612d8683612d53565b612d9a612d9282612d74565b848454612cf9565b825550505050565b5f90565b612dae612da2565b612db9818484612d7d565b505050565b5b81811015612ddc57612dd15f82612da6565b600181019050612dbf565b5050565b601f821115612e2157612df281612ccc565b612dfb84612cde565b81016020851015612e0a578190505b612e1e612e1685612cde565b830182612dbe565b50505b505050565b5f82821c905092915050565b5f612e415f1984600802612e26565b1980831691505092915050565b5f612e598383612e32565b9150826002028217905092915050565b612e7282612602565b67ffffffffffffffff811115612e8b57612e8a6127d6565b5b612e958254612c34565b612ea0828285612de0565b5f60209050601f831160018114612ed1575f8415612ebf578287015190505b612ec98582612e4e565b865550612f30565b601f198416612edf86612ccc565b5f5b82811015612f0657848901518255600182019150602085019450602081019050612ee1565b86831015612f235784890151612f1f601f891682612e32565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f455243373231414d657461646174613a2055524920717565727920666f72206e5f8201527f6f6e6578697374656e7420746f6b656e00000000000000000000000000000000602082015250565b5f612fbf60308361260c565b9150612fca82612f65565b604082019050919050565b5f6020820190508181035f830152612fec81612fb3565b9050919050565b5f81905092915050565b5f61300782612602565b6130118185612ff3565b935061302181856020860161261c565b80840191505092915050565b5f815461303981612c34565b6130438186612ff3565b9450600182165f811461305d5760018114613072576130a4565b60ff19831686528115158202860193506130a4565b61307b85612ccc565b5f5b8381101561309c5781548189015260018201915060208101905061307d565b838801955050505b50505092915050565b5f6130b88286612ffd565b91506130c48285612ffd565b91506130d0828461302d565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61313760268361260c565b9150613142826130dd565b604082019050919050565b5f6020820190508181035f8301526131648161312b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61319f60208361260c565b91506131aa8261316b565b602082019050919050565b5f6020820190508181035f8301526131cc81613193565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f6131f7826131d3565b61320181856131dd565b935061321181856020860161261c565b61321a8161262a565b840191505092915050565b5f6080820190506132385f8301876126f0565b61324560208301866126f0565b6132526040830185612756565b818103606083015261326481846131ed565b905095945050505050565b5f8151905061327d816124f5565b92915050565b5f60208284031215613298576132976124c2565b5b5f6132a58482850161326f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6132e582612692565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613317576133166132ae565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61335982612692565b915061336483612692565b92508261337457613373613322565b5b828204905092915050565b5f61338982612692565b915061339483612692565b92508282039050818111156133ac576133ab6132ae565b5b92915050565b5f6133bc82612692565b91506133c783612692565b9250826133d7576133d6613322565b5b828206905092915050565b5f6133ec82612692565b91506133f783612692565b925082820190508082111561340f5761340e6132ae565b5b9291505056fea26469706673582212205a82f504682a73d3335f040120f872c84d7982e1d5c42eba17c8b7cbc04110d964736f6c634300081900330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000018f00000000000000000000000000000000000000000000000000038d7ea4c6800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000003061723a2f2f52464f31725f7269363769676a447030384d4c437733546a6e56324470356c52623874502d6f6c6b62614d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085374756e6e696e6700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045476575600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000becd2bf24ce22976e0f697e1be5197082d6d48100000000000000000000000002d67122578d8d9dface1ec01856d89a9e101ee12000000000000000000000000b666fc1ba49fd9ad01b437e1371bd0d8008d96a8000000000000000000000000501667ae8bc61cc67893971e0ab93c61e476faf8000000000000000000000000dd98d5585c9991894436f652e0db6b266d877c77000000000000000000000000da7625804a404533b1a2a30d5960b9836715df77000000000000000000000000c30bab2b78c70649b59b297d821960347f1928eb000000000000000000000000eba4e5818f0542e7aab6614d9fc756e55e5a2363000000000000000000000000eccfc88097eeb44a7b5930d91b41452b017ea1c80000000000000000000000004b8c01b006fd7aec406e7db5af04ffa6f9340c79000000000000000000000000512281cfd7e09a1e6c6f4ee31d08bd705331117a0000000000000000000000002369bda8e244059742532bf5c2812c905614580d000000000000000000000000092a6cd8854c261a91a251469372fde0f5fb100f000000000000000000000000475b03a7f408ace752bebcdf42ebe9ebe80468b3000000000000000000000000ce178ca58bfefda55477eb40e0d53f5fa1aa905b000000000000000000000000a7e952b09aa22755f6cfcd014a877c1a07e628a2000000000000000000000000c916c82279eeac967ed13e1faa916a7461ad85810000000000000000000000000eb5139079bab0e3e6659bc61db558fe12198a50000000000000000000000000b248fc02853793068d5a0279f56ec5bc9881e7fc0000000000000000000000001e88269fcb1a4122a2051a0b9715d37f41d7464f0000000000000000000000001a2d33f98b8fe612d628c9e3ff419d7e9d653afd0000000000000000000000003fa625a9cfe4c37015558bafaf0ceac3bdd43e8f0000000000000000000000002a3e45fc0d6ec8b9693e76966011337305f669bf000000000000000000000000d9bfdbb8554a5c9b20bf973138f8665b62d85c340000000000000000000000007a861bdd57486f8d943585615e68f2ab691154ec00000000000000000000000080e77866791af7f2c6b503ed1d4af38e360007ff0000000000000000000000002e9f6790136f21696213c9e353ed152ac1c743ef000000000000000000000000a3bbd3acff168d3ea0a0acecf64fc2f5adba96ee000000000000000000000000551071e6561c4cc3870f88e1b17051341b55dca8000000000000000000000000af897f04d29c1e84ff8a14ab6e8d1df89d7a84da000000000000000000000000d8583090a894faec29823c96ae20fe81d39cf3530000000000000000000000003b8214fe28cafd69f5bdae0571b8303e17f5da1b0000000000000000000000004d0a4bca6a7052982019a8395adde6231f0de811000000000000000000000000fc52d947489e5cb90632c43ed99fff079e034e910000000000000000000000009428fb34d9f90d462f097b0e2b0b9d35c0ec0b32000000000000000000000000f9e0d59f85c716f5054f2170a598839743ff9274000000000000000000000000f4577d66d6162bf59e722901a0e1e296a1b12713000000000000000000000000209e04c47fa6d4002b69ebca21a1cd0988f8f16d0000000000000000000000002c283bb1d20c0a3f67d455ace34105fa83455b71000000000000000000000000f402d90c3ac49810cfcd7ae3afebfd8f1c6829db0000000000000000000000009319575d529906244aa95fa0dba5f4347cd115d900000000000000000000000053a5471687b5515dea8c2c0ec0b686c48fd24fa50000000000000000000000000db50004448d14dc90c436a5575fd3c21bc9abad0000000000000000000000003a51d540b0b8acbbefe529b1efd1c3bb9706e18a000000000000000000000000e81ba1122fb9343fcae66327bc8c7983ef98d9b7000000000000000000000000767a04fac484006e0abb16bd63c0d4e634fe568c000000000000000000000000efa1c070cd919172f634bf9b1e34de28afd000240000000000000000000000007e099aa4f924613b2afeb2bd01a465fa2f7c593100000000000000000000000046b6c1c9576ca5b4bb6953f0ab323f46b2eb2aa20000000000000000000000005178e9c7093d9f72050170473833d2124db37fbb00000000000000000000000000ae04115e837c3cd95c00d87e871c71a4a61dfd0000000000000000000000007fc607db4b458800e400bfc978f7a83b2b5dfd15000000000000000000000000848671dad6403662a563ba4c1041ffec46ace694000000000000000000000000d8bdd2e51c2166bac55dcc73c097340755f0456e000000000000000000000000e86686ebf91d4150c1373fed79d5b544a2d62a6f000000000000000000000000e3eacd0786499fcd1b28ac2e76f3c3f52dd4c3600000000000000000000000002c5b92153d7cef0f6c9aff9a5d9e6b59305265ba000000000000000000000000dcd9185eee204660dd7e99d07479d8aac8c39a73000000000000000000000000b39ad2824d070f906291ea3bf1481873dcb647d2000000000000000000000000c30257195c7909a0a4674375b6e8a60589a659b000000000000000000000000064d199b5d0d28acb581d3ecd8c79a0fc30934c11000000000000000000000000f9c2aea3427fafafe3cf6ec1f1e29bcd173eb56b000000000000000000000000d448505e971f8779624b4a1c220087c2f1adfddb0000000000000000000000001be75a2bda3c226a1cc29b50c1584110f184e4ea000000000000000000000000f89370f95553d48b1c0169198f5f1c223fb4a7df00000000000000000000000041b97799c9dd1861abbe8aa32db1fb2b6994225c0000000000000000000000003863b4cbe91b12c1d36610c59ac07c5953f2c84000000000000000000000000007cc65b191cb3c97059b462738e2a45102c65a65000000000000000000000000b80dde46f08fd2456e08e1824578f93240f12c58000000000000000000000000832305d9c9f7499edd6d1a6107ee840300a10ab10000000000000000000000007ddc75571de448de111d19b71d95640421bd81530000000000000000000000003e3acbe3bcfc2532170b85283eccf28a04e796cd000000000000000000000000cdf30b7060919bc705ed56610c0ebe71b83893a1000000000000000000000000af1060457bb5a9732546042327c8406e782051cf000000000000000000000000950be633e17dde1787600332f1e591e36215bc9b00000000000000000000000040e46453c7b4beeb39de3b87185aa2520fb41b8f00000000000000000000000056393969897fb4829534915c7623f651fc798afd00000000000000000000000041de7745226849cbff93c96cacc14ecacf40ecce0000000000000000000000005b9b98308cf986aa5a1a6e18e9226fd8bd5b701c00000000000000000000000011496f0448e0f96d2bf2e174e588a9dd0c3d4b460000000000000000000000007f83bcf36c0b69cbf18fca7aba05ea9ca43b26ba000000000000000000000000c81fd7f9ac459603b2ed5d69e00a757b79d56171000000000000000000000000a1667692a02758f11a624127ed0f454a98dfcfd4000000000000000000000000717cf00e203d918a181650108526f11b0b1e866c000000000000000000000000409c6d34ea417b008c57c5a81977c260934f25290000000000000000000000000c3d593341596bde73aa327ea1f446c7e4df88e10000000000000000000000009912c089158b2b080279acbdc70b8e005239f521000000000000000000000000f4f6f70742ab767ce6b9b8a4f7387b551d0b09f7000000000000000000000000c6f07123759f904e6e78eb8ceff5cc62cfe140c3000000000000000000000000c6b221af659ba8840931fa8dddd1d9dca79ba7ed0000000000000000000000001273d115dbe23a051de3d1b9b2f83449d32176b1000000000000000000000000cdc6690f93aee95712f48832f18c3105661880d7000000000000000000000000d28ff6b647f5f7115dac33e4fa0b0b9f8688a265000000000000000000000000ab20a54ee15e679ec8b49034bbd9be1470f4280e00000000000000000000000095b6c540044cdb0501427a872e0a8e38d555fc24000000000000000000000000281ae93fb894cf12b2625df31520f0575f9af18a0000000000000000000000008deaf46ec9c17396537caed5e3bcce749c13d4640000000000000000000000004be4702792c1932f42f525a3eb63a373ab2b0ffb000000000000000000000000d810622aa29a4f3a3318eb4da99efca8c06203d80000000000000000000000006f31c0dd6aa505a50ef3496844f3ea51d1cb4835