0x60c06040523480156200001157600080fd5b5060405162004c6538038062004c65833981810160405281019062000037919062000115565b81818173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050505050506200015c565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000dd82620000b0565b9050919050565b620000ef81620000d0565b8114620000fb57600080fd5b50565b6000815190506200010f81620000e4565b92915050565b600080604083850312156200012f576200012e620000ab565b5b60006200013f85828601620000fe565b92505060206200015285828601620000fe565b9150509250929050565b60805160a051614aab620001ba60003960008181611230015281816116310152818161178401528181611b1901528181611d6e0152818161218e01526122c70152600081816106d201528181610cab0152610f140152614aab6000f3fe6080604052600436106100595760003560e01c80632c8958f6146101a6578063bd50c7b1146101cf578063f3fef3a3146101f8578063f4cb601414610221578063fa461e331461024a578063fa483e721461027357610060565b3661006057005b34801561006c57600080fd5b5063627dd56a60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036906100a29190612c4e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036100e7576100e260003660049080926100dd93929190612cc1565b61029c565b6101a4565b600080600080600036600490809261010193929190612cc1565b81019061010e9190612ee0565b93509350935093503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017b90612fc0565b60405180910390fd5b61019f81600085116101965783610198565b845b6000610770565b505050505b005b3480156101b257600080fd5b506101cd60048036038101906101c89190613076565b610c51565b005b3480156101db57600080fd5b506101f660048036038101906101f191906130ea565b610c64565b005b34801561020457600080fd5b5061021f600480360381019061021a9190613175565b610c92565b005b34801561022d57600080fd5b50610248600480360381019061024391906131b5565b610f7c565b005b34801561025657600080fd5b50610271600480360381019061026c9190613076565b611194565b005b34801561027f57600080fd5b5061029a60048036038101906102959190613076565b6111a7565b005b6000806000806102ef86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506111ba565b93509350935093508015610306575050505061076c565b6000610310611326565b61031b57601261031e565b60175b60ff169050600061038688888490809261033a93929190612cc1565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508660ff1661132b565b9050601481516103969190613244565b826103a1919061329e565b91506000816000815181106103b9576103b86132f4565b5b6020026020010151905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016103fe9190613332565b602060405180830381865afa15801561041b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043f9190613362565b905060008060006104a58d8d8990809261045b93929190612cc1565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050878b6113ff565b9250925092508883101561057f57838573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104ed9190613332565b602060405180830381865afa15801561050a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052e9190613362565b101561056f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610566906133db565b60405180910390fd5b505050505050505050505061076c565b60006005811115610593576105926133fb565b5b8b60058111156105a6576105a56133fb565b5b036105bc576105b78683838c611780565b6105f4565b60008683838c6040516020016105d5949392919061370c565b60405160208183030381529060405290506105f286828c8f611b15565b505b60008573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161062f9190613332565b602060405180830381865afa15801561064c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106709190613362565b9050848110156106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac906133db565b60405180910390fd5b8481036106cd5750505050505050505050505061076c565b6107247f00000000000000000000000000000000000000000000000000000000000000006001836106fe9190613766565b8873ffffffffffffffffffffffffffffffffffffffff16611c3b9092919063ffffffff16565b7f5c533cd5cfc2d1e0fdcf8c18e668c0197b4bcac1267fb93961e22e93d69ca7338582886040516107579392919061379a565b60405180910390a15050505050505050505050505b5050565b6000806000808680602001905181019061078a9190613ae9565b93509350935093506000600185516107a29190613766565b67ffffffffffffffff8111156107bb576107ba612db5565b5b6040519080825280602002602001820160405280156107e95781602001602082028036833780820191505090505b5090506000600185516107fc9190613766565b67ffffffffffffffff81111561081557610814612db5565b5b60405190808252806020026020018201604052801561084857816020015b60608152602001906001900390816108335790505b50905060006001855161085b9190613766565b67ffffffffffffffff81111561087457610873612db5565b5b6040519080825280602002602001820160405280156108a25781602001602082028036833780820191505090505b5090506000600188516108b59190613766565b90506000600190505b88518110156109ea578881815181106108da576108d96132f4565b5b6020026020010151856001836108f09190613766565b81518110610901576109006132f4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818103156109d757878181518110610956576109556132f4565b5b60200260200101518460018361096c9190613766565b8151811061097d5761097c6132f4565b5b602002602001018190525086818151811061099b5761099a6132f4565b5b6020026020010151836001836109b19190613766565b815181106109c2576109c16132f4565b5b602002602001019060ff16908160ff16815250505b80806109e290613ba4565b9150506108be565b506109f78484848d611cc1565b600088600081518110610a0d57610a0c6132f4565b5b60200260200101519050858173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a519190613332565b602060405180830381865afa158015610a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a929190613362565b1015610ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aca90613c38565b60405180910390fd5b610adb6124ed565b73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1603610c1757610b3a89600081518110610b2457610b236132f4565b5b6020026020010151610b346124ed565b88612509565b600088600081518110610b5057610b4f6132f4565b5b602002602001015190506000604c6014830101519050610b6e6124ed565b73ffffffffffffffffffffffffffffffffffffffff166302b9446c60008d600081518110610b9f57610b9e6132f4565b5b602002602001015130858d60006040518763ffffffff1660e01b8152600401610bcc959493929190613c9d565b604080518083038185885af1158015610be9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c0e9190613cf0565b50505050610c43565b610c4233878373ffffffffffffffffffffffffffffffffffffffff16611c3b9092919063ffffffff16565b5b505050505050505050505050565b610c5e8484848433612606565b50505050565b6000808383810190610c769190613d30565b91509150610c8c8183610c876124ed565b610770565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1790613dd8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e495780471015610d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8e90613e44565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1682604051610dbd90613e95565b60006040518083038185875af1925050503d8060008114610dfa576040519150601f19603f3d011682016040523d82523d6000602084013e610dff565b606091505b5050905080610e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3a90613ef6565b60405180910390fd5b50610f78565b600082905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e899190613332565b602060405180830381865afa158015610ea6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eca9190613362565b905060008111610f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0690613e44565b60405180910390fd5b610f757f000000000000000000000000000000000000000000000000000000000000000060008514610f415784610f4f565b600183610f4e9190613766565b5b8473ffffffffffffffffffffffffffffffffffffffff16611c3b9092919063ffffffff16565b50505b5050565b6000806000808585810190610f91919061410e565b9350935093509350600084600081518110610faf57610fae6132f4565b5b6020026020010151905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ff49190613332565b602060405180830381865afa158015611011573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110359190613362565b905061104386868686611cc1565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161107e9190613332565b602060405180830381865afa15801561109b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bf9190613362565b905081811015611104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fb90614215565b60405180910390fd5b8982826111119190613766565b1015611152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114990614281565b60405180910390fd5b611188338b86611162919061329e565b8573ffffffffffffffffffffffffffffffffffffffff16611c3b9092919063ffffffff16565b50505050505050505050565b6111a18484848433612606565b50505050565b6111b48484848433612606565b50505050565b60008060008060006111ca611326565b156112d85760008060008060018a0151935060028a0151975060038a0151925060058a0151915060078a0151905060178a015194508360ff166005811115611215576112146133fb565b5b9850600061122c8b8461ffff168461ffff166126fc565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e298c4d85836040518363ffffffff1660e01b81526004016112899291906142fa565b6020604051808303816000875af11580156112a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cc9190614362565b96505050505050611309565b60006001870151905060028701519450601287015191508060ff166005811115611305576113046133fb565b5b9550505b806fffffffffffffffffffffffffffffffff169250509193509193565b600090565b606060018261133a919061329e565b67ffffffffffffffff81111561135357611352612db5565b5b6040519080825280602002602001820160405280156113815781602001602082028036833780820191505090505b50905060005b8281116113f8576000601460018301028501519050808383815181106113b0576113af6132f4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818060010192505050611387565b5092915050565b60006060808392506000600186516114179190613766565b67ffffffffffffffff8111156114305761142f612db5565b5b60405190808252806020026020018201604052801561146357816020015b606081526020019060019003908161144e5790505b509250600186516114749190613766565b67ffffffffffffffff81111561148d5761148c612db5565b5b6040519080825280602002602001820160405280156114bb5781602001602082028036833780820191505090505b50915060005b600187516114cf9190613766565b811015611774576000604c67ffffffffffffffff8111156114f3576114f2612db5565b5b6040519080825280601f01601f1916602001820160405280156115255781602001600182028036833780820191505090505b509050600088838151811061153d5761153c6132f4565b5b60200260200101519050600089600185611557919061329e565b81518110611568576115676132f4565b5b6020026020010151905060008060008a9050600188018e01519150600388018e015192508460148701528360601b60348701528060801b605c870152604c86526003886115b5919061329e565b975060006115c88f8a8661ffff166126fc565b90508361ffff16896115da919061329e565b98506115e6878261281a565b9050808b89815181106115fc576115fb6132f4565b5b6020026020010181905250828a898151811061161b5761161a6132f4565b5b602002602001019060ff16908160ff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fc6d4515846040518263ffffffff1660e01b8152600401611688919061438f565b602060405180830381865afa1580156116a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c991906143aa565b73ffffffffffffffffffffffffffffffffffffffff1663a8f1f52e826040518263ffffffff1660e01b815260040161170191906143d7565b6020604051808303816000875af1158015611720573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117449190613362565b9b5060008c116117605760009b50505050505050505050611777565b8780600101985050505050505050506114c1565b50505b93509350939050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fc6d4515846000815181106117d2576117d16132f4565b5b60200260200101516040518263ffffffff1660e01b81526004016117f6919061438f565b602060405180830381865afa158015611813573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183791906143aa565b905060008173ffffffffffffffffffffffffffffffffffffffff166320c5f4a36118a58760008151811061186e5761186d6132f4565b5b6020026020010151604c808a60008151811061188d5761188c6132f4565b5b6020026020010151516118a09190613766565b6126fc565b6040518263ffffffff1660e01b81526004016118c191906143d7565b6020604051808303816000875af11580156118e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190491906143aa565b9050600086868686856040516020016119219594939291906143f9565b6040516020818303038152906040529050600885600081518110611948576119476132f4565b5b602002602001015160ff16148061197d5750601a856000815181106119705761196f6132f4565b5b602002602001015160ff16145b806119a65750601b85600081518110611999576119986132f4565b5b602002602001015160ff16145b156119c65760016000806101000a81548160ff0219169083151502179055505b6000808473ffffffffffffffffffffffffffffffffffffffff16836040516024016119f191906143d7565b6040516020818303038152906040527f373d0b14000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611a7b9190614492565b600060405180830381855af49150503d8060008114611ab6576040519150601f19603f3d011682016040523d82523d6000602084013e611abb565b606091505b509150915081611b0a57611ace816128e4565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0191906144ed565b60405180910390fd5b505050505050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a665d1fa836005811115611b6657611b656133fb565b5b6040518263ffffffff1660e01b8152600401611b82919061438f565b602060405180830381865afa158015611b9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc391906143aa565b90508073ffffffffffffffffffffffffffffffffffffffff16630c5c9fa88685876040518463ffffffff1660e01b8152600401611c029392919061450f565b600060405180830381600087803b158015611c1c57600080fd5b505af1158015611c30573d6000803e3d6000fd5b505050505050505050565b611cbc8363a9059cbb60e01b8484604051602401611c5a92919061454d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612907565b505050565b6000835167ffffffffffffffff811115611cde57611cdd612db5565b5b604051908082528060200260200182016040528015611d0c5781602001602082028036833780820191505090505b5090506000845167ffffffffffffffff811115611d2c57611d2b612db5565b5b604051908082528060200260200182016040528015611d5a5781602001602082028036833780820191505090505b50905060005b8551811015611f6c576000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fc6d4515888581518110611dbb57611dba6132f4565b5b60200260200101516040518263ffffffff1660e01b8152600401611ddf919061438f565b602060405180830381865afa158015611dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2091906143aa565b73ffffffffffffffffffffffffffffffffffffffff166375734be8611e878a8681518110611e5157611e506132f4565b5b6020026020010151604c808d8981518110611e6f57611e6e6132f4565b5b602002602001015151611e829190613766565b6126fc565b6040518263ffffffff1660e01b8152600401611ea391906143d7565b60408051808303816000875af1158015611ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee59190614576565b9150915081858481518110611efd57611efc6132f4565b5b60200260200101901515908115158152505080848481518110611f2357611f226132f4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082806001019350505050611d60565b50600073ffffffffffffffffffffffffffffffffffffffff1681600081518110611f9957611f986132f4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415801561200c57503073ffffffffffffffffffffffffffffffffffffffff1681600081518110611feb57611fea6132f4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b8061202f575081600081518110612026576120256132f4565b5b60200260200101515b15612096576120958160008151811061204b5761204a6132f4565b5b60200260200101518488600081518110612068576120676132f4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16611c3b9092919063ffffffff16565b5b60008390506000600187516120ab9190613766565b905060005b87518110156124e25760008882815181106120ce576120cd6132f4565b5b60200260200101519050600083831461210d57856001846120ef919061329e565b81518110612100576120ff6132f4565b5b602002602001015161210f565b305b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612149573090505b60008590508160601b6048840152606c8301518160801b605c85015280606c8501525087848151811061217f5761217e6132f4565b5b6020026020010151156122c2577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fc6d45158b86815181106121db576121da6132f4565b5b60200260200101516040518263ffffffff1660e01b81526004016121ff919061438f565b602060405180830381865afa15801561221c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224091906143aa565b73ffffffffffffffffffffffffffffffffffffffff166309c5eabe846040518263ffffffff1660e01b815260040161227891906143d7565b6020604051808303816000875af1158015612297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122bb9190613362565b95506124d2565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fc6d45158d8881518110612314576123136132f4565b5b60200260200101516040518263ffffffff1660e01b8152600401612338919061438f565b602060405180830381865afa158015612355573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237991906143aa565b73ffffffffffffffffffffffffffffffffffffffff16856040516024016123a091906143d7565b6040516020818303038152906040527f09c5eabe000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161242a9190614492565b600060405180830381855af49150503d8060008114612465576040519150601f19603f3d011682016040523d82523d6000602084013e61246a565b606091505b5091509150816124b95761247d816128e4565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b091906144ed565b60405180910390fd5b808060200190518101906124cd9190613362565b975050505b83806001019450505050506120b0565b505050505050505050565b60007374c764d41b77dbbb4fe771dab1939b00b146894a905090565b600083905060008173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b815260040161254b9291906145b6565b602060405180830381865afa158015612568573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258c9190613362565b90508281111561259d575050612601565b60008111156125d3576125d28460008473ffffffffffffffffffffffffffffffffffffffff166129ce9092919063ffffffff16565b5b6125fe84848473ffffffffffffffffffffffffffffffffffffffff166129ce9092919063ffffffff16565b50505b505050565b60008054906101000a900460ff161561267b5760008060006101000a81548160ff0219169083151502179055506000838381019061264491906145df565b925050506126758160008812612663578661265e9061464e565b61266e565b8761266d9061464e565b5b6000610770565b506126f5565b6000838381019061268c9190614696565b905060008613156126c7576126c282878373ffffffffffffffffffffffffffffffffffffffff16611c3b9092919063ffffffff16565b6126f3565b6126f282868373ffffffffffffffffffffffffffffffffffffffff16611c3b9092919063ffffffff16565b5b505b5050505050565b606081601f8361270c919061329e565b101561274d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127449061470f565b60405180910390fd5b8183612759919061329e565b8451101561279c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127939061477b565b60405180910390fd5b60608215600081146127bd576040519150600082526020820160405261280e565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156127fb57805183526020830192506020810190506127de565b50868552601f19601f8301166040525050505b50809150509392505050565b60606000835190506000835182612831919061329e565b905060006020601f8751612845919061329e565b61284f91906147ca565b905060006020601f8751612863919061329e565b61286d91906147ca565b905060405183815260005b8381101561289f578060010160200289015181600101602002830152806001019050612878565b5060005b828110156128cc57806001016020028801518682600101602002018301528060010190506128a3565b50836020018101604052809550505050505092915050565b606060048201915081806020019051810190612900919061489c565b9050919050565b6000612969826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612a549092919063ffffffff16565b90506000815111156129c957808060200190518101906129899190614362565b6129c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bf90614957565b60405180910390fd5b5b505050565b612a4f8363095ea7b360e01b84846040516024016129ed92919061454d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612907565b505050565b6060612a638484600085612a6c565b90509392505050565b606082471015612ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa8906149e9565b60405180910390fd5b612aba85612b80565b612af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af090614a55565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b229190614492565b60006040518083038185875af1925050503d8060008114612b5f576040519150601f19603f3d011682016040523d82523d6000602084013e612b64565b606091505b5091509150612b74828286612ba3565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60608315612bb357829050612c03565b600083511115612bc65782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfa91906144ed565b60405180910390fd5b9392505050565b600082905092915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600082821b905092915050565b6000612c5a8383612c0a565b82612c658135612c15565b92506004821015612ca557612ca07fffffffff0000000000000000000000000000000000000000000000000000000083600403600802612c41565b831692505b505092915050565b6000604051905090565b600080fd5b600080fd5b60008085851115612cd557612cd4612cb7565b5b83861115612ce657612ce5612cbc565b5b6001850283019150848603905094509492505050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d3182612d06565b9050919050565b612d4181612d26565b8114612d4c57600080fd5b50565b600081359050612d5e81612d38565b92915050565b6000819050919050565b612d7781612d64565b8114612d8257600080fd5b50565b600081359050612d9481612d6e565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612ded82612da4565b810181811067ffffffffffffffff82111715612e0c57612e0b612db5565b5b80604052505050565b6000612e1f612cad565b9050612e2b8282612de4565b919050565b600067ffffffffffffffff821115612e4b57612e4a612db5565b5b612e5482612da4565b9050602081019050919050565b82818337600083830152505050565b6000612e83612e7e84612e30565b612e15565b905082815260208101848484011115612e9f57612e9e612d9f565b5b612eaa848285612e61565b509392505050565b600082601f830112612ec757612ec6612d9a565b5b8135612ed7848260208601612e70565b91505092915050565b60008060008060808587031215612efa57612ef9612cfc565b5b6000612f0887828801612d4f565b9450506020612f1987828801612d85565b9350506040612f2a87828801612d85565b925050606085013567ffffffffffffffff811115612f4b57612f4a612d01565b5b612f5787828801612eb2565b91505092959194509250565b600082825260208201905092915050565b7f3036000000000000000000000000000000000000000000000000000000000000600082015250565b6000612faa600283612f63565b9150612fb582612f74565b602082019050919050565b60006020820190508181036000830152612fd981612f9d565b9050919050565b6000819050919050565b612ff381612fe0565b8114612ffe57600080fd5b50565b60008135905061301081612fea565b92915050565b600080fd5b600080fd5b60008083601f84011261303657613035612d9a565b5b8235905067ffffffffffffffff81111561305357613052613016565b5b60208301915083600182028301111561306f5761306e61301b565b5b9250929050565b600080600080606085870312156130905761308f612cfc565b5b600061309e87828801613001565b94505060206130af87828801613001565b935050604085013567ffffffffffffffff8111156130d0576130cf612d01565b5b6130dc87828801613020565b925092505092959194509250565b6000806020838503121561310157613100612cfc565b5b600083013567ffffffffffffffff81111561311f5761311e612d01565b5b61312b85828601613020565b92509250509250929050565b600061314282612d06565b9050919050565b61315281613137565b811461315d57600080fd5b50565b60008135905061316f81613149565b92915050565b6000806040838503121561318c5761318b612cfc565b5b600061319a85828601613160565b92505060206131ab85828601612d85565b9150509250929050565b6000806000604084860312156131ce576131cd612cfc565b5b60006131dc86828701612d85565b935050602084013567ffffffffffffffff8111156131fd576131fc612d01565b5b61320986828701613020565b92509250509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061324f82612d64565b915061325a83612d64565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561329357613292613215565b5b828202905092915050565b60006132a982612d64565b91506132b483612d64565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132e9576132e8613215565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b61332c81613137565b82525050565b60006020820190506133476000830184613323565b92915050565b60008151905061335c81612d6e565b92915050565b60006020828403121561337857613377612cfc565b5b60006133868482850161334d565b91505092915050565b7f3033000000000000000000000000000000000000000000000000000000000000600082015250565b60006133c5600283612f63565b91506133d08261338f565b602082019050919050565b600060208201905081810360008301526133f4816133b8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61345f81613137565b82525050565b60006134718383613456565b60208301905092915050565b6000602082019050919050565b60006134958261342a565b61349f8185613435565b93506134aa83613446565b8060005b838110156134db5781516134c28882613465565b97506134cd8361347d565b9250506001810190506134ae565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561354e578082015181840152602081019050613533565b8381111561355d576000848401525b50505050565b600061356e82613514565b613578818561351f565b9350613588818560208601613530565b61359181612da4565b840191505092915050565b60006135a88383613563565b905092915050565b6000602082019050919050565b60006135c8826134e8565b6135d281856134f3565b9350836020820285016135e485613504565b8060005b858110156136205784840389528151613601858261359c565b945061360c836135b0565b925060208a019950506001810190506135e8565b50829750879550505050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600060ff82169050919050565b6136748161365e565b82525050565b6000613686838361366b565b60208301905092915050565b6000602082019050919050565b60006136aa82613632565b6136b4818561363d565b93506136bf8361364e565b8060005b838110156136f05781516136d7888261367a565b97506136e283613692565b9250506001810190506136c3565b5085935050505092915050565b61370681612d64565b82525050565b60006080820190508181036000830152613726818761348a565b9050818103602083015261373a81866135bd565b9050818103604083015261374e818561369f565b905061375d60608301846136fd565b95945050505050565b600061377182612d64565b915061377c83612d64565b92508282101561378f5761378e613215565b5b828203905092915050565b60006060820190506137af60008301866136fd565b6137bc60208301856136fd565b6137c96040830184613323565b949350505050565b600067ffffffffffffffff8211156137ec576137eb612db5565b5b602082029050602081019050919050565b60008151905061380c81613149565b92915050565b6000613825613820846137d1565b612e15565b905080838252602082019050602084028301858111156138485761384761301b565b5b835b81811015613871578061385d88826137fd565b84526020840193505060208101905061384a565b5050509392505050565b600082601f8301126138905761388f612d9a565b5b81516138a0848260208601613812565b91505092915050565b600067ffffffffffffffff8211156138c4576138c3612db5565b5b602082029050602081019050919050565b60006138e86138e384612e30565b612e15565b90508281526020810184848401111561390457613903612d9f565b5b61390f848285613530565b509392505050565b600082601f83011261392c5761392b612d9a565b5b815161393c8482602086016138d5565b91505092915050565b6000613958613953846138a9565b612e15565b9050808382526020820190506020840283018581111561397b5761397a61301b565b5b835b818110156139c257805167ffffffffffffffff8111156139a05761399f612d9a565b5b8086016139ad8982613917565b8552602085019450505060208101905061397d565b5050509392505050565b600082601f8301126139e1576139e0612d9a565b5b81516139f1848260208601613945565b91505092915050565b600067ffffffffffffffff821115613a1557613a14612db5565b5b602082029050602081019050919050565b613a2f8161365e565b8114613a3a57600080fd5b50565b600081519050613a4c81613a26565b92915050565b6000613a65613a60846139fa565b612e15565b90508083825260208201905060208402830185811115613a8857613a8761301b565b5b835b81811015613ab15780613a9d8882613a3d565b845260208401935050602081019050613a8a565b5050509392505050565b600082601f830112613ad057613acf612d9a565b5b8151613ae0848260208601613a52565b91505092915050565b60008060008060808587031215613b0357613b02612cfc565b5b600085015167ffffffffffffffff811115613b2157613b20612d01565b5b613b2d8782880161387b565b945050602085015167ffffffffffffffff811115613b4e57613b4d612d01565b5b613b5a878288016139cc565b935050604085015167ffffffffffffffff811115613b7b57613b7a612d01565b5b613b8787828801613abb565b9250506060613b988782880161334d565b91505092959194509250565b6000613baf82612d64565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613be157613be0613215565b5b600182019050919050565b7f3037000000000000000000000000000000000000000000000000000000000000600082015250565b6000613c22600283612f63565b9150613c2d82613bec565b602082019050919050565b60006020820190508181036000830152613c5181613c15565b9050919050565b6000819050919050565b6000819050919050565b6000613c87613c82613c7d84613c58565b613c62565b612d64565b9050919050565b613c9781613c6c565b82525050565b600060a082019050613cb26000830188613323565b613cbf6020830187613323565b613ccc6040830186613323565b613cd960608301856136fd565b613ce66080830184613c8e565b9695505050505050565b60008060408385031215613d0757613d06612cfc565b5b6000613d158582860161334d565b9250506020613d268582860161334d565b9150509250929050565b60008060408385031215613d4757613d46612cfc565b5b6000613d5585828601612d85565b925050602083013567ffffffffffffffff811115613d7657613d75612d01565b5b613d8285828601612eb2565b9150509250929050565b7f6f6f000000000000000000000000000000000000000000000000000000000000600082015250565b6000613dc2600283612f63565b9150613dcd82613d8c565b602082019050919050565b60006020820190508181036000830152613df181613db5565b9050919050565b7f696e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000613e2e601483612f63565b9150613e3982613df8565b602082019050919050565b60006020820190508181036000830152613e5d81613e21565b9050919050565b600081905092915050565b50565b6000613e7f600083613e64565b9150613e8a82613e6f565b600082019050919050565b6000613ea082613e72565b9150819050919050565b7f73656e64206661696c6564000000000000000000000000000000000000000000600082015250565b6000613ee0600b83612f63565b9150613eeb82613eaa565b602082019050919050565b60006020820190508181036000830152613f0f81613ed3565b9050919050565b6000613f29613f24846137d1565b612e15565b90508083825260208201905060208402830185811115613f4c57613f4b61301b565b5b835b81811015613f755780613f618882613160565b845260208401935050602081019050613f4e565b5050509392505050565b600082601f830112613f9457613f93612d9a565b5b8135613fa4848260208601613f16565b91505092915050565b6000613fc0613fbb846138a9565b612e15565b90508083825260208201905060208402830185811115613fe357613fe261301b565b5b835b8181101561402a57803567ffffffffffffffff81111561400857614007612d9a565b5b8086016140158982612eb2565b85526020850194505050602081019050613fe5565b5050509392505050565b600082601f83011261404957614048612d9a565b5b8135614059848260208601613fad565b91505092915050565b60008135905061407181613a26565b92915050565b600061408a614085846139fa565b612e15565b905080838252602082019050602084028301858111156140ad576140ac61301b565b5b835b818110156140d657806140c28882614062565b8452602084019350506020810190506140af565b5050509392505050565b600082601f8301126140f5576140f4612d9a565b5b8135614105848260208601614077565b91505092915050565b6000806000806080858703121561412857614127612cfc565b5b600085013567ffffffffffffffff81111561414657614145612d01565b5b61415287828801613f7f565b945050602085013567ffffffffffffffff81111561417357614172612d01565b5b61417f87828801614034565b935050604085013567ffffffffffffffff8111156141a05761419f612d01565b5b6141ac878288016140e0565b92505060606141bd87828801612d85565b91505092959194509250565b7f6e70000000000000000000000000000000000000000000000000000000000000600082015250565b60006141ff600283612f63565b915061420a826141c9565b602082019050919050565b6000602082019050818103600083015261422e816141f2565b9050919050565b7f6e72000000000000000000000000000000000000000000000000000000000000600082015250565b600061426b600283612f63565b915061427682614235565b602082019050919050565b6000602082019050818103600083015261429a8161425e565b9050919050565b6142aa8161365e565b82525050565b600082825260208201905092915050565b60006142cc82613514565b6142d681856142b0565b93506142e6818560208601613530565b6142ef81612da4565b840191505092915050565b600060408201905061430f60008301856142a1565b818103602083015261432181846142c1565b90509392505050565b60008115159050919050565b61433f8161432a565b811461434a57600080fd5b50565b60008151905061435c81614336565b92915050565b60006020828403121561437857614377612cfc565b5b60006143868482850161434d565b91505092915050565b60006020820190506143a460008301846142a1565b92915050565b6000602082840312156143c0576143bf612cfc565b5b60006143ce848285016137fd565b91505092915050565b600060208201905081810360008301526143f181846142c1565b905092915050565b600060a0820190508181036000830152614413818861348a565b9050818103602083015261442781876135bd565b9050818103604083015261443b818661369f565b905061444a60608301856136fd565b6144576080830184613323565b9695505050505050565b600061446c82613514565b6144768185613e64565b9350614486818560208601613530565b80840191505092915050565b600061449e8284614461565b915081905092915050565b600081519050919050565b60006144bf826144a9565b6144c98185612f63565b93506144d9818560208601613530565b6144e281612da4565b840191505092915050565b6000602082019050818103600083015261450781846144b4565b905092915050565b60006060820190506145246000830186613323565b61453160208301856136fd565b818103604083015261454381846142c1565b9050949350505050565b60006040820190506145626000830185613323565b61456f60208301846136fd565b9392505050565b6000806040838503121561458d5761458c612cfc565b5b600061459b8582860161434d565b92505060206145ac858286016137fd565b9150509250929050565b60006040820190506145cb6000830185613323565b6145d86020830184613323565b9392505050565b6000806000606084860312156145f8576145f7612cfc565b5b600061460686828701612d4f565b935050602061461786828701612d4f565b925050604084013567ffffffffffffffff81111561463857614637612d01565b5b61464486828701612eb2565b9150509250925092565b600061465982612fe0565b91507f8000000000000000000000000000000000000000000000000000000000000000820361468b5761468a613215565b5b816000039050919050565b6000602082840312156146ac576146ab612cfc565b5b60006146ba84828501612d4f565b91505092915050565b7f736c6963655f6f766572666c6f77000000000000000000000000000000000000600082015250565b60006146f9600e83612f63565b9150614704826146c3565b602082019050919050565b60006020820190508181036000830152614728816146ec565b9050919050565b7f736c6963655f6f75744f66426f756e6473000000000000000000000000000000600082015250565b6000614765601183612f63565b91506147708261472f565b602082019050919050565b6000602082019050818103600083015261479481614758565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147d582612d64565b91506147e083612d64565b9250826147f0576147ef61479b565b5b828204905092915050565b600067ffffffffffffffff82111561481657614815612db5565b5b61481f82612da4565b9050602081019050919050565b600061483f61483a846147fb565b612e15565b90508281526020810184848401111561485b5761485a612d9f565b5b614866848285613530565b509392505050565b600082601f83011261488357614882612d9a565b5b815161489384826020860161482c565b91505092915050565b6000602082840312156148b2576148b1612cfc565b5b600082015167ffffffffffffffff8111156148d0576148cf612d01565b5b6148dc8482850161486e565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000614941602a83612f63565b915061494c826148e5565b604082019050919050565b6000602082019050818103600083015261497081614934565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b60006149d3602683612f63565b91506149de82614977565b604082019050919050565b60006020820190508181036000830152614a02816149c6565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000614a3f601d83612f63565b9150614a4a82614a09565b602082019050919050565b60006020820190508181036000830152614a6e81614a32565b905091905056fea26469706673582212204c5b0338998333fa04b48f7018e3d60a16ea345c63d8bcd0e2f5ba21ac7e123964736f6c634300080d0033000000000000000000000000dae6dd9ad7093ec747fbba15e2592bac9f12b881000000000000000000000000c7e31308c0999935b8538d56632373f26c1072c3