0x60806040526000600a556001600c60006101000a81548160ff021916908360ff1602179055506040518060600160405280603081526020016200550760309139600d908051906020019062000056929190620002de565b506001600e60006101000a81548160ff0219169083151502179055503480156200007f57600080fd5b506040518060400160405280600681526020017f43415254454c00000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4352544c00000000000000000000000000000000000000000000000000000000815250818160036105dc62000113620001076200020960201b60201c565b6200021160201b60201c565b6000811162000159576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200015090620003fe565b60405180910390fd5b600082116200019f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200019690620003dc565b60405180910390fd5b8360049080519060200190620001b7929190620002de565b508260059080519060200190620001d0929190620002de565b508160038190555080600281905550620001ef620002d560201b60201c565b600181905550505050506001600b81905550505062000534565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006001905090565b828054620002ec9062000431565b90600052602060002090601f0160209004810192826200031057600085556200035c565b82601f106200032b57805160ff19168380011785556200035c565b828001600101855582156200035c579182015b828111156200035b5782518255916020019190600101906200033e565b5b5090506200036b91906200036f565b5090565b5b808211156200038a57600081600090555060010162000370565b5090565b60006200039d60278362000420565b9150620003aa8262000496565b604082019050919050565b6000620003c4602e8362000420565b9150620003d182620004e5565b604082019050919050565b60006020820190508181036000830152620003f7816200038e565b9050919050565b600060208201905081810360008301526200041981620003b5565b9050919050565b600082825260208201905092915050565b600060028204905060018216806200044a57607f821691505b6020821081141562000461576200046062000467565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f455243373231413a206d61782062617463682073697a65206d7573742062652060008201527f6e6f6e7a65726f00000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060008201527f6e6f6e7a65726f20737570706c79000000000000000000000000000000000000602082015250565b614fc380620005446000396000f3fe60806040526004361061025b5760003560e01c806355f804b311610144578063a22cb465116100b6578063d547cfb71161007a578063d547cfb71461090b578063d7224ba014610936578063e6ab143414610961578063e985e9c51461097d578063f2fde38b146109ba578063f7d97577146109e35761025b565b8063a22cb46514610826578063b88d4fde1461084f578063c87b56dd14610878578063caa0f92a146108b5578063cfc86f7b146108e05761025b565b8063853828b611610108578063853828b6146107285780638da5cb5b1461073f5780639231ab2a1461076a57806395d89b41146107a7578063976550b4146107d25780639f8afbcc146107fd5761025b565b806355f804b3146106435780636352211e1461066c57806370a08231146106a9578063715018a6146106e65780637f205a74146106fd5761025b565b80632f745c59116101dd57806342842e0e116101a157806342842e0e14610523578063438b63001461054c57806345c0f533146105895780634a4c560d146105b45780634f6ccce7146105dd578063547520fe1461061a5761025b565b80632f745c591461042c57806330cc7ae014610469578063372c12b11461049257806338b90333146104cf57806340ccc082146104fa5761025b565b8063095ea7b311610224578063095ea7b31461035957806316c61ccc1461038257806318160ddd146103ad57806323b872dd146103d85780632913daa0146104015761025b565b80629a9b7b1461026057806301ffc9a71461028b57806302329a29146102c857806306fdde03146102f1578063081812fc1461031c575b600080fd5b34801561026c57600080fd5b50610275610a0c565b6040516102829190614300565b60405180910390f35b34801561029757600080fd5b506102b260048036038101906102ad9190613868565b610a1b565b6040516102bf9190613f68565b60405180910390f35b3480156102d457600080fd5b506102ef60048036038101906102ea919061383b565b610b65565b005b3480156102fd57600080fd5b50610306610bfe565b6040516103139190613f83565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e919061390f565b610c90565b6040516103509190613edf565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b91906137fb565b610d15565b005b34801561038e57600080fd5b50610397610e2e565b6040516103a49190613f68565b60405180910390f35b3480156103b957600080fd5b506103c2610e41565b6040516103cf9190614300565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa91906136e5565b610e50565b005b34801561040d57600080fd5b50610416610e60565b6040516104239190614300565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e91906137fb565b610e66565b6040516104609190614300565b60405180910390f35b34801561047557600080fd5b50610490600480360381019061048b9190613678565b611064565b005b34801561049e57600080fd5b506104b960048036038101906104b49190613678565b61113b565b6040516104c69190613f68565b60405180910390f35b3480156104db57600080fd5b506104e461115b565b6040516104f1919061431b565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c91906137fb565b61116e565b005b34801561052f57600080fd5b5061054a600480360381019061054591906136e5565b611294565b005b34801561055857600080fd5b50610573600480360381019061056e9190613678565b6112b4565b6040516105809190613f46565b60405180910390f35b34801561059557600080fd5b5061059e611362565b6040516105ab9190614300565b60405180910390f35b3480156105c057600080fd5b506105db60048036038101906105d69190613678565b611368565b005b3480156105e957600080fd5b5061060460048036038101906105ff919061390f565b61143f565b6040516106119190614300565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c919061390f565b611492565b005b34801561064f57600080fd5b5061066a600480360381019061066591906138c2565b61155c565b005b34801561067857600080fd5b50610693600480360381019061068e919061390f565b6115ee565b6040516106a09190613edf565b60405180910390f35b3480156106b557600080fd5b506106d060048036038101906106cb9190613678565b611604565b6040516106dd9190614300565b60405180910390f35b3480156106f257600080fd5b506106fb6116ed565b005b34801561070957600080fd5b50610712611775565b60405161071f9190614300565b60405180910390f35b34801561073457600080fd5b5061073d61177b565b005b34801561074b57600080fd5b50610754611846565b6040516107619190613edf565b60405180910390f35b34801561077657600080fd5b50610791600480360381019061078c919061390f565b61186f565b60405161079e91906142e5565b60405180910390f35b3480156107b357600080fd5b506107bc611887565b6040516107c99190613f83565b60405180910390f35b3480156107de57600080fd5b506107e7611919565b6040516107f49190614300565b60405180910390f35b34801561080957600080fd5b50610824600480360381019061081f919061390f565b61191f565b005b34801561083257600080fd5b5061084d600480360381019061084891906137bb565b6119a5565b005b34801561085b57600080fd5b5061087660048036038101906108719190613738565b611b26565b005b34801561088457600080fd5b5061089f600480360381019061089a919061390f565b611b82565b6040516108ac9190613f83565b60405180910390f35b3480156108c157600080fd5b506108ca611be1565b6040516108d79190614300565b60405180910390f35b3480156108ec57600080fd5b506108f5611bfc565b6040516109029190613f83565b60405180910390f35b34801561091757600080fd5b50610920611c8a565b60405161092d9190613f83565b60405180910390f35b34801561094257600080fd5b5061094b611d1c565b6040516109589190614300565b60405180910390f35b61097b6004803603810190610976919061390f565b611d22565b005b34801561098957600080fd5b506109a4600480360381019061099f91906136a5565b611e75565b6040516109b19190613f68565b60405180910390f35b3480156109c657600080fd5b506109e160048036038101906109dc9190613678565b611f09565b005b3480156109ef57600080fd5b50610a0a6004803603810190610a05919061393c565b612001565b005b6000610a1661208f565b905090565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ae657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b4e57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b5e5750610b5d826120a2565b5b9050919050565b610b6d61210c565b73ffffffffffffffffffffffffffffffffffffffff16610b8b611846565b73ffffffffffffffffffffffffffffffffffffffff1614610be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd890614145565b60405180910390fd5b80600e60006101000a81548160ff02191690831515021790555050565b606060048054610c0d9061468a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c399061468a565b8015610c865780601f10610c5b57610100808354040283529160200191610c86565b820191906000526020600020905b815481529060010190602001808311610c6957829003601f168201915b5050505050905090565b6000610c9b82612114565b610cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd1906142a5565b60405180910390fd5b6008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610d20826115ee565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d88906141c5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610db061210c565b73ffffffffffffffffffffffffffffffffffffffff161480610ddf5750610dde81610dd961210c565b611e75565b5b610e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e15906140e5565b60405180910390fd5b610e29838383612135565b505050565b600e60009054906101000a900460ff1681565b6000610e4b61208f565b905090565b610e5b8383836121e7565b505050565b60035481565b6000610e7183611604565b8210610eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea990613fa5565b60405180910390fd5b6000610ebc610e41565b905060008060005b83811015611022576000600660008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610fb657806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561100e5786841415610fff57819550505050505061105e565b838061100a906146ed565b9450505b50808061101a906146ed565b915050610ec4565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105590614265565b60405180910390fd5b92915050565b61106c61210c565b73ffffffffffffffffffffffffffffffffffffffff1661108a611846565b73ffffffffffffffffffffffffffffffffffffffff16146110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d790614145565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600f6020528060005260406000206000915054906101000a900460ff1681565b600c60009054906101000a900460ff1681565b61117661210c565b73ffffffffffffffffffffffffffffffffffffffff16611194611846565b73ffffffffffffffffffffffffffffffffffffffff16146111ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e190614145565b60405180910390fd5b6000811161122d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611224906140a5565b60405180910390fd5b60025481611239610a0c565b611243919061444e565b1115611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b90614025565b60405180910390fd5b611290828260016127a0565b5050565b6112af83838360405180602001604052806000815250611b26565b505050565b606060006112c183611604565b905060008167ffffffffffffffff8111156112df576112de614823565b5b60405190808252806020026020018201604052801561130d5781602001602082028036833780820191505090505b50905060005b82811015611357576113258582610e66565b828281518110611338576113376147f4565b5b602002602001018181525050808061134f906146ed565b915050611313565b508092505050919050565b60025481565b61137061210c565b73ffffffffffffffffffffffffffffffffffffffff1661138e611846565b73ffffffffffffffffffffffffffffffffffffffff16146113e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113db90614145565b60405180910390fd5b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611449610e41565b821061148a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148190614085565b60405180910390fd5b819050919050565b61149a61210c565b73ffffffffffffffffffffffffffffffffffffffff166114b8611846565b73ffffffffffffffffffffffffffffffffffffffff161461150e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150590614145565b60405180910390fd5b6001811015611552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154990613fc5565b60405180910390fd5b8060038190555050565b61156461210c565b73ffffffffffffffffffffffffffffffffffffffff16611582611846565b73ffffffffffffffffffffffffffffffffffffffff16146115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cf90614145565b60405180910390fd5b8181600d91906115e992919061346c565b505050565b60006115f9826127c0565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c90614105565b60405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b6116f561210c565b73ffffffffffffffffffffffffffffffffffffffff16611713611846565b73ffffffffffffffffffffffffffffffffffffffff1614611769576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176090614145565b60405180910390fd5b6117736000612a18565b565b60105481565b61178361210c565b73ffffffffffffffffffffffffffffffffffffffff166117a1611846565b73ffffffffffffffffffffffffffffffffffffffff16146117f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ee90614145565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611842573d6000803e3d6000fd5b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6118776134f2565b611880826127c0565b9050919050565b6060600580546118969061468a565b80601f01602080910402602001604051908101604052809291908181526020018280546118c29061468a565b801561190f5780601f106118e45761010080835404028352916020019161190f565b820191906000526020600020905b8154815290600101906020018083116118f257829003601f168201915b5050505050905090565b60115481565b61192761210c565b73ffffffffffffffffffffffffffffffffffffffff16611945611846565b73ffffffffffffffffffffffffffffffffffffffff161461199b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199290614145565b60405180910390fd5b8060028190555050565b6119ad61210c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1290614185565b60405180910390fd5b8060096000611a2861210c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611ad561210c565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611b1a9190613f68565b60405180910390a35050565b611b318484846121e7565b611b3d84848484612adc565b611b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b73906141e5565b60405180910390fd5b50505050565b60606000611b8e612c73565b90506000815111611bae5760405180602001604052806000815250611bd9565b80611bb884612d05565b604051602001611bc9929190613ebb565b6040516020818303038152906040525b915050919050565b60006001611bed61208f565b611bf7919061444e565b905090565b600d8054611c099061468a565b80601f0160208091040260200160405190810160405280929190818152602001828054611c359061468a565b8015611c825780601f10611c5757610100808354040283529160200191611c82565b820191906000526020600020905b815481529060010190602001808311611c6557829003601f168201915b505050505081565b6060600d8054611c999061468a565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc59061468a565b8015611d125780601f10611ce757610100808354040283529160200191611d12565b820191906000526020600020905b815481529060010190602001808311611cf557829003601f168201915b5050505050905090565b600a5481565b600e60009054906101000a900460ff1615611d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6990613fe5565b60405180910390fd5b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e185780601154611dd291906144d5565b3414611e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0a90614065565b60405180910390fd5b611e68565b80601054611e2691906144d5565b3414611e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5e90614065565b60405180910390fd5b5b611e723382612e66565b50565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611f1161210c565b73ffffffffffffffffffffffffffffffffffffffff16611f2f611846565b73ffffffffffffffffffffffffffffffffffffffff1614611f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7c90614145565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fec90614005565b60405180910390fd5b611ffe81612a18565b50565b61200961210c565b73ffffffffffffffffffffffffffffffffffffffff16612027611846565b73ffffffffffffffffffffffffffffffffffffffff161461207d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207490614145565b60405180910390fd5b81601081905550806011819055505050565b6000612099612f56565b60015403905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b60008161211f612f56565b1115801561212e575060015482105b9050919050565b826008600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006121f2826127c0565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1661221961210c565b73ffffffffffffffffffffffffffffffffffffffff161480612275575061223e61210c565b73ffffffffffffffffffffffffffffffffffffffff1661225d84610c90565b73ffffffffffffffffffffffffffffffffffffffff16145b806122915750612290826000015161228b61210c565b611e75565b5b9050806122d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ca906141a5565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233c90614125565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156123b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ac906140c5565b60405180910390fd5b6123c28585856001612f5f565b6123d26000848460000151612135565b6001600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff16612440919061452f565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166124e49190614408565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506006600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846125ea919061444e565b9050600073ffffffffffffffffffffffffffffffffffffffff166006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156127305761266081612114565b1561272f576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506006600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46127988686866001612f65565b505050505050565b6127bb83838360405180602001604052806000815250612f6b565b505050565b6127c86134f2565b6000829050806127d6612f56565b111580156127e5575060015481105b156129d8576000600660008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146128d6578092505050612a13565b5b6001156129d657818060019003925050600660008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146129d1578092505050612a13565b6128d7565b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0a90614285565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612afd8473ffffffffffffffffffffffffffffffffffffffff16613449565b15612c66578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612b2661210c565b8786866040518563ffffffff1660e01b8152600401612b489493929190613efa565b602060405180830381600087803b158015612b6257600080fd5b505af1925050508015612b9357506040513d601f19601f82011682018060405250810190612b909190613895565b60015b612c16573d8060008114612bc3576040519150601f19603f3d011682016040523d82523d6000602084013e612bc8565b606091505b50600081511415612c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c05906141e5565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612c6b565b600190505b949350505050565b6060600d8054612c829061468a565b80601f0160208091040260200160405190810160405280929190818152602001828054612cae9061468a565b8015612cfb5780601f10612cd057610100808354040283529160200191612cfb565b820191906000526020600020905b815481529060010190602001808311612cde57829003601f168201915b5050505050905090565b60606000821415612d4d576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612e61565b600082905060005b60008214612d7f578080612d68906146ed565b915050600a82612d7891906144a4565b9150612d55565b60008167ffffffffffffffff811115612d9b57612d9a614823565b5b6040519080825280601f01601f191660200182016040528015612dcd5781602001600182028036833780820191505090505b5090505b60008514612e5a57600182612de69190614563565b9150600a85612df59190614736565b6030612e01919061444e565b60f81b818381518110612e1757612e166147f4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612e5391906144a4565b9450612dd1565b8093505050505b919050565b6001811015612eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea190614045565b60405180910390fd5b600354811115612eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee690614245565b60405180910390fd5b60025481612efb610a0c565b612f05919061444e565b1115612f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3d90614165565b60405180910390fd5b612f52828260006127a0565b5050565b60006001905090565b50505050565b50505050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd990614225565b60405180910390fd5b612feb81612114565b1561302b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302290614205565b60405180910390fd5b60001515831515141561307e5760035484111561307d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613074906142c5565b60405180910390fd5b5b61308b6000868387612f5f565b6000600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060405180604001604052808683600001516131889190614408565b6fffffffffffffffffffffffffffffffff168152602001856131aa57866131ad565b60005b83602001516131bc9190614408565b6fffffffffffffffffffffffffffffffff16815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506006600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b8681101561342b57818873ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46133cb6000898488612adc565b61340a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613401906141e5565b60405180910390fd5b8180613415906146ed565b9250508080613423906146ed565b91505061335a565b50806001819055506134406000888589612f65565b50505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546134789061468a565b90600052602060002090601f01602090048101928261349a57600085556134e1565b82601f106134b357803560ff19168380011785556134e1565b828001600101855582156134e1579182015b828111156134e05782358255916020019190600101906134c5565b5b5090506134ee919061352c565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b8082111561354557600081600090555060010161352d565b5090565b600061355c6135578461435b565b614336565b90508281526020810184848401111561357857613577614861565b5b613583848285614648565b509392505050565b60008135905061359a81614f31565b92915050565b6000813590506135af81614f48565b92915050565b6000813590506135c481614f5f565b92915050565b6000815190506135d981614f5f565b92915050565b600082601f8301126135f4576135f3614857565b5b8135613604848260208601613549565b91505092915050565b60008083601f84011261362357613622614857565b5b8235905067ffffffffffffffff8111156136405761363f614852565b5b60208301915083600182028301111561365c5761365b61485c565b5b9250929050565b60008135905061367281614f76565b92915050565b60006020828403121561368e5761368d61486b565b5b600061369c8482850161358b565b91505092915050565b600080604083850312156136bc576136bb61486b565b5b60006136ca8582860161358b565b92505060206136db8582860161358b565b9150509250929050565b6000806000606084860312156136fe576136fd61486b565b5b600061370c8682870161358b565b935050602061371d8682870161358b565b925050604061372e86828701613663565b9150509250925092565b600080600080608085870312156137525761375161486b565b5b60006137608782880161358b565b94505060206137718782880161358b565b935050604061378287828801613663565b925050606085013567ffffffffffffffff8111156137a3576137a2614866565b5b6137af878288016135df565b91505092959194509250565b600080604083850312156137d2576137d161486b565b5b60006137e08582860161358b565b92505060206137f1858286016135a0565b9150509250929050565b600080604083850312156138125761381161486b565b5b60006138208582860161358b565b925050602061383185828601613663565b9150509250929050565b6000602082840312156138515761385061486b565b5b600061385f848285016135a0565b91505092915050565b60006020828403121561387e5761387d61486b565b5b600061388c848285016135b5565b91505092915050565b6000602082840312156138ab576138aa61486b565b5b60006138b9848285016135ca565b91505092915050565b600080602083850312156138d9576138d861486b565b5b600083013567ffffffffffffffff8111156138f7576138f6614866565b5b6139038582860161360d565b92509250509250929050565b6000602082840312156139255761392461486b565b5b600061393384828501613663565b91505092915050565b600080604083850312156139535761395261486b565b5b600061396185828601613663565b925050602061397285828601613663565b9150509250929050565b60006139888383613e7f565b60208301905092915050565b61399d81614597565b82525050565b6139ac81614597565b82525050565b60006139bd8261439c565b6139c781856143ca565b93506139d28361438c565b8060005b83811015613a035781516139ea888261397c565b97506139f5836143bd565b9250506001810190506139d6565b5085935050505092915050565b613a19816145a9565b82525050565b6000613a2a826143a7565b613a3481856143db565b9350613a44818560208601614657565b613a4d81614870565b840191505092915050565b6000613a63826143b2565b613a6d81856143ec565b9350613a7d818560208601614657565b613a8681614870565b840191505092915050565b6000613a9c826143b2565b613aa681856143fd565b9350613ab6818560208601614657565b80840191505092915050565b6000613acf6022836143ec565b9150613ada82614881565b604082019050919050565b6000613af2601b836143ec565b9150613afd826148d0565b602082019050919050565b6000613b15600b836143ec565b9150613b20826148f9565b602082019050919050565b6000613b386026836143ec565b9150613b4382614922565b604082019050919050565b6000613b5b601b836143ec565b9150613b6682614971565b602082019050919050565b6000613b7e601a836143ec565b9150613b898261499a565b602082019050919050565b6000613ba1600e836143ec565b9150613bac826149c3565b602082019050919050565b6000613bc46023836143ec565b9150613bcf826149ec565b604082019050919050565b6000613be7601b836143ec565b9150613bf282614a3b565b602082019050919050565b6000613c0a6025836143ec565b9150613c1582614a64565b604082019050919050565b6000613c2d6039836143ec565b9150613c3882614ab3565b604082019050919050565b6000613c50602b836143ec565b9150613c5b82614b02565b604082019050919050565b6000613c736026836143ec565b9150613c7e82614b51565b604082019050919050565b6000613c966020836143ec565b9150613ca182614ba0565b602082019050919050565b6000613cb96024836143ec565b9150613cc482614bc9565b604082019050919050565b6000613cdc601a836143ec565b9150613ce782614c18565b602082019050919050565b6000613cff6032836143ec565b9150613d0a82614c41565b604082019050919050565b6000613d226022836143ec565b9150613d2d82614c90565b604082019050919050565b6000613d456033836143ec565b9150613d5082614cdf565b604082019050919050565b6000613d68601d836143ec565b9150613d7382614d2e565b602082019050919050565b6000613d8b6021836143ec565b9150613d9682614d57565b604082019050919050565b6000613dae602e836143ec565b9150613db982614da6565b604082019050919050565b6000613dd1602e836143ec565b9150613ddc82614df5565b604082019050919050565b6000613df4602f836143ec565b9150613dff82614e44565b604082019050919050565b6000613e17602d836143ec565b9150613e2282614e93565b604082019050919050565b6000613e3a6022836143ec565b9150613e4582614ee2565b604082019050919050565b604082016000820151613e666000850182613994565b506020820151613e796020850182613e9d565b50505050565b613e888161461d565b82525050565b613e978161461d565b82525050565b613ea681614627565b82525050565b613eb58161463b565b82525050565b6000613ec78285613a91565b9150613ed38284613a91565b91508190509392505050565b6000602082019050613ef460008301846139a3565b92915050565b6000608082019050613f0f60008301876139a3565b613f1c60208301866139a3565b613f296040830185613e8e565b8181036060830152613f3b8184613a1f565b905095945050505050565b60006020820190508181036000830152613f6081846139b2565b905092915050565b6000602082019050613f7d6000830184613a10565b92915050565b60006020820190508181036000830152613f9d8184613a58565b905092915050565b60006020820190508181036000830152613fbe81613ac2565b9050919050565b60006020820190508181036000830152613fde81613ae5565b9050919050565b60006020820190508181036000830152613ffe81613b08565b9050919050565b6000602082019050818103600083015261401e81613b2b565b9050919050565b6000602082019050818103600083015261403e81613b4e565b9050919050565b6000602082019050818103600083015261405e81613b71565b9050919050565b6000602082019050818103600083015261407e81613b94565b9050919050565b6000602082019050818103600083015261409e81613bb7565b9050919050565b600060208201905081810360008301526140be81613bda565b9050919050565b600060208201905081810360008301526140de81613bfd565b9050919050565b600060208201905081810360008301526140fe81613c20565b9050919050565b6000602082019050818103600083015261411e81613c43565b9050919050565b6000602082019050818103600083015261413e81613c66565b9050919050565b6000602082019050818103600083015261415e81613c89565b9050919050565b6000602082019050818103600083015261417e81613cac565b9050919050565b6000602082019050818103600083015261419e81613ccf565b9050919050565b600060208201905081810360008301526141be81613cf2565b9050919050565b600060208201905081810360008301526141de81613d15565b9050919050565b600060208201905081810360008301526141fe81613d38565b9050919050565b6000602082019050818103600083015261421e81613d5b565b9050919050565b6000602082019050818103600083015261423e81613d7e565b9050919050565b6000602082019050818103600083015261425e81613da1565b9050919050565b6000602082019050818103600083015261427e81613dc4565b9050919050565b6000602082019050818103600083015261429e81613de7565b9050919050565b600060208201905081810360008301526142be81613e0a565b9050919050565b600060208201905081810360008301526142de81613e2d565b9050919050565b60006040820190506142fa6000830184613e50565b92915050565b60006020820190506143156000830184613e8e565b92915050565b60006020820190506143306000830184613eac565b92915050565b6000614340614351565b905061434c82826146bc565b919050565b6000604051905090565b600067ffffffffffffffff82111561437657614375614823565b5b61437f82614870565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614413826145e1565b915061441e836145e1565b9250826fffffffffffffffffffffffffffffffff0382111561444357614442614767565b5b828201905092915050565b60006144598261461d565b91506144648361461d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561449957614498614767565b5b828201905092915050565b60006144af8261461d565b91506144ba8361461d565b9250826144ca576144c9614796565b5b828204905092915050565b60006144e08261461d565b91506144eb8361461d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561452457614523614767565b5b828202905092915050565b600061453a826145e1565b9150614545836145e1565b92508282101561455857614557614767565b5b828203905092915050565b600061456e8261461d565b91506145798361461d565b92508282101561458c5761458b614767565b5b828203905092915050565b60006145a2826145fd565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b8381101561467557808201518184015260208101905061465a565b83811115614684576000848401525b50505050565b600060028204905060018216806146a257607f821691505b602082108114156146b6576146b56147c5565b5b50919050565b6146c582614870565b810181811067ffffffffffffffff821117156146e4576146e3614823565b5b80604052505050565b60006146f88261461d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561472b5761472a614767565b5b600182019050919050565b60006147418261461d565b915061474c8361461d565b92508261475c5761475b614796565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d6178206d696e74206d757374206265206174206c6561737420310000000000600082015250565b7f53616c6520706175736564000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f74206d696e74206f76657220737570706c79206361700000000000600082015250565b7f4d757374206d696e74206174206c65617374203120746f6b656e000000000000600082015250565b7f496e76616c696420616d6f756e74000000000000000000000000000000000000600082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374206d696e74206174206c65617374203120746f6b656e2e0000000000600082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f43616e6e6f74206d696e74206f76657220737570706c7920636170206f66203160008201527f3030303000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f74206d696e74206d6f7265207468616e206d6178206d696e74207060008201527f6572207472616e73616374696f6e000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b614f3a81614597565b8114614f4557600080fd5b50565b614f51816145a9565b8114614f5c57600080fd5b50565b614f68816145b5565b8114614f7357600080fd5b50565b614f7f8161461d565b8114614f8a57600080fd5b5056fea2646970667358221220c41da0c84a14f83c8a093877c6fb0feb848fb77895c22ab209f8c14a6414cd1964736f6c6343000807003368747470733a2f2f74686563617274656c67656e65736973636f6c6c656374696f6e2e636f6d2f6d657461646174612f