0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80639ebc7c951161010f578063d21220a7116100a2578063dcc3e06e11610071578063dcc3e06e146104ce578063ddca3f43146104e1578063f2fde38b14610504578063fad7722a1461051757600080fd5b8063d21220a714610491578063d84dc659146104a4578063dacf7699146104ac578063db13efd9146104bf57600080fd5b8063bed2c89c116100de578063bed2c89c14610446578063c31c9c0714610459578063c41100fa1461046c578063d0c93a7c1461047f57600080fd5b80639ebc7c95146103fb578063a8aa1b311461040d578063ac8a584a14610420578063be22f3481461043357600080fd5b8063715018a6116101875780638de3138a116101565780638de3138a146103b15780638e8b0e15146103c45780639870d7fe146103d75780639cb0725a146103ea57600080fd5b8063715018a6146102db57806373d4a13a146102e35780638b56f6bc146103955780638da5cb5b146103a057600080fd5b8063327c4cf8116101c3578063327c4cf81461026357806342cde4e8146102795780635aec26c91461029a5780636d70f7ae146102af57600080fd5b80630dfe1681146101f557806310d7c5ce146102255780631d23dbb614610238578063268e7bbe14610250575b600080fd5b609b54610208906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b609754610208906001600160a01b031681565b610240610528565b604051901515815260200161021c565b609d54610208906001600160a01b031681565b61026b610606565b60405190815260200161021c565b60a054600160301b900460020b5b60405160029190910b815260200161021c565b6102ad6102a836600461265e565b610616565b005b6102406102bd3660046126f3565b6001600160a01b031660009081526065602052604090205460ff1690565b6102ad610885565b60a05460a15461033b91600281810b9263010000008304820b92600160301b8104830b92600160481b8204900b91600160601b820462ffffff1691600160781b90046001600160881b0316906001600160a01b031687565b60408051600298890b815296880b602088015294870b948601949094529190940b606084015262ffffff90931660808301526001600160881b0390921660a08201526001600160a01b0390911660c082015260e00161021c565b60a05460020b610287565b6033546001600160a01b0316610208565b6102ad6103bf366004612726565b610899565b609e54610208906001600160a01b031681565b6102ad6103e53660046126f3565b610909565b60a1546001600160a01b0316610208565b60a0546301000000900460020b610287565b609a54610208906001600160a01b031681565b6102ad61042e3660046126f3565b61097f565b609954610208906001600160a01b031681565b6102ad6104543660046126f3565b6109f2565b609854610208906001600160a01b031681565b6102ad61047a3660046126f3565b610a06565b60a054600160481b900460020b610287565b609c54610208906001600160a01b031681565b6102ad610a60565b6102ad6104ba366004612743565b610aed565b61026b67011c37937e08000081565b609f54610208906001600160a01b031681565b60a054600160601b900462ffffff1660405162ffffff909116815260200161021c565b6102ad6105123660046126f3565b610cdf565b6066546001600160a01b0316610208565b600080609a60009054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa15801561057e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a291906127fd565b505060a0549395506105ce94505050600160301b8204600290810b9263010000009004900b905061289e565b60020b8160020b1380610600575060a0546105f790600160301b8104600290810b91900b6128e5565b60020b8160020b125b91505090565b6106136002600019612943565b81565b609a546001600160a01b0316331461068f5760405162461bcd60e51b815260206004820152603160248201527f44494f53333a3a77657377617056335377617043616c6c6261636b3a20496e76604482015270616c69642070616972206164647265737360781b60648201526084015b60405180910390fd5b600084138061069e5750600083135b6106fe5760405162461bcd60e51b815260206004820152602b60248201527f44494f53333a3a77657377617056335377617043616c6c6261636b3a20496e7660448201526a185b1a5908185b5bdd5b9d60aa1b6064820152608401610686565b600061073f83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d5592505050565b905060008086136107505784610752565b855b609d549091506000906001600160a01b038481169116141561077e57508061077981610dc6565b610871565b826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e09190612957565b6107eb90600a612a58565b6107fd83670de0b6b3a7640000612a67565b6108079190612943565b905061081281610dc6565b60975460405163427cf64b60e01b8152600481018390526001600160a01b039091169063427cf64b90602401600060405180830381600087803b15801561085857600080fd5b505af115801561086c573d6000803e3d6000fd5b505050505b61087c833384610e2e565b50505050505050565b61088d610f27565b6108976000610f81565b565b6108a1610f27565b60a0805462ffffff8316600160301b90810268ffffff00000000000019831617909255604051919004600290810b808352919083900b907f8263f5be7f80bf726f0b5a971158236cb6abaad451208e677f0edea2eea317ac9060200160405180910390a25050565b6066546001600160a01b031633146109335760405162461bcd60e51b815260040161068690612a86565b6001600160a01b038116600081815260656020526040808220805460ff19166001179055517fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d9190a250565b6066546001600160a01b031633146109a95760405162461bcd60e51b815260040161068690612a86565b6001600160a01b038116600081815260656020526040808220805460ff19169055517f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9190a250565b6109fa610f27565b610a0381610fd3565b50565b610a0e610f27565b606680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907ff82d9bb7ddaa1b127a15ad1b765573e2c79dc36af98839b102fde4c0229780d090600090a35050565b3360009081526065602052604090205460ff16610ae55760405162461bcd60e51b815260206004820152603d60248201527f4f70657261746f724d616e6167656d656e743a3a6f6e6c794f70657261746f7260448201527f3a204e6f7420616e20617574686f72697a6564206f70657261746f722e0000006064820152608401610686565b6108976110b6565b600054610100900460ff1615808015610b0d5750600054600160ff909116105b80610b275750303b158015610b27575060005460ff166001145b610b8a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610686565b6000805460ff191660011790558015610bad576000805461ff0019166101001790555b609780546001600160a01b03199081166001600160a01b0387811691909117909255609a805482168a8416179055609880548216898416179055609980548216888416179055609f805490911691851691909117905560a080546effffffffffff000000ffffffffffff16700400000000000000000028000000000000179055610c3561154a565b609a54610c4a906001600160a01b0316611564565b609b54609c54610c66916001600160a01b039081169116611785565b609854609954609754610c88926001600160a01b039081169281169116611a6d565b610c91826109fa565b801561087c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050505050565b610ce7610f27565b6001600160a01b038116610d4c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610686565b610a0381610f81565b60008151601414610dbe5760405162461bcd60e51b815260206004820152602d60248201527f44494f53333a3a6279746573546f416464726573733a20496e76616c6964206160448201526c0c8c8e4cae6e640d8cadccee8d609b1b6064820152608401610686565b506014015190565b609d546040516340c10f1960e01b8152306004820152602481018390526001600160a01b03909116906340c10f19906044015b600060405180830381600087803b158015610e1357600080fd5b505af1158015610e27573d6000803e3d6000fd5b5050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610e8a9190612b1e565b6000604051808303816000865af19150503d8060008114610ec7576040519150601f19603f3d011682016040523d82523d6000602084013e610ecc565b606091505b5091509150818015610ef6575080511580610ef6575080806020019051810190610ef69190612b3a565b610e275760405162461bcd60e51b815260206004820152600260248201526114d560f21b6044820152606401610686565b6033546001600160a01b031633146108975760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610686565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000610fde82611b08565b9050610fe981611e4b565b6001600160a01b0316826001600160a01b031611156110535760a0805462ffffff191662ffffff8316179081905561102b90600160481b900460020b8261289e565b60a0805462ffffff9290921663010000000265ffffff00000019909216919091179055611093565b60a05461106a90600160481b900460020b826128e5565b60a0805462ffffff84811663010000000265ffffffffffff199092169316929092179190911790555b5060a180546001600160a01b0319166001600160a01b0392909216919091179055565b609a5460408051633850c7bd60e01b815290516000926001600160a01b031691633850c7bd9160048083019260e09291908290030181865afa158015611100573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112491906127fd565b505060a15494955050506001600160a01b03928316928416929092119150600090508161115c57609c546001600160a01b0316611169565b609b546001600160a01b03165b90506000806111858361117f6002600019612943565b86612260565b609d54919350915060009081906001600160a01b038681169116141561127957609754604051636e8b099f60e01b8152600481018590528593506001600160a01b0390911690636e8b099f90602401600060405180830381600087803b1580156111ee57600080fd5b505af1158015611202573d6000803e3d6000fd5b5050609d546040516370a0823160e01b81523060048201526001600160a01b0390911692506370a082319150602401602060405180830381865afa15801561124e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112729190612b55565b9050611308565b846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112db9190612957565b6112e690600a612a58565b6112f885670de0b6b3a7640000612a67565b6113029190612943565b91508290505b61131182612359565b600061131d8383612b6e565b905067011c37937e08000033311015611484576040805160028082526060820183526000926020830190803683375050609d5482519293506001600160a01b03169183915060009061137157611371612b9b565b6001600160a01b039283166020918202929092010152609e548251911690829060019081106113a2576113a2612b9b565b6001600160a01b0392831660209182029290920101526099546040516307c0329d60e21b81526000929190911690631f00ca74906113ee9067011c37937e080000908690600401612bf5565b600060405180830381865afa15801561140b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114339190810190612c3f565b60008151811061144557611445612b9b565b602002602001015190508281111561146a576114618383612390565b60009250611481565b6114748183612390565b61147e8184612b6e565b92505b50505b80156114935761149381612483565b609a5460408051633850c7bd60e01b815290516000926001600160a01b031691633850c7bd9160048083019260e09291908290030181865afa1580156114dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150191906127fd565b5050505050509050806001600160a01b03167f839a5d030c41a11805d6e79e8fce5323d567d317f1bc6edc825edf2cfb2fafe260405160405180910390a2505050505050505050565b606680546001600160a01b031916331790556108976124db565b806001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c69190612ce5565b609b60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561162a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164e9190612ce5565b609c60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d69190612d02565b60a0600001600c6101000a81548162ffffff021916908362ffffff160217905550806001600160a01b031663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611735573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117599190612d27565b60a0805462ffffff92909216600160481b026bffffff0000000000000000001990921691909117905550565b6040516515d15352560960d21b602082015260260160405160208183030381529060405280519060200120826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118169190810190612d44565b6040516020016118269190612b1e565b60405160208183030381529060405280519060200120141561185e57609d80546001600160a01b0319166001600160a01b0384161790555b6040516515d15352560960d21b602082015260260160405160208183030381529060405280519060200120816001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156118c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118ef9190810190612d44565b6040516020016118ff9190612b1e565b60405160208183030381529060405280519060200120141561193757609d80546001600160a01b0319166001600160a01b0383161790555b609d546001600160a01b03838116911614806119605750609d546001600160a01b038281169116145b6119d25760405162461bcd60e51b815260206004820152603c60248201527f44494f53333a3a5f5f5365747570546f6b656e735f696e69743a204f6e65206f60448201527f662074686520746f6b656e73206d7573742062652057454d4958442e000000006064820152608401610686565b609960009054906101000a90046001600160a01b03166001600160a01b0316638e8b0e156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a499190612ce5565b609e80546001600160a01b0319166001600160a01b03929092169190911790555050565b609b54611a86906001600160a01b03168460001961254f565b609c54611a9f906001600160a01b03168460001961254f565b609b54611ab8906001600160a01b03168360001961254f565b609c54611ad1906001600160a01b03168360001961254f565b609b54611aea906001600160a01b03168260001961254f565b609c54611b03906001600160a01b03168260001961254f565b505050565b60006401000276a36001600160a01b03831610801590611b44575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b611b745760405162461bcd60e51b81526020600482015260016024820152602960f91b6044820152606401610686565b640100000000600160c01b03602083901b166fffffffffffffffffffffffffffffffff811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c97908811961790941790921717909117171760808110611c1857611c0e607f82612b6e565b83901c9150611c29565b611c2381607f612b6e565b83901b91505b60006040611c38608084612dd8565b901b9050828302607f1c92508260801c80603f1b8217915083811c935050828302607f1c92508260801c80603e1b8217915083811c935050828302607f1c92508260801c80603d1b8217915083811c935050828302607f1c92508260801c80603c1b8217915083811c935050828302607f1c92508260801c80603b1b8217915083811c935050828302607f1c92508260801c80603a1b8217915083811c935050828302607f1c92508260801c8060391b8217915083811c935050828302607f1c92508260801c8060381b8217915083811c935050828302607f1c92508260801c8060371b8217915083811c935050828302607f1c92508260801c8060361b8217915083811c935050828302607f1c92508260801c8060351b8217915083811c935050828302607f1c92508260801c8060341b8217915083811c935050828302607f1c92508260801c8060331b8217915083811c935050828302607f1c92508260801c8060321b8217915050600081693627a301d71055774c85611dbb9190612e17565b905060006080611ddb6f028f6481ab7f045a5af012a19d003aaa84612dd8565b901d905060006080611dfd846fdb2df09e81959a81455e260799a0632f612e9c565b901d90508060020b8260020b14611e3c57886001600160a01b0316611e2182611e4b565b6001600160a01b03161115611e365781611e3e565b80611e3e565b815b9998505050505050505050565b60008060008360020b12611e62578260020b611e6f565b8260020b611e6f90612edd565b9050611e7e620d89e719612efa565b62ffffff16811115611eb65760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610686565b600060018216611eca57600160801b611edc565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b031690506002821615611f11576080611f0c826ffff97272373d413259a46990580e213a612a67565b901c90505b6004821615611f3b576080611f36826ffff2e50f5f656932ef12357cf3c7fdcc612a67565b901c90505b6008821615611f65576080611f60826fffe5caca7e10e4e61c3624eaa0941cd0612a67565b901c90505b6010821615611f8f576080611f8a826fffcb9843d60f6159c9db58835c926644612a67565b901c90505b6020821615611fb9576080611fb4826fff973b41fa98c081472e6896dfb254c0612a67565b901c90505b6040821615611fe3576080611fde826fff2ea16466c96a3843ec78b326b52861612a67565b901c90505b608082161561200d576080612008826ffe5dee046a99a2a811c461f1969c3053612a67565b901c90505b610100821615612038576080612033826ffcbe86c7900a88aedcffc83b479aa3a4612a67565b901c90505b61020082161561206357608061205e826ff987a7253ac413176f2b074cf7815e54612a67565b901c90505b61040082161561208e576080612089826ff3392b0822b70005940c7a398e4b70f3612a67565b901c90505b6108008216156120b95760806120b4826fe7159475a2c29b7443b29c7fa6e889d9612a67565b901c90505b6110008216156120e45760806120df826fd097f3bdfd2022b8845ad8f792aa5825612a67565b901c90505b61200082161561210f57608061210a826fa9f746462d870fdf8a65dc1f90e061e5612a67565b901c90505b61400082161561213a576080612135826f70d869a156d2a1b890bb3df62baf32f7612a67565b901c90505b618000821615612165576080612160826f31be135f97d08fd981231505542fcfa6612a67565b901c90505b6201000082161561219157608061218c826f09aa508b5b7a84e1c677de54f3e99bc9612a67565b901c90505b620200008216156121bc5760806121b7826e5d6af8dedb81196699c329225ee604612a67565b901c90505b620400008216156121e65760806121e1826d2216e584f5fa1ea926041bedfe98612a67565b901c90505b6208000082161561220e576080612209826b048a170391f7dc42444e8fa2612a67565b901c90505b60008460020b13156122295761222681600019612943565b90505b61223864010000000082612f1d565b15612244576001612247565b60005b6122589060ff16602083901c612f31565b949350505050565b609a546000908190819081906001600160a01b031663128acb0830876122858a612648565b60a1546040516bffffffffffffffffffffffff1960608f901b1660208201526001600160a01b03909116906034016040516020818303038152906040526040518663ffffffff1660e01b81526004016122e2959493929190612f49565b60408051808303816000875af1158015612300573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123249190612fa6565b91509150846123335780612335565b815b856123405782612342565b815b61234b90612edd565b935093505050935093915050565b609d54604051632770a7eb60e21b8152306004820152602481018390526001600160a01b0390911690639dc29fac90604401610df9565b609954604051634187664760e01b81526000916001600160a01b0316906341876647906123c99086908590879033904290600401612fca565b6000604051808303816000875af11580156123e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124109190810190612c3f565b90508060018151811061242557612425612b9b565b60200260200101518160008151811061244057612440612b9b565b6020026020010151336001600160a01b03167f1656ab6fb55adcbed3f1f85c025a5c427075a045777606fbe152783e3e7ca39860405160405180910390a4505050565b609d54609f546124a0916001600160a01b03908116911683610e2e565b609f5460405182916001600160a01b0316907fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea690600090a350565b600054610100900460ff166125465760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610686565b61089733610f81565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291516000928392908716916125ab9190612b1e565b6000604051808303816000865af19150503d80600081146125e8576040519150601f19603f3d011682016040523d82523d6000602084013e6125ed565b606091505b50915091508180156126175750805115806126175750808060200190518101906126179190612b3a565b610e275760405162461bcd60e51b8152602060048201526002602482015261534160f01b6044820152606401610686565b6000600160ff1b821061265a57600080fd5b5090565b6000806000806060858703121561267457600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561269a57600080fd5b818701915087601f8301126126ae57600080fd5b8135818111156126bd57600080fd5b8860208285010111156126cf57600080fd5b95989497505060200194505050565b6001600160a01b0381168114610a0357600080fd5b60006020828403121561270557600080fd5b8135612710816126de565b9392505050565b8060020b8114610a0357600080fd5b60006020828403121561273857600080fd5b813561271081612717565b60008060008060008060c0878903121561275c57600080fd5b8635612767816126de565b95506020870135612777816126de565b94506040870135612787816126de565b93506060870135612797816126de565b925060808701356127a7816126de565b915060a08701356127b7816126de565b809150509295509295509295565b805161ffff811681146127d757600080fd5b919050565b805160ff811681146127d757600080fd5b805180151581146127d757600080fd5b600080600080600080600060e0888a03121561281857600080fd5b8751612823816126de565b602089015190975061283481612717565b9550612842604089016127c5565b9450612850606089016127c5565b935061285e608089016127c5565b925061286c60a089016127dc565b915061287a60c089016127ed565b905092959891949750929550565b634e487b7160e01b600052601160045260246000fd5b60008160020b8360020b6000821282627fffff038213811516156128c4576128c4612888565b82627fffff190382128116156128dc576128dc612888565b50019392505050565b60008160020b8360020b6000811281627fffff190183128115161561290c5761290c612888565b81627fffff01831381161561292357612923612888565b5090039392505050565b634e487b7160e01b600052601260045260246000fd5b6000826129525761295261292d565b500490565b60006020828403121561296957600080fd5b612710826127dc565b600181815b808511156129ad57816000190482111561299357612993612888565b808516156129a057918102915b93841c9390800290612977565b509250929050565b6000826129c457506001612a52565b816129d157506000612a52565b81600181146129e757600281146129f157612a0d565b6001915050612a52565b60ff841115612a0257612a02612888565b50506001821b612a52565b5060208310610133831016604e8410600b8410161715612a30575081810a612a52565b612a3a8383612972565b8060001904821115612a4e57612a4e612888565b0290505b92915050565b600061271060ff8416836129b5565b6000816000190483118215151615612a8157612a81612888565b500290565b60208082526042908201527f4f70657261746f724d616e6167656d656e743a3a6f6e6c794f70657261746f7260408201527f4d616e616765723a204e6f7420746865206f70657261746f72206d616e616765606082015261391760f11b608082015260a00190565b60005b83811015612b09578181015183820152602001612af1565b83811115612b18576000848401525b50505050565b60008251612b30818460208701612aee565b9190910192915050565b600060208284031215612b4c57600080fd5b612710826127ed565b600060208284031215612b6757600080fd5b5051919050565b600082821015612b8057612b80612888565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015612bea5781516001600160a01b031687529582019590820190600101612bc5565b509495945050505050565b8281526040602082015260006122586040830184612bb1565b604051601f8201601f1916810167ffffffffffffffff81118282101715612c3757612c37612b85565b604052919050565b60006020808385031215612c5257600080fd5b825167ffffffffffffffff80821115612c6a57600080fd5b818501915085601f830112612c7e57600080fd5b815181811115612c9057612c90612b85565b8060051b9150612ca1848301612c0e565b8181529183018401918481019088841115612cbb57600080fd5b938501935b83851015612cd957845182529385019390850190612cc0565b98975050505050505050565b600060208284031215612cf757600080fd5b8151612710816126de565b600060208284031215612d1457600080fd5b815162ffffff8116811461271057600080fd5b600060208284031215612d3957600080fd5b815161271081612717565b600060208284031215612d5657600080fd5b815167ffffffffffffffff80821115612d6e57600080fd5b818401915084601f830112612d8257600080fd5b815181811115612d9457612d94612b85565b612da7601f8201601f1916602001612c0e565b9150808252856020828501011115612dbe57600080fd5b612dcf816020840160208601612aee565b50949350505050565b60008083128015600160ff1b850184121615612df657612df6612888565b6001600160ff1b0384018313811615612e1157612e11612888565b50500390565b60006001600160ff1b0381841382841380821686840486111615612e3d57612e3d612888565b600160ff1b6000871282811687830589121615612e5c57612e5c612888565b60008712925087820587128484161615612e7857612e78612888565b87850587128184161615612e8e57612e8e612888565b505050929093029392505050565b600080821280156001600160ff1b0384900385131615612ebe57612ebe612888565b600160ff1b8390038412811615612ed757612ed7612888565b50500190565b6000600160ff1b821415612ef357612ef3612888565b5060000390565b60008160020b627fffff19811415612f1457612f14612888565b60000392915050565b600082612f2c57612f2c61292d565b500690565b60008219821115612f4457612f44612888565b500190565b600060018060a01b038088168352861515602084015285604084015280851660608401525060a0608083015282518060a0840152612f8e8160c0850160208701612aee565b601f01601f19169190910160c0019695505050505050565b60008060408385031215612fb957600080fd5b505080516020909101519092909150565b85815284602082015260a060408201526000612fe960a0830186612bb1565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122089ee1bcbc489510ad62fdc2b0b9f0b206017354973f04dde251ce6bd0752bbd764736f6c634300080a0033