0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80635c9fb8581161005b5780635c9fb85814610245578063614db013146102585780638680c3721461026b578063b5d972161461028b5761007d565b80630156afb2146101f65780632b11990e14610209578063456630c61461021c575b60005460ff6101009091041615156001146100f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f62615f667300000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101083660048184612122565b810190610115919061221d565b9350505050600080600080600085806020019051810190610136919061253b565b9450945094509450945061014d848284600161029e565b73ffffffffffffffffffffffffffffffffffffffff851663a9059cbb336101758660016126e7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156101e057600080fd5b505af11580156101f4573d6000803e3d6000fd5b005b6101f461020436600461270f565b6104ff565b6101f4610217366004612749565b610657565b61022f61022a3660046128a8565b610711565b60405161023c9190612915565b60405180910390f35b6101f4610253366004612999565b6108ca565b6101f4610266366004612999565b610fc6565b61027e6102793660046129ee565b6113c5565b60405161023c9190612aac565b6101f4610299366004612abf565b61156e565b825160005b818110156104f7578573ffffffffffffffffffffffffffffffffffffffff1663a9059cbb866000815181106102da576102da612b00565b6020026020010151602001516001815181106102f8576102f8612b00565b60200260200101518660008151811061031357610313612b00565b602002602001015160018151811061032d5761032d612b00565b60200260200101516040518363ffffffff1660e01b815260040161037392919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b600060405180830381600087803b15801561038d57600080fd5b505af11580156103a1573d6000803e3d6000fd5b5050505060008582815181106103b9576103b9612b00565b60200260200101516020015151905060008583815181106103dc576103dc612b00565b6020026020010151905060008784815181106103fa576103fa612b00565b6020026020010151604001519050600088858151811061041c5761041c612b00565b60200260200101516020015190505b838710156104e857600082888151811061044757610447612b00565b602002602001015190506001600a81111561046457610464612b2f565b8151600a81111561047757610477612b2f565b0361048e57610489838386888c611684565b6104dc565b60028151600a8111156104a3576104a3612b2f565b036104b557610489838386888c611832565b60038151600a8111156104ca576104ca612b2f565b036104dc576104dc838386888c611999565b8760010197505061042b565b846001019450505050506102a3565b505050505050565b337377d7249a9daa7da214a97fd5523f8c423a9ed63c148061053457503373bbb800d1b9426ad58c1c42cec528f1dfe2d2fc79145b806105525750337309677bd7ad2891b7b1d30290070c30d8b30073b0145b610588576040517fe4f6198100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146105e2576040519150601f19603f3d011682016040523d82523d6000602084013e6105e7565b606091505b5050905080610652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6661696c6564000000000000000000000000000000000000000000000000000060448201526064016100f0565b505050565b337377d7249a9daa7da214a97fd5523f8c423a9ed63c148061068c57503373bbb800d1b9426ad58c1c42cec528f1dfe2d2fc79145b806106aa5750337309677bd7ad2891b7b1d30290070c30d8b30073b0145b6106e0576040517fe4f6198100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b815160609060006107238260016126e7565b67ffffffffffffffff81111561073b5761073b612171565b604051908082528060200260200182016040528015610764578160200160208202803683370190505b509050858160008151811061077b5761077b612b00565b60209081029190910101528560005b838110156108be5760008682815181106107a6576107a6612b00565b602002602001015190506003600a8111156107c3576107c3612b2f565b8151600a8111156107d6576107d6612b2f565b101561083c5761080c8883815181106107f1576107f1612b00565b602002602001015184836020015160ff168460800151611b89565b9250828461081b8460016126e7565b8151811061082b5761082b612b00565b6020026020010181815250506108b5565b60038151600a81111561085157610851612b2f565b036108835761080c88838151811061086b5761086b612b00565b60200260200101518483602001518460400151611c6e565b6040517fc5b6882200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161078a565b50909695505050505050565b3373324174a78b0f134ed3ae334e92285f99af01e98114806108ff57503373c779ca147c66ffc1da06d9a21307d76912badb6d145b8061091d575033733ea4f1022b5ecc85127782a43f895f5d20c4b6f4145b8061093b57503373e9b5e80f34355d3f1a13b8a558a96a26e596b75a145b8061095957503373df8626ec34e1a4b795ab46b2c67287bd764312a0145b806109775750337344eeeafe4d4f98cd552ad843aa67c2a0eb438e4c145b80610995575033736761bc0066369d2c602afc691c0e088a9ddcf89c145b806109b3575033732e2b4182ce672291492e9429c0262b233bb13eef145b806109d1575033737352ee6e03497507217bfdeb64bcaef8d167f1af145b806109ef57503373deb0206c012dfa8ca32eb9146a8d35dc9516cbef145b80610a0d575033733718c555a36b36f398aea2751315bceeba2c1ba9145b80610a2b57503373540ce2e03a3cd0fcfdb354fbbc6d9e52097fb76a145b80610a49575033739949eb8a0139d94de19f54470201d6c499127169145b80610a675750337373f1ca589a3d848abe5e08c72fae75fe2217912d145b80610a85575033730467c9c24d9a9a512e32e560fa688fa4cfbb62a2145b80610aa357503373443b5539b1207683ef3f87922ebddd15ba178d98145b610b0b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f09060208082526004908201527f62615f6800000000000000000000000000000000000000000000000000000000604082015260600190565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790556001811115610ba4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f09060208082526004908201527f434f4e4600000000000000000000000000000000000000000000000000000000604082015260600190565b600082826000818110610bb957610bb9612b00565b9050602002810190610bcb9190612b5e565b610bd9906040810190612b9c565b6000818110610bea57610bea612b00565b905060a002016060016020810190610c029190612c03565b9050600083836000818110610c1957610c19612b00565b9050602002810190610c2b9190612b5e565b610c39906020810190612c20565b6000818110610c4a57610c4a612b00565b9050602002016020810190610c5f9190612c03565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa158015610ccf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf39190612c88565b90506000610d0186866113c5565b9050600081600081518110610d1857610d18612b00565b6020026020010151600181518110610d3257610d32612b00565b60200260200101519050600087876000818110610d5157610d51612b00565b9050602002810190610d639190612b5e565b610d71906040810190612b9c565b6000818110610d8257610d82612b00565b905060a002016080013583600081518110610d9f57610d9f612b00565b6020026020010151600081518110610db957610db9612b00565b6020026020010151620f4240610dcf9190612ca1565b610dd99190612cde565b9050600080610de88888611d1a565b15610df557600084610df9565b8360005b9150915060008b8985888e8e604051602001610e1a96959493929190612e55565b60408051601f19818403018152908290527f022c0d9f000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff89169063022c0d9f90610e8290869086903090879060040161301c565b600060405180830381600087803b158015610e9c57600080fd5b505af1158015610eb0573d6000803e3d6000fd5b505060005460ff16159150610fb89050576040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152879073ffffffffffffffffffffffffffffffffffffffff8e16906370a0823190602401602060405180830381865afa158015610f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f519190612c88565b11610fb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f6f6c6f777300000000000000000000000000000000000000000000000000000060448201526064016100f0565b505050505050505050505050565b3373324174a78b0f134ed3ae334e92285f99af01e9811480610ffb57503373c779ca147c66ffc1da06d9a21307d76912badb6d145b80611019575033733ea4f1022b5ecc85127782a43f895f5d20c4b6f4145b8061103757503373e9b5e80f34355d3f1a13b8a558a96a26e596b75a145b8061105557503373df8626ec34e1a4b795ab46b2c67287bd764312a0145b806110735750337344eeeafe4d4f98cd552ad843aa67c2a0eb438e4c145b80611091575033736761bc0066369d2c602afc691c0e088a9ddcf89c145b806110af575033732e2b4182ce672291492e9429c0262b233bb13eef145b806110cd575033737352ee6e03497507217bfdeb64bcaef8d167f1af145b806110eb57503373deb0206c012dfa8ca32eb9146a8d35dc9516cbef145b80611109575033733718c555a36b36f398aea2751315bceeba2c1ba9145b8061112757503373540ce2e03a3cd0fcfdb354fbbc6d9e52097fb76a145b80611145575033739949eb8a0139d94de19f54470201d6c499127169145b806111635750337373f1ca589a3d848abe5e08c72fae75fe2217912d145b80611181575033730467c9c24d9a9a512e32e560fa688fa4cfbb62a2145b8061119f57503373443b5539b1207683ef3f87922ebddd15ba178d98145b611207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100f09060208082526004908201527f62615f6800000000000000000000000000000000000000000000000000000000604082015260600190565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015611274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112989190612c88565b905060006112a684846113c5565b90506112bc856112b6858761307a565b83611dd3565b60005460ff16156113be576040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152829073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa158015611333573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113579190612c88565b116113be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f6f6c6f777300000000000000000000000000000000000000000000000000000060448201526064016100f0565b5050505050565b60608160008167ffffffffffffffff8111156113e3576113e3612171565b60405190808252806020026020018201604052801561141657816020015b60608152602001906001900390816114015790505b50905060005b8281101561156557600061153c87878481811061143b5761143b612b00565b905060200281019061144d9190612b5e565b3588888581811061146057611460612b00565b90506020028101906114729190612b5e565b611480906020810190612c20565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508c92508b91508790508181106114c6576114c6612b00565b90506020028101906114d89190612b5e565b6114e6906040810190612b9c565b808060200260200160405190810160405280939291908181526020016000905b828210156115325761152360a08302860136819003810190613151565b81526020019060010190611506565b5050505050610711565b90508083838151811061155157611551612b00565b60209081029190910101525060010161141c565b50949350505050565b337377d7249a9daa7da214a97fd5523f8c423a9ed63c14806115a357503373bbb800d1b9426ad58c1c42cec528f1dfe2d2fc79145b806115c15750337309677bd7ad2891b7b1d30290070c30d8b30073b0145b6115f7576040517fe4f6198100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063a9059cbb90604401600060405180830381600087803b15801561166757600080fd5b505af115801561167b573d6000803e3d6000fd5b50505050505050565b6000806116928360016126e7565b90506000808885815181106116a9576116a9612b00565b60200260200101516020015160ff166000146116e0578683815181106116d1576116d1612b00565b602002602001015160006116fd565b60008784815181106116f4576116f4612b00565b60200260200101515b915091508583101561176757600389848151811061171d5761171d612b00565b602002602001015160000151600a81111561173a5761173a612b2f565b106117455730611760565b87838151811061175757611757612b00565b60200260200101515b935061176b565b3093505b87858151811061177d5761177d612b00565b60209081029190910101516040517f022c0d9f000000000000000000000000000000000000000000000000000000008152600481018490526024810183905273ffffffffffffffffffffffffffffffffffffffff868116604483015260806064830152600060848301529091169063022c0d9f9060a4015b600060405180830381600087803b15801561180f57600080fd5b505af1158015611823573d6000803e3d6000fd5b50505050505050505050505050565b6000806118408360016126e7565b905060008088858151811061185757611857612b00565b60200260200101516020015160ff1660001461188e5786838151811061187f5761187f612b00565b602002602001015160006118ab565b60008784815181106118a2576118a2612b00565b60200260200101515b91509150858310156119155760038984815181106118cb576118cb612b00565b602002602001015160000151600a8111156118e8576118e8612b2f565b106118f3573061190e565b87838151811061190557611905612b00565b60200260200101515b9350611919565b3093505b87858151811061192b5761192b612b00565b60209081029190910101516040517f6d9a640a000000000000000000000000000000000000000000000000000000008152600481018490526024810183905273ffffffffffffffffffffffffffffffffffffffff868116604483015290911690636d9a640a906064016117f5565b60006119a68260016126e7565b905060008583815181106119bc576119bc612b00565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663916955868885815181106119f1576119f1612b00565b602002602001015160200151898681518110611a0f57611a0f612b00565b602002602001015160400151888781518110611a2d57611a2d612b00565b6020026020010151898781518110611a4757611a47612b00565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815260ff9485166004820152939092166024840152604483015260648201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608482015260a4016020604051808303816000875af1158015611ae3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b079190612c88565b90508382101561167b576003878381518110611b2557611b25612b00565b602002602001015160000151600a811115611b4257611b42612b2f565b101561167b5761167b878481518110611b5d57611b5d612b00565b602002602001015160600151878481518110611b7b57611b7b612b00565b602002602001015183611fe6565b60008060008060008873ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b81526004016040805180830381865afa158015611bdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bff919061316d565b9150915086600014611c12578082611c15565b81815b909450925060009150611c2a90508588612ca1565b90506000611c388383612ca1565b9050600082611c4a86620f4240612ca1565b611c5491906126e7565b9050611c608183612cde565b9a9950505050505050505050565b6040517fa95b089f00000000000000000000000000000000000000000000000000000000815260ff8084166004830152821660248201526044810184905260009073ffffffffffffffffffffffffffffffffffffffff86169063a95b089f90606401602060405180830381865afa158015611ced573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d119190612c88565b95945050505050565b6000808373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da39190613191565b73ffffffffffffffffffffffffffffffffffffffff1614611dc5576001611dc8565b60005b60ff16949350505050565b815160005b818110156113be576003848281518110611df457611df4612b00565b602002602001015160400151600081518110611e1257611e12612b00565b602002602001015160000151600a811115611e2f57611e2f612b2f565b1015611e9457611e9485858381518110611e4b57611e4b612b00565b602002602001015160200151600081518110611e6957611e69612b00565b6020026020010151868481518110611e8357611e83612b00565b602002602001015160000151611fe6565b6000848281518110611ea857611ea8612b00565b6020026020010151602001515190506000848381518110611ecb57611ecb612b00565b602002602001015190506000868481518110611ee957611ee9612b00565b60200260200101516040015190506000878581518110611f0b57611f0b612b00565b602002602001015160200151905060005b84811015611fd6576000838281518110611f3857611f38612b00565b602002602001015190506001600a811115611f5557611f55612b2f565b8151600a811115611f6857611f68612b2f565b03611f7f57611f7a8484878986611684565b611fcd565b60028151600a811115611f9457611f94612b2f565b03611fa657611f7a8484878986611832565b60038151600a811115611fbb57611fbb612b2f565b03611fcd57611fcd8484878986611999565b50600101611f1c565b5084600101945050505050611dd8565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052915160009283929087169161207d91906131ae565b6000604051808303816000865af19150503d80600081146120ba576040519150601f19603f3d011682016040523d82523d6000602084013e6120bf565b606091505b50915091508115806120eb5750805115806120e95750808060200190518101906120e991906131c0565b155b156113be576040517fe9e9cd1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561213257600080fd5b8386111561213f57600080fd5b5050820193919092039150565b73ffffffffffffffffffffffffffffffffffffffff8116811461216e57600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff811182821017156121c3576121c3612171565b60405290565b6040516060810167ffffffffffffffff811182821017156121c3576121c3612171565b604051601f8201601f1916810167ffffffffffffffff8111828210171561221557612215612171565b604052919050565b6000806000806080858703121561223357600080fd5b843561223e8161214c565b9350602085810135935060408601359250606086013567ffffffffffffffff8082111561226a57600080fd5b818801915088601f83011261227e57600080fd5b81358181111561229057612290612171565b6122a284601f19601f840116016121ec565b915080825289848285010111156122b857600080fd5b808484018584013760008482840101525080935050505092959194509250565b600067ffffffffffffffff8211156122f2576122f2612171565b5060051b60200190565b600b811061216e57600080fd5b60ff8116811461216e57600080fd5b600082601f83011261232957600080fd5b8151602061233e612339836122d8565b6121ec565b82815260a0928302850182019282820191908785111561235d57600080fd5b8387015b858110156123dc5781818a0312156123795760008081fd5b6123816121a0565b815161238c816122fc565b81528186015161239b81612309565b818701526040828101516123ae81612309565b908201526060828101516123c18161214c565b90820152608082810151908201528452928401928101612361565b5090979650505050505050565b600082601f8301126123fa57600080fd5b8151602061240a612339836122d8565b82815260059290921b8401810191818101908684111561242957600080fd5b8286015b8481101561253057805167ffffffffffffffff8082111561244d57600080fd5b908801906060828b03601f190112156124665760008081fd5b61246e6121c9565b868301518152604080840151838111156124885760008081fd5b8401603f81018d1361249a5760008081fd5b888101516124aa612339826122d8565b81815260059190911b82018301908a8101908f8311156124ca5760008081fd5b928401925b828410156124f15783516124e28161214c565b8252928b0192908b01906124cf565b858c015250505060608401518381111561250b5760008081fd5b6125198d8a83880101612318565b91830191909152508552505091830191830161242d565b509695505050505050565b600080600080600060a0868803121561255357600080fd5b855161255e8161214c565b602087015190955061256f8161214c565b60408701516060880151919550935067ffffffffffffffff81111561259357600080fd5b8601601f810188136125a457600080fd5b80516125b2612339826122d8565b808282526020820191508a60208460051b86010111156125d157600080fd5b602084015b60208460051b86010181101561267d57805167ffffffffffffffff8111156125fd57600080fd5b8c603f828801011261260e57600080fd5b60208187010151612621612339826122d8565b8082825260208201915060408360051b858b01010192508f83111561264557600080fd5b928801604001925b8284101561266857835182526020938401939091019061264d565b865250506020938401939190910190506125d6565b5080955050505050608086015167ffffffffffffffff81111561269f57600080fd5b6126ab888289016123e9565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156126fa576126fa6126b8565b500190565b803561270a8161214c565b919050565b6000806040838503121561272257600080fd5b823561272d8161214c565b946020939093013593505050565b801515811461216e57600080fd5b60006020828403121561275b57600080fd5b81356127668161273b565b9392505050565b600082601f83011261277e57600080fd5b8135602061278e612339836122d8565b82815260059290921b840181019181810190868411156127ad57600080fd5b8286015b848110156125305780356127c48161214c565b83529183019183016127b1565b600060a082840312156127e357600080fd5b6127eb6121a0565b905081356127f8816122fc565b8152602082013561280881612309565b6020820152604082013561281b81612309565b6040820152606082013561282e8161214c565b806060830152506080820135608082015292915050565b600082601f83011261285657600080fd5b81356020612866612339836122d8565b82815260a0928302850182019282820191908785111561288557600080fd5b8387015b858110156123dc5761289b89826127d1565b8452928401928101612889565b6000806000606084860312156128bd57600080fd5b83359250602084013567ffffffffffffffff808211156128dc57600080fd5b6128e88783880161276d565b935060408601359150808211156128fe57600080fd5b5061290b86828701612845565b9150509250925092565b6020808252825182820181905260009190848201906040850190845b818110156108be57835183529284019291840191600101612931565b60008083601f84011261295f57600080fd5b50813567ffffffffffffffff81111561297757600080fd5b6020830191508360208260051b850101111561299257600080fd5b9250929050565b6000806000604084860312156129ae57600080fd5b83356129b98161214c565b9250602084013567ffffffffffffffff8111156129d557600080fd5b6129e18682870161294d565b9497909650939450505050565b60008060208385031215612a0157600080fd5b823567ffffffffffffffff811115612a1857600080fd5b612a248582860161294d565b90969095509350505050565b600081518084526020808501808196508360051b810191508286016000805b86811015612a9e578385038a52825180518087529087019087870190845b81811015612a8957835183529289019291890191600101612a6d565b50509a87019a95505091850191600101612a4f565b509298975050505050505050565b6020815260006127666020830184612a30565b600080600060608486031215612ad457600080fd5b8335612adf8161214c565b92506020840135612aef8161214c565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112612b9257600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612bd157600080fd5b83018035915067ffffffffffffffff821115612bec57600080fd5b602001915060a08102360382131561299257600080fd5b600060208284031215612c1557600080fd5b81356127668161214c565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612c5557600080fd5b83018035915067ffffffffffffffff821115612c7057600080fd5b6020019150600581901b360382131561299257600080fd5b600060208284031215612c9a57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612cd957612cd96126b8565b500290565b600082612d14577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612d4e57600080fd5b830160208101925035905067ffffffffffffffff811115612d6e57600080fd5b60a08102360382131561299257600080fd5b818352600060208085019450826000805b86811015612e49578235612da4816122fc565b600b8110612dd9577f4e487b710000000000000000000000000000000000000000000000000000000083526021600452602483fd5b885282840135612de881612309565b60ff9081168986015260409084820135612e0181612309565b16908901526060612e138482016126ff565b73ffffffffffffffffffffffffffffffffffffffff16908901526080838101359089015260a09788019790920191600101612d91565b50959695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835260208189168185015260408881860152606060a081870152612e9660a087018a612a30565b8681036080880152878152838101600589811b830186018b60005b8c811015612fd457601f1986840301855281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18f3603018112612ef457600080fd5b8e01803584528388018a820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1018112612f3257600080fd5b82018b8101903567ffffffffffffffff811115612f4e57600080fd5b80881b3603821315612f5f57600080fd5b868d018b90529182905290600090608087015b81831015612f9b578335612f858161214c565b8f168152928d0192600192909201918d01612f72565b612fa78d860186612d19565b955093508781038d890152612fbd818686612d80565b998e019997505050938b0193505050600101612eb1565b50508098505050505050505050979650505050505050565b60005b83811015613007578181015183820152602001612fef565b83811115613016576000848401525b50505050565b84815283602082015273ffffffffffffffffffffffffffffffffffffffff8316604082015260806060820152600082518060808401526130638160a0850160208701612fec565b601f01601f19169190910160a00195945050505050565b6000613088612339846122d8565b80848252602080830192508560051b8501368111156130a657600080fd5b855b8181101561314557803567ffffffffffffffff808211156130c95760008081fd5b8189019150606082360312156130df5760008081fd5b6130e76121c9565b8235815285830135828111156130fd5760008081fd5b6131093682860161276d565b8783015250604080840135838111156131225760008081fd5b61312e36828701612845565b9183019190915250875250509382019382016130a8565b50919695505050505050565b600060a0828403121561316357600080fd5b61276683836127d1565b6000806040838503121561318057600080fd5b505080516020909101519092909150565b6000602082840312156131a357600080fd5b81516127668161214c565b60008251612b92818460208701612fec565b6000602082840312156131d257600080fd5b81516127668161273b56fea26469706673582212207dc458cc08c0ef8e89227b17c183c0a332c212ec64187966483c7833be856ac164736f6c634300080f0033