60a060405234801561000f575f80fd5b506040516161d73803806161d78339818101604052810190610031919061037b565b6040518060400160405280600881526020017f4e4654544b4c5a5a0000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f4e4343544c5a5a5a00000000000000000000000000000000000000000000000081525083838383838381818181845f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610118575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161010f91906103c8565b60405180910390fd5b6101278161025c60201b60201c565b508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101c1576040517fb586360400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60805173ffffffffffffffffffffffffffffffffffffffff1663ca5eb5e1826040518263ffffffff1660e01b81526004016101fc91906103c8565b5f604051808303815f87803b158015610213575f80fd5b505af1158015610225573d5f803e3d5ffd5b50505050505050505050816005908161023e919061061b565b50806006908161024e919061061b565b5050505050505050506106ea565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61034a82610321565b9050919050565b61035a81610340565b8114610364575f80fd5b50565b5f8151905061037581610351565b92915050565b5f80604083850312156103915761039061031d565b5b5f61039e85828601610367565b92505060206103af85828601610367565b9150509250929050565b6103c281610340565b82525050565b5f6020820190506103db5f8301846103b9565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061045c57607f821691505b60208210810361046f5761046e610418565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104d17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610496565b6104db8683610496565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61051f61051a610515846104f3565b6104fc565b6104f3565b9050919050565b5f819050919050565b61053883610505565b61054c61054482610526565b8484546104a2565b825550505050565b5f90565b610560610554565b61056b81848461052f565b505050565b5b8181101561058e576105835f82610558565b600181019050610571565b5050565b601f8211156105d3576105a481610475565b6105ad84610487565b810160208510156105bc578190505b6105d06105c885610487565b830182610570565b50505b505050565b5f82821c905092915050565b5f6105f35f19846008026105d8565b1980831691505092915050565b5f61060b83836105e4565b9150826002028217905092915050565b610624826103e1565b67ffffffffffffffff81111561063d5761063c6103eb565b5b6106478254610445565b610652828285610592565b5f60209050601f831160018114610683575f8415610671578287015190505b61067b8582610600565b8655506106e2565b601f19841661069186610475565b5f5b828110156106b857848901518255600182019150602085019450602081019050610693565b868310156106d557848901516106d1601f8916826105e4565b8355505b6001600288020188555050505b505050505050565b608051615aa46107335f395f8181610c30015281816110850152818161183b01528181611d52015281816120d801528181612a000152818161309901526131910152615aa45ff3fe608060405260043610610266575f3560e01c806382413eac11610143578063bc70b354116100b5578063d045a0dc11610079578063d045a0dc14610942578063d42438851461095e578063e985e9c514610986578063f2fde38b146109c2578063fc0c546a146109ea578063ff7bd03d14610a1457610266565b8063bc70b3541461084a578063bd815db014610886578063c6414e7b146108a2578063c87b56dd146108de578063ca5eb5e11461091a57610266565b8063a72f5dd811610107578063a72f5dd81461073f578063b21a33e41461076a578063b731ea0a14610794578063b88d4fde146107be578063b98bd070146107e6578063bb0b6a531461080e57610266565b806382413eac1461065d5780638da5cb5b1461069957806395d89b41146106c35780639f68b964146106ed578063a22cb4651461071757610266565b806342842e0e116101dc5780635e280f11116101a05780635e280f11146105415780636352211e1461056b5780636fc1b31e146105a757806370a08231146105cf578063715018a61461060b5780637d25a05e1461062157610266565b806342842e0e1461044f57806352ae2879146104775780635535d461146104a157806355f804b3146104dd5780635a0dfe4d1461050557610266565b806313137d651161022e57806313137d651461035e57806317442b701461037a5780631f5e1334146103a557806321eb730b146103cf57806323b872dd146103ff5780633400288b1461042757610266565b806301ffc9a71461026a57806306fdde03146102a6578063081812fc146102d0578063095ea7b31461030c578063111ecdad14610334575b5f80fd5b348015610275575f80fd5b50610290600480360381019061028b919061393a565b610a50565b60405161029d919061397f565b60405180910390f35b3480156102b1575f80fd5b506102ba610b31565b6040516102c79190613a08565b60405180910390f35b3480156102db575f80fd5b506102f660048036038101906102f19190613a5b565b610bc1565b6040516103039190613ac5565b60405180910390f35b348015610317575f80fd5b50610332600480360381019061032d9190613b08565b610bdc565b005b34801561033f575f80fd5b50610348610bf2565b6040516103559190613ac5565b60405180910390f35b61037860048036038101906103739190613bfc565b610c17565b005b348015610385575f80fd5b5061038e610d37565b60405161039c929190613cd5565b60405180910390f35b3480156103b0575f80fd5b506103b9610d45565b6040516103c69190613d18565b60405180910390f35b6103e960048036038101906103e49190613d6d565b610d4a565b6040516103f69190613e73565b60405180910390f35b34801561040a575f80fd5b5061042560048036038101906104209190613e8c565b610e23565b005b348015610432575f80fd5b5061044d60048036038101906104489190613f15565b610f22565b005b34801561045a575f80fd5b5061047560048036038101906104709190613e8c565b610f38565b005b348015610482575f80fd5b5061048b610f57565b6040516104989190613ac5565b60405180910390f35b3480156104ac575f80fd5b506104c760048036038101906104c29190613f7d565b610f5e565b6040516104d4919061400d565b60405180910390f35b3480156104e8575f80fd5b5061050360048036038101906104fe9190614082565b611004565b005b348015610510575f80fd5b5061052b60048036038101906105269190613f15565b61105a565b604051610538919061397f565b60405180910390f35b34801561054c575f80fd5b50610555611083565b6040516105629190614128565b60405180910390f35b348015610576575f80fd5b50610591600480360381019061058c9190613a5b565b6110a7565b60405161059e9190613ac5565b60405180910390f35b3480156105b2575f80fd5b506105cd60048036038101906105c89190614141565b6110b8565b005b3480156105da575f80fd5b506105f560048036038101906105f09190614141565b61113a565b604051610602919061417b565b60405180910390f35b348015610616575f80fd5b5061061f6111f0565b005b34801561062c575f80fd5b5061064760048036038101906106429190613f15565b611203565b6040516106549190614194565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e91906141ad565b61120a565b604051610690919061397f565b60405180910390f35b3480156106a4575f80fd5b506106ad611244565b6040516106ba9190613ac5565b60405180910390f35b3480156106ce575f80fd5b506106d761126b565b6040516106e49190613a08565b60405180910390f35b3480156106f8575f80fd5b506107016112fb565b60405161070e919061397f565b60405180910390f35b348015610722575f80fd5b5061073d60048036038101906107389190614248565b6112ff565b005b34801561074a575f80fd5b50610753611315565b604051610761929190614295565b60405180910390f35b348015610775575f80fd5b5061077e611342565b60405161078b9190613d18565b60405180910390f35b34801561079f575f80fd5b506107a8611347565b6040516107b59190613ac5565b60405180910390f35b3480156107c9575f80fd5b506107e460048036038101906107df91906143e4565b61136c565b005b3480156107f1575f80fd5b5061080c600480360381019061080791906144b9565b611389565b005b348015610819575f80fd5b50610834600480360381019061082f9190614504565b6113aa565b604051610841919061453e565b60405180910390f35b348015610855575f80fd5b50610870600480360381019061086b9190614557565b6113bf565b60405161087d919061400d565b60405180910390f35b6108a0600480360381019061089b919061461d565b6115c1565b005b3480156108ad575f80fd5b506108c860048036038101906108c39190614668565b61178d565b6040516108d591906146ef565b60405180910390f35b3480156108e9575f80fd5b5061090460048036038101906108ff9190613a5b565b6117cb565b6040516109119190613a08565b60405180910390f35b348015610925575f80fd5b50610940600480360381019061093b9190614141565b611831565b005b61095c60048036038101906109579190613bfc565b6118c2565b005b348015610969575f80fd5b50610984600480360381019061097f9190614141565b61193f565b005b348015610991575f80fd5b506109ac60048036038101906109a79190614708565b6119c1565b6040516109b9919061397f565b60405180910390f35b3480156109cd575f80fd5b506109e860048036038101906109e39190614141565b611a4f565b005b3480156109f5575f80fd5b506109fe611ad3565b604051610a0b9190613ac5565b60405180910390f35b348015610a1f575f80fd5b50610a3a6004803603810190610a359190614746565b611ada565b604051610a47919061397f565b60405180910390f35b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b1a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b2a5750610b2982611b17565b5b9050919050565b606060058054610b409061479e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6c9061479e565b8015610bb75780601f10610b8e57610100808354040283529160200191610bb7565b820191905f5260205f20905b815481529060010190602001808311610b9a57829003601f168201915b5050505050905090565b5f610bcb82611b80565b50610bd582611c06565b9050919050565b610bee8282610be9611c3f565b611c46565b5050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610ca757336040517f91ac5e4f000000000000000000000000000000000000000000000000000000008152600401610c9e9190613ac5565b60405180910390fd5b8660200135610cc6885f016020810190610cc19190614504565b611c58565b14610d1f57865f016020810190610cdd9190614504565b87602001356040517fc26bebcc000000000000000000000000000000000000000000000000000000008152600401610d169291906147dd565b60405180910390fd5b610d2e87878787878787611cc9565b50505050505050565b5f8060016002915091509091565b600181565b610d5261388a565b610d72338560400135865f016020810190610d6d9190614504565b611e4b565b5f80610d7d86611edb565b91509150610daf865f016020810190610d969190614504565b838388803603810190610da99190614859565b886120a5565b92503373ffffffffffffffffffffffffffffffffffffffff16835f01517f986156872b2ee0022b9585231dbbfde457f87f8a16b6c45e1a81c54c4ad8351f885f016020810190610dff9190614504565b8960400135604051610e12929190614884565b60405180910390a350509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e93575f6040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610e8a9190613ac5565b60405180910390fd5b5f610ea68383610ea1611c3f565b6121bb565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f1c578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610f13939291906148ab565b60405180910390fd5b50505050565b610f2a6123c6565b610f34828261244d565b5050565b610f5283838360405180602001604052805f81525061136c565b505050565b5f30905090565b6003602052815f5260405f20602052805f5260405f205f91509150508054610f859061479e565b80601f0160208091040260200160405190810160405280929190818152602001828054610fb19061479e565b8015610ffc5780601f10610fd357610100808354040283529160200191610ffc565b820191905f5260205f20905b815481529060010190602001808311610fdf57829003601f168201915b505050505081565b61100c6123c6565b8181600b918261101d929190614a7e565b507ff9c7803e94e0d3c02900d8a90893a6d5e90dd04d32a4cfe825520f82bf9f32f6600b60405161104e9190614bcc565b60405180910390a15050565b5f8160015f8563ffffffff1663ffffffff1681526020019081526020015f205414905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f6110b182611b80565b9050919050565b6110c06123c6565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d44141978160405161112f9190613ac5565b60405180910390a150565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111ab575f6040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016111a29190613ac5565b60405180910390fd5b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6111f86123c6565b6112015f6124ac565b565b5f92915050565b5f3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050949350505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606006805461127a9061479e565b80601f01602080910402602001604051908101604052809291908181526020018280546112a69061479e565b80156112f15780601f106112c8576101008083540402835291602001916112f1565b820191905f5260205f20905b8154815290600101906020018083116112d457829003601f168201915b5050505050905090565b5f90565b61131161130a611c3f565b838361256d565b5050565b5f807f23e18da6000000000000000000000000000000000000000000000000000000006001915091509091565b600281565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611377848484610e23565b611383848484846126d6565b50505050565b6113916123c6565b6113a68282906113a19190614d1a565b612888565b5050565b6001602052805f5260405f205f915090505481565b60605f60035f8763ffffffff1663ffffffff1681526020019081526020015f205f8661ffff1661ffff1681526020019081526020015f2080546114019061479e565b80601f016020809104026020016040519081016040528092919081815260200182805461142d9061479e565b80156114785780601f1061144f57610100808354040283529160200191611478565b820191905f5260205f20905b81548152906001019060200180831161145b57829003601f168201915b505050505090505f8151036114d35783838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050509150506115b9565b5f84849050036114e657809150506115b9565b6002848490501061157a5761153d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505061299d565b808484600290809261155193929190614d36565b60405160200161156393929190614dce565b6040516020818303038152906040529150506115b9565b83836040517f9a6d49cd0000000000000000000000000000000000000000000000000000000081526004016115b0929190614e1f565b60405180910390fd5b949350505050565b5f5b828290508110156116e057368383838181106115e2576115e1614e41565b5b90506020028101906115f49190614e7a565b9050611619815f015f01602081019061160d9190614504565b825f016020013561105a565b61162357506116d3565b3073ffffffffffffffffffffffffffffffffffffffff1663d045a0dc8260c00135835f018460a001358580610100019061165d9190614ea2565b8760e00160208101906116709190614141565b888061012001906116819190614ea2565b6040518963ffffffff1660e01b81526004016116a39796959493929190614fd7565b5f604051808303818588803b1580156116ba575f80fd5b505af11580156116cc573d5f803e3d5ffd5b5050505050505b80806001019150506115c3565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b81526004015f60405180830381865afa158015611729573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061175191906150a8565b6040517f8351eea7000000000000000000000000000000000000000000000000000000008152600401611784919061400d565b60405180910390fd5b6117956138bc565b5f806117a085611edb565b915091506117c1855f0160208101906117b99190614504565b8383876129f6565b9250505092915050565b60606117d682611b80565b505f6117e0612ad7565b90505f8151116117fe5760405180602001604052805f815250611829565b8061180884612b67565b604051602001611819929190615129565b6040516020818303038152906040525b915050919050565b6118396123c6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca5eb5e1826040518263ffffffff1660e01b81526004016118929190613ac5565b5f604051808303815f87803b1580156118a9575f80fd5b505af11580156118bb573d5f803e3d5ffd5b5050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611927576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61193687878787878787612c31565b50505050505050565b6119476123c6565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c2427760816040516119b69190613ac5565b60405180910390a150565b5f600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b611a576123c6565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ac7575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611abe9190613ac5565b60405180910390fd5b611ad0816124ac565b50565b5f30905090565b5f816020013560015f845f016020810190611af59190614504565b63ffffffff1663ffffffff1681526020019081526020015f2054149050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f80611b8b83612c49565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bfd57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611bf4919061417b565b60405180910390fd5b80915050919050565b5f60095f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b611c538383836001612c82565b505050565b5f8060015f8463ffffffff1663ffffffff1681526020019081526020015f205490505f801b8103611cc057826040517ff6ff4fb7000000000000000000000000000000000000000000000000000000008152600401611cb7919061514c565b60405180910390fd5b80915050919050565b5f611cdc611cd78787612e41565b612e6b565b90505f611ce98787612e76565b9050611d0782828b5f016020810190611d029190614504565b612ea6565b611d118787612eb5565b15611dde575f611d4e8a6040016020810190611d2d9190615165565b8b5f016020810190611d3f9190614504565b611d498b8b612ec8565b612f2a565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637cb59012848b5f856040518563ffffffff1660e01b8152600401611daf94939291906151c9565b5f604051808303815f87803b158015611dc6575f80fd5b505af1158015611dd8573d5f803e3d5ffd5b50505050505b8173ffffffffffffffffffffffffffffffffffffffff16887f7883fa30ea56937810e36990b0bbb8d629d0cf59f68baf8431ff657cebe7eef58b5f016020810190611e299190614504565b84604051611e38929190614884565b60405180910390a3505050505050505050565b611e54826110a7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ecd5782611e90836110a7565b6040517f8684e2b6000000000000000000000000000000000000000000000000000000008152600401611ec4929190615213565b60405180910390fd5b611ed682612f59565b505050565b6060805f801b836020013503611f1d576040517f1e4ec46b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611f8284602001358560400135868060800190611f3b9190614ea2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050612fdb565b80925081945050505f81611f97576001611f9a565b60025b9050611fc7855f016020810190611fb19190614504565b82878060600190611fc29190614ea2565b6113bf565b92505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461209d578073ffffffffffffffffffffffffffffffffffffffff1663043a78eb86866040518363ffffffff1660e01b815260040161205c92919061523a565b602060405180830381865afa158015612077573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061209b9190615283565b505b505050915091565b6120ad61388a565b5f6120ba845f0151613049565b90505f846020015111156120d6576120d58460200151613096565b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff1681526020016121338c611c58565b81526020018a81526020018981526020015f8960200151111515815250866040518463ffffffff1660e01b815260040161216e92919061537f565b60806040518083038185885af115801561218a573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906121af9190615497565b91505095945050505050565b5f806121c684612c49565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612207576122068184866131dc565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612292576122465f855f80612c82565b600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461231157600160085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460075f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b6123ce611c3f565b73ffffffffffffffffffffffffffffffffffffffff166123ec611244565b73ffffffffffffffffffffffffffffffffffffffff161461244b5761240f611c3f565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016124429190613ac5565b60405180910390fd5b565b8060015f8463ffffffff1663ffffffff1681526020019081526020015f20819055507f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b82826040516124a09291906147dd565b60405180910390a15050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125dd57816040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016125d49190613ac5565b60405180910390fd5b80600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516126c9919061397f565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1115612882578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02612719611c3f565b8685856040518563ffffffff1660e01b815260040161273b94939291906154c2565b6020604051808303815f875af192505050801561277657506040513d601f19601f820116820180604052508101906127739190615520565b60015b6127f7573d805f81146127a4576040519150601f19603f3d011682016040523d82523d5f602084013e6127a9565b606091505b505f8151036127ef57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016127e69190613ac5565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461288057836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016128779190613ac5565b60405180910390fd5b505b50505050565b5f5b8151811015612962576128ba8282815181106128a9576128a8614e41565b5b60200260200101516040015161299d565b8181815181106128cd576128cc614e41565b5b60200260200101516040015160035f8484815181106128ef576128ee614e41565b5b60200260200101515f015163ffffffff1663ffffffff1681526020019081526020015f205f84848151811061292757612926614e41565b5b60200260200101516020015161ffff1661ffff1681526020019081526020015f20908161295491906155a3565b50808060010191505061288a565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b674816040516129929190615789565b60405180910390a150565b5f60028201519050600361ffff168161ffff16146129f257816040517f9a6d49cd0000000000000000000000000000000000000000000000000000000081526004016129e9919061400d565b60405180910390fd5b5050565b6129fe6138bc565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001612a5a89611c58565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401612a8f92919061537f565b6040805180830381865afa158015612aa9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612acd91906157a9565b9050949350505050565b6060600b8054612ae69061479e565b80601f0160208091040260200160405190810160405280929190818152602001828054612b129061479e565b8015612b5d5780601f10612b3457610100808354040283529160200191612b5d565b820191905f5260205f20905b815481529060010190602001808311612b4057829003601f168201915b5050505050905090565b60605f6001612b758461329f565b0190505f8167ffffffffffffffff811115612b9357612b926142c0565b5b6040519080825280601f01601f191660200182016040528015612bc55781602001600182028036833780820191505090505b5090505f82602001820190505b600115612c26578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612c1b57612c1a6157d4565b5b0494505f8503612bd2575b819350505050919050565b612c4087878787878787611cc9565b50505050505050565b5f60075f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080612cba57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612dec575f612cc984611b80565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d3357508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015612d465750612d4481846119c1565b155b15612d8857826040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401612d7f9190613ac5565b60405180910390fd5b8115612dea57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360095f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b5f82825f90602060ff1692612e5893929190614d36565b90612e63919061580b565b905092915050565b5f815f1c9050919050565b5f8282602060ff1690604060ff1692612e9193929190614d36565b90612e9c919061580b565b5f1c905092915050565b612eb083836133f0565b505050565b5f604060ff168383905011905092915050565b60608282604060ff16908092612ee093929190614d36565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050905092915050565b6060838383604051602001612f41939291906158d1565b60405160208183030381529060405290509392505050565b5f612f655f835f6121bb565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612fd757816040517f7e273289000000000000000000000000000000000000000000000000000000008152600401612fce919061417b565b60405180910390fd5b5050565b60605f80835111905080613010578484604051602001612ffc929190615949565b60405160208183030381529060405261303f565b848461301b336134e3565b8560405160200161302f9493929190615974565b6040516020818303038152906040525b9150935093915050565b5f81341461308e57346040517f9f704120000000000000000000000000000000000000000000000000000000008152600401613085919061417b565b60405180910390fd5b819050919050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015613100573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061312491906159d1565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361318b576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6131d8337f0000000000000000000000000000000000000000000000000000000000000000848473ffffffffffffffffffffffffffffffffffffffff16613504909392919063ffffffff16565b5050565b6131e7838383613586565b61329a575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361325b57806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401613252919061417b565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016132919291906159fc565b60405180910390fd5b505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106132fb577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816132f1576132f06157d4565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310613338576d04ee2d6d415b85acef8100000000838161332e5761332d6157d4565b5b0492506020810190505b662386f26fc10000831061336757662386f26fc10000838161335d5761335c6157d4565b5b0492506010810190505b6305f5e1008310613390576305f5e1008381613386576133856157d4565b5b0492506008810190505b61271083106133b55761271083816133ab576133aa6157d4565b5b0492506004810190505b606483106133d857606483816133ce576133cd6157d4565b5b0492506002810190505b600a83106133e7576001810190505b80915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613460575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016134579190613ac5565b60405180910390fd5b5f61346c83835f6121bb565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146134de575f6040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016134d59190613ac5565b60405180910390fd5b505050565b5f8173ffffffffffffffffffffffffffffffffffffffff165f1b9050919050565b613580848573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161353993929190615a23565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613646565b50505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561363d57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806135fe57506135fd84846119c1565b5b8061363c57508273ffffffffffffffffffffffffffffffffffffffff1661362483611c06565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f613670828473ffffffffffffffffffffffffffffffffffffffff166136db90919063ffffffff16565b90505f8151141580156136945750808060200190518101906136929190615283565b155b156136d657826040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016136cd9190613ac5565b60405180910390fd5b505050565b60606136e883835f6136f0565b905092915050565b60608147101561373757306040517fcd78605900000000000000000000000000000000000000000000000000000000815260040161372e9190613ac5565b60405180910390fd5b5f808573ffffffffffffffffffffffffffffffffffffffff16848660405161375f9190615a58565b5f6040518083038185875af1925050503d805f8114613799576040519150601f19603f3d011682016040523d82523d5f602084013e61379e565b606091505b50915091506137ae8683836137b9565b925050509392505050565b6060826137ce576137c982613846565b61383e565b5f82511480156137f457505f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561383657836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040161382d9190613ac5565b60405180910390fd5b81905061383f565b5b9392505050565b5f815111156138585780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052805f80191681526020015f67ffffffffffffffff1681526020016138b66138bc565b81525090565b60405180604001604052805f81526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613919816138e5565b8114613923575f80fd5b50565b5f8135905061393481613910565b92915050565b5f6020828403121561394f5761394e6138dd565b5b5f61395c84828501613926565b91505092915050565b5f8115159050919050565b61397981613965565b82525050565b5f6020820190506139925f830184613970565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6139da82613998565b6139e481856139a2565b93506139f48185602086016139b2565b6139fd816139c0565b840191505092915050565b5f6020820190508181035f830152613a2081846139d0565b905092915050565b5f819050919050565b613a3a81613a28565b8114613a44575f80fd5b50565b5f81359050613a5581613a31565b92915050565b5f60208284031215613a7057613a6f6138dd565b5b5f613a7d84828501613a47565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613aaf82613a86565b9050919050565b613abf81613aa5565b82525050565b5f602082019050613ad85f830184613ab6565b92915050565b613ae781613aa5565b8114613af1575f80fd5b50565b5f81359050613b0281613ade565b92915050565b5f8060408385031215613b1e57613b1d6138dd565b5b5f613b2b85828601613af4565b9250506020613b3c85828601613a47565b9150509250929050565b5f80fd5b5f60608284031215613b5f57613b5e613b46565b5b81905092915050565b5f819050919050565b613b7a81613b68565b8114613b84575f80fd5b50565b5f81359050613b9581613b71565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613bbc57613bbb613b9b565b5b8235905067ffffffffffffffff811115613bd957613bd8613b9f565b5b602083019150836001820283011115613bf557613bf4613ba3565b5b9250929050565b5f805f805f805f60e0888a031215613c1757613c166138dd565b5b5f613c248a828b01613b4a565b9750506060613c358a828b01613b87565b965050608088013567ffffffffffffffff811115613c5657613c556138e1565b5b613c628a828b01613ba7565b955095505060a0613c758a828b01613af4565b93505060c088013567ffffffffffffffff811115613c9657613c956138e1565b5b613ca28a828b01613ba7565b925092505092959891949750929550565b5f67ffffffffffffffff82169050919050565b613ccf81613cb3565b82525050565b5f604082019050613ce85f830185613cc6565b613cf56020830184613cc6565b9392505050565b5f61ffff82169050919050565b613d1281613cfc565b82525050565b5f602082019050613d2b5f830184613d09565b92915050565b5f60c08284031215613d4657613d45613b46565b5b81905092915050565b5f60408284031215613d6457613d63613b46565b5b81905092915050565b5f805f60808486031215613d8457613d836138dd565b5b5f84013567ffffffffffffffff811115613da157613da06138e1565b5b613dad86828701613d31565b9350506020613dbe86828701613d4f565b9250506060613dcf86828701613af4565b9150509250925092565b613de281613b68565b82525050565b613df181613cb3565b82525050565b613e0081613a28565b82525050565b604082015f820151613e1a5f850182613df7565b506020820151613e2d6020850182613df7565b50505050565b608082015f820151613e475f850182613dd9565b506020820151613e5a6020850182613de8565b506040820151613e6d6040850182613e06565b50505050565b5f608082019050613e865f830184613e33565b92915050565b5f805f60608486031215613ea357613ea26138dd565b5b5f613eb086828701613af4565b9350506020613ec186828701613af4565b9250506040613ed286828701613a47565b9150509250925092565b5f63ffffffff82169050919050565b613ef481613edc565b8114613efe575f80fd5b50565b5f81359050613f0f81613eeb565b92915050565b5f8060408385031215613f2b57613f2a6138dd565b5b5f613f3885828601613f01565b9250506020613f4985828601613b87565b9150509250929050565b613f5c81613cfc565b8114613f66575f80fd5b50565b5f81359050613f7781613f53565b92915050565b5f8060408385031215613f9357613f926138dd565b5b5f613fa085828601613f01565b9250506020613fb185828601613f69565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f613fdf82613fbb565b613fe98185613fc5565b9350613ff98185602086016139b2565b614002816139c0565b840191505092915050565b5f6020820190508181035f8301526140258184613fd5565b905092915050565b5f8083601f84011261404257614041613b9b565b5b8235905067ffffffffffffffff81111561405f5761405e613b9f565b5b60208301915083600182028301111561407b5761407a613ba3565b5b9250929050565b5f8060208385031215614098576140976138dd565b5b5f83013567ffffffffffffffff8111156140b5576140b46138e1565b5b6140c18582860161402d565b92509250509250929050565b5f819050919050565b5f6140f06140eb6140e684613a86565b6140cd565b613a86565b9050919050565b5f614101826140d6565b9050919050565b5f614112826140f7565b9050919050565b61412281614108565b82525050565b5f60208201905061413b5f830184614119565b92915050565b5f60208284031215614156576141556138dd565b5b5f61416384828501613af4565b91505092915050565b61417581613a28565b82525050565b5f60208201905061418e5f83018461416c565b92915050565b5f6020820190506141a75f830184613cc6565b92915050565b5f805f8060a085870312156141c5576141c46138dd565b5b5f6141d287828801613b4a565b945050606085013567ffffffffffffffff8111156141f3576141f26138e1565b5b6141ff87828801613ba7565b9350935050608061421287828801613af4565b91505092959194509250565b61422781613965565b8114614231575f80fd5b50565b5f813590506142428161421e565b92915050565b5f806040838503121561425e5761425d6138dd565b5b5f61426b85828601613af4565b925050602061427c85828601614234565b9150509250929050565b61428f816138e5565b82525050565b5f6040820190506142a85f830185614286565b6142b56020830184613cc6565b9392505050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6142f6826139c0565b810181811067ffffffffffffffff82111715614315576143146142c0565b5b80604052505050565b5f6143276138d4565b905061433382826142ed565b919050565b5f67ffffffffffffffff821115614352576143516142c0565b5b61435b826139c0565b9050602081019050919050565b828183375f83830152505050565b5f61438861438384614338565b61431e565b9050828152602081018484840111156143a4576143a36142bc565b5b6143af848285614368565b509392505050565b5f82601f8301126143cb576143ca613b9b565b5b81356143db848260208601614376565b91505092915050565b5f805f80608085870312156143fc576143fb6138dd565b5b5f61440987828801613af4565b945050602061441a87828801613af4565b935050604061442b87828801613a47565b925050606085013567ffffffffffffffff81111561444c5761444b6138e1565b5b614458878288016143b7565b91505092959194509250565b5f8083601f84011261447957614478613b9b565b5b8235905067ffffffffffffffff81111561449657614495613b9f565b5b6020830191508360208202830111156144b2576144b1613ba3565b5b9250929050565b5f80602083850312156144cf576144ce6138dd565b5b5f83013567ffffffffffffffff8111156144ec576144eb6138e1565b5b6144f885828601614464565b92509250509250929050565b5f60208284031215614519576145186138dd565b5b5f61452684828501613f01565b91505092915050565b61453881613b68565b82525050565b5f6020820190506145515f83018461452f565b92915050565b5f805f806060858703121561456f5761456e6138dd565b5b5f61457c87828801613f01565b945050602061458d87828801613f69565b935050604085013567ffffffffffffffff8111156145ae576145ad6138e1565b5b6145ba87828801613ba7565b925092505092959194509250565b5f8083601f8401126145dd576145dc613b9b565b5b8235905067ffffffffffffffff8111156145fa576145f9613b9f565b5b60208301915083602082028301111561461657614615613ba3565b5b9250929050565b5f8060208385031215614633576146326138dd565b5b5f83013567ffffffffffffffff8111156146505761464f6138e1565b5b61465c858286016145c8565b92509250509250929050565b5f806040838503121561467e5761467d6138dd565b5b5f83013567ffffffffffffffff81111561469b5761469a6138e1565b5b6146a785828601613d31565b92505060206146b885828601614234565b9150509250929050565b604082015f8201516146d65f850182613df7565b5060208201516146e96020850182613df7565b50505050565b5f6040820190506147025f8301846146c2565b92915050565b5f806040838503121561471e5761471d6138dd565b5b5f61472b85828601613af4565b925050602061473c85828601613af4565b9150509250929050565b5f6060828403121561475b5761475a6138dd565b5b5f61476884828501613b4a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806147b557607f821691505b6020821081036147c8576147c7614771565b5b50919050565b6147d781613edc565b82525050565b5f6040820190506147f05f8301856147ce565b6147fd602083018461452f565b9392505050565b5f80fd5b5f80fd5b5f6040828403121561482157614820614804565b5b61482b604061431e565b90505f61483a84828501613a47565b5f83015250602061484d84828501613a47565b60208301525092915050565b5f6040828403121561486e5761486d6138dd565b5b5f61487b8482850161480c565b91505092915050565b5f6040820190506148975f8301856147ce565b6148a4602083018461416c565b9392505050565b5f6060820190506148be5f830186613ab6565b6148cb602083018561416c565b6148d86040830184613ab6565b949350505050565b5f82905092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026149467fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261490b565b614950868361490b565b95508019841693508086168417925050509392505050565b5f61498261497d61497884613a28565b6140cd565b613a28565b9050919050565b5f819050919050565b61499b83614968565b6149af6149a782614989565b848454614917565b825550505050565b5f90565b6149c36149b7565b6149ce818484614992565b505050565b5b818110156149f1576149e65f826149bb565b6001810190506149d4565b5050565b601f821115614a3657614a07816148ea565b614a10846148fc565b81016020851015614a1f578190505b614a33614a2b856148fc565b8301826149d3565b50505b505050565b5f82821c905092915050565b5f614a565f1984600802614a3b565b1980831691505092915050565b5f614a6e8383614a47565b9150826002028217905092915050565b614a8883836148e0565b67ffffffffffffffff811115614aa157614aa06142c0565b5b614aab825461479e565b614ab68282856149f5565b5f601f831160018114614ae3575f8415614ad1578287013590505b614adb8582614a63565b865550614b42565b601f198416614af1866148ea565b5f5b82811015614b1857848901358255600182019150602085019450602081019050614af3565b86831015614b355784890135614b31601f891682614a47565b8355505b6001600288020188555050505b50505050505050565b5f8154614b578161479e565b614b6181866139a2565b9450600182165f8114614b7b5760018114614b9157614bc3565b60ff198316865281151560200286019350614bc3565b614b9a856148ea565b5f5b83811015614bbb57815481890152600182019150602081019050614b9c565b808801955050505b50505092915050565b5f6020820190508181035f830152614be48184614b4b565b905092915050565b5f67ffffffffffffffff821115614c0657614c056142c0565b5b602082029050602081019050919050565b5f60608284031215614c2c57614c2b614804565b5b614c36606061431e565b90505f614c4584828501613f01565b5f830152506020614c5884828501613f69565b602083015250604082013567ffffffffffffffff811115614c7c57614c7b614808565b5b614c88848285016143b7565b60408301525092915050565b5f614ca6614ca184614bec565b61431e565b90508083825260208201905060208402830185811115614cc957614cc8613ba3565b5b835b81811015614d1057803567ffffffffffffffff811115614cee57614ced613b9b565b5b808601614cfb8982614c17565b85526020850194505050602081019050614ccb565b5050509392505050565b5f614d26368484614c94565b905092915050565b5f80fd5b5f80fd5b5f8085851115614d4957614d48614d2e565b5b83861115614d5a57614d59614d32565b5b6001850283019150848603905094509492505050565b5f81905092915050565b5f614d8482613fbb565b614d8e8185614d70565b9350614d9e8185602086016139b2565b80840191505092915050565b5f614db58385614d70565b9350614dc2838584614368565b82840190509392505050565b5f614dd98286614d7a565b9150614de6828486614daa565b9150819050949350505050565b5f614dfe8385613fc5565b9350614e0b838584614368565b614e14836139c0565b840190509392505050565b5f6020820190508181035f830152614e38818486614df3565b90509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f80fd5b5f80fd5b5f80fd5b5f8235600161014003833603038112614e9657614e95614e6e565b5b80830191505092915050565b5f8083356001602003843603038112614ebe57614ebd614e6e565b5b80840192508235915067ffffffffffffffff821115614ee057614edf614e72565b5b602083019250600182023603831315614efc57614efb614e76565b5b509250929050565b5f614f126020840184613f01565b905092915050565b614f2381613edc565b82525050565b5f614f376020840184613b87565b905092915050565b614f4881613cb3565b8114614f52575f80fd5b50565b5f81359050614f6381614f3f565b92915050565b5f614f776020840184614f55565b905092915050565b60608201614f8f5f830183614f04565b614f9b5f850182614f1a565b50614fa96020830183614f29565b614fb66020850182613dd9565b50614fc46040830183614f69565b614fd16040850182613de8565b50505050565b5f60e082019050614fea5f83018a614f7f565b614ff7606083018961452f565b818103608083015261500a818789614df3565b905061501960a0830186613ab6565b81810360c083015261502c818486614df3565b905098975050505050505050565b5f61504c61504784614338565b61431e565b905082815260208101848484011115615068576150676142bc565b5b6150738482856139b2565b509392505050565b5f82601f83011261508f5761508e613b9b565b5b815161509f84826020860161503a565b91505092915050565b5f602082840312156150bd576150bc6138dd565b5b5f82015167ffffffffffffffff8111156150da576150d96138e1565b5b6150e68482850161507b565b91505092915050565b5f81905092915050565b5f61510382613998565b61510d81856150ef565b935061511d8185602086016139b2565b80840191505092915050565b5f61513482856150f9565b915061514082846150f9565b91508190509392505050565b5f60208201905061515f5f8301846147ce565b92915050565b5f6020828403121561517a576151796138dd565b5b5f61518784828501614f55565b91505092915050565b5f819050919050565b5f6151b36151ae6151a984615190565b6140cd565b613cfc565b9050919050565b6151c381615199565b82525050565b5f6080820190506151dc5f830187613ab6565b6151e9602083018661452f565b6151f660408301856151ba565b81810360608301526152088184613fd5565b905095945050505050565b5f6040820190506152265f830185613ab6565b6152336020830184613ab6565b9392505050565b5f6040820190508181035f8301526152528185613fd5565b905081810360208301526152668184613fd5565b90509392505050565b5f8151905061527d8161421e565b92915050565b5f60208284031215615298576152976138dd565b5b5f6152a58482850161526f565b91505092915050565b5f82825260208201905092915050565b5f6152c882613fbb565b6152d281856152ae565b93506152e28185602086016139b2565b6152eb816139c0565b840191505092915050565b6152ff81613965565b82525050565b5f60a083015f83015161531a5f860182614f1a565b50602083015161532d6020860182613dd9565b506040830151848203604086015261534582826152be565b9150506060830151848203606086015261535f82826152be565b915050608083015161537460808601826152f6565b508091505092915050565b5f6040820190508181035f8301526153978185615305565b90506153a66020830184613ab6565b9392505050565b5f815190506153bb81613b71565b92915050565b5f815190506153cf81614f3f565b92915050565b5f815190506153e381613a31565b92915050565b5f604082840312156153fe576153fd614804565b5b615408604061431e565b90505f615417848285016153d5565b5f83015250602061542a848285016153d5565b60208301525092915050565b5f6080828403121561544b5761544a614804565b5b615455606061431e565b90505f615464848285016153ad565b5f830152506020615477848285016153c1565b602083015250604061548b848285016153e9565b60408301525092915050565b5f608082840312156154ac576154ab6138dd565b5b5f6154b984828501615436565b91505092915050565b5f6080820190506154d55f830187613ab6565b6154e26020830186613ab6565b6154ef604083018561416c565b81810360608301526155018184613fd5565b905095945050505050565b5f8151905061551a81613910565b92915050565b5f60208284031215615535576155346138dd565b5b5f6155428482850161550c565b91505092915050565b5f819050815f5260205f209050919050565b601f82111561559e5761556f8161554b565b615578846148fc565b81016020851015615587578190505b61559b615593856148fc565b8301826149d3565b50505b505050565b6155ac82613fbb565b67ffffffffffffffff8111156155c5576155c46142c0565b5b6155cf825461479e565b6155da82828561555d565b5f60209050601f83116001811461560b575f84156155f9578287015190505b6156038582614a63565b86555061566a565b601f1984166156198661554b565b5f5b828110156156405784890151825560018201915060208501945060208101905061561b565b8683101561565d5784890151615659601f891682614a47565b8355505b6001600288020188555050505b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6156a481613cfc565b82525050565b5f606083015f8301516156bf5f860182614f1a565b5060208301516156d2602086018261569b565b50604083015184820360408601526156ea82826152be565b9150508091505092915050565b5f61570283836156aa565b905092915050565b5f602082019050919050565b5f61572082615672565b61572a818561567c565b93508360208202850161573c8561568c565b805f5b85811015615777578484038952815161575885826156f7565b94506157638361570a565b925060208a0199505060018101905061573f565b50829750879550505050505092915050565b5f6020820190508181035f8301526157a18184615716565b905092915050565b5f604082840312156157be576157bd6138dd565b5b5f6157cb848285016153e9565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82905092915050565b5f6158168383615801565b826158218135613b68565b925060208210156158615761585c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261490b565b831692505b505092915050565b5f8160c01b9050919050565b5f61587f82615869565b9050919050565b61589761589282613cb3565b615875565b82525050565b5f8160e01b9050919050565b5f6158b38261589d565b9050919050565b6158cb6158c682613edc565b6158a9565b82525050565b5f6158dc8286615886565b6008820191506158ec82856158ba565b6004820191506158fc8284614d7a565b9150819050949350505050565b5f819050919050565b61592361591e82613b68565b615909565b82525050565b5f819050919050565b61594361593e82613a28565b615929565b82525050565b5f6159548285615912565b6020820191506159648284615932565b6020820191508190509392505050565b5f61597f8287615912565b60208201915061598f8286615932565b60208201915061599f8285615912565b6020820191506159af8284614d7a565b915081905095945050505050565b5f815190506159cb81613ade565b92915050565b5f602082840312156159e6576159e56138dd565b5b5f6159f3848285016159bd565b91505092915050565b5f604082019050615a0f5f830185613ab6565b615a1c602083018461416c565b9392505050565b5f606082019050615a365f830186613ab6565b615a436020830185613ab6565b615a50604083018461416c565b949350505050565b5f615a638284614d7a565b91508190509291505056fea264697066735822122078ed861b0319eecbcf4dd13baa759b7499a4520096084fe19769fa7cceb9815964736f6c634300081a00330000000000000000000000006edce65403992e310a62460808c4b910d972f10f000000000000000000000000a7edb7cb37c765936f3c780eaa09a18fcf5cc6f3