0x60a06040523480156200001157600080fd5b5060405162003b2338038062003b238339810160408190526200003491620000b7565b8080620000413362000067565b6001600160a01b03166080525050600680546001600160a01b03191633179055620000e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000ca57600080fd5b81516001600160a01b0381168114620000e257600080fd5b9392505050565b6080516139e66200013d6000396000818161063e015281816107f601528181610ab601528181610b6501528181610e3e015281816115af01528181611b16015281816121c901526124e901526139e66000f3fe6080604052600436106102885760003560e01c80638cfd8f5c11610153578063cbed8b9c116100cb578063eb8d72b71161007f578063f3fef3a311610064578063f3fef3a314610786578063f5ecbdbc146107a6578063f851a440146107c657600080fd5b8063eb8d72b714610746578063f2fde38b1461076657600080fd5b8063d1deba1f116100b0578063d1deba1f146106f3578063d424388514610706578063df2a5b3b1461072657600080fd5b8063cbed8b9c146106c0578063d045a0dc146106e057600080fd5b8063a6c3d16511610122578063b731ea0a11610107578063b731ea0a14610660578063baf3292d1461068d578063bd815db0146106ad57600080fd5b8063a6c3d1651461060c578063b353aaa71461062c57600080fd5b80638cfd8f5c1461055c5780638da5cb5b14610594578063950c8a74146105bf5780639f38369a146105ec57600080fd5b80635a0dfe4d1161020157806366ad5c8a116101b557806370edcfbf1161019a57806370edcfbf146104e5578063715018a61461051a5780637533d7881461052f57600080fd5b806366ad5c8a146104a5578063704b6c02146104c557600080fd5b80635fb05dae116101e65780635fb05dae14610452578063622f17f614610465578063627b3e301461049257600080fd5b80635a0dfe4d146103e35780635b8c41e61461040357600080fd5b8063297c0bb21161025857806342d65a8d1161023d57806342d65a8d1461036257806352ae28791461038257806356a47289146103b657600080fd5b8063297c0bb21461031f5780633d8b38f61461033257600080fd5b80621d35671461029457806306661abd146102b657806307e0db17146102df57806310ddb137146102ff57600080fd5b3661028f57005b600080fd5b3480156102a057600080fd5b506102b46102af366004612ad9565b6107f3565b005b3480156102c257600080fd5b506102cc60075481565b6040519081526020015b60405180910390f35b3480156102eb57600080fd5b506102b46102fa366004612b6d565b610a7c565b34801561030b57600080fd5b506102b461031a366004612b6d565b610b2b565b6102b461032d366004612b99565b610ba9565b34801561033e57600080fd5b5061035261034d366004612bfa565b610d2d565b60405190151581526020016102d6565b34801561036e57600080fd5b506102b461037d366004612bfa565b610df9565b34801561038e57600080fd5b50305b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102d6565b3480156103c257600080fd5b506102cc6103d1366004612c61565b60086020526000908152604090205481565b3480156103ef57600080fd5b506103526103fe366004612c7c565b610ea5565b34801561040f57600080fd5b506102cc61041e366004612d2e565b6004602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b6102b4610460366004612b99565b611012565b34801561047157600080fd5b506102cc610480366004612c61565b60096020526000908152604090205481565b6102b46104a0366004612e14565b6110f7565b3480156104b157600080fd5b506102b46104c0366004612ad9565b611366565b3480156104d157600080fd5b506102b46104e0366004612ebe565b611473565b3480156104f157600080fd5b50610505610500366004612b99565b61153b565b604080519283526020830191909152016102d6565b34801561052657600080fd5b506102b461164f565b34801561053b57600080fd5b5061054f61054a366004612b6d565b611663565b6040516102d69190612f2b565b34801561056857600080fd5b506102cc610577366004612f3e565b600260209081526000928352604080842090915290825290205481565b3480156105a057600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610391565b3480156105cb57600080fd5b506003546103919073ffffffffffffffffffffffffffffffffffffffff1681565b3480156105f857600080fd5b5061054f610607366004612b6d565b6116fd565b34801561061857600080fd5b506102b4610627366004612bfa565b61182d565b34801561063857600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b34801561066c57600080fd5b506005546103919073ffffffffffffffffffffffffffffffffffffffff1681565b34801561069957600080fd5b506102b46106a8366004612ebe565b6118b6565b6102b46106bb366004612f71565b611938565b3480156106cc57600080fd5b506102b46106db366004612fb3565b611ad1565b6102b46106ee366004613022565b611b8c565b6102b4610701366004612ad9565b611bd4565b34801561071257600080fd5b506102b4610721366004612ebe565b611e56565b34801561073257600080fd5b506102b46107413660046130c9565b611ed1565b34801561075257600080fd5b506102b4610761366004612bfa565b611fa5565b34801561077257600080fd5b506102b4610781366004612ebe565b611fff565b34801561079257600080fd5b506102b46107a1366004613105565b6120b6565b3480156107b257600080fd5b5061054f6107c1366004613123565b61217f565b3480156107d257600080fd5b506006546103919073ffffffffffffffffffffffffffffffffffffffff1681565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff8616600090815260016020526040812080546108b590613170565b80601f01602080910402602001604051908101604052809291908181526020018280546108e190613170565b801561092e5780601f106109035761010080835404028352916020019161092e565b820191906000526020600020905b81548152906001019060200180831161091157829003601f168201915b50505050509050805186869050148015610949575060008151115b801561097157508051602082012060405161096790889088906131c3565b6040518091039020145b6109fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161088e565b610a738787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a93509150889088908190840183828082843760009201919091525061225692505050565b50505050505050565b610a846122fc565b6040517f07e0db1700000000000000000000000000000000000000000000000000000000815261ffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906307e0db17906024015b600060405180830381600087803b158015610b1057600080fd5b505af1158015610b24573d6000803e3d6000fd5b5050505050565b610b336122fc565b6040517f10ddb13700000000000000000000000000000000000000000000000000000000815261ffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906310ddb13790602401610af6565b60065473ffffffffffffffffffffffffffffffffffffffff163314610c2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e00000000000000000000000000000000000000000000604482015260640161088e565b60ff8316600114610c97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6f6e6c792076616e696c6c612074797065000000000000000000000000000000604482015260640161088e565b604080517fff0000000000000000000000000000000000000000000000000000000000000060f886901b16602082015260006021820152815180820360050181526025909101909152610d279085905b333386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525034925061237d915050565b50505050565b61ffff831660009081526001602052604081208054829190610d4e90613170565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7a90613170565b8015610dc75780601f10610d9c57610100808354040283529160200191610dc7565b820191906000526020600020905b815481529060010190602001808311610daa57829003601f168201915b505050505090508383604051610dde9291906131c3565b60405180910390208180519060200120149150509392505050565b610e016122fc565b6040517f42d65a8d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906342d65a8d90610e77908690869086906004016131fe565b600060405180830381600087803b158015610e9157600080fd5b505af1158015610a73573d6000803e3d6000fd5b60008060016000610ebb8663ffffffff16612565565b61ffff1661ffff1681526020019081526020016000208054610edc90613170565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0890613170565b8015610f555780601f10610f2a57610100808354040283529160200191610f55565b820191906000526020600020905b815481529060010190602001808311610f3857829003601f168201915b5050835193945050601483119150508015610f71575060348111155b610fd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c69642070617468206c656e67746800000000000000000000000000604482015260640161088e565b6000610ff081610fe860148561324b565b8591906125fd565b610ff99061325e565b92516034036008029290921c8414925050505b92915050565b60ff831660011461107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6f6e6c792076616e696c6c612074797065000000000000000000000000000000604482015260640161088e565b61ffff8416600090815260096020526040812080549161109e836132a0565b9091555050604080517fff0000000000000000000000000000000000000000000000000000000000000060f886901b16602082015260006021820152815180820360050181526025909101909152610d27908590610ce7565b848114801561110557508483145b61116b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4f6d6e69436f756e7465723a206c656e677468206d69736d6174636800000000604482015260640161088e565b3460005b8681101561135c57600061118460018961324b565b82146111905730611192565b335b905060008989848181106111a8576111a86132d8565b90506020020160208101906111bd9190612b6d565b905060008888858181106111d3576111d36132d8565b90506020020160208101906111e89190613307565b905060ff8116600114611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6f6e6c792076616e696c6c612074797065000000000000000000000000000000604482015260640161088e565b600087878681811061126b5761126b6132d8565b905060200281019061127d9190613322565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525061ffff881681526009602052604081208054959650935091506112d19050836132a0565b9091555050604080517fff0000000000000000000000000000000000000000000000000000000000000060f885901b1660208201526000602182015281518082036005018152602590910190915247906113309085908733868c61237d565b600061133c478361324b565b9050611348818961324b565b9750506001909501945061116f9350505050565b5050505050505050565b3330146113f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d75737420626560448201527f204c7a4170700000000000000000000000000000000000000000000000000000606482015260840161088e565b61146b8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061275992505050565b505050505050565b60065473ffffffffffffffffffffffffffffffffffffffff1633146114f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e00000000000000000000000000000000000000000000604482015260640161088e565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6040805160f885901b7fff000000000000000000000000000000000000000000000000000000000000001660208201526000602182018190528251600581840301815260258301938490527f40a7bb10000000000000000000000000000000000000000000000000000000009093529182917f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16916340a7bb1091611602918a9130919087908b908b90602901613387565b6040805180830381865afa15801561161e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164291906133e8565b9150915094509492505050565b6116576122fc565b6116616000612763565b565b6001602052600090815260409020805461167c90613170565b80601f01602080910402602001604051908101604052809291908181526020018280546116a890613170565b80156116f55780601f106116ca576101008083540402835291602001916116f5565b820191906000526020600020905b8154815290600101906020018083116116d857829003601f168201915b505050505081565b61ffff811660009081526001602052604081208054606092919061172090613170565b80601f016020809104026020016040519081016040528092919081815260200182805461174c90613170565b80156117995780601f1061176e57610100808354040283529160200191611799565b820191906000526020600020905b81548152906001019060200180831161177c57829003601f168201915b50505050509050805160000361180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f7264000000604482015260640161088e565b61182660006014835161181e919061324b565b8391906125fd565b9392505050565b6118356122fc565b81813060405160200161184a9392919061340c565b60408051601f1981840301815291815261ffff8516600090815260016020522090611875908261348d565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce8383836040516118a9939291906131fe565b60405180910390a1505050565b6118be6122fc565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b906020015b60405180910390a150565b60005b81811015611a2a5736838383818110611956576119566132d8565b90506020028101906119689190613589565b905061198461197a6020830183612c61565b6020830135610ea5565b61198e5750611a22565b3063d045a0dc60c08301358360a08101356119ad610100830183613322565b6119be610100890160e08a01612ebe565b6119cc6101208a018a613322565b6040518963ffffffff1660e01b81526004016119ee97969594939291906135c7565b6000604051808303818588803b158015611a0757600080fd5b505af1158015611a1b573d6000803e3d6000fd5b5050505050505b60010161193b565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015611a76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a9e9190810190613657565b6040517f8351eea700000000000000000000000000000000000000000000000000000000815260040161088e9190612f2b565b611ad96122fc565b6040517fcbed8b9c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c90611b5390889088908890889088906004016136c5565b600060405180830381600087803b158015611b6d57600080fd5b505af1158015611b81573d6000803e3d6000fd5b505050505050505050565b333014611bc5576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a73878787878787876127d8565b61ffff86166000908152600460205260408082209051611bf790889088906131c3565b908152604080516020928190038301902067ffffffffffffffff871660009081529252902054905080611cac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201527f6167650000000000000000000000000000000000000000000000000000000000606482015260840161088e565b808383604051611cbd9291906131c3565b604051809103902014611d52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f6160448201527f6400000000000000000000000000000000000000000000000000000000000000606482015260840161088e565b61ffff87166000908152600460205260408082209051611d7590899089906131c3565b908152604080516020928190038301812067ffffffffffffffff8916600090815290845282902093909355601f88018290048202830182019052868252611e0e918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a93509150889088908190840183828082843760009201919091525061275992505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051611e459594939291906136fe565b60405180910390a150505050505050565b611e5e6122fc565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c24277609060200161192d565b611ed96122fc565b60008111611f43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4c7a4170703a20696e76616c6964206d696e4761730000000000000000000000604482015260640161088e565b61ffff83811660008181526002602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac0906060016118a9565b611fad6122fc565b61ffff83166000908152600160205260409020611fcb82848361373a565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab8383836040516118a9939291906131fe565b6120076122fc565b73ffffffffffffffffffffffffffffffffffffffff81166120aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161088e565b6120b381612763565b50565b60065473ffffffffffffffffffffffffffffffffffffffff163314612137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e00000000000000000000000000000000000000000000604482015260640161088e565b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561217a573d6000803e3d6000fd5b505050565b6040517ff5ecbdbc00000000000000000000000000000000000000000000000000000000815261ffff808616600483015284166024820152306044820152606481018290526060907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063f5ecbdbc90608401600060405180830381865afa158015612225573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261224d9190810190613657565b95945050505050565b6000806122e65a60966366ad5c8a60e01b8989898960405160240161227e9493929190613836565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152309291906127e4565b915091508161146b5761146b868686868561286f565b60005473ffffffffffffffffffffffffffffffffffffffff163314611661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161088e565b61ffff86166000908152600160205260408120805461239b90613170565b80601f01602080910402602001604051908101604052809291908181526020018280546123c790613170565b80156124145780601f106123e957610100808354040283529160200191612414565b820191906000526020600020905b8154815290600101906020018083116123f757829003601f168201915b5050505050905080516000036124ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201527f61207472757374656420736f7572636500000000000000000000000000000000606482015260840161088e565b6040517fc580310000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063c580310090849061252a908b9086908c908c908c908c90600401613875565b6000604051808303818588803b15801561254357600080fd5b505af1158015612557573d6000803e3d6000fd5b505050505050505050505050565b600061ffff8211156125f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f3620626974730000000000000000000000000000000000000000000000000000606482015260840161088e565b5090565b60608161260b81601f6138dc565b1015612673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161088e565b61267d82846138dc565b845110156126e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161088e565b6060821580156127065760405191506000825260208201604052612750565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561273f578051835260209283019201612727565b5050858452601f01601f1916604052505b50949350505050565b610d27848261290d565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610a73878787876129e7565b6000606060008060008661ffff1667ffffffffffffffff81111561280a5761280a612ca6565b6040519080825280601f01601f191660200182016040528015612834576020820181803683370190505b50905060008087516020890160008d8df191503d925086831115612856578692505b828152826000602083013e909890975095505050505050565b8180519060200120600460008761ffff1661ffff168152602001908152602001600020856040516128a091906138ef565b90815260408051918290036020908101832067ffffffffffffffff88166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c906128fe9087908790879087908790613901565b60405180910390a15050505050565b600061291882612a41565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff8216016129855760016007600082825461295791906138dc565b909155505061ffff8316600090815260086020526040812080549161297b836132a0565b9190505550505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c6964206d6573736167652074797065000000000000000000000000604482015260640161088e565b610d27612a056129fa6020870187612c61565b63ffffffff16612565565b83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061290d92505050565b6000612a4f828260016125fd565b612a5890613960565b60f81c92915050565b803561ffff81168114612a7357600080fd5b919050565b60008083601f840112612a8a57600080fd5b50813567ffffffffffffffff811115612aa257600080fd5b602083019150836020828501011115612aba57600080fd5b9250929050565b803567ffffffffffffffff81168114612a7357600080fd5b60008060008060008060808789031215612af257600080fd5b612afb87612a61565b9550602087013567ffffffffffffffff80821115612b1857600080fd5b612b248a838b01612a78565b9097509550859150612b3860408a01612ac1565b94506060890135915080821115612b4e57600080fd5b50612b5b89828a01612a78565b979a9699509497509295939492505050565b600060208284031215612b7f57600080fd5b61182682612a61565b803560ff81168114612a7357600080fd5b60008060008060608587031215612baf57600080fd5b612bb885612a61565b9350612bc660208601612b88565b9250604085013567ffffffffffffffff811115612be257600080fd5b612bee87828801612a78565b95989497509550505050565b600080600060408486031215612c0f57600080fd5b612c1884612a61565b9250602084013567ffffffffffffffff811115612c3457600080fd5b612c4086828701612a78565b9497909650939450505050565b803563ffffffff81168114612a7357600080fd5b600060208284031215612c7357600080fd5b61182682612c4d565b60008060408385031215612c8f57600080fd5b612c9883612c4d565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612cfe57612cfe612ca6565b604052919050565b600067ffffffffffffffff821115612d2057612d20612ca6565b50601f01601f191660200190565b600080600060608486031215612d4357600080fd5b612d4c84612a61565b9250602084013567ffffffffffffffff811115612d6857600080fd5b8401601f81018613612d7957600080fd5b8035612d8c612d8782612d06565b612cd5565b818152876020838501011115612da157600080fd5b81602084016020830137600060208383010152809450505050612dc660408501612ac1565b90509250925092565b60008083601f840112612de157600080fd5b50813567ffffffffffffffff811115612df957600080fd5b6020830191508360208260051b8501011115612aba57600080fd5b60008060008060008060608789031215612e2d57600080fd5b863567ffffffffffffffff80821115612e4557600080fd5b612e518a838b01612dcf565b90985096506020890135915080821115612e6a57600080fd5b612e768a838b01612dcf565b90965094506040890135915080821115612e8f57600080fd5b50612b5b89828a01612dcf565b73ffffffffffffffffffffffffffffffffffffffff811681146120b357600080fd5b600060208284031215612ed057600080fd5b813561182681612e9c565b60005b83811015612ef6578181015183820152602001612ede565b50506000910152565b60008151808452612f17816020860160208601612edb565b601f01601f19169290920160200192915050565b6020815260006118266020830184612eff565b60008060408385031215612f5157600080fd5b612f5a83612a61565b9150612f6860208401612a61565b90509250929050565b60008060208385031215612f8457600080fd5b823567ffffffffffffffff811115612f9b57600080fd5b612fa785828601612dcf565b90969095509350505050565b600080600080600060808688031215612fcb57600080fd5b612fd486612a61565b9450612fe260208701612a61565b935060408601359250606086013567ffffffffffffffff81111561300557600080fd5b61301188828901612a78565b969995985093965092949392505050565b600080600080600080600087890360e081121561303e57600080fd5b606081121561304c57600080fd5b5087965060608801359550608088013567ffffffffffffffff8082111561307257600080fd5b61307e8b838c01612a78565b909750955060a08a0135915061309382612e9c565b90935060c089013590808211156130a957600080fd5b506130b68a828b01612a78565b989b979a50959850939692959293505050565b6000806000606084860312156130de57600080fd5b6130e784612a61565b92506130f560208501612a61565b9150604084013590509250925092565b6000806040838503121561311857600080fd5b8235612c9881612e9c565b6000806000806080858703121561313957600080fd5b61314285612a61565b935061315060208601612a61565b9250604085013561316081612e9c565b9396929550929360600135925050565b600181811c9082168061318457607f821691505b6020821081036131bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8183823760009101908152919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b61ffff8416815260406020820152600061224d6040830184866131d3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561100c5761100c61321c565b805160208083015191908110156131bd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132d1576132d161321c565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561331957600080fd5b61182682612b88565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261335757600080fd5b83018035915067ffffffffffffffff82111561337257600080fd5b602001915036819003821315612aba57600080fd5b61ffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015260a0604082015260006133c060a0830187612eff565b851515606084015282810360808401526133db8185876131d3565b9998505050505050505050565b600080604083850312156133fb57600080fd5b505080516020909101519092909150565b8284823760609190911b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169101908152601401919050565b601f82111561217a576000816000526020600020601f850160051c8101602086101561346e5750805b601f850160051c820191505b8181101561146b5782815560010161347a565b815167ffffffffffffffff8111156134a7576134a7612ca6565b6134bb816134b58454613170565b84613445565b602080601f83116001811461350e57600084156134d85750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561146b565b600085815260208120601f198616915b8281101561353d5788860151825594840194600190910190840161351e565b508582101561357957878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec18336030181126135bd57600080fd5b9190910192915050565b63ffffffff6135d589612c4d565b1681526020880135602082015267ffffffffffffffff6135f760408a01612ac1565b16604082015286606082015260e06080820152600061361a60e0830187896131d3565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c08401526136498185876131d3565b9a9950505050505050505050565b60006020828403121561366957600080fd5b815167ffffffffffffffff81111561368057600080fd5b8201601f8101841361369157600080fd5b805161369f612d8782612d06565b8181528560208385010111156136b457600080fd5b61224d826020830160208601612edb565b600061ffff8088168352808716602084015250846040830152608060608301526136f36080830184866131d3565b979650505050505050565b61ffff8616815260806020820152600061371c6080830186886131d3565b67ffffffffffffffff94909416604083015250606001529392505050565b67ffffffffffffffff83111561375257613752612ca6565b613766836137608354613170565b83613445565b6000601f8411600181146137b857600085156137825750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355610b24565b600083815260209020601f19861690835b828110156137e957868501358255602094850194600190920191016137c9565b5086821015613824577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b61ffff851681526080602082015260006138536080830186612eff565b67ffffffffffffffff8516604084015282810360608401526136f38185612eff565b61ffff8716815260c06020820152600061389260c0830188612eff565b82810360408401526138a48188612eff565b73ffffffffffffffffffffffffffffffffffffffff87811660608601528616608085015283810360a085015290506133db8185612eff565b8082018082111561100c5761100c61321c565b600082516135bd818460208701612edb565b61ffff8616815260a06020820152600061391e60a0830187612eff565b67ffffffffffffffff8616604084015282810360608401526139408186612eff565b905082810360808401526139548185612eff565b98975050505050505050565b6000815160208301517fff00000000000000000000000000000000000000000000000000000000000000808216935060018310156139a85780818460010360031b1b83161693505b50505091905056fea2646970667358221220a152a3810190668e17299ec98d83a3da218638b54da6dc32f53488a64000960164736f6c6343000816003300000000000000000000000066a71dcef29a0ffbdbe3c6a460a3b5bc225cd675