@myinterview/widget-react 1.0.57-ada6b21 → 1.0.58-beta-dc3e080
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/cjs/index.js +979 -721
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interfaces/microphoneInterface.d.ts +1 -0
- package/dist/cjs/utils/sentry.utils.d.ts +2 -0
- package/dist/esm/index.js +979 -721
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces/microphoneInterface.d.ts +1 -0
- package/dist/esm/utils/sentry.utils.d.ts +2 -0
- package/package.json +1 -1
package/dist/esm/index.js
CHANGED
|
@@ -1218,7 +1218,7 @@ function l$1(d,e){var t={};for(var n in d)Object.prototype.hasOwnProperty.call(d
|
|
|
1218
1218
|
Copyright (c) 2018 Jed Watson.
|
|
1219
1219
|
Licensed under the MIT License (MIT), see
|
|
1220
1220
|
http://jedwatson.github.io/classnames
|
|
1221
|
-
*/m=y,function(){var d={}.hasOwnProperty;function e(){for(var t=[],n=0;n<arguments.length;n++){var r=arguments[n];if(r){var o=typeof r;if("string"===o||"number"===o)t.push(r);else if(Array.isArray(r)){if(r.length){var a=e.apply(null,r);a&&t.push(a);}}else if("object"===o){if(r.toString!==Object.prototype.toString&&!r.toString.toString().includes("[native code]")){t.push(r.toString());continue}for(var i in r)d.call(r,i)&&r[i]&&t.push(i);}}}return t.join(" ")}m.exports?(e.default=e,m.exports=e):window.classNames=e;}();var v$1=y.exports;const C=React__default.forwardRef(((e,t)=>{var{children:n="BUTTON",size:r="medium",
|
|
1221
|
+
*/m=y,function(){var d={}.hasOwnProperty;function e(){for(var t=[],n=0;n<arguments.length;n++){var r=arguments[n];if(r){var o=typeof r;if("string"===o||"number"===o)t.push(r);else if(Array.isArray(r)){if(r.length){var a=e.apply(null,r);a&&t.push(a);}}else if("object"===o){if(r.toString!==Object.prototype.toString&&!r.toString.toString().includes("[native code]")){t.push(r.toString());continue}for(var i in r)d.call(r,i)&&r[i]&&t.push(i);}}}return t.join(" ")}m.exports?(e.default=e,m.exports=e):window.classNames=e;}();var v$1=y.exports;const C=React__default.forwardRef(((e,t)=>{var{children:n="BUTTON",size:r="medium",color:o="white",backgroundColor:a="primary"}=e,i=l$1(e,["children","size","color","backgroundColor"]);const c=v$1({[i.className||""]:!0,"myinterview-button":!0,[`color--${o}`]:!0,[`background-color--${a}`]:!0,[`myinterview-button--${r}`]:r});return React__default.createElement("button",Object.assign({type:"button"},i,{ref:t,className:c}),n)}));var b,E={exports:{}},S={};var x$1,M={};
|
|
1222
1222
|
/**
|
|
1223
1223
|
* @license React
|
|
1224
1224
|
* react-is.development.js
|
|
@@ -7630,7 +7630,7 @@ function useMachine(getMachine) {
|
|
|
7630
7630
|
? State.create(options.state)
|
|
7631
7631
|
: service.machine.initialState);
|
|
7632
7632
|
}
|
|
7633
|
-
return service.
|
|
7633
|
+
return service.getSnapshot();
|
|
7634
7634
|
}, [service]);
|
|
7635
7635
|
var isEqual = useCallback(function (prevState, nextState) {
|
|
7636
7636
|
if (service.status === InterpreterStatus.NotStarted) {
|
|
@@ -7662,6 +7662,42 @@ function useMachine(getMachine) {
|
|
|
7662
7662
|
return [storeSnapshot, service.send, service];
|
|
7663
7663
|
}
|
|
7664
7664
|
|
|
7665
|
+
(undefined && undefined.__read) || function (o, n) {
|
|
7666
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
7667
|
+
if (!m) return o;
|
|
7668
|
+
var i = m.call(o), r, ar = [], e;
|
|
7669
|
+
try {
|
|
7670
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
7671
|
+
}
|
|
7672
|
+
catch (error) { e = { error: error }; }
|
|
7673
|
+
finally {
|
|
7674
|
+
try {
|
|
7675
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
7676
|
+
}
|
|
7677
|
+
finally { if (e) throw e.error; }
|
|
7678
|
+
}
|
|
7679
|
+
return ar;
|
|
7680
|
+
};
|
|
7681
|
+
(undefined && undefined.__values) || function(o) {
|
|
7682
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
7683
|
+
if (m) return m.call(o);
|
|
7684
|
+
if (o && typeof o.length === "number") return {
|
|
7685
|
+
next: function () {
|
|
7686
|
+
if (o && i >= o.length) o = void 0;
|
|
7687
|
+
return { value: o && o[i++], done: !o };
|
|
7688
|
+
}
|
|
7689
|
+
};
|
|
7690
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
7691
|
+
};
|
|
7692
|
+
function getServiceSnapshot(service) {
|
|
7693
|
+
return service.status !== 0
|
|
7694
|
+
? service.getSnapshot()
|
|
7695
|
+
: service.machine.initialState;
|
|
7696
|
+
}
|
|
7697
|
+
function isService(actor) {
|
|
7698
|
+
return 'state' in actor && 'machine' in actor;
|
|
7699
|
+
}
|
|
7700
|
+
|
|
7665
7701
|
function isActorWithState(actorRef) {
|
|
7666
7702
|
return 'state' in actorRef;
|
|
7667
7703
|
}
|
|
@@ -7670,7 +7706,9 @@ function isDeferredActor(actorRef) {
|
|
|
7670
7706
|
}
|
|
7671
7707
|
function defaultGetSnapshot(actorRef) {
|
|
7672
7708
|
return 'getSnapshot' in actorRef
|
|
7673
|
-
? actorRef
|
|
7709
|
+
? isService(actorRef)
|
|
7710
|
+
? getServiceSnapshot(actorRef)
|
|
7711
|
+
: actorRef.getSnapshot()
|
|
7674
7712
|
: isActorWithState(actorRef)
|
|
7675
7713
|
? actorRef.state
|
|
7676
7714
|
: undefined;
|
|
@@ -7719,34 +7757,6 @@ function useActor(actorRef, getSnapshot) {
|
|
|
7719
7757
|
return [storeSnapshot, send];
|
|
7720
7758
|
}
|
|
7721
7759
|
|
|
7722
|
-
(undefined && undefined.__read) || function (o, n) {
|
|
7723
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
7724
|
-
if (!m) return o;
|
|
7725
|
-
var i = m.call(o), r, ar = [], e;
|
|
7726
|
-
try {
|
|
7727
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
7728
|
-
}
|
|
7729
|
-
catch (error) { e = { error: error }; }
|
|
7730
|
-
finally {
|
|
7731
|
-
try {
|
|
7732
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
7733
|
-
}
|
|
7734
|
-
finally { if (e) throw e.error; }
|
|
7735
|
-
}
|
|
7736
|
-
return ar;
|
|
7737
|
-
};
|
|
7738
|
-
(undefined && undefined.__values) || function(o) {
|
|
7739
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
7740
|
-
if (m) return m.call(o);
|
|
7741
|
-
if (o && typeof o.length === "number") return {
|
|
7742
|
-
next: function () {
|
|
7743
|
-
if (o && i >= o.length) o = void 0;
|
|
7744
|
-
return { value: o && o[i++], done: !o };
|
|
7745
|
-
}
|
|
7746
|
-
};
|
|
7747
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
7748
|
-
};
|
|
7749
|
-
|
|
7750
7760
|
var SPEED_TEST_LEVEL;
|
|
7751
7761
|
(function (SPEED_TEST_LEVEL) {
|
|
7752
7762
|
SPEED_TEST_LEVEL[SPEED_TEST_LEVEL["LOW"] = 0] = "LOW";
|
|
@@ -15521,7 +15531,7 @@ function truncate(str, max = 0) {
|
|
|
15521
15531
|
if (typeof str !== 'string' || max === 0) {
|
|
15522
15532
|
return str;
|
|
15523
15533
|
}
|
|
15524
|
-
return str.length <= max ? str : `${str.
|
|
15534
|
+
return str.length <= max ? str : `${str.slice(0, max)}...`;
|
|
15525
15535
|
}
|
|
15526
15536
|
|
|
15527
15537
|
/**
|
|
@@ -15688,9 +15698,7 @@ function urlEncode(object) {
|
|
|
15688
15698
|
* @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor
|
|
15689
15699
|
* an Error.
|
|
15690
15700
|
*/
|
|
15691
|
-
function convertToPlainObject(
|
|
15692
|
-
value,
|
|
15693
|
-
)
|
|
15701
|
+
function convertToPlainObject(value)
|
|
15694
15702
|
|
|
15695
15703
|
{
|
|
15696
15704
|
if (isError(value)) {
|
|
@@ -15883,6 +15891,14 @@ function createStackParser(...parsers) {
|
|
|
15883
15891
|
const frames = [];
|
|
15884
15892
|
|
|
15885
15893
|
for (const line of stack.split('\n').slice(skipFirst)) {
|
|
15894
|
+
// Ignore lines over 1kb as they are unlikely to be stack frames.
|
|
15895
|
+
// Many of the regular expressions use backtracking which results in run time that increases exponentially with
|
|
15896
|
+
// input size. Huge strings can result in hangs/Denial of Service:
|
|
15897
|
+
// https://github.com/getsentry/sentry-javascript/issues/2286
|
|
15898
|
+
if (line.length > 1024) {
|
|
15899
|
+
continue;
|
|
15900
|
+
}
|
|
15901
|
+
|
|
15886
15902
|
// https://github.com/getsentry/sentry-javascript/issues/5459
|
|
15887
15903
|
// Remove webpack (error: *) wrappers
|
|
15888
15904
|
const cleanedLine = line.replace(/\(error: (.*)\)/, '$1');
|
|
@@ -17608,6 +17624,9 @@ function forEachEnvelopeItem(
|
|
|
17608
17624
|
});
|
|
17609
17625
|
}
|
|
17610
17626
|
|
|
17627
|
+
/**
|
|
17628
|
+
* Encode a string to UTF8.
|
|
17629
|
+
*/
|
|
17611
17630
|
function encodeUTF8(input, textEncoder) {
|
|
17612
17631
|
const utf8 = textEncoder || new TextEncoder();
|
|
17613
17632
|
return utf8.encode(input);
|
|
@@ -17786,7 +17805,11 @@ function parseRetryAfterHeader(header, now = Date.now()) {
|
|
|
17786
17805
|
}
|
|
17787
17806
|
|
|
17788
17807
|
/**
|
|
17789
|
-
* Gets the time that given category is disabled until for rate limiting
|
|
17808
|
+
* Gets the time that the given category is disabled until for rate limiting.
|
|
17809
|
+
* In case no category-specific limit is set but a general rate limit across all categories is active,
|
|
17810
|
+
* that time is returned.
|
|
17811
|
+
*
|
|
17812
|
+
* @return the time in ms that the category is disabled until or 0 if there's no active rate limit.
|
|
17790
17813
|
*/
|
|
17791
17814
|
function disabledUntil(limits, category) {
|
|
17792
17815
|
return limits[category] || limits.all || 0;
|
|
@@ -17801,7 +17824,8 @@ function isRateLimited(limits, category, now = Date.now()) {
|
|
|
17801
17824
|
|
|
17802
17825
|
/**
|
|
17803
17826
|
* Update ratelimits from incoming headers.
|
|
17804
|
-
*
|
|
17827
|
+
*
|
|
17828
|
+
* @return the updated RateLimits object.
|
|
17805
17829
|
*/
|
|
17806
17830
|
function updateRateLimits(
|
|
17807
17831
|
limits,
|
|
@@ -18717,7 +18741,7 @@ class Hub {
|
|
|
18717
18741
|
*/
|
|
18718
18742
|
captureEvent(event, hint) {
|
|
18719
18743
|
const eventId = hint && hint.event_id ? hint.event_id : uuid4();
|
|
18720
|
-
if (event.type
|
|
18744
|
+
if (!event.type) {
|
|
18721
18745
|
this._lastEventId = eventId;
|
|
18722
18746
|
}
|
|
18723
18747
|
|
|
@@ -18742,7 +18766,6 @@ class Hub {
|
|
|
18742
18766
|
|
|
18743
18767
|
if (!scope || !client) return;
|
|
18744
18768
|
|
|
18745
|
-
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
18746
18769
|
const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =
|
|
18747
18770
|
(client.getOptions && client.getOptions()) || {};
|
|
18748
18771
|
|
|
@@ -19236,7 +19259,15 @@ function createEventEnvelope(
|
|
|
19236
19259
|
tunnel,
|
|
19237
19260
|
) {
|
|
19238
19261
|
const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);
|
|
19239
|
-
|
|
19262
|
+
|
|
19263
|
+
/*
|
|
19264
|
+
Note: Due to TS, event.type may be `replay_event`, theoretically.
|
|
19265
|
+
In practice, we never call `createEventEnvelope` with `replay_event` type,
|
|
19266
|
+
and we'd have to adjut a looot of types to make this work properly.
|
|
19267
|
+
We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)
|
|
19268
|
+
So the safe choice is to really guard against the replay_event type here.
|
|
19269
|
+
*/
|
|
19270
|
+
const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';
|
|
19240
19271
|
|
|
19241
19272
|
enhanceEventWithSdkInfo(event, metadata && metadata.sdk);
|
|
19242
19273
|
|
|
@@ -19264,18 +19295,23 @@ function setupIntegrations(integrations) {
|
|
|
19264
19295
|
const integrationIndex = {};
|
|
19265
19296
|
|
|
19266
19297
|
integrations.forEach(integration => {
|
|
19267
|
-
|
|
19268
|
-
|
|
19269
|
-
if (installedIntegrations.indexOf(integration.name) === -1) {
|
|
19270
|
-
integration.setupOnce(addGlobalEventProcessor, getCurrentHub);
|
|
19271
|
-
installedIntegrations.push(integration.name);
|
|
19272
|
-
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Integration installed: ${integration.name}`);
|
|
19273
|
-
}
|
|
19298
|
+
setupIntegration(integration, integrationIndex);
|
|
19274
19299
|
});
|
|
19275
19300
|
|
|
19276
19301
|
return integrationIndex;
|
|
19277
19302
|
}
|
|
19278
19303
|
|
|
19304
|
+
/** Setup a single integration. */
|
|
19305
|
+
function setupIntegration(integration, integrationIndex) {
|
|
19306
|
+
integrationIndex[integration.name] = integration;
|
|
19307
|
+
|
|
19308
|
+
if (installedIntegrations.indexOf(integration.name) === -1) {
|
|
19309
|
+
integration.setupOnce(addGlobalEventProcessor, getCurrentHub);
|
|
19310
|
+
installedIntegrations.push(integration.name);
|
|
19311
|
+
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Integration installed: ${integration.name}`);
|
|
19312
|
+
}
|
|
19313
|
+
}
|
|
19314
|
+
|
|
19279
19315
|
/**
|
|
19280
19316
|
* Adds common information to events.
|
|
19281
19317
|
*
|
|
@@ -19709,6 +19745,13 @@ class BaseClient {
|
|
|
19709
19745
|
}
|
|
19710
19746
|
}
|
|
19711
19747
|
|
|
19748
|
+
/**
|
|
19749
|
+
* @inheritDoc
|
|
19750
|
+
*/
|
|
19751
|
+
addIntegration(integration) {
|
|
19752
|
+
setupIntegration(integration, this._integrations);
|
|
19753
|
+
}
|
|
19754
|
+
|
|
19712
19755
|
/**
|
|
19713
19756
|
* @inheritDoc
|
|
19714
19757
|
*/
|
|
@@ -20100,7 +20143,9 @@ const DEFAULT_TRANSPORT_BUFFER_SIZE = 30;
|
|
|
20100
20143
|
function createTransport(
|
|
20101
20144
|
options,
|
|
20102
20145
|
makeRequest,
|
|
20103
|
-
buffer = makePromiseBuffer(
|
|
20146
|
+
buffer = makePromiseBuffer(
|
|
20147
|
+
options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,
|
|
20148
|
+
),
|
|
20104
20149
|
) {
|
|
20105
20150
|
let rateLimits = {};
|
|
20106
20151
|
|
|
@@ -20145,10 +20190,11 @@ function createTransport(
|
|
|
20145
20190
|
}
|
|
20146
20191
|
|
|
20147
20192
|
rateLimits = updateRateLimits(rateLimits, response);
|
|
20193
|
+
return response;
|
|
20148
20194
|
},
|
|
20149
20195
|
error => {
|
|
20150
|
-
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Failed while sending event:', error);
|
|
20151
20196
|
recordEnvelopeLoss('network_error');
|
|
20197
|
+
throw error;
|
|
20152
20198
|
},
|
|
20153
20199
|
);
|
|
20154
20200
|
|
|
@@ -20180,7 +20226,7 @@ function getEventForEnvelopeItem(item, type) {
|
|
|
20180
20226
|
return Array.isArray(item) ? (item )[1] : undefined;
|
|
20181
20227
|
}
|
|
20182
20228
|
|
|
20183
|
-
const SDK_VERSION = '7.
|
|
20229
|
+
const SDK_VERSION = '7.31.0';
|
|
20184
20230
|
|
|
20185
20231
|
let originalFunctionToString;
|
|
20186
20232
|
|
|
@@ -22132,7 +22178,7 @@ class HttpContext {constructor() { HttpContext.prototype.__init.call(this); }
|
|
|
22132
22178
|
...(referrer && { Referer: referrer }),
|
|
22133
22179
|
...(userAgent && { 'User-Agent': userAgent }),
|
|
22134
22180
|
};
|
|
22135
|
-
const request = { ...(url && { url }), headers };
|
|
22181
|
+
const request = { ...event.request, ...(url && { url }), headers };
|
|
22136
22182
|
|
|
22137
22183
|
return { ...event, request };
|
|
22138
22184
|
}
|
|
@@ -22396,6 +22442,9 @@ const DEFAULT_FLUSH_MIN_DELAY = 5000;
|
|
|
22396
22442
|
const DEFAULT_FLUSH_MAX_DELAY = 15000;
|
|
22397
22443
|
const INITIAL_FLUSH_DELAY = 5000;
|
|
22398
22444
|
|
|
22445
|
+
const RETRY_BASE_INTERVAL = 5000;
|
|
22446
|
+
const RETRY_MAX_COUNT = 3;
|
|
22447
|
+
|
|
22399
22448
|
/*! *****************************************************************************
|
|
22400
22449
|
Copyright (c) Microsoft Corporation.
|
|
22401
22450
|
|
|
@@ -29402,6 +29451,9 @@ var fdt = new u8(32);
|
|
|
29402
29451
|
for (var i = 0; i < 32; ++i)
|
|
29403
29452
|
fdt[i] = 5;
|
|
29404
29453
|
|
|
29454
|
+
/**
|
|
29455
|
+
* Create a breadcrumb for a replay.
|
|
29456
|
+
*/
|
|
29405
29457
|
function createBreadcrumb(
|
|
29406
29458
|
breadcrumb,
|
|
29407
29459
|
) {
|
|
@@ -29412,6 +29464,9 @@ function createBreadcrumb(
|
|
|
29412
29464
|
};
|
|
29413
29465
|
}
|
|
29414
29466
|
|
|
29467
|
+
/**
|
|
29468
|
+
* An event handler to react to DOM events.
|
|
29469
|
+
*/
|
|
29415
29470
|
function handleDom(handlerData) {
|
|
29416
29471
|
// Taken from https://github.com/getsentry/sentry-javascript/blob/master/packages/browser/src/integrations/breadcrumbs.ts#L112
|
|
29417
29472
|
let target;
|
|
@@ -29454,6 +29509,9 @@ function isEventWithTarget(event) {
|
|
|
29454
29509
|
|
|
29455
29510
|
let _LAST_BREADCRUMB = null;
|
|
29456
29511
|
|
|
29512
|
+
/**
|
|
29513
|
+
* An event handler to handle scope changes.
|
|
29514
|
+
*/
|
|
29457
29515
|
function handleScope(scope) {
|
|
29458
29516
|
const newBreadcrumb = scope.getLastBreadcrumb();
|
|
29459
29517
|
|
|
@@ -29476,6 +29534,9 @@ function handleScope(scope) {
|
|
|
29476
29534
|
return createBreadcrumb(newBreadcrumb);
|
|
29477
29535
|
}
|
|
29478
29536
|
|
|
29537
|
+
/**
|
|
29538
|
+
* An event handler to react to breadcrumbs.
|
|
29539
|
+
*/
|
|
29479
29540
|
function breadcrumbHandler(type, handlerData) {
|
|
29480
29541
|
if (type === 'scope') {
|
|
29481
29542
|
return handleScope(handlerData );
|
|
@@ -29487,15 +29548,19 @@ function breadcrumbHandler(type, handlerData) {
|
|
|
29487
29548
|
/**
|
|
29488
29549
|
* Add an event to the event buffer
|
|
29489
29550
|
*/
|
|
29490
|
-
function addEvent(
|
|
29551
|
+
async function addEvent(
|
|
29552
|
+
replay,
|
|
29553
|
+
event,
|
|
29554
|
+
isCheckout,
|
|
29555
|
+
) {
|
|
29491
29556
|
if (!replay.eventBuffer) {
|
|
29492
29557
|
// This implies that `_isEnabled` is false
|
|
29493
|
-
return;
|
|
29558
|
+
return null;
|
|
29494
29559
|
}
|
|
29495
29560
|
|
|
29496
29561
|
if (replay.isPaused()) {
|
|
29497
29562
|
// Do not add to event buffer when recording is paused
|
|
29498
|
-
return;
|
|
29563
|
+
return null;
|
|
29499
29564
|
}
|
|
29500
29565
|
|
|
29501
29566
|
// TODO: sadness -- we will want to normalize timestamps to be in ms -
|
|
@@ -29508,7 +29573,7 @@ function addEvent(replay, event, isCheckout) {
|
|
|
29508
29573
|
// comes back to trigger a new session. The performance entries rely on
|
|
29509
29574
|
// `performance.timeOrigin`, which is when the page first opened.
|
|
29510
29575
|
if (timestampInMs + SESSION_IDLE_DURATION < new Date().getTime()) {
|
|
29511
|
-
return;
|
|
29576
|
+
return null;
|
|
29512
29577
|
}
|
|
29513
29578
|
|
|
29514
29579
|
// Only record earliest event if a new session was created, otherwise it
|
|
@@ -29518,14 +29583,17 @@ function addEvent(replay, event, isCheckout) {
|
|
|
29518
29583
|
replay.getContext().earliestEvent = timestampInMs;
|
|
29519
29584
|
}
|
|
29520
29585
|
|
|
29521
|
-
replay.eventBuffer.addEvent(event, isCheckout);
|
|
29586
|
+
return replay.eventBuffer.addEvent(event, isCheckout);
|
|
29522
29587
|
}
|
|
29523
29588
|
|
|
29524
29589
|
/**
|
|
29525
29590
|
* Create a "span" for each performance entry. The parent transaction is `this.replayEvent`.
|
|
29526
29591
|
*/
|
|
29527
|
-
function createPerformanceSpans(
|
|
29528
|
-
|
|
29592
|
+
function createPerformanceSpans(
|
|
29593
|
+
replay,
|
|
29594
|
+
entries,
|
|
29595
|
+
) {
|
|
29596
|
+
return entries.map(({ type, start, end, name, data }) =>
|
|
29529
29597
|
addEvent(replay, {
|
|
29530
29598
|
type: EventType.Custom,
|
|
29531
29599
|
timestamp: start,
|
|
@@ -29612,6 +29680,9 @@ function handleFetchSpanListener(replay) {
|
|
|
29612
29680
|
};
|
|
29613
29681
|
}
|
|
29614
29682
|
|
|
29683
|
+
/**
|
|
29684
|
+
* Returns true if we think the given event is an error originating inside of rrweb.
|
|
29685
|
+
*/
|
|
29615
29686
|
function isRrwebError(event) {
|
|
29616
29687
|
if (event.type || !_optionalChain([event, 'access', _ => _.exception, 'optionalAccess', _2 => _2.values, 'optionalAccess', _3 => _3.length])) {
|
|
29617
29688
|
return false;
|
|
@@ -29633,10 +29704,7 @@ function isRrwebError(event) {
|
|
|
29633
29704
|
function handleGlobalEventListener(replay) {
|
|
29634
29705
|
return (event) => {
|
|
29635
29706
|
// Do not apply replayId to the root event
|
|
29636
|
-
if (
|
|
29637
|
-
// @ts-ignore new event type
|
|
29638
|
-
event.type === REPLAY_EVENT_NAME
|
|
29639
|
-
) {
|
|
29707
|
+
if (event.type === REPLAY_EVENT_NAME) {
|
|
29640
29708
|
// Replays have separate set of breadcrumbs, do not include breadcrumbs
|
|
29641
29709
|
// from core SDK
|
|
29642
29710
|
delete event.breadcrumbs;
|
|
@@ -29652,7 +29720,7 @@ function handleGlobalEventListener(replay) {
|
|
|
29652
29720
|
|
|
29653
29721
|
// Only tag transactions with replayId if not waiting for an error
|
|
29654
29722
|
// @ts-ignore private
|
|
29655
|
-
if (event.type
|
|
29723
|
+
if (!event.type || replay.recordingMode === 'session') {
|
|
29656
29724
|
event.tags = { ...event.tags, replayId: _optionalChain([replay, 'access', _5 => _5.session, 'optionalAccess', _6 => _6.id]) };
|
|
29657
29725
|
}
|
|
29658
29726
|
|
|
@@ -29956,122 +30024,14 @@ function setupPerformanceObserver(replay) {
|
|
|
29956
30024
|
return performanceObserver;
|
|
29957
30025
|
}
|
|
29958
30026
|
|
|
29959
|
-
// Map entryType -> function to normalize data for event
|
|
29960
|
-
// @ts-ignore TODO: entry type does not fit the create* functions entry type
|
|
29961
|
-
const ENTRY_TYPES = {
|
|
29962
|
-
// @ts-ignore TODO: entry type does not fit the create* functions entry type
|
|
29963
|
-
resource: createResourceEntry,
|
|
29964
|
-
paint: createPaintEntry,
|
|
29965
|
-
// @ts-ignore TODO: entry type does not fit the create* functions entry type
|
|
29966
|
-
navigation: createNavigationEntry,
|
|
29967
|
-
// @ts-ignore TODO: entry type does not fit the create* functions entry type
|
|
29968
|
-
['largest-contentful-paint']: createLargestContentfulPaint,
|
|
29969
|
-
};
|
|
29970
|
-
|
|
29971
|
-
function createPerformanceEntries(entries) {
|
|
29972
|
-
return entries.map(createPerformanceEntry).filter(Boolean) ;
|
|
29973
|
-
}
|
|
29974
|
-
|
|
29975
|
-
function createPerformanceEntry(entry) {
|
|
29976
|
-
if (ENTRY_TYPES[entry.entryType] === undefined) {
|
|
29977
|
-
return null;
|
|
29978
|
-
}
|
|
29979
|
-
|
|
29980
|
-
return ENTRY_TYPES[entry.entryType](entry);
|
|
29981
|
-
}
|
|
29982
|
-
|
|
29983
|
-
function getAbsoluteTime(time) {
|
|
29984
|
-
// browserPerformanceTimeOrigin can be undefined if `performance` or
|
|
29985
|
-
// `performance.now` doesn't exist, but this is already checked by this integration
|
|
29986
|
-
return ((browserPerformanceTimeOrigin || WINDOW.performance.timeOrigin) + time) / 1000;
|
|
29987
|
-
}
|
|
29988
|
-
|
|
29989
|
-
// TODO: type definition!
|
|
29990
|
-
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
29991
|
-
function createPaintEntry(entry) {
|
|
29992
|
-
const { duration, entryType, name, startTime } = entry;
|
|
29993
|
-
|
|
29994
|
-
const start = getAbsoluteTime(startTime);
|
|
29995
|
-
return {
|
|
29996
|
-
type: entryType,
|
|
29997
|
-
name,
|
|
29998
|
-
start,
|
|
29999
|
-
end: start + duration,
|
|
30000
|
-
};
|
|
30001
|
-
}
|
|
30002
|
-
|
|
30003
|
-
// TODO: type definition!
|
|
30004
|
-
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
30005
|
-
function createNavigationEntry(entry) {
|
|
30006
|
-
// TODO: There looks to be some more interesting bits in here (domComplete, domContentLoaded)
|
|
30007
|
-
const { entryType, name, duration, domComplete, startTime, transferSize, type } = entry;
|
|
30008
|
-
|
|
30009
|
-
// Ignore entries with no duration, they do not seem to be useful and cause dupes
|
|
30010
|
-
if (duration === 0) {
|
|
30011
|
-
return null;
|
|
30012
|
-
}
|
|
30013
|
-
|
|
30014
|
-
return {
|
|
30015
|
-
type: `${entryType}.${type}`,
|
|
30016
|
-
start: getAbsoluteTime(startTime),
|
|
30017
|
-
end: getAbsoluteTime(domComplete),
|
|
30018
|
-
name,
|
|
30019
|
-
data: {
|
|
30020
|
-
size: transferSize,
|
|
30021
|
-
duration,
|
|
30022
|
-
},
|
|
30023
|
-
};
|
|
30024
|
-
}
|
|
30025
|
-
|
|
30026
|
-
// TODO: type definition!
|
|
30027
|
-
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
30028
|
-
function createResourceEntry(entry) {
|
|
30029
|
-
const { entryType, initiatorType, name, responseEnd, startTime, encodedBodySize, transferSize } = entry;
|
|
30030
|
-
|
|
30031
|
-
// Core SDK handles these
|
|
30032
|
-
if (['fetch', 'xmlhttprequest'].includes(initiatorType)) {
|
|
30033
|
-
return null;
|
|
30034
|
-
}
|
|
30035
|
-
|
|
30036
|
-
return {
|
|
30037
|
-
type: `${entryType}.${initiatorType}`,
|
|
30038
|
-
start: getAbsoluteTime(startTime),
|
|
30039
|
-
end: getAbsoluteTime(responseEnd),
|
|
30040
|
-
name,
|
|
30041
|
-
data: {
|
|
30042
|
-
size: transferSize,
|
|
30043
|
-
encodedBodySize,
|
|
30044
|
-
},
|
|
30045
|
-
};
|
|
30046
|
-
}
|
|
30047
|
-
|
|
30048
|
-
// TODO: type definition!
|
|
30049
|
-
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
30050
|
-
function createLargestContentfulPaint(entry) {
|
|
30051
|
-
const { duration, entryType, startTime, size } = entry;
|
|
30052
|
-
|
|
30053
|
-
const start = getAbsoluteTime(startTime);
|
|
30054
|
-
|
|
30055
|
-
return {
|
|
30056
|
-
type: entryType,
|
|
30057
|
-
name: entryType,
|
|
30058
|
-
start,
|
|
30059
|
-
end: start + duration,
|
|
30060
|
-
data: {
|
|
30061
|
-
duration,
|
|
30062
|
-
size,
|
|
30063
|
-
// Not sure why this errors, Node should be correct (Argument of type 'Node' is not assignable to parameter of type 'INode')
|
|
30064
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
30065
|
-
nodeId: record.mirror.getId(entry.element ),
|
|
30066
|
-
},
|
|
30067
|
-
};
|
|
30068
|
-
}
|
|
30069
|
-
|
|
30070
30027
|
const workerString = `/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */
|
|
30071
|
-
function t(t){let e=t.length;for(;--e>=0;)t[e]=0}const e=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),a=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),i=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),n=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=new Array(576);t(s);const r=new Array(60);t(r);const o=new Array(512);t(o);const l=new Array(256);t(l);const h=new Array(29);t(h);const d=new Array(30);function _(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let f,c,u;function w(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}t(d);const m=t=>t<256?o[t]:o[256+(t>>>7)],b=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},g=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,b(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},p=(t,e,a)=>{g(t,a[2*e],a[2*e+1])},k=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},v=(t,e,a)=>{const i=new Array(16);let n,s,r=0;for(n=1;n<=15;n++)r=r+a[n-1]<<1,i[n]=r;for(s=0;s<=e;s++){let e=t[2*s+1];0!==e&&(t[2*s]=k(i[e]++,e))}},y=t=>{let e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.sym_next=t.matches=0},x=t=>{t.bi_valid>8?b(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},z=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]<t[s]||t[n]===t[s]&&i[e]<=i[a]},A=(t,e,a)=>{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n<t.heap_len&&z(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!z(e,i,t.heap[n],t.depth));)t.heap[a]=t.heap[n],a=n,n<<=1;t.heap[a]=i},E=(t,i,n)=>{let s,r,o,_,f=0;if(0!==t.sym_next)do{s=255&t.pending_buf[t.sym_buf+f++],s+=(255&t.pending_buf[t.sym_buf+f++])<<8,r=t.pending_buf[t.sym_buf+f++],0===s?p(t,r,i):(o=l[r],p(t,o+256+1,i),_=e[o],0!==_&&(r-=h[o],g(t,r,_)),s--,o=m(s),p(t,o,n),_=a[o],0!==_&&(s-=d[o],g(t,s,_)))}while(f<t.sym_next);p(t,256,i)},R=(t,e)=>{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,s=e.stat_desc.elems;let r,o,l,h=-1;for(t.heap_len=0,t.heap_max=573,r=0;r<s;r++)0!==a[2*r]?(t.heap[++t.heap_len]=h=r,t.depth[r]=0):a[2*r+1]=0;for(;t.heap_len<2;)l=t.heap[++t.heap_len]=h<2?++h:0,a[2*l]=1,t.depth[l]=0,t.opt_len--,n&&(t.static_len-=i[2*l+1]);for(e.max_code=h,r=t.heap_len>>1;r>=1;r--)A(t,a,r);l=s;do{r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],A(t,a,1),o=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=o,a[2*l]=a[2*r]+a[2*o],t.depth[l]=(t.depth[r]>=t.depth[o]?t.depth[r]:t.depth[o])+1,a[2*r+1]=a[2*o+1]=l,t.heap[1]=l++,A(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,s=e.stat_desc.has_stree,r=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,l=e.stat_desc.max_length;let h,d,_,f,c,u,w=0;for(f=0;f<=15;f++)t.bl_count[f]=0;for(a[2*t.heap[t.heap_max]+1]=0,h=t.heap_max+1;h<573;h++)d=t.heap[h],f=a[2*a[2*d+1]+1]+1,f>l&&(f=l,w++),a[2*d+1]=f,d>i||(t.bl_count[f]++,c=0,d>=o&&(c=r[d-o]),u=a[2*d],t.opt_len+=u*(f+c),s&&(t.static_len+=u*(n[2*d+1]+c)));if(0!==w){do{for(f=l-1;0===t.bl_count[f];)f--;t.bl_count[f]--,t.bl_count[f+1]+=2,t.bl_count[l]--,w-=2}while(w>0);for(f=l;0!==f;f--)for(d=t.bl_count[f];0!==d;)_=t.heap[--h],_>i||(a[2*_+1]!==f&&(t.opt_len+=(f-a[2*_+1])*a[2*_],a[2*_+1]=f),d--)}})(t,e),v(a,h,t.bl_count)},Z=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++o<l&&n===r||(o<h?t.bl_tree[2*n]+=o:0!==n?(n!==s&&t.bl_tree[2*n]++,t.bl_tree[32]++):o<=10?t.bl_tree[34]++:t.bl_tree[36]++,o=0,s=n,0===r?(l=138,h=3):n===r?(l=6,h=3):(l=7,h=4))},S=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++o<l&&n===r)){if(o<h)do{p(t,n,t.bl_tree)}while(0!=--o);else 0!==n?(n!==s&&(p(t,n,t.bl_tree),o--),p(t,16,t.bl_tree),g(t,o-3,2)):o<=10?(p(t,17,t.bl_tree),g(t,o-3,3)):(p(t,18,t.bl_tree),g(t,o-11,7));o=0,s=n,0===r?(l=138,h=3):n===r?(l=6,h=3):(l=7,h=4)}};let U=!1;const D=(t,e,a,i)=>{g(t,0+(i?1:0),3),x(t),b(t,a),b(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var O=(t,e,a,i)=>{let o,l,h=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),R(t,t.l_desc),R(t,t.d_desc),h=(t=>{let e;for(Z(t,t.dyn_ltree,t.l_desc.max_code),Z(t,t.dyn_dtree,t.d_desc.max_code),R(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*n[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),o=t.opt_len+3+7>>>3,l=t.static_len+3+7>>>3,l<=o&&(o=l)):o=l=a+5,a+4<=o&&-1!==e?D(t,e,a,i):4===t.strategy||l===o?(g(t,2+(i?1:0),3),E(t,s,r)):(g(t,4+(i?1:0),3),((t,e,a,i)=>{let s;for(g(t,e-257,5),g(t,a-1,5),g(t,i-4,4),s=0;s<i;s++)g(t,t.bl_tree[2*n[s]+1],3);S(t,t.dyn_ltree,e-1),S(t,t.dyn_dtree,a-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,h+1),E(t,t.dyn_ltree,t.dyn_dtree)),y(t),i&&x(t)},T={_tr_init:t=>{U||((()=>{let t,n,w,m,b;const g=new Array(16);for(w=0,m=0;m<28;m++)for(h[m]=w,t=0;t<1<<e[m];t++)l[w++]=m;for(l[w-1]=m,b=0,m=0;m<16;m++)for(d[m]=b,t=0;t<1<<a[m];t++)o[b++]=m;for(b>>=7;m<30;m++)for(d[m]=b<<7,t=0;t<1<<a[m]-7;t++)o[256+b++]=m;for(n=0;n<=15;n++)g[n]=0;for(t=0;t<=143;)s[2*t+1]=8,t++,g[8]++;for(;t<=255;)s[2*t+1]=9,t++,g[9]++;for(;t<=279;)s[2*t+1]=7,t++,g[7]++;for(;t<=287;)s[2*t+1]=8,t++,g[8]++;for(v(s,287,g),t=0;t<30;t++)r[2*t+1]=5,r[2*t]=k(t,5);f=new _(s,e,257,286,15),c=new _(r,a,0,30,15),u=new _(new Array(0),i,0,19,7)})(),U=!0),t.l_desc=new w(t.dyn_ltree,f),t.d_desc=new w(t.dyn_dtree,c),t.bl_desc=new w(t.bl_tree,u),t.bi_buf=0,t.bi_valid=0,y(t)},_tr_stored_block:D,_tr_flush_block:O,_tr_tally:(t,e,a)=>(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=a,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(l[a]+256+1)]++,t.dyn_dtree[2*m(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{g(t,2,3),p(t,256,s),(t=>{16===t.bi_valid?(b(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var N=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const F=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var L=(t,e,a,i)=>{const n=F,s=i+a;t^=-1;for(let a=i;a<s;a++)t=t>>>8^n[255&(t^e[a])];return-1^t},I={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},B={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:C,_tr_stored_block:H,_tr_flush_block:M,_tr_tally:j,_tr_align:K}=T,{Z_NO_FLUSH:P,Z_PARTIAL_FLUSH:Y,Z_FULL_FLUSH:G,Z_FINISH:X,Z_BLOCK:J,Z_OK:W,Z_STREAM_END:q,Z_STREAM_ERROR:Q,Z_DATA_ERROR:V,Z_BUF_ERROR:$,Z_DEFAULT_COMPRESSION:tt,Z_FILTERED:et,Z_HUFFMAN_ONLY:at,Z_RLE:it,Z_FIXED:nt,Z_DEFAULT_STRATEGY:st,Z_UNKNOWN:rt,Z_DEFLATED:ot}=B,lt=(t,e)=>(t.msg=I[e],e),ht=t=>2*t-(t>4?9:0),dt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},_t=t=>{let e,a,i,n=t.w_size;e=t.hash_size,i=e;do{a=t.head[--i],t.head[i]=a>=n?a-n:0}while(--e);e=n,i=e;do{a=t.prev[--i],t.prev[i]=a>=n?a-n:0}while(--e)};let ft=(t,e,a)=>(e<<t.hash_shift^a)&t.hash_mask;const ct=t=>{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},ut=(t,e)=>{M(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,ct(t.strm)},wt=(t,e)=>{t.pending_buf[t.pending++]=e},mt=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},bt=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=N(t.adler,e,n,a):2===t.state.wrap&&(t.adler=L(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},gt=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,o=t.nice_match;const l=t.strstart>t.w_size-262?t.strstart-(t.w_size-262):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+258;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&s<f);if(i=258-(f-s),s=f-258,i>r){if(t.match_start=e,r=i,i>=o)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>l&&0!=--n);return r<=t.lookahead?r:t.lookahead},pt=t=>{const e=t.w_size;let a,i,n;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-262)&&(t.window.set(t.window.subarray(e,e+e-i),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),_t(t),i+=e),0===t.strm.avail_in)break;if(a=bt(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=a,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=ft(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=ft(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<262&&0!==t.strm.avail_in)},kt=(t,e)=>{let a,i,n,s=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,r=0,o=t.strm.avail_in;do{if(a=65535,n=t.bi_valid+42>>3,t.strm.avail_out<n)break;if(n=t.strm.avail_out-n,i=t.strstart-t.block_start,a>i+t.strm.avail_in&&(a=i+t.strm.avail_in),a>n&&(a=n),a<s&&(0===a&&e!==X||e===P||a!==i+t.strm.avail_in))break;r=e===X&&a===i+t.strm.avail_in?1:0,H(t,0,0,r),t.pending_buf[t.pending-4]=a,t.pending_buf[t.pending-3]=a>>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,ct(t.strm),i&&(i>a&&(i=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,a-=i),a&&(bt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===r);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_water<t.strstart&&(t.high_water=t.strstart),r?4:e!==P&&e!==X&&0===t.strm.avail_in&&t.strstart===t.block_start?2:(n=t.window_size-t.strstart,t.strm.avail_in>n&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,n+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),n>t.strm.avail_in&&(n=t.strm.avail_in),n&&(bt(t.strm,t.window,t.strstart,n),t.strstart+=n,t.insert+=n>t.w_size-t.insert?t.w_size-t.insert:n),t.high_water<t.strstart&&(t.high_water=t.strstart),n=t.bi_valid+42>>3,n=t.pending_buf_size-n>65535?65535:t.pending_buf_size-n,s=n>t.w_size?t.w_size:n,i=t.strstart-t.block_start,(i>=s||(i||e===X)&&e!==P&&0===t.strm.avail_in&&i<=n)&&(a=i>n?n:i,r=e===X&&0===t.strm.avail_in&&a===i?1:0,H(t,t.block_start,a,r),t.block_start+=a,ct(t.strm)),r?3:1)},vt=(t,e)=>{let a,i;for(;;){if(t.lookahead<262){if(pt(t),t.lookahead<262&&e===P)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-262&&(t.match_length=gt(t,a)),t.match_length>=3)if(i=j(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=ft(t,t.ins_h,t.window[t.strstart+1]);else i=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2},yt=(t,e)=>{let a,i,n;for(;;){if(t.lookahead<262){if(pt(t),t.lookahead<262&&e===P)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-262&&(t.match_length=gt(t,a),t.match_length<=5&&(t.strategy===et||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=j(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(ut(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=j(t,0,t.window[t.strstart-1]),i&&ut(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=j(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2};function xt(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const zt=[new xt(0,0,0,0,kt),new xt(4,4,8,4,vt),new xt(4,5,16,8,vt),new xt(4,6,32,32,vt),new xt(4,4,16,16,yt),new xt(8,16,32,32,yt),new xt(8,16,128,128,yt),new xt(8,32,128,256,yt),new xt(32,128,258,1024,yt),new xt(32,258,258,4096,yt)];function At(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ot,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),dt(this.dyn_ltree),dt(this.dyn_dtree),dt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),dt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),dt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Et=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||42!==e.status&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&113!==e.status&&666!==e.status?1:0},Rt=t=>{if(Et(t))return lt(t,Q);t.total_in=t.total_out=0,t.data_type=rt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?42:113,t.adler=2===e.wrap?0:1,e.last_flush=-2,C(e),W},Zt=t=>{const e=Rt(t);var a;return e===W&&((a=t.state).window_size=2*a.w_size,dt(a.head),a.max_lazy_match=zt[a.level].max_lazy,a.good_match=zt[a.level].good_length,a.nice_match=zt[a.level].nice_length,a.max_chain_length=zt[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},St=(t,e,a,i,n,s)=>{if(!t)return Q;let r=1;if(e===tt&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==ot||i<8||i>15||e<0||e>9||s<0||s>nt||8===i&&1!==r)return lt(t,Q);8===i&&(i=9);const o=new At;return t.state=o,o.strm=t,o.status=42,o.wrap=r,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=n+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+3-1)/3),o.window=new Uint8Array(2*o.w_size),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<n+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=3*(o.lit_bufsize-1),o.level=e,o.strategy=s,o.method=a,Zt(t)};var Ut={deflateInit:(t,e)=>St(t,e,ot,15,8,st),deflateInit2:St,deflateReset:Zt,deflateResetKeep:Rt,deflateSetHeader:(t,e)=>Et(t)||2!==t.state.wrap?Q:(t.state.gzhead=e,W),deflate:(t,e)=>{if(Et(t)||e>J||e<0)return t?lt(t,Q):Q;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||666===a.status&&e!==X)return lt(t,0===t.avail_out?$:Q);const i=a.last_flush;if(a.last_flush=e,0!==a.pending){if(ct(t),0===t.avail_out)return a.last_flush=-1,W}else if(0===t.avail_in&&ht(e)<=ht(i)&&e!==X)return lt(t,$);if(666===a.status&&0!==t.avail_in)return lt(t,$);if(42===a.status&&0===a.wrap&&(a.status=113),42===a.status){let e=ot+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=at||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=i<<6,0!==a.strstart&&(e|=32),e+=31-e%31,mt(a,e),0!==a.strstart&&(mt(a,t.adler>>>16),mt(a,65535&t.adler)),t.adler=1,a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,W}if(57===a.status)if(t.adler=0,wt(a,31),wt(a,139),wt(a,8),a.gzhead)wt(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),wt(a,255&a.gzhead.time),wt(a,a.gzhead.time>>8&255),wt(a,a.gzhead.time>>16&255),wt(a,a.gzhead.time>>24&255),wt(a,9===a.level?2:a.strategy>=at||a.level<2?4:0),wt(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(wt(a,255&a.gzhead.extra.length),wt(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=L(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(wt(a,0),wt(a,0),wt(a,0),wt(a,0),wt(a,0),wt(a,9===a.level?2:a.strategy>=at||a.level<2?4:0),wt(a,3),a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,W;if(69===a.status){if(a.gzhead.extra){let e=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let n=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+n),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=L(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=n,ct(t),0!==a.pending)return a.last_flush=-1,W;e=0,i-=n}let n=new Uint8Array(a.gzhead.extra);a.pending_buf.set(n.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>e&&(t.adler=L(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i)),ct(t),0!==a.pending)return a.last_flush=-1,W;i=0}e=a.gzindex<a.gzhead.name.length?255&a.gzhead.name.charCodeAt(a.gzindex++):0,wt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i)),ct(t),0!==a.pending)return a.last_flush=-1,W;i=0}e=a.gzindex<a.gzhead.comment.length?255&a.gzhead.comment.charCodeAt(a.gzindex++):0,wt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(ct(t),0!==a.pending))return a.last_flush=-1,W;wt(a,255&t.adler),wt(a,t.adler>>8&255),t.adler=0}if(a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,W}if(0!==t.avail_in||0!==a.lookahead||e!==P&&666!==a.status){let i=0===a.level?kt(a,e):a.strategy===at?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(pt(t),0===t.lookahead)){if(e===P)return 1;break}if(t.match_length=0,a=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===it?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=258){if(pt(t),t.lookahead<=258&&e===P)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+258;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&n<s);t.match_length=258-(s-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=j(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2})(a,e):zt[a.level].func(a,e);if(3!==i&&4!==i||(a.status=666),1===i||3===i)return 0===t.avail_out&&(a.last_flush=-1),W;if(2===i&&(e===Y?K(a):e!==J&&(H(a,0,0,!1),e===G&&(dt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),ct(t),0===t.avail_out))return a.last_flush=-1,W}return e!==X?W:a.wrap<=0?q:(2===a.wrap?(wt(a,255&t.adler),wt(a,t.adler>>8&255),wt(a,t.adler>>16&255),wt(a,t.adler>>24&255),wt(a,255&t.total_in),wt(a,t.total_in>>8&255),wt(a,t.total_in>>16&255),wt(a,t.total_in>>24&255)):(mt(a,t.adler>>>16),mt(a,65535&t.adler)),ct(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?W:q)},deflateEnd:t=>{if(Et(t))return Q;const e=t.state.status;return t.state=null,113===e?lt(t,V):W},deflateSetDictionary:(t,e)=>{let a=e.length;if(Et(t))return Q;const i=t.state,n=i.wrap;if(2===n||1===n&&42!==i.status||i.lookahead)return Q;if(1===n&&(t.adler=N(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(dt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,pt(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=ft(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,pt(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=o,t.avail_in=s,i.wrap=n,W},deflateInfo:"pako deflate (from Nodeca project)"};const Dt=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Ot=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Dt(a,e)&&(t[e]=a[e])}}return t},Tt=t=>{let e=0;for(let a=0,i=t.length;a<i;a++)e+=t[a].length;const a=new Uint8Array(e);for(let e=0,i=0,n=t.length;e<n;e++){let n=t[e];a.set(n,i),i+=n.length}return a};let Nt=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){Nt=!1}const Ft=new Uint8Array(256);for(let t=0;t<256;t++)Ft[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Ft[254]=Ft[254]=1;var Lt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,o=0;for(n=0;n<r;n++)a=t.charCodeAt(n),55296==(64512&a)&&n+1<r&&(i=t.charCodeAt(n+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),n++)),o+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(o),s=0,n=0;s<o;n++)a=t.charCodeAt(n),55296==(64512&a)&&n+1<r&&(i=t.charCodeAt(n+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),n++)),a<128?e[s++]=a:a<2048?(e[s++]=192|a>>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},It=(t,e)=>{const a=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i<a;){let e=t[i++];if(e<128){s[n++]=e;continue}let r=Ft[e];if(r>4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i<a;)e=e<<6|63&t[i++],r--;r>1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Nt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i<e;i++)a+=String.fromCharCode(t[i]);return a})(s,n)},Bt=(t,e)=>{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Ft[t[a]]>e?a:e};var Ct=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Ht=Object.prototype.toString,{Z_NO_FLUSH:Mt,Z_SYNC_FLUSH:jt,Z_FULL_FLUSH:Kt,Z_FINISH:Pt,Z_OK:Yt,Z_STREAM_END:Gt,Z_DEFAULT_COMPRESSION:Xt,Z_DEFAULT_STRATEGY:Jt,Z_DEFLATED:Wt}=B;function qt(t){this.options=Ot({level:Xt,method:Wt,chunkSize:16384,windowBits:15,memLevel:8,strategy:Jt},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;let a=Ut.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==Yt)throw new Error(I[a]);if(e.header&&Ut.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Lt(e.dictionary):"[object ArrayBuffer]"===Ht.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=Ut.deflateSetDictionary(this.strm,t),a!==Yt)throw new Error(I[a]);this._dict_set=!0}}function Qt(t,e){const a=new qt(e);if(a.push(t,!0),a.err)throw a.msg||I[a.err];return a.result}qt.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?Pt:Mt,"string"==typeof t?a.input=Lt(t):"[object ArrayBuffer]"===Ht.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===jt||s===Kt)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=Ut.deflate(a,s),n===Gt)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=Ut.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===Yt;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},qt.prototype.onData=function(t){this.chunks.push(t)},qt.prototype.onEnd=function(t){t===Yt&&(this.result=Tt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var Vt={Deflate:qt,deflate:Qt,deflateRaw:function(t,e){return(e=e||{}).raw=!0,Qt(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,Qt(t,e)},constants:B};var $t=function(t,e){let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),o=E.dmax,l=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,m=(1<<E.lenbits)-1,b=(1<<E.distbits)-1;t:do{c<15&&(f+=z[a++]<<c,c+=8,f+=z[a++]<<c,c+=8),g=u[f&m];e:for(;;){if(p=g>>>24,f>>>=p,c-=p,p=g>>>16&255,0===p)A[n++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=u[(65535&g)+(f&(1<<p)-1)];continue e}if(32&p){E.mode=16191;break t}t.msg="invalid literal/length code",E.mode=16209;break t}k=65535&g,p&=15,p&&(c<p&&(f+=z[a++]<<c,c+=8),k+=f&(1<<p)-1,f>>>=p,c-=p),c<15&&(f+=z[a++]<<c,c+=8,f+=z[a++]<<c,c+=8),g=w[f&b];a:for(;;){if(p=g>>>24,f>>>=p,c-=p,p=g>>>16&255,!(16&p)){if(0==(64&p)){g=w[(65535&g)+(f&(1<<p)-1)];continue a}t.msg="invalid distance code",E.mode=16209;break t}if(v=65535&g,p&=15,c<p&&(f+=z[a++]<<c,c+=8,c<p&&(f+=z[a++]<<c,c+=8)),v+=f&(1<<p)-1,v>o){t.msg="invalid distance too far back",E.mode=16209;break t}if(f>>>=p,c-=p,p=n-s,v>p){if(p=v-p,p>h&&E.sane){t.msg="invalid distance too far back",E.mode=16209;break t}if(y=0,x=_,0===d){if(y+=l-p,p<k){k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}}else if(d<p){if(y+=l+d-p,p-=d,p<k){k-=p;do{A[n++]=_[y++]}while(--p);if(y=0,d<k){p=d,k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}}}else if(y+=d-p,p<k){k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}for(;k>2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a<i&&n<r);k=c>>3,a-=k,c-=k<<3,f&=(1<<c)-1,t.next_in=a,t.next_out=n,t.avail_in=a<i?i-a+5:5-(a-i),t.avail_out=n<r?r-n+257:257-(n-r),E.hold=f,E.bits=c};const te=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),ee=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),ae=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),ie=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var ne=(t,e,a,i,n,s,r,o)=>{const l=o.bits;let h,d,_,f,c,u,w=0,m=0,b=0,g=0,p=0,k=0,v=0,y=0,x=0,z=0,A=null;const E=new Uint16Array(16),R=new Uint16Array(16);let Z,S,U,D=null;for(w=0;w<=15;w++)E[w]=0;for(m=0;m<i;m++)E[e[a+m]]++;for(p=l,g=15;g>=1&&0===E[g];g--);if(p>g&&(p=g),0===g)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(b=1;b<g&&0===E[b];b++);for(p<b&&(p=b),y=1,w=1;w<=15;w++)if(y<<=1,y-=E[w],y<0)return-1;if(y>0&&(0===t||1!==g))return-1;for(R[1]=0,w=1;w<15;w++)R[w+1]=R[w]+E[w];for(m=0;m<i;m++)0!==e[a+m]&&(r[R[e[a+m]]++]=m);if(0===t?(A=D=r,u=20):1===t?(A=te,D=ee,u=257):(A=ae,D=ie,u=0),z=0,m=0,w=b,c=s,k=p,v=0,_=-1,x=1<<p,f=x-1,1===t&&x>852||2===t&&x>592)return 1;for(;;){Z=w-v,r[m]+1<u?(S=0,U=r[m]):r[m]>=u?(S=D[r[m]-u],U=A[r[m]-u]):(S=96,U=0),h=1<<w-v,d=1<<k,b=d;do{d-=h,n[c+(z>>v)+d]=Z<<24|S<<16|U|0}while(0!==d);for(h=1<<w-1;z&h;)h>>=1;if(0!==h?(z&=h-1,z+=h):z=0,m++,0==--E[w]){if(w===g)break;w=e[a+r[m]]}if(w>p&&(z&f)!==_){for(0===v&&(v=p),c+=b,k=w-v,y=1<<k;k+v<g&&(y-=E[k+v],!(y<=0));)k++,y<<=1;if(x+=1<<k,1===t&&x>852||2===t&&x>592)return 1;_=z&f,n[_]=p<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),o.bits=p,0};const{Z_FINISH:se,Z_BLOCK:re,Z_TREES:oe,Z_OK:le,Z_STREAM_END:he,Z_NEED_DICT:de,Z_STREAM_ERROR:_e,Z_DATA_ERROR:fe,Z_MEM_ERROR:ce,Z_BUF_ERROR:ue,Z_DEFLATED:we}=B,me=16209,be=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function ge(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const pe=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode<16180||e.mode>16211?1:0},ke=t=>{if(pe(t))return _e;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=16180,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,le},ve=t=>{if(pe(t))return _e;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,ke(t)},ye=(t,e)=>{let a;if(pe(t))return _e;const i=t.state;return e<0?(a=0,e=-e):(a=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?_e:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,ve(t))},xe=(t,e)=>{if(!t)return _e;const a=new ge;t.state=a,a.strm=t,a.window=null,a.mode=16180;const i=ye(t,e);return i!==le&&(t.state=null),i};let ze,Ae,Ee=!0;const Re=t=>{if(Ee){ze=new Int32Array(512),Ae=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(ne(1,t.lens,0,288,ze,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;ne(2,t.lens,0,32,Ae,0,t.work,{bits:5}),Ee=!1}t.lencode=ze,t.lenbits=9,t.distcode=Ae,t.distbits=5},Ze=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new Uint8Array(s.wsize)),i>=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=n))),0};var Se={inflateReset:ve,inflateReset2:ye,inflateResetKeep:ke,inflateInit:t=>xe(t,15),inflateInit2:xe,inflate:(t,e)=>{let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(pe(t)||!t.output||!t.input&&0!==t.avail_in)return _e;a=t.state,16191===a.mode&&(a.mode=16192),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,_=o,f=l,x=le;t:for(;;)switch(a.mode){case 16180:if(0===a.wrap){a.mode=16192;break}for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(2&a.wrap&&35615===h){0===a.wbits&&(a.wbits=15),a.check=0,A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0),h=0,d=0,a.mode=16181;break}if(a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=me;break}if((15&h)!==we){t.msg="unknown compression method",a.mode=me;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits&&(a.wbits=y),y>15||y>a.wbits){t.msg="invalid window size",a.mode=me;break}a.dmax=1<<a.wbits,a.flags=0,t.adler=a.check=1,a.mode=512&h?16189:16191,h=0,d=0;break;case 16181:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(a.flags=h,(255&a.flags)!==we){t.msg="unknown compression method",a.mode=me;break}if(57344&a.flags){t.msg="unknown header flags set",a.mode=me;break}a.head&&(a.head.text=h>>8&1),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0)),h=0,d=0,a.mode=16182;case 16182:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.head&&(a.head.time=h),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=L(a.check,A,4,0)),h=0,d=0,a.mode=16183;case 16183:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.head&&(a.head.xflags=255&h,a.head.os=h>>8),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0)),h=0,d=0,a.mode=16184;case 16184:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.length=h,a.head&&(a.head.extra_len=h),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=16185;case 16185:if(1024&a.flags&&(c=a.length,c>o&&(c=o),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&4&a.wrap&&(a.check=L(a.check,i,c,s)),o-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=16186;case 16186:if(2048&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c<o);if(512&a.flags&&4&a.wrap&&(a.check=L(a.check,i,c,s)),o-=c,s+=c,y)break t}else a.head&&(a.head.name=null);a.length=0,a.mode=16187;case 16187:if(4096&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.comment+=String.fromCharCode(y))}while(y&&c<o);if(512&a.flags&&4&a.wrap&&(a.check=L(a.check,i,c,s)),o-=c,s+=c,y)break t}else a.head&&(a.head.comment=null);a.mode=16188;case 16188:if(512&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(4&a.wrap&&h!==(65535&a.check)){t.msg="header crc mismatch",a.mode=me;break}h=0,d=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=16191;break;case 16189:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}t.adler=a.check=be(h),h=0,d=0,a.mode=16190;case 16190:if(0===a.havedict)return t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,de;t.adler=a.check=1,a.mode=16191;case 16191:if(e===re||e===oe)break t;case 16192:if(a.last){h>>>=7&d,d-=7&d,a.mode=16206;break}for(;d<3;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}switch(a.last=1&h,h>>>=1,d-=1,3&h){case 0:a.mode=16193;break;case 1:if(Re(a),a.mode=16199,e===oe){h>>>=2,d-=2;break t}break;case 2:a.mode=16196;break;case 3:t.msg="invalid block type",a.mode=me}h>>>=2,d-=2;break;case 16193:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if((65535&h)!=(h>>>16^65535)){t.msg="invalid stored block lengths",a.mode=me;break}if(a.length=65535&h,h=0,d=0,a.mode=16194,e===oe)break t;case 16194:a.mode=16195;case 16195:if(c=a.length,c){if(c>o&&(c=o),c>l&&(c=l),0===c)break t;n.set(i.subarray(s,s+c),r),o-=c,s+=c,l-=c,r+=c,a.length-=c;break}a.mode=16191;break;case 16196:for(;d<14;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(a.nlen=257+(31&h),h>>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=me;break}a.have=0,a.mode=16197;case 16197:for(;a.have<a.ncode;){for(;d<3;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.lens[Z[a.have++]]=7&h,h>>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=ne(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=me;break}a.have=0,a.mode=16198;case 16198:for(;a.have<a.nlen+a.ndist;){for(;z=a.lencode[h&(1<<a.lenbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(g<16)h>>>=m,d-=m,a.lens[a.have++]=g;else{if(16===g){for(R=m+2;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(h>>>=m,d-=m,0===a.have){t.msg="invalid bit length repeat",a.mode=me;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===g){for(R=m+3;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=m,d-=m,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=m+7;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=m,d-=m,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=me;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===me)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=me;break}if(a.lenbits=9,E={bits:a.lenbits},x=ne(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=me;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=ne(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=me;break}if(a.mode=16199,e===oe)break t;case 16199:a.mode=16200;case 16200:if(o>=6&&l>=258){t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,$t(t,f),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,16191===a.mode&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<<a.lenbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(b&&0==(240&b)){for(p=m,k=b,v=g;z=a.lencode[v+((h&(1<<p+k)-1)>>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,a.length=g,0===b){a.mode=16205;break}if(32&b){a.back=-1,a.mode=16191;break}if(64&b){t.msg="invalid literal/length code",a.mode=me;break}a.extra=15&b,a.mode=16201;case 16201:if(a.extra){for(R=a.extra;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.length+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=16202;case 16202:for(;z=a.distcode[h&(1<<a.distbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(0==(240&b)){for(p=m,k=b,v=g;z=a.distcode[v+((h&(1<<p+k)-1)>>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,64&b){t.msg="invalid distance code",a.mode=me;break}a.offset=g,a.extra=15&b,a.mode=16203;case 16203:if(a.extra){for(R=a.extra;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.offset+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=me;break}a.mode=16204;case 16204:if(0===l)break t;if(c=f-l,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=me;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>l&&(c=l),l-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=16200);break;case 16205:if(0===l)break t;n[r++]=a.length,l--,a.mode=16200;break;case 16206:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[s++]<<d,d+=8}if(f-=l,t.total_out+=f,a.total+=f,4&a.wrap&&f&&(t.adler=a.check=a.flags?L(a.check,n,f,r-f):N(a.check,n,f,r-f)),f=l,4&a.wrap&&(a.flags?h:be(h))!==a.check){t.msg="incorrect data check",a.mode=me;break}h=0,d=0}a.mode=16207;case 16207:if(a.wrap&&a.flags){for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(4&a.wrap&&h!==(4294967295&a.total)){t.msg="incorrect length check",a.mode=me;break}h=0,d=0}a.mode=16208;case 16208:x=he;break t;case me:x=fe;break t;case 16210:return ce;default:return _e}return t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,(a.wsize||f!==t.avail_out&&a.mode<me&&(a.mode<16206||e!==se))&&Ze(t,t.output,t.next_out,f-t.avail_out),_-=t.avail_in,f-=t.avail_out,t.total_in+=_,t.total_out+=f,a.total+=f,4&a.wrap&&f&&(t.adler=a.check=a.flags?L(a.check,n,f,t.next_out-f):N(a.check,n,f,t.next_out-f)),t.data_type=a.bits+(a.last?64:0)+(16191===a.mode?128:0)+(16199===a.mode||16194===a.mode?256:0),(0===_&&0===f||e===se)&&x===le&&(x=ue),x},inflateEnd:t=>{if(pe(t))return _e;let e=t.state;return e.window&&(e.window=null),t.state=null,le},inflateGetHeader:(t,e)=>{if(pe(t))return _e;const a=t.state;return 0==(2&a.wrap)?_e:(a.head=e,e.done=!1,le)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return pe(t)?_e:(i=t.state,0!==i.wrap&&16190!==i.mode?_e:16190===i.mode&&(n=1,n=N(n,e,a,0),n!==i.check)?fe:(s=Ze(t,e,a,a),s?(i.mode=16210,ce):(i.havedict=1,le)))},inflateInfo:"pako inflate (from Nodeca project)"};var Ue=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const De=Object.prototype.toString,{Z_NO_FLUSH:Oe,Z_FINISH:Te,Z_OK:Ne,Z_STREAM_END:Fe,Z_NEED_DICT:Le,Z_STREAM_ERROR:Ie,Z_DATA_ERROR:Be,Z_MEM_ERROR:Ce}=B;function He(t){this.options=Ot({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;let a=Se.inflateInit2(this.strm,e.windowBits);if(a!==Ne)throw new Error(I[a]);if(this.header=new Ue,Se.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Lt(e.dictionary):"[object ArrayBuffer]"===De.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=Se.inflateSetDictionary(this.strm,e.dictionary),a!==Ne)))throw new Error(I[a])}He.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,o;if(this.ended)return!1;for(r=e===~~e?e:!0===e?Te:Oe,"[object ArrayBuffer]"===De.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=Se.inflate(a,r),s===Le&&n&&(s=Se.inflateSetDictionary(a,n),s===Ne?s=Se.inflate(a,r):s===Be&&(s=Le));a.avail_in>0&&s===Fe&&a.state.wrap>0&&0!==t[a.next_in];)Se.inflateReset(a),s=Se.inflate(a,r);switch(s){case Ie:case Be:case Le:case Ce:return this.onEnd(s),this.ended=!0,!1}if(o=a.avail_out,a.next_out&&(0===a.avail_out||s===Fe))if("string"===this.options.to){let t=Bt(a.output,a.next_out),e=a.next_out-t,n=It(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==Ne||0!==o){if(s===Fe)return s=Se.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},He.prototype.onData=function(t){this.chunks.push(t)},He.prototype.onEnd=function(t){t===Ne&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Tt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};const{Deflate:Me,deflate:je,deflateRaw:Ke,gzip:Pe}=Vt;var Ye=Me,Ge=B;const Xe=new class{constructor(){this.added=0,this.init()}init(){this.added=0,this.deflate=new Ye,this.deflate.push("[",Ge.Z_NO_FLUSH)}addEvent(t){if(!t)return;const e=this.added>0?",":"";this.deflate.push(e+JSON.stringify(t),Ge.Z_NO_FLUSH),this.added++}finish(){if(this.deflate.push("]",Ge.Z_FINISH),this.deflate.err)throw this.deflate.err;const t=this.deflate.result;return this.init(),t}},Je={init:()=>(Xe.init(),""),addEvent:t=>(Xe.addEvent(t),""),finish:()=>Xe.finish()};addEventListener("message",(function(t){const e=t.data.method,a=t.data.id,[i]=t.data.args?JSON.parse(t.data.args):[];if(e in Je&&"function"==typeof Je[e])try{const t=Je[e](i);postMessage({id:a,method:e,success:!0,response:t})}catch(t){postMessage({id:a,method:e,success:!1,response:t}),console.error(t)}}));`;
|
|
30028
|
+
function t(t){let e=t.length;for(;--e>=0;)t[e]=0}const e=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),a=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),i=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),n=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=new Array(576);t(s);const r=new Array(60);t(r);const o=new Array(512);t(o);const l=new Array(256);t(l);const h=new Array(29);t(h);const d=new Array(30);function _(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let f,c,u;function w(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}t(d);const m=t=>t<256?o[t]:o[256+(t>>>7)],b=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},g=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,b(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},p=(t,e,a)=>{g(t,a[2*e],a[2*e+1])},k=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},v=(t,e,a)=>{const i=new Array(16);let n,s,r=0;for(n=1;n<=15;n++)r=r+a[n-1]<<1,i[n]=r;for(s=0;s<=e;s++){let e=t[2*s+1];0!==e&&(t[2*s]=k(i[e]++,e))}},y=t=>{let e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.sym_next=t.matches=0},x=t=>{t.bi_valid>8?b(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},z=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]<t[s]||t[n]===t[s]&&i[e]<=i[a]},A=(t,e,a)=>{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n<t.heap_len&&z(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!z(e,i,t.heap[n],t.depth));)t.heap[a]=t.heap[n],a=n,n<<=1;t.heap[a]=i},E=(t,i,n)=>{let s,r,o,_,f=0;if(0!==t.sym_next)do{s=255&t.pending_buf[t.sym_buf+f++],s+=(255&t.pending_buf[t.sym_buf+f++])<<8,r=t.pending_buf[t.sym_buf+f++],0===s?p(t,r,i):(o=l[r],p(t,o+256+1,i),_=e[o],0!==_&&(r-=h[o],g(t,r,_)),s--,o=m(s),p(t,o,n),_=a[o],0!==_&&(s-=d[o],g(t,s,_)))}while(f<t.sym_next);p(t,256,i)},R=(t,e)=>{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,s=e.stat_desc.elems;let r,o,l,h=-1;for(t.heap_len=0,t.heap_max=573,r=0;r<s;r++)0!==a[2*r]?(t.heap[++t.heap_len]=h=r,t.depth[r]=0):a[2*r+1]=0;for(;t.heap_len<2;)l=t.heap[++t.heap_len]=h<2?++h:0,a[2*l]=1,t.depth[l]=0,t.opt_len--,n&&(t.static_len-=i[2*l+1]);for(e.max_code=h,r=t.heap_len>>1;r>=1;r--)A(t,a,r);l=s;do{r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],A(t,a,1),o=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=o,a[2*l]=a[2*r]+a[2*o],t.depth[l]=(t.depth[r]>=t.depth[o]?t.depth[r]:t.depth[o])+1,a[2*r+1]=a[2*o+1]=l,t.heap[1]=l++,A(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,s=e.stat_desc.has_stree,r=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,l=e.stat_desc.max_length;let h,d,_,f,c,u,w=0;for(f=0;f<=15;f++)t.bl_count[f]=0;for(a[2*t.heap[t.heap_max]+1]=0,h=t.heap_max+1;h<573;h++)d=t.heap[h],f=a[2*a[2*d+1]+1]+1,f>l&&(f=l,w++),a[2*d+1]=f,d>i||(t.bl_count[f]++,c=0,d>=o&&(c=r[d-o]),u=a[2*d],t.opt_len+=u*(f+c),s&&(t.static_len+=u*(n[2*d+1]+c)));if(0!==w){do{for(f=l-1;0===t.bl_count[f];)f--;t.bl_count[f]--,t.bl_count[f+1]+=2,t.bl_count[l]--,w-=2}while(w>0);for(f=l;0!==f;f--)for(d=t.bl_count[f];0!==d;)_=t.heap[--h],_>i||(a[2*_+1]!==f&&(t.opt_len+=(f-a[2*_+1])*a[2*_],a[2*_+1]=f),d--)}})(t,e),v(a,h,t.bl_count)},Z=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++o<l&&n===r||(o<h?t.bl_tree[2*n]+=o:0!==n?(n!==s&&t.bl_tree[2*n]++,t.bl_tree[32]++):o<=10?t.bl_tree[34]++:t.bl_tree[36]++,o=0,s=n,0===r?(l=138,h=3):n===r?(l=6,h=3):(l=7,h=4))},S=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++o<l&&n===r)){if(o<h)do{p(t,n,t.bl_tree)}while(0!=--o);else 0!==n?(n!==s&&(p(t,n,t.bl_tree),o--),p(t,16,t.bl_tree),g(t,o-3,2)):o<=10?(p(t,17,t.bl_tree),g(t,o-3,3)):(p(t,18,t.bl_tree),g(t,o-11,7));o=0,s=n,0===r?(l=138,h=3):n===r?(l=6,h=3):(l=7,h=4)}};let U=!1;const D=(t,e,a,i)=>{g(t,0+(i?1:0),3),x(t),b(t,a),b(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var O=(t,e,a,i)=>{let o,l,h=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),R(t,t.l_desc),R(t,t.d_desc),h=(t=>{let e;for(Z(t,t.dyn_ltree,t.l_desc.max_code),Z(t,t.dyn_dtree,t.d_desc.max_code),R(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*n[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),o=t.opt_len+3+7>>>3,l=t.static_len+3+7>>>3,l<=o&&(o=l)):o=l=a+5,a+4<=o&&-1!==e?D(t,e,a,i):4===t.strategy||l===o?(g(t,2+(i?1:0),3),E(t,s,r)):(g(t,4+(i?1:0),3),((t,e,a,i)=>{let s;for(g(t,e-257,5),g(t,a-1,5),g(t,i-4,4),s=0;s<i;s++)g(t,t.bl_tree[2*n[s]+1],3);S(t,t.dyn_ltree,e-1),S(t,t.dyn_dtree,a-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,h+1),E(t,t.dyn_ltree,t.dyn_dtree)),y(t),i&&x(t)},T={_tr_init:t=>{U||((()=>{let t,n,w,m,b;const g=new Array(16);for(w=0,m=0;m<28;m++)for(h[m]=w,t=0;t<1<<e[m];t++)l[w++]=m;for(l[w-1]=m,b=0,m=0;m<16;m++)for(d[m]=b,t=0;t<1<<a[m];t++)o[b++]=m;for(b>>=7;m<30;m++)for(d[m]=b<<7,t=0;t<1<<a[m]-7;t++)o[256+b++]=m;for(n=0;n<=15;n++)g[n]=0;for(t=0;t<=143;)s[2*t+1]=8,t++,g[8]++;for(;t<=255;)s[2*t+1]=9,t++,g[9]++;for(;t<=279;)s[2*t+1]=7,t++,g[7]++;for(;t<=287;)s[2*t+1]=8,t++,g[8]++;for(v(s,287,g),t=0;t<30;t++)r[2*t+1]=5,r[2*t]=k(t,5);f=new _(s,e,257,286,15),c=new _(r,a,0,30,15),u=new _(new Array(0),i,0,19,7)})(),U=!0),t.l_desc=new w(t.dyn_ltree,f),t.d_desc=new w(t.dyn_dtree,c),t.bl_desc=new w(t.bl_tree,u),t.bi_buf=0,t.bi_valid=0,y(t)},_tr_stored_block:D,_tr_flush_block:O,_tr_tally:(t,e,a)=>(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=a,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(l[a]+256+1)]++,t.dyn_dtree[2*m(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{g(t,2,3),p(t,256,s),(t=>{16===t.bi_valid?(b(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var N=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const F=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var L=(t,e,a,i)=>{const n=F,s=i+a;t^=-1;for(let a=i;a<s;a++)t=t>>>8^n[255&(t^e[a])];return-1^t},I={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},B={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:C,_tr_stored_block:H,_tr_flush_block:M,_tr_tally:j,_tr_align:K}=T,{Z_NO_FLUSH:P,Z_PARTIAL_FLUSH:Y,Z_FULL_FLUSH:G,Z_FINISH:X,Z_BLOCK:J,Z_OK:W,Z_STREAM_END:q,Z_STREAM_ERROR:Q,Z_DATA_ERROR:V,Z_BUF_ERROR:$,Z_DEFAULT_COMPRESSION:tt,Z_FILTERED:et,Z_HUFFMAN_ONLY:at,Z_RLE:it,Z_FIXED:nt,Z_DEFAULT_STRATEGY:st,Z_UNKNOWN:rt,Z_DEFLATED:ot}=B,lt=(t,e)=>(t.msg=I[e],e),ht=t=>2*t-(t>4?9:0),dt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},_t=t=>{let e,a,i,n=t.w_size;e=t.hash_size,i=e;do{a=t.head[--i],t.head[i]=a>=n?a-n:0}while(--e);e=n,i=e;do{a=t.prev[--i],t.prev[i]=a>=n?a-n:0}while(--e)};let ft=(t,e,a)=>(e<<t.hash_shift^a)&t.hash_mask;const ct=t=>{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},ut=(t,e)=>{M(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,ct(t.strm)},wt=(t,e)=>{t.pending_buf[t.pending++]=e},mt=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},bt=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=N(t.adler,e,n,a):2===t.state.wrap&&(t.adler=L(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},gt=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,o=t.nice_match;const l=t.strstart>t.w_size-262?t.strstart-(t.w_size-262):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+258;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&s<f);if(i=258-(f-s),s=f-258,i>r){if(t.match_start=e,r=i,i>=o)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>l&&0!=--n);return r<=t.lookahead?r:t.lookahead},pt=t=>{const e=t.w_size;let a,i,n;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-262)&&(t.window.set(t.window.subarray(e,e+e-i),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),_t(t),i+=e),0===t.strm.avail_in)break;if(a=bt(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=a,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=ft(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=ft(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<262&&0!==t.strm.avail_in)},kt=(t,e)=>{let a,i,n,s=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,r=0,o=t.strm.avail_in;do{if(a=65535,n=t.bi_valid+42>>3,t.strm.avail_out<n)break;if(n=t.strm.avail_out-n,i=t.strstart-t.block_start,a>i+t.strm.avail_in&&(a=i+t.strm.avail_in),a>n&&(a=n),a<s&&(0===a&&e!==X||e===P||a!==i+t.strm.avail_in))break;r=e===X&&a===i+t.strm.avail_in?1:0,H(t,0,0,r),t.pending_buf[t.pending-4]=a,t.pending_buf[t.pending-3]=a>>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,ct(t.strm),i&&(i>a&&(i=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,a-=i),a&&(bt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===r);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_water<t.strstart&&(t.high_water=t.strstart),r?4:e!==P&&e!==X&&0===t.strm.avail_in&&t.strstart===t.block_start?2:(n=t.window_size-t.strstart,t.strm.avail_in>n&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,n+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),n>t.strm.avail_in&&(n=t.strm.avail_in),n&&(bt(t.strm,t.window,t.strstart,n),t.strstart+=n,t.insert+=n>t.w_size-t.insert?t.w_size-t.insert:n),t.high_water<t.strstart&&(t.high_water=t.strstart),n=t.bi_valid+42>>3,n=t.pending_buf_size-n>65535?65535:t.pending_buf_size-n,s=n>t.w_size?t.w_size:n,i=t.strstart-t.block_start,(i>=s||(i||e===X)&&e!==P&&0===t.strm.avail_in&&i<=n)&&(a=i>n?n:i,r=e===X&&0===t.strm.avail_in&&a===i?1:0,H(t,t.block_start,a,r),t.block_start+=a,ct(t.strm)),r?3:1)},vt=(t,e)=>{let a,i;for(;;){if(t.lookahead<262){if(pt(t),t.lookahead<262&&e===P)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-262&&(t.match_length=gt(t,a)),t.match_length>=3)if(i=j(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=ft(t,t.ins_h,t.window[t.strstart+1]);else i=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2},yt=(t,e)=>{let a,i,n;for(;;){if(t.lookahead<262){if(pt(t),t.lookahead<262&&e===P)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-262&&(t.match_length=gt(t,a),t.match_length<=5&&(t.strategy===et||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=j(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(ut(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=j(t,0,t.window[t.strstart-1]),i&&ut(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=j(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2};function xt(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const zt=[new xt(0,0,0,0,kt),new xt(4,4,8,4,vt),new xt(4,5,16,8,vt),new xt(4,6,32,32,vt),new xt(4,4,16,16,yt),new xt(8,16,32,32,yt),new xt(8,16,128,128,yt),new xt(8,32,128,256,yt),new xt(32,128,258,1024,yt),new xt(32,258,258,4096,yt)];function At(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ot,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),dt(this.dyn_ltree),dt(this.dyn_dtree),dt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),dt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),dt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Et=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||42!==e.status&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&113!==e.status&&666!==e.status?1:0},Rt=t=>{if(Et(t))return lt(t,Q);t.total_in=t.total_out=0,t.data_type=rt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?42:113,t.adler=2===e.wrap?0:1,e.last_flush=-2,C(e),W},Zt=t=>{const e=Rt(t);var a;return e===W&&((a=t.state).window_size=2*a.w_size,dt(a.head),a.max_lazy_match=zt[a.level].max_lazy,a.good_match=zt[a.level].good_length,a.nice_match=zt[a.level].nice_length,a.max_chain_length=zt[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},St=(t,e,a,i,n,s)=>{if(!t)return Q;let r=1;if(e===tt&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==ot||i<8||i>15||e<0||e>9||s<0||s>nt||8===i&&1!==r)return lt(t,Q);8===i&&(i=9);const o=new At;return t.state=o,o.strm=t,o.status=42,o.wrap=r,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=n+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+3-1)/3),o.window=new Uint8Array(2*o.w_size),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<n+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=3*(o.lit_bufsize-1),o.level=e,o.strategy=s,o.method=a,Zt(t)};var Ut={deflateInit:(t,e)=>St(t,e,ot,15,8,st),deflateInit2:St,deflateReset:Zt,deflateResetKeep:Rt,deflateSetHeader:(t,e)=>Et(t)||2!==t.state.wrap?Q:(t.state.gzhead=e,W),deflate:(t,e)=>{if(Et(t)||e>J||e<0)return t?lt(t,Q):Q;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||666===a.status&&e!==X)return lt(t,0===t.avail_out?$:Q);const i=a.last_flush;if(a.last_flush=e,0!==a.pending){if(ct(t),0===t.avail_out)return a.last_flush=-1,W}else if(0===t.avail_in&&ht(e)<=ht(i)&&e!==X)return lt(t,$);if(666===a.status&&0!==t.avail_in)return lt(t,$);if(42===a.status&&0===a.wrap&&(a.status=113),42===a.status){let e=ot+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=at||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=i<<6,0!==a.strstart&&(e|=32),e+=31-e%31,mt(a,e),0!==a.strstart&&(mt(a,t.adler>>>16),mt(a,65535&t.adler)),t.adler=1,a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,W}if(57===a.status)if(t.adler=0,wt(a,31),wt(a,139),wt(a,8),a.gzhead)wt(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),wt(a,255&a.gzhead.time),wt(a,a.gzhead.time>>8&255),wt(a,a.gzhead.time>>16&255),wt(a,a.gzhead.time>>24&255),wt(a,9===a.level?2:a.strategy>=at||a.level<2?4:0),wt(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(wt(a,255&a.gzhead.extra.length),wt(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=L(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(wt(a,0),wt(a,0),wt(a,0),wt(a,0),wt(a,0),wt(a,9===a.level?2:a.strategy>=at||a.level<2?4:0),wt(a,3),a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,W;if(69===a.status){if(a.gzhead.extra){let e=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let n=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+n),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=L(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=n,ct(t),0!==a.pending)return a.last_flush=-1,W;e=0,i-=n}let n=new Uint8Array(a.gzhead.extra);a.pending_buf.set(n.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>e&&(t.adler=L(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i)),ct(t),0!==a.pending)return a.last_flush=-1,W;i=0}e=a.gzindex<a.gzhead.name.length?255&a.gzhead.name.charCodeAt(a.gzindex++):0,wt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i)),ct(t),0!==a.pending)return a.last_flush=-1,W;i=0}e=a.gzindex<a.gzhead.comment.length?255&a.gzhead.comment.charCodeAt(a.gzindex++):0,wt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(ct(t),0!==a.pending))return a.last_flush=-1,W;wt(a,255&t.adler),wt(a,t.adler>>8&255),t.adler=0}if(a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,W}if(0!==t.avail_in||0!==a.lookahead||e!==P&&666!==a.status){let i=0===a.level?kt(a,e):a.strategy===at?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(pt(t),0===t.lookahead)){if(e===P)return 1;break}if(t.match_length=0,a=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===it?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=258){if(pt(t),t.lookahead<=258&&e===P)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+258;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&n<s);t.match_length=258-(s-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=j(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2})(a,e):zt[a.level].func(a,e);if(3!==i&&4!==i||(a.status=666),1===i||3===i)return 0===t.avail_out&&(a.last_flush=-1),W;if(2===i&&(e===Y?K(a):e!==J&&(H(a,0,0,!1),e===G&&(dt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),ct(t),0===t.avail_out))return a.last_flush=-1,W}return e!==X?W:a.wrap<=0?q:(2===a.wrap?(wt(a,255&t.adler),wt(a,t.adler>>8&255),wt(a,t.adler>>16&255),wt(a,t.adler>>24&255),wt(a,255&t.total_in),wt(a,t.total_in>>8&255),wt(a,t.total_in>>16&255),wt(a,t.total_in>>24&255)):(mt(a,t.adler>>>16),mt(a,65535&t.adler)),ct(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?W:q)},deflateEnd:t=>{if(Et(t))return Q;const e=t.state.status;return t.state=null,113===e?lt(t,V):W},deflateSetDictionary:(t,e)=>{let a=e.length;if(Et(t))return Q;const i=t.state,n=i.wrap;if(2===n||1===n&&42!==i.status||i.lookahead)return Q;if(1===n&&(t.adler=N(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(dt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,pt(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=ft(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,pt(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=o,t.avail_in=s,i.wrap=n,W},deflateInfo:"pako deflate (from Nodeca project)"};const Dt=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Ot=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Dt(a,e)&&(t[e]=a[e])}}return t},Tt=t=>{let e=0;for(let a=0,i=t.length;a<i;a++)e+=t[a].length;const a=new Uint8Array(e);for(let e=0,i=0,n=t.length;e<n;e++){let n=t[e];a.set(n,i),i+=n.length}return a};let Nt=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){Nt=!1}const Ft=new Uint8Array(256);for(let t=0;t<256;t++)Ft[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Ft[254]=Ft[254]=1;var Lt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,o=0;for(n=0;n<r;n++)a=t.charCodeAt(n),55296==(64512&a)&&n+1<r&&(i=t.charCodeAt(n+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),n++)),o+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(o),s=0,n=0;s<o;n++)a=t.charCodeAt(n),55296==(64512&a)&&n+1<r&&(i=t.charCodeAt(n+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),n++)),a<128?e[s++]=a:a<2048?(e[s++]=192|a>>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},It=(t,e)=>{const a=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i<a;){let e=t[i++];if(e<128){s[n++]=e;continue}let r=Ft[e];if(r>4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i<a;)e=e<<6|63&t[i++],r--;r>1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Nt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i<e;i++)a+=String.fromCharCode(t[i]);return a})(s,n)},Bt=(t,e)=>{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Ft[t[a]]>e?a:e};var Ct=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Ht=Object.prototype.toString,{Z_NO_FLUSH:Mt,Z_SYNC_FLUSH:jt,Z_FULL_FLUSH:Kt,Z_FINISH:Pt,Z_OK:Yt,Z_STREAM_END:Gt,Z_DEFAULT_COMPRESSION:Xt,Z_DEFAULT_STRATEGY:Jt,Z_DEFLATED:Wt}=B;function qt(t){this.options=Ot({level:Xt,method:Wt,chunkSize:16384,windowBits:15,memLevel:8,strategy:Jt},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;let a=Ut.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==Yt)throw new Error(I[a]);if(e.header&&Ut.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Lt(e.dictionary):"[object ArrayBuffer]"===Ht.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=Ut.deflateSetDictionary(this.strm,t),a!==Yt)throw new Error(I[a]);this._dict_set=!0}}function Qt(t,e){const a=new qt(e);if(a.push(t,!0),a.err)throw a.msg||I[a.err];return a.result}qt.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?Pt:Mt,"string"==typeof t?a.input=Lt(t):"[object ArrayBuffer]"===Ht.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===jt||s===Kt)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=Ut.deflate(a,s),n===Gt)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=Ut.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===Yt;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},qt.prototype.onData=function(t){this.chunks.push(t)},qt.prototype.onEnd=function(t){t===Yt&&(this.result=Tt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var Vt={Deflate:qt,deflate:Qt,deflateRaw:function(t,e){return(e=e||{}).raw=!0,Qt(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,Qt(t,e)},constants:B};var $t=function(t,e){let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),o=E.dmax,l=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,m=(1<<E.lenbits)-1,b=(1<<E.distbits)-1;t:do{c<15&&(f+=z[a++]<<c,c+=8,f+=z[a++]<<c,c+=8),g=u[f&m];e:for(;;){if(p=g>>>24,f>>>=p,c-=p,p=g>>>16&255,0===p)A[n++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=u[(65535&g)+(f&(1<<p)-1)];continue e}if(32&p){E.mode=16191;break t}t.msg="invalid literal/length code",E.mode=16209;break t}k=65535&g,p&=15,p&&(c<p&&(f+=z[a++]<<c,c+=8),k+=f&(1<<p)-1,f>>>=p,c-=p),c<15&&(f+=z[a++]<<c,c+=8,f+=z[a++]<<c,c+=8),g=w[f&b];a:for(;;){if(p=g>>>24,f>>>=p,c-=p,p=g>>>16&255,!(16&p)){if(0==(64&p)){g=w[(65535&g)+(f&(1<<p)-1)];continue a}t.msg="invalid distance code",E.mode=16209;break t}if(v=65535&g,p&=15,c<p&&(f+=z[a++]<<c,c+=8,c<p&&(f+=z[a++]<<c,c+=8)),v+=f&(1<<p)-1,v>o){t.msg="invalid distance too far back",E.mode=16209;break t}if(f>>>=p,c-=p,p=n-s,v>p){if(p=v-p,p>h&&E.sane){t.msg="invalid distance too far back",E.mode=16209;break t}if(y=0,x=_,0===d){if(y+=l-p,p<k){k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}}else if(d<p){if(y+=l+d-p,p-=d,p<k){k-=p;do{A[n++]=_[y++]}while(--p);if(y=0,d<k){p=d,k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}}}else if(y+=d-p,p<k){k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}for(;k>2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a<i&&n<r);k=c>>3,a-=k,c-=k<<3,f&=(1<<c)-1,t.next_in=a,t.next_out=n,t.avail_in=a<i?i-a+5:5-(a-i),t.avail_out=n<r?r-n+257:257-(n-r),E.hold=f,E.bits=c};const te=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),ee=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),ae=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),ie=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var ne=(t,e,a,i,n,s,r,o)=>{const l=o.bits;let h,d,_,f,c,u,w=0,m=0,b=0,g=0,p=0,k=0,v=0,y=0,x=0,z=0,A=null;const E=new Uint16Array(16),R=new Uint16Array(16);let Z,S,U,D=null;for(w=0;w<=15;w++)E[w]=0;for(m=0;m<i;m++)E[e[a+m]]++;for(p=l,g=15;g>=1&&0===E[g];g--);if(p>g&&(p=g),0===g)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(b=1;b<g&&0===E[b];b++);for(p<b&&(p=b),y=1,w=1;w<=15;w++)if(y<<=1,y-=E[w],y<0)return-1;if(y>0&&(0===t||1!==g))return-1;for(R[1]=0,w=1;w<15;w++)R[w+1]=R[w]+E[w];for(m=0;m<i;m++)0!==e[a+m]&&(r[R[e[a+m]]++]=m);if(0===t?(A=D=r,u=20):1===t?(A=te,D=ee,u=257):(A=ae,D=ie,u=0),z=0,m=0,w=b,c=s,k=p,v=0,_=-1,x=1<<p,f=x-1,1===t&&x>852||2===t&&x>592)return 1;for(;;){Z=w-v,r[m]+1<u?(S=0,U=r[m]):r[m]>=u?(S=D[r[m]-u],U=A[r[m]-u]):(S=96,U=0),h=1<<w-v,d=1<<k,b=d;do{d-=h,n[c+(z>>v)+d]=Z<<24|S<<16|U|0}while(0!==d);for(h=1<<w-1;z&h;)h>>=1;if(0!==h?(z&=h-1,z+=h):z=0,m++,0==--E[w]){if(w===g)break;w=e[a+r[m]]}if(w>p&&(z&f)!==_){for(0===v&&(v=p),c+=b,k=w-v,y=1<<k;k+v<g&&(y-=E[k+v],!(y<=0));)k++,y<<=1;if(x+=1<<k,1===t&&x>852||2===t&&x>592)return 1;_=z&f,n[_]=p<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),o.bits=p,0};const{Z_FINISH:se,Z_BLOCK:re,Z_TREES:oe,Z_OK:le,Z_STREAM_END:he,Z_NEED_DICT:de,Z_STREAM_ERROR:_e,Z_DATA_ERROR:fe,Z_MEM_ERROR:ce,Z_BUF_ERROR:ue,Z_DEFLATED:we}=B,me=16209,be=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function ge(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const pe=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode<16180||e.mode>16211?1:0},ke=t=>{if(pe(t))return _e;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=16180,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,le},ve=t=>{if(pe(t))return _e;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,ke(t)},ye=(t,e)=>{let a;if(pe(t))return _e;const i=t.state;return e<0?(a=0,e=-e):(a=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?_e:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,ve(t))},xe=(t,e)=>{if(!t)return _e;const a=new ge;t.state=a,a.strm=t,a.window=null,a.mode=16180;const i=ye(t,e);return i!==le&&(t.state=null),i};let ze,Ae,Ee=!0;const Re=t=>{if(Ee){ze=new Int32Array(512),Ae=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(ne(1,t.lens,0,288,ze,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;ne(2,t.lens,0,32,Ae,0,t.work,{bits:5}),Ee=!1}t.lencode=ze,t.lenbits=9,t.distcode=Ae,t.distbits=5},Ze=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new Uint8Array(s.wsize)),i>=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=n))),0};var Se={inflateReset:ve,inflateReset2:ye,inflateResetKeep:ke,inflateInit:t=>xe(t,15),inflateInit2:xe,inflate:(t,e)=>{let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(pe(t)||!t.output||!t.input&&0!==t.avail_in)return _e;a=t.state,16191===a.mode&&(a.mode=16192),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,_=o,f=l,x=le;t:for(;;)switch(a.mode){case 16180:if(0===a.wrap){a.mode=16192;break}for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(2&a.wrap&&35615===h){0===a.wbits&&(a.wbits=15),a.check=0,A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0),h=0,d=0,a.mode=16181;break}if(a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=me;break}if((15&h)!==we){t.msg="unknown compression method",a.mode=me;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits&&(a.wbits=y),y>15||y>a.wbits){t.msg="invalid window size",a.mode=me;break}a.dmax=1<<a.wbits,a.flags=0,t.adler=a.check=1,a.mode=512&h?16189:16191,h=0,d=0;break;case 16181:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(a.flags=h,(255&a.flags)!==we){t.msg="unknown compression method",a.mode=me;break}if(57344&a.flags){t.msg="unknown header flags set",a.mode=me;break}a.head&&(a.head.text=h>>8&1),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0)),h=0,d=0,a.mode=16182;case 16182:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.head&&(a.head.time=h),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=L(a.check,A,4,0)),h=0,d=0,a.mode=16183;case 16183:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.head&&(a.head.xflags=255&h,a.head.os=h>>8),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0)),h=0,d=0,a.mode=16184;case 16184:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.length=h,a.head&&(a.head.extra_len=h),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=16185;case 16185:if(1024&a.flags&&(c=a.length,c>o&&(c=o),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&4&a.wrap&&(a.check=L(a.check,i,c,s)),o-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=16186;case 16186:if(2048&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c<o);if(512&a.flags&&4&a.wrap&&(a.check=L(a.check,i,c,s)),o-=c,s+=c,y)break t}else a.head&&(a.head.name=null);a.length=0,a.mode=16187;case 16187:if(4096&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.comment+=String.fromCharCode(y))}while(y&&c<o);if(512&a.flags&&4&a.wrap&&(a.check=L(a.check,i,c,s)),o-=c,s+=c,y)break t}else a.head&&(a.head.comment=null);a.mode=16188;case 16188:if(512&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(4&a.wrap&&h!==(65535&a.check)){t.msg="header crc mismatch",a.mode=me;break}h=0,d=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=16191;break;case 16189:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}t.adler=a.check=be(h),h=0,d=0,a.mode=16190;case 16190:if(0===a.havedict)return t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,de;t.adler=a.check=1,a.mode=16191;case 16191:if(e===re||e===oe)break t;case 16192:if(a.last){h>>>=7&d,d-=7&d,a.mode=16206;break}for(;d<3;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}switch(a.last=1&h,h>>>=1,d-=1,3&h){case 0:a.mode=16193;break;case 1:if(Re(a),a.mode=16199,e===oe){h>>>=2,d-=2;break t}break;case 2:a.mode=16196;break;case 3:t.msg="invalid block type",a.mode=me}h>>>=2,d-=2;break;case 16193:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if((65535&h)!=(h>>>16^65535)){t.msg="invalid stored block lengths",a.mode=me;break}if(a.length=65535&h,h=0,d=0,a.mode=16194,e===oe)break t;case 16194:a.mode=16195;case 16195:if(c=a.length,c){if(c>o&&(c=o),c>l&&(c=l),0===c)break t;n.set(i.subarray(s,s+c),r),o-=c,s+=c,l-=c,r+=c,a.length-=c;break}a.mode=16191;break;case 16196:for(;d<14;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(a.nlen=257+(31&h),h>>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=me;break}a.have=0,a.mode=16197;case 16197:for(;a.have<a.ncode;){for(;d<3;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.lens[Z[a.have++]]=7&h,h>>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=ne(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=me;break}a.have=0,a.mode=16198;case 16198:for(;a.have<a.nlen+a.ndist;){for(;z=a.lencode[h&(1<<a.lenbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(g<16)h>>>=m,d-=m,a.lens[a.have++]=g;else{if(16===g){for(R=m+2;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(h>>>=m,d-=m,0===a.have){t.msg="invalid bit length repeat",a.mode=me;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===g){for(R=m+3;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=m,d-=m,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=m+7;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=m,d-=m,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=me;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===me)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=me;break}if(a.lenbits=9,E={bits:a.lenbits},x=ne(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=me;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=ne(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=me;break}if(a.mode=16199,e===oe)break t;case 16199:a.mode=16200;case 16200:if(o>=6&&l>=258){t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,$t(t,f),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,16191===a.mode&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<<a.lenbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(b&&0==(240&b)){for(p=m,k=b,v=g;z=a.lencode[v+((h&(1<<p+k)-1)>>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,a.length=g,0===b){a.mode=16205;break}if(32&b){a.back=-1,a.mode=16191;break}if(64&b){t.msg="invalid literal/length code",a.mode=me;break}a.extra=15&b,a.mode=16201;case 16201:if(a.extra){for(R=a.extra;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.length+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=16202;case 16202:for(;z=a.distcode[h&(1<<a.distbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(0==(240&b)){for(p=m,k=b,v=g;z=a.distcode[v+((h&(1<<p+k)-1)>>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,64&b){t.msg="invalid distance code",a.mode=me;break}a.offset=g,a.extra=15&b,a.mode=16203;case 16203:if(a.extra){for(R=a.extra;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.offset+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=me;break}a.mode=16204;case 16204:if(0===l)break t;if(c=f-l,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=me;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>l&&(c=l),l-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=16200);break;case 16205:if(0===l)break t;n[r++]=a.length,l--,a.mode=16200;break;case 16206:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[s++]<<d,d+=8}if(f-=l,t.total_out+=f,a.total+=f,4&a.wrap&&f&&(t.adler=a.check=a.flags?L(a.check,n,f,r-f):N(a.check,n,f,r-f)),f=l,4&a.wrap&&(a.flags?h:be(h))!==a.check){t.msg="incorrect data check",a.mode=me;break}h=0,d=0}a.mode=16207;case 16207:if(a.wrap&&a.flags){for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(4&a.wrap&&h!==(4294967295&a.total)){t.msg="incorrect length check",a.mode=me;break}h=0,d=0}a.mode=16208;case 16208:x=he;break t;case me:x=fe;break t;case 16210:return ce;default:return _e}return t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,(a.wsize||f!==t.avail_out&&a.mode<me&&(a.mode<16206||e!==se))&&Ze(t,t.output,t.next_out,f-t.avail_out),_-=t.avail_in,f-=t.avail_out,t.total_in+=_,t.total_out+=f,a.total+=f,4&a.wrap&&f&&(t.adler=a.check=a.flags?L(a.check,n,f,t.next_out-f):N(a.check,n,f,t.next_out-f)),t.data_type=a.bits+(a.last?64:0)+(16191===a.mode?128:0)+(16199===a.mode||16194===a.mode?256:0),(0===_&&0===f||e===se)&&x===le&&(x=ue),x},inflateEnd:t=>{if(pe(t))return _e;let e=t.state;return e.window&&(e.window=null),t.state=null,le},inflateGetHeader:(t,e)=>{if(pe(t))return _e;const a=t.state;return 0==(2&a.wrap)?_e:(a.head=e,e.done=!1,le)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return pe(t)?_e:(i=t.state,0!==i.wrap&&16190!==i.mode?_e:16190===i.mode&&(n=1,n=N(n,e,a,0),n!==i.check)?fe:(s=Ze(t,e,a,a),s?(i.mode=16210,ce):(i.havedict=1,le)))},inflateInfo:"pako inflate (from Nodeca project)"};var Ue=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const De=Object.prototype.toString,{Z_NO_FLUSH:Oe,Z_FINISH:Te,Z_OK:Ne,Z_STREAM_END:Fe,Z_NEED_DICT:Le,Z_STREAM_ERROR:Ie,Z_DATA_ERROR:Be,Z_MEM_ERROR:Ce}=B;function He(t){this.options=Ot({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;let a=Se.inflateInit2(this.strm,e.windowBits);if(a!==Ne)throw new Error(I[a]);if(this.header=new Ue,Se.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Lt(e.dictionary):"[object ArrayBuffer]"===De.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=Se.inflateSetDictionary(this.strm,e.dictionary),a!==Ne)))throw new Error(I[a])}He.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,o;if(this.ended)return!1;for(r=e===~~e?e:!0===e?Te:Oe,"[object ArrayBuffer]"===De.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=Se.inflate(a,r),s===Le&&n&&(s=Se.inflateSetDictionary(a,n),s===Ne?s=Se.inflate(a,r):s===Be&&(s=Le));a.avail_in>0&&s===Fe&&a.state.wrap>0&&0!==t[a.next_in];)Se.inflateReset(a),s=Se.inflate(a,r);switch(s){case Ie:case Be:case Le:case Ce:return this.onEnd(s),this.ended=!0,!1}if(o=a.avail_out,a.next_out&&(0===a.avail_out||s===Fe))if("string"===this.options.to){let t=Bt(a.output,a.next_out),e=a.next_out-t,n=It(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==Ne||0!==o){if(s===Fe)return s=Se.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},He.prototype.onData=function(t){this.chunks.push(t)},He.prototype.onEnd=function(t){t===Ne&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Tt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};const{Deflate:Me,deflate:je,deflateRaw:Ke,gzip:Pe}=Vt;var Ye=Me,Ge=B;const Xe=new class{constructor(){this.added=0,this.init()}init(){this.added=0,this.deflate=new Ye,this.deflate.push("[",Ge.Z_NO_FLUSH)}addEvent(t){if(!t)throw new Error("Adding invalid event");const e=this.added>0?",":"";this.deflate.push(e+JSON.stringify(t),Ge.Z_SYNC_FLUSH),this.added++}finish(){if(this.deflate.push("]",Ge.Z_FINISH),this.deflate.err)throw this.deflate.err;const t=this.deflate.result;return this.init(),t}},Je={init:()=>(Xe.init(),""),addEvent:t=>Xe.addEvent(t),finish:()=>Xe.finish()};addEventListener("message",(function(t){const e=t.data.method,a=t.data.id,[i]=t.data.args?JSON.parse(t.data.args):[];if(e in Je&&"function"==typeof Je[e])try{const t=Je[e](i);postMessage({id:a,method:e,success:!0,response:t})}catch(t){postMessage({id:a,method:e,success:!1,response:t.message}),console.error(t)}}));`;
|
|
30072
30029
|
|
|
30073
30030
|
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
30074
30031
|
|
|
30032
|
+
/**
|
|
30033
|
+
* Create an event buffer for replays.
|
|
30034
|
+
*/
|
|
30075
30035
|
function createEventBuffer({ useCompression }) {
|
|
30076
30036
|
// eslint-disable-next-line no-restricted-globals
|
|
30077
30037
|
if (useCompression && window.Worker) {
|
|
@@ -30102,21 +30062,30 @@ class EventBufferArray {
|
|
|
30102
30062
|
this._events = [];
|
|
30103
30063
|
}
|
|
30104
30064
|
|
|
30105
|
-
|
|
30106
|
-
this._events
|
|
30065
|
+
get pendingLength() {
|
|
30066
|
+
return this._events.length;
|
|
30107
30067
|
}
|
|
30108
30068
|
|
|
30109
|
-
|
|
30110
|
-
|
|
30069
|
+
/**
|
|
30070
|
+
* Returns the raw events that are buffered. In `EventBufferArray`, this is the
|
|
30071
|
+
* same as `this._events`.
|
|
30072
|
+
*/
|
|
30073
|
+
get pendingEvents() {
|
|
30074
|
+
return this._events;
|
|
30075
|
+
}
|
|
30076
|
+
|
|
30077
|
+
destroy() {
|
|
30078
|
+
this._events = [];
|
|
30111
30079
|
}
|
|
30112
30080
|
|
|
30113
|
-
addEvent(event, isCheckout) {
|
|
30081
|
+
async addEvent(event, isCheckout) {
|
|
30114
30082
|
if (isCheckout) {
|
|
30115
30083
|
this._events = [event];
|
|
30116
30084
|
return;
|
|
30117
30085
|
}
|
|
30118
30086
|
|
|
30119
30087
|
this._events.push(event);
|
|
30088
|
+
return;
|
|
30120
30089
|
}
|
|
30121
30090
|
|
|
30122
30091
|
finish() {
|
|
@@ -30131,16 +30100,44 @@ class EventBufferArray {
|
|
|
30131
30100
|
}
|
|
30132
30101
|
}
|
|
30133
30102
|
|
|
30134
|
-
|
|
30103
|
+
/**
|
|
30104
|
+
* Event buffer that uses a web worker to compress events.
|
|
30105
|
+
* Exported only for testing.
|
|
30106
|
+
*/
|
|
30135
30107
|
class EventBufferCompressionWorker {
|
|
30108
|
+
/**
|
|
30109
|
+
* Keeps track of the list of events since the last flush that have not been compressed.
|
|
30110
|
+
* For example, page is reloaded and a flush attempt is made, but
|
|
30111
|
+
* `finish()` (and thus the flush), does not complete.
|
|
30112
|
+
*/
|
|
30113
|
+
__init() {this._pendingEvents = [];}
|
|
30136
30114
|
|
|
30137
|
-
|
|
30138
|
-
|
|
30115
|
+
__init2() {this._eventBufferItemLength = 0;}
|
|
30116
|
+
__init3() {this._id = 0;}
|
|
30139
30117
|
|
|
30140
|
-
constructor(worker) {EventBufferCompressionWorker.prototype.__init.call(this);EventBufferCompressionWorker.prototype.__init2.call(this);
|
|
30118
|
+
constructor(worker) {EventBufferCompressionWorker.prototype.__init.call(this);EventBufferCompressionWorker.prototype.__init2.call(this);EventBufferCompressionWorker.prototype.__init3.call(this);
|
|
30141
30119
|
this._worker = worker;
|
|
30142
30120
|
}
|
|
30143
30121
|
|
|
30122
|
+
/**
|
|
30123
|
+
* The number of raw events that are buffered. This may not be the same as
|
|
30124
|
+
* the number of events that have been compresed in the worker because
|
|
30125
|
+
* `addEvent` is async.
|
|
30126
|
+
*/
|
|
30127
|
+
get pendingLength() {
|
|
30128
|
+
return this._eventBufferItemLength;
|
|
30129
|
+
}
|
|
30130
|
+
|
|
30131
|
+
/**
|
|
30132
|
+
* Returns a list of the raw recording events that are being compressed.
|
|
30133
|
+
*/
|
|
30134
|
+
get pendingEvents() {
|
|
30135
|
+
return this._pendingEvents;
|
|
30136
|
+
}
|
|
30137
|
+
|
|
30138
|
+
/**
|
|
30139
|
+
* Destroy the event buffer.
|
|
30140
|
+
*/
|
|
30144
30141
|
destroy() {
|
|
30145
30142
|
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Destroying compression worker');
|
|
30146
30143
|
_optionalChain([this, 'access', _ => _._worker, 'optionalAccess', _2 => _2.terminate, 'call', _3 => _3()]);
|
|
@@ -30148,13 +30145,10 @@ class EventBufferCompressionWorker {
|
|
|
30148
30145
|
}
|
|
30149
30146
|
|
|
30150
30147
|
/**
|
|
30151
|
-
*
|
|
30152
|
-
*
|
|
30148
|
+
* Add an event to the event buffer.
|
|
30149
|
+
*
|
|
30150
|
+
* Returns true if event was successfuly received and processed by worker.
|
|
30153
30151
|
*/
|
|
30154
|
-
get length() {
|
|
30155
|
-
return this._eventBufferItemLength;
|
|
30156
|
-
}
|
|
30157
|
-
|
|
30158
30152
|
async addEvent(event, isCheckout) {
|
|
30159
30153
|
if (isCheckout) {
|
|
30160
30154
|
// This event is a checkout, make sure worker buffer is cleared before
|
|
@@ -30166,9 +30160,17 @@ class EventBufferCompressionWorker {
|
|
|
30166
30160
|
});
|
|
30167
30161
|
}
|
|
30168
30162
|
|
|
30163
|
+
// Don't store checkout events in `_pendingEvents` because they are too large
|
|
30164
|
+
if (!isCheckout) {
|
|
30165
|
+
this._pendingEvents.push(event);
|
|
30166
|
+
}
|
|
30167
|
+
|
|
30169
30168
|
return this._sendEventToWorker(event);
|
|
30170
30169
|
}
|
|
30171
30170
|
|
|
30171
|
+
/**
|
|
30172
|
+
* Finish the event buffer and return the compressed data.
|
|
30173
|
+
*/
|
|
30172
30174
|
finish() {
|
|
30173
30175
|
return this._finishRequest(this._getAndIncrementId());
|
|
30174
30176
|
}
|
|
@@ -30219,7 +30221,10 @@ class EventBufferCompressionWorker {
|
|
|
30219
30221
|
});
|
|
30220
30222
|
}
|
|
30221
30223
|
|
|
30222
|
-
|
|
30224
|
+
/**
|
|
30225
|
+
* Send the event to the worker.
|
|
30226
|
+
*/
|
|
30227
|
+
async _sendEventToWorker(event) {
|
|
30223
30228
|
const promise = this._postMessage({
|
|
30224
30229
|
id: this._getAndIncrementId(),
|
|
30225
30230
|
method: 'addEvent',
|
|
@@ -30232,34 +30237,25 @@ class EventBufferCompressionWorker {
|
|
|
30232
30237
|
return promise;
|
|
30233
30238
|
}
|
|
30234
30239
|
|
|
30240
|
+
/**
|
|
30241
|
+
* Finish the request and return the compressed data from the worker.
|
|
30242
|
+
*/
|
|
30235
30243
|
async _finishRequest(id) {
|
|
30236
30244
|
const promise = this._postMessage({ id, method: 'finish', args: [] });
|
|
30237
30245
|
|
|
30238
30246
|
// XXX: See note in `get length()`
|
|
30239
30247
|
this._eventBufferItemLength = 0;
|
|
30240
30248
|
|
|
30241
|
-
|
|
30242
|
-
}
|
|
30249
|
+
await promise;
|
|
30243
30250
|
|
|
30244
|
-
|
|
30245
|
-
return this._id++;
|
|
30246
|
-
}
|
|
30247
|
-
}
|
|
30248
|
-
|
|
30249
|
-
/**
|
|
30250
|
-
* Deletes a session from storage
|
|
30251
|
-
*/
|
|
30252
|
-
function deleteSession() {
|
|
30253
|
-
const hasSessionStorage = 'sessionStorage' in WINDOW;
|
|
30251
|
+
this._pendingEvents = [];
|
|
30254
30252
|
|
|
30255
|
-
|
|
30256
|
-
return;
|
|
30253
|
+
return promise;
|
|
30257
30254
|
}
|
|
30258
30255
|
|
|
30259
|
-
|
|
30260
|
-
|
|
30261
|
-
|
|
30262
|
-
// Ignore potential SecurityError exceptions
|
|
30256
|
+
/** Get the current ID and increment it for the next call. */
|
|
30257
|
+
_getAndIncrementId() {
|
|
30258
|
+
return this._id++;
|
|
30263
30259
|
}
|
|
30264
30260
|
}
|
|
30265
30261
|
|
|
@@ -30298,6 +30294,9 @@ function isSessionExpired(session, idleTimeout, targetTime = +new Date()) {
|
|
|
30298
30294
|
);
|
|
30299
30295
|
}
|
|
30300
30296
|
|
|
30297
|
+
/**
|
|
30298
|
+
* Save a session to session storage.
|
|
30299
|
+
*/
|
|
30301
30300
|
function saveSession(session) {
|
|
30302
30301
|
const hasSessionStorage = 'sessionStorage' in WINDOW;
|
|
30303
30302
|
if (!hasSessionStorage) {
|
|
@@ -30440,64 +30439,153 @@ function getSession({
|
|
|
30440
30439
|
* Create a "span" for the total amount of memory being used by JS objects
|
|
30441
30440
|
* (including v8 internal objects).
|
|
30442
30441
|
*/
|
|
30443
|
-
function addMemoryEntry(replay) {
|
|
30442
|
+
async function addMemoryEntry(replay) {
|
|
30444
30443
|
// window.performance.memory is a non-standard API and doesn't work on all browsers, so we try-catch this
|
|
30445
30444
|
try {
|
|
30446
|
-
|
|
30447
|
-
|
|
30448
|
-
|
|
30449
|
-
|
|
30445
|
+
return Promise.all(
|
|
30446
|
+
createPerformanceSpans(replay, [
|
|
30447
|
+
// @ts-ignore memory doesn't exist on type Performance as the API is non-standard (we check that it exists above)
|
|
30448
|
+
createMemoryEntry(WINDOW.performance.memory),
|
|
30449
|
+
]),
|
|
30450
|
+
);
|
|
30450
30451
|
} catch (error) {
|
|
30451
30452
|
// Do nothing
|
|
30453
|
+
return [];
|
|
30452
30454
|
}
|
|
30453
30455
|
}
|
|
30454
30456
|
|
|
30455
|
-
function
|
|
30456
|
-
|
|
30457
|
-
|
|
30457
|
+
function createMemoryEntry(memoryEntry) {
|
|
30458
|
+
const { jsHeapSizeLimit, totalJSHeapSize, usedJSHeapSize } = memoryEntry;
|
|
30459
|
+
// we don't want to use `getAbsoluteTime` because it adds the event time to the
|
|
30460
|
+
// time origin, so we get the current timestamp instead
|
|
30461
|
+
const time = new Date().getTime() / 1000;
|
|
30462
|
+
return {
|
|
30463
|
+
type: 'memory',
|
|
30464
|
+
name: 'memory',
|
|
30465
|
+
start: time,
|
|
30466
|
+
end: time,
|
|
30467
|
+
data: {
|
|
30468
|
+
memory: {
|
|
30469
|
+
jsHeapSizeLimit,
|
|
30470
|
+
totalJSHeapSize,
|
|
30471
|
+
usedJSHeapSize,
|
|
30472
|
+
},
|
|
30473
|
+
},
|
|
30474
|
+
};
|
|
30458
30475
|
}
|
|
30459
30476
|
|
|
30460
|
-
|
|
30461
|
-
|
|
30477
|
+
// Map entryType -> function to normalize data for event
|
|
30478
|
+
// @ts-ignore TODO: entry type does not fit the create* functions entry type
|
|
30479
|
+
const ENTRY_TYPES = {
|
|
30480
|
+
// @ts-ignore TODO: entry type does not fit the create* functions entry type
|
|
30481
|
+
resource: createResourceEntry,
|
|
30482
|
+
paint: createPaintEntry,
|
|
30483
|
+
// @ts-ignore TODO: entry type does not fit the create* functions entry type
|
|
30484
|
+
navigation: createNavigationEntry,
|
|
30485
|
+
// @ts-ignore TODO: entry type does not fit the create* functions entry type
|
|
30486
|
+
['largest-contentful-paint']: createLargestContentfulPaint,
|
|
30487
|
+
};
|
|
30462
30488
|
|
|
30463
|
-
|
|
30464
|
-
|
|
30465
|
-
|
|
30489
|
+
/**
|
|
30490
|
+
* Create replay performance entries from the browser performance entries.
|
|
30491
|
+
*/
|
|
30492
|
+
function createPerformanceEntries(entries) {
|
|
30493
|
+
return entries.map(createPerformanceEntry).filter(Boolean) ;
|
|
30494
|
+
}
|
|
30466
30495
|
|
|
30467
|
-
|
|
30468
|
-
|
|
30469
|
-
|
|
30470
|
-
const enc = new TextEncoder();
|
|
30471
|
-
// XXX: newline is needed to separate sequence id from events
|
|
30472
|
-
const sequence = enc.encode(replayHeaders);
|
|
30473
|
-
// Merge the two Uint8Arrays
|
|
30474
|
-
payloadWithSequence = new Uint8Array(sequence.length + events.length);
|
|
30475
|
-
payloadWithSequence.set(sequence);
|
|
30476
|
-
payloadWithSequence.set(events, sequence.length);
|
|
30496
|
+
function createPerformanceEntry(entry) {
|
|
30497
|
+
if (ENTRY_TYPES[entry.entryType] === undefined) {
|
|
30498
|
+
return null;
|
|
30477
30499
|
}
|
|
30478
30500
|
|
|
30479
|
-
return
|
|
30501
|
+
return ENTRY_TYPES[entry.entryType](entry);
|
|
30480
30502
|
}
|
|
30481
30503
|
|
|
30482
|
-
function
|
|
30483
|
-
|
|
30484
|
-
|
|
30485
|
-
|
|
30486
|
-
|
|
30487
|
-
|
|
30488
|
-
|
|
30489
|
-
|
|
30490
|
-
|
|
30491
|
-
|
|
30492
|
-
|
|
30493
|
-
|
|
30494
|
-
|
|
30495
|
-
|
|
30496
|
-
|
|
30497
|
-
|
|
30498
|
-
|
|
30499
|
-
|
|
30500
|
-
|
|
30504
|
+
function getAbsoluteTime(time) {
|
|
30505
|
+
// browserPerformanceTimeOrigin can be undefined if `performance` or
|
|
30506
|
+
// `performance.now` doesn't exist, but this is already checked by this integration
|
|
30507
|
+
return ((browserPerformanceTimeOrigin || WINDOW.performance.timeOrigin) + time) / 1000;
|
|
30508
|
+
}
|
|
30509
|
+
|
|
30510
|
+
// TODO: type definition!
|
|
30511
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
30512
|
+
function createPaintEntry(entry) {
|
|
30513
|
+
const { duration, entryType, name, startTime } = entry;
|
|
30514
|
+
|
|
30515
|
+
const start = getAbsoluteTime(startTime);
|
|
30516
|
+
return {
|
|
30517
|
+
type: entryType,
|
|
30518
|
+
name,
|
|
30519
|
+
start,
|
|
30520
|
+
end: start + duration,
|
|
30521
|
+
};
|
|
30522
|
+
}
|
|
30523
|
+
|
|
30524
|
+
// TODO: type definition!
|
|
30525
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
30526
|
+
function createNavigationEntry(entry) {
|
|
30527
|
+
// TODO: There looks to be some more interesting bits in here (domComplete, domContentLoaded)
|
|
30528
|
+
const { entryType, name, duration, domComplete, startTime, transferSize, type } = entry;
|
|
30529
|
+
|
|
30530
|
+
// Ignore entries with no duration, they do not seem to be useful and cause dupes
|
|
30531
|
+
if (duration === 0) {
|
|
30532
|
+
return null;
|
|
30533
|
+
}
|
|
30534
|
+
|
|
30535
|
+
return {
|
|
30536
|
+
type: `${entryType}.${type}`,
|
|
30537
|
+
start: getAbsoluteTime(startTime),
|
|
30538
|
+
end: getAbsoluteTime(domComplete),
|
|
30539
|
+
name,
|
|
30540
|
+
data: {
|
|
30541
|
+
size: transferSize,
|
|
30542
|
+
duration,
|
|
30543
|
+
},
|
|
30544
|
+
};
|
|
30545
|
+
}
|
|
30546
|
+
|
|
30547
|
+
// TODO: type definition!
|
|
30548
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
30549
|
+
function createResourceEntry(entry) {
|
|
30550
|
+
const { entryType, initiatorType, name, responseEnd, startTime, encodedBodySize, transferSize } = entry;
|
|
30551
|
+
|
|
30552
|
+
// Core SDK handles these
|
|
30553
|
+
if (['fetch', 'xmlhttprequest'].includes(initiatorType)) {
|
|
30554
|
+
return null;
|
|
30555
|
+
}
|
|
30556
|
+
|
|
30557
|
+
return {
|
|
30558
|
+
type: `${entryType}.${initiatorType}`,
|
|
30559
|
+
start: getAbsoluteTime(startTime),
|
|
30560
|
+
end: getAbsoluteTime(responseEnd),
|
|
30561
|
+
name,
|
|
30562
|
+
data: {
|
|
30563
|
+
size: transferSize,
|
|
30564
|
+
encodedBodySize,
|
|
30565
|
+
},
|
|
30566
|
+
};
|
|
30567
|
+
}
|
|
30568
|
+
|
|
30569
|
+
// TODO: type definition!
|
|
30570
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
30571
|
+
function createLargestContentfulPaint(entry) {
|
|
30572
|
+
const { duration, entryType, startTime, size } = entry;
|
|
30573
|
+
|
|
30574
|
+
const start = getAbsoluteTime(startTime);
|
|
30575
|
+
|
|
30576
|
+
return {
|
|
30577
|
+
type: entryType,
|
|
30578
|
+
name: entryType,
|
|
30579
|
+
start,
|
|
30580
|
+
end: start + duration,
|
|
30581
|
+
data: {
|
|
30582
|
+
duration,
|
|
30583
|
+
size,
|
|
30584
|
+
// Not sure why this errors, Node should be correct (Argument of type 'Node' is not assignable to parameter of type 'INode')
|
|
30585
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
30586
|
+
nodeId: record.mirror.getId(entry.element ),
|
|
30587
|
+
},
|
|
30588
|
+
};
|
|
30501
30589
|
}
|
|
30502
30590
|
|
|
30503
30591
|
/**
|
|
@@ -30563,7 +30651,112 @@ function debounce(func, wait, options) {
|
|
|
30563
30651
|
return debounced;
|
|
30564
30652
|
}
|
|
30565
30653
|
|
|
30566
|
-
|
|
30654
|
+
let _originalRecordDroppedEvent;
|
|
30655
|
+
|
|
30656
|
+
/**
|
|
30657
|
+
* Overwrite the `recordDroppedEvent` method on the client, so we can find out which events were dropped.
|
|
30658
|
+
* */
|
|
30659
|
+
function overwriteRecordDroppedEvent(errorIds) {
|
|
30660
|
+
const client = getCurrentHub().getClient();
|
|
30661
|
+
|
|
30662
|
+
if (!client) {
|
|
30663
|
+
return;
|
|
30664
|
+
}
|
|
30665
|
+
|
|
30666
|
+
const _originalCallback = client.recordDroppedEvent.bind(client);
|
|
30667
|
+
|
|
30668
|
+
const recordDroppedEvent = (
|
|
30669
|
+
reason,
|
|
30670
|
+
category,
|
|
30671
|
+
event,
|
|
30672
|
+
) => {
|
|
30673
|
+
if (event && !event.type && event.event_id) {
|
|
30674
|
+
errorIds.delete(event.event_id);
|
|
30675
|
+
}
|
|
30676
|
+
|
|
30677
|
+
return _originalCallback(reason, category, event);
|
|
30678
|
+
};
|
|
30679
|
+
|
|
30680
|
+
client.recordDroppedEvent = recordDroppedEvent;
|
|
30681
|
+
_originalRecordDroppedEvent = _originalCallback;
|
|
30682
|
+
}
|
|
30683
|
+
|
|
30684
|
+
/**
|
|
30685
|
+
* Restore the original method.
|
|
30686
|
+
* */
|
|
30687
|
+
function restoreRecordDroppedEvent() {
|
|
30688
|
+
const client = getCurrentHub().getClient();
|
|
30689
|
+
|
|
30690
|
+
if (!client || !_originalRecordDroppedEvent) {
|
|
30691
|
+
return;
|
|
30692
|
+
}
|
|
30693
|
+
|
|
30694
|
+
client.recordDroppedEvent = _originalRecordDroppedEvent;
|
|
30695
|
+
}
|
|
30696
|
+
|
|
30697
|
+
/**
|
|
30698
|
+
* Create a replay envelope ready to be sent.
|
|
30699
|
+
* This includes both the replay event, as well as the recording data.
|
|
30700
|
+
*/
|
|
30701
|
+
function createReplayEnvelope(
|
|
30702
|
+
replayEvent,
|
|
30703
|
+
recordingData,
|
|
30704
|
+
dsn,
|
|
30705
|
+
tunnel,
|
|
30706
|
+
) {
|
|
30707
|
+
return createEnvelope(
|
|
30708
|
+
createEventEnvelopeHeaders(replayEvent, getSdkMetadataForEnvelopeHeader(replayEvent), tunnel, dsn),
|
|
30709
|
+
[
|
|
30710
|
+
[{ type: 'replay_event' }, replayEvent],
|
|
30711
|
+
[
|
|
30712
|
+
{
|
|
30713
|
+
type: 'replay_recording',
|
|
30714
|
+
// If string then we need to encode to UTF8, otherwise will have
|
|
30715
|
+
// wrong size. TextEncoder has similar browser support to
|
|
30716
|
+
// MutationObserver, although it does not accept IE11.
|
|
30717
|
+
length:
|
|
30718
|
+
typeof recordingData === 'string' ? new TextEncoder().encode(recordingData).length : recordingData.length,
|
|
30719
|
+
},
|
|
30720
|
+
recordingData,
|
|
30721
|
+
],
|
|
30722
|
+
],
|
|
30723
|
+
);
|
|
30724
|
+
}
|
|
30725
|
+
|
|
30726
|
+
/**
|
|
30727
|
+
* Prepare the recording data ready to be sent.
|
|
30728
|
+
*/
|
|
30729
|
+
function prepareRecordingData({
|
|
30730
|
+
recordingData,
|
|
30731
|
+
headers,
|
|
30732
|
+
}
|
|
30733
|
+
|
|
30734
|
+
) {
|
|
30735
|
+
let payloadWithSequence;
|
|
30736
|
+
|
|
30737
|
+
// XXX: newline is needed to separate sequence id from events
|
|
30738
|
+
const replayHeaders = `${JSON.stringify(headers)}
|
|
30739
|
+
`;
|
|
30740
|
+
|
|
30741
|
+
if (typeof recordingData === 'string') {
|
|
30742
|
+
payloadWithSequence = `${replayHeaders}${recordingData}`;
|
|
30743
|
+
} else {
|
|
30744
|
+
const enc = new TextEncoder();
|
|
30745
|
+
// XXX: newline is needed to separate sequence id from events
|
|
30746
|
+
const sequence = enc.encode(replayHeaders);
|
|
30747
|
+
// Merge the two Uint8Arrays
|
|
30748
|
+
payloadWithSequence = new Uint8Array(sequence.length + recordingData.length);
|
|
30749
|
+
payloadWithSequence.set(sequence);
|
|
30750
|
+
payloadWithSequence.set(recordingData, sequence.length);
|
|
30751
|
+
}
|
|
30752
|
+
|
|
30753
|
+
return payloadWithSequence;
|
|
30754
|
+
}
|
|
30755
|
+
|
|
30756
|
+
/**
|
|
30757
|
+
* Prepare a replay event & enrich it with the SDK metadata.
|
|
30758
|
+
*/
|
|
30759
|
+
async function prepareReplayEvent({
|
|
30567
30760
|
client,
|
|
30568
30761
|
scope,
|
|
30569
30762
|
replayId: event_id,
|
|
@@ -30589,59 +30782,218 @@ async function getReplayEvent({
|
|
|
30589
30782
|
|
|
30590
30783
|
preparedEvent.sdk = {
|
|
30591
30784
|
...preparedEvent.sdk,
|
|
30592
|
-
version: "7.
|
|
30785
|
+
version: "7.31.0",
|
|
30593
30786
|
name,
|
|
30594
30787
|
};
|
|
30595
30788
|
|
|
30596
30789
|
return preparedEvent;
|
|
30597
30790
|
}
|
|
30598
30791
|
|
|
30599
|
-
|
|
30792
|
+
/**
|
|
30793
|
+
* Send replay attachment using `fetch()`
|
|
30794
|
+
*/
|
|
30795
|
+
async function sendReplayRequest({
|
|
30796
|
+
recordingData,
|
|
30797
|
+
replayId,
|
|
30798
|
+
segmentId: segment_id,
|
|
30799
|
+
includeReplayStartTimestamp,
|
|
30800
|
+
eventContext,
|
|
30801
|
+
timestamp,
|
|
30802
|
+
session,
|
|
30803
|
+
options,
|
|
30804
|
+
}) {
|
|
30805
|
+
const preparedRecordingData = prepareRecordingData({
|
|
30806
|
+
recordingData,
|
|
30807
|
+
headers: {
|
|
30808
|
+
segment_id,
|
|
30809
|
+
},
|
|
30810
|
+
});
|
|
30600
30811
|
|
|
30601
|
-
|
|
30602
|
-
const client = getCurrentHub().getClient();
|
|
30812
|
+
const { urls, errorIds, traceIds, initialTimestamp } = eventContext;
|
|
30603
30813
|
|
|
30604
|
-
|
|
30814
|
+
const hub = getCurrentHub();
|
|
30815
|
+
const client = hub.getClient();
|
|
30816
|
+
const scope = hub.getScope();
|
|
30817
|
+
const transport = client && client.getTransport();
|
|
30818
|
+
const dsn = _optionalChain([client, 'optionalAccess', _ => _.getDsn, 'call', _2 => _2()]);
|
|
30819
|
+
|
|
30820
|
+
if (!client || !scope || !transport || !dsn || !session.sampled) {
|
|
30605
30821
|
return;
|
|
30606
30822
|
}
|
|
30607
30823
|
|
|
30608
|
-
const
|
|
30824
|
+
const baseEvent = {
|
|
30825
|
+
// @ts-ignore private api
|
|
30826
|
+
type: REPLAY_EVENT_NAME,
|
|
30827
|
+
...(includeReplayStartTimestamp ? { replay_start_timestamp: initialTimestamp / 1000 } : {}),
|
|
30828
|
+
timestamp: timestamp / 1000,
|
|
30829
|
+
error_ids: errorIds,
|
|
30830
|
+
trace_ids: traceIds,
|
|
30831
|
+
urls,
|
|
30832
|
+
replay_id: replayId,
|
|
30833
|
+
segment_id,
|
|
30834
|
+
replay_type: session.sampled,
|
|
30835
|
+
};
|
|
30609
30836
|
|
|
30610
|
-
const
|
|
30611
|
-
reason,
|
|
30612
|
-
category,
|
|
30613
|
-
event,
|
|
30614
|
-
) => {
|
|
30615
|
-
if (event && !event.type && event.event_id) {
|
|
30616
|
-
errorIds.delete(event.event_id);
|
|
30617
|
-
}
|
|
30837
|
+
const replayEvent = await prepareReplayEvent({ scope, client, replayId, event: baseEvent });
|
|
30618
30838
|
|
|
30619
|
-
|
|
30839
|
+
if (!replayEvent) {
|
|
30840
|
+
// Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions
|
|
30841
|
+
client.recordDroppedEvent('event_processor', 'replay_event', baseEvent);
|
|
30842
|
+
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('An event processor returned `null`, will not send event.');
|
|
30843
|
+
return;
|
|
30844
|
+
}
|
|
30845
|
+
|
|
30846
|
+
replayEvent.tags = {
|
|
30847
|
+
...replayEvent.tags,
|
|
30848
|
+
sessionSampleRate: options.sessionSampleRate,
|
|
30849
|
+
errorSampleRate: options.errorSampleRate,
|
|
30620
30850
|
};
|
|
30621
30851
|
|
|
30622
|
-
|
|
30623
|
-
|
|
30852
|
+
/*
|
|
30853
|
+
For reference, the fully built event looks something like this:
|
|
30854
|
+
{
|
|
30855
|
+
"type": "replay_event",
|
|
30856
|
+
"timestamp": 1670837008.634,
|
|
30857
|
+
"error_ids": [
|
|
30858
|
+
"errorId"
|
|
30859
|
+
],
|
|
30860
|
+
"trace_ids": [
|
|
30861
|
+
"traceId"
|
|
30862
|
+
],
|
|
30863
|
+
"urls": [
|
|
30864
|
+
"https://example.com"
|
|
30865
|
+
],
|
|
30866
|
+
"replay_id": "eventId",
|
|
30867
|
+
"segment_id": 3,
|
|
30868
|
+
"replay_type": "error",
|
|
30869
|
+
"platform": "javascript",
|
|
30870
|
+
"event_id": "eventId",
|
|
30871
|
+
"environment": "production",
|
|
30872
|
+
"sdk": {
|
|
30873
|
+
"integrations": [
|
|
30874
|
+
"BrowserTracing",
|
|
30875
|
+
"Replay"
|
|
30876
|
+
],
|
|
30877
|
+
"name": "sentry.javascript.browser",
|
|
30878
|
+
"version": "7.25.0"
|
|
30879
|
+
},
|
|
30880
|
+
"sdkProcessingMetadata": {},
|
|
30881
|
+
"tags": {
|
|
30882
|
+
"sessionSampleRate": 1,
|
|
30883
|
+
"errorSampleRate": 0,
|
|
30884
|
+
}
|
|
30885
|
+
}
|
|
30886
|
+
*/
|
|
30887
|
+
|
|
30888
|
+
const envelope = createReplayEnvelope(replayEvent, preparedRecordingData, dsn, client.getOptions().tunnel);
|
|
30889
|
+
|
|
30890
|
+
let response;
|
|
30891
|
+
|
|
30892
|
+
try {
|
|
30893
|
+
response = await transport.send(envelope);
|
|
30894
|
+
} catch (e) {
|
|
30895
|
+
throw new Error(UNABLE_TO_SEND_REPLAY);
|
|
30896
|
+
}
|
|
30897
|
+
|
|
30898
|
+
// TODO (v8): we can remove this guard once transport.send's type signature doesn't include void anymore
|
|
30899
|
+
if (!response) {
|
|
30900
|
+
return response;
|
|
30901
|
+
}
|
|
30902
|
+
|
|
30903
|
+
const rateLimits = updateRateLimits({}, response);
|
|
30904
|
+
if (isRateLimited(rateLimits, 'replay')) {
|
|
30905
|
+
throw new RateLimitError(rateLimits);
|
|
30906
|
+
}
|
|
30907
|
+
|
|
30908
|
+
// If the status code is invalid, we want to immediately stop & not retry
|
|
30909
|
+
if (typeof response.statusCode === 'number' && (response.statusCode < 200 || response.statusCode >= 300)) {
|
|
30910
|
+
throw new TransportStatusCodeError(response.statusCode);
|
|
30911
|
+
}
|
|
30912
|
+
|
|
30913
|
+
return response;
|
|
30624
30914
|
}
|
|
30625
30915
|
|
|
30626
|
-
|
|
30627
|
-
|
|
30916
|
+
/**
|
|
30917
|
+
* This error indicates that we hit a rate limit API error.
|
|
30918
|
+
*/
|
|
30919
|
+
class RateLimitError extends Error {
|
|
30628
30920
|
|
|
30629
|
-
|
|
30921
|
+
constructor(rateLimits) {
|
|
30922
|
+
super('Rate limit hit');
|
|
30923
|
+
this.rateLimits = rateLimits;
|
|
30924
|
+
}
|
|
30925
|
+
}
|
|
30926
|
+
|
|
30927
|
+
/**
|
|
30928
|
+
* This error indicates that the transport returned an invalid status code.
|
|
30929
|
+
*/
|
|
30930
|
+
class TransportStatusCodeError extends Error {
|
|
30931
|
+
constructor(statusCode) {
|
|
30932
|
+
super(`Transport returned status code ${statusCode}`);
|
|
30933
|
+
}
|
|
30934
|
+
}
|
|
30935
|
+
|
|
30936
|
+
/**
|
|
30937
|
+
* Finalize and send the current replay event to Sentry
|
|
30938
|
+
*/
|
|
30939
|
+
async function sendReplay(
|
|
30940
|
+
replayData,
|
|
30941
|
+
retryConfig = {
|
|
30942
|
+
count: 0,
|
|
30943
|
+
interval: RETRY_BASE_INTERVAL,
|
|
30944
|
+
},
|
|
30945
|
+
) {
|
|
30946
|
+
const { recordingData, options } = replayData;
|
|
30947
|
+
|
|
30948
|
+
// short circuit if there's no events to upload (this shouldn't happen as _runFlush makes this check)
|
|
30949
|
+
if (!recordingData.length) {
|
|
30630
30950
|
return;
|
|
30631
30951
|
}
|
|
30632
30952
|
|
|
30633
|
-
|
|
30953
|
+
try {
|
|
30954
|
+
await sendReplayRequest(replayData);
|
|
30955
|
+
return true;
|
|
30956
|
+
} catch (err) {
|
|
30957
|
+
if (err instanceof RateLimitError || err instanceof TransportStatusCodeError) {
|
|
30958
|
+
throw err;
|
|
30959
|
+
}
|
|
30960
|
+
|
|
30961
|
+
// Capture error for every failed replay
|
|
30962
|
+
setContext('Replays', {
|
|
30963
|
+
_retryCount: retryConfig.count,
|
|
30964
|
+
});
|
|
30965
|
+
|
|
30966
|
+
if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && options._experiments && options._experiments.captureExceptions) {
|
|
30967
|
+
captureException(err);
|
|
30968
|
+
}
|
|
30969
|
+
|
|
30970
|
+
// If an error happened here, it's likely that uploading the attachment
|
|
30971
|
+
// failed, we'll can retry with the same events payload
|
|
30972
|
+
if (retryConfig.count >= RETRY_MAX_COUNT) {
|
|
30973
|
+
throw new Error(`${UNABLE_TO_SEND_REPLAY} - max retries exceeded`);
|
|
30974
|
+
}
|
|
30975
|
+
|
|
30976
|
+
// will retry in intervals of 5, 10, 30
|
|
30977
|
+
retryConfig.interval *= ++retryConfig.count;
|
|
30978
|
+
|
|
30979
|
+
return await new Promise((resolve, reject) => {
|
|
30980
|
+
setTimeout(async () => {
|
|
30981
|
+
try {
|
|
30982
|
+
await sendReplay(replayData, retryConfig);
|
|
30983
|
+
resolve(true);
|
|
30984
|
+
} catch (err) {
|
|
30985
|
+
reject(err);
|
|
30986
|
+
}
|
|
30987
|
+
}, retryConfig.interval);
|
|
30988
|
+
});
|
|
30989
|
+
}
|
|
30634
30990
|
}
|
|
30635
30991
|
|
|
30636
30992
|
/* eslint-disable max-lines */ // TODO: We might want to split this file up
|
|
30637
30993
|
|
|
30638
30994
|
/**
|
|
30639
|
-
*
|
|
30995
|
+
* The main replay container class, which holds all the state and methods for recording and sending replays.
|
|
30640
30996
|
*/
|
|
30641
|
-
|
|
30642
|
-
const BASE_RETRY_INTERVAL = 5000;
|
|
30643
|
-
const MAX_RETRY_COUNT = 3;
|
|
30644
|
-
|
|
30645
30997
|
class ReplayContainer {
|
|
30646
30998
|
__init() {this.eventBuffer = null;}
|
|
30647
30999
|
|
|
@@ -30663,40 +31015,37 @@ class ReplayContainer {
|
|
|
30663
31015
|
|
|
30664
31016
|
__init4() {this._performanceObserver = null;}
|
|
30665
31017
|
|
|
30666
|
-
__init5() {this.
|
|
30667
|
-
__init6() {this._retryInterval = BASE_RETRY_INTERVAL;}
|
|
30668
|
-
|
|
30669
|
-
__init7() {this._flushLock = null;}
|
|
31018
|
+
__init5() {this._flushLock = null;}
|
|
30670
31019
|
|
|
30671
31020
|
/**
|
|
30672
31021
|
* Timestamp of the last user activity. This lives across sessions.
|
|
30673
31022
|
*/
|
|
30674
|
-
|
|
31023
|
+
__init6() {this._lastActivity = new Date().getTime();}
|
|
30675
31024
|
|
|
30676
31025
|
/**
|
|
30677
31026
|
* Is the integration currently active?
|
|
30678
31027
|
*/
|
|
30679
|
-
|
|
31028
|
+
__init7() {this._isEnabled = false;}
|
|
30680
31029
|
|
|
30681
31030
|
/**
|
|
30682
31031
|
* Paused is a state where:
|
|
30683
31032
|
* - DOM Recording is not listening at all
|
|
30684
31033
|
* - Nothing will be added to event buffer (e.g. core SDK events)
|
|
30685
31034
|
*/
|
|
30686
|
-
|
|
31035
|
+
__init8() {this._isPaused = false;}
|
|
30687
31036
|
|
|
30688
31037
|
/**
|
|
30689
31038
|
* Have we attached listeners to the core SDK?
|
|
30690
31039
|
* Note we have to track this as there is no way to remove instrumentation handlers.
|
|
30691
31040
|
*/
|
|
30692
|
-
|
|
31041
|
+
__init9() {this._hasInitializedCoreListeners = false;}
|
|
30693
31042
|
|
|
30694
31043
|
/**
|
|
30695
31044
|
* Function to stop recording
|
|
30696
31045
|
*/
|
|
30697
|
-
|
|
31046
|
+
__init10() {this._stopRecording = null;}
|
|
30698
31047
|
|
|
30699
|
-
|
|
31048
|
+
__init11() {this._context = {
|
|
30700
31049
|
errorIds: new Set(),
|
|
30701
31050
|
traceIds: new Set(),
|
|
30702
31051
|
urls: [],
|
|
@@ -30705,11 +31054,16 @@ class ReplayContainer {
|
|
|
30705
31054
|
initialUrl: '',
|
|
30706
31055
|
};}
|
|
30707
31056
|
|
|
30708
|
-
|
|
31057
|
+
constructor({
|
|
31058
|
+
options,
|
|
31059
|
+
recordingOptions,
|
|
31060
|
+
}
|
|
31061
|
+
|
|
31062
|
+
) {ReplayContainer.prototype.__init.call(this);ReplayContainer.prototype.__init2.call(this);ReplayContainer.prototype.__init3.call(this);ReplayContainer.prototype.__init4.call(this);ReplayContainer.prototype.__init5.call(this);ReplayContainer.prototype.__init6.call(this);ReplayContainer.prototype.__init7.call(this);ReplayContainer.prototype.__init8.call(this);ReplayContainer.prototype.__init9.call(this);ReplayContainer.prototype.__init10.call(this);ReplayContainer.prototype.__init11.call(this);ReplayContainer.prototype.__init12.call(this);ReplayContainer.prototype.__init13.call(this);ReplayContainer.prototype.__init14.call(this);ReplayContainer.prototype.__init15.call(this);ReplayContainer.prototype.__init16.call(this);ReplayContainer.prototype.__init17.call(this);
|
|
30709
31063
|
this._recordingOptions = recordingOptions;
|
|
30710
31064
|
this._options = options;
|
|
30711
31065
|
|
|
30712
|
-
this._debouncedFlush = debounce(() => this.
|
|
31066
|
+
this._debouncedFlush = debounce(() => this._flush(), this._options.flushMinDelay, {
|
|
30713
31067
|
maxWait: this._options.flushMaxDelay,
|
|
30714
31068
|
});
|
|
30715
31069
|
}
|
|
@@ -30740,14 +31094,14 @@ class ReplayContainer {
|
|
|
30740
31094
|
* Creates or loads a session, attaches listeners to varying events (DOM,
|
|
30741
31095
|
* _performanceObserver, Recording, Sentry SDK, etc)
|
|
30742
31096
|
*/
|
|
30743
|
-
|
|
30744
|
-
this.
|
|
31097
|
+
start() {
|
|
31098
|
+
this._setInitialState();
|
|
30745
31099
|
|
|
30746
|
-
this.
|
|
31100
|
+
this._loadSession({ expiry: SESSION_IDLE_DURATION });
|
|
30747
31101
|
|
|
30748
31102
|
// If there is no session, then something bad has happened - can't continue
|
|
30749
31103
|
if (!this.session) {
|
|
30750
|
-
this.
|
|
31104
|
+
this._handleException(new Error('No session found'));
|
|
30751
31105
|
return;
|
|
30752
31106
|
}
|
|
30753
31107
|
|
|
@@ -30756,23 +31110,21 @@ class ReplayContainer {
|
|
|
30756
31110
|
return;
|
|
30757
31111
|
}
|
|
30758
31112
|
|
|
30759
|
-
//
|
|
30760
|
-
//
|
|
30761
|
-
// when an error will occur, so we need to keep a buffer of
|
|
30762
|
-
// replay events.
|
|
31113
|
+
// If session is sampled for errors, then we need to set the recordingMode
|
|
31114
|
+
// to 'error', which will configure recording with different options.
|
|
30763
31115
|
if (this.session.sampled === 'error') {
|
|
30764
31116
|
this.recordingMode = 'error';
|
|
30765
31117
|
}
|
|
30766
31118
|
|
|
30767
31119
|
// setup() is generally called on page load or manually - in both cases we
|
|
30768
31120
|
// should treat it as an activity
|
|
30769
|
-
this.
|
|
31121
|
+
this._updateSessionActivity();
|
|
30770
31122
|
|
|
30771
31123
|
this.eventBuffer = createEventBuffer({
|
|
30772
31124
|
useCompression: Boolean(this._options.useCompression),
|
|
30773
31125
|
});
|
|
30774
31126
|
|
|
30775
|
-
this.
|
|
31127
|
+
this._addListeners();
|
|
30776
31128
|
|
|
30777
31129
|
// Need to set as enabled before we start recording, as `record()` can trigger a flush with a new checkout
|
|
30778
31130
|
this._isEnabled = true;
|
|
@@ -30785,18 +31137,18 @@ class ReplayContainer {
|
|
|
30785
31137
|
*
|
|
30786
31138
|
* Note that this will cause a new DOM checkout
|
|
30787
31139
|
*/
|
|
30788
|
-
|
|
31140
|
+
startRecording() {
|
|
30789
31141
|
try {
|
|
30790
31142
|
this._stopRecording = record({
|
|
30791
31143
|
...this._recordingOptions,
|
|
30792
|
-
// When running in error sampling mode, we need to overwrite `
|
|
31144
|
+
// When running in error sampling mode, we need to overwrite `checkoutEveryNms`
|
|
30793
31145
|
// Without this, it would record forever, until an error happens, which we don't want
|
|
30794
31146
|
// instead, we'll always keep the last 60 seconds of replay before an error happened
|
|
30795
|
-
...(this.recordingMode === 'error' && {
|
|
30796
|
-
emit: this.
|
|
31147
|
+
...(this.recordingMode === 'error' && { checkoutEveryNms: 60000 }),
|
|
31148
|
+
emit: this._handleRecordingEmit,
|
|
30797
31149
|
});
|
|
30798
31150
|
} catch (err) {
|
|
30799
|
-
this.
|
|
31151
|
+
this._handleException(err);
|
|
30800
31152
|
}
|
|
30801
31153
|
}
|
|
30802
31154
|
|
|
@@ -30817,16 +31169,17 @@ class ReplayContainer {
|
|
|
30817
31169
|
* Currently, this needs to be manually called (e.g. for tests). Sentry SDK
|
|
30818
31170
|
* does not support a teardown
|
|
30819
31171
|
*/
|
|
30820
|
-
|
|
31172
|
+
stop() {
|
|
30821
31173
|
try {
|
|
30822
31174
|
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Stopping Replays');
|
|
30823
31175
|
this._isEnabled = false;
|
|
30824
|
-
this.
|
|
31176
|
+
this._removeListeners();
|
|
30825
31177
|
_optionalChain([this, 'access', _8 => _8._stopRecording, 'optionalCall', _9 => _9()]);
|
|
30826
31178
|
_optionalChain([this, 'access', _10 => _10.eventBuffer, 'optionalAccess', _11 => _11.destroy, 'call', _12 => _12()]);
|
|
30827
31179
|
this.eventBuffer = null;
|
|
31180
|
+
this._debouncedFlush.cancel();
|
|
30828
31181
|
} catch (err) {
|
|
30829
|
-
this.
|
|
31182
|
+
this._handleException(err);
|
|
30830
31183
|
}
|
|
30831
31184
|
}
|
|
30832
31185
|
|
|
@@ -30835,7 +31188,7 @@ class ReplayContainer {
|
|
|
30835
31188
|
* This differs from stop as this only stops DOM recording, it is
|
|
30836
31189
|
* not as thorough of a shutdown as `stop()`.
|
|
30837
31190
|
*/
|
|
30838
|
-
|
|
31191
|
+
pause() {
|
|
30839
31192
|
this._isPaused = true;
|
|
30840
31193
|
try {
|
|
30841
31194
|
if (this._stopRecording) {
|
|
@@ -30843,7 +31196,7 @@ class ReplayContainer {
|
|
|
30843
31196
|
this._stopRecording = undefined;
|
|
30844
31197
|
}
|
|
30845
31198
|
} catch (err) {
|
|
30846
|
-
this.
|
|
31199
|
+
this._handleException(err);
|
|
30847
31200
|
}
|
|
30848
31201
|
}
|
|
30849
31202
|
|
|
@@ -30853,136 +31206,11 @@ class ReplayContainer {
|
|
|
30853
31206
|
* Note that calling `startRecording()` here will cause a
|
|
30854
31207
|
* new DOM checkout.`
|
|
30855
31208
|
*/
|
|
30856
|
-
|
|
31209
|
+
resume() {
|
|
30857
31210
|
this._isPaused = false;
|
|
30858
31211
|
this.startRecording();
|
|
30859
31212
|
}
|
|
30860
31213
|
|
|
30861
|
-
/** A wrapper to conditionally capture exceptions. */
|
|
30862
|
-
handleException(error) {
|
|
30863
|
-
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay]', error);
|
|
30864
|
-
|
|
30865
|
-
if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && this._options._experiments && this._options._experiments.captureExceptions) {
|
|
30866
|
-
captureException(error);
|
|
30867
|
-
}
|
|
30868
|
-
}
|
|
30869
|
-
|
|
30870
|
-
/** for tests only */
|
|
30871
|
-
clearSession() {
|
|
30872
|
-
try {
|
|
30873
|
-
deleteSession();
|
|
30874
|
-
this.session = undefined;
|
|
30875
|
-
} catch (err) {
|
|
30876
|
-
this.handleException(err);
|
|
30877
|
-
}
|
|
30878
|
-
}
|
|
30879
|
-
|
|
30880
|
-
/**
|
|
30881
|
-
* Loads a session from storage, or creates a new one if it does not exist or
|
|
30882
|
-
* is expired.
|
|
30883
|
-
*/
|
|
30884
|
-
loadSession({ expiry }) {
|
|
30885
|
-
const { type, session } = getSession({
|
|
30886
|
-
expiry,
|
|
30887
|
-
stickySession: Boolean(this._options.stickySession),
|
|
30888
|
-
currentSession: this.session,
|
|
30889
|
-
sessionSampleRate: this._options.sessionSampleRate,
|
|
30890
|
-
errorSampleRate: this._options.errorSampleRate,
|
|
30891
|
-
});
|
|
30892
|
-
|
|
30893
|
-
// If session was newly created (i.e. was not loaded from storage), then
|
|
30894
|
-
// enable flag to create the root replay
|
|
30895
|
-
if (type === 'new') {
|
|
30896
|
-
this.setInitialState();
|
|
30897
|
-
}
|
|
30898
|
-
|
|
30899
|
-
if (session.id !== _optionalChain([this, 'access', _13 => _13.session, 'optionalAccess', _14 => _14.id])) {
|
|
30900
|
-
session.previousSessionId = _optionalChain([this, 'access', _15 => _15.session, 'optionalAccess', _16 => _16.id]);
|
|
30901
|
-
}
|
|
30902
|
-
|
|
30903
|
-
this.session = session;
|
|
30904
|
-
}
|
|
30905
|
-
|
|
30906
|
-
/**
|
|
30907
|
-
* Capture some initial state that can change throughout the lifespan of the
|
|
30908
|
-
* replay. This is required because otherwise they would be captured at the
|
|
30909
|
-
* first flush.
|
|
30910
|
-
*/
|
|
30911
|
-
setInitialState() {
|
|
30912
|
-
const urlPath = `${WINDOW.location.pathname}${WINDOW.location.hash}${WINDOW.location.search}`;
|
|
30913
|
-
const url = `${WINDOW.location.origin}${urlPath}`;
|
|
30914
|
-
|
|
30915
|
-
this.performanceEvents = [];
|
|
30916
|
-
|
|
30917
|
-
// Reset _context as well
|
|
30918
|
-
this.clearContext();
|
|
30919
|
-
|
|
30920
|
-
this._context.initialUrl = url;
|
|
30921
|
-
this._context.initialTimestamp = new Date().getTime();
|
|
30922
|
-
this._context.urls.push(url);
|
|
30923
|
-
}
|
|
30924
|
-
|
|
30925
|
-
/**
|
|
30926
|
-
* Adds listeners to record events for the replay
|
|
30927
|
-
*/
|
|
30928
|
-
addListeners() {
|
|
30929
|
-
try {
|
|
30930
|
-
WINDOW.document.addEventListener('visibilitychange', this.handleVisibilityChange);
|
|
30931
|
-
WINDOW.addEventListener('blur', this.handleWindowBlur);
|
|
30932
|
-
WINDOW.addEventListener('focus', this.handleWindowFocus);
|
|
30933
|
-
|
|
30934
|
-
// We need to filter out dropped events captured by `addGlobalEventProcessor(this.handleGlobalEvent)` below
|
|
30935
|
-
overwriteRecordDroppedEvent(this._context.errorIds);
|
|
30936
|
-
|
|
30937
|
-
// There is no way to remove these listeners, so ensure they are only added once
|
|
30938
|
-
if (!this._hasInitializedCoreListeners) {
|
|
30939
|
-
// Listeners from core SDK //
|
|
30940
|
-
const scope = getCurrentHub().getScope();
|
|
30941
|
-
_optionalChain([scope, 'optionalAccess', _17 => _17.addScopeListener, 'call', _18 => _18(this.handleCoreBreadcrumbListener('scope'))]);
|
|
30942
|
-
addInstrumentationHandler('dom', this.handleCoreBreadcrumbListener('dom'));
|
|
30943
|
-
addInstrumentationHandler('fetch', handleFetchSpanListener(this));
|
|
30944
|
-
addInstrumentationHandler('xhr', handleXhrSpanListener(this));
|
|
30945
|
-
addInstrumentationHandler('history', handleHistorySpanListener(this));
|
|
30946
|
-
|
|
30947
|
-
// Tag all (non replay) events that get sent to Sentry with the current
|
|
30948
|
-
// replay ID so that we can reference them later in the UI
|
|
30949
|
-
addGlobalEventProcessor(handleGlobalEventListener(this));
|
|
30950
|
-
|
|
30951
|
-
this._hasInitializedCoreListeners = true;
|
|
30952
|
-
}
|
|
30953
|
-
} catch (err) {
|
|
30954
|
-
this.handleException(err);
|
|
30955
|
-
}
|
|
30956
|
-
|
|
30957
|
-
// _performanceObserver //
|
|
30958
|
-
if (!('_performanceObserver' in WINDOW)) {
|
|
30959
|
-
return;
|
|
30960
|
-
}
|
|
30961
|
-
|
|
30962
|
-
this._performanceObserver = setupPerformanceObserver(this);
|
|
30963
|
-
}
|
|
30964
|
-
|
|
30965
|
-
/**
|
|
30966
|
-
* Cleans up listeners that were created in `addListeners`
|
|
30967
|
-
*/
|
|
30968
|
-
removeListeners() {
|
|
30969
|
-
try {
|
|
30970
|
-
WINDOW.document.removeEventListener('visibilitychange', this.handleVisibilityChange);
|
|
30971
|
-
|
|
30972
|
-
WINDOW.removeEventListener('blur', this.handleWindowBlur);
|
|
30973
|
-
WINDOW.removeEventListener('focus', this.handleWindowFocus);
|
|
30974
|
-
|
|
30975
|
-
restoreRecordDroppedEvent();
|
|
30976
|
-
|
|
30977
|
-
if (this._performanceObserver) {
|
|
30978
|
-
this._performanceObserver.disconnect();
|
|
30979
|
-
this._performanceObserver = null;
|
|
30980
|
-
}
|
|
30981
|
-
} catch (err) {
|
|
30982
|
-
this.handleException(err);
|
|
30983
|
-
}
|
|
30984
|
-
}
|
|
30985
|
-
|
|
30986
31214
|
/**
|
|
30987
31215
|
* We want to batch uploads of replay events. Save events only if
|
|
30988
31216
|
* `<flushMinDelay>` milliseconds have elapsed since the last event
|
|
@@ -30991,9 +31219,9 @@ class ReplayContainer {
|
|
|
30991
31219
|
* Accepts a callback to perform side-effects and returns true to stop batch
|
|
30992
31220
|
* processing and hand back control to caller.
|
|
30993
31221
|
*/
|
|
30994
|
-
|
|
31222
|
+
addUpdate(cb) {
|
|
30995
31223
|
// We need to always run `cb` (e.g. in the case of `this.recordingMode == 'error'`)
|
|
30996
|
-
const cbResult = _optionalChain([cb, 'optionalCall',
|
|
31224
|
+
const cbResult = _optionalChain([cb, 'optionalCall', _13 => _13()]);
|
|
30997
31225
|
|
|
30998
31226
|
// If this option is turned on then we will only want to call `flush`
|
|
30999
31227
|
// explicitly
|
|
@@ -31012,17 +31240,170 @@ class ReplayContainer {
|
|
|
31012
31240
|
this._debouncedFlush();
|
|
31013
31241
|
}
|
|
31014
31242
|
|
|
31243
|
+
/**
|
|
31244
|
+
* Updates the user activity timestamp and resumes recording. This should be
|
|
31245
|
+
* called in an event handler for a user action that we consider as the user
|
|
31246
|
+
* being "active" (e.g. a mouse click).
|
|
31247
|
+
*/
|
|
31248
|
+
triggerUserActivity() {
|
|
31249
|
+
this._updateUserActivity();
|
|
31250
|
+
|
|
31251
|
+
// This case means that recording was once stopped due to inactivity.
|
|
31252
|
+
// Ensure that recording is resumed.
|
|
31253
|
+
if (!this._stopRecording) {
|
|
31254
|
+
// Create a new session, otherwise when the user action is flushed, it
|
|
31255
|
+
// will get rejected due to an expired session.
|
|
31256
|
+
this._loadSession({ expiry: SESSION_IDLE_DURATION });
|
|
31257
|
+
|
|
31258
|
+
// Note: This will cause a new DOM checkout
|
|
31259
|
+
this.resume();
|
|
31260
|
+
return;
|
|
31261
|
+
}
|
|
31262
|
+
|
|
31263
|
+
// Otherwise... recording was never suspended, continue as normalish
|
|
31264
|
+
this._checkAndHandleExpiredSession();
|
|
31265
|
+
|
|
31266
|
+
this._updateSessionActivity();
|
|
31267
|
+
}
|
|
31268
|
+
|
|
31269
|
+
/**
|
|
31270
|
+
*
|
|
31271
|
+
* Always flush via `_debouncedFlush` so that we do not have flushes triggered
|
|
31272
|
+
* from calling both `flush` and `_debouncedFlush`. Otherwise, there could be
|
|
31273
|
+
* cases of mulitple flushes happening closely together.
|
|
31274
|
+
*/
|
|
31275
|
+
flushImmediate() {
|
|
31276
|
+
this._debouncedFlush();
|
|
31277
|
+
// `.flush` is provided by the debounced function, analogously to lodash.debounce
|
|
31278
|
+
return this._debouncedFlush.flush() ;
|
|
31279
|
+
}
|
|
31280
|
+
|
|
31281
|
+
/** A wrapper to conditionally capture exceptions. */
|
|
31282
|
+
_handleException(error) {
|
|
31283
|
+
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay]', error);
|
|
31284
|
+
|
|
31285
|
+
if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && this._options._experiments && this._options._experiments.captureExceptions) {
|
|
31286
|
+
captureException(error);
|
|
31287
|
+
}
|
|
31288
|
+
}
|
|
31289
|
+
|
|
31290
|
+
/**
|
|
31291
|
+
* Loads a session from storage, or creates a new one if it does not exist or
|
|
31292
|
+
* is expired.
|
|
31293
|
+
*/
|
|
31294
|
+
_loadSession({ expiry }) {
|
|
31295
|
+
const { type, session } = getSession({
|
|
31296
|
+
expiry,
|
|
31297
|
+
stickySession: Boolean(this._options.stickySession),
|
|
31298
|
+
currentSession: this.session,
|
|
31299
|
+
sessionSampleRate: this._options.sessionSampleRate,
|
|
31300
|
+
errorSampleRate: this._options.errorSampleRate,
|
|
31301
|
+
});
|
|
31302
|
+
|
|
31303
|
+
// If session was newly created (i.e. was not loaded from storage), then
|
|
31304
|
+
// enable flag to create the root replay
|
|
31305
|
+
if (type === 'new') {
|
|
31306
|
+
this._setInitialState();
|
|
31307
|
+
}
|
|
31308
|
+
|
|
31309
|
+
if (session.id !== _optionalChain([this, 'access', _14 => _14.session, 'optionalAccess', _15 => _15.id])) {
|
|
31310
|
+
session.previousSessionId = _optionalChain([this, 'access', _16 => _16.session, 'optionalAccess', _17 => _17.id]);
|
|
31311
|
+
}
|
|
31312
|
+
|
|
31313
|
+
this.session = session;
|
|
31314
|
+
}
|
|
31315
|
+
|
|
31316
|
+
/**
|
|
31317
|
+
* Capture some initial state that can change throughout the lifespan of the
|
|
31318
|
+
* replay. This is required because otherwise they would be captured at the
|
|
31319
|
+
* first flush.
|
|
31320
|
+
*/
|
|
31321
|
+
_setInitialState() {
|
|
31322
|
+
const urlPath = `${WINDOW.location.pathname}${WINDOW.location.hash}${WINDOW.location.search}`;
|
|
31323
|
+
const url = `${WINDOW.location.origin}${urlPath}`;
|
|
31324
|
+
|
|
31325
|
+
this.performanceEvents = [];
|
|
31326
|
+
|
|
31327
|
+
// Reset _context as well
|
|
31328
|
+
this._clearContext();
|
|
31329
|
+
|
|
31330
|
+
this._context.initialUrl = url;
|
|
31331
|
+
this._context.initialTimestamp = new Date().getTime();
|
|
31332
|
+
this._context.urls.push(url);
|
|
31333
|
+
}
|
|
31334
|
+
|
|
31335
|
+
/**
|
|
31336
|
+
* Adds listeners to record events for the replay
|
|
31337
|
+
*/
|
|
31338
|
+
_addListeners() {
|
|
31339
|
+
try {
|
|
31340
|
+
WINDOW.document.addEventListener('visibilitychange', this._handleVisibilityChange);
|
|
31341
|
+
WINDOW.addEventListener('blur', this._handleWindowBlur);
|
|
31342
|
+
WINDOW.addEventListener('focus', this._handleWindowFocus);
|
|
31343
|
+
|
|
31344
|
+
// We need to filter out dropped events captured by `addGlobalEventProcessor(this.handleGlobalEvent)` below
|
|
31345
|
+
overwriteRecordDroppedEvent(this._context.errorIds);
|
|
31346
|
+
|
|
31347
|
+
// There is no way to remove these listeners, so ensure they are only added once
|
|
31348
|
+
if (!this._hasInitializedCoreListeners) {
|
|
31349
|
+
// Listeners from core SDK //
|
|
31350
|
+
const scope = getCurrentHub().getScope();
|
|
31351
|
+
_optionalChain([scope, 'optionalAccess', _18 => _18.addScopeListener, 'call', _19 => _19(this._handleCoreBreadcrumbListener('scope'))]);
|
|
31352
|
+
addInstrumentationHandler('dom', this._handleCoreBreadcrumbListener('dom'));
|
|
31353
|
+
addInstrumentationHandler('fetch', handleFetchSpanListener(this));
|
|
31354
|
+
addInstrumentationHandler('xhr', handleXhrSpanListener(this));
|
|
31355
|
+
addInstrumentationHandler('history', handleHistorySpanListener(this));
|
|
31356
|
+
|
|
31357
|
+
// Tag all (non replay) events that get sent to Sentry with the current
|
|
31358
|
+
// replay ID so that we can reference them later in the UI
|
|
31359
|
+
addGlobalEventProcessor(handleGlobalEventListener(this));
|
|
31360
|
+
|
|
31361
|
+
this._hasInitializedCoreListeners = true;
|
|
31362
|
+
}
|
|
31363
|
+
} catch (err) {
|
|
31364
|
+
this._handleException(err);
|
|
31365
|
+
}
|
|
31366
|
+
|
|
31367
|
+
// _performanceObserver //
|
|
31368
|
+
if (!('_performanceObserver' in WINDOW)) {
|
|
31369
|
+
return;
|
|
31370
|
+
}
|
|
31371
|
+
|
|
31372
|
+
this._performanceObserver = setupPerformanceObserver(this);
|
|
31373
|
+
}
|
|
31374
|
+
|
|
31375
|
+
/**
|
|
31376
|
+
* Cleans up listeners that were created in `_addListeners`
|
|
31377
|
+
*/
|
|
31378
|
+
_removeListeners() {
|
|
31379
|
+
try {
|
|
31380
|
+
WINDOW.document.removeEventListener('visibilitychange', this._handleVisibilityChange);
|
|
31381
|
+
|
|
31382
|
+
WINDOW.removeEventListener('blur', this._handleWindowBlur);
|
|
31383
|
+
WINDOW.removeEventListener('focus', this._handleWindowFocus);
|
|
31384
|
+
|
|
31385
|
+
restoreRecordDroppedEvent();
|
|
31386
|
+
|
|
31387
|
+
if (this._performanceObserver) {
|
|
31388
|
+
this._performanceObserver.disconnect();
|
|
31389
|
+
this._performanceObserver = null;
|
|
31390
|
+
}
|
|
31391
|
+
} catch (err) {
|
|
31392
|
+
this._handleException(err);
|
|
31393
|
+
}
|
|
31394
|
+
}
|
|
31395
|
+
|
|
31015
31396
|
/**
|
|
31016
31397
|
* Handler for recording events.
|
|
31017
31398
|
*
|
|
31018
31399
|
* Adds to event buffer, and has varying flushing behaviors if the event was a checkout.
|
|
31019
31400
|
*/
|
|
31020
|
-
|
|
31401
|
+
__init12() {this._handleRecordingEmit = (
|
|
31021
31402
|
event,
|
|
31022
31403
|
isCheckout,
|
|
31023
31404
|
) => {
|
|
31024
31405
|
// If this is false, it means session is expired, create and a new session and wait for checkout
|
|
31025
|
-
if (!this.
|
|
31406
|
+
if (!this._checkAndHandleExpiredSession()) {
|
|
31026
31407
|
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] Received replay event after session expired.');
|
|
31027
31408
|
|
|
31028
31409
|
return;
|
|
@@ -31035,12 +31416,12 @@ class ReplayContainer {
|
|
|
31035
31416
|
// checkout. This needs to happen before `addEvent()` which updates state
|
|
31036
31417
|
// dependent on this reset.
|
|
31037
31418
|
if (this.recordingMode === 'error' && event.type === 2) {
|
|
31038
|
-
this.
|
|
31419
|
+
this._setInitialState();
|
|
31039
31420
|
}
|
|
31040
31421
|
|
|
31041
31422
|
// We need to clear existing events on a checkout, otherwise they are
|
|
31042
31423
|
// incremental event updates and should be appended
|
|
31043
|
-
addEvent(this, event, isCheckout);
|
|
31424
|
+
void addEvent(this, event, isCheckout);
|
|
31044
31425
|
|
|
31045
31426
|
// Different behavior for full snapshots (type=2), ignore other event types
|
|
31046
31427
|
// See https://github.com/rrweb-io/rrweb/blob/d8f9290ca496712aa1e7d472549480c4e7876594/packages/rrweb/src/types.ts#L16
|
|
@@ -31083,38 +31464,38 @@ class ReplayContainer {
|
|
|
31083
31464
|
* be hidden. Likewise, moving a different window to cover the contents of the
|
|
31084
31465
|
* page will also trigger a change to a hidden state.
|
|
31085
31466
|
*/
|
|
31086
|
-
|
|
31467
|
+
__init13() {this._handleVisibilityChange = () => {
|
|
31087
31468
|
if (WINDOW.document.visibilityState === 'visible') {
|
|
31088
|
-
this.
|
|
31469
|
+
this._doChangeToForegroundTasks();
|
|
31089
31470
|
} else {
|
|
31090
|
-
this.
|
|
31471
|
+
this._doChangeToBackgroundTasks();
|
|
31091
31472
|
}
|
|
31092
31473
|
};}
|
|
31093
31474
|
|
|
31094
31475
|
/**
|
|
31095
31476
|
* Handle when page is blurred
|
|
31096
31477
|
*/
|
|
31097
|
-
|
|
31478
|
+
__init14() {this._handleWindowBlur = () => {
|
|
31098
31479
|
const breadcrumb = createBreadcrumb({
|
|
31099
31480
|
category: 'ui.blur',
|
|
31100
31481
|
});
|
|
31101
31482
|
|
|
31102
31483
|
// Do not count blur as a user action -- it's part of the process of them
|
|
31103
31484
|
// leaving the page
|
|
31104
|
-
this.
|
|
31485
|
+
this._doChangeToBackgroundTasks(breadcrumb);
|
|
31105
31486
|
};}
|
|
31106
31487
|
|
|
31107
31488
|
/**
|
|
31108
31489
|
* Handle when page is focused
|
|
31109
31490
|
*/
|
|
31110
|
-
|
|
31491
|
+
__init15() {this._handleWindowFocus = () => {
|
|
31111
31492
|
const breadcrumb = createBreadcrumb({
|
|
31112
31493
|
category: 'ui.focus',
|
|
31113
31494
|
});
|
|
31114
31495
|
|
|
31115
31496
|
// Do not count focus as a user action -- instead wait until they focus and
|
|
31116
31497
|
// interactive with page
|
|
31117
|
-
this.
|
|
31498
|
+
this._doChangeToForegroundTasks(breadcrumb);
|
|
31118
31499
|
};}
|
|
31119
31500
|
|
|
31120
31501
|
/**
|
|
@@ -31122,7 +31503,7 @@ class ReplayContainer {
|
|
|
31122
31503
|
*
|
|
31123
31504
|
* These events will create breadcrumb-like objects in the recording.
|
|
31124
31505
|
*/
|
|
31125
|
-
|
|
31506
|
+
__init16() {this._handleCoreBreadcrumbListener =
|
|
31126
31507
|
(type) =>
|
|
31127
31508
|
(handlerData) => {
|
|
31128
31509
|
if (!this._isEnabled) {
|
|
@@ -31142,11 +31523,11 @@ class ReplayContainer {
|
|
|
31142
31523
|
if (result.category === 'ui.click') {
|
|
31143
31524
|
this.triggerUserActivity();
|
|
31144
31525
|
} else {
|
|
31145
|
-
this.
|
|
31526
|
+
this._checkAndHandleExpiredSession();
|
|
31146
31527
|
}
|
|
31147
31528
|
|
|
31148
31529
|
this.addUpdate(() => {
|
|
31149
|
-
addEvent(this, {
|
|
31530
|
+
void addEvent(this, {
|
|
31150
31531
|
type: EventType.Custom,
|
|
31151
31532
|
// TODO: We were converting from ms to seconds for breadcrumbs, spans,
|
|
31152
31533
|
// but maybe we should just keep them as milliseconds
|
|
@@ -31165,7 +31546,7 @@ class ReplayContainer {
|
|
|
31165
31546
|
/**
|
|
31166
31547
|
* Tasks to run when we consider a page to be hidden (via blurring and/or visibility)
|
|
31167
31548
|
*/
|
|
31168
|
-
|
|
31549
|
+
_doChangeToBackgroundTasks(breadcrumb) {
|
|
31169
31550
|
if (!this.session) {
|
|
31170
31551
|
return;
|
|
31171
31552
|
}
|
|
@@ -31173,24 +31554,24 @@ class ReplayContainer {
|
|
|
31173
31554
|
const expired = isSessionExpired(this.session, VISIBILITY_CHANGE_TIMEOUT);
|
|
31174
31555
|
|
|
31175
31556
|
if (breadcrumb && !expired) {
|
|
31176
|
-
this.
|
|
31557
|
+
this._createCustomBreadcrumb(breadcrumb);
|
|
31177
31558
|
}
|
|
31178
31559
|
|
|
31179
31560
|
// Send replay when the page/tab becomes hidden. There is no reason to send
|
|
31180
31561
|
// replay if it becomes visible, since no actions we care about were done
|
|
31181
31562
|
// while it was hidden
|
|
31182
|
-
this.
|
|
31563
|
+
this._conditionalFlush();
|
|
31183
31564
|
}
|
|
31184
31565
|
|
|
31185
31566
|
/**
|
|
31186
31567
|
* Tasks to run when we consider a page to be visible (via focus and/or visibility)
|
|
31187
31568
|
*/
|
|
31188
|
-
|
|
31569
|
+
_doChangeToForegroundTasks(breadcrumb) {
|
|
31189
31570
|
if (!this.session) {
|
|
31190
31571
|
return;
|
|
31191
31572
|
}
|
|
31192
31573
|
|
|
31193
|
-
const isSessionActive = this.
|
|
31574
|
+
const isSessionActive = this._checkAndHandleExpiredSession({
|
|
31194
31575
|
expiry: VISIBILITY_CHANGE_TIMEOUT,
|
|
31195
31576
|
});
|
|
31196
31577
|
|
|
@@ -31203,7 +31584,7 @@ class ReplayContainer {
|
|
|
31203
31584
|
}
|
|
31204
31585
|
|
|
31205
31586
|
if (breadcrumb) {
|
|
31206
|
-
this.
|
|
31587
|
+
this._createCustomBreadcrumb(breadcrumb);
|
|
31207
31588
|
}
|
|
31208
31589
|
}
|
|
31209
31590
|
|
|
@@ -31211,7 +31592,7 @@ class ReplayContainer {
|
|
|
31211
31592
|
* Trigger rrweb to take a full snapshot which will cause this plugin to
|
|
31212
31593
|
* create a new Replay event.
|
|
31213
31594
|
*/
|
|
31214
|
-
|
|
31595
|
+
_triggerFullSnapshot() {
|
|
31215
31596
|
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Taking full rrweb snapshot');
|
|
31216
31597
|
record.takeFullSnapshot(true);
|
|
31217
31598
|
}
|
|
@@ -31219,52 +31600,26 @@ class ReplayContainer {
|
|
|
31219
31600
|
/**
|
|
31220
31601
|
* Update user activity (across session lifespans)
|
|
31221
31602
|
*/
|
|
31222
|
-
|
|
31603
|
+
_updateUserActivity(_lastActivity = new Date().getTime()) {
|
|
31223
31604
|
this._lastActivity = _lastActivity;
|
|
31224
31605
|
}
|
|
31225
31606
|
|
|
31226
31607
|
/**
|
|
31227
31608
|
* Updates the session's last activity timestamp
|
|
31228
31609
|
*/
|
|
31229
|
-
|
|
31610
|
+
_updateSessionActivity(_lastActivity = new Date().getTime()) {
|
|
31230
31611
|
if (this.session) {
|
|
31231
31612
|
this.session.lastActivity = _lastActivity;
|
|
31232
31613
|
this._maybeSaveSession();
|
|
31233
31614
|
}
|
|
31234
31615
|
}
|
|
31235
31616
|
|
|
31236
|
-
/**
|
|
31237
|
-
* Updates the user activity timestamp and resumes recording. This should be
|
|
31238
|
-
* called in an event handler for a user action that we consider as the user
|
|
31239
|
-
* being "active" (e.g. a mouse click).
|
|
31240
|
-
*/
|
|
31241
|
-
triggerUserActivity() {
|
|
31242
|
-
this.updateUserActivity();
|
|
31243
|
-
|
|
31244
|
-
// This case means that recording was once stopped due to inactivity.
|
|
31245
|
-
// Ensure that recording is resumed.
|
|
31246
|
-
if (!this._stopRecording) {
|
|
31247
|
-
// Create a new session, otherwise when the user action is flushed, it
|
|
31248
|
-
// will get rejected due to an expired session.
|
|
31249
|
-
this.loadSession({ expiry: SESSION_IDLE_DURATION });
|
|
31250
|
-
|
|
31251
|
-
// Note: This will cause a new DOM checkout
|
|
31252
|
-
this.resume();
|
|
31253
|
-
return;
|
|
31254
|
-
}
|
|
31255
|
-
|
|
31256
|
-
// Otherwise... recording was never suspended, continue as normalish
|
|
31257
|
-
this.checkAndHandleExpiredSession();
|
|
31258
|
-
|
|
31259
|
-
this.updateSessionActivity();
|
|
31260
|
-
}
|
|
31261
|
-
|
|
31262
31617
|
/**
|
|
31263
31618
|
* Helper to create (and buffer) a replay breadcrumb from a core SDK breadcrumb
|
|
31264
31619
|
*/
|
|
31265
|
-
|
|
31620
|
+
_createCustomBreadcrumb(breadcrumb) {
|
|
31266
31621
|
this.addUpdate(() => {
|
|
31267
|
-
addEvent(this, {
|
|
31622
|
+
void addEvent(this, {
|
|
31268
31623
|
type: EventType.Custom,
|
|
31269
31624
|
timestamp: breadcrumb.timestamp || 0,
|
|
31270
31625
|
data: {
|
|
@@ -31279,12 +31634,12 @@ class ReplayContainer {
|
|
|
31279
31634
|
* Observed performance events are added to `this.performanceEvents`. These
|
|
31280
31635
|
* are included in the replay event before it is finished and sent to Sentry.
|
|
31281
31636
|
*/
|
|
31282
|
-
|
|
31637
|
+
_addPerformanceEntries() {
|
|
31283
31638
|
// Copy and reset entries before processing
|
|
31284
31639
|
const entries = [...this.performanceEvents];
|
|
31285
31640
|
this.performanceEvents = [];
|
|
31286
31641
|
|
|
31287
|
-
createPerformanceSpans(this, createPerformanceEntries(entries));
|
|
31642
|
+
return Promise.all(createPerformanceSpans(this, createPerformanceEntries(entries)));
|
|
31288
31643
|
}
|
|
31289
31644
|
|
|
31290
31645
|
/**
|
|
@@ -31294,7 +31649,7 @@ class ReplayContainer {
|
|
|
31294
31649
|
*
|
|
31295
31650
|
* Returns true if session is not expired, false otherwise.
|
|
31296
31651
|
*/
|
|
31297
|
-
|
|
31652
|
+
_checkAndHandleExpiredSession({ expiry = SESSION_IDLE_DURATION } = {}) {
|
|
31298
31653
|
const oldSessionId = _optionalChain([this, 'access', _22 => _22.session, 'optionalAccess', _23 => _23.id]);
|
|
31299
31654
|
|
|
31300
31655
|
// Prevent starting a new session if the last user activity is older than
|
|
@@ -31309,7 +31664,7 @@ class ReplayContainer {
|
|
|
31309
31664
|
|
|
31310
31665
|
// --- There is recent user activity --- //
|
|
31311
31666
|
// This will create a new session if expired, based on expiry length
|
|
31312
|
-
this.
|
|
31667
|
+
this._loadSession({ expiry });
|
|
31313
31668
|
|
|
31314
31669
|
// Session was expired if session ids do not match
|
|
31315
31670
|
const expired = oldSessionId !== _optionalChain([this, 'access', _24 => _24.session, 'optionalAccess', _25 => _25.id]);
|
|
@@ -31319,7 +31674,7 @@ class ReplayContainer {
|
|
|
31319
31674
|
}
|
|
31320
31675
|
|
|
31321
31676
|
// Session is expired, trigger a full snapshot (which will create a new session)
|
|
31322
|
-
this.
|
|
31677
|
+
this._triggerFullSnapshot();
|
|
31323
31678
|
|
|
31324
31679
|
return false;
|
|
31325
31680
|
}
|
|
@@ -31327,7 +31682,7 @@ class ReplayContainer {
|
|
|
31327
31682
|
/**
|
|
31328
31683
|
* Only flush if `this.recordingMode === 'session'`
|
|
31329
31684
|
*/
|
|
31330
|
-
|
|
31685
|
+
_conditionalFlush() {
|
|
31331
31686
|
if (this.recordingMode === 'error') {
|
|
31332
31687
|
return;
|
|
31333
31688
|
}
|
|
@@ -31338,7 +31693,7 @@ class ReplayContainer {
|
|
|
31338
31693
|
/**
|
|
31339
31694
|
* Clear _context
|
|
31340
31695
|
*/
|
|
31341
|
-
|
|
31696
|
+
_clearContext() {
|
|
31342
31697
|
// XXX: `initialTimestamp` and `initialUrl` do not get cleared
|
|
31343
31698
|
this._context.errorIds.clear();
|
|
31344
31699
|
this._context.traceIds.clear();
|
|
@@ -31349,7 +31704,7 @@ class ReplayContainer {
|
|
|
31349
31704
|
/**
|
|
31350
31705
|
* Return and clear _context
|
|
31351
31706
|
*/
|
|
31352
|
-
|
|
31707
|
+
_popEventContext() {
|
|
31353
31708
|
if (this._context.earliestEvent && this._context.earliestEvent < this._context.initialTimestamp) {
|
|
31354
31709
|
this._context.initialTimestamp = this._context.earliestEvent;
|
|
31355
31710
|
}
|
|
@@ -31362,7 +31717,7 @@ class ReplayContainer {
|
|
|
31362
31717
|
urls: this._context.urls,
|
|
31363
31718
|
};
|
|
31364
31719
|
|
|
31365
|
-
this.
|
|
31720
|
+
this._clearContext();
|
|
31366
31721
|
|
|
31367
31722
|
return _context;
|
|
31368
31723
|
}
|
|
@@ -31375,15 +31730,15 @@ class ReplayContainer {
|
|
|
31375
31730
|
*
|
|
31376
31731
|
* Should never be called directly, only by `flush`
|
|
31377
31732
|
*/
|
|
31378
|
-
|
|
31733
|
+
async _runFlush() {
|
|
31379
31734
|
if (!this.session) {
|
|
31380
31735
|
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] No session found to flush.');
|
|
31381
31736
|
return;
|
|
31382
31737
|
}
|
|
31383
31738
|
|
|
31384
|
-
await this.
|
|
31739
|
+
await this._addPerformanceEntries();
|
|
31385
31740
|
|
|
31386
|
-
if (!_optionalChain([this, 'access', _26 => _26.eventBuffer, 'optionalAccess', _27 => _27.
|
|
31741
|
+
if (!_optionalChain([this, 'access', _26 => _26.eventBuffer, 'optionalAccess', _27 => _27.pendingLength])) {
|
|
31387
31742
|
return;
|
|
31388
31743
|
}
|
|
31389
31744
|
|
|
@@ -31397,20 +31752,32 @@ class ReplayContainer {
|
|
|
31397
31752
|
// NOTE: Copy values from instance members, as it's possible they could
|
|
31398
31753
|
// change before the flush finishes.
|
|
31399
31754
|
const replayId = this.session.id;
|
|
31400
|
-
const eventContext = this.
|
|
31755
|
+
const eventContext = this._popEventContext();
|
|
31401
31756
|
// Always increment segmentId regardless of outcome of sending replay
|
|
31402
31757
|
const segmentId = this.session.segmentId++;
|
|
31403
31758
|
this._maybeSaveSession();
|
|
31404
31759
|
|
|
31405
|
-
await
|
|
31760
|
+
await sendReplay({
|
|
31406
31761
|
replayId,
|
|
31407
|
-
|
|
31762
|
+
recordingData,
|
|
31408
31763
|
segmentId,
|
|
31409
31764
|
includeReplayStartTimestamp: segmentId === 0,
|
|
31410
31765
|
eventContext,
|
|
31766
|
+
session: this.session,
|
|
31767
|
+
options: this.getOptions(),
|
|
31768
|
+
timestamp: new Date().getTime(),
|
|
31411
31769
|
});
|
|
31412
31770
|
} catch (err) {
|
|
31413
|
-
this.
|
|
31771
|
+
this._handleException(err);
|
|
31772
|
+
|
|
31773
|
+
if (err instanceof RateLimitError) {
|
|
31774
|
+
this._handleRateLimit(err.rateLimits);
|
|
31775
|
+
return;
|
|
31776
|
+
}
|
|
31777
|
+
|
|
31778
|
+
// This means we retried 3 times, and all of them failed
|
|
31779
|
+
// In this case, we want to completely stop the replay - otherwise, we may get inconsistent segments
|
|
31780
|
+
this.stop();
|
|
31414
31781
|
}
|
|
31415
31782
|
}
|
|
31416
31783
|
|
|
@@ -31418,14 +31785,13 @@ class ReplayContainer {
|
|
|
31418
31785
|
* Flush recording data to Sentry. Creates a lock so that only a single flush
|
|
31419
31786
|
* can be active at a time. Do not call this directly.
|
|
31420
31787
|
*/
|
|
31421
|
-
|
|
31788
|
+
__init17() {this._flush = async () => {
|
|
31422
31789
|
if (!this._isEnabled) {
|
|
31423
|
-
// This
|
|
31424
|
-
// cause a flush.
|
|
31790
|
+
// This can happen if e.g. the replay was stopped because of exceeding the retry limit
|
|
31425
31791
|
return;
|
|
31426
31792
|
}
|
|
31427
31793
|
|
|
31428
|
-
if (!this.
|
|
31794
|
+
if (!this._checkAndHandleExpiredSession()) {
|
|
31429
31795
|
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] Attempting to finish replay event after session expired.');
|
|
31430
31796
|
return;
|
|
31431
31797
|
}
|
|
@@ -31438,16 +31804,16 @@ class ReplayContainer {
|
|
|
31438
31804
|
// A flush is about to happen, cancel any queued flushes
|
|
31439
31805
|
_optionalChain([this, 'access', _30 => _30._debouncedFlush, 'optionalAccess', _31 => _31.cancel, 'call', _32 => _32()]);
|
|
31440
31806
|
|
|
31441
|
-
// this._flushLock acts as a lock so that future calls to `
|
|
31807
|
+
// this._flushLock acts as a lock so that future calls to `_flush()`
|
|
31442
31808
|
// will be blocked until this promise resolves
|
|
31443
31809
|
if (!this._flushLock) {
|
|
31444
|
-
this._flushLock = this.
|
|
31810
|
+
this._flushLock = this._runFlush();
|
|
31445
31811
|
await this._flushLock;
|
|
31446
31812
|
this._flushLock = null;
|
|
31447
31813
|
return;
|
|
31448
31814
|
}
|
|
31449
31815
|
|
|
31450
|
-
// Wait for previous flush to finish, then call the debounced `
|
|
31816
|
+
// Wait for previous flush to finish, then call the debounced `_flush()`.
|
|
31451
31817
|
// It's possible there are other flush requests queued and waiting for it
|
|
31452
31818
|
// to resolve. We want to reduce all outstanding requests (as well as any
|
|
31453
31819
|
// new flush requests that occur within a second of the locked flush
|
|
@@ -31462,205 +31828,59 @@ class ReplayContainer {
|
|
|
31462
31828
|
}
|
|
31463
31829
|
};}
|
|
31464
31830
|
|
|
31465
|
-
/**
|
|
31466
|
-
|
|
31467
|
-
|
|
31468
|
-
|
|
31469
|
-
* cases of mulitple flushes happening closely together.
|
|
31470
|
-
*/
|
|
31471
|
-
flushImmediate() {
|
|
31472
|
-
this._debouncedFlush();
|
|
31473
|
-
// `.flush` is provided by the debounced function, analogously to lodash.debounce
|
|
31474
|
-
return this._debouncedFlush.flush() ;
|
|
31475
|
-
}
|
|
31476
|
-
|
|
31477
|
-
/**
|
|
31478
|
-
* Send replay attachment using `fetch()`
|
|
31479
|
-
*/
|
|
31480
|
-
async sendReplayRequest({
|
|
31481
|
-
events,
|
|
31482
|
-
replayId,
|
|
31483
|
-
segmentId: segment_id,
|
|
31484
|
-
includeReplayStartTimestamp,
|
|
31485
|
-
eventContext,
|
|
31486
|
-
}) {
|
|
31487
|
-
const payloadWithSequence = createPayload({
|
|
31488
|
-
events,
|
|
31489
|
-
headers: {
|
|
31490
|
-
segment_id,
|
|
31491
|
-
},
|
|
31492
|
-
});
|
|
31493
|
-
|
|
31494
|
-
const { urls, errorIds, traceIds, initialTimestamp } = eventContext;
|
|
31495
|
-
|
|
31496
|
-
const currentTimestamp = new Date().getTime();
|
|
31497
|
-
|
|
31498
|
-
const hub = getCurrentHub();
|
|
31499
|
-
const client = hub.getClient();
|
|
31500
|
-
const scope = hub.getScope();
|
|
31501
|
-
const transport = client && client.getTransport();
|
|
31502
|
-
const dsn = _optionalChain([client, 'optionalAccess', _33 => _33.getDsn, 'call', _34 => _34()]);
|
|
31503
|
-
|
|
31504
|
-
if (!client || !scope || !transport || !dsn) {
|
|
31505
|
-
return;
|
|
31506
|
-
}
|
|
31507
|
-
|
|
31508
|
-
const baseEvent = {
|
|
31509
|
-
// @ts-ignore private api
|
|
31510
|
-
type: REPLAY_EVENT_NAME,
|
|
31511
|
-
...(includeReplayStartTimestamp ? { replay_start_timestamp: initialTimestamp / 1000 } : {}),
|
|
31512
|
-
timestamp: currentTimestamp / 1000,
|
|
31513
|
-
error_ids: errorIds,
|
|
31514
|
-
trace_ids: traceIds,
|
|
31515
|
-
urls,
|
|
31516
|
-
replay_id: replayId,
|
|
31517
|
-
segment_id,
|
|
31518
|
-
};
|
|
31519
|
-
|
|
31520
|
-
const replayEvent = await getReplayEvent({ scope, client, replayId, event: baseEvent });
|
|
31521
|
-
|
|
31522
|
-
if (!replayEvent) {
|
|
31523
|
-
// Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions
|
|
31524
|
-
client.recordDroppedEvent('event_processor', 'replay_event', baseEvent);
|
|
31525
|
-
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('An event processor returned `null`, will not send event.');
|
|
31526
|
-
return;
|
|
31527
|
-
}
|
|
31528
|
-
|
|
31529
|
-
replayEvent.tags = {
|
|
31530
|
-
...replayEvent.tags,
|
|
31531
|
-
sessionSampleRate: this._options.sessionSampleRate,
|
|
31532
|
-
errorSampleRate: this._options.errorSampleRate,
|
|
31533
|
-
replayType: _optionalChain([this, 'access', _35 => _35.session, 'optionalAccess', _36 => _36.sampled]),
|
|
31534
|
-
};
|
|
31535
|
-
|
|
31536
|
-
/*
|
|
31537
|
-
For reference, the fully built event looks something like this:
|
|
31538
|
-
{
|
|
31539
|
-
"type": "replay_event",
|
|
31540
|
-
"timestamp": 1670837008.634,
|
|
31541
|
-
"error_ids": [
|
|
31542
|
-
"errorId"
|
|
31543
|
-
],
|
|
31544
|
-
"trace_ids": [
|
|
31545
|
-
"traceId"
|
|
31546
|
-
],
|
|
31547
|
-
"urls": [
|
|
31548
|
-
"https://example.com"
|
|
31549
|
-
],
|
|
31550
|
-
"replay_id": "eventId",
|
|
31551
|
-
"segment_id": 3,
|
|
31552
|
-
"platform": "javascript",
|
|
31553
|
-
"event_id": "eventId",
|
|
31554
|
-
"environment": "production",
|
|
31555
|
-
"sdk": {
|
|
31556
|
-
"integrations": [
|
|
31557
|
-
"BrowserTracing",
|
|
31558
|
-
"Replay"
|
|
31559
|
-
],
|
|
31560
|
-
"name": "sentry.javascript.browser",
|
|
31561
|
-
"version": "7.25.0"
|
|
31562
|
-
},
|
|
31563
|
-
"sdkProcessingMetadata": {},
|
|
31564
|
-
"tags": {
|
|
31565
|
-
"sessionSampleRate": 1,
|
|
31566
|
-
"errorSampleRate": 0,
|
|
31567
|
-
"replayType": "error"
|
|
31568
|
-
}
|
|
31569
|
-
}
|
|
31570
|
-
*/
|
|
31571
|
-
|
|
31572
|
-
const envelope = createReplayEnvelope(replayEvent, payloadWithSequence, dsn, client.getOptions().tunnel);
|
|
31573
|
-
|
|
31574
|
-
try {
|
|
31575
|
-
return await transport.send(envelope);
|
|
31576
|
-
} catch (e) {
|
|
31577
|
-
throw new Error(UNABLE_TO_SEND_REPLAY);
|
|
31831
|
+
/** Save the session, if it is sticky */
|
|
31832
|
+
_maybeSaveSession() {
|
|
31833
|
+
if (this.session && this._options.stickySession) {
|
|
31834
|
+
saveSession(this.session);
|
|
31578
31835
|
}
|
|
31579
31836
|
}
|
|
31580
31837
|
|
|
31581
|
-
resetRetries() {
|
|
31582
|
-
this._retryCount = 0;
|
|
31583
|
-
this._retryInterval = BASE_RETRY_INTERVAL;
|
|
31584
|
-
}
|
|
31585
|
-
|
|
31586
31838
|
/**
|
|
31587
|
-
*
|
|
31839
|
+
* Pauses the replay and resumes it after the rate-limit duration is over.
|
|
31588
31840
|
*/
|
|
31589
|
-
|
|
31590
|
-
|
|
31591
|
-
|
|
31592
|
-
|
|
31593
|
-
includeReplayStartTimestamp,
|
|
31594
|
-
eventContext,
|
|
31595
|
-
}) {
|
|
31596
|
-
// short circuit if there's no events to upload (this shouldn't happen as runFlush makes this check)
|
|
31597
|
-
if (!events.length) {
|
|
31841
|
+
_handleRateLimit(rateLimits) {
|
|
31842
|
+
// in case recording is already paused, we don't need to do anything, as we might have already paused because of a
|
|
31843
|
+
// rate limit
|
|
31844
|
+
if (this.isPaused()) {
|
|
31598
31845
|
return;
|
|
31599
31846
|
}
|
|
31600
31847
|
|
|
31601
|
-
|
|
31602
|
-
|
|
31603
|
-
events,
|
|
31604
|
-
replayId,
|
|
31605
|
-
segmentId,
|
|
31606
|
-
includeReplayStartTimestamp,
|
|
31607
|
-
eventContext,
|
|
31608
|
-
});
|
|
31609
|
-
this.resetRetries();
|
|
31610
|
-
return true;
|
|
31611
|
-
} catch (err) {
|
|
31612
|
-
// Capture error for every failed replay
|
|
31613
|
-
setContext('Replays', {
|
|
31614
|
-
_retryCount: this._retryCount,
|
|
31615
|
-
});
|
|
31616
|
-
this.handleException(err);
|
|
31848
|
+
const rateLimitEnd = disabledUntil(rateLimits, 'replay');
|
|
31849
|
+
const rateLimitDuration = rateLimitEnd - Date.now();
|
|
31617
31850
|
|
|
31618
|
-
|
|
31619
|
-
|
|
31620
|
-
|
|
31621
|
-
|
|
31622
|
-
}
|
|
31623
|
-
|
|
31624
|
-
this._retryCount = this._retryCount + 1;
|
|
31625
|
-
// will retry in intervals of 5, 10, 30
|
|
31626
|
-
this._retryInterval = this._retryCount * this._retryInterval;
|
|
31627
|
-
|
|
31628
|
-
return await new Promise((resolve, reject) => {
|
|
31629
|
-
setTimeout(async () => {
|
|
31630
|
-
try {
|
|
31631
|
-
await this.sendReplay({
|
|
31632
|
-
replayId,
|
|
31633
|
-
events,
|
|
31634
|
-
segmentId,
|
|
31635
|
-
includeReplayStartTimestamp,
|
|
31636
|
-
eventContext,
|
|
31637
|
-
});
|
|
31638
|
-
resolve(true);
|
|
31639
|
-
} catch (err) {
|
|
31640
|
-
reject(err);
|
|
31641
|
-
}
|
|
31642
|
-
}, this._retryInterval);
|
|
31643
|
-
});
|
|
31644
|
-
}
|
|
31645
|
-
}
|
|
31851
|
+
if (rateLimitDuration > 0) {
|
|
31852
|
+
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('[Replay]', `Rate limit hit, pausing replay for ${rateLimitDuration}ms`);
|
|
31853
|
+
this.pause();
|
|
31854
|
+
this._debouncedFlush.cancel();
|
|
31646
31855
|
|
|
31647
|
-
|
|
31648
|
-
|
|
31649
|
-
|
|
31650
|
-
|
|
31856
|
+
setTimeout(() => {
|
|
31857
|
+
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.info('[Replay]', 'Resuming replay after rate limit');
|
|
31858
|
+
this.resume();
|
|
31859
|
+
}, rateLimitDuration);
|
|
31651
31860
|
}
|
|
31652
31861
|
}
|
|
31653
31862
|
}
|
|
31654
31863
|
|
|
31864
|
+
/**
|
|
31865
|
+
* Returns true if we are in the browser.
|
|
31866
|
+
*/
|
|
31655
31867
|
function isBrowser() {
|
|
31656
31868
|
// eslint-disable-next-line no-restricted-globals
|
|
31657
|
-
return typeof window !== 'undefined' && !isNodeEnv();
|
|
31869
|
+
return typeof window !== 'undefined' && (!isNodeEnv() || isElectronNodeRenderer());
|
|
31870
|
+
}
|
|
31871
|
+
|
|
31872
|
+
// Electron renderers with nodeIntegration enabled are detected as Node.js so we specifically test for them
|
|
31873
|
+
function isElectronNodeRenderer() {
|
|
31874
|
+
return typeof process !== 'undefined' && (process ).type === 'renderer';
|
|
31658
31875
|
}
|
|
31659
31876
|
|
|
31660
31877
|
const MEDIA_SELECTORS = 'img,image,svg,path,rect,area,video,object,picture,embed,map,audio';
|
|
31661
31878
|
|
|
31662
31879
|
let _initialized = false;
|
|
31663
31880
|
|
|
31881
|
+
/**
|
|
31882
|
+
* The main replay integration class, to be passed to `init({ integrations: [] })`.
|
|
31883
|
+
*/
|
|
31664
31884
|
class Replay {
|
|
31665
31885
|
/**
|
|
31666
31886
|
* @inheritDoc
|
|
@@ -31676,15 +31896,7 @@ class Replay {
|
|
|
31676
31896
|
* Options to pass to `rrweb.record()`
|
|
31677
31897
|
*/
|
|
31678
31898
|
|
|
31679
|
-
|
|
31680
|
-
return _initialized;
|
|
31681
|
-
}
|
|
31682
|
-
|
|
31683
|
-
set _isInitialized(value) {
|
|
31684
|
-
_initialized = value;
|
|
31685
|
-
}
|
|
31686
|
-
|
|
31687
|
-
constructor({
|
|
31899
|
+
constructor({
|
|
31688
31900
|
flushMinDelay = DEFAULT_FLUSH_MIN_DELAY,
|
|
31689
31901
|
flushMaxDelay = DEFAULT_FLUSH_MAX_DELAY,
|
|
31690
31902
|
initialFlushDelay = INITIAL_FLUSH_DELAY,
|
|
@@ -31701,19 +31913,19 @@ class Replay {
|
|
|
31701
31913
|
ignoreClass = 'sentry-ignore',
|
|
31702
31914
|
maskTextClass = 'sentry-mask',
|
|
31703
31915
|
blockSelector = '[data-sentry-block]',
|
|
31704
|
-
...
|
|
31916
|
+
..._recordingOptions
|
|
31705
31917
|
} = {}) {Replay.prototype.__init.call(this);
|
|
31706
|
-
this.
|
|
31918
|
+
this._recordingOptions = {
|
|
31707
31919
|
maskAllInputs,
|
|
31708
31920
|
blockClass,
|
|
31709
31921
|
ignoreClass,
|
|
31710
31922
|
maskTextClass,
|
|
31711
31923
|
maskTextSelector,
|
|
31712
31924
|
blockSelector,
|
|
31713
|
-
...
|
|
31925
|
+
..._recordingOptions,
|
|
31714
31926
|
};
|
|
31715
31927
|
|
|
31716
|
-
this.
|
|
31928
|
+
this._options = {
|
|
31717
31929
|
flushMinDelay,
|
|
31718
31930
|
flushMaxDelay,
|
|
31719
31931
|
stickySession,
|
|
@@ -31735,7 +31947,7 @@ Instead, configure \`replaysSessionSampleRate\` directly in the SDK init options
|
|
|
31735
31947
|
Sentry.init({ replaysSessionSampleRate: ${sessionSampleRate} })`,
|
|
31736
31948
|
);
|
|
31737
31949
|
|
|
31738
|
-
this.
|
|
31950
|
+
this._options.sessionSampleRate = sessionSampleRate;
|
|
31739
31951
|
}
|
|
31740
31952
|
|
|
31741
31953
|
if (typeof errorSampleRate === 'number') {
|
|
@@ -31747,31 +31959,41 @@ Instead, configure \`replaysOnErrorSampleRate\` directly in the SDK init options
|
|
|
31747
31959
|
Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
|
|
31748
31960
|
);
|
|
31749
31961
|
|
|
31750
|
-
this.
|
|
31962
|
+
this._options.errorSampleRate = errorSampleRate;
|
|
31751
31963
|
}
|
|
31752
31964
|
|
|
31753
|
-
if (this.
|
|
31965
|
+
if (this._options.maskAllText) {
|
|
31754
31966
|
// `maskAllText` is a more user friendly option to configure
|
|
31755
31967
|
// `maskTextSelector`. This means that all nodes will have their text
|
|
31756
31968
|
// content masked.
|
|
31757
|
-
this.
|
|
31969
|
+
this._recordingOptions.maskTextSelector = MASK_ALL_TEXT_SELECTOR;
|
|
31758
31970
|
}
|
|
31759
31971
|
|
|
31760
|
-
if (this.
|
|
31972
|
+
if (this._options.blockAllMedia) {
|
|
31761
31973
|
// `blockAllMedia` is a more user friendly option to configure blocking
|
|
31762
31974
|
// embedded media elements
|
|
31763
|
-
this.
|
|
31975
|
+
this._recordingOptions.blockSelector = !this._recordingOptions.blockSelector
|
|
31764
31976
|
? MEDIA_SELECTORS
|
|
31765
|
-
: `${this.
|
|
31977
|
+
: `${this._recordingOptions.blockSelector},${MEDIA_SELECTORS}`;
|
|
31766
31978
|
}
|
|
31767
31979
|
|
|
31768
|
-
if (
|
|
31980
|
+
if (this._isInitialized && isBrowser()) {
|
|
31769
31981
|
throw new Error('Multiple Sentry Session Replay instances are not supported');
|
|
31770
31982
|
}
|
|
31771
31983
|
|
|
31772
31984
|
this._isInitialized = true;
|
|
31773
31985
|
}
|
|
31774
31986
|
|
|
31987
|
+
/** If replay has already been initialized */
|
|
31988
|
+
get _isInitialized() {
|
|
31989
|
+
return _initialized;
|
|
31990
|
+
}
|
|
31991
|
+
|
|
31992
|
+
/** Update _isInitialized */
|
|
31993
|
+
set _isInitialized(value) {
|
|
31994
|
+
_initialized = value;
|
|
31995
|
+
}
|
|
31996
|
+
|
|
31775
31997
|
/**
|
|
31776
31998
|
* We previously used to create a transaction in `setupOnce` and it would
|
|
31777
31999
|
* potentially create a transaction before some native SDK integrations have run
|
|
@@ -31782,7 +32004,7 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
|
|
|
31782
32004
|
* global event processors to finish. This is no longer needed, but keeping it
|
|
31783
32005
|
* here to avoid any future issues.
|
|
31784
32006
|
*/
|
|
31785
|
-
|
|
32007
|
+
setupOnce() {
|
|
31786
32008
|
if (!isBrowser()) {
|
|
31787
32009
|
return;
|
|
31788
32010
|
}
|
|
@@ -31799,7 +32021,7 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
|
|
|
31799
32021
|
* Creates or loads a session, attaches listeners to varying events (DOM,
|
|
31800
32022
|
* PerformanceObserver, Recording, Sentry SDK, etc)
|
|
31801
32023
|
*/
|
|
31802
|
-
|
|
32024
|
+
start() {
|
|
31803
32025
|
if (!this._replay) {
|
|
31804
32026
|
return;
|
|
31805
32027
|
}
|
|
@@ -31811,7 +32033,7 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
|
|
|
31811
32033
|
* Currently, this needs to be manually called (e.g. for tests). Sentry SDK
|
|
31812
32034
|
* does not support a teardown
|
|
31813
32035
|
*/
|
|
31814
|
-
|
|
32036
|
+
stop() {
|
|
31815
32037
|
if (!this._replay) {
|
|
31816
32038
|
return;
|
|
31817
32039
|
}
|
|
@@ -31819,13 +32041,14 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
|
|
|
31819
32041
|
this._replay.stop();
|
|
31820
32042
|
}
|
|
31821
32043
|
|
|
32044
|
+
/** Setup the integration. */
|
|
31822
32045
|
_setup() {
|
|
31823
32046
|
// Client is not available in constructor, so we need to wait until setupOnce
|
|
31824
32047
|
this._loadReplayOptionsFromClient();
|
|
31825
32048
|
|
|
31826
32049
|
this._replay = new ReplayContainer({
|
|
31827
|
-
options: this.
|
|
31828
|
-
recordingOptions: this.
|
|
32050
|
+
options: this._options,
|
|
32051
|
+
recordingOptions: this._recordingOptions,
|
|
31829
32052
|
});
|
|
31830
32053
|
}
|
|
31831
32054
|
|
|
@@ -31835,11 +32058,11 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
|
|
|
31835
32058
|
const opt = client && (client.getOptions() );
|
|
31836
32059
|
|
|
31837
32060
|
if (opt && typeof opt.replaysSessionSampleRate === 'number') {
|
|
31838
|
-
this.
|
|
32061
|
+
this._options.sessionSampleRate = opt.replaysSessionSampleRate;
|
|
31839
32062
|
}
|
|
31840
32063
|
|
|
31841
32064
|
if (opt && typeof opt.replaysOnErrorSampleRate === 'number') {
|
|
31842
|
-
this.
|
|
32065
|
+
this._options.errorSampleRate = opt.replaysOnErrorSampleRate;
|
|
31843
32066
|
}
|
|
31844
32067
|
}
|
|
31845
32068
|
} Replay.__initStatic();
|
|
@@ -32046,6 +32269,16 @@ const SentryTrackingFn = (event, context, name, level) => {
|
|
|
32046
32269
|
SentryHub.captureMessage(name, level);
|
|
32047
32270
|
});
|
|
32048
32271
|
};
|
|
32272
|
+
const SentryBreadcrumb = ({ type, level, event_id, category, message, data }) => {
|
|
32273
|
+
SentryHub.addBreadcrumb({
|
|
32274
|
+
type,
|
|
32275
|
+
level,
|
|
32276
|
+
event_id,
|
|
32277
|
+
category,
|
|
32278
|
+
message,
|
|
32279
|
+
data,
|
|
32280
|
+
});
|
|
32281
|
+
};
|
|
32049
32282
|
|
|
32050
32283
|
const PlayIcon = ({ playing }) => (React__default.createElement("div", { className: "myinterview-widget-icons__play-button" },
|
|
32051
32284
|
React__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "100%", height: "100%", fill: "currentColor", viewBox: "0 0 50 50" },
|
|
@@ -43208,6 +43441,7 @@ var STATES$3;
|
|
|
43208
43441
|
})(STATES$3 || (STATES$3 = {}));
|
|
43209
43442
|
var ACTIONS$3;
|
|
43210
43443
|
(function (ACTIONS) {
|
|
43444
|
+
ACTIONS["COLLECT_BREADCRUMB"] = "collectBreadcrumb";
|
|
43211
43445
|
ACTIONS["INIT_WEB_WORKER"] = "initWebWorker";
|
|
43212
43446
|
ACTIONS["CONSOLE_LOG"] = "consoleLog";
|
|
43213
43447
|
ACTIONS["SET_MEDIA_STREAM"] = "setMediaStream";
|
|
@@ -43369,7 +43603,7 @@ const microphoneMachine = createMachine({
|
|
|
43369
43603
|
},
|
|
43370
43604
|
},
|
|
43371
43605
|
[STATES$3.NOT_RECEIVING_DATA]: {
|
|
43372
|
-
entry: [
|
|
43606
|
+
entry: [ACTIONS$3.COLLECT_BREADCRUMB,
|
|
43373
43607
|
sendParent((context, event) => ({
|
|
43374
43608
|
data: recorderErrors.NoSoundError,
|
|
43375
43609
|
type: EVENTS$5.RECORDER_DEVICE_ERROR,
|
|
@@ -43400,6 +43634,22 @@ const microphoneMachine = createMachine({
|
|
|
43400
43634
|
},
|
|
43401
43635
|
}, {
|
|
43402
43636
|
actions: {
|
|
43637
|
+
[ACTIONS$3.COLLECT_BREADCRUMB]: (context) => {
|
|
43638
|
+
var _a, _b, _c;
|
|
43639
|
+
SentryBreadcrumb({
|
|
43640
|
+
type: 'debug',
|
|
43641
|
+
level: 'warning',
|
|
43642
|
+
category: 'mic',
|
|
43643
|
+
message: 'mic is inactive, this is the status of audioTrack',
|
|
43644
|
+
data: {
|
|
43645
|
+
audioTrack: {
|
|
43646
|
+
enabled: (_a = context === null || context === void 0 ? void 0 : context.mediaStream) === null || _a === void 0 ? void 0 : _a.getAudioTracks()[0].enabled,
|
|
43647
|
+
label: (_b = context === null || context === void 0 ? void 0 : context.mediaStream) === null || _b === void 0 ? void 0 : _b.getAudioTracks()[0].label,
|
|
43648
|
+
muted: (_c = context === null || context === void 0 ? void 0 : context.mediaStream) === null || _c === void 0 ? void 0 : _c.getAudioTracks()[0].muted,
|
|
43649
|
+
},
|
|
43650
|
+
},
|
|
43651
|
+
});
|
|
43652
|
+
},
|
|
43403
43653
|
[ACTIONS$3.INIT_WEB_WORKER]: assign({
|
|
43404
43654
|
webWorker: (context, _event) => (context.mediaStream ? new Builder(Worker$1) : null),
|
|
43405
43655
|
}),
|
|
@@ -43464,6 +43714,14 @@ const microphoneMachine = createMachine({
|
|
|
43464
43714
|
};
|
|
43465
43715
|
}
|
|
43466
43716
|
getVolume(0);
|
|
43717
|
+
ctx.onstatechange = () => {
|
|
43718
|
+
var _a, _b;
|
|
43719
|
+
if (ctx.state === 'suspended') {
|
|
43720
|
+
SentryTrackingFn({ type: 'status === suspended', data: ctx.state }, { label: (_a = context === null || context === void 0 ? void 0 : context.mediaStream) === null || _a === void 0 ? void 0 : _a.getAudioTracks()[0].label,
|
|
43721
|
+
muted: (_b = context === null || context === void 0 ? void 0 : context.mediaStream) === null || _b === void 0 ? void 0 : _b.getAudioTracks()[0].muted,
|
|
43722
|
+
status: ctx.state }, 'mic onstatechange', 'fatal');
|
|
43723
|
+
}
|
|
43724
|
+
};
|
|
43467
43725
|
return () => {
|
|
43468
43726
|
var _a;
|
|
43469
43727
|
mic = null;
|
|
@@ -44253,7 +44511,7 @@ const recorderMachineV2 = createMachine({
|
|
|
44253
44511
|
// errors
|
|
44254
44512
|
[GUARDS$3.NO_SOUND_FROM_MIC_MACHINE]: (context, event) => [ERROR_ENUM.NoSoundError].includes(event.data.name),
|
|
44255
44513
|
[GUARDS$3.IS_NOT_ALLOWED_ERROR]: (context, event) => [ERROR_ENUM.NotAllowedError].includes(event.data.name),
|
|
44256
|
-
[GUARDS$3.IS_ERROR_WITH_WRONG_PARAMS]: (context, event) => [ERROR_ENUM.OverconstrainedError
|
|
44514
|
+
[GUARDS$3.IS_ERROR_WITH_WRONG_PARAMS]: (context, event) => [ERROR_ENUM.OverconstrainedError].includes(event.data.name),
|
|
44257
44515
|
[GUARDS$3.IS_VIDEO_CORRUPTED]: (_, { data }) => !data.size,
|
|
44258
44516
|
},
|
|
44259
44517
|
});
|
|
@@ -45560,7 +45818,7 @@ const Main = ({ widgetConfig, setShouldShowWaterMark, myinterviewRef, isWidgetMi
|
|
|
45560
45818
|
isMobile && (React__default.createElement(SliderModal, { isOpen: isSliderModalOpen, onClose: () => setIsSliderModalOpen(false), onRetry: isSetupState ? onRecorderRetry : onReInitRecorder }))));
|
|
45561
45819
|
};
|
|
45562
45820
|
|
|
45563
|
-
var css_248z = "@import url(\"https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600;700&display=swap\");:host,:root,html[data-theme=light]{--color-primary:#5aa4f5;--color-secondary:#5ed0bc;--color-premium:#fac918;--color-special:#6690ff;--color-neutral-10:#f2f2f2;--color-neutral-20:#e6e6e6;--color-neutral-30:#ccc;--color-neutral-40:#aaa;--color-neutral-50:#8d8d8d;--color-neutral-60:#777;--color-neutral-70:#444;--color-neutral-90:#404852;--color-white:#fff;--color-black:#000;--color-success:#5ed0bc;--color-warning:#fac918;--color-error:#f25f5b;--color-info:#404852;--color-malibu:linear-gradient(50.24deg,#135 -146.43%,#557ede -0.68%,#6690ff 75.97%)}html[data-theme=dark]{--color-primary:#5aa4f5;--color-secondary:#5ed0bc;--color-premium:#fac918;--color-special:#6690ff;--color-neutral-10:#f2f2f2;--color-neutral-20:#e6e6e6;--color-neutral-30:#ccc;--color-neutral-40:#aaa;--color-neutral-50:#8d8d8d;--color-neutral-60:#777;--color-neutral-70:#444;--color-neutral-90:#404852;--color-white:#222;--color-black:#ddd;--color-success:#5ed0bc;--color-warning:#fac918;--color-error:#f25f5b;--color-info:#404852;--color-malibu:linear-gradient(135deg,#51beff,#6690ff)}.color--primary{color:var(--color-primary)}.background-color--primary{background-color:var(--color-primary)}.border-color--primary{border-color:var(--color-primary)}.color--secondary{color:var(--color-secondary)}.background-color--secondary{background-color:var(--color-secondary)}.border-color--secondary{border-color:var(--color-secondary)}.color--premium{color:var(--color-premium)}.background-color--premium{background-color:var(--color-premium)}.border-color--premium{border-color:var(--color-premium)}.color--special{color:var(--color-special)}.background-color--special{background-color:var(--color-special)}.border-color--special{border-color:var(--color-special)}.color--neutral-10{color:var(--color-neutral-10)}.background-color--neutral-10{background-color:var(--color-neutral-10)}.border-color--neutral-10{border-color:var(--color-neutral-10)}.color--neutral-20{color:var(--color-neutral-20)}.background-color--neutral-20{background-color:var(--color-neutral-20)}.border-color--neutral-20{border-color:var(--color-neutral-20)}.color--neutral-30{color:var(--color-neutral-30)}.background-color--neutral-30{background-color:var(--color-neutral-30)}.border-color--neutral-30{border-color:var(--color-neutral-30)}.color--neutral-40{color:var(--color-neutral-40)}.background-color--neutral-40{background-color:var(--color-neutral-40)}.border-color--neutral-40{border-color:var(--color-neutral-40)}.color--neutral-50{color:var(--color-neutral-50)}.background-color--neutral-50{background-color:var(--color-neutral-50)}.border-color--neutral-50{border-color:var(--color-neutral-50)}.color--neutral-60{color:var(--color-neutral-60)}.background-color--neutral-60{background-color:var(--color-neutral-60)}.border-color--neutral-60{border-color:var(--color-neutral-60)}.color--neutral-70{color:var(--color-neutral-70)}.background-color--neutral-70{background-color:var(--color-neutral-70)}.border-color--neutral-70{border-color:var(--color-neutral-70)}.color--neutral-90{color:var(--color-neutral-90)}.background-color--neutral-90{background-color:var(--color-neutral-90)}.border-color--neutral-90{border-color:var(--color-neutral-90)}.color--white{color:var(--color-white)}.background-color--white{background-color:var(--color-white)}.border-color--white{border-color:var(--color-white)}.color--black{color:var(--color-black)}.background-color--black{background-color:var(--color-black)}.border-color--black{border-color:var(--color-black)}.color--success{color:var(--color-success)}.background-color--success{background-color:var(--color-success)}.border-color--success{border-color:var(--color-success)}.color--warning{color:var(--color-warning)}.background-color--warning{background-color:var(--color-warning)}.border-color--warning{border-color:var(--color-warning)}.color--error{color:var(--color-error)}.background-color--error{background-color:var(--color-error)}.border-color--error{border-color:var(--color-error)}.color--info{color:var(--color-info)}.background-color--info{background-color:var(--color-info)}.border-color--info{border-color:var(--color-info)}.background-color--malibu{background:var(--color-malibu)}*{box-sizing:border-box;font-family:Nunito Sans,sans-serif;margin:0;outline:none;padding:0}body{background-color:var(--color-white)}@keyframes react-loading-skeleton{to{transform:translateX(100%)}}.react-loading-skeleton{--base-color:#ebebeb;--highlight-color:#f5f5f5;--animation-duration:1.5s;--animation-direction:normal;--pseudo-element-display:block;background-color:var(--base-color);border-radius:.25rem;display:inline-flex;line-height:1;overflow:hidden;position:relative;width:100%;z-index:1}.react-loading-skeleton:after{animation-direction:var(--animation-direction);animation-duration:var(--animation-duration);animation-iteration-count:infinite;animation-name:react-loading-skeleton;animation-timing-function:ease-in-out;background-image:linear-gradient(90deg,var(--base-color),var(--highlight-color),var(--base-color));background-repeat:no-repeat;content:\" \";display:var(--pseudo-element-display);height:100%;left:0;position:absolute;right:0;top:0;transform:translateX(-100%)}.myinterview-button{border:none;border-radius:10px;cursor:pointer;font-weight:700;height:45px;letter-spacing:1px}.myinterview-button:disabled{cursor:unset;opacity:.6;pointer-events:none}.myinterview-button--small{font-size:10px;height:35px;min-width:100px;padding:0 20px}.myinterview-button--medium{font-size:12px;height:45px;min-width:150px;padding:0 30px}.myinterview-button--large{font-size:16px;height:65px;min-width:180px;padding:0 45px}.dropdown{align-items:center;cursor:pointer;display:flex;font-size:14px;justify-content:space-between;padding:15px;white-space:nowrap}.dropdown--standalone{border:.5px solid var(--color-neutral-30);border-radius:10px;border-width:.5px!important;height:50px;position:relative}.dropdown--with-icon{padding-left:10px}.dropdown--with-icon svg{height:22px}.dropdown--with-icon .dropdown__selected-item,.dropdown--with-icon .dropdown__selected-item--placeholder{padding-left:8px}.dropdown--opened{border-radius:10px 10px 0 0;box-shadow:0 0 10px -2px #0000001a}.dropdown--opened .dropdown__options{box-shadow:0 0 10px -2px #0000001a;visibility:visible}.dropdown--opened .dropdown__arrow-wrapper{transform:rotate(-180deg)}.dropdown--upside.dropdown--opened{border-radius:0 0 4px 4px;border-top:0}.dropdown--upside .dropdown__options{border-bottom:0;border-radius:10px 10px 0 0;border-top:.5px solid var(--color-neutral-30);bottom:auto;top:0;transform:translateY(-100%)}.dropdown__selected-item{flex:1;overflow:hidden;text-overflow:ellipsis}.dropdown__selected-item::selection{background-color:initial}.dropdown__selected-item--placeholder{opacity:.5}.dropdown__input{border:0;border-radius:10px;height:100%;left:0;opacity:0;padding:15px 30px 15px 15px;pointer-events:none;position:absolute;top:0;width:100%;z-index:0}.dropdown__input--searchable:focus{opacity:1}.dropdown__input--searchable:focus+.dropdown__selected-item{opacity:0!important}.dropdown__arrow-wrapper,.dropdown__clear-wrapper{align-items:center;display:flex;flex-shrink:0;justify-content:center;margin-left:5px;transition:.2s;width:1em}.dropdown__options{background-color:var(--color-white);border:.5px solid var(--color-neutral-30);border-radius:0 0 4px 4px;border-top:0;bottom:0;left:-.75px;list-style:none;margin:0;max-height:0;overflow:auto;padding:0;position:absolute;transform:translateY(100%);visibility:hidden;width:calc(100% + 1.25px)}.dropdown__item{cursor:pointer;max-width:100%;overflow:hidden;padding:15px;text-overflow:ellipsis}.dropdown__item:not(:last-child){border-bottom:.5px solid var(--color-neutral-30)}.dropdown__item--highlighted,.dropdown__item:hover{background-color:var(--color-primary);color:var(--color-white)}.dropdown__item span{margin-right:5px}.tag{background-color:#dde8f6;border-radius:3px;color:#4a90e2;display:inline-block;font-size:13px;font-weight:500;letter-spacing:.5px;margin:5px 8px 5px 0;padding:4px 11px;text-transform:capitalize}.myinterview-text--XS{font-size:12px;line-height:20px}.myinterview-text--S{font-size:14px;line-height:22px}.myinterview-text--M{font-size:16px;line-height:24px}.myinterview-text--L{font-size:18px;line-height:26px}.myinterview-text--H3{font-size:20px;line-height:28px}.myinterview-text--H2{font-size:24px;line-height:32px}.myinterview-text--H1{font-size:30px;line-height:38px}.myinterview-text--D3{font-size:38px;line-height:46px}.myinterview-text--D2{font-size:48px;line-height:54px}.myinterview-text--D1{font-size:56px;line-height:64px}.myinterview-text--regular{font-weight:400}.myinterview-text--semibold{font-weight:600}.myinterview-text--bold{font-weight:700}.myinterview-text--italic{font-style:italic}.myinterview-text--truncated{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toggle-switch{align-items:center;border-radius:99999px;cursor:pointer;display:flex;position:relative;transition:.2s}.toggle-switch__indicator{border-radius:50%;height:.65em;left:10%;position:absolute;transition:.2s;width:.65em}.toggle-switch__indicator--active{left:90%;transform:translateX(-100%)}.toggle-switch:active .toggle-switch__indicator{height:.5em;width:.5em}.toggle-text{align-items:center;cursor:pointer;display:flex;justify-content:center;width:fit-content}.toggle-text__arrow-wrapepr{align-items:center;display:flex;margin-left:5px;transition:.25s ease-in-out;width:1em}.toggle-text__arrow-wrapepr--opened{transform:rotate(-180deg)}.progress{align-items:center;border-radius:50%;display:flex;height:1em;justify-content:center;width:1em}.progress__fill{border-radius:50%;height:.7em;width:.7em}.input-text{display:flex;flex-direction:column;flex-grow:1}.input-text__field{border:.5px solid var(--color-neutral-30);border-radius:10px;font-size:14px;padding:14px 16px;width:100%}.input-text__field--with-icon{padding:14px 43px!important}.input-text__icon-container{margin:10px 12px;position:absolute}.input-text__icon-container i{vertical-align:-webkit-baseline-middle}.input-text__icon-container i svg{height:22px;width:22px}.input-text--error{border:1px solid var(--color-error)}.input-text__error-msg{color:var(--color-error);margin-top:3px}.dnd-wrapper{border:1px solid var(--color-neutral-30);border-radius:10px;height:50px;max-width:500px;padding:7px 10px;position:relative;transition:.3s ease-in-out;width:100%}.dnd-wrapper__placeholder{color:var(--color-neutral-50);font-size:14px;margin-left:5px}.dnd-wrapper__left-hand{align-items:flex-end;display:flex}.dnd-wrapper--scale{transform:scale(1.1)}.dnd-wrapper--border-solid{border:.5px solid var(--color-neutral-30)}.dnd-wrapper__label{align-items:center;display:flex;font-size:14px;height:100%;justify-content:center}.dnd-wrapper__label svg{height:16px;vertical-align:middle;width:16px}.dnd-wrapper__label--with-icon{justify-content:space-between}.dnd-wrapper__label--with-icon i{color:var(--color-neutral-60)}.dnd-wrapper__label--uploaded,.dnd-wrapper__label--uploading{justify-content:flex-start}.dnd-wrapper__label .progress{height:18px;margin-right:5px;width:18px}.dnd-wrapper__icon{align-items:center;display:flex}.dnd-wrapper__icon--clip{font-size:18px;transform:rotate(10deg) rotateX(180deg)}.dnd-wrapper__icon--close{cursor:pointer;margin-left:auto;z-index:10}.dnd-wrapper__text{margin-left:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dnd-wrapper__input{cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:1}.dnd-wrapper__input:disabled{cursor:auto}.myinterview-modal-wrapper{border-radius:4px;box-shadow:0 4px 6px -1px #00000014,0 2px 4px -1px #0000000f;left:50%;max-height:90vh;max-width:90vw;overflow:auto;position:fixed;top:50%;transform:translate(-50%,-50%);z-index:30}.myinterview-modal-wrapper--fullscreen{border-radius:0;box-shadow:none;height:100vh;left:0;max-height:100vh;max-width:100vw;padding:0;top:0;transform:none;width:100vw}.myinterview-modal-wrapper__box{height:100%;max-height:100%;max-width:100%;overflow:auto;width:100%}.myinterview-modal-wrapper__close-btn{cursor:pointer;height:16px;position:absolute;right:20px;top:20px;width:16px}.myinterview-modal-wrapper-background{background-color:#0000001a;height:100vh;left:0;position:fixed;top:0;width:100vw}.phone-number{border:.5px solid var(--color-neutral-30);border-radius:10px;display:flex;position:relative}.phone-number--opened{border-radius:10px 10px 0 0!important}.phone-number--opened--up{border-radius:0 0 10px 10px!important}.phone-number .dropdown{border-right:.5px solid var(--color-neutral-20);padding:0 15px;width:75px}.phone-number .dropdown__selected-item{font-size:16px}.phone-number .input-text{border:0;flex:1}.myinterview-logo-wrapper{max-height:400px}.myinterview-checkbox{align-items:center;border-radius:4px;border-style:solid;border-width:1px;display:flex;justify-content:center;position:relative;transition:all .15s ease-out}.myinterview-checkbox__input{cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:1}.myinterview-checkbox__checkmark{border-radius:50%;display:flex;height:100%;padding:2px;transform:scale(0);transition:.15s ease-out;width:100%}.myinterview-checkbox__checkmark--checked{border-radius:0;transform:scale(1)}.myinterview-checkbox__checkmark svg{height:100%;width:100%}.myinterview-widget-no-select{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.myinterview-widget-scroll-indicator::-webkit-scrollbar{display:initial!important;width:5px}.myinterview-widget-scroll-indicator::-webkit-scrollbar-thumb{background:var(--color-neutral-40)}@keyframes fade-in{0%{opacity:0}}:host{--myinterview-widget-dynamic-overflow:auto;--myitnerview-widget-background-height:calc(40vh - 100px);--myinterview-widget-background-preview-display:none;--myinterview-widget-video-aspect-ratio:0.75;--myinterview-widget-camera-transform:translateZ(0) rotateY(180deg);--myinterview-widget-outer-width:530px;--myinterview-widget-recorder-border-radius:10px;--myinterview-widget-preview-video-border-radius:20px;--myinterview-background-opacity:0}@media (min-width:1200px){:host{--myinterview-widget-recorder-border-radius:20px;--myinterview-widget-preview-video-border-radius:10px}}.myinterview-widget{word-wrap:normal;--myinterview-widget-layout-top:0;--myinterview-widget-layout-right:0;--myinterview-widget-layout-bottom:0;--myinterview-widget-layout-left:0;border-collapse:initial;border-spacing:0;caption-side:top;cursor:auto;direction:ltr;empty-cells:show;font-size:1rem;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:400;letter-spacing:normal;line-height:normal;list-style-image:none;list-style-position:outside;list-style-type:disc;orphans:2;quotes:initial;tab-size:8;text-align:initial;text-align-last:auto;text-decoration-color:initial;text-indent:0;text-justify:auto;text-shadow:none;text-transform:none;visibility:visible;white-space:normal;widows:2;word-break:normal;word-spacing:normal}.myinterview-widget *,.myinterview-widget :after,.myinterview-widget :before{box-sizing:border-box;font-family:Nunito Sans,sans-serif;margin:0}.myinterview-widget__layout{background-color:var(--color-white);border-radius:0;bottom:0;left:0;padding:20px 20px 0;position:fixed;right:0;top:0;transform:translateZ(0);-webkit-transform:translateZ(0);z-index:2147483000}.myinterview-widget__layout--animated{animation:myinterview-widget-open .4s ease-out;-webkit-animation:myinterview-widget-open .4s ease-out;-moz-animation:myinterview-widget-open .4s ease-out;-o-animation:myinterview-widget-open .4s ease-out}.myinterview-widget__layout--minimized{animation:myinterview-widget-minimize .5s ease-in-out forwards;-webkit-animation:myinterview-widget-minimize .5s ease-in-out forwards;-moz-animation:myinterview-widget-minimize .5s ease-in-out forwards;-o-animation:myinterview-widget-minimize .5s ease-in-out forwards;overflow:hidden}.myinterview-widget__layout--minimized>*{opacity:0;transition:opacity .2s ease-out}@media (min-width:480px){.myinterview-widget__layout{display:grid;grid-template-columns:minmax(20px,1fr) minmax(auto,480px) minmax(20px,1fr);padding:20px 0 0}.myinterview-widget__layout>*{grid-column:2}.myinterview-widget__layout>.full{grid-column:1/-1;padding:0}}@media (min-width:1200px){.myinterview-widget__layout{grid-template-columns:10px 1fr 10px;padding:50px 0}}@keyframes myinterview-widget-open{0%{background-color:var(--color-primary);border-radius:10px;bottom:var(--myinterview-widget-layout-bottom);left:var(--myinterview-widget-layout-left);min-height:45px;overflow:hidden;padding:0;right:var(--myinterview-widget-layout-right);top:var(--myinterview-widget-layout-top)}50%{background-color:var(--color-white)}}@keyframes myinterview-widget-minimize{90%{border-radius:10px;bottom:var(--myinterview-widget-layout-bottom);left:var(--myinterview-widget-layout-left);min-height:45px;opacity:1;padding:0;right:var(--myinterview-widget-layout-right);top:var(--myinterview-widget-layout-top);z-index:2147483000}99%{opacity:0}to{background-color:var(--color-primary);border-radius:10px;bottom:var(--myinterview-widget-layout-bottom);left:var(--myinterview-widget-layout-left);min-height:45px;opacity:0;padding:0;right:var(--myinterview-widget-layout-right);top:var(--myinterview-widget-layout-top);z-index:-1}}.myinterview-widget-icons__play-button{cursor:pointer;position:relative}.myinterview-widget-icons__play-button svg{color:var(--color-primary)}.myinterview-widget-icons__play-button svg path{transition:d .4s ease-out;-webkit-transition:d .4s}.myinterview-widget-icons__play-button svg rect{transition:rx .4s;-webkit-transition:rx .4s}.myinterview-widget-icons__loading{background-color:currentColor;border-radius:50%;height:38px;overflow:hidden;position:relative;transform:translateZ(0);width:38px}.myinterview-widget-icons__loading:after{animation:slide 1s infinite;background:linear-gradient(to right,currentColor,var(--color-neutral-10),currentColor);content:\"\";height:100%;left:-50px;position:absolute;width:100%}.myinterview-widget-icons__no-camera-mic{align-items:center;background-color:#eff6fe;border-radius:50%;display:flex;height:80px;justify-content:center;position:relative;width:80px}.myinterview-widget-icons__no-camera-mic__camera,.myinterview-widget-icons__no-camera-mic__mic{align-items:center;border-radius:4px;display:flex;height:28px;justify-content:center;position:absolute;width:28px}.myinterview-widget-icons__no-camera-mic__camera svg,.myinterview-widget-icons__no-camera-mic__mic svg{height:20px;width:20px}.myinterview-widget-icons__no-camera-mic__camera{background-color:var(--color-primary);color:var(--color-white);transform:translate(-35%,-35%)}.myinterview-widget-icons__no-camera-mic__mic{background-color:var(--color-white);color:var(--color-primary);transform:translate(35%,35%)}.myinterview-widget__wrapper{-ms-overflow-style:none;display:flex;flex-direction:column;height:100%;max-height:100%;overflow:hidden;position:relative;scrollbar-width:none}.myinterview-widget__wrapper ::-webkit-scrollbar,.myinterview-widget__wrapper::-webkit-scrollbar{display:none}.myinterview-widget__wrapper--hide-header .myinterview-widget-header{visibility:hidden}.myinterview-widget__background{background:linear-gradient(50.24deg,var(--color-primary) 0,var(--color-special) 75%);height:var(--myitnerview-widget-background-height);left:0;opacity:var(--myinterview-background-opacity);overflow:hidden;position:absolute;top:0;transition:opacity .5s;width:100%}.myinterview-widget__background:before{border:6vh solid hsla(0,0%,100%,.267);border-radius:50%;content:\"\";height:30vh;position:absolute;right:0;top:0;transform:translate(50%,-50%);width:30vh}.myinterview-widget__background:after{background-color:var(--color-white);border-radius:20px 20px 0 0;bottom:0;content:\"\";display:var(--myinterview-widget-background-preview-display);height:20px;position:absolute;width:100%}@media (min-width:1200px){.myinterview-widget__background:after{display:none}.myinterview-widget__background{height:100vh;left:auto;right:0;width:calc(100% - var(--myinterview-widget-outer-width))}.myinterview-widget__background:before{border:12vh solid hsla(0,0%,100%,.267);height:70vh;width:70vh}}.myinterview-widget__watermark{display:none}@media (min-width:1200px){.myinterview-widget__watermark{bottom:20px;display:flex;height:64px;left:20px;position:absolute}}.myinterview-widget__background-dots{display:none}@media (min-width:1200px){.myinterview-widget__background-dots{background-image:radial-gradient(hsla(0,0%,100%,.467) 15%,#0000 0);background-position:0 0,50px 50px;background-size:20px 20px;bottom:0;display:flex;height:200px;position:absolute;right:0;width:200px}}.myinterview-widget__views{--myinterview-widget-views-margin-top:0px;--myinterview-widget-practice-opacity:1;-webkit-overflow-scrolling:touch;color:var(--color-primary);display:flex;flex:1;flex-direction:column;height:100%;overflow-y:var(--myinterview-widget-dynamic-overflow);scroll-snap-type:y mandatory;z-index:20}.myinterview-widget__views--uploading{gap:0;justify-content:center;margin-bottom:30px}@media (min-width:1200px){.myinterview-widget__views{align-items:start;flex:initial;flex:1;flex-direction:row-reverse;gap:0;justify-content:flex-end;overflow:hidden;padding:0;scroll-snap-type:none}.myinterview-widget__views--uploading{margin-bottom:0}}.myinterview-widget__views--rtl .myinterview-widget--rtl-support{direction:rtl}.myinterview-widget-recording-action-button{margin-bottom:20px;min-height:45px;position:relative;scroll-snap-align:end;z-index:1}@media (min-width:1200px){.myinterview-widget-recording-action-button{display:none}}.myinterview-widget-recording-action-button--video-question:disabled{display:none!important}.myinterview-widget-recording-action-button--stop-recording{border:1px solid var(--color-neutral-40)!important}@media (min-width:1200px){.myinterview-widget-recording-action-button--stop-recording{border:none!important}}.myinterview-widget-rotate-screen{align-items:center;animation:fade-in .3s;background-color:var(--color-white);display:none;height:100%;justify-content:center;left:0;padding:20px!important;position:absolute;top:0;width:100%;z-index:400}.myinterview-widget-rotate-screen svg{flex:0;margin-right:40px;min-width:120px}@media screen and (orientation:landscape){.myinterview-widget-rotate-screen{display:flex}}.myinterview-widget-unsupported-modal{align-items:center;background-color:var(--color-white);display:flex;height:100%;justify-content:center;left:0;padding:20px;position:absolute;top:0;width:100%;z-index:400}.myinterview-widget-unsupported-modal__message{text-align:center}.myinterview-widget-minimize{color:var(--color-white);cursor:pointer;display:none;height:20px;position:fixed;right:30px;top:30px;width:20px;z-index:50}@media (min-width:1024px){.myinterview-widget-minimize{display:flex}}.myinterview-widget-header{display:flex;flex-wrap:wrap;gap:18px;height:fit-content;margin:0 0 20px;max-height:112px;max-width:100%;overflow:hidden;transition:all .2s}.myinterview-widget-header--hidden{height:0;margin:0;overflow:hidden}@media (min-width:1200px){.myinterview-widget-header--hidden{height:fit-content;margin:0 0 20px}}.myinterview-widget-header__logo{height:48px}.myinterview-widget-header__logo img{flex-shrink:1;max-height:100%;max-width:100%;object-fit:contain;overflow:hidden}.myinterview-widget-header__details-wrapper{display:flex;flex-direction:column;flex-shrink:0;justify-content:center;letter-spacing:.2px;max-width:100%;min-width:60%;overflow:hidden}@media (min-width:1200px){.myinterview-widget-header{display:none;max-width:var(--myinterview-widget-outer-width);overflow:visible;padding-left:20px}.myinterview-widget-header__company-name{color:var(--color-neutral-50)}.myinterview-widget-header__job-title{color:var(--color-neutral-90)}}.myinterview-widget-header--desktop-layout{display:none}@media (min-width:1200px){.myinterview-widget-header--desktop-layout{display:flex;min-height:48px}}.myinterview-widget-inner{align-items:center;display:flex;flex-direction:column;margin-bottom:20px;min-height:min((100vw - 40px) * 1/var(--myinterview-widget-video-aspect-ratio),480px * 1/var(--myinterview-widget-video-aspect-ratio));position:relative;scroll-snap-align:start;z-index:1}.myinterview-widget-inner--no-snap{scroll-snap-align:none}@media (min-width:1200px){.myinterview-widget-inner{background-color:var(--color-white);border-radius:var(--myinterview-widget-recorder-border-radius);box-shadow:0 4px 14px -2px #00000026;height:calc((100vw - 20px - var(--myinterview-widget-outer-width))*9/16);margin:auto;max-height:440px;max-width:782.2222222222px;min-height:auto;overflow:hidden;width:100%}}.myinterview-widget-inner--hidden{max-height:0;min-height:0;overflow:hidden;visibility:hidden}.myinterview-widget-inner__content{max-height:100%;max-width:fit-content;min-height:200px;min-width:200px;position:sticky;top:0;width:calc(100% - var(--myinterview-widget-views-margin-top)*var(--myinterview-widget-video-aspect-ratio))}.myinterview-widget-inner__content--full-width{min-width:100%}@media (min-width:1200px){.myinterview-widget-inner__content{border-radius:var(--myinterview-widget-recorder-border-radius);height:100%;max-width:100%;position:static;width:100%}}.myinterview-widget-inner__content--error{display:flex;flex:1;flex-direction:column;height:calc(100% - var(--myinterview-widget-views-margin-top));max-width:100%;min-height:fit-content;width:100%}.myinterview-widget-inner .myinterview-widget-explanation{align-items:center;background-color:#fffffff2;border-radius:var(--myinterview-widget-recorder-border-radius);display:flex;flex-direction:column;height:100%;justify-content:center;padding:20px;position:absolute;text-align:center;white-space:pre-line;width:100%;z-index:1}.myinterview-widget-inner .myinterview-widget-explanation__main{margin-bottom:10px}.myinterview-widget-inner .myinterview-widget-recording-action-button{display:none}@media (min-width:1200px){.myinterview-widget-inner .myinterview-widget-recording-action-button{bottom:20px;display:block;left:50%;margin:0;position:absolute;transform:translate(-50%);white-space:nowrap;width:fit-content;z-index:20}}.myinterview-widget-inner--video-question-state,.myinterview-widget-inner--welcome-page-state{min-height:fit-content;min-width:100%}@media (min-width:1200px){.myinterview-widget-inner--video-question-state,.myinterview-widget-inner--welcome-page-state{min-width:auto}.myinterview-widget-inner--video-question-state .myinterview-widget-recording-action-button,.myinterview-widget-inner--welcome-page-state .myinterview-widget-recording-action-button{bottom:70px}}.myinterview-widget-inner--full{flex:1;scroll-snap-align:none}.myinterview-widget-inner--full .myinterview-widget-inner__content{flex:1;height:max-content;max-width:100%;width:100%}@media (min-width:1200px){.myinterview-widget-inner--full{flex:auto}}.myinterview-widget-outer{border-radius:10px;display:flex;flex-direction:column;padding-bottom:20px;scroll-snap-align:end}.myinterview-widget-outer--no-snap{scroll-snap-align:none}.myinterview-widget-outer--hidden{display:none}.myinterview-widget-outer--uploading{flex:0;padding:0}@media (min-width:1200px){.myinterview-widget-outer{background-color:initial;flex:none;height:100%;padding:0 20px 0 0!important;width:var(--myinterview-widget-outer-width)}.myinterview-widget-outer>*{padding:0 20px}.myinterview-widget-outer--hidden{display:flex}.myinterview-widget-outer--uploading{padding:0}}.myinterview-widget-outer .myinterview-widget-question{background-color:#fffffff2;border-radius:10px;margin:0 auto;transition:opacity .25s;width:100%}@media (min-width:1200px){.myinterview-widget-outer .myinterview-widget-question{padding:50px 20px 0}.myinterview-widget-outer .myinterview-widget-question__question{font-size:26px;line-height:36px}}.myinterview-widget-outer--hide-question .myinterview-widget-question{height:0;opacity:0;visibility:hidden}.myinterview-widget-outer__setup{display:flex;flex:1;flex-direction:column}.myinterview-widget-outer__title{margin-bottom:15px}.myinterview-widget-outer__mode-wrapper{background-color:var(--color-white);bottom:0;display:flex;justify-content:space-around;margin-top:15px;padding:10px 0;position:sticky}.myinterview-widget-outer__mode-wrapper:before{background-color:var(--color-white);content:\"\";height:40px;left:0;mask-image:linear-gradient(#0000,var(--color-black));-webkit-mask-image:linear-gradient(#0000,var(--color-black));mask-mode:alpha;position:absolute;top:0;transform:translateY(-100%);width:100%}@media (min-width:1200px){.myinterview-widget-outer__mode-wrapper{background-color:initial;flex-direction:column;justify-content:flex-start;padding:0;position:static;width:65%}.myinterview-widget-outer__mode-wrapper:after,.myinterview-widget-outer__mode-wrapper:before{display:none}}.myinterview-widget-outer__mode-button{letter-spacing:.5px;max-width:42%!important;min-width:100px!important;padding:0 15px!important;width:150px!important}.myinterview-widget-outer__mode-button--start{border:1px solid!important}.myinterview-widget-outer__mode-button--single{background-color:var(--color-special);color:var(--color-white);max-width:100%!important;width:100%!important}@media (min-width:1200px){.myinterview-widget-outer__mode-button{max-width:100%!important;min-width:150px!important;width:100%!important}.myinterview-widget-outer__mode-button:first-child{margin-bottom:20px}}.myinterview-widget-outer__practice-mode-info{margin-bottom:20px}.myinterview-widget-outer .myinterview-widget__countdown-mobile{display:none}.myinterview-widget-video-camera{border-radius:var(--myinterview-widget-recorder-border-radius);display:flex;flex:1;flex-direction:column;max-height:100%;position:relative;width:100%}@media (min-width:1200px){.myinterview-widget-video-camera{transform:translateZ(0) scale(1.005)}}.myinterview-widget-video-camera--hidden{display:none}.myinterview-widget-video-camera video{border-radius:var(--myinterview-widget-recorder-border-radius);object-fit:contain;overflow:hidden;transform:var(--myinterview-widget-camera-transform);-webkit-transform:var(--myinterview-widget-camera-transform);width:100%}.myinterview-widget-video-camera__recording-counter-wrapper{left:10px;position:absolute;top:10px;width:100px;z-index:2}@media (min-width:1200px){.myinterview-widget-video-camera__recording-counter-wrapper{left:25px;top:25px}}.myinterview-widget-video-camera__permissions{align-items:center;animation:fade-in .5s;background-color:#fffffff2;border-radius:var(--myinterview-widget-recorder-border-radius);color:var(--color-neutral-90);display:flex;height:100%;justify-content:center;padding:20px;position:absolute;width:100%;z-index:21}.myinterview-widget-video-camera__permissions-close{cursor:pointer;left:25px;position:absolute;top:25px;width:20px}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator{align-items:center;background-color:var(--color-primary);border-radius:50%;bottom:18px;color:var(--color-white);display:flex;height:40px;isolation:isolate;justify-content:center;left:18px;padding:10px;position:absolute;width:40px}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator--hidden{visibility:hidden}@media (min-width:1200px){.myinterview-widget-video-camera .myinterview-widget__microphone-indicator{bottom:25px;left:auto;right:25px}}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator:after{background:radial-gradient(#0000 40%,var(--color-primary) 90%);border-radius:50%;content:\"\";height:100%;position:absolute;transform:scale(var(--myinterview-widget-voice-level));transform-origin:center;width:100%;will-change:transform;z-index:-1}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator svg{height:100%;width:100%}.myinterview-widget-video-camera .myinterview-widget__practice-mode{opacity:var(--myinterview-widget-practice-opacity);position:absolute;right:10px;top:10px;transition:opacity .3s}@media (min-width:1200px){.myinterview-widget-video-camera .myinterview-widget__practice-mode{opacity:1;right:25px;top:25px}}.myinterview-widget-video-camera .myinterview-widget__question-number{left:15px;top:15px;z-index:1}@media (min-width:1200px){.myinterview-widget-video-camera .myinterview-widget__question-number{left:40px;letter-spacing:.5px;top:30px}}.myinterview-widget-video-camera .myinterview-widget__countdown-desktop{display:none}.myinterview-widget-video-camera__watermark{height:50px;left:15px;opacity:.5;position:absolute;top:15px;width:120px}@media (min-width:1200px){.myinterview-widget-video-camera__watermark{left:25px;top:25px}}.myinterview-widget-recorder-modal{align-items:center;animation:fade-in .5s;background-color:#fffffff2;border-radius:var(--myinterview-widget-recorder-border-radius);bottom:0;color:var(--color-neutral-90);display:flex;filter:drop-shadow(0 0 0 rgba(0,0,0,.2));justify-content:center;left:0;min-height:100%;overflow:hidden;position:absolute;right:0;text-align:center;top:0;z-index:20}.myinterview-widget-recorder-modal__content-wrapper{align-items:center;display:flex;flex-direction:column;gap:5px;letter-spacing:.5px;max-width:80%}@media (min-width:1200px){.myinterview-widget-recorder-modal__content-wrapper{max-width:700px;padding:20px}}.myinterview-widget-recorder-modal__question{max-width:100%;overflow:hidden;overflow-wrap:break-word;text-align:left}@media (min-width:1200px){.myinterview-widget-recorder-modal__question{text-align:center}.myinterview-widget-recorder-modal__question .myinterview-widget__question-duration{justify-content:center}}.myinterview-widget-checks{display:flex;flex-direction:column}.myinterview-widget-checks__item{align-items:center;display:flex;gap:20px;margin-bottom:20px}.myinterview-widget-checks__icon{align-items:center;display:flex;height:100%;justify-content:center;width:40px}.myinterview-widget-checks__text-wrapper{display:flex;flex-direction:column}.myinterview-widget-checks__retry{background-color:initial;border:0;cursor:pointer;margin-left:10px;text-decoration:underline}.myinterview-widget-preview__container{background-color:var(--color-white);display:flex;flex-direction:column;min-height:100%;padding-top:20px;position:relative;width:100%}@media (min-width:1200px){.myinterview-widget-preview__container{border-radius:20px;max-height:100%;padding:4%}}.myinterview-widget-preview__container .myinterview-widget__question-number{margin-bottom:20px;position:relative}@media (min-width:1200px){.myinterview-widget-preview__container .myinterview-widget__question-number{color:var(--color-neutral-90);margin:0;position:absolute}}.myinterview-widget-preview__container .myinterview-widget-errors{animation:fade-in .3s;background-color:var(--color-white);bottom:0;left:0;padding:20px;position:absolute;right:0;text-align:center;top:0;transform:translateZ(150px);-webkit-transform:translateZ(150px);z-index:150}.myinterview-widget-preview__title{margin-bottom:30px;text-align:center}@media (min-width:1200px){.myinterview-widget-preview__title{color:var(--color-neutral-90);margin-bottom:12px}}.myinterview-widget-preview__background{animation:background-fade-in .3s ease-out;background-color:#000000e6;height:100%;isolation:isolate;left:0;position:fixed;top:0;transform:translateZ(150px);width:100%;z-index:150}@keyframes background-fade-in{0%{background-color:#0000;transform:translateZ(-2px);z-index:-2}}.myinterview-widget-preview__close{background-color:var(--color-neutral-60);border-radius:2.5rem;bottom:1vh;left:50%;padding:3px 8px;position:absolute;transform:translateX(-50%)}.myinterview-widget-preview__main{animation:fade-in .5s;display:flex;height:350px;margin:auto;position:relative;touch-action:pan-y;width:100%;z-index:1}.myinterview-widget-preview__main--hide-overflow{overflow:hidden}.myinterview-widget-preview__items-wrapper{--myinterview-widget-preview-transform-x:0;--myinterview-widget-preview-item-transition:0ms;--myinterview-widget-item-width:100%;box-sizing:initial;display:flex;margin-bottom:10px;position:relative;transition-duration:0ms;transition-property:transform;width:100%;z-index:2}.myinterview-widget-preview__items-wrapper--centered{justify-content:center}.myinterview-widget-preview__item{display:flex;flex-direction:column;flex-shrink:0;height:100%;justify-content:center;padding:2%;position:relative;transition:transform var(--myinterview-widget-preview-item-transition);width:var(--myinterview-widget-item-width);z-index:1}.myinterview-widget-preview__item--current{z-index:2}.myinterview-widget-preview__item--single-take{width:50%}.myinterview-widget-preview__video-wrapper{border:0 solid var(--color-primary);border-radius:var(--myinterview-widget-preview-video-border-radius);display:flex;margin:0 auto;opacity:1;overflow:hidden;position:relative;transition-delay:.29s;z-index:3}.myinterview-widget-preview__video-wrapper--mobile{aspect-ratio:var(--myinterview-widget-video-aspect-ratio);height:100%}@media (min-width:1200px){.myinterview-widget-preview__video-wrapper{border-radius:var(--myinterview-widget-preview-video-border-radius);margin:0}}.myinterview-widget-preview__video-wrapper:before{background-color:rgba(0,0,0,.267);border-radius:var(--myinterview-widget-preview-video-border-radius);content:\"\";height:100%;left:0;pointer-events:none;position:absolute;top:0;transform:translateZ(1px);transition:background-color .3s;width:100%;z-index:1}.myinterview-widget-preview__video-wrapper--current:before,.myinterview-widget-preview__video-wrapper--preview:before,.myinterview-widget-preview__video-wrapper:hover:before{background-color:#0000;pointer-events:none}.myinterview-widget-preview__video-wrapper--preview-mobile{opacity:0}.myinterview-widget-preview__video-wrapper:after{border:0 solid var(--color-primary);border-radius:var(--myinterview-widget-preview-video-border-radius);content:\"\";height:100%;pointer-events:none;position:absolute;transition:.15s;width:100%}@media (min-width:1200px){.myinterview-widget-preview__video-wrapper:after{border-radius:var(--myinterview-widget-preview-video-border-radius)}}.myinterview-widget-preview__video-wrapper--selected:before{background-color:#0000;z-index:-1}.myinterview-widget-preview__video-wrapper--selected:after{border:3px solid var(--color-primary)}.myinterview-widget-preview__video{cursor:pointer;transform:translateZ(0);-webkit-transform:translateZ(0);width:100%}.myinterview-widget-preview__dynamic-video{--myinterview-preview-video-top:50%;--myinterview-preview-video-left:50%;--myinterview-preview-video-width:0%;--myinterview-preview-video-height:0%;border-radius:var(--myinterview-widget-preview-video-border-radius);height:var(--myinterview-preview-video-height);left:var(--myinterview-preview-video-left);position:fixed;top:var(--myinterview-preview-video-top);transform:translateZ(-1px);transition:all .3s ease-out;transition-delay:.01s;visibility:hidden;width:var(--myinterview-preview-video-width);z-index:-1}.myinterview-widget-preview__dynamic-video--preview{border-radius:0;height:100%;left:0;max-height:70vh;top:46%;transform:translate3d(0,-50%,200px);visibility:visible;width:100%;z-index:200}.myinterview-widget-preview__number-wrapper{align-items:center;cursor:pointer;display:flex;gap:5px;margin:7px auto 0;position:relative;width:fit-content}@media (min-width:1200px){.myinterview-widget-preview__number-wrapper{margin:7px 0 0}}.myinterview-widget-preview__selected-check-mark{align-items:center;border:1px solid var(--color-neutral-60);border-radius:50%;display:flex;height:20px;justify-content:center;overflow:hidden;padding:1px;pointer-events:none;position:relative;width:20px}.myinterview-widget-preview__selected-check-mark svg{transform:scale(0);-webkit-transform:scale(0);transition:.15s ease-out}.myinterview-widget-preview__selected-check-mark--selected{border:1px solid var(--color-primary)}.myinterview-widget-preview__selected-check-mark--selected svg{transform:scale(1);-webkit-transform:scale(1)}.myinterview-widget-preview__dots-wrapper{align-items:center;display:flex;height:20px;justify-content:center;width:100%}.myinterview-widget-preview__dot{background-color:var(--color-neutral-20);border-radius:50%;cursor:pointer;height:10px;margin:0 7px;position:relative;transition:.3s ease-out;width:10px}.myinterview-widget-preview__dot--selected{background-color:var(--color-primary);cursor:auto;transform:scale(1.5);-webkit-transform:scale(1.5)}.myinterview-widget-preview__play-container{align-items:center;cursor:pointer;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.myinterview-widget-preview__play-button-wrapper{left:50%;top:50%;transform:translateZ(1px);transition:opacity .3s;width:60px}@media (min-width:1200px){.myinterview-widget-preview__play-button-wrapper{max-width:76px;width:25%}}.myinterview-widget-preview__horizontal-line{display:none}@media (min-width:1200px){.myinterview-widget-preview__horizontal-line{background-color:#bdbdbd;display:block;height:1px;margin:15px auto;width:50%}}.myinterview-widget-preview__preview-buttons{align-items:center;display:flex;flex-direction:column;gap:20px;margin-bottom:10px;margin-top:33px;max-width:100%}@media (min-width:1200px){.myinterview-widget-preview__preview-buttons{gap:10px;margin-bottom:0;margin-top:auto}}.myinterview-widget-preview__preview-buttons-top{display:flex;gap:10px;justify-content:space-evenly;max-width:100%;width:100%}@media (min-width:1200px){.myinterview-widget-preview__preview-buttons-top{justify-content:center;width:auto}}.myinterview-widget-preview__preview-button{max-width:45%;min-width:100px;width:150px}.myinterview-widget-preview__preview-button--retake{align-items:center;border:1px solid var(--color-neutral-30);display:flex;justify-content:center;max-width:100%}.myinterview-widget-preview__preview-button--start-interview{background-color:initial;color:var(--color-primary);font-size:13px;max-height:30px;max-width:max-content;padding:0;width:max-content}@media (min-width:1200px){.myinterview-widget-preview__preview-button{flex:1;max-height:42px;min-width:150px}}.myinterview-widget-preview__retakes-wrapper{max-width:45%;min-width:100px;text-align:center;width:150px}@media (min-width:1200px){.myinterview-widget-preview__retakes-wrapper{max-height:42px;min-width:150px}}.myinterview-widget-preview__retakes-left{color:var(--color-neutral-60)}.myinterview-widget-preview__arrow{align-items:center;animation:fade-in .3s;display:flex;height:100%;justify-content:center;min-width:40px;position:absolute;right:0;z-index:5}@media (min-width:1200px){.myinterview-widget-preview__arrow{min-width:4%;transform:translateX(75%)}.myinterview-widget-preview__arrow:before{background-color:#fff;content:\"\";height:100%;left:0;mask-image:linear-gradient(to right,#0000,var(--color-black));-webkit-mask-image:linear-gradient(to right,#0000,var(--color-black));position:absolute;transform:translateX(5px);width:100%}}.myinterview-widget-preview__arrow--prev{left:0;right:auto;transform:translateZ(5px) rotateY(180deg)}@media (min-width:1200px){.myinterview-widget-preview__arrow--prev{transform:translate3d(-75%,0,5px) rotateY(180deg)}}.myinterview-widget-preview__arrow-icon-wrapper{align-items:center;background-color:var(--color-white);border:1px solid var(--color-neutral-30);border-radius:50%;color:var(--color-neutral-90);cursor:pointer;display:flex;height:36px;justify-content:center;position:relative;transform:translateY(-11px);width:36px}@media (min-width:1200px){.myinterview-widget-preview__arrow-icon-wrapper{box-shadow:0 4px 30px #00000026}}.myinterview-widget-video-question{aspect-ratio:16/9;background-color:var(--color-black);border-radius:var(--myinterview-widget-recorder-border-radius);height:fit-content;isolation:isolate;margin:auto;overflow:hidden;position:relative;width:100%;z-index:1}@media (min-width:1200px){.myinterview-widget-video-question{height:100%}}.myinterview-widget-video-question--hidden{position:absolute;visibility:hidden;z-index:-1}.myinterview-widget-video-question--loading{background-color:hsla(0,0%,100%,.467)}.myinterview-widget-video-question--loading:before{animation:slide 1.5s infinite;background:linear-gradient(to right,#0000,var(--color-neutral-10),#0000);content:\"\";height:100%;left:-100%;position:absolute;top:0;width:100%;z-index:-1}@media (min-width:1200px){.myinterview-widget-video-question--loading{background-color:#ccd7f5}}.myinterview-widget-video-question:after{content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}.myinterview-widget-video-question--done:after{background-color:var(--color-black)}.myinterview-widget-video-question__play-button-wrapper{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%);transition:transform .2s ease-out,opacity .3s ease-out;width:clamp(50px,15vw,76px);z-index:1}.myinterview-widget-video-question__play-button-wrapper--hidden{opacity:0;pointer-events:none;touch-action:none;transform:translate(-50%,-50%) scale(1.3);-webkit-transform:translate(-50%,-50%) scale(1.3)}.myinterview-widget-video-question__controls{align-items:center;bottom:0;display:flex;justify-content:center;left:0;margin:10px 12px;position:absolute;right:0;transition:opacity .2s,transform .2s;z-index:1}.myinterview-widget-video-question__controls--inactive{opacity:0;pointer-events:none;touch-action:none;transform:translateY(25%)}.myinterview-widget-video-question__controls>:not(:last-child){margin-right:15px}.myinterview-widget-video-question__controls .myinterview-widget-video-question__control-play-button{min-width:40px;width:50px}.myinterview-widget-video-question__controls .myinterview-widget-video-question__control-play-button .myinterview-widget-icons svg{color:var(--color-white)}.myinterview-widget-video-question__timebar-counter-wrapper{width:100%}.myinterview-widget-video-question__counter-wrapper{-webkit-text-stroke-width:.5px;-webkit-text-stroke-color:var(--color-neutral-90);color:var(--color-white);font-size:13px;font-weight:700}.myinterview-widget-video-question__time-bar{background-color:hsla(0,0%,100%,.467);border-radius:2.5rem;cursor:pointer;height:10px;margin-bottom:5px;position:relative;width:100%}.myinterview-widget-video-question__time-bar--disabled{cursor:auto;pointer-events:none}.myinterview-widget-video-question__time-bar:before{content:\"\";height:30px;left:0;position:absolute;top:0;transform:translateY(-30%);width:100%}@media (min-width:1200px){.myinterview-widget-video-question__time-bar:before{display:none}}.myinterview-widget-video-question__time-bar-progress{background-color:var(--color-primary);border-radius:2.5rem;height:100%;position:absolute;transition:width .25s linear}.myinterview-widget-video-question__time-bar-progress:after{background-color:var(--color-primary);border-radius:50%;content:\"\";height:15px;left:100%;pointer-events:none;position:absolute;top:50%;touch-action:none;transform:translate(-50%,-50%);width:15px}.myinterview-widget-video-question__time-bar-progress--changing{transition:none}.myinterview-widget-video-question__time-bar-progress--unchangeable{cursor:auto}.myinterview-widget-video-question__time-bar-progress--unchangeable:after{display:none}.myinterview-widget-video-question__retry-button{margin-top:20px;width:100%;z-index:2}.myinterview-widget-video-question__retry-button--hidden{position:absolute;visibility:hidden;z-index:-1}@media (min-width:1200px){.myinterview-widget-video-question__retry-button{bottom:70px;left:50%;margin:0 auto;position:absolute;transform:translateX(-50%);width:fit-content}}@keyframes slide{50%{opacity:.9}to{left:100%;opacity:1}}.myinterview-widget-device{align-items:center;background-color:var(--color-white);border-radius:50%;color:var(--color-neutral-90);display:flex;height:40px;justify-content:center;position:absolute;right:18px;width:40px}.myinterview-widget-device__mobile{bottom:18px}.myinterview-widget-device__desktop{right:18px;top:18px;z-index:30}@media (min-width:1200px){.myinterview-widget-device__desktop{right:25px;top:25px}}.myinterview-widget-device__menu-button{align-items:center;background-color:initial;border:none;border-radius:50%;cursor:pointer;display:flex;height:100%;justify-content:center;width:100%}.myinterview-widget-device__modal{--myinterview-widget-select-device-height:48px;background-color:var(--color-white);border-radius:20px;bottom:-15px;box-shadow:0 2px 12px -4px #0000001a;max-width:400px;min-width:300px;position:absolute;right:-12px;transform:translateY(100%)}.myinterview-widget-device__modal:before{background-color:var(--color-white);border-radius:5px;content:\"\";height:20px;position:absolute;right:22px;top:-8px;transform:rotate(45deg);width:20px}.myinterview-widget-device__select-wrapper{display:flex;flex-direction:column;overflow:hidden;padding:20px}.myinterview-widget-device__select-group{display:flex;flex-direction:column}.myinterview-widget-device__select-group:not(:last-child):after{background-color:var(--color-neutral-20);content:\"\";height:1px;margin:10px 0;width:100%}.myinterview-widget-device__selected-device{cursor:pointer;display:flex;height:var(--myinterview-widget-select-device-height);width:100%}.myinterview-widget-device__select-icon{align-items:center;display:flex;min-width:40px}.myinterview-widget-device__select-icon svg{height:20px;width:20px}.myinterview-widget-device__selected-title-wrapper{flex:1;overflow:hidden;padding-right:23px}.myinterview-widget-device__selected-title{line-height:var(--myinterview-widget-select-device-height)!important;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.myinterview-widget-device__arrow{align-items:center;display:flex;margin-left:auto;transform:rotate(0);transition:.2s}.myinterview-widget-device__arrow--open{transform:rotate(-180deg)}.myinterview-widget-device__select-list{display:flex;flex-direction:column;max-height:0;overflow:hidden;transition:max-height .2s ease-out}.myinterview-widget-device__select-list--open{max-height:calc(var(--myinterview-widget-select-device-height)*2);overflow:auto;transition:max-height .2s ease-in}.myinterview-widget-device__select-option{border-radius:4px;cursor:pointer;line-height:var(--myinterview-widget-select-device-height)!important;min-height:var(--myinterview-widget-select-device-height);overflow:hidden;padding:0 40px;text-overflow:ellipsis;white-space:nowrap}.myinterview-widget-device__select-option--selected,.myinterview-widget-device__select-option:hover{color:var(--color-primary)!important}.myinterview-widget-device__select-option--selected{background-color:rgba(90,164,245,.051)!important}.myinterview-widget__countdown-mobile{background-color:var(--color-white);border-radius:2.5rem;left:50%;padding:6px 10px;position:absolute;top:10px;transform:translateX(-50%);z-index:30}@media (min-width:1200px){.myinterview-widget__countdown-mobile{display:none}}.myinterview-widget__countdown-desktop{display:none}@media (min-width:1200px){.myinterview-widget__countdown-desktop{--myinterview-widget-p:100;--myinterview-widget-b:5px;--myinterview-widget-w:160px;align-items:center;display:flex;height:var(--myinterview-widget-w);justify-content:center;margin:auto;padding:0;position:relative;transform:rotateY(180deg);width:var(--myinterview-widget-w)}.myinterview-widget__countdown-desktop:after,.myinterview-widget__countdown-desktop:before{border-radius:50%;content:\"\";position:absolute}.myinterview-widget__countdown-desktop:before{background:radial-gradient(farthest-side,var(--color-primary) 100%,#0000) top/var(--myinterview-widget-b) var(--myinterview-widget-b) no-repeat,conic-gradient(var(--color-primary) calc((var(--myinterview-widget-p))*1%),#0000 0);inset:0;-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - var(--myinterview-widget-b)),#000 calc(100% - var(--myinterview-widget-b)));mask:radial-gradient(farthest-side,#0000 calc(100% - var(--myinterview-widget-b)),#000 calc(100% - var(--myinterview-widget-b)));transition:all 1s}.myinterview-widget__countdown-desktop:after{background:var(--color-primary);inset:calc(50% - var(--myinterview-widget-b)/2);transform:rotate(calc(var(--myinterview-widget-p)*3.6deg)) translateY(calc(50% - var(--myinterview-widget-w)/2))}}.myinterview-widget__countdown-desktop .myinterview-widget__countdown-desktop-text{align-items:center;border:var(--myinterview-widget-b) solid #edf6fe;border-radius:50%;display:flex;height:100%;justify-content:center;position:absolute;transform:rotateY(180deg);width:100%;z-index:-1}.myinterview-widget-counter{align-items:center;background-color:var(--color-white);border-radius:2.5rem;color:var(--color-neutral-90);display:flex;gap:5px;height:36px;justify-content:center}.myinterview-widget-counter__dot{background-color:var(--color-error);border-radius:50%;height:10px;width:10px}.myinterview-widget-counter__clock{display:flex}.myinterview-widget-counter__timer{transition:color .25s}.myinterview-widget-counter__timer--red{color:#f45b2b}.myinterview-widget-loader{-webkit-animation:fade 1.6s infinite;-moz-animation:fade 1.6s infinite;-o-animation:fade 1.6s infinite;animation:fade 1.6s infinite;margin:auto;width:80px}@keyframes fade{0%,to{opacity:0}50%{opacity:1}}@-o-keyframes fade{0%,to{opacity:0}50%{opacity:1}}@-moz-keyframes fade{0%,to{opacity:0}50%{opacity:1}}@-webkit-keyframes fade{0%,to{opacity:0}50%{opacity:1}}.myinterview-widget-error{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;margin:auto}.myinterview-widget-error__message{margin-bottom:10px}.myinterview-widget-errors{align-items:center;display:flex;flex-direction:column;justify-content:center}.myinterview-widget-errors__icon{margin-bottom:15px}.myinterview-widget-errors__details,.myinterview-widget-errors__title{margin-bottom:5px}.myinterview-widget-errors__cta{cursor:pointer;position:relative;text-decoration:underline}.myinterview-widget-errors__cta .myinterview-widget-select-native{height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}.myinterview-widget-slider-modal{animation:close-modal .3s forwards;bottom:0;height:100vh;height:-moz-available;height:-webkit-fill-available;height:stretch;left:0;min-height:100vh;min-height:-moz-available;min-height:-webkit-fill-available;min-height:stretch;overflow:hidden;position:fixed;width:100vw;z-index:50}.myinterview-widget-slider-modal__wrapper{-webkit-overflow-scrolling:touch;height:100%;overflow-y:auto;scroll-snap-type:y mandatory;width:100%}.myinterview-widget-slider-modal__top{min-height:100%;scroll-snap-align:start;touch-action:none}.myinterview-widget-slider-modal__bottom{background-color:var(--color-white);border-radius:20px 20px 0 0;display:flex;flex-direction:column;height:10%;isolation:isolate;min-height:10%;overflow:hidden;position:relative;scroll-snap-align:end;transition:min-height .5s,height .5s;visibility:hidden}.myinterview-widget-slider-modal__pill{background-color:var(--color-neutral-30);border-radius:2.5rem;margin:20px auto 32px;min-height:4px;width:60px}.myinterview-widget-slider-modal--open{animation:none;background-color:#0009;visibility:visible}.myinterview-widget-slider-modal--open .myinterview-widget-slider-modal__bottom{height:80%;min-height:80%;visibility:visible}@keyframes close-modal{0%{background-color:#0009}to{background-color:#0000;visibility:hidden}}.myinterview-widget-permissions__wrapper{display:flex;flex:1;flex-direction:column;margin:0 auto;max-height:100%;max-width:480px;overflow:auto;padding:0 20px 20px;width:100%}@media (min-width:1200px){.myinterview-widget-permissions__wrapper{padding:0 20px}}.myinterview-widget-permissions__icon-wrapper{align-items:center;background-color:#eff6fe;border-radius:50%;color:var(--color-primary);display:flex;justify-content:center;margin:0 auto 20px;min-height:70px;min-width:70px}.myinterview-widget-permissions__icon-wrapper svg{height:32px;width:32px}@media (min-width:1200px){.myinterview-widget-permissions__icon-wrapper{display:none!important}}.myinterview-widget-permissions__title{margin-bottom:20px;text-align:center}@media (min-width:1200px){.myinterview-widget-permissions__title{margin-bottom:15px}}.myinterview-widget-permissions__sub-title{margin-bottom:10px}.myinterview-widget-permissions__steps-wrapper{margin-bottom:15px;padding:0 20px}.myinterview-widget-permissions__step{font-size:14px;list-style:decimal;margin-bottom:10px}.myinterview-widget-permissions__step .text--bold{font-weight:700}.myinterview-widget-permissions__step .safari__key{background-color:var(--color-neutral-20);border-radius:2px;padding:2px 4px}.myinterview-widget-permissions__button{margin-top:auto;min-height:45px}.myinterview-widget-question{position:relative}.myinterview-widget-question:before{color:var(--color-neutral-10);content:attr(data-background-question);font-size:150px;font-weight:700;left:0;position:absolute;top:0;transform:translate(-25%,-25%)}.myinterview-widget-question>*{position:relative;z-index:1}.myinterview-widget-question--inner{position:static}.myinterview-widget-question--inner:before{color:var(--color-neutral-20);top:40%;transform:translate(-25%,-50%)}.myinterview-widget-question__description,.myinterview-widget-question__question{letter-spacing:.5px;margin-bottom:20px}.myinterview-widget-question__duration{display:inline-flex;gap:5px}.myinterview-widget-questions-list{display:none}@media (min-width:1200px){.myinterview-widget-questions-list{display:flex;flex-direction:column;overflow-y:auto;padding:0;position:relative}.myinterview-widget-questions-item{align-items:center;border-radius:0 4px 4px 0;display:flex;gap:20px;letter-spacing:.5px;max-width:100%;min-height:90px;overflow:hidden;padding:20px;position:relative}.myinterview-widget-questions-item__number{align-items:center;background-color:var(--color-neutral-20);border-radius:50%;color:var(--color-neutral-90);display:flex;height:38px;justify-content:center;min-width:38px}.myinterview-widget-questions-item__number--icon{background-color:var(--color-white);color:var(--color-primary)}.myinterview-widget-questions-item__wrapper{flex:1;overflow:hidden}.myinterview-widget-questions-item__question{display:flex;flex-direction:column;gap:2px;overflow:hidden}.myinterview-widget-questions-item__duration-wrapper{align-items:center;color:var(--color-neutral-50);display:flex;font-size:12px;gap:5px;line-height:20px}.myinterview-widget-questions-item__duration-wrapper *{font-size:12px;line-height:20px}.myinterview-widget-questions-item__duration-wrapper svg{width:15px}.myinterview-widget-questions-item--active{background-color:#f7fbff}.myinterview-widget-questions-item--active:before{background-color:var(--color-primary);content:\"\";height:100%;left:0;position:absolute;width:3px}.myinterview-widget-questions-item--active .myinterview-widget-questions-item__number{background-color:var(--color-white);border:1px solid var(--color-primary);color:var(--color-primary)}}.myinterview-widget-upload{align-items:center;background-color:var(--color-white);border-radius:20px;display:flex;flex-direction:column;height:100%;justify-content:center;margin:auto;max-height:500px;overflow:hidden;padding:40px;text-align:center;width:100%}@media (min-width:1200px){.myinterview-widget-upload{margin:0;min-height:360px}}.myinterview-widget-upload__icon{align-items:center;background-color:#5aa4f5;border:12px solid #d7e8fb;border-radius:50%;color:var(--color-white);display:flex;height:110px;justify-content:center;margin-bottom:30px;min-height:110px;position:relative;width:110px}.myinterview-widget-upload__icon:before{background-color:initial;border:12px solid #99c6f8;border-radius:50%;content:\"\";height:100%;position:absolute;width:100%}.myinterview-widget-upload__title{margin-bottom:20px}.myinterview-widget-upload__sub-title{margin-bottom:40px;white-space:pre-line}.myinterview-widget-upload__progress{margin-bottom:10px;width:100%}.myinterview-widget-upload__time-left{align-items:center;color:var(--color-neutral-90);display:flex;gap:10px}.myinterview-widget-top-tips{background-color:var(--color-white);color:var(--color-neutral-90);display:flex;flex-direction:column;padding:50px}.myinterview-widget-top-tips__title{margin-bottom:20px}.myinterview-widget-top-tips__tips{margin-bottom:10px;padding:0 15px}.myinterview-widget-top-tips li{margin-bottom:10px}.myinterview-widget__practice-mode{border-radius:2.5rem;height:36px;padding:5px 15px}.myinterview-widget__practice-mode,.myinterview-widget__recording-button{align-items:center;background-color:var(--color-white);display:flex;justify-content:center}.myinterview-widget__recording-button{border:1px solid var(--color-neutral-30);border-radius:50%;height:64px;width:64px}.myinterview-widget__recording-button-inner{background-color:var(--color-error);border-radius:50%;height:52px;width:52px}.myinterview-widget__recording-button-inner--stop{border-radius:2px;height:16px;width:16px}.myinterview-widget__question-number{position:absolute}.myinterview-widget__question-duration{align-items:center;display:flex;gap:8px}.myinterview-widget__question-duration svg{height:1em;width:1em}.myinterview-widget__progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:2.5rem;height:15px;overflow:hidden;width:100%}.myinterview-widget__progress::-webkit-progress-bar{background-color:#e7f1ef}.myinterview-widget__progress::-webkit-progress-value{background-color:var(--color-success);transition:.3s}.myinterview-widget-welcome-page{display:flex;flex-direction:column;gap:20px;height:100%;margin:30px 0;max-height:100%;overflow:auto;position:relative}@media (min-width:1200px){.myinterview-widget-welcome-page{padding:0 20px}}.myinterview-widget-welcome-page__text-wrapper{display:flex;flex-direction:column;position:relative}.myinterview-widget-welcome-page__text{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;white-space:pre-line}.myinterview-widget-welcome-page__text--closed{-webkit-line-clamp:4;line-clamp:4}.myinterview-widget-welcome-page__toggle{margin-left:auto}.myinterview-widget-welcome-page__action-buttons{display:flex;gap:20px;justify-content:space-between}.myinterview-widget-welcome-page__continue-button{flex:1;max-width:250px;min-width:fit-content}.myinterview-widget-welcome-page__top-tips-button{margin:0 auto}.myinterview-widget-welcome-page__top-tips{align-items:center;display:flex;gap:10px;justify-content:center}.myinterview-modal-wrapper{background-color:var(--color-white);border-radius:0;height:100vh;max-height:100%;max-width:500px;opacity:0;pointer-events:none;top:75%;transition:top .2s ease-out,opacity .2s ease-out;width:100vw}@media (min-width:480px){.myinterview-modal-wrapper{border-radius:10px;height:auto}}.myinterview-modal-wrapper--opened{opacity:1;pointer-events:all;top:50%}.myinterview-modal-wrapper__close-btn{color:var(--color-neutral-90)}";
|
|
45821
|
+
var css_248z = "@import url(\"https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600;700&display=swap\");:host,:root,html[data-theme=light]{--color-primary:#5aa4f5;--color-secondary:#5ed0bc;--color-premium:#fac918;--color-special:#6690ff;--color-neutral-10:#f2f2f2;--color-neutral-20:#e6e6e6;--color-neutral-30:#ccc;--color-neutral-40:#aaa;--color-neutral-50:#8d8d8d;--color-neutral-60:#777;--color-neutral-70:#444;--color-neutral-90:#404852;--color-white:#fff;--color-black:#000;--color-success:#5ed0bc;--color-warning:#fac918;--color-error:#f25f5b;--color-info:#404852;--color-malibu:linear-gradient(50.24deg,#135 -146.43%,#557ede -0.68%,#6690ff 75.97%)}html[data-theme=dark]{--color-primary:#5aa4f5;--color-secondary:#5ed0bc;--color-premium:#fac918;--color-special:#6690ff;--color-neutral-10:#f2f2f2;--color-neutral-20:#e6e6e6;--color-neutral-30:#ccc;--color-neutral-40:#aaa;--color-neutral-50:#8d8d8d;--color-neutral-60:#777;--color-neutral-70:#444;--color-neutral-90:#404852;--color-white:#222;--color-black:#ddd;--color-success:#5ed0bc;--color-warning:#fac918;--color-error:#f25f5b;--color-info:#404852;--color-malibu:linear-gradient(135deg,#51beff,#6690ff)}.color--primary{color:var(--color-primary)}.background-color--primary{background-color:var(--color-primary)}.border-color--primary{border-color:var(--color-primary)}.color--secondary{color:var(--color-secondary)}.background-color--secondary{background-color:var(--color-secondary)}.border-color--secondary{border-color:var(--color-secondary)}.color--premium{color:var(--color-premium)}.background-color--premium{background-color:var(--color-premium)}.border-color--premium{border-color:var(--color-premium)}.color--special{color:var(--color-special)}.background-color--special{background-color:var(--color-special)}.border-color--special{border-color:var(--color-special)}.color--neutral-10{color:var(--color-neutral-10)}.background-color--neutral-10{background-color:var(--color-neutral-10)}.border-color--neutral-10{border-color:var(--color-neutral-10)}.color--neutral-20{color:var(--color-neutral-20)}.background-color--neutral-20{background-color:var(--color-neutral-20)}.border-color--neutral-20{border-color:var(--color-neutral-20)}.color--neutral-30{color:var(--color-neutral-30)}.background-color--neutral-30{background-color:var(--color-neutral-30)}.border-color--neutral-30{border-color:var(--color-neutral-30)}.color--neutral-40{color:var(--color-neutral-40)}.background-color--neutral-40{background-color:var(--color-neutral-40)}.border-color--neutral-40{border-color:var(--color-neutral-40)}.color--neutral-50{color:var(--color-neutral-50)}.background-color--neutral-50{background-color:var(--color-neutral-50)}.border-color--neutral-50{border-color:var(--color-neutral-50)}.color--neutral-60{color:var(--color-neutral-60)}.background-color--neutral-60{background-color:var(--color-neutral-60)}.border-color--neutral-60{border-color:var(--color-neutral-60)}.color--neutral-70{color:var(--color-neutral-70)}.background-color--neutral-70{background-color:var(--color-neutral-70)}.border-color--neutral-70{border-color:var(--color-neutral-70)}.color--neutral-90{color:var(--color-neutral-90)}.background-color--neutral-90{background-color:var(--color-neutral-90)}.border-color--neutral-90{border-color:var(--color-neutral-90)}.color--white{color:var(--color-white)}.background-color--white{background-color:var(--color-white)}.border-color--white{border-color:var(--color-white)}.color--black{color:var(--color-black)}.background-color--black{background-color:var(--color-black)}.border-color--black{border-color:var(--color-black)}.color--success{color:var(--color-success)}.background-color--success{background-color:var(--color-success)}.border-color--success{border-color:var(--color-success)}.color--warning{color:var(--color-warning)}.background-color--warning{background-color:var(--color-warning)}.border-color--warning{border-color:var(--color-warning)}.color--error{color:var(--color-error)}.background-color--error{background-color:var(--color-error)}.border-color--error{border-color:var(--color-error)}.color--info{color:var(--color-info)}.background-color--info{background-color:var(--color-info)}.border-color--info{border-color:var(--color-info)}.background-color--malibu{background:var(--color-malibu)}*{box-sizing:border-box;font-family:Nunito Sans,sans-serif;margin:0;outline:none;padding:0}body{background-color:var(--color-white)}@keyframes react-loading-skeleton{to{transform:translateX(100%)}}.react-loading-skeleton{--base-color:#ebebeb;--highlight-color:#f5f5f5;--animation-duration:1.5s;--animation-direction:normal;--pseudo-element-display:block;background-color:var(--base-color);border-radius:.25rem;display:inline-flex;line-height:1;overflow:hidden;position:relative;width:100%;z-index:1}.react-loading-skeleton:after{animation-direction:var(--animation-direction);animation-duration:var(--animation-duration);animation-iteration-count:infinite;animation-name:react-loading-skeleton;animation-timing-function:ease-in-out;background-image:linear-gradient(90deg,var(--base-color),var(--highlight-color),var(--base-color));background-repeat:no-repeat;content:\" \";display:var(--pseudo-element-display);height:100%;left:0;position:absolute;right:0;top:0;transform:translateX(-100%)}.myinterview-button{border:none;border-radius:10px;cursor:pointer;font-weight:700;height:45px;letter-spacing:1px}.myinterview-button:disabled{cursor:unset;opacity:.6;pointer-events:none}.myinterview-button--small{font-size:10px;height:35px;min-width:100px;padding:0 20px}.myinterview-button--medium{font-size:12px;height:45px;min-width:150px;padding:0 30px}.myinterview-button--large{font-size:16px;height:65px;min-width:180px;padding:0 45px}.dropdown{align-items:center;cursor:pointer;display:flex;font-size:14px;justify-content:space-between;padding:15px;white-space:nowrap}.dropdown--standalone{border:.5px solid var(--color-neutral-30);border-radius:10px;border-width:.5px!important;height:50px;position:relative}.dropdown--with-icon{padding-left:10px}.dropdown--with-icon svg{height:22px}.dropdown--with-icon .dropdown__selected-item,.dropdown--with-icon .dropdown__selected-item--placeholder{padding-left:8px}.dropdown--opened{border-radius:10px 10px 0 0;box-shadow:0 0 10px -2px #0000001a}.dropdown--opened .dropdown__options{box-shadow:0 0 10px -2px #0000001a;visibility:visible}.dropdown--opened .dropdown__arrow-wrapper{transform:rotate(-180deg)}.dropdown--upside.dropdown--opened{border-radius:0 0 4px 4px;border-top:0}.dropdown--upside .dropdown__options{border-bottom:0;border-radius:10px 10px 0 0;border-top:.5px solid var(--color-neutral-30);bottom:auto;top:0;transform:translateY(-100%)}.dropdown__selected-item{flex:1;overflow:hidden;text-overflow:ellipsis}.dropdown__selected-item::selection{background-color:initial}.dropdown__selected-item--placeholder{opacity:.5}.dropdown__input{border:0;border-radius:10px;height:100%;left:0;opacity:0;padding:15px 30px 15px 15px;pointer-events:none;position:absolute;top:0;width:100%;z-index:0}.dropdown__input--searchable:focus{opacity:1}.dropdown__input--searchable:focus+.dropdown__selected-item{opacity:0!important}.dropdown__arrow-wrapper,.dropdown__clear-wrapper{align-items:center;display:flex;flex-shrink:0;justify-content:center;margin-left:5px;transition:.2s;width:1em}.dropdown__options{background-color:var(--color-white);border:.5px solid var(--color-neutral-30);border-radius:0 0 4px 4px;border-top:0;bottom:0;left:-.75px;list-style:none;margin:0;max-height:0;overflow:auto;padding:0;position:absolute;transform:translateY(100%);visibility:hidden;width:calc(100% + 1.25px)}.dropdown__item{cursor:pointer;max-width:100%;overflow:hidden;padding:15px;text-overflow:ellipsis}.dropdown__item:not(:last-child){border-bottom:.5px solid var(--color-neutral-30)}.dropdown__item--highlighted,.dropdown__item:hover{background-color:var(--color-primary);color:var(--color-white)}.dropdown__item span{margin-right:5px}.tag{background-color:#dde8f6;border-radius:3px;color:#4a90e2;display:inline-block;font-size:13px;font-weight:500;letter-spacing:.5px;margin:5px 8px 5px 0;padding:4px 11px;text-transform:capitalize}.myinterview-text--XS{font-size:12px;line-height:20px}.myinterview-text--S{font-size:14px;line-height:22px}.myinterview-text--M{font-size:16px;line-height:24px}.myinterview-text--L{font-size:18px;line-height:26px}.myinterview-text--H3{font-size:20px;line-height:28px}.myinterview-text--H2{font-size:24px;line-height:32px}.myinterview-text--H1{font-size:30px;line-height:38px}.myinterview-text--D3{font-size:38px;line-height:46px}.myinterview-text--D2{font-size:48px;line-height:54px}.myinterview-text--D1{font-size:56px;line-height:64px}.myinterview-text--regular{font-weight:400}.myinterview-text--semibold{font-weight:600}.myinterview-text--bold{font-weight:700}.myinterview-text--italic{font-style:italic}.myinterview-text--truncated{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toggle-switch{align-items:center;border-radius:99999px;cursor:pointer;display:flex;position:relative;transition:.2s}.toggle-switch__indicator{border-radius:50%;height:.65em;left:10%;position:absolute;transition:.2s;width:.65em}.toggle-switch__indicator--active{left:90%;transform:translateX(-100%)}.toggle-switch:active .toggle-switch__indicator{height:.5em;width:.5em}.toggle-text{align-items:center;cursor:pointer;display:flex;justify-content:center;width:fit-content}.toggle-text__arrow-wrapepr{align-items:center;display:flex;margin-left:5px;transition:.25s ease-in-out;width:1em}.toggle-text__arrow-wrapepr--opened{transform:rotate(-180deg)}.progress{align-items:center;border-radius:50%;display:flex;height:1em;justify-content:center;width:1em}.progress__fill{border-radius:50%;height:.7em;width:.7em}.input-text{display:flex;flex-direction:column;flex-grow:1}.input-text__field{border:.5px solid var(--color-neutral-30);border-radius:10px;font-size:14px;padding:14px 16px;width:100%}.input-text__field--with-icon{padding:14px 43px!important}.input-text__icon-container{margin:10px 12px;position:absolute}.input-text__icon-container i{vertical-align:-webkit-baseline-middle}.input-text__icon-container i svg{height:22px;width:22px}.input-text--error{border:1px solid var(--color-error)}.input-text__error-msg{color:var(--color-error);margin-top:3px}.dnd-wrapper{border:1px solid var(--color-neutral-30);border-radius:10px;height:50px;max-width:500px;padding:7px 10px;position:relative;transition:.3s ease-in-out;width:100%}.dnd-wrapper__placeholder{color:var(--color-neutral-50);font-size:14px;margin-left:5px}.dnd-wrapper__left-hand{align-items:flex-end;display:flex}.dnd-wrapper--scale{transform:scale(1.1)}.dnd-wrapper--border-solid{border:.5px solid var(--color-neutral-30)}.dnd-wrapper__label{align-items:center;display:flex;font-size:14px;height:100%;justify-content:center}.dnd-wrapper__label svg{height:16px;vertical-align:middle;width:16px}.dnd-wrapper__label--with-icon{justify-content:space-between}.dnd-wrapper__label--with-icon i{color:var(--color-neutral-60)}.dnd-wrapper__label--uploaded,.dnd-wrapper__label--uploading{justify-content:flex-start}.dnd-wrapper__label .progress{height:18px;margin-right:5px;width:18px}.dnd-wrapper__icon{align-items:center;display:flex}.dnd-wrapper__icon--clip{font-size:18px;transform:rotate(10deg) rotateX(180deg)}.dnd-wrapper__icon--close{cursor:pointer;margin-left:auto;z-index:10}.dnd-wrapper__text{margin-left:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dnd-wrapper__input{cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:1}.dnd-wrapper__input:disabled{cursor:auto}.myinterview-modal-wrapper{border-radius:4px;box-shadow:0 4px 6px -1px #00000014,0 2px 4px -1px #0000000f;left:50%;max-height:90vh;max-width:90vw;overflow:auto;position:fixed;top:50%;transform:translate(-50%,-50%);z-index:30}.myinterview-modal-wrapper--fullscreen{border-radius:0;box-shadow:none;height:100vh;left:0;max-height:100vh;max-width:100vw;padding:0;top:0;transform:none;width:100vw}.myinterview-modal-wrapper__box{height:100%;max-height:100%;max-width:100%;overflow:auto;width:100%}.myinterview-modal-wrapper__close-btn{cursor:pointer;height:16px;position:absolute;right:20px;top:20px;width:16px}.myinterview-modal-wrapper-background{background-color:#0000001a;height:100vh;left:0;position:fixed;top:0;width:100vw}.phone-number{border:.5px solid var(--color-neutral-30);border-radius:10px;display:flex;position:relative}.phone-number--opened{border-radius:10px 10px 0 0!important}.phone-number--opened--up{border-radius:0 0 10px 10px!important}.phone-number .dropdown{border-right:.5px solid var(--color-neutral-20);padding:0 15px;width:75px}.phone-number .dropdown__selected-item{font-size:16px}.phone-number .input-text{border:0;flex:1}.myinterview-logo-wrapper{max-height:400px}.myinterview-checkbox{align-items:center;border-radius:4px;border-style:solid;border-width:1px;display:flex;flex-shrink:0;justify-content:center;position:relative;transition:all .15s ease-out}.myinterview-checkbox__input{cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:1}.myinterview-checkbox__checkmark{border-radius:50%;display:flex;height:100%;padding:2px;transform:scale(0);transition:.15s ease-out;width:100%}.myinterview-checkbox__checkmark--checked{border-radius:0;transform:scale(1)}.myinterview-checkbox__checkmark svg{height:100%;width:100%}.myinterview-widget-no-select{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.myinterview-widget-scroll-indicator::-webkit-scrollbar{display:initial!important;width:5px}.myinterview-widget-scroll-indicator::-webkit-scrollbar-thumb{background:var(--color-neutral-40)}@keyframes fade-in{0%{opacity:0}}:host{--myinterview-widget-dynamic-overflow:auto;--myitnerview-widget-background-height:calc(40vh - 100px);--myinterview-widget-background-preview-display:none;--myinterview-widget-video-aspect-ratio:0.75;--myinterview-widget-camera-transform:translateZ(0) rotateY(180deg);--myinterview-widget-outer-width:530px;--myinterview-widget-recorder-border-radius:10px;--myinterview-widget-preview-video-border-radius:20px;--myinterview-background-opacity:0}@media (min-width:1200px){:host{--myinterview-widget-recorder-border-radius:20px;--myinterview-widget-preview-video-border-radius:10px}}.myinterview-widget{word-wrap:normal;--myinterview-widget-layout-top:0;--myinterview-widget-layout-right:0;--myinterview-widget-layout-bottom:0;--myinterview-widget-layout-left:0;border-collapse:initial;border-spacing:0;caption-side:top;cursor:auto;direction:ltr;empty-cells:show;font-size:1rem;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:400;letter-spacing:normal;line-height:normal;list-style-image:none;list-style-position:outside;list-style-type:disc;orphans:2;quotes:initial;tab-size:8;text-align:initial;text-align-last:auto;text-decoration-color:initial;text-indent:0;text-justify:auto;text-shadow:none;text-transform:none;visibility:visible;white-space:normal;widows:2;word-break:normal;word-spacing:normal}.myinterview-widget *,.myinterview-widget :after,.myinterview-widget :before{box-sizing:border-box;font-family:Nunito Sans,sans-serif;margin:0}.myinterview-widget__layout{background-color:var(--color-white);border-radius:0;bottom:0;left:0;padding:20px 20px 0;position:fixed;right:0;top:0;transform:translateZ(0);-webkit-transform:translateZ(0);z-index:2147483000}.myinterview-widget__layout--animated{animation:myinterview-widget-open .4s ease-out;-webkit-animation:myinterview-widget-open .4s ease-out;-moz-animation:myinterview-widget-open .4s ease-out;-o-animation:myinterview-widget-open .4s ease-out}.myinterview-widget__layout--minimized{animation:myinterview-widget-minimize .5s ease-in-out forwards;-webkit-animation:myinterview-widget-minimize .5s ease-in-out forwards;-moz-animation:myinterview-widget-minimize .5s ease-in-out forwards;-o-animation:myinterview-widget-minimize .5s ease-in-out forwards;overflow:hidden}.myinterview-widget__layout--minimized>*{opacity:0;transition:opacity .2s ease-out}@media (min-width:480px){.myinterview-widget__layout{display:grid;grid-template-columns:minmax(20px,1fr) minmax(auto,480px) minmax(20px,1fr);padding:20px 0 0}.myinterview-widget__layout>*{grid-column:2}.myinterview-widget__layout>.full{grid-column:1/-1;padding:0}}@media (min-width:1200px){.myinterview-widget__layout{grid-template-columns:10px 1fr 10px;padding:50px 0}}@keyframes myinterview-widget-open{0%{background-color:var(--color-primary);border-radius:10px;bottom:var(--myinterview-widget-layout-bottom);left:var(--myinterview-widget-layout-left);min-height:45px;overflow:hidden;padding:0;right:var(--myinterview-widget-layout-right);top:var(--myinterview-widget-layout-top)}50%{background-color:var(--color-white)}}@keyframes myinterview-widget-minimize{90%{border-radius:10px;bottom:var(--myinterview-widget-layout-bottom);left:var(--myinterview-widget-layout-left);min-height:45px;opacity:1;padding:0;right:var(--myinterview-widget-layout-right);top:var(--myinterview-widget-layout-top);z-index:2147483000}99%{opacity:0}to{background-color:var(--color-primary);border-radius:10px;bottom:var(--myinterview-widget-layout-bottom);left:var(--myinterview-widget-layout-left);min-height:45px;opacity:0;padding:0;right:var(--myinterview-widget-layout-right);top:var(--myinterview-widget-layout-top);z-index:-1}}.myinterview-widget-icons__play-button{cursor:pointer;position:relative}.myinterview-widget-icons__play-button svg{color:var(--color-primary)}.myinterview-widget-icons__play-button svg path{transition:d .4s ease-out;-webkit-transition:d .4s}.myinterview-widget-icons__play-button svg rect{transition:rx .4s;-webkit-transition:rx .4s}.myinterview-widget-icons__loading{background-color:currentColor;border-radius:50%;height:38px;overflow:hidden;position:relative;transform:translateZ(0);width:38px}.myinterview-widget-icons__loading:after{animation:slide 1s infinite;background:linear-gradient(to right,currentColor,var(--color-neutral-10),currentColor);content:\"\";height:100%;left:-50px;position:absolute;width:100%}.myinterview-widget-icons__no-camera-mic{align-items:center;background-color:#eff6fe;border-radius:50%;display:flex;height:80px;justify-content:center;position:relative;width:80px}.myinterview-widget-icons__no-camera-mic__camera,.myinterview-widget-icons__no-camera-mic__mic{align-items:center;border-radius:4px;display:flex;height:28px;justify-content:center;position:absolute;width:28px}.myinterview-widget-icons__no-camera-mic__camera svg,.myinterview-widget-icons__no-camera-mic__mic svg{height:20px;width:20px}.myinterview-widget-icons__no-camera-mic__camera{background-color:var(--color-primary);color:var(--color-white);transform:translate(-35%,-35%)}.myinterview-widget-icons__no-camera-mic__mic{background-color:var(--color-white);color:var(--color-primary);transform:translate(35%,35%)}.myinterview-widget__wrapper{-ms-overflow-style:none;display:flex;flex-direction:column;height:100%;max-height:100%;overflow:hidden;position:relative;scrollbar-width:none}.myinterview-widget__wrapper ::-webkit-scrollbar,.myinterview-widget__wrapper::-webkit-scrollbar{display:none}.myinterview-widget__wrapper--hide-header .myinterview-widget-header{visibility:hidden}.myinterview-widget__background{background:linear-gradient(50.24deg,var(--color-primary) 0,var(--color-special) 75%);height:var(--myitnerview-widget-background-height);left:0;opacity:var(--myinterview-background-opacity);overflow:hidden;position:absolute;top:0;transition:opacity .5s;width:100%}.myinterview-widget__background:before{border:6vh solid hsla(0,0%,100%,.267);border-radius:50%;content:\"\";height:30vh;position:absolute;right:0;top:0;transform:translate(50%,-50%);width:30vh}.myinterview-widget__background:after{background-color:var(--color-white);border-radius:20px 20px 0 0;bottom:0;content:\"\";display:var(--myinterview-widget-background-preview-display);height:20px;position:absolute;width:100%}@media (min-width:1200px){.myinterview-widget__background:after{display:none}.myinterview-widget__background{height:100vh;left:auto;right:0;width:calc(100% - var(--myinterview-widget-outer-width))}.myinterview-widget__background:before{border:12vh solid hsla(0,0%,100%,.267);height:70vh;width:70vh}}.myinterview-widget__watermark{display:none}@media (min-width:1200px){.myinterview-widget__watermark{bottom:20px;display:flex;height:64px;left:20px;position:absolute}}.myinterview-widget__background-dots{display:none}@media (min-width:1200px){.myinterview-widget__background-dots{background-image:radial-gradient(hsla(0,0%,100%,.467) 15%,#0000 0);background-position:0 0,50px 50px;background-size:20px 20px;bottom:0;display:flex;height:200px;position:absolute;right:0;width:200px}}.myinterview-widget__views{--myinterview-widget-views-margin-top:0px;--myinterview-widget-practice-opacity:1;-webkit-overflow-scrolling:touch;color:var(--color-primary);display:flex;flex:1;flex-direction:column;height:100%;overflow-y:var(--myinterview-widget-dynamic-overflow);scroll-snap-type:y mandatory;z-index:20}.myinterview-widget__views--uploading{gap:0;justify-content:center;margin-bottom:30px}@media (min-width:1200px){.myinterview-widget__views{align-items:start;flex:initial;flex:1;flex-direction:row-reverse;gap:0;justify-content:flex-end;overflow:hidden;padding:0;scroll-snap-type:none}.myinterview-widget__views--uploading{margin-bottom:0}}.myinterview-widget__views--rtl .myinterview-widget--rtl-support{direction:rtl}.myinterview-widget-recording-action-button{margin-bottom:20px;min-height:45px;position:relative;scroll-snap-align:end;z-index:1}@media (min-width:1200px){.myinterview-widget-recording-action-button{display:none}}.myinterview-widget-recording-action-button--video-question:disabled{display:none!important}.myinterview-widget-recording-action-button--stop-recording{border:1px solid var(--color-neutral-40)!important}@media (min-width:1200px){.myinterview-widget-recording-action-button--stop-recording{border:none!important}}.myinterview-widget-rotate-screen{align-items:center;animation:fade-in .3s;background-color:var(--color-white);display:none;height:100%;justify-content:center;left:0;padding:20px!important;position:absolute;top:0;width:100%;z-index:400}.myinterview-widget-rotate-screen svg{flex:0;margin-right:40px;min-width:120px}@media screen and (orientation:landscape){.myinterview-widget-rotate-screen{display:flex}}.myinterview-widget-unsupported-modal{align-items:center;background-color:var(--color-white);display:flex;height:100%;justify-content:center;left:0;padding:20px;position:absolute;top:0;width:100%;z-index:400}.myinterview-widget-unsupported-modal__message{text-align:center}.myinterview-widget-minimize{color:var(--color-white);cursor:pointer;display:none;height:20px;position:fixed;right:30px;top:30px;width:20px;z-index:50}@media (min-width:1024px){.myinterview-widget-minimize{display:flex}}.myinterview-widget-header{display:flex;flex-wrap:wrap;gap:18px;height:fit-content;margin:0 0 20px;max-height:112px;max-width:100%;overflow:hidden;transition:all .2s}.myinterview-widget-header--hidden{height:0;margin:0;overflow:hidden}@media (min-width:1200px){.myinterview-widget-header--hidden{height:fit-content;margin:0 0 20px}}.myinterview-widget-header__logo{height:48px}.myinterview-widget-header__logo img{flex-shrink:1;max-height:100%;max-width:100%;object-fit:contain;overflow:hidden}.myinterview-widget-header__details-wrapper{display:flex;flex-direction:column;flex-shrink:0;justify-content:center;letter-spacing:.2px;max-width:100%;min-width:60%;overflow:hidden}@media (min-width:1200px){.myinterview-widget-header{display:none;max-width:var(--myinterview-widget-outer-width);overflow:visible;padding-left:20px}.myinterview-widget-header__company-name{color:var(--color-neutral-50)}.myinterview-widget-header__job-title{color:var(--color-neutral-90)}}.myinterview-widget-header--desktop-layout{display:none}@media (min-width:1200px){.myinterview-widget-header--desktop-layout{display:flex;min-height:48px}}.myinterview-widget-inner{align-items:center;display:flex;flex-direction:column;margin-bottom:20px;min-height:min((100vw - 40px) * 1/var(--myinterview-widget-video-aspect-ratio),480px * 1/var(--myinterview-widget-video-aspect-ratio));position:relative;scroll-snap-align:start;z-index:1}.myinterview-widget-inner--no-snap{scroll-snap-align:none}@media (min-width:1200px){.myinterview-widget-inner{background-color:var(--color-white);border-radius:var(--myinterview-widget-recorder-border-radius);box-shadow:0 4px 14px -2px #00000026;height:calc((100vw - 20px - var(--myinterview-widget-outer-width))*9/16);margin:auto;max-height:440px;max-width:782.2222222222px;min-height:auto;overflow:hidden;width:100%}}.myinterview-widget-inner--hidden{max-height:0;min-height:0;overflow:hidden;visibility:hidden}.myinterview-widget-inner__content{max-height:100%;max-width:fit-content;min-height:200px;min-width:200px;position:sticky;top:0;width:calc(100% - var(--myinterview-widget-views-margin-top)*var(--myinterview-widget-video-aspect-ratio))}.myinterview-widget-inner__content--full-width{min-width:100%}@media (min-width:1200px){.myinterview-widget-inner__content{border-radius:var(--myinterview-widget-recorder-border-radius);height:100%;max-width:100%;position:static;width:100%}}.myinterview-widget-inner__content--error{display:flex;flex:1;flex-direction:column;height:calc(100% - var(--myinterview-widget-views-margin-top));max-width:100%;min-height:fit-content;width:100%}.myinterview-widget-inner .myinterview-widget-explanation{align-items:center;background-color:#fffffff2;border-radius:var(--myinterview-widget-recorder-border-radius);display:flex;flex-direction:column;height:100%;justify-content:center;padding:20px;position:absolute;text-align:center;white-space:pre-line;width:100%;z-index:1}.myinterview-widget-inner .myinterview-widget-explanation__main{margin-bottom:10px}.myinterview-widget-inner .myinterview-widget-recording-action-button{display:none}@media (min-width:1200px){.myinterview-widget-inner .myinterview-widget-recording-action-button{bottom:20px;display:block;left:50%;margin:0;position:absolute;transform:translate(-50%);white-space:nowrap;width:fit-content;z-index:20}}.myinterview-widget-inner--video-question-state,.myinterview-widget-inner--welcome-page-state{min-height:fit-content;min-width:100%}@media (min-width:1200px){.myinterview-widget-inner--video-question-state,.myinterview-widget-inner--welcome-page-state{min-width:auto}.myinterview-widget-inner--video-question-state .myinterview-widget-recording-action-button,.myinterview-widget-inner--welcome-page-state .myinterview-widget-recording-action-button{bottom:70px}}.myinterview-widget-inner--full{flex:1;scroll-snap-align:none}.myinterview-widget-inner--full .myinterview-widget-inner__content{flex:1;height:max-content;max-width:100%;width:100%}@media (min-width:1200px){.myinterview-widget-inner--full{flex:auto}}.myinterview-widget-outer{border-radius:10px;display:flex;flex-direction:column;padding-bottom:20px;scroll-snap-align:end}.myinterview-widget-outer--no-snap{scroll-snap-align:none}.myinterview-widget-outer--hidden{display:none}.myinterview-widget-outer--uploading{flex:0;padding:0}@media (min-width:1200px){.myinterview-widget-outer{background-color:initial;flex:none;height:100%;padding:0 20px 0 0!important;width:var(--myinterview-widget-outer-width)}.myinterview-widget-outer>*{padding:0 20px}.myinterview-widget-outer--hidden{display:flex}.myinterview-widget-outer--uploading{padding:0}}.myinterview-widget-outer .myinterview-widget-question{background-color:#fffffff2;border-radius:10px;margin:0 auto;transition:opacity .25s;width:100%}@media (min-width:1200px){.myinterview-widget-outer .myinterview-widget-question{padding:50px 20px 0}.myinterview-widget-outer .myinterview-widget-question__question{font-size:26px;line-height:36px}}.myinterview-widget-outer--hide-question .myinterview-widget-question{height:0;opacity:0;visibility:hidden}.myinterview-widget-outer__setup{display:flex;flex:1;flex-direction:column}.myinterview-widget-outer__title{margin-bottom:15px}.myinterview-widget-outer__mode-wrapper{background-color:var(--color-white);bottom:0;display:flex;justify-content:space-around;margin-top:15px;padding:10px 0;position:sticky}.myinterview-widget-outer__mode-wrapper:before{background-color:var(--color-white);content:\"\";height:40px;left:0;mask-image:linear-gradient(#0000,var(--color-black));-webkit-mask-image:linear-gradient(#0000,var(--color-black));mask-mode:alpha;position:absolute;top:0;transform:translateY(-100%);width:100%}@media (min-width:1200px){.myinterview-widget-outer__mode-wrapper{background-color:initial;flex-direction:column;justify-content:flex-start;padding:0;position:static;width:65%}.myinterview-widget-outer__mode-wrapper:after,.myinterview-widget-outer__mode-wrapper:before{display:none}}.myinterview-widget-outer__mode-button{letter-spacing:.5px;max-width:42%!important;min-width:100px!important;padding:0 15px!important;width:150px!important}.myinterview-widget-outer__mode-button--start{border:1px solid!important}.myinterview-widget-outer__mode-button--single{background-color:var(--color-special);color:var(--color-white);max-width:100%!important;width:100%!important}@media (min-width:1200px){.myinterview-widget-outer__mode-button{max-width:100%!important;min-width:150px!important;width:100%!important}.myinterview-widget-outer__mode-button:first-child{margin-bottom:20px}}.myinterview-widget-outer__practice-mode-info{margin-bottom:20px}.myinterview-widget-outer .myinterview-widget__countdown-mobile{display:none}.myinterview-widget-video-camera{border-radius:var(--myinterview-widget-recorder-border-radius);display:flex;flex:1;flex-direction:column;max-height:100%;position:relative;width:100%}@media (min-width:1200px){.myinterview-widget-video-camera{transform:translateZ(0) scale(1.005)}}.myinterview-widget-video-camera--hidden{display:none}.myinterview-widget-video-camera video{border-radius:var(--myinterview-widget-recorder-border-radius);object-fit:contain;overflow:hidden;transform:var(--myinterview-widget-camera-transform);-webkit-transform:var(--myinterview-widget-camera-transform);width:100%}.myinterview-widget-video-camera__recording-counter-wrapper{left:10px;position:absolute;top:10px;width:100px;z-index:2}@media (min-width:1200px){.myinterview-widget-video-camera__recording-counter-wrapper{left:25px;top:25px}}.myinterview-widget-video-camera__permissions{align-items:center;animation:fade-in .5s;background-color:#fffffff2;border-radius:var(--myinterview-widget-recorder-border-radius);color:var(--color-neutral-90);display:flex;height:100%;justify-content:center;padding:20px;position:absolute;width:100%;z-index:21}.myinterview-widget-video-camera__permissions-close{cursor:pointer;left:25px;position:absolute;top:25px;width:20px}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator{align-items:center;background-color:var(--color-primary);border-radius:50%;bottom:18px;color:var(--color-white);display:flex;height:40px;isolation:isolate;justify-content:center;left:18px;padding:10px;position:absolute;width:40px}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator--hidden{visibility:hidden}@media (min-width:1200px){.myinterview-widget-video-camera .myinterview-widget__microphone-indicator{bottom:25px;left:auto;right:25px}}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator:after{background:radial-gradient(#0000 40%,var(--color-primary) 90%);border-radius:50%;content:\"\";height:100%;position:absolute;transform:scale(var(--myinterview-widget-voice-level));transform-origin:center;width:100%;will-change:transform;z-index:-1}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator svg{height:100%;width:100%}.myinterview-widget-video-camera .myinterview-widget__practice-mode{opacity:var(--myinterview-widget-practice-opacity);position:absolute;right:10px;top:10px;transition:opacity .3s}@media (min-width:1200px){.myinterview-widget-video-camera .myinterview-widget__practice-mode{opacity:1;right:25px;top:25px}}.myinterview-widget-video-camera .myinterview-widget__question-number{left:15px;top:15px;z-index:1}@media (min-width:1200px){.myinterview-widget-video-camera .myinterview-widget__question-number{left:40px;letter-spacing:.5px;top:30px}}.myinterview-widget-video-camera .myinterview-widget__countdown-desktop{display:none}.myinterview-widget-video-camera__watermark{height:50px;left:15px;opacity:.5;position:absolute;top:15px;width:120px}@media (min-width:1200px){.myinterview-widget-video-camera__watermark{left:25px;top:25px}}.myinterview-widget-recorder-modal{align-items:center;animation:fade-in .5s;background-color:#fffffff2;border-radius:var(--myinterview-widget-recorder-border-radius);bottom:0;color:var(--color-neutral-90);display:flex;filter:drop-shadow(0 0 0 rgba(0,0,0,.2));justify-content:center;left:0;min-height:100%;overflow:hidden;position:absolute;right:0;text-align:center;top:0;z-index:20}.myinterview-widget-recorder-modal__content-wrapper{align-items:center;display:flex;flex-direction:column;gap:5px;letter-spacing:.5px;max-width:80%}@media (min-width:1200px){.myinterview-widget-recorder-modal__content-wrapper{max-width:700px;padding:20px}}.myinterview-widget-recorder-modal__question{max-width:100%;overflow:hidden;overflow-wrap:break-word;text-align:left}@media (min-width:1200px){.myinterview-widget-recorder-modal__question{text-align:center}.myinterview-widget-recorder-modal__question .myinterview-widget__question-duration{justify-content:center}}.myinterview-widget-checks{display:flex;flex-direction:column}.myinterview-widget-checks__item{align-items:center;display:flex;gap:20px;margin-bottom:20px}.myinterview-widget-checks__icon{align-items:center;display:flex;height:100%;justify-content:center;width:40px}.myinterview-widget-checks__text-wrapper{display:flex;flex-direction:column}.myinterview-widget-checks__retry{background-color:initial;border:0;cursor:pointer;margin-left:10px;text-decoration:underline}.myinterview-widget-preview__container{background-color:var(--color-white);display:flex;flex-direction:column;min-height:100%;padding-top:20px;position:relative;width:100%}@media (min-width:1200px){.myinterview-widget-preview__container{border-radius:20px;max-height:100%;padding:4%}}.myinterview-widget-preview__container .myinterview-widget__question-number{margin-bottom:20px;position:relative}@media (min-width:1200px){.myinterview-widget-preview__container .myinterview-widget__question-number{color:var(--color-neutral-90);margin:0;position:absolute}}.myinterview-widget-preview__container .myinterview-widget-errors{animation:fade-in .3s;background-color:var(--color-white);bottom:0;left:0;padding:20px;position:absolute;right:0;text-align:center;top:0;transform:translateZ(150px);-webkit-transform:translateZ(150px);z-index:150}.myinterview-widget-preview__title{margin-bottom:30px;text-align:center}@media (min-width:1200px){.myinterview-widget-preview__title{color:var(--color-neutral-90);margin-bottom:12px}}.myinterview-widget-preview__background{animation:background-fade-in .3s ease-out;background-color:#000000e6;height:100%;isolation:isolate;left:0;position:fixed;top:0;transform:translateZ(150px);width:100%;z-index:150}@keyframes background-fade-in{0%{background-color:#0000;transform:translateZ(-2px);z-index:-2}}.myinterview-widget-preview__close{background-color:var(--color-neutral-60);border-radius:2.5rem;bottom:1vh;left:50%;padding:3px 8px;position:absolute;transform:translateX(-50%)}.myinterview-widget-preview__main{animation:fade-in .5s;display:flex;height:350px;margin:auto;position:relative;touch-action:pan-y;width:100%;z-index:1}.myinterview-widget-preview__main--hide-overflow{overflow:hidden}.myinterview-widget-preview__items-wrapper{--myinterview-widget-preview-transform-x:0;--myinterview-widget-preview-item-transition:0ms;--myinterview-widget-item-width:100%;box-sizing:initial;display:flex;margin-bottom:10px;position:relative;transition-duration:0ms;transition-property:transform;width:100%;z-index:2}.myinterview-widget-preview__items-wrapper--centered{justify-content:center}.myinterview-widget-preview__item{display:flex;flex-direction:column;flex-shrink:0;height:100%;justify-content:center;padding:2%;position:relative;transition:transform var(--myinterview-widget-preview-item-transition);width:var(--myinterview-widget-item-width);z-index:1}.myinterview-widget-preview__item--current{z-index:2}.myinterview-widget-preview__item--single-take{width:50%}.myinterview-widget-preview__video-wrapper{border:0 solid var(--color-primary);border-radius:var(--myinterview-widget-preview-video-border-radius);display:flex;margin:0 auto;opacity:1;overflow:hidden;position:relative;transition-delay:.29s;z-index:3}.myinterview-widget-preview__video-wrapper--mobile{aspect-ratio:var(--myinterview-widget-video-aspect-ratio);height:100%}@media (min-width:1200px){.myinterview-widget-preview__video-wrapper{border-radius:var(--myinterview-widget-preview-video-border-radius);margin:0}}.myinterview-widget-preview__video-wrapper:before{background-color:rgba(0,0,0,.267);border-radius:var(--myinterview-widget-preview-video-border-radius);content:\"\";height:100%;left:0;pointer-events:none;position:absolute;top:0;transform:translateZ(1px);transition:background-color .3s;width:100%;z-index:1}.myinterview-widget-preview__video-wrapper--current:before,.myinterview-widget-preview__video-wrapper--preview:before,.myinterview-widget-preview__video-wrapper:hover:before{background-color:#0000;pointer-events:none}.myinterview-widget-preview__video-wrapper--preview-mobile{opacity:0}.myinterview-widget-preview__video-wrapper:after{border:0 solid var(--color-primary);border-radius:var(--myinterview-widget-preview-video-border-radius);content:\"\";height:100%;pointer-events:none;position:absolute;transition:.15s;width:100%}@media (min-width:1200px){.myinterview-widget-preview__video-wrapper:after{border-radius:var(--myinterview-widget-preview-video-border-radius)}}.myinterview-widget-preview__video-wrapper--selected:before{background-color:#0000;z-index:-1}.myinterview-widget-preview__video-wrapper--selected:after{border:3px solid var(--color-primary)}.myinterview-widget-preview__video{cursor:pointer;transform:translateZ(0);-webkit-transform:translateZ(0);width:100%}.myinterview-widget-preview__dynamic-video{--myinterview-preview-video-top:50%;--myinterview-preview-video-left:50%;--myinterview-preview-video-width:0%;--myinterview-preview-video-height:0%;border-radius:var(--myinterview-widget-preview-video-border-radius);height:var(--myinterview-preview-video-height);left:var(--myinterview-preview-video-left);position:fixed;top:var(--myinterview-preview-video-top);transform:translateZ(-1px);transition:all .3s ease-out;transition-delay:.01s;visibility:hidden;width:var(--myinterview-preview-video-width);z-index:-1}.myinterview-widget-preview__dynamic-video--preview{border-radius:0;height:100%;left:0;max-height:70vh;top:46%;transform:translate3d(0,-50%,200px);visibility:visible;width:100%;z-index:200}.myinterview-widget-preview__number-wrapper{align-items:center;cursor:pointer;display:flex;gap:5px;margin:7px auto 0;position:relative;width:fit-content}@media (min-width:1200px){.myinterview-widget-preview__number-wrapper{margin:7px 0 0}}.myinterview-widget-preview__selected-check-mark{align-items:center;border:1px solid var(--color-neutral-60);border-radius:50%;display:flex;height:20px;justify-content:center;overflow:hidden;padding:1px;pointer-events:none;position:relative;width:20px}.myinterview-widget-preview__selected-check-mark svg{transform:scale(0);-webkit-transform:scale(0);transition:.15s ease-out}.myinterview-widget-preview__selected-check-mark--selected{border:1px solid var(--color-primary)}.myinterview-widget-preview__selected-check-mark--selected svg{transform:scale(1);-webkit-transform:scale(1)}.myinterview-widget-preview__dots-wrapper{align-items:center;display:flex;height:20px;justify-content:center;width:100%}.myinterview-widget-preview__dot{background-color:var(--color-neutral-20);border-radius:50%;cursor:pointer;height:10px;margin:0 7px;position:relative;transition:.3s ease-out;width:10px}.myinterview-widget-preview__dot--selected{background-color:var(--color-primary);cursor:auto;transform:scale(1.5);-webkit-transform:scale(1.5)}.myinterview-widget-preview__play-container{align-items:center;cursor:pointer;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.myinterview-widget-preview__play-button-wrapper{left:50%;top:50%;transform:translateZ(1px);transition:opacity .3s;width:60px}@media (min-width:1200px){.myinterview-widget-preview__play-button-wrapper{max-width:76px;width:25%}}.myinterview-widget-preview__horizontal-line{display:none}@media (min-width:1200px){.myinterview-widget-preview__horizontal-line{background-color:#bdbdbd;display:block;height:1px;margin:15px auto;width:50%}}.myinterview-widget-preview__preview-buttons{align-items:center;display:flex;flex-direction:column;gap:20px;margin-bottom:10px;margin-top:33px;max-width:100%}@media (min-width:1200px){.myinterview-widget-preview__preview-buttons{gap:10px;margin-bottom:0;margin-top:auto}}.myinterview-widget-preview__preview-buttons-top{display:flex;gap:10px;justify-content:space-evenly;max-width:100%;width:100%}@media (min-width:1200px){.myinterview-widget-preview__preview-buttons-top{justify-content:center;width:auto}}.myinterview-widget-preview__preview-button{max-width:45%;min-width:100px;width:150px}.myinterview-widget-preview__preview-button--retake{align-items:center;border:1px solid var(--color-neutral-30);display:flex;justify-content:center;max-width:100%}.myinterview-widget-preview__preview-button--start-interview{background-color:initial;color:var(--color-primary);font-size:13px;max-height:30px;max-width:max-content;padding:0;width:max-content}@media (min-width:1200px){.myinterview-widget-preview__preview-button{flex:1;max-height:42px;min-width:150px}}.myinterview-widget-preview__retakes-wrapper{max-width:45%;min-width:100px;text-align:center;width:150px}@media (min-width:1200px){.myinterview-widget-preview__retakes-wrapper{max-height:42px;min-width:150px}}.myinterview-widget-preview__retakes-left{color:var(--color-neutral-60)}.myinterview-widget-preview__arrow{align-items:center;animation:fade-in .3s;display:flex;height:100%;justify-content:center;min-width:40px;position:absolute;right:0;z-index:5}@media (min-width:1200px){.myinterview-widget-preview__arrow{min-width:4%;transform:translateX(75%)}.myinterview-widget-preview__arrow:before{background-color:#fff;content:\"\";height:100%;left:0;mask-image:linear-gradient(to right,#0000,var(--color-black));-webkit-mask-image:linear-gradient(to right,#0000,var(--color-black));position:absolute;transform:translateX(5px);width:100%}}.myinterview-widget-preview__arrow--prev{left:0;right:auto;transform:translateZ(5px) rotateY(180deg)}@media (min-width:1200px){.myinterview-widget-preview__arrow--prev{transform:translate3d(-75%,0,5px) rotateY(180deg)}}.myinterview-widget-preview__arrow-icon-wrapper{align-items:center;background-color:var(--color-white);border:1px solid var(--color-neutral-30);border-radius:50%;color:var(--color-neutral-90);cursor:pointer;display:flex;height:36px;justify-content:center;position:relative;transform:translateY(-11px);width:36px}@media (min-width:1200px){.myinterview-widget-preview__arrow-icon-wrapper{box-shadow:0 4px 30px #00000026}}.myinterview-widget-video-question{aspect-ratio:16/9;background-color:var(--color-black);border-radius:var(--myinterview-widget-recorder-border-radius);height:fit-content;isolation:isolate;margin:auto;overflow:hidden;position:relative;width:100%;z-index:1}@media (min-width:1200px){.myinterview-widget-video-question{height:100%}}.myinterview-widget-video-question--hidden{position:absolute;visibility:hidden;z-index:-1}.myinterview-widget-video-question--loading{background-color:hsla(0,0%,100%,.467)}.myinterview-widget-video-question--loading:before{animation:slide 1.5s infinite;background:linear-gradient(to right,#0000,var(--color-neutral-10),#0000);content:\"\";height:100%;left:-100%;position:absolute;top:0;width:100%;z-index:-1}@media (min-width:1200px){.myinterview-widget-video-question--loading{background-color:#ccd7f5}}.myinterview-widget-video-question:after{content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}.myinterview-widget-video-question--done:after{background-color:var(--color-black)}.myinterview-widget-video-question__play-button-wrapper{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%);transition:transform .2s ease-out,opacity .3s ease-out;width:clamp(50px,15vw,76px);z-index:1}.myinterview-widget-video-question__play-button-wrapper--hidden{opacity:0;pointer-events:none;touch-action:none;transform:translate(-50%,-50%) scale(1.3);-webkit-transform:translate(-50%,-50%) scale(1.3)}.myinterview-widget-video-question__controls{align-items:center;bottom:0;display:flex;justify-content:center;left:0;margin:10px 12px;position:absolute;right:0;transition:opacity .2s,transform .2s;z-index:1}.myinterview-widget-video-question__controls--inactive{opacity:0;pointer-events:none;touch-action:none;transform:translateY(25%)}.myinterview-widget-video-question__controls>:not(:last-child){margin-right:15px}.myinterview-widget-video-question__controls .myinterview-widget-video-question__control-play-button{min-width:40px;width:50px}.myinterview-widget-video-question__controls .myinterview-widget-video-question__control-play-button .myinterview-widget-icons svg{color:var(--color-white)}.myinterview-widget-video-question__timebar-counter-wrapper{width:100%}.myinterview-widget-video-question__counter-wrapper{-webkit-text-stroke-width:.5px;-webkit-text-stroke-color:var(--color-neutral-90);color:var(--color-white);font-size:13px;font-weight:700}.myinterview-widget-video-question__time-bar{background-color:hsla(0,0%,100%,.467);border-radius:2.5rem;cursor:pointer;height:10px;margin-bottom:5px;position:relative;width:100%}.myinterview-widget-video-question__time-bar--disabled{cursor:auto;pointer-events:none}.myinterview-widget-video-question__time-bar:before{content:\"\";height:30px;left:0;position:absolute;top:0;transform:translateY(-30%);width:100%}@media (min-width:1200px){.myinterview-widget-video-question__time-bar:before{display:none}}.myinterview-widget-video-question__time-bar-progress{background-color:var(--color-primary);border-radius:2.5rem;height:100%;position:absolute;transition:width .25s linear}.myinterview-widget-video-question__time-bar-progress:after{background-color:var(--color-primary);border-radius:50%;content:\"\";height:15px;left:100%;pointer-events:none;position:absolute;top:50%;touch-action:none;transform:translate(-50%,-50%);width:15px}.myinterview-widget-video-question__time-bar-progress--changing{transition:none}.myinterview-widget-video-question__time-bar-progress--unchangeable{cursor:auto}.myinterview-widget-video-question__time-bar-progress--unchangeable:after{display:none}.myinterview-widget-video-question__retry-button{margin-top:20px;width:100%;z-index:2}.myinterview-widget-video-question__retry-button--hidden{position:absolute;visibility:hidden;z-index:-1}@media (min-width:1200px){.myinterview-widget-video-question__retry-button{bottom:70px;left:50%;margin:0 auto;position:absolute;transform:translateX(-50%);width:fit-content}}@keyframes slide{50%{opacity:.9}to{left:100%;opacity:1}}.myinterview-widget-device{align-items:center;background-color:var(--color-white);border-radius:50%;color:var(--color-neutral-90);display:flex;height:40px;justify-content:center;position:absolute;right:18px;width:40px}.myinterview-widget-device__mobile{bottom:18px}.myinterview-widget-device__desktop{right:18px;top:18px;z-index:30}@media (min-width:1200px){.myinterview-widget-device__desktop{right:25px;top:25px}}.myinterview-widget-device__menu-button{align-items:center;background-color:initial;border:none;border-radius:50%;cursor:pointer;display:flex;height:100%;justify-content:center;width:100%}.myinterview-widget-device__modal{--myinterview-widget-select-device-height:48px;background-color:var(--color-white);border-radius:20px;bottom:-15px;box-shadow:0 2px 12px -4px #0000001a;max-width:400px;min-width:300px;position:absolute;right:-12px;transform:translateY(100%)}.myinterview-widget-device__modal:before{background-color:var(--color-white);border-radius:5px;content:\"\";height:20px;position:absolute;right:22px;top:-8px;transform:rotate(45deg);width:20px}.myinterview-widget-device__select-wrapper{display:flex;flex-direction:column;overflow:hidden;padding:20px}.myinterview-widget-device__select-group{display:flex;flex-direction:column}.myinterview-widget-device__select-group:not(:last-child):after{background-color:var(--color-neutral-20);content:\"\";height:1px;margin:10px 0;width:100%}.myinterview-widget-device__selected-device{cursor:pointer;display:flex;height:var(--myinterview-widget-select-device-height);width:100%}.myinterview-widget-device__select-icon{align-items:center;display:flex;min-width:40px}.myinterview-widget-device__select-icon svg{height:20px;width:20px}.myinterview-widget-device__selected-title-wrapper{flex:1;overflow:hidden;padding-right:23px}.myinterview-widget-device__selected-title{line-height:var(--myinterview-widget-select-device-height)!important;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.myinterview-widget-device__arrow{align-items:center;display:flex;margin-left:auto;transform:rotate(0);transition:.2s}.myinterview-widget-device__arrow--open{transform:rotate(-180deg)}.myinterview-widget-device__select-list{display:flex;flex-direction:column;max-height:0;overflow:hidden;transition:max-height .2s ease-out}.myinterview-widget-device__select-list--open{max-height:calc(var(--myinterview-widget-select-device-height)*2);overflow:auto;transition:max-height .2s ease-in}.myinterview-widget-device__select-option{border-radius:4px;cursor:pointer;line-height:var(--myinterview-widget-select-device-height)!important;min-height:var(--myinterview-widget-select-device-height);overflow:hidden;padding:0 40px;text-overflow:ellipsis;white-space:nowrap}.myinterview-widget-device__select-option--selected,.myinterview-widget-device__select-option:hover{color:var(--color-primary)!important}.myinterview-widget-device__select-option--selected{background-color:rgba(90,164,245,.051)!important}.myinterview-widget__countdown-mobile{background-color:var(--color-white);border-radius:2.5rem;left:50%;padding:6px 10px;position:absolute;top:10px;transform:translateX(-50%);z-index:30}@media (min-width:1200px){.myinterview-widget__countdown-mobile{display:none}}.myinterview-widget__countdown-desktop{display:none}@media (min-width:1200px){.myinterview-widget__countdown-desktop{--myinterview-widget-p:100;--myinterview-widget-b:5px;--myinterview-widget-w:160px;align-items:center;display:flex;height:var(--myinterview-widget-w);justify-content:center;margin:auto;padding:0;position:relative;transform:rotateY(180deg);width:var(--myinterview-widget-w)}.myinterview-widget__countdown-desktop:after,.myinterview-widget__countdown-desktop:before{border-radius:50%;content:\"\";position:absolute}.myinterview-widget__countdown-desktop:before{background:radial-gradient(farthest-side,var(--color-primary) 100%,#0000) top/var(--myinterview-widget-b) var(--myinterview-widget-b) no-repeat,conic-gradient(var(--color-primary) calc((var(--myinterview-widget-p))*1%),#0000 0);inset:0;-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - var(--myinterview-widget-b)),#000 calc(100% - var(--myinterview-widget-b)));mask:radial-gradient(farthest-side,#0000 calc(100% - var(--myinterview-widget-b)),#000 calc(100% - var(--myinterview-widget-b)));transition:all 1s}.myinterview-widget__countdown-desktop:after{background:var(--color-primary);inset:calc(50% - var(--myinterview-widget-b)/2);transform:rotate(calc(var(--myinterview-widget-p)*3.6deg)) translateY(calc(50% - var(--myinterview-widget-w)/2))}}.myinterview-widget__countdown-desktop .myinterview-widget__countdown-desktop-text{align-items:center;border:var(--myinterview-widget-b) solid #edf6fe;border-radius:50%;display:flex;height:100%;justify-content:center;position:absolute;transform:rotateY(180deg);width:100%;z-index:-1}.myinterview-widget-counter{align-items:center;background-color:var(--color-white);border-radius:2.5rem;color:var(--color-neutral-90);display:flex;gap:5px;height:36px;justify-content:center}.myinterview-widget-counter__dot{background-color:var(--color-error);border-radius:50%;height:10px;width:10px}.myinterview-widget-counter__clock{display:flex}.myinterview-widget-counter__timer{transition:color .25s}.myinterview-widget-counter__timer--red{color:#f45b2b}.myinterview-widget-loader{-webkit-animation:fade 1.6s infinite;-moz-animation:fade 1.6s infinite;-o-animation:fade 1.6s infinite;animation:fade 1.6s infinite;margin:auto;width:80px}@keyframes fade{0%,to{opacity:0}50%{opacity:1}}@-o-keyframes fade{0%,to{opacity:0}50%{opacity:1}}@-moz-keyframes fade{0%,to{opacity:0}50%{opacity:1}}@-webkit-keyframes fade{0%,to{opacity:0}50%{opacity:1}}.myinterview-widget-error{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;margin:auto}.myinterview-widget-error__message{margin-bottom:10px}.myinterview-widget-errors{align-items:center;display:flex;flex-direction:column;justify-content:center}.myinterview-widget-errors__icon{margin-bottom:15px}.myinterview-widget-errors__details,.myinterview-widget-errors__title{margin-bottom:5px}.myinterview-widget-errors__cta{cursor:pointer;position:relative;text-decoration:underline}.myinterview-widget-errors__cta .myinterview-widget-select-native{height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}.myinterview-widget-slider-modal{animation:close-modal .3s forwards;bottom:0;height:100vh;height:-moz-available;height:-webkit-fill-available;height:stretch;left:0;min-height:100vh;min-height:-moz-available;min-height:-webkit-fill-available;min-height:stretch;overflow:hidden;position:fixed;width:100vw;z-index:50}.myinterview-widget-slider-modal__wrapper{-webkit-overflow-scrolling:touch;height:100%;overflow-y:auto;scroll-snap-type:y mandatory;width:100%}.myinterview-widget-slider-modal__top{min-height:100%;scroll-snap-align:start;touch-action:none}.myinterview-widget-slider-modal__bottom{background-color:var(--color-white);border-radius:20px 20px 0 0;display:flex;flex-direction:column;height:10%;isolation:isolate;min-height:10%;overflow:hidden;position:relative;scroll-snap-align:end;transition:min-height .5s,height .5s;visibility:hidden}.myinterview-widget-slider-modal__pill{background-color:var(--color-neutral-30);border-radius:2.5rem;margin:20px auto 32px;min-height:4px;width:60px}.myinterview-widget-slider-modal--open{animation:none;background-color:#0009;visibility:visible}.myinterview-widget-slider-modal--open .myinterview-widget-slider-modal__bottom{height:80%;min-height:80%;visibility:visible}@keyframes close-modal{0%{background-color:#0009}to{background-color:#0000;visibility:hidden}}.myinterview-widget-permissions__wrapper{display:flex;flex:1;flex-direction:column;margin:0 auto;max-height:100%;max-width:480px;overflow:auto;padding:0 20px 20px;width:100%}@media (min-width:1200px){.myinterview-widget-permissions__wrapper{padding:0 20px}}.myinterview-widget-permissions__icon-wrapper{align-items:center;background-color:#eff6fe;border-radius:50%;color:var(--color-primary);display:flex;justify-content:center;margin:0 auto 20px;min-height:70px;min-width:70px}.myinterview-widget-permissions__icon-wrapper svg{height:32px;width:32px}@media (min-width:1200px){.myinterview-widget-permissions__icon-wrapper{display:none!important}}.myinterview-widget-permissions__title{margin-bottom:20px;text-align:center}@media (min-width:1200px){.myinterview-widget-permissions__title{margin-bottom:15px}}.myinterview-widget-permissions__sub-title{margin-bottom:10px}.myinterview-widget-permissions__steps-wrapper{margin-bottom:15px;padding:0 20px}.myinterview-widget-permissions__step{font-size:14px;list-style:decimal;margin-bottom:10px}.myinterview-widget-permissions__step .text--bold{font-weight:700}.myinterview-widget-permissions__step .safari__key{background-color:var(--color-neutral-20);border-radius:2px;padding:2px 4px}.myinterview-widget-permissions__button{margin-top:auto;min-height:45px}.myinterview-widget-question{position:relative}.myinterview-widget-question:before{color:var(--color-neutral-10);content:attr(data-background-question);font-size:150px;font-weight:700;left:0;position:absolute;top:0;transform:translate(-25%,-25%)}.myinterview-widget-question>*{position:relative;z-index:1}.myinterview-widget-question--inner{position:static}.myinterview-widget-question--inner:before{color:var(--color-neutral-20);top:40%;transform:translate(-25%,-50%)}.myinterview-widget-question__description,.myinterview-widget-question__question{letter-spacing:.5px;margin-bottom:20px}.myinterview-widget-question__duration{display:inline-flex;gap:5px}.myinterview-widget-questions-list{display:none}@media (min-width:1200px){.myinterview-widget-questions-list{display:flex;flex-direction:column;overflow-y:auto;padding:0;position:relative}.myinterview-widget-questions-item{align-items:center;border-radius:0 4px 4px 0;display:flex;gap:20px;letter-spacing:.5px;max-width:100%;min-height:90px;overflow:hidden;padding:20px;position:relative}.myinterview-widget-questions-item__number{align-items:center;background-color:var(--color-neutral-20);border-radius:50%;color:var(--color-neutral-90);display:flex;height:38px;justify-content:center;min-width:38px}.myinterview-widget-questions-item__number--icon{background-color:var(--color-white);color:var(--color-primary)}.myinterview-widget-questions-item__wrapper{flex:1;overflow:hidden}.myinterview-widget-questions-item__question{display:flex;flex-direction:column;gap:2px;overflow:hidden}.myinterview-widget-questions-item__duration-wrapper{align-items:center;color:var(--color-neutral-50);display:flex;font-size:12px;gap:5px;line-height:20px}.myinterview-widget-questions-item__duration-wrapper *{font-size:12px;line-height:20px}.myinterview-widget-questions-item__duration-wrapper svg{width:15px}.myinterview-widget-questions-item--active{background-color:#f7fbff}.myinterview-widget-questions-item--active:before{background-color:var(--color-primary);content:\"\";height:100%;left:0;position:absolute;width:3px}.myinterview-widget-questions-item--active .myinterview-widget-questions-item__number{background-color:var(--color-white);border:1px solid var(--color-primary);color:var(--color-primary)}}.myinterview-widget-upload{align-items:center;background-color:var(--color-white);border-radius:20px;display:flex;flex-direction:column;height:100%;justify-content:center;margin:auto;max-height:500px;overflow:hidden;padding:40px;text-align:center;width:100%}@media (min-width:1200px){.myinterview-widget-upload{margin:0;min-height:360px}}.myinterview-widget-upload__icon{align-items:center;background-color:#5aa4f5;border:12px solid #d7e8fb;border-radius:50%;color:var(--color-white);display:flex;height:110px;justify-content:center;margin-bottom:30px;min-height:110px;position:relative;width:110px}.myinterview-widget-upload__icon:before{background-color:initial;border:12px solid #99c6f8;border-radius:50%;content:\"\";height:100%;position:absolute;width:100%}.myinterview-widget-upload__title{margin-bottom:20px}.myinterview-widget-upload__sub-title{margin-bottom:40px;white-space:pre-line}.myinterview-widget-upload__progress{margin-bottom:10px;width:100%}.myinterview-widget-upload__time-left{align-items:center;color:var(--color-neutral-90);display:flex;gap:10px}.myinterview-widget-top-tips{background-color:var(--color-white);color:var(--color-neutral-90);display:flex;flex-direction:column;padding:50px}.myinterview-widget-top-tips__title{margin-bottom:20px}.myinterview-widget-top-tips__tips{margin-bottom:10px;padding:0 15px}.myinterview-widget-top-tips li{margin-bottom:10px}.myinterview-widget__practice-mode{border-radius:2.5rem;height:36px;padding:5px 15px}.myinterview-widget__practice-mode,.myinterview-widget__recording-button{align-items:center;background-color:var(--color-white);display:flex;justify-content:center}.myinterview-widget__recording-button{border:1px solid var(--color-neutral-30);border-radius:50%;height:64px;width:64px}.myinterview-widget__recording-button-inner{background-color:var(--color-error);border-radius:50%;height:52px;width:52px}.myinterview-widget__recording-button-inner--stop{border-radius:2px;height:16px;width:16px}.myinterview-widget__question-number{position:absolute}.myinterview-widget__question-duration{align-items:center;display:flex;gap:8px}.myinterview-widget__question-duration svg{height:1em;width:1em}.myinterview-widget__progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:2.5rem;height:15px;overflow:hidden;width:100%}.myinterview-widget__progress::-webkit-progress-bar{background-color:#e7f1ef}.myinterview-widget__progress::-webkit-progress-value{background-color:var(--color-success);transition:.3s}.myinterview-widget-welcome-page{display:flex;flex-direction:column;gap:20px;height:100%;margin:30px 0;max-height:100%;overflow:auto;position:relative}@media (min-width:1200px){.myinterview-widget-welcome-page{padding:0 20px}}.myinterview-widget-welcome-page__text-wrapper{display:flex;flex-direction:column;position:relative}.myinterview-widget-welcome-page__text{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;white-space:pre-line}.myinterview-widget-welcome-page__text--closed{-webkit-line-clamp:4;line-clamp:4}.myinterview-widget-welcome-page__toggle{margin-left:auto}.myinterview-widget-welcome-page__action-buttons{display:flex;gap:20px;justify-content:space-between}.myinterview-widget-welcome-page__continue-button{flex:1;max-width:250px;min-width:fit-content}.myinterview-widget-welcome-page__top-tips-button{margin:0 auto}.myinterview-widget-welcome-page__top-tips{align-items:center;display:flex;gap:10px;justify-content:center}.myinterview-modal-wrapper{background-color:var(--color-white);border-radius:0;height:100vh;max-height:100%;max-width:500px;opacity:0;pointer-events:none;top:75%;transition:top .2s ease-out,opacity .2s ease-out;width:100vw}@media (min-width:480px){.myinterview-modal-wrapper{border-radius:10px;height:auto}}.myinterview-modal-wrapper--opened{opacity:1;pointer-events:all;top:50%}.myinterview-modal-wrapper__close-btn{color:var(--color-neutral-90)}";
|
|
45564
45822
|
|
|
45565
45823
|
const RotateScreenIcon = () => (React__default.createElement("svg", { width: "824", height: "800", viewBox: "0 0 824 800", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
45566
45824
|
React__default.createElement("rect", { x: "2.5", y: "2.5", width: "385", height: "795", rx: "37.5", stroke: "currentColor", strokeWidth: "5" }),
|