@1upmonster/duel 0.1.8 → 0.2.2
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/README.md +110 -59
- package/dist/admin.d.ts +25 -40
- package/dist/admin.js +93 -114
- package/dist/encryption.js +1 -2
- package/dist/generated/duel/accounts/index.d.ts +10 -0
- package/dist/generated/duel/accounts/index.js +11 -0
- package/dist/generated/duel/accounts/matchTicket.d.ts +38 -0
- package/dist/generated/duel/accounts/matchTicket.js +45 -0
- package/dist/generated/duel/accounts/queue.d.ts +42 -0
- package/dist/generated/duel/accounts/queue.js +45 -0
- package/dist/generated/duel/accounts/tenant.d.ts +41 -0
- package/dist/generated/duel/accounts/tenant.js +44 -0
- package/dist/generated/duel/errors/duel.d.ts +31 -0
- package/dist/generated/duel/errors/duel.js +35 -0
- package/dist/generated/duel/errors/index.d.ts +8 -0
- package/dist/generated/duel/errors/index.js +9 -0
- package/dist/generated/duel/index.d.ts +12 -0
- package/dist/generated/duel/index.js +13 -0
- package/dist/generated/duel/instructions/cancelTicket.d.ts +45 -0
- package/dist/generated/duel/instructions/cancelTicket.js +56 -0
- package/dist/generated/duel/instructions/closeTicket.d.ts +45 -0
- package/dist/generated/duel/instructions/closeTicket.js +56 -0
- package/dist/generated/duel/instructions/commitTickets.d.ts +39 -0
- package/dist/generated/duel/instructions/commitTickets.js +50 -0
- package/dist/generated/duel/instructions/createTicket.d.ts +48 -0
- package/dist/generated/duel/instructions/createTicket.js +63 -0
- package/dist/generated/duel/instructions/delegateQueue.d.ts +69 -0
- package/dist/generated/duel/instructions/delegateQueue.js +90 -0
- package/dist/generated/duel/instructions/delegateTicket.d.ts +69 -0
- package/dist/generated/duel/instructions/delegateTicket.js +90 -0
- package/dist/generated/duel/instructions/flushMatches.d.ts +37 -0
- package/dist/generated/duel/instructions/flushMatches.js +43 -0
- package/dist/generated/duel/instructions/index.d.ts +19 -0
- package/dist/generated/duel/instructions/index.js +20 -0
- package/dist/generated/duel/instructions/initializeQueue.d.ts +48 -0
- package/dist/generated/duel/instructions/initializeQueue.js +63 -0
- package/dist/generated/duel/instructions/initializeTenant.d.ts +70 -0
- package/dist/generated/duel/instructions/initializeTenant.js +67 -0
- package/dist/generated/duel/instructions/joinQueue.d.ts +51 -0
- package/dist/generated/duel/instructions/joinQueue.js +56 -0
- package/dist/generated/duel/instructions/processUndelegation.d.ts +43 -0
- package/dist/generated/duel/instructions/processUndelegation.js +49 -0
- package/dist/generated/duel/instructions/setupTicketPermission.d.ts +54 -0
- package/dist/generated/duel/instructions/setupTicketPermission.js +63 -0
- package/dist/generated/duel/programs/duel.d.ts +92 -0
- package/dist/generated/duel/programs/duel.js +146 -0
- package/dist/generated/duel/programs/index.d.ts +8 -0
- package/dist/generated/duel/programs/index.js +9 -0
- package/dist/generated/duel/types/accountType.d.ts +25 -0
- package/dist/generated/duel/types/accountType.js +25 -0
- package/dist/generated/duel/types/index.d.ts +13 -0
- package/dist/generated/duel/types/index.js +14 -0
- package/dist/generated/duel/types/matchEntry.d.ts +23 -0
- package/dist/generated/duel/types/matchEntry.js +18 -0
- package/dist/generated/duel/types/matchFound.d.ts +23 -0
- package/dist/generated/duel/types/matchFound.js +18 -0
- package/dist/generated/duel/types/pendingMatch.d.ts +21 -0
- package/dist/generated/duel/types/pendingMatch.js +18 -0
- package/dist/generated/duel/types/queueEntry.d.ts +19 -0
- package/dist/generated/duel/types/queueEntry.js +18 -0
- package/dist/generated/duel/types/ticketStatus.d.ts +40 -0
- package/dist/generated/duel/types/ticketStatus.js +25 -0
- package/dist/generated/rps-game/accounts/gameSession.d.ts +40 -0
- package/dist/generated/rps-game/accounts/gameSession.js +45 -0
- package/dist/generated/rps-game/accounts/index.d.ts +9 -0
- package/dist/generated/rps-game/accounts/index.js +10 -0
- package/dist/generated/rps-game/accounts/playerProfile.d.ts +36 -0
- package/dist/generated/rps-game/accounts/playerProfile.js +47 -0
- package/dist/generated/rps-game/errors/index.d.ts +8 -0
- package/dist/generated/rps-game/errors/index.js +9 -0
- package/dist/generated/rps-game/errors/rpsGame.d.ts +25 -0
- package/dist/generated/rps-game/errors/rpsGame.js +29 -0
- package/dist/generated/rps-game/index.d.ts +12 -0
- package/dist/generated/rps-game/index.js +13 -0
- package/dist/generated/rps-game/instructions/closePlayer.d.ts +45 -0
- package/dist/generated/rps-game/instructions/closePlayer.js +56 -0
- package/dist/generated/rps-game/instructions/delegatePda.d.ts +69 -0
- package/dist/generated/rps-game/instructions/delegatePda.js +90 -0
- package/dist/generated/rps-game/instructions/index.d.ts +16 -0
- package/dist/generated/rps-game/instructions/index.js +17 -0
- package/dist/generated/rps-game/instructions/initializePlayer.d.ts +48 -0
- package/dist/generated/rps-game/instructions/initializePlayer.js +63 -0
- package/dist/generated/rps-game/instructions/makeChoice.d.ts +44 -0
- package/dist/generated/rps-game/instructions/makeChoice.js +46 -0
- package/dist/generated/rps-game/instructions/onMatchFound.d.ts +43 -0
- package/dist/generated/rps-game/instructions/onMatchFound.js +45 -0
- package/dist/generated/rps-game/instructions/persistResults.d.ts +43 -0
- package/dist/generated/rps-game/instructions/persistResults.js +50 -0
- package/dist/generated/rps-game/instructions/processUndelegation.d.ts +43 -0
- package/dist/generated/rps-game/instructions/processUndelegation.js +49 -0
- package/dist/generated/rps-game/instructions/startGame.d.ts +54 -0
- package/dist/generated/rps-game/instructions/startGame.js +67 -0
- package/dist/generated/rps-game/instructions/startGameWithTicket.d.ts +57 -0
- package/dist/generated/rps-game/instructions/startGameWithTicket.js +67 -0
- package/dist/generated/rps-game/programs/index.d.ts +8 -0
- package/dist/generated/rps-game/programs/index.js +9 -0
- package/dist/generated/rps-game/programs/rpsGame.d.ts +78 -0
- package/dist/generated/rps-game/programs/rpsGame.js +118 -0
- package/dist/generated/rps-game/types/accountType.d.ts +34 -0
- package/dist/generated/rps-game/types/accountType.js +25 -0
- package/dist/generated/rps-game/types/choice.d.ts +17 -0
- package/dist/generated/rps-game/types/choice.js +25 -0
- package/dist/generated/rps-game/types/gameResult.d.ts +26 -0
- package/dist/generated/rps-game/types/gameResult.js +25 -0
- package/dist/generated/rps-game/types/index.d.ts +10 -0
- package/dist/generated/rps-game/types/index.js +11 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +3 -2
- package/dist/player.d.ts +25 -46
- package/dist/player.js +81 -140
- package/dist/tee.d.ts +14 -0
- package/dist/tee.js +62 -0
- package/dist/transaction.d.ts +11 -0
- package/dist/transaction.js +50 -0
- package/dist/utils.d.ts +4 -4
- package/dist/utils.js +23 -8
- package/package.json +3 -6
- package/src/admin.ts +151 -161
- package/src/duel.json +66 -7
- package/src/encryption.ts +0 -3
- package/src/generated/duel/accounts/index.ts +11 -0
- package/src/generated/duel/accounts/matchTicket.ts +77 -0
- package/src/generated/duel/accounts/queue.ts +77 -0
- package/src/generated/duel/accounts/tenant.ts +76 -0
- package/src/generated/duel/errors/duel.ts +46 -0
- package/src/generated/duel/errors/index.ts +9 -0
- package/src/generated/duel/index.ts +13 -0
- package/src/generated/duel/instructions/cancelTicket.ts +100 -0
- package/src/generated/duel/instructions/closeTicket.ts +100 -0
- package/src/generated/duel/instructions/commitTickets.ts +84 -0
- package/src/generated/duel/instructions/createTicket.ts +109 -0
- package/src/generated/duel/instructions/delegateQueue.ts +157 -0
- package/src/generated/duel/instructions/delegateTicket.ts +157 -0
- package/src/generated/duel/instructions/flushMatches.ts +76 -0
- package/src/generated/duel/instructions/index.ts +20 -0
- package/src/generated/duel/instructions/initializeQueue.ts +109 -0
- package/src/generated/duel/instructions/initializeTenant.ts +126 -0
- package/src/generated/duel/instructions/joinQueue.ts +106 -0
- package/src/generated/duel/instructions/processUndelegation.ts +86 -0
- package/src/generated/duel/instructions/setupTicketPermission.ts +115 -0
- package/src/generated/duel/programs/duel.ts +108 -0
- package/src/generated/duel/programs/index.ts +9 -0
- package/src/generated/duel/types/accountType.ts +36 -0
- package/src/generated/duel/types/index.ts +14 -0
- package/src/generated/duel/types/matchEntry.ts +25 -0
- package/src/generated/duel/types/matchFound.ts +25 -0
- package/src/generated/duel/types/pendingMatch.ts +25 -0
- package/src/generated/duel/types/queueEntry.ts +25 -0
- package/src/generated/duel/types/ticketStatus.ts +38 -0
- package/src/generated/rps-game/accounts/gameSession.ts +77 -0
- package/src/generated/rps-game/accounts/index.ts +10 -0
- package/src/generated/rps-game/accounts/playerProfile.ts +80 -0
- package/src/generated/rps-game/errors/index.ts +9 -0
- package/src/generated/rps-game/errors/rpsGame.ts +40 -0
- package/src/generated/rps-game/index.ts +13 -0
- package/src/generated/rps-game/instructions/closePlayer.ts +100 -0
- package/src/generated/rps-game/instructions/delegatePda.ts +157 -0
- package/src/generated/rps-game/instructions/index.ts +17 -0
- package/src/generated/rps-game/instructions/initializePlayer.ts +109 -0
- package/src/generated/rps-game/instructions/makeChoice.ts +84 -0
- package/src/generated/rps-game/instructions/onMatchFound.ts +79 -0
- package/src/generated/rps-game/instructions/persistResults.ts +88 -0
- package/src/generated/rps-game/instructions/processUndelegation.ts +86 -0
- package/src/generated/rps-game/instructions/startGame.ts +118 -0
- package/src/generated/rps-game/instructions/startGameWithTicket.ts +121 -0
- package/src/generated/rps-game/programs/index.ts +9 -0
- package/src/generated/rps-game/programs/rpsGame.ts +95 -0
- package/src/generated/rps-game/types/accountType.ts +36 -0
- package/src/generated/rps-game/types/choice.ts +25 -0
- package/src/generated/rps-game/types/gameResult.ts +37 -0
- package/src/generated/rps-game/types/index.ts +11 -0
- package/src/index.ts +2 -1
- package/src/player.ts +129 -192
- package/src/{idl/private_matchmaking.json → rps_game.json} +547 -583
- package/src/tee.ts +79 -0
- package/src/transaction.ts +90 -0
- package/src/utils.ts +35 -20
- package/tsconfig.json +2 -2
- package/dist/client.d.ts +0 -54
- package/dist/client.js +0 -265
- package/dist/duel.json +0 -1207
- package/dist/private_matchmaking.json +0 -534
- package/dist/types.d.ts +0 -635
- package/dist/types.js +0 -2
- package/src/idl/private_matchmaking.ts +0 -1033
- package/src/types.ts +0 -300
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
import { type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount, type WritableSignerAccount } from '@solana/kit';
|
|
9
|
+
import { DUEL_PROGRAM_ADDRESS } from '../programs';
|
|
10
|
+
export declare const SETUP_TICKET_PERMISSION_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
|
|
11
|
+
export declare function getSetupTicketPermissionDiscriminatorBytes(): ReadonlyUint8Array<ArrayBuffer>;
|
|
12
|
+
export type SetupTicketPermissionInstruction<TProgram extends string = typeof DUEL_PROGRAM_ADDRESS, TAccountTicket extends string | AccountMeta<string> = string, TAccountTenant extends string | AccountMeta<string> = string, TAccountPlayer extends string | AccountMeta<string> = string, TAccountPermission extends string | AccountMeta<string> = string, TAccountPermissionProgram extends string | AccountMeta<string> = string, TAccountSystemProgram extends string | AccountMeta<string> = "11111111111111111111111111111111", TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountTicket extends string ? ReadonlyAccount<TAccountTicket> : TAccountTicket, TAccountTenant extends string ? ReadonlyAccount<TAccountTenant> : TAccountTenant, TAccountPlayer extends string ? WritableSignerAccount<TAccountPlayer> & AccountSignerMeta<TAccountPlayer> : TAccountPlayer, TAccountPermission extends string ? WritableAccount<TAccountPermission> : TAccountPermission, TAccountPermissionProgram extends string ? ReadonlyAccount<TAccountPermissionProgram> : TAccountPermissionProgram, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, ...TRemainingAccounts]>;
|
|
13
|
+
export type SetupTicketPermissionInstructionData = {
|
|
14
|
+
discriminator: ReadonlyUint8Array;
|
|
15
|
+
};
|
|
16
|
+
export type SetupTicketPermissionInstructionDataArgs = {};
|
|
17
|
+
export declare function getSetupTicketPermissionInstructionDataEncoder(): FixedSizeEncoder<SetupTicketPermissionInstructionDataArgs>;
|
|
18
|
+
export declare function getSetupTicketPermissionInstructionDataDecoder(): FixedSizeDecoder<SetupTicketPermissionInstructionData>;
|
|
19
|
+
export declare function getSetupTicketPermissionInstructionDataCodec(): FixedSizeCodec<SetupTicketPermissionInstructionDataArgs, SetupTicketPermissionInstructionData>;
|
|
20
|
+
export type SetupTicketPermissionAsyncInput<TAccountTicket extends string = string, TAccountTenant extends string = string, TAccountPlayer extends string = string, TAccountPermission extends string = string, TAccountPermissionProgram extends string = string, TAccountSystemProgram extends string = string> = {
|
|
21
|
+
ticket?: Address<TAccountTicket>;
|
|
22
|
+
tenant: Address<TAccountTenant>;
|
|
23
|
+
player: TransactionSigner<TAccountPlayer>;
|
|
24
|
+
permission: Address<TAccountPermission>;
|
|
25
|
+
permissionProgram: Address<TAccountPermissionProgram>;
|
|
26
|
+
systemProgram?: Address<TAccountSystemProgram>;
|
|
27
|
+
};
|
|
28
|
+
export declare function getSetupTicketPermissionInstructionAsync<TAccountTicket extends string, TAccountTenant extends string, TAccountPlayer extends string, TAccountPermission extends string, TAccountPermissionProgram extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof DUEL_PROGRAM_ADDRESS>(input: SetupTicketPermissionAsyncInput<TAccountTicket, TAccountTenant, TAccountPlayer, TAccountPermission, TAccountPermissionProgram, TAccountSystemProgram>, config?: {
|
|
29
|
+
programAddress?: TProgramAddress;
|
|
30
|
+
}): Promise<SetupTicketPermissionInstruction<TProgramAddress, TAccountTicket, TAccountTenant, TAccountPlayer, TAccountPermission, TAccountPermissionProgram, TAccountSystemProgram>>;
|
|
31
|
+
export type SetupTicketPermissionInput<TAccountTicket extends string = string, TAccountTenant extends string = string, TAccountPlayer extends string = string, TAccountPermission extends string = string, TAccountPermissionProgram extends string = string, TAccountSystemProgram extends string = string> = {
|
|
32
|
+
ticket: Address<TAccountTicket>;
|
|
33
|
+
tenant: Address<TAccountTenant>;
|
|
34
|
+
player: TransactionSigner<TAccountPlayer>;
|
|
35
|
+
permission: Address<TAccountPermission>;
|
|
36
|
+
permissionProgram: Address<TAccountPermissionProgram>;
|
|
37
|
+
systemProgram?: Address<TAccountSystemProgram>;
|
|
38
|
+
};
|
|
39
|
+
export declare function getSetupTicketPermissionInstruction<TAccountTicket extends string, TAccountTenant extends string, TAccountPlayer extends string, TAccountPermission extends string, TAccountPermissionProgram extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof DUEL_PROGRAM_ADDRESS>(input: SetupTicketPermissionInput<TAccountTicket, TAccountTenant, TAccountPlayer, TAccountPermission, TAccountPermissionProgram, TAccountSystemProgram>, config?: {
|
|
40
|
+
programAddress?: TProgramAddress;
|
|
41
|
+
}): SetupTicketPermissionInstruction<TProgramAddress, TAccountTicket, TAccountTenant, TAccountPlayer, TAccountPermission, TAccountPermissionProgram, TAccountSystemProgram>;
|
|
42
|
+
export type ParsedSetupTicketPermissionInstruction<TProgram extends string = typeof DUEL_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
|
|
43
|
+
programAddress: Address<TProgram>;
|
|
44
|
+
accounts: {
|
|
45
|
+
ticket: TAccountMetas[0];
|
|
46
|
+
tenant: TAccountMetas[1];
|
|
47
|
+
player: TAccountMetas[2];
|
|
48
|
+
permission: TAccountMetas[3];
|
|
49
|
+
permissionProgram: TAccountMetas[4];
|
|
50
|
+
systemProgram: TAccountMetas[5];
|
|
51
|
+
};
|
|
52
|
+
data: SetupTicketPermissionInstructionData;
|
|
53
|
+
};
|
|
54
|
+
export declare function parseSetupTicketPermissionInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedSetupTicketPermissionInstruction<TProgram, TAccountMetas>;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
import { combineCodec, fixDecoderSize, fixEncoderSize, getAddressEncoder, getBytesDecoder, getBytesEncoder, getProgramDerivedAddress, getStructDecoder, getStructEncoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder } from '@solana/kit';
|
|
9
|
+
import { getAccountMetaFactory, getAddressFromResolvedInstructionAccount } from '@solana/program-client-core';
|
|
10
|
+
import { DUEL_PROGRAM_ADDRESS } from '../programs';
|
|
11
|
+
export const SETUP_TICKET_PERMISSION_DISCRIMINATOR = new Uint8Array([164, 29, 7, 235, 183, 223, 11, 85]);
|
|
12
|
+
export function getSetupTicketPermissionDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode(SETUP_TICKET_PERMISSION_DISCRIMINATOR); }
|
|
13
|
+
export function getSetupTicketPermissionInstructionDataEncoder() {
|
|
14
|
+
return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), (value) => ({ ...value, discriminator: SETUP_TICKET_PERMISSION_DISCRIMINATOR }));
|
|
15
|
+
}
|
|
16
|
+
export function getSetupTicketPermissionInstructionDataDecoder() {
|
|
17
|
+
return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)]]);
|
|
18
|
+
}
|
|
19
|
+
export function getSetupTicketPermissionInstructionDataCodec() {
|
|
20
|
+
return combineCodec(getSetupTicketPermissionInstructionDataEncoder(), getSetupTicketPermissionInstructionDataDecoder());
|
|
21
|
+
}
|
|
22
|
+
export async function getSetupTicketPermissionInstructionAsync(input, config) {
|
|
23
|
+
// Program address.
|
|
24
|
+
const programAddress = config?.programAddress ?? DUEL_PROGRAM_ADDRESS;
|
|
25
|
+
// Original accounts.
|
|
26
|
+
const originalAccounts = { ticket: { value: input.ticket ?? null, isWritable: false }, tenant: { value: input.tenant ?? null, isWritable: false }, player: { value: input.player ?? null, isWritable: true }, permission: { value: input.permission ?? null, isWritable: true }, permissionProgram: { value: input.permissionProgram ?? null, isWritable: false }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } };
|
|
27
|
+
const accounts = originalAccounts;
|
|
28
|
+
// Resolve default values.
|
|
29
|
+
if (!accounts.ticket.value) {
|
|
30
|
+
accounts.ticket.value = await getProgramDerivedAddress({ programAddress, seeds: [getBytesEncoder().encode(new Uint8Array([116, 105, 99, 107, 101, 116])), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount("player", accounts.player.value)), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount("tenant", accounts.tenant.value))] });
|
|
31
|
+
}
|
|
32
|
+
if (!accounts.systemProgram.value) {
|
|
33
|
+
accounts.systemProgram.value = '11111111111111111111111111111111';
|
|
34
|
+
}
|
|
35
|
+
const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
|
|
36
|
+
return Object.freeze({ accounts: [getAccountMeta("ticket", accounts.ticket), getAccountMeta("tenant", accounts.tenant), getAccountMeta("player", accounts.player), getAccountMeta("permission", accounts.permission), getAccountMeta("permissionProgram", accounts.permissionProgram), getAccountMeta("systemProgram", accounts.systemProgram)], data: getSetupTicketPermissionInstructionDataEncoder().encode({}), programAddress });
|
|
37
|
+
}
|
|
38
|
+
export function getSetupTicketPermissionInstruction(input, config) {
|
|
39
|
+
// Program address.
|
|
40
|
+
const programAddress = config?.programAddress ?? DUEL_PROGRAM_ADDRESS;
|
|
41
|
+
// Original accounts.
|
|
42
|
+
const originalAccounts = { ticket: { value: input.ticket ?? null, isWritable: false }, tenant: { value: input.tenant ?? null, isWritable: false }, player: { value: input.player ?? null, isWritable: true }, permission: { value: input.permission ?? null, isWritable: true }, permissionProgram: { value: input.permissionProgram ?? null, isWritable: false }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } };
|
|
43
|
+
const accounts = originalAccounts;
|
|
44
|
+
// Resolve default values.
|
|
45
|
+
if (!accounts.systemProgram.value) {
|
|
46
|
+
accounts.systemProgram.value = '11111111111111111111111111111111';
|
|
47
|
+
}
|
|
48
|
+
const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
|
|
49
|
+
return Object.freeze({ accounts: [getAccountMeta("ticket", accounts.ticket), getAccountMeta("tenant", accounts.tenant), getAccountMeta("player", accounts.player), getAccountMeta("permission", accounts.permission), getAccountMeta("permissionProgram", accounts.permissionProgram), getAccountMeta("systemProgram", accounts.systemProgram)], data: getSetupTicketPermissionInstructionDataEncoder().encode({}), programAddress });
|
|
50
|
+
}
|
|
51
|
+
export function parseSetupTicketPermissionInstruction(instruction) {
|
|
52
|
+
if (instruction.accounts.length < 6) {
|
|
53
|
+
throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 6 });
|
|
54
|
+
}
|
|
55
|
+
let accountIndex = 0;
|
|
56
|
+
const getNextAccount = () => {
|
|
57
|
+
const accountMeta = instruction.accounts[accountIndex];
|
|
58
|
+
accountIndex += 1;
|
|
59
|
+
return accountMeta;
|
|
60
|
+
};
|
|
61
|
+
return { programAddress: instruction.programAddress, accounts: { ticket: getNextAccount(), tenant: getNextAccount(), player: getNextAccount(), permission: getNextAccount(), permissionProgram: getNextAccount(), systemProgram: getNextAccount() }, data: getSetupTicketPermissionInstructionDataDecoder().decode(instruction.data) };
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBUaWNrZXRQZXJtaXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC9kdWVsL2luc3RydWN0aW9ucy9zZXR1cFRpY2tldFBlcm1pc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUseURBQXlELEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFnVSxNQUFNLGFBQWEsQ0FBQztBQUN0bEIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHdDQUF3QyxFQUFtQyxNQUFNLDZCQUE2QixDQUFDO0FBQy9JLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRXpHLE1BQU0sVUFBVSwwQ0FBMEMsS0FBSyxPQUFPLGNBQWMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMscUNBQXFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFTM0osTUFBTSxVQUFVLDhDQUE4QztJQUMxRCxPQUFPLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsYUFBYSxFQUFFLHFDQUFxQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzFMLENBQUM7QUFFRCxNQUFNLFVBQVUsOENBQThDO0lBQzFELE9BQU8sZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkYsQ0FBQztBQUVELE1BQU0sVUFBVSw0Q0FBNEM7SUFDeEQsT0FBTyxZQUFZLENBQUMsOENBQThDLEVBQUUsRUFBRSw4Q0FBOEMsRUFBRSxDQUFDLENBQUM7QUFDNUgsQ0FBQztBQVdELE1BQU0sQ0FBQyxLQUFLLFVBQVUsd0NBQXdDLENBQWdSLEtBQTRKLEVBQUUsTUFBNkM7SUFDdmhCLG1CQUFtQjtJQUNyQixNQUFNLGNBQWMsR0FBRyxNQUFNLEVBQUUsY0FBYyxJQUFJLG9CQUFvQixDQUFDO0lBRXJFLHFCQUFxQjtJQUN0QixNQUFNLGdCQUFnQixHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsaUJBQWlCLElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxhQUFhLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLGFBQWEsSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUE7SUFDN2EsTUFBTSxRQUFRLEdBQUcsZ0JBQXFGLENBQUM7SUFHdkcsMEJBQTBCO0lBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sd0JBQXdCLENBQUMsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxNQUFNLENBQUMsd0NBQXdDLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyx3Q0FBd0MsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNXLENBQUM7SUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxrQ0FBaUYsQ0FBQztJQUNqSCxDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQUcscUJBQXFCLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzFFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLGNBQWMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLGNBQWMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLGNBQWMsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFBRSxjQUFjLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSw4Q0FBOEMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxjQUFjLEVBQTZLLENBQUMsQ0FBQztBQUNqbEIsQ0FBQztBQVdELE1BQU0sVUFBVSxtQ0FBbUMsQ0FBZ1IsS0FBdUosRUFBRSxNQUE2QztJQUN2Z0IsbUJBQW1CO0lBQ3JCLE1BQU0sY0FBYyxHQUFHLE1BQU0sRUFBRSxjQUFjLElBQUksb0JBQW9CLENBQUM7SUFFckUscUJBQXFCO0lBQ3RCLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLGlCQUFpQixFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQTtJQUM3YSxNQUFNLFFBQVEsR0FBRyxnQkFBcUYsQ0FBQztJQUd2RywwQkFBMEI7SUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsa0NBQWlGLENBQUM7SUFDakgsQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLHFCQUFxQixDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxjQUFjLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxjQUFjLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsY0FBYyxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsOENBQThDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsY0FBYyxFQUE2SyxDQUFDLENBQUM7QUFDamxCLENBQUM7QUFhRCxNQUFNLFVBQVUscUNBQXFDLENBQXdFLFdBQXFIO0lBQ2hQLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdEMsTUFBTSxJQUFJLFdBQVcsQ0FBQyx5REFBeUQsRUFBRSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLG9CQUFvQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakssQ0FBQztJQUNELElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztJQUNyQixNQUFNLGNBQWMsR0FBRyxHQUFHLEVBQUU7UUFDMUIsTUFBTSxXQUFXLEdBQUksV0FBVyxDQUFDLFFBQTBCLENBQUMsWUFBWSxDQUFFLENBQUM7UUFDM0UsWUFBWSxJQUFJLENBQUMsQ0FBQztRQUNsQixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDLENBQUE7SUFDQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsQ0FBQyxjQUFjLEVBQUUsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSw4Q0FBOEMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUN6VSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGNvZGUgd2FzIEFVVE9HRU5FUkFURUQgdXNpbmcgdGhlIENvZGFtYSBsaWJyYXJ5LlxuICogUGxlYXNlIERPIE5PVCBFRElUIFRISVMgRklMRSwgaW5zdGVhZCB1c2UgdmlzaXRvcnNcbiAqIHRvIGFkZCBmZWF0dXJlcywgdGhlbiByZXJ1biBDb2RhbWEgdG8gdXBkYXRlIGl0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2NvZGFtYS1pZGwvY29kYW1hXG4gKi9cblxuaW1wb3J0IHsgY29tYmluZUNvZGVjLCBmaXhEZWNvZGVyU2l6ZSwgZml4RW5jb2RlclNpemUsIGdldEFkZHJlc3NFbmNvZGVyLCBnZXRCeXRlc0RlY29kZXIsIGdldEJ5dGVzRW5jb2RlciwgZ2V0UHJvZ3JhbURlcml2ZWRBZGRyZXNzLCBnZXRTdHJ1Y3REZWNvZGVyLCBnZXRTdHJ1Y3RFbmNvZGVyLCBTT0xBTkFfRVJST1JfX1BST0dSQU1fQ0xJRU5UU19fSU5TVUZGSUNJRU5UX0FDQ09VTlRfTUVUQVMsIFNvbGFuYUVycm9yLCB0cmFuc2Zvcm1FbmNvZGVyLCB0eXBlIEFjY291bnRNZXRhLCB0eXBlIEFjY291bnRTaWduZXJNZXRhLCB0eXBlIEFkZHJlc3MsIHR5cGUgRml4ZWRTaXplQ29kZWMsIHR5cGUgRml4ZWRTaXplRGVjb2RlciwgdHlwZSBGaXhlZFNpemVFbmNvZGVyLCB0eXBlIEluc3RydWN0aW9uLCB0eXBlIEluc3RydWN0aW9uV2l0aEFjY291bnRzLCB0eXBlIEluc3RydWN0aW9uV2l0aERhdGEsIHR5cGUgUmVhZG9ubHlBY2NvdW50LCB0eXBlIFJlYWRvbmx5VWludDhBcnJheSwgdHlwZSBUcmFuc2FjdGlvblNpZ25lciwgdHlwZSBXcml0YWJsZUFjY291bnQsIHR5cGUgV3JpdGFibGVTaWduZXJBY2NvdW50IH0gZnJvbSAnQHNvbGFuYS9raXQnO1xuaW1wb3J0IHsgZ2V0QWNjb3VudE1ldGFGYWN0b3J5LCBnZXRBZGRyZXNzRnJvbVJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50LCB0eXBlIFJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50IH0gZnJvbSAnQHNvbGFuYS9wcm9ncmFtLWNsaWVudC1jb3JlJztcbmltcG9ydCB7IERVRUxfUFJPR1JBTV9BRERSRVNTIH0gZnJvbSAnLi4vcHJvZ3JhbXMnO1xuXG5leHBvcnQgY29uc3QgU0VUVVBfVElDS0VUX1BFUk1JU1NJT05fRElTQ1JJTUlOQVRPUiA9IG5ldyBVaW50OEFycmF5KFsxNjQsIDI5LCA3LCAyMzUsIDE4MywgMjIzLCAxMSwgODVdKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNldHVwVGlja2V0UGVybWlzc2lvbkRpc2NyaW1pbmF0b3JCeXRlcygpIHsgcmV0dXJuIGZpeEVuY29kZXJTaXplKGdldEJ5dGVzRW5jb2RlcigpLCA4KS5lbmNvZGUoU0VUVVBfVElDS0VUX1BFUk1JU1NJT05fRElTQ1JJTUlOQVRPUik7IH1cblxuZXhwb3J0IHR5cGUgU2V0dXBUaWNrZXRQZXJtaXNzaW9uSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSB0eXBlb2YgRFVFTF9QUk9HUkFNX0FERFJFU1MsIFRBY2NvdW50VGlja2V0IGV4dGVuZHMgc3RyaW5nIHwgQWNjb3VudE1ldGE8c3RyaW5nPiA9IHN0cmluZywgVEFjY291bnRUZW5hbnQgZXh0ZW5kcyBzdHJpbmcgfCBBY2NvdW50TWV0YTxzdHJpbmc+ID0gc3RyaW5nLCBUQWNjb3VudFBsYXllciBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBzdHJpbmcsIFRBY2NvdW50UGVybWlzc2lvbiBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBzdHJpbmcsIFRBY2NvdW50UGVybWlzc2lvblByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgfCBBY2NvdW50TWV0YTxzdHJpbmc+ID0gc3RyaW5nLCBUQWNjb3VudFN5c3RlbVByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgfCBBY2NvdW50TWV0YTxzdHJpbmc+ID0gXCIxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMVwiLCBUUmVtYWluaW5nQWNjb3VudHMgZXh0ZW5kcyByZWFkb25seSBBY2NvdW50TWV0YTxzdHJpbmc+W10gPSBbXT4gPVxuSW5zdHJ1Y3Rpb248VFByb2dyYW0+ICYgSW5zdHJ1Y3Rpb25XaXRoRGF0YTxSZWFkb25seVVpbnQ4QXJyYXk+ICYgSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHM8W1RBY2NvdW50VGlja2V0IGV4dGVuZHMgc3RyaW5nID8gUmVhZG9ubHlBY2NvdW50PFRBY2NvdW50VGlja2V0PiA6IFRBY2NvdW50VGlja2V0LCBUQWNjb3VudFRlbmFudCBleHRlbmRzIHN0cmluZyA/IFJlYWRvbmx5QWNjb3VudDxUQWNjb3VudFRlbmFudD4gOiBUQWNjb3VudFRlbmFudCwgVEFjY291bnRQbGF5ZXIgZXh0ZW5kcyBzdHJpbmcgPyBXcml0YWJsZVNpZ25lckFjY291bnQ8VEFjY291bnRQbGF5ZXI+ICYgQWNjb3VudFNpZ25lck1ldGE8VEFjY291bnRQbGF5ZXI+IDogVEFjY291bnRQbGF5ZXIsIFRBY2NvdW50UGVybWlzc2lvbiBleHRlbmRzIHN0cmluZyA/IFdyaXRhYmxlQWNjb3VudDxUQWNjb3VudFBlcm1pc3Npb24+IDogVEFjY291bnRQZXJtaXNzaW9uLCBUQWNjb3VudFBlcm1pc3Npb25Qcm9ncmFtIGV4dGVuZHMgc3RyaW5nID8gUmVhZG9ubHlBY2NvdW50PFRBY2NvdW50UGVybWlzc2lvblByb2dyYW0+IDogVEFjY291bnRQZXJtaXNzaW9uUHJvZ3JhbSwgVEFjY291bnRTeXN0ZW1Qcm9ncmFtIGV4dGVuZHMgc3RyaW5nID8gUmVhZG9ubHlBY2NvdW50PFRBY2NvdW50U3lzdGVtUHJvZ3JhbT4gOiBUQWNjb3VudFN5c3RlbVByb2dyYW0sIC4uLlRSZW1haW5pbmdBY2NvdW50c10+O1xuXG5leHBvcnQgdHlwZSBTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbkRhdGEgPSB7IGRpc2NyaW1pbmF0b3I6IFJlYWRvbmx5VWludDhBcnJheTsgIH07XG5cbmV4cG9ydCB0eXBlIFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uRGF0YUFyZ3MgPSB7ICB9O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2V0dXBUaWNrZXRQZXJtaXNzaW9uSW5zdHJ1Y3Rpb25EYXRhRW5jb2RlcigpOiBGaXhlZFNpemVFbmNvZGVyPFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uRGF0YUFyZ3M+IHtcbiAgICByZXR1cm4gdHJhbnNmb3JtRW5jb2RlcihnZXRTdHJ1Y3RFbmNvZGVyKFtbJ2Rpc2NyaW1pbmF0b3InLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCldXSksICh2YWx1ZSkgPT4gKHsgLi4udmFsdWUsIGRpc2NyaW1pbmF0b3I6IFNFVFVQX1RJQ0tFVF9QRVJNSVNTSU9OX0RJU0NSSU1JTkFUT1IgfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2V0dXBUaWNrZXRQZXJtaXNzaW9uSW5zdHJ1Y3Rpb25EYXRhRGVjb2RlcigpOiBGaXhlZFNpemVEZWNvZGVyPFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uRGF0YT4ge1xuICAgIHJldHVybiBnZXRTdHJ1Y3REZWNvZGVyKFtbJ2Rpc2NyaW1pbmF0b3InLCBmaXhEZWNvZGVyU2l6ZShnZXRCeXRlc0RlY29kZXIoKSwgOCldXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbkRhdGFDb2RlYygpOiBGaXhlZFNpemVDb2RlYzxTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbkRhdGFBcmdzLCBTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbkRhdGE+IHtcbiAgICByZXR1cm4gY29tYmluZUNvZGVjKGdldFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uRGF0YUVuY29kZXIoKSwgZ2V0U2V0dXBUaWNrZXRQZXJtaXNzaW9uSW5zdHJ1Y3Rpb25EYXRhRGVjb2RlcigpKTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0dXBUaWNrZXRQZXJtaXNzaW9uQXN5bmNJbnB1dDxUQWNjb3VudFRpY2tldCBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRUZW5hbnQgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50UGxheWVyIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudFBlcm1pc3Npb24gZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50UGVybWlzc2lvblByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50U3lzdGVtUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4gPSAge1xuICB0aWNrZXQ/OiBBZGRyZXNzPFRBY2NvdW50VGlja2V0PjtcbnRlbmFudDogQWRkcmVzczxUQWNjb3VudFRlbmFudD47XG5wbGF5ZXI6IFRyYW5zYWN0aW9uU2lnbmVyPFRBY2NvdW50UGxheWVyPjtcbnBlcm1pc3Npb246IEFkZHJlc3M8VEFjY291bnRQZXJtaXNzaW9uPjtcbnBlcm1pc3Npb25Qcm9ncmFtOiBBZGRyZXNzPFRBY2NvdW50UGVybWlzc2lvblByb2dyYW0+O1xuc3lzdGVtUHJvZ3JhbT86IEFkZHJlc3M8VEFjY291bnRTeXN0ZW1Qcm9ncmFtPjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uQXN5bmM8VEFjY291bnRUaWNrZXQgZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50VGVuYW50IGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudFBsYXllciBleHRlbmRzIHN0cmluZywgVEFjY291bnRQZXJtaXNzaW9uIGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudFBlcm1pc3Npb25Qcm9ncmFtIGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudFN5c3RlbVByb2dyYW0gZXh0ZW5kcyBzdHJpbmcsIFRQcm9ncmFtQWRkcmVzcyBleHRlbmRzIEFkZHJlc3MgPSB0eXBlb2YgRFVFTF9QUk9HUkFNX0FERFJFU1M+KGlucHV0OiBTZXR1cFRpY2tldFBlcm1pc3Npb25Bc3luY0lucHV0PFRBY2NvdW50VGlja2V0LCBUQWNjb3VudFRlbmFudCwgVEFjY291bnRQbGF5ZXIsIFRBY2NvdW50UGVybWlzc2lvbiwgVEFjY291bnRQZXJtaXNzaW9uUHJvZ3JhbSwgVEFjY291bnRTeXN0ZW1Qcm9ncmFtPiwgY29uZmlnPzogeyBwcm9ncmFtQWRkcmVzcz86IFRQcm9ncmFtQWRkcmVzcyB9ICk6IFByb21pc2U8U2V0dXBUaWNrZXRQZXJtaXNzaW9uSW5zdHJ1Y3Rpb248VFByb2dyYW1BZGRyZXNzLCBUQWNjb3VudFRpY2tldCwgVEFjY291bnRUZW5hbnQsIFRBY2NvdW50UGxheWVyLCBUQWNjb3VudFBlcm1pc3Npb24sIFRBY2NvdW50UGVybWlzc2lvblByb2dyYW0sIFRBY2NvdW50U3lzdGVtUHJvZ3JhbT4+IHtcbiAgLy8gUHJvZ3JhbSBhZGRyZXNzLlxuY29uc3QgcHJvZ3JhbUFkZHJlc3MgPSBjb25maWc/LnByb2dyYW1BZGRyZXNzID8/IERVRUxfUFJPR1JBTV9BRERSRVNTO1xuXG4gLy8gT3JpZ2luYWwgYWNjb3VudHMuXG5jb25zdCBvcmlnaW5hbEFjY291bnRzID0geyB0aWNrZXQ6IHsgdmFsdWU6IGlucHV0LnRpY2tldCA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9LCB0ZW5hbnQ6IHsgdmFsdWU6IGlucHV0LnRlbmFudCA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9LCBwbGF5ZXI6IHsgdmFsdWU6IGlucHV0LnBsYXllciA/PyBudWxsLCBpc1dyaXRhYmxlOiB0cnVlIH0sIHBlcm1pc3Npb246IHsgdmFsdWU6IGlucHV0LnBlcm1pc3Npb24gPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCBwZXJtaXNzaW9uUHJvZ3JhbTogeyB2YWx1ZTogaW5wdXQucGVybWlzc2lvblByb2dyYW0gPz8gbnVsbCwgaXNXcml0YWJsZTogZmFsc2UgfSwgc3lzdGVtUHJvZ3JhbTogeyB2YWx1ZTogaW5wdXQuc3lzdGVtUHJvZ3JhbSA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9IH1cbmNvbnN0IGFjY291bnRzID0gb3JpZ2luYWxBY2NvdW50cyBhcyBSZWNvcmQ8a2V5b2YgdHlwZW9mIG9yaWdpbmFsQWNjb3VudHMsIFJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50PjtcblxuXG4vLyBSZXNvbHZlIGRlZmF1bHQgdmFsdWVzLlxuaWYgKCFhY2NvdW50cy50aWNrZXQudmFsdWUpIHtcbmFjY291bnRzLnRpY2tldC52YWx1ZSA9IGF3YWl0IGdldFByb2dyYW1EZXJpdmVkQWRkcmVzcyh7IHByb2dyYW1BZGRyZXNzLCBzZWVkczogW2dldEJ5dGVzRW5jb2RlcigpLmVuY29kZShuZXcgVWludDhBcnJheShbMTE2LCAxMDUsIDk5LCAxMDcsIDEwMSwgMTE2XSkpLCBnZXRBZGRyZXNzRW5jb2RlcigpLmVuY29kZShnZXRBZGRyZXNzRnJvbVJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50KFwicGxheWVyXCIsIGFjY291bnRzLnBsYXllci52YWx1ZSkpLCBnZXRBZGRyZXNzRW5jb2RlcigpLmVuY29kZShnZXRBZGRyZXNzRnJvbVJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50KFwidGVuYW50XCIsIGFjY291bnRzLnRlbmFudC52YWx1ZSkpXSB9KTtcbn1cbmlmICghYWNjb3VudHMuc3lzdGVtUHJvZ3JhbS52YWx1ZSkge1xuYWNjb3VudHMuc3lzdGVtUHJvZ3JhbS52YWx1ZSA9ICcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMScgYXMgQWRkcmVzczwnMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnPjtcbn1cblxuY29uc3QgZ2V0QWNjb3VudE1ldGEgPSBnZXRBY2NvdW50TWV0YUZhY3RvcnkocHJvZ3JhbUFkZHJlc3MsICdwcm9ncmFtSWQnKTtcbnJldHVybiBPYmplY3QuZnJlZXplKHsgYWNjb3VudHM6IFtnZXRBY2NvdW50TWV0YShcInRpY2tldFwiLCBhY2NvdW50cy50aWNrZXQpLCBnZXRBY2NvdW50TWV0YShcInRlbmFudFwiLCBhY2NvdW50cy50ZW5hbnQpLCBnZXRBY2NvdW50TWV0YShcInBsYXllclwiLCBhY2NvdW50cy5wbGF5ZXIpLCBnZXRBY2NvdW50TWV0YShcInBlcm1pc3Npb25cIiwgYWNjb3VudHMucGVybWlzc2lvbiksIGdldEFjY291bnRNZXRhKFwicGVybWlzc2lvblByb2dyYW1cIiwgYWNjb3VudHMucGVybWlzc2lvblByb2dyYW0pLCBnZXRBY2NvdW50TWV0YShcInN5c3RlbVByb2dyYW1cIiwgYWNjb3VudHMuc3lzdGVtUHJvZ3JhbSldLCBkYXRhOiBnZXRTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbkRhdGFFbmNvZGVyKCkuZW5jb2RlKHt9KSwgcHJvZ3JhbUFkZHJlc3MgfSBhcyBTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbjxUUHJvZ3JhbUFkZHJlc3MsIFRBY2NvdW50VGlja2V0LCBUQWNjb3VudFRlbmFudCwgVEFjY291bnRQbGF5ZXIsIFRBY2NvdW50UGVybWlzc2lvbiwgVEFjY291bnRQZXJtaXNzaW9uUHJvZ3JhbSwgVEFjY291bnRTeXN0ZW1Qcm9ncmFtPik7XG59XG5cbmV4cG9ydCB0eXBlIFNldHVwVGlja2V0UGVybWlzc2lvbklucHV0PFRBY2NvdW50VGlja2V0IGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudFRlbmFudCBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRQbGF5ZXIgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50UGVybWlzc2lvbiBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRQZXJtaXNzaW9uUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRTeXN0ZW1Qcm9ncmFtIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPiA9ICB7XG4gIHRpY2tldDogQWRkcmVzczxUQWNjb3VudFRpY2tldD47XG50ZW5hbnQ6IEFkZHJlc3M8VEFjY291bnRUZW5hbnQ+O1xucGxheWVyOiBUcmFuc2FjdGlvblNpZ25lcjxUQWNjb3VudFBsYXllcj47XG5wZXJtaXNzaW9uOiBBZGRyZXNzPFRBY2NvdW50UGVybWlzc2lvbj47XG5wZXJtaXNzaW9uUHJvZ3JhbTogQWRkcmVzczxUQWNjb3VudFBlcm1pc3Npb25Qcm9ncmFtPjtcbnN5c3RlbVByb2dyYW0/OiBBZGRyZXNzPFRBY2NvdW50U3lzdGVtUHJvZ3JhbT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbjxUQWNjb3VudFRpY2tldCBleHRlbmRzIHN0cmluZywgVEFjY291bnRUZW5hbnQgZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50UGxheWVyIGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudFBlcm1pc3Npb24gZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50UGVybWlzc2lvblByb2dyYW0gZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50U3lzdGVtUHJvZ3JhbSBleHRlbmRzIHN0cmluZywgVFByb2dyYW1BZGRyZXNzIGV4dGVuZHMgQWRkcmVzcyA9IHR5cGVvZiBEVUVMX1BST0dSQU1fQUREUkVTUz4oaW5wdXQ6IFNldHVwVGlja2V0UGVybWlzc2lvbklucHV0PFRBY2NvdW50VGlja2V0LCBUQWNjb3VudFRlbmFudCwgVEFjY291bnRQbGF5ZXIsIFRBY2NvdW50UGVybWlzc2lvbiwgVEFjY291bnRQZXJtaXNzaW9uUHJvZ3JhbSwgVEFjY291bnRTeXN0ZW1Qcm9ncmFtPiwgY29uZmlnPzogeyBwcm9ncmFtQWRkcmVzcz86IFRQcm9ncmFtQWRkcmVzcyB9ICk6IFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uPFRQcm9ncmFtQWRkcmVzcywgVEFjY291bnRUaWNrZXQsIFRBY2NvdW50VGVuYW50LCBUQWNjb3VudFBsYXllciwgVEFjY291bnRQZXJtaXNzaW9uLCBUQWNjb3VudFBlcm1pc3Npb25Qcm9ncmFtLCBUQWNjb3VudFN5c3RlbVByb2dyYW0+IHtcbiAgLy8gUHJvZ3JhbSBhZGRyZXNzLlxuY29uc3QgcHJvZ3JhbUFkZHJlc3MgPSBjb25maWc/LnByb2dyYW1BZGRyZXNzID8/IERVRUxfUFJPR1JBTV9BRERSRVNTO1xuXG4gLy8gT3JpZ2luYWwgYWNjb3VudHMuXG5jb25zdCBvcmlnaW5hbEFjY291bnRzID0geyB0aWNrZXQ6IHsgdmFsdWU6IGlucHV0LnRpY2tldCA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9LCB0ZW5hbnQ6IHsgdmFsdWU6IGlucHV0LnRlbmFudCA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9LCBwbGF5ZXI6IHsgdmFsdWU6IGlucHV0LnBsYXllciA/PyBudWxsLCBpc1dyaXRhYmxlOiB0cnVlIH0sIHBlcm1pc3Npb246IHsgdmFsdWU6IGlucHV0LnBlcm1pc3Npb24gPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCBwZXJtaXNzaW9uUHJvZ3JhbTogeyB2YWx1ZTogaW5wdXQucGVybWlzc2lvblByb2dyYW0gPz8gbnVsbCwgaXNXcml0YWJsZTogZmFsc2UgfSwgc3lzdGVtUHJvZ3JhbTogeyB2YWx1ZTogaW5wdXQuc3lzdGVtUHJvZ3JhbSA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9IH1cbmNvbnN0IGFjY291bnRzID0gb3JpZ2luYWxBY2NvdW50cyBhcyBSZWNvcmQ8a2V5b2YgdHlwZW9mIG9yaWdpbmFsQWNjb3VudHMsIFJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50PjtcblxuXG4vLyBSZXNvbHZlIGRlZmF1bHQgdmFsdWVzLlxuaWYgKCFhY2NvdW50cy5zeXN0ZW1Qcm9ncmFtLnZhbHVlKSB7XG5hY2NvdW50cy5zeXN0ZW1Qcm9ncmFtLnZhbHVlID0gJzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJyBhcyBBZGRyZXNzPCcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSc+O1xufVxuXG5jb25zdCBnZXRBY2NvdW50TWV0YSA9IGdldEFjY291bnRNZXRhRmFjdG9yeShwcm9ncmFtQWRkcmVzcywgJ3Byb2dyYW1JZCcpO1xucmV0dXJuIE9iamVjdC5mcmVlemUoeyBhY2NvdW50czogW2dldEFjY291bnRNZXRhKFwidGlja2V0XCIsIGFjY291bnRzLnRpY2tldCksIGdldEFjY291bnRNZXRhKFwidGVuYW50XCIsIGFjY291bnRzLnRlbmFudCksIGdldEFjY291bnRNZXRhKFwicGxheWVyXCIsIGFjY291bnRzLnBsYXllciksIGdldEFjY291bnRNZXRhKFwicGVybWlzc2lvblwiLCBhY2NvdW50cy5wZXJtaXNzaW9uKSwgZ2V0QWNjb3VudE1ldGEoXCJwZXJtaXNzaW9uUHJvZ3JhbVwiLCBhY2NvdW50cy5wZXJtaXNzaW9uUHJvZ3JhbSksIGdldEFjY291bnRNZXRhKFwic3lzdGVtUHJvZ3JhbVwiLCBhY2NvdW50cy5zeXN0ZW1Qcm9ncmFtKV0sIGRhdGE6IGdldFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uRGF0YUVuY29kZXIoKS5lbmNvZGUoe30pLCBwcm9ncmFtQWRkcmVzcyB9IGFzIFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uPFRQcm9ncmFtQWRkcmVzcywgVEFjY291bnRUaWNrZXQsIFRBY2NvdW50VGVuYW50LCBUQWNjb3VudFBsYXllciwgVEFjY291bnRQZXJtaXNzaW9uLCBUQWNjb3VudFBlcm1pc3Npb25Qcm9ncmFtLCBUQWNjb3VudFN5c3RlbVByb2dyYW0+KTtcbn1cblxuZXhwb3J0IHR5cGUgUGFyc2VkU2V0dXBUaWNrZXRQZXJtaXNzaW9uSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSB0eXBlb2YgRFVFTF9QUk9HUkFNX0FERFJFU1MsIFRBY2NvdW50TWV0YXMgZXh0ZW5kcyByZWFkb25seSBBY2NvdW50TWV0YVtdID0gcmVhZG9ubHkgQWNjb3VudE1ldGFbXT4gPSB7IHByb2dyYW1BZGRyZXNzOiBBZGRyZXNzPFRQcm9ncmFtPjtcbmFjY291bnRzOiB7XG50aWNrZXQ6IFRBY2NvdW50TWV0YXNbMF07XG50ZW5hbnQ6IFRBY2NvdW50TWV0YXNbMV07XG5wbGF5ZXI6IFRBY2NvdW50TWV0YXNbMl07XG5wZXJtaXNzaW9uOiBUQWNjb3VudE1ldGFzWzNdO1xucGVybWlzc2lvblByb2dyYW06IFRBY2NvdW50TWV0YXNbNF07XG5zeXN0ZW1Qcm9ncmFtOiBUQWNjb3VudE1ldGFzWzVdO1xufTtcbmRhdGE6IFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uRGF0YTsgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2V0dXBUaWNrZXRQZXJtaXNzaW9uSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50TWV0YXMgZXh0ZW5kcyByZWFkb25seSBBY2NvdW50TWV0YVtdPihpbnN0cnVjdGlvbjogSW5zdHJ1Y3Rpb248VFByb2dyYW0+ICYgSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHM8VEFjY291bnRNZXRhcz4gJiBJbnN0cnVjdGlvbldpdGhEYXRhPFJlYWRvbmx5VWludDhBcnJheT4pOiBQYXJzZWRTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbjxUUHJvZ3JhbSwgVEFjY291bnRNZXRhcz4ge1xuICBpZiAoaW5zdHJ1Y3Rpb24uYWNjb3VudHMubGVuZ3RoIDwgNikge1xuICB0aHJvdyBuZXcgU29sYW5hRXJyb3IoU09MQU5BX0VSUk9SX19QUk9HUkFNX0NMSUVOVFNfX0lOU1VGRklDSUVOVF9BQ0NPVU5UX01FVEFTLCB7IGFjdHVhbEFjY291bnRNZXRhczogaW5zdHJ1Y3Rpb24uYWNjb3VudHMubGVuZ3RoLCBleHBlY3RlZEFjY291bnRNZXRhczogNiB9KTtcbn1cbmxldCBhY2NvdW50SW5kZXggPSAwO1xuY29uc3QgZ2V0TmV4dEFjY291bnQgPSAoKSA9PiB7XG4gIGNvbnN0IGFjY291bnRNZXRhID0gKGluc3RydWN0aW9uLmFjY291bnRzIGFzIFRBY2NvdW50TWV0YXMpW2FjY291bnRJbmRleF0hO1xuICBhY2NvdW50SW5kZXggKz0gMTtcbiAgcmV0dXJuIGFjY291bnRNZXRhO1xufVxuICByZXR1cm4geyBwcm9ncmFtQWRkcmVzczogaW5zdHJ1Y3Rpb24ucHJvZ3JhbUFkZHJlc3MsIGFjY291bnRzOiB7IHRpY2tldDogZ2V0TmV4dEFjY291bnQoKSwgdGVuYW50OiBnZXROZXh0QWNjb3VudCgpLCBwbGF5ZXI6IGdldE5leHRBY2NvdW50KCksIHBlcm1pc3Npb246IGdldE5leHRBY2NvdW50KCksIHBlcm1pc3Npb25Qcm9ncmFtOiBnZXROZXh0QWNjb3VudCgpLCBzeXN0ZW1Qcm9ncmFtOiBnZXROZXh0QWNjb3VudCgpIH0sIGRhdGE6IGdldFNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uRGF0YURlY29kZXIoKS5kZWNvZGUoaW5zdHJ1Y3Rpb24uZGF0YSkgfTtcbn0iXX0=
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
import { type Address, type ClientWithPayer, type ClientWithRpc, type ClientWithTransactionPlanning, type ClientWithTransactionSending, type GetAccountInfoApi, type GetMultipleAccountsApi, type Instruction, type InstructionWithData, type ReadonlyUint8Array } from '@solana/kit';
|
|
9
|
+
import { type SelfFetchFunctions, type SelfPlanAndSendFunctions } from '@solana/program-client-core';
|
|
10
|
+
import { getMatchTicketCodec, getQueueCodec, getTenantCodec, type MatchTicket, type MatchTicketArgs, type Queue, type QueueArgs, type Tenant, type TenantArgs } from '../accounts';
|
|
11
|
+
import { getCancelTicketInstructionAsync, getCloseTicketInstructionAsync, getCommitTicketsInstruction, getCreateTicketInstructionAsync, getDelegateQueueInstructionAsync, getDelegateTicketInstructionAsync, getFlushMatchesInstruction, getInitializeQueueInstructionAsync, getInitializeTenantInstructionAsync, getJoinQueueInstructionAsync, getProcessUndelegationInstruction, getSetupTicketPermissionInstructionAsync, type CancelTicketAsyncInput, type CloseTicketAsyncInput, type CommitTicketsInput, type CreateTicketAsyncInput, type DelegateQueueAsyncInput, type DelegateTicketAsyncInput, type FlushMatchesInput, type InitializeQueueAsyncInput, type InitializeTenantAsyncInput, type JoinQueueAsyncInput, type ParsedCancelTicketInstruction, type ParsedCloseTicketInstruction, type ParsedCommitTicketsInstruction, type ParsedCreateTicketInstruction, type ParsedDelegateQueueInstruction, type ParsedDelegateTicketInstruction, type ParsedFlushMatchesInstruction, type ParsedInitializeQueueInstruction, type ParsedInitializeTenantInstruction, type ParsedJoinQueueInstruction, type ParsedProcessUndelegationInstruction, type ParsedSetupTicketPermissionInstruction, type ProcessUndelegationInput, type SetupTicketPermissionAsyncInput } from '../instructions';
|
|
12
|
+
export declare const DUEL_PROGRAM_ADDRESS: Address<"EdZzUwKd1X2ZWjxLPpz1cpEzMF7RUZC43Pq64v1VcK5X">;
|
|
13
|
+
export declare enum DuelAccount {
|
|
14
|
+
MatchTicket = 0,
|
|
15
|
+
Queue = 1,
|
|
16
|
+
Tenant = 2
|
|
17
|
+
}
|
|
18
|
+
export declare function identifyDuelAccount(account: {
|
|
19
|
+
data: ReadonlyUint8Array;
|
|
20
|
+
} | ReadonlyUint8Array): DuelAccount;
|
|
21
|
+
export declare enum DuelInstruction {
|
|
22
|
+
CancelTicket = 0,
|
|
23
|
+
CloseTicket = 1,
|
|
24
|
+
CommitTickets = 2,
|
|
25
|
+
CreateTicket = 3,
|
|
26
|
+
DelegateQueue = 4,
|
|
27
|
+
DelegateTicket = 5,
|
|
28
|
+
FlushMatches = 6,
|
|
29
|
+
InitializeQueue = 7,
|
|
30
|
+
InitializeTenant = 8,
|
|
31
|
+
JoinQueue = 9,
|
|
32
|
+
ProcessUndelegation = 10,
|
|
33
|
+
SetupTicketPermission = 11
|
|
34
|
+
}
|
|
35
|
+
export declare function identifyDuelInstruction(instruction: {
|
|
36
|
+
data: ReadonlyUint8Array;
|
|
37
|
+
} | ReadonlyUint8Array): DuelInstruction;
|
|
38
|
+
export type ParsedDuelInstruction<TProgram extends string = 'EdZzUwKd1X2ZWjxLPpz1cpEzMF7RUZC43Pq64v1VcK5X'> = {
|
|
39
|
+
instructionType: DuelInstruction.CancelTicket;
|
|
40
|
+
} & ParsedCancelTicketInstruction<TProgram> | {
|
|
41
|
+
instructionType: DuelInstruction.CloseTicket;
|
|
42
|
+
} & ParsedCloseTicketInstruction<TProgram> | {
|
|
43
|
+
instructionType: DuelInstruction.CommitTickets;
|
|
44
|
+
} & ParsedCommitTicketsInstruction<TProgram> | {
|
|
45
|
+
instructionType: DuelInstruction.CreateTicket;
|
|
46
|
+
} & ParsedCreateTicketInstruction<TProgram> | {
|
|
47
|
+
instructionType: DuelInstruction.DelegateQueue;
|
|
48
|
+
} & ParsedDelegateQueueInstruction<TProgram> | {
|
|
49
|
+
instructionType: DuelInstruction.DelegateTicket;
|
|
50
|
+
} & ParsedDelegateTicketInstruction<TProgram> | {
|
|
51
|
+
instructionType: DuelInstruction.FlushMatches;
|
|
52
|
+
} & ParsedFlushMatchesInstruction<TProgram> | {
|
|
53
|
+
instructionType: DuelInstruction.InitializeQueue;
|
|
54
|
+
} & ParsedInitializeQueueInstruction<TProgram> | {
|
|
55
|
+
instructionType: DuelInstruction.InitializeTenant;
|
|
56
|
+
} & ParsedInitializeTenantInstruction<TProgram> | {
|
|
57
|
+
instructionType: DuelInstruction.JoinQueue;
|
|
58
|
+
} & ParsedJoinQueueInstruction<TProgram> | {
|
|
59
|
+
instructionType: DuelInstruction.ProcessUndelegation;
|
|
60
|
+
} & ParsedProcessUndelegationInstruction<TProgram> | {
|
|
61
|
+
instructionType: DuelInstruction.SetupTicketPermission;
|
|
62
|
+
} & ParsedSetupTicketPermissionInstruction<TProgram>;
|
|
63
|
+
export declare function parseDuelInstruction<TProgram extends string>(instruction: Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array>): ParsedDuelInstruction<TProgram>;
|
|
64
|
+
export type DuelPlugin = {
|
|
65
|
+
accounts: DuelPluginAccounts;
|
|
66
|
+
instructions: DuelPluginInstructions;
|
|
67
|
+
};
|
|
68
|
+
export type DuelPluginAccounts = {
|
|
69
|
+
matchTicket: ReturnType<typeof getMatchTicketCodec> & SelfFetchFunctions<MatchTicketArgs, MatchTicket>;
|
|
70
|
+
queue: ReturnType<typeof getQueueCodec> & SelfFetchFunctions<QueueArgs, Queue>;
|
|
71
|
+
tenant: ReturnType<typeof getTenantCodec> & SelfFetchFunctions<TenantArgs, Tenant>;
|
|
72
|
+
};
|
|
73
|
+
export type DuelPluginInstructions = {
|
|
74
|
+
cancelTicket: (input: CancelTicketAsyncInput) => ReturnType<typeof getCancelTicketInstructionAsync> & SelfPlanAndSendFunctions;
|
|
75
|
+
closeTicket: (input: CloseTicketAsyncInput) => ReturnType<typeof getCloseTicketInstructionAsync> & SelfPlanAndSendFunctions;
|
|
76
|
+
commitTickets: (input: MakeOptional<CommitTicketsInput, "payer">) => ReturnType<typeof getCommitTicketsInstruction> & SelfPlanAndSendFunctions;
|
|
77
|
+
createTicket: (input: CreateTicketAsyncInput) => ReturnType<typeof getCreateTicketInstructionAsync> & SelfPlanAndSendFunctions;
|
|
78
|
+
delegateQueue: (input: MakeOptional<DelegateQueueAsyncInput, "payer">) => ReturnType<typeof getDelegateQueueInstructionAsync> & SelfPlanAndSendFunctions;
|
|
79
|
+
delegateTicket: (input: MakeOptional<DelegateTicketAsyncInput, "payer">) => ReturnType<typeof getDelegateTicketInstructionAsync> & SelfPlanAndSendFunctions;
|
|
80
|
+
flushMatches: (input: FlushMatchesInput) => ReturnType<typeof getFlushMatchesInstruction> & SelfPlanAndSendFunctions;
|
|
81
|
+
initializeQueue: (input: InitializeQueueAsyncInput) => ReturnType<typeof getInitializeQueueInstructionAsync> & SelfPlanAndSendFunctions;
|
|
82
|
+
initializeTenant: (input: InitializeTenantAsyncInput) => ReturnType<typeof getInitializeTenantInstructionAsync> & SelfPlanAndSendFunctions;
|
|
83
|
+
joinQueue: (input: JoinQueueAsyncInput) => ReturnType<typeof getJoinQueueInstructionAsync> & SelfPlanAndSendFunctions;
|
|
84
|
+
processUndelegation: (input: MakeOptional<ProcessUndelegationInput, "payer">) => ReturnType<typeof getProcessUndelegationInstruction> & SelfPlanAndSendFunctions;
|
|
85
|
+
setupTicketPermission: (input: SetupTicketPermissionAsyncInput) => ReturnType<typeof getSetupTicketPermissionInstructionAsync> & SelfPlanAndSendFunctions;
|
|
86
|
+
};
|
|
87
|
+
export type DuelPluginRequirements = ClientWithRpc<GetAccountInfoApi & GetMultipleAccountsApi> & ClientWithPayer & ClientWithTransactionPlanning & ClientWithTransactionSending;
|
|
88
|
+
export declare function duelProgram(): <T extends DuelPluginRequirements>(client: T) => T & {
|
|
89
|
+
duel: DuelPlugin;
|
|
90
|
+
};
|
|
91
|
+
type MakeOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
92
|
+
export {};
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
import { assertIsInstructionWithAccounts, containsBytes, fixEncoderSize, getBytesEncoder, SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT, SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION, SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE, SolanaError } from '@solana/kit';
|
|
9
|
+
import { addSelfFetchFunctions, addSelfPlanAndSendFunctions } from '@solana/program-client-core';
|
|
10
|
+
import { getMatchTicketCodec, getQueueCodec, getTenantCodec } from '../accounts';
|
|
11
|
+
import { getCancelTicketInstructionAsync, getCloseTicketInstructionAsync, getCommitTicketsInstruction, getCreateTicketInstructionAsync, getDelegateQueueInstructionAsync, getDelegateTicketInstructionAsync, getFlushMatchesInstruction, getInitializeQueueInstructionAsync, getInitializeTenantInstructionAsync, getJoinQueueInstructionAsync, getProcessUndelegationInstruction, getSetupTicketPermissionInstructionAsync, parseCancelTicketInstruction, parseCloseTicketInstruction, parseCommitTicketsInstruction, parseCreateTicketInstruction, parseDelegateQueueInstruction, parseDelegateTicketInstruction, parseFlushMatchesInstruction, parseInitializeQueueInstruction, parseInitializeTenantInstruction, parseJoinQueueInstruction, parseProcessUndelegationInstruction, parseSetupTicketPermissionInstruction } from '../instructions';
|
|
12
|
+
export const DUEL_PROGRAM_ADDRESS = 'EdZzUwKd1X2ZWjxLPpz1cpEzMF7RUZC43Pq64v1VcK5X';
|
|
13
|
+
export var DuelAccount;
|
|
14
|
+
(function (DuelAccount) {
|
|
15
|
+
DuelAccount[DuelAccount["MatchTicket"] = 0] = "MatchTicket";
|
|
16
|
+
DuelAccount[DuelAccount["Queue"] = 1] = "Queue";
|
|
17
|
+
DuelAccount[DuelAccount["Tenant"] = 2] = "Tenant";
|
|
18
|
+
})(DuelAccount || (DuelAccount = {}));
|
|
19
|
+
export function identifyDuelAccount(account) {
|
|
20
|
+
const data = 'data' in account ? account.data : account;
|
|
21
|
+
if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([11, 131, 4, 157, 207, 79, 126, 5])), 0)) {
|
|
22
|
+
return DuelAccount.MatchTicket;
|
|
23
|
+
}
|
|
24
|
+
if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([204, 167, 6, 247, 20, 33, 2, 188])), 0)) {
|
|
25
|
+
return DuelAccount.Queue;
|
|
26
|
+
}
|
|
27
|
+
if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([61, 43, 215, 51, 232, 242, 209, 170])), 0)) {
|
|
28
|
+
return DuelAccount.Tenant;
|
|
29
|
+
}
|
|
30
|
+
throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT, { accountData: data, programName: "duel" });
|
|
31
|
+
}
|
|
32
|
+
export var DuelInstruction;
|
|
33
|
+
(function (DuelInstruction) {
|
|
34
|
+
DuelInstruction[DuelInstruction["CancelTicket"] = 0] = "CancelTicket";
|
|
35
|
+
DuelInstruction[DuelInstruction["CloseTicket"] = 1] = "CloseTicket";
|
|
36
|
+
DuelInstruction[DuelInstruction["CommitTickets"] = 2] = "CommitTickets";
|
|
37
|
+
DuelInstruction[DuelInstruction["CreateTicket"] = 3] = "CreateTicket";
|
|
38
|
+
DuelInstruction[DuelInstruction["DelegateQueue"] = 4] = "DelegateQueue";
|
|
39
|
+
DuelInstruction[DuelInstruction["DelegateTicket"] = 5] = "DelegateTicket";
|
|
40
|
+
DuelInstruction[DuelInstruction["FlushMatches"] = 6] = "FlushMatches";
|
|
41
|
+
DuelInstruction[DuelInstruction["InitializeQueue"] = 7] = "InitializeQueue";
|
|
42
|
+
DuelInstruction[DuelInstruction["InitializeTenant"] = 8] = "InitializeTenant";
|
|
43
|
+
DuelInstruction[DuelInstruction["JoinQueue"] = 9] = "JoinQueue";
|
|
44
|
+
DuelInstruction[DuelInstruction["ProcessUndelegation"] = 10] = "ProcessUndelegation";
|
|
45
|
+
DuelInstruction[DuelInstruction["SetupTicketPermission"] = 11] = "SetupTicketPermission";
|
|
46
|
+
})(DuelInstruction || (DuelInstruction = {}));
|
|
47
|
+
export function identifyDuelInstruction(instruction) {
|
|
48
|
+
const data = 'data' in instruction ? instruction.data : instruction;
|
|
49
|
+
if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([216, 28, 247, 206, 195, 171, 100, 143])), 0)) {
|
|
50
|
+
return DuelInstruction.CancelTicket;
|
|
51
|
+
}
|
|
52
|
+
if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([66, 209, 114, 197, 75, 27, 182, 117])), 0)) {
|
|
53
|
+
return DuelInstruction.CloseTicket;
|
|
54
|
+
}
|
|
55
|
+
if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([245, 199, 81, 0, 62, 133, 18, 22])), 0)) {
|
|
56
|
+
return DuelInstruction.CommitTickets;
|
|
57
|
+
}
|
|
58
|
+
if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([16, 178, 122, 25, 213, 85, 96, 129])), 0)) {
|
|
59
|
+
return DuelInstruction.CreateTicket;
|
|
60
|
+
}
|
|
61
|
+
if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([31, 200, 139, 125, 93, 239, 83, 87])), 0)) {
|
|
62
|
+
return DuelInstruction.DelegateQueue;
|
|
63
|
+
}
|
|
64
|
+
if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([195, 3, 78, 64, 128, 235, 209, 171])), 0)) {
|
|
65
|
+
return DuelInstruction.DelegateTicket;
|
|
66
|
+
}
|
|
67
|
+
if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([49, 148, 163, 71, 77, 63, 197, 76])), 0)) {
|
|
68
|
+
return DuelInstruction.FlushMatches;
|
|
69
|
+
}
|
|
70
|
+
if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([174, 102, 132, 232, 90, 202, 27, 20])), 0)) {
|
|
71
|
+
return DuelInstruction.InitializeQueue;
|
|
72
|
+
}
|
|
73
|
+
if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([94, 120, 34, 186, 57, 167, 241, 206])), 0)) {
|
|
74
|
+
return DuelInstruction.InitializeTenant;
|
|
75
|
+
}
|
|
76
|
+
if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([157, 115, 48, 109, 65, 86, 203, 238])), 0)) {
|
|
77
|
+
return DuelInstruction.JoinQueue;
|
|
78
|
+
}
|
|
79
|
+
if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([196, 28, 41, 206, 48, 37, 51, 167])), 0)) {
|
|
80
|
+
return DuelInstruction.ProcessUndelegation;
|
|
81
|
+
}
|
|
82
|
+
if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([164, 29, 7, 235, 183, 223, 11, 85])), 0)) {
|
|
83
|
+
return DuelInstruction.SetupTicketPermission;
|
|
84
|
+
}
|
|
85
|
+
throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION, { instructionData: data, programName: "duel" });
|
|
86
|
+
}
|
|
87
|
+
export function parseDuelInstruction(instruction) {
|
|
88
|
+
const instructionType = identifyDuelInstruction(instruction);
|
|
89
|
+
switch (instructionType) {
|
|
90
|
+
case DuelInstruction.CancelTicket: {
|
|
91
|
+
assertIsInstructionWithAccounts(instruction);
|
|
92
|
+
return { instructionType: DuelInstruction.CancelTicket, ...parseCancelTicketInstruction(instruction) };
|
|
93
|
+
}
|
|
94
|
+
case DuelInstruction.CloseTicket: {
|
|
95
|
+
assertIsInstructionWithAccounts(instruction);
|
|
96
|
+
return { instructionType: DuelInstruction.CloseTicket, ...parseCloseTicketInstruction(instruction) };
|
|
97
|
+
}
|
|
98
|
+
case DuelInstruction.CommitTickets: {
|
|
99
|
+
assertIsInstructionWithAccounts(instruction);
|
|
100
|
+
return { instructionType: DuelInstruction.CommitTickets, ...parseCommitTicketsInstruction(instruction) };
|
|
101
|
+
}
|
|
102
|
+
case DuelInstruction.CreateTicket: {
|
|
103
|
+
assertIsInstructionWithAccounts(instruction);
|
|
104
|
+
return { instructionType: DuelInstruction.CreateTicket, ...parseCreateTicketInstruction(instruction) };
|
|
105
|
+
}
|
|
106
|
+
case DuelInstruction.DelegateQueue: {
|
|
107
|
+
assertIsInstructionWithAccounts(instruction);
|
|
108
|
+
return { instructionType: DuelInstruction.DelegateQueue, ...parseDelegateQueueInstruction(instruction) };
|
|
109
|
+
}
|
|
110
|
+
case DuelInstruction.DelegateTicket: {
|
|
111
|
+
assertIsInstructionWithAccounts(instruction);
|
|
112
|
+
return { instructionType: DuelInstruction.DelegateTicket, ...parseDelegateTicketInstruction(instruction) };
|
|
113
|
+
}
|
|
114
|
+
case DuelInstruction.FlushMatches: {
|
|
115
|
+
assertIsInstructionWithAccounts(instruction);
|
|
116
|
+
return { instructionType: DuelInstruction.FlushMatches, ...parseFlushMatchesInstruction(instruction) };
|
|
117
|
+
}
|
|
118
|
+
case DuelInstruction.InitializeQueue: {
|
|
119
|
+
assertIsInstructionWithAccounts(instruction);
|
|
120
|
+
return { instructionType: DuelInstruction.InitializeQueue, ...parseInitializeQueueInstruction(instruction) };
|
|
121
|
+
}
|
|
122
|
+
case DuelInstruction.InitializeTenant: {
|
|
123
|
+
assertIsInstructionWithAccounts(instruction);
|
|
124
|
+
return { instructionType: DuelInstruction.InitializeTenant, ...parseInitializeTenantInstruction(instruction) };
|
|
125
|
+
}
|
|
126
|
+
case DuelInstruction.JoinQueue: {
|
|
127
|
+
assertIsInstructionWithAccounts(instruction);
|
|
128
|
+
return { instructionType: DuelInstruction.JoinQueue, ...parseJoinQueueInstruction(instruction) };
|
|
129
|
+
}
|
|
130
|
+
case DuelInstruction.ProcessUndelegation: {
|
|
131
|
+
assertIsInstructionWithAccounts(instruction);
|
|
132
|
+
return { instructionType: DuelInstruction.ProcessUndelegation, ...parseProcessUndelegationInstruction(instruction) };
|
|
133
|
+
}
|
|
134
|
+
case DuelInstruction.SetupTicketPermission: {
|
|
135
|
+
assertIsInstructionWithAccounts(instruction);
|
|
136
|
+
return { instructionType: DuelInstruction.SetupTicketPermission, ...parseSetupTicketPermissionInstruction(instruction) };
|
|
137
|
+
}
|
|
138
|
+
default: throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE, { instructionType: instructionType, programName: "duel" });
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
export function duelProgram() {
|
|
142
|
+
return (client) => {
|
|
143
|
+
return { ...client, duel: { accounts: { matchTicket: addSelfFetchFunctions(client, getMatchTicketCodec()), queue: addSelfFetchFunctions(client, getQueueCodec()), tenant: addSelfFetchFunctions(client, getTenantCodec()) }, instructions: { cancelTicket: input => addSelfPlanAndSendFunctions(client, getCancelTicketInstructionAsync(input)), closeTicket: input => addSelfPlanAndSendFunctions(client, getCloseTicketInstructionAsync(input)), commitTickets: input => addSelfPlanAndSendFunctions(client, getCommitTicketsInstruction({ ...input, payer: input.payer ?? client.payer })), createTicket: input => addSelfPlanAndSendFunctions(client, getCreateTicketInstructionAsync(input)), delegateQueue: input => addSelfPlanAndSendFunctions(client, getDelegateQueueInstructionAsync({ ...input, payer: input.payer ?? client.payer })), delegateTicket: input => addSelfPlanAndSendFunctions(client, getDelegateTicketInstructionAsync({ ...input, payer: input.payer ?? client.payer })), flushMatches: input => addSelfPlanAndSendFunctions(client, getFlushMatchesInstruction(input)), initializeQueue: input => addSelfPlanAndSendFunctions(client, getInitializeQueueInstructionAsync(input)), initializeTenant: input => addSelfPlanAndSendFunctions(client, getInitializeTenantInstructionAsync(input)), joinQueue: input => addSelfPlanAndSendFunctions(client, getJoinQueueInstructionAsync(input)), processUndelegation: input => addSelfPlanAndSendFunctions(client, getProcessUndelegationInstruction({ ...input, payer: input.payer ?? client.payer.address })), setupTicketPermission: input => addSelfPlanAndSendFunctions(client, getSetupTicketPermissionInstructionAsync(input)) } } };
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9nZW5lcmF0ZWQvZHVlbC9wcm9ncmFtcy9kdWVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSx5REFBeUQsRUFBRSw2REFBNkQsRUFBRSw0REFBNEQsRUFBRSxXQUFXLEVBQTJQLE1BQU0sYUFBYSxDQUFDO0FBQzVpQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsMkJBQTJCLEVBQTBELE1BQU0sNkJBQTZCLENBQUM7QUFDekosT0FBTyxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQW9HLE1BQU0sYUFBYSxDQUFDO0FBQ25MLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSw4QkFBOEIsRUFBRSwyQkFBMkIsRUFBRSwrQkFBK0IsRUFBRSxnQ0FBZ0MsRUFBRSxpQ0FBaUMsRUFBRSwwQkFBMEIsRUFBRSxrQ0FBa0MsRUFBRSxtQ0FBbUMsRUFBRSw0QkFBNEIsRUFBRSxpQ0FBaUMsRUFBRSx3Q0FBd0MsRUFBRSw0QkFBNEIsRUFBRSwyQkFBMkIsRUFBRSw2QkFBNkIsRUFBRSw0QkFBNEIsRUFBRSw2QkFBNkIsRUFBRSw4QkFBOEIsRUFBRSw0QkFBNEIsRUFBRSwrQkFBK0IsRUFBRSxnQ0FBZ0MsRUFBRSx5QkFBeUIsRUFBRSxtQ0FBbUMsRUFBRSxxQ0FBcUMsRUFBNnlCLE1BQU0saUJBQWlCLENBQUM7QUFFL2xELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLDhDQUF5RyxDQUFDO0FBRTlJLE1BQU0sQ0FBTixJQUFZLFdBQTBDO0FBQXRELFdBQVksV0FBVztJQUFHLDJEQUFXLENBQUE7SUFBRSwrQ0FBSyxDQUFBO0lBQUUsaURBQU0sQ0FBQTtBQUFDLENBQUMsRUFBMUMsV0FBVyxLQUFYLFdBQVcsUUFBK0I7QUFFdEQsTUFBTSxVQUFV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QyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFBQyxPQUFPLGVBQWUsQ0FBQyxjQUFjLENBQUM7SUFBQyxDQUFDO0lBQ3pLLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQUMsT0FBTyxlQUFlLENBQUMsWUFBWSxDQUFDO0lBQUMsQ0FBQztJQUN0SyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sZUFBZSxDQUFDLGVBQWUsQ0FBQztJQUFDLENBQUM7SUFDM0ssSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUs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RSw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsMkJBQTJCLENBQUMsTUFBTSxFQUFFLGlDQUFpQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLEVBQUUsd0NBQXdDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNyb0QsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBjb2RlIHdhcyBBVVRPR0VORVJBVEVEIHVzaW5nIHRoZSBDb2RhbWEgbGlicmFyeS5cbiAqIFBsZWFzZSBETyBOT1QgRURJVCBUSElTIEZJTEUsIGluc3RlYWQgdXNlIHZpc2l0b3JzXG4gKiB0byBhZGQgZmVhdHVyZXMsIHRoZW4gcmVydW4gQ29kYW1hIHRvIHVwZGF0ZSBpdC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jb2RhbWEtaWRsL2NvZGFtYVxuICovXG5cbmltcG9ydCB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMsIGNvbnRhaW5zQnl0ZXMsIGZpeEVuY29kZXJTaXplLCBnZXRCeXRlc0VuY29kZXIsIFNPTEFOQV9FUlJPUl9fUFJPR1JBTV9DTElFTlRTX19GQUlMRURfVE9fSURFTlRJRllfQUNDT1VOVCwgU09MQU5BX0VSUk9SX19QUk9HUkFNX0NMSUVOVFNfX0ZBSUxFRF9UT19JREVOVElGWV9JTlNUUlVDVElPTiwgU09MQU5BX0VSUk9SX19QUk9HUkFNX0NMSUVOVFNfX1VOUkVDT0dOSVpFRF9JTlNUUlVDVElPTl9UWVBFLCBTb2xhbmFFcnJvciwgdHlwZSBBZGRyZXNzLCB0eXBlIENsaWVudFdpdGhQYXllciwgdHlwZSBDbGllbnRXaXRoUnBjLCB0eXBlIENsaWVudFdpdGhUcmFuc2FjdGlvblBsYW5uaW5nLCB0eXBlIENsaWVudFdpdGhUcmFuc2FjdGlvblNlbmRpbmcsIHR5cGUgR2V0QWNjb3VudEluZm9BcGksIHR5cGUgR2V0TXVsdGlwbGVBY2NvdW50c0FwaSwgdHlwZSBJbnN0cnVjdGlvbiwgdHlwZSBJbnN0cnVjdGlvbldpdGhEYXRhLCB0eXBlIFJlYWRvbmx5VWludDhBcnJheSB9IGZyb20gJ0Bzb2xhbmEva2l0JztcbmltcG9ydCB7IGFkZFNlbGZGZXRjaEZ1bmN0aW9ucywgYWRkU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zLCB0eXBlIFNlbGZGZXRjaEZ1bmN0aW9ucywgdHlwZSBTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnMgfSBmcm9tICdAc29sYW5hL3Byb2dyYW0tY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgZ2V0TWF0Y2hUaWNrZXRDb2RlYywgZ2V0UXVldWVDb2RlYywgZ2V0VGVuYW50Q29kZWMsIHR5cGUgTWF0Y2hUaWNrZXQsIHR5cGUgTWF0Y2hUaWNrZXRBcmdzLCB0eXBlIFF1ZXVlLCB0eXBlIFF1ZXVlQXJncywgdHlwZSBUZW5hbnQsIHR5cGUgVGVuYW50QXJncyB9IGZyb20gJy4uL2FjY291bnRzJztcbmltcG9ydCB7IGdldENhbmNlbFRpY2tldEluc3RydWN0aW9uQXN5bmMsIGdldENsb3NlVGlja2V0SW5zdHJ1Y3Rpb25Bc3luYywgZ2V0Q29tbWl0VGlja2V0c0luc3RydWN0aW9uLCBnZXRDcmVhdGVUaWNrZXRJbnN0cnVjdGlvbkFzeW5jLCBnZXREZWxlZ2F0ZVF1ZXVlSW5zdHJ1Y3Rpb25Bc3luYywgZ2V0RGVsZWdhdGVUaWNrZXRJbnN0cnVjdGlvbkFzeW5jLCBnZXRGbHVzaE1hdGNoZXNJbnN0cnVjdGlvbiwgZ2V0SW5pdGlhbGl6ZVF1ZXVlSW5zdHJ1Y3Rpb25Bc3luYywgZ2V0SW5pdGlhbGl6ZVRlbmFudEluc3RydWN0aW9uQXN5bmMsIGdldEpvaW5RdWV1ZUluc3RydWN0aW9uQXN5bmMsIGdldFByb2Nlc3NVbmRlbGVnYXRpb25JbnN0cnVjdGlvbiwgZ2V0U2V0dXBUaWNrZXRQZXJtaXNzaW9uSW5zdHJ1Y3Rpb25Bc3luYywgcGFyc2VDYW5jZWxUaWNrZXRJbnN0cnVjdGlvbiwgcGFyc2VDbG9zZVRpY2tldEluc3RydWN0aW9uLCBwYXJzZUNvbW1pdFRpY2tldHNJbnN0cnVjdGlvbiwgcGFyc2VDcmVhdGVUaWNrZXRJbnN0cnVjdGlvbiwgcGFyc2VEZWxlZ2F0ZVF1ZXVlSW5zdHJ1Y3Rpb24sIHBhcnNlRGVsZWdhdGVUaWNrZXRJbnN0cnVjdGlvbiwgcGFyc2VGbHVzaE1hdGNoZXNJbnN0cnVjdGlvbiwgcGFyc2VJbml0aWFsaXplUXVldWVJbnN0cnVjdGlvbiwgcGFyc2VJbml0aWFsaXplVGVuYW50SW5zdHJ1Y3Rpb24sIHBhcnNlSm9pblF1ZXVlSW5zdHJ1Y3Rpb24sIHBhcnNlUHJvY2Vzc1VuZGVsZWdhdGlvbkluc3RydWN0aW9uLCBwYXJzZVNldHVwVGlja2V0UGVybWlzc2lvbkluc3RydWN0aW9uLCB0eXBlIENhbmNlbFRpY2tldEFzeW5jSW5wdXQsIHR5cGUgQ2xvc2VUaWNrZXRBc3luY0lucHV0LCB0eXBlIENvbW1pdFRpY2tldHNJbnB1dCwgdHlwZSBDcmVhdGVUaWNrZXRBc3luY0lucHV0LCB0eXBlIERlbGVnYXRlUXVldWVBc3luY0lucHV0LCB0eXBlIERlbGVnYXRlVGlja2V0QXN5bmNJbnB1dCwgdHlwZSBGbHVzaE1hdGNoZXNJbnB1dCwgdHlwZSBJbml0aWFsaXplUXVldWVBc3luY0lucHV0LCB0eXBlIEluaXRpYWxpemVUZW5hbnRBc3luY0lucHV0LCB0eXBlIEpvaW5RdWV1ZUFzeW5jSW5wdXQsIHR5cGUgUGFyc2VkQ2FuY2VsVGlja2V0SW5zdHJ1Y3Rpb24sIHR5cGUgUGFyc2VkQ2xvc2VUaWNrZXRJbnN0cnVjdGlvbiwgdHlwZSBQYXJzZWRDb21taXRUaWNrZXRzSW5zdHJ1Y3Rpb24sIHR5cGUgUGFyc2VkQ3JlYXRlVGlja2V0SW5zdHJ1Y3Rpb24sIHR5cGUgUGFyc2VkRGVsZWdhdGVRdWV1ZUluc3RydWN0aW9uLCB0eXBlIFBhcnNlZERlbGVnYXRlVGlja2V0SW5zdHJ1Y3Rpb24sIHR5cGUgUGFyc2VkRmx1c2hNYXRjaGVzSW5zdHJ1Y3Rpb24sIHR5cGUgUGFyc2VkSW5pdGlhbGl6ZVF1ZXVlSW5zdHJ1Y3Rpb24sIHR5cGUgUGFyc2VkSW5pdGlhbGl6ZVRlbmFudEluc3RydWN0aW9uLCB0eXBlIFBhcnNlZEpvaW5RdWV1ZUluc3RydWN0aW9uLCB0eXBlIFBhcnNlZFByb2Nlc3NVbmRlbGVnYXRpb25JbnN0cnVjdGlvbiwgdHlwZSBQYXJzZWRTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbiwgdHlwZSBQcm9jZXNzVW5kZWxlZ2F0aW9uSW5wdXQsIHR5cGUgU2V0dXBUaWNrZXRQZXJtaXNzaW9uQXN5bmNJbnB1dCB9IGZyb20gJy4uL2luc3RydWN0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBEVUVMX1BST0dSQU1fQUREUkVTUyA9ICdFZFp6VXdLZDFYMlpXanhMUHB6MWNwRXpNRjdSVVpDNDNQcTY0djFWY0s1WCcgYXMgQWRkcmVzczwnRWRaelV3S2QxWDJaV2p4TFBwejFjcEV6TUY3UlVaQzQzUHE2NHYxVmNLNVgnPjtcblxuZXhwb3J0IGVudW0gRHVlbEFjY291bnQgeyBNYXRjaFRpY2tldCwgUXVldWUsIFRlbmFudCB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmeUR1ZWxBY2NvdW50KGFjY291bnQ6IHsgZGF0YTogUmVhZG9ubHlVaW50OEFycmF5IH0gfCBSZWFkb25seVVpbnQ4QXJyYXkpOiBEdWVsQWNjb3VudCB7XG4gICAgY29uc3QgZGF0YSA9ICdkYXRhJyBpbiBhY2NvdW50ID8gYWNjb3VudC5kYXRhIDogYWNjb3VudDtcbiAgICBpZiAoY29udGFpbnNCeXRlcyhkYXRhLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKG5ldyBVaW50OEFycmF5KFsxMSwgMTMxLCA0LCAxNTcsIDIwNywgNzksIDEyNiwgNV0pKSwgMCkpIHsgcmV0dXJuIER1ZWxBY2NvdW50Lk1hdGNoVGlja2V0OyB9XG5pZiAoY29udGFpbnNCeXRlcyhkYXRhLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKG5ldyBVaW50OEFycmF5KFsyMDQsIDE2NywgNiwgMjQ3LCAyMCwgMzMsIDIsIDE4OF0pKSwgMCkpIHsgcmV0dXJuIER1ZWxBY2NvdW50LlF1ZXVlOyB9XG5pZiAoY29udGFpbnNCeXRlcyhkYXRhLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKG5ldyBVaW50OEFycmF5KFs2MSwgNDMsIDIxNSwgNTEsIDIzMiwgMjQyLCAyMDksIDE3MF0pKSwgMCkpIHsgcmV0dXJuIER1ZWxBY2NvdW50LlRlbmFudDsgfVxuICAgIHRocm93IG5ldyBTb2xhbmFFcnJvcihTT0xBTkFfRVJST1JfX1BST0dSQU1fQ0xJRU5UU19fRkFJTEVEX1RPX0lERU5USUZZX0FDQ09VTlQsIHsgYWNjb3VudERhdGE6IGRhdGEsIHByb2dyYW1OYW1lOiBcImR1ZWxcIiB9KTtcbn1cblxuZXhwb3J0IGVudW0gRHVlbEluc3RydWN0aW9uIHsgQ2FuY2VsVGlja2V0LCBDbG9zZVRpY2tldCwgQ29tbWl0VGlja2V0cywgQ3JlYXRlVGlja2V0LCBEZWxlZ2F0ZVF1ZXVlLCBEZWxlZ2F0ZVRpY2tldCwgRmx1c2hNYXRjaGVzLCBJbml0aWFsaXplUXVldWUsIEluaXRpYWxpemVUZW5hbnQsIEpvaW5RdWV1ZSwgUHJvY2Vzc1VuZGVsZWdhdGlvbiwgU2V0dXBUaWNrZXRQZXJtaXNzaW9uIH1cblxuZXhwb3J0IGZ1bmN0aW9uIGlkZW50aWZ5RHVlbEluc3RydWN0aW9uKGluc3RydWN0aW9uOiB7IGRhdGE6IFJlYWRvbmx5VWludDhBcnJheSB9IHwgUmVhZG9ubHlVaW50OEFycmF5KTogRHVlbEluc3RydWN0aW9uIHtcbiAgICBjb25zdCBkYXRhID0gJ2RhdGEnIGluIGluc3RydWN0aW9uID8gaW5zdHJ1Y3Rpb24uZGF0YSA6IGluc3RydWN0aW9uO1xuICAgIGlmIChjb250YWluc0J5dGVzKGRhdGEsIGZpeEVuY29kZXJTaXplKGdldEJ5dGVzRW5jb2RlcigpLCA4KS5lbmNvZGUobmV3IFVpbnQ4QXJyYXkoWzIxNiwgMjgsIDI0NywgMjA2LCAxOTUsIDE3MSwgMTAwLCAxNDNdKSksIDApKSB7IHJldHVybiBEdWVsSW5zdHJ1Y3Rpb24uQ2FuY2VsVGlja2V0OyB9XG5pZiAoY29udGFpbnNCeXRlcyhkYXRhLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKG5ldyBVaW50OEFycmF5KFs2NiwgMjA5LCAxMTQsIDE5NywgNzUsIDI3LCAxODIsIDExN10pKSwgMCkpIHsgcmV0dXJuIER1ZWxJbnN0cnVjdGlvbi5DbG9zZVRpY2tldDsgfVxuaWYgKGNvbnRhaW5zQnl0ZXMoZGF0YSwgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShuZXcgVWludDhBcnJheShbMjQ1LCAxOTksIDgxLCAwLCA2MiwgMTMzLCAxOCwgMjJdKSksIDApKSB7IHJldHVybiBEdWVsSW5zdHJ1Y3Rpb24uQ29tbWl0VGlja2V0czsgfVxuaWYgKGNvbnRhaW5zQnl0ZXMoZGF0YSwgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShuZXcgVWludDhBcnJheShbMTYsIDE3OCwgMTIyLCAyNSwgMjEzLCA4NSwgOTYsIDEyOV0pKSwgMCkpIHsgcmV0dXJuIER1ZWxJbnN0cnVjdGlvbi5DcmVhdGVUaWNrZXQ7IH1cbmlmIChjb250YWluc0J5dGVzKGRhdGEsIGZpeEVuY29kZXJTaXplKGdldEJ5dGVzRW5jb2RlcigpLCA4KS5lbmNvZGUobmV3IFVpbnQ4QXJyYXkoWzMxLCAyMDAsIDEzOSwgMTI1LCA5MywgMjM5LCA4MywgODddKSksIDApKSB7IHJldHVybiBEdWVsSW5zdHJ1Y3Rpb24uRGVsZWdhdGVRdWV1ZTsgfVxuaWYgKGNvbnRhaW5zQnl0ZXMoZGF0YSwgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShuZXcgVWludDhBcnJheShbMTk1LCAzLCA3OCwgNjQsIDEyOCwgMjM1LCAyMDksIDE3MV0pKSwgMCkpIHsgcmV0dXJuIER1ZWxJbnN0cnVjdGlvbi5EZWxlZ2F0ZVRpY2tldDsgfVxuaWYgKGNvbnRhaW5zQnl0ZXMoZGF0YSwgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShuZXcgVWludDhBcnJheShbNDksIDE0OCwgMTYzLCA3MSwgNzcsIDYzLCAxOTcsIDc2XSkpLCAwKSkgeyByZXR1cm4gRHVlbEluc3RydWN0aW9uLkZsdXNoTWF0Y2hlczsgfVxuaWYgKGNvbnRhaW5zQnl0ZXMoZGF0YSwgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShuZXcgVWludDhBcnJheShbMTc0LCAxMDIsIDEzMiwgMjMyLCA5MCwgMjAyLCAyNywgMjBdKSksIDApKSB7IHJldHVybiBEdWVsSW5zdHJ1Y3Rpb24uSW5pdGlhbGl6ZVF1ZXVlOyB9XG5pZiAoY29udGFpbnNCeXRlcyhkYXRhLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKG5ldyBVaW50OEFycmF5KFs5NCwgMTIwLCAzNCwgMTg2LCA1NywgMTY3LCAyNDEsIDIwNl0pKSwgMCkpIHsgcmV0dXJuIER1ZWxJbnN0cnVjdGlvbi5Jbml0aWFsaXplVGVuYW50OyB9XG5pZiAoY29udGFpbnNCeXRlcyhkYXRhLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKG5ldyBVaW50OEFycmF5KFsxNTcsIDExNSwgNDgsIDEwOSwgNjUsIDg2LCAyMDMsIDIzOF0pKSwgMCkpIHsgcmV0dXJuIER1ZWxJbnN0cnVjdGlvbi5Kb2luUXVldWU7IH1cbmlmIChjb250YWluc0J5dGVzKGRhdGEsIGZpeEVuY29kZXJTaXplKGdldEJ5dGVzRW5jb2RlcigpLCA4KS5lbmNvZGUobmV3IFVpbnQ4QXJyYXkoWzE5NiwgMjgsIDQxLCAyMDYsIDQ4LCAzNywgNTEsIDE2N10pKSwgMCkpIHsgcmV0dXJuIER1ZWxJbnN0cnVjdGlvbi5Qcm9jZXNzVW5kZWxlZ2F0aW9uOyB9XG5pZiAoY29udGFpbnNCeXRlcyhkYXRhLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKG5ldyBVaW50OEFycmF5KFsxNjQsIDI5LCA3LCAyMzUsIDE4MywgMjIzLCAxMSwgODVdKSksIDApKSB7IHJldHVybiBEdWVsSW5zdHJ1Y3Rpb24uU2V0dXBUaWNrZXRQZXJtaXNzaW9uOyB9XG4gICAgdGhyb3cgbmV3IFNvbGFuYUVycm9yKFNPTEFOQV9FUlJPUl9fUFJPR1JBTV9DTElFTlRTX19GQUlMRURfVE9fSURFTlRJRllfSU5TVFJVQ1RJT04sIHsgaW5zdHJ1Y3Rpb25EYXRhOiBkYXRhLCBwcm9ncmFtTmFtZTogXCJkdWVsXCIgfSk7XG59XG5cbmV4cG9ydCB0eXBlIFBhcnNlZER1ZWxJbnN0cnVjdGlvbjxUUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA9ICdFZFp6VXdLZDFYMlpXanhMUHB6MWNwRXpNRjdSVVpDNDNQcTY0djFWY0s1WCc+ID1cbnwgeyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5DYW5jZWxUaWNrZXQgfSAmIFBhcnNlZENhbmNlbFRpY2tldEluc3RydWN0aW9uPFRQcm9ncmFtPlxufCB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLkNsb3NlVGlja2V0IH0gJiBQYXJzZWRDbG9zZVRpY2tldEluc3RydWN0aW9uPFRQcm9ncmFtPlxufCB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLkNvbW1pdFRpY2tldHMgfSAmIFBhcnNlZENvbW1pdFRpY2tldHNJbnN0cnVjdGlvbjxUUHJvZ3JhbT5cbnwgeyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5DcmVhdGVUaWNrZXQgfSAmIFBhcnNlZENyZWF0ZVRpY2tldEluc3RydWN0aW9uPFRQcm9ncmFtPlxufCB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLkRlbGVnYXRlUXVldWUgfSAmIFBhcnNlZERlbGVnYXRlUXVldWVJbnN0cnVjdGlvbjxUUHJvZ3JhbT5cbnwgeyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5EZWxlZ2F0ZVRpY2tldCB9ICYgUGFyc2VkRGVsZWdhdGVUaWNrZXRJbnN0cnVjdGlvbjxUUHJvZ3JhbT5cbnwgeyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5GbHVzaE1hdGNoZXMgfSAmIFBhcnNlZEZsdXNoTWF0Y2hlc0luc3RydWN0aW9uPFRQcm9ncmFtPlxufCB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLkluaXRpYWxpemVRdWV1ZSB9ICYgUGFyc2VkSW5pdGlhbGl6ZVF1ZXVlSW5zdHJ1Y3Rpb248VFByb2dyYW0+XG58IHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uSW5pdGlhbGl6ZVRlbmFudCB9ICYgUGFyc2VkSW5pdGlhbGl6ZVRlbmFudEluc3RydWN0aW9uPFRQcm9ncmFtPlxufCB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLkpvaW5RdWV1ZSB9ICYgUGFyc2VkSm9pblF1ZXVlSW5zdHJ1Y3Rpb248VFByb2dyYW0+XG58IHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uUHJvY2Vzc1VuZGVsZWdhdGlvbiB9ICYgUGFyc2VkUHJvY2Vzc1VuZGVsZWdhdGlvbkluc3RydWN0aW9uPFRQcm9ncmFtPlxufCB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLlNldHVwVGlja2V0UGVybWlzc2lvbiB9ICYgUGFyc2VkU2V0dXBUaWNrZXRQZXJtaXNzaW9uSW5zdHJ1Y3Rpb248VFByb2dyYW0+XG5cblxuICAgICAgICBleHBvcnQgZnVuY3Rpb24gcGFyc2VEdWVsSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmc+KFxuICAgICAgICAgICAgaW5zdHJ1Y3Rpb246IEluc3RydWN0aW9uPFRQcm9ncmFtPiBcbiAgICAgICAgICAgICAgICAmIEluc3RydWN0aW9uV2l0aERhdGE8UmVhZG9ubHlVaW50OEFycmF5PlxuICAgICAgICApOiBQYXJzZWREdWVsSW5zdHJ1Y3Rpb248VFByb2dyYW0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluc3RydWN0aW9uVHlwZSA9IGlkZW50aWZ5RHVlbEluc3RydWN0aW9uKGluc3RydWN0aW9uKTtcbiAgICAgICAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb25UeXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBEdWVsSW5zdHJ1Y3Rpb24uQ2FuY2VsVGlja2V0OiB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMoaW5zdHJ1Y3Rpb24pO1xucmV0dXJuIHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uQ2FuY2VsVGlja2V0LCAuLi5wYXJzZUNhbmNlbFRpY2tldEluc3RydWN0aW9uKGluc3RydWN0aW9uKSB9OyB9XG5jYXNlIER1ZWxJbnN0cnVjdGlvbi5DbG9zZVRpY2tldDogeyBhc3NlcnRJc0luc3RydWN0aW9uV2l0aEFjY291bnRzKGluc3RydWN0aW9uKTtcbnJldHVybiB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLkNsb3NlVGlja2V0LCAuLi5wYXJzZUNsb3NlVGlja2V0SW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb24pIH07IH1cbmNhc2UgRHVlbEluc3RydWN0aW9uLkNvbW1pdFRpY2tldHM6IHsgYXNzZXJ0SXNJbnN0cnVjdGlvbldpdGhBY2NvdW50cyhpbnN0cnVjdGlvbik7XG5yZXR1cm4geyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5Db21taXRUaWNrZXRzLCAuLi5wYXJzZUNvbW1pdFRpY2tldHNJbnN0cnVjdGlvbihpbnN0cnVjdGlvbikgfTsgfVxuY2FzZSBEdWVsSW5zdHJ1Y3Rpb24uQ3JlYXRlVGlja2V0OiB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMoaW5zdHJ1Y3Rpb24pO1xucmV0dXJuIHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uQ3JlYXRlVGlja2V0LCAuLi5wYXJzZUNyZWF0ZVRpY2tldEluc3RydWN0aW9uKGluc3RydWN0aW9uKSB9OyB9XG5jYXNlIER1ZWxJbnN0cnVjdGlvbi5EZWxlZ2F0ZVF1ZXVlOiB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMoaW5zdHJ1Y3Rpb24pO1xucmV0dXJuIHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uRGVsZWdhdGVRdWV1ZSwgLi4ucGFyc2VEZWxlZ2F0ZVF1ZXVlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb24pIH07IH1cbmNhc2UgRHVlbEluc3RydWN0aW9uLkRlbGVnYXRlVGlja2V0OiB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMoaW5zdHJ1Y3Rpb24pO1xucmV0dXJuIHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uRGVsZWdhdGVUaWNrZXQsIC4uLnBhcnNlRGVsZWdhdGVUaWNrZXRJbnN0cnVjdGlvbihpbnN0cnVjdGlvbikgfTsgfVxuY2FzZSBEdWVsSW5zdHJ1Y3Rpb24uRmx1c2hNYXRjaGVzOiB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMoaW5zdHJ1Y3Rpb24pO1xucmV0dXJuIHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uRmx1c2hNYXRjaGVzLCAuLi5wYXJzZUZsdXNoTWF0Y2hlc0luc3RydWN0aW9uKGluc3RydWN0aW9uKSB9OyB9XG5jYXNlIER1ZWxJbnN0cnVjdGlvbi5Jbml0aWFsaXplUXVldWU6IHsgYXNzZXJ0SXNJbnN0cnVjdGlvbldpdGhBY2NvdW50cyhpbnN0cnVjdGlvbik7XG5yZXR1cm4geyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5Jbml0aWFsaXplUXVldWUsIC4uLnBhcnNlSW5pdGlhbGl6ZVF1ZXVlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb24pIH07IH1cbmNhc2UgRHVlbEluc3RydWN0aW9uLkluaXRpYWxpemVUZW5hbnQ6IHsgYXNzZXJ0SXNJbnN0cnVjdGlvbldpdGhBY2NvdW50cyhpbnN0cnVjdGlvbik7XG5yZXR1cm4geyBpbnN0cnVjdGlvblR5cGU6IER1ZWxJbnN0cnVjdGlvbi5Jbml0aWFsaXplVGVuYW50LCAuLi5wYXJzZUluaXRpYWxpemVUZW5hbnRJbnN0cnVjdGlvbihpbnN0cnVjdGlvbikgfTsgfVxuY2FzZSBEdWVsSW5zdHJ1Y3Rpb24uSm9pblF1ZXVlOiB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMoaW5zdHJ1Y3Rpb24pO1xucmV0dXJuIHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uSm9pblF1ZXVlLCAuLi5wYXJzZUpvaW5RdWV1ZUluc3RydWN0aW9uKGluc3RydWN0aW9uKSB9OyB9XG5jYXNlIER1ZWxJbnN0cnVjdGlvbi5Qcm9jZXNzVW5kZWxlZ2F0aW9uOiB7IGFzc2VydElzSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMoaW5zdHJ1Y3Rpb24pO1xucmV0dXJuIHsgaW5zdHJ1Y3Rpb25UeXBlOiBEdWVsSW5zdHJ1Y3Rpb24uUHJvY2Vzc1VuZGVsZWdhdGlvbiwgLi4ucGFyc2VQcm9jZXNzVW5kZWxlZ2F0aW9uSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb24pIH07IH1cbmNhc2UgRHVlbEluc3RydWN0aW9uLlNldHVwVGlja2V0UGVybWlzc2lvbjogeyBhc3NlcnRJc0luc3RydWN0aW9uV2l0aEFjY291bnRzKGluc3RydWN0aW9uKTtcbnJldHVybiB7IGluc3RydWN0aW9uVHlwZTogRHVlbEluc3RydWN0aW9uLlNldHVwVGlja2V0UGVybWlzc2lvbiwgLi4ucGFyc2VTZXR1cFRpY2tldFBlcm1pc3Npb25JbnN0cnVjdGlvbihpbnN0cnVjdGlvbikgfTsgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBTb2xhbmFFcnJvcihTT0xBTkFfRVJST1JfX1BST0dSQU1fQ0xJRU5UU19fVU5SRUNPR05JWkVEX0lOU1RSVUNUSU9OX1RZUEUsIHsgaW5zdHJ1Y3Rpb25UeXBlOiBpbnN0cnVjdGlvblR5cGUgYXMgc3RyaW5nLCBwcm9ncmFtTmFtZTogXCJkdWVsXCIgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuZXhwb3J0IHR5cGUgRHVlbFBsdWdpbiA9IHsgYWNjb3VudHM6IER1ZWxQbHVnaW5BY2NvdW50czsgaW5zdHJ1Y3Rpb25zOiBEdWVsUGx1Z2luSW5zdHJ1Y3Rpb25zOyB9XG5cbmV4cG9ydCB0eXBlIER1ZWxQbHVnaW5BY2NvdW50cyA9IHsgbWF0Y2hUaWNrZXQ6IFJldHVyblR5cGU8dHlwZW9mIGdldE1hdGNoVGlja2V0Q29kZWM+ICYgU2VsZkZldGNoRnVuY3Rpb25zPE1hdGNoVGlja2V0QXJncywgTWF0Y2hUaWNrZXQ+OyBxdWV1ZTogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0UXVldWVDb2RlYz4gJiBTZWxmRmV0Y2hGdW5jdGlvbnM8UXVldWVBcmdzLCBRdWV1ZT47IHRlbmFudDogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0VGVuYW50Q29kZWM+ICYgU2VsZkZldGNoRnVuY3Rpb25zPFRlbmFudEFyZ3MsIFRlbmFudD47IH1cblxuZXhwb3J0IHR5cGUgRHVlbFBsdWdpbkluc3RydWN0aW9ucyA9IHsgY2FuY2VsVGlja2V0OiAoaW5wdXQ6IENhbmNlbFRpY2tldEFzeW5jSW5wdXQpID0+IFJldHVyblR5cGU8dHlwZW9mIGdldENhbmNlbFRpY2tldEluc3RydWN0aW9uQXN5bmM+ICYgU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zOyBjbG9zZVRpY2tldDogKGlucHV0OiBDbG9zZVRpY2tldEFzeW5jSW5wdXQpID0+IFJldHVyblR5cGU8dHlwZW9mIGdldENsb3NlVGlja2V0SW5zdHJ1Y3Rpb25Bc3luYz4gJiBTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnM7IGNvbW1pdFRpY2tldHM6IChpbnB1dDogTWFrZU9wdGlvbmFsPENvbW1pdFRpY2tldHNJbnB1dCwgXCJwYXllclwiPikgPT4gUmV0dXJuVHlwZTx0eXBlb2YgZ2V0Q29tbWl0VGlja2V0c0luc3RydWN0aW9uPiAmIFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9uczsgY3JlYXRlVGlja2V0OiAoaW5wdXQ6IENyZWF0ZVRpY2tldEFzeW5jSW5wdXQpID0+IFJldHVyblR5cGU8dHlwZW9mIGdldENyZWF0ZVRpY2tldEluc3RydWN0aW9uQXN5bmM+ICYgU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zOyBkZWxlZ2F0ZVF1ZXVlOiAoaW5wdXQ6IE1ha2VPcHRpb25hbDxEZWxlZ2F0ZVF1ZXVlQXN5bmNJbnB1dCwgXCJwYXllclwiPikgPT4gUmV0dXJuVHlwZTx0eXBlb2YgZ2V0RGVsZWdhdGVRdWV1ZUluc3RydWN0aW9uQXN5bmM+ICYgU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zOyBkZWxlZ2F0ZVRpY2tldDogKGlucHV0OiBNYWtlT3B0aW9uYWw8RGVsZWdhdGVUaWNrZXRBc3luY0lucHV0LCBcInBheWVyXCI+KSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBnZXREZWxlZ2F0ZVRpY2tldEluc3RydWN0aW9uQXN5bmM+ICYgU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zOyBmbHVzaE1hdGNoZXM6IChpbnB1dDogRmx1c2hNYXRjaGVzSW5wdXQpID0+IFJldHVyblR5cGU8dHlwZW9mIGdldEZsdXNoTWF0Y2hlc0luc3RydWN0aW9uPiAmIFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9uczsgaW5pdGlhbGl6ZVF1ZXVlOiAoaW5wdXQ6IEluaXRpYWxpemVRdWV1ZUFzeW5jSW5wdXQpID0+IFJldHVyblR5cGU8dHlwZW9mIGdldEluaXRpYWxpemVRdWV1ZUluc3RydWN0aW9uQXN5bmM+ICYgU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zOyBpbml0aWFsaXplVGVuYW50OiAoaW5wdXQ6IEluaXRpYWxpemVUZW5hbnRBc3luY0lucHV0KSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRJbml0aWFsaXplVGVuYW50SW5zdHJ1Y3Rpb25Bc3luYz4gJiBTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnM7IGpvaW5RdWV1ZTogKGlucHV0OiBKb2luUXVldWVBc3luY0lucHV0KSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRKb2luUXVldWVJbnN0cnVjdGlvbkFzeW5jPiAmIFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9uczsgcHJvY2Vzc1VuZGVsZWdhdGlvbjogKGlucHV0OiBNYWtlT3B0aW9uYWw8UHJvY2Vzc1VuZGVsZWdhdGlvbklucHV0LCBcInBheWVyXCI+KSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRQcm9jZXNzVW5kZWxlZ2F0aW9uSW5zdHJ1Y3Rpb24+ICYgU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zOyBzZXR1cFRpY2tldFBlcm1pc3Npb246IChpbnB1dDogU2V0dXBUaWNrZXRQZXJtaXNzaW9uQXN5bmNJbnB1dCkgPT4gUmV0dXJuVHlwZTx0eXBlb2YgZ2V0U2V0dXBUaWNrZXRQZXJtaXNzaW9uSW5zdHJ1Y3Rpb25Bc3luYz4gJiBTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnM7IH1cblxuZXhwb3J0IHR5cGUgRHVlbFBsdWdpblJlcXVpcmVtZW50cyA9IENsaWVudFdpdGhScGM8R2V0QWNjb3VudEluZm9BcGkgJiBHZXRNdWx0aXBsZUFjY291bnRzQXBpPiAmIENsaWVudFdpdGhQYXllciAmIENsaWVudFdpdGhUcmFuc2FjdGlvblBsYW5uaW5nICYgQ2xpZW50V2l0aFRyYW5zYWN0aW9uU2VuZGluZ1xuXG5leHBvcnQgZnVuY3Rpb24gZHVlbFByb2dyYW0oKSB7XG4gICAgcmV0dXJuIDxUIGV4dGVuZHMgRHVlbFBsdWdpblJlcXVpcmVtZW50cz4oY2xpZW50OiBUKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmNsaWVudCwgZHVlbDogPER1ZWxQbHVnaW4+eyBhY2NvdW50czogeyBtYXRjaFRpY2tldDogYWRkU2VsZkZldGNoRnVuY3Rpb25zKGNsaWVudCwgZ2V0TWF0Y2hUaWNrZXRDb2RlYygpKSwgcXVldWU6IGFkZFNlbGZGZXRjaEZ1bmN0aW9ucyhjbGllbnQsIGdldFF1ZXVlQ29kZWMoKSksIHRlbmFudDogYWRkU2VsZkZldGNoRnVuY3Rpb25zKGNsaWVudCwgZ2V0VGVuYW50Q29kZWMoKSkgfSwgaW5zdHJ1Y3Rpb25zOiB7IGNhbmNlbFRpY2tldDogaW5wdXQgPT4gYWRkU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zKGNsaWVudCwgZ2V0Q2FuY2VsVGlja2V0SW5zdHJ1Y3Rpb25Bc3luYyhpbnB1dCkpLCBjbG9zZVRpY2tldDogaW5wdXQgPT4gYWRkU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zKGNsaWVudCwgZ2V0Q2xvc2VUaWNrZXRJbnN0cnVjdGlvbkFzeW5jKGlucHV0KSksIGNvbW1pdFRpY2tldHM6IGlucHV0ID0+IGFkZFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9ucyhjbGllbnQsIGdldENvbW1pdFRpY2tldHNJbnN0cnVjdGlvbih7IC4uLmlucHV0LCBwYXllcjogaW5wdXQucGF5ZXIgPz8gY2xpZW50LnBheWVyIH0pKSwgY3JlYXRlVGlja2V0OiBpbnB1dCA9PiBhZGRTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnMoY2xpZW50LCBnZXRDcmVhdGVUaWNrZXRJbnN0cnVjdGlvbkFzeW5jKGlucHV0KSksIGRlbGVnYXRlUXVldWU6IGlucHV0ID0+IGFkZFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9ucyhjbGllbnQsIGdldERlbGVnYXRlUXVldWVJbnN0cnVjdGlvbkFzeW5jKHsgLi4uaW5wdXQsIHBheWVyOiBpbnB1dC5wYXllciA/PyBjbGllbnQucGF5ZXIgfSkpLCBkZWxlZ2F0ZVRpY2tldDogaW5wdXQgPT4gYWRkU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zKGNsaWVudCwgZ2V0RGVsZWdhdGVUaWNrZXRJbnN0cnVjdGlvbkFzeW5jKHsgLi4uaW5wdXQsIHBheWVyOiBpbnB1dC5wYXllciA/PyBjbGllbnQucGF5ZXIgfSkpLCBmbHVzaE1hdGNoZXM6IGlucHV0ID0+IGFkZFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9ucyhjbGllbnQsIGdldEZsdXNoTWF0Y2hlc0luc3RydWN0aW9uKGlucHV0KSksIGluaXRpYWxpemVRdWV1ZTogaW5wdXQgPT4gYWRkU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zKGNsaWVudCwgZ2V0SW5pdGlhbGl6ZVF1ZXVlSW5zdHJ1Y3Rpb25Bc3luYyhpbnB1dCkpLCBpbml0aWFsaXplVGVuYW50OiBpbnB1dCA9PiBhZGRTZWxmUGxhbkFuZFNlbmRGdW5jdGlvbnMoY2xpZW50LCBnZXRJbml0aWFsaXplVGVuYW50SW5zdHJ1Y3Rpb25Bc3luYyhpbnB1dCkpLCBqb2luUXVldWU6IGlucHV0ID0+IGFkZFNlbGZQbGFuQW5kU2VuZEZ1bmN0aW9ucyhjbGllbnQsIGdldEpvaW5RdWV1ZUluc3RydWN0aW9uQXN5bmMoaW5wdXQpKSwgcHJvY2Vzc1VuZGVsZWdhdGlvbjogaW5wdXQgPT4gYWRkU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zKGNsaWVudCwgZ2V0UHJvY2Vzc1VuZGVsZWdhdGlvbkluc3RydWN0aW9uKHsgLi4uaW5wdXQsIHBheWVyOiBpbnB1dC5wYXllciA/PyBjbGllbnQucGF5ZXIuYWRkcmVzcyB9KSksIHNldHVwVGlja2V0UGVybWlzc2lvbjogaW5wdXQgPT4gYWRkU2VsZlBsYW5BbmRTZW5kRnVuY3Rpb25zKGNsaWVudCwgZ2V0U2V0dXBUaWNrZXRQZXJtaXNzaW9uSW5zdHJ1Y3Rpb25Bc3luYyhpbnB1dCkpIH0gfSB9O1xuICAgIH07XG59XG5cbnR5cGUgTWFrZU9wdGlvbmFsPFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IE9taXQ8VCwgSz4gJiBQYXJ0aWFsPFBpY2s8VCwgSz4+OyJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
export * from './duel';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2VuZXJhdGVkL2R1ZWwvcHJvZ3JhbXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsY0FBYyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgY29kZSB3YXMgQVVUT0dFTkVSQVRFRCB1c2luZyB0aGUgQ29kYW1hIGxpYnJhcnkuXG4gKiBQbGVhc2UgRE8gTk9UIEVESVQgVEhJUyBGSUxFLCBpbnN0ZWFkIHVzZSB2aXNpdG9yc1xuICogdG8gYWRkIGZlYXR1cmVzLCB0aGVuIHJlcnVuIENvZGFtYSB0byB1cGRhdGUgaXQuXG4gKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vY29kYW1hLWlkbC9jb2RhbWFcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2R1ZWwnOyJdfQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
import { type Address, type Codec, type Decoder, type Encoder, type GetDiscriminatedUnionVariant, type GetDiscriminatedUnionVariantContent } from '@solana/kit';
|
|
9
|
+
export type AccountType = {
|
|
10
|
+
__kind: "Queue";
|
|
11
|
+
authority: Address;
|
|
12
|
+
} | {
|
|
13
|
+
__kind: "Ticket";
|
|
14
|
+
player: Address;
|
|
15
|
+
tenant: Address;
|
|
16
|
+
};
|
|
17
|
+
export type AccountTypeArgs = AccountType;
|
|
18
|
+
export declare function getAccountTypeEncoder(): Encoder<AccountTypeArgs>;
|
|
19
|
+
export declare function getAccountTypeDecoder(): Decoder<AccountType>;
|
|
20
|
+
export declare function getAccountTypeCodec(): Codec<AccountTypeArgs, AccountType>;
|
|
21
|
+
export declare function accountType(kind: 'Queue', data: GetDiscriminatedUnionVariantContent<AccountTypeArgs, '__kind', 'Queue'>): GetDiscriminatedUnionVariant<AccountTypeArgs, '__kind', 'Queue'>;
|
|
22
|
+
export declare function accountType(kind: 'Ticket', data: GetDiscriminatedUnionVariantContent<AccountTypeArgs, '__kind', 'Ticket'>): GetDiscriminatedUnionVariant<AccountTypeArgs, '__kind', 'Ticket'>;
|
|
23
|
+
export declare function isAccountType<K extends AccountType['__kind']>(kind: K, value: AccountType): value is AccountType & {
|
|
24
|
+
__kind: K;
|
|
25
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
import { combineCodec, getAddressDecoder, getAddressEncoder, getDiscriminatedUnionDecoder, getDiscriminatedUnionEncoder, getStructDecoder, getStructEncoder } from '@solana/kit';
|
|
9
|
+
export function getAccountTypeEncoder() {
|
|
10
|
+
return getDiscriminatedUnionEncoder([['Queue', getStructEncoder([['authority', getAddressEncoder()]])], ['Ticket', getStructEncoder([['player', getAddressEncoder()], ['tenant', getAddressEncoder()]])]]);
|
|
11
|
+
}
|
|
12
|
+
export function getAccountTypeDecoder() {
|
|
13
|
+
return getDiscriminatedUnionDecoder([['Queue', getStructDecoder([['authority', getAddressDecoder()]])], ['Ticket', getStructDecoder([['player', getAddressDecoder()], ['tenant', getAddressDecoder()]])]]);
|
|
14
|
+
}
|
|
15
|
+
export function getAccountTypeCodec() {
|
|
16
|
+
return combineCodec(getAccountTypeEncoder(), getAccountTypeDecoder());
|
|
17
|
+
}
|
|
18
|
+
export function accountType(kind, data) {
|
|
19
|
+
return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...(data ?? {}) };
|
|
20
|
+
}
|
|
21
|
+
export function isAccountType(kind, value) {
|
|
22
|
+
return value.__kind === kind;
|
|
23
|
+
}
|
|
24
|
+
;
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudFR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2VuZXJhdGVkL2R1ZWwvdHlwZXMvYWNjb3VudFR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSw0QkFBNEIsRUFBRSw0QkFBNEIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBcUksTUFBTSxhQUFhLENBQUM7QUFNcFQsTUFBTSxVQUFVLHFCQUFxQjtJQUNqQyxPQUFPLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvTSxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQjtJQUNqQyxPQUFPLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvTSxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQjtJQUMvQixPQUFPLFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBS0QsTUFBTSxVQUFVLFdBQVcsQ0FBNEMsSUFBTyxFQUFFLElBQVc7SUFDekYsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ2xHLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFrQyxJQUFPLEVBQUUsS0FBa0I7SUFDeEYsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQztBQUMvQixDQUFDO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBjb2RlIHdhcyBBVVRPR0VORVJBVEVEIHVzaW5nIHRoZSBDb2RhbWEgbGlicmFyeS5cbiAqIFBsZWFzZSBETyBOT1QgRURJVCBUSElTIEZJTEUsIGluc3RlYWQgdXNlIHZpc2l0b3JzXG4gKiB0byBhZGQgZmVhdHVyZXMsIHRoZW4gcmVydW4gQ29kYW1hIHRvIHVwZGF0ZSBpdC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jb2RhbWEtaWRsL2NvZGFtYVxuICovXG5cbmltcG9ydCB7IGNvbWJpbmVDb2RlYywgZ2V0QWRkcmVzc0RlY29kZXIsIGdldEFkZHJlc3NFbmNvZGVyLCBnZXREaXNjcmltaW5hdGVkVW5pb25EZWNvZGVyLCBnZXREaXNjcmltaW5hdGVkVW5pb25FbmNvZGVyLCBnZXRTdHJ1Y3REZWNvZGVyLCBnZXRTdHJ1Y3RFbmNvZGVyLCB0eXBlIEFkZHJlc3MsIHR5cGUgQ29kZWMsIHR5cGUgRGVjb2RlciwgdHlwZSBFbmNvZGVyLCB0eXBlIEdldERpc2NyaW1pbmF0ZWRVbmlvblZhcmlhbnQsIHR5cGUgR2V0RGlzY3JpbWluYXRlZFVuaW9uVmFyaWFudENvbnRlbnQgfSBmcm9tICdAc29sYW5hL2tpdCc7XG5cbmV4cG9ydCB0eXBlIEFjY291bnRUeXBlID0geyBfX2tpbmQ6IFwiUXVldWVcIiwgYXV0aG9yaXR5OiBBZGRyZXNzOyAgfSB8IHsgX19raW5kOiBcIlRpY2tldFwiLCBwbGF5ZXI6IEFkZHJlc3M7IHRlbmFudDogQWRkcmVzczsgIH07XG5cbmV4cG9ydCB0eXBlIEFjY291bnRUeXBlQXJncyA9IEFjY291bnRUeXBlO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWNjb3VudFR5cGVFbmNvZGVyKCk6IEVuY29kZXI8QWNjb3VudFR5cGVBcmdzPiB7XG4gICAgcmV0dXJuIGdldERpc2NyaW1pbmF0ZWRVbmlvbkVuY29kZXIoW1snUXVldWUnLCBnZXRTdHJ1Y3RFbmNvZGVyKFtbJ2F1dGhvcml0eScsIGdldEFkZHJlc3NFbmNvZGVyKCldXSldLCBbJ1RpY2tldCcsIGdldFN0cnVjdEVuY29kZXIoW1sncGxheWVyJywgZ2V0QWRkcmVzc0VuY29kZXIoKV0sIFsndGVuYW50JywgZ2V0QWRkcmVzc0VuY29kZXIoKV1dKV1dKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFjY291bnRUeXBlRGVjb2RlcigpOiBEZWNvZGVyPEFjY291bnRUeXBlPiB7XG4gICAgcmV0dXJuIGdldERpc2NyaW1pbmF0ZWRVbmlvbkRlY29kZXIoW1snUXVldWUnLCBnZXRTdHJ1Y3REZWNvZGVyKFtbJ2F1dGhvcml0eScsIGdldEFkZHJlc3NEZWNvZGVyKCldXSldLCBbJ1RpY2tldCcsIGdldFN0cnVjdERlY29kZXIoW1sncGxheWVyJywgZ2V0QWRkcmVzc0RlY29kZXIoKV0sIFsndGVuYW50JywgZ2V0QWRkcmVzc0RlY29kZXIoKV1dKV1dKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFjY291bnRUeXBlQ29kZWMoKTogQ29kZWM8QWNjb3VudFR5cGVBcmdzLCBBY2NvdW50VHlwZT4ge1xuICAgIHJldHVybiBjb21iaW5lQ29kZWMoZ2V0QWNjb3VudFR5cGVFbmNvZGVyKCksIGdldEFjY291bnRUeXBlRGVjb2RlcigpKTtcbn1cblxuLy8gRGF0YSBFbnVtIEhlbHBlcnMuXG5leHBvcnQgZnVuY3Rpb24gYWNjb3VudFR5cGUoa2luZDogJ1F1ZXVlJywgZGF0YTogR2V0RGlzY3JpbWluYXRlZFVuaW9uVmFyaWFudENvbnRlbnQ8QWNjb3VudFR5cGVBcmdzLCAnX19raW5kJywgJ1F1ZXVlJz4pOiBHZXREaXNjcmltaW5hdGVkVW5pb25WYXJpYW50PEFjY291bnRUeXBlQXJncywgJ19fa2luZCcsICdRdWV1ZSc+O1xuZXhwb3J0IGZ1bmN0aW9uIGFjY291bnRUeXBlKGtpbmQ6ICdUaWNrZXQnLCBkYXRhOiBHZXREaXNjcmltaW5hdGVkVW5pb25WYXJpYW50Q29udGVudDxBY2NvdW50VHlwZUFyZ3MsICdfX2tpbmQnLCAnVGlja2V0Jz4pOiBHZXREaXNjcmltaW5hdGVkVW5pb25WYXJpYW50PEFjY291bnRUeXBlQXJncywgJ19fa2luZCcsICdUaWNrZXQnPjtcbmV4cG9ydCBmdW5jdGlvbiBhY2NvdW50VHlwZTxLIGV4dGVuZHMgQWNjb3VudFR5cGVBcmdzWydfX2tpbmQnXSwgRGF0YT4oa2luZDogSywgZGF0YT86IERhdGEpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZGF0YSkgPyB7IF9fa2luZDoga2luZCwgZmllbGRzOiBkYXRhIH0gOiB7IF9fa2luZDoga2luZCwgLi4uKGRhdGEgPz8ge30pIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FjY291bnRUeXBlPEsgZXh0ZW5kcyBBY2NvdW50VHlwZVsnX19raW5kJ10+KGtpbmQ6IEssIHZhbHVlOiBBY2NvdW50VHlwZSk6IHZhbHVlIGlzIEFjY291bnRUeXBlICYgeyBfX2tpbmQ6IEsgfSB7XG4gIHJldHVybiB2YWx1ZS5fX2tpbmQgPT09IGtpbmQ7XG59O1xuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
export * from './accountType';
|
|
9
|
+
export * from './matchEntry';
|
|
10
|
+
export * from './matchFound';
|
|
11
|
+
export * from './pendingMatch';
|
|
12
|
+
export * from './queueEntry';
|
|
13
|
+
export * from './ticketStatus';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was AUTOGENERATED using the Codama library.
|
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
|
4
|
+
* to add features, then rerun Codama to update it.
|
|
5
|
+
*
|
|
6
|
+
* @see https://github.com/codama-idl/codama
|
|
7
|
+
*/
|
|
8
|
+
export * from './accountType';
|
|
9
|
+
export * from './matchEntry';
|
|
10
|
+
export * from './matchFound';
|
|
11
|
+
export * from './pendingMatch';
|
|
12
|
+
export * from './queueEntry';
|
|
13
|
+
export * from './ticketStatus';
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2VuZXJhdGVkL2R1ZWwvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGNvZGUgd2FzIEFVVE9HRU5FUkFURUQgdXNpbmcgdGhlIENvZGFtYSBsaWJyYXJ5LlxuICogUGxlYXNlIERPIE5PVCBFRElUIFRISVMgRklMRSwgaW5zdGVhZCB1c2UgdmlzaXRvcnNcbiAqIHRvIGFkZCBmZWF0dXJlcywgdGhlbiByZXJ1biBDb2RhbWEgdG8gdXBkYXRlIGl0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2NvZGFtYS1pZGwvY29kYW1hXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9hY2NvdW50VHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL21hdGNoRW50cnknO1xuZXhwb3J0ICogZnJvbSAnLi9tYXRjaEZvdW5kJztcbmV4cG9ydCAqIGZyb20gJy4vcGVuZGluZ01hdGNoJztcbmV4cG9ydCAqIGZyb20gJy4vcXVldWVFbnRyeSc7XG5leHBvcnQgKiBmcm9tICcuL3RpY2tldFN0YXR1cyc7Il19
|