resig.js
Version:
Universal reactive signal library with complete platform features: signals, animations, CRDTs, scheduling, DOM integration. Works identically across React, SolidJS, Svelte, Vue, and Qwik.
362 lines • 22.1 kB
JavaScript
;
/**
* Signal-Σ - Category-theoretic signal library
* A signal library that obeys algebraic laws, grows via plugins, and never breaks composition
*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.mergeStreams = exports.createThrottledStream = exports.createPersistentStream = exports.createDebouncedStream = exports.createCollaborativeSignal = exports.createAIEnhancedSignal = exports.combineStreams = exports.indexedDBEventStore = exports.eventSourcedORSet = exports.eventSourcedGCounter = exports.createEventSourcedCRDT = exports.createWebRTCStream = exports.createWebRTCBroadcast = exports.BroadcastChannelSignaling = exports.streamFromIterable = exports.streamFrom = exports.createStreamingSignal = exports.createVisionModel = exports.createLLMTransformer = exports.composeAITransformers = exports.globalExtensionRegistry = exports.createExtension = exports.ExtensionPatterns = exports.createUndoRedoManager = exports.UndoRedoManager = exports.createThemeManager = exports.ThemeManager = exports.createRealtimeSync = exports.RealtimeSync = exports.createDragContainer = exports.DragContainer = exports.applyPlugin = exports.composePlugins = exports.commonPlugins = exports.persistPlugin = exports.validatePlugin = exports.transformPlugin = exports.filterPlugin = exports.loggerPlugin = exports.cachePlugin = exports.throttlePlugin = exports.debouncePlugin = void 0;
// Core category exports
__exportStar(require("./core/signal"), exports);
__exportStar(require("./core/effect"), exports);
// Algebra exports
__exportStar(require("./algebras/time"), exports);
__exportStar(require("./algebras/fetch"), exports);
__exportStar(require("./algebras/state"), exports);
// Router exports - Category-theoretic isomorphic router
__exportStar(require("./router"), exports);
// Framework adapters are now loaded dynamically via the factory system
// Individual adapters can be imported directly if needed:
// import { useSignal } from 'resig.js/adapters/react';
// Plugin system (explicit exports to avoid conflicts)
var plugins_1 = require("./plugins");
Object.defineProperty(exports, "debouncePlugin", { enumerable: true, get: function () { return plugins_1.debouncePlugin; } });
Object.defineProperty(exports, "throttlePlugin", { enumerable: true, get: function () { return plugins_1.throttlePlugin; } });
Object.defineProperty(exports, "cachePlugin", { enumerable: true, get: function () { return plugins_1.cachePlugin; } });
Object.defineProperty(exports, "loggerPlugin", { enumerable: true, get: function () { return plugins_1.loggerPlugin; } });
Object.defineProperty(exports, "filterPlugin", { enumerable: true, get: function () { return plugins_1.filterPlugin; } });
Object.defineProperty(exports, "transformPlugin", { enumerable: true, get: function () { return plugins_1.transformPlugin; } });
Object.defineProperty(exports, "validatePlugin", { enumerable: true, get: function () { return plugins_1.validatePlugin; } });
Object.defineProperty(exports, "persistPlugin", { enumerable: true, get: function () { return plugins_1.persistPlugin; } });
Object.defineProperty(exports, "commonPlugins", { enumerable: true, get: function () { return plugins_1.commonPlugins; } });
var plugins_2 = require("./plugins");
Object.defineProperty(exports, "composePlugins", { enumerable: true, get: function () { return plugins_2.compose; } });
Object.defineProperty(exports, "applyPlugin", { enumerable: true, get: function () { return plugins_2.apply; } });
// Extension system exports
var extensions_1 = require("./extensions");
Object.defineProperty(exports, "DragContainer", { enumerable: true, get: function () { return extensions_1.DragContainer; } });
Object.defineProperty(exports, "createDragContainer", { enumerable: true, get: function () { return extensions_1.createDragContainer; } });
Object.defineProperty(exports, "RealtimeSync", { enumerable: true, get: function () { return extensions_1.RealtimeSync; } });
Object.defineProperty(exports, "createRealtimeSync", { enumerable: true, get: function () { return extensions_1.createRealtimeSync; } });
Object.defineProperty(exports, "ThemeManager", { enumerable: true, get: function () { return extensions_1.ThemeManager; } });
Object.defineProperty(exports, "createThemeManager", { enumerable: true, get: function () { return extensions_1.createThemeManager; } });
Object.defineProperty(exports, "UndoRedoManager", { enumerable: true, get: function () { return extensions_1.UndoRedoManager; } });
Object.defineProperty(exports, "createUndoRedoManager", { enumerable: true, get: function () { return extensions_1.createUndoRedoManager; } });
Object.defineProperty(exports, "ExtensionPatterns", { enumerable: true, get: function () { return extensions_1.ExtensionPatterns; } });
Object.defineProperty(exports, "createExtension", { enumerable: true, get: function () { return extensions_1.createExtension; } });
Object.defineProperty(exports, "globalExtensionRegistry", { enumerable: true, get: function () { return extensions_1.globalExtensionRegistry; } });
// Streaming infrastructure exports
var streaming_1 = require("./streaming");
Object.defineProperty(exports, "composeAITransformers", { enumerable: true, get: function () { return streaming_1.composeAITransformers; } });
Object.defineProperty(exports, "createLLMTransformer", { enumerable: true, get: function () { return streaming_1.createLLMTransformer; } });
Object.defineProperty(exports, "createVisionModel", { enumerable: true, get: function () { return streaming_1.createVisionModel; } });
Object.defineProperty(exports, "createStreamingSignal", { enumerable: true, get: function () { return streaming_1.createStreamingSignal; } });
Object.defineProperty(exports, "streamFrom", { enumerable: true, get: function () { return streaming_1.streamFrom; } });
Object.defineProperty(exports, "streamFromIterable", { enumerable: true, get: function () { return streaming_1.streamFromIterable; } });
// WebRTC Streaming
Object.defineProperty(exports, "BroadcastChannelSignaling", { enumerable: true, get: function () { return streaming_1.BroadcastChannelSignaling; } });
Object.defineProperty(exports, "createWebRTCBroadcast", { enumerable: true, get: function () { return streaming_1.createWebRTCBroadcast; } });
Object.defineProperty(exports, "createWebRTCStream", { enumerable: true, get: function () { return streaming_1.createWebRTCStream; } });
// Event Sourcing
Object.defineProperty(exports, "createEventSourcedCRDT", { enumerable: true, get: function () { return streaming_1.createEventSourcedCRDT; } });
Object.defineProperty(exports, "eventSourcedGCounter", { enumerable: true, get: function () { return streaming_1.eventSourcedGCounter; } });
Object.defineProperty(exports, "eventSourcedORSet", { enumerable: true, get: function () { return streaming_1.eventSourcedORSet; } });
Object.defineProperty(exports, "indexedDBEventStore", { enumerable: true, get: function () { return streaming_1.indexedDBEventStore; } });
// Convenience functions
Object.defineProperty(exports, "combineStreams", { enumerable: true, get: function () { return streaming_1.combineStreams; } });
Object.defineProperty(exports, "createAIEnhancedSignal", { enumerable: true, get: function () { return streaming_1.createAIEnhancedSignal; } });
Object.defineProperty(exports, "createCollaborativeSignal", { enumerable: true, get: function () { return streaming_1.createCollaborativeSignal; } });
Object.defineProperty(exports, "createDebouncedStream", { enumerable: true, get: function () { return streaming_1.createDebouncedStream; } });
Object.defineProperty(exports, "createPersistentStream", { enumerable: true, get: function () { return streaming_1.createPersistentStream; } });
Object.defineProperty(exports, "createThrottledStream", { enumerable: true, get: function () { return streaming_1.createThrottledStream; } });
Object.defineProperty(exports, "mergeStreams", { enumerable: true, get: function () { return streaming_1.mergeStreams; } });
// Main API
const fetch_1 = require("./algebras/fetch");
const state_1 = require("./algebras/state");
const time_1 = require("./algebras/time");
const effect_1 = require("./core/effect");
const signal_1 = require("./core/signal");
const router_1 = require("./router");
// CRDT exports
// CRDT exports commented out to avoid unused import errors
// import {
// gCounter,
// pnCounter,
// gSet,
// lwwRegister,
// orSet,
// reactiveGCounter,
// reactivePNCounter,
// reactiveORSet,
// reactiveLWWRegister,
// } from './crdt';
// Block exports commented out to avoid unused import errors
// import {
// block,
// reactiveBlock,
// textBlock,
// headingBlock,
// paragraphBlock,
// containerBlock,
// listBlock,
// editableTextBlock,
// compose,
// sequence,
// } from './blocks';
// DOM adapter exports
const dom_1 = require("./dom");
// Scheduler exports
const scheduler_1 = require("./scheduler");
// htmx/Alpine adapter exports (commented out due to compilation issues)
// import {
// alpineSignal,
// htmxSignal,
// hybridSignal,
// syncCRDTWithHtmx,
// createAlpineDirective,
// createHtmxExtension,
// initializeHtmxAlpineIntegration,
// createTodoSignal,
// createCounterSignal,
// createFormSignal,
// } from './adapters/htmx-alpine';
// Animation system exports (commented out due to compilation issues)
// import {
// Animation,
// AnimationState,
// EasingFunction,
// Interpolator,
// animation,
// easings,
// interpolators,
// ParallelAnimation,
// SequentialAnimation,
// Timeline,
// parallel,
// sequence,
// timeline,
// stagger,
// repeat,
// AnimationManager,
// ScheduledAnimation,
// getGlobalAnimationManager,
// scheduledAnimation,
// animate as animateScheduled,
// scheduledTimeline,
// getAnimationStats,
// debugAnimations,
// profileAnimations,
// AnimatedSignal,
// SpringSignal,
// SpringConfig,
// animatedSignal,
// springSignal,
// animatedNumber,
// springNumber,
// animatedColor,
// animatedArray,
// useAnimatedValue,
// useSpringValue,
// CSSAnimationConfig,
// TransformConfig,
// AnimatedElement,
// animatedElement,
// fadeIn,
// fadeOut,
// slideIn,
// slideOut,
// scale,
// rotate,
// shake,
// bounce,
// animateElements,
// animateOnScroll,
// Keyframe,
// KeyframeAnimation,
// PathPoint,
// PathAnimation,
// PhysicsSpring,
// GestureRecognizer,
// keyframeAnimation,
// pathAnimation,
// physicsSpring,
// gestureRecognizer,
// presets,
// timelineBuilder,
// } from './animation';
// React hooks (available via React adapter factory)
// import {
// useAsyncComputed,
// useAsyncComputedSignal,
// useAsyncSignal,
// useComputed,
// useDebouncedSignal,
// useDerived,
// useEffect,
// useFetch,
// useMachine,
// usePersistentSignal,
// useSignal,
// useValidatedSignal,
// } from './react/hooks';
/**
* Main Signal-Σ API
*/
exports.default = {
// Core constructors
signal: signal_1.signal,
effect: effect_1.effect,
time: time_1.time,
fetch: fetch_1.fetch,
machine: state_1.machine,
// Router constructors
router: router_1.router,
route: router_1.route,
// Framework adapter hooks (available via factory system)
// useSignal,
// useComputed,
// useEffect,
// useMachine,
// useFetch,
// useDerived,
// useValidatedSignal,
// useDebouncedSignal,
// usePersistentSignal,
// useAsyncSignal,
// useAsyncComputed,
// useAsyncComputedSignal,
// CRDT constructors (commented out due to compilation issues)
// gCounter,
// pnCounter,
// gSet,
// lwwRegister,
// orSet,
// reactiveGCounter,
// reactivePNCounter,
// reactiveORSet,
// reactiveLWWRegister,
// Block constructors (commented out due to compilation issues)
// block,
// reactiveBlock,
// textBlock,
// headingBlock,
// paragraphBlock,
// containerBlock,
// listBlock,
// editableTextBlock,
// compose,
// sequence,
// Scheduler
scheduler: scheduler_1.scheduler,
getGlobalScheduler: scheduler_1.getGlobalScheduler,
schedule: scheduler_1.schedule,
cancel: scheduler_1.cancel,
delay: scheduler_1.delay,
nextFrame: scheduler_1.nextFrame,
idle: scheduler_1.idle,
animate: scheduler_1.animate,
debounce: scheduler_1.debounce,
throttle: scheduler_1.throttle,
Priority: scheduler_1.Priority,
// DOM utilities
domSignal: dom_1.domSignal,
bindElement: dom_1.bindElement,
bindAttribute: dom_1.bindAttribute,
bindProperty: dom_1.bindProperty,
bindEvent: dom_1.bindEvent,
domBlock: dom_1.domBlock,
reactiveDOMBlock: dom_1.reactiveDOMBlock,
syncCRDTToDOM: dom_1.syncCRDTToDOM,
bindFormToSignal: dom_1.bindFormToSignal,
delegate: dom_1.delegate,
animateElement: dom_1.animateElement,
observeIntersection: dom_1.observeIntersection,
observeResize: dom_1.observeResize,
// htmx/Alpine integration (commented out due to compilation issues)
// alpineSignal,
// htmxSignal,
// hybridSignal,
// syncCRDTWithHtmx,
// createAlpineDirective,
// createHtmxExtension,
// initializeHtmxAlpineIntegration,
// createTodoSignal,
// createCounterSignal,
// createFormSignal,
// Animation system (commented out due to compilation issues)
// Animation,
// AnimationState,
// EasingFunction,
// Interpolator,
// animation,
// easings,
// interpolators,
// ParallelAnimation,
// SequentialAnimation,
// Timeline,
// parallel,
// sequence,
// timeline,
// stagger,
// repeat,
// AnimationManager,
// ScheduledAnimation,
// getGlobalAnimationManager,
// scheduledAnimation,
// animateScheduled,
// scheduledTimeline,
// getAnimationStats,
// debugAnimations,
// profileAnimations,
// AnimatedSignal,
// SpringSignal,
// SpringConfig,
// animatedSignal,
// springSignal,
// animatedNumber,
// springNumber,
// animatedColor,
// animatedArray,
// useAnimatedValue,
// useSpringValue,
// CSSAnimationConfig,
// TransformConfig,
// AnimatedElement,
// animatedElement,
// fadeIn,
// fadeOut,
// slideIn,
// slideOut,
// scale,
// rotate,
// shake,
// bounce,
// animateElements,
// animateOnScroll,
// Keyframe,
// KeyframeAnimation,
// PathPoint,
// PathAnimation,
// PhysicsSpring,
// GestureRecognizer,
// keyframeAnimation,
// pathAnimation,
// physicsSpring,
// gestureRecognizer,
// presets,
// timelineBuilder,
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCx3QkFBd0I7QUFDeEIsZ0RBQThCO0FBQzlCLGdEQUE4QjtBQUU5QixrQkFBa0I7QUFDbEIsa0RBQWdDO0FBQ2hDLG1EQUFpQztBQUNqQyxtREFBaUM7QUFFakMsd0RBQXdEO0FBQ3hELDJDQUF5QjtBQUV6Qix1RUFBdUU7QUFDdkUsMERBQTBEO0FBQzFELHVEQUF1RDtBQUV2RCxzREFBc0Q7QUFDdEQscUNBVW1CO0FBVGpCLHlHQUFBLGNBQWMsT0FBQTtBQUNkLHlHQUFBLGNBQWMsT0FBQTtBQUNkLHNHQUFBLFdBQVcsT0FBQTtBQUNYLHVHQUFBLFlBQVksT0FBQTtBQUNaLHVHQUFBLFlBQVksT0FBQTtBQUNaLDBHQUFBLGVBQWUsT0FBQTtBQUNmLHlHQUFBLGNBQWMsT0FBQTtBQUNkLHdHQUFBLGFBQWEsT0FBQTtBQUNiLHdHQUFBLGFBQWEsT0FBQTtBQUVmLHFDQUE0RTtBQUFuRSx5R0FBQSxPQUFPLE9BQWtCO0FBQUUsc0dBQUEsS0FBSyxPQUFlO0FBRXhELDJCQUEyQjtBQUMzQiwyQ0FZc0I7QUFYcEIsMkdBQUEsYUFBYSxPQUFBO0FBQ2IsaUhBQUEsbUJBQW1CLE9BQUE7QUFDbkIsMEdBQUEsWUFBWSxPQUFBO0FBQ1osZ0hBQUEsa0JBQWtCLE9BQUE7QUFDbEIsMEdBQUEsWUFBWSxPQUFBO0FBQ1osZ0hBQUEsa0JBQWtCLE9BQUE7QUFDbEIsNkdBQUEsZUFBZSxPQUFBO0FBQ2YsbUhBQUEscUJBQXFCLE9BQUE7QUFDckIsK0dBQUEsaUJBQWlCLE9BQUE7QUFDakIsNkdBQUEsZUFBZSxPQUFBO0FBQ2YscUhBQUEsdUJBQXVCLE9BQUE7QUFHekIsbUNBQW1DO0FBQ25DLHlDQW1DcUI7QUFoQ25CLGtIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLGlIQUFBLG9CQUFvQixPQUFBO0FBQ3BCLDhHQUFBLGlCQUFpQixPQUFBO0FBSWpCLGtIQUFBLHFCQUFxQixPQUFBO0FBR3JCLHVHQUFBLFVBQVUsT0FBQTtBQUNWLCtHQUFBLGtCQUFrQixPQUFBO0FBRWxCLG1CQUFtQjtBQUNuQixzSEFBQSx5QkFBeUIsT0FBQTtBQUN6QixrSEFBQSxxQkFBcUIsT0FBQTtBQUNyQiwrR0FBQSxrQkFBa0IsT0FBQTtBQUVsQixpQkFBaUI7QUFDakIsbUhBQUEsc0JBQXNCLE9BQUE7QUFFdEIsaUhBQUEsb0JBQW9CLE9BQUE7QUFDcEIsOEdBQUEsaUJBQWlCLE9BQUE7QUFDakIsZ0hBQUEsbUJBQW1CLE9BQUE7QUFFbkIsd0JBQXdCO0FBQ3hCLDJHQUFBLGNBQWMsT0FBQTtBQUNkLG1IQUFBLHNCQUFzQixPQUFBO0FBQ3RCLHNIQUFBLHlCQUF5QixPQUFBO0FBQ3pCLGtIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLG1IQUFBLHNCQUFzQixPQUFBO0FBQ3RCLGtIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLHlHQUFBLFlBQVksT0FBQTtBQUdkLFdBQVc7QUFDWCw0Q0FBeUM7QUFDekMsNENBQTJDO0FBQzNDLDBDQUF1QztBQUN2QywwQ0FBdUM7QUFDdkMsMENBQXVDO0FBQ3ZDLHFDQUF5QztBQUN6QyxlQUFlO0FBQ2YsMkRBQTJEO0FBQzNELFdBQVc7QUFDWCxjQUFjO0FBQ2QsZUFBZTtBQUNmLFVBQVU7QUFDVixpQkFBaUI7QUFDakIsV0FBVztBQUNYLHNCQUFzQjtBQUN0Qix1QkFBdUI7QUFDdkIsbUJBQW1CO0FBQ25CLHlCQUF5QjtBQUN6QixtQkFBbUI7QUFFbkIsNERBQTREO0FBQzVELFdBQVc7QUFDWCxXQUFXO0FBQ1gsbUJBQW1CO0FBQ25CLGVBQWU7QUFDZixrQkFBa0I7QUFDbEIsb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNwQixlQUFlO0FBQ2YsdUJBQXVCO0FBQ3ZCLGFBQWE7QUFDYixjQUFjO0FBQ2QscUJBQXFCO0FBQ3JCLHNCQUFzQjtBQUN0QiwrQkFjZTtBQUVmLG9CQUFvQjtBQUNwQiwyQ0FZcUI7QUFFckIsd0VBQXdFO0FBQ3hFLFdBQVc7QUFDWCxrQkFBa0I7QUFDbEIsZ0JBQWdCO0FBQ2hCLGtCQUFrQjtBQUNsQixzQkFBc0I7QUFDdEIsMkJBQTJCO0FBQzNCLHlCQUF5QjtBQUN6QixxQ0FBcUM7QUFDckMsc0JBQXNCO0FBQ3RCLHlCQUF5QjtBQUN6QixzQkFBc0I7QUFDdEIsbUNBQW1DO0FBRW5DLHFFQUFxRTtBQUNyRSxXQUFXO0FBQ1gsZUFBZTtBQUNmLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEIsa0JBQWtCO0FBQ2xCLGVBQWU7QUFDZixhQUFhO0FBQ2IsbUJBQW1CO0FBQ25CLHVCQUF1QjtBQUN2Qix5QkFBeUI7QUFDekIsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUNkLGFBQWE7QUFDYixZQUFZO0FBQ1osc0JBQXNCO0FBQ3RCLHdCQUF3QjtBQUN4QiwrQkFBK0I7QUFDL0Isd0JBQXdCO0FBQ3hCLGlDQUFpQztBQUNqQyx1QkFBdUI7QUFDdkIsdUJBQXVCO0FBQ3ZCLHFCQUFxQjtBQUNyQix1QkFBdUI7QUFDdkIsb0JBQW9CO0FBQ3BCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsb0JBQW9CO0FBQ3BCLGtCQUFrQjtBQUNsQixvQkFBb0I7QUFDcEIsa0JBQWtCO0FBQ2xCLG1CQUFtQjtBQUNuQixtQkFBbUI7QUFDbkIsc0JBQXNCO0FBQ3RCLG9CQUFvQjtBQUNwQix3QkFBd0I7QUFDeEIscUJBQXFCO0FBQ3JCLHFCQUFxQjtBQUNyQixxQkFBcUI7QUFDckIsWUFBWTtBQUNaLGFBQWE7QUFDYixhQUFhO0FBQ2IsY0FBYztBQUNkLFdBQVc7QUFDWCxZQUFZO0FBQ1osV0FBVztBQUNYLFlBQVk7QUFDWixxQkFBcUI7QUFDckIscUJBQXFCO0FBQ3JCLGNBQWM7QUFDZCx1QkFBdUI7QUFDdkIsZUFBZTtBQUNmLG1CQUFtQjtBQUNuQixtQkFBbUI7QUFDbkIsdUJBQXVCO0FBQ3ZCLHVCQUF1QjtBQUN2QixtQkFBbUI7QUFDbkIsbUJBQW1CO0FBQ25CLHVCQUF1QjtBQUN2QixhQUFhO0FBQ2IscUJBQXFCO0FBQ3JCLHdCQUF3QjtBQUN4QixvREFBb0Q7QUFDcEQsV0FBVztBQUNYLHNCQUFzQjtBQUN0Qiw0QkFBNEI7QUFDNUIsb0JBQW9CO0FBQ3BCLGlCQUFpQjtBQUNqQix3QkFBd0I7QUFDeEIsZ0JBQWdCO0FBQ2hCLGVBQWU7QUFDZixjQUFjO0FBQ2QsZ0JBQWdCO0FBQ2hCLHlCQUF5QjtBQUN6QixlQUFlO0FBQ2Ysd0JBQXdCO0FBQ3hCLDBCQUEwQjtBQUUxQjs7R0FFRztBQUNILGtCQUFlO0lBQ2Isb0JBQW9CO0lBQ3BCLE1BQU0sRUFBTixlQUFNO0lBQ04sTUFBTSxFQUFOLGVBQU07SUFDTixJQUFJLEVBQUosV0FBSTtJQUNKLEtBQUssRUFBTCxhQUFLO0lBQ0wsT0FBTyxFQUFQLGVBQU87SUFFUCxzQkFBc0I7SUFDdEIsTUFBTSxFQUFOLGVBQU07SUFDTixLQUFLLEVBQUwsY0FBSztJQUVMLHlEQUF5RDtJQUN6RCxhQUFhO0lBQ2IsZUFBZTtJQUNmLGFBQWE7SUFDYixjQUFjO0lBQ2QsWUFBWTtJQUNaLGNBQWM7SUFDZCxzQkFBc0I7SUFDdEIsc0JBQXNCO0lBQ3RCLHVCQUF1QjtJQUN2QixrQkFBa0I7SUFDbEIsb0JBQW9CO0lBQ3BCLDBCQUEwQjtJQUUxQiw4REFBOEQ7SUFDOUQsWUFBWTtJQUNaLGFBQWE7SUFDYixRQUFRO0lBQ1IsZUFBZTtJQUNmLFNBQVM7SUFDVCxvQkFBb0I7SUFDcEIscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQix1QkFBdUI7SUFFdkIsK0RBQStEO0lBQy9ELFNBQVM7SUFDVCxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEIsa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYixxQkFBcUI7SUFDckIsV0FBVztJQUNYLFlBQVk7SUFFWixZQUFZO0lBQ1osU0FBUyxFQUFULHFCQUFTO0lBQ1Qsa0JBQWtCLEVBQWxCLDhCQUFrQjtJQUNsQixRQUFRLEVBQVIsb0JBQVE7SUFDUixNQUFNLEVBQU4sa0JBQU07SUFDTixLQUFLLEVBQUwsaUJBQUs7SUFDTCxTQUFTLEVBQVQscUJBQVM7SUFDVCxJQUFJLEVBQUosZ0JBQUk7SUFDSixPQUFPLEVBQVAsbUJBQU87SUFDUCxRQUFRLEVBQVIsb0JBQVE7SUFDUixRQUFRLEVBQVIsb0JBQVE7SUFDUixRQUFRLEVBQVIsb0JBQVE7SUFFUixnQkFBZ0I7SUFDaEIsU0FBUyxFQUFULGVBQVM7SUFDVCxXQUFXLEVBQVgsaUJBQVc7SUFDWCxhQUFhLEVBQWIsbUJBQWE7SUFDYixZQUFZLEVBQVosa0JBQVk7SUFDWixTQUFTLEVBQVQsZUFBUztJQUNULFFBQVEsRUFBUixjQUFRO0lBQ1IsZ0JBQWdCLEVBQWhCLHNCQUFnQjtJQUNoQixhQUFhLEVBQWIsbUJBQWE7SUFDYixnQkFBZ0IsRUFBaEIsc0JBQWdCO0lBQ2hCLFFBQVEsRUFBUixjQUFRO0lBQ1IsY0FBYyxFQUFkLG9CQUFjO0lBQ2QsbUJBQW1CLEVBQW5CLHlCQUFtQjtJQUNuQixhQUFhLEVBQWIsbUJBQWE7SUFFYixvRUFBb0U7SUFDcEUsZ0JBQWdCO0lBQ2hCLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsb0JBQW9CO0lBQ3BCLHlCQUF5QjtJQUN6Qix1QkFBdUI7SUFDdkIsbUNBQW1DO0lBQ25DLG9CQUFvQjtJQUNwQix1QkFBdUI7SUFDdkIsb0JBQW9CO0lBRXBCLDZEQUE2RDtJQUM3RCxhQUFhO0lBQ2Isa0JBQWtCO0lBQ2xCLGtCQUFrQjtJQUNsQixnQkFBZ0I7SUFDaEIsYUFBYTtJQUNiLFdBQVc7SUFDWCxpQkFBaUI7SUFDakIscUJBQXFCO0lBQ3JCLHVCQUF1QjtJQUN2QixZQUFZO0lBQ1osWUFBWTtJQUNaLFlBQVk7SUFDWixZQUFZO0lBQ1osV0FBVztJQUNYLFVBQVU7SUFDVixvQkFBb0I7SUFDcEIsc0JBQXNCO0lBQ3RCLDZCQUE2QjtJQUM3QixzQkFBc0I7SUFDdEIsb0JBQW9CO0lBQ3BCLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIsbUJBQW1CO0lBQ25CLHFCQUFxQjtJQUNyQixrQkFBa0I7SUFDbEIsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEIsZ0JBQWdCO0lBQ2hCLGtCQUFrQjtJQUNsQixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixvQkFBb0I7SUFDcEIsa0JBQWtCO0lBQ2xCLHNCQUFzQjtJQUN0QixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQixVQUFVO0lBQ1YsV0FBVztJQUNYLFdBQVc7SUFDWCxZQUFZO0lBQ1osU0FBUztJQUNULFVBQVU7SUFDVixTQUFTO0lBQ1QsVUFBVTtJQUNWLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsWUFBWTtJQUNaLHFCQUFxQjtJQUNyQixhQUFhO0lBQ2IsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixxQkFBcUI7SUFDckIscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIscUJBQXFCO0lBQ3JCLFdBQVc7SUFDWCxtQkFBbUI7Q0FDcEIsQ0FBQyJ9