0x608060405260016009556040518060800160405280605181526020016200474c60519139600a90805190602001906200003a92919062000256565b506000600b60006101000a81548160ff0219169083151502179055503480156200006357600080fd5b506040516200479d3803806200479d833981810160405281019062000089919062000378565b6040518060400160405280600c81526020017f53757072615661696465725800000000000000000000000000000000000000008152506040518060400160405280600481526020017f535056580000000000000000000000000000000000000000000000000000000081525081600290805190602001906200010d92919062000256565b5080600390805190602001906200012692919062000256565b50620001376200017f60201b60201c565b60008190555050506200015f620001536200018860201b60201c565b6200019060201b60201c565b80600a90805190602001906200017792919062000256565b50506200052d565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002649062000452565b90600052602060002090601f016020900481019282620002885760008555620002d4565b82601f10620002a357805160ff1916838001178555620002d4565b82800160010185558215620002d4579182015b82811115620002d3578251825591602001919060010190620002b6565b5b509050620002e39190620002e7565b5090565b5b8082111562000302576000816000905550600101620002e8565b5090565b60006200031d6200031784620003e6565b620003bd565b9050828152602081018484840111156200033657600080fd5b620003438482856200041c565b509392505050565b600082601f8301126200035d57600080fd5b81516200036f84826020860162000306565b91505092915050565b6000602082840312156200038b57600080fd5b600082015167ffffffffffffffff811115620003a657600080fd5b620003b4848285016200034b565b91505092915050565b6000620003c9620003dc565b9050620003d7828262000488565b919050565b6000604051905090565b600067ffffffffffffffff821115620004045762000403620004ed565b5b6200040f826200051c565b9050602081019050919050565b60005b838110156200043c5780820151818401526020810190506200041f565b838111156200044c576000848401525b50505050565b600060028204905060018216806200046b57607f821691505b60208210811415620004825762000481620004be565b5b50919050565b62000493826200051c565b810181811067ffffffffffffffff82111715620004b557620004b4620004ed565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61420f806200053d6000396000f3fe6080604052600436106101cd5760003560e01c806368d47967116100f7578063a22cb46511610095578063c87b56dd11610064578063c87b56dd1461063c578063e0df5b6f14610679578063e985e9c5146106a2578063f2fde38b146106df576101cd565b8063a22cb46514610591578063a25bfeb7146105ba578063a95ecaa5146105e3578063b88d4fde14610620576101cd565b8063851fc4b6116100d1578063851fc4b6146104e75780638da5cb5b1461051057806395d89b411461053b5780639abc832014610566576101cd565b806368d479671461046a57806370a0823114610493578063715018a6146104d0576101cd565b806322df11d81161016f57806342966c681161013e57806342966c68146103b25780634ea3a2b9146103db57806353ebf6bd146104045780636352211e1461042d576101cd565b806322df11d81461032657806323b872dd1461034f578063324cb3cb1461036b57806342842e0e14610396576101cd565b8063095ea7b3116101ab578063095ea7b3146102775780630afdf9f71461029357806317d70f7c146102d057806318160ddd146102fb576101cd565b806301ffc9a7146101d257806306fdde031461020f578063081812fc1461023a575b600080fd5b3480156101de57600080fd5b506101f960048036038101906101f4919061337b565b610708565b60405161020691906138ec565b60405180910390f35b34801561021b57600080fd5b5061022461079a565b6040516102319190613907565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c9190613462565b61082c565b60405161026e9190613885565b60405180910390f35b610291600480360381019061028c9190613235565b6108ab565b005b34801561029f57600080fd5b506102ba60048036038101906102b591906133cd565b6109ef565b6040516102c79190613ae9565b60405180910390f35b3480156102dc57600080fd5b506102e5610b38565b6040516102f29190613ae9565b60405180910390f35b34801561030757600080fd5b50610310610b3e565b60405161031d9190613ae9565b60405180910390f35b34801561033257600080fd5b5061034d60048036038101906103489190613271565b610b55565b005b610369600480360381019061036491906130db565b6110e0565b005b34801561037757600080fd5b50610380611405565b60405161038d91906138ec565b60405180910390f35b6103b060048036038101906103ab91906130db565b611418565b005b3480156103be57600080fd5b506103d960048036038101906103d49190613462565b611438565b005b3480156103e757600080fd5b5061040260048036038101906103fd919061340e565b611446565b005b34801561041057600080fd5b5061042b60048036038101906104269190613352565b61157f565b005b34801561043957600080fd5b50610454600480360381019061044f9190613462565b611618565b6040516104619190613885565b60405180910390f35b34801561047657600080fd5b50610491600480360381019061048c91906132dd565b61162a565b005b34801561049f57600080fd5b506104ba60048036038101906104b59190613076565b611841565b6040516104c79190613ae9565b60405180910390f35b3480156104dc57600080fd5b506104e56118fa565b005b3480156104f357600080fd5b5061050e6004803603810190610509919061348b565b611982565b005b34801561051c57600080fd5b50610525611a2a565b6040516105329190613885565b60405180910390f35b34801561054757600080fd5b50610550611a54565b60405161055d9190613907565b60405180910390f35b34801561057257600080fd5b5061057b611ae6565b6040516105889190613907565b60405180910390f35b34801561059d57600080fd5b506105b860048036038101906105b391906131a5565b611b74565b005b3480156105c657600080fd5b506105e160048036038101906105dc91906131e1565b611c7f565b005b3480156105ef57600080fd5b5061060a60048036038101906106059190613462565b611ec0565b6040516106179190613ae9565b60405180910390f35b61063a6004803603810190610635919061312a565b611edd565b005b34801561064857600080fd5b50610663600480360381019061065e9190613462565b611f50565b6040516106709190613907565b60405180910390f35b34801561068557600080fd5b506106a0600480360381019061069b91906133cd565b612113565b005b3480156106ae57600080fd5b506106c960048036038101906106c4919061309f565b6121a9565b6040516106d691906138ec565b60405180910390f35b3480156106eb57600080fd5b5061070660048036038101906107019190613076565b61223d565b005b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061076357506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107935750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6060600280546107a990613d31565b80601f01602080910402602001604051908101604052809291908181526020018280546107d590613d31565b80156108225780601f106107f757610100808354040283529160200191610822565b820191906000526020600020905b81548152906001019060200180831161080557829003601f168201915b5050505050905090565b600061083782612335565b61086d576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108b682611618565b90508073ffffffffffffffffffffffffffffffffffffffff166108d7612394565b73ffffffffffffffffffffffffffffffffffffffff161461093a57610903816108fe612394565b6121a9565b610939576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006109f961239c565b73ffffffffffffffffffffffffffffffffffffffff16610a17611a2a565b73ffffffffffffffffffffffffffffffffffffffff1614610a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a64906139c9565b60405180910390fd5b6000825111610ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa890613929565b60405180910390fd5b6000600e83604051610ac3919061381d565b90815260200160405180910390205411610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b09906139e9565b60405180910390fd5b600e82604051610b22919061381d565b9081526020016040518091039020549050919050565b60095481565b6000610b486123a4565b6001546000540303905090565b610b5d61239c565b73ffffffffffffffffffffffffffffffffffffffff16610b7b611a2a565b73ffffffffffffffffffffffffffffffffffffffff1614610bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc8906139c9565b60405180910390fd5b600b60009054906101000a900460ff1615610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1890613ac9565b60405180910390fd5b60008282905011610c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5e90613929565b60405180910390fd5b60008311610caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca190613969565b60405180910390fd5b828282905014610cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce690613a09565b60405180910390fd5b60005b82829050811015610f24576001600c848484818110610d3a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002810190610d4c9190613b04565b604051610d5a929190613804565b908152602001604051809103902060009054906101000a900460ff1660ff1614610db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db0906139a9565b60405180910390fd5b6000600d848484818110610df6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002810190610e089190613b04565b604051610e16929190613804565b90815260200160405180910390205411610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c90613aa9565b60405180910390fd5b6000600e848484818110610ea2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002810190610eb49190613b04565b604051610ec2929190613804565b90815260200160405180910390205414610f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0890613989565b60405180910390fd5b8080610f1c90613d94565b915050610cf2565b506000610f2f6123ad565b9050610f3b85856123b6565b60005b8383905081101561108a578082610f559190613c25565b6009819055506002600c858584818110610f98577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002810190610faa9190613b04565b604051610fb8929190613804565b908152602001604051809103902060006101000a81548160ff021916908360ff16021790555061107784848381811061101a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200281019061102c9190613b04565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600954612573565b808061108290613d94565b915050610f3e565b508473ffffffffffffffffffffffffffffffffffffffff167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe856040516110d19190613ae9565b60405180910390a25050505050565b60006110eb826126f0565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611152576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061115e846127be565b91509150611174818761116f612394565b6127e5565b6111c05761118986611184612394565b6121a9565b6111bf576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611227576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112348686866001612829565b801561123f57600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001019190508190555061130d856112e988888761282f565b7c020000000000000000000000000000000000000000000000000000000017612857565b600460008681526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000084161415611395576000600185019050600060046000838152602001908152602001600020541415611393576000548114611392578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46113fd8686866001612882565b505050505050565b600b60009054906101000a900460ff1681565b61143383838360405180602001604052806000815250611edd565b505050565b611443816001612888565b50565b61144e61239c565b73ffffffffffffffffffffffffffffffffffffffff1661146c611a2a565b73ffffffffffffffffffffffffffffffffffffffff16146114c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b9906139c9565b60405180910390fd5b6001600c836040516114d4919061381d565b908152602001604051809103902060006101000a81548160ff021916908360ff16021790555080600d8360405161150b919061381d565b9081526020016040518091039020819055506000600e8360405161152f919061381d565b908152602001604051809103902054111561157b5780600f6000600e85604051611559919061381d565b9081526020016040518091039020548152602001908152602001600020819055505b5050565b61158761239c565b73ffffffffffffffffffffffffffffffffffffffff166115a5611a2a565b73ffffffffffffffffffffffffffffffffffffffff16146115fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f2906139c9565b60405180910390fd5b80600b60006101000a81548160ff02191690831515021790555050565b6000611623826126f0565b9050919050565b61163261239c565b73ffffffffffffffffffffffffffffffffffffffff16611650611a2a565b73ffffffffffffffffffffffffffffffffffffffff16146116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169d906139c9565b60405180910390fd5b6000848490501180156116bc5750600082829050115b6116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f290613a69565b60405180910390fd5b818190508484905014611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173a90613a49565b60405180910390fd5b60005b8484905081101561183a5761182785858381811061178d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200281019061179f9190613b04565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505084848481811061181b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135611446565b808061183290613d94565b915050611746565b5050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118a9576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b61190261239c565b73ffffffffffffffffffffffffffffffffffffffff16611920611a2a565b73ffffffffffffffffffffffffffffffffffffffff1614611976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196d906139c9565b60405180910390fd5b6119806000612adc565b565b61198a61239c565b73ffffffffffffffffffffffffffffffffffffffff166119a8611a2a565b73ffffffffffffffffffffffffffffffffffffffff16146119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f5906139c9565b60405180910390fd5b80601060008481526020019081526020016000209080519060200190611a25929190612e06565b505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054611a6390613d31565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8f90613d31565b8015611adc5780601f10611ab157610100808354040283529160200191611adc565b820191906000526020600020905b815481529060010190602001808311611abf57829003601f168201915b5050505050905090565b600a8054611af390613d31565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1f90613d31565b8015611b6c5780601f10611b4157610100808354040283529160200191611b6c565b820191906000526020600020905b815481529060010190602001808311611b4f57829003601f168201915b505050505081565b8060076000611b81612394565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611c2e612394565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c7391906138ec565b60405180910390a35050565b600b60009054906101000a900460ff1615611ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc690613ac9565b60405180910390fd5b6000600190506000825111611d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1090613929565b60405180910390fd5b6001600c83604051611d2b919061381d565b908152602001604051809103902060009054906101000a900460ff1660ff1614611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d81906139a9565b60405180910390fd5b6000600d83604051611d9c919061381d565b90815260200160405180910390205411611deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de290613aa9565b60405180910390fd5b6000600e83604051611dfd919061381d565b90815260200160405180910390205414611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4390613a29565b60405180910390fd5b6000611e566123ad565b9050611e6284836123b6565b611e6c8382612573565b8373ffffffffffffffffffffffffffffffffffffffff167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe83604051611eb29190613ae9565b60405180910390a250505050565b6000600f6000838152602001908152602001600020549050919050565b611ee88484846110e0565b60008373ffffffffffffffffffffffffffffffffffffffff163b14611f4a57611f1384848484612ba2565b611f49576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b6060611f5b82612335565b611f91576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611f9b612d02565b90506000601060008581526020019081526020016000208054611fbd90613d31565b9050111561206957601060008481526020019081526020016000208054611fe390613d31565b80601f016020809104026020016040519081016040528092919081815260200182805461200f90613d31565b801561205c5780601f106120315761010080835404028352916020019161205c565b820191906000526020600020905b81548152906001019060200180831161203f57829003601f168201915b505050505091505061210e565b6000600f60008581526020019081526020016000205414156120ad57806040516020016120969190613863565b60405160208183030381529060405291505061210e565b6000815114156120cc576040518060200160405280600081525061210a565b806120e9600f600086815260200190815260200160002054612d94565b6040516020016120fa929190613834565b6040516020818303038152906040525b9150505b919050565b61211b61239c565b73ffffffffffffffffffffffffffffffffffffffff16612139611a2a565b73ffffffffffffffffffffffffffffffffffffffff161461218f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612186906139c9565b60405180910390fd5b80600a90805190602001906121a5929190612e06565b5050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61224561239c565b73ffffffffffffffffffffffffffffffffffffffff16612263611a2a565b73ffffffffffffffffffffffffffffffffffffffff16146122b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b0906139c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232090613949565b60405180910390fd5b61233281612adc565b50565b6000816123406123a4565b1115801561234f575060005482105b801561238d575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b600033905090565b60006001905090565b60008054905090565b60008054905060008214156123f7576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6124046000848385612829565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061247b8361246c600086600061282f565b61247585612ded565b17612857565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b81811461251c57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46001810190506124e1565b506000821415612558576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600081905550505061256e6000848385612882565b505050565b600081116125b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ad90613a89565b60405180910390fd5b60008251116125fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f190613929565b60405180910390fd5b6000600d8360405161260c919061381d565b9081526020016040518091039020541161265b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265290613aa9565b60405180910390fd5b6002600c8360405161266d919061381d565b908152602001604051809103902060006101000a81548160ff021916908360ff16021790555080600e836040516126a4919061381d565b908152602001604051809103902081905550600d826040516126c6919061381d565b908152602001604051809103902054600f6000838152602001908152602001600020819055505050565b600080829050806126ff6123a4565b11612787576000548110156127865760006004600083815260200190815260200160002054905060007c010000000000000000000000000000000000000000000000000000000082161415612784575b600081141561277a57600460008360019003935083815260200190815260200160002054905061274f565b80925050506127b9565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e8612846868684612dfd565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b6000612893836126f0565b905060008190506000806128a6866127be565b91509150841561290f576128c281846128bd612394565b6127e5565b61290e576128d7836128d2612394565b6121a9565b61290d576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b61291d836000886001612829565b801561292857600082555b600160806001901b03600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506129d08361298d8560008861282f565b7c02000000000000000000000000000000000000000000000000000000007c01000000000000000000000000000000000000000000000000000000001717612857565b600460008881526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000085161415612a58576000600187019050600060046000838152602001908152602001600020541415612a56576000548114612a55578460046000838152602001908152602001600020819055505b5b505b85600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612ac2836000886001612882565b600160008154809291906001019190505550505050505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612bc8612394565b8786866040518563ffffffff1660e01b8152600401612bea94939291906138a0565b602060405180830381600087803b158015612c0457600080fd5b505af1925050508015612c3557506040513d601f19601f82011682018060405250810190612c3291906133a4565b60015b612caf573d8060008114612c65576040519150601f19603f3d011682016040523d82523d6000602084013e612c6a565b606091505b50600081511415612ca7576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600a8054612d1190613d31565b80601f0160208091040260200160405190810160405280929190818152602001828054612d3d90613d31565b8015612d8a5780601f10612d5f57610100808354040283529160200191612d8a565b820191906000526020600020905b815481529060010190602001808311612d6d57829003601f168201915b5050505050905090565b606060a060405101806040526020810391506000825281835b600115612dd857600184039350600a81066030018453600a8104905080612dd357612dd8565b612dad565b50828103602084039350808452505050919050565b60006001821460e11b9050919050565b60009392505050565b828054612e1290613d31565b90600052602060002090601f016020900481019282612e345760008555612e7b565b82601f10612e4d57805160ff1916838001178555612e7b565b82800160010185558215612e7b579182015b82811115612e7a578251825591602001919060010190612e5f565b5b509050612e889190612e8c565b5090565b5b80821115612ea5576000816000905550600101612e8d565b5090565b6000612ebc612eb784613b80565b613b5b565b905082815260208101848484011115612ed457600080fd5b612edf848285613cef565b509392505050565b6000612efa612ef584613bb1565b613b5b565b905082815260208101848484011115612f1257600080fd5b612f1d848285613cef565b509392505050565b600081359050612f348161417d565b92915050565b60008083601f840112612f4c57600080fd5b8235905067ffffffffffffffff811115612f6557600080fd5b602083019150836020820283011115612f7d57600080fd5b9250929050565b60008083601f840112612f9657600080fd5b8235905067ffffffffffffffff811115612faf57600080fd5b602083019150836020820283011115612fc757600080fd5b9250929050565b600081359050612fdd81614194565b92915050565b600081359050612ff2816141ab565b92915050565b600081519050613007816141ab565b92915050565b600082601f83011261301e57600080fd5b813561302e848260208601612ea9565b91505092915050565b600082601f83011261304857600080fd5b8135613058848260208601612ee7565b91505092915050565b600081359050613070816141c2565b92915050565b60006020828403121561308857600080fd5b600061309684828501612f25565b91505092915050565b600080604083850312156130b257600080fd5b60006130c085828601612f25565b92505060206130d185828601612f25565b9150509250929050565b6000806000606084860312156130f057600080fd5b60006130fe86828701612f25565b935050602061310f86828701612f25565b925050604061312086828701613061565b9150509250925092565b6000806000806080858703121561314057600080fd5b600061314e87828801612f25565b945050602061315f87828801612f25565b935050604061317087828801613061565b925050606085013567ffffffffffffffff81111561318d57600080fd5b6131998782880161300d565b91505092959194509250565b600080604083850312156131b857600080fd5b60006131c685828601612f25565b92505060206131d785828601612fce565b9150509250929050565b600080604083850312156131f457600080fd5b600061320285828601612f25565b925050602083013567ffffffffffffffff81111561321f57600080fd5b61322b85828601613037565b9150509250929050565b6000806040838503121561324857600080fd5b600061325685828601612f25565b925050602061326785828601613061565b9150509250929050565b6000806000806060858703121561328757600080fd5b600061329587828801612f25565b94505060206132a687828801613061565b935050604085013567ffffffffffffffff8111156132c357600080fd5b6132cf87828801612f3a565b925092505092959194509250565b600080600080604085870312156132f357600080fd5b600085013567ffffffffffffffff81111561330d57600080fd5b61331987828801612f3a565b9450945050602085013567ffffffffffffffff81111561333857600080fd5b61334487828801612f84565b925092505092959194509250565b60006020828403121561336457600080fd5b600061337284828501612fce565b91505092915050565b60006020828403121561338d57600080fd5b600061339b84828501612fe3565b91505092915050565b6000602082840312156133b657600080fd5b60006133c484828501612ff8565b91505092915050565b6000602082840312156133df57600080fd5b600082013567ffffffffffffffff8111156133f957600080fd5b61340584828501613037565b91505092915050565b6000806040838503121561342157600080fd5b600083013567ffffffffffffffff81111561343b57600080fd5b61344785828601613037565b925050602061345885828601613061565b9150509250929050565b60006020828403121561347457600080fd5b600061348284828501613061565b91505092915050565b6000806040838503121561349e57600080fd5b60006134ac85828601613061565b925050602083013567ffffffffffffffff8111156134c957600080fd5b6134d585828601613037565b9150509250929050565b6134e881613c7b565b82525050565b6134f781613c8d565b82525050565b600061350882613be2565b6135128185613bf8565b9350613522818560208601613cfe565b61352b81613e6a565b840191505092915050565b60006135428385613c1a565b935061354f838584613cef565b82840190509392505050565b600061356682613bed565b6135708185613c09565b9350613580818560208601613cfe565b61358981613e6a565b840191505092915050565b600061359f82613bed565b6135a98185613c1a565b93506135b9818560208601613cfe565b80840191505092915050565b60006135d2600f83613c09565b91506135dd82613e7b565b602082019050919050565b60006135f5602683613c09565b915061360082613ea4565b604082019050919050565b6000613618601d83613c09565b915061362382613ef3565b602082019050919050565b600061363b601883613c09565b915061364682613f1c565b602082019050919050565b600061365e601483613c09565b915061366982613f45565b602082019050919050565b6000613681600583613c1a565b915061368c82613f6e565b600582019050919050565b60006136a4602083613c09565b91506136af82613f97565b602082019050919050565b60006136c7601183613c09565b91506136d282613fc0565b602082019050919050565b60006136ea602583613c09565b91506136f582613fe9565b604082019050919050565b600061370d600683613c1a565b915061371882614038565b600682019050919050565b6000613730602583613c09565b915061373b82614061565b604082019050919050565b6000613753601c83613c09565b915061375e826140b0565b602082019050919050565b6000613776601b83613c09565b9150613781826140d9565b602082019050919050565b6000613799601083613c09565b91506137a482614102565b602082019050919050565b60006137bc601383613c09565b91506137c78261412b565b602082019050919050565b60006137df601283613c09565b91506137ea82614154565b602082019050919050565b6137fe81613ce5565b82525050565b6000613811828486613536565b91508190509392505050565b60006138298284613594565b915081905092915050565b60006138408285613594565b915061384c8284613594565b915061385782613674565b91508190509392505050565b600061386f8284613594565b915061387a82613700565b915081905092915050565b600060208201905061389a60008301846134df565b92915050565b60006080820190506138b560008301876134df565b6138c260208301866134df565b6138cf60408301856137f5565b81810360608301526138e181846134fd565b905095945050505050565b600060208201905061390160008301846134ee565b92915050565b60006020820190508181036000830152613921818461355b565b905092915050565b60006020820190508181036000830152613942816135c5565b9050919050565b60006020820190508181036000830152613962816135e8565b9050919050565b600060208201905081810360008301526139828161360b565b9050919050565b600060208201905081810360008301526139a28161362e565b9050919050565b600060208201905081810360008301526139c281613651565b9050919050565b600060208201905081810360008301526139e281613697565b9050919050565b60006020820190508181036000830152613a02816136ba565b9050919050565b60006020820190508181036000830152613a22816136dd565b9050919050565b60006020820190508181036000830152613a4281613723565b9050919050565b60006020820190508181036000830152613a6281613746565b9050919050565b60006020820190508181036000830152613a8281613769565b9050919050565b60006020820190508181036000830152613aa28161378c565b9050919050565b60006020820190508181036000830152613ac2816137af565b9050919050565b60006020820190508181036000830152613ae2816137d2565b9050919050565b6000602082019050613afe60008301846137f5565b92915050565b60008083356001602003843603038112613b1d57600080fd5b80840192508235915067ffffffffffffffff821115613b3b57600080fd5b602083019250600182023603831315613b5357600080fd5b509250929050565b6000613b65613b76565b9050613b718282613d63565b919050565b6000604051905090565b600067ffffffffffffffff821115613b9b57613b9a613e3b565b5b613ba482613e6a565b9050602081019050919050565b600067ffffffffffffffff821115613bcc57613bcb613e3b565b5b613bd582613e6a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613c3082613ce5565b9150613c3b83613ce5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c7057613c6f613ddd565b5b828201905092915050565b6000613c8682613cc5565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613d1c578082015181840152602081019050613d01565b83811115613d2b576000848401525b50505050565b60006002820490506001821680613d4957607f821691505b60208210811415613d5d57613d5c613e0c565b5b50919050565b613d6c82613e6a565b810181811067ffffffffffffffff82111715613d8b57613d8a613e3b565b5b80604052505050565b6000613d9f82613ce5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613dd257613dd1613ddd565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f53657269616c20697320656d7074790000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b7f53657269616c20697320416c7265616479206d696e7465640000000000000000600082015250565b7f417070726f7665642053657269616c206f6e6c79000000000000000000000000600082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f756e6f636375706965642073657269616c000000000000000000000000000000600082015250565b7f53657269616c206c656e67746820616e6420616d6f756e74206973206e6f742060008201527f657175616c000000000000000000000000000000000000000000000000000000602082015250565b7f302e6a736f6e0000000000000000000000000000000000000000000000000000600082015250565b7f53657269616c20697320416c7265616479206d696e74656420646f75626c652060008201527f636865636b000000000000000000000000000000000000000000000000000000602082015250565b7f56616c69646174652073657269616c7320616e64206d65746149647300000000600082015250565b7f53657269616c73206f72204d65746149647320697320656d7074790000000000600082015250565b7f546f6b656e496420697320656d70747900000000000000000000000000000000600082015250565b7f53657269616c206973206e6f742076616c696400000000000000000000000000600082015250565b7f436f6e7472616374206973206c6f636b65640000000000000000000000000000600082015250565b61418681613c7b565b811461419157600080fd5b50565b61419d81613c8d565b81146141a857600080fd5b50565b6141b481613c99565b81146141bf57600080fd5b50565b6141cb81613ce5565b81146141d657600080fd5b5056fea2646970667358221220e01d67c1e9405bc5d65afe16dadda6e042c5aa42c2d8cf675bf1c333d936d83d64736f6c6343000804003368747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d6137763336763359564368706d556158424537537a65686a3732417a7047474a4837327a6f354471366248332f0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005168747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d6137763336763359564368706d556158424537537a65686a3732417a7047474a4837327a6f354471366248332f000000000000000000000000000000