@towns-protocol/generated 0.0.452 → 0.0.453

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- ae3594372429ce3076e8ce745bc57168f0479284:1ddd38ad39d7c07327fc4ca5b7aa5f898bf3c997
1
+ 9740c30504d46aa0dcd10c60a702185a1871166c:1ddd38ad39d7c07327fc4ca5b7aa5f898bf3c997
@@ -1131,6 +1131,31 @@
1131
1131
  ],
1132
1132
  "anonymous": false
1133
1133
  },
1134
+ {
1135
+ "type": "event",
1136
+ "name": "MembershipPaid",
1137
+ "inputs": [
1138
+ {
1139
+ "name": "currency",
1140
+ "type": "address",
1141
+ "indexed": true,
1142
+ "internalType": "address"
1143
+ },
1144
+ {
1145
+ "name": "price",
1146
+ "type": "uint256",
1147
+ "indexed": false,
1148
+ "internalType": "uint256"
1149
+ },
1150
+ {
1151
+ "name": "protocolFee",
1152
+ "type": "uint256",
1153
+ "indexed": false,
1154
+ "internalType": "uint256"
1155
+ }
1156
+ ],
1157
+ "anonymous": false
1158
+ },
1134
1159
  {
1135
1160
  "type": "event",
1136
1161
  "name": "MembershipPriceUpdated",
@@ -1131,6 +1131,31 @@ export default [
1131
1131
  ],
1132
1132
  "anonymous": false
1133
1133
  },
1134
+ {
1135
+ "type": "event",
1136
+ "name": "MembershipPaid",
1137
+ "inputs": [
1138
+ {
1139
+ "name": "currency",
1140
+ "type": "address",
1141
+ "indexed": true,
1142
+ "internalType": "address"
1143
+ },
1144
+ {
1145
+ "name": "price",
1146
+ "type": "uint256",
1147
+ "indexed": false,
1148
+ "internalType": "uint256"
1149
+ },
1150
+ {
1151
+ "name": "protocolFee",
1152
+ "type": "uint256",
1153
+ "indexed": false,
1154
+ "internalType": "uint256"
1155
+ }
1156
+ ],
1157
+ "anonymous": false
1158
+ },
1134
1159
  {
1135
1160
  "type": "event",
1136
1161
  "name": "MembershipPriceUpdated",
@@ -243,6 +243,11 @@
243
243
  "name": "lastKnownExpiresAt",
244
244
  "type": "uint256",
245
245
  "internalType": "uint256"
246
+ },
247
+ {
248
+ "name": "lastKnownCurrency",
249
+ "type": "address",
250
+ "internalType": "address"
246
251
  }
247
252
  ]
248
253
  }
@@ -1074,16 +1079,6 @@
1074
1079
  "name": "SubscriptionModule__InactiveSubscription",
1075
1080
  "inputs": []
1076
1081
  },
1077
- {
1078
- "type": "error",
1079
- "name": "SubscriptionModule__InsufficientBalance",
1080
- "inputs": []
1081
- },
1082
- {
1083
- "type": "error",
1084
- "name": "SubscriptionModule__InvalidAddress",
1085
- "inputs": []
1086
- },
1087
1082
  {
1088
1083
  "type": "error",
1089
1084
  "name": "SubscriptionModule__InvalidCaller",
@@ -1124,26 +1119,11 @@
1124
1119
  "name": "SubscriptionModule__NotSupported",
1125
1120
  "inputs": []
1126
1121
  },
1127
- {
1128
- "type": "error",
1129
- "name": "SubscriptionModule__RenewalFailed",
1130
- "inputs": []
1131
- },
1132
- {
1133
- "type": "error",
1134
- "name": "SubscriptionModule__RenewalNotDue",
1135
- "inputs": []
1136
- },
1137
1122
  {
1138
1123
  "type": "error",
1139
1124
  "name": "SubscriptionModule__SubscriptionAlreadyInstalled",
1140
1125
  "inputs": []
1141
1126
  },
1142
- {
1143
- "type": "error",
1144
- "name": "SubscriptionModule__SubscriptionNotInstalled",
1145
- "inputs": []
1146
- },
1147
1127
  {
1148
1128
  "type": "error",
1149
1129
  "name": "UnexpectedDataPassed",
@@ -243,6 +243,11 @@ export default [
243
243
  "name": "lastKnownExpiresAt",
244
244
  "type": "uint256",
245
245
  "internalType": "uint256"
246
+ },
247
+ {
248
+ "name": "lastKnownCurrency",
249
+ "type": "address",
250
+ "internalType": "address"
246
251
  }
247
252
  ]
248
253
  }
@@ -1074,16 +1079,6 @@ export default [
1074
1079
  "name": "SubscriptionModule__InactiveSubscription",
1075
1080
  "inputs": []
1076
1081
  },
