60806040523480156200001157600080fd5b50620000226200044260201b60201c565b6040518060400160405280600f81526020017f4e6578757342617365644576656e7400000000000000000000000000000000008152506040518060400160405280600381526020017f4e4245000000000000000000000000000000000000000000000000000000000081525081600090816200009f91906200078a565b508060019081620000b191906200078a565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620001295760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620001209190620008b6565b60405180910390fd5b6200013a816200044a60201b60201c565b50732b3224d080452276a76690341e5cfa81a945a985600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060007f1885c3e6f8ba30df84c90a74b295105bb1bce34f8a6fc23b4dca785a730fbfa9905060007fb0e8b5a533240ee373622c7f37990f3532bdc32c16f11ffd81233827b6fe98d3905060007fbdd390a92c5077dfd360492f0e92557c95427442f150291ec00dc27cb7490bd2905082600c600073e2e39b1a5efe07743f9e0e8408f1b7aab6b7f83273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600c600073a4e42b23b86df349c91a5f87701c4c575b58dbd573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600c6000735e36a22751f56aece9a970beac728de684e7bd1e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507302c8345b2df9ff6122b0be7b79cb219d956bd701600d600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507302c8345b2df9ff6122b0be7b79cb219d956bd701600d600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507302c8345b2df9ff6122b0be7b79cb219d956bd701600d600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620008d3565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200059257607f821691505b602082108103620005a857620005a76200054a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005d3565b6200061e8683620005d3565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200066b620006656200065f8462000636565b62000640565b62000636565b9050919050565b6000819050919050565b62000687836200064a565b6200069f620006968262000672565b848454620005e0565b825550505050565b600090565b620006b6620006a7565b620006c38184846200067c565b505050565b5b81811015620006eb57620006df600082620006ac565b600181019050620006c9565b5050565b601f8211156200073a576200070481620005ae565b6200070f84620005c3565b810160208510156200071f578190505b620007376200072e85620005c3565b830182620006c8565b50505b505050565b600082821c905092915050565b60006200075f600019846008026200073f565b1980831691505092915050565b60006200077a83836200074c565b9150826002028217905092915050565b620007958262000510565b67ffffffffffffffff811115620007b157620007b06200051b565b5b620007bd825462000579565b620007ca828285620006ef565b600060209050601f831160018114620008025760008415620007ed578287015190505b620007f985826200076c565b86555062000869565b601f1984166200081286620005ae565b60005b828110156200083c5784890151825560018201915060208501945060208101905062000815565b868310156200085c578489015162000858601f8916826200074c565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200089e8262000871565b9050919050565b620008b08162000891565b82525050565b6000602082019050620008cd6000830184620008a5565b92915050565b61424080620008e36000396000f3fe6080604052600436106102255760003560e01c80638e07a76311610123578063d7a0cc2b116100ab578063e8aa0dae1161006f578063e8aa0dae14610848578063e985e9c514610885578063e9b57d80146108c2578063f2fde38b146108ff578063fe9eff7e1461092857610225565b8063d7a0cc2b1461074c578063e17ee89814610789578063e33361f4146107c6578063e4382300146107e2578063e830b5c71461081f57610225565b8063b704b2a3116100f2578063b704b2a314610655578063b88d4fde1461067e578063ba870686146106a7578063c85e9154146106d2578063c87b56dd1461070f57610225565b80638e07a763146105bc57806395d89b41146105d85780639a174a8714610603578063a22cb4651461062c57610225565b80633398b4ed116101b1578063661aadf711610175578063661aadf7146104d75780636b9906b71461051457806370a082311461053d578063715018a61461057a5780638da5cb5b1461059157610225565b80633398b4ed146103ef57806342842e0e1461040b5780634466507a146104345780634f6ccce71461045d5780636352211e1461049a57610225565b80630c61b055116101f85780630c61b055146102f857806318160ddd1461033557806323b872dd146103605780632f745c59146103895780633206137f146103c657610225565b806301ffc9a71461022a57806306fdde0314610267578063081812fc14610292578063095ea7b3146102cf575b600080fd5b34801561023657600080fd5b50610251600480360381019061024c9190612ee5565b610951565b60405161025e9190612f2d565b60405180910390f35b34801561027357600080fd5b5061027c6109cb565b6040516102899190612fd8565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190613030565b610a5d565b6040516102c6919061309e565b60405180910390f35b3480156102db57600080fd5b506102f660048036038101906102f191906130e5565b610a79565b005b34801561030457600080fd5b5061031f600480360381019061031a9190613125565b610a8f565b60405161032c9190612f2d565b60405180910390f35b34801561034157600080fd5b5061034a610ade565b6040516103579190613161565b60405180910390f35b34801561036c57600080fd5b506103876004803603810190610382919061317c565b610aeb565b005b34801561039557600080fd5b506103b060048036038101906103ab91906130e5565b610b1d565b6040516103bd9190613161565b60405180910390f35b3480156103d257600080fd5b506103ed60048036038101906103e891906131cf565b610bc6565b005b610409600480360381019061040491906132b4565b610ca5565b005b34801561041757600080fd5b50610432600480360381019061042d919061317c565b610cca565b005b34801561044057600080fd5b5061045b6004803603810190610456919061337a565b610cea565b005b34801561046957600080fd5b50610484600480360381019061047f9190613030565b610cfd565b6040516104919190613161565b60405180910390f35b3480156104a657600080fd5b506104c160048036038101906104bc9190613030565b610d73565b6040516104ce919061309e565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f9919061345f565b610d85565b60405161050b9190612f2d565b60405180910390f35b34801561052057600080fd5b5061053b6004803603810190610536919061348c565b610df1565b005b34801561054957600080fd5b50610564600480360381019061055f9190613125565b6110bb565b6040516105719190613161565b60405180910390f35b34801561058657600080fd5b5061058f611175565b005b34801561059d57600080fd5b506105a6611189565b6040516105b3919061309e565b60405180910390f35b6105d660048036038101906105d191906134cc565b6111b3565b005b3480156105e457600080fd5b506105ed6111f4565b6040516105fa9190612fd8565b60405180910390f35b34801561060f57600080fd5b5061062a6004803603810190610625919061354f565b611286565b005b34801561063857600080fd5b50610653600480360381019061064e91906135ef565b611387565b005b34801561066157600080fd5b5061067c60048036038101906106779190613685565b61139d565b005b34801561068a57600080fd5b506106a560048036038101906106a09190613815565b6116e0565b005b3480156106b357600080fd5b506106bc611712565b6040516106c991906138a7565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f4919061348c565b6117aa565b6040516107069190612f2d565b60405180910390f35b34801561071b57600080fd5b5061073660048036038101906107319190613030565b6117f5565b6040516107439190612fd8565b60405180910390f35b34801561075857600080fd5b50610773600480360381019061076e9190613125565b611807565b6040516107809190613980565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab91906134cc565b6118c3565b6040516107bd9190612f2d565b60405180910390f35b6107e060048036038101906107db91906132b4565b61190e565b005b3480156107ee57600080fd5b506108096004803603810190610804919061345f565b611932565b604051610816919061309e565b60405180910390f35b34801561082b57600080fd5b506108466004803603810190610841919061337a565b61196f565b005b34801561085457600080fd5b5061086f600480360381019061086a9190613125565b611982565b60405161087c91906139b1565b60405180910390f35b34801561089157600080fd5b506108ac60048036038101906108a791906131cf565b6119cb565b6040516108b99190612f2d565b60405180910390f35b3480156108ce57600080fd5b506108e960048036038101906108e491906131cf565b611a5f565b6040516108f69190612f2d565b60405180910390f35b34801561090b57600080fd5b5061092660048036038101906109219190613125565b611b0f565b005b34801561093457600080fd5b5061094f600480360381019061094a919061348c565b611b95565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109c457506109c382611bae565b5b9050919050565b6060600080546109da906139fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610a06906139fb565b8015610a535780601f10610a2857610100808354040283529160200191610a53565b820191906000526020600020905b815481529060010190602001808311610a3657829003601f168201915b5050505050905090565b6000610a6882611c90565b50610a7282611d18565b9050919050565b610a8b8282610a86611d55565b611d5d565b5050565b60008060001b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414159050919050565b6000600880549050905090565b6040517ff9f4174f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610b28836110bb565b8210610b6d5782826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610b64929190613a2c565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610bce611d6f565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000801b8103610c4e576040517f3c78813000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600d600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b610caf8386610df1565b610cc3858467ffffffffffffffff16611df6565b5050505050565b610ce5838383604051806020016040528060008152506116e0565b505050565b610cf48588610df1565b50505050505050565b6000610d07610ade565b8210610d4d576000826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610d44929190613a2c565b60405180910390fd5b60088281548110610d6157610d60613a55565b5b90600052602060002001549050919050565b6000610d7e82611c90565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16600d600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166362252880846040518263ffffffff1660e01b8152600401610e4e91906138a7565b600060405180830381865afa158015610e6b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e949190613d71565b90506000806000806000806000876101200151806020019051810190610eba9190613eae565b96509650965096509650965096506000856002811115610edd57610edc613fa4565b5b905062093a8042610eee9190614002565b841015610f27576040517f7c09406800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6301dfe20042610f379190614002565b841115610f70576040517fbca2d97000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f798b6118c3565b15610fb0576040517f2be94c3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002811115610fc457610fc3613fa4565b5b816002811115610fd757610fd6613fa4565b5b0361102157610fe6888b611a5f565b61101c576040517f9e13dbfd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110ae565b6001600281111561103557611034613fa4565b5b81600281111561104857611047613fa4565b5b1480611077575060028081111561106257611061613fa4565b5b81600281111561107557611074613fa4565b5b145b6110ad576040517f5a82953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5050505050505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361112e5760006040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401611125919061309e565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61117d611d6f565b6111876000611eef565b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b34600e60008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008282546111ea9190614002565b9250508190555050565b606060018054611203906139fb565b80601f016020809104026020016040519081016040528092919081815260200182805461122f906139fb565b801561127c5780601f106112515761010080835404028352916020019161127c565b820191906000526020600020905b81548152906001019060200180831161125f57829003601f168201915b5050505050905090565b61128e611d6f565b61129784610a8f565b156112ce576040517fd95119cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083836040516112e0929190614066565b6040518091039020905080600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600d600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b611399611392611d55565b8383611fb5565b5050565b6113a5611d6f565b6000600e60008567ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000205490506000810361140b576040517fbe57a19e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80471015611445576040517f6da2f4e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083839050905060008103611487576040517f0ddba69800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818361149591906140ae565b9050600081036114d1576040517f6da2f4e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600e60008867ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000208190555060005b828110156116d757600073ffffffffffffffffffffffffffffffffffffffff1686868381811061153457611533613a55565b5b90506020020160208101906115499190613125565b73ffffffffffffffffffffffffffffffffffffffff1603611596576040517fc49b4d8e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008686838181106115ab576115aa613a55565b5b90506020020160208101906115c09190613125565b73ffffffffffffffffffffffffffffffffffffffff16836040516115e390614105565b60006040518083038185875af1925050503d8060008114611620576040519150601f19603f3d011682016040523d82523d6000602084013e611625565b606091505b5050905080611660576040517f81b3696f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8287878481811061167457611673613a55565b5b90506020020160208101906116899190613125565b73ffffffffffffffffffffffffffffffffffffffff167f2523cb2c175a06907e2ca5f85ad4b92e7206a54e629b6997a202d7a8e01b093660405160405180910390a350806001019050611501565b50505050505050565b6040517ff9f4174f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c996e036040518163ffffffff1660e01b8152600401602060405180830381865afa158015611781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a5919061411a565b905090565b60008173ffffffffffffffffffffffffffffffffffffffff166117d68467ffffffffffffffff16610d73565b73ffffffffffffffffffffffffffffffffffffffff1614905092915050565b606061180082612124565b9050919050565b60606000611814836110bb565b905060008167ffffffffffffffff811115611832576118316136ea565b5b6040519080825280602002602001820160405280156118605781602001602082028036833780820191505090505b50905060005b828110156118b8576118788582610b1d565b82828151811061188b5761188a613a55565b5b602002602001019067ffffffffffffffff16908167ffffffffffffffff1681525050806001019050611866565b508092505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166118ef8367ffffffffffffffff16610d73565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6119188386611b95565b61192b8367ffffffffffffffff1661218d565b5050505050565b6000600d600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6119798588611b95565b50505050505050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508273ffffffffffffffffffffffffffffffffffffffff16600d600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161491505092915050565b611b17611d6f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b895760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611b80919061309e565b60405180910390fd5b611b9281611eef565b50565b611b9e826118c3565b50611ba982826117aa565b505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611c7957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611c895750611c8882612213565b5b9050919050565b600080611c9c8361227d565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d0f57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611d069190613161565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b611d6a83838360016122ba565b505050565b611d77611d55565b73ffffffffffffffffffffffffffffffffffffffff16611d95611189565b73ffffffffffffffffffffffffffffffffffffffff1614611df457611db8611d55565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611deb919061309e565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e685760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611e5f919061309e565b60405180910390fd5b6000611e768383600061247f565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611eea5760006040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401611ee1919061309e565b60405180910390fd5b505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361202657816040517f5b08ba1800000000000000000000000000000000000000000000000000000000815260040161201d919061309e565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516121179190612f2d565b60405180910390a3505050565b606061212f82611c90565b50600061213a61259c565b9050600081511161215a5760405180602001604052806000815250612185565b80612164846125b3565b604051602001612175929190614183565b6040516020818303038152906040525b915050919050565b600061219c600083600061247f565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361220f57816040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016122069190613161565b60405180910390fd5b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806122f35750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561242757600061230384611c90565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561236e57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015612381575061237f81846119cb565b155b156123c357826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016123ba919061309e565b60405180910390fd5b811561242557838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60008061248d858585612681565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124d1576124cc8461289b565b612510565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461250f5761250e81856128e4565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036125525761254d84612a45565b612591565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146125905761258f8585612b16565b5b5b809150509392505050565b606060405180602001604052806000815250905090565b6060600060016125c284612ba1565b01905060008167ffffffffffffffff8111156125e1576125e06136ea565b5b6040519080825280601f01601f1916602001820160405280156126135781602001600182028036833780820191505090505b509050600082602001820190505b600115612676578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161266a5761266961407f565b5b04945060008503612621575b819350505050919050565b60008061268d8461227d565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146126cf576126ce818486612cf4565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612760576127116000856000806122ba565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146127e3576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006128ef836110bb565b90506000600760008481526020019081526020016000205490508181146129d4576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050612a5991906141a7565b9050600060096000848152602001908152602001600020549050600060088381548110612a8957612a88613a55565b5b906000526020600020015490508060088381548110612aab57612aaa613a55565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480612afa57612af96141db565b5b6001900381819060005260206000200160009055905550505050565b60006001612b23846110bb565b612b2d91906141a7565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612bff577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612bf557612bf461407f565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612c3c576d04ee2d6d415b85acef81000000008381612c3257612c3161407f565b5b0492506020810190505b662386f26fc100008310612c6b57662386f26fc100008381612c6157612c6061407f565b5b0492506010810190505b6305f5e1008310612c94576305f5e1008381612c8a57612c8961407f565b5b0492506008810190505b6127108310612cb9576127108381612caf57612cae61407f565b5b0492506004810190505b60648310612cdc5760648381612cd257612cd161407f565b5b0492506002810190505b600a8310612ceb576001810190505b80915050919050565b612cff838383612db8565b612db357600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d7457806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401612d6b9190613161565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401612daa929190613a2c565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612e7057508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612e315750612e3084846119cb565b5b80612e6f57508273ffffffffffffffffffffffffffffffffffffffff16612e5783611d18565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612ec281612e8d565b8114612ecd57600080fd5b50565b600081359050612edf81612eb9565b92915050565b600060208284031215612efb57612efa612e83565b5b6000612f0984828501612ed0565b91505092915050565b60008115159050919050565b612f2781612f12565b82525050565b6000602082019050612f426000830184612f1e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f82578082015181840152602081019050612f67565b60008484015250505050565b6000601f19601f8301169050919050565b6000612faa82612f48565b612fb48185612f53565b9350612fc4818560208601612f64565b612fcd81612f8e565b840191505092915050565b60006020820190508181036000830152612ff28184612f9f565b905092915050565b6000819050919050565b61300d81612ffa565b811461301857600080fd5b50565b60008135905061302a81613004565b92915050565b60006020828403121561304657613045612e83565b5b60006130548482850161301b565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130888261305d565b9050919050565b6130988161307d565b82525050565b60006020820190506130b3600083018461308f565b92915050565b6130c28161307d565b81146130cd57600080fd5b50565b6000813590506130df816130b9565b92915050565b600080604083850312156130fc576130fb612e83565b5b600061310a858286016130d0565b925050602061311b8582860161301b565b9150509250929050565b60006020828403121561313b5761313a612e83565b5b6000613149848285016130d0565b91505092915050565b61315b81612ffa565b82525050565b60006020820190506131766000830184613152565b92915050565b60008060006060848603121561319557613194612e83565b5b60006131a3868287016130d0565b93505060206131b4868287016130d0565b92505060406131c58682870161301b565b9150509250925092565b600080604083850312156131e6576131e5612e83565b5b60006131f4858286016130d0565b9250506020613205858286016130d0565b9150509250929050565b600067ffffffffffffffff82169050919050565b61322c8161320f565b811461323757600080fd5b50565b60008135905061324981613223565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126132745761327361324f565b5b8235905067ffffffffffffffff81111561329157613290613254565b5b6020830191508360018202830111156132ad576132ac613259565b5b9250929050565b6000806000806000608086880312156132d0576132cf612e83565b5b60006132de888289016130d0565b95505060206132ef8882890161323a565b94505060406133008882890161323a565b935050606086013567ffffffffffffffff81111561332157613320612e88565b5b61332d8882890161325e565b92509250509295509295909350565b60006133478261307d565b9050919050565b6133578161333c565b811461336257600080fd5b50565b6000813590506133748161334e565b92915050565b600080600080600080600060c0888a03121561339957613398612e83565b5b60006133a78a828b016130d0565b97505060206133b88a828b0161323a565b96505060406133c98a828b0161323a565b95505060606133da8a828b01613365565b94505060806133eb8a828b0161301b565b93505060a088013567ffffffffffffffff81111561340c5761340b612e88565b5b6134188a828b0161325e565b925092505092959891949750929550565b6000819050919050565b61343c81613429565b811461344757600080fd5b50565b60008135905061345981613433565b92915050565b60006020828403121561347557613474612e83565b5b60006134838482850161344a565b91505092915050565b600080604083850312156134a3576134a2612e83565b5b60006134b18582860161323a565b92505060206134c2858286016130d0565b9150509250929050565b6000602082840312156134e2576134e1612e83565b5b60006134f08482850161323a565b91505092915050565b60008083601f84011261350f5761350e61324f565b5b8235905067ffffffffffffffff81111561352c5761352b613254565b5b60208301915083600182028301111561354857613547613259565b5b9250929050565b6000806000806060858703121561356957613568612e83565b5b6000613577878288016130d0565b945050602085013567ffffffffffffffff81111561359857613597612e88565b5b6135a4878288016134f9565b935093505060406135b7878288016130d0565b91505092959194509250565b6135cc81612f12565b81146135d757600080fd5b50565b6000813590506135e9816135c3565b92915050565b6000806040838503121561360657613605612e83565b5b6000613614858286016130d0565b9250506020613625858286016135da565b9150509250929050565b60008083601f8401126136455761364461324f565b5b8235905067ffffffffffffffff81111561366257613661613254565b5b60208301915083602082028301111561367e5761367d613259565b5b9250929050565b60008060006040848603121561369e5761369d612e83565b5b60006136ac8682870161323a565b935050602084013567ffffffffffffffff8111156136cd576136cc612e88565b5b6136d98682870161362f565b92509250509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61372282612f8e565b810181811067ffffffffffffffff82111715613741576137406136ea565b5b80604052505050565b6000613754612e79565b90506137608282613719565b919050565b600067ffffffffffffffff8211156137805761377f6136ea565b5b61378982612f8e565b9050602081019050919050565b82818337600083830152505050565b60006137b86137b384613765565b61374a565b9050828152602081018484840111156137d4576137d36136e5565b5b6137df848285613796565b509392505050565b600082601f8301126137fc576137fb61324f565b5b813561380c8482602086016137a5565b91505092915050565b6000806000806080858703121561382f5761382e612e83565b5b600061383d878288016130d0565b945050602061384e878288016130d0565b935050604061385f8782880161301b565b925050606085013567ffffffffffffffff8111156138805761387f612e88565b5b61388c878288016137e7565b91505092959194509250565b6138a18161320f565b82525050565b60006020820190506138bc6000830184613898565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138f78161320f565b82525050565b600061390983836138ee565b60208301905092915050565b6000602082019050919050565b600061392d826138c2565b61393781856138cd565b9350613942836138de565b8060005b8381101561397357815161395a88826138fd565b975061396583613915565b925050600181019050613946565b5085935050505092915050565b6000602082019050818103600083015261399a8184613922565b905092915050565b6139ab81613429565b82525050565b60006020820190506139c660008301846139a2565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613a1357607f821691505b602082108103613a2657613a256139cc565b5b50919050565b6000604082019050613a41600083018561308f565b613a4e6020830184613152565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600081519050613a9d81613223565b92915050565b600081519050613ab2816130b9565b92915050565b60048110613ac557600080fd5b50565b600081519050613ad781613ab8565b92915050565b600081519050613aec816135c3565b92915050565b600067ffffffffffffffff821115613b0d57613b0c6136ea565b5b602082029050602081019050919050565b6000613b31613b2c84613765565b61374a565b905082815260208101848484011115613b4d57613b4c6136e5565b5b613b58848285612f64565b509392505050565b600082601f830112613b7557613b7461324f565b5b8151613b85848260208601613b1e565b91505092915050565b6000613ba1613b9c84613af2565b61374a565b90508083825260208201905060208402830185811115613bc457613bc3613259565b5b835b81811015613c0b57805167ffffffffffffffff811115613be957613be861324f565b5b808601613bf68982613b60565b85526020850194505050602081019050613bc6565b5050509392505050565b600082601f830112613c2a57613c2961324f565b5b8151613c3a848260208601613b8e565b91505092915050565b60006101408284031215613c5a57613c59613a84565b5b613c6561014061374a565b90506000613c7584828501613a8e565b6000830152506020613c8984828501613a8e565b6020830152506040613c9d84828501613a8e565b6040830152506060613cb184828501613a8e565b6060830152506080613cc584828501613aa3565b60808301525060a0613cd984828501613a8e565b60a08301525060c0613ced84828501613ac8565b60c08301525060e0613d0184828501613add565b60e08301525061010082015167ffffffffffffffff811115613d2657613d25613a89565b5b613d3284828501613c15565b6101008301525061012082015167ffffffffffffffff811115613d5857613d57613a89565b5b613d6484828501613b60565b6101208301525092915050565b600060208284031215613d8757613d86612e83565b5b600082015167ffffffffffffffff811115613da557613da4612e88565b5b613db184828501613c43565b91505092915050565b6000613dc58261305d565b9050919050565b613dd581613dba565b8114613de057600080fd5b50565b600081519050613df281613dcc565b92915050565b600067ffffffffffffffff821115613e1357613e126136ea565b5b613e1c82612f8e565b9050602081019050919050565b6000613e3c613e3784613df8565b61374a565b905082815260208101848484011115613e5857613e576136e5565b5b613e63848285612f64565b509392505050565b600082601f830112613e8057613e7f61324f565b5b8151613e90848260208601613e29565b91505092915050565b600081519050613ea881613004565b92915050565b600080600080600080600060e0888a031215613ecd57613ecc612e83565b5b6000613edb8a828b01613de3565b975050602088015167ffffffffffffffff811115613efc57613efb612e88565b5b613f088a828b01613e6b565b9650506040613f198a828b01613e99565b955050606088015167ffffffffffffffff811115613f3a57613f39612e88565b5b613f468a828b01613e6b565b9450506080613f578a828b01613e99565b93505060a0613f688a828b01613e99565b92505060c088015167ffffffffffffffff811115613f8957613f88612e88565b5b613f958a828b01613e6b565b91505092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061400d82612ffa565b915061401883612ffa565b92508282019050808211156140305761402f613fd3565b5b92915050565b600081905092915050565b600061404d8385614036565b935061405a838584613796565b82840190509392505050565b6000614073828486614041565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140b982612ffa565b91506140c483612ffa565b9250826140d4576140d361407f565b5b828204905092915050565b50565b60006140ef600083614036565b91506140fa826140df565b600082019050919050565b6000614110826140e2565b9150819050919050565b6000602082840312156141305761412f612e83565b5b600061413e84828501613a8e565b91505092915050565b600081905092915050565b600061415d82612f48565b6141678185614147565b9350614177818560208601612f64565b80840191505092915050565b600061418f8285614152565b915061419b8284614152565b91508190509392505050565b60006141b282612ffa565b91506141bd83612ffa565b92508282039050818111156141d5576141d4613fd3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220396ffb2f5a3cbaea860b6627c495090ecf966de37462cd5f790334aad69fe4af64736f6c63430008170033