6101006040525f600c5f6101000a81548160ff0219169083151502179055505f60115560405180610280016040528061024e815260200161525361024e91396015908161004c919061057a565b50620493e063ffffffff1660a09063ffffffff1681525073b83e47c2bc239b3bf370bc41e1459a34b41238d073ffffffffffffffffffffffffffffffffffffffff1660c09073ffffffffffffffffffffffffffffffffffffffff168152507f66756e2d657468657265756d2d7365706f6c69612d31000000000000000000005f1b60e0908152503480156100de575f80fd5b506040518060400160405280601381526020017f5265616c576f726c644173736574546f6b656e000000000000000000000000008152506040518060400160405280600481526020017f52574154000000000000000000000000000000000000000000000000000000008152503360c0518073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101f4575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101eb9190610688565b60405180910390fd5b6102038161027f60201b60201c565b508160019081610213919061057a565b508060029081610223919061057a565b50505073a2f78ab2355fe2f984d808b5cee7fd0a93d5270e60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506106a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806103bb57607f821691505b6020821081036103ce576103cd610377565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103f5565b61043a86836103f5565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61047e61047961047484610452565b61045b565b610452565b9050919050565b5f819050919050565b61049783610464565b6104ab6104a382610485565b848454610401565b825550505050565b5f90565b6104bf6104b3565b6104ca81848461048e565b505050565b5b818110156104ed576104e25f826104b7565b6001810190506104d0565b5050565b601f82111561053257610503816103d4565b61050c846103e6565b8101602085101561051b578190505b61052f610527856103e6565b8301826104cf565b50505b505050565b5f82821c905092915050565b5f6105525f1984600802610537565b1980831691505092915050565b5f61056a8383610543565b9150826002028217905092915050565b61058382610340565b67ffffffffffffffff81111561059c5761059b61034a565b5b6105a682546103a4565b6105b18282856104f1565b5f60209050601f8311600181146105e2575f84156105d0578287015190505b6105da858261055f565b865550610641565b601f1984166105f0866103d4565b5f5b82811015610617578489015182556001820191506020850194506020810190506105f2565b868310156106345784890151610630601f891682610543565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61067282610649565b9050919050565b61068281610668565b82525050565b5f60208201905061069b5f830184610679565b92915050565b60805160a05160c05160e051614b7b6106d85f395f6109c801525f50505f6109a701525f818161067801526119e80152614b7b5ff3fe608060405234801561000f575f80fd5b50600436106101c2575f3560e01c8063676c0d77116100f7578063a22cb46511610095578063c87b56dd1161006f578063c87b56dd146104bb578063e985e9c5146104eb578063f24133651461051b578063f2fde38b14610539576101c2565b8063a22cb46514610465578063b534b5b714610481578063b88d4fde1461049f576101c2565b80637e1c0c09116100d15780637e1c0c09146104015780638da5cb5b1461041f5780638e15f4731461043d57806395d89b4114610447576101c2565b8063676c0d77146103ab57806370a08231146103c7578063715018a6146103f7576101c2565b806323b872dd1161016457806342842e0e1161013e57806342842e0e1461032557806354e35ba2146103415780636352211e1461035d57806364492e7d1461038d576101c2565b806323b872dd146102bb5780632f9d6254146102d7578063407fcc3114610307576101c2565b8063095ea7b3116101a0578063095ea7b3146102445780630ca7617514610260578063176fd3f01461027c578063192ddae51461029d576101c2565b806301ffc9a7146101c657806306fdde03146101f6578063081812fc14610214575b5f80fd5b6101e060048036038101906101db9190612f69565b610555565b6040516101ed9190612fae565b60405180910390f35b6101fe6105b5565b60405161020b9190613037565b60405180910390f35b61022e6004803603810190610229919061308a565b610645565b60405161023b91906130f4565b60405180910390f35b61025e60048036038101906102599190613137565b610660565b005b61027a600480360381019061027591906132d4565b610676565b005b610284610738565b604051610294949392919061336b565b60405180910390f35b6102a56107db565b6040516102b29190612fae565b60405180910390f35b6102d560048036038101906102d091906133b5565b6107ed565b005b6102f160048036038101906102ec9190613442565b6108ec565b6040516102fe919061347c565b60405180910390f35b61030f6109fd565b60405161031c9190613495565b60405180910390f35b61033f600480360381019061033a91906133b5565b610a03565b005b61035b600480360381019061035691906134ae565b610a22565b005b6103776004803603810190610372919061308a565b610b59565b60405161038491906130f4565b60405180910390f35b610395610b6a565b6040516103a29190613504565b60405180910390f35b6103c560048036038101906103c0919061308a565b610b70565b005b6103e160048036038101906103dc919061351d565b610c03565b6040516103ee9190613495565b60405180910390f35b6103ff610cb9565b005b610409610ccc565b6040516104169190613495565b60405180910390f35b610427610cd2565b60405161043491906130f4565b60405180910390f35b610445610cf9565b005b61044f610d98565b60405161045c9190613037565b60405180910390f35b61047f600480360381019061047a9190613572565b610e28565b005b610489610e3e565b6040516104969190613495565b60405180910390f35b6104b960048036038101906104b491906135b0565b610e44565b005b6104d560048036038101906104d0919061308a565b610e61565b6040516104e29190613037565b60405180910390f35b61050560048036038101906105009190613630565b610f6c565b6040516105129190612fae565b60405180910390f35b610523610ffa565b6040516105309190613495565b60405180910390f35b610553600480360381019061054e919061351d565b611000565b005b5f634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105ae57506105ad82611084565b5b9050919050565b6060600180546105c49061369b565b80601f01602080910402602001604051908101604052809291908181526020018280546105f09061369b565b801561063b5780601f106106125761010080835404028352916020019161063b565b820191905f5260205f20905b81548152906001019060200180831161061e57829003601f168201915b5050505050905090565b5f61064f82611165565b50610659826111eb565b9050919050565b610672828261066d611224565b61122b565b5050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106fb576040517fc6829f8300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61070683838361123d565b827f85e1543bf2f84fe80c6badbce3648c8539ad1df4d2b3d822938ca0538be727e660405160405180910390a2505050565b6008805f0180546107489061369b565b80601f01602080910402602001604051908101604052809291908181526020018280546107749061369b565b80156107bf5780601f10610796576101008083540402835291602001916107bf565b820191905f5260205f20905b8154815290600101906020018083116107a257829003601f168201915b5050505050908060010154908060020154908060030154905084565b600c5f9054906101000a900460ff1681565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361085d575f6040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161085491906130f4565b60405180910390fd5b5f610870838361086b611224565b61133d565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108e6578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016108dd939291906136cb565b60405180910390fd5b50505050565b5f6108f5611548565b6108fd612e5c565b6109986015805461090d9061369b565b80601f01602080910402602001604051908101604052809291908181526020018280546109399061369b565b80156109845780601f1061095b57610100808354040283529160200191610984565b820191905f5260205f20905b81548152906001019060200180831161096757829003601f168201915b5050505050826115cf90919063ffffffff16565b6109ec6109a4826115df565b847f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006119e4565b601281905550601254915050919050565b600e5481565b610a1d83838360405180602001604052805f815250610e44565b505050565b610a2a611548565b600c5f9054906101000a900460ff1615610a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a709061374a565b60405180910390fd5b8160108190555080600e81905550620f42406305f5e100600d54600e54610aa09190613795565b610aaa9190613803565b610ab49190613795565b600f819055506001600c5f6101000a81548160ff0219169083151502179055505f610add611ac3565b90505f600190505b838111610b1357610af63382611b4b565b610b008183611c3e565b8080610b0b90613833565b915050610ae5565b50826011819055507f08a3ad1d54f9e72ce7885341976027e04c0c26bddba427e8768f04879f82dc6e8383604051610b4c92919061387a565b60405180910390a1505050565b5f610b6382611165565b9050919050565b600d5481565b610b78611548565b600c5f9054906101000a900460ff16610bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbd906138eb565b60405180910390fd5b80600e81905550620f42406305f5e100600d54600e54610be69190613795565b610bf09190613803565b610bfa9190613795565b600f8190555050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c74575f6040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610c6b91906130f4565b60405180910390fd5b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610cc1611548565b610cca5f611c98565b565b60105481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610d64573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d889190613986565b50505091505080600d8190555050565b606060028054610da79061369b565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd39061369b565b8015610e1e5780601f10610df557610100808354040283529160200191610e1e565b820191905f5260205f20905b815481529060010190602001808311610e0157829003601f168201915b5050505050905090565b610e3a610e33611224565b8383611d59565b5050565b60115481565b610e4f8484846107ed565b610e5b84848484611ec2565b50505050565b6060610e6c82611165565b505f60075f8481526020019081526020015f208054610e8a9061369b565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb69061369b565b8015610f015780601f10610ed857610100808354040283529160200191610f01565b820191905f5260205f20905b815481529060010190602001808311610ee457829003601f168201915b505050505090505f610f11612074565b90505f815103610f25578192505050610f67565b5f82511115610f59578082604051602001610f41929190613a37565b60405160208183030381529060405292505050610f67565b610f628461208a565b925050505b919050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b600f5481565b611008611548565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611078575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161106f91906130f4565b60405180910390fd5b61108181611c98565b50565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061114e57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061115e575061115d826120f0565b5b9050919050565b5f8061117083612159565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111e257826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016111d99190613495565b60405180910390fd5b80915050919050565b5f60055f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b6112388383836001612192565b505050565b826012541461128357826040517fd068bf5b00000000000000000000000000000000000000000000000000000000815260040161127a919061347c565b60405180910390fd5b818060200190518101906112979190613af8565b60085f015f60086001015f60086002015f60086003015f8891905055879190505586919050558591905090816112cd9190613d15565b505050505080601490816112e19190613e46565b50827f07cee4eeecce4c378bcabac3921fe1ee240f2f7a24775769790937e3a8165c0760085f016008600101546008600201546008600301546013601460405161133096959493929190614027565b60405180910390a2505050565b5f8061134884612159565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461138957611388818486612351565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611414576113c85f855f80612192565b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461149357600160045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460035f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b611550611224565b73ffffffffffffffffffffffffffffffffffffffff1661156e610cd2565b73ffffffffffffffffffffffffffffffffffffffff16146115cd57611591611224565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016115c491906130f4565b60405180910390fd5b565b6115db825f8084612414565b5050565b60605f6115ed6101006124ba565b90506116376040518060400160405280600c81526020017f636f64654c6f636174696f6e0000000000000000000000000000000000000000815250826124df90919063ffffffff16565b61165f835f015160028111156116505761164f61409b565b5b8261250790919063ffffffff16565b6116a76040518060400160405280600881526020017f6c616e6775616765000000000000000000000000000000000000000000000000815250826124df90919063ffffffff16565b6116cf83604001515f8111156116c0576116bf61409b565b5b8261250790919063ffffffff16565b6117176040518060400160405280600681526020017f736f757263650000000000000000000000000000000000000000000000000000815250826124df90919063ffffffff16565b61172e8360600151826124df90919063ffffffff16565b5f8360a001515111156117e2576117836040518060400160405280600481526020017f6172677300000000000000000000000000000000000000000000000000000000815250826124df90919063ffffffff16565b61178c81612556565b5f5b8360a00151518110156117d7576117cc8460a0015182815181106117b5576117b46140c8565b5b6020026020010151836124df90919063ffffffff16565b80600101905061178e565b506117e18161257e565b5b5f8360800151511115611921575f60028111156118025761180161409b565b5b836020015160028111156118195761181861409b565b5b03611850576040517fa80d31f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118986040518060400160405280600f81526020017f736563726574734c6f636174696f6e0000000000000000000000000000000000815250826124df90919063ffffffff16565b6118c1836020015160028111156118b2576118b161409b565b5b8261250790919063ffffffff16565b6119096040518060400160405280600781526020017f7365637265747300000000000000000000000000000000000000000000000000815250826124df90919063ffffffff16565b6119208360800151826125a690919063ffffffff16565b5b5f8360c001515111156119d5576119766040518060400160405280600981526020017f6279746573417267730000000000000000000000000000000000000000000000815250826124df90919063ffffffff16565b61197f81612556565b5f5b8360c00151518110156119ca576119bf8460c0015182815181106119a8576119a76140c8565b5b6020026020010151836125a690919063ffffffff16565b806001019050611981565b506119d48161257e565b5b805f01515f0151915050919050565b5f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663461d27628688600188886040518663ffffffff1660e01b8152600401611a48959493929190614176565b6020604051808303815f875af1158015611a64573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a8891906141e2565b9050807f1131472297a800fee664d1d89cfa8f7676ff07189ecc53f80bbb5f4969099db860405160405180910390a280915050949350505050565b60605f60085f01611ad86008600101546125ce565b611ae66008600201546125ce565b611af46008600301546125ce565b604051602001611b07949392919061470f565b60405160208183030381529060405290505f611b2282612698565b905080604051602001611b359190614825565b6040516020818303038152906040529250505090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bbb575f6040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611bb291906130f4565b60405180910390fd5b5f611bc783835f61133d565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611c39575f6040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401611c3091906130f4565b60405180910390fd5b505050565b8060075f8481526020019081526020015f209081611c5c9190613d15565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce782604051611c8c9190613495565b60405180910390a15050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611dc957816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401611dc091906130f4565b60405180910390fd5b8060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611eb59190612fae565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b111561206e578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02611f05611224565b8685856040518563ffffffff1660e01b8152600401611f279493929190614846565b6020604051808303815f875af1925050508015611f6257506040513d601f19601f82011682018060405250810190611f5f91906148a4565b60015b611fe3573d805f8114611f90576040519150601f19603f3d011682016040523d82523d5f602084013e611f95565b606091505b505f815103611fdb57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611fd291906130f4565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461206c57836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161206391906130f4565b60405180910390fd5b505b50505050565b606060405180602001604052805f815250905090565b606061209582611165565b505f61209f612074565b90505f8151116120bd5760405180602001604052805f8152506120e8565b806120c7846125ce565b6040516020016120d8929190613a37565b6040516020818303038152906040525b915050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f60035f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806121ca57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156122fc575f6121d984611165565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561224357508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561225657506122548184610f6c565b155b1561229857826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161228f91906130f4565b60405180910390fd5b81156122fa57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360055f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b61235c838383612805565b61240f575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123d057806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016123c79190613495565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016124069291906148cf565b60405180910390fd5b505050565b5f81510361244e576040517f22ce3edd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82845f019060028111156124655761246461409b565b5b908160028111156124795761247861409b565b5b815250508184604001905f8111156124945761249361409b565b5b90815f8111156124a7576124a661409b565b5b8152505080846060018190525050505050565b6124c2612ecb565b6124cf815f0151836128c5565b505f816020018181525050919050565b6124ec826003835161293b565b61250281835f0151612adb90919063ffffffff16565b505050565b61252860026005600660ff16901b17835f0151612af790919063ffffffff16565b50612552828260405160200161253e9190613495565b6040516020818303038152906040526125a6565b5050565b612561816004612b5e565b60018160200181815161257491906148f6565b9150818152505050565b612589816007612b5e565b60018160200181815161259c9190614929565b9150818152505050565b6125b3826002835161293b565b6125c981835f0151612adb90919063ffffffff16565b505050565b60605f60016125dc84612b83565b0190505f8167ffffffffffffffff8111156125fa576125f96131b0565b5b6040519080825280601f01601f19166020018201604052801561262c5781602001600182028036833780820191505090505b5090505f82602001820190505b60011561268d578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612682576126816137d6565b5b0494505f8503612639575b819350505050919050565b60605f8251036126b85760405180602001604052805f8152509050612800565b5f604051806060016040528060408152602001614b066040913990505f6003600285516126e591906148f6565b6126ef9190613803565b60046126fb9190613795565b67ffffffffffffffff811115612714576127136131b0565b5b6040519080825280601f01601f1916602001820160405280156127465781602001600182028036833780820191505090505b509050600182016020820185865187016020810180515f82525b828410156127bb576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865360018601955050612760565b80825260038a5106600181146127d857600281146127eb576127f3565b603d6001870353603d60028703536127f3565b603d60018703535b5050505050505080925050505b919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128bc57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061287d575061287c8484610f6c565b5b806128bb57508273ffffffffffffffffffffffffffffffffffffffff166128a3836111eb565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b6128cd612eea565b5f6020836128db919061495c565b14612907576020826128ed919061495c565b60206128f99190614929565b8261290491906148f6565b91505b818360200181815250506040518084525f81528281016020018181101561292c575f80fd5b80604052505082905092915050565b60178167ffffffffffffffff16116129755761296f8160058460ff16901b60ff1617845f0151612af790919063ffffffff16565b50612ad6565b60ff8167ffffffffffffffff16116129d1576129a7601860058460ff16901b17845f0151612af790919063ffffffff16565b506129cb8167ffffffffffffffff166001855f0151612cd49092919063ffffffff16565b50612ad5565b61ffff8167ffffffffffffffff1611612a2e57612a04601960058460ff16901b17845f0151612af790919063ffffffff16565b50612a288167ffffffffffffffff166002855f0151612cd49092919063ffffffff16565b50612ad4565b63ffffffff8167ffffffffffffffff1611612a8d57612a63601a60058460ff16901b17845f0151612af790919063ffffffff16565b50612a878167ffffffffffffffff166004855f0151612cd49092919063ffffffff16565b50612ad3565b612aad601b60058460ff16901b17845f0151612af790919063ffffffff16565b50612ad18167ffffffffffffffff166008855f0151612cd49092919063ffffffff16565b505b5b5b5b505050565b612ae3612eea565b612aef83838451612d5d565b905092915050565b612aff612eea565b5f835f01515190505f600182612b1591906148f6565b905084602001518210612b3957612b3885600283612b339190613795565b612e3a565b5b84516020838201018581538151831115612b51578282525b5050849250505092915050565b612b7e601f60058360ff16901b17835f0151612af790919063ffffffff16565b505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612bdf577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612bd557612bd46137d6565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612c1c576d04ee2d6d415b85acef81000000008381612c1257612c116137d6565b5b0492506020810190505b662386f26fc100008310612c4b57662386f26fc100008381612c4157612c406137d6565b5b0492506010810190505b6305f5e1008310612c74576305f5e1008381612c6a57612c696137d6565b5b0492506008810190505b6127108310612c99576127108381612c8f57612c8e6137d6565b5b0492506004810190505b60648310612cbc5760648381612cb257612cb16137d6565b5b0492506002810190505b600a8310612ccb576001810190505b80915050919050565b612cdc612eea565b5f845f01515190505f8184612cf191906148f6565b90508560200151811115612d1657612d1586600283612d109190613795565b612e3a565b5b5f600185610100612d279190614abb565b612d319190614929565b905086518281018783198251161781528151841115612d4e578382525b50508693505050509392505050565b612d65612eea565b8251821115612d72575f80fd5b5f845f01515190505f8382612d8791906148f6565b90508560200151811115612dac57612dab86600283612da69190613795565b612e3a565b5b5f8087518051856020830101935080851115612dc6578482525b60208901925050505b60208610612e0d5780518252602082612de891906148f6565b9150602081612df791906148f6565b9050602086612e069190614929565b9550612dcf565b5f6001876020036101000a0390508019825116818451168181178552505050879450505050509392505050565b5f825f01519050612e4b83836128c5565b50612e568382612adb565b50505050565b6040518060e001604052805f6002811115612e7a57612e7961409b565b5b81526020015f6002811115612e9257612e9161409b565b5b81526020015f80811115612ea957612ea861409b565b5b8152602001606081526020016060815260200160608152602001606081525090565b6040518060400160405280612ede612eea565b81526020015f81525090565b6040518060400160405280606081526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612f4881612f14565b8114612f52575f80fd5b50565b5f81359050612f6381612f3f565b92915050565b5f60208284031215612f7e57612f7d612f0c565b5b5f612f8b84828501612f55565b91505092915050565b5f8115159050919050565b612fa881612f94565b82525050565b5f602082019050612fc15f830184612f9f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61300982612fc7565b6130138185612fd1565b9350613023818560208601612fe1565b61302c81612fef565b840191505092915050565b5f6020820190508181035f83015261304f8184612fff565b905092915050565b5f819050919050565b61306981613057565b8114613073575f80fd5b50565b5f8135905061308481613060565b92915050565b5f6020828403121561309f5761309e612f0c565b5b5f6130ac84828501613076565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6130de826130b5565b9050919050565b6130ee816130d4565b82525050565b5f6020820190506131075f8301846130e5565b92915050565b613116816130d4565b8114613120575f80fd5b50565b5f813590506131318161310d565b92915050565b5f806040838503121561314d5761314c612f0c565b5b5f61315a85828601613123565b925050602061316b85828601613076565b9150509250929050565b5f819050919050565b61318781613175565b8114613191575f80fd5b50565b5f813590506131a28161317e565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6131e682612fef565b810181811067ffffffffffffffff82111715613205576132046131b0565b5b80604052505050565b5f613217612f03565b905061322382826131dd565b919050565b5f67ffffffffffffffff821115613242576132416131b0565b5b61324b82612fef565b9050602081019050919050565b828183375f83830152505050565b5f61327861327384613228565b61320e565b905082815260208101848484011115613294576132936131ac565b5b61329f848285613258565b509392505050565b5f82601f8301126132bb576132ba6131a8565b5b81356132cb848260208601613266565b91505092915050565b5f805f606084860312156132eb576132ea612f0c565b5b5f6132f886828701613194565b935050602084013567ffffffffffffffff81111561331957613318612f10565b5b613325868287016132a7565b925050604084013567ffffffffffffffff81111561334657613345612f10565b5b613352868287016132a7565b9150509250925092565b61336581613057565b82525050565b5f6080820190508181035f8301526133838187612fff565b9050613392602083018661335c565b61339f604083018561335c565b6133ac606083018461335c565b95945050505050565b5f805f606084860312156133cc576133cb612f0c565b5b5f6133d986828701613123565b93505060206133ea86828701613123565b92505060406133fb86828701613076565b9150509250925092565b5f67ffffffffffffffff82169050919050565b61342181613405565b811461342b575f80fd5b50565b5f8135905061343c81613418565b92915050565b5f6020828403121561345757613456612f0c565b5b5f6134648482850161342e565b91505092915050565b61347681613175565b82525050565b5f60208201905061348f5f83018461346d565b92915050565b5f6020820190506134a85f83018461335c565b92915050565b5f80604083850312156134c4576134c3612f0c565b5b5f6134d185828601613076565b92505060206134e285828601613076565b9150509250929050565b5f819050919050565b6134fe816134ec565b82525050565b5f6020820190506135175f8301846134f5565b92915050565b5f6020828403121561353257613531612f0c565b5b5f61353f84828501613123565b91505092915050565b61355181612f94565b811461355b575f80fd5b50565b5f8135905061356c81613548565b92915050565b5f806040838503121561358857613587612f0c565b5b5f61359585828601613123565b92505060206135a68582860161355e565b9150509250929050565b5f805f80608085870312156135c8576135c7612f0c565b5b5f6135d587828801613123565b94505060206135e687828801613123565b93505060406135f787828801613076565b925050606085013567ffffffffffffffff81111561361857613617612f10565b5b613624878288016132a7565b91505092959194509250565b5f806040838503121561364657613645612f0c565b5b5f61365385828601613123565b925050602061366485828601613123565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806136b257607f821691505b6020821081036136c5576136c461366e565b5b50919050565b5f6060820190506136de5f8301866130e5565b6136eb602083018561335c565b6136f860408301846130e5565b949350505050565b7f546f6b656e73206861766520616c7265616479206265656e20697373756564005f82015250565b5f613734601f83612fd1565b915061373f82613700565b602082019050919050565b5f6020820190508181035f83015261376181613728565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61379f82613057565b91506137aa83613057565b92508282026137b881613057565b915082820484148315176137cf576137ce613768565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61380d82613057565b915061381883613057565b925082613828576138276137d6565b5b828204905092915050565b5f61383d82613057565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361386f5761386e613768565b5b600182019050919050565b5f60408201905061388d5f83018561335c565b61389a602083018461335c565b9392505050565b7f546f6b656e732068617665206e6f74206265656e2069737375656400000000005f82015250565b5f6138d5601b83612fd1565b91506138e0826138a1565b602082019050919050565b5f6020820190508181035f830152613902816138c9565b9050919050565b5f69ffffffffffffffffffff82169050919050565b61392781613909565b8114613931575f80fd5b50565b5f815190506139428161391e565b92915050565b613951816134ec565b811461395b575f80fd5b50565b5f8151905061396c81613948565b92915050565b5f8151905061398081613060565b92915050565b5f805f805f60a0868803121561399f5761399e612f0c565b5b5f6139ac88828901613934565b95505060206139bd8882890161395e565b94505060406139ce88828901613972565b93505060606139df88828901613972565b92505060806139f088828901613934565b9150509295509295909350565b5f81905092915050565b5f613a1182612fc7565b613a1b81856139fd565b9350613a2b818560208601612fe1565b80840191505092915050565b5f613a428285613a07565b9150613a4e8284613a07565b91508190509392505050565b5f67ffffffffffffffff821115613a7457613a736131b0565b5b613a7d82612fef565b9050602081019050919050565b5f613a9c613a9784613a5a565b61320e565b905082815260208101848484011115613ab857613ab76131ac565b5b613ac3848285612fe1565b509392505050565b5f82601f830112613adf57613ade6131a8565b5b8151613aef848260208601613a8a565b91505092915050565b5f805f8060808587031215613b1057613b0f612f0c565b5b5f85015167ffffffffffffffff811115613b2d57613b2c612f10565b5b613b3987828801613acb565b9450506020613b4a87828801613972565b9350506040613b5b87828801613972565b9250506060613b6c87828801613972565b91505092959194509250565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302613bd47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613b99565b613bde8683613b99565b95508019841693508086168417925050509392505050565b5f819050919050565b5f613c19613c14613c0f84613057565b613bf6565b613057565b9050919050565b5f819050919050565b613c3283613bff565b613c46613c3e82613c20565b848454613ba5565b825550505050565b5f90565b613c5a613c4e565b613c65818484613c29565b505050565b5b81811015613c8857613c7d5f82613c52565b600181019050613c6b565b5050565b601f821115613ccd57613c9e81613b78565b613ca784613b8a565b81016020851015613cb6578190505b613cca613cc285613b8a565b830182613c6a565b50505b505050565b5f82821c905092915050565b5f613ced5f1984600802613cd2565b1980831691505092915050565b5f613d058383613cde565b9150826002028217905092915050565b613d1e82612fc7565b67ffffffffffffffff811115613d3757613d366131b0565b5b613d41825461369b565b613d4c828285613c8c565b5f60209050601f831160018114613d7d575f8415613d6b578287015190505b613d758582613cfa565b865550613ddc565b601f198416613d8b86613b78565b5f5b82811015613db257848901518255600182019150602085019450602081019050613d8d565b86831015613dcf5784890151613dcb601f891682613cde565b8355505b6001600288020188555050505b505050505050565b5f81519050919050565b5f819050815f5260205f209050919050565b601f821115613e4157613e1281613dee565b613e1b84613b8a565b81016020851015613e2a578190505b613e3e613e3685613b8a565b830182613c6a565b50505b505050565b613e4f82613de4565b67ffffffffffffffff811115613e6857613e676131b0565b5b613e72825461369b565b613e7d828285613e00565b5f60209050601f831160018114613eae575f8415613e9c578287015190505b613ea68582613cfa565b865550613f0d565b601f198416613ebc86613dee565b5f5b82811015613ee357848901518255600182019150602085019450602081019050613ebe565b86831015613f005784890151613efc601f891682613cde565b8355505b6001600288020188555050505b505050505050565b5f8154613f218161369b565b613f2b8186612fd1565b9450600182165f8114613f455760018114613f5b57613f8d565b60ff198316865281151560200286019350613f8d565b613f6485613b78565b5f5b83811015613f8557815481890152600182019150602081019050613f66565b808801955050505b50505092915050565b5f82825260208201905092915050565b5f8154613fb28161369b565b613fbc8186613f96565b9450600182165f8114613fd65760018114613fec5761401e565b60ff19831686528115156020028601935061401e565b613ff585613dee565b5f5b8381101561401657815481890152600182019150602081019050613ff7565b808801955050505b50505092915050565b5f60c0820190508181035f83015261403f8189613f15565b905061404e602083018861335c565b61405b604083018761335c565b614068606083018661335c565b818103608083015261407a8185613fa6565b905081810360a083015261408e8184613fa6565b9050979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6140fe81613405565b82525050565b5f61410e82613de4565b6141188185613f96565b9350614128818560208601612fe1565b61413181612fef565b840191505092915050565b5f61ffff82169050919050565b6141528161413c565b82525050565b5f63ffffffff82169050919050565b61417081614158565b82525050565b5f60a0820190506141895f8301886140f5565b818103602083015261419b8187614104565b90506141aa6040830186614149565b6141b76060830185614167565b6141c4608083018461346d565b9695505050505050565b5f815190506141dc8161317e565b92915050565b5f602082840312156141f7576141f6612f0c565b5b5f614204848285016141ce565b91505092915050565b7f7b226e616d65223a2022363239204861726c656d204c4c4d222c0000000000005f82015250565b5f614241601a836139fd565b915061424c8261420d565b601a82019050919050565b7f226465736372697074696f6e223a20225257415420666f7220363239204861725f8201527f6c656d204c4c4d222c0000000000000000000000000000000000000000000000602082015250565b5f6142b16029836139fd565b91506142bc82614257565b602982019050919050565b7f22696d616765223a2022697066733a2f2f516d59584d4633364d34746e344c6d5f8201527f7554576a617965626f625450737945727762673934717a4c415871644d47792260208201527f2c00000000000000000000000000000000000000000000000000000000000000604082015250565b5f6143476041836139fd565b9150614352826142c7565b604182019050919050565b7f2261747472696275746573223a205b00000000000000000000000000000000005f82015250565b5f614391600f836139fd565b915061439c8261435d565b600f82019050919050565b7f7b2274726169745f74797065223a20224c6f636174696f6e222c2276616c75655f8201527f223a202200000000000000000000000000000000000000000000000000000000602082015250565b5f6144016024836139fd565b915061440c826143a7565b602482019050919050565b5f81546144238161369b565b61442d81866139fd565b9450600182165f8114614447576001811461445c5761448e565b60ff198316865281151582028601935061448e565b61446585613b78565b5f5b8381101561448657815481890152600182019150602081019050614467565b838801955050505b50505092915050565b7f227d2c00000000000000000000000000000000000000000000000000000000005f82015250565b5f6144cb6003836139fd565b91506144d682614497565b600382019050919050565b7f7b2274726169745f74797065223a20224c6f742053697a65222c2276616c75655f8201527f223a200000000000000000000000000000000000000000000000000000000000602082015250565b5f61453b6023836139fd565b9150614546826144e1565b602382019050919050565b7f7d2c0000000000000000000000000000000000000000000000000000000000005f82015250565b5f6145856002836139fd565b915061459082614551565b600282019050919050565b7f7b2274726169745f74797065223a2022546f74616c205072696365222c2276615f8201527f6c7565223a200000000000000000000000000000000000000000000000000000602082015250565b5f6145f56026836139fd565b91506146008261459b565b602682019050919050565b7f7b2274726169745f74797065223a20225461782041737365737365642056616c5f8201527f7565222c2276616c7565223a2000000000000000000000000000000000000000602082015250565b5f614665602d836139fd565b91506146708261460b565b602d82019050919050565b7f7d000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6146af6001836139fd565b91506146ba8261467b565b600182019050919050565b7f5d7d0000000000000000000000000000000000000000000000000000000000005f82015250565b5f6146f96002836139fd565b9150614704826146c5565b600282019050919050565b5f61471982614235565b9150614724826142a5565b915061472f8261433b565b915061473a82614385565b9150614745826143f5565b91506147518287614417565b915061475c826144bf565b91506147678261452f565b91506147738286613a07565b915061477e82614579565b9150614789826145e9565b91506147958285613a07565b91506147a082614579565b91506147ab82614659565b91506147b78284613a07565b91506147c2826146a3565b91506147cd826146ed565b915081905095945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000005f82015250565b5f61480f601d836139fd565b915061481a826147db565b601d82019050919050565b5f61482f82614803565b915061483b8284613a07565b915081905092915050565b5f6080820190506148595f8301876130e5565b61486660208301866130e5565b614873604083018561335c565b81810360608301526148858184614104565b905095945050505050565b5f8151905061489e81612f3f565b92915050565b5f602082840312156148b9576148b8612f0c565b5b5f6148c684828501614890565b91505092915050565b5f6040820190506148e25f8301856130e5565b6148ef602083018461335c565b9392505050565b5f61490082613057565b915061490b83613057565b925082820190508082111561492357614922613768565b5b92915050565b5f61493382613057565b915061493e83613057565b925082820390508181111561495657614955613768565b5b92915050565b5f61496682613057565b915061497183613057565b925082614981576149806137d6565b5b828206905092915050565b5f8160011c9050919050565b5f808291508390505b60018511156149e1578086048111156149bd576149bc613768565b5b60018516156149cc5780820291505b80810290506149da8561498c565b94506149a1565b94509492505050565b5f826149f95760019050614ab4565b81614a06575f9050614ab4565b8160018114614a1c5760028114614a2657614a55565b6001915050614ab4565b60ff841115614a3857614a37613768565b5b8360020a915084821115614a4f57614a4e613768565b5b50614ab4565b5060208310610133831016604e8410600b8410161715614a8a5782820a905083811115614a8557614a84613768565b5b614ab4565b614a978484846001614998565b92509050818404811115614aae57614aad613768565b5b81810290505b9392505050565b5f614ac582613057565b9150614ad083613057565b9250614afd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846149ea565b90509291505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220bdfcc10447f86e91fe22471b6f60b6325ae1a2a77c60100c88682c1e3ab669f864736f6c634300081a0033636f6e7374207b20657468657273207d203d20617761697420696d706f727428276e706d3a65746865727340362e31302e3027293b636f6e737420616269436f646572203d206574686572732e416269436f6465722e64656661756c74416269436f64657228293b636f6e737420617069526573706f6e7365203d2061776169742046756e6374696f6e732e6d616b654874747052657175657374287b2020202075726c3a202768747470733a2f2f67656e69656261636b626f6e652e617a75726577656273697465732e6e65742f6170692f70726f706572746965732f64656d6f277d293b636f6e7374207b2064617461207d203d20617069526573706f6e73652e646174613b636f6e7374206c6f636174696f6e203d20646174612e6c6f636174696f6e3b636f6e7374206c6f7453697a65203d204e756d62657228646174612e6c6f7453697a65293b636f6e737420746f74616c5072696365203d204e756d62657228646174612e746f74616c5072696365293b636f6e737420746178417373657373656456616c7565203d204e756d62657228646174612e746178417373657373656456616c7565293b636f6e737420656e636f646564203d20616269436f6465722e656e636f6465285b60737472696e67602c206075696e74323536602c206075696e74323536602c206075696e74323536605d2c205b6c6f636174696f6e2c206c6f7453697a652c20746f74616c50726963652c20746178417373657373656456616c75655d293b72657475726e206574686572732e676574427974657328656e636f646564293b