1077
- {
1078
- "type": "error",
1079
- "name": "SubscriptionModule__InsufficientBalance",
1080
- "inputs": []
1081
- },
1082
- {
1083
- "type": "error",
1084
- "name": "SubscriptionModule__InvalidAddress",
1085
- "inputs": []
1086
- },
1087
1082
  {
1088
1083
  "type": "error",
1089
1084
  "name": "SubscriptionModule__InvalidCaller",
@@ -1124,26 +1119,11 @@ export default [
1124
1119
  "name": "SubscriptionModule__NotSupported",
1125
1120
  "inputs": []
1126
1121
  },
1127
- {
1128
- "type": "error",
1129
- "name": "SubscriptionModule__RenewalFailed",
1130
- "inputs": []
1131
- },
1132
- {
1133
- "type": "error",
1134
- "name": "SubscriptionModule__RenewalNotDue",
1135
- "inputs": []
1136
- },
1137
1122
  {
1138
1123
  "type": "error",
1139
1124
  "name": "SubscriptionModule__SubscriptionAlreadyInstalled",
1140
1125
  "inputs": []
1141
1126
  },
1142
- {
1143
- "type": "error",
1144
- "name": "SubscriptionModule__SubscriptionNotInstalled",
1145
- "inputs": []
1146
- },
1147
1127
  {
1148
1128
  "type": "error",
1149
1129
  "name": "UnexpectedDataPassed",
@@ -356,6 +356,7 @@ export interface MembershipFacetInterface extends utils.Interface {
356
356
  "MembershipFeeRecipientUpdated(address)": EventFragment;
357
357
  "MembershipFreeAllocationUpdated(uint256)": EventFragment;
358
358
  "MembershipLimitUpdated(uint256)": EventFragment;
359
+ "MembershipPaid(address,uint256,uint256)": EventFragment;
359
360
  "MembershipPriceUpdated(uint256)": EventFragment;
360
361
  "MembershipTokenIssued(address,uint256)": EventFragment;
361
362
  "MembershipTokenRejected(address)": EventFragment;
@@ -423,6 +424,7 @@ export interface MembershipFacetInterface extends utils.Interface {
423
424
  nameOrSignatureOrTopic: "MembershipFreeAllocationUpdated"
424
425
  ): EventFragment;
425
426
  getEvent(nameOrSignatureOrTopic: "MembershipLimitUpdated"): EventFragment;
427
+ getEvent(nameOrSignatureOrTopic: "MembershipPaid"): EventFragment;
426
428
  getEvent(nameOrSignatureOrTopic: "MembershipPriceUpdated"): EventFragment;
427
429
  getEvent(nameOrSignatureOrTopic: "MembershipTokenIssued"): EventFragment;
428
430
  getEvent(nameOrSignatureOrTopic: "MembershipTokenRejected"): EventFragment;
@@ -822,6 +824,18 @@ export type MembershipLimitUpdatedEvent = TypedEvent<
822
824
  export type MembershipLimitUpdatedEventFilter =
823
825
  TypedEventFilter<MembershipLimitUpdatedEvent>;
824
826
 
827
+ export interface MembershipPaidEventObject {
828
+ currency: string;
829
+ price: BigNumber;
830
+ protocolFee: BigNumber;
831
+ }
832
+ export type MembershipPaidEvent = TypedEvent<
833
+ [string, BigNumber, BigNumber],
834
+ MembershipPaidEventObject
835
+ >;
836
+
837
+ export type MembershipPaidEventFilter = TypedEventFilter<MembershipPaidEvent>;
838
+
825
839
  export interface MembershipPriceUpdatedEventObject {
826
840
  price: BigNumber;
827
841
  }
@@ -1707,6 +1721,17 @@ export interface MembershipFacet extends BaseContract {
1707
1721
  limit?: BigNumberish | null
1708
1722
  ): MembershipLimitUpdatedEventFilter;
1709
1723
 
1724
+ "MembershipPaid(address,uint256,uint256)"(
1725
+ currency?: string | null,
1726
+ price?: null,
1727
+ protocolFee?: null
1728
+ ): MembershipPaidEventFilter;
1729
+ MembershipPaid(
1730
+ currency?: string | null,
1731
+ price?: null,
1732
+ protocolFee?: null
1733
+ ): MembershipPaidEventFilter;
1734
+
1710
1735
  "MembershipPriceUpdated(uint256)"(
1711
1736
  price?: BigNumberish | null
1712
1737
  ): MembershipPriceUpdatedEventFilter;
@@ -37,6 +37,7 @@ export type SubscriptionStruct = {
37
37
  duration: BigNumberish;
38
38
  lastKnownRenewalPrice: BigNumberish;
39
39
  lastKnownExpiresAt: BigNumberish;
40
+ lastKnownCurrency: string;
40
41
  };
41
42
 
42
43
  export type SubscriptionStructOutput = [
@@ -49,7 +50,8 @@ export type SubscriptionStructOutput = [
49
50
  boolean,
50
51
  BigNumber,
51
52
  BigNumber,
52
- BigNumber
53
+ BigNumber,
54
+ string
53
55
  ] & {
54
56
  tokenId: BigNumber;
55
57
  spent: BigNumber;
@@ -61,6 +63,7 @@ export type SubscriptionStructOutput = [
61
63
  duration: BigNumber;
62
64
  lastKnownRenewalPrice: BigNumber;
63
65
  lastKnownExpiresAt: BigNumber;
66
+ lastKnownCurrency: string;
64
67
  };
65
68
 
66
69
  export type PackedUserOperationStruct = {
@@ -1141,6 +1141,31 @@ const _abi = [
1141
1141
  ],
1142
1142
  anonymous: false,
1143
1143
  },
1144
+ {
1145
+ type: "event",
1146
+ name: "MembershipPaid",
1147
+ inputs: [
1148
+ {
1149
+ name: "currency",
1150
+ type: "address",
1151
+ indexed: true,
1152
+ internalType: "address",
1153
+ },
1154
+ {
1155
+ name: "price",
1156
+ type: "uint256",
1157
+ indexed: false,
1158
+ internalType: "uint256",
1159
+ },
1160
+ {
1161
+ name: "protocolFee",
1162
+ type: "uint256",
1163
+ indexed: false,
1164
+ internalType: "uint256",
1165
+ },
1166
+ ],
1167
+ anonymous: false,
1168
+ },
1144
1169
  {
1145
1170
  type: "event",
1146
1171
  name: "MembershipPriceUpdated",
@@ -2332,7 +2357,7 @@ const _abi = [
2332
2357
  ] as const;
2333
2358
 
2334
2359
  const _bytecode =
2335
- "0x6080604052348015600e575f5ffd5b5060156019565b60bd565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef520008054640100000000900460ff16156064576040516366008a2d60e01b815260040160405180910390fd5b805463ffffffff908116101560ba57805463ffffffff191663ffffffff90811782556040519081527fe9c9b456cb2994b80aeef036cf59d26e9617df80f816a6ee5a5b4166e07e2f5c9060200160405180910390a15b50565b6155cd806100ca5f395ff3fe608060405260043610610178575f3560e01c806379dda585116100d157806393b13cb71161007c578063a5a4103111610057578063a5a41031146103f5578063df9a9fe614610409578063e847abdd14610428575f5ffd5b806393b13cb7146103a157806395d600c8146103c257806397fb7c1e146103d6575f5ffd5b80638120f0ba116100ac5780638120f0ba1461034257806383f3f0dc1461036f5780638c625b061461038e575f5ffd5b806379dda585146102fc5780637c9669ac146103105780637d0567c414610323575f5ffd5b80635803909f11610131578063686f76841161010c578063686f7684146102b657806369d5f38a146102c9578063706b8e09146102e8575f5ffd5b80635803909f1461023f5780635becd24a1461025e578063657e45e81461027d575f5ffd5b806317c957091161016157806317c95709146101c4578063280a47c7146102185780633e9491a21461022b575f5ffd5b80630ef1be5f1461017c5780631278076a1461019d575b5f5ffd5b348015610187575f5ffd5b5061019b6101963660046148fe565b61043c565b005b3480156101a8575f5ffd5b506101b16104f1565b6040519081526020015b60405180910390f35b3480156101cf575f5ffd5b506101b16101de36600461493d565b5f9081527f4775a23600034fdd9f073b224f794d51a58b35ba663a9602623ba7a5c09cce00602052604090205467ffffffffffffffff1690565b61019b610226366004614954565b610566565b348015610236575f5ffd5b506101b161063c565b34801561024a575f5ffd5b506101b161025936600461493d565b6106a6565b348015610269575f5ffd5b5061019b61027836600461493d565b61071e565b348015610288575f5ffd5b50610291610898565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bb565b61019b6102c4366004614b81565b6108a6565b3480156102d4575f5ffd5b5061019b6102e336600461493d565b6108ea565b3480156102f3575f5ffd5b506101b16109f9565b348015610307575f5ffd5b50610291610a02565b61019b61031e36600461493d565b610a41565b34801561032e575f5ffd5b5061019b61033d366004614bce565b610a84565b34801561034d575f5ffd5b50610356610b3e565b60405167ffffffffffffffff90911681526020016101bb565b34801561037a575f5ffd5b5061019b610389366004614bfe565b610b47565b61019b61039c366004614bce565b610bc1565b3480156103ac575f5ffd5b506103b5610bf4565b6040516101bb9190614c65565b3480156103cd575f5ffd5b506101b1610bfe565b3480156103e1575f5ffd5b5061019b6103f036600461493d565b610c27565b348015610400575f5ffd5b506101b1610d11565b348015610414575f5ffd5b5061019b610423366004614bce565b610d81565b348015610433575f5ffd5b50610291610e5a565b610444610e99565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104af576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6104ed82828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610f5392505050565b5050565b5f5f6105466105417f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b610f7e565b9050805f03610556575f91505090565b61055f8161108c565b5092915050565b3068929eee149b4bd2126854036105845763ab143c065f526004601cfd5b3068929eee149b4bd21268555f8360018111156105a3576105a3614c77565b036105c6575f6105b582840184614bce565b90506105c0816110aa565b5061062b565b60018360018111156105da576105da614c77565b03610602575f806105ed83850185614b81565b915091506105fb8282611190565b505061062b565b61062b7f3be01969000000000000000000000000000000000000000000000000000000006112b8565b3868929eee149b4bd2126855505050565b5f5f6106466112c0565b905073ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1461069f5761069973ffffffffffffffffffffffffffffffffffffffff821630611317565b91505090565b4791505090565b5f5f6106fc836106f77f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b61134a565b9050805f0361070d57505f92915050565b6107168161108c565b509392505050565b610726610e99565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461078c576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024016104a6565b5f6107b57fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6035490565b905080158015906107c557508082115b156107f3576107f37fc3983b91000000000000000000000000000000000000000000000000000000006112b8565b6107fc826113c8565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60782905560405182907fab14a23e88fb272313490d4f20d63098e64fd38304c0e07a377db98c2b39b92f905f90a25050565b5f6108a16112c0565b905090565b3068929eee149b4bd2126854036108c45763ab143c065f526004601cfd5b3068929eee149b4bd21268556108da8282611190565b3868929eee149b4bd21268555050565b6108f2610e99565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610958576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024016104a6565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb608546040517f91b7f5ed0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff909116906391b7f5ed906024015f604051808303815f87803b1580156109e0575f5ffd5b505af11580156109f2573d5f5f3e3d5ffd5b5050505050565b5f6108a161146c565b5f6108a17fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff1690565b3068929eee149b4bd212685403610a5f5763ab143c065f526004601cfd5b3068929eee149b4bd2126855610a753382611537565b3868929eee149b4bd212685550565b610a8c610e99565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610af2576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024016104a6565b610afb81611740565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f14b7cb0621729ad169b573c8b04f2ba383bf36b3724f2e2809df566f45df16ec905f90a250565b5f6108a1611956565b610b4f610e99565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bb5576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024016104a6565b610bbe81611a16565b50565b3068929eee149b4bd212685403610bdf5763ab143c065f526004601cfd5b3068929eee149b4bd2126855610a75816110aa565b60606108a1611a91565b5f6108a17fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6035490565b610c2f610e99565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c95576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024016104a6565b610ce981610ce47f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b611b43565b610bbe817fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60355565b5f5f610d616105417f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b9050805f03610d71575f91505090565b610d7a8161108c565b9392505050565b610d89610e99565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610def576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024016104a6565b610df881611b74565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905550565b5f6108a17fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6085473ffffffffffffffffffffffffffffffffffffffff1690565b5f807fd2f24d4f172e4e84e48e7c4125b6e904c29e5eba33ad4938fee51dd5dbd4b600805460018201546040517f6352211e000000000000000000000000000000000000000000000000000000008152600481019190915291925073ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa158015610f2f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106999190614cb4565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60c6104ed8282614d5e565b5f5f610fbe7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6085473ffffffffffffffffffffffffffffffffffffffff1690565b905073ffffffffffffffffffffffffffffffffffffffff8116610fe357505f92915050565b5f610fec61146c565b6040517f5cf4ee91000000000000000000000000000000000000000000000000000000008152600481018290526024810186905290915073ffffffffffffffffffffffffffffffffffffffff831690635cf4ee91906044015b602060405180830381865afa158015611060573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110849190614e75565b949350505050565b5f5f61109783611cad565b90506110a38184614eb9565b9150915091565b6110b381611da9565b5f6110bc611e9f565b90505f6110c76112c0565b90505f6110d8828460200151611f65565b90505f61111f856111197f8c625b06d047a4c1ca46cdab06b7e14ce79b486f06c67a1b220fa942669ca49b338960405180602001604052805f81525061202a565b8461205c565b90505f5f61113387338589602001516121f3565b915091508061118757811561117d57856040015161115b5761115683885f61226e565b611165565b6111658387612290565b61116f83886123d7565b61117887612427565b611187565b6111878388612536565b50505050505050565b61119982611da9565b5f6111a2611e9f565b90505f6111ad6112c0565b90505f6111be828460200151611f65565b90506111ca858561258d565b5f846040516020016111dc9190614ecc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290507f686f7684000000000000000000000000000000000000000000000000000000005f6112448861123e8433838861202a565b8661205c565b90505f5f6112588a33858b602001516121f3565b91509150806112ac5781156112a25787604001516112805761127b838b5f61226e565b61128a565b61128a8389612612565b611294838b6123d7565b61129d8a612427565b6112ac565b6112ac838b612536565b50505050505050505050565b805f5260045ffd5b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff1680611314575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5b90565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b5f8281527fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60960205260408120547fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60090826113a385610f7e565b9050815f036113b65792506113c2915050565b81811890821102189150505b92915050565b6113d0610a02565b73ffffffffffffffffffffffffffffffffffffffff16632cbb9d136040518163ffffffff1660e01b8152600401602060405180830381865afa158015611418573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061143c9190614e75565b811115610bbe57610bbe7fc3983b91000000000000000000000000000000000000000000000000000000006112b8565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60d545f907fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6009060ff16156114c35760070154919050565b6114cb610a02565b73ffffffffffffffffffffffffffffffffffffffff16632cbb9d136040518163ffffffff1660e01b8152600401602060405180830381865afa158015611513573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106999190614e75565b5f611541826127a5565b905073ffffffffffffffffffffffffffffffffffffffff8116611587576115877f5fbd5717000000000000000000000000000000000000000000000000000000006112b8565b5f611590611956565b67ffffffffffffffff1690505f6115ec846106f77f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b90505f6115f76112c0565b9050815f036116325761162073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee3088346127b0565b61162a8584612802565b505050505050565b5f61163c8361108c565b5090507fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff8316016116dd57348111156116ad576116ad7f34a7a93d000000000000000000000000000000000000000000000000000000006112b8565b6116b78284612930565b505f6116c38234614f26565b905080156116d7576116d783308a846127b0565b5061172c565b3415611715576040517fbf39a02400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117208288836129bb565b61172a8284612930565b505b6117368582612a9f565b6111878685612802565b73ffffffffffffffffffffffffffffffffffffffff8116158061178c575073ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b6118f057604080517f4645455f545950452e4d454d4245525348495000000000000000000000000000602080830191909152606084901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016603383015282516027818403018152604790920190925280519101205f6118407fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1663146516df836040518263ffffffff1660e01b815260040161187a91815260200190565b60e060405180830381865afa158015611895573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118b99190614f86565b905080608001516118ed576118ed7f212be89d000000000000000000000000000000000000000000000000000000006112b8565b50505b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065474010000000000000000000000000000000000000000900467ffffffffffffffff165f819003611314576119aa610a02565b73ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119f2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a19190615026565b611a1f81612b3d565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb606805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60607fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600600c018054611ac290614ccf565b80601f0160208091040260200160405190810160405280929190818152602001828054611aee90614ccf565b8015611b395780601f10611b1057610100808354040283529160200191611b39565b820191905f5260205f20905b815481529060010190602001808311611b1c57829003601f168201915b5050505050905090565b808210156104ed576104ed7fccc9aa2e000000000000000000000000000000000000000000000000000000006112b8565b73ffffffffffffffffffffffffffffffffffffffff8116611bb857611bb87f0e88bf4b000000000000000000000000000000000000000000000000000000006112b8565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff166040517f8df80bd600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301529190911690638df80bd690602401602060405180830381865afa158015611c5c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c809190615041565b610bbe57610bbe7f0e88bf4b000000000000000000000000000000000000000000000000000000006112b8565b5f5f611cbf611cba6112c0565b612c33565b9050611cff7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff1690565b6040517fecad870d000000000000000000000000000000000000000000000000000000008152600481018390525f602482018190526044820186905260806064830152608482015273ffffffffffffffffffffffffffffffffffffffff919091169063ecad870d9060a401602060405180830381865afa158015611d85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7a9190614e75565b73ffffffffffffffffffffffffffffffffffffffff8116611ded57611ded7f5fbd5717000000000000000000000000000000000000000000000000000000006112b8565b5f611e167fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6035490565b90508015801590611e71575080611e6e7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b10155b156104ed576104ed7f7efcdb49000000000000000000000000000000000000000000000000000000006112b8565b611ec260405180606001604052805f81526020015f81526020015f151581525090565b5f611f0e7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b90505f611f1a82610f7e565b90505f611f2561146c565b9050815f03611f345750505090565b81845282811115611f455750505090565b5f611f4f8361108c565b5060016040870152602086015250929392505050565b5f7fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff841601611fdb5781341015611fd457611fd47fb1296a8a000000000000000000000000000000000000000000000000000000006112b8565b50346113c2565b3415612013576040517fbf39a02400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8115612024576120248333846129bb565b50919050565b606084848484604051602001612043949392919061505a565b6040516020818303038152906040529050949350505050565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660208201524360348201525f90819060540160405160208183030381529060405280519060200120905061213b8161210f83886120c286612d0e565b6040805160208082019590955273ffffffffffffffffffffffffffffffffffffffff9390931683820152606080840192909252805180840390920182526080909201909152805191012090565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e026020526040812080549294507f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0092909190829061219c90614ccf565b905011156121cd576121cd7ff82e65c3000000000000000000000000000000000000000000000000000000006112b8565b806121d88782614d5e565b5084156121e9576121e98486612d54565b5050509392505050565b5f5f5f6122346040518060400160405280600981526020017f4a6f696e53706163650000000000000000000000000000000000000000000000815250612dbc565b90506122408188612f54565b156122525760015f9250925050612265565b61225f818888888861316f565b92509250505b94509492505050565b61227883826132db565b61228183613339565b61228b8282612a9f565b505050565b5f5f61229b84613391565b80546122a690614ccf565b80601f01602080910402602001604051908101604052809291908181526020018280546122d290614ccf565b801561231d5780601f106122f45761010080835404028352916020019161231d565b820191905f5260205f20905b81548152906001019060200180831161230057829003601f168201915b5050505050806020019051810190612335919061513b565b50919350909150507fffffffff0000000000000000000000000000000000000000000000000000000082167f8c625b0600000000000000000000000000000000000000000000000000000000146123af576123af7fda6153bd000000000000000000000000000000000000000000000000000000006112b8565b6123c16123ba6112c0565b8451612930565b506123d18482856020015161226e565b50505050565b5f8281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e016020526040902054801561228b5761241483826132db565b61228b61241f6112c0565b3084846127b0565b5f6124507f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df005490565b90506124d4816124a46105417f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b5f9182527fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb609602052604090912055565b6124df8260016133e4565b6124f0816124eb611956565b612802565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907f2f40b0474996b72a4251e00fb9170cdd960deea1dc749772cbbab61395b9b576905f90a35050565b61253f82613339565b61254982826123d7565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f86fd446d5c04e892d58b448a924dcd9c3ece3a5e0d2960b8c35cd475a5595a1f905f90a25050565b8173ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff1614806125e45750602081015173ffffffffffffffffffffffffffffffffffffffff1633145b156104ed576104ed7f5fbd5717000000000000000000000000000000000000000000000000000000006112b8565b5f5f5f5f61261f86613391565b805461262a90614ccf565b80601f016020809104026020016040519081016040528092919081815260200182805461265690614ccf565b80156126a15780601f10612678576101008083540402835291602001916126a1565b820191905f5260205f20905b81548152906001019060200180831161268457829003601f168201915b50505050508060200190518101906126b9919061513b565b929650909450925090507fffffffff0000000000000000000000000000000000000000000000000000000084167f686f76840000000000000000000000000000000000000000000000000000000014612735576127357fda6153bd000000000000000000000000000000000000000000000000000000006112b8565b5f8180602001905181019061274a91906151bf565b90505f6127556112c0565b905061276481885f0151612930565b50815187516127749183916133fd565b61278c8186846020015185604001518b5f0151613520565b61279b8885896020015161226e565b5050505050505050565b5f6113c28183613620565b80156123d15773ffffffffffffffffffffffffffffffffffffffff841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146127f8576127f38484848461362b565b6123d1565b6123d182826136bf565b5f8281527f4775a23600034fdd9f073b224f794d51a58b35ba663a9602623ba7a5c09cce00602081905260409091205467ffffffffffffffff16801580159061284857505f5b15612882576040517ff7d2131a000000000000000000000000000000000000000000000000000000008152600481018590526024016104a6565b5f428267ffffffffffffffff1611156128a65761289f8483615267565b90506128b3565b6128b08442615267565b90505b5f858152602084815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8516908117909155915191825286917f2ec2be2c4b90c2cf13ecb6751a24daed6bb741ae5ed3f7371aabf9402f6d62e8910160405180910390a25050505050565b5f61293a82611cad565b90506113c28330612949610a02565b73ffffffffffffffffffffffffffffffffffffffff16634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612991573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129b59190614cb4565b846127b0565b7fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff8416016129fd57505050565b5f612a1e73ffffffffffffffffffffffffffffffffffffffff851630611317565b9050612a4273ffffffffffffffffffffffffffffffffffffffff85168430856136df565b5f612a6373ffffffffffffffffffffffffffffffffffffffff861630611317565b905082612a708383614f26565b10156109f2576109f27fb1296a8a000000000000000000000000000000000000000000000000000000006112b8565b805f03612aaa575050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee612ac76112c0565b73ffffffffffffffffffffffffffffffffffffffff1614612ae6575050565b5f612aef613741565b90505f612b1e825f85604051602001612b0a91815260200190565b604051602081830303815290604052613814565b9050612b2b82858361386a565b6123d182612b37610e99565b8361386a565b5f612b46610a02565b73ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b8e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bb29190615026565b67ffffffffffffffff1690508167ffffffffffffffff165f03612bf857612bf87f82323d2e000000000000000000000000000000000000000000000000000000006112b8565b808267ffffffffffffffff1611156104ed576104ed7f82323d2e000000000000000000000000000000000000000000000000000000006112b8565b5f7fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff831601612c9857507f7bf182fc45d83735258e0907e7fbae2ced2b54cf5d36bf3f9c30097bec3e88f5919050565b604080517f4645455f545950452e4d454d4245525348495000000000000000000000000000602080830191909152606085901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016603383015282516027818403018152604790920190925280519101206113c2565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0060208190526040822080549083612d4983615287565b909155509392505050565b5f8281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e016020526040812080547f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0092849291612db2908490614eb9565b9091555050505050565b60605f612dc76138e9565b80519091505f8167ffffffffffffffff811115612de657612de66149c9565b604051908082528060200260200182016040528015612e4957816020015b612e366040518060a001604052805f8152602001606081526020015f1515815260200160608152602001606081525090565b815260200190600190039081612e045790505b50855160208701209091505f90815b84811015612f48575f5f5f5f612e868a8681518110612e7957612e796152be565b6020026020010151613914565b93509350935093505f5b8251811015612f385786838281518110612eac57612eac6152be565b60200260200101518051906020012003612f30576040518060a001604052808c8881518110612edd57612edd6152be565b60200260200101518152602001868152602001851515815260200184815260200183815250898981518110612f1457612f146152be565b602002602001018190525087612f2990615287565b9750612f38565b600101612e90565b5050505050806001019050612e58565b50508152949350505050565b5f5f612f5f83613a00565b90505f5b845181101561316557848181518110612f7e57612f7e6152be565b60200260200101516040015161315d575f5b858281518110612fa257612fa26152be565b6020026020010151608001515181101561315b575f868381518110612fc957612fc96152be565b6020026020010151608001518281518110612fe657612fe66152be565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16632e1b61e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015613039573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061305d9190615041565b15801561314057508073ffffffffffffffffffffffffffffffffffffffff16630cf0b5335f5f1b866040518060400160405280600981526020017f4a6f696e537061636500000000000000000000000000000000000000000000008152506040516020016130cb91906152eb565b6040516020818303038152906040526130e390615301565b6040518463ffffffff1660e01b815260040161310193929190615343565b602060405180830381865afa15801561311c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131409190615041565b156131525760019450505050506113c2565b50600101612f90565b505b600101612f63565b505f949350505050565b5f5f5f5f5b88518110156132cc5788818151811061318f5761318f6152be565b6020026020010151604001516132c4575f5b8982815181106131b3576131b36152be565b602002602001015160800151518110156132c2575f8a83815181106131da576131da6152be565b60200260200101516080015182815181106131f7576131f76152be565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16632e1b61e46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561324a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061326e9190615041565b156132b9576132b08a8a8a848f888151811061328c5761328c6152be565b60200260200101515f015161329f6112c0565b8a6132aa578d613c74565b5f613c74565b60019350600194505b506001016131a1565b505b600101613174565b505f9250509550959350505050565b5f8281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e016020526040812080547f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0092849291612db2908490614f26565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e02602052604090207f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e00906104ed905f61486f565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e02602052604081207f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0090610d7a565b6104ed828260405180602001604052805f815250613fbf565b73ffffffffffffffffffffffffffffffffffffffff821661341d57505050565b5f61345c7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f5cb4f54800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529190911690635cb4f54890602401608060405180830381865afa1580156134c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ec91906153ae565b905080604001515f036134ff5750505050565b5f61350e838360400151614087565b90506109f285308460200151846127b0565b815115613590575f613531836140d3565b604081015190915073ffffffffffffffffffffffffffffffffffffffff16158061355d57506020810151155b1561356857506109f2565b5f613577838360200151614087565b905061358987308460400151846127b0565b50506109f2565b73ffffffffffffffffffffffffffffffffffffffff8316156109f2578373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603156109f2575f6136128261360d7faca21cc4d2a125f3e0ae03aa135d42b2b9177631aca87599d42a68b47e9008015490565b614087565b905061162a863086846127b0565b5f610d7a838361417b565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603156123d15773ffffffffffffffffffffffffffffffffffffffff8316301461369e576127f373ffffffffffffffffffffffffffffffffffffffff85168484846136df565b6123d173ffffffffffffffffffffffffffffffffffffffff851683836142b6565b6104ed73ffffffffffffffffffffffffffffffffffffffff831682614309565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f51141661373357803d873b15171061373357637939f4245f526004601cfd5b505f60605260405250505050565b5f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600600601546040517f44ab66800000000000000000000000000000000000000000000000000000000081527f526976657241697264726f700000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116906344ab668090602401602060405180830381865afa1580156137f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a19190614cb4565b6040517fdc69fdde0000000000000000000000000000000000000000000000000000000081525f9073ffffffffffffffffffffffffffffffffffffffff85169063dc69fdde906110459086908690600401615428565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390528416906340c10f19906044015f604051808303815f87803b1580156138d7575f5ffd5b505af1158015611187573d5f5f3e3d5ffd5b60606108a17f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd01614322565b5f8181527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd03602052604081208054606092918391829190819061395690614ccf565b80601f016020809104026020016040519081016040528092919081815260200182805461398290614ccf565b80156139cd5780601f106139a4576101008083540402835291602001916139cd565b820191905f5260205f20905b8154815290600101906020018083116139b057829003601f168201915b5050505060018301549196505060ff1693506139eb6002820161432e565b92506139f681614405565b9150509193509193565b60605f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600600601546040517f02345b9800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015290911691505f9082906302345b98906024015f60405180830381865afa158015613a97573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613adc9190810190615450565b905080515f03613c4d576040517ff821039800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301525f919084169063f821039890602401602060405180830381865afa158015613b53573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b779190614cb4565b905073ffffffffffffffffffffffffffffffffffffffff811615613c4b576040517f02345b9800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015291955085918416906302345b98906024015f60405180830381865afa158015613c03573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613c489190810190615450565b91505b505b613c5681614414565b92506001835101835283604051526020604051016040525050919050565b73ffffffffffffffffffffffffffffffffffffffff8716613cb857613cb87f99ef0388000000000000000000000000000000000000000000000000000000006112b8565b73ffffffffffffffffffffffffffffffffffffffff8416613cfc57613cfc7f4bb7c205000000000000000000000000000000000000000000000000000000006112b8565b5f8581527f9075c515a635ba70c9696f31149324218d75cf00afe836c482e6473f38b19e016020526040902080547f9075c515a635ba70c9696f31149324218d75cf00afe836c482e6473f38b19e00919060ff16613dc25780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117815560038101805473ffffffffffffffffffffffffffffffffffffffff88167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790555b81546040805173ffffffffffffffffffffffffffffffffffffffff8c811660208301529181018a905260608101889052868216608082015260a081018690528a821660c08201529116905f9060e001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290507fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff871601613f08576040517f6fcc618800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690636fcc6188908790613ed5906002908690600401615504565b5f604051808303818588803b158015613eec575f5ffd5b505af1158015613efe573d5f5f3e3d5ffd5b5050505050613fb2565b8415613f2f57613f2f73ffffffffffffffffffffffffffffffffffffffff87168387614422565b6040517f6fcc618800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690636fcc618890613f84906002908590600401615504565b5f604051808303815f87803b158015613f9b575f5ffd5b505af1158015613fad573d5f5f3e3d5ffd5b505050505b5050505050505050505050565b613fc983836144b4565b73ffffffffffffffffffffffffffffffffffffffff83163b1561228b577f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00548281035b61401e5f868380600101945086614669565b614054576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81811061400c57817f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0054146109f2575f5ffd5b5f6127108211156140bc576140bc7f197f196200000000000000000000000000000000000000000000000000000000836147db565b6127106140c98385615515565b610d7a919061552c565b61410b6040518060600160405280606081526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5080516020808301919091205f9081527faca21cc4d2a125f3e0ae03aa135d42b2b9177631aca87599d42a68b47e9008028252604090819020815160608101835293845280549284019290925260019091015473ffffffffffffffffffffffffffffffffffffffff169082015290565b5f81831161428457505f8181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df046020526040812054907f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00907c01000000000000000000000000000000000000000000000000000000008316900361428257815f0361427c578054831061423b576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092015f8181526004840160205260409020549092909150811561423c575b506113c2565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f5114166142ff57803d853b1517106142ff576390b8ec185f526004601cfd5b505f603452505050565b5f385f3884865af16104ed5763b12d13eb5f526004601cfd5b60605f610d7a836147e7565b6060815f01805480602002602001604051908101604052809291908181526020015f905b828210156143fa578382905f5260205f2001805461436f90614ccf565b80601f016020809104026020016040519081016040528092919081815260200182805461439b90614ccf565b80156143e65780601f106143bd576101008083540402835291602001916143e6565b820191905f5260205f20905b8154815290600101906020018083116143c957829003601f168201915b505050505081526020019060010190614352565b505050509050919050565b60605f610d7a83600401614322565b60606113c261131483614840565b81601452806034526f095ea7b30000000000000000000000005f5260205f604460105f875af18060015f5114166142ff57803d853b1517106142ff575f6034526f095ea7b30000000000000000000000005f525f38604460105f885af1508160345260205f604460105f885af190508060015f5114166142ff57803d853b1517106142ff57633e3f8f735f526004601cfd5b7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00545f829003614510576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f8181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df056020908152604080832080546801000000000000000188020190558483527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146146075780835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f5fa46001016145d1565b50815f03614641576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df005550505050565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081525f9073ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906146c3903390899088908890600401615564565b6020604051808303815f875af192505050801561471b575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252614718918101906155b4565b60015b614790573d808015614748576040519150601f19603f3d011682016040523d82523d5f602084013e61474d565b606091505b5080515f03614788576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611084565b815f528060045260245ffd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561483457602002820191905f5260205f20905b815481526020019060010190808311614820575b50505050509050919050565b604051815160051b8101602001818084035b808201518252816020019150828203614852575060405250919050565b50805461487b90614ccf565b5f825580601f1061488a575050565b601f0160209004905f5260205f2090810190610bbe91905b808211156148b5575f81556001016148a2565b5090565b5f5f83601f8401126148c9575f5ffd5b50813567ffffffffffffffff8111156148e0575f5ffd5b6020830191508360208285010111156148f7575f5ffd5b9250929050565b5f5f6020838503121561490f575f5ffd5b823567ffffffffffffffff811115614925575f5ffd5b614931858286016148b9565b90969095509350505050565b5f6020828403121561494d575f5ffd5b5035919050565b5f5f5f60408486031215614966575f5ffd5b833560028110614974575f5ffd5b9250602084013567ffffffffffffffff81111561498f575f5ffd5b61499b868287016148b9565b9497909650939450505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610bbe575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715614a1957614a196149c9565b60405290565b60405160e0810167ffffffffffffffff81118282101715614a1957614a196149c9565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614a8957614a896149c9565b604052919050565b5f67ffffffffffffffff821115614aaa57614aaa6149c9565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f60608284031215614ae6575f5ffd5b614aee6149f6565b90508135614afb816149a8565b81526020820135614b0b816149a8565b6020820152604082013567ffffffffffffffff811115614b29575f5ffd5b8201601f81018413614b39575f5ffd5b8035614b4c614b4782614a91565b614a42565b818152856020838501011115614b60575f5ffd5b816020840160208301375f6020838301015280604085015250505092915050565b5f5f60408385031215614b92575f5ffd5b8235614b9d816149a8565b9150602083013567ffffffffffffffff811115614bb8575f5ffd5b614bc485828601614ad6565b9150509250929050565b5f60208284031215614bde575f5ffd5b8135610d7a816149a8565b67ffffffffffffffff81168114610bbe575f5ffd5b5f60208284031215614c0e575f5ffd5b8135610d7a81614be9565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610d7a6020830184614c19565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8051614caf816149a8565b919050565b5f60208284031215614cc4575f5ffd5b8151610d7a816149a8565b600181811c90821680614ce357607f821691505b602082108103612024577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b601f82111561228b57805f5260205f20601f840160051c81016020851015614d3f5750805b601f840160051c820191505b818110156109f2575f8155600101614d4b565b815167ffffffffffffffff811115614d7857614d786149c9565b614d8c81614d868454614ccf565b84614d1a565b6020601f821160018114614ddd575f8315614da75750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556109f2565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015614e2a5787850151825560209485019460019092019101614e0a565b5084821015614e6657868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215614e85575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156113c2576113c2614e8c565b6020815273ffffffffffffffffffffffffffffffffffffffff825116602082015273ffffffffffffffffffffffffffffffffffffffff60208301511660408201525f60408301516060808401526110846080840182614c19565b818103818111156113c2576113c2614e8c565b805161ffff81168114614caf575f5ffd5b805160038110614caf575f5ffd5b80518015158114614caf575f5ffd5b80516fffffffffffffffffffffffffffffffff81168114614caf575f5ffd5b5f60e0828403128015614f97575f5ffd5b50614fa0614a1f565b8251614fab816149a8565b8152602083015165ffffffffffff81168114614fc5575f5ffd5b6020820152614fd660408401614f39565b6040820152614fe760608401614f4a565b6060820152614ff860808401614f58565b608082015261500960a08401614f67565b60a082015261501a60c08401614ca4565b60c08201529392505050565b5f60208284031215615036575f5ffd5b8151610d7a81614be9565b5f60208284031215615051575f5ffd5b610d7a82614f58565b7fffffffff000000000000000000000000000000000000000000000000000000008516815273ffffffffffffffffffffffffffffffffffffffff8416602082015273ffffffffffffffffffffffffffffffffffffffff83166040820152608060608201525f6150cc6080830184614c19565b9695505050505050565b80517fffffffff0000000000000000000000000000000000000000000000000000000081168114614caf575f5ffd5b5f615112614b4784614a91565b9050828152838383011115615125575f5ffd5b8282602083015e5f602084830101529392505050565b5f5f5f5f6080858703121561514e575f5ffd5b615157856150d6565b93506020850151615167816149a8565b6040860151909350615178816149a8565b606086015190925067ffffffffffffffff811115615194575f5ffd5b8501601f810187136151a4575f5ffd5b6151b387825160208401615105565b91505092959194509250565b5f602082840312156151cf575f5ffd5b815167ffffffffffffffff8111156151e5575f5ffd5b8201606081850312156151f6575f5ffd5b6151fe6149f6565b8151615209816149a8565b81526020820151615219816149a8565b6020820152604082015167ffffffffffffffff811115615237575f5ffd5b80830192505084601f83011261524b575f5ffd5b61525a85835160208501615105565b6040820152949350505050565b67ffffffffffffffff81811683821601908111156113c2576113c2614e8c565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036152b7576152b7614e8c565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82518060208501845e5f920191825250919050565b80516020808301519190811015612024577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b8181101561539a57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101615366565b505060409390930193909352509392505050565b5f60808284031280156153bf575f5ffd5b506040516080810167ffffffffffffffff811182821017156153e3576153e36149c9565b60405282516153f1816149a8565b81526020830151615401816149a8565b60208201526040838101519082015261541c60608401614f58565b60608201529392505050565b5f6004841061543957615439614c77565b838252604060208301526110846040830184614c19565b5f60208284031215615460575f5ffd5b815167ffffffffffffffff811115615476575f5ffd5b8201601f81018413615486575f5ffd5b805167ffffffffffffffff8111156154a0576154a06149c9565b8060051b6154b060208201614a42565b918252602081840181019290810190878411156154cb575f5ffd5b6020850194505b838510156154f957845192506154e7836149a8565b828252602094850194909101906154d2565b979650505050505050565b5f6003841061543957615439614c77565b80820281158282048414176113c2576113c2614e8c565b5f8261555f577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff84166020820152826040820152608060608201525f6150cc6080830184614c19565b5f602082840312156155c4575f5ffd5b610d7a826150d656";
2360
+ "0x6080604052348015600e575f5ffd5b5060156019565b60bd565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef520008054640100000000900460ff16156064576040516366008a2d60e01b815260040160405180910390fd5b805463ffffffff908116101560ba57805463ffffffff191663ffffffff90811782556040519081527fe9c9b456cb2994b80aeef036cf59d26e9617df80f816a6ee5a5b4166e07e2f5c9060200160405180910390a15b50565b6158a8806100ca5f395ff3fe608060405260043610610178575f3560e01c806379dda585116100d157806393b13cb71161007c578063a5a4103111610057578063a5a41031146103f5578063df9a9fe614610409578063e847abdd14610428575f5ffd5b806393b13cb7146103a157806395d600c8146103c257806397fb7c1e146103d6575f5ffd5b80638120f0ba116100ac5780638120f0ba1461034257806383f3f0dc1461036f5780638c625b061461038e575f5ffd5b806379dda585146102fc5780637c9669ac146103105780637d0567c414610323575f5ffd5b80635803909f11610131578063686f76841161010c578063686f7684146102b657806369d5f38a146102c9578063706b8e09146102e8575f5ffd5b80635803909f1461023f5780635becd24a1461025e578063657e45e81461027d575f5ffd5b806317c957091161016157806317c95709146101c4578063280a47c7146102185780633e9491a21461022b575f5ffd5b80630ef1be5f1461017c5780631278076a1461019d575b5f5ffd5b348015610187575f5ffd5b5061019b610196366004614bcc565b61043c565b005b3480156101a8575f5ffd5b506101b16104f1565b6040519081526020015b60405180910390f35b3480156101cf575f5ffd5b506101b16101de366004614c0b565b5f9081527f4775a23600034fdd9f073b224f794d51a58b35ba663a9602623ba7a5c09cce00602052604090205467ffffffffffffffff1690565b61019b610226366004614c22565b610566565b348015610236575f5ffd5b506101b1610652565b34801561024a575f5ffd5b506101b1610259366004614c0b565b6106bc565b348015610269575f5ffd5b5061019b610278366004614c0b565b610734565b348015610288575f5ffd5b506102916108ae565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bb565b61019b6102c4366004614c97565b6108bc565b3480156102d4575f5ffd5b5061019b6102e3366004614c0b565b610900565b3480156102f3575f5ffd5b506101b1610a0f565b348015610307575f5ffd5b50610291610a18565b61019b61031e366004614c0b565b610a57565b34801561032e575f5ffd5b5061019b61033d366004614cea565b610a9a565b34801561034d575f5ffd5b50610356610b54565b60405167ffffffffffffffff90911681526020016101bb565b34801561037a575f5ffd5b5061019b610389366004614d1a565b610b5d565b61019b61039c366004614cea565b610bd7565b3480156103ac575f5ffd5b506103b5610c0a565b6040516101bb9190614d81565b3480156103cd575f5ffd5b506101b1610c14565b3480156103e1575f5ffd5b5061019b6103f0366004614c0b565b610c3d565b348015610400575f5ffd5b506101b1610d27565b348015610414575f5ffd5b5061019b610423366004614cea565b610d97565b348015610433575f5ffd5b50610291610e70565b610444610eaf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104af576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6104ed82828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610f6992505050565b5050565b5f5f6105466105417f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b610f94565b9050805f03610556575f91505090565b61055f816110a2565b5092915050565b3068929eee149b4bd2126854036105845763ab143c065f526004601cfd5b3068929eee149b4bd21268555f8360018111156105a3576105a3614d93565b036105cf5773ffffffffffffffffffffffffffffffffffffffff8235166105c9816110c0565b50610641565b60018360018111156105e3576105e3614d93565b036106185773ffffffffffffffffffffffffffffffffffffffff8235166020830135830161061182826111a6565b5050610641565b6106417f3be01969000000000000000000000000000000000000000000000000000000006112ce565b3868929eee149b4bd2126855505050565b5f5f61065c6112d6565b905073ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146106b5576106af73ffffffffffffffffffffffffffffffffffffffff82163061132d565b91505090565b4791505090565b5f5f6107128361070d7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b611360565b9050805f0361072357505f92915050565b61072c816110a2565b509392505050565b61073c610eaf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107a2576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024016104a6565b5f6107cb7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6035490565b905080158015906107db57508082115b15610809576108097fc3983b91000000000000000000000000000000000000000000000000000000006112ce565b610812826113de565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60782905560405182907fab14a23e88fb272313490d4f20d63098e64fd38304c0e07a377db98c2b39b92f905f90a25050565b5f6108b76112d6565b905090565b3068929eee149b4bd2126854036108da5763ab143c065f526004601cfd5b3068929eee149b4bd21268556108f082826111a6565b3868929eee149b4bd21268555050565b610908610eaf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461096e576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024016104a6565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb608546040517f91b7f5ed0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff909116906391b7f5ed906024015f604051808303815f87803b1580156109f6575f5ffd5b505af1158015610a08573d5f5f3e3d5ffd5b5050505050565b5f6108b7611482565b5f6108b77fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff1690565b3068929eee149b4bd212685403610a755763ab143c065f526004601cfd5b3068929eee149b4bd2126855610a8b338261154d565b3868929eee149b4bd212685550565b610aa2610eaf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b08576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024016104a6565b610b11816117b3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f14b7cb0621729ad169b573c8b04f2ba383bf36b3724f2e2809df566f45df16ec905f90a250565b5f6108b76119c9565b610b65610eaf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bcb576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024016104a6565b610bd481611a89565b50565b3068929eee149b4bd212685403610bf55763ab143c065f526004601cfd5b3068929eee149b4bd2126855610a8b816110c0565b60606108b7611b04565b5f6108b77fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6035490565b610c45610eaf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cab576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024016104a6565b610cff81610cfa7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b611bb6565b610bd4817fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60355565b5f5f610d776105417f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b9050805f03610d87575f91505090565b610d90816110a2565b9392505050565b610d9f610eaf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e05576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024016104a6565b610e0e81611be7565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905550565b5f6108b77fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6085473ffffffffffffffffffffffffffffffffffffffff1690565b5f807fd2f24d4f172e4e84e48e7c4125b6e904c29e5eba33ad4938fee51dd5dbd4b600805460018201546040517f6352211e000000000000000000000000000000000000000000000000000000008152600481019190915291925073ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa158015610f45573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106af9190614dd0565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60c6104ed8282614ea7565b5f5f610fd47fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6085473ffffffffffffffffffffffffffffffffffffffff1690565b905073ffffffffffffffffffffffffffffffffffffffff8116610ff957505f92915050565b5f611002611482565b6040517f5cf4ee91000000000000000000000000000000000000000000000000000000008152600481018290526024810186905290915073ffffffffffffffffffffffffffffffffffffffff831690635cf4ee91906044015b602060405180830381865afa158015611076573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109a9190614fbe565b949350505050565b5f5f6110ad83611d20565b90506110b98184615002565b9150915091565b6110c981611e1c565b5f6110d2611f12565b90505f6110dd6112d6565b90505f6110ee828460400151611fe7565b90505f6111358561112f7f8c625b06d047a4c1ca46cdab06b7e14ce79b486f06c67a1b220fa942669ca49b338960405180602001604052805f8152506120ac565b846120de565b90505f5f6111498733858960400151612275565b915091508061119d5781156111935785606001516111715761116c83885f6122f0565b61117b565b61117b8387612312565b61118583886124b3565b61118e87612503565b61119d565b61119d8388612612565b50505050505050565b6111af82611e1c565b5f6111b8611f12565b90505f6111c36112d6565b90505f6111d4828460400151611fe7565b90506111e08585612669565b5f846040516020016111f2919061505c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290507f686f7684000000000000000000000000000000000000000000000000000000005f61125a88611254843383886120ac565b866120de565b90505f5f61126e8a33858b60400151612275565b91509150806112c25781156112b857876060015161129657611291838b5f6122f0565b6112a0565b6112a08389612704565b6112aa838b6124b3565b6112b38a612503565b6112c2565b6112c2838b612612565b50505050505050505050565b805f5260045ffd5b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6045473ffffffffffffffffffffffffffffffffffffffff168061132a575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5b90565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b5f8281527fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60960205260408120547fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60090826113b985610f94565b9050815f036113cc5792506113d8915050565b81811890821102189150505b92915050565b6113e6610a18565b73ffffffffffffffffffffffffffffffffffffffff16632cbb9d136040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114529190614fbe565b811115610bd457610bd47fc3983b91000000000000000000000000000000000000000000000000000000006112ce565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60d545f907fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6009060ff16156114d95760070154919050565b6114e1610a18565b73ffffffffffffffffffffffffffffffffffffffff16632cbb9d136040518163ffffffff1660e01b8152600401602060405180830381865afa158015611529573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106af9190614fbe565b5f611557826128e7565b905073ffffffffffffffffffffffffffffffffffffffff811661159d5761159d7f5fbd5717000000000000000000000000000000000000000000000000000000006112ce565b5f6115a66119c9565b67ffffffffffffffff1690505f6116028461070d7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b90505f61160d6112d6565b9050815f036116485761163673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee3088346128f2565b611640858461294a565b505050505050565b5f5f611653846110a2565b90925090507fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff8416016116f657348211156116c6576116c67f34a7a93d000000000000000000000000000000000000000000000000000000006112ce565b6116d1838583612a78565b5f6116dc833461512f565b905080156116f0576116f084308b846128f2565b50611744565b341561172e576040517fbf39a02400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611739838984612acb565b611744838583612a78565b604080518581526020810183905273ffffffffffffffffffffffffffffffffffffffff8516917f8fed26ea05e17903891c5c2a70ac7ce2aeafbb48acf403b9defdb2c96ab2e5c3910160405180910390a261179f8683612baf565b6117a9878661294a565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811615806117ff575073ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b61196357604080517f4645455f545950452e4d454d4245525348495000000000000000000000000000602080830191909152606084901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016603383015282516027818403018152604790920190925280519101205f6118b37fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1663146516df836040518263ffffffff1660e01b81526004016118ed91815260200190565b60e060405180830381865afa158015611908573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192c919061522a565b90508060800151611960576119607f212be89d000000000000000000000000000000000000000000000000000000006112ce565b50505b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065474010000000000000000000000000000000000000000900467ffffffffffffffff165f81900361132a57611a1d610a18565b73ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a65573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b791906152ca565b611a9281612c4d565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb606805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60607fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600600c018054611b3590614e18565b80601f0160208091040260200160405190810160405280929190818152602001828054611b6190614e18565b8015611bac5780601f10611b8357610100808354040283529160200191611bac565b820191905f5260205f20905b815481529060010190602001808311611b8f57829003601f168201915b5050505050905090565b808210156104ed576104ed7fccc9aa2e000000000000000000000000000000000000000000000000000000006112ce565b73ffffffffffffffffffffffffffffffffffffffff8116611c2b57611c2b7f0e88bf4b000000000000000000000000000000000000000000000000000000006112ce565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff166040517f8df80bd600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301529190911690638df80bd690602401602060405180830381865afa158015611ccf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cf391906152e5565b610bd457610bd47f0e88bf4b000000000000000000000000000000000000000000000000000000006112ce565b5f5f611d32611d2d6112d6565b612d43565b9050611d727fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff1690565b6040517fecad870d000000000000000000000000000000000000000000000000000000008152600481018390525f602482018190526044820186905260806064830152608482015273ffffffffffffffffffffffffffffffffffffffff919091169063ecad870d9060a401602060405180830381865afa158015611df8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d909190614fbe565b73ffffffffffffffffffffffffffffffffffffffff8116611e6057611e607f5fbd5717000000000000000000000000000000000000000000000000000000006112ce565b5f611e897fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6035490565b90508015801590611ee4575080611ee17f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b10155b156104ed576104ed7f7efcdb49000000000000000000000000000000000000000000000000000000006112ce565b611f3b60405180608001604052805f81526020015f81526020015f81526020015f151581525090565b5f611f877f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b90505f611f9382610f94565b90505f611f9e611482565b9050815f03611fad5750505090565b81845282811115611fbe5750505090565b5f5f611fc9846110a2565b60016060890152604088019190915260208701525093949350505050565b5f7fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff84160161205d5781341015612056576120567fb1296a8a000000000000000000000000000000000000000000000000000000006112ce565b50346113d8565b3415612095576040517fbf39a02400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81156120a6576120a6833384612acb565b50919050565b6060848484846040516020016120c594939291906152fe565b6040516020818303038152906040529050949350505050565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660208201524360348201525f9081906054016040516020818303038152906040528051906020012090506121bd81612191838861214486612e1e565b6040805160208082019590955273ffffffffffffffffffffffffffffffffffffffff9390931683820152606080840192909252805180840390920182526080909201909152805191012090565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e026020526040812080549294507f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0092909190829061221e90614e18565b9050111561224f5761224f7ff82e65c3000000000000000000000000000000000000000000000000000000006112ce565b8061225a8782614ea7565b50841561226b5761226b8486612e64565b5050509392505050565b5f5f5f6122b66040518060400160405280600981526020017f4a6f696e53706163650000000000000000000000000000000000000000000000815250612ecc565b90506122c28188613064565b156122d45760015f92509250506122e7565b6122e1818888888861327f565b92509250505b94509492505050565b6122fa83826133eb565b61230383613449565b61230d8282612baf565b505050565b5f5f61231d846134a1565b805461232890614e18565b80601f016020809104026020016040519081016040528092919081815260200182805461235490614e18565b801561239f5780601f106123765761010080835404028352916020019161239f565b820191905f5260205f20905b81548152906001019060200180831161238257829003601f168201915b50505050508060200190518101906123b79190615416565b50919350909150507fffffffff0000000000000000000000000000000000000000000000000000000082167f8c625b060000000000000000000000000000000000000000000000000000000014612431576124317fda6153bd000000000000000000000000000000000000000000000000000000006112ce565b5f61243a6112d6565b905061244e81855f01518660200151612a78565b8351602080860151604080519384529183015273ffffffffffffffffffffffffffffffffffffffff8316917f8fed26ea05e17903891c5c2a70ac7ce2aeafbb48acf403b9defdb2c96ab2e5c3910160405180910390a2610a08858386604001516122f0565b5f8281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e016020526040902054801561230d576124f083826133eb565b61230d6124fb6112d6565b3084846128f2565b5f61252c7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df005490565b90506125b0816125806105417f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df01547f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00540390565b5f9182527fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb609602052604090912055565b6125bb8260016134f4565b6125cc816125c76119c9565b61294a565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907f2f40b0474996b72a4251e00fb9170cdd960deea1dc749772cbbab61395b9b576905f90a35050565b61261b82613449565b61262582826124b3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f86fd446d5c04e892d58b448a924dcd9c3ece3a5e0d2960b8c35cd475a5595a1f905f90a25050565b73ffffffffffffffffffffffffffffffffffffffff82166126906040830160208401614cea565b73ffffffffffffffffffffffffffffffffffffffff1614806126d65750336126be6040830160208401614cea565b73ffffffffffffffffffffffffffffffffffffffff16145b156104ed576104ed7f5fbd5717000000000000000000000000000000000000000000000000000000006112ce565b5f5f5f5f612711866134a1565b805461271c90614e18565b80601f016020809104026020016040519081016040528092919081815260200182805461274890614e18565b80156127935780601f1061276a57610100808354040283529160200191612793565b820191905f5260205f20905b81548152906001019060200180831161277657829003601f168201915b50505050508060200190518101906127ab9190615416565b929650909450925090507fffffffff0000000000000000000000000000000000000000000000000000000084167f686f76840000000000000000000000000000000000000000000000000000000014612827576128277fda6153bd000000000000000000000000000000000000000000000000000000006112ce565b5f8180602001905181019061283c919061549a565b90505f6128476112d6565b905061285b81885f01518960200151612a78565b8151875161286a91839161350d565b6128828186846020015185604001518b5f0151613630565b8651602080890151604080519384529183015273ffffffffffffffffffffffffffffffffffffffff8316917f8fed26ea05e17903891c5c2a70ac7ce2aeafbb48acf403b9defdb2c96ab2e5c3910160405180910390a26117a9888589604001516122f0565b5f6113d88183613730565b80156129445773ffffffffffffffffffffffffffffffffffffffff841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1461293a576129358484848461373b565b612944565b61294482826137cf565b50505050565b5f8281527f4775a23600034fdd9f073b224f794d51a58b35ba663a9602623ba7a5c09cce00602081905260409091205467ffffffffffffffff16801580159061299057505f5b156129ca576040517ff7d2131a000000000000000000000000000000000000000000000000000000008152600481018590526024016104a6565b5f428267ffffffffffffffff1611156129ee576129e78483615542565b90506129fb565b6129f88442615542565b90505b5f858152602084815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8516908117909155915191825286917f2ec2be2c4b90c2cf13ecb6751a24daed6bb741ae5ed3f7371aabf9402f6d62e8910160405180910390a25050505050565b612944612ab97fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff1690565b612ac285612d43565b338686866137ef565b7fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff841601612b0d57505050565b5f612b2e73ffffffffffffffffffffffffffffffffffffffff85163061132d565b9050612b5273ffffffffffffffffffffffffffffffffffffffff8516843085613964565b5f612b7373ffffffffffffffffffffffffffffffffffffffff86163061132d565b905082612b80838361512f565b1015610a0857610a087fb1296a8a000000000000000000000000000000000000000000000000000000006112ce565b805f03612bba575050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee612bd76112d6565b73ffffffffffffffffffffffffffffffffffffffff1614612bf6575050565b5f612bff6139c6565b90505f612c2e825f85604051602001612c1a91815260200190565b604051602081830303815290604052613a99565b9050612c3b828583613aef565b61294482612c47610eaf565b83613aef565b5f612c56610a18565b73ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c9e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cc291906152ca565b67ffffffffffffffff1690508167ffffffffffffffff165f03612d0857612d087f82323d2e000000000000000000000000000000000000000000000000000000006112ce565b808267ffffffffffffffff1611156104ed576104ed7f82323d2e000000000000000000000000000000000000000000000000000000006112ce565b5f7fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff831601612da857507f7bf182fc45d83735258e0907e7fbae2ced2b54cf5d36bf3f9c30097bec3e88f5919050565b604080517f4645455f545950452e4d454d4245525348495000000000000000000000000000602080830191909152606085901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016603383015282516027818403018152604790920190925280519101206113d8565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0060208190526040822080549083612e5983615562565b909155509392505050565b5f8281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e016020526040812080547f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0092849291612ec2908490615002565b9091555050505050565b60605f612ed7613b6e565b80519091505f8167ffffffffffffffff811115612ef657612ef6614deb565b604051908082528060200260200182016040528015612f5957816020015b612f466040518060a001604052805f8152602001606081526020015f1515815260200160608152602001606081525090565b815260200190600190039081612f145790505b50855160208701209091505f90815b84811015613058575f5f5f5f612f968a8681518110612f8957612f89615599565b6020026020010151613b99565b93509350935093505f5b82518110156130485786838281518110612fbc57612fbc615599565b60200260200101518051906020012003613040576040518060a001604052808c8881518110612fed57612fed615599565b6020026020010151815260200186815260200185151581526020018481526020018381525089898151811061302457613024615599565b60200260200101819052508761303990615562565b9750613048565b600101612fa0565b5050505050806001019050612f68565b50508152949350505050565b5f5f61306f83613c85565b90505f5b84518110156132755784818151811061308e5761308e615599565b60200260200101516040015161326d575f5b8582815181106130b2576130b2615599565b6020026020010151608001515181101561326b575f8683815181106130d9576130d9615599565b60200260200101516080015182815181106130f6576130f6615599565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16632e1b61e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015613149573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061316d91906152e5565b15801561325057508073ffffffffffffffffffffffffffffffffffffffff16630cf0b5335f5f1b866040518060400160405280600981526020017f4a6f696e537061636500000000000000000000000000000000000000000000008152506040516020016131db91906155c6565b6040516020818303038152906040526131f3906155dc565b6040518463ffffffff1660e01b81526004016132119392919061561e565b602060405180830381865afa15801561322c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325091906152e5565b156132625760019450505050506113d8565b506001016130a0565b505b600101613073565b505f949350505050565b5f5f5f5f5b88518110156133dc5788818151811061329f5761329f615599565b6020026020010151604001516133d4575f5b8982815181106132c3576132c3615599565b602002602001015160800151518110156133d2575f8a83815181106132ea576132ea615599565b602002602001015160800151828151811061330757613307615599565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16632e1b61e46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561335a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061337e91906152e5565b156133c9576133c08a8a8a848f888151811061339c5761339c615599565b60200260200101515f01516133af6112d6565b8a6133ba578d613ef9565b5f613ef9565b60019350600194505b506001016132b1565b505b600101613284565b505f9250509550959350505050565b5f8281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e016020526040812080547f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0092849291612ec290849061512f565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e02602052604090207f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e00906104ed905f614b3d565b5f8181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e02602052604081207f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0090610d90565b6104ed828260405180602001604052805f815250614244565b73ffffffffffffffffffffffffffffffffffffffff821661352d57505050565b5f61356c7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6065473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f5cb4f54800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529190911690635cb4f54890602401608060405180830381865afa1580156135d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135fc9190615689565b905080604001515f0361360f5750505050565b5f61361e83836040015161430c565b9050610a0885308460200151846128f2565b8151156136a0575f61364183614358565b604081015190915073ffffffffffffffffffffffffffffffffffffffff16158061366d57506020810151155b156136785750610a08565b5f61368783836020015161430c565b905061369987308460400151846128f2565b5050610a08565b73ffffffffffffffffffffffffffffffffffffffff831615610a08578373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160315610a08575f6137228261371d7faca21cc4d2a125f3e0ae03aa135d42b2b9177631aca87599d42a68b47e9008015490565b61430c565b9050611640863086846128f2565b5f610d908383614400565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603156129445773ffffffffffffffffffffffffffffffffffffffff831630146137ae5761293573ffffffffffffffffffffffffffffffffffffffff8516848484613964565b61294473ffffffffffffffffffffffffffffffffffffffff8516838361453b565b6104ed73ffffffffffffffffffffffffffffffffffffffff83168261458e565b5f815f036137fe57505f61395a565b73ffffffffffffffffffffffffffffffffffffffff841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14806138515761385173ffffffffffffffffffffffffffffffffffffffff861689856145a7565b8773ffffffffffffffffffffffffffffffffffffffff16639c65a60d82613878575f61387a565b845b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152600481018b905273ffffffffffffffffffffffffffffffffffffffff808b16602483015260448201899052891660648201526084810187905260c060a48201525f60c482015260e40160206040518083038185885af115801561390b573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906139309190614fbe565b9150806139585761395873ffffffffffffffffffffffffffffffffffffffff8616895f614639565b505b9695505050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f5114166139b857803d873b1517106139b857637939f4245f526004601cfd5b505f60605260405250505050565b5f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600600601546040517f44ab66800000000000000000000000000000000000000000000000000000000081527f526976657241697264726f700000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116906344ab668090602401602060405180830381865afa158015613a75573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b79190614dd0565b6040517fdc69fdde0000000000000000000000000000000000000000000000000000000081525f9073ffffffffffffffffffffffffffffffffffffffff85169063dc69fdde9061105b9086908690600401615703565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390528416906340c10f19906044015f604051808303815f87803b158015613b5c575f5ffd5b505af115801561119d573d5f5f3e3d5ffd5b60606108b77f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd01614682565b5f8181527f672ef851d5f92307da037116e23aa9e31af7e1f7e3ca62c4e6d540631df3fd036020526040812080546060929183918291908190613bdb90614e18565b80601f0160208091040260200160405190810160405280929190818152602001828054613c0790614e18565b8015613c525780601f10613c2957610100808354040283529160200191613c52565b820191905f5260205f20905b815481529060010190602001808311613c3557829003601f168201915b5050505060018301549196505060ff169350613c706002820161468e565b9250613c7b81614765565b9150509193509193565b60605f7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb600600601546040517f02345b9800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015290911691505f9082906302345b98906024015f60405180830381865afa158015613d1c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613d61919081019061572b565b905080515f03613ed2576040517ff821039800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301525f919084169063f821039890602401602060405180830381865afa158015613dd8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613dfc9190614dd0565b905073ffffffffffffffffffffffffffffffffffffffff811615613ed0576040517f02345b9800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015291955085918416906302345b98906024015f60405180830381865afa158015613e88573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613ecd919081019061572b565b91505b505b613edb81614774565b92506001835101835283604051526020604051016040525050919050565b73ffffffffffffffffffffffffffffffffffffffff8716613f3d57613f3d7f99ef0388000000000000000000000000000000000000000000000000000000006112ce565b73ffffffffffffffffffffffffffffffffffffffff8416613f8157613f817f4bb7c205000000000000000000000000000000000000000000000000000000006112ce565b5f8581527f9075c515a635ba70c9696f31149324218d75cf00afe836c482e6473f38b19e016020526040902080547f9075c515a635ba70c9696f31149324218d75cf00afe836c482e6473f38b19e00919060ff166140475780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117815560038101805473ffffffffffffffffffffffffffffffffffffffff88167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790555b81546040805173ffffffffffffffffffffffffffffffffffffffff8c811660208301529181018a905260608101889052868216608082015260a081018690528a821660c08201529116905f9060e001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290507fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff87160161418d576040517f6fcc618800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690636fcc618890879061415a9060029086906004016157df565b5f604051808303818588803b158015614171575f5ffd5b505af1158015614183573d5f5f3e3d5ffd5b5050505050614237565b84156141b4576141b473ffffffffffffffffffffffffffffffffffffffff871683876145a7565b6040517f6fcc618800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690636fcc6188906142099060029085906004016157df565b5f604051808303815f87803b158015614220575f5ffd5b505af1158015614232573d5f5f3e3d5ffd5b505050505b5050505050505050505050565b61424e8383614782565b73ffffffffffffffffffffffffffffffffffffffff83163b1561230d577f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00548281035b6142a35f868380600101945086614937565b6142d9576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81811061429157817f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df005414610a08575f5ffd5b5f612710821115614341576143417f197f19620000000000000000000000000000000000000000000000000000000083614aa9565b61271061434e83856157f0565b610d909190615807565b6143906040518060600160405280606081526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5080516020808301919091205f9081527faca21cc4d2a125f3e0ae03aa135d42b2b9177631aca87599d42a68b47e9008028252604090819020815160608101835293845280549284019290925260019091015473ffffffffffffffffffffffffffffffffffffffff169082015290565b5f81831161450957505f8181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df046020526040812054907f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00907c01000000000000000000000000000000000000000000000000000000008316900361450757815f0361450157805483106144c0576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092015f818152600484016020526040902054909290915081156144c1575b506113d8565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f51141661458457803d853b151710614584576390b8ec185f526004601cfd5b505f603452505050565b5f385f3884865af16104ed5763b12d13eb5f526004601cfd5b81601452806034526f095ea7b30000000000000000000000005f5260205f604460105f875af18060015f51141661458457803d853b151710614584575f6034526f095ea7b30000000000000000000000005f525f38604460105f885af1508160345260205f604460105f885af190508060015f51141661458457803d853b15171061458457633e3f8f735f526004601cfd5b81601452806034526f095ea7b30000000000000000000000005f5260205f604460105f875af18060015f51141661458457803d853b15171061458457633e3f8f735f526004601cfd5b60605f610d9083614ab5565b6060815f01805480602002602001604051908101604052809291908181526020015f905b8282101561475a578382905f5260205f200180546146cf90614e18565b80601f01602080910402602001604051908101604052809291908181526020018280546146fb90614e18565b80156147465780601f1061471d57610100808354040283529160200191614746565b820191905f5260205f20905b81548152906001019060200180831161472957829003601f168201915b5050505050815260200190600101906146b2565b505050509050919050565b60605f610d9083600401614682565b60606113d861132a83614b0e565b7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df00545f8290036147de576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f8181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df056020908152604080832080546801000000000000000188020190558483527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146148d55780835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f5fa460010161489f565b50815f0361490f576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df005550505050565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081525f9073ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061499190339089908890889060040161583f565b6020604051808303815f875af19250505080156149e9575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526149e69181019061588f565b60015b614a5e573d808015614a16576040519150601f19603f3d011682016040523d82523d5f602084013e614a1b565b606091505b5080515f03614a56576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a020000000000000000000000000000000000000000000000000000000014905061109a565b815f528060045260245ffd5b6060815f01805480602002602001604051908101604052809291908181526020018280548015614b0257602002820191905f5260205f20905b815481526020019060010190808311614aee575b50505050509050919050565b604051815160051b8101602001818084035b808201518252816020019150828203614b20575060405250919050565b508054614b4990614e18565b5f825580601f10614b58575050565b601f0160209004905f5260205f2090810190610bd491905b80821115614b83575f8155600101614b70565b5090565b5f5f83601f840112614b97575f5ffd5b50813567ffffffffffffffff811115614bae575f5ffd5b602083019150836020828501011115614bc5575f5ffd5b9250929050565b5f5f60208385031215614bdd575f5ffd5b823567ffffffffffffffff811115614bf3575f5ffd5b614bff85828601614b87565b90969095509350505050565b5f60208284031215614c1b575f5ffd5b5035919050565b5f5f5f60408486031215614c34575f5ffd5b833560028110614c42575f5ffd5b9250602084013567ffffffffffffffff811115614c5d575f5ffd5b614c6986828701614b87565b9497909650939450505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610bd4575f5ffd5b5f5f60408385031215614ca8575f5ffd5b8235614cb381614c76565b9150602083013567ffffffffffffffff811115614cce575f5ffd5b830160608186031215614cdf575f5ffd5b809150509250929050565b5f60208284031215614cfa575f5ffd5b8135610d9081614c76565b67ffffffffffffffff81168114610bd4575f5ffd5b5f60208284031215614d2a575f5ffd5b8135610d9081614d05565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610d906020830184614d35565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8051614dcb81614c76565b919050565b5f60208284031215614de0575f5ffd5b8151610d9081614c76565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c90821680614e2c57607f821691505b6020821081036120a6577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b601f82111561230d57805f5260205f20601f840160051c81016020851015614e885750805b601f840160051c820191505b81811015610a08575f8155600101614e94565b815167ffffffffffffffff811115614ec157614ec1614deb565b614ed581614ecf8454614e18565b84614e63565b6020601f821160018114614f26575f8315614ef05750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610a08565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015614f735787850151825560209485019460019092019101614f53565b5084821015614faf57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215614fce575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156113d8576113d8614fd5565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081525f823561506c81614c76565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013561509781614c76565b73ffffffffffffffffffffffffffffffffffffffff811660408401525060408301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126150e8575f5ffd5b830160208101903567ffffffffffffffff811115615104575f5ffd5b803603821315615112575f5ffd5b606080850152615126608085018284615015565b95945050505050565b818103818111156113d8576113d8614fd5565b60405160e0810167ffffffffffffffff8111828210171561516557615165614deb565b60405290565b6040516060810167ffffffffffffffff8111828210171561516557615165614deb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156151d5576151d5614deb565b604052919050565b805161ffff81168114614dcb575f5ffd5b805160038110614dcb575f5ffd5b80518015158114614dcb575f5ffd5b80516fffffffffffffffffffffffffffffffff81168114614dcb575f5ffd5b5f60e082840312801561523b575f5ffd5b50615244615142565b825161524f81614c76565b8152602083015165ffffffffffff81168114615269575f5ffd5b602082015261527a604084016151dd565b604082015261528b606084016151ee565b606082015261529c608084016151fc565b60808201526152ad60a0840161520b565b60a08201526152be60c08401614dc0565b60c08201529392505050565b5f602082840312156152da575f5ffd5b8151610d9081614d05565b5f602082840312156152f5575f5ffd5b610d90826151fc565b7fffffffff000000000000000000000000000000000000000000000000000000008516815273ffffffffffffffffffffffffffffffffffffffff8416602082015273ffffffffffffffffffffffffffffffffffffffff83166040820152608060608201525f61395a6080830184614d35565b80517fffffffff0000000000000000000000000000000000000000000000000000000081168114614dcb575f5ffd5b5f5f67ffffffffffffffff8411156153b9576153b9614deb565b50601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0166020016153ec8161518e565b915050828152838383011115615400575f5ffd5b8282602083015e5f602084830101529392505050565b5f5f5f5f60808587031215615429575f5ffd5b61543285615370565b9350602085015161544281614c76565b604086015190935061545381614c76565b606086015190925067ffffffffffffffff81111561546f575f5ffd5b8501601f8101871361547f575f5ffd5b61548e8782516020840161539f565b91505092959194509250565b5f602082840312156154aa575f5ffd5b815167ffffffffffffffff8111156154c0575f5ffd5b8201606081850312156154d1575f5ffd5b6154d961516b565b81516154e481614c76565b815260208201516154f481614c76565b6020820152604082015167ffffffffffffffff811115615512575f5ffd5b80830192505084601f830112615526575f5ffd5b6155358583516020850161539f565b6040820152949350505050565b67ffffffffffffffff81811683821601908111156113d8576113d8614fd5565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361559257615592614fd5565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82518060208501845e5f920191825250919050565b805160208083015191908110156120a6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b8181101561567557835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101615641565b505060409390930193909352509392505050565b5f608082840312801561569a575f5ffd5b506040516080810167ffffffffffffffff811182821017156156be576156be614deb565b60405282516156cc81614c76565b815260208301516156dc81614c76565b6020820152604083810151908201526156f7606084016151fc565b60608201529392505050565b5f6004841061571457615714614d93565b8382526040602083015261109a6040830184614d35565b5f6020828403121561573b575f5ffd5b815167ffffffffffffffff811115615751575f5ffd5b8201601f81018413615761575f5ffd5b805167ffffffffffffffff81111561577b5761577b614deb565b8060051b61578b6020820161518e565b918252602081840181019290810190878411156157a6575f5ffd5b6020850194505b838510156157d457845192506157c283614c76565b828252602094850194909101906157ad565b979650505050505050565b5f6003841061571457615714614d93565b80820281158282048414176113d8576113d8614fd5565b5f8261583a577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff84166020820152826040820152608060608201525f61395a6080830184614d35565b5f6020828403121561589f575f5ffd5b610d908261537056";
2336
2361
 
2337
2362
  type MembershipFacetConstructorParams =
2338
2363
  | [signer?: Signer]
@@ -254,6 +254,11 @@ const _abi = [
254
254
  type: "uint256",
255
255
  internalType: "uint256",
256
256
  },
257
+ {
258
+ name: "lastKnownCurrency",
259
+ type: "address",
260
+ internalType: "address",
261
+ },
257
262
  ],
258
263
  },
259
264
  ],
@@ -1084,16 +1089,6 @@ const _abi = [
1084
1089
  name: "SubscriptionModule__InactiveSubscription",
1085
1090
  inputs: [],
1086
1091
  },
1087
- {
1088
- type: "error",
1089
- name: "SubscriptionModule__InsufficientBalance",
1090
- inputs: [],
1091
- },
1092
- {
1093
- type: "error",
1094
- name: "SubscriptionModule__InvalidAddress",
1095
- inputs: [],
1096
- },
1097
1092
  {
1098
1093
  type: "error",
1099
1094
  name: "SubscriptionModule__InvalidCaller",
@@ -1134,26 +1129,11 @@ const _abi = [
1134
1129
  name: "SubscriptionModule__NotSupported",
1135
1130
  inputs: [],
1136
1131
  },
1137
- {
1138
- type: "error",
1139
- name: "SubscriptionModule__RenewalFailed",
1140
- inputs: [],
1141
- },
1142
- {
1143
- type: "error",
1144
- name: "SubscriptionModule__RenewalNotDue",
1145
- inputs: [],
1146
- },
1147
1132
  {
1148
1133
  type: "error",
1149
1134
  name: "SubscriptionModule__SubscriptionAlreadyInstalled",
1150
1135
  inputs: [],
1151
1136
  },
1152
- {
1153
- type: "error",
1154
- name: "SubscriptionModule__SubscriptionNotInstalled",
1155
- inputs: [],
1156
- },
1157
1137
  {
1158
1138
  type: "error",
1159
1139
  name: "UnexpectedDataPassed",
@@ -1162,7 +1142,7 @@ const _abi = [
1162
1142
  ] as const;
1163
1143
 
1164
1144
  const _bytecode =
1165
- "0x6080604052348015600e575f5ffd5b5060156019565b60bd565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef520008054640100000000900460ff16156064576040516366008a2d60e01b815260040160405180910390fd5b805463ffffffff908116101560ba57805463ffffffff191663ffffffff90811782556040519081527fe9c9b456cb2994b80aeef036cf59d26e9617df80f816a6ee5a5b4166e07e2f5c9060200160405180910390a15b50565b613ed6806100ca5f395ff3fe608060405234801561000f575f5ffd5b50600436106101bb575f3560e01c80636d70f7ae116100f3578063a1308f2711610093578063da43f3d61161006e578063da43f3d61461053e578063e348da1314610551578063e7db7f7e14610564578063fad8b32a146105ce575f5ffd5b8063a1308f27146104ed578063c1a287e21461052c578063cfdbf25414610536575f5ffd5b8063885c1d09116100ce578063885c1d09146103255780638a91b0e3146103385780639e94f3ab1461034b578063a07da647146104da575f5ffd5b80636d70f7ae146102b857806379dda585146102cb5780638522ddcb14610312575f5ffd5b80633d6bda321161015e5780634306ea80116101395780634306ea8014610276578063465d33e0146102895780636a0df59e1461029c5780636d61fe70146102a5575f5ffd5b80633d6bda32146102305780633e5f6091146102435780633f41826e14610263575f5ffd5b80630c288470116101995780630c288470146102155780631313f4101461021d5780631e8ffc7f146102275780632a3d428c146101fe575f5ffd5b806301ffc9a7146101bf5780630972a3e6146101e75780630ab8785f146101fe575b5f5ffd5b6101d26101cd3660046136e5565b6105e1565b60405190151581526020015b60405180910390f35b6101f061a8c081565b6040519081526020016101de565b6101f061020c36600461373c565b60019392505050565b6101f0607881565b610225610679565b005b6101f0610e1081565b61022561023e3660046137fb565b610759565b610256610251366004613896565b61078b565b6040516101de91906138b1565b6102256102713660046138f3565b6107da565b61022561028436600461395f565b61080a565b610225610297366004613978565b610a9e565b6101f061546081565b6102256102b3366004613a25565b610b81565b6101d26102c6366004613896565b6111da565b7fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb86055460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b6101f0610320366004613a64565b611205565b610225610333366004613a7b565b61120f565b610225610346366004613a25565b6118f2565b6104cd610359366004613aec565b60408051610140810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101919091527fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb860073ffffffffffffffffffffffffffffffffffffffff8481165f90815260019283016020908152604080832063ffffffff8816845282529182902082516101408101845281548152948101549185019190915260028101549283169184019190915274010000000000000000000000000000000000000000820464ffffffffff908116606085015279010000000000000000000000000000000000000000000000000090920482166080840152600381015491821660a084015265010000000000820460ff16151560c0840152660100000000000090910467ffffffffffffffff1660e0830152600481015461010083015260050154610120820152905092915050565b6040516101de9190613b1f565b6102256104e836600461395f565b611acd565b604080518082018252601f81527f746f776e732e737562736372697074696f6e2d6d6f64756c652e312e302e3000602082015290516101de9190613c42565b6101f06203f48081565b6101f0603281565b61022561054c366004613896565b611bca565b61022561055f366004613896565b611cd7565b61059d610572366004613c54565b7fffffffff000000000000000000000000000000000000000000000000000000009695505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101de565b6102256105dc366004613896565b611dc0565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f46c0c1b400000000000000000000000000000000000000000000000000000000148061067357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef5200054640100000000900460ff166106dc576040517f77a399b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107057f99b0d7fb00000000000000000000000000000000000000000000000000000000611ea9565b61072e7fab3e34c100000000000000000000000000000000000000000000000000000000611ea9565b6107577f28171ad000000000000000000000000000000000000000000000000000000000611ea9565b565b6107827fabbbbc7300000000000000000000000000000000000000000000000000000000611ffe565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff81165f9081527fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb86026020526040902060609061067390612006565b6108037fabbbbc7300000000000000000000000000000000000000000000000000000000611ffe565b5050505050565b688000000000ab143c064660010361083457805c1561082c57805f526004601cfd5b30815d610849565b3081540361084557805f526004601cfd5b3081555b507fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb8600610876813384612017565b6108a3576108a37faacf701b00000000000000000000000000000000000000000000000000000000611ffe565b335f908152600182016020908152604080832063ffffffff861684529091529020600381015465010000000000900460ff1615610903576109037ff618dcd600000000000000000000000000000000000000000000000000000000611ffe565b61090c81612058565b600281015481546040517f17c9570900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216915f9183916317c957099161096c9160040190815260200190565b602060405180830381865afa158015610987573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ab9190613cd2565b90505f8273ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1b9190613ce9565b9050610a2984848484612136565b60405163ffffffff87169033907f8134c93b482584112545c85fb3aa70e029203fd8fd1e2fe0d73c94122859a797905f90a35050505050610a68600190565b15610a8e57688000000000ab143c0646600103610a86575f815d5050565b8081555b5050565b5f688000000000ab143c065d5b50565b73ffffffffffffffffffffffffffffffffffffffff86163014610ae457610ae47f90467bf500000000000000000000000000000000000000000000000000000000611ffe565b73ffffffffffffffffffffffffffffffffffffffff88165f9081527fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb86016020908152604080832063ffffffff8b16845290915290206003015465010000000000900460ff1680610b7657610b767fe01d332000000000000000000000000000000000000000000000000000000000611ffe565b505050505050505050565b688000000000ab143c0646600103610bab57805c15610ba357805f526004601cfd5b30815d610bc0565b30815403610bbc57805f526004601cfd5b3081555b505f8080610bd084860186613d10565b925092509250610bdf82612299565b8263ffffffff165f03610c1557610c157faacf701b00000000000000000000000000000000000000000000000000000000611ffe565b6040517fc57a9c560000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff83169063c57a9c5690602401602060405180830381865afa158015610c7e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca29190613d3b565b15610cd057610cd07f366b825800000000000000000000000000000000000000000000000000000000611ffe565b6040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052339073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015610d3b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5f9190613d5a565b73ffffffffffffffffffffffffffffffffffffffff1614610da357610da37ff107dccb00000000000000000000000000000000000000000000000000000000611ffe565b5f7fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb860060058101546040517fc0bc679600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015292935091169063c0bc679690602401602060405180830381865afa158015610e37573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5b9190613cd2565b5f03610e8a57610e8a7fc3ca61ad00000000000000000000000000000000000000000000000000000000611ffe565b335f9081526002820160205260409020610ead9063ffffffff808716906122dd16565b610eda57610eda7faacf701b00000000000000000000000000000000000000000000000000000000611ffe565b335f908152600482016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205415610f3a57610f3a7f9921212f00000000000000000000000000000000000000000000000000000000611ffe565b335f90815260048281016020908152604080842073ffffffffffffffffffffffffffffffffffffffff88168086529252808420869055517f17c957090000000000000000000000000000000000000000000000000000000081529182018590528592916317c9570990602401602060405180830381865afa158015610fc1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fe59190613cd2565b9050428111611017576110177fb8aa413f00000000000000000000000000000000000000000000000000000000611ffe565b5f8273ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611061573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110859190613ce9565b335f908152600186016020908152604080832063ffffffff8c16845290915290206002810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a161790558681559091506110f7426122ef565b8160020160146101000a81548164ffffffffff021916908364ffffffffff16021790555061112781858585612136565b60038101546040805188815264ffffffffff9092166020830152810184905273ffffffffffffffffffffffffffffffffffffffff88169063ffffffff8a169033907f8c6c35fff224538ee3da0324c24ba58476e48a9c3f3ec18b6f5c296d14d3086d9060600160405180910390a450505050505050506111a5600190565b156111ca57688000000000ab143c06466001036111c4575f815d505050565b80555050565b5f688000000000ab143c065d5050565b5f6106737fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb860083612309565b5f610673826123db565b688000000000ab143c064660010361123957805c1561123157805f526004601cfd5b30815d61124e565b3081540361124a57805f526004601cfd5b3081555b50806032811115611282576112827f2efeb70100000000000000000000000000000000000000000000000000000000611ffe565b805f036112b2576112b27f8ac7f05500000000000000000000000000000000000000000000000000000000611ffe565b7fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb86006112dd8133612309565b61130a5761130a7f59530ce900000000000000000000000000000000000000000000000000000000611ffe565b5f5b828110156118e7575f826001015f87878581811061132c5761132c613d75565b6113429260206040909202019081019150613896565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f87878581811061138e5761138e613d75565b90506040020160200160208101906113a6919061395f565b63ffffffff168152602081019190915260409081015f9081206002810154815493517f5803909f00000000000000000000000000000000000000000000000000000000815291945073ffffffffffffffffffffffffffffffffffffffff16928391635803909f9161141d9160040190815260200190565b602060405180830381865afa158015611438573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061145c9190613cd2565b90505f8273ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114cc9190613ce9565b67ffffffffffffffff1690505f5f5f61150e878d8d8b8181106114f1576114f1613d75565b6115079260206040909202019081019150613896565b878761241b565b92509250925082156116ed57600181600881111561152e5761152e613da2565b036115d2578b8b8981811061154557611545613d75565b905060400201602001602081019061155d919061395f565b63ffffffff168c8c8a81811061157557611575613d75565b61158b9260206040909202019081019150613896565b73ffffffffffffffffffffffffffffffffffffffff167ffaea115d6b9a6bc3133af871ecb2f222b8d63f750071a320a65fe4c64e07502360405160405180910390a36116e1565b811561163357611633878d8d8b8181106115ee576115ee613d75565b6116049260206040909202019081019150613896565b8e8e8c81811061161657611616613d75565b905060400201602001602081019061162e919061395f565b612693565b8b8b8981811061164557611645613d75565b905060400201602001602081019061165d919061395f565b63ffffffff168c8c8a81811061167557611675613d75565b61168b9260206040909202019081019150613896565b73ffffffffffffffffffffffffffffffffffffffff167f5db17eb6b69c9f0cf51e3b1f2c90a067a24697d427ba54c65f211120d3da7c056116cb8461270a565b6040516116d89190613c42565b60405180910390a35b505050505050506118df565b86546040517f17c957090000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff8916916317c95709916117459160040190815260200190565b602060405180830381865afa158015611760573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117849190613cd2565b9050808860050154146118b35760038801546117b59082906601000000000000900467ffffffffffffffff166129af565b6003890180547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001664ffffffffff92909216919091179055600588018190558c8c8a81811061180657611806613d75565b905060400201602001602081019061181e919061395f565b63ffffffff168d8d8b81811061183657611836613d75565b61184c9260206040909202019081019150613896565b60038a015460405164ffffffffff909116815273ffffffffffffffffffffffffffffffffffffffff91909116907fa1d0c7cfbaf330ea81d2b0cac3c06d95401230169e4bceea6ffc02233ef011519060200160405180910390a350505050505050506118df565b6118d6888e8e8c8181106118c9576118c9613d75565b9050604002018989612a22565b50505050505050505b60010161130c565b5050506111a5600190565b688000000000ab143c064660010361191c57805c1561191457805f526004601cfd5b30815d611931565b3081540361192d57805f526004601cfd5b3081555b505f61193f8284018461395f565b335f9081527fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb8602602052604090209091507fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb8600906119a49063ffffffff80851690612f6c16565b6119d1576119d17faacf701b00000000000000000000000000000000000000000000000000000000611ffe565b335f81815260018084016020908152604080842063ffffffff88168086528184528286208787526004808a01865284882060028301805473ffffffffffffffffffffffffffffffffffffffff168a529087528589208990558389529390955286815594850186905581547fffff000000000000000000000000000000000000000000000000000000000000169091556003840180547fffffffffffffffffffffffffffffffffffff000000000000000000000000000016905591830184905560058301849055519193909290917f48c4a5a219af3d077894cac7e6b26c5cdb83cf91d718428985a3f4a85e9ed45d9190a35050506111a5600190565b688000000000ab143c0646600103611af757805c15611aef57805f526004601cfd5b30815d611b0c565b30815403611b0857805f526004601cfd5b3081555b50335f9081527fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb86016020908152604080832063ffffffff85168452909152902060038101547fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb8600919065010000000000900460ff16611bac57611bac7fe01d332000000000000000000000000000000000000000000000000000000000611ffe565b611bb581612058565b611bc0813385612693565b5050610a68600190565b7f4675fa8241f86f37157864d3d49b85ad4b164352c516da28e1678a90470ae3005473ffffffffffffffffffffffffffffffffffffffff163314611c41576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b611c4a81612299565b7fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb860580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f40f94fbaa39b621298d12a4ed99759484633cff7680c01e6bb3a07ae7aa8d795905f90a250565b7f4675fa8241f86f37157864d3d49b85ad4b164352c516da28e1678a90470ae3005473ffffffffffffffffffffffffffffffffffffffff163314611d49576040517f65f49065000000000000000000000000000000000000000000000000000000008152336004820152602401611c38565b611d5281612299565b611d7c7fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb860082612f77565b5060405173ffffffffffffffffffffffffffffffffffffffff8216907f5b6a420b639feabfb011a07742a6ae14ef72f35d1a330ed65f42216c95bc6c2e905f90a250565b7f4675fa8241f86f37157864d3d49b85ad4b164352c516da28e1678a90470ae3005473ffffffffffffffffffffffffffffffffffffffff163314611e32576040517f65f49065000000000000000000000000000000000000000000000000000000008152336004820152602401611c38565b611e3b81612299565b611e657fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb8600826130fb565b5060405173ffffffffffffffffffffffffffffffffffffffff8216907fa5f3b7626fd86ff989f1d22cf3d41d74591ea6eb99241079400b0c332a9a8f11905f90a250565b7fffffffff0000000000000000000000000000000000000000000000000000000081165f9081527f81088bbc801e045ea3e7620779ab349988f58afbdfba10dff983df3f33522b00602052604090205460ff16611f7d577fffffffff0000000000000000000000000000000000000000000000000000000081165f9081527f81088bbc801e045ea3e7620779ab349988f58afbdfba10dff983df3f33522b006020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611faf565b6040517ff2cfeefa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fffffffff000000000000000000000000000000000000000000000000000000008216907f78f84e5b1c5c05be2b5ad3800781dd404d6d6c6302bc755c0fe20f58a33a7f22905f90a250565b805f5260045ffd5b60606106736120148361326f565b90565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260028401602052604081206120509063ffffffff8085169061332816565b949350505050565b600281015481546040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101919091525f9173ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa1580156120ca573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120ee9190613d5a565b90503373ffffffffffffffffffffffffffffffffffffffff821614610a8a57610a8a7f59530ce900000000000000000000000000000000000000000000000000000000611ffe565b6003840180547fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff166501000000000017905583546040517f5803909f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851691635803909f916121bf919060040190815260200190565b602060405180830381865afa1580156121da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121fe9190613cd2565b6004850155600584018290556003840180547fffffffffffffffffffffffffffffffffffff0000000000000000ffffffffffff16660100000000000067ffffffffffffffff84169081029190911790915561225a9083906129af565b60039490940180547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001664ffffffffff90951694909417909355505050565b73ffffffffffffffffffffffffffffffffffffffff8116610a9b57610a9b7fe6c4247b00000000000000000000000000000000000000000000000000000000611ffe565b5f6122e88383613333565b9392505050565b5f65010000000000821061230557612305613445565b5090565b63978aab926004525f8281526024812073ffffffffffffffffffffffffffffffffffffffff92909216917fffffffffffffffffffffffffffffffffffffffffffffff04498025ad2b40474183016123675763f5a267f15f526004601cfd5b826123795768fbb67fda52d4bfb8bf92505b80546bffffffffffffffffffffffff81166123c25760019250838160601c03156123d357600182015460601c84146123d357600282015460601c84146123d3575b5f92506123d3565b81602052835f5260405f2054151592505b505092915050565b5f610e1082116123ed57506078919050565b61546082116123ff5750610e10919050565b6201518082116124125750615460919050565b5061a8c0919050565b60038401545f90819081904264ffffffffff90911611156124445750600191505f905081612689565b600387015465010000000000900460ff166124685750600191505f90506002612689565b60038701544290612484906203f4809064ffffffffff16613dfc565b10156124995750600191508190506003612689565b600287015487546040517fc57a9c5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163c57a9c56916124f59160040190815260200190565b602060405180830381865afa158015612510573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125349190613d3b565b156125485750600191508190506004612689565b600287015487546040517f6352211e000000000000000000000000000000000000000000000000000000008152600481019190915273ffffffffffffffffffffffffffffffffffffffff888116921690636352211e90602401602060405180830381865afa1580156125bc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125e09190613d5a565b73ffffffffffffffffffffffffffffffffffffffff161461260a5750600191508190506005612689565b848760040154146126245750600191508190506006612689565b848673ffffffffffffffffffffffffffffffffffffffff163110156126525750600191508190506007612689565b60038701546601000000000000900467ffffffffffffffff1684146126805750600191508190506008612689565b505f9150819050805b9450945094915050565b6003830180547fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff16905560405163ffffffff82169073ffffffffffffffffffffffffffffffffffffffff8416907fd01480b28a9baefd1cd771d8109d1abf2380614146253e17b61774b7b3fb77f1905f90a3505050565b6060600182600881111561272057612720613da2565b0361275e57505060408051808201909152600781527f4e4f545f44554500000000000000000000000000000000000000000000000000602082015290565b600282600881111561277257612772613da2565b036127b057505060408051808201909152600881527f494e414354495645000000000000000000000000000000000000000000000000602082015290565b60038260088111156127c4576127c4613da2565b0361280257505060408051808201909152600a81527f504153545f475241434500000000000000000000000000000000000000000000602082015290565b600482600881111561281657612816613da2565b0361285457505060408051808201909152601181527f4d454d424552534849505f42414e4e4544000000000000000000000000000000602082015290565b600582600881111561286857612868613da2565b036128a657505060408051808201909152600981527f4e4f545f4f574e45520000000000000000000000000000000000000000000000602082015290565b60068260088111156128ba576128ba613da2565b036128f857505060408051808201909152601581527f52454e4557414c5f50524943455f4348414e4745440000000000000000000000602082015290565b600782600881111561290c5761290c613da2565b0361294a57505060408051808201909152601481527f494e53554646494349454e545f42414c414e4345000000000000000000000000602082015290565b600882600881111561295e5761295e613da2565b0361299c57505060408051808201909152601081527f4455524154494f4e5f4348414e47454400000000000000000000000000000000602082015290565b505060408051602081019091525f815290565b5f4283116129c7576129c0426122ef565b9050610673565b5f6129d1836123db565b90505f6129de4286613e0f565b9050808210612a0c57612a036129f48284613e0f565b6129fe9087613dfc565b6122ef565b92505050610673565b612a196129fe8387613e0f565b95945050505050565b83546040515f91612a399160240190815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c9669ac00000000000000000000000000000000000000000000000000000000179052600287015490519192505f91612ae29173ffffffffffffffffffffffffffffffffffffffff169085908590602401613e22565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb61d27f6000000000000000000000000000000000000000000000000000000001790529192505f91612bf091612b719190890190890161395f565b600289015489546040805173ffffffffffffffffffffffffffffffffffffffff90931660208401528201525f90606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052612bdc91602001613e6d565b604051602081830303815290604052613452565b90505f8282604051602401612c06929190613e9e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff2680c0f00000000000000000000000000000000000000000000000000000000179052909150612c9790612c9090890189613896565b5f83613513565b5087546040517f17c957090000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff8916916317c9570991612cf09160040190815260200190565b602060405180830381865afa158015612d0b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d2f9190613cd2565b90505f8773ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d7b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d9f9190613ce9565b67ffffffffffffffff169050612db582826129af565b60038b0180547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001664ffffffffff92909216919091179055612df6426122ef565b8a60020160196101000a81548164ffffffffff021916908364ffffffffff160217905550818a60050181905550868a6001015f828254612e369190613dfc565b909155505060028a015473ffffffffffffffffffffffffffffffffffffffff16612e6660408b0160208c0161395f565b63ffffffff16612e7960208c018c613896565b8c5460038e01546040805192835264ffffffffff9091166020830152810186905273ffffffffffffffffffffffffffffffffffffffff91909116907ffb5958fb22b1f99fbf55be0d5e6a01bc298b05da5ab1a8cc30d3677176d152359060600160405180910390a4612ef160408a0160208b0161395f565b63ffffffff16612f0460208b018b613896565b73ffffffffffffffffffffffffffffffffffffffff167f87a8f6f83796c73b3d3b1cb327beee5ff8d165dc8aa5e2764ad44fc7ff140471898d60010154604051612f58929190918252602082015260400190565b60405180910390a350505050505050505050565b5f6122e8838361355f565b63978aab926004525f8281526024812073ffffffffffffffffffffffffffffffffffffffff92909216917fffffffffffffffffffffffffffffffffffffffffffffff04498025ad2b4047418301612fd55763f5a267f15f526004601cfd5b82612fe75768fbb67fda52d4bfb8bf92505b80546bffffffffffffffffffffffff811682602052806130ae578160601c8061301a578560601b845560019450506130f2565b85810361302757506130f2565b600184015460601c80613048578660601b60018601556001955050506130f2565b8681036130565750506130f2565b600285015460601c80613078578760601b6002870155600196505050506130f2565b878103613087575050506130f2565b5f928352604080842060019055918352818320600290558252902060039055506007908117905b845f5260405f2080546130f057600191821c8083018255919450816130dc578560601b6003178455506130f2565b8560601b82850155826002018455506130f2565b505b50505092915050565b63978aab926004525f8281526024812073ffffffffffffffffffffffffffffffffffffffff92909216917fffffffffffffffffffffffffffffffffffffffffffffff04498025ad2b40474183016131595763f5a267f15f526004601cfd5b8261316b5768fbb67fda52d4bfb8bf92505b80546bffffffffffffffffffffffff8116806131ea5760019350848260601c036131a85760018301805484556002840180549091555f90556130f2565b84600184015460601c036131c95760028301805460018501555f90556130f2565b84600284015460601c036131e2575f60028401556130f2565b5f93506130f2565b82602052845f5260405f208054806132035750506130f2565b60018360011c039250826001820314613233578285015460601c8060601b60018303870155805f52508060405f20555b5083547fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600192831b1782179093555f909255509392505050565b6318fb58646004525f81815260249020801954604051919068fbb67fda52d4bfb8bf9060208401816132e857835480156132e2578084141502815260018481015490925080156132e2578084141502602082015260028481015490925080156132e2576003925083811415810260408301525b50613313565b8160011c91505f5b8281101561331157848101548481141502600582901b8301526001016132f0565b505b8185528160051b810160405250505050919050565b5f6122e8838361365d565b6318fb58646004525f8281526024812068fbb67fda52d4bfb8bf83036133605763f5a267f15f526004601cfd5b826133725768fbb67fda52d4bfb8bf92505b8019548160205280613416578154806133925784835560019350506123d3565b84810361339f57506123d3565b6001830154806133ba578560018501556001945050506123d3565b8581036133c85750506123d3565b6002840154806133e457866002860155600195505050506123d3565b8681036133f3575050506123d3565b5f9283526040808420600190559183528183206002905582529020600390555060075b835f5260405f2080546130f257600191821c8381018690558083019182905590821b82178319559092506123d3565b6335278d125f526004601cfd5b60605f831561345f576001175b6040517fff0000000000000000000000000000000000000000000000000000000000000060f883901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e087901b166021820152602501604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526134fa918590602001613ec2565b6040516020818303038152906040529150509392505050565b60405181515f9038906020850186885af1613530573d5f823e3d81fd5b3d61354857833b61354857635a836a5f5f526004601cfd5b3d8152602081013d5f823e3d016040529392505050565b6318fb58646004525f8281526024812068fbb67fda52d4bfb8bf830361358c5763f5a267f15f526004601cfd5b8261359e5768fbb67fda52d4bfb8bf92505b801954806135ff5760019250838254036135cb5760018201805483556002830180549091555f90556123d3565b836001830154036135e95760028201805460018401555f90556123d3565b836002830154036123ba575f60028301556123d3565b81602052835f5260405f208054806136185750506123d3565b60018360011c03925082600182031461364257828401548060018303860155805f52508060405f20555b5060018260011b178319555f81555060019250505092915050565b6318fb58646004525f8281526024812068fbb67fda52d4bfb8bf830361368a5763f5a267f15f526004601cfd5b8261369c5768fbb67fda52d4bfb8bf92505b8019546136cd5780546001925083146136de57600181015483146136de57600281015483146136de575f91506136de565b80602052825f5260405f2054151591505b5092915050565b5f602082840312156136f5575f5ffd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146122e8575f5ffd5b803563ffffffff81168114613737575f5ffd5b919050565b5f5f5f6060848603121561374e575f5ffd5b61375784613724565b9250602084013567ffffffffffffffff811115613772575f5ffd5b84016101208187031215613784575f5ffd5b929592945050506040919091013590565b73ffffffffffffffffffffffffffffffffffffffff81168114610a9b575f5ffd5b5f5f83601f8401126137c6575f5ffd5b50813567ffffffffffffffff8111156137dd575f5ffd5b6020830191508360208285010111156137f4575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a031215613811575f5ffd5b61381a88613724565b9650602088013561382a81613795565b955060408801359450606088013567ffffffffffffffff81111561384c575f5ffd5b6138588a828b016137b6565b909550935050608088013567ffffffffffffffff811115613877575f5ffd5b6138838a828b016137b6565b989b979a50959850939692959293505050565b5f602082840312156138a6575f5ffd5b81356122e881613795565b602080825282518282018190525f918401906040840190835b818110156138e85783518352602093840193909201916001016138ca565b509095945050505050565b5f5f5f5f5f60808688031215613907575f5ffd5b61391086613724565b9450602086013561392081613795565b935060408601359250606086013567ffffffffffffffff811115613942575f5ffd5b61394e888289016137b6565b969995985093965092949392505050565b5f6020828403121561396f575f5ffd5b6122e882613724565b5f5f5f5f5f5f5f5f60c0898b03121561398f575f5ffd5b883561399a81613795565b97506139a860208a01613724565b965060408901356139b881613795565b955060608901359450608089013567ffffffffffffffff8111156139da575f5ffd5b6139e68b828c016137b6565b90955093505060a089013567ffffffffffffffff811115613a05575f5ffd5b613a118b828c016137b6565b999c989b5096995094979396929594505050565b5f5f60208385031215613a36575f5ffd5b823567ffffffffffffffff811115613a4c575f5ffd5b613a58858286016137b6565b90969095509350505050565b5f60208284031215613a74575f5ffd5b5035919050565b5f5f60208385031215613a8c575f5ffd5b823567ffffffffffffffff811115613aa2575f5ffd5b8301601f81018513613ab2575f5ffd5b803567ffffffffffffffff811115613ac8575f5ffd5b8560208260061b8401011115613adc575f5ffd5b6020919091019590945092505050565b5f5f60408385031215613afd575f5ffd5b8235613b0881613795565b9150613b1660208401613724565b90509250929050565b5f6101408201905082518252602083015160208301526040830151613b5c604084018273ffffffffffffffffffffffffffffffffffffffff169052565b506060830151613b75606084018264ffffffffff169052565b506080830151613b8e608084018264ffffffffff169052565b5060a0830151613ba760a084018264ffffffffff169052565b5060c0830151613bbb60c084018215159052565b5060e0830151613bd760e084018267ffffffffffffffff169052565b5061010083015161010083015261012083015161012083015292915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6122e86020830184613bf6565b5f5f5f5f5f5f60a08789031215613c69575f5ffd5b8635613c7481613795565b9550613c8260208801613724565b94506040870135613c9281613795565b935060608701359250608087013567ffffffffffffffff811115613cb4575f5ffd5b613cc089828a016137b6565b979a9699509497509295939492505050565b5f60208284031215613ce2575f5ffd5b5051919050565b5f60208284031215613cf9575f5ffd5b815167ffffffffffffffff811681146122e8575f5ffd5b5f5f5f60608486031215613d22575f5ffd5b613d2b84613724565b9250602084013561378481613795565b5f60208284031215613d4b575f5ffd5b815180151581146122e8575f5ffd5b5f60208284031215613d6a575f5ffd5b81516122e881613795565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561067357610673613dcf565b8181038181111561067357610673613dcf565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201525f612a196060830184613bf6565b5f81518060208401855e5f93019283525090919050565b7fff0000000000000000000000000000000000000000000000000000000000000081525f6122e86001830184613e56565b604081525f613eb06040830185613bf6565b8281036020840152612a198185613bf6565b5f612050613ed08386613e56565b84613e5656";
1145
+ "0x6080604052348015600e575f5ffd5b5060156019565b60bd565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef520008054640100000000900460ff16156064576040516366008a2d60e01b815260040160405180910390fd5b805463ffffffff908116101560ba57805463ffffffff191663ffffffff90811782556040519081527fe9c9b456cb2994b80aeef036cf59d26e9617df80f816a6ee5a5b4166e07e2f5c9060200160405180910390a15b50565b61455d806100ca5f395ff3fe608060405234801561000f575f5ffd5b50600436106101bb575f3560e01c80636d70f7ae116100f3578063a1308f2711610093578063da43f3d61161006e578063da43f3d614610552578063e348da1314610565578063e7db7f7e14610578578063fad8b32a146105e2575f5ffd5b8063a1308f2714610501578063c1a287e214610540578063cfdbf2541461054a575f5ffd5b8063885c1d09116100ce578063885c1d09146103255780638a91b0e3146103385780639e94f3ab1461034b578063a07da647146104ee575f5ffd5b80636d70f7ae146102b857806379dda585146102cb5780638522ddcb14610312575f5ffd5b80633d6bda321161015e5780634306ea80116101395780634306ea8014610276578063465d33e0146102895780636a0df59e1461029c5780636d61fe70146102a5575f5ffd5b80633d6bda32146102305780633e5f6091146102435780633f41826e14610263575f5ffd5b80630c288470116101995780630c288470146102155780631313f4101461021d5780631e8ffc7f146102275780632a3d428c146101fe575f5ffd5b806301ffc9a7146101bf5780630972a3e6146101e75780630ab8785f146101fe575b5f5ffd5b6101d26101cd366004613c91565b6105f5565b60405190151581526020015b60405180910390f35b6101f061a8c081565b6040519081526020016101de565b6101f061020c366004613ce8565b60019392505050565b6101f0607881565b61022561068d565b005b6101f0610e1081565b61022561023e366004613da7565b61076d565b610256610251366004613e42565b61079f565b6040516101de9190613e5d565b610225610271366004613e9f565b6107ee565b610225610284366004613f0b565b61081e565b610225610297366004613f24565b610ab2565b6101f061546081565b6102256102b3366004613fd1565b610b95565b6101d26102c6366004613e42565b6111ee565b7fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb86055460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b6101f0610320366004614010565b611219565b610225610333366004614027565b611223565b610225610346366004613fd1565b611906565b6104e1610359366004614098565b60408051610160810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091527fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb860073ffffffffffffffffffffffffffffffffffffffff8481165f90815260019283016020908152604080832063ffffffff8816845282529182902082516101608101845281548152948101549185019190915260028101548084169285019290925274010000000000000000000000000000000000000000820464ffffffffff908116606086015279010000000000000000000000000000000000000000000000000090920482166080850152600381015491821660a085015265010000000000820460ff16151560c0850152660100000000000090910467ffffffffffffffff1660e0840152600481015461010084015260058101546101208401526006015416610140820152905092915050565b6040516101de91906140cb565b6102256104fc366004613f0b565b611b0b565b604080518082018252601f81527f746f776e732e737562736372697074696f6e2d6d6f64756c652e312e302e3000602082015290516101de9190614211565b6101f06203f48081565b6101f0603281565b610225610560366004613e42565b611c08565b610225610573366004613e42565b611d15565b6105b1610586366004614223565b7fffffffff000000000000000000000000000000000000000000000000000000009695505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101de565b6102256105f0366004613e42565b611dfe565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f46c0c1b400000000000000000000000000000000000000000000000000000000148061068757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef5200054640100000000900460ff166106f0576040517f77a399b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107197f99b0d7fb00000000000000000000000000000000000000000000000000000000611ee7565b6107427fab3e34c100000000000000000000000000000000000000000000000000000000611ee7565b61076b7f28171ad000000000000000000000000000000000000000000000000000000000611ee7565b565b6107967fabbbbc730000000000000000000000000000000000000000000000000000000061203c565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff81165f9081527fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb86026020526040902060609061068790612044565b6108177fabbbbc730000000000000000000000000000000000000000000000000000000061203c565b5050505050565b688000000000ab143c064660010361084857805c1561084057805f526004601cfd5b30815d61085d565b3081540361085957805f526004601cfd5b3081555b507fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb860061088a813384612055565b6108b7576108b77faacf701b0000000000000000000000000000000000000000000000000000000061203c565b335f908152600182016020908152604080832063ffffffff861684529091529020600381015465010000000000900460ff1615610917576109177ff618dcd60000000000000000000000000000000000000000000000000000000061203c565b61092081612096565b600281015481546040517f17c9570900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216915f9183916317c95709916109809160040190815260200190565b602060405180830381865afa15801561099b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bf91906142a1565b90505f8273ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a0b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2f91906142b8565b9050610a3d84848484612174565b60405163ffffffff87169033907f8134c93b482584112545c85fb3aa70e029203fd8fd1e2fe0d73c94122859a797905f90a35050505050610a7c600190565b15610aa257688000000000ab143c0646600103610a9a575f815d5050565b8081555b5050565b5f688000000000ab143c065d5b50565b73ffffffffffffffffffffffffffffffffffffffff86163014610af857610af87f90467bf50000000000000000000000000000000000000000000000000000000061203c565b73ffffffffffffffffffffffffffffffffffffffff88165f9081527fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb86016020908152604080832063ffffffff8b16845290915290206003015465010000000000900460ff1680610b8a57610b8a7fe01d33200000000000000000000000000000000000000000000000000000000061203c565b505050505050505050565b688000000000ab143c0646600103610bbf57805c15610bb757805f526004601cfd5b30815d610bd4565b30815403610bd057805f526004601cfd5b3081555b505f8080610be4848601866142df565b925092509250610bf3826123b0565b8263ffffffff165f03610c2957610c297faacf701b0000000000000000000000000000000000000000000000000000000061203c565b6040517fc57a9c560000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff83169063c57a9c5690602401602060405180830381865afa158015610c92573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb6919061430a565b15610ce457610ce47f366b82580000000000000000000000000000000000000000000000000000000061203c565b6040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052339073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015610d4f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d739190614329565b73ffffffffffffffffffffffffffffffffffffffff1614610db757610db77ff107dccb0000000000000000000000000000000000000000000000000000000061203c565b5f7fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb860060058101546040517fc0bc679600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015292935091169063c0bc679690602401602060405180830381865afa158015610e4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e6f91906142a1565b5f03610e9e57610e9e7fc3ca61ad0000000000000000000000000000000000000000000000000000000061203c565b335f9081526002820160205260409020610ec19063ffffffff808716906123f416565b610eee57610eee7faacf701b0000000000000000000000000000000000000000000000000000000061203c565b335f908152600482016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205415610f4e57610f4e7f9921212f0000000000000000000000000000000000000000000000000000000061203c565b335f90815260048281016020908152604080842073ffffffffffffffffffffffffffffffffffffffff88168086529252808420869055517f17c957090000000000000000000000000000000000000000000000000000000081529182018590528592916317c9570990602401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff991906142a1565b905042811161102b5761102b7fb8aa413f0000000000000000000000000000000000000000000000000000000061203c565b5f8273ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611075573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109991906142b8565b335f908152600186016020908152604080832063ffffffff8c16845290915290206002810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a1617905586815590915061110b42612406565b8160020160146101000a81548164ffffffffff021916908364ffffffffff16021790555061113b81858585612174565b60038101546040805188815264ffffffffff9092166020830152810184905273ffffffffffffffffffffffffffffffffffffffff88169063ffffffff8a169033907f8c6c35fff224538ee3da0324c24ba58476e48a9c3f3ec18b6f5c296d14d3086d9060600160405180910390a450505050505050506111b9600190565b156111de57688000000000ab143c06466001036111d8575f815d505050565b80555050565b5f688000000000ab143c065d5050565b5f6106877fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb860083612420565b5f610687826124f2565b688000000000ab143c064660010361124d57805c1561124557805f526004601cfd5b30815d611262565b3081540361125e57805f526004601cfd5b3081555b50806032811115611296576112967f2efeb7010000000000000000000000000000000000000000000000000000000061203c565b805f036112c6576112c67f8ac7f0550000000000000000000000000000000000000000000000000000000061203c565b7fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb86006112f18133612420565b61131e5761131e7f59530ce90000000000000000000000000000000000000000000000000000000061203c565b5f5b828110156118fb575f826001015f87878581811061134057611340614344565b6113569260206040909202019081019150613e42565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8787858181106113a2576113a2614344565b90506040020160200160208101906113ba9190613f0b565b63ffffffff168152602081019190915260409081015f9081206002810154815493517f5803909f00000000000000000000000000000000000000000000000000000000815291945073ffffffffffffffffffffffffffffffffffffffff16928391635803909f916114319160040190815260200190565b602060405180830381865afa15801561144c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061147091906142a1565b90505f8273ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114bc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e091906142b8565b67ffffffffffffffff1690505f5f5f611522878d8d8b81811061150557611505614344565b61151b9260206040909202019081019150613e42565b8787612532565b925092509250821561170157600181600981111561154257611542614371565b036115e6578b8b8981811061155957611559614344565b90506040020160200160208101906115719190613f0b565b63ffffffff168c8c8a81811061158957611589614344565b61159f9260206040909202019081019150613e42565b73ffffffffffffffffffffffffffffffffffffffff167ffaea115d6b9a6bc3133af871ecb2f222b8d63f750071a320a65fe4c64e07502360405160405180910390a36116f5565b811561164757611647878d8d8b81811061160257611602614344565b6116189260206040909202019081019150613e42565b8e8e8c81811061162a5761162a614344565b90506040020160200160208101906116429190613f0b565b61286d565b8b8b8981811061165957611659614344565b90506040020160200160208101906116719190613f0b565b63ffffffff168c8c8a81811061168957611689614344565b61169f9260206040909202019081019150613e42565b73ffffffffffffffffffffffffffffffffffffffff167f5db17eb6b69c9f0cf51e3b1f2c90a067a24697d427ba54c65f211120d3da7c056116df846128e4565b6040516116ec9190614211565b60405180910390a35b505050505050506118f3565b86546040517f17c957090000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff8916916317c95709916117599160040190815260200190565b602060405180830381865afa158015611774573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179891906142a1565b9050808860050154146118c75760038801546117c99082906601000000000000900467ffffffffffffffff16612bdb565b6003890180547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001664ffffffffff92909216919091179055600588018190558c8c8a81811061181a5761181a614344565b90506040020160200160208101906118329190613f0b565b63ffffffff168d8d8b81811061184a5761184a614344565b6118609260206040909202019081019150613e42565b60038a015460405164ffffffffff909116815273ffffffffffffffffffffffffffffffffffffffff91909116907fa1d0c7cfbaf330ea81d2b0cac3c06d95401230169e4bceea6ffc02233ef011519060200160405180910390a350505050505050506118f3565b6118ea888e8e8c8181106118dd576118dd614344565b9050604002018989612c4e565b50505050505050505b600101611320565b5050506111b9600190565b688000000000ab143c064660010361193057805c1561192857805f526004601cfd5b30815d611945565b3081540361194157805f526004601cfd5b3081555b505f61195382840184613f0b565b335f9081527fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb8602602052604090209091507fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb8600906119b89063ffffffff8085169061346916565b6119e5576119e57faacf701b0000000000000000000000000000000000000000000000000000000061203c565b335f81815260018084016020908152604080842063ffffffff88168086528184528286208787526004808a01865284882060028301805473ffffffffffffffffffffffffffffffffffffffff168a529087528589208990558389529390955286815594850186905581547fffff000000000000000000000000000000000000000000000000000000000000169091556003840180547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000169055918301849055600583018490556006830180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055519193909290917f48c4a5a219af3d077894cac7e6b26c5cdb83cf91d718428985a3f4a85e9ed45d9190a35050506111b9600190565b688000000000ab143c0646600103611b3557805c15611b2d57805f526004601cfd5b30815d611b4a565b30815403611b4657805f526004601cfd5b3081555b50335f9081527fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb86016020908152604080832063ffffffff85168452909152902060038101547fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb8600919065010000000000900460ff16611bea57611bea7fe01d33200000000000000000000000000000000000000000000000000000000061203c565b611bf381612096565b611bfe81338561286d565b5050610a7c600190565b7f4675fa8241f86f37157864d3d49b85ad4b164352c516da28e1678a90470ae3005473ffffffffffffffffffffffffffffffffffffffff163314611c7f576040517f65f490650000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b611c88816123b0565b7fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb860580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f40f94fbaa39b621298d12a4ed99759484633cff7680c01e6bb3a07ae7aa8d795905f90a250565b7f4675fa8241f86f37157864d3d49b85ad4b164352c516da28e1678a90470ae3005473ffffffffffffffffffffffffffffffffffffffff163314611d87576040517f65f49065000000000000000000000000000000000000000000000000000000008152336004820152602401611c76565b611d90816123b0565b611dba7fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb860082613474565b5060405173ffffffffffffffffffffffffffffffffffffffff8216907f5b6a420b639feabfb011a07742a6ae14ef72f35d1a330ed65f42216c95bc6c2e905f90a250565b7f4675fa8241f86f37157864d3d49b85ad4b164352c516da28e1678a90470ae3005473ffffffffffffffffffffffffffffffffffffffff163314611e70576040517f65f49065000000000000000000000000000000000000000000000000000000008152336004820152602401611c76565b611e79816123b0565b611ea37fd241b3ceee256b40f80fe7a66fe789234ac389ed1408c472c4ee1cbb1deb8600826135f8565b5060405173ffffffffffffffffffffffffffffffffffffffff8216907fa5f3b7626fd86ff989f1d22cf3d41d74591ea6eb99241079400b0c332a9a8f11905f90a250565b7fffffffff0000000000000000000000000000000000000000000000000000000081165f9081527f81088bbc801e045ea3e7620779ab349988f58afbdfba10dff983df3f33522b00602052604090205460ff16611fbb577fffffffff0000000000000000000000000000000000000000000000000000000081165f9081527f81088bbc801e045ea3e7620779ab349988f58afbdfba10dff983df3f33522b006020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611fed565b6040517ff2cfeefa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fffffffff000000000000000000000000000000000000000000000000000000008216907f78f84e5b1c5c05be2b5ad3800781dd404d6d6c6302bc755c0fe20f58a33a7f22905f90a250565b805f5260045ffd5b60606106876120528361376c565b90565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600284016020526040812061208e9063ffffffff8085169061382516565b949350505050565b600281015481546040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101919091525f9173ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa158015612108573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061212c9190614329565b90503373ffffffffffffffffffffffffffffffffffffffff821614610a9e57610a9e7f59530ce90000000000000000000000000000000000000000000000000000000061203c565b6003840180547fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff166501000000000017905583546040517f5803909f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851691635803909f916121fd919060040190815260200190565b602060405180830381865afa158015612218573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061223c91906142a1565b600485810191909155600585018390556003850180547fffffffffffffffffffffffffffffffffffff0000000000000000ffffffffffff16660100000000000067ffffffffffffffff851602179055604080517f657e45e8000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff86169263657e45e8928082019260209290918290030181865afa1580156122f2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123169190614329565b6006850180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556123718267ffffffffffffffff8316612bdb565b60039490940180547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001664ffffffffff90951694909417909355505050565b73ffffffffffffffffffffffffffffffffffffffff8116610aaf57610aaf7fe6c4247b0000000000000000000000000000000000000000000000000000000061203c565b5f6123ff8383613830565b9392505050565b5f65010000000000821061241c5761241c613942565b5090565b63978aab926004525f8281526024812073ffffffffffffffffffffffffffffffffffffffff92909216917fffffffffffffffffffffffffffffffffffffffffffffff04498025ad2b404741830161247e5763f5a267f15f526004601cfd5b826124905768fbb67fda52d4bfb8bf92505b80546bffffffffffffffffffffffff81166124d95760019250838160601c03156124ea57600182015460601c84146124ea57600282015460601c84146124ea575b5f92506124ea565b81602052835f5260405f2054151592505b505092915050565b5f610e10821161250457506078919050565b61546082116125165750610e10919050565b6201518082116125295750615460919050565b5061a8c0919050565b60038401545f90819081904264ffffffffff909116111561255b5750600191505f905081612863565b600387015465010000000000900460ff1661257f5750600191505f90506002612863565b6003870154429061259b906203f4809064ffffffffff166143cb565b10156125b05750600191508190506003612863565b600287015487546040517fc57a9c5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163c57a9c569161260c9160040190815260200190565b602060405180830381865afa158015612627573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061264b919061430a565b1561265f5750600191508190506004612863565b600287015487546040517f6352211e000000000000000000000000000000000000000000000000000000008152600481019190915273ffffffffffffffffffffffffffffffffffffffff888116921690636352211e90602401602060405180830381865afa1580156126d3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126f79190614329565b73ffffffffffffffffffffffffffffffffffffffff16146127215750600191508190506005612863565b8487600401541461273b5750600191508190506006612863565b6002870154604080517f657e45e800000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff169163657e45e89160048083019260209291908290030181865afa1580156127aa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127ce9190614329565b600689015490915073ffffffffffffffffffffffffffffffffffffffff80831691161461280657600180600993509350935050612863565b85612811828961394f565b101561282857600180600793509350935050612863565b60038801546601000000000000900467ffffffffffffffff16851461285857600180600893509350935050612863565b5f5f5f935093509350505b9450945094915050565b6003830180547fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff16905560405163ffffffff82169073ffffffffffffffffffffffffffffffffffffffff8416907fd01480b28a9baefd1cd771d8109d1abf2380614146253e17b61774b7b3fb77f1905f90a3505050565b606060018260098111156128fa576128fa614371565b0361293857505060408051808201909152600781527f4e4f545f44554500000000000000000000000000000000000000000000000000602082015290565b600282600981111561294c5761294c614371565b0361298a57505060408051808201909152600881527f494e414354495645000000000000000000000000000000000000000000000000602082015290565b600382600981111561299e5761299e614371565b036129dc57505060408051808201909152600a81527f504153545f475241434500000000000000000000000000000000000000000000602082015290565b60048260098111156129f0576129f0614371565b03612a2e57505060408051808201909152601181527f4d454d424552534849505f42414e4e4544000000000000000000000000000000602082015290565b6005826009811115612a4257612a42614371565b03612a8057505060408051808201909152600981527f4e4f545f4f574e45520000000000000000000000000000000000000000000000602082015290565b6006826009811115612a9457612a94614371565b03612ad257505060408051808201909152601581527f52454e4557414c5f50524943455f4348414e4745440000000000000000000000602082015290565b6007826009811115612ae657612ae6614371565b03612b2457505060408051808201909152601481527f494e53554646494349454e545f42414c414e4345000000000000000000000000602082015290565b6008826009811115612b3857612b38614371565b03612b7657505060408051808201909152601081527f4455524154494f4e5f4348414e47454400000000000000000000000000000000602082015290565b6009826009811115612b8a57612b8a614371565b03612bc857505060408051808201909152601081527f43555252454e43595f4348414e47454400000000000000000000000000000000602082015290565b505060408051602081019091525f815290565b5f428311612bf357612bec42612406565b9050610687565b5f612bfd836124f2565b90505f612c0a42866143de565b9050808210612c3857612c2f612c2082846143de565b612c2a90876143cb565b612406565b92505050610687565b612c45612c2a83876143de565b95945050505050565b5f8273ffffffffffffffffffffffffffffffffffffffff1663657e45e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c98573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cbc9190614329565b90505f855f0154604051602401612cd591815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c9669ac00000000000000000000000000000000000000000000000000000000179052905060607fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff841601612e38576002870154604051612dbb9173ffffffffffffffffffffffffffffffffffffffff1690869085906024016143f1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb61d27f6000000000000000000000000000000000000000000000000000000001790529050613059565b604080516002808252606082019092525f91816020015b60408051606080820183525f808352602083015291810191909152815260200190600190039081612e4f579050506040805160608101825273ffffffffffffffffffffffffffffffffffffffff80881682525f602083015260028c0154835191166024820152604481018990529293509190820190606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790529052815182905f90612f5157612f51614344565b60200260200101819052506040518060600160405280896002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020018481525081600181518110612fc357612fc3614344565b602002602001018190525080604051602401612fdf9190614425565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f34fcd5be000000000000000000000000000000000000000000000000000000001790529150505b5f6130ec61306d6040890160208a01613f0b565b60028a01548a546040805173ffffffffffffffffffffffffffffffffffffffff90931660208401528201525f90606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526130d8916020016144f4565b6040516020818303038152906040526139cb565b90505f8282604051602401613102929190614525565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff2680c0f000000000000000000000000000000000000000000000000000000001790529091506131939061318c908a018a613e42565b5f83613a8c565b5088546040517f17c957090000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff8a16916317c95709916131ec9160040190815260200190565b602060405180830381865afa158015613207573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061322b91906142a1565b90505f8873ffffffffffffffffffffffffffffffffffffffff16638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613277573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061329b91906142b8565b67ffffffffffffffff1690506132b18282612bdb565b60038c0180547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001664ffffffffff929092169190911790556132f242612406565b8b60020160196101000a81548164ffffffffff021916908364ffffffffff160217905550818b60050181905550878b6001015f82825461333291906143cb565b909155505060028b015473ffffffffffffffffffffffffffffffffffffffff1661336260408c0160208d01613f0b565b63ffffffff1661337560208d018d613e42565b8d5460038f01546040805192835264ffffffffff9091166020830152810186905273ffffffffffffffffffffffffffffffffffffffff91909116907ffb5958fb22b1f99fbf55be0d5e6a01bc298b05da5ab1a8cc30d3677176d152359060600160405180910390a46133ed60408b0160208c01613f0b565b63ffffffff1661340060208c018c613e42565b73ffffffffffffffffffffffffffffffffffffffff167f87a8f6f83796c73b3d3b1cb327beee5ff8d165dc8aa5e2764ad44fc7ff1404718a8e60010154604051613454929190918252602082015260400190565b60405180910390a35050505050505050505050565b5f6123ff8383613ad8565b63978aab926004525f8281526024812073ffffffffffffffffffffffffffffffffffffffff92909216917fffffffffffffffffffffffffffffffffffffffffffffff04498025ad2b40474183016134d25763f5a267f15f526004601cfd5b826134e45768fbb67fda52d4bfb8bf92505b80546bffffffffffffffffffffffff811682602052806135ab578160601c80613517578560601b845560019450506135ef565b85810361352457506135ef565b600184015460601c80613545578660601b60018601556001955050506135ef565b8681036135535750506135ef565b600285015460601c80613575578760601b6002870155600196505050506135ef565b878103613584575050506135ef565b5f928352604080842060019055918352818320600290558252902060039055506007908117905b845f5260405f2080546135ed57600191821c8083018255919450816135d9578560601b6003178455506135ef565b8560601b82850155826002018455506135ef565b505b50505092915050565b63978aab926004525f8281526024812073ffffffffffffffffffffffffffffffffffffffff92909216917fffffffffffffffffffffffffffffffffffffffffffffff04498025ad2b40474183016136565763f5a267f15f526004601cfd5b826136685768fbb67fda52d4bfb8bf92505b80546bffffffffffffffffffffffff8116806136e75760019350848260601c036136a55760018301805484556002840180549091555f90556135ef565b84600184015460601c036136c65760028301805460018501555f90556135ef565b84600284015460601c036136df575f60028401556135ef565b5f93506135ef565b82602052845f5260405f208054806137005750506135ef565b60018360011c039250826001820314613730578285015460601c8060601b60018303870155805f52508060405f20555b5083547fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600192831b1782179093555f909255509392505050565b6318fb58646004525f81815260249020801954604051919068fbb67fda52d4bfb8bf9060208401816137e557835480156137df578084141502815260018481015490925080156137df578084141502602082015260028481015490925080156137df576003925083811415810260408301525b50613810565b8160011c91505f5b8281101561380e57848101548481141502600582901b8301526001016137ed565b505b8185528160051b810160405250505050919050565b5f6123ff8383613bd6565b6318fb58646004525f8281526024812068fbb67fda52d4bfb8bf830361385d5763f5a267f15f526004601cfd5b8261386f5768fbb67fda52d4bfb8bf92505b80195481602052806139135781548061388f5784835560019350506124ea565b84810361389c57506124ea565b6001830154806138b7578560018501556001945050506124ea565b8581036138c55750506124ea565b6002840154806138e157866002860155600195505050506124ea565b8681036138f0575050506124ea565b5f9283526040808420600190559183528183206002905582529020600390555060075b835f5260405f2080546135ef57600191821c8381018690558083019182905590821b82178319559092506124ea565b6335278d125f526004601cfd5b5f7fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff8416016139ab575073ffffffffffffffffffffffffffffffffffffffff811631610687565b6123ff73ffffffffffffffffffffffffffffffffffffffff841683613c5e565b60605f83156139d8576001175b6040517fff0000000000000000000000000000000000000000000000000000000000000060f883901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e087901b166021820152602501604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052613a73918590602001614549565b6040516020818303038152906040529150509392505050565b60405181515f9038906020850186885af1613aa9573d5f823e3d81fd5b3d613ac157833b613ac157635a836a5f5f526004601cfd5b3d8152602081013d5f823e3d016040529392505050565b6318fb58646004525f8281526024812068fbb67fda52d4bfb8bf8303613b055763f5a267f15f526004601cfd5b82613b175768fbb67fda52d4bfb8bf92505b80195480613b78576001925083825403613b445760018201805483556002830180549091555f90556124ea565b83600183015403613b625760028201805460018401555f90556124ea565b836002830154036124d1575f60028301556124ea565b81602052835f5260405f20805480613b915750506124ea565b60018360011c039250826001820314613bbb57828401548060018303860155805f52508060405f20555b5060018260011b178319555f81555060019250505092915050565b6318fb58646004525f8281526024812068fbb67fda52d4bfb8bf8303613c035763f5a267f15f526004601cfd5b82613c155768fbb67fda52d4bfb8bf92505b801954613c46578054600192508314613c575760018101548314613c575760028101548314613c57575f9150613c57565b80602052825f5260405f2054151591505b5092915050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b5f60208284031215613ca1575f5ffd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146123ff575f5ffd5b803563ffffffff81168114613ce3575f5ffd5b919050565b5f5f5f60608486031215613cfa575f5ffd5b613d0384613cd0565b9250602084013567ffffffffffffffff811115613d1e575f5ffd5b84016101208187031215613d30575f5ffd5b929592945050506040919091013590565b73ffffffffffffffffffffffffffffffffffffffff81168114610aaf575f5ffd5b5f5f83601f840112613d72575f5ffd5b50813567ffffffffffffffff811115613d89575f5ffd5b602083019150836020828501011115613da0575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a031215613dbd575f5ffd5b613dc688613cd0565b96506020880135613dd681613d41565b955060408801359450606088013567ffffffffffffffff811115613df8575f5ffd5b613e048a828b01613d62565b909550935050608088013567ffffffffffffffff811115613e23575f5ffd5b613e2f8a828b01613d62565b989b979a50959850939692959293505050565b5f60208284031215613e52575f5ffd5b81356123ff81613d41565b602080825282518282018190525f918401906040840190835b81811015613e94578351835260209384019390920191600101613e76565b509095945050505050565b5f5f5f5f5f60808688031215613eb3575f5ffd5b613ebc86613cd0565b94506020860135613ecc81613d41565b935060408601359250606086013567ffffffffffffffff811115613eee575f5ffd5b613efa88828901613d62565b969995985093965092949392505050565b5f60208284031215613f1b575f5ffd5b6123ff82613cd0565b5f5f5f5f5f5f5f5f60c0898b031215613f3b575f5ffd5b8835613f4681613d41565b9750613f5460208a01613cd0565b96506040890135613f6481613d41565b955060608901359450608089013567ffffffffffffffff811115613f86575f5ffd5b613f928b828c01613d62565b90955093505060a089013567ffffffffffffffff811115613fb1575f5ffd5b613fbd8b828c01613d62565b999c989b5096995094979396929594505050565b5f5f60208385031215613fe2575f5ffd5b823567ffffffffffffffff811115613ff8575f5ffd5b61400485828601613d62565b90969095509350505050565b5f60208284031215614020575f5ffd5b5035919050565b5f5f60208385031215614038575f5ffd5b823567ffffffffffffffff81111561404e575f5ffd5b8301601f8101851361405e575f5ffd5b803567ffffffffffffffff811115614074575f5ffd5b8560208260061b8401011115614088575f5ffd5b6020919091019590945092505050565b5f5f604083850312156140a9575f5ffd5b82356140b481613d41565b91506140c260208401613cd0565b90509250929050565b5f6101608201905082518252602083015160208301526040830151614108604084018273ffffffffffffffffffffffffffffffffffffffff169052565b506060830151614121606084018264ffffffffff169052565b50608083015161413a608084018264ffffffffff169052565b5060a083015161415360a084018264ffffffffff169052565b5060c083015161416760c084018215159052565b5060e083015161418360e084018267ffffffffffffffff169052565b50610100830151610100830152610120830151610120830152610140830151613c5761014084018273ffffffffffffffffffffffffffffffffffffffff169052565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6123ff60208301846141c5565b5f5f5f5f5f5f60a08789031215614238575f5ffd5b863561424381613d41565b955061425160208801613cd0565b9450604087013561426181613d41565b935060608701359250608087013567ffffffffffffffff811115614283575f5ffd5b61428f89828a01613d62565b979a9699509497509295939492505050565b5f602082840312156142b1575f5ffd5b5051919050565b5f602082840312156142c8575f5ffd5b815167ffffffffffffffff811681146123ff575f5ffd5b5f5f5f606084860312156142f1575f5ffd5b6142fa84613cd0565b92506020840135613d3081613d41565b5f6020828403121561431a575f5ffd5b815180151581146123ff575f5ffd5b5f60208284031215614339575f5ffd5b81516123ff81613d41565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156106875761068761439e565b818103818111156106875761068761439e565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201525f612c4560608301846141c5565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156144d1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff81511686526020810151602087015260408101519050606060408701526144bb60608701826141c5565b955050602093840193919091019060010161444b565b50929695505050505050565b5f81518060208401855e5f93019283525090919050565b7fff0000000000000000000000000000000000000000000000000000000000000081525f6123ff60018301846144dd565b604081525f61453760408301856141c5565b8281036020840152612c4581856141c5565b5f61208e61455783866144dd565b846144dd56";
1166
1146
 
1167
1147
  type SubscriptionModuleFacetConstructorParams =
1168
1148
  | [signer?: Signer]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@towns-protocol/generated",
3
- "version": "0.0.452",
3
+ "version": "0.0.453",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "build": "bun ./scripts/prepare.js",
@@ -13,7 +13,7 @@
13
13
  "ethers": "^5.8.0"
14
14
  },
15
15
  "devDependencies": {
16
- "@towns-protocol/contracts": "^0.0.452",
16
+ "@towns-protocol/contracts": "^0.0.453",
17
17
  "@typechain/ethers-v5": "^11.1.2",
18
18
  "typechain": "^8.3.2"
19
19
  },
@@ -34,5 +34,5 @@
34
34
  "publishConfig": {
35
35
  "access": "public"
36
36
  },
37
- "gitHead": "9a059c5131953b959b34917c260ff209af281cb1"
37
+ "gitHead": "f94c8877f1ce645d78158e8367c0c05b171c9141"
38
38
  }