aiia-vault-sdk 1.2.9 → 1.2.12
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.
- package/dist/MultiLevelReferralNFT.d.ts +13 -0
- package/dist/MultiLevelReferralNFT.js +1 -1
- package/dist/TradingVault.d.ts +120 -3
- package/dist/TradingVault.js +1 -1
- package/dist/abis/NFTTicket.json +63 -2
- package/dist/abis/TradingVault.json +137 -2
- package/dist/contracts/MultiLevelReferralNFT.sol/NFTTicket.d.ts +39 -2
- package/dist/contracts/TradingVault.d.ts +84 -10
- package/dist/contracts.json +6 -5
- package/package.json +1 -1
@@ -162,12 +162,25 @@ export declare class MultiLevelReferralNFTSDK {
|
|
162
162
|
* @returns Populated transaction
|
163
163
|
*/
|
164
164
|
buildSetMaxReferralLevelsTx(maxLevels: number): Promise<ethers.ContractTransaction>;
|
165
|
+
/**
|
166
|
+
* Builds a transaction to set the share percentage for referrals
|
167
|
+
* @param sharePercent - The new share percentage (must be between 0 and 100)
|
168
|
+
* @returns Populated transaction
|
169
|
+
*/
|
170
|
+
buildSetSharePercentTx(sharePercent: number): Promise<ethers.ContractTransaction>;
|
165
171
|
/**
|
166
172
|
* Builds a transaction to buy an NFT with a referral code
|
167
173
|
* @param referralCode - The referral code to use
|
168
174
|
* @returns Populated transaction
|
169
175
|
*/
|
170
176
|
buildBuyNFTTx(referralCode: string): Promise<ethers.ContractTransaction>;
|
177
|
+
/**
|
178
|
+
* Builds a transaction to buy multiple NFTs in a single transaction
|
179
|
+
* @param referralCode - The referral code to use
|
180
|
+
* @param amount - The number of NFTs to buy
|
181
|
+
* @returns Populated transaction
|
182
|
+
*/
|
183
|
+
buildBatchBuyNFTTx(referralCode: string, amount: number): Promise<ethers.ContractTransaction>;
|
171
184
|
/**
|
172
185
|
* Builds a transaction to withdraw contract balance
|
173
186
|
* @param amount - Amount to withdraw in ETH
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";var e=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.MultiLevelReferralNFTSDK=void 0;const t=require("ethers"),r=e(require("./abis/NFTTicket.json")),a=e(require("./contracts.json")),s=require("./utils");exports.MultiLevelReferralNFTSDK=class{constructor(e,
|
1
|
+
"use strict";var e=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.MultiLevelReferralNFTSDK=void 0;const t=require("ethers"),r=e(require("./abis/NFTTicket.json")),a=e(require("./contracts.json")),s=require("./utils");exports.MultiLevelReferralNFTSDK=class{constructor(e,n){this.name="NFTTicket",this.isBootstrapped=!1,this.formatEventArgs=e=>{const{eventName:r,args:a}=e;switch(r){case"NFTMinted":return{...e,args:{...a,owner:a.owner.toLowerCase(),tokenId:Number(a.tokenId)}};case"ReferrerSet":return{...e,args:{...a,referrer:a.referrer.toLowerCase(),referee:a.referee.toLowerCase()}};case"ReferralPaid":return{...e,args:{...a,receiver:a.receiver.toLowerCase(),buyer:a.buyer.toLowerCase(),amount:Number(t.ethers.formatEther(a.amount)),level:Number(a.level),originalAmount:Number(t.ethers.formatEther(a.originalAmount)),tokenId:Number(a.tokenId)}};case"ReferralCodeSet":return{...e,args:{...a,user:a.user.toLowerCase(),referralCode:a.referralCode}};case"MaxReferralLevelsUpdated":return{...e,args:{...a,oldValue:Number(a.oldValue),newValue:Number(a.newValue)}};case"Transfer":return{...e,args:{...a,from:a.from.toLowerCase(),to:a.to.toLowerCase(),tokenId:Number(a.tokenId)}};default:return e}};const o=Array.isArray(e)?e:[e];this.providers=o.map((e=>new t.ethers.JsonRpcProvider(e)));const i=(0,s.getRandomProvider)(this.providers);this.contractAddress=(0,s.resolveContractAddress)(o[0],this.name,a.default,n),this.contract=new t.ethers.Contract(this.contractAddress,r.default.abi,i)}getRandomProvider(){return(0,s.getRandomProvider)(this.providers)}getContractWithRandomProvider(){return new t.ethers.Contract(this.contractAddress,r.default.abi,this.getRandomProvider())}async bootstrap(){if(this.isBootstrapped)return;const e=await Promise.all(this.providers.map(((e,t)=>(0,s.checkRpcHealth)(e,t))));if(this.providers=this.providers.filter(((t,r)=>e[r])),0===this.providers.length)throw new Error("No active RPC providers available");this.isBootstrapped=!0}async signAndSendTransaction(e,t,r={}){return(0,s.signAndSendTransaction)(e,t,(()=>this.getRandomProvider()),r,this.contract)}async getPrice(){const e=await this.contract.price();return Number(t.ethers.formatEther(e))}async getSharePercent(){const e=await this.contract.sharePercent();return Number(e)}async getMaxReferralLevels(){const e=await this.contract.maxReferralLevels();return Number(e)}async getReferrer(e){return await this.contract.referrers(e)}async getReferralCodeOwner(e){return await this.contract.referralCodes(e)}async getUserReferralCode(e){return await this.contract.userReferralCodes(e)}async buildGenerateReferralCodeTx(){return await this.contract.generateReferralCode.populateTransaction()}async buildGenerateReferralCodeForUserTx(e){return await this.contract.generateReferralCodeForUser.populateTransaction(e)}async buildSetPriceTx(e){const r=t.ethers.parseEther(e.toString());return await this.contract.setPrice.populateTransaction(r)}async buildSetMaxReferralLevelsTx(e){if(await this.bootstrap(),e<1||e>10)throw new Error("Maximum referral levels must be between 1 and 10");return await this.contract.setMaxReferralLevels.populateTransaction(e)}async buildSetSharePercentTx(e){if(await this.bootstrap(),e<0||e>100)throw new Error("Share percentage must be between 0 and 100");return await this.contract.setSharePercent.populateTransaction(e)}async buildBuyNFTTx(e){const r=await this.getPrice(),a=await this.contract.buy.populateTransaction(e);return a.value=t.ethers.parseEther(r.toString()),a}async buildBatchBuyNFTTx(e,r){if(await this.bootstrap(),r<=0)throw new Error("Amount must be greater than 0");const a=await this.getPrice()*r,s=await this.contract.batchBuy.populateTransaction(e,r);return s.value=t.ethers.parseEther(a.toString()),s}async buildWithdrawTx(e){const r=t.ethers.parseEther(e.toString());return await this.contract.withdraw.populateTransaction(r)}async buildMintToTx(e){return await this.bootstrap(),this.contract.mintTo.populateTransaction(e)}async buildBatchMintTx(e,t){return await this.bootstrap(),this.contract.batchMint.populateTransaction(e,t)}async getOwner(){return await this.contract.owner()}getContractAddress(){return this.contractAddress}async getAllEvents(e,t,r){return await this.bootstrap(),(0,s.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),e,t,r)}async streamEvents(e,t,r,a=1e3,n=5e3,o){return await this.bootstrap(),(0,s.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(e,t)=>this.getAllEvents(e,t),formatEvent:e=>this.formatEventArgs(e),onEvent:t,saveLatestBlock:r,fromBlock:e,batchSize:a,sleepTime:n,whitelistEvents:void 0,shouldContinue:o})}};
|
package/dist/TradingVault.d.ts
CHANGED
@@ -42,7 +42,7 @@ export declare class TradingVaultSDK {
|
|
42
42
|
attempts: number;
|
43
43
|
};
|
44
44
|
}>;
|
45
|
-
buildCreatePositionTx(amount: number, recipient: string): Promise<ethers.ContractTransaction>;
|
45
|
+
buildCreatePositionTx(amount: number, recipient: string, expiredAt?: number): Promise<ethers.ContractTransaction>;
|
46
46
|
buildReducePositionTx(tokenId: bigint, amount: number): Promise<ethers.ContractTransaction>;
|
47
47
|
buildReducePositionsTx(tokenIds: bigint[], amounts: number[]): Promise<ethers.ContractTransaction>;
|
48
48
|
buildBorrowCurrencyTx(amount: number): Promise<ethers.ContractTransaction>;
|
@@ -78,7 +78,7 @@ export declare class TradingVaultSDK {
|
|
78
78
|
timestamp: bigint;
|
79
79
|
}>): Promise<ethers.ContractTransaction>;
|
80
80
|
buildClaimERC20Tx(token: string, amount: number): Promise<ethers.ContractTransaction>;
|
81
|
-
buildCreatePositionTxRaw(amount: bigint, recipient: string): Promise<ethers.ContractTransaction>;
|
81
|
+
buildCreatePositionTxRaw(amount: bigint, recipient: string, expiredAt?: bigint): Promise<ethers.ContractTransaction>;
|
82
82
|
buildReducePositionTxRaw(tokenId: bigint, amount: bigint): Promise<ethers.ContractTransaction>;
|
83
83
|
buildReducePositionsTxRaw(tokenIds: bigint[], amounts: bigint[]): Promise<ethers.ContractTransaction>;
|
84
84
|
buildBorrowCurrencyTxRaw(amount: bigint): Promise<ethers.ContractTransaction>;
|
@@ -219,8 +219,9 @@ export declare class TradingVaultSDK {
|
|
219
219
|
rewardedAmount: number;
|
220
220
|
lossAmount: number;
|
221
221
|
initAmount: number;
|
222
|
+
expiredAt: number;
|
222
223
|
}>;
|
223
|
-
getPositionRaw(tokenId: bigint): Promise<[bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, string] & {
|
224
|
+
getPositionRaw(tokenId: bigint): Promise<[bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, string, bigint] & {
|
224
225
|
entryPrice: bigint;
|
225
226
|
outPrice: bigint;
|
226
227
|
remainingAmount: bigint;
|
@@ -230,6 +231,7 @@ export declare class TradingVaultSDK {
|
|
230
231
|
rewardedAmount: bigint;
|
231
232
|
lossAmount: bigint;
|
232
233
|
token: string;
|
234
|
+
expiredAt: bigint;
|
233
235
|
}>;
|
234
236
|
getRewardConfig(index: number): Promise<[bigint, bigint] & {
|
235
237
|
weight: bigint;
|
@@ -238,6 +240,30 @@ export declare class TradingVaultSDK {
|
|
238
240
|
getRewardConfigsLength(): Promise<bigint>;
|
239
241
|
getCurrencyDecimals(): Promise<number>;
|
240
242
|
getRewardTokenDecimals(): Promise<number>;
|
243
|
+
/**
|
244
|
+
* Gets the ERC721 balance of an owner address
|
245
|
+
*
|
246
|
+
* @param owner - The address to check the balance of
|
247
|
+
* @returns The number of NFTs owned by the address
|
248
|
+
*
|
249
|
+
* @example
|
250
|
+
* ```typescript
|
251
|
+
* const balance = await sdk.getERC721BalanceOf("0x...");
|
252
|
+
* ```
|
253
|
+
*/
|
254
|
+
getERC721BalanceOf(owner: string): Promise<number>;
|
255
|
+
/**
|
256
|
+
* Gets the raw ERC721 balance of an owner address
|
257
|
+
*
|
258
|
+
* @param owner - The address to check the balance of
|
259
|
+
* @returns The balance as a bigint
|
260
|
+
*
|
261
|
+
* @example
|
262
|
+
* ```typescript
|
263
|
+
* const balanceRaw = await sdk.getERC721BalanceOfRaw("0x...");
|
264
|
+
* ```
|
265
|
+
*/
|
266
|
+
getERC721BalanceOfRaw(owner: string): Promise<bigint>;
|
241
267
|
getContractAddress(): string;
|
242
268
|
getConfigs(): Array<{
|
243
269
|
weight: number;
|
@@ -307,4 +333,95 @@ export declare class TradingVaultSDK {
|
|
307
333
|
};
|
308
334
|
buildAddReward(amount: number): Promise<ethers.ContractTransaction>;
|
309
335
|
buildAddRewardTxRaw(amount: bigint): Promise<ethers.ContractTransaction>;
|
336
|
+
/**
|
337
|
+
* Gets the owner address of a specific token ID
|
338
|
+
*
|
339
|
+
* @param tokenId - The token ID to check ownership
|
340
|
+
* @returns The address of the token owner
|
341
|
+
*
|
342
|
+
* @example
|
343
|
+
* ```typescript
|
344
|
+
* const owner = await sdk.ownerOf(128);
|
345
|
+
* ```
|
346
|
+
*/
|
347
|
+
ownerOf(tokenId: bigint | number): Promise<string>;
|
348
|
+
/**
|
349
|
+
* Checks if an address is the owner of a specific token ID
|
350
|
+
*
|
351
|
+
* @param tokenId - The token ID to check
|
352
|
+
* @param address - The address to verify ownership
|
353
|
+
* @returns Boolean indicating if the address is the owner
|
354
|
+
*
|
355
|
+
* @example
|
356
|
+
* ```typescript
|
357
|
+
* const isOwner = await sdk.isOwnerOf(128, "0x...");
|
358
|
+
* ```
|
359
|
+
*/
|
360
|
+
isOwnerOf(tokenId: bigint | number, address: string): Promise<boolean>;
|
361
|
+
/**
|
362
|
+
* Builds a transaction to set expiration time for a position
|
363
|
+
*
|
364
|
+
* @param tokenId - ID of the position
|
365
|
+
* @param expiredAt - New expiration timestamp (in seconds)
|
366
|
+
* @returns Populated transaction
|
367
|
+
*
|
368
|
+
* @example
|
369
|
+
* ```typescript
|
370
|
+
* const tx = await sdk.buildSetPositionExpirationTx(128, Math.floor(Date.now() / 1000) + 86400); // Expire in 1 day
|
371
|
+
* ```
|
372
|
+
*/
|
373
|
+
buildSetPositionExpirationTx(tokenId: number, expiredAt: number): Promise<ethers.ContractTransaction>;
|
374
|
+
/**
|
375
|
+
* Builds a raw transaction to set expiration time for a position
|
376
|
+
*
|
377
|
+
* @param tokenId - ID of the position as bigint
|
378
|
+
* @param expiredAt - New expiration timestamp as bigint
|
379
|
+
* @returns Populated transaction
|
380
|
+
*/
|
381
|
+
buildSetPositionExpirationTxRaw(tokenId: bigint, expiredAt: bigint): Promise<ethers.ContractTransaction>;
|
382
|
+
/**
|
383
|
+
* Builds a transaction to batch set expiration times for multiple positions
|
384
|
+
*
|
385
|
+
* @param tokenIds - Array of position IDs
|
386
|
+
* @param expiredAts - Array of expiration timestamps (in seconds)
|
387
|
+
* @returns Populated transaction
|
388
|
+
*
|
389
|
+
* @example
|
390
|
+
* ```typescript
|
391
|
+
* const tokenIds = [128, 129, 130];
|
392
|
+
* const now = Math.floor(Date.now() / 1000);
|
393
|
+
* const expiredAts = [now + 86400, now + 172800, now + 259200]; // 1, 2, and 3 days
|
394
|
+
* const tx = await sdk.buildBatchSetPositionExpirationTx(tokenIds, expiredAts);
|
395
|
+
* ```
|
396
|
+
*/
|
397
|
+
buildBatchSetPositionExpirationTx(tokenIds: number[], expiredAts: number[]): Promise<ethers.ContractTransaction>;
|
398
|
+
/**
|
399
|
+
* Builds a raw transaction to batch set expiration times for multiple positions
|
400
|
+
*
|
401
|
+
* @param tokenIds - Array of position IDs as bigint
|
402
|
+
* @param expiredAts - Array of expiration timestamps as bigint
|
403
|
+
* @returns Populated transaction
|
404
|
+
*/
|
405
|
+
buildBatchSetPositionExpirationTxRaw(tokenIds: bigint[], expiredAts: bigint[]): Promise<ethers.ContractTransaction>;
|
406
|
+
/**
|
407
|
+
* Builds a transaction to close an expired position with a provided price
|
408
|
+
*
|
409
|
+
* @param tokenId - ID of the expired position to close
|
410
|
+
* @param providedPrice - Price to use for calculations (should be price at expiry time)
|
411
|
+
* @returns Populated transaction
|
412
|
+
*
|
413
|
+
* @example
|
414
|
+
* ```typescript
|
415
|
+
* const tx = await sdk.buildCloseExpiredPositionTx(128, 105); // Close with price 105
|
416
|
+
* ```
|
417
|
+
*/
|
418
|
+
buildCloseExpiredPositionTx(tokenId: number, providedPrice: number): Promise<ethers.ContractTransaction>;
|
419
|
+
/**
|
420
|
+
* Builds a raw transaction to close an expired position with a provided price
|
421
|
+
*
|
422
|
+
* @param tokenId - ID of the expired position as bigint
|
423
|
+
* @param providedPrice - Price to use for calculations as bigint
|
424
|
+
* @returns Populated transaction
|
425
|
+
*/
|
426
|
+
buildCloseExpiredPositionTxRaw(tokenId: bigint, providedPrice: bigint): Promise<ethers.ContractTransaction>;
|
310
427
|
}
|
package/dist/TradingVault.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
"use strict";var t=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.TradingVaultSDK=void 0;const e=require("ethers"),r=t(require("./abis/TradingVault.json")),a=t(require("./contracts.json")),n=require("./utils");exports.TradingVaultSDK=class{constructor(t,i){this.name="TradingVault",this._currency=null,this._rewardToken=null,this._currencyDecimals=null,this._rewardTokenDecimals=null,this.priceDecimals=6,this.isBootstrapped=!1,this.configs=[],this.BASE_WEIGHT=1e4,this.BASE_PRICE=100,this.formatEventArgs=t=>{const e=this._currencyDecimals,r=this._rewardTokenDecimals,{eventName:a,args:n}=t;switch(a){case"PositionCreated":return{...t,args:{...n,user:n.user.toLowerCase(),amount:Number(n.amount)/Math.pow(10,e),entryPrice:Number(n.entryPrice)/Math.pow(10,this.priceDecimals),tokenId:Number(n.tokenId),openedAt:Number(n.openedAt)}};case"PositionReduced":return{...t,args:{...n,user:n.user.toLowerCase(),reducedAmount:Number(n.reducedAmount)/Math.pow(10,e),remainingAmount:Number(n.remainingAmount)/Math.pow(10,e),totalReward:Number(n.totalReward)/Math.pow(10,r),userReward:Number(n.userReward)/Math.pow(10,r),treasuryReward:Number(n.treasuryReward)/Math.pow(10,r),rewardedAmount:Number(n.rewardedAmount)/Math.pow(10,r),weight:Number(n.weight),tokenId:Number(n.tokenId),lossAmount:Number(n.lossAmount)/Math.pow(10,e),price:Number(n.price)/Math.pow(10,this.priceDecimals),loss:Number(n.loss)/Math.pow(10,e)}};case"CurrencyBorrowed":case"CurrencyRepaid":return{...t,args:{...n,amount:Number(n.amount)/Math.pow(10,e),borrower:n.borrower.toLowerCase()}};case"PriceUpdated":return{...t,args:{...n,oldPrice:Number(n.oldPrice)/Math.pow(10,this.priceDecimals),newPrice:Number(n.newPrice)/Math.pow(10,this.priceDecimals),requiredReward:Number(n.requiredReward)/Math.pow(10,r),timestamp:Number(n.timestamp)}};case"TotalAmountUpdated":return{...t,args:{...n,newTotalAmount:Number(n.newTotalAmount)/Math.pow(10,e)}};case"CurrencyUpdated":return{...t,args:{...n,oldCurrency:n.oldCurrency.toLowerCase(),newCurrency:n.newCurrency.toLowerCase()}};case"RewardTokenUpdated":return{...t,args:{...n,oldRewardToken:n.oldRewardToken.toLowerCase(),newRewardToken:n.newRewardToken.toLowerCase()}};case"ReduceEnabledUpdated":return{...t,args:{...n,enabled:n.enabled}};case"TreasuryUpdated":return{...t,args:{...n,oldTreasury:n.oldTreasury.toLowerCase(),newTreasury:n.newTreasury.toLowerCase()}};case"RewardConfigsUpdated":return{...t,args:{...n}};case"TotalRewardsUpdated":case"TotalRewardsHarvestedUpdated":return{...t,args:{...n,oldAmount:Number(n.oldAmount)/Math.pow(10,r),newAmount:Number(n.newAmount)/Math.pow(10,r)}};case"Transfer":return{...t,args:{...n,from:n.from.toLowerCase(),to:n.to.toLowerCase(),value:Number(n.value)}};default:return t}};const o=Array.isArray(t)?t:[t];this.providers=o.map((t=>new e.ethers.JsonRpcProvider(t)));const s=(0,n.getRandomProvider)(this.providers);this.contractAddress=(0,n.resolveContractAddress)(o[0],this.name,a.default,i),this.contract=new e.ethers.Contract(this.contractAddress,r.default.abi,s)}getRandomProvider(){return(0,n.getRandomProvider)(this.providers)}getContractWithRandomProvider(){return new e.ethers.Contract(this.contractAddress,r.default.abi,this.getRandomProvider())}async bootstrap(){if(this.isBootstrapped)return;const t=await Promise.all(this.providers.map(((t,e)=>(0,n.checkRpcHealth)(t,e))));if(this.providers=this.providers.filter(((e,r)=>t[r])),0===this.providers.length)throw new Error("No active RPC providers available");await Promise.all([this.getCurrencyDecimals(),this.getRewardTokenDecimals(),(async()=>{const t=await this.getRewardConfigsLength(),e=[];for(let r=0;r<t;r++)e.push(this.getRewardConfig(r));const r=await Promise.all(e);this.configs=r.map((t=>({weight:Number(t.weight)/this.BASE_WEIGHT,duration:Number(t.duration)})))})()]),this.isBootstrapped=!0}async signAndSendTransaction(t,e,r={}){return(0,n.signAndSendTransaction)(t,e,(()=>this.getRandomProvider()),r,this.contract)}async buildCreatePositionTx(t,e){const r=await this.getCurrencyDecimals(),a=BigInt(Math.floor(t*Math.pow(10,r)));return this.buildCreatePositionTxRaw(a,e)}async buildReducePositionTx(t,e){const r=await this.getCurrencyDecimals(),a=BigInt(Math.floor(e*Math.pow(10,r)));return this.buildReducePositionTxRaw(t,a)}async buildReducePositionsTx(t,e){const r=await this.getCurrencyDecimals(),a=e.map((t=>BigInt(Math.floor(t*Math.pow(10,r)))));return this.buildReducePositionsTxRaw(t,a)}async buildBorrowCurrencyTx(t){const e=await this.getCurrencyDecimals(),r=BigInt(Math.floor(t*Math.pow(10,e)));return this.buildBorrowCurrencyTxRaw(r)}async buildRepayCurrencyTx(t){const e=await this.getCurrencyDecimals(),r=BigInt(Math.floor(t*Math.pow(10,e)));return this.buildRepayCurrencyTxRaw(r)}async buildSetPriceTx(t){const e=BigInt(Math.round(t*Math.pow(10,this.priceDecimals)));return await this.buildSetPriceTxRaw(e)}async buildBatchEmitPriceUpdatedTx(t){const e=t.map((t=>({price:BigInt(Math.round(t.price*Math.pow(10,this.priceDecimals))),timestamp:BigInt(t.timestamp)})));return await this.buildBatchEmitPriceUpdatedTxRaw(e)}async buildBatchEmitPriceUpdatedTxRaw(t){return await this.contract.batchEmitPriceUpdated.populateTransaction(t)}async buildClaimERC20Tx(t,r){const a=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider()),n=await a.decimals(),i=BigInt(Math.floor(r*Math.pow(10,n)));return this.buildClaimERC20TxRaw(t,i)}async buildCreatePositionTxRaw(t,e){return await this.contract.createPosition.populateTransaction(t,e)}async buildReducePositionTxRaw(t,e){return await this.contract.reducePosition.populateTransaction(t,e)}async buildReducePositionsTxRaw(t,e){return await this.contract.reducePositions.populateTransaction(t,e)}async buildBorrowCurrencyTxRaw(t){return await this.contract.borrowCurrency.populateTransaction(t)}async buildRepayCurrencyTxRaw(t){return await this.contract.repayCurrency.populateTransaction(t)}async buildSetPriceTxRaw(t){return await this.contract.setPrice.populateTransaction(t)}async buildSetCurrencyTxRaw(t){this._currency=null;return await this.contract.setCurrency.populateTransaction(t)}async buildSetRewardTokenTxRaw(t){this._rewardToken=null;return await this.contract.setRewardToken.populateTransaction(t)}async buildSetTreasuryTxRaw(t){return await this.contract.setTreasury.populateTransaction(t)}async buildUpdateRewardConfigsTxRaw(t){return await this.contract.updateRewardConfigs.populateTransaction(t)}async buildSetReduceEnabledTxRaw(t){return await this.contract.setReduceEnabled.populateTransaction(t)}async buildClaimERC20TxRaw(t,e){return await this.contract.claimERC20.populateTransaction(t,e)}async buildApproveERC20Tx(t,r,a){const n=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider()),i=await n.decimals(),o=BigInt(Math.floor(a*Math.pow(10,Number(i))));return this.buildApproveERC20TxRaw(t,r,o)}async buildApproveERC20TxRaw(t,e,r){return await(0,n.buildApproveERC20Tx)(t,e,r,this.getRandomProvider())}async getAllowanceRaw(t,e,r){return await(0,n.getTokenAllowance)(t,e,r,this.getRandomProvider())}async getAllowance(t,e,r){const[a,i]=await Promise.all([this.getAllowanceRaw(t,e,r),(0,n.getTokenDecimals)(t,this.getRandomProvider())]);return Number(a)/Math.pow(10,i)}async buildGrantOperatorRoleTxRaw(t){return await this.contract.grantOperatorRole.populateTransaction(t)}async getOperatorRoleHash(){return await this.contract.OPERATOR_ROLE()}async hasOperatorRole(t){const e=await this.contract.OPERATOR_ROLE();return await this.contract.hasRole(e,t)}async buildGrantOperatorRoleTx(t){return await this.contract.grantOperatorRole.populateTransaction(t)}async getPriceSetterRoleHash(){return await this.contract.PRICE_SETTER_ROLE()}async hasPriceSetterRole(t){const e=await this.contract.PRICE_SETTER_ROLE();return await this.contract.hasRole(e,t)}async buildGrantPriceSetterRoleTx(t){return await this.contract.grantPriceSetterRole.populateTransaction(t)}async getAdminRoleHash(){return await this.contract.DEFAULT_ADMIN_ROLE()}async hasAdminRole(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.hasRole(e,t)}async buildGrantAdminRoleTx(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.grantRole.populateTransaction(e,t)}async getPrice(){const t=await this.getPriceRaw(),e=this.priceDecimals;return Number(t)/Math.pow(10,e)}async getPriceRaw(){return await this.contract.price()}async getCurrency(){return this._currency||(this._currency=await this.contract.currency()),this._currency}async getRewardToken(){return this._rewardToken||(this._rewardToken=await this.contract.rewardToken()),this._rewardToken}async getTreasury(){return await this.contract.treasury()}async getTotalAmount(){const t=await this.getTotalAmountRaw(),e=await this.getCurrencyDecimals();return Number(t)/Math.pow(10,e)}async getTotalAmountRaw(){return await this.contract.totalAmount()}async getTotalBorrowed(){const t=await this.getTotalBorrowedRaw(),e=await this.getCurrencyDecimals();return Number(t)/Math.pow(10,e)}async getTotalBorrowedRaw(){return await this.contract.totalBorrowed()}async isReduceEnabled(){return await this.contract.isReduceEnabled()}async getPosition(t){const e=await this.getPositionRaw(t),r=await this.getCurrencyDecimals(),a=await this.getRewardTokenDecimals(),n=this.priceDecimals;return{remainingAmount:Number(e.remainingAmount)/Math.pow(10,r),entryPrice:Number(e.entryPrice)/Math.pow(10,n),outPrice:Number(e.outPrice)/Math.pow(10,n),openedAt:Number(e.openedAt),closedAt:Number(e.closedAt),rewardedAmount:Number(e.rewardedAmount)/Math.pow(10,a),lossAmount:Number(e.lossAmount)/Math.pow(10,r),initAmount:Number(e.initAmount)/Math.pow(10,r)}}async getPositionRaw(t){return await this.contract.positions(t)}async getRewardConfig(t){return await this.contract.rewardConfigs(t)}async getRewardConfigsLength(){return await this.contract.getRewardConfigsLength()}async getCurrencyDecimals(){if(null===this._currencyDecimals){const t=await this.getCurrency(),r=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider());this._currencyDecimals=Number(await r.decimals())}return this._currencyDecimals}async getRewardTokenDecimals(){if(null===this._rewardTokenDecimals){const t=await this.getRewardToken(),r=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider());this._rewardTokenDecimals=Number(await r.decimals())}return this._rewardTokenDecimals}getContractAddress(){return this.contractAddress}getConfigs(){return[...this.configs]}async getAllEvents(t,e,r){return await this.bootstrap(),(0,n.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,e,r)}async streamEvents(t,e,r,a=1e3,i=5e3){const o=["CurrencyBorrowed","CurrencyRepaid","CurrencyUpdated","PositionCreated","PositionReduced","PriceUpdated","ReduceEnabledUpdated","RewardConfigsUpdated","RewardTokenUpdated","TotalAmountUpdated","TotalRewardsHarvestedUpdated","TotalRewardsUpdated","Transfer","TreasuryUpdated"];return await this.bootstrap(),(0,n.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e,o),formatEvent:t=>this.formatEventArgs(t),onEvent:e,saveLatestBlock:r,fromBlock:t,batchSize:a,sleepTime:i})}estimateUnrealizedPnl({price:t,entryPrice:e,initAmount:r,remainingAmount:a}){const n=a*(t-e)/this.BASE_PRICE;return{pnl:n,pnlPercentage:n/r*100}}estReducePosition({amount:t,price:e,entryPrice:r,openedAt:a,configs:n=[]}){const i=this.BASE_PRICE;this.BASE_WEIGHT;let o=t,s=0,c=0,u=0,d=0;if(e<r){return o=t-t*(r-e)/100,{amount:o,totalReward:0,userReward:0,treasuryReward:0,weight:0}}if(e>=r){s=t*(e-r)/i;const o=Math.floor(Date.now()/1e3)-a;d=this.getRewardWeight(o,n),c=s*d,u=s-c}return{amount:o,totalReward:s,userReward:c,treasuryReward:u,weight:d}}estReducePositions({positions:t,price:e,configs:r=[]}){return t.map((t=>this.estReducePosition({amount:t.amount,price:e,entryPrice:t.entryPrice,openedAt:t.openedAt,configs:r}))).reduce(((t,e)=>({amount:t.amount+e.amount,totalReward:t.totalReward+e.totalReward,userReward:t.userReward+e.userReward,treasuryReward:t.treasuryReward+e.treasuryReward})),{amount:0,totalReward:0,userReward:0,treasuryReward:0})}getRewardWeight(t,e){return(0,n.getRewardWeight)(t,e)}estimateUnrealizedPnls({price:t,positions:e}){return e.reduce(((e,r)=>{const{pnl:a}=this.estimateUnrealizedPnl({price:t,...r});return{totalInitAmount:e.totalInitAmount+r.initAmount,totalRemainingAmount:e.totalRemainingAmount+r.remainingAmount,totalRewardedAmount:e.totalRewardedAmount+r.rewardedAmount,totalLossAmount:e.totalLossAmount+r.lossAmount,totalPnl:e.totalPnl+a}}),{totalInitAmount:0,totalRemainingAmount:0,totalRewardedAmount:0,totalLossAmount:0,totalPnl:0})}async buildAddReward(t){const e=await this.getRewardTokenDecimals(),r=BigInt(Math.floor(t*Math.pow(10,e)));return this.buildAddRewardTxRaw(r)}async buildAddRewardTxRaw(t){return await this.contract.addReward.populateTransaction(t)}};
|
1
|
+
"use strict";var t=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.TradingVaultSDK=void 0;const e=require("ethers"),a=t(require("./abis/TradingVault.json")),r=t(require("./contracts.json")),n=require("./utils");exports.TradingVaultSDK=class{constructor(t,i){this.name="TradingVault",this._currency=null,this._rewardToken=null,this._currencyDecimals=null,this._rewardTokenDecimals=null,this.priceDecimals=6,this.isBootstrapped=!1,this.configs=[],this.BASE_WEIGHT=1e4,this.BASE_PRICE=100,this.formatEventArgs=t=>{const e=this._currencyDecimals,a=this._rewardTokenDecimals,{eventName:r,args:n}=t;switch(r){case"PositionCreated":return{...t,args:{...n,user:n.user.toLowerCase(),amount:Number(n.amount)/Math.pow(10,e),entryPrice:Number(n.entryPrice)/Math.pow(10,this.priceDecimals),tokenId:Number(n.tokenId),openedAt:Number(n.openedAt)}};case"PositionReduced":return{...t,args:{...n,user:n.user.toLowerCase(),reducedAmount:Number(n.reducedAmount)/Math.pow(10,e),remainingAmount:Number(n.remainingAmount)/Math.pow(10,e),totalReward:Number(n.totalReward)/Math.pow(10,a),userReward:Number(n.userReward)/Math.pow(10,a),treasuryReward:Number(n.treasuryReward)/Math.pow(10,a),rewardedAmount:Number(n.rewardedAmount)/Math.pow(10,a),weight:Number(n.weight),tokenId:Number(n.tokenId),lossAmount:Number(n.lossAmount)/Math.pow(10,e),price:Number(n.price)/Math.pow(10,this.priceDecimals),loss:Number(n.loss)/Math.pow(10,e)}};case"CurrencyBorrowed":case"CurrencyRepaid":return{...t,args:{...n,amount:Number(n.amount)/Math.pow(10,e),borrower:n.borrower.toLowerCase()}};case"PriceUpdated":return{...t,args:{...n,oldPrice:Number(n.oldPrice)/Math.pow(10,this.priceDecimals),newPrice:Number(n.newPrice)/Math.pow(10,this.priceDecimals),requiredReward:Number(n.requiredReward)/Math.pow(10,a),timestamp:Number(n.timestamp)}};case"TotalAmountUpdated":return{...t,args:{...n,newTotalAmount:Number(n.newTotalAmount)/Math.pow(10,e)}};case"CurrencyUpdated":return{...t,args:{...n,oldCurrency:n.oldCurrency.toLowerCase(),newCurrency:n.newCurrency.toLowerCase()}};case"RewardTokenUpdated":return{...t,args:{...n,oldRewardToken:n.oldRewardToken.toLowerCase(),newRewardToken:n.newRewardToken.toLowerCase()}};case"ReduceEnabledUpdated":return{...t,args:{...n,enabled:n.enabled}};case"TreasuryUpdated":return{...t,args:{...n,oldTreasury:n.oldTreasury.toLowerCase(),newTreasury:n.newTreasury.toLowerCase()}};case"RewardConfigsUpdated":return{...t,args:{...n}};case"TotalRewardsUpdated":case"TotalRewardsHarvestedUpdated":return{...t,args:{...n,oldAmount:Number(n.oldAmount)/Math.pow(10,a),newAmount:Number(n.newAmount)/Math.pow(10,a)}};case"Transfer":return{...t,args:{...n,from:n.from.toLowerCase(),to:n.to.toLowerCase(),value:Number(n.value)}};default:return t}};const o=Array.isArray(t)?t:[t];this.providers=o.map((t=>new e.ethers.JsonRpcProvider(t,void 0,{staticNetwork:!0})));const s=(0,n.getRandomProvider)(this.providers);this.contractAddress=(0,n.resolveContractAddress)(o[0],this.name,r.default,i),this.contract=new e.ethers.Contract(this.contractAddress,a.default.abi,s)}getRandomProvider(){return(0,n.getRandomProvider)(this.providers)}getContractWithRandomProvider(){return new e.ethers.Contract(this.contractAddress,a.default.abi,this.getRandomProvider())}async bootstrap(){if(this.isBootstrapped)return;const t=await Promise.all(this.providers.map(((t,e)=>(0,n.checkRpcHealth)(t,e))));if(this.providers=this.providers.filter(((e,a)=>t[a])),0===this.providers.length)throw new Error("No active RPC providers available");await Promise.all([this.getCurrencyDecimals(),this.getRewardTokenDecimals(),(async()=>{const t=await this.getRewardConfigsLength(),e=[];for(let a=0;a<t;a++)e.push(this.getRewardConfig(a));const a=await Promise.all(e);this.configs=a.map((t=>({weight:Number(t.weight)/this.BASE_WEIGHT,duration:Number(t.duration)})))})()]),this.isBootstrapped=!0}async signAndSendTransaction(t,e,a={}){return(0,n.signAndSendTransaction)(t,e,(()=>this.getRandomProvider()),a,this.contract)}async buildCreatePositionTx(t,e,a=0){const r=await this.getCurrencyDecimals(),n=BigInt(Math.floor(t*Math.pow(10,r)));return this.buildCreatePositionTxRaw(n,e,BigInt(a))}async buildReducePositionTx(t,e){const a=await this.getCurrencyDecimals(),r=BigInt(Math.floor(e*Math.pow(10,a)));return this.buildReducePositionTxRaw(t,r)}async buildReducePositionsTx(t,e){const a=await this.getCurrencyDecimals(),r=e.map((t=>BigInt(Math.floor(t*Math.pow(10,a)))));return this.buildReducePositionsTxRaw(t,r)}async buildBorrowCurrencyTx(t){const e=await this.getCurrencyDecimals(),a=BigInt(Math.floor(t*Math.pow(10,e)));return this.buildBorrowCurrencyTxRaw(a)}async buildRepayCurrencyTx(t){const e=await this.getCurrencyDecimals(),a=BigInt(Math.floor(t*Math.pow(10,e)));return this.buildRepayCurrencyTxRaw(a)}async buildSetPriceTx(t){const e=BigInt(Math.round(t*Math.pow(10,this.priceDecimals)));return await this.buildSetPriceTxRaw(e)}async buildBatchEmitPriceUpdatedTx(t){const e=t.map((t=>({price:BigInt(Math.round(t.price*Math.pow(10,this.priceDecimals))),timestamp:BigInt(t.timestamp)})));return await this.buildBatchEmitPriceUpdatedTxRaw(e)}async buildBatchEmitPriceUpdatedTxRaw(t){return await this.contract.batchEmitPriceUpdated.populateTransaction(t)}async buildClaimERC20Tx(t,a){const r=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider()),n=await r.decimals(),i=BigInt(Math.floor(a*Math.pow(10,n)));return this.buildClaimERC20TxRaw(t,i)}async buildCreatePositionTxRaw(t,e,a=0n){return await this.contract.createPosition.populateTransaction(t,e,a)}async buildReducePositionTxRaw(t,e){return await this.contract.reducePosition.populateTransaction(t,e)}async buildReducePositionsTxRaw(t,e){return await this.contract.reducePositions.populateTransaction(t,e)}async buildBorrowCurrencyTxRaw(t){return await this.contract.borrowCurrency.populateTransaction(t)}async buildRepayCurrencyTxRaw(t){return await this.contract.repayCurrency.populateTransaction(t)}async buildSetPriceTxRaw(t){return await this.contract.setPrice.populateTransaction(t)}async buildSetCurrencyTxRaw(t){this._currency=null;return await this.contract.setCurrency.populateTransaction(t)}async buildSetRewardTokenTxRaw(t){this._rewardToken=null;return await this.contract.setRewardToken.populateTransaction(t)}async buildSetTreasuryTxRaw(t){return await this.contract.setTreasury.populateTransaction(t)}async buildUpdateRewardConfigsTxRaw(t){return await this.contract.updateRewardConfigs.populateTransaction(t)}async buildSetReduceEnabledTxRaw(t){return await this.contract.setReduceEnabled.populateTransaction(t)}async buildClaimERC20TxRaw(t,e){return await this.contract.claimERC20.populateTransaction(t,e)}async buildApproveERC20Tx(t,a,r){const n=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider()),i=await n.decimals(),o=BigInt(Math.floor(r*Math.pow(10,Number(i))));return this.buildApproveERC20TxRaw(t,a,o)}async buildApproveERC20TxRaw(t,e,a){return await(0,n.buildApproveERC20Tx)(t,e,a,this.getRandomProvider())}async getAllowanceRaw(t,e,a){return await(0,n.getTokenAllowance)(t,e,a,this.getRandomProvider())}async getAllowance(t,e,a){const[r,i]=await Promise.all([this.getAllowanceRaw(t,e,a),(0,n.getTokenDecimals)(t,this.getRandomProvider())]);return Number(r)/Math.pow(10,i)}async buildGrantOperatorRoleTxRaw(t){return await this.contract.grantOperatorRole.populateTransaction(t)}async getOperatorRoleHash(){return await this.contract.OPERATOR_ROLE()}async hasOperatorRole(t){const e=await this.contract.OPERATOR_ROLE();return await this.contract.hasRole(e,t)}async buildGrantOperatorRoleTx(t){return await this.contract.grantOperatorRole.populateTransaction(t)}async getPriceSetterRoleHash(){return await this.contract.PRICE_SETTER_ROLE()}async hasPriceSetterRole(t){const e=await this.contract.PRICE_SETTER_ROLE();return await this.contract.hasRole(e,t)}async buildGrantPriceSetterRoleTx(t){return await this.contract.grantPriceSetterRole.populateTransaction(t)}async getAdminRoleHash(){return await this.contract.DEFAULT_ADMIN_ROLE()}async hasAdminRole(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.hasRole(e,t)}async buildGrantAdminRoleTx(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.grantRole.populateTransaction(e,t)}async getPrice(){const t=await this.getPriceRaw(),e=this.priceDecimals;return Number(t)/Math.pow(10,e)}async getPriceRaw(){return await this.contract.price()}async getCurrency(){return this._currency||(this._currency=await this.contract.currency()),this._currency}async getRewardToken(){return this._rewardToken||(this._rewardToken=await this.contract.rewardToken()),this._rewardToken}async getTreasury(){return await this.contract.treasury()}async getTotalAmount(){const t=await this.getTotalAmountRaw(),e=await this.getCurrencyDecimals();return Number(t)/Math.pow(10,e)}async getTotalAmountRaw(){return await this.contract.totalAmount()}async getTotalBorrowed(){const t=await this.getTotalBorrowedRaw(),e=await this.getCurrencyDecimals();return Number(t)/Math.pow(10,e)}async getTotalBorrowedRaw(){return await this.contract.totalBorrowed()}async isReduceEnabled(){return await this.contract.isReduceEnabled()}async getPosition(t){const e=await this.getPositionRaw(t),a=await this.getCurrencyDecimals(),r=await this.getRewardTokenDecimals(),n=this.priceDecimals;return{remainingAmount:Number(e.remainingAmount)/Math.pow(10,a),entryPrice:Number(e.entryPrice)/Math.pow(10,n),outPrice:Number(e.outPrice)/Math.pow(10,n),openedAt:Number(e.openedAt),closedAt:Number(e.closedAt),rewardedAmount:Number(e.rewardedAmount)/Math.pow(10,r),lossAmount:Number(e.lossAmount)/Math.pow(10,a),initAmount:Number(e.initAmount)/Math.pow(10,a),expiredAt:Number(e.expiredAt)}}async getPositionRaw(t){return await this.contract.positions(t)}async getRewardConfig(t){return await this.contract.rewardConfigs(t)}async getRewardConfigsLength(){return await this.contract.getRewardConfigsLength()}async getCurrencyDecimals(){if(null===this._currencyDecimals){const t=await this.getCurrency(),a=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider());this._currencyDecimals=Number(await a.decimals())}return this._currencyDecimals}async getRewardTokenDecimals(){if(null===this._rewardTokenDecimals){const t=await this.getRewardToken(),a=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider());this._rewardTokenDecimals=Number(await a.decimals())}return this._rewardTokenDecimals}async getERC721BalanceOf(t){const e=await this.getERC721BalanceOfRaw(t);return Number(e)}async getERC721BalanceOfRaw(t){return await this.contract.balanceOf(t)}getContractAddress(){return this.contractAddress}getConfigs(){return[...this.configs]}async getAllEvents(t,e,a){return await this.bootstrap(),(0,n.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,e,a)}async streamEvents(t,e,a,r=1e3,i=5e3){const o=["CurrencyBorrowed","CurrencyRepaid","CurrencyUpdated","PositionCreated","PositionReduced","PriceUpdated","ReduceEnabledUpdated","RewardConfigsUpdated","RewardTokenUpdated","TotalAmountUpdated","TotalRewardsHarvestedUpdated","TotalRewardsUpdated","Transfer","TreasuryUpdated"];return await this.bootstrap(),(0,n.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e,o),formatEvent:t=>this.formatEventArgs(t),onEvent:e,saveLatestBlock:a,fromBlock:t,batchSize:r,sleepTime:i})}estimateUnrealizedPnl({price:t,entryPrice:e,initAmount:a,remainingAmount:r}){const n=r*(t-e)/this.BASE_PRICE;return{pnl:n,pnlPercentage:n/a*100}}estReducePosition({amount:t,price:e,entryPrice:a,openedAt:r,configs:n=[]}){const i=this.BASE_PRICE;this.BASE_WEIGHT;let o=t,s=0,c=0,u=0,d=0;if(e<a){return o=t-t*(a-e)/100,{amount:o,totalReward:0,userReward:0,treasuryReward:0,weight:0}}if(e>=a){s=t*(e-a)/i;const o=Math.floor(Date.now()/1e3)-r;d=this.getRewardWeight(o,n),c=s*d,u=s-c}return{amount:o,totalReward:s,userReward:c,treasuryReward:u,weight:d}}estReducePositions({positions:t,price:e,configs:a=[]}){return t.map((t=>this.estReducePosition({amount:t.amount,price:e,entryPrice:t.entryPrice,openedAt:t.openedAt,configs:a}))).reduce(((t,e)=>({amount:t.amount+e.amount,totalReward:t.totalReward+e.totalReward,userReward:t.userReward+e.userReward,treasuryReward:t.treasuryReward+e.treasuryReward})),{amount:0,totalReward:0,userReward:0,treasuryReward:0})}getRewardWeight(t,e){return(0,n.getRewardWeight)(t,e)}estimateUnrealizedPnls({price:t,positions:e}){return e.reduce(((e,a)=>{const{pnl:r}=this.estimateUnrealizedPnl({price:t,...a});return{totalInitAmount:e.totalInitAmount+a.initAmount,totalRemainingAmount:e.totalRemainingAmount+a.remainingAmount,totalRewardedAmount:e.totalRewardedAmount+a.rewardedAmount,totalLossAmount:e.totalLossAmount+a.lossAmount,totalPnl:e.totalPnl+r}}),{totalInitAmount:0,totalRemainingAmount:0,totalRewardedAmount:0,totalLossAmount:0,totalPnl:0})}async buildAddReward(t){const e=await this.getRewardTokenDecimals(),a=BigInt(Math.floor(t*Math.pow(10,e)));return this.buildAddRewardTxRaw(a)}async buildAddRewardTxRaw(t){return await this.contract.addReward.populateTransaction(t)}async ownerOf(t){const e="number"==typeof t?BigInt(t):t;return await this.contract.ownerOf(e)}async isOwnerOf(t,e){try{return(await this.ownerOf(t)).toLowerCase()===e.toLowerCase()}catch(t){return!1}}async buildSetPositionExpirationTx(t,e){return this.buildSetPositionExpirationTxRaw(BigInt(t),BigInt(e))}async buildSetPositionExpirationTxRaw(t,e){return await this.contract.setPositionExpiration.populateTransaction(t,e)}async buildBatchSetPositionExpirationTx(t,e){const a=t.map((t=>BigInt(t))),r=e.map((t=>BigInt(t)));return this.buildBatchSetPositionExpirationTxRaw(a,r)}async buildBatchSetPositionExpirationTxRaw(t,e){return await this.contract.batchSetPositionExpiration.populateTransaction(t,e)}async buildCloseExpiredPositionTx(t,e){const a=BigInt(Math.round(e*Math.pow(10,this.priceDecimals)));return this.buildCloseExpiredPositionTxRaw(BigInt(t),a)}async buildCloseExpiredPositionTxRaw(t,e){return await this.contract.closeExpiredPosition.populateTransaction(t,e)}};
|
package/dist/abis/NFTTicket.json
CHANGED
@@ -159,6 +159,17 @@
|
|
159
159
|
"name": "InvalidReferrer",
|
160
160
|
"type": "error"
|
161
161
|
},
|
162
|
+
{
|
163
|
+
"inputs": [
|
164
|
+
{
|
165
|
+
"internalType": "uint256",
|
166
|
+
"name": "value",
|
167
|
+
"type": "uint256"
|
168
|
+
}
|
169
|
+
],
|
170
|
+
"name": "InvalidSharePercent",
|
171
|
+
"type": "error"
|
172
|
+
},
|
162
173
|
{
|
163
174
|
"inputs": [],
|
164
175
|
"name": "NotInitializing",
|
@@ -437,6 +448,25 @@
|
|
437
448
|
"name": "ReferrerSet",
|
438
449
|
"type": "event"
|
439
450
|
},
|
451
|
+
{
|
452
|
+
"anonymous": false,
|
453
|
+
"inputs": [
|
454
|
+
{
|
455
|
+
"indexed": false,
|
456
|
+
"internalType": "uint256",
|
457
|
+
"name": "oldValue",
|
458
|
+
"type": "uint256"
|
459
|
+
},
|
460
|
+
{
|
461
|
+
"indexed": false,
|
462
|
+
"internalType": "uint256",
|
463
|
+
"name": "newValue",
|
464
|
+
"type": "uint256"
|
465
|
+
}
|
466
|
+
],
|
467
|
+
"name": "SharePercentUpdated",
|
468
|
+
"type": "event"
|
469
|
+
},
|
440
470
|
{
|
441
471
|
"anonymous": false,
|
442
472
|
"inputs": [
|
@@ -512,6 +542,24 @@
|
|
512
542
|
"stateMutability": "view",
|
513
543
|
"type": "function"
|
514
544
|
},
|
545
|
+
{
|
546
|
+
"inputs": [
|
547
|
+
{
|
548
|
+
"internalType": "string",
|
549
|
+
"name": "_referralCode",
|
550
|
+
"type": "string"
|
551
|
+
},
|
552
|
+
{
|
553
|
+
"internalType": "uint256",
|
554
|
+
"name": "_amount",
|
555
|
+
"type": "uint256"
|
556
|
+
}
|
557
|
+
],
|
558
|
+
"name": "batchBuy",
|
559
|
+
"outputs": [],
|
560
|
+
"stateMutability": "payable",
|
561
|
+
"type": "function"
|
562
|
+
},
|
515
563
|
{
|
516
564
|
"inputs": [
|
517
565
|
{
|
@@ -883,6 +931,19 @@
|
|
883
931
|
"stateMutability": "nonpayable",
|
884
932
|
"type": "function"
|
885
933
|
},
|
934
|
+
{
|
935
|
+
"inputs": [
|
936
|
+
{
|
937
|
+
"internalType": "uint256",
|
938
|
+
"name": "_sharePercent",
|
939
|
+
"type": "uint256"
|
940
|
+
}
|
941
|
+
],
|
942
|
+
"name": "setSharePercent",
|
943
|
+
"outputs": [],
|
944
|
+
"stateMutability": "nonpayable",
|
945
|
+
"type": "function"
|
946
|
+
},
|
886
947
|
{
|
887
948
|
"inputs": [],
|
888
949
|
"name": "sharePercent",
|
@@ -1016,8 +1077,8 @@
|
|
1016
1077
|
"type": "function"
|
1017
1078
|
}
|
1018
1079
|
],
|
1019
|
-
"bytecode": "0x608080604052346015576125a6908161001b8239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a71461175a5750806306fdde03146116aa578063081812fc1461165f578063095ea7b31461156d57806323b872dd146115565780632655e840146114ee5780632e1a7d4d1461149057806342842e0e1461146057806343508b0514611407578063492cc769146111065780634a3b68cc146110c457806355f804b314610eef5780635f1e6f6d146108ab57806363311f491461082b5780636352211e146107fb5780636c0360eb146107d757806370a0823114610785578063715018a61461071b578063755edd17146106c757806384d8ad13146106a95780638da5cb5b1461067357806391b7f5ed1461065257806395d89b411461056b5780639b2c76d4146105275780639df375d71461048b578063a035b1fe1461046d578063a22cb465146103d1578063b0a2fc1b1461034a578063b88d4fde146102df578063c15edf5f146102c1578063c87b56dd14610208578063e985e9c5146101ba5763f2fde38b1461018a57600080fd5b346101b55760203660031901126101b5576101b36101a661180d565b6101ae611d9b565b611cf4565b005b600080fd5b346101b55760403660031901126101b5576101d361180d565b6101e46101de611823565b9161193d565b9060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346101b55760203660031901126101b5576001600160a01b0361022c600435611d6a565b16156102645761026060405161024c81610245816119b0565b0382611873565b6040519182916020835260208301906117e8565b0390f35b60405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608490fd5b346101b55760003660031901126101b5576020600154604051908152f35b346101b55760803660031901126101b5576102f861180d565b610300611823565b90604435606435926001600160401b0384116101b557366023850112156101b5576103386101b39436906024816004013591016118af565b92610344838383611ac2565b33612300565b346101b55760003660031901126101b557336000526006602052610372604060002054611976565b6103a25761037f33612031565b33600052600660205261026061024561024c604060002060405192838092611a3f565b3360005260066020526103cd6040600020604051918291638541228760e01b83523360048401611cd2565b0390fd5b346101b55760403660031901126101b5576103ea61180d565b602435908115158092036101b5576001600160a01b0316908115610458576104113361193d565b82600052602052604060002060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b50630b61174360e31b60005260045260246000fd5b346101b55760003660031901126101b5576020600054604051908152f35b346101b55760203660031901126101b5576104a461180d565b6104ac611d9b565b60018060a01b038116908160005260066020526104cd604060002054611976565b6104fc576104da90612031565b600052600660205261026061024561024c604060002060405192838092611a3f565b9060005260066020526040600020906103cd604051928392638541228760e01b845260048401611cd2565b346101b55760203660031901126101b5576001600160a01b0361054861180d565b16600052600660205261026061024561024c604060002060405192838092611a3f565b346101b55760003660031901126101b55760405160006000805160206125318339815191525461059a81611976565b808452906001811690811561062e57506001146105c2575b6102608361024c81850382611873565b60008051602061253183398151915260009081527ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e939250905b8082106106145750909150810160200161024c6105b2565b9192600181602092548385880101520191019092916105fc565b60ff191660208086019190915291151560051b8401909101915061024c90506105b2565b346101b55760203660031901126101b55761066b611d9b565b600435600055005b346101b55760003660031901126101b5576000805160206124b1833981519152546040516001600160a01b039091168152602090f35b346101b55760003660031901126101b5576020600454604051908152f35b346101b55760203660031901126101b5576106e061180d565b6106e8611d9b565b6001600160a01b0381161561070a57806107046101b392611de0565b50612031565b634e46966960e11b60005260046000fd5b346101b55760003660031901126101b557610734611d9b565b6000805160206124b183398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101b55760203660031901126101b55761079e61180d565b6001600160a01b038116156107c1576107b8602091611904565b54604051908152f35b6322718ad960e21b600052600060045260246000fd5b346101b55760003660031901126101b55761026060405161024c81610245816119b0565b346101b55760203660031901126101b5576020610819600435611d6a565b6040516001600160a01b039091168152f35b346101b55760203660031901126101b557600435610847611d9b565b801580156108a1575b61088d5760407f624e69eaa446a6ee2f869d52cb1206e98cd8851850d0d84981da809ad702536f91600454908060045582519182526020820152a1005b6354ad071360e01b60005260045260246000fd5b50600a8111610850565b346101b55760803660031901126101b5576108c461180d565b6024356001600160401b0381116101b5576108e39036906004016118e6565b6044356001600160401b0381116101b5576109029036906004016118e6565b916064356001600160401b0381116101b5576109229036906004016118e6565b600080516020612511833981519152549260ff8460401c1615936001600160401b03811680159081610ee7575b6001149081610edd575b159081610ed4575b50610ec35767ffffffffffffffff1981166001176000805160206125118339815191525584610e96575b50610994612462565b61099c612462565b8051906001600160401b038211610c655781906109c760008051602061249183398151915254611976565b601f8111610e12575b50602090601f8311600114610d8457600092610d79575b50508160011b916000199060031b1c191617600080516020612491833981519152555b83516001600160401b038111610c6557610a3260008051602061253183398151915254611976565b601f8111610d07575b50602094601f8211600114610c8657948192939495600092610c7b575b50508160011b916000199060031b1c191617600080516020612531833981519152555b610a83612462565b610a8b612462565b610a9482611cf4565b610a9c611d9b565b610aa582611cf4565b66038d7ea4c680006000556014600155600480558051906001600160401b038211610c6557610ad5600754611976565b601f8111610bf8575b50602090601f8311600114610b8057610b1693929160009183610b75575b50508160011b916000199060031b1c191617600755612031565b610b1c57005b68ff0000000000000000196000805160206125118339815191525416600080516020612511833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b015190508580610afc565b90601f1983169160076000526000805160206124d18339815191529260005b818110610be05750916001939185610b1697969410610bc7575b505050811b01600755612031565b015160001960f88460031b161c19169055858080610bb9565b92936020600181928786015181550195019301610b9f565b6007600052601f830160051c6000805160206124d1833981519152019060208410610c4f575b601f0160051c6000805160206124d183398151915201905b818110610c435750610ade565b60008155600101610c36565b6000805160206124d18339815191529150610c1e565b634e487b7160e01b600052604160045260246000fd5b015190508580610a58565b601f19821695600080516020612531833981519152600052806000209160005b888110610cef57508360019596979810610cd6575b505050811b0160008051602061253183398151915255610a7b565b015160001960f88460031b161c19169055858080610cbb565b91926020600181928685015181550194019201610ca6565b6000805160206125318339815191526000527ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e601f830160051c81019160208410610d6f575b601f0160051c01905b818110610d635750610a3b565b60008155600101610d56565b9091508190610d4d565b0151905086806109e7565b60008051602061249183398151915260009081526000805160206125518339815191529350601f198516905b818110610dfa5750908460019594939210610de1575b505050811b0160008051602061249183398151915255610a0a565b015160001960f88460031b161c19169055868080610dc6565b92936020600181928786015181550195019301610db0565b909150600080516020612491833981519152600052601f830160051c600080516020612551833981519152019060208410610e80575b90601f8493920160051c60008051602061255183398151915201905b818110610e7157506109d0565b60008155849350600101610e64565b6000805160206125518339815191529150610e48565b68ffffffffffffffffff19166801000000000000000117600080516020612511833981519152558561098b565b63f92ee8a960e01b60005260046000fd5b90501587610961565b303b159150610959565b86915061094f565b346101b55760203660031901126101b5576004356001600160401b0381116101b557610f1f9036906004016118e6565b610f27611d9b565b80516001600160401b038111610c6557610f42600754611976565b601f8111611057575b506020601f8211600114610fc1579181610fb1927f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf694600091610fb6575b508160011b916000199060031b1c1916176007556040519182916020835260208301906117e8565b0390a1005b905082015185610f89565b601f1982169060076000526000805160206124d18339815191529160005b81811061103f5750927f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf6949260019282610fb19610611026575b5050811b0160075561024c565b84015160001960f88460031b161c191690558580611019565b91926020600181928689015181550194019201610fdf565b6007600052601f820160051c6000805160206124d18339815191520190602083106110ae575b601f0160051c6000805160206124d183398151915201905b8181106110a25750610f4b565b60008155600101611095565b6000805160206124d1833981519152915061107d565b346101b55760203660031901126101b5576001600160a01b036110e561180d565b166000526003602052602060018060a01b0360406000205416604051908152f35b60203660031901126101b5576004356001600160401b0381116101b5576111319036906004016118e6565b6000548034036113ef575061114533611de0565b9061114f33612031565b602061116460405192838151938492016117c5565b60059082019081528190036020019020546001600160a01b0316801580156113e6575b6113d257336000908152600360205260409020546001600160a01b03161561137d575b5060646111b9600154346122ed565b0433600052600360205260018060a01b0360406000205416916000925b6001600160a01b03811680151580611372575b156101b3576000818152600360205260409020546001600160a01b0316908115801561135b575b156112965750506001600160a01b031691600080808084875af1611232611ca2565b501561127e576040805191825260208201949094523493810193909352606083015233917f0fc36a26617d5b8d843d9224f3b293803d8b0c812dc3a647e2a147563414640d90608090a3005b82633da906b960e01b60005260045260245260446000fd5b90915060019493945460640360648111611345576112b6606491876122ed565b049081860395861161134557600080808085855af16112d3611ca2565b501561132e57604080519283526020830186905234908301526060820184905261132892913391907f0fc36a26617d5b8d843d9224f3b293803d8b0c812dc3a647e2a147563414640d90608090a39392611dd1565b926111d6565b633da906b960e01b60005260045260245260446000fd5b634e487b7160e01b600052601160045260246000fd5b506004546000198101908111611345578614611210565b5060045485106111e9565b33600081815260036020526040812080546001600160a01b0319166001600160a01b0385161790559091907f5f7165288eef601591cf549e15ff19ef9060b7f71b9c115be946fa1fe7ebf68a9080a3816111aa565b6316fb166f60e01b60005260045260246000fd5b50338114611187565b63ebbfb3bb60e01b6000523460045260245260446000fd5b346101b55760403660031901126101b55761142061180d565b60243561142b611d9b565b6001600160a01b0382161561070a5760005b81811061144d576101b383612031565b60019061145984611de0565b500161143d565b346101b5576101b361147136611839565b9060405192611481602085611873565b60008452610344838383611ac2565b346101b55760203660031901126101b5576004356114ac611d9b565b4781116114dd57600080808093335af16114c4611ca2565b50156114cc57005b63351dc55d60e21b60005260046000fd5b631e9acf1760e31b60005260046000fd5b346101b55760203660031901126101b5576004356001600160401b0381116101b55761152060209136906004016118e6565b8161153460405192838151938492016117c5565b600590820190815281900382019020546040516001600160a01b039091168152f35b346101b5576101b361156736611839565b91611ac2565b346101b55760403660031901126101b55761158661180d565b60243561159281611d6a565b3315158061164c575b80611628575b6116135781906001600160a01b0384811691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a460009081526000805160206124f18339815191526020526040902080546001600160a01b0319166001600160a01b03909216919091179055005b63a9fbf51f60e01b6000523360045260246000fd5b506116328161193d565b336000908152602091909152604090205460ff16156115a1565b506001600160a01b03811633141561159b565b346101b55760203660031901126101b557602061081960043561168181611d6a565b5060009081526000805160206124f183398151915260205260409020546001600160a01b031690565b346101b55760003660031901126101b5576040516000600080516020612491833981519152546116d981611976565b808452906001811690811561062e5750600114611700576102608361024c81850382611873565b6000805160206124918339815191526000908152600080516020612551833981519152939250905b8082106117405750909150810160200161024c6105b2565b919260018160209254838588010152019101909291611728565b346101b55760203660031901126101b5576004359063ffffffff60e01b82168092036101b5576020916380ac58cd60e01b81149081156117b4575b81156117a3575b5015158152f35b6301ffc9a760e01b1490508361179c565b635b5e139f60e01b81149150611795565b60005b8381106117d85750506000910152565b81810151838201526020016117c8565b90602091611801815180928185528580860191016117c5565b601f01601f1916010190565b600435906001600160a01b03821682036101b557565b602435906001600160a01b03821682036101b557565b60609060031901126101b5576004356001600160a01b03811681036101b557906024356001600160a01b03811681036101b5579060443590565b90601f801991011681019081106001600160401b03821117610c6557604052565b6001600160401b038111610c6557601f01601f191660200190565b9291926118bb82611894565b916118c96040519384611873565b8294818452818301116101b5578281602093846000960137010152565b9080601f830112156101b557816020611901933591016118af565b90565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793036020526040902090565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020526040902090565b90600182811c921680156119a6575b602083101461199057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611985565b600754600092916119c082611976565b8082529160018116908115611a2357506001146119db575050565b600760009081529293509091906000805160206124d18339815191525b838310611a09575060209250010190565b6001816020929493945483858701015201910191906119f8565b9050602093945060ff929192191683830152151560051b010190565b60009291815491611a4f83611976565b8083529260018116908115611aa55750600114611a6b57505050565b60009081526020812093945091925b838310611a8b575060209250010190565b600181602092949394548385870101520191019190611a7a565b915050602093945060ff929192191683830152151560051b010190565b909291906001600160a01b0384168015611c8c57600094611ae284612401565b9533151580611be0575b509184917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611b2d97989460018060a01b03861698899384611ba157611904565b805460010190558481527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793026020526040812080546001600160a01b0319168517905580a4506001600160a01b0316808303611b8757505050565b6364283d7b60e01b60005260045260245260445260646000fd5b60008781526000805160206124f18339815191526020526040902080546001600160a01b0319169055611bd388611904565b8054600019019055611904565b80611c29575b15611bf15738611aec565b84906001600160a01b038816611c1357602491637e27328960e01b8252600452fd5b60449163177e802f60e01b825233600452602452fd5b506001600160a01b03871633148015611c6f575b80611be6575060008581526000805160206124f183398151915260205260409020546001600160a01b03163314611be6565b50611c798761193d565b338252602052604081205460ff16611c3d565b633250574960e11b600052600060045260246000fd5b3d15611ccd573d90611cb382611894565b91611cc16040519384611873565b82523d6000602084013e565b606090565b6001600160a01b03909116815260406020820181905261190192910190611a3f565b6001600160a01b03168015611d54576000805160206124b183398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b611d7381612401565b906001600160a01b03821615611d87575090565b637e27328960e01b60005260045260246000fd5b6000805160206124b1833981519152546001600160a01b03163303611dbc57565b63118cdaa760e01b6000523360045260246000fd5b60001981146113455760010190565b60025460405160209291611df48483611873565b600082526001600160a01b038316928315611c8c57611e1282612401565b6001600160a01b03811680151591908490879084611ff2575b611e3486611904565b8054600101905560008381527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793028b526040812080546001600160a01b031916841790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9080a450611fdc573b611ee3575b50507f4cc0a9c4a99ddc700de1af2c9f916a7cbfdb71f14801ccff94061ad1ef8a804060025492604051848152a2611edd81611dd1565b60025590565b611f219184916040969496519384928392630a85bd0160e11b84523360048501526000602485015260448401526080606484015260848301906117e8565b03816000885af18091600091611f97575b5090611f62575050611f42611ca2565b80519182611f5f5783633250574960e11b60005260045260246000fd5b01fd5b9092906001600160e01b03191663757a42ff60e11b01611f83573880611ea6565b633250574960e11b60005260045260246000fd5b8481813d8311611fd5575b611fac8183611873565b81010312611fd15751906001600160e01b031982168203611fce575038611f32565b80fd5b5080fd5b503d611fa2565b6339e3563760e11b600052600060045260246000fd5b60008381526000805160206124f18339815191526020526040902080546001600160a01b031916905561202484611904565b8054600019019055611e2b565b6001600160a01b031660008181526006602052604090205461205290611976565b1561205a5750565b60405160606120698183611873565b602482527f6162636465666768696a6b6c6d6e6f707172737475767778797a3031323334356020830152633637383960e01b60408301526040908151926120b08385611873565b600684526020840191601f19840136843760005b6006811061227f5750505060206120e59183518093819287519283916117c5565b81016005815203019020836bffffffffffffffffffffffff60a01b8254161790558260005260066020528060002082516001600160401b038111610c655761212d8254611976565b601f8111612237575b506020601f82116001146121ac57918161219c94927fb9e788fc28e69f876035840c2b162474437d35622a8cfa689a88c04403bf7ee696946000916121a1575b508160011b916000199060031b1c19161790555b519182916020835260208301906117e8565b0390a2565b905084015138612176565b601f1982169083600052806000209160005b81811061221f5750927fb9e788fc28e69f876035840c2b162474437d35622a8cfa689a88c04403bf7ee69694926001928261219c989610612206575b5050811b01905561218a565b86015160001960f88460031b161c1916905538806121fa565b9192602060018192868b0151815501940192016121be565b826000526020600020601f830160051c81019160208410612275575b601f0160051c01905b8181106122695750612136565b6000815560010161225c565b9091508190612253565b84516020810190428252448782015282848201528381526122a1608082611873565b5190209083519182156122d7576122c160019360ff60f81b92068661243b565b511660001a6122d0828961243b565b53016120c4565b634e487b7160e01b600052601260045260246000fd5b8181029291811591840414171561134557565b823b61230e575b5050505050565b604051630a85bd0160e11b81526001600160a01b03918216600482015291811660248301526044820193909352608060648201529116916020908290819061235a9060848301906117e8565b03816000865af180916000916123be575b509061239c575061237a611ca2565b805190816123975782633250574960e11b60005260045260246000fd5b602001fd5b6001600160e01b03191663757a42ff60e11b01611f8357503880808080612307565b6020813d6020116123f9575b816123d760209383611873565b81010312611fd15751906001600160e01b031982168203611fce57503861236b565b3d91506123ca565b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260409020546001600160a01b031690565b90815181101561244c570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff6000805160206125118339815191525460401c161561247f57565b631afcd79f60e31b60005260046000fdfe80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68880bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930137c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf81a2646970667358221220f0bfccf1f2bff5fd7bf85916bac710652a1653ebbe8193889af2ab4bd1a7daf264736f6c634300081c0033",
|
1020
|
-
"deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a71461175a5750806306fdde03146116aa578063081812fc1461165f578063095ea7b31461156d57806323b872dd146115565780632655e840146114ee5780632e1a7d4d1461149057806342842e0e1461146057806343508b0514611407578063492cc769146111065780634a3b68cc146110c457806355f804b314610eef5780635f1e6f6d146108ab57806363311f491461082b5780636352211e146107fb5780636c0360eb146107d757806370a0823114610785578063715018a61461071b578063755edd17146106c757806384d8ad13146106a95780638da5cb5b1461067357806391b7f5ed1461065257806395d89b411461056b5780639b2c76d4146105275780639df375d71461048b578063a035b1fe1461046d578063a22cb465146103d1578063b0a2fc1b1461034a578063b88d4fde146102df578063c15edf5f146102c1578063c87b56dd14610208578063e985e9c5146101ba5763f2fde38b1461018a57600080fd5b346101b55760203660031901126101b5576101b36101a661180d565b6101ae611d9b565b611cf4565b005b600080fd5b346101b55760403660031901126101b5576101d361180d565b6101e46101de611823565b9161193d565b9060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346101b55760203660031901126101b5576001600160a01b0361022c600435611d6a565b16156102645761026060405161024c81610245816119b0565b0382611873565b6040519182916020835260208301906117e8565b0390f35b60405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608490fd5b346101b55760003660031901126101b5576020600154604051908152f35b346101b55760803660031901126101b5576102f861180d565b610300611823565b90604435606435926001600160401b0384116101b557366023850112156101b5576103386101b39436906024816004013591016118af565b92610344838383611ac2565b33612300565b346101b55760003660031901126101b557336000526006602052610372604060002054611976565b6103a25761037f33612031565b33600052600660205261026061024561024c604060002060405192838092611a3f565b3360005260066020526103cd6040600020604051918291638541228760e01b83523360048401611cd2565b0390fd5b346101b55760403660031901126101b5576103ea61180d565b602435908115158092036101b5576001600160a01b0316908115610458576104113361193d565b82600052602052604060002060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b50630b61174360e31b60005260045260246000fd5b346101b55760003660031901126101b5576020600054604051908152f35b346101b55760203660031901126101b5576104a461180d565b6104ac611d9b565b60018060a01b038116908160005260066020526104cd604060002054611976565b6104fc576104da90612031565b600052600660205261026061024561024c604060002060405192838092611a3f565b9060005260066020526040600020906103cd604051928392638541228760e01b845260048401611cd2565b346101b55760203660031901126101b5576001600160a01b0361054861180d565b16600052600660205261026061024561024c604060002060405192838092611a3f565b346101b55760003660031901126101b55760405160006000805160206125318339815191525461059a81611976565b808452906001811690811561062e57506001146105c2575b6102608361024c81850382611873565b60008051602061253183398151915260009081527ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e939250905b8082106106145750909150810160200161024c6105b2565b9192600181602092548385880101520191019092916105fc565b60ff191660208086019190915291151560051b8401909101915061024c90506105b2565b346101b55760203660031901126101b55761066b611d9b565b600435600055005b346101b55760003660031901126101b5576000805160206124b1833981519152546040516001600160a01b039091168152602090f35b346101b55760003660031901126101b5576020600454604051908152f35b346101b55760203660031901126101b5576106e061180d565b6106e8611d9b565b6001600160a01b0381161561070a57806107046101b392611de0565b50612031565b634e46966960e11b60005260046000fd5b346101b55760003660031901126101b557610734611d9b565b6000805160206124b183398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101b55760203660031901126101b55761079e61180d565b6001600160a01b038116156107c1576107b8602091611904565b54604051908152f35b6322718ad960e21b600052600060045260246000fd5b346101b55760003660031901126101b55761026060405161024c81610245816119b0565b346101b55760203660031901126101b5576020610819600435611d6a565b6040516001600160a01b039091168152f35b346101b55760203660031901126101b557600435610847611d9b565b801580156108a1575b61088d5760407f624e69eaa446a6ee2f869d52cb1206e98cd8851850d0d84981da809ad702536f91600454908060045582519182526020820152a1005b6354ad071360e01b60005260045260246000fd5b50600a8111610850565b346101b55760803660031901126101b5576108c461180d565b6024356001600160401b0381116101b5576108e39036906004016118e6565b6044356001600160401b0381116101b5576109029036906004016118e6565b916064356001600160401b0381116101b5576109229036906004016118e6565b600080516020612511833981519152549260ff8460401c1615936001600160401b03811680159081610ee7575b6001149081610edd575b159081610ed4575b50610ec35767ffffffffffffffff1981166001176000805160206125118339815191525584610e96575b50610994612462565b61099c612462565b8051906001600160401b038211610c655781906109c760008051602061249183398151915254611976565b601f8111610e12575b50602090601f8311600114610d8457600092610d79575b50508160011b916000199060031b1c191617600080516020612491833981519152555b83516001600160401b038111610c6557610a3260008051602061253183398151915254611976565b601f8111610d07575b50602094601f8211600114610c8657948192939495600092610c7b575b50508160011b916000199060031b1c191617600080516020612531833981519152555b610a83612462565b610a8b612462565b610a9482611cf4565b610a9c611d9b565b610aa582611cf4565b66038d7ea4c680006000556014600155600480558051906001600160401b038211610c6557610ad5600754611976565b601f8111610bf8575b50602090601f8311600114610b8057610b1693929160009183610b75575b50508160011b916000199060031b1c191617600755612031565b610b1c57005b68ff0000000000000000196000805160206125118339815191525416600080516020612511833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b015190508580610afc565b90601f1983169160076000526000805160206124d18339815191529260005b818110610be05750916001939185610b1697969410610bc7575b505050811b01600755612031565b015160001960f88460031b161c19169055858080610bb9565b92936020600181928786015181550195019301610b9f565b6007600052601f830160051c6000805160206124d1833981519152019060208410610c4f575b601f0160051c6000805160206124d183398151915201905b818110610c435750610ade565b60008155600101610c36565b6000805160206124d18339815191529150610c1e565b634e487b7160e01b600052604160045260246000fd5b015190508580610a58565b601f19821695600080516020612531833981519152600052806000209160005b888110610cef57508360019596979810610cd6575b505050811b0160008051602061253183398151915255610a7b565b015160001960f88460031b161c19169055858080610cbb565b91926020600181928685015181550194019201610ca6565b6000805160206125318339815191526000527ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e601f830160051c81019160208410610d6f575b601f0160051c01905b818110610d635750610a3b565b60008155600101610d56565b9091508190610d4d565b0151905086806109e7565b60008051602061249183398151915260009081526000805160206125518339815191529350601f198516905b818110610dfa5750908460019594939210610de1575b505050811b0160008051602061249183398151915255610a0a565b015160001960f88460031b161c19169055868080610dc6565b92936020600181928786015181550195019301610db0565b909150600080516020612491833981519152600052601f830160051c600080516020612551833981519152019060208410610e80575b90601f8493920160051c60008051602061255183398151915201905b818110610e7157506109d0565b60008155849350600101610e64565b6000805160206125518339815191529150610e48565b68ffffffffffffffffff19166801000000000000000117600080516020612511833981519152558561098b565b63f92ee8a960e01b60005260046000fd5b90501587610961565b303b159150610959565b86915061094f565b346101b55760203660031901126101b5576004356001600160401b0381116101b557610f1f9036906004016118e6565b610f27611d9b565b80516001600160401b038111610c6557610f42600754611976565b601f8111611057575b506020601f8211600114610fc1579181610fb1927f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf694600091610fb6575b508160011b916000199060031b1c1916176007556040519182916020835260208301906117e8565b0390a1005b905082015185610f89565b601f1982169060076000526000805160206124d18339815191529160005b81811061103f5750927f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf6949260019282610fb19610611026575b5050811b0160075561024c565b84015160001960f88460031b161c191690558580611019565b91926020600181928689015181550194019201610fdf565b6007600052601f820160051c6000805160206124d18339815191520190602083106110ae575b601f0160051c6000805160206124d183398151915201905b8181106110a25750610f4b565b60008155600101611095565b6000805160206124d1833981519152915061107d565b346101b55760203660031901126101b5576001600160a01b036110e561180d565b166000526003602052602060018060a01b0360406000205416604051908152f35b60203660031901126101b5576004356001600160401b0381116101b5576111319036906004016118e6565b6000548034036113ef575061114533611de0565b9061114f33612031565b602061116460405192838151938492016117c5565b60059082019081528190036020019020546001600160a01b0316801580156113e6575b6113d257336000908152600360205260409020546001600160a01b03161561137d575b5060646111b9600154346122ed565b0433600052600360205260018060a01b0360406000205416916000925b6001600160a01b03811680151580611372575b156101b3576000818152600360205260409020546001600160a01b0316908115801561135b575b156112965750506001600160a01b031691600080808084875af1611232611ca2565b501561127e576040805191825260208201949094523493810193909352606083015233917f0fc36a26617d5b8d843d9224f3b293803d8b0c812dc3a647e2a147563414640d90608090a3005b82633da906b960e01b60005260045260245260446000fd5b90915060019493945460640360648111611345576112b6606491876122ed565b049081860395861161134557600080808085855af16112d3611ca2565b501561132e57604080519283526020830186905234908301526060820184905261132892913391907f0fc36a26617d5b8d843d9224f3b293803d8b0c812dc3a647e2a147563414640d90608090a39392611dd1565b926111d6565b633da906b960e01b60005260045260245260446000fd5b634e487b7160e01b600052601160045260246000fd5b506004546000198101908111611345578614611210565b5060045485106111e9565b33600081815260036020526040812080546001600160a01b0319166001600160a01b0385161790559091907f5f7165288eef601591cf549e15ff19ef9060b7f71b9c115be946fa1fe7ebf68a9080a3816111aa565b6316fb166f60e01b60005260045260246000fd5b50338114611187565b63ebbfb3bb60e01b6000523460045260245260446000fd5b346101b55760403660031901126101b55761142061180d565b60243561142b611d9b565b6001600160a01b0382161561070a5760005b81811061144d576101b383612031565b60019061145984611de0565b500161143d565b346101b5576101b361147136611839565b9060405192611481602085611873565b60008452610344838383611ac2565b346101b55760203660031901126101b5576004356114ac611d9b565b4781116114dd57600080808093335af16114c4611ca2565b50156114cc57005b63351dc55d60e21b60005260046000fd5b631e9acf1760e31b60005260046000fd5b346101b55760203660031901126101b5576004356001600160401b0381116101b55761152060209136906004016118e6565b8161153460405192838151938492016117c5565b600590820190815281900382019020546040516001600160a01b039091168152f35b346101b5576101b361156736611839565b91611ac2565b346101b55760403660031901126101b55761158661180d565b60243561159281611d6a565b3315158061164c575b80611628575b6116135781906001600160a01b0384811691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a460009081526000805160206124f18339815191526020526040902080546001600160a01b0319166001600160a01b03909216919091179055005b63a9fbf51f60e01b6000523360045260246000fd5b506116328161193d565b336000908152602091909152604090205460ff16156115a1565b506001600160a01b03811633141561159b565b346101b55760203660031901126101b557602061081960043561168181611d6a565b5060009081526000805160206124f183398151915260205260409020546001600160a01b031690565b346101b55760003660031901126101b5576040516000600080516020612491833981519152546116d981611976565b808452906001811690811561062e5750600114611700576102608361024c81850382611873565b6000805160206124918339815191526000908152600080516020612551833981519152939250905b8082106117405750909150810160200161024c6105b2565b919260018160209254838588010152019101909291611728565b346101b55760203660031901126101b5576004359063ffffffff60e01b82168092036101b5576020916380ac58cd60e01b81149081156117b4575b81156117a3575b5015158152f35b6301ffc9a760e01b1490508361179c565b635b5e139f60e01b81149150611795565b60005b8381106117d85750506000910152565b81810151838201526020016117c8565b90602091611801815180928185528580860191016117c5565b601f01601f1916010190565b600435906001600160a01b03821682036101b557565b602435906001600160a01b03821682036101b557565b60609060031901126101b5576004356001600160a01b03811681036101b557906024356001600160a01b03811681036101b5579060443590565b90601f801991011681019081106001600160401b03821117610c6557604052565b6001600160401b038111610c6557601f01601f191660200190565b9291926118bb82611894565b916118c96040519384611873565b8294818452818301116101b5578281602093846000960137010152565b9080601f830112156101b557816020611901933591016118af565b90565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793036020526040902090565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020526040902090565b90600182811c921680156119a6575b602083101461199057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611985565b600754600092916119c082611976565b8082529160018116908115611a2357506001146119db575050565b600760009081529293509091906000805160206124d18339815191525b838310611a09575060209250010190565b6001816020929493945483858701015201910191906119f8565b9050602093945060ff929192191683830152151560051b010190565b60009291815491611a4f83611976565b8083529260018116908115611aa55750600114611a6b57505050565b60009081526020812093945091925b838310611a8b575060209250010190565b600181602092949394548385870101520191019190611a7a565b915050602093945060ff929192191683830152151560051b010190565b909291906001600160a01b0384168015611c8c57600094611ae284612401565b9533151580611be0575b509184917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611b2d97989460018060a01b03861698899384611ba157611904565b805460010190558481527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793026020526040812080546001600160a01b0319168517905580a4506001600160a01b0316808303611b8757505050565b6364283d7b60e01b60005260045260245260445260646000fd5b60008781526000805160206124f18339815191526020526040902080546001600160a01b0319169055611bd388611904565b8054600019019055611904565b80611c29575b15611bf15738611aec565b84906001600160a01b038816611c1357602491637e27328960e01b8252600452fd5b60449163177e802f60e01b825233600452602452fd5b506001600160a01b03871633148015611c6f575b80611be6575060008581526000805160206124f183398151915260205260409020546001600160a01b03163314611be6565b50611c798761193d565b338252602052604081205460ff16611c3d565b633250574960e11b600052600060045260246000fd5b3d15611ccd573d90611cb382611894565b91611cc16040519384611873565b82523d6000602084013e565b606090565b6001600160a01b03909116815260406020820181905261190192910190611a3f565b6001600160a01b03168015611d54576000805160206124b183398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b611d7381612401565b906001600160a01b03821615611d87575090565b637e27328960e01b60005260045260246000fd5b6000805160206124b1833981519152546001600160a01b03163303611dbc57565b63118cdaa760e01b6000523360045260246000fd5b60001981146113455760010190565b60025460405160209291611df48483611873565b600082526001600160a01b038316928315611c8c57611e1282612401565b6001600160a01b03811680151591908490879084611ff2575b611e3486611904565b8054600101905560008381527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793028b526040812080546001600160a01b031916841790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9080a450611fdc573b611ee3575b50507f4cc0a9c4a99ddc700de1af2c9f916a7cbfdb71f14801ccff94061ad1ef8a804060025492604051848152a2611edd81611dd1565b60025590565b611f219184916040969496519384928392630a85bd0160e11b84523360048501526000602485015260448401526080606484015260848301906117e8565b03816000885af18091600091611f97575b5090611f62575050611f42611ca2565b80519182611f5f5783633250574960e11b60005260045260246000fd5b01fd5b9092906001600160e01b03191663757a42ff60e11b01611f83573880611ea6565b633250574960e11b60005260045260246000fd5b8481813d8311611fd5575b611fac8183611873565b81010312611fd15751906001600160e01b031982168203611fce575038611f32565b80fd5b5080fd5b503d611fa2565b6339e3563760e11b600052600060045260246000fd5b60008381526000805160206124f18339815191526020526040902080546001600160a01b031916905561202484611904565b8054600019019055611e2b565b6001600160a01b031660008181526006602052604090205461205290611976565b1561205a5750565b60405160606120698183611873565b602482527f6162636465666768696a6b6c6d6e6f707172737475767778797a3031323334356020830152633637383960e01b60408301526040908151926120b08385611873565b600684526020840191601f19840136843760005b6006811061227f5750505060206120e59183518093819287519283916117c5565b81016005815203019020836bffffffffffffffffffffffff60a01b8254161790558260005260066020528060002082516001600160401b038111610c655761212d8254611976565b601f8111612237575b506020601f82116001146121ac57918161219c94927fb9e788fc28e69f876035840c2b162474437d35622a8cfa689a88c04403bf7ee696946000916121a1575b508160011b916000199060031b1c19161790555b519182916020835260208301906117e8565b0390a2565b905084015138612176565b601f1982169083600052806000209160005b81811061221f5750927fb9e788fc28e69f876035840c2b162474437d35622a8cfa689a88c04403bf7ee69694926001928261219c989610612206575b5050811b01905561218a565b86015160001960f88460031b161c1916905538806121fa565b9192602060018192868b0151815501940192016121be565b826000526020600020601f830160051c81019160208410612275575b601f0160051c01905b8181106122695750612136565b6000815560010161225c565b9091508190612253565b84516020810190428252448782015282848201528381526122a1608082611873565b5190209083519182156122d7576122c160019360ff60f81b92068661243b565b511660001a6122d0828961243b565b53016120c4565b634e487b7160e01b600052601260045260246000fd5b8181029291811591840414171561134557565b823b61230e575b5050505050565b604051630a85bd0160e11b81526001600160a01b03918216600482015291811660248301526044820193909352608060648201529116916020908290819061235a9060848301906117e8565b03816000865af180916000916123be575b509061239c575061237a611ca2565b805190816123975782633250574960e11b60005260045260246000fd5b602001fd5b6001600160e01b03191663757a42ff60e11b01611f8357503880808080612307565b6020813d6020116123f9575b816123d760209383611873565b81010312611fd15751906001600160e01b031982168203611fce57503861236b565b3d91506123ca565b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260409020546001600160a01b031690565b90815181101561244c570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff6000805160206125118339815191525460401c161561247f57565b631afcd79f60e31b60005260046000fdfe80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68880bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930137c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf81a2646970667358221220f0bfccf1f2bff5fd7bf85916bac710652a1653ebbe8193889af2ab4bd1a7daf264736f6c634300081c0033",
|
1080
|
+
"bytecode": "0x6080806040523460155761286b908161001b8239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a7146118055750806306fdde0314611755578063081812fc1461170a578063095ea7b31461161857806323b872dd146116015780632655e840146115995780632e1a7d4d1461153b578063411e9ef2146114ca57806342842e0e1461149a57806343508b0514611441578063492cc7691461131c5780634a3b68cc146112da57806355f804b3146111055780635f1e6f6d14610ac157806363311f4914610a415780636352211e14610a115780636c0360eb146109ed57806370a082311461099b578063715018a614610931578063755edd17146108dd57806384d8ad13146108bf5780638da5cb5b1461088957806391b7f5ed1461086857806395d89b41146107815780639b2c76d41461073d5780639df375d7146106a1578063a035b1fe14610683578063a22cb465146105e7578063b0a2fc1b14610560578063b88d4fde146104f5578063c15edf5f146104d7578063c87b56dd1461041e578063d6bfb0481461021e578063e985e9c5146101d05763f2fde38b146101a057600080fd5b346101cb5760203660031901126101cb576101c96101bc6118b8565b6101c4611eb0565b611e09565b005b600080fd5b346101cb5760403660031901126101cb576101e96118b8565b6101fa6101f46118ce565b916119e8565b9060018060a01b0316600052602052602060ff604060002054166040519015158152f35b60403660031901126101cb576004356001600160401b0381116101cb57610249903690600401611991565b6024359081156103d95761025f82600054611d9f565b8034036103c15750602061027c6040519283815193849201611870565b60059082019081528190036020019020546001600160a01b0316801580156103b8575b6103a457336000908152600360205260409020546001600160a01b03161561034f575b506102cc33612146565b6102d581611dc8565b906102e3604051928361191e565b808252601f196102f282611dc8565b0136602084013760005b81811061033257508034049160005b82811061031457005b8061032c61032460019385611ddf565b518633612402565b0161030b565b60019061033e33611ef5565b6103488286611ddf565b52016102fc565b33600081815260036020526040812080546001600160a01b0319166001600160a01b0385161790559091907f5f7165288eef601591cf549e15ff19ef9060b7f71b9c115be946fa1fe7ebf68a9080a3816102c2565b6316fb166f60e01b60005260045260246000fd5b5033811461029f565b63ebbfb3bb60e01b6000523460045260245260446000fd5b60405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606490fd5b346101cb5760203660031901126101cb576001600160a01b03610442600435611e7f565b161561047a576104766040516104628161045b81611a5b565b038261191e565b604051918291602083526020830190611893565b0390f35b60405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608490fd5b346101cb5760003660031901126101cb576020600154604051908152f35b346101cb5760803660031901126101cb5761050e6118b8565b6105166118ce565b90604435606435926001600160401b0384116101cb57366023850112156101cb5761054e6101c994369060248160040135910161195a565b9261055a838383611b6d565b336125db565b346101cb5760003660031901126101cb57336000526006602052610588604060002054611a21565b6105b85761059533612146565b33600052600660205261047661045b610462604060002060405192838092611aea565b3360005260066020526105e36040600020604051918291638541228760e01b83523360048401611d7d565b0390fd5b346101cb5760403660031901126101cb576106006118b8565b602435908115158092036101cb576001600160a01b031690811561066e57610627336119e8565b82600052602052604060002060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b50630b61174360e31b60005260045260246000fd5b346101cb5760003660031901126101cb576020600054604051908152f35b346101cb5760203660031901126101cb576106ba6118b8565b6106c2611eb0565b60018060a01b038116908160005260066020526106e3604060002054611a21565b610712576106f090612146565b600052600660205261047661045b610462604060002060405192838092611aea565b9060005260066020526040600020906105e3604051928392638541228760e01b845260048401611d7d565b346101cb5760203660031901126101cb576001600160a01b0361075e6118b8565b16600052600660205261047661045b610462604060002060405192838092611aea565b346101cb5760003660031901126101cb5760405160006000805160206127f6833981519152546107b081611a21565b808452906001811690811561084457506001146107d8575b610476836104628185038261191e565b6000805160206127f683398151915260009081527ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e939250905b80821061082a575090915081016020016104626107c8565b919260018160209254838588010152019101909291610812565b60ff191660208086019190915291151560051b8401909101915061046290506107c8565b346101cb5760203660031901126101cb57610881611eb0565b600435600055005b346101cb5760003660031901126101cb57600080516020612776833981519152546040516001600160a01b039091168152602090f35b346101cb5760003660031901126101cb576020600454604051908152f35b346101cb5760203660031901126101cb576108f66118b8565b6108fe611eb0565b6001600160a01b03811615610920578061091a6101c992611ef5565b50612146565b634e46966960e11b60005260046000fd5b346101cb5760003660031901126101cb5761094a611eb0565b60008051602061277683398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101cb5760203660031901126101cb576109b46118b8565b6001600160a01b038116156109d7576109ce6020916119af565b54604051908152f35b6322718ad960e21b600052600060045260246000fd5b346101cb5760003660031901126101cb576104766040516104628161045b81611a5b565b346101cb5760203660031901126101cb576020610a2f600435611e7f565b6040516001600160a01b039091168152f35b346101cb5760203660031901126101cb57600435610a5d611eb0565b80158015610ab7575b610aa35760407f624e69eaa446a6ee2f869d52cb1206e98cd8851850d0d84981da809ad702536f91600454908060045582519182526020820152a1005b6354ad071360e01b60005260045260246000fd5b50600a8111610a66565b346101cb5760803660031901126101cb57610ada6118b8565b6024356001600160401b0381116101cb57610af9903690600401611991565b6044356001600160401b0381116101cb57610b18903690600401611991565b916064356001600160401b0381116101cb57610b38903690600401611991565b6000805160206127d6833981519152549260ff8460401c1615936001600160401b038116801590816110fd575b60011490816110f3575b1590816110ea575b506110d95767ffffffffffffffff1981166001176000805160206127d683398151915255846110ac575b50610baa612727565b610bb2612727565b8051906001600160401b038211610e7b578190610bdd60008051602061275683398151915254611a21565b601f8111611028575b50602090601f8311600114610f9a57600092610f8f575b50508160011b916000199060031b1c191617600080516020612756833981519152555b83516001600160401b038111610e7b57610c486000805160206127f683398151915254611a21565b601f8111610f1d575b50602094601f8211600114610e9c57948192939495600092610e91575b50508160011b916000199060031b1c1916176000805160206127f6833981519152555b610c99612727565b610ca1612727565b610caa82611e09565b610cb2611eb0565b610cbb82611e09565b66038d7ea4c680006000556014600155600480558051906001600160401b038211610e7b57610ceb600754611a21565b601f8111610e0e575b50602090601f8311600114610d9657610d2c93929160009183610d8b575b50508160011b916000199060031b1c191617600755612146565b610d3257005b68ff0000000000000000196000805160206127d683398151915254166000805160206127d6833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b015190508580610d12565b90601f1983169160076000526000805160206127968339815191529260005b818110610df65750916001939185610d2c97969410610ddd575b505050811b01600755612146565b015160001960f88460031b161c19169055858080610dcf565b92936020600181928786015181550195019301610db5565b6007600052601f830160051c600080516020612796833981519152019060208410610e65575b601f0160051c60008051602061279683398151915201905b818110610e595750610cf4565b60008155600101610e4c565b6000805160206127968339815191529150610e34565b634e487b7160e01b600052604160045260246000fd5b015190508580610c6e565b601f198216956000805160206127f6833981519152600052806000209160005b888110610f0557508360019596979810610eec575b505050811b016000805160206127f683398151915255610c91565b015160001960f88460031b161c19169055858080610ed1565b91926020600181928685015181550194019201610ebc565b6000805160206127f68339815191526000527ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e601f830160051c81019160208410610f85575b601f0160051c01905b818110610f795750610c51565b60008155600101610f6c565b9091508190610f63565b015190508680610bfd565b60008051602061275683398151915260009081526000805160206128168339815191529350601f198516905b8181106110105750908460019594939210610ff7575b505050811b0160008051602061275683398151915255610c20565b015160001960f88460031b161c19169055868080610fdc565b92936020600181928786015181550195019301610fc6565b909150600080516020612756833981519152600052601f830160051c600080516020612816833981519152019060208410611096575b90601f8493920160051c60008051602061281683398151915201905b8181106110875750610be6565b6000815584935060010161107a565b600080516020612816833981519152915061105e565b68ffffffffffffffffff191668010000000000000001176000805160206127d68339815191525585610ba1565b63f92ee8a960e01b60005260046000fd5b90501587610b77565b303b159150610b6f565b869150610b65565b346101cb5760203660031901126101cb576004356001600160401b0381116101cb57611135903690600401611991565b61113d611eb0565b80516001600160401b038111610e7b57611158600754611a21565b601f811161126d575b506020601f82116001146111d75791816111c7927f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf6946000916111cc575b508160011b916000199060031b1c191617600755604051918291602083526020830190611893565b0390a1005b90508201518561119f565b601f1982169060076000526000805160206127968339815191529160005b8181106112555750927f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf69492600192826111c7961061123c575b5050811b01600755610462565b84015160001960f88460031b161c19169055858061122f565b919260206001819286890151815501940192016111f5565b6007600052601f820160051c6000805160206127968339815191520190602083106112c4575b601f0160051c60008051602061279683398151915201905b8181106112b85750611161565b600081556001016112ab565b6000805160206127968339815191529150611293565b346101cb5760203660031901126101cb576001600160a01b036112fb6118b8565b166000526003602052602060018060a01b0360406000205416604051908152f35b60203660031901126101cb576004356001600160401b0381116101cb57611347903690600401611991565b6000548034036103c1575061135b33611ef5565b9061136533612146565b602061137a6040519283815193849201611870565b60059082019081528190036020019020546001600160a01b03169081158015611438575b61142357336000908152600360205260409020546101c992906001600160a01b0316156113ce575b503433612402565b33600081815260036020526040812080546001600160a01b0319166001600160a01b0385161790559091907f5f7165288eef601591cf549e15ff19ef9060b7f71b9c115be946fa1fe7ebf68a9080a3826113c6565b506316fb166f60e01b60005260045260246000fd5b5033821461139e565b346101cb5760403660031901126101cb5761145a6118b8565b602435611465611eb0565b6001600160a01b038216156109205760005b818110611487576101c983612146565b60019061149384611ef5565b5001611477565b346101cb576101c96114ab366118e4565b90604051926114bb60208561191e565b6000845261055a838383611b6d565b346101cb5760203660031901126101cb576004356114e6611eb0565b606481116115275760407fc48323e605e5bacb82da05ff295004ccbfc77d4d71742ee056a9320ce161e0fc91600154908060015582519182526020820152a1005b63b6135d9160e01b60005260045260246000fd5b346101cb5760203660031901126101cb57600435611557611eb0565b47811161158857600080808093335af161156f611d4d565b501561157757005b63351dc55d60e21b60005260046000fd5b631e9acf1760e31b60005260046000fd5b346101cb5760203660031901126101cb576004356001600160401b0381116101cb576115cb6020913690600401611991565b816115df6040519283815193849201611870565b600590820190815281900382019020546040516001600160a01b039091168152f35b346101cb576101c9611612366118e4565b91611b6d565b346101cb5760403660031901126101cb576116316118b8565b60243561163d81611e7f565b331515806116f7575b806116d3575b6116be5781906001600160a01b0384811691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a460009081526000805160206127b68339815191526020526040902080546001600160a01b0319166001600160a01b03909216919091179055005b63a9fbf51f60e01b6000523360045260246000fd5b506116dd816119e8565b336000908152602091909152604090205460ff161561164c565b506001600160a01b038116331415611646565b346101cb5760203660031901126101cb576020610a2f60043561172c81611e7f565b5060009081526000805160206127b683398151915260205260409020546001600160a01b031690565b346101cb5760003660031901126101cb5760405160006000805160206127568339815191525461178481611a21565b808452906001811690811561084457506001146117ab57610476836104628185038261191e565b6000805160206127568339815191526000908152600080516020612816833981519152939250905b8082106117eb575090915081016020016104626107c8565b9192600181602092548385880101520191019092916117d3565b346101cb5760203660031901126101cb576004359063ffffffff60e01b82168092036101cb576020916380ac58cd60e01b811490811561185f575b811561184e575b5015158152f35b6301ffc9a760e01b14905083611847565b635b5e139f60e01b81149150611840565b60005b8381106118835750506000910152565b8181015183820152602001611873565b906020916118ac81518092818552858086019101611870565b601f01601f1916010190565b600435906001600160a01b03821682036101cb57565b602435906001600160a01b03821682036101cb57565b60609060031901126101cb576004356001600160a01b03811681036101cb57906024356001600160a01b03811681036101cb579060443590565b90601f801991011681019081106001600160401b03821117610e7b57604052565b6001600160401b038111610e7b57601f01601f191660200190565b9291926119668261193f565b91611974604051938461191e565b8294818452818301116101cb578281602093846000960137010152565b9080601f830112156101cb578160206119ac9335910161195a565b90565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793036020526040902090565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020526040902090565b90600182811c92168015611a51575b6020831014611a3b57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611a30565b60075460009291611a6b82611a21565b8082529160018116908115611ace5750600114611a86575050565b600760009081529293509091906000805160206127968339815191525b838310611ab4575060209250010190565b600181602092949394548385870101520191019190611aa3565b9050602093945060ff929192191683830152151560051b010190565b60009291815491611afa83611a21565b8083529260018116908115611b505750600114611b1657505050565b60009081526020812093945091925b838310611b36575060209250010190565b600181602092949394548385870101520191019190611b25565b915050602093945060ff929192191683830152151560051b010190565b909291906001600160a01b0384168015611d3757600094611b8d846126dc565b9533151580611c8b575b509184917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611bd897989460018060a01b03861698899384611c4c576119af565b805460010190558481527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793026020526040812080546001600160a01b0319168517905580a4506001600160a01b0316808303611c3257505050565b6364283d7b60e01b60005260045260245260445260646000fd5b60008781526000805160206127b68339815191526020526040902080546001600160a01b0319169055611c7e886119af565b80546000190190556119af565b80611cd4575b15611c9c5738611b97565b84906001600160a01b038816611cbe57602491637e27328960e01b8252600452fd5b60449163177e802f60e01b825233600452602452fd5b506001600160a01b03871633148015611d1a575b80611c91575060008581526000805160206127b683398151915260205260409020546001600160a01b03163314611c91565b50611d24876119e8565b338252602052604081205460ff16611ce8565b633250574960e11b600052600060045260246000fd5b3d15611d78573d90611d5e8261193f565b91611d6c604051938461191e565b82523d6000602084013e565b606090565b6001600160a01b0390911681526040602082018190526119ac92910190611aea565b81810292918115918404141715611db257565b634e487b7160e01b600052601160045260246000fd5b6001600160401b038111610e7b5760051b60200190565b8051821015611df35760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03168015611e695760008051602061277683398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b611e88816126dc565b906001600160a01b03821615611e9c575090565b637e27328960e01b60005260045260246000fd5b600080516020612776833981519152546001600160a01b03163303611ed157565b63118cdaa760e01b6000523360045260246000fd5b6000198114611db25760010190565b60025460405160209291611f09848361191e565b600082526001600160a01b038316928315611d3757611f27826126dc565b6001600160a01b03811680151591908490879084612107575b611f49866119af565b8054600101905560008381527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793028b526040812080546001600160a01b031916841790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9080a4506120f1573b611ff8575b50507f4cc0a9c4a99ddc700de1af2c9f916a7cbfdb71f14801ccff94061ad1ef8a804060025492604051848152a2611ff281611ee6565b60025590565b6120369184916040969496519384928392630a85bd0160e11b8452336004850152600060248501526044840152608060648401526084830190611893565b03816000885af180916000916120ac575b5090612077575050612057611d4d565b805191826120745783633250574960e11b60005260045260246000fd5b01fd5b9092906001600160e01b03191663757a42ff60e11b01612098573880611fbb565b633250574960e11b60005260045260246000fd5b8481813d83116120ea575b6120c1818361191e565b810103126120e65751906001600160e01b0319821682036120e3575038612047565b80fd5b5080fd5b503d6120b7565b6339e3563760e11b600052600060045260246000fd5b60008381526000805160206127b68339815191526020526040902080546001600160a01b0319169055612139846119af565b8054600019019055611f40565b6001600160a01b031660008181526006602052604090205461216790611a21565b1561216f5750565b604051606061217e818361191e565b602482527f6162636465666768696a6b6c6d6e6f707172737475767778797a3031323334356020830152633637383960e01b60408301526040908151926121c5838561191e565b600684526020840191601f19840136843760005b600681106123945750505060206121fa918351809381928751928391611870565b81016005815203019020836bffffffffffffffffffffffff60a01b8254161790558260005260066020528060002082516001600160401b038111610e7b576122428254611a21565b601f811161234c575b506020601f82116001146122c15791816122b194927fb9e788fc28e69f876035840c2b162474437d35622a8cfa689a88c04403bf7ee696946000916122b6575b508160011b916000199060031b1c19161790555b51918291602083526020830190611893565b0390a2565b90508401513861228b565b601f1982169083600052806000209160005b8181106123345750927fb9e788fc28e69f876035840c2b162474437d35622a8cfa689a88c04403bf7ee6969492600192826122b198961061231b575b5050811b01905561229f565b86015160001960f88460031b161c19169055388061230f565b9192602060018192868b0151815501940192016122d3565b826000526020600020601f830160051c8101916020841061238a575b601f0160051c01905b81811061237e575061224b565b60008155600101612371565b9091508190612368565b84516020810190428252448782015282848201528381526123b660808261191e565b5190209083519182156123ec576123d660019360ff60f81b920686612716565b511660001a6123e58289612716565b53016121d9565b634e487b7160e01b600052601260045260246000fd5b91606461241160015484611d9f565b6001600160a01b0394851660008181526003602052604081205491969094939092049291165b6001600160a01b038116801515806125d0575b156125c7576000818152600360205260409020546001600160a01b031690811580156125b0575b156125025750506001600160a01b031693600080808086895af1612493611d4d565b50156124e9577f0fc36a26617d5b8d843d9224f3b293803d8b0c812dc3a647e2a147563414640d9392916124e491604051948594859094939260609260808301968352602083015260408201520152565b0390a3565b8285633da906b960e01b60005260045260245260446000fd5b90915060019493945460640360648111611db25761252260649187611d9f565b04808603958611611db257600080808084865af161253e611d4d565b5015612598576040805191825260208201869052810187905260608101849052612592929188917f0fc36a26617d5b8d843d9224f3b293803d8b0c812dc3a647e2a147563414640d90608090a39392611ee6565b92612437565b90633da906b960e01b60005260045260245260446000fd5b506004546000198101908111611db2578614612471565b50505050505050565b50600454851061244a565b823b6125e9575b5050505050565b604051630a85bd0160e11b81526001600160a01b039182166004820152918116602483015260448201939093526080606482015291169160209082908190612635906084830190611893565b03816000865af18091600091612699575b50906126775750612655611d4d565b805190816126725782633250574960e11b60005260045260246000fd5b602001fd5b6001600160e01b03191663757a42ff60e11b01612098575038808080806125e2565b6020813d6020116126d4575b816126b26020938361191e565b810103126120e65751906001600160e01b0319821682036120e3575038612646565b3d91506126a5565b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260409020546001600160a01b031690565b908151811015611df3570160200190565b60ff6000805160206127d68339815191525460401c161561274457565b631afcd79f60e31b60005260046000fdfe80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68880bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930137c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf81a2646970667358221220b98cf3e2960af8eae7e76abb05c166d02f56113946c60f106473d3aa6f6c851b64736f6c634300081c0033",
|
1081
|
+
"deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a7146118055750806306fdde0314611755578063081812fc1461170a578063095ea7b31461161857806323b872dd146116015780632655e840146115995780632e1a7d4d1461153b578063411e9ef2146114ca57806342842e0e1461149a57806343508b0514611441578063492cc7691461131c5780634a3b68cc146112da57806355f804b3146111055780635f1e6f6d14610ac157806363311f4914610a415780636352211e14610a115780636c0360eb146109ed57806370a082311461099b578063715018a614610931578063755edd17146108dd57806384d8ad13146108bf5780638da5cb5b1461088957806391b7f5ed1461086857806395d89b41146107815780639b2c76d41461073d5780639df375d7146106a1578063a035b1fe14610683578063a22cb465146105e7578063b0a2fc1b14610560578063b88d4fde146104f5578063c15edf5f146104d7578063c87b56dd1461041e578063d6bfb0481461021e578063e985e9c5146101d05763f2fde38b146101a057600080fd5b346101cb5760203660031901126101cb576101c96101bc6118b8565b6101c4611eb0565b611e09565b005b600080fd5b346101cb5760403660031901126101cb576101e96118b8565b6101fa6101f46118ce565b916119e8565b9060018060a01b0316600052602052602060ff604060002054166040519015158152f35b60403660031901126101cb576004356001600160401b0381116101cb57610249903690600401611991565b6024359081156103d95761025f82600054611d9f565b8034036103c15750602061027c6040519283815193849201611870565b60059082019081528190036020019020546001600160a01b0316801580156103b8575b6103a457336000908152600360205260409020546001600160a01b03161561034f575b506102cc33612146565b6102d581611dc8565b906102e3604051928361191e565b808252601f196102f282611dc8565b0136602084013760005b81811061033257508034049160005b82811061031457005b8061032c61032460019385611ddf565b518633612402565b0161030b565b60019061033e33611ef5565b6103488286611ddf565b52016102fc565b33600081815260036020526040812080546001600160a01b0319166001600160a01b0385161790559091907f5f7165288eef601591cf549e15ff19ef9060b7f71b9c115be946fa1fe7ebf68a9080a3816102c2565b6316fb166f60e01b60005260045260246000fd5b5033811461029f565b63ebbfb3bb60e01b6000523460045260245260446000fd5b60405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606490fd5b346101cb5760203660031901126101cb576001600160a01b03610442600435611e7f565b161561047a576104766040516104628161045b81611a5b565b038261191e565b604051918291602083526020830190611893565b0390f35b60405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608490fd5b346101cb5760003660031901126101cb576020600154604051908152f35b346101cb5760803660031901126101cb5761050e6118b8565b6105166118ce565b90604435606435926001600160401b0384116101cb57366023850112156101cb5761054e6101c994369060248160040135910161195a565b9261055a838383611b6d565b336125db565b346101cb5760003660031901126101cb57336000526006602052610588604060002054611a21565b6105b85761059533612146565b33600052600660205261047661045b610462604060002060405192838092611aea565b3360005260066020526105e36040600020604051918291638541228760e01b83523360048401611d7d565b0390fd5b346101cb5760403660031901126101cb576106006118b8565b602435908115158092036101cb576001600160a01b031690811561066e57610627336119e8565b82600052602052604060002060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b50630b61174360e31b60005260045260246000fd5b346101cb5760003660031901126101cb576020600054604051908152f35b346101cb5760203660031901126101cb576106ba6118b8565b6106c2611eb0565b60018060a01b038116908160005260066020526106e3604060002054611a21565b610712576106f090612146565b600052600660205261047661045b610462604060002060405192838092611aea565b9060005260066020526040600020906105e3604051928392638541228760e01b845260048401611d7d565b346101cb5760203660031901126101cb576001600160a01b0361075e6118b8565b16600052600660205261047661045b610462604060002060405192838092611aea565b346101cb5760003660031901126101cb5760405160006000805160206127f6833981519152546107b081611a21565b808452906001811690811561084457506001146107d8575b610476836104628185038261191e565b6000805160206127f683398151915260009081527ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e939250905b80821061082a575090915081016020016104626107c8565b919260018160209254838588010152019101909291610812565b60ff191660208086019190915291151560051b8401909101915061046290506107c8565b346101cb5760203660031901126101cb57610881611eb0565b600435600055005b346101cb5760003660031901126101cb57600080516020612776833981519152546040516001600160a01b039091168152602090f35b346101cb5760003660031901126101cb576020600454604051908152f35b346101cb5760203660031901126101cb576108f66118b8565b6108fe611eb0565b6001600160a01b03811615610920578061091a6101c992611ef5565b50612146565b634e46966960e11b60005260046000fd5b346101cb5760003660031901126101cb5761094a611eb0565b60008051602061277683398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101cb5760203660031901126101cb576109b46118b8565b6001600160a01b038116156109d7576109ce6020916119af565b54604051908152f35b6322718ad960e21b600052600060045260246000fd5b346101cb5760003660031901126101cb576104766040516104628161045b81611a5b565b346101cb5760203660031901126101cb576020610a2f600435611e7f565b6040516001600160a01b039091168152f35b346101cb5760203660031901126101cb57600435610a5d611eb0565b80158015610ab7575b610aa35760407f624e69eaa446a6ee2f869d52cb1206e98cd8851850d0d84981da809ad702536f91600454908060045582519182526020820152a1005b6354ad071360e01b60005260045260246000fd5b50600a8111610a66565b346101cb5760803660031901126101cb57610ada6118b8565b6024356001600160401b0381116101cb57610af9903690600401611991565b6044356001600160401b0381116101cb57610b18903690600401611991565b916064356001600160401b0381116101cb57610b38903690600401611991565b6000805160206127d6833981519152549260ff8460401c1615936001600160401b038116801590816110fd575b60011490816110f3575b1590816110ea575b506110d95767ffffffffffffffff1981166001176000805160206127d683398151915255846110ac575b50610baa612727565b610bb2612727565b8051906001600160401b038211610e7b578190610bdd60008051602061275683398151915254611a21565b601f8111611028575b50602090601f8311600114610f9a57600092610f8f575b50508160011b916000199060031b1c191617600080516020612756833981519152555b83516001600160401b038111610e7b57610c486000805160206127f683398151915254611a21565b601f8111610f1d575b50602094601f8211600114610e9c57948192939495600092610e91575b50508160011b916000199060031b1c1916176000805160206127f6833981519152555b610c99612727565b610ca1612727565b610caa82611e09565b610cb2611eb0565b610cbb82611e09565b66038d7ea4c680006000556014600155600480558051906001600160401b038211610e7b57610ceb600754611a21565b601f8111610e0e575b50602090601f8311600114610d9657610d2c93929160009183610d8b575b50508160011b916000199060031b1c191617600755612146565b610d3257005b68ff0000000000000000196000805160206127d683398151915254166000805160206127d6833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b015190508580610d12565b90601f1983169160076000526000805160206127968339815191529260005b818110610df65750916001939185610d2c97969410610ddd575b505050811b01600755612146565b015160001960f88460031b161c19169055858080610dcf565b92936020600181928786015181550195019301610db5565b6007600052601f830160051c600080516020612796833981519152019060208410610e65575b601f0160051c60008051602061279683398151915201905b818110610e595750610cf4565b60008155600101610e4c565b6000805160206127968339815191529150610e34565b634e487b7160e01b600052604160045260246000fd5b015190508580610c6e565b601f198216956000805160206127f6833981519152600052806000209160005b888110610f0557508360019596979810610eec575b505050811b016000805160206127f683398151915255610c91565b015160001960f88460031b161c19169055858080610ed1565b91926020600181928685015181550194019201610ebc565b6000805160206127f68339815191526000527ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e601f830160051c81019160208410610f85575b601f0160051c01905b818110610f795750610c51565b60008155600101610f6c565b9091508190610f63565b015190508680610bfd565b60008051602061275683398151915260009081526000805160206128168339815191529350601f198516905b8181106110105750908460019594939210610ff7575b505050811b0160008051602061275683398151915255610c20565b015160001960f88460031b161c19169055868080610fdc565b92936020600181928786015181550195019301610fc6565b909150600080516020612756833981519152600052601f830160051c600080516020612816833981519152019060208410611096575b90601f8493920160051c60008051602061281683398151915201905b8181106110875750610be6565b6000815584935060010161107a565b600080516020612816833981519152915061105e565b68ffffffffffffffffff191668010000000000000001176000805160206127d68339815191525585610ba1565b63f92ee8a960e01b60005260046000fd5b90501587610b77565b303b159150610b6f565b869150610b65565b346101cb5760203660031901126101cb576004356001600160401b0381116101cb57611135903690600401611991565b61113d611eb0565b80516001600160401b038111610e7b57611158600754611a21565b601f811161126d575b506020601f82116001146111d75791816111c7927f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf6946000916111cc575b508160011b916000199060031b1c191617600755604051918291602083526020830190611893565b0390a1005b90508201518561119f565b601f1982169060076000526000805160206127968339815191529160005b8181106112555750927f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf69492600192826111c7961061123c575b5050811b01600755610462565b84015160001960f88460031b161c19169055858061122f565b919260206001819286890151815501940192016111f5565b6007600052601f820160051c6000805160206127968339815191520190602083106112c4575b601f0160051c60008051602061279683398151915201905b8181106112b85750611161565b600081556001016112ab565b6000805160206127968339815191529150611293565b346101cb5760203660031901126101cb576001600160a01b036112fb6118b8565b166000526003602052602060018060a01b0360406000205416604051908152f35b60203660031901126101cb576004356001600160401b0381116101cb57611347903690600401611991565b6000548034036103c1575061135b33611ef5565b9061136533612146565b602061137a6040519283815193849201611870565b60059082019081528190036020019020546001600160a01b03169081158015611438575b61142357336000908152600360205260409020546101c992906001600160a01b0316156113ce575b503433612402565b33600081815260036020526040812080546001600160a01b0319166001600160a01b0385161790559091907f5f7165288eef601591cf549e15ff19ef9060b7f71b9c115be946fa1fe7ebf68a9080a3826113c6565b506316fb166f60e01b60005260045260246000fd5b5033821461139e565b346101cb5760403660031901126101cb5761145a6118b8565b602435611465611eb0565b6001600160a01b038216156109205760005b818110611487576101c983612146565b60019061149384611ef5565b5001611477565b346101cb576101c96114ab366118e4565b90604051926114bb60208561191e565b6000845261055a838383611b6d565b346101cb5760203660031901126101cb576004356114e6611eb0565b606481116115275760407fc48323e605e5bacb82da05ff295004ccbfc77d4d71742ee056a9320ce161e0fc91600154908060015582519182526020820152a1005b63b6135d9160e01b60005260045260246000fd5b346101cb5760203660031901126101cb57600435611557611eb0565b47811161158857600080808093335af161156f611d4d565b501561157757005b63351dc55d60e21b60005260046000fd5b631e9acf1760e31b60005260046000fd5b346101cb5760203660031901126101cb576004356001600160401b0381116101cb576115cb6020913690600401611991565b816115df6040519283815193849201611870565b600590820190815281900382019020546040516001600160a01b039091168152f35b346101cb576101c9611612366118e4565b91611b6d565b346101cb5760403660031901126101cb576116316118b8565b60243561163d81611e7f565b331515806116f7575b806116d3575b6116be5781906001600160a01b0384811691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a460009081526000805160206127b68339815191526020526040902080546001600160a01b0319166001600160a01b03909216919091179055005b63a9fbf51f60e01b6000523360045260246000fd5b506116dd816119e8565b336000908152602091909152604090205460ff161561164c565b506001600160a01b038116331415611646565b346101cb5760203660031901126101cb576020610a2f60043561172c81611e7f565b5060009081526000805160206127b683398151915260205260409020546001600160a01b031690565b346101cb5760003660031901126101cb5760405160006000805160206127568339815191525461178481611a21565b808452906001811690811561084457506001146117ab57610476836104628185038261191e565b6000805160206127568339815191526000908152600080516020612816833981519152939250905b8082106117eb575090915081016020016104626107c8565b9192600181602092548385880101520191019092916117d3565b346101cb5760203660031901126101cb576004359063ffffffff60e01b82168092036101cb576020916380ac58cd60e01b811490811561185f575b811561184e575b5015158152f35b6301ffc9a760e01b14905083611847565b635b5e139f60e01b81149150611840565b60005b8381106118835750506000910152565b8181015183820152602001611873565b906020916118ac81518092818552858086019101611870565b601f01601f1916010190565b600435906001600160a01b03821682036101cb57565b602435906001600160a01b03821682036101cb57565b60609060031901126101cb576004356001600160a01b03811681036101cb57906024356001600160a01b03811681036101cb579060443590565b90601f801991011681019081106001600160401b03821117610e7b57604052565b6001600160401b038111610e7b57601f01601f191660200190565b9291926119668261193f565b91611974604051938461191e565b8294818452818301116101cb578281602093846000960137010152565b9080601f830112156101cb578160206119ac9335910161195a565b90565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793036020526040902090565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020526040902090565b90600182811c92168015611a51575b6020831014611a3b57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611a30565b60075460009291611a6b82611a21565b8082529160018116908115611ace5750600114611a86575050565b600760009081529293509091906000805160206127968339815191525b838310611ab4575060209250010190565b600181602092949394548385870101520191019190611aa3565b9050602093945060ff929192191683830152151560051b010190565b60009291815491611afa83611a21565b8083529260018116908115611b505750600114611b1657505050565b60009081526020812093945091925b838310611b36575060209250010190565b600181602092949394548385870101520191019190611b25565b915050602093945060ff929192191683830152151560051b010190565b909291906001600160a01b0384168015611d3757600094611b8d846126dc565b9533151580611c8b575b509184917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611bd897989460018060a01b03861698899384611c4c576119af565b805460010190558481527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793026020526040812080546001600160a01b0319168517905580a4506001600160a01b0316808303611c3257505050565b6364283d7b60e01b60005260045260245260445260646000fd5b60008781526000805160206127b68339815191526020526040902080546001600160a01b0319169055611c7e886119af565b80546000190190556119af565b80611cd4575b15611c9c5738611b97565b84906001600160a01b038816611cbe57602491637e27328960e01b8252600452fd5b60449163177e802f60e01b825233600452602452fd5b506001600160a01b03871633148015611d1a575b80611c91575060008581526000805160206127b683398151915260205260409020546001600160a01b03163314611c91565b50611d24876119e8565b338252602052604081205460ff16611ce8565b633250574960e11b600052600060045260246000fd5b3d15611d78573d90611d5e8261193f565b91611d6c604051938461191e565b82523d6000602084013e565b606090565b6001600160a01b0390911681526040602082018190526119ac92910190611aea565b81810292918115918404141715611db257565b634e487b7160e01b600052601160045260246000fd5b6001600160401b038111610e7b5760051b60200190565b8051821015611df35760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03168015611e695760008051602061277683398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b611e88816126dc565b906001600160a01b03821615611e9c575090565b637e27328960e01b60005260045260246000fd5b600080516020612776833981519152546001600160a01b03163303611ed157565b63118cdaa760e01b6000523360045260246000fd5b6000198114611db25760010190565b60025460405160209291611f09848361191e565b600082526001600160a01b038316928315611d3757611f27826126dc565b6001600160a01b03811680151591908490879084612107575b611f49866119af565b8054600101905560008381527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793028b526040812080546001600160a01b031916841790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9080a4506120f1573b611ff8575b50507f4cc0a9c4a99ddc700de1af2c9f916a7cbfdb71f14801ccff94061ad1ef8a804060025492604051848152a2611ff281611ee6565b60025590565b6120369184916040969496519384928392630a85bd0160e11b8452336004850152600060248501526044840152608060648401526084830190611893565b03816000885af180916000916120ac575b5090612077575050612057611d4d565b805191826120745783633250574960e11b60005260045260246000fd5b01fd5b9092906001600160e01b03191663757a42ff60e11b01612098573880611fbb565b633250574960e11b60005260045260246000fd5b8481813d83116120ea575b6120c1818361191e565b810103126120e65751906001600160e01b0319821682036120e3575038612047565b80fd5b5080fd5b503d6120b7565b6339e3563760e11b600052600060045260246000fd5b60008381526000805160206127b68339815191526020526040902080546001600160a01b0319169055612139846119af565b8054600019019055611f40565b6001600160a01b031660008181526006602052604090205461216790611a21565b1561216f5750565b604051606061217e818361191e565b602482527f6162636465666768696a6b6c6d6e6f707172737475767778797a3031323334356020830152633637383960e01b60408301526040908151926121c5838561191e565b600684526020840191601f19840136843760005b600681106123945750505060206121fa918351809381928751928391611870565b81016005815203019020836bffffffffffffffffffffffff60a01b8254161790558260005260066020528060002082516001600160401b038111610e7b576122428254611a21565b601f811161234c575b506020601f82116001146122c15791816122b194927fb9e788fc28e69f876035840c2b162474437d35622a8cfa689a88c04403bf7ee696946000916122b6575b508160011b916000199060031b1c19161790555b51918291602083526020830190611893565b0390a2565b90508401513861228b565b601f1982169083600052806000209160005b8181106123345750927fb9e788fc28e69f876035840c2b162474437d35622a8cfa689a88c04403bf7ee6969492600192826122b198961061231b575b5050811b01905561229f565b86015160001960f88460031b161c19169055388061230f565b9192602060018192868b0151815501940192016122d3565b826000526020600020601f830160051c8101916020841061238a575b601f0160051c01905b81811061237e575061224b565b60008155600101612371565b9091508190612368565b84516020810190428252448782015282848201528381526123b660808261191e565b5190209083519182156123ec576123d660019360ff60f81b920686612716565b511660001a6123e58289612716565b53016121d9565b634e487b7160e01b600052601260045260246000fd5b91606461241160015484611d9f565b6001600160a01b0394851660008181526003602052604081205491969094939092049291165b6001600160a01b038116801515806125d0575b156125c7576000818152600360205260409020546001600160a01b031690811580156125b0575b156125025750506001600160a01b031693600080808086895af1612493611d4d565b50156124e9577f0fc36a26617d5b8d843d9224f3b293803d8b0c812dc3a647e2a147563414640d9392916124e491604051948594859094939260609260808301968352602083015260408201520152565b0390a3565b8285633da906b960e01b60005260045260245260446000fd5b90915060019493945460640360648111611db25761252260649187611d9f565b04808603958611611db257600080808084865af161253e611d4d565b5015612598576040805191825260208201869052810187905260608101849052612592929188917f0fc36a26617d5b8d843d9224f3b293803d8b0c812dc3a647e2a147563414640d90608090a39392611ee6565b92612437565b90633da906b960e01b60005260045260245260446000fd5b506004546000198101908111611db2578614612471565b50505050505050565b50600454851061244a565b823b6125e9575b5050505050565b604051630a85bd0160e11b81526001600160a01b039182166004820152918116602483015260448201939093526080606482015291169160209082908190612635906084830190611893565b03816000865af18091600091612699575b50906126775750612655611d4d565b805190816126725782633250574960e11b60005260045260246000fd5b602001fd5b6001600160e01b03191663757a42ff60e11b01612098575038808080806125e2565b6020813d6020116126d4575b816126b26020938361191e565b810103126120e65751906001600160e01b0319821682036120e3575038612646565b3d91506126a5565b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260409020546001600160a01b031690565b908151811015611df3570160200190565b60ff6000805160206127d68339815191525460401c161561274457565b631afcd79f60e31b60005260046000fdfe80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68880bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930137c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf81a2646970667358221220b98cf3e2960af8eae7e76abb05c166d02f56113946c60f106473d3aa6f6c851b64736f6c634300081c0033",
|
1021
1082
|
"linkReferences": {},
|
1022
1083
|
"deployedLinkReferences": {}
|
1023
1084
|
}
|