@modelprofile.com/flexharness-providers 7.0.1 → 8.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_ts_openai_account/smartai.providers.interfaces.d.ts +20 -2
- package/dist_ts_openai_account/smartai.providers.openai.d.ts +3 -3
- package/dist_ts_openai_account/smartai.providers.openai.js +61 -17
- package/dist_ts_openai_auth/index.d.ts +1 -3
- package/dist_ts_openai_auth/index.js +2 -7
- package/dist_ts_openai_auth/interfaces.d.ts +28 -0
- package/dist_ts_openai_auth/smartai.auth.openai.d.ts +5 -1
- package/dist_ts_openai_auth/smartai.auth.openai.js +66 -12
- package/dist_ts_openai_auth/smartai.connection.openai.d.ts +4 -0
- package/dist_ts_openai_auth/smartai.connection.openai.js +98 -0
- package/package.json +2 -2
- package/readme.md +5 -1
- package/ts_openai_account/readme.md +52 -0
- package/ts_openai_account/smartai.providers.interfaces.ts +25 -2
- package/ts_openai_account/smartai.providers.openai.ts +73 -17
- package/ts_openai_auth/index.ts +1 -9
- package/ts_openai_auth/interfaces.ts +35 -1
- package/ts_openai_auth/readme.md +20 -0
- package/ts_openai_auth/smartai.auth.openai.ts +82 -12
- package/ts_openai_auth/smartai.connection.openai.ts +143 -0
- package/ts_providers/openai/readme.md +5 -0
- package/ts_providers/readme.md +5 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TOpenAiChatGptRequestOutcome } from '@modelprofile.com/flexharness-providers/auth';
|
|
1
2
|
export type TSmartAiProviderId = string;
|
|
2
3
|
export type TSmartAiProviderLoginFlow = 'browser' | 'device';
|
|
3
4
|
export type TSmartAiProviderInputModality = 'text' | 'image' | 'audio';
|
|
@@ -20,6 +21,17 @@ export interface IOpenAiChatGptOAuthCredential {
|
|
|
20
21
|
idToken: string;
|
|
21
22
|
lastRefreshAt?: string;
|
|
22
23
|
}
|
|
24
|
+
/** A short-lived, authority-resolved access grant for read and inference operations. */
|
|
25
|
+
export interface IOpenAiChatGptAccessCredential {
|
|
26
|
+
kind: 'chatgptAccess';
|
|
27
|
+
providerId: 'openai';
|
|
28
|
+
accessToken: string;
|
|
29
|
+
/** The verified ChatGPT workspace/account ID, not an email address. */
|
|
30
|
+
accountId: string;
|
|
31
|
+
isFedrampAccount: boolean;
|
|
32
|
+
}
|
|
33
|
+
/** Access grants are deliberately excluded from stored provider credential envelopes. */
|
|
34
|
+
export type TOpenAiChatGptReadCredential = IOpenAiChatGptOAuthCredential | IOpenAiChatGptAccessCredential;
|
|
23
35
|
export type TSmartAiProviderCredential = ISmartAiProviderApiKeyCredential | IOpenAiChatGptOAuthCredential;
|
|
24
36
|
export interface ISmartAiProviderAccountSummary {
|
|
25
37
|
providerId: TSmartAiProviderId;
|
|
@@ -92,6 +104,12 @@ export interface ISmartAiProviderRefreshFailure {
|
|
|
92
104
|
success: false;
|
|
93
105
|
credential: IOpenAiChatGptOAuthCredential;
|
|
94
106
|
errorCode: TSmartAiProviderCredentialOperationErrorCode | 'REFRESH_FAILED';
|
|
107
|
+
/** Never replay a rotating grant when this is outcomeUnknown. */
|
|
108
|
+
requestOutcome: TOpenAiChatGptRequestOutcome;
|
|
109
|
+
/** The response status, when an HTTP response was observed. */
|
|
110
|
+
responseStatus?: number;
|
|
111
|
+
/** Bounded Retry-After delay from the observed response. */
|
|
112
|
+
retryAfterMs?: number;
|
|
95
113
|
}
|
|
96
114
|
export type TSmartAiProviderRefreshResult = ISmartAiProviderRefreshSuccess | ISmartAiProviderRefreshFailure;
|
|
97
115
|
export interface ISmartAiProviderModelListSuccess {
|
|
@@ -149,8 +167,8 @@ export interface ISmartAiProviderAdapter {
|
|
|
149
167
|
inspectCredential(credential: TSmartAiProviderCredential): ISmartAiProviderAccountSummary;
|
|
150
168
|
beginLogin(options: ISmartAiProviderLoginOptions): Promise<ISmartAiProviderLoginHandle>;
|
|
151
169
|
refreshCredential(credential: IOpenAiChatGptOAuthCredential, options?: ISmartAiProviderOperationOptions): Promise<TSmartAiProviderRefreshResult>;
|
|
152
|
-
listModels(credential:
|
|
153
|
-
getAccountRateLimits(credential:
|
|
170
|
+
listModels(credential: TOpenAiChatGptReadCredential, options?: ISmartAiProviderModelListOptions): Promise<TSmartAiProviderModelListResult>;
|
|
171
|
+
getAccountRateLimits(credential: TOpenAiChatGptReadCredential, options?: ISmartAiProviderOperationOptions): Promise<TSmartAiProviderAccountRateLimitsResult>;
|
|
154
172
|
logoutCredential(credential: IOpenAiChatGptOAuthCredential, options?: ISmartAiProviderOperationOptions): Promise<void>;
|
|
155
173
|
dispose(): Promise<void>;
|
|
156
174
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IOpenAiChatGptOAuthCredential, IOpenAiProviderAdapterOptions, ISmartAiProviderAccountSummary, ISmartAiProviderAdapter, ISmartAiProviderApiKeyCredential, ISmartAiProviderDescriptor, ISmartAiProviderLoginHandle, ISmartAiProviderLoginOptions, ISmartAiProviderModelListOptions, ISmartAiProviderOperationOptions, TSmartAiProviderAccountRateLimitsResult, TSmartAiProviderCredential, TSmartAiProviderModelListResult, TSmartAiProviderRefreshResult } from './smartai.providers.interfaces.js';
|
|
1
|
+
import type { IOpenAiChatGptOAuthCredential, IOpenAiProviderAdapterOptions, ISmartAiProviderAccountSummary, ISmartAiProviderAdapter, ISmartAiProviderApiKeyCredential, ISmartAiProviderDescriptor, ISmartAiProviderLoginHandle, ISmartAiProviderLoginOptions, ISmartAiProviderModelListOptions, ISmartAiProviderOperationOptions, TOpenAiChatGptReadCredential, TSmartAiProviderAccountRateLimitsResult, TSmartAiProviderCredential, TSmartAiProviderModelListResult, TSmartAiProviderRefreshResult } from './smartai.providers.interfaces.js';
|
|
2
2
|
export declare class OpenAiProviderAdapter implements ISmartAiProviderAdapter {
|
|
3
3
|
readonly descriptor: ISmartAiProviderDescriptor;
|
|
4
4
|
private readonly fetchImplementation;
|
|
@@ -21,9 +21,9 @@ export declare class OpenAiProviderAdapter implements ISmartAiProviderAdapter {
|
|
|
21
21
|
private fetchCatalog;
|
|
22
22
|
private encodeCursor;
|
|
23
23
|
private decodeCursor;
|
|
24
|
-
listModels(credentialArg:
|
|
24
|
+
listModels(credentialArg: TOpenAiChatGptReadCredential, optionsArg?: ISmartAiProviderModelListOptions): Promise<TSmartAiProviderModelListResult>;
|
|
25
25
|
private fetchAccountRateLimits;
|
|
26
|
-
getAccountRateLimits(credentialArg:
|
|
26
|
+
getAccountRateLimits(credentialArg: TOpenAiChatGptReadCredential, optionsArg?: ISmartAiProviderOperationOptions): Promise<TSmartAiProviderAccountRateLimitsResult>;
|
|
27
27
|
logoutCredential(credentialArg: IOpenAiChatGptOAuthCredential, optionsArg?: ISmartAiProviderOperationOptions): Promise<void>;
|
|
28
28
|
dispose(): Promise<void>;
|
|
29
29
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// OpenAI protocol portions are adapted in TypeScript; see third-party-notices.md.
|
|
2
2
|
import * as plugins from './plugins.js';
|
|
3
|
-
import { OPENAI_CHATGPT_CODEX_BASE_URL, OPENAI_CHATGPT_DEFAULT_ORIGINATOR, completeOpenAiChatGptDeviceCodeLogin, createOpenAiChatGptBrowserAuthorization, exchangeOpenAiChatGptBrowserAuthorizationCode, parseOpenAiChatGptBrowserCallback, parseOpenAiChatGptTokenInfo, refreshOpenAiChatGptTokenData, requestOpenAiChatGptDeviceCode, revokeOpenAiChatGptToken, } from '@modelprofile.com/flexharness-providers/auth';
|
|
3
|
+
import { OPENAI_CHATGPT_CODEX_BASE_URL, OPENAI_CHATGPT_DEFAULT_ORIGINATOR, OpenAiChatGptAuthError, completeOpenAiChatGptDeviceCodeLogin, createOpenAiChatGptBrowserAuthorization, exchangeOpenAiChatGptBrowserAuthorizationCode, parseOpenAiChatGptBrowserCallback, parseOpenAiChatGptTokenInfo, refreshOpenAiChatGptTokenData, requestOpenAiChatGptDeviceCode, revokeOpenAiChatGptToken, } from '@modelprofile.com/flexharness-providers/auth';
|
|
4
4
|
import { createSmartAiProviderError, SmartAiProviderError } from './smartai.providers.error.js';
|
|
5
5
|
const defaultBrowserLoginTimeoutMs = 11 * 60 * 1000;
|
|
6
6
|
const defaultDeviceLoginTimeoutMs = 15 * 60 * 1000;
|
|
@@ -100,6 +100,36 @@ const toTokenData = (credentialArg) => {
|
|
|
100
100
|
tokenInfo,
|
|
101
101
|
};
|
|
102
102
|
};
|
|
103
|
+
const toReadAccess = (credentialArg) => {
|
|
104
|
+
if (!isRecord(credentialArg))
|
|
105
|
+
throw createSmartAiProviderError('CREDENTIAL_INVALID');
|
|
106
|
+
if (credentialArg.kind === 'chatgptOAuth') {
|
|
107
|
+
const tokenData = toTokenData(credentialArg);
|
|
108
|
+
return {
|
|
109
|
+
accessToken: tokenData.accessToken,
|
|
110
|
+
accountId: tokenData.tokenInfo.chatgptAccountId,
|
|
111
|
+
isFedrampAccount: tokenData.tokenInfo.chatgptAccountIsFedramp,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
const access = credentialArg;
|
|
115
|
+
if (access.kind !== 'chatgptAccess'
|
|
116
|
+
|| access.providerId !== 'openai'
|
|
117
|
+
|| typeof access.accessToken !== 'string'
|
|
118
|
+
|| access.accessToken.length === 0
|
|
119
|
+
|| plugins.Buffer.byteLength(access.accessToken, 'utf8') > maximumHeaderBytes
|
|
120
|
+
|| typeof access.accountId !== 'string'
|
|
121
|
+
|| access.accountId.length === 0
|
|
122
|
+
|| plugins.Buffer.byteLength(access.accountId, 'utf8') > maximumHeaderBytes
|
|
123
|
+
|| typeof access.isFedrampAccount !== 'boolean'
|
|
124
|
+
|| Object.keys(access).length !== 5) {
|
|
125
|
+
throw createSmartAiProviderError('CREDENTIAL_INVALID');
|
|
126
|
+
}
|
|
127
|
+
return {
|
|
128
|
+
accessToken: access.accessToken,
|
|
129
|
+
accountId: access.accountId,
|
|
130
|
+
isFedrampAccount: access.isFedrampAccount,
|
|
131
|
+
};
|
|
132
|
+
};
|
|
103
133
|
const toCredential = (tokenDataArg, lastRefreshAtArg) => {
|
|
104
134
|
if (!tokenDataArg.idToken)
|
|
105
135
|
throw createSmartAiProviderError('CREDENTIAL_INVALID');
|
|
@@ -719,6 +749,7 @@ export class OpenAiProviderAdapter {
|
|
|
719
749
|
success: false,
|
|
720
750
|
credential: credentialArg,
|
|
721
751
|
errorCode: waitOperation.timedOut ? 'TIMEOUT' : 'ABORTED',
|
|
752
|
+
requestOutcome: 'notSent',
|
|
722
753
|
};
|
|
723
754
|
waitOperation.cleanup();
|
|
724
755
|
return failure;
|
|
@@ -758,6 +789,7 @@ export class OpenAiProviderAdapter {
|
|
|
758
789
|
success: false,
|
|
759
790
|
credential: credentialArg,
|
|
760
791
|
errorCode: waitOperation.timedOut ? 'TIMEOUT' : 'ABORTED',
|
|
792
|
+
requestOutcome: 'outcomeUnknown',
|
|
761
793
|
});
|
|
762
794
|
waitOperation.signal.addEventListener('abort', onAbort, { once: true });
|
|
763
795
|
});
|
|
@@ -783,7 +815,12 @@ export class OpenAiProviderAdapter {
|
|
|
783
815
|
const tokenChanged = refreshed.accessToken !== input.accessToken
|
|
784
816
|
|| refreshed.refreshToken !== input.refreshToken;
|
|
785
817
|
if (!tokenChanged || !refreshed.idToken) {
|
|
786
|
-
return {
|
|
818
|
+
return {
|
|
819
|
+
success: false,
|
|
820
|
+
credential: credentialArg,
|
|
821
|
+
errorCode: 'REFRESH_FAILED',
|
|
822
|
+
requestOutcome: 'outcomeUnknown',
|
|
823
|
+
};
|
|
787
824
|
}
|
|
788
825
|
const previous = credentialArg.lastRefreshAt === undefined
|
|
789
826
|
? 0
|
|
@@ -799,6 +836,15 @@ export class OpenAiProviderAdapter {
|
|
|
799
836
|
success: false,
|
|
800
837
|
credential: credentialArg,
|
|
801
838
|
errorCode: classifyOperationError(errorArg, operation, 'REFRESH_FAILED'),
|
|
839
|
+
requestOutcome: errorArg instanceof OpenAiChatGptAuthError
|
|
840
|
+
? errorArg.requestOutcome ?? 'outcomeUnknown'
|
|
841
|
+
: 'outcomeUnknown',
|
|
842
|
+
...(errorArg instanceof OpenAiChatGptAuthError && errorArg.status !== undefined
|
|
843
|
+
? { responseStatus: errorArg.status }
|
|
844
|
+
: {}),
|
|
845
|
+
...(errorArg instanceof OpenAiChatGptAuthError && errorArg.retryAfterMs !== undefined
|
|
846
|
+
? { retryAfterMs: errorArg.retryAfterMs }
|
|
847
|
+
: {}),
|
|
802
848
|
};
|
|
803
849
|
}
|
|
804
850
|
finally {
|
|
@@ -806,9 +852,8 @@ export class OpenAiProviderAdapter {
|
|
|
806
852
|
operation.cleanup();
|
|
807
853
|
}
|
|
808
854
|
}
|
|
809
|
-
async fetchCatalog(
|
|
810
|
-
const
|
|
811
|
-
const accountId = tokenData.tokenInfo.chatgptAccountId;
|
|
855
|
+
async fetchCatalog(accessArg, signalArg) {
|
|
856
|
+
const accountId = accessArg.accountId;
|
|
812
857
|
const url = `${OPENAI_CHATGPT_CODEX_BASE_URL}/models?client_version=${encodeURIComponent(defaultClientVersion)}`;
|
|
813
858
|
let response;
|
|
814
859
|
let onAbort;
|
|
@@ -819,9 +864,9 @@ export class OpenAiProviderAdapter {
|
|
|
819
864
|
signal: signalArg,
|
|
820
865
|
headers: {
|
|
821
866
|
Accept: 'application/json',
|
|
822
|
-
Authorization: `Bearer ${
|
|
867
|
+
Authorization: `Bearer ${accessArg.accessToken}`,
|
|
823
868
|
...(accountId ? { 'ChatGPT-Account-ID': accountId } : {}),
|
|
824
|
-
...(
|
|
869
|
+
...(accessArg.isFedrampAccount ? { 'X-OpenAI-Fedramp': 'true' } : {}),
|
|
825
870
|
originator: this.originator,
|
|
826
871
|
version: defaultClientVersion,
|
|
827
872
|
},
|
|
@@ -893,14 +938,14 @@ export class OpenAiProviderAdapter {
|
|
|
893
938
|
}
|
|
894
939
|
async listModels(credentialArg, optionsArg = {}) {
|
|
895
940
|
this.requireOpen();
|
|
896
|
-
|
|
941
|
+
const access = toReadAccess(credentialArg);
|
|
897
942
|
const options = normalizeModelListOptions(optionsArg);
|
|
898
943
|
const operation = createOperation(options, defaultOperationTimeoutMs);
|
|
899
944
|
this.operations.add(operation.controller);
|
|
900
945
|
try {
|
|
901
946
|
let catalog;
|
|
902
947
|
try {
|
|
903
|
-
catalog = await this.fetchCatalog(
|
|
948
|
+
catalog = await this.fetchCatalog(access, operation.signal);
|
|
904
949
|
}
|
|
905
950
|
catch (errorArg) {
|
|
906
951
|
if (!(errorArg instanceof ModelHttpError) || errorArg.status !== 401)
|
|
@@ -950,9 +995,8 @@ export class OpenAiProviderAdapter {
|
|
|
950
995
|
operation.cleanup();
|
|
951
996
|
}
|
|
952
997
|
}
|
|
953
|
-
async fetchAccountRateLimits(
|
|
954
|
-
const
|
|
955
|
-
const accountId = tokenData.tokenInfo.chatgptAccountId;
|
|
998
|
+
async fetchAccountRateLimits(accessArg, signalArg) {
|
|
999
|
+
const accountId = accessArg.accountId;
|
|
956
1000
|
let response;
|
|
957
1001
|
let onAbort;
|
|
958
1002
|
try {
|
|
@@ -962,9 +1006,9 @@ export class OpenAiProviderAdapter {
|
|
|
962
1006
|
signal: signalArg,
|
|
963
1007
|
headers: {
|
|
964
1008
|
Accept: 'application/json',
|
|
965
|
-
Authorization: `Bearer ${
|
|
1009
|
+
Authorization: `Bearer ${accessArg.accessToken}`,
|
|
966
1010
|
...(accountId ? { 'ChatGPT-Account-Id': accountId } : {}),
|
|
967
|
-
...(
|
|
1011
|
+
...(accessArg.isFedrampAccount ? { 'X-OpenAI-Fedramp': 'true' } : {}),
|
|
968
1012
|
'User-Agent': this.originator,
|
|
969
1013
|
},
|
|
970
1014
|
});
|
|
@@ -997,12 +1041,12 @@ export class OpenAiProviderAdapter {
|
|
|
997
1041
|
}
|
|
998
1042
|
async getAccountRateLimits(credentialArg, optionsArg = {}) {
|
|
999
1043
|
this.requireOpen();
|
|
1000
|
-
|
|
1044
|
+
const access = toReadAccess(credentialArg);
|
|
1001
1045
|
const operation = createOperation(optionsArg, defaultOperationTimeoutMs);
|
|
1002
1046
|
this.operations.add(operation.controller);
|
|
1003
1047
|
try {
|
|
1004
1048
|
try {
|
|
1005
|
-
const rateLimits = await this.fetchAccountRateLimits(
|
|
1049
|
+
const rateLimits = await this.fetchAccountRateLimits(access, operation.signal);
|
|
1006
1050
|
return { success: true, rateLimits };
|
|
1007
1051
|
}
|
|
1008
1052
|
catch (errorArg) {
|
|
@@ -1072,4 +1116,4 @@ export class OpenAiProviderAdapter {
|
|
|
1072
1116
|
}
|
|
1073
1117
|
}
|
|
1074
1118
|
}
|
|
1075
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhaS5wcm92aWRlcnMub3BlbmFpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfb3BlbmFpX2FjY291bnQvc21hcnRhaS5wcm92aWRlcnMub3BlbmFpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtGQUFrRjtBQUNsRixPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLGlDQUFpQyxFQUNqQyxvQ0FBb0MsRUFDcEMsdUNBQXVDLEVBQ3ZDLDZDQUE2QyxFQUM3QyxpQ0FBaUMsRUFDakMsMkJBQTJCLEVBQzNCLDZCQUE2QixFQUM3Qiw4QkFBOEIsRUFDOUIsd0JBQXdCLEdBQ3pCLE1BQU0sOENBQThDLENBQUM7QUFDdEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUF5QmhHLE1BQU0sNEJBQTRCLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDcEQsTUFBTSwyQkFBMkIsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUNuRCxNQUFNLHlCQUF5QixHQUFHLE1BQU0sQ0FBQztBQUN6QyxNQUFNLHlCQUF5QixHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ2pELE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDNUMsTUFBTSw2QkFBNkIsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQ2pELE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBQ2pDLE1BQU0sMkJBQTJCLEdBQUcsR0FBRyxDQUFDO0FBQ3hDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0FBQ2hDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLE1BQU0sb0JBQW9CLEdBQUcsU0FBUyxDQUFDO0FBQ3ZDLE1BQU0sa0JBQWtCLEdBQUcsRUFB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
|
|
1119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhaS5wcm92aWRlcnMub3BlbmFpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfb3BlbmFpX2FjY291bnQvc21hcnRhaS5wcm92aWRlcnMub3BlbmFpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtGQUFrRjtBQUNsRixPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLGlDQUFpQyxFQUNqQyxzQkFBc0IsRUFDdEIsb0NBQW9DLEVBQ3BDLHVDQUF1QyxFQUN2Qyw2Q0FBNkMsRUFDN0MsaUNBQWlDLEVBQ2pDLDJCQUEyQixFQUMzQiw2QkFBNkIsRUFDN0IsOEJBQThCLEVBQzlCLHdCQUF3QixHQUN6QixNQUFNLDhDQUE4QyxDQUFDO0FBQ3RELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBMEJoRyxNQUFNLDRCQUE0QixHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3BELE1BQU0sMkJBQTJCLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDbkQsTUFBTSx5QkFBeUIsR0FBRyxNQUFNLENBQUM7QUFDekMsTUFBTSx5QkFBeUIsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUNqRCxNQUFNLG1CQUFtQixHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQzVDLE1BQU0sNkJBQTZCLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQztBQUNqRCxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztBQUNqQyxNQUFNLDJCQUEyQixHQUFHLEdBQUcsQ0FBQztBQUN4QyxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQztBQUNoQyxNQUFNLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztBQUNoQyxNQUFNLG9CQUFvQixHQUFHLFNBQVMsQ0FBQztBQUN2QyxNQUFNLGtCQUFrQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDckMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUM7QUFDckMsTUFBTSxvQkFBb0IsR0FBRyw0Q0FBNEMsQ0FBQztBQWdDMUUsTUFBTSxjQUFlLFNBQVEsS0FBSztJQUNKO0lBQTVCLFlBQTRCLE1BQWM7UUFDeEMsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFEYixXQUFNLEdBQU4sTUFBTSxDQUFRO0lBRTFDLENBQUM7Q0FDRjtBQUVELE1BQU0sMEJBQTJCLFNBQVEsS0FBSztJQUNoQjtJQUE1QixZQUE0QixNQUFjO1FBQ3hDLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBRG5CLFdBQU0sR0FBTixNQUFNLENBQVE7SUFFMUMsQ0FBQztDQUNGO0FBRUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxRQUFpQixFQUF1QyxFQUFFLENBQzFFLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxRQUFRLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVoRixNQUFNLGFBQWEsR0FBRyxDQUNwQixRQUFpQixFQUNqQixlQUF1QixFQUN2QixhQUFhLEdBQUcsS0FBSyxFQUNiLEVBQUU7SUFDVixJQUNFLE9BQU8sUUFBUSxLQUFLLFFBQVE7V0FDekIsQ0FBQyxDQUFDLGFBQWEsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztXQUN6QyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEdBQUcsZUFBZSxFQUNoRSxDQUFDO1FBQ0QsTUFBTSwwQkFBMEIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRyxDQUN0QixVQUE0QyxFQUM1QyxtQkFBMkIsRUFDZixFQUFFO0lBQ2QsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsSUFBSSxtQkFBbUIsQ0FBQztJQUM5RCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxJQUFJLFNBQVMsR0FBRyx5QkFBeUIsRUFBRSxDQUFDO1FBQy9GLE1BQU0sMEJBQTBCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBQ0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUN6QyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDckIsTUFBTSxlQUFlLEdBQUcsR0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZELFVBQVUsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPO1FBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ25ELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDNUIsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDckIsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2QsT0FBTztRQUNMLFVBQVU7UUFDVixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU07UUFDekIsSUFBSSxRQUFRO1lBQ1YsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUNELE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDWixZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEIsVUFBVSxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDbkUsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLHNCQUFzQixHQUFHLENBSzdCLFFBQWlCLEVBQ2pCLFlBQXdCLEVBQ3hCLFdBQXNCLEVBQ2EsRUFBRTtJQUNyQyxJQUFJLFlBQVksQ0FBQyxRQUFRO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDNUMsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU87UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNsRCxJQUFJLFFBQVEsWUFBWSxvQkFBb0IsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFNBQVM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM5RixJQUFJLFFBQVEsWUFBWSxvQkFBb0IsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFNBQVM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM5RixPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRyxDQUFDLGFBQTRDLEVBQTJCLEVBQUU7SUFDNUYsSUFDRSxhQUFhLENBQUMsSUFBSSxLQUFLLGNBQWM7V0FDbEMsYUFBYSxDQUFDLFVBQVUsS0FBSyxRQUFRO1dBQ3JDLENBQUMsYUFBYSxDQUFDLFdBQVc7V0FDMUIsQ0FBQyxhQUFhLENBQUMsWUFBWTtXQUMzQixDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQ3pCLENBQUM7UUFDRCxNQUFNLDBCQUEwQixDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDO0lBQ2QsSUFBSSxDQUFDO1FBQ0gsU0FBUyxHQUFHLDJCQUEyQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsTUFBTSwwQkFBMEIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxPQUFPO1FBQ0wsV0FBVyxFQUFFLGFBQWEsQ0FBQyxXQUFXO1FBQ3RDLFlBQVksRUFBRSxhQUFhLENBQUMsWUFBWTtRQUN4QyxPQUFPLEVBQUUsYUFBYSxDQUFDLE9BQU87UUFDOUIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxnQkFBZ0I7UUFDckMsU0FBUztLQUNWLENBQUM7QUFDSixDQUFDLENBQUM7QUFRRixNQUFNLFlBQVksR0FBRyxDQUNuQixhQUEyQyxFQUNqQixFQUFFO0lBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1FBQUUsTUFBTSwwQkFBMEIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3JGLElBQUksYUFBYSxDQUFDLElBQUksS0FBSyxjQUFjLEVBQUUsQ0FBQztRQUMxQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0MsT0FBTztZQUNMLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVztZQUNsQyxTQUFTLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0I7WUFDL0MsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyx1QkFBdUI7U0FDOUQsQ0FBQztJQUNKLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUM7SUFDN0IsSUFDRSxNQUFNLENBQUMsSUFBSSxLQUFLLGVBQWU7V0FDNUIsTUFBTSxDQUFDLFVBQVUsS0FBSyxRQUFRO1dBQzlCLE9BQU8sTUFBTSxDQUFDLFdBQVcsS0FBSyxRQUFRO1dBQ3RDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUM7V0FDL0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsR0FBRyxrQkFBa0I7V0FDMUUsT0FBTyxNQUFNLENBQUMsU0FBUyxLQUFLLFFBQVE7V0FDcEMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztXQUM3QixPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxHQUFHLGtCQUFrQjtXQUN4RSxPQUFPLE1BQU0sQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTO1dBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFDbkMsQ0FBQztRQUNELE1BQU0sMEJBQTBCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBQ0QsT0FBTztRQUNMLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztRQUMvQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0IsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLGdCQUFnQjtLQUMxQyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxZQUFZLEdBQUcsQ0FDbkIsWUFBcUMsRUFDckMsZ0JBQXlCLEVBQ00sRUFBRTtJQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU87UUFBRSxNQUFNLDBCQUEwQixDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDbEYsT0FBTztRQUNMLElBQUksRUFBRSxjQUFjO1FBQ3BCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFdBQVcsRUFBRSxZQUFZLENBQUMsV0FBVztRQUNyQyxZQUFZLEVBQUUsWUFBWSxDQUFDLFlBQVk7UUFDdkMsT0FBTyxFQUFFLFlBQVksQ0FBQyxPQUFPO1FBQzdCLEdBQUcsQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztLQUMvRSxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxTQUFTLEdBQUcsQ0FDaEIsYUFBNEMsRUFDWixFQUFFO0lBQ2xDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM3QyxPQUFPO1FBQ0wsVUFBVSxFQUFFLFFBQVE7UUFDcEIsUUFBUSxFQUFFLGNBQWM7UUFDeEIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCO1lBQ3RDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFO1lBQ3JELENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxHQUFHLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMxRSxHQUFHLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUM5RixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUN2QixTQUF5QixFQUN6QixVQUErQixFQUNoQixFQUFFO0lBQ2pCLE1BQU0sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN6QixPQUFPLEVBQUUsQ0FBQztZQUNWLE9BQU87UUFDVCxDQUFDO1FBQ0QsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQzNCLElBQUssUUFBOEMsRUFBRSxJQUFJLEtBQUssd0JBQXdCLEVBQUUsQ0FBQztnQkFDdkYsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO2lCQUFNLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxLQUFLLE1BQU0sTUFBTSxJQUFJLFVBQVU7WUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLHlCQUF5QixHQUFHLEtBQUssRUFDckMsUUFBMkIsRUFDM0IsU0FBc0IsRUFDVyxFQUFFO0lBQ25DLElBQ0UsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDO1dBQ2xCLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsRUFDbkYsQ0FBQztRQUNELE1BQU0sMEJBQTBCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBQ0QsSUFBSSxTQUFrQixDQUFDO0lBQ3ZCLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDckQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQzFDLElBQUksYUFBOEYsQ0FBQztRQUNuRyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxlQUF1QyxDQUFDO1FBQzVDLElBQUksY0FBc0QsQ0FBQztRQUMzRCxNQUFNLFFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN2RCxlQUFlLEdBQUcsT0FBTyxDQUFDO1lBQzFCLGNBQWMsR0FBRyxNQUFNLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxLQUFLLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUNwRyxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQWMsRUFBUSxFQUFFO2dCQUM3QyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtvQkFDekIsY0FBYyxFQUFFLDJCQUEyQjtvQkFDM0MsZUFBZSxFQUFFLFVBQVU7b0JBQzNCLHdCQUF3QixFQUFFLFNBQVM7aUJBQ3BDLENBQUMsQ0FBQztnQkFDSCxRQUFRLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7WUFDbEQsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDbEMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUMvQixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FDM0MsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUNsRSxDQUFDLENBQ0YsQ0FBQztZQUNGLElBQ0UsT0FBTzttQkFDSixDQUFDLGFBQWE7bUJBQ2QsT0FBTyxDQUFDLE1BQU0sS0FBSyxLQUFLO21CQUN4QixJQUFJLEtBQUssYUFBYSxJQUFJLEVBQUU7bUJBQzVCLE9BQU8sVUFBVSxLQUFLLFFBQVE7bUJBQzlCLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsR0FBRyx1QkFBdUI7bUJBQ3ZFLFdBQVcsR0FBRyxrQkFBa0IsRUFDbkMsQ0FBQztnQkFDRCxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQyxPQUFPO1lBQ1QsQ0FBQztZQUNELE1BQU0sV0FBVyxHQUFHLFVBQVUsSUFBSSxHQUFHLFVBQVUsRUFBRSxDQUFDO1lBQ2xELElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQztZQUMzQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxRQUFRLEdBQUcsaUNBQWlDLENBQUMsV0FBVyxFQUFFO29CQUM5RCxhQUFhLEVBQUUsYUFBYSxDQUFDLEtBQUs7b0JBQ2xDLG1CQUFtQixFQUFFLGFBQWEsQ0FBQyxXQUFXO2lCQUMvQyxDQUFDLENBQUM7Z0JBQ0gsY0FBYyxHQUFHLGVBQWUsSUFBSSxRQUFRLENBQUM7WUFDL0MsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25CLE9BQU87WUFDVCxDQUFDO1lBQ0QsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNmLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUN0QixjQUFjLEVBQUUsMkJBQTJCO2dCQUMzQyxlQUFlLEVBQUUsVUFBVTtnQkFDM0Isd0JBQXdCLEVBQUUsU0FBUzthQUNwQyxDQUFDLENBQUM7WUFDSCxRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWM7Z0JBQ3pCLENBQUMsQ0FBQyw2REFBNkQ7Z0JBQy9ELENBQUMsQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1lBQzFELGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLGtCQUE2QyxDQUFDO1FBQ2xELE1BQU0sa0JBQWtCLEdBQUcsR0FBa0IsRUFBRTtZQUM3QyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDeEIsa0JBQWtCLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO29CQUM3RCxrQkFBa0IsR0FBRyxTQUFTLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELE9BQU8sa0JBQWtCLENBQUM7UUFDNUIsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQUcsR0FBUyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDYixPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNmLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3hELENBQUM7WUFDRCxLQUFLLGtCQUFrQixFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQztRQUNGLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDMUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxRQUFlLEVBQVEsRUFBRTtvQkFDeEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7b0JBQ2hELE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDbkIsQ0FBQyxDQUFDO2dCQUNGLE1BQU0sV0FBVyxHQUFHLEdBQVMsRUFBRTtvQkFDN0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDO2dCQUNaLENBQUMsQ0FBQztnQkFDRixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQ3RDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxTQUFTLENBQUMsT0FBTztnQkFBRSxPQUFPLEVBQUUsQ0FBQztZQUNqQyxPQUFPO2dCQUNMLElBQUk7Z0JBQ0osZUFBZSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxFQUFFO29CQUMxQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUM7b0JBQ2pDLE9BQU8sUUFBUSxDQUFDO2dCQUNsQixDQUFDO2dCQUNELEtBQUssRUFBRSxLQUFLLElBQUksRUFBRTtvQkFDaEIsU0FBUyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDaEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUNiLE9BQU8sR0FBRyxJQUFJLENBQUM7d0JBQ2YsY0FBYyxDQUFDLDBCQUEwQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztvQkFDL0QsQ0FBQztvQkFDRCxNQUFNLGtCQUFrQixFQUFFLENBQUM7Z0JBQzdCLENBQUM7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sUUFBUSxFQUFFLENBQUM7WUFDbEIsU0FBUyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNoRCxNQUFNLGtCQUFrQixFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2xELFNBQVMsR0FBRyxRQUFRLENBQUM7WUFDckIsTUFBTSxJQUFJLEdBQUksUUFBa0MsQ0FBQyxJQUFJLENBQUM7WUFDdEQsSUFBSSxJQUFJLEtBQUssWUFBWSxJQUFJLEtBQUssS0FBSyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQUUsTUFBTTtRQUNwRSxDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sMEJBQTBCLENBQzdCLFNBQStDLEVBQUUsSUFBSSxLQUFLLFlBQVk7UUFDckUsQ0FBQyxDQUFDLFlBQVk7UUFDZCxDQUFDLENBQUMsY0FBYyxDQUNuQixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSx5QkFBeUI7SUFNWDtJQUVDO0lBQ0E7SUFDQTtJQVRILFVBQVUsQ0FBdUM7SUFDekQsWUFBWSxDQUFpQjtJQUM3QixJQUFJLEdBQUcsS0FBSyxDQUFDO0lBRXJCLFlBQ2tCLE1BQTZDLEVBQzdELGFBQW1ELEVBQ2xDLGVBQWdDLEVBQ2hDLE9BQTRCLEVBQzVCLE1BQWtCO1FBSm5CLFdBQU0sR0FBTixNQUFNLENBQXVDO1FBRTVDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUM1QixXQUFNLEdBQU4sTUFBTSxDQUFZO1FBRW5DLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNqRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNqQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsQ0FBQztvQkFBUyxDQUFDO2dCQUNULElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxLQUFLLENBQUMsTUFBTTtRQUNqQixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsT0FBTztZQUFFLE9BQU8sVUFBVSxDQUFDO1FBQ3hFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLElBQUksSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDaEQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUMvQixNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUM7WUFDSCxNQUFNLFlBQVksQ0FBQztRQUNyQixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1lBQzlCLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELE1BQU0seUJBQXlCLEdBQUcsQ0FDaEMsVUFBNEMsRUFFVCxFQUFFO0lBQ3JDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLElBQUksb0JBQW9CLENBQUM7SUFDdkQsSUFDRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1dBQ3pCLEtBQUssR0FBRyxDQUFDO1dBQ1QsS0FBSyxHQUFHLG9CQUFvQjtXQUM1QixDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssU0FBUztlQUM5QixDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7bUJBQzdCLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztXQUMvRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEtBQUssU0FBUyxJQUFJLE9BQU8sVUFBVSxDQUFDLGFBQWEsS0FBSyxTQUFTLENBQUMsRUFDNUYsQ0FBQztRQUNELE1BQU0sMEJBQTBCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBQ0QsT0FBTyxFQUFFLEdBQUcsVUFBVSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLGFBQWEsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUNwRixDQUFDLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQzNCLFdBQXFCLEVBQ3JCLFNBQXNCLEVBQ3RCLGVBQXVCLEVBQ0wsRUFBRTtJQUNwQixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzNELElBQUksUUFBUSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsZUFBZSxDQUFDLEVBQUUsQ0FBQztRQUN6RixNQUFNLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sMEJBQTBCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO1FBQUUsTUFBTSwwQkFBMEIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzFFLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDNUMsTUFBTSxNQUFNLEdBQWlCLEVBQUUsQ0FBQztJQUNoQyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7SUFDYixJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDdEIsTUFBTSxPQUFPLEdBQUcsR0FBUyxFQUFFO1FBQ3pCLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUM7SUFDRixTQUFTLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdELElBQUksU0FBUyxDQUFDLE9BQU87UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNqQyxJQUFJLENBQUM7UUFDSCxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ1osSUFBSSxTQUFTLENBQUMsT0FBTztnQkFBRSxNQUFNLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUMsSUFBSSxTQUFTLENBQUMsT0FBTztnQkFBRSxNQUFNLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ25FLElBQUksSUFBSTtnQkFBRSxNQUFNO1lBQ2hCLElBQUksSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQ3pCLElBQUksSUFBSSxHQUFHLGVBQWUsRUFBRSxDQUFDO2dCQUMzQixNQUFNLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzdDLE1BQU0sMEJBQTBCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNyRCxDQUFDO1lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBQ0QsU0FBUyxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO1lBQVMsQ0FBQztRQUNULFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFNBQVM7WUFBRSxLQUFLLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUQsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDZixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBWSxDQUFDO0lBQ3RELENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxNQUFNLDBCQUEwQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDckQsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHLENBQ3JCLFFBQWlCLEVBQ2pCLFVBQWtCLEVBQ2xCLFVBQVUsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQzVCLEVBQUU7SUFDVixJQUNFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7V0FDM0IsUUFBbUIsR0FBRyxVQUFVO1dBQ2hDLFFBQW1CLEdBQUcsVUFBVSxFQUNwQyxDQUFDO1FBQ0QsTUFBTSwwQkFBMEIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRCxPQUFPLFFBQWtCLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxzQkFBc0IsR0FBRyxDQUM3QixRQUFpQixFQUNnQixFQUFFO0lBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQUUsTUFBTSwwQkFBMEIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzVFLE9BQU87UUFDTCxXQUFXLEVBQUUsY0FBYyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQztRQUMxRCxrQkFBa0IsRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUNwRSxpQkFBaUIsRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztRQUNsRSxRQUFRLEVBQUUsY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0tBQy9DLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLHVCQUF1QixHQUFHLENBQUMsUUFBaUIsRUFBb0MsRUFBRTtJQUN0RixJQUNFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztXQUNoQixPQUFPLFFBQVEsQ0FBQyxPQUFPLEtBQUssU0FBUztXQUNyQyxPQUFPLFFBQVEsQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUM5QyxDQUFDO1FBQ0QsTUFBTSwwQkFBMEIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO1FBQ3pCLFlBQVksRUFBRSxRQUFRLENBQUMsYUFBYTtRQUNwQyxHQUFHLENBQUMsUUFBUSxDQUFDLGNBQWMsS0FBSyxJQUFJLElBQUksUUFBUSxDQUFDLGNBQWMsS0FBSyxTQUFTO1lBQzNFLENBQUMsQ0FBQyxFQUFFO1lBQ0osQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1FBQ3ZFLEdBQUcsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTO1lBQy9FLENBQUMsQ0FBQyxFQUFFO1lBQ0osQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7S0FDNUUsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sd0JBQXdCLEdBQUcsQ0FDL0IsUUFBaUIsRUFDakIsYUFBcUIsRUFDYyxFQUFFO0lBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQUUsTUFBTSwwQkFBMEIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzVFLE1BQU0sdUJBQXVCLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixJQUFJLEVBQUUsQ0FBQztJQUN0RSxJQUNFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztXQUNwQyx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsMkJBQTJCLEVBQy9ELENBQUM7UUFDRCxNQUFNLDBCQUEwQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE1BQU0sb0JBQW9CLEdBQUcsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7UUFDcEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFBRSxNQUFNLDBCQUEwQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUUsT0FBTztZQUNMLFNBQVMsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUM7WUFDbEQsY0FBYyxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQztZQUM1RCxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsS0FBSyxJQUFJLElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxTQUFTO2dCQUNuRSxDQUFDLENBQUMsRUFBRTtnQkFDSixDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsdUJBQXVCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7U0FDakUsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxvQkFBd0MsQ0FBQztJQUM3QyxJQUFJLFFBQVEsQ0FBQyx1QkFBdUIsS0FBSyxJQUFJLElBQUksUUFBUSxDQUFDLHVCQUF1QixLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ2hHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQztZQUNoRCxNQUFNLDBCQUEwQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELG9CQUFvQixHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFDRCxJQUFJLG1DQUF1RCxDQUFDO0lBQzVELElBQUksUUFBUSxDQUFDLHdCQUF3QixLQUFLLElBQUksSUFBSSxRQUFRLENBQUMsd0JBQXdCLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDbEcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDO1lBQ2pELE1BQU0sMEJBQTBCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsbUNBQW1DLEdBQUcsY0FBYyxDQUNsRCxRQUFRLENBQUMsd0JBQXdCLENBQUMsZUFBZSxFQUNqRCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPO1FBQ0wsVUFBVSxFQUFFLFFBQVE7UUFDcEIsSUFBSSxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQztRQUM1QyxVQUFVLEVBQUUsYUFBYTtRQUN6QixHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsS0FBSyxJQUFJLElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxTQUFTO1lBQ25FLENBQUMsQ0FBQyxFQUFFO1lBQ0osQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ2hFLG9CQUFvQjtRQUNwQixHQUFHLENBQUMsb0JBQW9CLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztRQUN2RSxHQUFHLENBQUMsbUNBQW1DLEtBQUssU0FBUztZQUNuRCxDQUFDLENBQUMsRUFBRTtZQUNKLENBQUMsQ0FBQyxFQUFFLG1DQUFtQyxFQUFFLENBQUM7S0FDN0MsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsUUFBaUIsRUFBMkIsRUFBRTtJQUNwRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztRQUM1RyxNQUFNLDBCQUEwQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDbkMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLEVBQUU7UUFDNUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFBRSxNQUFNLDBCQUEwQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUUsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEQsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUFFLE1BQU0sMEJBQTBCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM5RSxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFDdkMsSUFBSSxVQUFVLEtBQUssTUFBTSxJQUFJLFVBQVUsS0FBSyxNQUFNLElBQUksVUFBVSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQzVFLE1BQU0sMEJBQTBCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUFFLE1BQU0sMEJBQTBCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNqRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsSUFBSSxRQUFRLENBQUMsMEJBQTBCLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQzNHLE1BQU0sMEJBQTBCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsMEJBQTBCLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDN0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7Z0JBQUUsTUFBTSwwQkFBMEIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzdFLE9BQU87Z0JBQ0wsTUFBTSxFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQztnQkFDNUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7YUFDOUQsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xFLElBQ0UsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztlQUN2QixVQUFVLENBQUMsTUFBTSxHQUFHLENBQUM7ZUFDckIsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLE1BQU0sSUFBSSxLQUFLLEtBQUssT0FBTyxJQUFJLEtBQUssS0FBSyxPQUFPLENBQUM7ZUFDdEYsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxNQUFNLEVBQ2pELENBQUM7WUFDRCxNQUFNLDBCQUEwQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDbkUsTUFBTSwwQkFBMEIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQUUsTUFBTSwwQkFBMEIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzNFLE9BQU87Z0JBQ0wsRUFBRSxFQUFFLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztnQkFDbEMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztnQkFDdEMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7YUFDNUQsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzlGLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsc0JBQXNCLENBQUM7WUFDL0QsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxzQkFBc0I7WUFDdEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxhQUFhLEVBQUUscUJBQXFCLEtBQUssUUFBUTtlQUMvRSxhQUFhLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDO2VBQ2pFLE9BQU8sU0FBUyxFQUFFLG1CQUFtQixLQUFLLFFBQVE7ZUFDbEQsT0FBTyxTQUFTLENBQUMsb0JBQW9CLEtBQUssUUFBUTtlQUNsRCxPQUFPLFNBQVMsQ0FBQyxxQkFBcUIsS0FBSyxRQUFRLENBQUM7UUFDekQsT0FBTztZQUNMLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBa0I7WUFDckMsV0FBVztZQUNYLEtBQUssRUFBRTtnQkFDTCxVQUFVLEVBQUUsUUFBaUI7Z0JBQzdCLE9BQU87Z0JBQ1AsU0FBUyxFQUFFLE9BQU87Z0JBQ2xCLFdBQVcsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUM7Z0JBQ3RELFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVyxLQUFLLElBQUksSUFBSSxRQUFRLENBQUMsV0FBVyxLQUFLLFNBQVM7b0JBQzlFLENBQUMsQ0FBQyxFQUFFO29CQUNKLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO2dCQUNuRCxNQUFNLEVBQUUsVUFBVSxLQUFLLE1BQU07Z0JBQzdCLGdCQUFnQjtnQkFDaEIsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLHVCQUF1QixLQUFLLElBQUk7dUJBQzVELFFBQVEsQ0FBQyx1QkFBdUIsS0FBSyxTQUFTO29CQUNqRCxDQUFDLENBQUMsTUFBTTtvQkFDUixDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUM7Z0JBQ3hELGVBQWUsRUFBRSxVQUFzRDtnQkFDdkUsbUJBQW1CO2dCQUNuQixZQUFZO2dCQUNaLEdBQUcsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEtBQUssSUFBSSxJQUFJLFFBQVEsQ0FBQyxvQkFBb0IsS0FBSyxTQUFTO29CQUN2RixDQUFDLENBQUMsRUFBRTtvQkFDSixDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzlFLFNBQVMsRUFBRSxLQUFLO2FBQ2pCO1NBQ0YsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLElBQUksWUFBWTtRQUFFLFlBQVksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ2hELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEIsVUFBVSxHQUErQjtRQUN2RCxVQUFVLEVBQUUsUUFBUTtRQUNwQixXQUFXLEVBQUUsUUFBUTtRQUNyQixVQUFVLEVBQUUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDO1FBQ2pDLGNBQWMsRUFBRSxJQUFJO0tBQ3JCLENBQUM7SUFFZSxtQkFBbUIsQ0FBZTtJQUNsQyxVQUFVLENBQVM7SUFDbkIsR0FBRyxDQUFhO0lBQ2hCLFNBQVMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQyxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQTZCLENBQUM7SUFDL0MsVUFBVSxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO0lBQ3hDLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBMEIsQ0FBQztJQUN2RCxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2YsY0FBYyxDQUFpQjtJQUV2QyxZQUFZLGFBQTRDLEVBQUU7UUFDeEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQjtZQUFFLE1BQU0sMEJBQTBCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLElBQUksaUNBQWlDLENBQUM7UUFDN0UsSUFBSSxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxNQUFNLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTyxXQUFXLENBQUMsU0FBc0I7UUFDeEMsT0FBTztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsbUJBQW1CO1lBQy9CLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLFVBQVUsRUFBRSxJQUFJO1NBQ1IsQ0FBQztJQUNiLENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxTQUFpQjtRQUM3QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1RCxNQUFNLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ3JFLENBQUM7SUFFTSxpQkFBaUIsQ0FDdEIsYUFBeUM7UUFFekMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksYUFBYSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNwQyxJQUFJLGFBQWEsQ0FBQyxVQUFVLEtBQUssUUFBUSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNuRSxNQUFNLDBCQUEwQixDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDekQsQ0FBQztZQUNELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxVQUFVLENBQ3JCLFVBQXdDO1FBRXhDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEUsTUFBTSwwQkFBMEIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFDRCxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxJQUFJLEtBQUssU0FBUztZQUNwRCxDQUFDLENBQUMsNEJBQTRCO1lBQzlCLENBQUMsQ0FBQywyQkFBMkIsQ0FBQztRQUNoQyxJQUNFLFVBQVUsQ0FBQyxJQUFJLEtBQUssUUFBUTtlQUN6QixDQUFDLFVBQVUsQ0FBQyxTQUFTLElBQUksZ0JBQWdCLENBQUMsR0FBRywyQkFBMkIsRUFDM0UsQ0FBQztZQUNELE1BQU0sMEJBQTBCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckMsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsSUFBSSxnQkFBZ0IsQ0FBQztRQUMzRCxJQUFJLGNBQWtELENBQUM7UUFDdkQsTUFBTSxPQUFPLEdBQUcsS0FBSyxJQUFtQixFQUFFO1lBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3hDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixNQUFNLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNoQyxDQUFDLENBQUM7UUFDRixJQUFJLENBQUM7WUFDSCxJQUFJLE1BQTZDLENBQUM7WUFDbEQsSUFBSSxVQUFnRCxDQUFDO1lBQ3JELElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDakMsTUFBTSxVQUFVLEdBQUcsTUFBTSw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUNsRyxNQUFNLEdBQUc7b0JBQ1AsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsZUFBZSxFQUFFLFVBQVUsQ0FBQyxlQUFlO29CQUMzQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7aUJBQzlCLENBQUM7Z0JBQ0YsVUFBVSxHQUFHLG9DQUFvQyxDQUFDLFVBQVUsRUFBRTtvQkFDNUQsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7b0JBQzNDLFNBQVM7aUJBQ1YsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO29CQUNwQixNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUN4RCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixjQUFjLEdBQUcsTUFBTSx5QkFBeUIsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3ZGLE1BQU0sYUFBYSxHQUFHLE1BQU0sdUNBQXVDLENBQUM7b0JBQ2xFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDO29CQUMzQyxXQUFXLEVBQUUsb0JBQW9CLGNBQWMsQ0FBQyxJQUFJLGdCQUFnQjtvQkFDcEUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2lCQUM1QixDQUFDLENBQUM7Z0JBQ0gsTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUM3RCxVQUFVLEdBQUcsY0FBYyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFO29CQUNwRixNQUFNLFFBQVEsR0FBRyxpQ0FBaUMsQ0FBQyxXQUFXLEVBQUU7d0JBQzlELGFBQWEsRUFBRSxhQUFhLENBQUMsS0FBSzt3QkFDbEMsbUJBQW1CLEVBQUUsYUFBYSxDQUFDLFdBQVc7cUJBQy9DLENBQUMsQ0FBQztvQkFDSCxJQUFJLGVBQWUsSUFBSSxRQUFRLEVBQUUsQ0FBQzt3QkFDaEMsTUFBTSwwQkFBMEIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO29CQUNyRCxDQUFDO29CQUNELE1BQU0sU0FBUyxHQUFHLE1BQU0sNkNBQTZDLENBQ25FLFFBQVEsQ0FBQyxpQkFBaUIsRUFDMUI7d0JBQ0UsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7d0JBQzNDLFdBQVcsRUFBRSxhQUFhLENBQUMsV0FBVzt3QkFDdEMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxZQUFZO3FCQUN6QyxDQUNGLENBQUM7b0JBQ0YsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDeEQsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxPQUFPO2dCQUFFLE1BQU0sMEJBQTBCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDaEYsTUFBTSxNQUFNLEdBQUcsSUFBSSx5QkFBeUIsQ0FDMUMsTUFBTSxFQUNOLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDNUIsSUFBSSxTQUFTLENBQUMsUUFBUTtvQkFBRSxNQUFNLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNwRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTztvQkFBRSxNQUFNLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUM1RSxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsT0FBTztvQkFBRSxNQUFNLDBCQUEwQixDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3ZGLElBQUksUUFBUSxZQUFZLG9CQUFvQjtvQkFBRSxNQUFNLFFBQVEsQ0FBQztnQkFDN0QsTUFBTSwwQkFBMEIsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNuRCxDQUFDLENBQUMsRUFDRixlQUFlLEVBQ2YsT0FBTyxFQUNQLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUNsQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekIsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUFDLE9BQU8sUUFBUSxFQUFFLENBQUM7WUFDbEIsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLE1BQU0sT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksU0FBUyxDQUFDLFFBQVE7Z0JBQUUsTUFBTSwwQkFBMEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTztnQkFBRSxNQUFNLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzVFLElBQUksUUFBUSxZQUFZLG9CQUFvQjtnQkFBRSxNQUFNLFFBQVEsQ0FBQztZQUM3RCxNQUFNLDBCQUEwQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLGlCQUFpQixDQUM1QixhQUE0QyxFQUM1QyxhQUErQyxFQUFFO1FBRWpELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDM0IsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDLFVBQVUsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1FBQzdFLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQyxNQUFNLE9BQU8sR0FBa0M7Z0JBQzdDLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFVBQVUsRUFBRSxhQUFhO2dCQUN6QixTQUFTLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUN6RCxjQUFjLEVBQUUsU0FBUzthQUMxQixDQUFDO1lBQ0YsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hCLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxJQUFJLGFBQXlDLENBQUM7UUFDOUMsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksT0FBaUMsQ0FBQztRQUN0QyxJQUFJLENBQUM7WUFDSCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7aUJBQ25ELE1BQU0sQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQztpQkFDMUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZCLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ25CLE1BQU0sVUFBVSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3pDLElBQUksY0FBK0IsQ0FBQztnQkFDcEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGFBQWEsRUFBRTtvQkFDM0QsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO2lCQUMxQixDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtvQkFDZCxjQUFjLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztvQkFDOUIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxjQUFjLEVBQUUsQ0FBQzt3QkFDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3BDLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsY0FBYyxHQUFHO29CQUNmLFVBQVU7b0JBQ1YsT0FBTztvQkFDUCxPQUFPLEVBQUUsQ0FBQztvQkFDVixPQUFPLEVBQUUsS0FBSztpQkFDZixDQUFDO2dCQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztnQkFDL0MsYUFBYSxHQUFHLGNBQWMsQ0FBQztZQUNqQyxDQUFDO1lBQ0QsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hCLGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDckIsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQWdDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ3JFLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ3RCLE9BQU8sRUFBRSxLQUFLO29CQUNkLFVBQVUsRUFBRSxhQUFhO29CQUN6QixTQUFTLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTO29CQUN6RCxjQUFjLEVBQUUsZ0JBQWdCO2lCQUNqQyxDQUFDLENBQUM7Z0JBQ0gsYUFBYSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDMUUsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUM5RCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLE9BQU87Z0JBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDeEUsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hCLElBQUksYUFBYSxJQUFJLGFBQWE7Z0JBQUUsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzVELElBQUksYUFBYSxJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDNUYsYUFBYSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsd0JBQXdCLENBQ3BDLGFBQTRDLEVBQzVDLFVBQTRDO1FBRTVDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6QyxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQztZQUNILE1BQU0sU0FBUyxHQUFHLE1BQU0sNkJBQTZCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDakcsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLFdBQVcsS0FBSyxLQUFLLENBQUMsV0FBVzttQkFDM0QsU0FBUyxDQUFDLFlBQVksS0FBSyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQ25ELElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3hDLE9BQU87b0JBQ0wsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsVUFBVSxFQUFFLGFBQWE7b0JBQ3pCLFNBQVMsRUFBRSxnQkFBZ0I7b0JBQzNCLGNBQWMsRUFBRSxnQkFBZ0I7aUJBQ2pDLENBQUM7WUFDSixDQUFDO1lBQ0QsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLGFBQWEsS0FBSyxTQUFTO2dCQUN4RCxDQUFDLENBQUMsQ0FBQztnQkFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDNUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pDLE1BQU0sYUFBYSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUMxRixXQUFXLEVBQUUsQ0FBQztZQUNqQixNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzFELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDdkUsQ0FBQztRQUFDLE9BQU8sUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTztnQkFDTCxPQUFPLEVBQUUsS0FBSztnQkFDZCxVQUFVLEVBQUUsYUFBYTtnQkFDekIsU0FBUyxFQUFFLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLENBQUM7Z0JBQ3hFLGNBQWMsRUFBRSxRQUFRLFlBQVksc0JBQXNCO29CQUN4RCxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsSUFBSSxnQkFBZ0I7b0JBQzdDLENBQUMsQ0FBQyxnQkFBZ0I7Z0JBQ3BCLEdBQUcsQ0FBQyxRQUFRLFlBQVksc0JBQXNCLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxTQUFTO29CQUM3RSxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRTtvQkFDckMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDUCxHQUFHLENBQUMsUUFBUSxZQUFZLHNCQUFzQixJQUFJLFFBQVEsQ0FBQyxZQUFZLEtBQUssU0FBUztvQkFDbkYsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxZQUFZLEVBQUU7b0JBQ3pDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDUixDQUFDO1FBQ0osQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxZQUFZLENBQ3hCLFNBQW1DLEVBQ25DLFNBQXNCO1FBRXRCLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDdEMsTUFBTSxHQUFHLEdBQUcsR0FBRyw2QkFBNkIsMEJBQTBCLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztRQUNqSCxJQUFJLFFBQWtCLENBQUM7UUFDdkIsSUFBSSxPQUFvQixDQUFDO1FBQ3pCLElBQUksQ0FBQztZQUNILE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pELE1BQU0sRUFBRSxLQUFLO2dCQUNiLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixNQUFNLEVBQUUsU0FBUztnQkFDakIsT0FBTyxFQUFFO29CQUNQLE1BQU0sRUFBRSxrQkFBa0I7b0JBQzFCLGFBQWEsRUFBRSxVQUFVLFNBQVMsQ0FBQyxXQUFXLEVBQUU7b0JBQ2hELEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDekQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNyRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7b0JBQzNCLE9BQU8sRUFBRSxvQkFBb0I7aUJBQzlCO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsS0FBSyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksU0FBUyxDQUFDLE9BQU87b0JBQUUsS0FBSyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqRixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQVEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3RELE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDOUQsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxTQUFTLENBQUMsT0FBTztvQkFBRSxPQUFPLEVBQUUsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztZQUNILFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsSUFBSSxTQUFTLENBQUMsT0FBTztnQkFBRSxNQUFNLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sMEJBQTBCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyRCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLE9BQU87Z0JBQUUsU0FBUyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqQixNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JELE1BQU0sSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFDRCxPQUFPLGNBQWMsQ0FBQyxNQUFNLGVBQWUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRU8sWUFBWSxDQUFDLFVBQTBCO1FBQzdDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNGLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUcsT0FBTyxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU8sWUFBWSxDQUFDLFNBQWlCO1FBQ3BDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDNUMsTUFBTSwwQkFBMEIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUNwRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQzthQUN6QixNQUFNLEVBQUUsQ0FBQztRQUNaLElBQUksU0FBeUIsQ0FBQztRQUM5QixJQUFJLE9BQWdCLENBQUM7UUFDckIsSUFBSSxDQUFDO1lBQ0gsU0FBUyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUN2RCxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFZLENBQUM7UUFDL0YsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE1BQU0sMEJBQTBCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsSUFBSSxTQUFTLENBQUMsVUFBVSxLQUFLLFdBQVcsQ0FBQyxVQUFVLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUMvRyxNQUFNLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELElBQ0UsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO2VBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQztlQUNqQyxPQUFPLENBQUMsT0FBTyxLQUFLLENBQUM7ZUFDckIsT0FBTyxDQUFDLGlCQUFpQixLQUFLLENBQUM7ZUFDL0IsT0FBTyxPQUFPLENBQUMsTUFBTSxLQUFLLFFBQVE7ZUFDbEMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztlQUMzQyxPQUFPLE9BQU8sQ0FBQyxhQUFhLEtBQUssU0FBUztlQUMxQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztlQUNwQyxPQUFPLENBQUMsTUFBaUIsR0FBRyxDQUFDLEVBQ2pDLENBQUM7WUFDRCxNQUFNLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELE9BQU8sT0FBb0MsQ0FBQztJQUM5QyxDQUFDO0lBRU0sS0FBSyxDQUFDLFVBQVUsQ0FDckIsYUFBMkMsRUFDM0MsYUFBK0MsRUFBRTtRQUVqRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sT0FBTyxHQUFHLHlCQUF5QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxPQUFPLEVBQUUseUJBQXlCLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDO1lBQ0gsSUFBSSxPQUFnQyxDQUFDO1lBQ3JDLElBQUksQ0FBQztnQkFDSCxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUQsQ0FBQztZQUFDLE9BQU8sUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxDQUFDLFFBQVEsWUFBWSxjQUFjLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLEdBQUc7b0JBQUUsTUFBTSxRQUFRLENBQUM7Z0JBQ3JGLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSw2QkFBNkIsRUFBRSxDQUFDO1lBQ3RFLENBQUM7WUFDRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVGLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3hHLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNmLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2pELElBQ0UsTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNO3VCQUNyQixNQUFNLENBQUMsYUFBYSxLQUFLLE9BQU8sQ0FBQyxhQUFhO3VCQUM5QyxNQUFNLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQ2xDLENBQUM7b0JBQ0QsTUFBTSwwQkFBMEIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUN2RCxDQUFDO2dCQUNELE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ3pCLENBQUM7WUFDRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlELE1BQU0sVUFBVSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQzFDLE1BQU0sVUFBVSxHQUFHLFVBQVUsR0FBRyxRQUFRLENBQUMsTUFBTTtnQkFDN0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDO29CQUNWLGlCQUFpQixFQUFFLENBQUM7b0JBQ3BCLE1BQU07b0JBQ04sYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO29CQUNwQyxNQUFNLEVBQUUsVUFBVTtpQkFDbkIsQ0FBQztnQkFDSixDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2QsT0FBTztnQkFDTCxPQUFPLEVBQUUsSUFBSTtnQkFDYixNQUFNO2dCQUNOLEdBQUcsQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUM7YUFDcEQsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksUUFBUSxZQUFZLG9CQUFvQixJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssa0JBQWtCLEVBQUUsQ0FBQztnQkFDckYsTUFBTSxRQUFRLENBQUM7WUFDakIsQ0FBQztZQUNELE9BQU87Z0JBQ0wsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsU0FBUyxFQUFFLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLENBQUM7YUFDNUUsQ0FBQztRQUNKLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM3QyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsc0JBQXNCLENBQ2xDLFNBQW1DLEVBQ25DLFNBQXNCO1FBRXRCLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDdEMsSUFBSSxRQUFrQixDQUFDO1FBQ3ZCLElBQUksT0FBb0IsQ0FBQztRQUN6QixJQUFJLENBQUM7WUFDSCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsb0JBQW9CLEVBQUU7Z0JBQ2xFLE1BQU0sRUFBRSxLQUFLO2dCQUNiLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixNQUFNLEVBQUUsU0FBUztnQkFDakIsT0FBTyxFQUFFO29CQUNQLE1BQU0sRUFBRSxrQkFBa0I7b0JBQzFCLGFBQWEsRUFBRSxVQUFVLFNBQVMsQ0FBQyxXQUFXLEVBQUU7b0JBQ2hELEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDekQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNyRSxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVU7aUJBQzlCO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsS0FBSyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksU0FBUyxDQUFDLE9BQU87b0JBQUUsS0FBSyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqRixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQVEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3RELE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDOUQsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxTQUFTLENBQUMsT0FBTztvQkFBRSxPQUFPLEVBQUUsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztZQUNILFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsSUFBSSxTQUFTLENBQUMsT0FBTztnQkFBRSxNQUFNLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sMEJBQTBCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyRCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLE9BQU87Z0JBQUUsU0FBUyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqQixNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JELE1BQU0sSUFBSSwwQkFBMEIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNELE9BQU8sd0JBQXdCLENBQzdCLE1BQU0sZUFBZSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsNkJBQTZCLENBQUMsRUFDekUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUN6QixDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxvQkFBb0IsQ0FDL0IsYUFBMkMsRUFDM0MsYUFBK0MsRUFBRTtRQUVqRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUseUJBQXlCLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDO2dCQUNILE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ3ZDLENBQUM7WUFBQyxPQUFPLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsQ0FBQyxRQUFRLFlBQVksMEJBQTBCLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO29CQUNqRixNQUFNLFFBQVEsQ0FBQztnQkFDakIsQ0FBQztnQkFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsNkJBQTZCLEVBQUUsQ0FBQztZQUN0RSxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTztnQkFDTCxPQUFPLEVBQUUsS0FBSztnQkFDZCxTQUFTLEVBQUUsc0JBQXNCLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSw0QkFBNEIsQ0FBQzthQUNyRixDQUFDO1FBQ0osQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDM0IsYUFBNEMsRUFDNUMsYUFBK0MsRUFBRTtRQUVqRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUseUJBQXlCLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDO1lBQ0gsTUFBTSx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFO2dCQUN6RCxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztnQkFDckMsYUFBYSxFQUFFLGVBQWU7YUFDL0IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE1BQU0sMEJBQTBCLENBQzlCLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQ3pGLENBQUM7UUFDSixDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDN0MsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQU87UUFDbEIsSUFBSSxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNwRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2pDLEtBQUssTUFBTSxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVU7Z0JBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNELE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM1RixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLGlCQUFpQixFQUFFLENBQUM7Z0JBQ2xFLE1BQU0sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoRSxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzNELE1BQU0sMEJBQTBCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQztnQkFBRSxNQUFNLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNMLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQztZQUNILE1BQU0sY0FBYyxDQUFDO1FBQ3ZCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7WUFDaEMsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import type { IOpenAiModelConnection } from '@modelprofile.com/flexharness-providers/openai';
|
|
2
|
-
import type { IOpenAiChatGptAuthCredentials } from './interfaces.js';
|
|
3
1
|
export * from './interfaces.js';
|
|
4
2
|
export * from './smartai.auth.openai.js';
|
|
3
|
+
export * from './smartai.connection.openai.js';
|
|
5
4
|
export * from './smartai.middleware.openai.js';
|
|
6
|
-
export declare const createOpenAiChatGptModelConnection: (credentials: IOpenAiChatGptAuthCredentials) => IOpenAiModelConnection;
|
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
import { createOpenAiChatGptProviderSettings } from './smartai.auth.openai.js';
|
|
2
|
-
import { createOpenAiChatGptInstructionsMiddleware } from './smartai.middleware.openai.js';
|
|
3
1
|
export * from './interfaces.js';
|
|
4
2
|
export * from './smartai.auth.openai.js';
|
|
3
|
+
export * from './smartai.connection.openai.js';
|
|
5
4
|
export * from './smartai.middleware.openai.js';
|
|
6
|
-
|
|
7
|
-
settings: createOpenAiChatGptProviderSettings(credentials),
|
|
8
|
-
middleware: createOpenAiChatGptInstructionsMiddleware(),
|
|
9
|
-
});
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19vcGVuYWlfYXV0aC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRSxPQUFPLEVBQUUseUNBQXlDLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxDQUFDLFdBQTBDLEVBQTBCLEVBQUUsQ0FBQyxDQUFDO0lBQ3pILFFBQVEsRUFBRSxtQ0FBbUMsQ0FBQyxXQUFXLENBQUM7SUFDMUQsVUFBVSxFQUFFLHlDQUF5QyxFQUFFO0NBQ3hELENBQUMsQ0FBQyJ9
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19vcGVuYWlfYXV0aC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGdDQUFnQyxDQUFDIn0=
|
|
@@ -12,9 +12,35 @@ export interface IOpenAiChatGptAuthCredentials {
|
|
|
12
12
|
refreshToken?: string;
|
|
13
13
|
idToken?: string;
|
|
14
14
|
accountId?: string;
|
|
15
|
+
/** Verified from the current access token when tokenInfo is not supplied. */
|
|
16
|
+
isFedrampAccount?: boolean;
|
|
15
17
|
tokenInfo?: IOpenAiChatGptTokenInfo;
|
|
16
18
|
originator?: string;
|
|
17
19
|
}
|
|
20
|
+
export interface IOpenAiChatGptAccessIdentity {
|
|
21
|
+
/** Exact workspace claim expected on every resolved access token. */
|
|
22
|
+
readonly accountId: string | undefined;
|
|
23
|
+
/** Exact residency claim expected on every resolved access token. */
|
|
24
|
+
readonly isFedrampAccount: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface IOpenAiChatGptAccessRequest {
|
|
27
|
+
/** The provider request signal. A resolver should pass it through to its authority. */
|
|
28
|
+
readonly signal: AbortSignal;
|
|
29
|
+
}
|
|
30
|
+
/** Access-only result. Refresh and ID tokens are not part of the request-time contract. */
|
|
31
|
+
export interface IOpenAiChatGptResolvedAccess {
|
|
32
|
+
readonly accessToken: string;
|
|
33
|
+
}
|
|
34
|
+
export interface IOpenAiChatGptDynamicModelConnectionOptions {
|
|
35
|
+
/** Pins the account and residency boundary for the lifetime of the connection. */
|
|
36
|
+
readonly expectedIdentity: IOpenAiChatGptAccessIdentity;
|
|
37
|
+
/** Stable provider originator header. Defaults to `smartai`. */
|
|
38
|
+
readonly originator?: string;
|
|
39
|
+
/** Resolves current access immediately before every provider network request. */
|
|
40
|
+
readonly resolveAccess: (request: IOpenAiChatGptAccessRequest) => Promise<IOpenAiChatGptResolvedAccess>;
|
|
41
|
+
/** Optional underlying transport. Defaults to the current global fetch. */
|
|
42
|
+
readonly fetch?: typeof fetch;
|
|
43
|
+
}
|
|
18
44
|
export interface IOpenAiChatGptTokenData extends IOpenAiChatGptAuthCredentials {
|
|
19
45
|
refreshToken: string;
|
|
20
46
|
tokenInfo: IOpenAiChatGptTokenInfo;
|
|
@@ -32,6 +58,8 @@ export interface IOpenAiChatGptAuthOptions {
|
|
|
32
58
|
/** Omit provider response bodies and enforce strict response/token bounds. Defaults to true. */
|
|
33
59
|
safeErrors?: boolean;
|
|
34
60
|
}
|
|
61
|
+
/** A failed refresh is replayable only when no request was handed to fetch. */
|
|
62
|
+
export type TOpenAiChatGptRequestOutcome = 'notSent' | 'outcomeUnknown';
|
|
35
63
|
export interface IOpenAiChatGptBrowserAuthorizationOptions extends IOpenAiChatGptAuthOptions {
|
|
36
64
|
redirectUri: string;
|
|
37
65
|
originator?: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IOpenAiChatGptAuthCredentials, IOpenAiChatGptAuthOptions, IOpenAiChatGptBrowserAuthorization, IOpenAiChatGptBrowserAuthorizationOptions, IOpenAiChatGptBrowserCallbackOptions, IOpenAiChatGptBrowserExchangeOptions, IOpenAiChatGptCompleteDeviceCodeOptions, IOpenAiChatGptDeviceCode, IOpenAiChatGptDeviceCodePollOptions, IOpenAiChatGptRevokeOptions, IOpenAiChatGptTokenData, IOpenAiChatGptTokenInfo, TOpenAiChatGptBrowserCallback } from './interfaces.js';
|
|
1
|
+
import type { IOpenAiChatGptAuthCredentials, IOpenAiChatGptAuthOptions, IOpenAiChatGptBrowserAuthorization, IOpenAiChatGptBrowserAuthorizationOptions, IOpenAiChatGptBrowserCallbackOptions, IOpenAiChatGptBrowserExchangeOptions, IOpenAiChatGptCompleteDeviceCodeOptions, IOpenAiChatGptDeviceCode, IOpenAiChatGptDeviceCodePollOptions, IOpenAiChatGptRevokeOptions, IOpenAiChatGptTokenData, IOpenAiChatGptTokenInfo, TOpenAiChatGptBrowserCallback, TOpenAiChatGptRequestOutcome } from './interfaces.js';
|
|
2
2
|
export declare const OPENAI_CHATGPT_AUTH_ISSUER = "https://auth.openai.com";
|
|
3
3
|
export declare const OPENAI_CHATGPT_CLIENT_ID = "app_EMoamEEZ73f0CkXaXp7hrann";
|
|
4
4
|
export declare const OPENAI_CHATGPT_CODEX_BASE_URL = "https://chatgpt.com/backend-api/codex";
|
|
@@ -6,9 +6,13 @@ export declare const OPENAI_CHATGPT_DEFAULT_ORIGINATOR = "smartai";
|
|
|
6
6
|
export declare class OpenAiChatGptAuthError extends Error {
|
|
7
7
|
status?: number;
|
|
8
8
|
body?: string;
|
|
9
|
+
requestOutcome?: TOpenAiChatGptRequestOutcome;
|
|
10
|
+
retryAfterMs?: number;
|
|
9
11
|
constructor(message: string, options?: {
|
|
10
12
|
status?: number;
|
|
11
13
|
body?: string;
|
|
14
|
+
requestOutcome?: TOpenAiChatGptRequestOutcome;
|
|
15
|
+
retryAfterMs?: number;
|
|
12
16
|
});
|
|
13
17
|
}
|
|
14
18
|
export interface IOpenAiChatGptAuthorizationCode {
|