Initial Move from Azure DevOps to GitHub
436
.eslintignore
Normal file
@@ -0,0 +1,436 @@
|
|||||||
|
**/node_modules/
|
||||||
|
src/Api/Apis.ts
|
||||||
|
src/AuthType.ts
|
||||||
|
src/Bindings/BindingHandlersRegisterer.ts
|
||||||
|
src/Bindings/ReactBindingHandler.ts
|
||||||
|
src/Common/ArrayHashMap.ts
|
||||||
|
src/Common/Constants.ts
|
||||||
|
src/Common/CosmosClient.test.ts
|
||||||
|
src/Common/CosmosClient.ts
|
||||||
|
src/Common/DataAccessUtilityBase.test.ts
|
||||||
|
src/Common/DataAccessUtilityBase.ts
|
||||||
|
src/Common/DeleteFeedback.ts
|
||||||
|
src/Common/DocumentClientUtilityBase.ts
|
||||||
|
src/Common/EditableUtility.ts
|
||||||
|
src/Common/EnvironmentUtility.ts
|
||||||
|
src/Common/ErrorParserUtility.test.ts
|
||||||
|
src/Common/ErrorParserUtility.ts
|
||||||
|
src/Common/HashMap.test.ts
|
||||||
|
src/Common/HashMap.ts
|
||||||
|
src/Common/HeadersUtility.test.ts
|
||||||
|
src/Common/HeadersUtility.ts
|
||||||
|
src/Common/IteratorUtilities.test.ts
|
||||||
|
src/Common/IteratorUtilities.ts
|
||||||
|
src/Common/Logger.test.ts
|
||||||
|
src/Common/MessageHandler.test.ts
|
||||||
|
src/Common/MessageHandler.ts
|
||||||
|
src/Common/MongoProxyClient.test.ts
|
||||||
|
src/Common/MongoProxyClient.ts
|
||||||
|
src/Common/MongoUtility.ts
|
||||||
|
src/Common/NotificationsClientBase.ts
|
||||||
|
src/Common/ObjectCache.test.ts
|
||||||
|
src/Common/ObjectCache.ts
|
||||||
|
src/Common/QueriesClient.ts
|
||||||
|
src/Common/Splitter.ts
|
||||||
|
src/Common/ThemeUtility.ts
|
||||||
|
src/Common/UrlUtility.ts
|
||||||
|
src/Config.ts
|
||||||
|
src/Contracts/ActionContracts.ts
|
||||||
|
src/Contracts/DataModels.ts
|
||||||
|
src/Contracts/Diagnostics.ts
|
||||||
|
src/Contracts/ExplorerContracts.ts
|
||||||
|
src/Contracts/Versions.ts
|
||||||
|
src/Contracts/ViewModels.ts
|
||||||
|
src/Controls/Heatmap/Heatmap.test.ts
|
||||||
|
src/Controls/Heatmap/Heatmap.ts
|
||||||
|
src/Controls/Heatmap/HeatmapDatatypes.ts
|
||||||
|
src/Definitions/adal.d.ts
|
||||||
|
src/Definitions/datatables.d.ts
|
||||||
|
src/Definitions/gif.d.ts
|
||||||
|
src/Definitions/globals.d.ts
|
||||||
|
src/Definitions/html.d.ts
|
||||||
|
src/Definitions/jquery-typescript.d.ts
|
||||||
|
src/Definitions/jquery-ui.d.ts
|
||||||
|
src/Definitions/jquery.contextmenu.d.ts
|
||||||
|
src/Definitions/jquery.d.ts
|
||||||
|
src/Definitions/plotly.js-cartesian-dist.d-min.ts
|
||||||
|
src/Definitions/png.d.ts
|
||||||
|
src/Definitions/svg.d.ts
|
||||||
|
src/Definitions/worker.d.ts
|
||||||
|
src/Explorer/ComponentRegisterer.test.ts
|
||||||
|
src/Explorer/ComponentRegisterer.ts
|
||||||
|
src/Explorer/ContextMenuButtonFactory.ts
|
||||||
|
src/Explorer/Controls/CollapsiblePanel/CollapsiblePanelComponent.ts
|
||||||
|
src/Explorer/Controls/CommandButton/CommandButton.test.ts
|
||||||
|
src/Explorer/Controls/CommandButton/CommandButton.ts
|
||||||
|
src/Explorer/Controls/DiffEditor/DiffEditorComponent.ts
|
||||||
|
src/Explorer/Controls/DynamicList/DynamicList.test.ts
|
||||||
|
src/Explorer/Controls/DynamicList/DynamicListComponent.ts
|
||||||
|
src/Explorer/Controls/Editor/EditorComponent.ts
|
||||||
|
src/Explorer/Controls/ErrorDisplayComponent/ErrorDisplayComponent.ts
|
||||||
|
src/Explorer/Controls/InputTypeahead/InputTypeahead.ts
|
||||||
|
src/Explorer/Controls/JsonEditor/JsonEditorComponent.ts
|
||||||
|
src/Explorer/Controls/Notebook/NotebookAppMessageHandler.ts
|
||||||
|
src/Explorer/Controls/ThroughputInput/ThroughputInput.test.ts
|
||||||
|
src/Explorer/Controls/ThroughputInput/ThroughputInputComponent.ts
|
||||||
|
src/Explorer/Controls/ThroughputInput/ThroughputInputComponentAutoPilotV3.ts
|
||||||
|
src/Explorer/Controls/Toolbar/IToolbarAction.ts
|
||||||
|
src/Explorer/Controls/Toolbar/IToolbarDisplayable.ts
|
||||||
|
src/Explorer/Controls/Toolbar/IToolbarDropDown.ts
|
||||||
|
src/Explorer/Controls/Toolbar/IToolbarItem.ts
|
||||||
|
src/Explorer/Controls/Toolbar/IToolbarSeperator.ts
|
||||||
|
src/Explorer/Controls/Toolbar/IToolbarToggle.ts
|
||||||
|
src/Explorer/Controls/Toolbar/KeyCodes.ts
|
||||||
|
src/Explorer/Controls/Toolbar/Toolbar.ts
|
||||||
|
src/Explorer/Controls/Toolbar/ToolbarAction.ts
|
||||||
|
src/Explorer/Controls/Toolbar/ToolbarDropDown.ts
|
||||||
|
src/Explorer/Controls/Toolbar/ToolbarToggle.ts
|
||||||
|
src/Explorer/Controls/Toolbar/Utilities.ts
|
||||||
|
src/Explorer/DataSamples/ContainerSampleGenerator.test.ts
|
||||||
|
src/Explorer/DataSamples/ContainerSampleGenerator.ts
|
||||||
|
src/Explorer/DataSamples/DataSamplesUtil.test.ts
|
||||||
|
src/Explorer/DataSamples/DataSamplesUtil.ts
|
||||||
|
src/Explorer/Explorer.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/ArraysByKeyCache.test.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/ArraysByKeyCache.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/D3ForceGraph.test.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/D3ForceGraph.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/EdgeInfoCache.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GraphData.test.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GraphData.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GraphUtil.test.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GraphUtil.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GremlinClient.test.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GremlinClient.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GremlinSimpleClient.test.ts
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GremlinSimpleClient.ts
|
||||||
|
src/Explorer/Graph/GraphStyleComponent/GraphStyle.test.ts
|
||||||
|
src/Explorer/Graph/GraphStyleComponent/GraphStyleComponent.ts
|
||||||
|
src/Explorer/Graph/NewVertexComponent/NewVertex.test.ts
|
||||||
|
src/Explorer/Graph/NewVertexComponent/NewVertexComponent.ts
|
||||||
|
src/Explorer/Menus/CommandBar/CommandBarComponentButtonFactory.test.ts
|
||||||
|
src/Explorer/Menus/CommandBar/CommandBarComponentButtonFactory.ts
|
||||||
|
src/Explorer/Menus/ContextMenu.ts
|
||||||
|
src/Explorer/MostRecentActivity/MostRecentActivity.ts
|
||||||
|
src/Explorer/Notebook/FileSystemUtil.ts
|
||||||
|
src/Explorer/Notebook/NTeractUtil.ts
|
||||||
|
src/Explorer/Notebook/NotebookClientV2.ts
|
||||||
|
src/Explorer/Notebook/NotebookComponent/NotebookContentProvider.ts
|
||||||
|
src/Explorer/Notebook/NotebookComponent/__mocks__/rx-jupyter.ts
|
||||||
|
src/Explorer/Notebook/NotebookComponent/actions.ts
|
||||||
|
src/Explorer/Notebook/NotebookComponent/epics.test.ts
|
||||||
|
src/Explorer/Notebook/NotebookComponent/epics.ts
|
||||||
|
src/Explorer/Notebook/NotebookComponent/loadTransform.ts
|
||||||
|
src/Explorer/Notebook/NotebookComponent/reducers.ts
|
||||||
|
src/Explorer/Notebook/NotebookComponent/store.ts
|
||||||
|
src/Explorer/Notebook/NotebookComponent/types.ts
|
||||||
|
src/Explorer/Notebook/NotebookContainerClient.ts
|
||||||
|
src/Explorer/Notebook/NotebookContentClient.ts
|
||||||
|
src/Explorer/Notebook/NotebookContentItem.ts
|
||||||
|
src/Explorer/Notebook/NotebookUtil.ts
|
||||||
|
src/Explorer/OpenActions.test.ts
|
||||||
|
src/Explorer/OpenActions.ts
|
||||||
|
src/Explorer/OpenActionsStubs.ts
|
||||||
|
src/Explorer/Panes/AddCollectionPane.test.ts
|
||||||
|
src/Explorer/Panes/AddCollectionPane.ts
|
||||||
|
src/Explorer/Panes/AddDatabasePane.test.ts
|
||||||
|
src/Explorer/Panes/AddDatabasePane.ts
|
||||||
|
src/Explorer/Panes/BrowseQueriesPane.ts
|
||||||
|
src/Explorer/Panes/CassandraAddCollectionPane.ts
|
||||||
|
src/Explorer/Panes/ClusterLibraryPane.ts
|
||||||
|
src/Explorer/Panes/ContextualPaneBase.ts
|
||||||
|
src/Explorer/Panes/DeleteCollectionConfirmationPane.test.ts
|
||||||
|
src/Explorer/Panes/DeleteCollectionConfirmationPane.ts
|
||||||
|
src/Explorer/Panes/DeleteDatabaseConfirmationPane.test.ts
|
||||||
|
src/Explorer/Panes/DeleteDatabaseConfirmationPane.ts
|
||||||
|
src/Explorer/Panes/ExecuteSprocParamsPane.ts
|
||||||
|
src/Explorer/Panes/GraphStylingPane.ts
|
||||||
|
src/Explorer/Panes/LibraryManagePane.ts
|
||||||
|
src/Explorer/Panes/LoadQueryPane.ts
|
||||||
|
src/Explorer/Panes/ManageSparkClusterPane.ts
|
||||||
|
src/Explorer/Panes/NewVertexPane.ts
|
||||||
|
src/Explorer/Panes/PaneComponents.ts
|
||||||
|
src/Explorer/Panes/RenewAdHocAccessPane.ts
|
||||||
|
src/Explorer/Panes/SaveQueryPane.ts
|
||||||
|
src/Explorer/Panes/SettingsPane.test.ts
|
||||||
|
src/Explorer/Panes/SettingsPane.ts
|
||||||
|
src/Explorer/Panes/SetupNotebooksPane.ts
|
||||||
|
src/Explorer/Panes/SetupSparkClusterPane.ts
|
||||||
|
src/Explorer/Panes/StringInputPane.ts
|
||||||
|
src/Explorer/Panes/SwitchDirectoryPane.ts
|
||||||
|
src/Explorer/Panes/Tables/AddTableEntityPane.ts
|
||||||
|
src/Explorer/Panes/Tables/EditTableEntityPane.ts
|
||||||
|
src/Explorer/Panes/Tables/EntityPropertyViewModel.ts
|
||||||
|
src/Explorer/Panes/Tables/QuerySelectPane.ts
|
||||||
|
src/Explorer/Panes/Tables/TableColumnOptionsPane.ts
|
||||||
|
src/Explorer/Panes/Tables/TableEntityPane.ts
|
||||||
|
src/Explorer/Panes/Tables/Validators/EntityPropertyNameValidator.ts
|
||||||
|
src/Explorer/Panes/Tables/Validators/EntityPropertyValidationCommon.ts
|
||||||
|
src/Explorer/Panes/Tables/Validators/EntityPropertyValueValidator.ts
|
||||||
|
src/Explorer/Panes/UploadFilePane.ts
|
||||||
|
src/Explorer/Panes/UploadItemsPane.ts
|
||||||
|
src/Explorer/SplashScreen/SplashScreenComponentAdapter.test.ts
|
||||||
|
src/Explorer/Tables/Constants.ts
|
||||||
|
src/Explorer/Tables/DataTable/CacheBase.ts
|
||||||
|
src/Explorer/Tables/DataTable/DataTableBindingManager.ts
|
||||||
|
src/Explorer/Tables/DataTable/DataTableBuilder.ts
|
||||||
|
src/Explorer/Tables/DataTable/DataTableContextMenu.ts
|
||||||
|
src/Explorer/Tables/DataTable/DataTableOperationManager.ts
|
||||||
|
src/Explorer/Tables/DataTable/DataTableOperations.ts
|
||||||
|
src/Explorer/Tables/DataTable/DataTableUtilities.ts
|
||||||
|
src/Explorer/Tables/DataTable/DataTableViewModel.ts
|
||||||
|
src/Explorer/Tables/DataTable/TableCommands.ts
|
||||||
|
src/Explorer/Tables/DataTable/TableEntityCache.ts
|
||||||
|
src/Explorer/Tables/DataTable/TableEntityListViewModel.ts
|
||||||
|
src/Explorer/Tables/Entities.ts
|
||||||
|
src/Explorer/Tables/QueryBuilder/ClauseGroup.ts
|
||||||
|
src/Explorer/Tables/QueryBuilder/ClauseGroupViewModel.ts
|
||||||
|
src/Explorer/Tables/QueryBuilder/CustomTimestampHelper.ts
|
||||||
|
src/Explorer/Tables/QueryBuilder/DateTimeUtilities.test.ts
|
||||||
|
src/Explorer/Tables/QueryBuilder/DateTimeUtilities.ts
|
||||||
|
src/Explorer/Tables/QueryBuilder/QueryBuilderViewModel.ts
|
||||||
|
src/Explorer/Tables/QueryBuilder/QueryClauseViewModel.ts
|
||||||
|
src/Explorer/Tables/QueryBuilder/QueryViewModel.ts
|
||||||
|
src/Explorer/Tables/TableDataClient.ts
|
||||||
|
src/Explorer/Tables/TableEntityProcessor.ts
|
||||||
|
src/Explorer/Tables/Utilities.ts
|
||||||
|
src/Explorer/Tabs/ConflictsTab.ts
|
||||||
|
src/Explorer/Tabs/DatabaseSettingsTab.ts
|
||||||
|
src/Explorer/Tabs/DocumentsTab.test.ts
|
||||||
|
src/Explorer/Tabs/DocumentsTab.ts
|
||||||
|
src/Explorer/Tabs/GraphTab.ts
|
||||||
|
src/Explorer/Tabs/MongoDocumentsTab.ts
|
||||||
|
src/Explorer/Tabs/MongoQueryTab.ts
|
||||||
|
src/Explorer/Tabs/MongoShellTab.ts
|
||||||
|
src/Explorer/Tabs/NotebookTab.ts
|
||||||
|
src/Explorer/Tabs/NotebookV2Tab.ts
|
||||||
|
src/Explorer/Tabs/QueryTab.test.ts
|
||||||
|
src/Explorer/Tabs/QueryTab.ts
|
||||||
|
src/Explorer/Tabs/QueryTablesTab.ts
|
||||||
|
src/Explorer/Tabs/ScriptTabBase.ts
|
||||||
|
src/Explorer/Tabs/SettingsTab.test.ts
|
||||||
|
src/Explorer/Tabs/SettingsTab.ts
|
||||||
|
src/Explorer/Tabs/SparkMasterTab.ts
|
||||||
|
src/Explorer/Tabs/StoredProcedureTab.ts
|
||||||
|
src/Explorer/Tabs/TabComponents.ts
|
||||||
|
src/Explorer/Tabs/TabsBase.ts
|
||||||
|
src/Explorer/Tabs/TriggerTab.ts
|
||||||
|
src/Explorer/Tabs/UserDefinedFunctionTab.ts
|
||||||
|
src/Explorer/Tabs/__mocks__/NotebookTab.ts
|
||||||
|
src/Explorer/Tree/AccessibleVerticalList.ts
|
||||||
|
src/Explorer/Tree/Collection.test.ts
|
||||||
|
src/Explorer/Tree/Collection.ts
|
||||||
|
src/Explorer/Tree/ConflictId.ts
|
||||||
|
src/Explorer/Tree/Database.ts
|
||||||
|
src/Explorer/Tree/DocumentId.ts
|
||||||
|
src/Explorer/Tree/ObjectId.ts
|
||||||
|
src/Explorer/Tree/ResourceTokenCollection.ts
|
||||||
|
src/Explorer/Tree/StoredProcedure.ts
|
||||||
|
src/Explorer/Tree/TreeComponents.ts
|
||||||
|
src/Explorer/Tree/Trigger.ts
|
||||||
|
src/Explorer/Tree/UserDefinedFunction.ts
|
||||||
|
src/Explorer/WaitsForTemplateViewModel.ts
|
||||||
|
src/GitHub/GitHubClient.test.ts
|
||||||
|
src/GitHub/GitHubClient.ts
|
||||||
|
src/GitHub/GitHubConnector.ts
|
||||||
|
src/GitHub/GitHubContentProvider.test.ts
|
||||||
|
src/GitHub/GitHubContentProvider.ts
|
||||||
|
src/GitHub/GitHubOAuthService.ts
|
||||||
|
src/HostedExplorer.ts
|
||||||
|
src/Index.ts
|
||||||
|
src/Juno/JunoClient.test.ts
|
||||||
|
src/Juno/JunoClient.ts
|
||||||
|
src/Main.ts
|
||||||
|
src/NotebookWorkspaceManager/NotebookWorkspaceManager.ts
|
||||||
|
src/NotebookWorkspaceManager/NotebookWorkspaceResourceProviderMockClients.ts
|
||||||
|
src/Platform/Emulator/DataAccessUtility.ts
|
||||||
|
src/Platform/Emulator/ExplorerFactory.ts
|
||||||
|
src/Platform/Emulator/Main.ts
|
||||||
|
src/Platform/Emulator/NotificationsClient.ts
|
||||||
|
src/Platform/Hosted/ArmResourceUtils.ts
|
||||||
|
src/Platform/Hosted/Authorization.ts
|
||||||
|
src/Platform/Hosted/DataAccessUtility.ts
|
||||||
|
src/Platform/Hosted/ExplorerFactory.ts
|
||||||
|
src/Platform/Hosted/Helpers/ConnectionStringParser.test.ts
|
||||||
|
src/Platform/Hosted/Helpers/ConnectionStringParser.ts
|
||||||
|
src/Platform/Hosted/HostedUtils.test.ts
|
||||||
|
src/Platform/Hosted/HostedUtils.ts
|
||||||
|
src/Platform/Hosted/Main.ts
|
||||||
|
src/Platform/Hosted/Maint.test.ts
|
||||||
|
src/Platform/Hosted/NotificationsClient.ts
|
||||||
|
src/Platform/Portal/DataAccessUtility.ts
|
||||||
|
src/Platform/Portal/ExplorerFactory.ts
|
||||||
|
src/Platform/Portal/Main.ts
|
||||||
|
src/Platform/Portal/NotificationsClient.ts
|
||||||
|
src/PlatformType.ts
|
||||||
|
src/ReactDevTools.ts
|
||||||
|
src/ResourceProvider/IResourceProviderClient.test.ts
|
||||||
|
src/ResourceProvider/IResourceProviderClient.ts
|
||||||
|
src/ResourceProvider/ResourceProviderClient.ts
|
||||||
|
src/ResourceProvider/ResourceProviderClientFactory.ts
|
||||||
|
src/RouteHandlers/RouteHandler.ts
|
||||||
|
src/RouteHandlers/TabRouteHandler.test.ts
|
||||||
|
src/RouteHandlers/TabRouteHandler.ts
|
||||||
|
src/Shared/AddCollectionUtility.test.ts
|
||||||
|
src/Shared/AddCollectionUtility.ts
|
||||||
|
src/Shared/AddDatabaseUtility.test.ts
|
||||||
|
src/Shared/AddDatabaseUtility.ts
|
||||||
|
src/Shared/Ajax.ts
|
||||||
|
src/Shared/Constants.ts
|
||||||
|
src/Shared/DefaultExperienceUtility.test.ts
|
||||||
|
src/Shared/DefaultExperienceUtility.ts
|
||||||
|
src/Shared/ExplorerSettings.ts
|
||||||
|
src/Shared/PriceEstimateCalculator.ts
|
||||||
|
src/Shared/StorageUtility.test.ts
|
||||||
|
src/Shared/StorageUtility.ts
|
||||||
|
src/Shared/StringUtility.test.ts
|
||||||
|
src/Shared/StringUtility.ts
|
||||||
|
src/Shared/Telemetry/TelemetryConstants.ts
|
||||||
|
src/Shared/Telemetry/TelemetryProcessor.ts
|
||||||
|
src/Shared/appInsights.ts
|
||||||
|
src/SparkClusterManager/ArcadiaResourceManager.ts
|
||||||
|
src/SparkClusterManager/SparkClusterManager.ts
|
||||||
|
src/Terminal/JupyterLabAppFactory.ts
|
||||||
|
src/Terminal/NotebookAppContracts.d.ts
|
||||||
|
src/Terminal/index.ts
|
||||||
|
src/TokenProviders/PortalTokenProvider.ts
|
||||||
|
src/TokenProviders/TokenProviderFactory.ts
|
||||||
|
src/Utils/AuthorizationUtils.test.ts
|
||||||
|
src/Utils/AuthorizationUtils.ts
|
||||||
|
src/Utils/AutoPilotUtils.test.ts
|
||||||
|
src/Utils/AutoPilotUtils.ts
|
||||||
|
src/Utils/DatabaseAccountUtils.test.ts
|
||||||
|
src/Utils/DatabaseAccountUtils.ts
|
||||||
|
src/Utils/JunoUtils.ts
|
||||||
|
src/Utils/MessageValidation.ts
|
||||||
|
src/Utils/NotebookConfigurationUtils.ts
|
||||||
|
src/Utils/NotificationConsoleUtils.ts
|
||||||
|
src/Utils/OfferUtils.test.ts
|
||||||
|
src/Utils/OfferUtils.ts
|
||||||
|
src/Utils/PricingUtils.test.ts
|
||||||
|
src/Utils/PricingUtils.ts
|
||||||
|
src/Utils/QueryUtils.test.ts
|
||||||
|
src/Utils/QueryUtils.ts
|
||||||
|
src/Utils/StringUtils.test.ts
|
||||||
|
src/Utils/StringUtils.ts
|
||||||
|
src/applyExplorerBindings.ts
|
||||||
|
src/global.d.ts
|
||||||
|
src/quickstart.ts
|
||||||
|
src/setupTests.ts
|
||||||
|
src/workers/upload/definitions.ts
|
||||||
|
src/workers/upload/index.ts
|
||||||
|
src/Explorer/Controls/AccessibleElement/AccessibleElement.tsx
|
||||||
|
src/Explorer/Controls/Accordion/AccordionComponent.tsx
|
||||||
|
src/Explorer/Controls/AccountSwitch/AccountSwitchComponent.test.tsx
|
||||||
|
src/Explorer/Controls/AccountSwitch/AccountSwitchComponent.tsx
|
||||||
|
src/Explorer/Controls/AccountSwitch/AccountSwitchComponentAdapter.tsx
|
||||||
|
src/Explorer/Controls/Arcadia/ArcadiaMenuPicker.tsx
|
||||||
|
src/Explorer/Controls/CollapsiblePanel/CollapsiblePanel.tsx
|
||||||
|
src/Explorer/Controls/CommandButton/CommandButtonComponent.tsx
|
||||||
|
src/Explorer/Controls/DialogReactComponent/DialogComponent.tsx
|
||||||
|
src/Explorer/Controls/DialogReactComponent/DialogComponentAdapter.tsx
|
||||||
|
src/Explorer/Controls/Directory/DefaultDirectoryDropdownComponent.test.tsx
|
||||||
|
src/Explorer/Controls/Directory/DefaultDirectoryDropdownComponent.tsx
|
||||||
|
src/Explorer/Controls/Directory/DirectoryComponentAdapter.tsx
|
||||||
|
src/Explorer/Controls/Directory/DirectoryListComponent.test.tsx
|
||||||
|
src/Explorer/Controls/Directory/DirectoryListComponent.tsx
|
||||||
|
src/Explorer/Controls/Editor/EditorReact.tsx
|
||||||
|
src/Explorer/Controls/InputTypeahead/InputTypeaheadComponent.tsx
|
||||||
|
src/Explorer/Controls/LibraryManagement/ClusterLibraryGrid.tsx
|
||||||
|
src/Explorer/Controls/LibraryManagement/ClusterLibraryGridAdapter.tsx
|
||||||
|
src/Explorer/Controls/LibraryManagement/LibraryManage.tsx
|
||||||
|
src/Explorer/Controls/LibraryManagement/LibraryManageComponentAdapter.tsx
|
||||||
|
src/Explorer/Controls/Notebook/NotebookTerminalComponent.test.tsx
|
||||||
|
src/Explorer/Controls/Notebook/NotebookTerminalComponent.tsx
|
||||||
|
src/Explorer/Controls/NotebookViewer/NotebookMetadataComponent.tsx
|
||||||
|
src/Explorer/Controls/NotebookViewer/NotebookViewer.tsx
|
||||||
|
src/Explorer/Controls/NotebookViewer/NotebookViewerComponent.tsx
|
||||||
|
src/Explorer/Controls/QueriesGridReactComponent/QueriesGridComponent.tsx
|
||||||
|
src/Explorer/Controls/QueriesGridReactComponent/QueriesGridComponentAdapter.tsx
|
||||||
|
src/Explorer/Controls/ResizeSensorReactComponent/ResizeSensorComponent.tsx
|
||||||
|
src/Explorer/Controls/Spark/ClusterSettingsComponent.tsx
|
||||||
|
src/Explorer/Controls/Spark/ClusterSettingsComponentAdapter.tsx
|
||||||
|
src/Explorer/Controls/Tabs/TabComponent.tsx
|
||||||
|
src/Explorer/Controls/TreeComponent/TreeComponent.test.tsx
|
||||||
|
src/Explorer/Controls/TreeComponent/TreeComponent.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/EditorNeighborsComponent.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/EditorNodePropertiesComponent.test.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/EditorNodePropertiesComponent.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GraphExplorer.test.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GraphExplorer.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GraphExplorerAdapter.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/GraphVizComponent.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/LeftPaneComponent.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/MiddlePaneComponent.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/NodePropertiesComponent.test.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/NodePropertiesComponent.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/QueryContainerComponent.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/ReadOnlyNeighborsComponent.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/ReadOnlyNodePropertiesComponent.test.tsx
|
||||||
|
src/Explorer/Graph/GraphExplorerComponent/ReadOnlyNodePropertiesComponent.tsx
|
||||||
|
src/Explorer/Menus/CommandBar/CommandBarComponentAdapter.tsx
|
||||||
|
src/Explorer/Menus/CommandBar/CommandBarUtil.test.tsx
|
||||||
|
src/Explorer/Menus/CommandBar/CommandBarUtil.tsx
|
||||||
|
src/Explorer/Menus/CommandBar/MemoryTrackerComponent.tsx
|
||||||
|
src/Explorer/Menus/NavBar/ControlBarComponent.tsx
|
||||||
|
src/Explorer/Menus/NavBar/ControlBarComponentAdapter.tsx
|
||||||
|
src/Explorer/Menus/NavBar/MeControlComponent.test.tsx
|
||||||
|
src/Explorer/Menus/NavBar/MeControlComponent.tsx
|
||||||
|
src/Explorer/Menus/NavBar/MeControlComponentAdapter.tsx
|
||||||
|
src/Explorer/Menus/NotificationConsole/NotificationConsoleComponent.test.tsx
|
||||||
|
src/Explorer/Menus/NotificationConsole/NotificationConsoleComponent.tsx
|
||||||
|
src/Explorer/Menus/NotificationConsole/NotificationConsoleComponentAdapter.tsx
|
||||||
|
src/Explorer/Notebook/NotebookComponent/NotebookComponent.tsx
|
||||||
|
src/Explorer/Notebook/NotebookComponent/NotebookComponentAdapter.tsx
|
||||||
|
src/Explorer/Notebook/NotebookComponent/NotebookComponentBootstrapper.tsx
|
||||||
|
src/Explorer/Notebook/NotebookComponent/VirtualCommandBarComponent.tsx
|
||||||
|
src/Explorer/Notebook/NotebookComponent/contents/file/index.tsx
|
||||||
|
src/Explorer/Notebook/NotebookComponent/contents/file/text-file.tsx
|
||||||
|
src/Explorer/Notebook/NotebookComponent/contents/index.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/AzureTheme.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/NotebookReadOnlyRenderer.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/NotebookRenderer.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/Prompt.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/PromptContent.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/StatusBar.test.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/StatusBar.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/Toolbar.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/decorators/CellCreator.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/decorators/CellLabeler.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/decorators/HoverableCell.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/decorators/draggable/index.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/decorators/hijack-scroll/index.tsx
|
||||||
|
src/Explorer/Notebook/NotebookRenderer/decorators/kbd-shortcuts/index.tsx
|
||||||
|
src/Explorer/Notebook/temp/inputs/connected-editors/codemirror.tsx
|
||||||
|
src/Explorer/Notebook/temp/inputs/editor.tsx
|
||||||
|
src/Explorer/Notebook/temp/markdown-cell.tsx
|
||||||
|
src/Explorer/Notebook/temp/source.tsx
|
||||||
|
src/Explorer/Notebook/temp/syntax-highlighter/index.tsx
|
||||||
|
src/Explorer/SplashScreen/SplashScreenComponent.tsx
|
||||||
|
src/Explorer/SplashScreen/SplashScreenComponentApdapter.tsx
|
||||||
|
src/Explorer/Tabs/GalleryTab.tsx
|
||||||
|
src/Explorer/Tabs/NotebookViewerTab.tsx
|
||||||
|
src/Explorer/Tabs/TerminalTab.tsx
|
||||||
|
src/Explorer/Tree/ResourceTreeAdapter.tsx
|
||||||
|
src/Explorer/Tree/ResourceTreeAdapterForResourceToken.tsx
|
||||||
|
src/GalleryViewer/Cards/CardStyleConstants.tsx
|
||||||
|
src/GalleryViewer/Cards/GalleryCardComponent.tsx
|
||||||
|
src/GalleryViewer/GalleryViewer.tsx
|
||||||
|
src/GalleryViewer/GalleryViewerComponent.tsx
|
||||||
|
cypress/integration/dataexplorer/CASSANDRA/addCollection.spec.ts
|
||||||
|
cypress/integration/dataexplorer/GRAPH/addCollection.spec.ts
|
||||||
|
cypress/integration/dataexplorer/ci-tests/addCollectionPane.spec.ts
|
||||||
|
cypress/integration/dataexplorer/ci-tests/createDatabase.spec.ts
|
||||||
|
cypress/integration/dataexplorer/ci-tests/deleteCollection.spec.ts
|
||||||
|
cypress/integration/dataexplorer/ci-tests/deleteDatabase.spec.ts
|
||||||
|
cypress/integration/dataexplorer/MONGO/addCollection.spec.ts
|
||||||
|
cypress/integration/dataexplorer/MONGO/addCollectionAutopilot.spec.ts
|
||||||
|
cypress/integration/dataexplorer/MONGO/addCollectionExistingDatabase.spec.ts
|
||||||
|
cypress/integration/dataexplorer/MONGO/provisionDatabaseThroughput.spec.ts
|
||||||
|
cypress/integration/dataexplorer/SQL/addCollection.spec.ts
|
||||||
|
cypress/integration/dataexplorer/TABLE/addCollection.spec.ts
|
||||||
|
cypress/integration/notebook/newNotebook.spec.ts
|
||||||
|
cypress/integration/notebook/resourceTree.spec.ts
|
||||||
|
__mocks__/AddDatabaseUtility.ts
|
||||||
|
__mocks__/monaco-editor.ts
|
||||||
|
src/Explorer/Tree/ResourceTreeAdapterForResourceToken.test.tsx
|
||||||
45
.eslintrc.js
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
module.exports = {
|
||||||
|
env: {
|
||||||
|
browser: true,
|
||||||
|
es6: true
|
||||||
|
},
|
||||||
|
plugins: ["@typescript-eslint"],
|
||||||
|
extends: [
|
||||||
|
"eslint:recommended",
|
||||||
|
"plugin:@typescript-eslint/eslint-recommended",
|
||||||
|
"plugin:@typescript-eslint/recommended"
|
||||||
|
],
|
||||||
|
globals: {
|
||||||
|
Atomics: "readonly",
|
||||||
|
SharedArrayBuffer: "readonly"
|
||||||
|
},
|
||||||
|
parser: "@typescript-eslint/parser",
|
||||||
|
parserOptions: {
|
||||||
|
ecmaFeatures: {
|
||||||
|
jsx: true
|
||||||
|
},
|
||||||
|
ecmaVersion: 2018,
|
||||||
|
sourceType: "module"
|
||||||
|
},
|
||||||
|
overrides: [
|
||||||
|
{
|
||||||
|
files: ["**/*.tsx"],
|
||||||
|
env: {
|
||||||
|
jest: true
|
||||||
|
},
|
||||||
|
extends: ["plugin:react/recommended"],
|
||||||
|
plugins: ["react"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ["**/*.test.{ts,tsx}"],
|
||||||
|
env: {
|
||||||
|
jest: true
|
||||||
|
},
|
||||||
|
extends: ["plugin:jest/recommended"],
|
||||||
|
plugins: ["jest"]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
rules: {
|
||||||
|
curly: "error"
|
||||||
|
}
|
||||||
|
};
|
||||||
1
.github/CODEOWNERS
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
* @southpolesteve @ato9000
|
||||||
18
.gitignore
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
built/*
|
||||||
|
dist/*
|
||||||
|
coverage/**
|
||||||
|
css/*
|
||||||
|
Definitions/**/*
|
||||||
|
libs/**/*
|
||||||
|
**/node_modules/*
|
||||||
|
pkg/DataExplorer/*
|
||||||
|
test/out/*
|
||||||
|
workers/**/*.js
|
||||||
|
*.trx
|
||||||
|
cypress/videos
|
||||||
|
cypress/screenshots
|
||||||
|
cypress/fixtures
|
||||||
|
notebookapp/*
|
||||||
|
Contracts/*
|
||||||
|
.DS_Store
|
||||||
|
.cache/
|
||||||
40
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Debug Jest Tests",
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"runtimeArgs": [
|
||||||
|
"--inspect-brk",
|
||||||
|
"${workspaceRoot}/node_modules/jest/bin/jest.js",
|
||||||
|
"--runInBand",
|
||||||
|
"--coverage", "false"
|
||||||
|
],
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"internalConsoleOptions": "neverOpen",
|
||||||
|
"port": 9229
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Debug Jest Current Test",
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"runtimeArgs": [
|
||||||
|
"--inspect-brk",
|
||||||
|
"${workspaceRoot}/node_modules/jest/bin/jest.js",
|
||||||
|
"${fileBasenameNoExtension}",
|
||||||
|
"--coverage", "false",
|
||||||
|
// "--watch",
|
||||||
|
// // --no-cache only used to make --watch work. Otherwise jest ignores the breakpoints.
|
||||||
|
// // https://github.com/facebook/jest/issues/6683
|
||||||
|
// "--no-cache"
|
||||||
|
],
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"internalConsoleOptions": "neverOpen",
|
||||||
|
"port": 9229
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
21
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
// Place your settings in this file to overwrite default and user settings.
|
||||||
|
{
|
||||||
|
"files.exclude": {
|
||||||
|
".vs": true,
|
||||||
|
".vscode/**": true,
|
||||||
|
"*.trx": true,
|
||||||
|
"**/.DS_Store": true,
|
||||||
|
"**/.git": true,
|
||||||
|
"**/.hg": true,
|
||||||
|
"**/.svn": true,
|
||||||
|
"built/**": true,
|
||||||
|
"coverage/**": true,
|
||||||
|
"libs/**": true,
|
||||||
|
"node_modules/**": true,
|
||||||
|
"package-lock.json": true,
|
||||||
|
"quickstart/**": true,
|
||||||
|
"test/out/**": true,
|
||||||
|
"workers/libs/**": true
|
||||||
|
},
|
||||||
|
"typescript.tsdk": "node_modules/typescript/lib"
|
||||||
|
}
|
||||||
24
DataExplorer.nuspec
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<package >
|
||||||
|
<metadata>
|
||||||
|
<id>Azure.Cosmos.DB.Data.Explorer</id>
|
||||||
|
<version>0.0.1-preview</version>
|
||||||
|
<title>Azure Cosmos DB Data Explorer</title>
|
||||||
|
<authors>Microsoft</authors>
|
||||||
|
<owners>Microsoft</owners>
|
||||||
|
<requireLicenseAcceptance>true</requireLicenseAcceptance>
|
||||||
|
<licenseUrl>http://go.microsoft.com/fwlink/?LinkId=848760</licenseUrl>
|
||||||
|
<projectUrl>http://go.microsoft.com/fwlink/?LinkId=848761</projectUrl>
|
||||||
|
<iconUrl>http://go.microsoft.com/fwlink/?LinkID=288890</iconUrl>
|
||||||
|
<description>Cosmos DB Data Explorer</description>
|
||||||
|
<summary>Cosmos DB Data Explorer</summary>
|
||||||
|
<tags>Cosmos DB Data Explorer</tags>
|
||||||
|
<dependencies>
|
||||||
|
</dependencies>
|
||||||
|
<frameworkAssemblies>
|
||||||
|
</frameworkAssemblies>
|
||||||
|
</metadata>
|
||||||
|
<files>
|
||||||
|
<file src="**\*" target="content"/>
|
||||||
|
</files>
|
||||||
|
</package>
|
||||||
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE
|
||||||
95
README.md
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
# CosmosDB Explorer
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
- `npm install`
|
||||||
|
- `npm run build`
|
||||||
|
|
||||||
|
## Developing
|
||||||
|
|
||||||
|
### Watch mode
|
||||||
|
|
||||||
|
Run `npm run watch` to start the development server and automatically rebuild on changes
|
||||||
|
|
||||||
|
### Specifying Development Platform
|
||||||
|
|
||||||
|
Setting the environment variable `PLATFORM` during the build process will force the explorer to load the specified platform. By default in development it will run in `Hosted` mode. Valid options:
|
||||||
|
|
||||||
|
- Hosted
|
||||||
|
- Emulator
|
||||||
|
- Portal
|
||||||
|
|
||||||
|
`PLATFORM=Emulator npm run watch`
|
||||||
|
|
||||||
|
### Hosted Development
|
||||||
|
|
||||||
|
The default webpack dev server configuration will proxy requests to the production portal backend: `https://main.documentdb.ext.azure.com`. This will allow you to use production connection strings on your local machine.
|
||||||
|
|
||||||
|
To run pure hosted mode, in `webpack.config.js` change index HtmlWebpackPlugin to use hostedExplorer.html and change entry for index to use HostedExplorer.ts.
|
||||||
|
|
||||||
|
### Emulator Development
|
||||||
|
|
||||||
|
In a window environment, running `npm run build` will automatically copy the built files from `/dist` over to the default emulator install paths. In a non-windows enironment you can specify an alternate endpoint using `EMULATOR_ENDPOINT` and webpack dev server will proxy requests for you.
|
||||||
|
|
||||||
|
`PLATFORM=Emulator EMULATOR_ENDPOINT=https://my-vm.azure.com:8081 npm run watch`
|
||||||
|
|
||||||
|
#### Setting up a Remote Emulator
|
||||||
|
|
||||||
|
The Cosmos emulator currently only runs in Windows environments. You can still develop on a non-Windows machine by setting up an emulator on a windows box and exposing its ports publicly:
|
||||||
|
|
||||||
|
1. Expose these ports publicly: 8081, 8900, 8979, 10250, 10251, 10252, 10253, 10254, 10255, 10256
|
||||||
|
|
||||||
|
2. Download and install the emulator: https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator
|
||||||
|
|
||||||
|
3. Start the emulator from PowerShell:
|
||||||
|
|
||||||
|
```
|
||||||
|
> cd C:/
|
||||||
|
|
||||||
|
> .\CosmosDB.Emulator.exe -AllowNetworkAccess -Key="<EMULATOR MASTER KEY>"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Portal Development
|
||||||
|
|
||||||
|
The Cosmos Portal that consumes this repo is not currently open source. If you have access to this project, `npm run build` will copy the built files over to the portal where they will be loaded by the portal development environment
|
||||||
|
|
||||||
|
You can however load a local running instance of data explorer in the production portal.
|
||||||
|
|
||||||
|
1. Turn off browser SSL validation for localhost: chrome://flags/#allow-insecure-localhost OR Install valid SSL certs for localhost (on IE, follow these [instructions](https://www.technipages.com/ie-bypass-problem-with-this-websites-security-certificate) to install the localhost certificate in the right place)
|
||||||
|
2. Whitelist `https://localhost:1234` domain for CORS in the Azure Cosmos DB portal
|
||||||
|
3. Start the project in portal mode: `PLATFORM=Portal npm run watch`
|
||||||
|
4. Load the portal using the following link: https://ms.portal.azure.com/?dataExplorerSource=https%3A%2F%2Flocalhost%3A1234%2Fexplorer.html
|
||||||
|
|
||||||
|
Live reload will occur, but data explorer will not properly integrate again with the parent iframe. You will have to manually reload the page.
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
|
||||||
|
#### Unit Tests
|
||||||
|
|
||||||
|
Unit tests are located adjacent to the code under test and run with [Jest](https://jestjs.io/):
|
||||||
|
|
||||||
|
`npm run test`
|
||||||
|
|
||||||
|
#### End to End Tests
|
||||||
|
|
||||||
|
[Cypress](https://www.cypress.io/) is used for end to end tests and are contained in `cypress/`. Currently, it operates as sub project with its own typescript config and dependencies. It also only operates against the emulator. To run cypress tests:
|
||||||
|
|
||||||
|
1. Ensure the emulator is running
|
||||||
|
2. Start cosmos explorer in emulator mode: `PLATFORM=Emulator npm run watch`
|
||||||
|
3. Move into `cypress/` folder: `cd cypress`
|
||||||
|
4. Install dependencies: `npm install`
|
||||||
|
5. Run cypress headless(`npm run test`) or in interactive mode(`npm run test:debug`)
|
||||||
|
|
||||||
|
# Contributing
|
||||||
|
|
||||||
|
This project welcomes contributions and suggestions. Most contributions require you to agree to a
|
||||||
|
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
|
||||||
|
the rights to use your contribution. For details, visit https://cla.microsoft.com.
|
||||||
|
|
||||||
|
When you submit a pull request, a CLA-bot will automatically determine whether you need to provide
|
||||||
|
a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions
|
||||||
|
provided by the bot. You will only need to do this once across all repos using our CLA.
|
||||||
|
|
||||||
|
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
|
||||||
|
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
|
||||||
|
contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
|
||||||
10
ReleaseNotes.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
#Release Note - Cosmos Explorer
|
||||||
|
|
||||||
|
##August 2019
|
||||||
|
* Added support to display multiple-values properties for Graph
|
||||||
|
* Added support for query modes to migrated Fixed containers
|
||||||
|
* Updated Azure Cosmos DB JavaScript library used in Data Explorer to version 3.1.1
|
||||||
|
* Remove spatial index from default indexing policy on container creation
|
||||||
|
* Disable stored procedures, UDF and triggers in Cosmos Explorer for accounts with Azure Cosmos DB for MongoDB API
|
||||||
|
* Disallow composite keys for Gremlin
|
||||||
|
* Performance Improvement
|
||||||
5
__mocks__/AddDatabaseUtility.ts
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
export class AddDbUtilities {
|
||||||
|
createGremlinDatabase(params: any) {
|
||||||
|
return Promise.resolve(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
4
__mocks__/monaco-editor.ts
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
export const editor = {
|
||||||
|
create: () => {},
|
||||||
|
setTheme: () => {}
|
||||||
|
};
|
||||||
211
azure-pipelines.yaml
Normal file
@@ -0,0 +1,211 @@
|
|||||||
|
trigger:
|
||||||
|
branches:
|
||||||
|
include:
|
||||||
|
- master
|
||||||
|
- "*"
|
||||||
|
paths:
|
||||||
|
include:
|
||||||
|
- "*"
|
||||||
|
exclude:
|
||||||
|
- Product/Portal/CapacityCalculator/*
|
||||||
|
- Product/Portal/DefaultConsistency/*
|
||||||
|
pool:
|
||||||
|
vmImage: "windows-latest"
|
||||||
|
jobs:
|
||||||
|
- job: FormatLintCompile
|
||||||
|
displayName: "Format/Lint/Compile"
|
||||||
|
steps:
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Install Dependencies"
|
||||||
|
inputs:
|
||||||
|
workingDir: 'Product\Portal\DataExplorer'
|
||||||
|
verbose: false
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Format"
|
||||||
|
inputs:
|
||||||
|
command: custom
|
||||||
|
workingDir: 'Product\Portal\DataExplorer'
|
||||||
|
verbose: false
|
||||||
|
customCommand: "run format:check"
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Lint"
|
||||||
|
inputs:
|
||||||
|
command: custom
|
||||||
|
workingDir: 'Product\Portal\DataExplorer'
|
||||||
|
verbose: false
|
||||||
|
customCommand: "run lint"
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Compile"
|
||||||
|
inputs:
|
||||||
|
command: custom
|
||||||
|
workingDir: 'Product\Portal\DataExplorer'
|
||||||
|
verbose: false
|
||||||
|
customCommand: "run compile"
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Compile Strict Mode Files"
|
||||||
|
inputs:
|
||||||
|
command: custom
|
||||||
|
workingDir: 'Product\Portal\DataExplorer'
|
||||||
|
verbose: false
|
||||||
|
customCommand: "run compile:strict"
|
||||||
|
- job: EndToEndTests
|
||||||
|
displayName: "End to End Tests"
|
||||||
|
steps:
|
||||||
|
- powershell: |
|
||||||
|
Write-Host "Starting Comsos DB Emulator"
|
||||||
|
Start-Process "$env:ProgramFiles\Azure Cosmos DB Emulator\CosmosDB.Emulator.exe" "/NoUI /DisableRateLimiting" -Verb RunAs
|
||||||
|
displayName: "Start Emulator"
|
||||||
|
- bash: |
|
||||||
|
npm ci --prefix ./Product/Portal/DataExplorer
|
||||||
|
npm start --prefix ./Product/Portal/DataExplorer &
|
||||||
|
npm ci --prefix ./Product/Portal/DataExplorer/cypress
|
||||||
|
npm run test:ci --prefix ./Product/Portal/DataExplorer/cypress -- --spec ./integration/dataexplorer/ci-tests/createDatabase.spec.ts
|
||||||
|
displayName: "Start Server and Run Tests"
|
||||||
|
env:
|
||||||
|
EMULATOR_ENDPOINT: https://0.0.0.0:8081/
|
||||||
|
NODE_TLS_REJECT_UNAUTHORIZED: 0
|
||||||
|
- task: PublishBuildArtifacts@1
|
||||||
|
displayName: "Publish Screenshots"
|
||||||
|
inputs:
|
||||||
|
targetPath: $(System.DefaultWorkingDirectory)/Product/Portal/DataExplorer/cypress/cypress/screenshots
|
||||||
|
artifactName: e2e-screenshots
|
||||||
|
condition: failed()
|
||||||
|
continueOnError: true
|
||||||
|
|
||||||
|
- task: PublishBuildArtifacts@1
|
||||||
|
displayName: "Publish Videos"
|
||||||
|
inputs:
|
||||||
|
pathtoPublish: $(System.DefaultWorkingDirectory)/Product/Portal/DataExplorer/cypress/cypress/videos
|
||||||
|
artifactName: e2e-videos
|
||||||
|
condition: succeededOrFailed()
|
||||||
|
continueOnError: true
|
||||||
|
- job: UnitTests
|
||||||
|
displayName: "Unit Tests"
|
||||||
|
steps:
|
||||||
|
- task: NodeTool@0
|
||||||
|
displayName: "Use Node 12.x"
|
||||||
|
inputs:
|
||||||
|
versionSpec: 12.x
|
||||||
|
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Install Dependencies"
|
||||||
|
inputs:
|
||||||
|
command: custom
|
||||||
|
workingDir: "$(System.DefaultWorkingDirectory)/Product/Portal/DataExplorer"
|
||||||
|
verbose: false
|
||||||
|
customCommand: "ci"
|
||||||
|
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Run Unit Tests"
|
||||||
|
inputs:
|
||||||
|
command: custom
|
||||||
|
workingDir: "$(System.DefaultWorkingDirectory)/Product/Portal/DataExplorer"
|
||||||
|
verbose: false
|
||||||
|
customCommand: "run test"
|
||||||
|
|
||||||
|
- task: PublishTestResults@2
|
||||||
|
displayName: "Publish Test Results"
|
||||||
|
inputs:
|
||||||
|
testResultsFormat: VSTest
|
||||||
|
testResultsFiles: "**/*.trx"
|
||||||
|
mergeTestResults: true
|
||||||
|
testRunTitle: "Check-in Tests"
|
||||||
|
condition: succeededOrFailed()
|
||||||
|
|
||||||
|
- task: PublishCodeCoverageResults@1
|
||||||
|
displayName: "Publish Code Coverage Report"
|
||||||
|
inputs:
|
||||||
|
codeCoverageTool: Cobertura
|
||||||
|
summaryFileLocation: "$(System.DefaultWorkingDirectory)/Product/Portal/DataExplorer/coverage/cobertura-coverage.xml"
|
||||||
|
pathToSources: "$(System.DefaultWorkingDirectory)/Product/Portal/DataExplorer"
|
||||||
|
reportDirectory: "$(System.DefaultWorkingDirectory)/Product/Portal/DataExplorer/coverage/html"
|
||||||
|
- job: Build
|
||||||
|
steps:
|
||||||
|
- task: Cache@2
|
||||||
|
inputs:
|
||||||
|
key: 'dataexplorer | "$(Agent.OS)" |'
|
||||||
|
restoreKeys: 'dataexplorer | "$(Agent.OS)" |'
|
||||||
|
path: $(System.DefaultWorkingDirectory)/Product/Portal/DataExplorer/.cache
|
||||||
|
displayName: Restore Build Caches
|
||||||
|
- task: NodeTool@0
|
||||||
|
displayName: "Use Node 12.x"
|
||||||
|
inputs:
|
||||||
|
versionSpec: 12.x
|
||||||
|
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Install Dependencies"
|
||||||
|
inputs:
|
||||||
|
workingDir: 'Product\Portal\DataExplorer'
|
||||||
|
verbose: false
|
||||||
|
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Build Contracts"
|
||||||
|
inputs:
|
||||||
|
command: custom
|
||||||
|
workingDir: 'Product\Portal\DataExplorer'
|
||||||
|
verbose: false
|
||||||
|
customCommand: "run build:contracts"
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Bundle - Production"
|
||||||
|
inputs:
|
||||||
|
command: custom
|
||||||
|
workingDir: 'Product\Portal\DataExplorer'
|
||||||
|
verbose: false
|
||||||
|
customCommand: "run pack:prod"
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: "Copy Output Files to Consumers"
|
||||||
|
inputs:
|
||||||
|
command: custom
|
||||||
|
workingDir: 'Product\Portal\DataExplorer'
|
||||||
|
verbose: false
|
||||||
|
customCommand: "run copyToConsumers"
|
||||||
|
- powershell: |
|
||||||
|
$GitCommitSHA = $env:BUILD_SOURCEVERSION
|
||||||
|
$NuspecPath = "$env:BUILD_ARTIFACTSTAGINGDIRECTORY"
|
||||||
|
$VersionToReplace = "0.0.1-preview"
|
||||||
|
((Get-Content -path "$NuspecPath\DataExplorer.nuspec" -Raw) -replace $VersionToReplace ,("1.2.0-$GitCommitSHA")) | Set-Content -Path "$NuspecPath\DataExplorer.nuspec"
|
||||||
|
cat "$NuspecPath\DataExplorer.nuspec"
|
||||||
|
displayName: "Bump Package Version"
|
||||||
|
continueOnError: true
|
||||||
|
|
||||||
|
- task: NuGetCommand@2
|
||||||
|
displayName: "Create NuGet package"
|
||||||
|
inputs:
|
||||||
|
command: pack
|
||||||
|
packagesToPack: "$(Build.ArtifactStagingDirectory)/**/*.nuspec"
|
||||||
|
packDestination: '$(Build.ArtifactStagingDirectory)\NuGet'
|
||||||
|
|
||||||
|
- task: NuGetCommand@2
|
||||||
|
displayName: "NuGet push"
|
||||||
|
inputs:
|
||||||
|
command: push
|
||||||
|
publishVstsFeed: "4e0718b3-a885-4d77-b8c2-09bb2f6eecec"
|
||||||
|
allowPackageConflicts: true
|
||||||
|
|
||||||
|
- powershell: |
|
||||||
|
$NuspecPath = "$env:BUILD_ARTIFACTSTAGINGDIRECTORY"
|
||||||
|
$PackageId= "Azure.Cosmos.DB.Data.Explorer"
|
||||||
|
((Get-Content -path "$NuspecPath\DataExplorer.nuspec" -Raw) -replace $PackageId,("$PackageId.MPAC")) | Set-Content -Path "$NuspecPath\DataExplorer.nuspec"
|
||||||
|
cat "$NuspecPath\DataExplorer.nuspec"
|
||||||
|
displayName: "Create MPAC nuspec"
|
||||||
|
continueOnError: true
|
||||||
|
|
||||||
|
- task: NuGetCommand@2
|
||||||
|
displayName: "Create NuGet MPAC package "
|
||||||
|
inputs:
|
||||||
|
command: pack
|
||||||
|
packagesToPack: "$(Build.ArtifactStagingDirectory)/**/*.nuspec"
|
||||||
|
packDestination: '$(Build.ArtifactStagingDirectory)\NuGet'
|
||||||
|
|
||||||
|
- task: NuGetCommand@2
|
||||||
|
displayName: "NuGet push MPAC"
|
||||||
|
inputs:
|
||||||
|
command: push
|
||||||
|
publishVstsFeed: "4e0718b3-a885-4d77-b8c2-09bb2f6eecec"
|
||||||
|
allowPackageConflicts: true
|
||||||
|
|
||||||
|
- task: PublishBuildArtifacts@1
|
||||||
|
displayName: "Publish Artifact: DataExplorer NuGet"
|
||||||
|
inputs:
|
||||||
|
PathtoPublish: '$(Build.ArtifactStagingDirectory)\NuGet'
|
||||||
|
ArtifactName: DataExplorerNuGet
|
||||||
3
babel.config.js
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
module.exports = {
|
||||||
|
presets: [["@babel/preset-env", { targets: { node: "current" } }], "@babel/preset-react", "@babel/preset-typescript"]
|
||||||
|
};
|
||||||
24
copyToConsumers.js
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
const fs = require("fs-extra");
|
||||||
|
|
||||||
|
const dataExplorerLocalPath = process.env.BUILD_ARTIFACTSTAGINGDIRECTORY || process.env.DATAEXPLORER_PATH;
|
||||||
|
const dataExplorerEmulatorPath = process.env.ProgramFiles + "/Azure Cosmos DB Emulator/Packages/DataExplorer";
|
||||||
|
const newDataExplorerEmulatorPath = process.env.ProgramFiles + "/Azure Cosmos Emulator/Packages/DataExplorer";
|
||||||
|
|
||||||
|
console.log("Copying dist/ to portal and emulator");
|
||||||
|
cleanAndCopy(dataExplorerLocalPath);
|
||||||
|
cleanAndCopy(dataExplorerEmulatorPath);
|
||||||
|
cleanAndCopy(newDataExplorerEmulatorPath);
|
||||||
|
|
||||||
|
function cleanAndCopy(path) {
|
||||||
|
if (fs.existsSync(path)) {
|
||||||
|
fs.removeSync(path);
|
||||||
|
fs.copySync("dist", path);
|
||||||
|
if (fs.existsSync("Contracts")) {
|
||||||
|
fs.copySync("Contracts", path + "/contracts");
|
||||||
|
} else {
|
||||||
|
console.log("Contracts folder does not exist. Doing nothing.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log(`Path: "${path}" does not exist. Doing nothing.`);
|
||||||
|
}
|
||||||
|
}
|
||||||
1
cypress/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
cypress.env.json
|
||||||
15
cypress/cypress.json
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"integrationFolder": "./integration",
|
||||||
|
"pluginsFile": false,
|
||||||
|
"fixturesFolder": false,
|
||||||
|
"supportFile": "./support/index.js",
|
||||||
|
"defaultCommandTimeout": 60000,
|
||||||
|
"chromeWebSecurity": false,
|
||||||
|
"reporter": "mochawesome",
|
||||||
|
"reporterOptions": {
|
||||||
|
"reportDir": "cypress/report",
|
||||||
|
"json": true,
|
||||||
|
"overwrite": false,
|
||||||
|
"html": false
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
// 1. Click on "New Container" on the command bar.
|
||||||
|
// 2. Pane with the title "Add Container" should appear on the right side of the screen
|
||||||
|
// 3. It includes an input box for the database Id.
|
||||||
|
// 4. It includes a checkbox called "Create now".
|
||||||
|
// 5. When the checkbox is marked, enter new database id.
|
||||||
|
// 3. Create a database WITH "Provision throughput" checked.
|
||||||
|
// 4. Enter minimum throughput value of 400.
|
||||||
|
// 5. Enter container id to the container id text box.
|
||||||
|
// 6. Enter partition key to the partition key text box.
|
||||||
|
// 7. Click "OK" to create a new container.
|
||||||
|
// 8. Verify the new container is created along with the database id and should appead in the Data Explorer list in the left side of the screen.
|
||||||
|
|
||||||
|
const connectionString = require("../../../utilities/connectionString");
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Cassandra API Test - createDatabase", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
connectionString.loginUsingConnectionString(connectionString.constants.cassandra);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new table in Cassandra API", () => {
|
||||||
|
const keyspaceId = `KeyspaceId${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const tableId = `TableId112`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Table"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[id="keyspace-id"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.type(keyspaceId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[class="textfontclr"]')
|
||||||
|
.type(tableId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="databaseThroughputValue"]')
|
||||||
|
.should("have.value", "400");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('data-test="addCollection-createCollection"')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.should("contain", tableId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
81
cypress/integration/dataexplorer/GRAPH/addCollection.spec.ts
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
// 1. Click on "New Graph" on the command bar.
|
||||||
|
// 2. Pane with the title "Add Container" should appear on the right side of the screen
|
||||||
|
// 3. It includes an input box for the database Id.
|
||||||
|
// 4. It includes a checkbox called "Create now".
|
||||||
|
// 5. When the checkbox is marked, enter new database id.
|
||||||
|
// 3. Create a database WITH "Provision throughput" checked.
|
||||||
|
// 4. Enter minimum throughput value of 400.
|
||||||
|
// 5. Enter container id to the container id text box.
|
||||||
|
// 6. Enter partition key to the partition key text box.
|
||||||
|
// 7. Click "OK" to create a new container.
|
||||||
|
// 8. Verify the new container is created along with the database id and should appead in the Data Explorer list in the left side of the screen.
|
||||||
|
|
||||||
|
const connectionString = require("../../../utilities/connectionString");
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Graph API Test", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
connectionString.loginUsingConnectionString(connectionString.constants.graph);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new graph in Graph API", () => {
|
||||||
|
const dbId = `TestDatabase${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const graphId = `TestGraph${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const partitionKey = `SharedKey${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Graph"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createNewDatabase"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-newDatabaseId"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.type(dbId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollectionPane-databaseSharedThroughput"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="databaseThroughputValue"]')
|
||||||
|
.should("have.value", "400");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-collectionId"]')
|
||||||
|
.type(graphId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-partitionKeyValue"]')
|
||||||
|
.type(partitionKey);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createCollection"]')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.should("contain", dbId)
|
||||||
|
.click()
|
||||||
|
.should("contain", graphId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
80
cypress/integration/dataexplorer/MONGO/addCollection.spec.ts
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
// 1. Click on "New Container" on the command bar.
|
||||||
|
// 2. Pane with the title "Add Container" should appear on the right side of the screen
|
||||||
|
// 3. It includes an input box for the database Id.
|
||||||
|
// 4. It includes a checkbox called "Create now".
|
||||||
|
// 5. When the checkbox is marked, enter new database id.
|
||||||
|
// 3. Create a database WITH "Provision throughput" checked.
|
||||||
|
// 4. Enter minimum throughput value of 400.
|
||||||
|
// 5. Enter container id to the container id text box.
|
||||||
|
// 6. Enter partition key to the partition key text box.
|
||||||
|
// 7. Click "OK" to create a new container.
|
||||||
|
// // 8. Verify the new container is created along with the database id and should appead in the Data Explorer list in the left side of the screen.
|
||||||
|
|
||||||
|
const connectionString = require("../../../utilities/connectionString");
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Mongo API Test - createDatabase", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
connectionString.loginUsingConnectionString(connectionString.constants.mongo);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new collection in Mongo API", () => {
|
||||||
|
const dbId = `TestDatabase${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const sharedKey = `SharedKey${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Collection"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createNewDatabase"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-newDatabaseId"]')
|
||||||
|
.type(dbId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollectionPane-databaseSharedThroughput"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-collectionId"]')
|
||||||
|
.type(collectionId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="databaseThroughputValue"]')
|
||||||
|
.should("have.value", "400");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-partitionKeyValue"]')
|
||||||
|
.type(sharedKey);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createCollection"]')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.should("contain", dbId)
|
||||||
|
.click()
|
||||||
|
.should("contain", collectionId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
// 1. Click on "New Container" on the command bar.
|
||||||
|
// 2. Pane with the title "Add Container" should appear on the right side of the screen
|
||||||
|
// 3. It includes an input box for the database Id.
|
||||||
|
// 4. It includes a checkbox called "Create now".
|
||||||
|
// 5. When the checkbox is marked, enter new database id.
|
||||||
|
// 3. Create a database WITH "Provision throughput" checked.
|
||||||
|
// 4. Enter minimum throughput value of 400.
|
||||||
|
// 5. Enter container id to the container id text box.
|
||||||
|
// 6. Enter partition key to the partition key text box.
|
||||||
|
// 7. Click "OK" to create a new container.
|
||||||
|
// 8. Verify the new container is created along with the database id and should appead in the Data Explorer list in the left side of the screen.
|
||||||
|
|
||||||
|
const connectionString = require("../../../utilities/connectionString");
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Mongo API Test", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
connectionString.loginUsingConnectionString(connectionString.constants.mongo);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new collection in Mongo API - Autopilot", () => {
|
||||||
|
const dbId = `TestDatabase${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const sharedKey = `SharedKey${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Collection"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createNewDatabase"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-newDatabaseId"]')
|
||||||
|
.type(dbId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollectionPane-databaseSharedThroughput"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="throughputModeContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.and(input => {
|
||||||
|
expect(input.get(0).textContent, "first item").contains("Autopilot (preview)");
|
||||||
|
expect(input.get(1).textContent, "second item").contains("Manual");
|
||||||
|
});
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[id="newContainer-databaseThroughput-autoPilotRadio"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('select[name="autoPilotTiers"]')
|
||||||
|
// .eq(1).should('contain', '4,000 RU/s');
|
||||||
|
// // .select('4,000 RU/s').should('have.value', '1');
|
||||||
|
|
||||||
|
.find('option[value="2"]')
|
||||||
|
.then($element => $element.get(1).setAttribute("selected", "selected"));
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-collectionId"]')
|
||||||
|
.type(collectionId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-partitionKeyValue"]')
|
||||||
|
.type(sharedKey);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createCollection"]')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.should("contain", dbId)
|
||||||
|
.click()
|
||||||
|
.should("contain", collectionId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
const connectionString = require("../../../utilities/connectionString");
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Mongo API Test", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
connectionString.loginUsingConnectionString(connectionString.constants.mongo);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new collection in existing database in Mongo API", () => {
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const sharedKey = `SharedKey${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('span[class="nodeLabel"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.then($span => {
|
||||||
|
const dbId1 = $span.text();
|
||||||
|
cy.log("DBBB", dbId1);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Collection"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-existingDatabase"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-existingDatabase"]')
|
||||||
|
.type(dbId1);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-collectionId"]')
|
||||||
|
.type(collectionId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-partitionKeyValue"]')
|
||||||
|
.type(sharedKey);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createCollection"]')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.click()
|
||||||
|
.should("contain", collectionId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,203 @@
|
|||||||
|
const connectionString = require("../../../utilities/connectionString");
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Mongo API Test", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
connectionString.loginUsingConnectionString(connectionString.constants.mongo);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new collection in Mongo API - Provision database throughput", () => {
|
||||||
|
const dbId = `TestDatabase${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const sharedKey = `SharedKey${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Collection"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find(".createNewDatabaseOrUseExisting")
|
||||||
|
.should("have.length", 2)
|
||||||
|
.and(input => {
|
||||||
|
expect(input.get(0).textContent, "first item").contains("Create new");
|
||||||
|
expect(input.get(1).textContent, "second item").contains("Use existing");
|
||||||
|
});
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createNewDatabase"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollectionPane-databaseSharedThroughput"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-newDatabaseId"]')
|
||||||
|
.type(dbId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollectionPane-databaseSharedThroughput"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="databaseThroughputValue"]')
|
||||||
|
.should("have.value", "400");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-collectionId"]')
|
||||||
|
.type(collectionId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-partitionKeyValue"]')
|
||||||
|
.type(sharedKey);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createCollection"]')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.should("contain", dbId)
|
||||||
|
.click()
|
||||||
|
.should("contain", collectionId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new collection - without provision database throughput", () => {
|
||||||
|
const dbId = `TestDatabase${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionIdTitle = `Add Collection`;
|
||||||
|
const sharedKey = `SharedKey${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Collection"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createNewDatabase"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-newDatabaseId"]')
|
||||||
|
.type(dbId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollectionPane-databaseSharedThroughput"]')
|
||||||
|
.uncheck();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-collectionId"]')
|
||||||
|
.type(collectionId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[id="tab2"]')
|
||||||
|
.check({ force: true });
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-partitionKeyValue"]')
|
||||||
|
.type(sharedKey);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="databaseThroughputValue"]')
|
||||||
|
.should("have.value", "400");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createCollection"]')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.should("contain", dbId)
|
||||||
|
.click()
|
||||||
|
.should("contain", collectionId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new collection - without provision database throughput Fixed Storage Capacity", () => {
|
||||||
|
const dbId = `TestDatabase${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const sharedKey = `SharedKey${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Collection"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createNewDatabase"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-newDatabaseId"]')
|
||||||
|
.type(dbId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollectionPane-databaseSharedThroughput"]')
|
||||||
|
.uncheck();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-collectionId"]')
|
||||||
|
.type(collectionId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[id="tab1"]')
|
||||||
|
.check({ force: true });
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="databaseThroughputValue"]')
|
||||||
|
.should("have.value", "400");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createCollection"]')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.should("contain", dbId)
|
||||||
|
.click()
|
||||||
|
.should("contain", collectionId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
78
cypress/integration/dataexplorer/SQL/addCollection.spec.ts
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
// 1. Click on "New Container" on the command bar.
|
||||||
|
// 2. Pane with the title "Add Container" should appear on the right side of the screen
|
||||||
|
// 3. It includes an input box for the database Id.
|
||||||
|
// 4. It includes a checkbox called "Create now".
|
||||||
|
// 5. When the checkbox is marked, enter new database id.
|
||||||
|
// 3. Create a database WITH "Provision throughput" checked.
|
||||||
|
// 4. Enter minimum throughput value of 400.
|
||||||
|
// 5. Enter container id to the container id text box.
|
||||||
|
// 6. Enter partition key to the partition key text box.
|
||||||
|
// 7. Click "OK" to create a new container.
|
||||||
|
// 8. Verify the new container is created along with the database id and should appead in the Data Explorer list in the left side of the screen.
|
||||||
|
|
||||||
|
const connectionString = require("../../../utilities/connectionString");
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("SQL API Test", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
connectionString.loginUsingConnectionString(connectionString.constants.sql);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new container in SQL API", () => {
|
||||||
|
const dbId = `TestDatabase${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const sharedKey = `SharedKey${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Container"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createNewDatabase"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollectionPane-databaseSharedThroughput"]')
|
||||||
|
.check();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-newDatabaseId"]')
|
||||||
|
.type(dbId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-collectionId"]')
|
||||||
|
.type(collectionId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="databaseThroughputValue"]')
|
||||||
|
.should("have.value", "400");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-partitionKeyValue"]')
|
||||||
|
.type(sharedKey);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createCollection"]')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.should("contain", dbId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
60
cypress/integration/dataexplorer/TABLE/addCollection.spec.ts
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
// 1. Click on "New Container" on the command bar.
|
||||||
|
// 2. Pane with the title "Add Container" should appear on the right side of the screen
|
||||||
|
// 3. It includes an input box for the database Id.
|
||||||
|
// 4. It includes a checkbox called "Create now".
|
||||||
|
// 5. When the checkbox is marked, enter new database id.
|
||||||
|
// 3. Create a database WITH "Provision throughput" checked.
|
||||||
|
// 4. Enter minimum throughput value of 400.
|
||||||
|
// 5. Enter container id to the container id text box.
|
||||||
|
// 6. Enter partition key to the partition key text box.
|
||||||
|
// 7. Click "OK" to create a new container.
|
||||||
|
// 8. Verify the new container is created along with the database id and should appead in the Data Explorer list in the left side of the screen.
|
||||||
|
|
||||||
|
const connectionString = require("../../../utilities/connectionString");
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Table API Test", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
connectionString.loginUsingConnectionString(connectionString.constants.table);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new table in Table API", () => {
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="commandBarContainer"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('button[data-test="New Table"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[class="contextual-pane-in"]')
|
||||||
|
.should("be.visible")
|
||||||
|
.find('span[id="containerTitle"]');
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-collectionId"]')
|
||||||
|
.type(collectionId);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="databaseThroughputValue"]')
|
||||||
|
.should("have.value", "400");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('input[data-test="addCollection-createCollection"]')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.wait(10000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find('div[data-test="resourceTreeId"]')
|
||||||
|
.should("exist")
|
||||||
|
.find('div[class="treeComponent dataResourceTree"]')
|
||||||
|
.should("contain", collectionId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
// 1. Click on "New Container" on the command bar.
|
||||||
|
// 2. Pane with the title "Add Container" should appear on the right side of the screen
|
||||||
|
// 3. It includes an input box for the database Id.
|
||||||
|
// 4. It includes a checkbox called "Create now".
|
||||||
|
// 5. When the checkbox is marked, enter new database id.
|
||||||
|
// 3. Create a database WITH "Provision throughput" checked.
|
||||||
|
// 4. Enter minimum throughput value of 400.
|
||||||
|
// 5. Enter container id to the container id text box.
|
||||||
|
// 6. Enter partition key to the partition key text box.
|
||||||
|
// 7. Click "OK" to create a new container.
|
||||||
|
// 8. Verify the new container is created along with the database id and should appead in the Data Explorer list in the left side of the screen.
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Emulator - createDatabase", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.visit("http://localhost:1234/explorer.html");
|
||||||
|
});
|
||||||
|
|
||||||
|
const dbId = `TestDatabase${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionIdTitle = `Add Collection`;
|
||||||
|
const partitionKey = `PartitionKey${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
|
||||||
|
it("Create a new collection", () => {
|
||||||
|
cy.contains("New Container").click();
|
||||||
|
|
||||||
|
// cy.contains(collectionIdTitle);
|
||||||
|
|
||||||
|
cy.get(".createNewDatabaseOrUseExisting")
|
||||||
|
.should("have.length", 2)
|
||||||
|
.and(input => {
|
||||||
|
expect(input.get(0).textContent, "first item").contains("Create new");
|
||||||
|
expect(input.get(1).textContent, "second item").contains("Use existing");
|
||||||
|
});
|
||||||
|
|
||||||
|
cy.get('input[data-test="addCollection-createNewDatabase"]').check();
|
||||||
|
|
||||||
|
cy.get('input[data-test="addCollection-newDatabaseId"]').type(dbId);
|
||||||
|
|
||||||
|
cy.get('input[data-test="addCollection-collectionId"]').type(collectionId);
|
||||||
|
|
||||||
|
cy.get('input[data-test="databaseThroughputValue"]').should("have.value", "400");
|
||||||
|
|
||||||
|
cy.get('input[data-test="addCollection-partitionKeyValue"]').type(partitionKey);
|
||||||
|
|
||||||
|
cy.get('input[data-test="addCollection-createCollection"]').click();
|
||||||
|
|
||||||
|
cy.get('div[data-test="resourceTreeId"]').should("exist");
|
||||||
|
|
||||||
|
cy.get('div[data-test="resourceTree-collectionsTree"]').should("contain", dbId);
|
||||||
|
|
||||||
|
cy.get('div[data-test="databaseList"]').should("contain", collectionId);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
// 1. Click on "New Database" on the command bar
|
||||||
|
// 2. a Pane with the title "Add Database" should appear on the right side of the screen
|
||||||
|
// i. It includes an input box for the database Id.
|
||||||
|
// ii. It includes a checkbox called "Provision throughput".
|
||||||
|
// iii. Whe the checkbox is marked, a new input with a throughput control let's you customize RU at the database level
|
||||||
|
// 3. Create a database WITHOUT "Provision throughput" checked.
|
||||||
|
// 4. It should appear in the Data Explorer list.
|
||||||
|
// 5. Repeat steps 1-3 but create a database WITH "Provision throughput" with the default RU value.
|
||||||
|
// 6. It should appear in the Data Explorer list.
|
||||||
|
// 7. If expanded, it should have the list item called "Scale", that once clicked, it should show the "Scale" tab.
|
||||||
|
// 8. Inside that tab, a throughput control will let you change the RU value within the permited range.
|
||||||
|
// 9. If you change the value, it should enable the "Save" button.
|
||||||
|
// 10. Click "Save" and verify that the process completes without error.
|
||||||
|
// 11. Close the tab and reopen it and verify that the input contains the last saved value.%
|
||||||
|
|
||||||
|
const crypto = require("crypto");
|
||||||
|
const client = require("../../../utilities/cosmosClient");
|
||||||
|
const randomString = crypto.randomBytes(2).toString("hex");
|
||||||
|
const databaseId = `TestDB-${randomString}`;
|
||||||
|
const collectionId = `TestColl-${randomString}`;
|
||||||
|
|
||||||
|
context("Emulator - Create database -> container -> item", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
const { resources } = await client.databases.readAll().fetchAll();
|
||||||
|
for (const database of resources) {
|
||||||
|
await client.database(database.id).delete();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it("creates a new database", () => {
|
||||||
|
cy.visit("https://0.0.0.0:1234/explorer.html?platform=Emulator");
|
||||||
|
cy.contains("New Container").click();
|
||||||
|
cy.get("[data-test=addCollection-newDatabaseId]").click();
|
||||||
|
cy.get("[data-test=addCollection-newDatabaseId]").type(databaseId);
|
||||||
|
cy.get("[data-test=addCollection-collectionId]").click();
|
||||||
|
cy.get("[data-test=addCollection-collectionId]").type(collectionId);
|
||||||
|
cy.get("[data-test=addCollection-partitionKeyValue]").click();
|
||||||
|
cy.get("[data-test=addCollection-partitionKeyValue]").type("/pk");
|
||||||
|
cy.get('input[name="createCollection"]').click();
|
||||||
|
cy.get(".dataResourceTree").should("contain", databaseId);
|
||||||
|
cy.get(".dataResourceTree")
|
||||||
|
.contains(databaseId)
|
||||||
|
.click();
|
||||||
|
cy.get(".dataResourceTree").should("contain", collectionId);
|
||||||
|
cy.get(".dataResourceTree")
|
||||||
|
.contains(collectionId)
|
||||||
|
.click();
|
||||||
|
cy.get(".dataResourceTree")
|
||||||
|
.contains("Items")
|
||||||
|
.click();
|
||||||
|
cy.get(".dataResourceTree")
|
||||||
|
.contains("Items")
|
||||||
|
.click();
|
||||||
|
cy.wait(1000); // React rendering inside KO causes some weird async rendering that makes this test flaky without waiting
|
||||||
|
cy.get(".commandBarContainer")
|
||||||
|
.contains("New Item")
|
||||||
|
.click();
|
||||||
|
cy.wait(1000); // React rendering inside KO causes some weird async rendering that makes this test flaky without waiting
|
||||||
|
cy.get(".commandBarContainer")
|
||||||
|
.contains("Save")
|
||||||
|
.click();
|
||||||
|
cy.wait(1000); // React rendering inside KO causes some weird async rendering that makes this test flaky without waiting
|
||||||
|
cy.get(".documentsGridHeaderContainer").should("contain", "replace_with_new_document_id");
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
// 1. Click last database in the resource tree
|
||||||
|
// 2. Click the last collection within the database
|
||||||
|
// 3. Select the context menu within the collection
|
||||||
|
// 4. Select "Delete Container" option in the dropdown
|
||||||
|
// 5. On Selection, Delete Container pane opens on the right side
|
||||||
|
// 6. Enter the same collection id that is to be deleted and click ok
|
||||||
|
// 7. Now, the resource tree refreshes, the deleted collection should not appear under the database
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Emulator - deleteCollection", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.visit("http://localhost:1234/explorer.html");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Delete a collection", () => {
|
||||||
|
cy.get(".databaseId")
|
||||||
|
.last()
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.get(".collectionList")
|
||||||
|
.last()
|
||||||
|
.then($id => {
|
||||||
|
const collectionId = $id.text();
|
||||||
|
|
||||||
|
cy.get('span[data-test="collectionEllipsisMenu"]').should("exist");
|
||||||
|
|
||||||
|
cy.get('span[data-test="collectionEllipsisMenu"]')
|
||||||
|
.invoke("show")
|
||||||
|
.last()
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.get('div[data-test="collectionContextMenu"]')
|
||||||
|
.contains("Delete Container")
|
||||||
|
.click({ force: true });
|
||||||
|
|
||||||
|
cy.get('input[data-test="confirmCollectionId"]').type(collectionId.trim());
|
||||||
|
|
||||||
|
cy.get('input[data-test="deleteCollection"]').click();
|
||||||
|
|
||||||
|
cy.get('div[data-test="databaseList"]').should("not.contain", collectionId);
|
||||||
|
|
||||||
|
cy.get('div[data-test="databaseMenu"]').should("not.contain", collectionId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
// 1. Click last database in the resource tree
|
||||||
|
// 2. Select the context menu within the database
|
||||||
|
// 4. Select "Delete Database" option in the dropdown
|
||||||
|
// 5. On Selection, Delete Database pane opens on the right side
|
||||||
|
// 6. Enter the same database id that is to be deleted and click ok
|
||||||
|
// 7. Now, the resource tree refreshes, the deleted database should not appear in the resource tree
|
||||||
|
|
||||||
|
let crypt = require("crypto");
|
||||||
|
|
||||||
|
context("Emulator - deleteDatabase", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
const dbId = `TestDatabase${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionId = `TestCollection${crypt.randomBytes(8).toString("hex")}`;
|
||||||
|
let db_rid = "";
|
||||||
|
const date = new Date().toUTCString();
|
||||||
|
let authToken = "";
|
||||||
|
cy.visit("http://localhost:1234/explorer.html");
|
||||||
|
|
||||||
|
// Creating auth token for collection creation
|
||||||
|
cy.request({
|
||||||
|
method: "GET",
|
||||||
|
url: "https://localhost:8081/_explorer/authorization/post/dbs/",
|
||||||
|
headers: {
|
||||||
|
"x-ms-date": date,
|
||||||
|
authorization: "-"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(response => {
|
||||||
|
authToken = response.body.Token; // Getting auth token for collection creation
|
||||||
|
return new Cypress.Promise((resolve, reject) => {
|
||||||
|
return resolve();
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
cy.request({
|
||||||
|
method: "POST",
|
||||||
|
url: "https://localhost:8081/dbs",
|
||||||
|
headers: {
|
||||||
|
"x-ms-date": date,
|
||||||
|
authorization: authToken,
|
||||||
|
"x-ms-version": "2018-12-31"
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
id: dbId
|
||||||
|
}
|
||||||
|
}).then(response => {
|
||||||
|
cy.log("Response", response);
|
||||||
|
db_rid = response.body._rid;
|
||||||
|
return new Cypress.Promise((resolve, reject) => {
|
||||||
|
cy.log("Rid", db_rid);
|
||||||
|
return resolve();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Delete a database", () => {
|
||||||
|
cy.get('span[data-test="refreshTree"]').click();
|
||||||
|
|
||||||
|
cy.get(".databaseId")
|
||||||
|
.last()
|
||||||
|
.then($id => {
|
||||||
|
const dbId = $id.text();
|
||||||
|
|
||||||
|
cy.get('span[data-test="databaseEllipsisMenu"]').should("exist");
|
||||||
|
|
||||||
|
cy.get('span[data-test="databaseEllipsisMenu"]')
|
||||||
|
.invoke("show")
|
||||||
|
.last()
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.get('div[data-test="databaseContextMenu"]')
|
||||||
|
.contains("Delete Database")
|
||||||
|
.click({ force: true });
|
||||||
|
|
||||||
|
cy.get('input[data-test="confirmDatabaseId"]').type(dbId.trim());
|
||||||
|
|
||||||
|
cy.get('input[data-test="deleteDatabase"]').click();
|
||||||
|
|
||||||
|
cy.get('div[data-test="databaseList"]').should("not.contain", dbId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
35
cypress/integration/notebook/README.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# Notebook end-to-end tests
|
||||||
|
This describes how to run the tests locally
|
||||||
|
|
||||||
|
## Stand up a local notebook container instance:
|
||||||
|
Instructions on how to build and run the container [here](https://microsoft.sharepoint.com/teams/DocDB/_layouts/OneNote.aspx?id=%2Fteams%2FDocDB%2FSiteAssets%2FDocDB%20Team%20Notebook&wd=target%28Tools%20_%20SDK%2FPortal%2FDevelopment.one%7CF800BE8E-1E31-48FE-90D7-EF698EF88112%2FHow%20to%20build%20notebook%20service%7C4BAA153B-422C-41E2-B997-F3FCE02CD743%2F%29)
|
||||||
|
|
||||||
|
## Run a local data explorer
|
||||||
|
Instructions are in [`DataExplorer/README.md`](https://msdata.visualstudio.com/CosmosDB/_git/cosmosdb-dataexplorer?path=%2FProduct%2FPortal%2FDataExplorer%2FREADME.md&_a=preview).
|
||||||
|
|
||||||
|
Make sure you can run Data Explorer locally from the web browser.
|
||||||
|
|
||||||
|
## Run cypress tests
|
||||||
|
1. Edit the URL for your DataExplorer in the `.spec.ts` file
|
||||||
|
2. Run the test:
|
||||||
|
```bash
|
||||||
|
cd DataExplorer/cypress
|
||||||
|
npm i
|
||||||
|
npm t -- --spec 'integration/notebook/newNotebook.spec.ts'
|
||||||
|
```
|
||||||
|
|
||||||
|
To run in Debug mode:
|
||||||
|
```
|
||||||
|
npm run test:debug
|
||||||
|
```
|
||||||
|
This opens Cypress UI
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
* The tests are recorded in the `videos` folder.
|
||||||
|
* Cypress does not support hover: workarounds [here](https://docs.cypress.io/api/commands/hover.html#Workarounds).
|
||||||
|
|
||||||
|
|
||||||
|
## References
|
||||||
|
* [Cypress API](https://docs.cypress.io/api/api/table-of-contents.html)
|
||||||
|
* [Cypress cookbook](https://docs.cypress.io/faq/questions/using-cypress-faq.html#How-do-I-get-an-element%E2%80%99s-text-contents)
|
||||||
|
* [Cypress best practices](https://docs.cypress.io/guides/references/best-practices.html#Selecting-Elements)
|
||||||
93
cypress/integration/notebook/newNotebook.spec.ts
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
// THIS ADDS A NEW NOTEBOOK TO YOUR NOTEBOOKS
|
||||||
|
context("New Notebook smoke test", () => {
|
||||||
|
const timeout = 15000; // in ms
|
||||||
|
const explorerUrl =
|
||||||
|
"https://localhost:1234/explorer.html?feature.notebookserverurl=https%3A%2F%2Flocalhost%3A10001%2F12345%2Fnotebook&feature.notebookServerToken=token&feature.enablenotebooks=true";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wait for UI to be ready
|
||||||
|
*/
|
||||||
|
const waitForReady = () => {
|
||||||
|
cy.get(".splashScreenContainer", { timeout }).should("be.visible");
|
||||||
|
};
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.visit(explorerUrl);
|
||||||
|
waitForReady();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a new notebook and run some code", () => {
|
||||||
|
// Create new notebook
|
||||||
|
cy.contains("New Notebook").click();
|
||||||
|
|
||||||
|
// Check tab name
|
||||||
|
cy.get("li.tabList .tabNavText").should($span => {
|
||||||
|
const text = $span.text();
|
||||||
|
expect(text).to.match(/^Untitled.*\.ipynb$/);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Wait for python3 | idle status
|
||||||
|
cy.get('[data-test="notebookStatusBar"] [data-test="kernelStatus"]', { timeout }).should($p => {
|
||||||
|
const text = $p.text();
|
||||||
|
expect(text).to.match(/^python3.*idle$/);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Click on a cell
|
||||||
|
cy.get(".cell-container")
|
||||||
|
.as("cellContainer")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
// Type in some code
|
||||||
|
cy.get("@cellContainer").type("2+4");
|
||||||
|
|
||||||
|
// Execute
|
||||||
|
cy.get('[data-test="Run"]')
|
||||||
|
.first()
|
||||||
|
.click();
|
||||||
|
|
||||||
|
// Verify results
|
||||||
|
cy.get("@cellContainer").within(() => {
|
||||||
|
cy.get("pre code span").should("contain", "6");
|
||||||
|
});
|
||||||
|
|
||||||
|
// Restart kernel
|
||||||
|
cy.get('[data-test="Run"] button')
|
||||||
|
.eq(-1)
|
||||||
|
.click();
|
||||||
|
cy.get("li")
|
||||||
|
.contains("Restart Kernel")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
// Wait for python3 | restarting status
|
||||||
|
cy.get('[data-test="notebookStatusBar"] [data-test="kernelStatus"]', { timeout }).should($p => {
|
||||||
|
const text = $p.text();
|
||||||
|
expect(text).to.match(/^python3.*restarting$/);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Wait for python3 | idle status
|
||||||
|
cy.get('[data-test="notebookStatusBar"] [data-test="kernelStatus"]', { timeout }).should($p => {
|
||||||
|
const text = $p.text();
|
||||||
|
expect(text).to.match(/^python3.*idle$/);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Click on a cell
|
||||||
|
cy.get(".cell-container")
|
||||||
|
.as("cellContainer")
|
||||||
|
.find(".input")
|
||||||
|
.as("codeInput")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
// Type in some code
|
||||||
|
cy.get("@codeInput").type("{backspace}{backspace}{backspace}4+5");
|
||||||
|
|
||||||
|
// Execute
|
||||||
|
cy.get('[data-test="Run"]')
|
||||||
|
.first()
|
||||||
|
.click();
|
||||||
|
|
||||||
|
// Verify results
|
||||||
|
cy.get("@cellContainer").within(() => {
|
||||||
|
cy.get("pre code span").should("contain", "9");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
172
cypress/integration/notebook/resourceTree.spec.ts
Normal file
@@ -0,0 +1,172 @@
|
|||||||
|
context("Resource tree notebook file manipulation", () => {
|
||||||
|
const timeout = 15000; // in ms
|
||||||
|
const explorerUrl =
|
||||||
|
"https://localhost:1234/explorer.html?feature.notebookserverurl=https%3A%2F%2Flocalhost%3A10001%2F12345%2Fnotebook&feature.notebookServerToken=token&feature.enablenotebooks=true";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wait for UI to be ready
|
||||||
|
*/
|
||||||
|
const waitForReady = () => {
|
||||||
|
cy.get(".splashScreenContainer", { timeout }).should("be.visible");
|
||||||
|
};
|
||||||
|
|
||||||
|
const clickContextMenuAndSelectOption = (nodeLabel, option) => {
|
||||||
|
cy.get(`.treeNodeHeader[data-test="${nodeLabel}"]`)
|
||||||
|
.find("button.treeMenuEllipsis")
|
||||||
|
.click();
|
||||||
|
cy.get('[data-test="treeComponentMenuItemContainer"]')
|
||||||
|
.contains(option)
|
||||||
|
.click();
|
||||||
|
};
|
||||||
|
|
||||||
|
const createFolder = folder => {
|
||||||
|
clickContextMenuAndSelectOption("My Notebooks/", "New Directory");
|
||||||
|
|
||||||
|
cy.get("#stringInputPane").within(() => {
|
||||||
|
cy.get('input[name="collectionIdConfirmation"]').type(folder);
|
||||||
|
cy.get("form").submit();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteItem = nodeName => {
|
||||||
|
clickContextMenuAndSelectOption(`${nodeName}`, "Delete");
|
||||||
|
cy.get(".ms-Dialog-main")
|
||||||
|
.contains("Delete")
|
||||||
|
.click();
|
||||||
|
};
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.visit(explorerUrl);
|
||||||
|
waitForReady();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create and remove a directory", () => {
|
||||||
|
const folder = "e2etest_folder1";
|
||||||
|
createFolder(folder);
|
||||||
|
cy.get(`.treeNodeHeader[data-test="${folder}/"]`).should("exist");
|
||||||
|
deleteItem(`${folder}/`);
|
||||||
|
cy.get(`.treeNodeHeader[data-test="${folder}/"]`).should("not.exist");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create and rename a directory", () => {
|
||||||
|
const folder = "e2etest_folder2";
|
||||||
|
const renamedFolder = "e2etest_folder2_renamed";
|
||||||
|
createFolder(folder);
|
||||||
|
|
||||||
|
// Rename
|
||||||
|
clickContextMenuAndSelectOption(`${folder}/`, "Rename");
|
||||||
|
cy.get("#stringInputPane").within(() => {
|
||||||
|
cy.get('input[name="collectionIdConfirmation"]')
|
||||||
|
.clear()
|
||||||
|
.type(renamedFolder);
|
||||||
|
cy.get("form").submit();
|
||||||
|
});
|
||||||
|
cy.get(`.treeNodeHeader[data-test="${renamedFolder}/"]`).should("exist");
|
||||||
|
cy.get(`.treeNodeHeader[data-test="${folder}/"]`).should("not.exist");
|
||||||
|
|
||||||
|
deleteItem(`${renamedFolder}/`);
|
||||||
|
cy.get(`.treeNodeHeader[data-test="${renamedFolder}/"]`).should("not.exist");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create a notebook inside a directory", () => {
|
||||||
|
const folder = "e2etest_folder3";
|
||||||
|
const newNotebookName = "Untitled.ipynb";
|
||||||
|
createFolder(folder);
|
||||||
|
clickContextMenuAndSelectOption(`${folder}/`, "New Notebook");
|
||||||
|
|
||||||
|
// Verify tab is open
|
||||||
|
cy.get(".tabList")
|
||||||
|
.contains(newNotebookName)
|
||||||
|
.should("exist");
|
||||||
|
|
||||||
|
// Close tab
|
||||||
|
cy.get(`.tabList[title="notebooks/${folder}/${newNotebookName}"]`)
|
||||||
|
.find(".cancelButton")
|
||||||
|
.click();
|
||||||
|
// When running from command line, closing the tab is too fast
|
||||||
|
cy.get("body").then($body => {
|
||||||
|
if ($body.find(".ms-Dialog-main").length) {
|
||||||
|
// For some reason, this does not work
|
||||||
|
// cy.get(".ms-Dialog-main").contains("Close").click();
|
||||||
|
cy.get(".ms-Dialog-main .ms-Button--primary").click();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Expand folder node
|
||||||
|
cy.get(`.treeNodeHeader[data-test="${folder}/"]`).click();
|
||||||
|
cy.get(`.nodeChildren[data-test="${folder}/"] .treeNodeHeader[data-test="${newNotebookName}"]`).should("exist");
|
||||||
|
|
||||||
|
// Delete notebook
|
||||||
|
cy.get(`.nodeChildren[data-test="${folder}/"] .treeNodeHeader[data-test="${newNotebookName}"]`)
|
||||||
|
.find("button.treeMenuEllipsis")
|
||||||
|
.click();
|
||||||
|
cy.get('[data-test="treeComponentMenuItemContainer"]')
|
||||||
|
.contains("Delete")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
// Confirm
|
||||||
|
cy.get(".ms-Dialog-main")
|
||||||
|
.contains("Delete")
|
||||||
|
.click();
|
||||||
|
cy.get(`.nodeChildren[data-test="${folder}/"] .treeNodeHeader[data-test="${newNotebookName}"]`).should("not.exist");
|
||||||
|
|
||||||
|
deleteItem(`${folder}/`);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Create and rename a notebook inside a directory", () => {
|
||||||
|
const folder = "e2etest_folder4";
|
||||||
|
const newNotebookName = "Untitled.ipynb";
|
||||||
|
const renamedNotebookName = "mynotebook.ipynb";
|
||||||
|
createFolder(folder);
|
||||||
|
clickContextMenuAndSelectOption(`${folder}/`, "New Notebook");
|
||||||
|
|
||||||
|
// Close tab
|
||||||
|
cy.get(`.tabList[title="notebooks/${folder}/${newNotebookName}"]`)
|
||||||
|
.find(".cancelButton")
|
||||||
|
.click();
|
||||||
|
cy.get("body").then($body => {
|
||||||
|
if ($body.find(".ms-Dialog-main").length) {
|
||||||
|
// For some reason, this does not work
|
||||||
|
// cy.get(".ms-Dialog-main").contains("Close").click();
|
||||||
|
cy.get(".ms-Dialog-main .ms-Button--primary").click();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Expand folder node
|
||||||
|
cy.get(`.treeNodeHeader[data-test="${folder}/"]`).click();
|
||||||
|
cy.get(`.nodeChildren[data-test="${folder}/"] .treeNodeHeader[data-test="${newNotebookName}"]`).should("exist");
|
||||||
|
|
||||||
|
// Rename notebook
|
||||||
|
cy.get(`.nodeChildren[data-test="${folder}/"] .treeNodeHeader[data-test="${newNotebookName}"]`)
|
||||||
|
.find("button.treeMenuEllipsis")
|
||||||
|
.click();
|
||||||
|
cy.get('[data-test="treeComponentMenuItemContainer"]')
|
||||||
|
.contains("Rename")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
cy.get("#stringInputPane").within(() => {
|
||||||
|
cy.get('input[name="collectionIdConfirmation"]')
|
||||||
|
.clear()
|
||||||
|
.type(renamedNotebookName);
|
||||||
|
cy.get("form").submit();
|
||||||
|
});
|
||||||
|
cy.get(`.nodeChildren[data-test="${folder}/"] .treeNodeHeader[data-test="${newNotebookName}"]`).should("not.exist");
|
||||||
|
cy.get(`.nodeChildren[data-test="${folder}/"] .treeNodeHeader[data-test="${renamedNotebookName}"]`).should("exist");
|
||||||
|
|
||||||
|
// Delete notebook
|
||||||
|
cy.get(`.nodeChildren[data-test="${folder}/"] .treeNodeHeader[data-test="${renamedNotebookName}"]`)
|
||||||
|
.find("button.treeMenuEllipsis")
|
||||||
|
.click();
|
||||||
|
cy.get('[data-test="treeComponentMenuItemContainer"]')
|
||||||
|
.contains("Delete")
|
||||||
|
.click();
|
||||||
|
|
||||||
|
// Confirm
|
||||||
|
cy.get(".ms-Dialog-main")
|
||||||
|
.contains("Delete")
|
||||||
|
.click();
|
||||||
|
// Give it time to settle
|
||||||
|
cy.wait(1000);
|
||||||
|
deleteItem(`${folder}/`);
|
||||||
|
});
|
||||||
|
});
|
||||||
3148
cypress/package-lock.json
generated
Normal file
23
cypress/package.json
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"name": "cosmos-explorer-cypress",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "cypress run",
|
||||||
|
"test:ci": "wait-on -t 240000 -i 5000 -v https-get://0.0.0.0:1234/ https-get://0.0.0.0:8081/_explorer/index.html && cypress run --browser chrome --headless",
|
||||||
|
"test:debug": "cypress open"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"cypress": "^4.5.0",
|
||||||
|
"mocha": "^7.0.1",
|
||||||
|
"mochawesome": "^4.1.0",
|
||||||
|
"mochawesome-merge": "^4.0.1",
|
||||||
|
"mochawesome-report-generator": "^4.1.0",
|
||||||
|
"typescript": "3.4.3",
|
||||||
|
"wait-on": "^4.0.2"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@microsoft/applicationinsights-web": "^2.5.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
23
cypress/support/index.js
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
let appInsightsLib = require("@microsoft/applicationinsights-web");
|
||||||
|
|
||||||
|
const appInsights = new appInsightsLib.ApplicationInsights({
|
||||||
|
config: {
|
||||||
|
instrumentationKey: "fe61c39f-7d32-4488-a191-b13621965315"
|
||||||
|
/* ...Other Configuration Options... */
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
appInsights.loadAppInsights();
|
||||||
|
|
||||||
|
Cypress.on("fail", (error, runnable) => {
|
||||||
|
// App Insights will record the fail tests for Create Collection
|
||||||
|
let message = JSON.stringify(runnable.title);
|
||||||
|
appInsights.trackTrace({
|
||||||
|
message: `${message}`,
|
||||||
|
properties: {
|
||||||
|
passed: false,
|
||||||
|
error: error
|
||||||
|
}
|
||||||
|
});
|
||||||
|
throw error; // throw error to have test still fail
|
||||||
|
});
|
||||||
11
cypress/tsconfig.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"strict": true,
|
||||||
|
"noEmit": true,
|
||||||
|
"module": "commonjs",
|
||||||
|
"target": "es5",
|
||||||
|
"lib": ["es5", "dom", "es6"],
|
||||||
|
"types": ["cypress", "node"]
|
||||||
|
},
|
||||||
|
"include": ["**/*.ts", "**/*.spec.ts"]
|
||||||
|
}
|
||||||
56
cypress/utilities/connectionString.js
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
module.exports = {
|
||||||
|
loginUsingConnectionString: function (api) {
|
||||||
|
|
||||||
|
|
||||||
|
const prodUrl = "https://cosmos.azure.com/";
|
||||||
|
const timeout = 15000;
|
||||||
|
|
||||||
|
cy.visit(prodUrl);
|
||||||
|
cy.get('iframe[id="explorerMenu"]').should("be.visible");
|
||||||
|
|
||||||
|
cy.get("iframe").then($element => {
|
||||||
|
const $body = $element.contents().find("body");
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find("#connectExplorer")
|
||||||
|
.should("exist")
|
||||||
|
.find("div[class='connectExplorer']")
|
||||||
|
.should("exist")
|
||||||
|
.find("p[class='welcomeText']")
|
||||||
|
.should("exist");
|
||||||
|
|
||||||
|
cy.wrap($body.find("div > p.switchConnectTypeText"))
|
||||||
|
.should("exist")
|
||||||
|
.last()
|
||||||
|
.click({ force: true });
|
||||||
|
|
||||||
|
const secret = Cypress.env('connectionString')[api];
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find("input[class='inputToken']")
|
||||||
|
.should("exist")
|
||||||
|
.type(secret, {
|
||||||
|
force: true
|
||||||
|
});
|
||||||
|
|
||||||
|
cy.wrap($body.find("input[value='Connect']"), { timeout })
|
||||||
|
.first()
|
||||||
|
.click({ force: true });
|
||||||
|
|
||||||
|
cy.wait(15000);
|
||||||
|
|
||||||
|
cy.wrap($body)
|
||||||
|
.find(".connectExplorer > p:nth-child(3)")
|
||||||
|
.should("be.visible");
|
||||||
|
|
||||||
|
});
|
||||||
|
},
|
||||||
|
constants:{
|
||||||
|
sql: "sql",
|
||||||
|
mongo: "mongo",
|
||||||
|
table: "table",
|
||||||
|
graph: "graph",
|
||||||
|
cassandra: "cassandra"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
6
cypress/utilities/cosmosClient.js
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
const { CosmosClient } = require("@azure/cosmos");
|
||||||
|
|
||||||
|
module.exports = new CosmosClient({
|
||||||
|
endpoint: "https://0.0.0.0:8081",
|
||||||
|
key: "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
|
||||||
|
});
|
||||||
1963
externals/adal.js
vendored
Normal file
7
externals/bootstrap.js
vendored
Normal file
7
externals/bootstrap.min.js
vendored
Normal file
6
externals/bootstrap_ase.css
vendored
Normal file
595
externals/bops.js
vendored
Normal file
@@ -0,0 +1,595 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
(function(e){if("function"==typeof bootstrap)bootstrap("bops",e);else if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else if("undefined"!=typeof ses){if(!ses.ok())return;ses.makeBops=e}else"undefined"!=typeof window?window.bops=e():global.bops=e()})(function(){var define,ses,bootstrap,module,exports;
|
||||||
|
return (function(e,t,n){function i(n,s){if(!t[n]){if(!e[n]){var o=typeof require=="function"&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);throw new Error("Cannot find module '"+n+"'")}var u=t[n]={exports:{}};e[n][0].call(u.exports,function(t){var r=e[n][1][t];return i(r?r:t)},u,u.exports)}return t[n].exports}var r=typeof require=="function"&&require;for(var s=0;s<n.length;s++)i(n[s]);return i})({1:[function(require,module,exports){
|
||||||
|
var proto = {}
|
||||||
|
module.exports = proto
|
||||||
|
|
||||||
|
proto.from = require('./from.js')
|
||||||
|
proto.to = require('./to.js')
|
||||||
|
proto.is = require('./is.js')
|
||||||
|
proto.subarray = require('./subarray.js')
|
||||||
|
proto.join = require('./join.js')
|
||||||
|
proto.copy = require('./copy.js')
|
||||||
|
proto.create = require('./create.js')
|
||||||
|
|
||||||
|
mix(require('./read.js'), proto)
|
||||||
|
mix(require('./write.js'), proto)
|
||||||
|
|
||||||
|
function mix(from, into) {
|
||||||
|
for(var key in from) {
|
||||||
|
into[key] = from[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
},{"./from.js":2,"./to.js":3,"./is.js":4,"./subarray.js":5,"./join.js":6,"./copy.js":7,"./create.js":8,"./read.js":9,"./write.js":10}],4:[function(require,module,exports){
|
||||||
|
|
||||||
|
module.exports = function(buffer) {
|
||||||
|
return buffer instanceof Uint8Array;
|
||||||
|
}
|
||||||
|
|
||||||
|
},{}],5:[function(require,module,exports){
|
||||||
|
module.exports = subarray
|
||||||
|
|
||||||
|
function subarray(buf, from, to) {
|
||||||
|
return buf.subarray(from || 0, to || buf.length)
|
||||||
|
}
|
||||||
|
|
||||||
|
},{}],6:[function(require,module,exports){
|
||||||
|
module.exports = join
|
||||||
|
|
||||||
|
function join(targets, hint) {
|
||||||
|
if(!targets.length) {
|
||||||
|
return new Uint8Array(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
var len = hint !== undefined ? hint : get_length(targets)
|
||||||
|
, out = new Uint8Array(len)
|
||||||
|
, cur = targets[0]
|
||||||
|
, curlen = cur.length
|
||||||
|
, curidx = 0
|
||||||
|
, curoff = 0
|
||||||
|
, i = 0
|
||||||
|
|
||||||
|
while(i < len) {
|
||||||
|
if(curoff === curlen) {
|
||||||
|
curoff = 0
|
||||||
|
++curidx
|
||||||
|
cur = targets[curidx]
|
||||||
|
curlen = cur && cur.length
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
out[i++] = cur[curoff++]
|
||||||
|
}
|
||||||
|
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_length(targets) {
|
||||||
|
var size = 0
|
||||||
|
for(var i = 0, len = targets.length; i < len; ++i) {
|
||||||
|
size += targets[i].byteLength
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
|
||||||
|
},{}],7:[function(require,module,exports){
|
||||||
|
module.exports = copy
|
||||||
|
|
||||||
|
var slice = [].slice
|
||||||
|
|
||||||
|
function copy(source, target, target_start, source_start, source_end) {
|
||||||
|
target_start = arguments.length < 3 ? 0 : target_start
|
||||||
|
source_start = arguments.length < 4 ? 0 : source_start
|
||||||
|
source_end = arguments.length < 5 ? source.length : source_end
|
||||||
|
|
||||||
|
if(source_end === source_start) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if(target.length === 0 || source.length === 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if(source_end > source.length) {
|
||||||
|
source_end = source.length
|
||||||
|
}
|
||||||
|
|
||||||
|
if(target.length - target_start < source_end - source_start) {
|
||||||
|
source_end = target.length - target_start + start
|
||||||
|
}
|
||||||
|
|
||||||
|
if(source.buffer !== target.buffer) {
|
||||||
|
return fast_copy(source, target, target_start, source_start, source_end)
|
||||||
|
}
|
||||||
|
return slow_copy(source, target, target_start, source_start, source_end)
|
||||||
|
}
|
||||||
|
|
||||||
|
function fast_copy(source, target, target_start, source_start, source_end) {
|
||||||
|
var len = (source_end - source_start) + target_start
|
||||||
|
|
||||||
|
for(var i = target_start, j = source_start;
|
||||||
|
i < len;
|
||||||
|
++i,
|
||||||
|
++j) {
|
||||||
|
target[i] = source[j]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function slow_copy(from, to, j, i, jend) {
|
||||||
|
// the buffers could overlap.
|
||||||
|
var iend = jend + i
|
||||||
|
, tmp = new Uint8Array(slice.call(from, i, iend))
|
||||||
|
, x = 0
|
||||||
|
|
||||||
|
for(; i < iend; ++i, ++x) {
|
||||||
|
to[j++] = tmp[x]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
},{}],8:[function(require,module,exports){
|
||||||
|
module.exports = function(size) {
|
||||||
|
return new Uint8Array(size)
|
||||||
|
}
|
||||||
|
|
||||||
|
},{}],9:[function(require,module,exports){
|
||||||
|
module.exports = {
|
||||||
|
readUInt8: read_uint8
|
||||||
|
, readInt8: read_int8
|
||||||
|
, readUInt16LE: read_uint16_le
|
||||||
|
, readUInt32LE: read_uint32_le
|
||||||
|
, readInt16LE: read_int16_le
|
||||||
|
, readInt32LE: read_int32_le
|
||||||
|
, readFloatLE: read_float_le
|
||||||
|
, readDoubleLE: read_double_le
|
||||||
|
, readUInt16BE: read_uint16_be
|
||||||
|
, readUInt32BE: read_uint32_be
|
||||||
|
, readInt16BE: read_int16_be
|
||||||
|
, readInt32BE: read_int32_be
|
||||||
|
, readFloatBE: read_float_be
|
||||||
|
, readDoubleBE: read_double_be
|
||||||
|
}
|
||||||
|
|
||||||
|
var map = require('./mapped.js')
|
||||||
|
|
||||||
|
function read_uint8(target, at) {
|
||||||
|
return target[at]
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_int8(target, at) {
|
||||||
|
var v = target[at];
|
||||||
|
return v < 0x80 ? v : v - 0x100
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_uint16_le(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getUint16(at + target.byteOffset, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_uint32_le(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getUint32(at + target.byteOffset, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_int16_le(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getInt16(at + target.byteOffset, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_int32_le(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getInt32(at + target.byteOffset, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_float_le(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getFloat32(at + target.byteOffset, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_double_le(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getFloat64(at + target.byteOffset, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_uint16_be(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getUint16(at + target.byteOffset, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_uint32_be(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getUint32(at + target.byteOffset, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_int16_be(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getInt16(at + target.byteOffset, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_int32_be(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getInt32(at + target.byteOffset, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_float_be(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getFloat32(at + target.byteOffset, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function read_double_be(target, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.getFloat64(at + target.byteOffset, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
},{"./mapped.js":11}],10:[function(require,module,exports){
|
||||||
|
module.exports = {
|
||||||
|
writeUInt8: write_uint8
|
||||||
|
, writeInt8: write_int8
|
||||||
|
, writeUInt16LE: write_uint16_le
|
||||||
|
, writeUInt32LE: write_uint32_le
|
||||||
|
, writeInt16LE: write_int16_le
|
||||||
|
, writeInt32LE: write_int32_le
|
||||||
|
, writeFloatLE: write_float_le
|
||||||
|
, writeDoubleLE: write_double_le
|
||||||
|
, writeUInt16BE: write_uint16_be
|
||||||
|
, writeUInt32BE: write_uint32_be
|
||||||
|
, writeInt16BE: write_int16_be
|
||||||
|
, writeInt32BE: write_int32_be
|
||||||
|
, writeFloatBE: write_float_be
|
||||||
|
, writeDoubleBE: write_double_be
|
||||||
|
}
|
||||||
|
|
||||||
|
var map = require('./mapped.js')
|
||||||
|
|
||||||
|
function write_uint8(target, value, at) {
|
||||||
|
return target[at] = value
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_int8(target, value, at) {
|
||||||
|
return target[at] = value < 0 ? value + 0x100 : value
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_uint16_le(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setUint16(at + target.byteOffset, value, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_uint32_le(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setUint32(at + target.byteOffset, value, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_int16_le(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setInt16(at + target.byteOffset, value, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_int32_le(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setInt32(at + target.byteOffset, value, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_float_le(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setFloat32(at + target.byteOffset, value, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_double_le(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setFloat64(at + target.byteOffset, value, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_uint16_be(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setUint16(at + target.byteOffset, value, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_uint32_be(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setUint32(at + target.byteOffset, value, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_int16_be(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setInt16(at + target.byteOffset, value, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_int32_be(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setInt32(at + target.byteOffset, value, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_float_be(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setFloat32(at + target.byteOffset, value, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_double_be(target, value, at) {
|
||||||
|
var dv = map.get(target);
|
||||||
|
return dv.setFloat64(at + target.byteOffset, value, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
},{"./mapped.js":11}],11:[function(require,module,exports){
|
||||||
|
var proto
|
||||||
|
, map
|
||||||
|
|
||||||
|
module.exports = proto = {}
|
||||||
|
|
||||||
|
map = typeof WeakMap === 'undefined' ? null : new WeakMap
|
||||||
|
|
||||||
|
proto.get = !map ? no_weakmap_get : get
|
||||||
|
|
||||||
|
function no_weakmap_get(target) {
|
||||||
|
return new DataView(target.buffer, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
function get(target) {
|
||||||
|
var out = map.get(target.buffer)
|
||||||
|
if(!out) {
|
||||||
|
map.set(target.buffer, out = new DataView(target.buffer, 0))
|
||||||
|
}
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
},{}],2:[function(require,module,exports){
|
||||||
|
module.exports = from
|
||||||
|
|
||||||
|
var base64 = require('base64-js')
|
||||||
|
|
||||||
|
var decoders = {
|
||||||
|
hex: from_hex
|
||||||
|
, utf8: from_utf
|
||||||
|
, base64: from_base64
|
||||||
|
}
|
||||||
|
|
||||||
|
function from(source, encoding) {
|
||||||
|
if(Array.isArray(source)) {
|
||||||
|
return new Uint8Array(source)
|
||||||
|
}
|
||||||
|
|
||||||
|
return decoders[encoding || 'utf8'](source)
|
||||||
|
}
|
||||||
|
|
||||||
|
function from_hex(str) {
|
||||||
|
var size = str.length / 2
|
||||||
|
, buf = new Uint8Array(size)
|
||||||
|
, character = ''
|
||||||
|
|
||||||
|
for(var i = 0, len = str.length; i < len; ++i) {
|
||||||
|
character += str.charAt(i)
|
||||||
|
|
||||||
|
if(i > 0 && (i % 2) === 1) {
|
||||||
|
buf[i>>>1] = parseInt(character, 16)
|
||||||
|
character = ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf
|
||||||
|
}
|
||||||
|
|
||||||
|
function from_utf(str) {
|
||||||
|
var bytes = []
|
||||||
|
, tmp
|
||||||
|
, ch
|
||||||
|
|
||||||
|
for(var i = 0, len = str.length; i < len; ++i) {
|
||||||
|
ch = str.charCodeAt(i)
|
||||||
|
if(ch & 0x80) {
|
||||||
|
tmp = encodeURIComponent(str.charAt(i)).substr(1).split('%')
|
||||||
|
for(var j = 0, jlen = tmp.length; j < jlen; ++j) {
|
||||||
|
bytes[bytes.length] = parseInt(tmp[j], 16)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
bytes[bytes.length] = ch
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Uint8Array(bytes)
|
||||||
|
}
|
||||||
|
|
||||||
|
function from_base64(str) {
|
||||||
|
return new Uint8Array(base64.toByteArray(str))
|
||||||
|
}
|
||||||
|
|
||||||
|
},{"base64-js":12}],3:[function(require,module,exports){
|
||||||
|
module.exports = to
|
||||||
|
|
||||||
|
var base64 = require('base64-js')
|
||||||
|
, toutf8 = require('to-utf8')
|
||||||
|
|
||||||
|
var encoders = {
|
||||||
|
hex: to_hex
|
||||||
|
, utf8: to_utf
|
||||||
|
, base64: to_base64
|
||||||
|
}
|
||||||
|
|
||||||
|
function to(buf, encoding) {
|
||||||
|
return encoders[encoding || 'utf8'](buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
function to_hex(buf) {
|
||||||
|
var str = ''
|
||||||
|
, byt
|
||||||
|
|
||||||
|
for(var i = 0, len = buf.length; i < len; ++i) {
|
||||||
|
byt = buf[i]
|
||||||
|
str += ((byt & 0xF0) >>> 4).toString(16)
|
||||||
|
str += (byt & 0x0F).toString(16)
|
||||||
|
}
|
||||||
|
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
|
||||||
|
function to_utf(buf) {
|
||||||
|
return toutf8(buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
function to_base64(buf) {
|
||||||
|
return base64.fromByteArray(buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
},{"base64-js":12,"to-utf8":13}],12:[function(require,module,exports){
|
||||||
|
(function (exports) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
||||||
|
|
||||||
|
function b64ToByteArray(b64) {
|
||||||
|
var i, j, l, tmp, placeHolders, arr;
|
||||||
|
|
||||||
|
if (b64.length % 4 > 0) {
|
||||||
|
throw 'Invalid string. Length must be a multiple of 4';
|
||||||
|
}
|
||||||
|
|
||||||
|
// the number of equal signs (place holders)
|
||||||
|
// if there are two placeholders, than the two characters before it
|
||||||
|
// represent one byte
|
||||||
|
// if there is only one, then the three characters before it represent 2 bytes
|
||||||
|
// this is just a cheap hack to not do indexOf twice
|
||||||
|
placeHolders = b64.indexOf('=');
|
||||||
|
placeHolders = placeHolders > 0 ? b64.length - placeHolders : 0;
|
||||||
|
|
||||||
|
// base64 is 4/3 + up to two characters of the original data
|
||||||
|
arr = [];//new Uint8Array(b64.length * 3 / 4 - placeHolders);
|
||||||
|
|
||||||
|
// if there are placeholders, only get up to the last complete 4 chars
|
||||||
|
l = placeHolders > 0 ? b64.length - 4 : b64.length;
|
||||||
|
|
||||||
|
for (i = 0, j = 0; i < l; i += 4, j += 3) {
|
||||||
|
tmp = (lookup.indexOf(b64[i]) << 18) | (lookup.indexOf(b64[i + 1]) << 12) | (lookup.indexOf(b64[i + 2]) << 6) | lookup.indexOf(b64[i + 3]);
|
||||||
|
arr.push((tmp & 0xFF0000) >> 16);
|
||||||
|
arr.push((tmp & 0xFF00) >> 8);
|
||||||
|
arr.push(tmp & 0xFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (placeHolders === 2) {
|
||||||
|
tmp = (lookup.indexOf(b64[i]) << 2) | (lookup.indexOf(b64[i + 1]) >> 4);
|
||||||
|
arr.push(tmp & 0xFF);
|
||||||
|
} else if (placeHolders === 1) {
|
||||||
|
tmp = (lookup.indexOf(b64[i]) << 10) | (lookup.indexOf(b64[i + 1]) << 4) | (lookup.indexOf(b64[i + 2]) >> 2);
|
||||||
|
arr.push((tmp >> 8) & 0xFF);
|
||||||
|
arr.push(tmp & 0xFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
function uint8ToBase64(uint8) {
|
||||||
|
var i,
|
||||||
|
extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
|
||||||
|
output = "",
|
||||||
|
temp, length;
|
||||||
|
|
||||||
|
function tripletToBase64 (num) {
|
||||||
|
return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];
|
||||||
|
};
|
||||||
|
|
||||||
|
// go through the array every three bytes, we'll deal with trailing stuff later
|
||||||
|
for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
|
||||||
|
temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);
|
||||||
|
output += tripletToBase64(temp);
|
||||||
|
}
|
||||||
|
|
||||||
|
// pad the end with zeros, but make sure to not forget the extra bytes
|
||||||
|
switch (extraBytes) {
|
||||||
|
case 1:
|
||||||
|
temp = uint8[uint8.length - 1];
|
||||||
|
output += lookup[temp >> 2];
|
||||||
|
output += lookup[(temp << 4) & 0x3F];
|
||||||
|
output += '==';
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]);
|
||||||
|
output += lookup[temp >> 10];
|
||||||
|
output += lookup[(temp >> 4) & 0x3F];
|
||||||
|
output += lookup[(temp << 2) & 0x3F];
|
||||||
|
output += '=';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports.toByteArray = b64ToByteArray;
|
||||||
|
module.exports.fromByteArray = uint8ToBase64;
|
||||||
|
}());
|
||||||
|
|
||||||
|
},{}],13:[function(require,module,exports){
|
||||||
|
module.exports = to_utf8
|
||||||
|
|
||||||
|
var out = []
|
||||||
|
, col = []
|
||||||
|
, fcc = String.fromCharCode
|
||||||
|
, mask = [0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01]
|
||||||
|
, unmask = [
|
||||||
|
0x00
|
||||||
|
, 0x01
|
||||||
|
, 0x02 | 0x01
|
||||||
|
, 0x04 | 0x02 | 0x01
|
||||||
|
, 0x08 | 0x04 | 0x02 | 0x01
|
||||||
|
, 0x10 | 0x08 | 0x04 | 0x02 | 0x01
|
||||||
|
, 0x20 | 0x10 | 0x08 | 0x04 | 0x02 | 0x01
|
||||||
|
, 0x40 | 0x20 | 0x10 | 0x08 | 0x04 | 0x02 | 0x01
|
||||||
|
]
|
||||||
|
|
||||||
|
function to_utf8(bytes, start, end) {
|
||||||
|
start = start === undefined ? 0 : start
|
||||||
|
end = end === undefined ? bytes.length : end
|
||||||
|
|
||||||
|
var idx = 0
|
||||||
|
, hi = 0x80
|
||||||
|
, collecting = 0
|
||||||
|
, pos
|
||||||
|
, by
|
||||||
|
|
||||||
|
col.length =
|
||||||
|
out.length = 0
|
||||||
|
|
||||||
|
while(idx < bytes.length) {
|
||||||
|
by = bytes[idx]
|
||||||
|
if(!collecting && by & hi) {
|
||||||
|
pos = find_pad_position(by)
|
||||||
|
collecting += pos
|
||||||
|
if(pos < 8) {
|
||||||
|
col[col.length] = by & unmask[6 - pos]
|
||||||
|
}
|
||||||
|
} else if(collecting) {
|
||||||
|
col[col.length] = by & unmask[6]
|
||||||
|
--collecting
|
||||||
|
if(!collecting && col.length) {
|
||||||
|
out[out.length] = fcc(reduced(col, pos))
|
||||||
|
col.length = 0
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out[out.length] = fcc(by)
|
||||||
|
}
|
||||||
|
++idx
|
||||||
|
}
|
||||||
|
if(col.length && !collecting) {
|
||||||
|
out[out.length] = fcc(reduced(col, pos))
|
||||||
|
col.length = 0
|
||||||
|
}
|
||||||
|
return out.join('')
|
||||||
|
}
|
||||||
|
|
||||||
|
function find_pad_position(byt) {
|
||||||
|
for(var i = 0; i < 7; ++i) {
|
||||||
|
if(!(byt & mask[i])) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
|
||||||
|
function reduced(list) {
|
||||||
|
var out = 0
|
||||||
|
for(var i = 0, len = list.length; i < len; ++i) {
|
||||||
|
out |= list[i] << ((len - i - 1) * 6)
|
||||||
|
}
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
},{}]},{},[1])(1)
|
||||||
|
});
|
||||||
|
;
|
||||||
723
externals/crossroads.js
vendored
Normal file
@@ -0,0 +1,723 @@
|
|||||||
|
/** @license
|
||||||
|
* crossroads <http://millermedeiros.github.com/crossroads.js/>
|
||||||
|
* Author: Miller Medeiros | MIT License
|
||||||
|
* v0.12.2 (2015/07/31 18:37)
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
var factory = function (signals) {
|
||||||
|
|
||||||
|
var crossroads,
|
||||||
|
_hasOptionalGroupBug,
|
||||||
|
UNDEF;
|
||||||
|
|
||||||
|
// Helpers -----------
|
||||||
|
//====================
|
||||||
|
|
||||||
|
// IE 7-8 capture optional groups as empty strings while other browsers
|
||||||
|
// capture as `undefined`
|
||||||
|
_hasOptionalGroupBug = (/t(.+)?/).exec('t')[1] === '';
|
||||||
|
|
||||||
|
function arrayIndexOf(arr, val) {
|
||||||
|
if (arr.indexOf) {
|
||||||
|
return arr.indexOf(val);
|
||||||
|
} else {
|
||||||
|
//Array.indexOf doesn't work on IE 6-7
|
||||||
|
var n = arr.length;
|
||||||
|
while (n--) {
|
||||||
|
if (arr[n] === val) {
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function arrayRemove(arr, item) {
|
||||||
|
var i = arrayIndexOf(arr, item);
|
||||||
|
if (i !== -1) {
|
||||||
|
arr.splice(i, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function isKind(val, kind) {
|
||||||
|
return '[object '+ kind +']' === Object.prototype.toString.call(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
function isRegExp(val) {
|
||||||
|
return isKind(val, 'RegExp');
|
||||||
|
}
|
||||||
|
|
||||||
|
function isArray(val) {
|
||||||
|
return isKind(val, 'Array');
|
||||||
|
}
|
||||||
|
|
||||||
|
function isFunction(val) {
|
||||||
|
return typeof val === 'function';
|
||||||
|
}
|
||||||
|
|
||||||
|
//borrowed from AMD-utils
|
||||||
|
function typecastValue(val) {
|
||||||
|
var r;
|
||||||
|
if (val === null || val === 'null') {
|
||||||
|
r = null;
|
||||||
|
} else if (val === 'true') {
|
||||||
|
r = true;
|
||||||
|
} else if (val === 'false') {
|
||||||
|
r = false;
|
||||||
|
} else if (val === UNDEF || val === 'undefined') {
|
||||||
|
r = UNDEF;
|
||||||
|
} else if (val === '' || isNaN(val)) {
|
||||||
|
r = val;
|
||||||
|
} else {
|
||||||
|
r = parseFloat(val);
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
function typecastArrayValues(values) {
|
||||||
|
var n = values.length,
|
||||||
|
result = [];
|
||||||
|
while (n--) {
|
||||||
|
result[n] = typecastValue(values[n]);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// borrowed from MOUT
|
||||||
|
function decodeQueryString(queryStr, shouldTypecast) {
|
||||||
|
var queryArr = (queryStr || '').replace('?', '').split('&'),
|
||||||
|
reg = /([^=]+)=(.+)/,
|
||||||
|
i = -1,
|
||||||
|
obj = {},
|
||||||
|
equalIndex, cur, pValue, pName;
|
||||||
|
|
||||||
|
while ((cur = queryArr[++i])) {
|
||||||
|
equalIndex = cur.indexOf('=');
|
||||||
|
pName = cur.substring(0, equalIndex);
|
||||||
|
pValue = decodeURIComponent(cur.substring(equalIndex + 1));
|
||||||
|
if (shouldTypecast !== false) {
|
||||||
|
pValue = typecastValue(pValue);
|
||||||
|
}
|
||||||
|
if (pName in obj){
|
||||||
|
if(isArray(obj[pName])){
|
||||||
|
obj[pName].push(pValue);
|
||||||
|
} else {
|
||||||
|
obj[pName] = [obj[pName], pValue];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
obj[pName] = pValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Crossroads --------
|
||||||
|
//====================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
*/
|
||||||
|
function Crossroads() {
|
||||||
|
this.bypassed = new signals.Signal();
|
||||||
|
this.routed = new signals.Signal();
|
||||||
|
this._routes = [];
|
||||||
|
this._prevRoutes = [];
|
||||||
|
this._piped = [];
|
||||||
|
this.resetState();
|
||||||
|
}
|
||||||
|
|
||||||
|
Crossroads.prototype = {
|
||||||
|
|
||||||
|
greedy : false,
|
||||||
|
|
||||||
|
greedyEnabled : true,
|
||||||
|
|
||||||
|
ignoreCase : true,
|
||||||
|
|
||||||
|
ignoreState : false,
|
||||||
|
|
||||||
|
shouldTypecast : false,
|
||||||
|
|
||||||
|
normalizeFn : null,
|
||||||
|
|
||||||
|
resetState : function(){
|
||||||
|
this._prevRoutes.length = 0;
|
||||||
|
this._prevMatchedRequest = null;
|
||||||
|
this._prevBypassedRequest = null;
|
||||||
|
},
|
||||||
|
|
||||||
|
create : function () {
|
||||||
|
return new Crossroads();
|
||||||
|
},
|
||||||
|
|
||||||
|
addRoute : function (pattern, callback, priority) {
|
||||||
|
var route = new Route(pattern, callback, priority, this);
|
||||||
|
this._sortedInsert(route);
|
||||||
|
return route;
|
||||||
|
},
|
||||||
|
|
||||||
|
removeRoute : function (route) {
|
||||||
|
arrayRemove(this._routes, route);
|
||||||
|
route._destroy();
|
||||||
|
},
|
||||||
|
|
||||||
|
removeAllRoutes : function () {
|
||||||
|
var n = this.getNumRoutes();
|
||||||
|
while (n--) {
|
||||||
|
this._routes[n]._destroy();
|
||||||
|
}
|
||||||
|
this._routes.length = 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
parse : function (request, defaultArgs) {
|
||||||
|
request = request || '';
|
||||||
|
defaultArgs = defaultArgs || [];
|
||||||
|
|
||||||
|
// should only care about different requests if ignoreState isn't true
|
||||||
|
if ( !this.ignoreState &&
|
||||||
|
(request === this._prevMatchedRequest ||
|
||||||
|
request === this._prevBypassedRequest) ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var routes = this._getMatchedRoutes(request),
|
||||||
|
i = 0,
|
||||||
|
n = routes.length,
|
||||||
|
cur;
|
||||||
|
|
||||||
|
if (n) {
|
||||||
|
this._prevMatchedRequest = request;
|
||||||
|
|
||||||
|
this._notifyPrevRoutes(routes, request);
|
||||||
|
this._prevRoutes = routes;
|
||||||
|
//should be incremental loop, execute routes in order
|
||||||
|
while (i < n) {
|
||||||
|
cur = routes[i];
|
||||||
|
cur.route.matched.dispatch.apply(cur.route.matched, defaultArgs.concat(cur.params));
|
||||||
|
cur.isFirst = !i;
|
||||||
|
this.routed.dispatch.apply(this.routed, defaultArgs.concat([request, cur]));
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this._prevBypassedRequest = request;
|
||||||
|
this.bypassed.dispatch.apply(this.bypassed, defaultArgs.concat([request]));
|
||||||
|
}
|
||||||
|
|
||||||
|
this._pipeParse(request, defaultArgs);
|
||||||
|
},
|
||||||
|
|
||||||
|
_notifyPrevRoutes : function(matchedRoutes, request) {
|
||||||
|
var i = 0, prev;
|
||||||
|
while (prev = this._prevRoutes[i++]) {
|
||||||
|
//check if switched exist since route may be disposed
|
||||||
|
if(prev.route.switched && this._didSwitch(prev.route, matchedRoutes)) {
|
||||||
|
prev.route.switched.dispatch(request);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_didSwitch : function (route, matchedRoutes){
|
||||||
|
var matched,
|
||||||
|
i = 0;
|
||||||
|
while (matched = matchedRoutes[i++]) {
|
||||||
|
// only dispatch switched if it is going to a different route
|
||||||
|
if (matched.route === route) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
_pipeParse : function(request, defaultArgs) {
|
||||||
|
var i = 0, route;
|
||||||
|
while (route = this._piped[i++]) {
|
||||||
|
route.parse(request, defaultArgs);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
getNumRoutes : function () {
|
||||||
|
return this._routes.length;
|
||||||
|
},
|
||||||
|
|
||||||
|
_sortedInsert : function (route) {
|
||||||
|
//simplified insertion sort
|
||||||
|
var routes = this._routes,
|
||||||
|
n = routes.length;
|
||||||
|
do { --n; } while (routes[n] && route._priority <= routes[n]._priority);
|
||||||
|
routes.splice(n+1, 0, route);
|
||||||
|
},
|
||||||
|
|
||||||
|
_getMatchedRoutes : function (request) {
|
||||||
|
var res = [],
|
||||||
|
routes = this._routes,
|
||||||
|
n = routes.length,
|
||||||
|
route;
|
||||||
|
//should be decrement loop since higher priorities are added at the end of array
|
||||||
|
while (route = routes[--n]) {
|
||||||
|
if ((!res.length || this.greedy || route.greedy) && route.match(request)) {
|
||||||
|
res.push({
|
||||||
|
route : route,
|
||||||
|
params : route._getParamsArray(request)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (!this.greedyEnabled && res.length) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
},
|
||||||
|
|
||||||
|
pipe : function (otherRouter) {
|
||||||
|
this._piped.push(otherRouter);
|
||||||
|
},
|
||||||
|
|
||||||
|
unpipe : function (otherRouter) {
|
||||||
|
arrayRemove(this._piped, otherRouter);
|
||||||
|
},
|
||||||
|
|
||||||
|
toString : function () {
|
||||||
|
return '[crossroads numRoutes:'+ this.getNumRoutes() +']';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//"static" instance
|
||||||
|
crossroads = new Crossroads();
|
||||||
|
crossroads.VERSION = '0.12.2';
|
||||||
|
|
||||||
|
crossroads.NORM_AS_ARRAY = function (req, vals) {
|
||||||
|
return [vals.vals_];
|
||||||
|
};
|
||||||
|
|
||||||
|
crossroads.NORM_AS_OBJECT = function (req, vals) {
|
||||||
|
return [vals];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Route --------------
|
||||||
|
//=====================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
*/
|
||||||
|
function Route(pattern, callback, priority, router) {
|
||||||
|
var isRegexPattern = isRegExp(pattern),
|
||||||
|
patternLexer = router.patternLexer;
|
||||||
|
this._router = router;
|
||||||
|
this._pattern = pattern;
|
||||||
|
this._paramsIds = isRegexPattern? null : patternLexer.getParamIds(pattern);
|
||||||
|
this._optionalParamsIds = isRegexPattern? null : patternLexer.getOptionalParamsIds(pattern);
|
||||||
|
this._matchRegexp = isRegexPattern? pattern : patternLexer.compilePattern(pattern, router.ignoreCase);
|
||||||
|
this.matched = new signals.Signal();
|
||||||
|
this.switched = new signals.Signal();
|
||||||
|
if (callback) {
|
||||||
|
this.matched.add(callback);
|
||||||
|
}
|
||||||
|
this._priority = priority || 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Route.prototype = {
|
||||||
|
|
||||||
|
greedy : false,
|
||||||
|
|
||||||
|
rules : void(0),
|
||||||
|
|
||||||
|
match : function (request) {
|
||||||
|
request = request || '';
|
||||||
|
return this._matchRegexp.test(request) && this._validateParams(request); //validate params even if regexp because of `request_` rule.
|
||||||
|
},
|
||||||
|
|
||||||
|
_validateParams : function (request) {
|
||||||
|
var rules = this.rules,
|
||||||
|
values = this._getParamsObject(request),
|
||||||
|
key;
|
||||||
|
for (key in rules) {
|
||||||
|
// normalize_ isn't a validation rule... (#39)
|
||||||
|
if(key !== 'normalize_' && rules.hasOwnProperty(key) && ! this._isValidParam(request, key, values)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
_isValidParam : function (request, prop, values) {
|
||||||
|
var validationRule = this.rules[prop],
|
||||||
|
val = values[prop],
|
||||||
|
isValid = false,
|
||||||
|
isQuery = (prop.indexOf('?') === 0);
|
||||||
|
|
||||||
|
if (val == null && this._optionalParamsIds && arrayIndexOf(this._optionalParamsIds, prop) !== -1) {
|
||||||
|
isValid = true;
|
||||||
|
}
|
||||||
|
else if (isRegExp(validationRule)) {
|
||||||
|
if (isQuery) {
|
||||||
|
val = values[prop +'_']; //use raw string
|
||||||
|
}
|
||||||
|
isValid = validationRule.test(val);
|
||||||
|
}
|
||||||
|
else if (isArray(validationRule)) {
|
||||||
|
if (isQuery) {
|
||||||
|
val = values[prop +'_']; //use raw string
|
||||||
|
}
|
||||||
|
isValid = this._isValidArrayRule(validationRule, val);
|
||||||
|
}
|
||||||
|
else if (isFunction(validationRule)) {
|
||||||
|
isValid = validationRule(val, request, values);
|
||||||
|
}
|
||||||
|
|
||||||
|
return isValid; //fail silently if validationRule is from an unsupported type
|
||||||
|
},
|
||||||
|
|
||||||
|
_isValidArrayRule : function (arr, val) {
|
||||||
|
if (! this._router.ignoreCase) {
|
||||||
|
return arrayIndexOf(arr, val) !== -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof val === 'string') {
|
||||||
|
val = val.toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
var n = arr.length,
|
||||||
|
item,
|
||||||
|
compareVal;
|
||||||
|
|
||||||
|
while (n--) {
|
||||||
|
item = arr[n];
|
||||||
|
compareVal = (typeof item === 'string')? item.toLowerCase() : item;
|
||||||
|
if (compareVal === val) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
_getParamsObject : function (request) {
|
||||||
|
var shouldTypecast = this._router.shouldTypecast,
|
||||||
|
values = this._router.patternLexer.getParamValues(request, this._matchRegexp, shouldTypecast),
|
||||||
|
o = {},
|
||||||
|
n = values.length,
|
||||||
|
param, val;
|
||||||
|
while (n--) {
|
||||||
|
val = values[n];
|
||||||
|
if (this._paramsIds) {
|
||||||
|
param = this._paramsIds[n];
|
||||||
|
if (param.indexOf('?') === 0 && val) {
|
||||||
|
//make a copy of the original string so array and
|
||||||
|
//RegExp validation can be applied properly
|
||||||
|
o[param +'_'] = val;
|
||||||
|
//update vals_ array as well since it will be used
|
||||||
|
//during dispatch
|
||||||
|
val = decodeQueryString(val, shouldTypecast);
|
||||||
|
values[n] = val;
|
||||||
|
}
|
||||||
|
// IE will capture optional groups as empty strings while other
|
||||||
|
// browsers will capture `undefined` so normalize behavior.
|
||||||
|
// see: #gh-58, #gh-59, #gh-60
|
||||||
|
if ( _hasOptionalGroupBug && val === '' && arrayIndexOf(this._optionalParamsIds, param) !== -1 ) {
|
||||||
|
val = void(0);
|
||||||
|
values[n] = val;
|
||||||
|
}
|
||||||
|
o[param] = val;
|
||||||
|
}
|
||||||
|
//alias to paths and for RegExp pattern
|
||||||
|
o[n] = val;
|
||||||
|
}
|
||||||
|
o.request_ = shouldTypecast? typecastValue(request) : request;
|
||||||
|
o.vals_ = values;
|
||||||
|
return o;
|
||||||
|
},
|
||||||
|
|
||||||
|
_getParamsArray : function (request) {
|
||||||
|
var norm = this.rules? this.rules.normalize_ : null,
|
||||||
|
params;
|
||||||
|
norm = norm || this._router.normalizeFn; // default normalize
|
||||||
|
if (norm && isFunction(norm)) {
|
||||||
|
params = norm(request, this._getParamsObject(request));
|
||||||
|
} else {
|
||||||
|
params = this._getParamsObject(request).vals_;
|
||||||
|
}
|
||||||
|
return params;
|
||||||
|
},
|
||||||
|
|
||||||
|
interpolate : function(replacements) {
|
||||||
|
var str = this._router.patternLexer.interpolate(this._pattern, replacements);
|
||||||
|
if (! this._validateParams(str) ) {
|
||||||
|
throw new Error('Generated string doesn\'t validate against `Route.rules`.');
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
},
|
||||||
|
|
||||||
|
dispose : function () {
|
||||||
|
this._router.removeRoute(this);
|
||||||
|
},
|
||||||
|
|
||||||
|
_destroy : function () {
|
||||||
|
this.matched.dispose();
|
||||||
|
this.switched.dispose();
|
||||||
|
this.matched = this.switched = this._pattern = this._matchRegexp = null;
|
||||||
|
},
|
||||||
|
|
||||||
|
toString : function () {
|
||||||
|
return '[Route pattern:"'+ this._pattern +'", numListeners:'+ this.matched.getNumListeners() +']';
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Pattern Lexer ------
|
||||||
|
//=====================
|
||||||
|
|
||||||
|
Crossroads.prototype.patternLexer = (function () {
|
||||||
|
|
||||||
|
var
|
||||||
|
//match chars that should be escaped on string regexp
|
||||||
|
ESCAPE_CHARS_REGEXP = /[\\.+*?\^$\[\](){}\/'#]/g,
|
||||||
|
|
||||||
|
//trailing slashes (begin/end of string)
|
||||||
|
LOOSE_SLASHES_REGEXP = /^\/|\/$/g,
|
||||||
|
LEGACY_SLASHES_REGEXP = /\/$/g,
|
||||||
|
|
||||||
|
//params - everything between `{ }` or `: :`
|
||||||
|
PARAMS_REGEXP = /(?:\{|:)([^}:]+)(?:\}|:)/g,
|
||||||
|
|
||||||
|
//used to save params during compile (avoid escaping things that
|
||||||
|
//shouldn't be escaped).
|
||||||
|
TOKENS = {
|
||||||
|
'OS' : {
|
||||||
|
//optional slashes
|
||||||
|
//slash between `::` or `}:` or `\w:` or `:{?` or `}{?` or `\w{?`
|
||||||
|
rgx : /([:}]|\w(?=\/))\/?(:|(?:\{\?))/g,
|
||||||
|
save : '$1{{id}}$2',
|
||||||
|
res : '\\/?'
|
||||||
|
},
|
||||||
|
'RS' : {
|
||||||
|
//required slashes
|
||||||
|
//used to insert slash between `:{` and `}{`
|
||||||
|
rgx : /([:}])\/?(\{)/g,
|
||||||
|
save : '$1{{id}}$2',
|
||||||
|
res : '\\/'
|
||||||
|
},
|
||||||
|
'RQ' : {
|
||||||
|
//required query string - everything in between `{? }`
|
||||||
|
rgx : /\{\?([^}]+)\}/g,
|
||||||
|
//everything from `?` till `#` or end of string
|
||||||
|
res : '\\?([^#]+)'
|
||||||
|
},
|
||||||
|
'OQ' : {
|
||||||
|
//optional query string - everything in between `:? :`
|
||||||
|
rgx : /:\?([^:]+):/g,
|
||||||
|
//everything from `?` till `#` or end of string
|
||||||
|
res : '(?:\\?([^#]*))?'
|
||||||
|
},
|
||||||
|
'OR' : {
|
||||||
|
//optional rest - everything in between `: *:`
|
||||||
|
rgx : /:([^:]+)\*:/g,
|
||||||
|
res : '(.*)?' // optional group to avoid passing empty string as captured
|
||||||
|
},
|
||||||
|
'RR' : {
|
||||||
|
//rest param - everything in between `{ *}`
|
||||||
|
rgx : /\{([^}]+)\*\}/g,
|
||||||
|
res : '(.+)'
|
||||||
|
},
|
||||||
|
// required/optional params should come after rest segments
|
||||||
|
'RP' : {
|
||||||
|
//required params - everything between `{ }`
|
||||||
|
rgx : /\{([^}]+)\}/g,
|
||||||
|
res : '([^\\/?]+)'
|
||||||
|
},
|
||||||
|
'OP' : {
|
||||||
|
//optional params - everything between `: :`
|
||||||
|
rgx : /:([^:]+):/g,
|
||||||
|
res : '([^\\/?]+)?\/?'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
LOOSE_SLASH = 1,
|
||||||
|
STRICT_SLASH = 2,
|
||||||
|
LEGACY_SLASH = 3,
|
||||||
|
|
||||||
|
_slashMode = LOOSE_SLASH;
|
||||||
|
|
||||||
|
|
||||||
|
function precompileTokens(){
|
||||||
|
var key, cur;
|
||||||
|
for (key in TOKENS) {
|
||||||
|
if (TOKENS.hasOwnProperty(key)) {
|
||||||
|
cur = TOKENS[key];
|
||||||
|
cur.id = '__CR_'+ key +'__';
|
||||||
|
cur.save = ('save' in cur)? cur.save.replace('{{id}}', cur.id) : cur.id;
|
||||||
|
cur.rRestore = new RegExp(cur.id, 'g');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
precompileTokens();
|
||||||
|
|
||||||
|
|
||||||
|
function captureVals(regex, pattern) {
|
||||||
|
var vals = [], match;
|
||||||
|
// very important to reset lastIndex since RegExp can have "g" flag
|
||||||
|
// and multiple runs might affect the result, specially if matching
|
||||||
|
// same string multiple times on IE 7-8
|
||||||
|
regex.lastIndex = 0;
|
||||||
|
while (match = regex.exec(pattern)) {
|
||||||
|
vals.push(match[1]);
|
||||||
|
}
|
||||||
|
return vals;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getParamIds(pattern) {
|
||||||
|
return captureVals(PARAMS_REGEXP, pattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getOptionalParamsIds(pattern) {
|
||||||
|
return captureVals(TOKENS.OP.rgx, pattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
function compilePattern(pattern, ignoreCase) {
|
||||||
|
pattern = pattern || '';
|
||||||
|
|
||||||
|
if(pattern){
|
||||||
|
if (_slashMode === LOOSE_SLASH) {
|
||||||
|
pattern = pattern.replace(LOOSE_SLASHES_REGEXP, '');
|
||||||
|
}
|
||||||
|
else if (_slashMode === LEGACY_SLASH) {
|
||||||
|
pattern = pattern.replace(LEGACY_SLASHES_REGEXP, '');
|
||||||
|
}
|
||||||
|
|
||||||
|
//save tokens
|
||||||
|
pattern = replaceTokens(pattern, 'rgx', 'save');
|
||||||
|
//regexp escape
|
||||||
|
pattern = pattern.replace(ESCAPE_CHARS_REGEXP, '\\$&');
|
||||||
|
//restore tokens
|
||||||
|
pattern = replaceTokens(pattern, 'rRestore', 'res');
|
||||||
|
|
||||||
|
if (_slashMode === LOOSE_SLASH) {
|
||||||
|
pattern = '\\/?'+ pattern;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_slashMode !== STRICT_SLASH) {
|
||||||
|
//single slash is treated as empty and end slash is optional
|
||||||
|
pattern += '\\/?';
|
||||||
|
}
|
||||||
|
return new RegExp('^'+ pattern + '$', ignoreCase? 'i' : '');
|
||||||
|
}
|
||||||
|
|
||||||
|
function replaceTokens(pattern, regexpName, replaceName) {
|
||||||
|
var cur, key;
|
||||||
|
for (key in TOKENS) {
|
||||||
|
if (TOKENS.hasOwnProperty(key)) {
|
||||||
|
cur = TOKENS[key];
|
||||||
|
pattern = pattern.replace(cur[regexpName], cur[replaceName]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return pattern;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getParamValues(request, regexp, shouldTypecast) {
|
||||||
|
var vals = regexp.exec(request);
|
||||||
|
if (vals) {
|
||||||
|
vals.shift();
|
||||||
|
if (shouldTypecast) {
|
||||||
|
vals = typecastArrayValues(vals);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return vals;
|
||||||
|
}
|
||||||
|
|
||||||
|
function interpolate(pattern, replacements) {
|
||||||
|
// default to an empty object because pattern might have just
|
||||||
|
// optional arguments
|
||||||
|
replacements = replacements || {};
|
||||||
|
if (typeof pattern !== 'string') {
|
||||||
|
throw new Error('Route pattern should be a string.');
|
||||||
|
}
|
||||||
|
|
||||||
|
var replaceFn = function(match, prop){
|
||||||
|
var val;
|
||||||
|
prop = (prop.substr(0, 1) === '?')? prop.substr(1) : prop;
|
||||||
|
if (replacements[prop] != null) {
|
||||||
|
if (typeof replacements[prop] === 'object') {
|
||||||
|
var queryParts = [], rep;
|
||||||
|
for(var key in replacements[prop]) {
|
||||||
|
rep = replacements[prop][key];
|
||||||
|
if (isArray(rep)) {
|
||||||
|
for (var k in rep) {
|
||||||
|
if ( key.slice(-2) == '[]' ) {
|
||||||
|
queryParts.push(encodeURI(key.slice(0, -2)) + '[]=' + encodeURI(rep[k]));
|
||||||
|
} else {
|
||||||
|
queryParts.push(encodeURI(key + '=' + rep[k]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
queryParts.push(encodeURI(key + '=' + rep));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val = '?' + queryParts.join('&');
|
||||||
|
} else {
|
||||||
|
// make sure value is a string see #gh-54
|
||||||
|
val = String(replacements[prop]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (match.indexOf('*') === -1 && val.indexOf('/') !== -1) {
|
||||||
|
throw new Error('Invalid value "'+ val +'" for segment "'+ match +'".');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (match.indexOf('{') !== -1) {
|
||||||
|
throw new Error('The segment '+ match +' is required.');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
val = '';
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (! TOKENS.OS.trail) {
|
||||||
|
TOKENS.OS.trail = new RegExp('(?:'+ TOKENS.OS.id +')+$');
|
||||||
|
}
|
||||||
|
|
||||||
|
return pattern
|
||||||
|
.replace(TOKENS.OS.rgx, TOKENS.OS.save)
|
||||||
|
.replace(PARAMS_REGEXP, replaceFn)
|
||||||
|
.replace(TOKENS.OS.trail, '') // remove trailing
|
||||||
|
.replace(TOKENS.OS.rRestore, '/'); // add slash between segments
|
||||||
|
}
|
||||||
|
|
||||||
|
//API
|
||||||
|
return {
|
||||||
|
strict : function(){
|
||||||
|
_slashMode = STRICT_SLASH;
|
||||||
|
},
|
||||||
|
loose : function(){
|
||||||
|
_slashMode = LOOSE_SLASH;
|
||||||
|
},
|
||||||
|
legacy : function(){
|
||||||
|
_slashMode = LEGACY_SLASH;
|
||||||
|
},
|
||||||
|
getParamIds : getParamIds,
|
||||||
|
getOptionalParamsIds : getOptionalParamsIds,
|
||||||
|
getParamValues : getParamValues,
|
||||||
|
compilePattern : compilePattern,
|
||||||
|
interpolate : interpolate
|
||||||
|
};
|
||||||
|
|
||||||
|
}());
|
||||||
|
|
||||||
|
|
||||||
|
return crossroads;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
define(['signals'], factory);
|
||||||
|
} else if (typeof module !== 'undefined' && module.exports) { //Node
|
||||||
|
module.exports = factory(require('signals'));
|
||||||
|
} else {
|
||||||
|
/*jshint sub:true */
|
||||||
|
window['crossroads'] = factory(window['signals']);
|
||||||
|
}
|
||||||
|
|
||||||
|
}());
|
||||||
|
|
||||||
1254
externals/dataTables.colReorder.js
vendored
Normal file
846
externals/dataTables.colResize.js
vendored
Normal file
@@ -0,0 +1,846 @@
|
|||||||
|
/*! ColResize 0.0.10
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @summary ColResize
|
||||||
|
* @description Provide the ability to resize columns in a DataTable
|
||||||
|
* @version 0.0.10
|
||||||
|
* @file dataTables.colResize.js
|
||||||
|
* @author Silvacom Ltd.
|
||||||
|
*
|
||||||
|
* For details please refer to: http://www.datatables.net
|
||||||
|
*
|
||||||
|
* Special thank to everyone who has contributed to this plug in
|
||||||
|
* - dykstrad
|
||||||
|
* - tdillan (for 0.0.3 and 0.0.5 bug fixes)
|
||||||
|
* - kylealonius (for 0.0.8 bug fix)
|
||||||
|
* - the86freak (for 0.0.9 bug fix)
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function (window, document, undefined) {
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* DataTables plug-in API functions test
|
||||||
|
*
|
||||||
|
* This are required by ColResize in order to perform the tasks required, and also keep this
|
||||||
|
* code portable, to be used for other column resize projects with DataTables, if needed.
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
var factory = function ($, DataTable) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Plug-in for DataTables which will resize the columns depending on the handle clicked
|
||||||
|
* @method $.fn.dataTableExt.oApi.fnColResize
|
||||||
|
* @param object oSettings DataTables settings object - automatically added by DataTables!
|
||||||
|
* @param int iCol Take the column to be resized
|
||||||
|
* @returns void
|
||||||
|
*/
|
||||||
|
$.fn.dataTableExt.oApi.fnColResize = function (oSettings, iCol) {
|
||||||
|
var v110 = $.fn.dataTable.Api ? true : false;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Update DataTables' event handlers
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Fire an event so other plug-ins can update */
|
||||||
|
$(oSettings.oInstance).trigger('column-resize', [ oSettings, {
|
||||||
|
"iCol": iCol
|
||||||
|
} ]);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ColResize provides column resize control for DataTables
|
||||||
|
* @class ColResize
|
||||||
|
* @constructor
|
||||||
|
* @param {object} dt DataTables settings object
|
||||||
|
* @param {object} opts ColResize options
|
||||||
|
*/
|
||||||
|
var ColResize = function (dt, opts) {
|
||||||
|
var oDTSettings;
|
||||||
|
|
||||||
|
if ($.fn.dataTable.Api) {
|
||||||
|
oDTSettings = new $.fn.dataTable.Api(dt).settings()[0];
|
||||||
|
}
|
||||||
|
// 1.9 compatibility
|
||||||
|
else if (dt.fnSettings) {
|
||||||
|
// DataTables object, convert to the settings object
|
||||||
|
oDTSettings = dt.fnSettings();
|
||||||
|
}
|
||||||
|
else if (typeof dt === 'string') {
|
||||||
|
// jQuery selector
|
||||||
|
if ($.fn.dataTable.fnIsDataTable($(dt)[0])) {
|
||||||
|
oDTSettings = $(dt).eq(0).dataTable().fnSettings();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (dt.nodeName && dt.nodeName.toLowerCase() === 'table') {
|
||||||
|
// Table node
|
||||||
|
if ($.fn.dataTable.fnIsDataTable(dt.nodeName)) {
|
||||||
|
oDTSettings = $(dt.nodeName).dataTable().fnSettings();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (dt instanceof jQuery) {
|
||||||
|
// jQuery object
|
||||||
|
if ($.fn.dataTable.fnIsDataTable(dt[0])) {
|
||||||
|
oDTSettings = dt.eq(0).dataTable().fnSettings();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// DataTables settings object
|
||||||
|
oDTSettings = dt;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert from camelCase to Hungarian, just as DataTables does
|
||||||
|
if ($.fn.dataTable.camelToHungarian) {
|
||||||
|
$.fn.dataTable.camelToHungarian(ColResize.defaults, opts || {});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* Public class variables
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @namespace Settings object which contains customizable information for ColResize instance
|
||||||
|
*/
|
||||||
|
this.s = {
|
||||||
|
/**
|
||||||
|
* DataTables settings object
|
||||||
|
* @property dt
|
||||||
|
* @type Object
|
||||||
|
* @default null
|
||||||
|
*/
|
||||||
|
"dt": null,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialisation object used for this instance
|
||||||
|
* @property init
|
||||||
|
* @type object
|
||||||
|
* @default {}
|
||||||
|
*/
|
||||||
|
"init": $.extend(true, {}, ColResize.defaults, opts),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @namespace Information used for the mouse drag
|
||||||
|
*/
|
||||||
|
"mouse": {
|
||||||
|
"startX": -1,
|
||||||
|
"startY": -1,
|
||||||
|
"targetIndex": -1,
|
||||||
|
"targetColumn": -1,
|
||||||
|
"neighbourIndex": -1,
|
||||||
|
"neighbourColumn": -1
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Status variable keeping track of mouse down status
|
||||||
|
* @property isMousedown
|
||||||
|
* @type boolean
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
"isMousedown": false
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @namespace Common and useful DOM elements for the class instance
|
||||||
|
*/
|
||||||
|
this.dom = {
|
||||||
|
/**
|
||||||
|
* Resizing element (the one the mouse is resizing)
|
||||||
|
* @property resize
|
||||||
|
* @type element
|
||||||
|
* @default null
|
||||||
|
*/
|
||||||
|
"resizeCol": null,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resizing element neighbour (the column next to the one the mouse is resizing)
|
||||||
|
* This is for fixed table resizing.
|
||||||
|
* @property resize
|
||||||
|
* @type element
|
||||||
|
* @default null
|
||||||
|
*/
|
||||||
|
"resizeColNeighbour": null,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Array of events to be restored, used for overriding existing events from other plugins for a time.
|
||||||
|
* @property restoreEvents
|
||||||
|
* @type array
|
||||||
|
* @default []
|
||||||
|
*/
|
||||||
|
"restoreEvents": []
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* Constructor logic */
|
||||||
|
this.s.dt = oDTSettings.oInstance.fnSettings();
|
||||||
|
this.s.dt._colResize = this;
|
||||||
|
this._fnConstruct();
|
||||||
|
|
||||||
|
/* Add destroy callback */
|
||||||
|
oDTSettings.oApi._fnCallbackReg(oDTSettings, 'aoDestroyCallback', $.proxy(this._fnDestroy, this), 'ColResize');
|
||||||
|
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
ColResize.prototype = {
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* Public methods
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset the column widths to the original widths that was detected on
|
||||||
|
* start up.
|
||||||
|
* @return {this} Returns `this` for chaining.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* // DataTables initialisation with ColResize
|
||||||
|
* var table = $('#example').dataTable( {
|
||||||
|
* "sDom": 'Zlfrtip'
|
||||||
|
* } );
|
||||||
|
*
|
||||||
|
* // Add click event to a button to reset the ordering
|
||||||
|
* $('#resetOrdering').click( function (e) {
|
||||||
|
* e.preventDefault();
|
||||||
|
* $.fn.dataTable.ColResize( table ).fnReset();
|
||||||
|
* } );
|
||||||
|
*/
|
||||||
|
"fnReset": function () {
|
||||||
|
var a = [];
|
||||||
|
for (var i = 0, iLen = this.s.dt.aoColumns.length; i < iLen; i++) {
|
||||||
|
this.s.dt.aoColumns[i].width = this.s.dt.aoColumns[i]._ColResize_iOrigWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.s.dt.adjust().draw();
|
||||||
|
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* Private methods (they are of course public in JS, but recommended as private)
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor logic
|
||||||
|
* @method _fnConstruct
|
||||||
|
* @returns void
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
"_fnConstruct": function () {
|
||||||
|
var that = this;
|
||||||
|
var iLen = that.s.dt.aoColumns.length;
|
||||||
|
var i;
|
||||||
|
|
||||||
|
that._fnSetupMouseListeners();
|
||||||
|
|
||||||
|
/* Add event handlers for the resize handles */
|
||||||
|
for (i = 0; i < iLen; i++) {
|
||||||
|
/* Mark the original column width for later reference */
|
||||||
|
this.s.dt.aoColumns[i]._ColResize_iOrigWidth = this.s.dt.aoColumns[i].width;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._fnSetColumnIndexes();
|
||||||
|
|
||||||
|
/* State saving */
|
||||||
|
this.s.dt.oApi._fnCallbackReg( this.s.dt, 'aoStateSaveParams', function (oS, oData) {
|
||||||
|
that._fnStateSave.call(that, oData);
|
||||||
|
}, "ColResize_State" );
|
||||||
|
|
||||||
|
// State loading
|
||||||
|
this._fnStateLoad();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @method _fnStateSave
|
||||||
|
* @param object oState DataTables state
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
"_fnStateSave": function (oState) {
|
||||||
|
this.s.dt.aoColumns.forEach(function(col, index) {
|
||||||
|
oState.columns[index].width = col.sWidthOrig;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If state has been loaded, apply the saved widths to the columns
|
||||||
|
* @method _fnStateLoad
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
"_fnStateLoad": function() {
|
||||||
|
var that = this,
|
||||||
|
loadedState = this.s.dt.oLoadedState;
|
||||||
|
if (loadedState && loadedState.columns) {
|
||||||
|
var colStates = loadedState.columns,
|
||||||
|
currCols = this.s.dt.aoColumns;
|
||||||
|
// Only apply the saved widths if the number of columns is the same.
|
||||||
|
// Otherwise, we don't know if we're applying the width to the correct column.
|
||||||
|
if (colStates.length > 0 && colStates.length === currCols.length) {
|
||||||
|
colStates.forEach(function(state, index) {
|
||||||
|
var col = that.s.dt.aoColumns[index];
|
||||||
|
if (state.width) {
|
||||||
|
col.sWidthOrig = col.sWidth = state.width;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove events of type from obj add it to restoreEvents array to be restored at a later time
|
||||||
|
* @param until string flag when to restore the event
|
||||||
|
* @param obj Object to remove events from
|
||||||
|
* @param type type of event to remove
|
||||||
|
* @param namespace namespace of the event being removed
|
||||||
|
*/
|
||||||
|
"_fnDelayEvents": function (until, obj, type, namespace) {
|
||||||
|
var that = this;
|
||||||
|
//Get the events for the object
|
||||||
|
var events = $._data($(obj).get(0), 'events');
|
||||||
|
$.each(events, function (i, o) {
|
||||||
|
//If the event type matches
|
||||||
|
if (i == type) {
|
||||||
|
//Loop through the possible many events with that type
|
||||||
|
$.each(o, function (k, v) {
|
||||||
|
//Somehow it is possible for the event to be undefined make sure it is defined first
|
||||||
|
if (v) {
|
||||||
|
if (namespace) {
|
||||||
|
//Add the event to the array of events to be restored later
|
||||||
|
that.dom.restoreEvents.push({"until": until, "obj": obj, "type": v.type, "namespace": v.namespace, "handler": v.handler});
|
||||||
|
//If the namespace matches
|
||||||
|
if (v.namespace == namespace) {
|
||||||
|
//Turn off/unbind the event
|
||||||
|
$(obj).off(type + "." + namespace);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//Add the event to the array of events to be restored later
|
||||||
|
that.dom.restoreEvents.push({"until": until, "obj": obj, "type": v.type, "namespace": null, "handler": v.handler});
|
||||||
|
//Turn off/unbind the event
|
||||||
|
$(obj).off(type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loop through restoreEvents array and restore the events on the elements provided
|
||||||
|
*/
|
||||||
|
"_fnRestoreEvents": function (until) {
|
||||||
|
var that = this;
|
||||||
|
//Loop through the events to be restored
|
||||||
|
var i;
|
||||||
|
for (i = that.dom.restoreEvents.length; i--;) {
|
||||||
|
if (that.dom.restoreEvents[i].until == undefined || that.dom.restoreEvents[i].until == null || that.dom.restoreEvents[i].until == until) {
|
||||||
|
if (that.dom.restoreEvents[i].namespace) {
|
||||||
|
//Turn on the event for the object provided
|
||||||
|
$(that.dom.restoreEvents[i].obj).off(that.dom.restoreEvents[i].type + "." + that.dom.restoreEvents[i].namespace).on(that.dom.restoreEvents[i].type + "." + that.dom.restoreEvents[i].namespace, that.dom.restoreEvents[i].handler);
|
||||||
|
that.dom.restoreEvents.splice(i, 1);
|
||||||
|
} else {
|
||||||
|
//Turn on the event for the object provided
|
||||||
|
$(that.dom.restoreEvents[i].obj).off(that.dom.restoreEvents[i].type).on(that.dom.restoreEvents[i].type, that.dom.restoreEvents[i].handler);
|
||||||
|
that.dom.restoreEvents.splice(i, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* Mouse drop and drag
|
||||||
|
*/
|
||||||
|
|
||||||
|
"_fnSetupMouseListeners":function() {
|
||||||
|
var that = this;
|
||||||
|
$(that.s.dt.nTableWrapper).off("mouseenter.ColResize").on("mouseenter.ColResize","th",function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
that._fnMouseEnter.call(that, e, this);
|
||||||
|
});
|
||||||
|
$(that.s.dt.nTableWrapper).off("mouseleave.ColResize").on("mouseleave.ColResize","th",function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
that._fnMouseLeave.call(that, e, this);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add mouse listeners to the resize handle on TH element
|
||||||
|
* @method _fnMouseListener
|
||||||
|
* @param i Column index
|
||||||
|
* @param nTh TH resize handle element clicked on
|
||||||
|
* @returns void
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
"_fnMouseListener": function (i, nTh) {
|
||||||
|
var that = this;
|
||||||
|
$(nTh).off('mouseenter.ColResize').on('mouseenter.ColResize', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
that._fnMouseEnter.call(that, e, nTh);
|
||||||
|
});
|
||||||
|
$(nTh).off('mouseleave.ColResize').on('mouseleave.ColResize', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
that._fnMouseLeave.call(that, e, nTh);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param e Mouse event
|
||||||
|
* @param nTh TH element that the mouse is over
|
||||||
|
*/
|
||||||
|
"_fnMouseEnter": function (e, nTh) {
|
||||||
|
var that = this;
|
||||||
|
if(!that.s.isMousedown) {
|
||||||
|
//Once the mouse has entered the cell add mouse move event to see if the mouse is over resize handle
|
||||||
|
$(nTh).off('mousemove.ColResizeHandle').on('mousemove.ColResizeHandle', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
that._fnResizeHandleCheck.call(that, e, nTh);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear mouse events when the mouse has left the th
|
||||||
|
* @param e Mouse event
|
||||||
|
* @param nTh TH element that the mouse has just left
|
||||||
|
*/
|
||||||
|
"_fnMouseLeave": function (e, nTh) {
|
||||||
|
//Once the mouse has left the TH make suure to remove the mouse move listener
|
||||||
|
$(nTh).off('mousemove.ColResizeHandle');
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mouse down on a TH element in the table header
|
||||||
|
* @method _fnMouseDown
|
||||||
|
* @param event e Mouse event
|
||||||
|
* @param element nTh TH element to be resized
|
||||||
|
* @returns void
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
"_fnMouseDown": function (e, nTh) {
|
||||||
|
var that = this;
|
||||||
|
|
||||||
|
that.s.isMousedown = true;
|
||||||
|
|
||||||
|
/* Store information about the mouse position */
|
||||||
|
var target = $(e.target).closest('th, td');
|
||||||
|
var offset = target.offset();
|
||||||
|
|
||||||
|
/* Store information about the mouse position for resize calculations in mouse move function */
|
||||||
|
this.s.mouse.startX = e.pageX;
|
||||||
|
this.s.mouse.startY = e.pageY;
|
||||||
|
|
||||||
|
//Store the indexes of the columns the mouse is down on
|
||||||
|
var idx = that.dom.resizeCol[0].cellIndex;
|
||||||
|
|
||||||
|
// the last column has no 'right-side' neighbour
|
||||||
|
// with fixed this can make the table smaller
|
||||||
|
if (that.dom.resizeColNeighbour[0] === undefined){
|
||||||
|
var idxNeighbour = 0;
|
||||||
|
} else {
|
||||||
|
var idxNeighbour = that.dom.resizeColNeighbour[0].cellIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (idx === undefined) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.s.mouse.targetIndex = idx;
|
||||||
|
this.s.mouse.targetColumn = this.s.dt.aoColumns[ idx ];
|
||||||
|
|
||||||
|
this.s.mouse.neighbourIndex = idxNeighbour;
|
||||||
|
this.s.mouse.neighbourColumn = this.s.dt.aoColumns[ idxNeighbour ];
|
||||||
|
|
||||||
|
/* Add event handlers to the document */
|
||||||
|
$(document)
|
||||||
|
.off('mousemove.ColResize').on('mousemove.ColResize', function (e) {
|
||||||
|
that._fnMouseMove.call(that, e);
|
||||||
|
})
|
||||||
|
.off('mouseup.ColResize').on('mouseup.ColResize', function (e) {
|
||||||
|
that._fnMouseUp.call(that, e);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deal with a mouse move event while dragging to resize a column
|
||||||
|
* @method _fnMouseMove
|
||||||
|
* @param e Mouse event
|
||||||
|
* @returns void
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
"_fnMouseMove": function (e) {
|
||||||
|
var that = this;
|
||||||
|
|
||||||
|
var offset = $(that.s.mouse.targetColumn.nTh).offset();
|
||||||
|
var relativeX = (e.pageX - offset.left);
|
||||||
|
var distFromLeft = relativeX;
|
||||||
|
var distFromRight = $(that.s.mouse.targetColumn.nTh).outerWidth() - relativeX - 1;
|
||||||
|
|
||||||
|
//Change in mouse x position
|
||||||
|
var dx = e.pageX - that.s.mouse.startX;
|
||||||
|
//Get the minimum width of the column (default minimum 10px)
|
||||||
|
var minColumnWidth = Math.max(parseInt($(that.s.mouse.targetColumn.nTh).css('min-width')), 10);
|
||||||
|
//Store the previous width of the column
|
||||||
|
var prevWidth = $(that.s.mouse.targetColumn.nTh).width();
|
||||||
|
//As long as the cursor is past the handle, resize the columns
|
||||||
|
if ((dx > 0 && distFromRight <= 0) || (dx < 0 && distFromRight >= 0)) {
|
||||||
|
if (!that.s.init.tableWidthFixed) {
|
||||||
|
//As long as the width is larger than the minimum
|
||||||
|
var newColWidth = Math.max(minColumnWidth, prevWidth + dx);
|
||||||
|
//Get the width difference (take into account the columns minimum width)
|
||||||
|
var widthDiff = newColWidth - prevWidth;
|
||||||
|
var colResizeIdx = parseInt(that.dom.resizeCol.attr("data-column-index"));
|
||||||
|
//Set datatable column widths
|
||||||
|
that.s.mouse.targetColumn.sWidthOrig = that.s.mouse.targetColumn.sWidth = that.s.mouse.targetColumn.width = newColWidth + "px";
|
||||||
|
var domCols = $(that.s.dt.nTableWrapper).find("th[data-column-index='"+colResizeIdx+"']");
|
||||||
|
//For each table expand the width by the same amount as the column
|
||||||
|
//This accounts for other datatable plugins like FixedColumns
|
||||||
|
domCols.parents("table").each(function() {
|
||||||
|
if(!$(this).parent().hasClass("DTFC_LeftBodyLiner")) {
|
||||||
|
var newWidth = $(this).width() + widthDiff;
|
||||||
|
$(this).width(newWidth);
|
||||||
|
} else {
|
||||||
|
var newWidth =$(that.s.dt.nTableWrapper).find(".DTFC_LeftHeadWrapper").children("table").width();
|
||||||
|
$(this).parents(".DTFC_LeftWrapper").width(newWidth);
|
||||||
|
$(this).parent().width(newWidth+15);
|
||||||
|
$(this).width(newWidth);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//Apply the new width to the columns after the table has been resized
|
||||||
|
domCols.width(that.s.mouse.targetColumn.width);
|
||||||
|
} else {
|
||||||
|
//A neighbour column must exist in order to resize a column in a table with a fixed width
|
||||||
|
if (that.s.mouse.neighbourColumn) {
|
||||||
|
//Get the minimum width of the neighbor column (default minimum 10px)
|
||||||
|
var minColumnNeighbourWidth = Math.max(parseInt($(that.s.mouse.neighbourColumn.nTh).css('min-width')), 10);
|
||||||
|
//Store the previous width of the neighbour column
|
||||||
|
var prevNeighbourWidth = $(that.s.mouse.neighbourColumn.nTh).width();
|
||||||
|
//As long as the width is larger than the minimum
|
||||||
|
var newColWidth = Math.max(minColumnWidth, prevWidth + dx);
|
||||||
|
var newColNeighbourWidth = Math.max(minColumnNeighbourWidth, prevNeighbourWidth - dx);
|
||||||
|
//Get the width difference (take into account the columns minimum width)
|
||||||
|
var widthDiff = newColWidth - prevWidth;
|
||||||
|
var widthDiffNeighbour = newColNeighbourWidth - prevNeighbourWidth;
|
||||||
|
//Get the column index for the column being changed
|
||||||
|
var colResizeIdx = parseInt(that.dom.resizeCol.attr("data-column-index"));
|
||||||
|
var neighbourColResizeIdx = parseInt(that.dom.resizeColNeighbour.attr("data-column-index"));
|
||||||
|
//Set datatable column widths
|
||||||
|
that.s.mouse.neighbourColumn.sWidthOrig = that.s.mouse.neighbourColumn.sWidth = that.s.mouse.neighbourColumn.width = newColNeighbourWidth + "px";
|
||||||
|
that.s.mouse.targetColumn.sWidthOrig = that.s.mouse.targetColumn.sWidth = that.s.mouse.targetColumn.width = newColWidth + "px";
|
||||||
|
//Get list of columns based on column index in all affected tables tables. This accounts for other plugins like FixedColumns
|
||||||
|
var domNeighbourCols = $(that.s.dt.nTableWrapper).find("th[data-column-index='" + neighbourColResizeIdx + "']");
|
||||||
|
var domCols = $(that.s.dt.nTableWrapper).find("th[data-column-index='" + colResizeIdx + "']");
|
||||||
|
//If dx if positive (the width is getting larger) shrink the neighbour columns first
|
||||||
|
if(dx>0) {
|
||||||
|
domNeighbourCols.width(that.s.mouse.neighbourColumn.width);
|
||||||
|
domCols.width(that.s.mouse.targetColumn.width);
|
||||||
|
} else {
|
||||||
|
//Apply the new width to the columns then to the neighbour columns
|
||||||
|
domCols.width(that.s.mouse.targetColumn.width);
|
||||||
|
domNeighbourCols.width(that.s.mouse.neighbourColumn.width);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
that.s.mouse.startX = e.pageX;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check to see if the mouse is over the resize handle area
|
||||||
|
* @param e
|
||||||
|
* @param nTh
|
||||||
|
*/
|
||||||
|
"_fnResizeHandleCheck": function (e, nTh) {
|
||||||
|
var that = this;
|
||||||
|
|
||||||
|
var offset = $(nTh).offset();
|
||||||
|
var relativeX = (e.pageX - offset.left);
|
||||||
|
var relativeY = (e.pageY - offset.top);
|
||||||
|
var distFromLeft = relativeX;
|
||||||
|
var distFromRight = $(nTh).outerWidth() - relativeX - 1;
|
||||||
|
|
||||||
|
var handleBuffer = this.s.init.handleWidth / 2;
|
||||||
|
var leftHandleOn = distFromLeft < handleBuffer;
|
||||||
|
var rightHandleOn = distFromRight < handleBuffer;
|
||||||
|
|
||||||
|
//If this is the first table cell
|
||||||
|
if ($(nTh).prev("th").length == 0) {
|
||||||
|
if(this.s.init.rtl)
|
||||||
|
rightHandleOn = false;
|
||||||
|
else
|
||||||
|
leftHandleOn = false;
|
||||||
|
}
|
||||||
|
//If this is the last cell and the table is fixed width don't let them expand the last cell directly
|
||||||
|
if ($(nTh).next("th").length == 0 && this.s.init.tableWidthFixed) {
|
||||||
|
if(this.s.init.rtl)
|
||||||
|
leftHandleOn = false;
|
||||||
|
else
|
||||||
|
rightHandleOn = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var resizeAvailable = leftHandleOn||rightHandleOn;
|
||||||
|
|
||||||
|
//If table is in right to left mode flip which TH is being resized
|
||||||
|
if (that.s.init.rtl) {
|
||||||
|
//Handle is to the left
|
||||||
|
if (leftHandleOn) {
|
||||||
|
that.dom.resizeCol = $(nTh);
|
||||||
|
that.dom.resizeColNeighbour = $(nTh).next();
|
||||||
|
} else if (rightHandleOn) {
|
||||||
|
that.dom.resizeCol = $(nTh).prev();
|
||||||
|
that.dom.resizeColNeighbour = $(nTh);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//Handle is to the right
|
||||||
|
if (rightHandleOn) {
|
||||||
|
that.dom.resizeCol = $(nTh);
|
||||||
|
that.dom.resizeColNeighbour = $(nTh).next();
|
||||||
|
} else if (leftHandleOn) {
|
||||||
|
that.dom.resizeCol = $(nTh).prev();
|
||||||
|
that.dom.resizeColNeighbour = $(nTh);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//If table width is fixed make sure both columns are resizable else just check the one.
|
||||||
|
if(this.s.init.tableWidthFixed)
|
||||||
|
resizeAvailable &= this.s.init.exclude.indexOf(parseInt($(that.dom.resizeCol).attr("data-column-index"))) == -1 && this.s.init.exclude.indexOf(parseInt($(that.dom.resizeColNeighbour).attr("data-column-index"))) == -1;
|
||||||
|
else
|
||||||
|
resizeAvailable &= this.s.init.exclude.indexOf(parseInt($(that.dom.resizeCol).attr("data-column-index"))) == -1;
|
||||||
|
|
||||||
|
$(nTh).off('mousedown.ColResize');
|
||||||
|
if (resizeAvailable) {
|
||||||
|
$(nTh).css("cursor", "ew-resize");
|
||||||
|
|
||||||
|
//Delay other mousedown events from the Reorder plugin
|
||||||
|
that._fnDelayEvents(null, nTh, "mousedown", "ColReorder");
|
||||||
|
that._fnDelayEvents("click", nTh, "click", "DT");
|
||||||
|
|
||||||
|
$(nTh).off('mousedown.ColResize').on('mousedown.ColResize', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
that._fnMouseDown.call(that, e, nTh);
|
||||||
|
})
|
||||||
|
.off('click.ColResize').on('click.ColResize', function (e) {
|
||||||
|
that._fnClick.call(that, e);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$(nTh).css("cursor", "pointer");
|
||||||
|
$(nTh).off('mousedown.ColResize click.ColResize');
|
||||||
|
//Restore any events that were removed
|
||||||
|
that._fnRestoreEvents();
|
||||||
|
//This is to restore column sorting on click functionality
|
||||||
|
if (!that.s.isMousedown)
|
||||||
|
//Restore click event if mouse is not down
|
||||||
|
this._fnRestoreEvents("click");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"_fnClick": function (e) {
|
||||||
|
var that = this;
|
||||||
|
that.s.isMousedown = false;
|
||||||
|
e.stopImmediatePropagation();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finish off the mouse drag
|
||||||
|
* @method _fnMouseUp
|
||||||
|
* @param e Mouse event
|
||||||
|
* @returns void
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
"_fnMouseUp": function (e) {
|
||||||
|
var that = this;
|
||||||
|
that.s.isMousedown = false;
|
||||||
|
|
||||||
|
//Fix width of column to be the size the dom is limited to (for when user sets min-width on a column)
|
||||||
|
that.s.mouse.targetColumn.width = that.dom.resizeCol.width();
|
||||||
|
|
||||||
|
$(document).off('mousemove.ColResize mouseup.ColResize');
|
||||||
|
this.s.dt.oInstance.fnAdjustColumnSizing();
|
||||||
|
//Table width fix, prevents extra gaps between tables
|
||||||
|
var LeftWrapper = $(that.s.dt.nTableWrapper).find(".DTFC_LeftWrapper");
|
||||||
|
var DTFC_LeftWidth = LeftWrapper.width();
|
||||||
|
LeftWrapper.children(".DTFC_LeftHeadWrapper").children("table").width(DTFC_LeftWidth);
|
||||||
|
|
||||||
|
if (that.s.init.resizeCallback) {
|
||||||
|
that.s.init.resizeCallback.call(that, that.s.mouse.targetColumn);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clean up ColResize memory references and event handlers
|
||||||
|
* @method _fnDestroy
|
||||||
|
* @returns void
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
"_fnDestroy": function () {
|
||||||
|
var i, iLen;
|
||||||
|
|
||||||
|
for (i = 0, iLen = this.s.dt.aoDrawCallback.length; i < iLen; i++) {
|
||||||
|
if (this.s.dt.aoDrawCallback[i].sName === 'ColResize_Pre') {
|
||||||
|
this.s.dt.aoDrawCallback.splice(i, 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$(this.s.dt.nTHead).find('*').off('.ColResize');
|
||||||
|
|
||||||
|
$.each(this.s.dt.aoColumns, function (i, column) {
|
||||||
|
$(column.nTh).removeAttr('data-column-index');
|
||||||
|
});
|
||||||
|
|
||||||
|
this.s.dt._colResize = null;
|
||||||
|
this.s = null;
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a data attribute to the column headers, so we know the index of
|
||||||
|
* the row to be reordered. This allows fast detection of the index, and
|
||||||
|
* for this plug-in to work with FixedHeader which clones the nodes.
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
"_fnSetColumnIndexes": function () {
|
||||||
|
$.each(this.s.dt.aoColumns, function (i, column) {
|
||||||
|
$(column.nTh).attr('data-column-index', i);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* Static parameters
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ColResize default settings for initialisation
|
||||||
|
* @namespace
|
||||||
|
* @static
|
||||||
|
*/
|
||||||
|
ColResize.defaults = {
|
||||||
|
/**
|
||||||
|
* Callback function that is fired when columns are resized
|
||||||
|
* @type function():void
|
||||||
|
* @default null
|
||||||
|
* @static
|
||||||
|
*/
|
||||||
|
"resizeCallback": null,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exclude array for columns that are not resizable
|
||||||
|
* @property exclude
|
||||||
|
* @type array of indexes that are excluded from resizing
|
||||||
|
* @default []
|
||||||
|
*/
|
||||||
|
"exclude": [],
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check to see if user is using a fixed table width or dynamic
|
||||||
|
* if true:
|
||||||
|
* -Columns will resize themselves and their neighbour
|
||||||
|
* -If neighbour is excluded resize will not occur
|
||||||
|
* if false:
|
||||||
|
* -Columns will resize themselves and increase or decrease the width of the table accordingly
|
||||||
|
*/
|
||||||
|
"tableWidthFixed": true,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Width of the resize handle in pixels
|
||||||
|
* @property handleWidth
|
||||||
|
* @type int (pixels)
|
||||||
|
* @default 10
|
||||||
|
*/
|
||||||
|
"handleWidth": 10,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Right to left support, when true flips which column they are resizing on mouse down
|
||||||
|
* @property rtl
|
||||||
|
* @type bool
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
"rtl": false
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* Constants
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ColResize version
|
||||||
|
* @constant version
|
||||||
|
* @type String
|
||||||
|
* @default As code
|
||||||
|
*/
|
||||||
|
ColResize.version = "0.0.10";
|
||||||
|
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* DataTables interfaces
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
// Expose
|
||||||
|
$.fn.dataTable.ColResize = ColResize;
|
||||||
|
$.fn.DataTable.ColResize = ColResize;
|
||||||
|
|
||||||
|
|
||||||
|
// Register a new feature with DataTables
|
||||||
|
if (typeof $.fn.dataTable == "function" &&
|
||||||
|
typeof $.fn.dataTableExt.fnVersionCheck == "function" &&
|
||||||
|
$.fn.dataTableExt.fnVersionCheck('1.9.3')) {
|
||||||
|
$.fn.dataTableExt.aoFeatures.push({
|
||||||
|
"fnInit": function (settings) {
|
||||||
|
var table = settings.oInstance;
|
||||||
|
|
||||||
|
if (!settings._colResize) {
|
||||||
|
var dtInit = settings.oInit;
|
||||||
|
var opts = dtInit.colResize || dtInit.oColResize || {};
|
||||||
|
|
||||||
|
new ColResize(settings, opts);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
table.oApi._fnLog(settings, 1, "ColResize attempted to initialise twice. Ignoring second");
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
/* No node for DataTables to insert */
|
||||||
|
},
|
||||||
|
"cFeature": "Z",
|
||||||
|
"sFeature": "ColResize"
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
alert("Warning: ColResize requires DataTables 1.9.3 or greater - www.datatables.net/download");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// API augmentation
|
||||||
|
if ($.fn.dataTable.Api) {
|
||||||
|
$.fn.dataTable.Api.register('colResize.reset()', function () {
|
||||||
|
return this.iterator('table', function (ctx) {
|
||||||
|
ctx._colResize.fnReset();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return ColResize;
|
||||||
|
}; // /factory
|
||||||
|
|
||||||
|
|
||||||
|
// Define as an AMD module if possible
|
||||||
|
if ( typeof define === 'function' && define.amd ) {
|
||||||
|
define( ['jquery', 'datatables'], factory );
|
||||||
|
}
|
||||||
|
else if ( typeof exports === 'object' ) {
|
||||||
|
// Node/CommonJS
|
||||||
|
factory( require('jquery'), require('datatables') );
|
||||||
|
}
|
||||||
|
else if (jQuery && !jQuery.fn.dataTable.ColResize) {
|
||||||
|
// Otherwise simply initialise as normal, stopping multiple evaluation
|
||||||
|
factory(jQuery, jQuery.fn.dataTable);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
})(window, document);
|
||||||
15321
externals/datatables.js
vendored
Normal file
BIN
externals/images/cut.png
vendored
Normal file
|
After Width: | Height: | Size: 648 B |
BIN
externals/images/door.png
vendored
Normal file
|
After Width: | Height: | Size: 412 B |
BIN
externals/images/page_white_add.png
vendored
Normal file
|
After Width: | Height: | Size: 442 B |
BIN
externals/images/page_white_copy.png
vendored
Normal file
|
After Width: | Height: | Size: 309 B |
BIN
externals/images/page_white_delete.png
vendored
Normal file
|
After Width: | Height: | Size: 536 B |
BIN
externals/images/page_white_edit.png
vendored
Normal file
|
After Width: | Height: | Size: 618 B |
BIN
externals/images/page_white_paste.png
vendored
Normal file
|
After Width: | Height: | Size: 620 B |
BIN
externals/images/sort_both.png
vendored
Normal file
|
After Width: | Height: | Size: 201 B |
BIN
externals/images/ui-bg_flat_0_aaaaaa_40x100.png
vendored
Normal file
|
After Width: | Height: | Size: 86 B |
BIN
externals/images/ui-icons_444444_256x240.png
vendored
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
externals/images/ui-icons_555555_256x240.png
vendored
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
externals/images/ui-icons_777620_256x240.png
vendored
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
externals/images/ui-icons_777777_256x240.png
vendored
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
externals/images/ui-icons_cc0000_256x240.png
vendored
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
externals/images/ui-icons_ffffff_256x240.png
vendored
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
7
externals/jquery-ui.min.css
vendored
Normal file
13
externals/jquery-ui.min.js
vendored
Normal file
5
externals/jquery-ui.structure.min.css
vendored
Normal file
5
externals/jquery-ui.theme.min.css
vendored
Normal file
177
externals/jquery.contextMenu.css
vendored
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
/*!
|
||||||
|
* jQuery contextMenu - Plugin for simple contextMenu handling
|
||||||
|
*
|
||||||
|
* Version: 1.6.6
|
||||||
|
*
|
||||||
|
* Authors: Rodney Rehm, Addy Osmani (patches for FF)
|
||||||
|
* Web: http://medialize.github.com/jQuery-contextMenu/
|
||||||
|
*
|
||||||
|
* Licensed under
|
||||||
|
* MIT License http://www.opensource.org/licenses/mit-license
|
||||||
|
* GPL v3 http://opensource.org/licenses/GPL-3.0
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
.context-menu-list {
|
||||||
|
z-index: 1001;
|
||||||
|
position: fixed;
|
||||||
|
background: white;
|
||||||
|
border: solid 1px gainsboro;
|
||||||
|
box-shadow: 4px 4px 4px -2px #888888;
|
||||||
|
padding: 8px 0px 8px 0px;
|
||||||
|
line-height: 25px;
|
||||||
|
width: 254px;
|
||||||
|
list-style: none;
|
||||||
|
margin-left: -10px;
|
||||||
|
outline: 0px #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item {
|
||||||
|
padding: 2px 2px 2px 31px;
|
||||||
|
background-color: #fff;
|
||||||
|
position: relative;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: -moz-none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-separator {
|
||||||
|
padding-bottom: 0;
|
||||||
|
border-bottom: 1px solid #DDD;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item>label>input,
|
||||||
|
.context-menu-item>label>textarea {
|
||||||
|
-webkit-user-select: text;
|
||||||
|
-moz-user-select: text;
|
||||||
|
-ms-user-select: text;
|
||||||
|
user-select: text;
|
||||||
|
margin-left: -10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: #eeeeee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item.disabled {
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-input.hover,
|
||||||
|
.context-menu-item.disabled.hover {
|
||||||
|
cursor: default;
|
||||||
|
background-color: #EEE;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-submenu:after {
|
||||||
|
content: ">";
|
||||||
|
color: #666;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 3px;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* icons
|
||||||
|
#protip:
|
||||||
|
In case you want to use sprites for icons (which I would suggest you do) have a look at
|
||||||
|
http://css-tricks.com/13224-pseudo-spriting/ to get an idea of how to implement
|
||||||
|
.context-menu-item.icon:before {}
|
||||||
|
*/
|
||||||
|
|
||||||
|
.context-menu-item.icon {
|
||||||
|
min-height: 18px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 10px 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item.icon:hover {
|
||||||
|
min-height: 18px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 10px 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*.context-menu-item.icon-edit {
|
||||||
|
background-image: url(images/page_white_edit.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item.icon-cut {
|
||||||
|
background-image: url(images/cut.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item.icon-copy {
|
||||||
|
background-image: url(images/page_white_copy.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item.icon-paste {
|
||||||
|
background-image: url(images/page_white_paste.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item.icon-delete {
|
||||||
|
background-image: url(images/page_white_delete.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item.icon-add {
|
||||||
|
background-image: url(images/page_white_add.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item.icon-quit {
|
||||||
|
background-image: url(images/door.png);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
/* vertically align inside labels */
|
||||||
|
|
||||||
|
.context-menu-input>label>* {
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* position checkboxes and radios as icons */
|
||||||
|
|
||||||
|
.context-menu-input>label>input[type="checkbox"],
|
||||||
|
.context-menu-input>label>input[type="radio"] {
|
||||||
|
margin-left: -17px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-input>label>span {
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-input>label,
|
||||||
|
.context-menu-input>label>input[type="text"],
|
||||||
|
.context-menu-input>label>textarea,
|
||||||
|
.context-menu-input>label>select {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
-ms-box-sizing: border-box;
|
||||||
|
-o-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-input>label>textarea {
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.context-menu-item>.context-menu-list {
|
||||||
|
display: none;
|
||||||
|
/* re-positioned by js */
|
||||||
|
right: -5px;
|
||||||
|
top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*.context-menu-item.hover>.context-menu-list {
|
||||||
|
display: block;
|
||||||
|
padding-left: 5px;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
.context-menu-accesskey {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
1686
externals/jquery.contextMenu.js
vendored
Normal file
1
externals/jquery.dataTables.min.css
vendored
Normal file
163
externals/jquery.dataTables.min.js
vendored
Normal file
@@ -0,0 +1,163 @@
|
|||||||
|
/*!
|
||||||
|
DataTables 1.10.9
|
||||||
|
©2008-2015 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function(Fa,T,k){var S=function(h){function X(a){var b,c,d={};h.each(a,function(e){if((b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=e.replace(b[0],b[2].toLowerCase()),d[c]=e,"o"===b[1]&&X(a[e])});a._hungarianMap=d}function I(a,b,c){a._hungarianMap||X(a);var d;h.each(b,function(e){d=a._hungarianMap[e];if(d!==k&&(c||b[d]===k))"o"===d.charAt(0)?(b[d]||(b[d]={}),h.extend(!0,b[d],b[e]),I(a[d],b[d],c)):b[d]=b[e]})}function S(a){var b=m.defaults.oLanguage,c=a.sZeroRecords;
|
||||||
|
!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&F(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&F(a,a,"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&cb(a)}function db(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate");
|
||||||
|
A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&I(m.models.oSearch,a[b])}function eb(a){A(a,"orderable","bSortable");A(a,"orderData","aDataSort");A(a,"orderSequence","asSorting");A(a,"orderDataType","sortDataType");var b=a.aDataSort;b&&!h.isArray(b)&&(a.aDataSort=[b])}function fb(a){if(!m.__browser){var b={};m.__browser=b;var c=
|
||||||
|
h("<div/>").css({position:"fixed",top:0,left:0,height:1,width:1,overflow:"hidden"}).append(h("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(h("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}h.extend(a.oBrowser,
|
||||||
|
m.__browser);a.oScroll.iBarWidth=m.__browser.barWidth}function gb(a,b,c,d,e,f){var g,i=!1;c!==k&&(g=c,i=!0);for(;d!==e;)a.hasOwnProperty(d)&&(g=i?b(g,a[d],d,a):a[d],i=!0,d+=f);return g}function Ga(a,b){var c=m.defaults.column,d=a.aoColumns.length,c=h.extend({},m.models.oColumn,c,{nTh:b?b:T.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=h.extend({},m.models.oSearch,c[d]);
|
||||||
|
la(a,d,h(b).data())}function la(a,b,c){var b=a.aoColumns[b],d=a.oClasses,e=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var f=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(eb(c),I(m.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),h.extend(b,c),F(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),F(b,c,"aDataSort"));
|
||||||
|
var g=b.mData,i=P(g),j=b.mRender?P(b.mRender):null,c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b.fnGetData=function(a,b,c){var d=i(a,b,k,c);return j&&b?j(d,b,a,c):d};b.fnSetData=function(a,b,c){return Q(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?
|
||||||
|
(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI)}function Y(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ha(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&Z(a);w(a,null,"column-sizing",[a])}function $(a,b){var c=
|
||||||
|
aa(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function ba(a,b){var c=aa(a,"bVisible"),c=h.inArray(b,c);return-1!==c?c:null}function ca(a){return aa(a,"bVisible").length}function aa(a,b){var c=[];h.map(a.aoColumns,function(a,e){a[b]&&c.push(e)});return c}function Ia(a){var b=a.aoColumns,c=a.aoData,d=m.ext.type.detect,e,f,g,i,j,h,l,r,q;e=0;for(f=b.length;e<f;e++)if(l=b[e],q=[],!l.sType&&l._sManualType)l.sType=l._sManualType;else if(!l.sType){g=0;for(i=d.length;g<i;g++){j=0;for(h=c.length;j<
|
||||||
|
h;j++){q[j]===k&&(q[j]=B(a,j,e,"type"));r=d[g](q[j],a);if(!r&&g!==d.length-1)break;if("html"===r)break}if(r){l.sType=r;break}}l.sType||(l.sType="string")}}function hb(a,b,c,d){var e,f,g,i,j,n,l=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){n=b[e];var r=n.targets!==k?n.targets:n.aTargets;h.isArray(r)||(r=[r]);f=0;for(g=r.length;f<g;f++)if("number"===typeof r[f]&&0<=r[f]){for(;l.length<=r[f];)Ga(a);d(r[f],n)}else if("number"===typeof r[f]&&0>r[f])d(l.length+r[f],n);else if("string"===typeof r[f]){i=0;
|
||||||
|
for(j=l.length;i<j;i++)("_all"==r[f]||h(l[i].nTh).hasClass(r[f]))&&d(i,n)}}if(c){e=0;for(a=c.length;e<a;e++)d(e,c[e])}}function L(a,b,c,d){var e=a.aoData.length,f=h.extend(!0,{},m.models.oRow,{src:c?"dom":"data",idx:e});f._aData=b;a.aoData.push(f);for(var g=a.aoColumns,i=0,j=g.length;i<j;i++)g[i].sType=null;a.aiDisplayMaster.push(e);b=a.rowIdFn(b);b!==k&&(a.aIds[b]=f);(c||!a.oFeatures.bDeferRender)&&Ja(a,e,c,d);return e}function ma(a,b){var c;b instanceof h||(b=h(b));return b.map(function(b,e){c=
|
||||||
|
Ka(a,e);return L(a,c.data,e,c.cells)})}function B(a,b,c,d){var e=a.iDraw,f=a.aoColumns[c],g=a.aoData[b]._aData,i=f.sDefaultContent,c=f.fnGetData(g,d,{settings:a,row:b,col:c});if(c===k)return a.iDrawError!=e&&null===i&&(J(a,0,"Requested unknown parameter "+("function"==typeof f.mData?"{function}":"'"+f.mData+"'")+" for row "+b,4),a.iDrawError=e),i;if((c===g||null===c)&&null!==i)c=i;else if("function"===typeof c)return c.call(g);return null===c&&"display"==d?"":c}function ib(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,
|
||||||
|
d,{settings:a,row:b,col:c})}function La(a){return h.map(a.match(/(\\.|[^\.])+/g)||[""],function(a){return a.replace(/\\./g,".")})}function P(a){if(h.isPlainObject(a)){var b={};h.each(a,function(a,c){c&&(b[a]=P(c))});return function(a,c,f,g){var i=b[c]||b._;return i!==k?i(a,c,f,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,c,f,g){return a(b,c,f,g)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a,b,
|
||||||
|
f){var g,i;if(""!==f){i=La(f);for(var j=0,n=i.length;j<n;j++){f=i[j].match(da);g=i[j].match(U);if(f){i[j]=i[j].replace(da,"");""!==i[j]&&(a=a[i[j]]);g=[];i.splice(0,j+1);i=i.join(".");if(h.isArray(a)){j=0;for(n=a.length;j<n;j++)g.push(c(a[j],b,i))}a=f[0].substring(1,f[0].length-1);a=""===a?g:g.join(a);break}else if(g){i[j]=i[j].replace(U,"");a=a[i[j]]();continue}if(null===a||a[i[j]]===k)return k;a=a[i[j]]}}return a};return function(b,e){return c(b,e,a)}}return function(b){return b[a]}}function Q(a){if(h.isPlainObject(a))return Q(a._);
|
||||||
|
if(null===a)return function(){};if("function"===typeof a)return function(b,d,e){a(b,"set",d,e)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var b=function(a,d,e){var e=La(e),f;f=e[e.length-1];for(var g,i,j=0,n=e.length-1;j<n;j++){g=e[j].match(da);i=e[j].match(U);if(g){e[j]=e[j].replace(da,"");a[e[j]]=[];f=e.slice();f.splice(0,j+1);g=f.join(".");if(h.isArray(d)){i=0;for(n=d.length;i<n;i++)f={},b(f,d[i],g),a[e[j]].push(f)}else a[e[j]]=d;return}i&&(e[j]=e[j].replace(U,
|
||||||
|
""),a=a[e[j]](d));if(null===a[e[j]]||a[e[j]]===k)a[e[j]]={};a=a[e[j]]}if(f.match(U))a[f.replace(U,"")](d);else a[f.replace(da,"")]=d};return function(c,d){return b(c,d,a)}}return function(b,d){b[a]=d}}function Ma(a){return D(a.aoData,"_aData")}function na(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0;a.aIds={}}function oa(a,b,c){for(var d=-1,e=0,f=a.length;e<f;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===k&&a.splice(d,1)}function ea(a,b,c,d){var e=a.aoData[b],f,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild);
|
||||||
|
c.innerHTML=B(a,b,d,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===e.src)e._aData=Ka(a,e,d,d===k?k:e._aData).data;else{var i=e.anCells;if(i)if(d!==k)g(i[d],d);else{c=0;for(f=i.length;c<f;c++)g(i[c],c)}}e._aSortData=null;e._aFilterData=null;g=a.aoColumns;if(d!==k)g[d].sType=null;else{c=0;for(f=g.length;c<f;c++)g[c].sType=null;Na(a,e)}}function Ka(a,b,c,d){var e=[],f=b.firstChild,g,i,j=0,n,l=a.aoColumns,r=a._rowReadObject,d=d!==k?d:r?{}:[],q=function(a,b){if("string"===typeof a){var c=a.indexOf("@");
|
||||||
|
-1!==c&&(c=a.substring(c+1),Q(a)(d,b.getAttribute(c)))}},jb=function(a){if(c===k||c===j)i=l[j],n=h.trim(a.innerHTML),i&&i._bAttrSrc?(Q(i.mData._)(d,n),q(i.mData.sort,a),q(i.mData.type,a),q(i.mData.filter,a)):r?(i._setter||(i._setter=Q(i.mData)),i._setter(d,n)):d[j]=n;j++};if(f)for(;f;){g=f.nodeName.toUpperCase();if("TD"==g||"TH"==g)jb(f),e.push(f);f=f.nextSibling}else{e=b.anCells;g=0;for(var o=e.length;g<o;g++)jb(e[g])}if(b=f?b:b.nTr)(b=b.getAttribute("id"))&&Q(a.rowId)(d,b);return{data:d,cells:e}}
|
||||||
|
function Ja(a,b,c,d){var e=a.aoData[b],f=e._aData,g=[],i,j,h,l,r;if(null===e.nTr){i=c||T.createElement("tr");e.nTr=i;e.anCells=g;i._DT_RowIndex=b;Na(a,e);l=0;for(r=a.aoColumns.length;l<r;l++){h=a.aoColumns[l];j=c?d[l]:T.createElement(h.sCellType);g.push(j);if(!c||h.mRender||h.mData!==l)j.innerHTML=B(a,b,l,"display");h.sClass&&(j.className+=" "+h.sClass);h.bVisible&&!c?i.appendChild(j):!h.bVisible&&c&&j.parentNode.removeChild(j);h.fnCreatedCell&&h.fnCreatedCell.call(a.oInstance,j,B(a,b,l),f,b,l)}w(a,
|
||||||
|
"aoRowCreatedCallback",null,[i,f,b])}e.nTr.setAttribute("role","row")}function Na(a,b){var c=b.nTr,d=b._aData;if(c){var e=a.rowIdFn(d);e&&(c.id=e);d.DT_RowClass&&(e=d.DT_RowClass.split(" "),b.__rowc=b.__rowc?pa(b.__rowc.concat(e)):e,h(c).removeClass(b.__rowc.join(" ")).addClass(d.DT_RowClass));d.DT_RowAttr&&h(c).attr(d.DT_RowAttr);d.DT_RowData&&h(c).data(d.DT_RowData)}}function kb(a){var b,c,d,e,f,g=a.nTHead,i=a.nTFoot,j=0===h("th, td",g).length,n=a.oClasses,l=a.aoColumns;j&&(e=h("<tr/>").appendTo(g));
|
||||||
|
b=0;for(c=l.length;b<c;b++)f=l[b],d=h(f.nTh).addClass(f.sClass),j&&d.appendTo(e),a.oFeatures.bSort&&(d.addClass(f.sSortingClass),!1!==f.bSortable&&(d.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),Oa(a,f.nTh,b))),f.sTitle!=d[0].innerHTML&&d.html(f.sTitle),Pa(a,"header")(a,d,f,n);j&&fa(a.aoHeader,g);h(g).find(">tr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(n.sHeaderTH);h(i).find(">tr>th, >tr>td").addClass(n.sFooterTH);if(null!==i){a=a.aoFooter[0];b=0;for(c=a.length;b<
|
||||||
|
c;b++)f=l[b],f.nTf=a[b].cell,f.sClass&&h(f.nTf).addClass(f.sClass)}}function ga(a,b,c){var d,e,f,g=[],i=[],j=a.aoColumns.length,n;if(b){c===k&&(c=!1);d=0;for(e=b.length;d<e;d++){g[d]=b[d].slice();g[d].nTr=b[d].nTr;for(f=j-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&g[d].splice(f,1);i.push([])}d=0;for(e=g.length;d<e;d++){if(a=g[d].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[d].length;f<b;f++)if(n=j=1,i[d][f]===k){a.appendChild(g[d][f].cell);for(i[d][f]=1;g[d+j]!==k&&g[d][f].cell==g[d+j][f].cell;)i[d+
|
||||||
|
j][f]=1,j++;for(;g[d][f+n]!==k&&g[d][f].cell==g[d][f+n].cell;){for(c=0;c<j;c++)i[d+c][f+n]=1;n++}h(g[d][f].cell).attr("rowspan",j).attr("colspan",n)}}}}function M(a){var b=w(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))C(a,!1);else{var b=[],c=0,d=a.asStripeClasses,e=d.length,f=a.oLanguage,g=a.iInitDisplayStart,i="ssp"==y(a),j=a.aiDisplay;a.bDrawing=!0;g!==k&&-1!==g&&(a._iDisplayStart=i?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=-1);var g=a._iDisplayStart,n=a.fnDisplayEnd();
|
||||||
|
if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(i){if(!a.bDestroying&&!lb(a))return}else a.iDraw++;if(0!==j.length){f=i?a.aoData.length:n;for(i=i?0:g;i<f;i++){var l=j[i],r=a.aoData[l];null===r.nTr&&Ja(a,l);l=r.nTr;if(0!==e){var q=d[c%e];r._sRowStripe!=q&&(h(l).removeClass(r._sRowStripe).addClass(q),r._sRowStripe=q)}w(a,"aoRowCallback",null,[l,r._aData,c,i]);b.push(l);c++}}else c=f.sZeroRecords,1==a.iDraw&&"ajax"==y(a)?c=f.sLoadingRecords:f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),
|
||||||
|
b[0]=h("<tr/>",{"class":e?d[0]:""}).append(h("<td />",{valign:"top",colSpan:ca(a),"class":a.oClasses.sRowEmpty}).html(c))[0];w(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],Ma(a),g,n,j]);w(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],Ma(a),g,n,j]);d=h(a.nTBody);d.children().detach();d.append(h(b));w(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function R(a,b){var c=a.oFeatures,d=c.bFilter;c.bSort&&mb(a);d?ha(a,a.oPreviousSearch):a.aiDisplay=
|
||||||
|
a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;M(a);a._drawHold=!1}function nb(a){var b=a.oClasses,c=h(a.nTable),c=h("<div/>").insertBefore(c),d=a.oFeatures,e=h("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,i,j,n,l,r,q=0;q<f.length;q++){g=null;i=f[q];if("<"==i){j=h("<div/>")[0];n=f[q+1];if("'"==n||'"'==n){l="";for(r=2;f[q+r]!=n;)l+=
|
||||||
|
f[q+r],r++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(n=l.split("."),j.id=n[0].substr(1,n[0].length-1),j.className=n[1]):"#"==l.charAt(0)?j.id=l.substr(1,l.length-1):j.className=l;q+=r}e.append(j);e=h(j)}else if(">"==i)e=e.parent();else if("l"==i&&d.bPaginate&&d.bLengthChange)g=ob(a);else if("f"==i&&d.bFilter)g=pb(a);else if("r"==i&&d.bProcessing)g=qb(a);else if("t"==i)g=rb(a);else if("i"==i&&d.bInfo)g=sb(a);else if("p"==i&&d.bPaginate)g=tb(a);else if(0!==m.ext.feature.length){j=
|
||||||
|
m.ext.feature;r=0;for(n=j.length;r<n;r++)if(i==j[r].cFeature){g=j[r].fnInit(a);break}}g&&(j=a.aanFeatures,j[i]||(j[i]=[]),j[i].push(g),e.append(g))}c.replaceWith(e);a.nHolding=null}function fa(a,b){var c=h(b).children("tr"),d,e,f,g,i,j,n,l,r,q;a.splice(0,a.length);f=0;for(j=c.length;f<j;f++)a.push([]);f=0;for(j=c.length;f<j;f++){d=c[f];for(e=d.firstChild;e;){if("TD"==e.nodeName.toUpperCase()||"TH"==e.nodeName.toUpperCase()){l=1*e.getAttribute("colspan");r=1*e.getAttribute("rowspan");l=!l||0===l||
|
||||||
|
1===l?1:l;r=!r||0===r||1===r?1:r;g=0;for(i=a[f];i[g];)g++;n=g;q=1===l?!0:!1;for(i=0;i<l;i++)for(g=0;g<r;g++)a[f+g][n+i]={cell:e,unique:q},a[f+g].nTr=d}e=e.nextSibling}}}function qa(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],fa(c,b)));for(var b=0,e=c.length;b<e;b++)for(var f=0,g=c[b].length;f<g;f++)if(c[b][f].unique&&(!d[f]||!a.bSortCellsTop))d[f]=c[b][f].cell;return d}function ra(a,b,c){w(a,"aoServerParams","serverParams",[b]);if(b&&h.isArray(b)){var d={},e=/(.*?)\[\]$/;h.each(b,function(a,b){var c=
|
||||||
|
b.name.match(e);c?(c=c[0],d[c]||(d[c]=[]),d[c].push(b.value)):d[b.name]=b.value});b=d}var f,g=a.ajax,i=a.oInstance,j=function(b){w(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(h.isPlainObject(g)&&g.data){f=g.data;var n=h.isFunction(f)?f(b,a):f,b=h.isFunction(f)&&n?n:h.extend(!0,b,n);delete g.data}n={data:b,success:function(b){var c=b.error||b.sError;c&&J(a,0,c);a.json=b;j(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c){var d=w(a,null,"xhr",[a,null,a.jqXHR]);-1===h.inArray(!0,d)&&("parsererror"==
|
||||||
|
c?J(a,0,"Invalid JSON response",1):4===b.readyState&&J(a,0,"Ajax error",7));C(a,!1)}};a.oAjaxData=b;w(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(i,a.sAjaxSource,h.map(b,function(a,b){return{name:b,value:a}}),j,a):a.sAjaxSource||"string"===typeof g?a.jqXHR=h.ajax(h.extend(n,{url:g||a.sAjaxSource})):h.isFunction(g)?a.jqXHR=g.call(i,b,j,a):(a.jqXHR=h.ajax(h.extend(n,g)),g.data=f)}function lb(a){return a.bAjaxDataGet?(a.iDraw++,C(a,!0),ra(a,ub(a),function(b){vb(a,b)}),!1):!0}function ub(a){var b=
|
||||||
|
a.aoColumns,c=b.length,d=a.oFeatures,e=a.oPreviousSearch,f=a.aoPreSearchCols,g,i=[],j,n,l,r=V(a);g=a._iDisplayStart;j=!1!==d.bPaginate?a._iDisplayLength:-1;var q=function(a,b){i.push({name:a,value:b})};q("sEcho",a.iDraw);q("iColumns",c);q("sColumns",D(b,"sName").join(","));q("iDisplayStart",g);q("iDisplayLength",j);var k={draw:a.iDraw,columns:[],order:[],start:g,length:j,search:{value:e.sSearch,regex:e.bRegex}};for(g=0;g<c;g++)n=b[g],l=f[g],j="function"==typeof n.mData?"function":n.mData,k.columns.push({data:j,
|
||||||
|
name:n.sName,searchable:n.bSearchable,orderable:n.bSortable,search:{value:l.sSearch,regex:l.bRegex}}),q("mDataProp_"+g,j),d.bFilter&&(q("sSearch_"+g,l.sSearch),q("bRegex_"+g,l.bRegex),q("bSearchable_"+g,n.bSearchable)),d.bSort&&q("bSortable_"+g,n.bSortable);d.bFilter&&(q("sSearch",e.sSearch),q("bRegex",e.bRegex));d.bSort&&(h.each(r,function(a,b){k.order.push({column:b.col,dir:b.dir});q("iSortCol_"+a,b.col);q("sSortDir_"+a,b.dir)}),q("iSortingCols",r.length));b=m.ext.legacy.ajax;return null===b?a.sAjaxSource?
|
||||||
|
i:k:b?i:k}function vb(a,b){var c=sa(a,b),d=b.sEcho!==k?b.sEcho:b.draw,e=b.iTotalRecords!==k?b.iTotalRecords:b.recordsTotal,f=b.iTotalDisplayRecords!==k?b.iTotalDisplayRecords:b.recordsFiltered;if(d){if(1*d<a.iDraw)return;a.iDraw=1*d}na(a);a._iRecordsTotal=parseInt(e,10);a._iRecordsDisplay=parseInt(f,10);d=0;for(e=c.length;d<e;d++)L(a,c[d]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;M(a);a._bInitComplete||ta(a,b);a.bAjaxDataGet=!0;C(a,!1)}function sa(a,b){var c=h.isPlainObject(a.ajax)&&
|
||||||
|
a.ajax.dataSrc!==k?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===c?b.aaData||b[c]:""!==c?P(c)(b):b}function pb(a){var b=a.oClasses,c=a.sTableId,d=a.oLanguage,e=a.oPreviousSearch,f=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',i=d.sSearch,i=i.match(/_INPUT_/)?i.replace("_INPUT_",g):i+g,b=h("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(i)),f=function(){var b=!this.value?"":this.value;b!=e.sSearch&&(ha(a,{sSearch:b,bRegex:e.bRegex,bSmart:e.bSmart,
|
||||||
|
bCaseInsensitive:e.bCaseInsensitive}),a._iDisplayStart=0,M(a))},g=null!==a.searchDelay?a.searchDelay:"ssp"===y(a)?400:0,j=h("input",b).val(e.sSearch).attr("placeholder",d.sSearchPlaceholder).bind("keyup.DT search.DT input.DT paste.DT cut.DT",g?ua(f,g):f).bind("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);h(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{j[0]!==T.activeElement&&j.val(e.sSearch)}catch(d){}});return b[0]}function ha(a,b,c){var d=a.oPreviousSearch,
|
||||||
|
e=a.aoPreSearchCols,f=function(a){d.sSearch=a.sSearch;d.bRegex=a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive};Ia(a);if("ssp"!=y(a)){wb(a,b.sSearch,c,b.bEscapeRegex!==k?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<e.length;b++)xb(a,e[b].sSearch,b,e[b].bEscapeRegex!==k?!e[b].bEscapeRegex:e[b].bRegex,e[b].bSmart,e[b].bCaseInsensitive);yb(a)}else f(b);a.bFiltered=!0;w(a,null,"search",[a])}function yb(a){for(var b=m.ext.search,c=a.aiDisplay,d,e,f=0,g=b.length;f<
|
||||||
|
g;f++){for(var i=[],j=0,n=c.length;j<n;j++)e=c[j],d=a.aoData[e],b[f](a,d._aFilterData,e,d._aData,j)&&i.push(e);c.length=0;h.merge(c,i)}}function xb(a,b,c,d,e,f){if(""!==b)for(var g=a.aiDisplay,d=Qa(b,d,e,f),e=g.length-1;0<=e;e--)b=a.aoData[g[e]]._aFilterData[c],d.test(b)||g.splice(e,1)}function wb(a,b,c,d,e,f){var d=Qa(b,d,e,f),e=a.oPreviousSearch.sSearch,f=a.aiDisplayMaster,g;0!==m.ext.search.length&&(c=!0);g=zb(a);if(0>=b.length)a.aiDisplay=f.slice();else{if(g||c||e.length>b.length||0!==b.indexOf(e)||
|
||||||
|
a.bSorted)a.aiDisplay=f.slice();b=a.aiDisplay;for(c=b.length-1;0<=c;c--)d.test(a.aoData[b[c]]._sFilterRow)||b.splice(c,1)}}function Qa(a,b,c,d){a=b?a:va(a);c&&(a="^(?=.*?"+h.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0))var b=a.match(/^"(.*)"$/),a=b?b[1]:a;return a.replace('"',"")}).join(")(?=.*?")+").*$");return RegExp(a,d?"i":"")}function va(a){return a.replace(Yb,"\\$1")}function zb(a){var b=a.aoColumns,c,d,e,f,g,i,j,h,l=m.ext.type.search;c=!1;d=0;for(f=a.aoData.length;d<
|
||||||
|
f;d++)if(h=a.aoData[d],!h._aFilterData){i=[];e=0;for(g=b.length;e<g;e++)c=b[e],c.bSearchable?(j=B(a,d,e,"filter"),l[c.sType]&&(j=l[c.sType](j)),null===j&&(j=""),"string"!==typeof j&&j.toString&&(j=j.toString())):j="",j.indexOf&&-1!==j.indexOf("&")&&(wa.innerHTML=j,j=Zb?wa.textContent:wa.innerText),j.replace&&(j=j.replace(/[\r\n]/g,"")),i.push(j);h._aFilterData=i;h._sFilterRow=i.join(" ");c=!0}return c}function Ab(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,caseInsensitive:a.bCaseInsensitive}}
|
||||||
|
function Bb(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function sb(a){var b=a.sTableId,c=a.aanFeatures.i,d=h("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:Cb,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),h(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function Cb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,d=a._iDisplayStart+1,e=a.fnDisplayEnd(),f=a.fnRecordsTotal(),
|
||||||
|
g=a.fnRecordsDisplay(),i=g?c.sInfo:c.sInfoEmpty;g!==f&&(i+=" "+c.sInfoFiltered);i+=c.sInfoPostFix;i=Db(a,i);c=c.fnInfoCallback;null!==c&&(i=c.call(a.oInstance,a,d,e,f,g,i));h(b).html(i)}}function Db(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,f=a.fnRecordsDisplay(),g=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,f)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(d/
|
||||||
|
e))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(f/e)))}function ia(a){var b,c,d=a.iInitDisplayStart,e=a.aoColumns,f;c=a.oFeatures;var g=a.bDeferLoading;if(a.bInitialised){nb(a);kb(a);ga(a,a.aoHeader);ga(a,a.aoFooter);C(a,!0);c.bAutoWidth&&Ha(a);b=0;for(c=e.length;b<c;b++)f=e[b],f.sWidth&&(f.nTh.style.width=u(f.sWidth));w(a,null,"preInit",[a]);R(a);e=y(a);if("ssp"!=e||g)"ajax"==e?ra(a,[],function(c){var f=sa(a,c);for(b=0;b<f.length;b++)L(a,f[b]);a.iInitDisplayStart=d;R(a);C(a,!1);ta(a,c)},a):(C(a,!1),
|
||||||
|
ta(a))}else setTimeout(function(){ia(a)},200)}function ta(a,b){a._bInitComplete=!0;(b||a.oInit.aaData)&&Y(a);w(a,"aoInitComplete","init",[a,b])}function Ra(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Sa(a);w(a,null,"length",[a,c])}function ob(a){for(var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=h.isArray(d[0]),f=e?d[0]:d,d=e?d[1]:d,e=h("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect}),g=0,i=f.length;g<i;g++)e[0][g]=new Option(d[g],f[g]);var j=h("<div><label/></div>").addClass(b.sLength);
|
||||||
|
a.aanFeatures.l||(j[0].id=c+"_length");j.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));h("select",j).val(a._iDisplayLength).bind("change.DT",function(){Ra(a,h(this).val());M(a)});h(a.nTable).bind("length.dt.DT",function(b,c,d){a===c&&h("select",j).val(d)});return j[0]}function tb(a){var b=a.sPaginationType,c=m.ext.pager[b],d="function"===typeof c,e=function(a){M(a)},b=h("<div/>").addClass(a.oClasses.sPaging+b)[0],f=a.aanFeatures;d||c.fnInit(a,b,e);f.p||(b.id=a.sTableId+
|
||||||
|
"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,j=a._iDisplayLength,h=a.fnRecordsDisplay(),l=-1===j,b=l?0:Math.ceil(b/j),j=l?1:Math.ceil(h/j),h=c(b,j),k,l=0;for(k=f.p.length;l<k;l++)Pa(a,"pageButton")(a,f.p[l],l,h,b,j)}else c.fnUpdate(a,e)},sName:"pagination"}));return b}function Ta(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===e?d=0:"number"===typeof b?(d=b*e,d>f&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==
|
||||||
|
b?d+e<f&&(d+=e):"last"==b?d=Math.floor((f-1)/e)*e:J(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==d;a._iDisplayStart=d;b&&(w(a,null,"page",[a]),c&&M(a));return b}function qb(a){return h("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display",b?"block":"none");w(a,null,"processing",[a,b])}function rb(a){var b=h(a.nTable);b.attr("role",
|
||||||
|
"grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,f=a.oClasses,g=b.children("caption"),i=g.length?g[0]._captionSide:null,j=h(b[0].cloneNode(!1)),n=h(b[0].cloneNode(!1)),l=b.children("tfoot");c.sX&&"100%"===b.attr("width")&&b.removeAttr("width");l.length||(l=null);j=h("<div/>",{"class":f.sScrollWrapper}).append(h("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?!d?null:u(d):"100%"}).append(h("<div/>",{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",
|
||||||
|
width:c.sXInner||"100%"}).append(j.removeAttr("id").css("margin-left",0).append("top"===i?g:null).append(b.children("thead"))))).append(h("<div/>",{"class":f.sScrollBody}).css({position:"relative",overflow:"auto",width:!d?null:u(d)}).append(b));l&&j.append(h("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:d?!d?null:u(d):"100%"}).append(h("<div/>",{"class":f.sScrollFootInner}).append(n.removeAttr("id").css("margin-left",0).append("bottom"===i?g:null).append(b.children("tfoot")))));
|
||||||
|
var b=j.children(),k=b[0],f=b[1],q=l?b[2]:null;if(d)h(f).on("scroll.DT",function(){var a=this.scrollLeft;k.scrollLeft=a;l&&(q.scrollLeft=a)});h(f).css(e&&c.bCollapse?"max-height":"height",e);a.nScrollHead=k;a.nScrollBody=f;a.nScrollFoot=q;a.aoDrawCallback.push({fn:Z,sName:"scrolling"});return j[0]}function Z(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY,b=b.iBarWidth,f=h(a.nScrollHead),g=f[0].style,i=f.children("div"),j=i[0].style,n=i.children("table"),i=a.nScrollBody,l=h(i),k=i.style,q=h(a.nScrollFoot).children("div"),
|
||||||
|
m=q.children("table"),o=h(a.nTHead),E=h(a.nTable),p=E[0],t=p.style,N=a.nTFoot?h(a.nTFoot):null,Eb=a.oBrowser,w=Eb.bScrollOversize,s,v,O,x,y=[],z=[],A=[],B,C=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};E.children("thead, tfoot").remove();x=o.clone().prependTo(E);o=o.find("tr");v=x.find("tr");x.find("th, td").removeAttr("tabindex");N&&(O=N.clone().prependTo(E),s=N.find("tr"),O=O.find("tr"));c||(k.width="100%",f[0].style.width="100%");
|
||||||
|
h.each(qa(a,x),function(b,c){B=$(a,b);c.style.width=a.aoColumns[B].sWidth});N&&H(function(a){a.style.width=""},O);f=E.outerWidth();if(""===c){t.width="100%";if(w&&(E.find("tbody").height()>i.offsetHeight||"scroll"==l.css("overflow-y")))t.width=u(E.outerWidth()-b);f=E.outerWidth()}else""!==d&&(t.width=u(d),f=E.outerWidth());H(C,v);H(function(a){A.push(a.innerHTML);y.push(u(h(a).css("width")))},v);H(function(a,b){a.style.width=y[b]},o);h(v).height(0);N&&(H(C,O),H(function(a){z.push(u(h(a).css("width")))},
|
||||||
|
O),H(function(a,b){a.style.width=z[b]},s),h(O).height(0));H(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+A[b]+"</div>";a.style.width=y[b]},v);N&&H(function(a,b){a.innerHTML="";a.style.width=z[b]},O);if(E.outerWidth()<f){s=i.scrollHeight>i.offsetHeight||"scroll"==l.css("overflow-y")?f+b:f;if(w&&(i.scrollHeight>i.offsetHeight||"scroll"==l.css("overflow-y")))t.width=u(s-b);(""===c||""!==d)&&J(a,1,"Possible column misalignment",6)}else s="100%";k.width=
|
||||||
|
u(s);g.width=u(s);N&&(a.nScrollFoot.style.width=u(s));!e&&w&&(k.height=u(p.offsetHeight+b));c=E.outerWidth();n[0].style.width=u(c);j.width=u(c);d=E.height()>i.clientHeight||"scroll"==l.css("overflow-y");e="padding"+(Eb.bScrollbarLeft?"Left":"Right");j[e]=d?b+"px":"0px";N&&(m[0].style.width=u(c),q[0].style.width=u(c),q[0].style[e]=d?b+"px":"0px");l.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)i.scrollTop=0}function H(a,b,c){for(var d=0,e=0,f=b.length,g,i;e<f;){g=b[e].firstChild;for(i=c?c[e].firstChild:
|
||||||
|
null;g;)1===g.nodeType&&(c?a(g,i,d):a(g,d),d++),g=g.nextSibling,i=c?i.nextSibling:null;e++}}function Ha(a){var b=a.nTable,c=a.aoColumns,d=a.oScroll,e=d.sY,f=d.sX,g=d.sXInner,i=c.length,j=aa(a,"bVisible"),n=h("th",a.nTHead),l=b.getAttribute("width"),k=b.parentNode,q=!1,m,o,p;p=a.oBrowser;d=p.bScrollOversize;(m=b.style.width)&&-1!==m.indexOf("%")&&(l=m);for(m=0;m<j.length;m++)o=c[j[m]],null!==o.sWidth&&(o.sWidth=Fb(o.sWidthOrig,k),q=!0);if(d||!q&&!f&&!e&&i==ca(a)&&i==n.length)for(m=0;m<i;m++){if(j=
|
||||||
|
$(a,m))c[j].sWidth=u(n.eq(m).width())}else{i=h(b).clone().css("visibility","hidden").removeAttr("id");i.find("tbody tr").remove();var t=h("<tr/>").appendTo(i.find("tbody"));i.find("thead, tfoot").remove();i.append(h(a.nTHead).clone()).append(h(a.nTFoot).clone());i.find("tfoot th, tfoot td").css("width","");n=qa(a,i.find("thead")[0]);for(m=0;m<j.length;m++)o=c[j[m]],n[m].style.width=null!==o.sWidthOrig&&""!==o.sWidthOrig?u(o.sWidthOrig):"";if(a.aoData.length)for(m=0;m<j.length;m++)q=j[m],o=c[q],h(Gb(a,
|
||||||
|
q)).clone(!1).append(o.sContentPadding).appendTo(t);q=h("<div/>").css(f||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(i).appendTo(k);f&&g?i.width(g):f?(i.css("width","auto"),i.width()<k.clientWidth&&i.width(k.clientWidth)):e?i.width(k.clientWidth):l&&i.width(l);if(f){for(m=g=0;m<j.length;m++)o=c[j[m]],e=p.bBounding?n[m].getBoundingClientRect().width:h(n[m]).outerWidth(),g+=null===o.sWidthOrig?e:parseInt(o.sWidth,10)+e-h(n[m]).width();i.width(u(g));b.style.width=
|
||||||
|
u(g)}for(m=0;m<j.length;m++)if(o=c[j[m]],p=h(n[m]).width())o.sWidth=u(p);b.style.width=u(i.css("width"));q.remove()}l&&(b.style.width=u(l));if((l||f)&&!a._reszEvt)b=function(){h(Fa).bind("resize.DT-"+a.sInstance,ua(function(){Y(a)}))},d?setTimeout(b,1E3):b(),a._reszEvt=!0}function ua(a,b){var c=b!==k?b:200,d,e;return function(){var b=this,g=+new Date,i=arguments;d&&g<d+c?(clearTimeout(e),e=setTimeout(function(){d=k;a.apply(b,i)},c)):(d=g,a.apply(b,i))}}function Fb(a,b){if(!a)return 0;var c=h("<div/>").css("width",
|
||||||
|
u(a)).appendTo(b||T.body),d=c[0].offsetWidth;c.remove();return d}function Gb(a,b){var c=Hb(a,b);if(0>c)return null;var d=a.aoData[c];return!d.nTr?h("<td/>").html(B(a,c,b,"display"))[0]:d.anCells[b]}function Hb(a,b){for(var c,d=-1,e=-1,f=0,g=a.aoData.length;f<g;f++)c=B(a,f,b,"display")+"",c=c.replace($b,""),c.length>d&&(d=c.length,e=f);return e}function u(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function V(a){var b,c,d=[],e=a.aoColumns,f,g,i,j;b=a.aaSortingFixed;
|
||||||
|
c=h.isPlainObject(b);var n=[];f=function(a){a.length&&!h.isArray(a[0])?n.push(a):h.merge(n,a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<n.length;a++){j=n[a][0];f=e[j].aDataSort;b=0;for(c=f.length;b<c;b++)g=f[b],i=e[g].sType||"string",n[a]._idx===k&&(n[a]._idx=h.inArray(n[a][1],e[g].asSorting)),d.push({src:j,col:g,dir:n[a][1],index:n[a]._idx,type:i,formatter:m.ext.type.order[i+"-pre"]})}return d}function mb(a){var b,c,d=[],e=m.ext.type.order,f=a.aoData,g=
|
||||||
|
0,i,j=a.aiDisplayMaster,h;Ia(a);h=V(a);b=0;for(c=h.length;b<c;b++)i=h[b],i.formatter&&g++,Ib(a,i.col);if("ssp"!=y(a)&&0!==h.length){b=0;for(c=j.length;b<c;b++)d[j[b]]=b;g===h.length?j.sort(function(a,b){var c,e,g,i,j=h.length,k=f[a]._aSortData,m=f[b]._aSortData;for(g=0;g<j;g++)if(i=h[g],c=k[i.col],e=m[i.col],c=c<e?-1:c>e?1:0,0!==c)return"asc"===i.dir?c:-c;c=d[a];e=d[b];return c<e?-1:c>e?1:0}):j.sort(function(a,b){var c,g,i,j,k=h.length,m=f[a]._aSortData,p=f[b]._aSortData;for(i=0;i<k;i++)if(j=h[i],
|
||||||
|
c=m[j.col],g=p[j.col],j=e[j.type+"-"+j.dir]||e["string-"+j.dir],c=j(c,g),0!==c)return c;c=d[a];g=d[b];return c<g?-1:c>g?1:0})}a.bSorted=!0}function Jb(a){for(var b,c,d=a.aoColumns,e=V(a),a=a.oLanguage.oAria,f=0,g=d.length;f<g;f++){c=d[f];var i=c.asSorting;b=c.sTitle.replace(/<.*?>/g,"");var j=c.nTh;j.removeAttribute("aria-sort");c.bSortable&&(0<e.length&&e[0].col==f?(j.setAttribute("aria-sort","asc"==e[0].dir?"ascending":"descending"),c=i[e[0].index+1]||i[0]):c=i[0],b+="asc"===c?a.sSortAscending:
|
||||||
|
a.sSortDescending);j.setAttribute("aria-label",b)}}function Ua(a,b,c,d){var e=a.aaSorting,f=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===k&&(c=h.inArray(a[1],f));return c+1<f.length?c+1:b?null:0};"number"===typeof e[0]&&(e=a.aaSorting=[e]);c&&a.oFeatures.bSortMulti?(c=h.inArray(b,D(e,"0")),-1!==c?(b=g(e[c],!0),null===b&&1===e.length&&(b=0),null===b?e.splice(c,1):(e[c][1]=f[b],e[c]._idx=b)):(e.push([b,f[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=g(e[0]),e.length=1,e[0][1]=f[b],
|
||||||
|
e[0]._idx=b):(e.length=0,e.push([b,f[0]]),e[0]._idx=0);R(a);"function"==typeof d&&d(a)}function Oa(a,b,c,d){var e=a.aoColumns[c];Va(b,{},function(b){!1!==e.bSortable&&(a.oFeatures.bProcessing?(C(a,!0),setTimeout(function(){Ua(a,c,b.shiftKey,d);"ssp"!==y(a)&&C(a,!1)},0)):Ua(a,c,b.shiftKey,d))})}function xa(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,d=V(a),e=a.oFeatures,f,g;if(e.bSort&&e.bSortClasses){e=0;for(f=b.length;e<f;e++)g=b[e].src,h(D(a.aoData,"anCells",g)).removeClass(c+(2>e?e+1:3));e=0;
|
||||||
|
for(f=d.length;e<f;e++)g=d[e].src,h(D(a.aoData,"anCells",g)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function Ib(a,b){var c=a.aoColumns[b],d=m.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,ba(a,b)));for(var f,g=m.ext.type.order[c.sType+"-pre"],i=0,h=a.aoData.length;i<h;i++)if(c=a.aoData[i],c._aSortData||(c._aSortData=[]),!c._aSortData[b]||d)f=d?e[i]:B(a,i,b,"sort"),c._aSortData[b]=g?g(f):f}function ya(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,
|
||||||
|
length:a._iDisplayLength,order:h.extend(!0,[],a.aaSorting),search:Ab(a.oPreviousSearch),columns:h.map(a.aoColumns,function(b,d){return{visible:b.bVisible,search:Ab(a.aoPreSearchCols[d])}})};w(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,b)}}function Kb(a){var b,c,d=a.aoColumns;if(a.oFeatures.bStateSave){var e=a.fnStateLoadCallback.call(a.oInstance,a);if(e&&e.time&&(b=w(a,"aoStateLoadParams","stateLoadParams",[a,e]),-1===h.inArray(!1,b)&&(b=
|
||||||
|
a.iStateDuration,!(0<b&&e.time<+new Date-1E3*b)&&d.length===e.columns.length))){a.oLoadedState=h.extend(!0,{},e);e.start!==k&&(a._iDisplayStart=e.start,a.iInitDisplayStart=e.start);e.length!==k&&(a._iDisplayLength=e.length);e.order!==k&&(a.aaSorting=[],h.each(e.order,function(b,c){a.aaSorting.push(c[0]>=d.length?[0,c[1]]:c)}));e.search!==k&&h.extend(a.oPreviousSearch,Bb(e.search));b=0;for(c=e.columns.length;b<c;b++){var f=e.columns[b];f.visible!==k&&(d[b].bVisible=f.visible);f.search!==k&&h.extend(a.aoPreSearchCols[b],
|
||||||
|
Bb(f.search))}w(a,"aoStateLoaded","stateLoaded",[a,e])}}}function za(a){var b=m.settings,a=h.inArray(a,D(b,"nTable"));return-1!==a?b[a]:null}function J(a,b,c,d){c="DataTables warning: "+(a?"table id="+a.sTableId+" - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+d);if(b)Fa.console&&console.log&&console.log(c);else if(b=m.ext,b=b.sErrMode||b.errMode,a&&w(a,null,"error",[a,d,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&
|
||||||
|
b(a,d,c)}}function F(a,b,c,d){h.isArray(c)?h.each(c,function(c,d){h.isArray(d)?F(a,b,d[0],d[1]):F(a,b,d)}):(d===k&&(d=c),b[c]!==k&&(a[d]=b[c]))}function Lb(a,b,c){var d,e;for(e in b)b.hasOwnProperty(e)&&(d=b[e],h.isPlainObject(d)?(h.isPlainObject(a[e])||(a[e]={}),h.extend(!0,a[e],d)):a[e]=c&&"data"!==e&&"aaData"!==e&&h.isArray(d)?d.slice():d);return a}function Va(a,b,c){h(a).bind("click.DT",b,function(b){a.blur();c(b)}).bind("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).bind("selectstart.DT",
|
||||||
|
function(){return!1})}function z(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function w(a,b,c,d){var e=[];b&&(e=h.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,d)}));null!==c&&(b=h.Event(c+".dt"),h(a.nTable).trigger(b,d),e.push(b.result));return e}function Sa(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),d=a._iDisplayLength;b>=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Pa(a,b){var c=a.renderer,d=m.ext.renderer[b];return h.isPlainObject(c)&&c[b]?d[c[b]]||d._:"string"===
|
||||||
|
typeof c?d[c]||d._:d._}function y(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Aa(a,b){var c=[],c=Mb.numbers_length,d=Math.floor(c/2);b<=c?c=W(0,b):a<=d?(c=W(0,c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-d?c=W(b-(c-2),b):(c=W(a-d+2,a+d-1),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function cb(a){h.each({num:function(b){return Ba(b,a)},"num-fmt":function(b){return Ba(b,a,Wa)},"html-num":function(b){return Ba(b,
|
||||||
|
a,Ca)},"html-num-fmt":function(b){return Ba(b,a,Ca,Wa)}},function(b,c){v.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(v.type.search[b+a]=v.type.search.html)})}function Nb(a){return function(){var b=[za(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return m.ext.internal[a].apply(this,b)}}var m,v,t,p,s,Xa={},Ob=/[\r\n]/g,Ca=/<.*?>/g,ac=/^[\w\+\-]/,bc=/[\w\+\-]$/,Yb=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Wa=/[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi,
|
||||||
|
K=function(a){return!a||!0===a||"-"===a?!0:!1},Pb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Qb=function(a,b){Xa[b]||(Xa[b]=RegExp(va(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(Xa[b],"."):a},Ya=function(a,b,c){var d="string"===typeof a;if(K(a))return!0;b&&d&&(a=Qb(a,b));c&&d&&(a=a.replace(Wa,""));return!isNaN(parseFloat(a))&&isFinite(a)},Rb=function(a,b,c){return K(a)?!0:!(K(a)||"string"===typeof a)?null:Ya(a.replace(Ca,""),b,c)?!0:null},D=function(a,
|
||||||
|
b,c){var d=[],e=0,f=a.length;if(c!==k)for(;e<f;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e<f;e++)a[e]&&d.push(a[e][b]);return d},ja=function(a,b,c,d){var e=[],f=0,g=b.length;if(d!==k)for(;f<g;f++)a[b[f]][c]&&e.push(a[b[f]][c][d]);else for(;f<g;f++)e.push(a[b[f]][c]);return e},W=function(a,b){var c=[],d;b===k?(b=0,d=a):(d=b,b=a);for(var e=b;e<d;e++)c.push(e);return c},Sb=function(a){for(var b=[],c=0,d=a.length;c<d;c++)a[c]&&b.push(a[c]);return b},pa=function(a){var b=[],c,d,e=a.length,f,g=0;
|
||||||
|
d=0;a:for(;d<e;d++){c=a[d];for(f=0;f<g;f++)if(b[f]===c)continue a;b.push(c);g++}return b},A=function(a,b,c){a[b]!==k&&(a[c]=a[b])},da=/\[.*?\]$/,U=/\(\)$/,wa=h("<div>")[0],Zb=wa.textContent!==k,$b=/<.*?>/g;m=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new t(za(this[v.iApiIndex])):new t(this)};this.fnAddData=function(a,b){var c=this.api(!0),d=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?
|
||||||
|
c.rows.add(a):c.row.add(a);(b===k||b)&&c.draw();return d.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===k||a?b.draw(!1):(""!==d.sX||""!==d.sY)&&Z(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0),a=d.rows(a),e=a.settings()[0],h=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,h);
|
||||||
|
(c===k||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};this.fnFilter=function(a,b,c,d,e,h){e=this.api(!0);null===b||b===k?e.search(a,c,d,h):e.column(b).search(a,c,d,h);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);
|
||||||
|
return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=
|
||||||
|
function(a,b,c){a=this.api(!0).column(a).visible(b);(c===k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return za(this[v.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===k||e)&&h.columns.adjust();(d===k||d)&&h.draw();return 0};this.fnVersionCheck=v.fnVersionCheck;var b=this,c=a===k,d=this.length;
|
||||||
|
c&&(a={});this.oApi=this.internal=v.internal;for(var e in m.ext.internal)e&&(this[e]=Nb(e));this.each(function(){var e={},e=1<d?Lb(e,a,!0):a,g=0,i,j=this.getAttribute("id"),n=!1,l=m.defaults,r=h(this);if("table"!=this.nodeName.toLowerCase())J(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{db(l);eb(l.column);I(l,l,!0);I(l.column,l.column,!0);I(l,h.extend(e,r.data()));var q=m.settings,g=0;for(i=q.length;g<i;g++){var p=q[g];if(p.nTable==this||p.nTHead.parentNode==this||p.nTFoot&&
|
||||||
|
p.nTFoot.parentNode==this){g=e.bRetrieve!==k?e.bRetrieve:l.bRetrieve;if(c||g)return p.oInstance;if(e.bDestroy!==k?e.bDestroy:l.bDestroy){p.oInstance.fnDestroy();break}else{J(p,0,"Cannot reinitialise DataTable",3);return}}if(p.sTableId==this.id){q.splice(g,1);break}}if(null===j||""===j)this.id=j="DataTables_Table_"+m.ext._unique++;var o=h.extend(!0,{},m.models.oSettings,{sDestroyWidth:r[0].style.width,sInstance:j,sTableId:j});o.nTable=this;o.oApi=b.internal;o.oInit=e;q.push(o);o.oInstance=1===b.length?
|
||||||
|
b:r.dataTable();db(e);e.oLanguage&&S(e.oLanguage);e.aLengthMenu&&!e.iDisplayLength&&(e.iDisplayLength=h.isArray(e.aLengthMenu[0])?e.aLengthMenu[0][0]:e.aLengthMenu[0]);e=Lb(h.extend(!0,{},l),e);F(o.oFeatures,e,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));F(o,e,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp",
|
||||||
|
"iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"],["bJQueryUI","bJUI"]]);F(o.oScroll,e,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);F(o.oLanguage,e,"fnInfoCallback");z(o,"aoDrawCallback",e.fnDrawCallback,"user");z(o,"aoServerParams",
|
||||||
|
e.fnServerParams,"user");z(o,"aoStateSaveParams",e.fnStateSaveParams,"user");z(o,"aoStateLoadParams",e.fnStateLoadParams,"user");z(o,"aoStateLoaded",e.fnStateLoaded,"user");z(o,"aoRowCallback",e.fnRowCallback,"user");z(o,"aoRowCreatedCallback",e.fnCreatedRow,"user");z(o,"aoHeaderCallback",e.fnHeaderCallback,"user");z(o,"aoFooterCallback",e.fnFooterCallback,"user");z(o,"aoInitComplete",e.fnInitComplete,"user");z(o,"aoPreDrawCallback",e.fnPreDrawCallback,"user");o.rowIdFn=P(e.rowId);fb(o);j=o.oClasses;
|
||||||
|
e.bJQueryUI?(h.extend(j,m.ext.oJUIClasses,e.oClasses),e.sDom===l.sDom&&"lfrtip"===l.sDom&&(o.sDom='<"H"lfr>t<"F"ip>'),o.renderer)?h.isPlainObject(o.renderer)&&!o.renderer.header&&(o.renderer.header="jqueryui"):o.renderer="jqueryui":h.extend(j,m.ext.classes,e.oClasses);r.addClass(j.sTable);o.iInitDisplayStart===k&&(o.iInitDisplayStart=e.iDisplayStart,o._iDisplayStart=e.iDisplayStart);null!==e.iDeferLoading&&(o.bDeferLoading=!0,g=h.isArray(e.iDeferLoading),o._iRecordsDisplay=g?e.iDeferLoading[0]:e.iDeferLoading,
|
||||||
|
o._iRecordsTotal=g?e.iDeferLoading[1]:e.iDeferLoading);var t=o.oLanguage;h.extend(!0,t,e.oLanguage);""!==t.sUrl&&(h.ajax({dataType:"json",url:t.sUrl,success:function(a){S(a);I(l.oLanguage,a);h.extend(true,t,a);ia(o)},error:function(){ia(o)}}),n=!0);null===e.asStripeClasses&&(o.asStripeClasses=[j.sStripeOdd,j.sStripeEven]);var g=o.asStripeClasses,s=r.children("tbody").find("tr").eq(0);-1!==h.inArray(!0,h.map(g,function(a){return s.hasClass(a)}))&&(h("tbody tr",this).removeClass(g.join(" ")),o.asDestroyStripes=
|
||||||
|
g.slice());q=[];g=this.getElementsByTagName("thead");0!==g.length&&(fa(o.aoHeader,g[0]),q=qa(o));if(null===e.aoColumns){p=[];g=0;for(i=q.length;g<i;g++)p.push(null)}else p=e.aoColumns;g=0;for(i=p.length;g<i;g++)Ga(o,q?q[g]:null);hb(o,e.aoColumnDefs,p,function(a,b){la(o,a,b)});if(s.length){var u=function(a,b){return a.getAttribute("data-"+b)!==null?b:null};h(s[0]).children("th, td").each(function(a,b){var c=o.aoColumns[a];if(c.mData===a){var d=u(b,"sort")||u(b,"order"),e=u(b,"filter")||u(b,"search");
|
||||||
|
if(d!==null||e!==null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:k,type:d!==null?a+".@data-"+d:k,filter:e!==null?a+".@data-"+e:k};la(o,a)}}})}var v=o.oFeatures;e.bStateSave&&(v.bStateSave=!0,Kb(o,e),z(o,"aoDrawCallback",ya,"state_save"));if(e.aaSorting===k){q=o.aaSorting;g=0;for(i=q.length;g<i;g++)q[g][1]=o.aoColumns[g].asSorting[0]}xa(o);v.bSort&&z(o,"aoDrawCallback",function(){if(o.bSorted){var a=V(o),b={};h.each(a,function(a,c){b[c.src]=c.dir});w(o,null,"order",[o,a,b]);Jb(o)}});z(o,
|
||||||
|
"aoDrawCallback",function(){(o.bSorted||y(o)==="ssp"||v.bDeferRender)&&xa(o)},"sc");g=r.children("caption").each(function(){this._captionSide=r.css("caption-side")});i=r.children("thead");0===i.length&&(i=h("<thead/>").appendTo(this));o.nTHead=i[0];i=r.children("tbody");0===i.length&&(i=h("<tbody/>").appendTo(this));o.nTBody=i[0];i=r.children("tfoot");if(0===i.length&&0<g.length&&(""!==o.oScroll.sX||""!==o.oScroll.sY))i=h("<tfoot/>").appendTo(this);0===i.length||0===i.children().length?r.addClass(j.sNoFooter):
|
||||||
|
0<i.length&&(o.nTFoot=i[0],fa(o.aoFooter,o.nTFoot));if(e.aaData)for(g=0;g<e.aaData.length;g++)L(o,e.aaData[g]);else(o.bDeferLoading||"dom"==y(o))&&ma(o,h(o.nTBody).children("tr"));o.aiDisplay=o.aiDisplayMaster.slice();o.bInitialised=!0;!1===n&&ia(o)}});b=null;return this};var Tb=[],x=Array.prototype,cc=function(a){var b,c,d=m.settings,e=h.map(d,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=h.inArray(a,e),-1!==b?[d[b]]:
|
||||||
|
null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=h(a):a instanceof h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,e);return-1!==b?d[b]:null}).toArray()};t=function(a,b){if(!(this instanceof t))return new t(a,b);var c=[],d=function(a){(a=cc(a))&&(c=c.concat(a))};if(h.isArray(a))for(var e=0,f=a.length;e<f;e++)d(a[e]);else d(a);this.context=pa(c);b&&h.merge(this,b);this.selector={rows:null,cols:null,opts:null};t.extend(this,this,Tb)};
|
||||||
|
m.Api=t;h.extend(t.prototype,{any:function(){return 0!==this.count()},concat:x.concat,context:[],count:function(){return this.flatten().length},each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new t(b[a],this[a]):null},filter:function(a){var b=[];if(x.filter)b=x.filter.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new t(this.context,b)},flatten:function(){var a=
|
||||||
|
[];return new t(this.context,a.concat.apply(a,this.toArray()))},join:x.join,indexOf:x.indexOf||function(a,b){for(var c=b||0,d=this.length;c<d;c++)if(this[c]===a)return c;return-1},iterator:function(a,b,c,d){var e=[],f,g,h,j,n,l=this.context,m,q,p=this.selector;"string"===typeof a&&(d=c,c=b,b=a,a=!1);g=0;for(h=l.length;g<h;g++){var o=new t(l[g]);if("table"===b)f=c.call(o,l[g],g),f!==k&&e.push(f);else if("columns"===b||"rows"===b)f=c.call(o,l[g],this[g],g),f!==k&&e.push(f);else if("column"===b||"column-rows"===
|
||||||
|
b||"row"===b||"cell"===b){q=this[g];"column-rows"===b&&(m=Da(l[g],p.opts));j=0;for(n=q.length;j<n;j++)f=q[j],f="cell"===b?c.call(o,l[g],f.row,f.column,g,j):c.call(o,l[g],f,g,j,m),f!==k&&e.push(f)}}return e.length||d?(a=new t(l,a?e.concat.apply([],e):e),b=a.selector,b.rows=p.rows,b.cols=p.cols,b.opts=p.opts,a):this},lastIndexOf:x.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(x.map)b=x.map.call(this,a,this);else for(var c=
|
||||||
|
0,d=this.length;c<d;c++)b.push(a.call(this,this[c],c));return new t(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:x.pop,push:x.push,reduce:x.reduce||function(a,b){return gb(this,a,b,0,this.length,1)},reduceRight:x.reduceRight||function(a,b){return gb(this,a,b,this.length-1,-1,-1)},reverse:x.reverse,selector:null,shift:x.shift,sort:x.sort,splice:x.splice,toArray:function(){return x.slice.call(this)},to$:function(){return h(this)},toJQuery:function(){return h(this)},
|
||||||
|
unique:function(){return new t(this.context,pa(this))},unshift:x.unshift});t.extend=function(a,b,c){if(c.length&&b&&(b instanceof t||b.__dt_wrapper)){var d,e,f,g=function(a,b,c){return function(){var d=b.apply(a,arguments);t.extend(d,d,c.methodExt);return d}};d=0;for(e=c.length;d<e;d++)f=c[d],b[f.name]="function"===typeof f.val?g(a,f.val,f):h.isPlainObject(f.val)?{}:f.val,b[f.name].__dt_wrapper=!0,t.extend(a,b[f.name],f.propExt)}};t.register=p=function(a,b){if(h.isArray(a))for(var c=0,d=a.length;c<
|
||||||
|
d;c++)t.register(a[c],b);else for(var e=a.split("."),f=Tb,g,i,c=0,d=e.length;c<d;c++){g=(i=-1!==e[c].indexOf("()"))?e[c].replace("()",""):e[c];var j;a:{j=0;for(var n=f.length;j<n;j++)if(f[j].name===g){j=f[j];break a}j=null}j||(j={name:g,val:{},methodExt:[],propExt:[]},f.push(j));c===d-1?j.val=b:f=i?j.methodExt:j.propExt}};t.registerPlural=s=function(a,b,c){t.register(a,c);t.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof t?a.length?h.isArray(a[0])?new t(a.context,
|
||||||
|
a[0]):a[0]:k:a})};p("tables()",function(a){var b;if(a){b=t;var c=this.context;if("number"===typeof a)a=[c[a]];else var d=h.map(c,function(a){return a.nTable}),a=h(d).filter(a).map(function(){var a=h.inArray(this,d);return c[a]}).toArray();b=new b(a)}else b=this;return b});p("table()",function(a){var a=this.tables(a),b=a.context;return b.length?new t(b[0]):a});s("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});s("tables().body()","table().body()",
|
||||||
|
function(){return this.iterator("table",function(a){return a.nTBody},1)});s("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});s("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});s("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});p("draw()",function(a){return this.iterator("table",function(b){"page"===
|
||||||
|
a?M(b):("string"===typeof a&&(a="full-hold"===a?!1:!0),R(b,!1===a))})});p("page()",function(a){return a===k?this.page.info().page:this.iterator("table",function(b){Ta(b,a)})});p("page.info()",function(){if(0===this.context.length)return k;var a=this.context[0],b=a._iDisplayStart,c=a._iDisplayLength,d=a.fnRecordsDisplay(),e=-1===c;return{page:e?0:Math.floor(b/c),pages:e?1:Math.ceil(d/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:d,serverSide:"ssp"===y(a)}});
|
||||||
|
p("page.len()",function(a){return a===k?0!==this.context.length?this.context[0]._iDisplayLength:k:this.iterator("table",function(b){Ra(b,a)})});var Ub=function(a,b,c){if(c){var d=new t(a);d.one("draw",function(){c(d.ajax.json())})}if("ssp"==y(a))R(a,b);else{C(a,!0);var e=a.jqXHR;e&&4!==e.readyState&&e.abort();ra(a,[],function(c){na(a);for(var c=sa(a,c),d=0,e=c.length;d<e;d++)L(a,c[d]);R(a,b);C(a,!1)})}};p("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});p("ajax.params()",
|
||||||
|
function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});p("ajax.reload()",function(a,b){return this.iterator("table",function(c){Ub(c,!1===b,a)})});p("ajax.url()",function(a){var b=this.context;if(a===k){if(0===b.length)return k;b=b[0];return b.ajax?h.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){h.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});p("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Ub(c,!1===b,a)})});
|
||||||
|
var Za=function(a,b,c,d,e){var f=[],g,i,j,n,l,m;j=typeof b;if(!b||"string"===j||"function"===j||b.length===k)b=[b];j=0;for(n=b.length;j<n;j++){i=b[j]&&b[j].split?b[j].split(","):[b[j]];l=0;for(m=i.length;l<m;l++)(g=c("string"===typeof i[l]?h.trim(i[l]):i[l]))&&g.length&&(f=f.concat(g))}a=v.selector[a];if(a.length){j=0;for(n=a.length;j<n;j++)f=a[j](d,e,f)}return pa(f)},$a=function(a){a||(a={});a.filter&&a.search===k&&(a.search=a.filter);return h.extend({search:"none",order:"current",page:"all"},a)},
|
||||||
|
ab=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Da=function(a,b){var c,d,e,f=[],g=a.aiDisplay;c=a.aiDisplayMaster;var i=b.search;d=b.order;e=b.page;if("ssp"==y(a))return"removed"===i?[]:W(0,c.length);if("current"==e){c=a._iDisplayStart;for(d=a.fnDisplayEnd();c<d;c++)f.push(g[c])}else if("current"==d||"applied"==d)f="none"==i?c.slice():"applied"==i?g.slice():h.map(c,function(a){return-1===h.inArray(a,
|
||||||
|
g)?a:null});else if("index"==d||"original"==d){c=0;for(d=a.aoData.length;c<d;c++)"none"==i?f.push(c):(e=h.inArray(c,g),(-1===e&&"removed"==i||0<=e&&"applied"==i)&&f.push(c))}return f};p("rows()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=$a(b),c=this.iterator("table",function(c){var e=b;return Za("row",a,function(a){var b=Pb(a);if(b!==null&&!e)return[b];var i=Da(c,e);if(b!==null&&h.inArray(b,i)!==-1)return[b];if(!a)return i;if(typeof a==="function")return h.map(i,function(b){var e=
|
||||||
|
c.aoData[b];return a(b,e._aData,e.nTr)?b:null});b=Sb(ja(c.aoData,i,"nTr"));if(a.nodeName&&h.inArray(a,b)!==-1)return[a._DT_RowIndex];if(typeof a==="string"&&a.charAt(0)==="#"){i=c.aIds[a.replace(/^#/,"")];if(i!==k)return[i.idx]}return h(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()},c,e)},1);c.selector.rows=a;c.selector.opts=b;return c});p("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||k},1)});p("rows().data()",function(){return this.iterator(!0,
|
||||||
|
"rows",function(a,b){return ja(a.aoData,b,"_aData")},1)});s("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var d=b.aoData[c];return"search"===a?d._aFilterData:d._aSortData},1)});s("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){ea(b,c,a)})});s("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b},1)});s("rows().ids()","row().id()",function(a){for(var b=[],c=this.context,
|
||||||
|
d=0,e=c.length;d<e;d++)for(var f=0,g=this[d].length;f<g;f++){var h=c[d].rowIdFn(c[d].aoData[this[d][f]]._aData);b.push((!0===a?"#":"")+h)}return new t(c,b)});s("rows().remove()","row().remove()",function(){var a=this;this.iterator("row",function(b,c,d){var e=b.aoData,f=e[c];e.splice(c,1);for(var g=0,h=e.length;g<h;g++)null!==e[g].nTr&&(e[g].nTr._DT_RowIndex=g);oa(b.aiDisplayMaster,c);oa(b.aiDisplay,c);oa(a[d],c,!1);Sa(b);c=b.rowIdFn(f._aData);c!==k&&delete b.aIds[c]});this.iterator("table",function(a){for(var c=
|
||||||
|
0,d=a.aoData.length;c<d;c++)a.aoData[c].idx=c});return this});p("rows.add()",function(a){var b=this.iterator("table",function(b){var c,f,g,h=[];f=0;for(g=a.length;f<g;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?h.push(ma(b,c)[0]):h.push(L(b,c));return h},1),c=this.rows(-1);c.pop();h.merge(c,b);return c});p("row()",function(a,b){return ab(this.rows(a,b))});p("row().data()",function(a){var b=this.context;if(a===k)return b.length&&this.length?b[0].aoData[this[0]]._aData:k;b[0].aoData[this[0]]._aData=
|
||||||
|
a;ea(b[0],this[0],"data");return this});p("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});p("row.add()",function(a){a instanceof h&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?ma(b,a)[0]:L(b,a)});return this.row(b[0])});var bb=function(a,b){var c=a.context;if(c.length&&(c=c[0].aoData[b!==k?b:a[0]])&&c._details)c._details.remove(),c._detailsShow=k,c._details=k},Vb=function(a,
|
||||||
|
b){var c=a.context;if(c.length&&a.length){var d=c[0].aoData[a[0]];if(d._details){(d._detailsShow=b)?d._details.insertAfter(d.nTr):d._details.detach();var e=c[0],f=new t(e),g=e.aoData;f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<D(g,"_details").length&&(f.on("draw.dt.DT_details",function(a,b){e===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on("column-visibility.dt.DT_details",function(a,b){if(e===
|
||||||
|
b)for(var c,d=ca(b),f=0,h=g.length;f<h;f++)c=g[f],c._details&&c._details.children("td[colspan]").attr("colspan",d)}),f.on("destroy.dt.DT_details",function(a,b){if(e===b)for(var c=0,d=g.length;c<d;c++)g[c]._details&&bb(f,c)}))}}};p("row().child()",function(a,b){var c=this.context;if(a===k)return c.length&&this.length?c[0].aoData[this[0]]._details:k;if(!0===a)this.child.show();else if(!1===a)bb(this);else if(c.length&&this.length){var d=c[0],c=c[0].aoData[this[0]],e=[],f=function(a,b){if(h.isArray(a)||
|
||||||
|
a instanceof h)for(var c=0,k=a.length;c<k;c++)f(a[c],b);else a.nodeName&&"tr"===a.nodeName.toLowerCase()?e.push(a):(c=h("<tr><td/></tr>").addClass(b),h("td",c).addClass(b).html(a)[0].colSpan=ca(d),e.push(c[0]))};f(a,b);c._details&&c._details.remove();c._details=h(e);c._detailsShow&&c._details.insertAfter(c.nTr)}return this});p(["row().child.show()","row().child().show()"],function(){Vb(this,!0);return this});p(["row().child.hide()","row().child().hide()"],function(){Vb(this,!1);return this});p(["row().child.remove()",
|
||||||
|
"row().child().remove()"],function(){bb(this);return this});p("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var dc=/^(.+):(name|visIdx|visible)$/,Wb=function(a,b,c,d,e){for(var c=[],d=0,f=e.length;d<f;d++)c.push(B(a,e[d],b));return c};p("columns()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=$a(b),c=this.iterator("table",function(c){var e=a,f=b,g=c.aoColumns,i=D(g,"sName"),j=D(g,"nTh");return Za("column",
|
||||||
|
e,function(a){var b=Pb(a);if(a==="")return W(g.length);if(b!==null)return[b>=0?b:g.length+b];if(typeof a==="function"){var e=Da(c,f);return h.map(g,function(b,f){return a(f,Wb(c,f,0,0,e),j[f])?f:null})}var k=typeof a==="string"?a.match(dc):"";if(k)switch(k[2]){case "visIdx":case "visible":b=parseInt(k[1],10);if(b<0){var m=h.map(g,function(a,b){return a.bVisible?b:null});return[m[m.length+b]]}return[$(c,b)];case "name":return h.map(i,function(a,b){return a===k[1]?b:null})}else return h(j).filter(a).map(function(){return h.inArray(this,
|
||||||
|
j)}).toArray()},c,f)},1);c.selector.cols=a;c.selector.opts=b;return c});s("columns().header()","column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});s("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});s("columns().data()","column().data()",function(){return this.iterator("column-rows",Wb,1)});s("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",
|
||||||
|
function(a,b){return a.aoColumns[b].mData},1)});s("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,f){return ja(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});s("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return ja(a.aoData,e,"anCells",b)},1)});s("columns().visible()","column().visible()",function(a,b){return this.iterator("column",function(c,d){if(a===k)return c.aoColumns[d].bVisible;
|
||||||
|
var e=c.aoColumns,f=e[d],g=c.aoData,i,j,m;if(a!==k&&f.bVisible!==a){if(a){var l=h.inArray(!0,D(e,"bVisible"),d+1);i=0;for(j=g.length;i<j;i++)m=g[i].nTr,e=g[i].anCells,m&&m.insertBefore(e[d],e[l]||null)}else h(D(c.aoData,"anCells",d)).detach();f.bVisible=a;ga(c,c.aoHeader);ga(c,c.aoFooter);if(b===k||b)Y(c),(c.oScroll.sX||c.oScroll.sY)&&Z(c);w(c,null,"column-visibility",[c,d,a]);ya(c)}})});s("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===
|
||||||
|
a?ba(b,c):c},1)});p("columns.adjust()",function(){return this.iterator("table",function(a){Y(a)},1)});p("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return $(c,b);if("fromData"===a||"toVisible"===a)return ba(c,b)}});p("column()",function(a,b){return ab(this.columns(a,b))});p("cells()",function(a,b,c){h.isPlainObject(a)&&(a.row===k?(c=a,a=null):(c=b,b=null));h.isPlainObject(b)&&(c=b,b=null);if(null===b||b===k)return this.iterator("table",
|
||||||
|
function(b){var d=a,e=$a(c),f=b.aoData,g=Da(b,e),i=Sb(ja(f,g,"anCells")),j=h([].concat.apply([],i)),l,m=b.aoColumns.length,n,p,t,s,u,v;return Za("cell",d,function(a){var c=typeof a==="function";if(a===null||a===k||c){n=[];p=0;for(t=g.length;p<t;p++){l=g[p];for(s=0;s<m;s++){u={row:l,column:s};if(c){v=f[l];a(u,B(b,l,s),v.anCells?v.anCells[s]:null)&&n.push(u)}else n.push(u)}}return n}return h.isPlainObject(a)?[a]:j.filter(a).map(function(a,b){if(b.parentNode)l=b.parentNode._DT_RowIndex;else{a=0;for(t=
|
||||||
|
f.length;a<t;a++)if(h.inArray(b,f[a].anCells)!==-1){l=a;break}}return{row:l,column:h.inArray(b,f[l].anCells)}}).toArray()},b,e)});var d=this.columns(b,c),e=this.rows(a,c),f,g,i,j,m,l=this.iterator("table",function(a,b){f=[];g=0;for(i=e[b].length;g<i;g++){j=0;for(m=d[b].length;j<m;j++)f.push({row:e[b][g],column:d[b][j]})}return f},1);h.extend(l.selector,{cols:b,rows:a,opts:c});return l});s("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b].anCells)?
|
||||||
|
a[c]:k},1)});p("cells().data()",function(){return this.iterator("cell",function(a,b,c){return B(a,b,c)},1)});s("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]},1)});s("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,d){return B(b,c,d,a)},1)});s("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,b,c){return{row:b,
|
||||||
|
column:c,columnVisible:ba(a,c)}},1)});s("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,d){ea(b,c,a,d)})});p("cell()",function(a,b,c){return ab(this.cells(a,b,c))});p("cell().data()",function(a){var b=this.context,c=this[0];if(a===k)return b.length&&c.length?B(b[0],c[0].row,c[0].column):k;ib(b[0],c[0].row,c[0].column,a);ea(b[0],c[0].row,"data",c[0].column);return this});p("order()",function(a,b){var c=this.context;if(a===k)return 0!==c.length?c[0].aaSorting:
|
||||||
|
k;"number"===typeof a?a=[[a,b]]:h.isArray(a[0])||(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});p("order.listener()",function(a,b,c){return this.iterator("table",function(d){Oa(d,a,b,c)})});p(["columns().order()","column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];h.each(b[d],function(b,c){e.push([c,a])});c.aaSorting=e})});p("search()",function(a,b,c,d){var e=this.context;return a===k?0!==e.length?
|
||||||
|
e[0].oPreviousSearch.sSearch:k:this.iterator("table",function(e){e.oFeatures.bFilter&&ha(e,h.extend({},e.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),1)})});s("columns().search()","column().search()",function(a,b,c,d){return this.iterator("column",function(e,f){var g=e.aoPreSearchCols;if(a===k)return g[f].sSearch;e.oFeatures.bFilter&&(h.extend(g[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),ha(e,
|
||||||
|
e.oPreviousSearch,1))})});p("state()",function(){return this.context.length?this.context[0].oSavedState:null});p("state.clear()",function(){return this.iterator("table",function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});p("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null});p("state.save()",function(){return this.iterator("table",function(a){ya(a)})});m.versionCheck=m.fnVersionCheck=function(a){for(var b=m.version.split("."),a=a.split("."),c,d,e=0,f=
|
||||||
|
a.length;e<f;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};m.isDataTable=m.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;h.each(m.settings,function(a,e){var f=e.nScrollHead?h("table",e.nScrollHead)[0]:null,g=e.nScrollFoot?h("table",e.nScrollFoot)[0]:null;if(e.nTable===b||f===b||g===b)c=!0});return c};m.tables=m.fnTables=function(a){var b=!1;h.isPlainObject(a)&&(b=a.api,a=a.visible);var c=h.map(m.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable});
|
||||||
|
return b?new t(c):c};m.util={throttle:ua,escapeRegex:va};m.camelToHungarian=I;p("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,b){p(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0].match(/\.dt\b/)||(a[0]+=".dt");var d=h(this.tables().nodes());d[b].apply(d,a);return this})});p("clear()",function(){return this.iterator("table",function(a){na(a)})});p("settings()",function(){return new t(this.context,
|
||||||
|
this.context)});p("init()",function(){var a=this.context;return a.length?a[0].oInit:null});p("data()",function(){return this.iterator("table",function(a){return D(a.aoData,"_aData")}).flatten()});p("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,f=b.nTBody,g=b.nTHead,i=b.nTFoot,j=h(e),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}),p;b.bDestroying=!0;w(b,"aoDestroyCallback","destroy",[b]);a||
|
||||||
|
(new t(b)).columns().visible(!0);k.unbind(".DT").find(":not(tbody *)").unbind(".DT");h(Fa).unbind(".DT-"+b.sInstance);e!=g.parentNode&&(j.children("thead").detach(),j.append(g));i&&e!=i.parentNode&&(j.children("tfoot").detach(),j.append(i));b.aaSorting=[];b.aaSortingFixed=[];xa(b);h(l).removeClass(b.asStripeClasses.join(" "));h("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);b.bJUI&&(h("th span."+d.sSortIcon+", td span."+d.sSortIcon,g).detach(),h("th, td",
|
||||||
|
g).each(function(){var a=h("div."+d.sSortJUIWrapper,this);h(this).append(a.contents());a.detach()}));f.children().detach();f.append(l);g=a?"remove":"detach";j[g]();k[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),j.css("width",b.sDestroyWidth).removeClass(d.sTable),(p=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%p])}));c=h.inArray(b,m.settings);-1!==c&&m.settings.splice(c,1)})});h.each(["column","row","cell"],function(a,b){p(b+"s().every()",
|
||||||
|
function(a){return this.iterator(b,function(d,e,f,g,h){a.call((new t(d))[b](e,"cell"===b?f:k),e,f,g,h)})})});p("i18n()",function(a,b,c){var d=this.context[0],a=P(a)(d.oLanguage);a===k&&(a=b);c!==k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});m.version="1.10.9";m.settings=[];m.models={};m.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};m.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,
|
||||||
|
idx:-1};m.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};m.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,
|
||||||
|
25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,
|
||||||
|
fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},
|
||||||
|
fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",
|
||||||
|
sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},m.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};X(m.defaults);m.defaults.column={aDataSort:null,
|
||||||
|
iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};X(m.defaults.column);m.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,
|
||||||
|
iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],
|
||||||
|
aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,
|
||||||
|
iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==y(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==y(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=
|
||||||
|
this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};m.ext=v={buttons:{},classes:{},errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:m.fnVersionCheck,
|
||||||
|
iApiIndex:0,oJUIClasses:{},sVersion:m.version};h.extend(v,{afnFiltering:v.search,aTypes:v.type.detect,ofnSearch:v.type.search,oSort:v.type.order,afnSortData:v.order,aoFeatures:v.feature,oApi:v.internal,oStdClasses:v.classes,oPagination:v.pager});h.extend(m.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",
|
||||||
|
sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",
|
||||||
|
sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Ea="",Ea="",G=Ea+"ui-state-default",ka=Ea+"css_right ui-icon ui-icon-",Xb=Ea+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";h.extend(m.ext.oJUIClasses,m.ext.classes,{sPageButton:"fg-button ui-button "+G,sPageButtonActive:"ui-state-disabled",
|
||||||
|
sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:G+" sorting_asc",sSortDesc:G+" sorting_desc",sSortable:G+" sorting",sSortableAsc:G+" sorting_asc_disabled",sSortableDesc:G+" sorting_desc_disabled",sSortableNone:G+" sorting_disabled",sSortJUIAsc:ka+"triangle-1-n",sSortJUIDesc:ka+"triangle-1-s",sSortJUI:ka+"carat-2-n-s",sSortJUIAscAllowed:ka+"carat-1-n",sSortJUIDescAllowed:ka+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",
|
||||||
|
sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+G,sScrollFoot:"dataTables_scrollFoot "+G,sHeaderTH:G,sFooterTH:G,sJUIHeader:Xb+" ui-corner-tl ui-corner-tr",sJUIFooter:Xb+" ui-corner-bl ui-corner-br"});var Mb=m.ext.pager;h.extend(Mb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(a,b){return[Aa(a,b)]},simple_numbers:function(a,b){return["previous",Aa(a,b),"next"]},full_numbers:function(a,b){return["first",
|
||||||
|
"previous",Aa(a,b),"next","last"]},_numbers:Aa,numbers_length:7});h.extend(!0,m.ext.renderer,{pageButton:{_:function(a,b,c,d,e,f){var g=a.oClasses,i=a.oLanguage.oPaginate,j,k,l=0,m=function(b,d){var p,q,t,s,u=function(b){Ta(a,b.data.action,true)};p=0;for(q=d.length;p<q;p++){s=d[p];if(h.isArray(s)){t=h("<"+(s.DT_el||"div")+"/>").appendTo(b);m(t,s)}else{j=null;k="";switch(s){case "ellipsis":b.append('<span class="ellipsis">…</span>');break;case "first":j=i.sFirst;k=s+(e>0?"":" "+g.sPageButtonDisabled);
|
||||||
|
break;case "previous":j=i.sPrevious;k=s+(e>0?"":" "+g.sPageButtonDisabled);break;case "next":j=i.sNext;k=s+(e<f-1?"":" "+g.sPageButtonDisabled);break;case "last":j=i.sLast;k=s+(e<f-1?"":" "+g.sPageButtonDisabled);break;default:j=s+1;k=e===s?g.sPageButtonActive:""}if(j!==null){t=h("<a>",{"class":g.sPageButton+" "+k,"aria-controls":a.sTableId,"data-dt-idx":l,tabindex:a.iTabIndex,id:c===0&&typeof s==="string"?a.sTableId+"_"+s:null}).html(j).appendTo(b);Va(t,{action:s},u);l++}}}},p;try{p=h(b).find(T.activeElement).data("dt-idx")}catch(t){}m(h(b).empty(),
|
||||||
|
d);p&&h(b).find("[data-dt-idx="+p+"]").focus()}}});h.extend(m.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Ya(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&(!ac.test(a)||!bc.test(a)))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||K(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return Ya(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c,
|
||||||
|
!0)?"html-num-fmt"+c:null},function(a){return K(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(m.ext.type.search,{html:function(a){return K(a)?a:"string"===typeof a?a.replace(Ob," ").replace(Ca,""):""},string:function(a){return K(a)?a:"string"===typeof a?a.replace(Ob," "):a}});var Ba=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Qb(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};h.extend(v.type.order,{"date-pre":function(a){return Date.parse(a)||
|
||||||
|
0},"html-pre":function(a){return K(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return K(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});cb("");h.extend(!0,m.ext.renderer,{header:{_:function(a,b,c,d){h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass(h[e]==
|
||||||
|
"asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,d){h("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(h("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass);b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+
|
||||||
|
d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass(h[e]=="asc"?d.sSortJUIAsc:h[e]=="desc"?d.sSortJUIDesc:c.sSortingClassJUI)}})}}});m.render={number:function(a,b,c,d,e){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",f=Math.abs(parseFloat(f)),h=parseInt(f,10),f=c?b+(f-h).toFixed(c).substring(2):"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+f+(e||"")}}}};h.extend(m.ext.internal,{_fnExternApiFunc:Nb,_fnBuildAjax:ra,_fnAjaxUpdate:lb,
|
||||||
|
_fnAjaxParameters:ub,_fnAjaxUpdateDraw:vb,_fnAjaxDataSrc:sa,_fnAddColumn:Ga,_fnColumnOptions:la,_fnAdjustColumnSizing:Y,_fnVisibleToColumnIndex:$,_fnColumnIndexToVisible:ba,_fnVisbleColumns:ca,_fnGetColumns:aa,_fnColumnTypes:Ia,_fnApplyColumnDefs:hb,_fnHungarianMap:X,_fnCamelToHungarian:I,_fnLanguageCompat:S,_fnBrowserDetect:fb,_fnAddData:L,_fnAddTr:ma,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},
|
||||||
|
_fnGetCellData:B,_fnSetCellData:ib,_fnSplitObjNotation:La,_fnGetObjectDataFn:P,_fnSetObjectDataFn:Q,_fnGetDataMaster:Ma,_fnClearTable:na,_fnDeleteIndex:oa,_fnInvalidate:ea,_fnGetRowElements:Ka,_fnCreateTr:Ja,_fnBuildHead:kb,_fnDrawHead:ga,_fnDraw:M,_fnReDraw:R,_fnAddOptionsHtml:nb,_fnDetectHeader:fa,_fnGetUniqueThs:qa,_fnFeatureHtmlFilter:pb,_fnFilterComplete:ha,_fnFilterCustom:yb,_fnFilterColumn:xb,_fnFilter:wb,_fnFilterCreateSearch:Qa,_fnEscapeRegex:va,_fnFilterData:zb,_fnFeatureHtmlInfo:sb,_fnUpdateInfo:Cb,
|
||||||
|
_fnInfoMacros:Db,_fnInitialise:ia,_fnInitComplete:ta,_fnLengthChange:Ra,_fnFeatureHtmlLength:ob,_fnFeatureHtmlPaginate:tb,_fnPageChange:Ta,_fnFeatureHtmlProcessing:qb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:rb,_fnScrollDraw:Z,_fnApplyToChildren:H,_fnCalculateColumnWidths:Ha,_fnThrottle:ua,_fnConvertToWidth:Fb,_fnGetWidestNode:Gb,_fnGetMaxLenString:Hb,_fnStringToCss:u,_fnSortFlatten:V,_fnSort:mb,_fnSortAria:Jb,_fnSortListener:Ua,_fnSortAttachListener:Oa,_fnSortingClasses:xa,_fnSortData:Ib,_fnSaveState:ya,
|
||||||
|
_fnLoadState:Kb,_fnSettingsFromNode:za,_fnLog:J,_fnMap:F,_fnBindAction:Va,_fnCallbackReg:z,_fnCallbackFire:w,_fnLengthOverflow:Sa,_fnRenderer:Pa,_fnDataSource:y,_fnRowAttributes:Na,_fnCalculateEnd:function(){}});h.fn.dataTable=m;h.fn.dataTableSettings=m.settings;h.fn.dataTableExt=m.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(m,function(a,b){h.fn.DataTable[a]=b});return h.fn.dataTable};"function"===typeof define&&define.amd?define("datatables",["jquery"],S):"object"===
|
||||||
|
typeof exports?module.exports=S(require("jquery")):jQuery&&!jQuery.fn.dataTable&&S(jQuery)})(window,document);
|
||||||
1
externals/jquery.dataTables.min_ase.css
vendored
Normal file
160
externals/jquery.dataTables.min_ase.js
vendored
Normal file
@@ -0,0 +1,160 @@
|
|||||||
|
/*! DataTables 1.10.7
|
||||||
|
* ©2008-2015 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function(Ea,Q,k){var P=function(h){function W(a){var b,c,e={};h.each(a,function(d){if((b=d.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=d.replace(b[0],b[2].toLowerCase()),e[c]=d,"o"===b[1]&&W(a[d])});a._hungarianMap=e}function H(a,b,c){a._hungarianMap||W(a);var e;h.each(b,function(d){e=a._hungarianMap[d];if(e!==k&&(c||b[e]===k))"o"===e.charAt(0)?(b[e]||(b[e]={}),h.extend(!0,b[e],b[d]),H(a[e],b[e],c)):b[e]=b[d]})}function P(a){var b=m.defaults.oLanguage,c=a.sZeroRecords;
|
||||||
|
!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&E(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&E(a,a,"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&db(a)}function eb(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate");
|
||||||
|
A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&H(m.models.oSearch,a[b])}function fb(a){A(a,"orderable","bSortable");A(a,"orderData","aDataSort");A(a,"orderSequence","asSorting");A(a,"orderDataType","sortDataType");var b=a.aDataSort;b&&!h.isArray(b)&&(a.aDataSort=[b])}function gb(a){var a=a.oBrowser,b=h("<div/>").css({position:"absolute",top:0,left:0,height:1,width:1,overflow:"hidden"}).append(h("<div/>").css({position:"absolute",
|
||||||
|
top:1,left:1,width:100,overflow:"scroll"}).append(h('<div class="test"/>').css({width:"100%",height:10}))).appendTo("body"),c=b.find(".test");a.bScrollOversize=100===c[0].offsetWidth;a.bScrollbarLeft=1!==Math.round(c.offset().left);b.remove()}function hb(a,b,c,e,d,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;e!==d;)a.hasOwnProperty(e)&&(g=j?b(g,a[e],e,a):a[e],j=!0,e+=f);return g}function Fa(a,b){var c=m.defaults.column,e=a.aoColumns.length,c=h.extend({},m.models.oColumn,c,{nTh:b?b:Q.createElement("th"),sTitle:c.sTitle?
|
||||||
|
c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[e],mData:c.mData?c.mData:e,idx:e});a.aoColumns.push(c);c=a.aoPreSearchCols;c[e]=h.extend({},m.models.oSearch,c[e]);ka(a,e,h(b).data())}function ka(a,b,c){var b=a.aoColumns[b],e=a.oClasses,d=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=d.attr("width")||null;var f=(d.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(fb(c),H(m.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&
|
||||||
|
(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),h.extend(b,c),E(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),E(b,c,"aDataSort"));var g=b.mData,j=R(g),i=b.mRender?R(b.mRender):null,c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b.fnGetData=function(a,b,c){var e=j(a,b,k,c);return i&&b?i(e,b,a,c):e};b.fnSetData=function(a,b,c){return S(g)(a,b,c)};"number"!==typeof g&&
|
||||||
|
(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,d.addClass(e.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=e.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=e.sSortableAsc,b.sSortingClassJUI=e.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=e.sSortableDesc,b.sSortingClassJUI=e.sSortJUIDescAllowed):(b.sSortingClass=e.sSortable,b.sSortingClassJUI=e.sSortJUI)}function X(a){if(!1!==a.oFeatures.bAutoWidth){var b=
|
||||||
|
a.aoColumns;Ga(a);for(var c=0,e=b.length;c<e;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&Y(a);w(a,null,"column-sizing",[a])}function la(a,b){var c=Z(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function $(a,b){var c=Z(a,"bVisible"),c=h.inArray(b,c);return-1!==c?c:null}function aa(a){return Z(a,"bVisible").length}function Z(a,b){var c=[];h.map(a.aoColumns,function(a,d){a[b]&&c.push(d)});return c}function Ha(a){var b=a.aoColumns,c=a.aoData,e=m.ext.type.detect,d,
|
||||||
|
f,g,j,i,h,l,q,n;d=0;for(f=b.length;d<f;d++)if(l=b[d],n=[],!l.sType&&l._sManualType)l.sType=l._sManualType;else if(!l.sType){g=0;for(j=e.length;g<j;g++){i=0;for(h=c.length;i<h;i++){n[i]===k&&(n[i]=x(a,i,d,"type"));q=e[g](n[i],a);if(!q&&g!==e.length-1)break;if("html"===q)break}if(q){l.sType=q;break}}l.sType||(l.sType="string")}}function ib(a,b,c,e){var d,f,g,j,i,o,l=a.aoColumns;if(b)for(d=b.length-1;0<=d;d--){o=b[d];var q=o.targets!==k?o.targets:o.aTargets;h.isArray(q)||(q=[q]);f=0;for(g=q.length;f<
|
||||||
|
g;f++)if("number"===typeof q[f]&&0<=q[f]){for(;l.length<=q[f];)Fa(a);e(q[f],o)}else if("number"===typeof q[f]&&0>q[f])e(l.length+q[f],o);else if("string"===typeof q[f]){j=0;for(i=l.length;j<i;j++)("_all"==q[f]||h(l[j].nTh).hasClass(q[f]))&&e(j,o)}}if(c){d=0;for(a=c.length;d<a;d++)e(d,c[d])}}function K(a,b,c,e){var d=a.aoData.length,f=h.extend(!0,{},m.models.oRow,{src:c?"dom":"data"});f._aData=b;a.aoData.push(f);for(var b=a.aoColumns,f=0,g=b.length;f<g;f++)c&&Ia(a,d,f,x(a,d,f)),b[f].sType=null;a.aiDisplayMaster.push(d);
|
||||||
|
(c||!a.oFeatures.bDeferRender)&&Ja(a,d,c,e);return d}function ma(a,b){var c;b instanceof h||(b=h(b));return b.map(function(b,d){c=na(a,d);return K(a,c.data,d,c.cells)})}function x(a,b,c,e){var d=a.iDraw,f=a.aoColumns[c],g=a.aoData[b]._aData,j=f.sDefaultContent,c=f.fnGetData(g,e,{settings:a,row:b,col:c});if(c===k)return a.iDrawError!=d&&null===j&&(I(a,0,"Requested unknown parameter "+("function"==typeof f.mData?"{function}":"'"+f.mData+"'")+" for row "+b,4),a.iDrawError=d),j;if((c===g||null===c)&&
|
||||||
|
null!==j)c=j;else if("function"===typeof c)return c.call(g);return null===c&&"display"==e?"":c}function Ia(a,b,c,e){a.aoColumns[c].fnSetData(a.aoData[b]._aData,e,{settings:a,row:b,col:c})}function Ka(a){return h.map(a.match(/(\\.|[^\.])+/g),function(a){return a.replace(/\\./g,".")})}function R(a){if(h.isPlainObject(a)){var b={};h.each(a,function(a,c){c&&(b[a]=R(c))});return function(a,c,f,g){var j=b[c]||b._;return j!==k?j(a,c,f,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,
|
||||||
|
c,f,g){return a(b,c,f,g)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a,b,f){var g,j;if(""!==f){j=Ka(f);for(var i=0,h=j.length;i<h;i++){f=j[i].match(ba);g=j[i].match(T);if(f){j[i]=j[i].replace(ba,"");""!==j[i]&&(a=a[j[i]]);g=[];j.splice(0,i+1);j=j.join(".");i=0;for(h=a.length;i<h;i++)g.push(c(a[i],b,j));a=f[0].substring(1,f[0].length-1);a=""===a?g:g.join(a);break}else if(g){j[i]=j[i].replace(T,"");a=a[j[i]]();continue}if(null===a||a[j[i]]===
|
||||||
|
k)return k;a=a[j[i]]}}return a};return function(b,d){return c(b,d,a)}}return function(b){return b[a]}}function S(a){if(h.isPlainObject(a))return S(a._);if(null===a)return function(){};if("function"===typeof a)return function(b,e,d){a(b,"set",e,d)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var b=function(a,e,d){var d=Ka(d),f;f=d[d.length-1];for(var g,j,i=0,h=d.length-1;i<h;i++){g=d[i].match(ba);j=d[i].match(T);if(g){d[i]=d[i].replace(ba,"");a[d[i]]=[];
|
||||||
|
f=d.slice();f.splice(0,i+1);g=f.join(".");j=0;for(h=e.length;j<h;j++)f={},b(f,e[j],g),a[d[i]].push(f);return}j&&(d[i]=d[i].replace(T,""),a=a[d[i]](e));if(null===a[d[i]]||a[d[i]]===k)a[d[i]]={};a=a[d[i]]}if(f.match(T))a[f.replace(T,"")](e);else a[f.replace(ba,"")]=e};return function(c,e){return b(c,e,a)}}return function(b,e){b[a]=e}}function La(a){return D(a.aoData,"_aData")}function oa(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0}function pa(a,b,c){for(var e=-1,d=0,f=a.length;d<
|
||||||
|
f;d++)a[d]==b?e=d:a[d]>b&&a[d]--; -1!=e&&c===k&&a.splice(e,1)}function ca(a,b,c,e){var d=a.aoData[b],f,g=function(c,f){for(;c.childNodes.length;)c.removeChild(c.firstChild);c.innerHTML=x(a,b,f,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===d.src)d._aData=na(a,d,e,e===k?k:d._aData).data;else{var j=d.anCells;if(j)if(e!==k)g(j[e],e);else{c=0;for(f=j.length;c<f;c++)g(j[c],c)}}d._aSortData=null;d._aFilterData=null;g=a.aoColumns;if(e!==k)g[e].sType=null;else{c=0;for(f=g.length;c<f;c++)g[c].sType=null;
|
||||||
|
Ma(d)}}function na(a,b,c,e){var d=[],f=b.firstChild,g,j=0,i,o=a.aoColumns,l=a._rowReadObject,e=e||l?{}:[],q=function(a,b){if("string"===typeof a){var c=a.indexOf("@");-1!==c&&(c=a.substring(c+1),S(a)(e,b.getAttribute(c)))}},a=function(a){if(c===k||c===j)g=o[j],i=h.trim(a.innerHTML),g&&g._bAttrSrc?(S(g.mData._)(e,i),q(g.mData.sort,a),q(g.mData.type,a),q(g.mData.filter,a)):l?(g._setter||(g._setter=S(g.mData)),g._setter(e,i)):e[j]=i;j++};if(f)for(;f;){b=f.nodeName.toUpperCase();if("TD"==b||"TH"==b)a(f),
|
||||||
|
d.push(f);f=f.nextSibling}else{d=b.anCells;f=0;for(b=d.length;f<b;f++)a(d[f])}return{data:e,cells:d}}function Ja(a,b,c,e){var d=a.aoData[b],f=d._aData,g=[],j,i,h,l,q;if(null===d.nTr){j=c||Q.createElement("tr");d.nTr=j;d.anCells=g;j._DT_RowIndex=b;Ma(d);l=0;for(q=a.aoColumns.length;l<q;l++){h=a.aoColumns[l];i=c?e[l]:Q.createElement(h.sCellType);g.push(i);if(!c||h.mRender||h.mData!==l)i.innerHTML=x(a,b,l,"display");h.sClass&&(i.className+=" "+h.sClass);h.bVisible&&!c?j.appendChild(i):!h.bVisible&&c&&
|
||||||
|
i.parentNode.removeChild(i);h.fnCreatedCell&&h.fnCreatedCell.call(a.oInstance,i,x(a,b,l),f,b,l)}w(a,"aoRowCreatedCallback",null,[j,f,b])}d.nTr.setAttribute("role","row")}function Ma(a){var b=a.nTr,c=a._aData;if(b){c.DT_RowId&&(b.id=c.DT_RowId);if(c.DT_RowClass){var e=c.DT_RowClass.split(" ");a.__rowc=a.__rowc?Na(a.__rowc.concat(e)):e;h(b).removeClass(a.__rowc.join(" ")).addClass(c.DT_RowClass)}c.DT_RowAttr&&h(b).attr(c.DT_RowAttr);c.DT_RowData&&h(b).data(c.DT_RowData)}}function jb(a){var b,c,e,d,
|
||||||
|
f,g=a.nTHead,j=a.nTFoot,i=0===h("th, td",g).length,o=a.oClasses,l=a.aoColumns;i&&(d=h("<tr/>").appendTo(g));b=0;for(c=l.length;b<c;b++)f=l[b],e=h(f.nTh).addClass(f.sClass),i&&e.appendTo(d),a.oFeatures.bSort&&(e.addClass(f.sSortingClass),!1!==f.bSortable&&(e.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),Oa(a,f.nTh,b))),f.sTitle!=e.html()&&e.html(f.sTitle),Pa(a,"header")(a,e,f,o);i&&da(a.aoHeader,g);h(g).find(">tr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(o.sHeaderTH);
|
||||||
|
h(j).find(">tr>th, >tr>td").addClass(o.sFooterTH);if(null!==j){a=a.aoFooter[0];b=0;for(c=a.length;b<c;b++)f=l[b],f.nTf=a[b].cell,f.sClass&&h(f.nTf).addClass(f.sClass)}}function ea(a,b,c){var e,d,f,g=[],j=[],i=a.aoColumns.length,o;if(b){c===k&&(c=!1);e=0;for(d=b.length;e<d;e++){g[e]=b[e].slice();g[e].nTr=b[e].nTr;for(f=i-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&g[e].splice(f,1);j.push([])}e=0;for(d=g.length;e<d;e++){if(a=g[e].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[e].length;f<b;f++)if(o=
|
||||||
|
i=1,j[e][f]===k){a.appendChild(g[e][f].cell);for(j[e][f]=1;g[e+i]!==k&&g[e][f].cell==g[e+i][f].cell;)j[e+i][f]=1,i++;for(;g[e][f+o]!==k&&g[e][f].cell==g[e][f+o].cell;){for(c=0;c<i;c++)j[e+c][f+o]=1;o++}h(g[e][f].cell).attr("rowspan",i).attr("colspan",o)}}}}function M(a){var b=w(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))C(a,!1);else{var b=[],c=0,e=a.asStripeClasses,d=e.length,f=a.oLanguage,g=a.iInitDisplayStart,j="ssp"==B(a),i=a.aiDisplay;a.bDrawing=!0;g!==k&&-1!==g&&(a._iDisplayStart=
|
||||||
|
j?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=-1);var g=a._iDisplayStart,o=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(j){if(!a.bDestroying&&!kb(a))return}else a.iDraw++;if(0!==i.length){f=j?a.aoData.length:o;for(j=j?0:g;j<f;j++){var l=i[j],q=a.aoData[l];null===q.nTr&&Ja(a,l);l=q.nTr;if(0!==d){var n=e[c%d];q._sRowStripe!=n&&(h(l).removeClass(q._sRowStripe).addClass(n),q._sRowStripe=n)}w(a,"aoRowCallback",null,[l,q._aData,c,j]);b.push(l);c++}}else c=f.sZeroRecords,
|
||||||
|
1==a.iDraw&&"ajax"==B(a)?c=f.sLoadingRecords:f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),b[0]=h("<tr/>",{"class":d?e[0]:""}).append(h("<td />",{valign:"top",colSpan:aa(a),"class":a.oClasses.sRowEmpty}).html(c))[0];w(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],La(a),g,o,i]);w(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],La(a),g,o,i]);e=h(a.nTBody);e.children().detach();e.append(h(b));w(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=
|
||||||
|
!1}}function N(a,b){var c=a.oFeatures,e=c.bFilter;c.bSort&&lb(a);e?fa(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;M(a);a._drawHold=!1}function mb(a){var b=a.oClasses,c=h(a.nTable),c=h("<div/>").insertBefore(c),e=a.oFeatures,d=h("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=d[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,o,l,q,n=0;n<f.length;n++){g=
|
||||||
|
null;j=f[n];if("<"==j){i=h("<div/>")[0];o=f[n+1];if("'"==o||'"'==o){l="";for(q=2;f[n+q]!=o;)l+=f[n+q],q++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(o=l.split("."),i.id=o[0].substr(1,o[0].length-1),i.className=o[1]):"#"==l.charAt(0)?i.id=l.substr(1,l.length-1):i.className=l;n+=q}d.append(i);d=h(i)}else if(">"==j)d=d.parent();else if("l"==j&&e.bPaginate&&e.bLengthChange)g=nb(a);else if("f"==j&&e.bFilter)g=ob(a);else if("r"==j&&e.bProcessing)g=pb(a);else if("t"==j)g=qb(a);else if("i"==
|
||||||
|
j&&e.bInfo)g=rb(a);else if("p"==j&&e.bPaginate)g=sb(a);else if(0!==m.ext.feature.length){i=m.ext.feature;q=0;for(o=i.length;q<o;q++)if(j==i[q].cFeature){g=i[q].fnInit(a);break}}g&&(i=a.aanFeatures,i[j]||(i[j]=[]),i[j].push(g),d.append(g))}c.replaceWith(d)}function da(a,b){var c=h(b).children("tr"),e,d,f,g,j,i,o,l,q,n;a.splice(0,a.length);f=0;for(i=c.length;f<i;f++)a.push([]);f=0;for(i=c.length;f<i;f++){e=c[f];for(d=e.firstChild;d;){if("TD"==d.nodeName.toUpperCase()||"TH"==d.nodeName.toUpperCase()){l=
|
||||||
|
1*d.getAttribute("colspan");q=1*d.getAttribute("rowspan");l=!l||0===l||1===l?1:l;q=!q||0===q||1===q?1:q;g=0;for(j=a[f];j[g];)g++;o=g;n=1===l?!0:!1;for(j=0;j<l;j++)for(g=0;g<q;g++)a[f+g][o+j]={cell:d,unique:n},a[f+g].nTr=e}d=d.nextSibling}}}function qa(a,b,c){var e=[];c||(c=a.aoHeader,b&&(c=[],da(c,b)));for(var b=0,d=c.length;b<d;b++)for(var f=0,g=c[b].length;f<g;f++)if(c[b][f].unique&&(!e[f]||!a.bSortCellsTop))e[f]=c[b][f].cell;return e}function ra(a,b,c){w(a,"aoServerParams","serverParams",[b]);
|
||||||
|
if(b&&h.isArray(b)){var e={},d=/(.*?)\[\]$/;h.each(b,function(a,b){var c=b.name.match(d);c?(c=c[0],e[c]||(e[c]=[]),e[c].push(b.value)):e[b.name]=b.value});b=e}var f,g=a.ajax,j=a.oInstance,i=function(b){w(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(h.isPlainObject(g)&&g.data){f=g.data;var o=h.isFunction(f)?f(b,a):f,b=h.isFunction(f)&&o?o:h.extend(!0,b,o);delete g.data}o={data:b,success:function(b){var c=b.error||b.sError;c&&I(a,0,c);a.json=b;i(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,
|
||||||
|
c){var f=w(a,null,"xhr",[a,null,a.jqXHR]);-1===h.inArray(!0,f)&&("parsererror"==c?I(a,0,"Invalid JSON response",1):4===b.readyState&&I(a,0,"Ajax error",7));C(a,!1)}};a.oAjaxData=b;w(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(j,a.sAjaxSource,h.map(b,function(a,b){return{name:b,value:a}}),i,a):a.sAjaxSource||"string"===typeof g?a.jqXHR=h.ajax(h.extend(o,{url:g||a.sAjaxSource})):h.isFunction(g)?a.jqXHR=g.call(j,b,i,a):(a.jqXHR=h.ajax(h.extend(o,g)),g.data=f)}function kb(a){return a.bAjaxDataGet?
|
||||||
|
(a.iDraw++,C(a,!0),ra(a,tb(a),function(b){ub(a,b)}),!1):!0}function tb(a){var b=a.aoColumns,c=b.length,e=a.oFeatures,d=a.oPreviousSearch,f=a.aoPreSearchCols,g,j=[],i,o,l,q=U(a);g=a._iDisplayStart;i=!1!==e.bPaginate?a._iDisplayLength:-1;var n=function(a,b){j.push({name:a,value:b})};n("sEcho",a.iDraw);n("iColumns",c);n("sColumns",D(b,"sName").join(","));n("iDisplayStart",g);n("iDisplayLength",i);var k={draw:a.iDraw,columns:[],order:[],start:g,length:i,search:{value:d.sSearch,regex:d.bRegex}};for(g=
|
||||||
|
0;g<c;g++)o=b[g],l=f[g],i="function"==typeof o.mData?"function":o.mData,k.columns.push({data:i,name:o.sName,searchable:o.bSearchable,orderable:o.bSortable,search:{value:l.sSearch,regex:l.bRegex}}),n("mDataProp_"+g,i),e.bFilter&&(n("sSearch_"+g,l.sSearch),n("bRegex_"+g,l.bRegex),n("bSearchable_"+g,o.bSearchable)),e.bSort&&n("bSortable_"+g,o.bSortable);e.bFilter&&(n("sSearch",d.sSearch),n("bRegex",d.bRegex));e.bSort&&(h.each(q,function(a,b){k.order.push({column:b.col,dir:b.dir});n("iSortCol_"+a,b.col);
|
||||||
|
n("sSortDir_"+a,b.dir)}),n("iSortingCols",q.length));b=m.ext.legacy.ajax;return null===b?a.sAjaxSource?j:k:b?j:k}function ub(a,b){var c=sa(a,b),e=b.sEcho!==k?b.sEcho:b.draw,d=b.iTotalRecords!==k?b.iTotalRecords:b.recordsTotal,f=b.iTotalDisplayRecords!==k?b.iTotalDisplayRecords:b.recordsFiltered;if(e){if(1*e<a.iDraw)return;a.iDraw=1*e}oa(a);a._iRecordsTotal=parseInt(d,10);a._iRecordsDisplay=parseInt(f,10);e=0;for(d=c.length;e<d;e++)K(a,c[e]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;
|
||||||
|
M(a);a._bInitComplete||ta(a,b);a.bAjaxDataGet=!0;C(a,!1)}function sa(a,b){var c=h.isPlainObject(a.ajax)&&a.ajax.dataSrc!==k?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===c?b.aaData||b[c]:""!==c?R(c)(b):b}function ob(a){var b=a.oClasses,c=a.sTableId,e=a.oLanguage,d=a.oPreviousSearch,f=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',j=e.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(j)),
|
||||||
|
f=function(){var b=!this.value?"":this.value;b!=d.sSearch&&(fa(a,{sSearch:b,bRegex:d.bRegex,bSmart:d.bSmart,bCaseInsensitive:d.bCaseInsensitive}),a._iDisplayStart=0,M(a))},g=null!==a.searchDelay?a.searchDelay:"ssp"===B(a)?400:0,i=h("input",b).val(d.sSearch).attr("placeholder",e.sSearchPlaceholder).bind("keyup.DT search.DT input.DT paste.DT cut.DT",g?ua(f,g):f).bind("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);h(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{i[0]!==
|
||||||
|
Q.activeElement&&i.val(d.sSearch)}catch(f){}});return b[0]}function fa(a,b,c){var e=a.oPreviousSearch,d=a.aoPreSearchCols,f=function(a){e.sSearch=a.sSearch;e.bRegex=a.bRegex;e.bSmart=a.bSmart;e.bCaseInsensitive=a.bCaseInsensitive};Ha(a);if("ssp"!=B(a)){vb(a,b.sSearch,c,b.bEscapeRegex!==k?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<d.length;b++)wb(a,d[b].sSearch,b,d[b].bEscapeRegex!==k?!d[b].bEscapeRegex:d[b].bRegex,d[b].bSmart,d[b].bCaseInsensitive);xb(a)}else f(b);a.bFiltered=
|
||||||
|
!0;w(a,null,"search",[a])}function xb(a){for(var b=m.ext.search,c=a.aiDisplay,e,d,f=0,g=b.length;f<g;f++){for(var j=[],i=0,h=c.length;i<h;i++)d=c[i],e=a.aoData[d],b[f](a,e._aFilterData,d,e._aData,i)&&j.push(d);c.length=0;c.push.apply(c,j)}}function wb(a,b,c,e,d,f){if(""!==b)for(var g=a.aiDisplay,e=Qa(b,e,d,f),d=g.length-1;0<=d;d--)b=a.aoData[g[d]]._aFilterData[c],e.test(b)||g.splice(d,1)}function vb(a,b,c,e,d,f){var e=Qa(b,e,d,f),d=a.oPreviousSearch.sSearch,f=a.aiDisplayMaster,g;0!==m.ext.search.length&&
|
||||||
|
(c=!0);g=yb(a);if(0>=b.length)a.aiDisplay=f.slice();else{if(g||c||d.length>b.length||0!==b.indexOf(d)||a.bSorted)a.aiDisplay=f.slice();b=a.aiDisplay;for(c=b.length-1;0<=c;c--)e.test(a.aoData[b[c]]._sFilterRow)||b.splice(c,1)}}function Qa(a,b,c,e){a=b?a:va(a);c&&(a="^(?=.*?"+h.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0))var b=a.match(/^"(.*)"$/),a=b?b[1]:a;return a.replace('"',"")}).join(")(?=.*?")+").*$");return RegExp(a,e?"i":"")}function va(a){return a.replace(Yb,"\\$1")}
|
||||||
|
function yb(a){var b=a.aoColumns,c,e,d,f,g,j,i,h,l=m.ext.type.search;c=!1;e=0;for(f=a.aoData.length;e<f;e++)if(h=a.aoData[e],!h._aFilterData){j=[];d=0;for(g=b.length;d<g;d++)c=b[d],c.bSearchable?(i=x(a,e,d,"filter"),l[c.sType]&&(i=l[c.sType](i)),null===i&&(i=""),"string"!==typeof i&&i.toString&&(i=i.toString())):i="",i.indexOf&&-1!==i.indexOf("&")&&(wa.innerHTML=i,i=Zb?wa.textContent:wa.innerText),i.replace&&(i=i.replace(/[\r\n]/g,"")),j.push(i);h._aFilterData=j;h._sFilterRow=j.join(" ");c=!0}return c}
|
||||||
|
function zb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,caseInsensitive:a.bCaseInsensitive}}function Ab(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function rb(a){var b=a.sTableId,c=a.aanFeatures.i,e=h("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:Bb,sName:"information"}),e.attr("role","status").attr("aria-live","polite"),h(a.nTable).attr("aria-describedby",b+"_info"));return e[0]}function Bb(a){var b=
|
||||||
|
a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,e=a._iDisplayStart+1,d=a.fnDisplayEnd(),f=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),j=g?c.sInfo:c.sInfoEmpty;g!==f&&(j+=" "+c.sInfoFiltered);j+=c.sInfoPostFix;j=Cb(a,j);c=c.fnInfoCallback;null!==c&&(j=c.call(a.oInstance,a,e,d,f,g,j));h(b).html(j)}}function Cb(a,b){var c=a.fnFormatNumber,e=a._iDisplayStart+1,d=a._iDisplayLength,f=a.fnRecordsDisplay(),g=-1===d;return b.replace(/_START_/g,c.call(a,e)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,
|
||||||
|
c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,f)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(e/d))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(f/d)))}function ga(a){var b,c,e=a.iInitDisplayStart,d=a.aoColumns,f;c=a.oFeatures;if(a.bInitialised){mb(a);jb(a);ea(a,a.aoHeader);ea(a,a.aoFooter);C(a,!0);c.bAutoWidth&&Ga(a);b=0;for(c=d.length;b<c;b++)f=d[b],f.sWidth&&(f.nTh.style.width=s(f.sWidth));N(a);d=B(a);"ssp"!=d&&("ajax"==d?ra(a,[],function(c){var f=sa(a,c);for(b=0;b<f.length;b++)K(a,f[b]);
|
||||||
|
a.iInitDisplayStart=e;N(a);C(a,!1);ta(a,c)},a):(C(a,!1),ta(a)))}else setTimeout(function(){ga(a)},200)}function ta(a,b){a._bInitComplete=!0;b&&X(a);w(a,"aoInitComplete","init",[a,b])}function Ra(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Sa(a);w(a,null,"length",[a,c])}function nb(a){for(var b=a.oClasses,c=a.sTableId,e=a.aLengthMenu,d=h.isArray(e[0]),f=d?e[0]:e,e=d?e[1]:e,d=h("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect}),g=0,j=f.length;g<j;g++)d[0][g]=new Option(e[g],
|
||||||
|
f[g]);var i=h("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",d[0].outerHTML));h("select",i).val(a._iDisplayLength).bind("change.DT",function(){Ra(a,h(this).val());M(a)});h(a.nTable).bind("length.dt.DT",function(b,c,f){a===c&&h("select",i).val(f)});return i[0]}function sb(a){var b=a.sPaginationType,c=m.ext.pager[b],e="function"===typeof c,d=function(a){M(a)},b=h("<div/>").addClass(a.oClasses.sPaging+b)[0],
|
||||||
|
f=a.aanFeatures;e||c.fnInit(a,b,d);f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(e){var b=a._iDisplayStart,i=a._iDisplayLength,h=a.fnRecordsDisplay(),l=-1===i,b=l?0:Math.ceil(b/i),i=l?1:Math.ceil(h/i),h=c(b,i),q,l=0;for(q=f.p.length;l<q;l++)Pa(a,"pageButton")(a,f.p[l],l,h,b,i)}else c.fnUpdate(a,d)},sName:"pagination"}));return b}function Ta(a,b,c){var e=a._iDisplayStart,d=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===d?e=0:"number"===typeof b?(e=b*d,e>f&&(e=0)):
|
||||||
|
"first"==b?e=0:"previous"==b?(e=0<=d?e-d:0,0>e&&(e=0)):"next"==b?e+d<f&&(e+=d):"last"==b?e=Math.floor((f-1)/d)*d:I(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==e;a._iDisplayStart=e;b&&(w(a,null,"page",[a]),c&&M(a));return b}function pb(a){return h("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display",b?"block":"none");w(a,
|
||||||
|
null,"processing",[a,b])}function qb(a){var b=h(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var e=c.sX,d=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),o=h(b[0].cloneNode(!1)),l=b.children("tfoot");c.sX&&"100%"===b.attr("width")&&b.removeAttr("width");l.length||(l=null);c=h("<div/>",{"class":f.sScrollWrapper}).append(h("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,
|
||||||
|
width:e?!e?null:s(e):"100%"}).append(h("<div/>",{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("<div/>",{"class":f.sScrollBody}).css({overflow:"auto",height:!d?null:s(d),width:!e?null:s(e)}).append(b));l&&c.append(h("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:e?!e?null:s(e):"100%"}).append(h("<div/>",{"class":f.sScrollFootInner}).append(o.removeAttr("id").css("margin-left",
|
||||||
|
0).append("bottom"===j?g:null).append(b.children("tfoot")))));var b=c.children(),q=b[0],f=b[1],n=l?b[2]:null;if(e)h(f).on("scroll.DT",function(){var a=this.scrollLeft;q.scrollLeft=a;l&&(n.scrollLeft=a)});a.nScrollHead=q;a.nScrollBody=f;a.nScrollFoot=n;a.aoDrawCallback.push({fn:Y,sName:"scrolling"});return c[0]}function Y(a){var b=a.oScroll,c=b.sX,e=b.sXInner,d=b.sY,f=b.iBarWidth,g=h(a.nScrollHead),j=g[0].style,i=g.children("div"),o=i[0].style,l=i.children("table"),i=a.nScrollBody,q=h(i),n=i.style,
|
||||||
|
k=h(a.nScrollFoot).children("div"),p=k.children("table"),m=h(a.nTHead),r=h(a.nTable),t=r[0],O=t.style,L=a.nTFoot?h(a.nTFoot):null,ha=a.oBrowser,w=ha.bScrollOversize,v,u,y,x,z,A=[],B=[],C=[],D,E=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};r.children("thead, tfoot").remove();z=m.clone().prependTo(r);v=m.find("tr");y=z.find("tr");z.find("th, td").removeAttr("tabindex");L&&(x=L.clone().prependTo(r),u=L.find("tr"),x=x.find("tr"));
|
||||||
|
c||(n.width="100%",g[0].style.width="100%");h.each(qa(a,z),function(b,c){D=la(a,b);c.style.width=a.aoColumns[D].sWidth});L&&G(function(a){a.style.width=""},x);b.bCollapse&&""!==d&&(n.height=q[0].offsetHeight+m[0].offsetHeight+"px");g=r.outerWidth();if(""===c){if(O.width="100%",w&&(r.find("tbody").height()>i.offsetHeight||"scroll"==q.css("overflow-y")))O.width=s(r.outerWidth()-f)}else""!==e?O.width=s(e):g==q.width()&&q.height()<r.height()?(O.width=s(g-f),r.outerWidth()>g-f&&(O.width=s(g))):O.width=
|
||||||
|
s(g);g=r.outerWidth();G(E,y);G(function(a){C.push(a.innerHTML);A.push(s(h(a).css("width")))},y);G(function(a,b){a.style.width=A[b]},v);h(y).height(0);L&&(G(E,x),G(function(a){B.push(s(h(a).css("width")))},x),G(function(a,b){a.style.width=B[b]},u),h(x).height(0));G(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+C[b]+"</div>";a.style.width=A[b]},y);L&&G(function(a,b){a.innerHTML="";a.style.width=B[b]},x);if(r.outerWidth()<g){u=i.scrollHeight>i.offsetHeight||
|
||||||
|
"scroll"==q.css("overflow-y")?g+f:g;if(w&&(i.scrollHeight>i.offsetHeight||"scroll"==q.css("overflow-y")))O.width=s(u-f);(""===c||""!==e)&&I(a,1,"Possible column misalignment",6)}else u="100%";n.width=s(u);j.width=s(u);L&&(a.nScrollFoot.style.width=s(u));!d&&w&&(n.height=s(t.offsetHeight+f));d&&b.bCollapse&&(n.height=s(d),b=c&&t.offsetWidth>i.offsetWidth?f:0,t.offsetHeight<i.offsetHeight&&(n.height=s(t.offsetHeight+b)));b=r.outerWidth();l[0].style.width=s(b);o.width=s(b);l=r.height()>i.clientHeight||
|
||||||
|
"scroll"==q.css("overflow-y");ha="padding"+(ha.bScrollbarLeft?"Left":"Right");o[ha]=l?f+"px":"0px";L&&(p[0].style.width=s(b),k[0].style.width=s(b),k[0].style[ha]=l?f+"px":"0px");q.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)i.scrollTop=0}function G(a,b,c){for(var e=0,d=0,f=b.length,g,j;d<f;){g=b[d].firstChild;for(j=c?c[d].firstChild:null;g;)1===g.nodeType&&(c?a(g,j,e):a(g,e),e++),g=g.nextSibling,j=c?j.nextSibling:null;d++}}function Ga(a){var b=a.nTable,c=a.aoColumns,e=a.oScroll,d=e.sY,f=e.sX,
|
||||||
|
g=e.sXInner,j=c.length,e=Z(a,"bVisible"),i=h("th",a.nTHead),o=b.getAttribute("width"),l=b.parentNode,k=!1,n,m;(n=b.style.width)&&-1!==n.indexOf("%")&&(o=n);for(n=0;n<e.length;n++)m=c[e[n]],null!==m.sWidth&&(m.sWidth=Db(m.sWidthOrig,l),k=!0);if(!k&&!f&&!d&&j==aa(a)&&j==i.length)for(n=0;n<j;n++)c[n].sWidth=s(i.eq(n).width());else{j=h(b).clone().css("visibility","hidden").removeAttr("id");j.find("tbody tr").remove();var p=h("<tr/>").appendTo(j.find("tbody"));j.find("tfoot th, tfoot td").css("width",
|
||||||
|
"");i=qa(a,j.find("thead")[0]);for(n=0;n<e.length;n++)m=c[e[n]],i[n].style.width=null!==m.sWidthOrig&&""!==m.sWidthOrig?s(m.sWidthOrig):"";if(a.aoData.length)for(n=0;n<e.length;n++)k=e[n],m=c[k],h(Eb(a,k)).clone(!1).append(m.sContentPadding).appendTo(p);j.appendTo(l);f&&g?j.width(g):f?(j.css("width","auto"),j.width()<l.offsetWidth&&j.width(l.offsetWidth)):d?j.width(l.offsetWidth):o&&j.width(o);Fb(a,j[0]);if(f){for(n=g=0;n<e.length;n++)m=c[e[n]],d=h(i[n]).outerWidth(),g+=null===m.sWidthOrig?d:parseInt(m.sWidth,
|
||||||
|
10)+d-h(i[n]).width();j.width(s(g));b.style.width=s(g)}for(n=0;n<e.length;n++)if(m=c[e[n]],d=h(i[n]).width())m.sWidth=s(d);b.style.width=s(j.css("width"));j.remove()}o&&(b.style.width=s(o));if((o||f)&&!a._reszEvt)b=function(){h(Ea).bind("resize.DT-"+a.sInstance,ua(function(){X(a)}))},a.oBrowser.bScrollOversize?setTimeout(b,1E3):b(),a._reszEvt=!0}function ua(a,b){var c=b!==k?b:200,e,d;return function(){var b=this,g=+new Date,j=arguments;e&&g<e+c?(clearTimeout(d),d=setTimeout(function(){e=k;a.apply(b,
|
||||||
|
j)},c)):(e=g,a.apply(b,j))}}function Db(a,b){if(!a)return 0;var c=h("<div/>").css("width",s(a)).appendTo(b||Q.body),e=c[0].offsetWidth;c.remove();return e}function Fb(a,b){var c=a.oScroll;if(c.sX||c.sY)c=!c.sX?c.iBarWidth:0,b.style.width=s(h(b).outerWidth()-c)}function Eb(a,b){var c=Gb(a,b);if(0>c)return null;var e=a.aoData[c];return!e.nTr?h("<td/>").html(x(a,c,b,"display"))[0]:e.anCells[b]}function Gb(a,b){for(var c,e=-1,d=-1,f=0,g=a.aoData.length;f<g;f++)c=x(a,f,b,"display")+"",c=c.replace($b,""),
|
||||||
|
c.length>e&&(e=c.length,d=f);return d}function s(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function Hb(){var a=m.__scrollbarWidth;if(a===k){var b=h("<p/>").css({position:"absolute",top:0,left:0,width:"100%",height:150,padding:0,overflow:"scroll",visibility:"hidden"}).appendTo("body"),a=b[0].offsetWidth-b[0].clientWidth;m.__scrollbarWidth=a;b.remove()}return a}function U(a){var b,c,e=[],d=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var o=[];
|
||||||
|
f=function(a){a.length&&!h.isArray(a[0])?o.push(a):o.push.apply(o,a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<o.length;a++){i=o[a][0];f=d[i].aDataSort;b=0;for(c=f.length;b<c;b++)g=f[b],j=d[g].sType||"string",o[a]._idx===k&&(o[a]._idx=h.inArray(o[a][1],d[g].asSorting)),e.push({src:i,col:g,dir:o[a][1],index:o[a]._idx,type:j,formatter:m.ext.type.order[j+"-pre"]})}return e}function lb(a){var b,c,e=[],d=m.ext.type.order,f=a.aoData,g=0,j,i=a.aiDisplayMaster,h;
|
||||||
|
Ha(a);h=U(a);b=0;for(c=h.length;b<c;b++)j=h[b],j.formatter&&g++,Ib(a,j.col);if("ssp"!=B(a)&&0!==h.length){b=0;for(c=i.length;b<c;b++)e[i[b]]=b;g===h.length?i.sort(function(a,b){var c,d,g,j,i=h.length,k=f[a]._aSortData,m=f[b]._aSortData;for(g=0;g<i;g++)if(j=h[g],c=k[j.col],d=m[j.col],c=c<d?-1:c>d?1:0,0!==c)return"asc"===j.dir?c:-c;c=e[a];d=e[b];return c<d?-1:c>d?1:0}):i.sort(function(a,b){var c,g,j,i,k=h.length,m=f[a]._aSortData,r=f[b]._aSortData;for(j=0;j<k;j++)if(i=h[j],c=m[i.col],g=r[i.col],i=d[i.type+
|
||||||
|
"-"+i.dir]||d["string-"+i.dir],c=i(c,g),0!==c)return c;c=e[a];g=e[b];return c<g?-1:c>g?1:0})}a.bSorted=!0}function Jb(a){for(var b,c,e=a.aoColumns,d=U(a),a=a.oLanguage.oAria,f=0,g=e.length;f<g;f++){c=e[f];var j=c.asSorting;b=c.sTitle.replace(/<.*?>/g,"");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0<d.length&&d[0].col==f?(i.setAttribute("aria-sort","asc"==d[0].dir?"ascending":"descending"),c=j[d[0].index+1]||j[0]):c=j[0],b+="asc"===c?a.sSortAscending:a.sSortDescending);i.setAttribute("aria-label",
|
||||||
|
b)}}function Ua(a,b,c,e){var d=a.aaSorting,f=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===k&&(c=h.inArray(a[1],f));return c+1<f.length?c+1:b?null:0};"number"===typeof d[0]&&(d=a.aaSorting=[d]);c&&a.oFeatures.bSortMulti?(c=h.inArray(b,D(d,"0")),-1!==c?(b=g(d[c],!0),null===b&&1===d.length&&(b=0),null===b?d.splice(c,1):(d[c][1]=f[b],d[c]._idx=b)):(d.push([b,f[0],0]),d[d.length-1]._idx=0)):d.length&&d[0][0]==b?(b=g(d[0]),d.length=1,d[0][1]=f[b],d[0]._idx=b):(d.length=0,d.push([b,f[0]]),d[0]._idx=
|
||||||
|
0);N(a);"function"==typeof e&&e(a)}function Oa(a,b,c,e){var d=a.aoColumns[c];Va(b,{},function(b){!1!==d.bSortable&&(a.oFeatures.bProcessing?(C(a,!0),setTimeout(function(){Ua(a,c,b.shiftKey,e);"ssp"!==B(a)&&C(a,!1)},0)):Ua(a,c,b.shiftKey,e))})}function xa(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,e=U(a),d=a.oFeatures,f,g;if(d.bSort&&d.bSortClasses){d=0;for(f=b.length;d<f;d++)g=b[d].src,h(D(a.aoData,"anCells",g)).removeClass(c+(2>d?d+1:3));d=0;for(f=e.length;d<f;d++)g=e[d].src,h(D(a.aoData,"anCells",
|
||||||
|
g)).addClass(c+(2>d?d+1:3))}a.aLastSort=e}function Ib(a,b){var c=a.aoColumns[b],e=m.ext.order[c.sSortDataType],d;e&&(d=e.call(a.oInstance,a,b,$(a,b)));for(var f,g=m.ext.type.order[c.sType+"-pre"],j=0,i=a.aoData.length;j<i;j++)if(c=a.aoData[j],c._aSortData||(c._aSortData=[]),!c._aSortData[b]||e)f=e?d[j]:x(a,j,b,"sort"),c._aSortData[b]=g?g(f):f}function ya(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:h.extend(!0,[],a.aaSorting),
|
||||||
|
search:zb(a.oPreviousSearch),columns:h.map(a.aoColumns,function(b,e){return{visible:b.bVisible,search:zb(a.aoPreSearchCols[e])}})};w(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,b)}}function Kb(a){var b,c,e=a.aoColumns;if(a.oFeatures.bStateSave){var d=a.fnStateLoadCallback.call(a.oInstance,a);if(d&&d.time&&(b=w(a,"aoStateLoadParams","stateLoadParams",[a,d]),-1===h.inArray(!1,b)&&(b=a.iStateDuration,!(0<b&&d.time<+new Date-1E3*b)&&e.length===
|
||||||
|
d.columns.length))){a.oLoadedState=h.extend(!0,{},d);d.start!==k&&(a._iDisplayStart=d.start,a.iInitDisplayStart=d.start);d.length!==k&&(a._iDisplayLength=d.length);d.order!==k&&(a.aaSorting=[],h.each(d.order,function(b,c){a.aaSorting.push(c[0]>=e.length?[0,c[1]]:c)}));d.search!==k&&h.extend(a.oPreviousSearch,Ab(d.search));b=0;for(c=d.columns.length;b<c;b++){var f=d.columns[b];f.visible!==k&&(e[b].bVisible=f.visible);f.search!==k&&h.extend(a.aoPreSearchCols[b],Ab(f.search))}w(a,"aoStateLoaded","stateLoaded",
|
||||||
|
[a,d])}}}function za(a){var b=m.settings,a=h.inArray(a,D(b,"nTable"));return-1!==a?b[a]:null}function I(a,b,c,e){c="DataTables warning: "+(null!==a?"table id="+a.sTableId+" - ":"")+c;e&&(c+=". For more information about this error, please see http://datatables.net/tn/"+e);if(b)Ea.console&&console.log&&console.log(c);else if(b=m.ext,b=b.sErrMode||b.errMode,w(a,null,"error",[a,e,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,e,c)}}function E(a,b,c,e){h.isArray(c)?
|
||||||
|
h.each(c,function(c,f){h.isArray(f)?E(a,b,f[0],f[1]):E(a,b,f)}):(e===k&&(e=c),b[c]!==k&&(a[e]=b[c]))}function Lb(a,b,c){var e,d;for(d in b)b.hasOwnProperty(d)&&(e=b[d],h.isPlainObject(e)?(h.isPlainObject(a[d])||(a[d]={}),h.extend(!0,a[d],e)):a[d]=c&&"data"!==d&&"aaData"!==d&&h.isArray(e)?e.slice():e);return a}function Va(a,b,c){h(a).bind("click.DT",b,function(b){a.blur();c(b)}).bind("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).bind("selectstart.DT",function(){return!1})}function z(a,
|
||||||
|
b,c,e){c&&a[b].push({fn:c,sName:e})}function w(a,b,c,e){var d=[];b&&(d=h.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,e)}));null!==c&&(b=h.Event(c+".dt"),h(a.nTable).trigger(b,e),d.push(b.result));return d}function Sa(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),e=a._iDisplayLength;b>=c&&(b=c-e);b-=b%e;if(-1===e||0>b)b=0;a._iDisplayStart=b}function Pa(a,b){var c=a.renderer,e=m.ext.renderer[b];return h.isPlainObject(c)&&c[b]?e[c[b]]||e._:"string"===typeof c?e[c]||e._:e._}function B(a){return a.oFeatures.bServerSide?
|
||||||
|
"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Wa(a,b){var c=[],c=Mb.numbers_length,e=Math.floor(c/2);b<=c?c=V(0,b):a<=e?(c=V(0,c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-e?c=V(b-(c-2),b):(c=V(a-e+2,a+e-1),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function db(a){h.each({num:function(b){return Aa(b,a)},"num-fmt":function(b){return Aa(b,a,Xa)},"html-num":function(b){return Aa(b,a,Ba)},"html-num-fmt":function(b){return Aa(b,a,Ba,Xa)}},function(b,
|
||||||
|
c){u.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(u.type.search[b+a]=u.type.search.html)})}function Nb(a){return function(){var b=[za(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return m.ext.internal[a].apply(this,b)}}var m,u,t,r,v,Ya={},Ob=/[\r\n]/g,Ba=/<.*?>/g,ac=/^[\w\+\-]/,bc=/[\w\+\-]$/,Yb=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Xa=/[',$\u00a3\u20ac\u00a5%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi,J=function(a){return!a||!0===a||
|
||||||
|
"-"===a?!0:!1},Pb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Qb=function(a,b){Ya[b]||(Ya[b]=RegExp(va(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(Ya[b],"."):a},Za=function(a,b,c){var e="string"===typeof a;if(J(a))return!0;b&&e&&(a=Qb(a,b));c&&e&&(a=a.replace(Xa,""));return!isNaN(parseFloat(a))&&isFinite(a)},Rb=function(a,b,c){return J(a)?!0:!(J(a)||"string"===typeof a)?null:Za(a.replace(Ba,""),b,c)?!0:null},D=function(a,b,c){var e=[],d=0,f=a.length;
|
||||||
|
if(c!==k)for(;d<f;d++)a[d]&&a[d][b]&&e.push(a[d][b][c]);else for(;d<f;d++)a[d]&&e.push(a[d][b]);return e},ia=function(a,b,c,e){var d=[],f=0,g=b.length;if(e!==k)for(;f<g;f++)a[b[f]][c]&&d.push(a[b[f]][c][e]);else for(;f<g;f++)d.push(a[b[f]][c]);return d},V=function(a,b){var c=[],e;b===k?(b=0,e=a):(e=b,b=a);for(var d=b;d<e;d++)c.push(d);return c},Sb=function(a){for(var b=[],c=0,e=a.length;c<e;c++)a[c]&&b.push(a[c]);return b},Na=function(a){var b=[],c,e,d=a.length,f,g=0;e=0;a:for(;e<d;e++){c=a[e];for(f=
|
||||||
|
0;f<g;f++)if(b[f]===c)continue a;b.push(c);g++}return b},A=function(a,b,c){a[b]!==k&&(a[c]=a[b])},ba=/\[.*?\]$/,T=/\(\)$/,wa=h("<div>")[0],Zb=wa.textContent!==k,$b=/<.*?>/g;m=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new t(za(this[u.iApiIndex])):new t(this)};this.fnAddData=function(a,b){var c=this.api(!0),e=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===
|
||||||
|
k||b)&&c.draw();return e.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],e=c.oScroll;a===k||a?b.draw(!1):(""!==e.sX||""!==e.sY)&&Y(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var e=this.api(!0),a=e.rows(a),d=a.settings()[0],h=d.aoData[a[0][0]];a.remove();b&&b.call(this,d,h);(c===k||c)&&e.draw();return h};
|
||||||
|
this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};this.fnFilter=function(a,b,c,e,d,h){d=this.api(!0);null===b||b===k?d.search(a,c,e,h):d.column(b).search(a,c,e,h);d.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var e=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==e||"th"==e?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};
|
||||||
|
this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===
|
||||||
|
k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return za(this[u.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,e,d){var h=this.api(!0);c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(d===k||d)&&h.columns.adjust();(e===k||e)&&h.draw();return 0};this.fnVersionCheck=u.fnVersionCheck;var b=this,c=a===k,e=this.length;c&&(a={});this.oApi=this.internal=u.internal;for(var d in m.ext.internal)d&&
|
||||||
|
(this[d]=Nb(d));this.each(function(){var d={},d=1<e?Lb(d,a,!0):a,g=0,j,i=this.getAttribute("id"),o=!1,l=m.defaults,q=h(this);if("table"!=this.nodeName.toLowerCase())I(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{eb(l);fb(l.column);H(l,l,!0);H(l.column,l.column,!0);H(l,h.extend(d,q.data()));var n=m.settings,g=0;for(j=n.length;g<j;g++){var r=n[g];if(r.nTable==this||r.nTHead.parentNode==this||r.nTFoot&&r.nTFoot.parentNode==this){g=d.bRetrieve!==k?d.bRetrieve:l.bRetrieve;if(c||g)return r.oInstance;
|
||||||
|
if(d.bDestroy!==k?d.bDestroy:l.bDestroy){r.oInstance.fnDestroy();break}else{I(r,0,"Cannot reinitialise DataTable",3);return}}if(r.sTableId==this.id){n.splice(g,1);break}}if(null===i||""===i)this.id=i="DataTables_Table_"+m.ext._unique++;var p=h.extend(!0,{},m.models.oSettings,{sDestroyWidth:q[0].style.width,sInstance:i,sTableId:i});p.nTable=this;p.oApi=b.internal;p.oInit=d;n.push(p);p.oInstance=1===b.length?b:q.dataTable();eb(d);d.oLanguage&&P(d.oLanguage);d.aLengthMenu&&!d.iDisplayLength&&(d.iDisplayLength=
|
||||||
|
h.isArray(d.aLengthMenu[0])?d.aLengthMenu[0][0]:d.aLengthMenu[0]);d=Lb(h.extend(!0,{},l),d);E(p.oFeatures,d,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));E(p,d,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback",
|
||||||
|
"renderer","searchDelay",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"],["bJQueryUI","bJUI"]]);E(p.oScroll,d,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);E(p.oLanguage,d,"fnInfoCallback");z(p,"aoDrawCallback",d.fnDrawCallback,"user");z(p,"aoServerParams",d.fnServerParams,"user");z(p,"aoStateSaveParams",d.fnStateSaveParams,"user");z(p,"aoStateLoadParams",
|
||||||
|
d.fnStateLoadParams,"user");z(p,"aoStateLoaded",d.fnStateLoaded,"user");z(p,"aoRowCallback",d.fnRowCallback,"user");z(p,"aoRowCreatedCallback",d.fnCreatedRow,"user");z(p,"aoHeaderCallback",d.fnHeaderCallback,"user");z(p,"aoFooterCallback",d.fnFooterCallback,"user");z(p,"aoInitComplete",d.fnInitComplete,"user");z(p,"aoPreDrawCallback",d.fnPreDrawCallback,"user");i=p.oClasses;d.bJQueryUI?(h.extend(i,m.ext.oJUIClasses,d.oClasses),d.sDom===l.sDom&&"lfrtip"===l.sDom&&(p.sDom='<"H"lfr>t<"F"ip>'),p.renderer)?
|
||||||
|
h.isPlainObject(p.renderer)&&!p.renderer.header&&(p.renderer.header="jqueryui"):p.renderer="jqueryui":h.extend(i,m.ext.classes,d.oClasses);q.addClass(i.sTable);if(""!==p.oScroll.sX||""!==p.oScroll.sY)p.oScroll.iBarWidth=Hb();!0===p.oScroll.sX&&(p.oScroll.sX="100%");p.iInitDisplayStart===k&&(p.iInitDisplayStart=d.iDisplayStart,p._iDisplayStart=d.iDisplayStart);null!==d.iDeferLoading&&(p.bDeferLoading=!0,g=h.isArray(d.iDeferLoading),p._iRecordsDisplay=g?d.iDeferLoading[0]:d.iDeferLoading,p._iRecordsTotal=
|
||||||
|
g?d.iDeferLoading[1]:d.iDeferLoading);var t=p.oLanguage;h.extend(!0,t,d.oLanguage);""!==t.sUrl&&(h.ajax({dataType:"json",url:t.sUrl,success:function(a){P(a);H(l.oLanguage,a);h.extend(true,t,a);ga(p)},error:function(){ga(p)}}),o=!0);null===d.asStripeClasses&&(p.asStripeClasses=[i.sStripeOdd,i.sStripeEven]);var g=p.asStripeClasses,s=q.children("tbody").find("tr").eq(0);-1!==h.inArray(!0,h.map(g,function(a){return s.hasClass(a)}))&&(h("tbody tr",this).removeClass(g.join(" ")),p.asDestroyStripes=g.slice());
|
||||||
|
n=[];g=this.getElementsByTagName("thead");0!==g.length&&(da(p.aoHeader,g[0]),n=qa(p));if(null===d.aoColumns){r=[];g=0;for(j=n.length;g<j;g++)r.push(null)}else r=d.aoColumns;g=0;for(j=r.length;g<j;g++)Fa(p,n?n[g]:null);ib(p,d.aoColumnDefs,r,function(a,b){ka(p,a,b)});if(s.length){var u=function(a,b){return a.getAttribute("data-"+b)!==null?b:null};h.each(na(p,s[0]).cells,function(a,b){var c=p.aoColumns[a];if(c.mData===a){var d=u(b,"sort")||u(b,"order"),e=u(b,"filter")||u(b,"search");if(d!==null||e!==
|
||||||
|
null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:k,type:d!==null?a+".@data-"+d:k,filter:e!==null?a+".@data-"+e:k};ka(p,a)}}})}var v=p.oFeatures;d.bStateSave&&(v.bStateSave=!0,Kb(p,d),z(p,"aoDrawCallback",ya,"state_save"));if(d.aaSorting===k){n=p.aaSorting;g=0;for(j=n.length;g<j;g++)n[g][1]=p.aoColumns[g].asSorting[0]}xa(p);v.bSort&&z(p,"aoDrawCallback",function(){if(p.bSorted){var a=U(p),b={};h.each(a,function(a,c){b[c.src]=c.dir});w(p,null,"order",[p,a,b]);Jb(p)}});z(p,"aoDrawCallback",
|
||||||
|
function(){(p.bSorted||B(p)==="ssp"||v.bDeferRender)&&xa(p)},"sc");gb(p);g=q.children("caption").each(function(){this._captionSide=q.css("caption-side")});j=q.children("thead");0===j.length&&(j=h("<thead/>").appendTo(this));p.nTHead=j[0];j=q.children("tbody");0===j.length&&(j=h("<tbody/>").appendTo(this));p.nTBody=j[0];j=q.children("tfoot");if(0===j.length&&0<g.length&&(""!==p.oScroll.sX||""!==p.oScroll.sY))j=h("<tfoot/>").appendTo(this);0===j.length||0===j.children().length?q.addClass(i.sNoFooter):
|
||||||
|
0<j.length&&(p.nTFoot=j[0],da(p.aoFooter,p.nTFoot));if(d.aaData)for(g=0;g<d.aaData.length;g++)K(p,d.aaData[g]);else(p.bDeferLoading||"dom"==B(p))&&ma(p,h(p.nTBody).children("tr"));p.aiDisplay=p.aiDisplayMaster.slice();p.bInitialised=!0;!1===o&&ga(p)}});b=null;return this};var Tb=[],y=Array.prototype,cc=function(a){var b,c,e=m.settings,d=h.map(e,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=h.inArray(a,d),-1!==b?[e[b]]:
|
||||||
|
null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=h(a):a instanceof h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,d);return-1!==b?e[b]:null}).toArray()};t=function(a,b){if(!(this instanceof t))return new t(a,b);var c=[],e=function(a){(a=cc(a))&&c.push.apply(c,a)};if(h.isArray(a))for(var d=0,f=a.length;d<f;d++)e(a[d]);else e(a);this.context=Na(c);b&&this.push.apply(this,b.toArray?b.toArray():b);this.selector={rows:null,cols:null,opts:null};
|
||||||
|
t.extend(this,this,Tb)};m.Api=t;t.prototype={any:function(){return 0!==this.flatten().length},concat:y.concat,context:[],each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new t(b[a],this[a]):null},filter:function(a){var b=[];if(y.filter)b=y.filter.call(this,a,this);else for(var c=0,e=this.length;c<e;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new t(this.context,b)},flatten:function(){var a=[];
|
||||||
|
return new t(this.context,a.concat.apply(a,this.toArray()))},join:y.join,indexOf:y.indexOf||function(a,b){for(var c=b||0,e=this.length;c<e;c++)if(this[c]===a)return c;return-1},iterator:function(a,b,c,e){var d=[],f,g,h,i,o,l=this.context,q,n,m=this.selector;"string"===typeof a&&(e=c,c=b,b=a,a=!1);g=0;for(h=l.length;g<h;g++){var p=new t(l[g]);if("table"===b)f=c.call(p,l[g],g),f!==k&&d.push(f);else if("columns"===b||"rows"===b)f=c.call(p,l[g],this[g],g),f!==k&&d.push(f);else if("column"===b||"column-rows"===
|
||||||
|
b||"row"===b||"cell"===b){n=this[g];"column-rows"===b&&(q=Ca(l[g],m.opts));i=0;for(o=n.length;i<o;i++)f=n[i],f="cell"===b?c.call(p,l[g],f.row,f.column,g,i):c.call(p,l[g],f,g,i,q),f!==k&&d.push(f)}}return d.length||e?(a=new t(l,a?d.concat.apply([],d):d),b=a.selector,b.rows=m.rows,b.cols=m.cols,b.opts=m.opts,a):this},lastIndexOf:y.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(y.map)b=y.map.call(this,a,this);else for(var c=
|
||||||
|
0,e=this.length;c<e;c++)b.push(a.call(this,this[c],c));return new t(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:y.pop,push:y.push,reduce:y.reduce||function(a,b){return hb(this,a,b,0,this.length,1)},reduceRight:y.reduceRight||function(a,b){return hb(this,a,b,this.length-1,-1,-1)},reverse:y.reverse,selector:null,shift:y.shift,sort:y.sort,splice:y.splice,toArray:function(){return y.slice.call(this)},to$:function(){return h(this)},toJQuery:function(){return h(this)},
|
||||||
|
unique:function(){return new t(this.context,Na(this))},unshift:y.unshift};t.extend=function(a,b,c){if(c.length&&b&&(b instanceof t||b.__dt_wrapper)){var e,d,f,g=function(a,b,c){return function(){var d=b.apply(a,arguments);t.extend(d,d,c.methodExt);return d}};e=0;for(d=c.length;e<d;e++)f=c[e],b[f.name]="function"===typeof f.val?g(a,f.val,f):h.isPlainObject(f.val)?{}:f.val,b[f.name].__dt_wrapper=!0,t.extend(a,b[f.name],f.propExt)}};t.register=r=function(a,b){if(h.isArray(a))for(var c=0,e=a.length;c<
|
||||||
|
e;c++)t.register(a[c],b);else for(var d=a.split("."),f=Tb,g,j,c=0,e=d.length;c<e;c++){g=(j=-1!==d[c].indexOf("()"))?d[c].replace("()",""):d[c];var i;a:{i=0;for(var o=f.length;i<o;i++)if(f[i].name===g){i=f[i];break a}i=null}i||(i={name:g,val:{},methodExt:[],propExt:[]},f.push(i));c===e-1?i.val=b:f=j?i.methodExt:i.propExt}};t.registerPlural=v=function(a,b,c){t.register(a,c);t.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof t?a.length?h.isArray(a[0])?new t(a.context,
|
||||||
|
a[0]):a[0]:k:a})};r("tables()",function(a){var b;if(a){b=t;var c=this.context;if("number"===typeof a)a=[c[a]];else var e=h.map(c,function(a){return a.nTable}),a=h(e).filter(a).map(function(){var a=h.inArray(this,e);return c[a]}).toArray();b=new b(a)}else b=this;return b});r("table()",function(a){var a=this.tables(a),b=a.context;return b.length?new t(b[0]):a});v("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});v("tables().body()","table().body()",
|
||||||
|
function(){return this.iterator("table",function(a){return a.nTBody},1)});v("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});v("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});v("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});r("draw()",function(a){return this.iterator("table",function(b){N(b,
|
||||||
|
!1===a)})});r("page()",function(a){return a===k?this.page.info().page:this.iterator("table",function(b){Ta(b,a)})});r("page.info()",function(){if(0===this.context.length)return k;var a=this.context[0],b=a._iDisplayStart,c=a._iDisplayLength,e=a.fnRecordsDisplay(),d=-1===c;return{page:d?0:Math.floor(b/c),pages:d?1:Math.ceil(e/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:e}});r("page.len()",function(a){return a===k?0!==this.context.length?this.context[0]._iDisplayLength:
|
||||||
|
k:this.iterator("table",function(b){Ra(b,a)})});var Ub=function(a,b,c){if(c){var e=new t(a);e.one("draw",function(){c(e.ajax.json())})}"ssp"==B(a)?N(a,b):(C(a,!0),ra(a,[],function(c){oa(a);for(var c=sa(a,c),e=0,g=c.length;e<g;e++)K(a,c[e]);N(a,b);C(a,!1)}))};r("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});r("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});r("ajax.reload()",function(a,b){return this.iterator("table",function(c){Ub(c,
|
||||||
|
!1===b,a)})});r("ajax.url()",function(a){var b=this.context;if(a===k){if(0===b.length)return k;b=b[0];return b.ajax?h.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){h.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});r("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Ub(c,!1===b,a)})});var $a=function(a,b,c,e,d){var f=[],g,j,i,o,l,q;i=typeof b;if(!b||"string"===i||"function"===i||b.length===k)b=[b];i=0;for(o=b.length;i<o;i++){j=
|
||||||
|
b[i]&&b[i].split?b[i].split(","):[b[i]];l=0;for(q=j.length;l<q;l++)(g=c("string"===typeof j[l]?h.trim(j[l]):j[l]))&&g.length&&f.push.apply(f,g)}a=u.selector[a];if(a.length){i=0;for(o=a.length;i<o;i++)f=a[i](e,d,f)}return f},ab=function(a){a||(a={});a.filter&&a.search===k&&(a.search=a.filter);return h.extend({search:"none",order:"current",page:"all"},a)},bb=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},
|
||||||
|
Ca=function(a,b){var c,e,d,f=[],g=a.aiDisplay;c=a.aiDisplayMaster;var j=b.search;e=b.order;d=b.page;if("ssp"==B(a))return"removed"===j?[]:V(0,c.length);if("current"==d){c=a._iDisplayStart;for(e=a.fnDisplayEnd();c<e;c++)f.push(g[c])}else if("current"==e||"applied"==e)f="none"==j?c.slice():"applied"==j?g.slice():h.map(c,function(a){return-1===h.inArray(a,g)?a:null});else if("index"==e||"original"==e){c=0;for(e=a.aoData.length;c<e;c++)"none"==j?f.push(c):(d=h.inArray(c,g),(-1===d&&"removed"==j||0<=d&&
|
||||||
|
"applied"==j)&&f.push(c))}return f};r("rows()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=ab(b),c=this.iterator("table",function(c){var d=b;return $a("row",a,function(a){var b=Pb(a);if(b!==null&&!d)return[b];var j=Ca(c,d);if(b!==null&&h.inArray(b,j)!==-1)return[b];if(!a)return j;if(typeof a==="function")return h.map(j,function(b){var d=c.aoData[b];return a(b,d._aData,d.nTr)?b:null});b=Sb(ia(c.aoData,j,"nTr"));return a.nodeName&&h.inArray(a,b)!==-1?[a._DT_RowIndex]:h(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()},
|
||||||
|
c,d)},1);c.selector.rows=a;c.selector.opts=b;return c});r("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||k},1)});r("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return ia(a.aoData,b,"_aData")},1)});v("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var e=b.aoData[c];return"search"===a?e._aFilterData:e._aSortData},1)});v("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",
|
||||||
|
function(b,c){ca(b,c,a)})});v("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b},1)});v("rows().remove()","row().remove()",function(){var a=this;return this.iterator("row",function(b,c,e){var d=b.aoData;d.splice(c,1);for(var f=0,g=d.length;f<g;f++)null!==d[f].nTr&&(d[f].nTr._DT_RowIndex=f);h.inArray(c,b.aiDisplay);pa(b.aiDisplayMaster,c);pa(b.aiDisplay,c);pa(a[e],c,!1);Sa(b)})});r("rows.add()",function(a){var b=this.iterator("table",function(b){var c,
|
||||||
|
f,g,h=[];f=0;for(g=a.length;f<g;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?h.push(ma(b,c)[0]):h.push(K(b,c));return h},1),c=this.rows(-1);c.pop();c.push.apply(c,b.toArray());return c});r("row()",function(a,b){return bb(this.rows(a,b))});r("row().data()",function(a){var b=this.context;if(a===k)return b.length&&this.length?b[0].aoData[this[0]]._aData:k;b[0].aoData[this[0]]._aData=a;ca(b[0],this[0],"data");return this});r("row().node()",function(){var a=this.context;return a.length&&this.length?
|
||||||
|
a[0].aoData[this[0]].nTr||null:null});r("row.add()",function(a){a instanceof h&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?ma(b,a)[0]:K(b,a)});return this.row(b[0])});var cb=function(a,b){var c=a.context;c.length&&(c=c[0].aoData[b!==k?b:a[0]],c._details&&(c._details.remove(),c._detailsShow=k,c._details=k))},Vb=function(a,b){var c=a.context;if(c.length&&a.length){var e=c[0].aoData[a[0]];if(e._details){(e._detailsShow=b)?e._details.insertAfter(e.nTr):
|
||||||
|
e._details.detach();var d=c[0],f=new t(d),g=d.aoData;f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<D(g,"_details").length&&(f.on("draw.dt.DT_details",function(a,b){d===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on("column-visibility.dt.DT_details",function(a,b){if(d===b)for(var c,e=aa(b),f=0,h=g.length;f<h;f++)c=g[f],c._details&&c._details.children("td[colspan]").attr("colspan",e)}),f.on("destroy.dt.DT_details",
|
||||||
|
function(a,b){if(d===b)for(var c=0,e=g.length;c<e;c++)g[c]._details&&cb(f,c)}))}}};r("row().child()",function(a,b){var c=this.context;if(a===k)return c.length&&this.length?c[0].aoData[this[0]]._details:k;if(!0===a)this.child.show();else if(!1===a)cb(this);else if(c.length&&this.length){var e=c[0],c=c[0].aoData[this[0]],d=[],f=function(a,b){if(h.isArray(a)||a instanceof h)for(var c=0,k=a.length;c<k;c++)f(a[c],b);else a.nodeName&&"tr"===a.nodeName.toLowerCase()?d.push(a):(c=h("<tr><td/></tr>").addClass(b),
|
||||||
|
h("td",c).addClass(b).html(a)[0].colSpan=aa(e),d.push(c[0]))};f(a,b);c._details&&c._details.remove();c._details=h(d);c._detailsShow&&c._details.insertAfter(c.nTr)}return this});r(["row().child.show()","row().child().show()"],function(){Vb(this,!0);return this});r(["row().child.hide()","row().child().hide()"],function(){Vb(this,!1);return this});r(["row().child.remove()","row().child().remove()"],function(){cb(this);return this});r("row().child.isShown()",function(){var a=this.context;return a.length&&
|
||||||
|
this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var dc=/^(.+):(name|visIdx|visible)$/,Wb=function(a,b,c,e,d){for(var c=[],e=0,f=d.length;e<f;e++)c.push(x(a,d[e],b));return c};r("columns()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=ab(b),c=this.iterator("table",function(c){var d=a,f=b,g=c.aoColumns,j=D(g,"sName"),i=D(g,"nTh");return $a("column",d,function(a){var b=Pb(a);if(a==="")return V(g.length);if(b!==null)return[b>=0?b:g.length+b];if(typeof a==="function"){var d=Ca(c,
|
||||||
|
f);return h.map(g,function(b,f){return a(f,Wb(c,f,0,0,d),i[f])?f:null})}var k=typeof a==="string"?a.match(dc):"";if(k)switch(k[2]){case "visIdx":case "visible":b=parseInt(k[1],10);if(b<0){var m=h.map(g,function(a,b){return a.bVisible?b:null});return[m[m.length+b]]}return[la(c,b)];case "name":return h.map(j,function(a,b){return a===k[1]?b:null})}else return h(i).filter(a).map(function(){return h.inArray(this,i)}).toArray()},c,f)},1);c.selector.cols=a;c.selector.opts=b;return c});v("columns().header()",
|
||||||
|
"column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});v("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});v("columns().data()","column().data()",function(){return this.iterator("column-rows",Wb,1)});v("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});v("columns().cache()","column().cache()",
|
||||||
|
function(a){return this.iterator("column-rows",function(b,c,e,d,f){return ia(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});v("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,e,d){return ia(a.aoData,d,"anCells",b)},1)});v("columns().visible()","column().visible()",function(a,b){return this.iterator("column",function(c,e){if(a===k)return c.aoColumns[e].bVisible;var d=c.aoColumns,f=d[e],g=c.aoData,j,i,m;if(a!==k&&f.bVisible!==a){if(a){var l=
|
||||||
|
h.inArray(!0,D(d,"bVisible"),e+1);j=0;for(i=g.length;j<i;j++)m=g[j].nTr,d=g[j].anCells,m&&m.insertBefore(d[e],d[l]||null)}else h(D(c.aoData,"anCells",e)).detach();f.bVisible=a;ea(c,c.aoHeader);ea(c,c.aoFooter);if(b===k||b)X(c),(c.oScroll.sX||c.oScroll.sY)&&Y(c);w(c,null,"column-visibility",[c,e,a]);ya(c)}})});v("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?$(b,c):c},1)});r("columns.adjust()",function(){return this.iterator("table",
|
||||||
|
function(a){X(a)},1)});r("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return la(c,b);if("fromData"===a||"toVisible"===a)return $(c,b)}});r("column()",function(a,b){return bb(this.columns(a,b))});r("cells()",function(a,b,c){h.isPlainObject(a)&&(a.row===k?(c=a,a=null):(c=b,b=null));h.isPlainObject(b)&&(c=b,b=null);if(null===b||b===k)return this.iterator("table",function(b){var d=a,e=ab(c),f=b.aoData,g=Ca(b,e),i=Sb(ia(f,g,"anCells")),
|
||||||
|
j=h([].concat.apply([],i)),l,m=b.aoColumns.length,o,r,t,s,u,v;return $a("cell",d,function(a){var c=typeof a==="function";if(a===null||a===k||c){o=[];r=0;for(t=g.length;r<t;r++){l=g[r];for(s=0;s<m;s++){u={row:l,column:s};if(c){v=b.aoData[l];a(u,x(b,l,s),v.anCells?v.anCells[s]:null)&&o.push(u)}else o.push(u)}}return o}return h.isPlainObject(a)?[a]:j.filter(a).map(function(a,b){l=b.parentNode._DT_RowIndex;return{row:l,column:h.inArray(b,f[l].anCells)}}).toArray()},b,e)});var e=this.columns(b,c),d=this.rows(a,
|
||||||
|
c),f,g,j,i,m,l=this.iterator("table",function(a,b){f=[];g=0;for(j=d[b].length;g<j;g++){i=0;for(m=e[b].length;i<m;i++)f.push({row:d[b][g],column:e[b][i]})}return f},1);h.extend(l.selector,{cols:b,rows:a,opts:c});return l});v("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b].anCells)?a[c]:k},1)});r("cells().data()",function(){return this.iterator("cell",function(a,b,c){return x(a,b,c)},1)});v("cells().cache()","cell().cache()",function(a){a=
|
||||||
|
"search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,e){return b.aoData[c][a][e]},1)});v("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,e){return x(b,c,e,a)},1)});v("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,b,c){return{row:b,column:c,columnVisible:$(a,c)}},1)});v("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,e){ca(b,c,a,e)})});r("cell()",
|
||||||
|
function(a,b,c){return bb(this.cells(a,b,c))});r("cell().data()",function(a){var b=this.context,c=this[0];if(a===k)return b.length&&c.length?x(b[0],c[0].row,c[0].column):k;Ia(b[0],c[0].row,c[0].column,a);ca(b[0],c[0].row,"data",c[0].column);return this});r("order()",function(a,b){var c=this.context;if(a===k)return 0!==c.length?c[0].aaSorting:k;"number"===typeof a?a=[[a,b]]:h.isArray(a[0])||(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});
|
||||||
|
r("order.listener()",function(a,b,c){return this.iterator("table",function(e){Oa(e,a,b,c)})});r(["columns().order()","column().order()"],function(a){var b=this;return this.iterator("table",function(c,e){var d=[];h.each(b[e],function(b,c){d.push([c,a])});c.aaSorting=d})});r("search()",function(a,b,c,e){var d=this.context;return a===k?0!==d.length?d[0].oPreviousSearch.sSearch:k:this.iterator("table",function(d){d.oFeatures.bFilter&&fa(d,h.extend({},d.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:
|
||||||
|
b,bSmart:null===c?!0:c,bCaseInsensitive:null===e?!0:e}),1)})});v("columns().search()","column().search()",function(a,b,c,e){return this.iterator("column",function(d,f){var g=d.aoPreSearchCols;if(a===k)return g[f].sSearch;d.oFeatures.bFilter&&(h.extend(g[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===e?!0:e}),fa(d,d.oPreviousSearch,1))})});r("state()",function(){return this.context.length?this.context[0].oSavedState:null});r("state.clear()",function(){return this.iterator("table",
|
||||||
|
function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});r("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null});r("state.save()",function(){return this.iterator("table",function(a){ya(a)})});m.versionCheck=m.fnVersionCheck=function(a){for(var b=m.version.split("."),a=a.split("."),c,e,d=0,f=a.length;d<f;d++)if(c=parseInt(b[d],10)||0,e=parseInt(a[d],10)||0,c!==e)return c>e;return!0};m.isDataTable=m.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;h.each(m.settings,
|
||||||
|
function(a,d){var f=d.nScrollHead?h("table",d.nScrollHead)[0]:null,g=d.nScrollFoot?h("table",d.nScrollFoot)[0]:null;if(d.nTable===b||f===b||g===b)c=!0});return c};m.tables=m.fnTables=function(a){return h.map(m.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable})};m.util={throttle:ua,escapeRegex:va};m.camelToHungarian=H;r("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,
|
||||||
|
b){r(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0].match(/\.dt\b/)||(a[0]+=".dt");var e=h(this.tables().nodes());e[b].apply(e,a);return this})});r("clear()",function(){return this.iterator("table",function(a){oa(a)})});r("settings()",function(){return new t(this.context,this.context)});r("init()",function(){var a=this.context;return a.length?a[0].oInit:null});r("data()",function(){return this.iterator("table",function(a){return D(a.aoData,"_aData")}).flatten()});r("destroy()",
|
||||||
|
function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,e=b.oClasses,d=b.nTable,f=b.nTBody,g=b.nTHead,j=b.nTFoot,i=h(d),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}),q;b.bDestroying=!0;w(b,"aoDestroyCallback","destroy",[b]);a||(new t(b)).columns().visible(!0);k.unbind(".DT").find(":not(tbody *)").unbind(".DT");h(Ea).unbind(".DT-"+b.sInstance);d!=g.parentNode&&(i.children("thead").detach(),i.append(g));j&&d!=j.parentNode&&(i.children("tfoot").detach(),
|
||||||
|
i.append(j));i.detach();k.detach();b.aaSorting=[];b.aaSortingFixed=[];xa(b);h(l).removeClass(b.asStripeClasses.join(" "));h("th, td",g).removeClass(e.sSortable+" "+e.sSortableAsc+" "+e.sSortableDesc+" "+e.sSortableNone);b.bJUI&&(h("th span."+e.sSortIcon+", td span."+e.sSortIcon,g).detach(),h("th, td",g).each(function(){var a=h("div."+e.sSortJUIWrapper,this);h(this).append(a.contents());a.detach()}));!a&&c&&c.insertBefore(d,b.nTableReinsertBefore);f.children().detach();f.append(l);i.css("width",b.sDestroyWidth).removeClass(e.sTable);
|
||||||
|
(q=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%q])});c=h.inArray(b,m.settings);-1!==c&&m.settings.splice(c,1)})});h.each(["column","row","cell"],function(a,b){r(b+"s().every()",function(a){return this.iterator(b,function(e,d,f){a.call((new t(e))[b](d,f))})})});r("i18n()",function(a,b,c){var e=this.context[0],a=R(a)(e.oLanguage);a===k&&(a=b);c!==k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});m.version="1.10.7";m.settings=
|
||||||
|
[];m.models={};m.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};m.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null};m.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",
|
||||||
|
sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};m.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,
|
||||||
|
fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,
|
||||||
|
fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},
|
||||||
|
sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},m.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,
|
||||||
|
sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null};W(m.defaults);m.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};W(m.defaults.column);m.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,
|
||||||
|
bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],
|
||||||
|
sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,
|
||||||
|
bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==B(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==B(this)?1*this._iRecordsDisplay:
|
||||||
|
this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,e=this.aiDisplay.length,d=this.oFeatures,f=d.bPaginate;return d.bServerSide?!1===f||-1===a?b+e:Math.min(b+a,this._iRecordsDisplay):!f||c>e||-1===a?e:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{}};m.ext=u={buttons:{},classes:{},errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},
|
||||||
|
header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:m.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:m.version};h.extend(u,{afnFiltering:u.search,aTypes:u.type.detect,ofnSearch:u.type.search,oSort:u.type.order,afnSortData:u.order,aoFeatures:u.feature,oApi:u.internal,oStdClasses:u.classes,oPagination:u.pager});h.extend(m.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",
|
||||||
|
sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",
|
||||||
|
sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Da="",Da="",F=Da+"ui-state-default",ja=Da+"css_right ui-icon ui-icon-",Xb=Da+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";h.extend(m.ext.oJUIClasses,
|
||||||
|
m.ext.classes,{sPageButton:"fg-button ui-button "+F,sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:F+" sorting_asc",sSortDesc:F+" sorting_desc",sSortable:F+" sorting",sSortableAsc:F+" sorting_asc_disabled",sSortableDesc:F+" sorting_desc_disabled",sSortableNone:F+" sorting_disabled",sSortJUIAsc:ja+"triangle-1-n",sSortJUIDesc:ja+"triangle-1-s",sSortJUI:ja+"carat-2-n-s",
|
||||||
|
sSortJUIAscAllowed:ja+"carat-1-n",sSortJUIDescAllowed:ja+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+F,sScrollFoot:"dataTables_scrollFoot "+F,sHeaderTH:F,sFooterTH:F,sJUIHeader:Xb+" ui-corner-tl ui-corner-tr",sJUIFooter:Xb+" ui-corner-bl ui-corner-br"});var Mb=m.ext.pager;h.extend(Mb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},simple_numbers:function(a,b){return["previous",
|
||||||
|
Wa(a,b),"next"]},full_numbers:function(a,b){return["first","previous",Wa(a,b),"next","last"]},_numbers:Wa,numbers_length:7});h.extend(!0,m.ext.renderer,{pageButton:{_:function(a,b,c,e,d,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i,k,l=0,m=function(b,e){var n,r,t,s,u=function(b){Ta(a,b.data.action,true)};n=0;for(r=e.length;n<r;n++){s=e[n];if(h.isArray(s)){t=h("<"+(s.DT_el||"div")+"/>").appendTo(b);m(t,s)}else{k=i="";switch(s){case "ellipsis":b.append('<span class="ellipsis">…</span>');break;
|
||||||
|
case "first":i=j.sFirst;k=s+(d>0?"":" "+g.sPageButtonDisabled);break;case "previous":i=j.sPrevious;k=s+(d>0?"":" "+g.sPageButtonDisabled);break;case "next":i=j.sNext;k=s+(d<f-1?"":" "+g.sPageButtonDisabled);break;case "last":i=j.sLast;k=s+(d<f-1?"":" "+g.sPageButtonDisabled);break;default:i=s+1;k=d===s?g.sPageButtonActive:""}if(i){t=h("<a>",{"class":g.sPageButton+" "+k,"aria-controls":a.sTableId,"data-dt-idx":l,tabindex:a.iTabIndex,id:c===0&&typeof s==="string"?a.sTableId+"_"+s:null}).html(i).appendTo(b);
|
||||||
|
Va(t,{action:s},u);l++}}}},n;try{n=h(Q.activeElement).data("dt-idx")}catch(r){}m(h(b).empty(),e);n&&h(b).find("[data-dt-idx="+n+"]").focus()}}});h.extend(m.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&(!ac.test(a)||!bc.test(a)))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||J(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;
|
||||||
|
return Rb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c,!0)?"html-num-fmt"+c:null},function(a){return J(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(m.ext.type.search,{html:function(a){return J(a)?a:"string"===typeof a?a.replace(Ob," ").replace(Ba,""):""},string:function(a){return J(a)?a:"string"===typeof a?a.replace(Ob," "):a}});var Aa=function(a,b,c,e){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Qb(a,b));a.replace&&(c&&(a=a.replace(c,"")),
|
||||||
|
e&&(a=a.replace(e,"")));return 1*a};h.extend(u.type.order,{"date-pre":function(a){return Date.parse(a)||0},"html-pre":function(a){return J(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return J(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});db("");h.extend(!0,m.ext.renderer,{header:{_:function(a,b,c,e){h(a.nTable).on("order.dt.DT",function(d,
|
||||||
|
f,g,h){if(a===f){d=c.idx;b.removeClass(c.sSortingClass+" "+e.sSortAsc+" "+e.sSortDesc).addClass(h[d]=="asc"?e.sSortAsc:h[d]=="desc"?e.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,e){h("<div/>").addClass(e.sSortJUIWrapper).append(b.contents()).append(h("<span/>").addClass(e.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);h(a.nTable).on("order.dt.DT",function(d,f,g,h){if(a===f){d=c.idx;b.removeClass(e.sSortAsc+" "+e.sSortDesc).addClass(h[d]=="asc"?e.sSortAsc:h[d]=="desc"?e.sSortDesc:c.sSortingClass);
|
||||||
|
b.find("span."+e.sSortIcon).removeClass(e.sSortJUIAsc+" "+e.sSortJUIDesc+" "+e.sSortJUI+" "+e.sSortJUIAscAllowed+" "+e.sSortJUIDescAllowed).addClass(h[d]=="asc"?e.sSortJUIAsc:h[d]=="desc"?e.sSortJUIDesc:c.sSortingClassJUI)}})}}});m.render={number:function(a,b,c,e){return{display:function(d){if("number"!==typeof d&&"string"!==typeof d)return d;var f=0>d?"-":"",d=Math.abs(parseFloat(d)),g=parseInt(d,10),d=c?b+(d-g).toFixed(c).substring(2):"";return f+(e||"")+g.toString().replace(/\B(?=(\d{3})+(?!\d))/g,
|
||||||
|
a)+d}}}};h.extend(m.ext.internal,{_fnExternApiFunc:Nb,_fnBuildAjax:ra,_fnAjaxUpdate:kb,_fnAjaxParameters:tb,_fnAjaxUpdateDraw:ub,_fnAjaxDataSrc:sa,_fnAddColumn:Fa,_fnColumnOptions:ka,_fnAdjustColumnSizing:X,_fnVisibleToColumnIndex:la,_fnColumnIndexToVisible:$,_fnVisbleColumns:aa,_fnGetColumns:Z,_fnColumnTypes:Ha,_fnApplyColumnDefs:ib,_fnHungarianMap:W,_fnCamelToHungarian:H,_fnLanguageCompat:P,_fnBrowserDetect:gb,_fnAddData:K,_fnAddTr:ma,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:
|
||||||
|
null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:x,_fnSetCellData:Ia,_fnSplitObjNotation:Ka,_fnGetObjectDataFn:R,_fnSetObjectDataFn:S,_fnGetDataMaster:La,_fnClearTable:oa,_fnDeleteIndex:pa,_fnInvalidate:ca,_fnGetRowElements:na,_fnCreateTr:Ja,_fnBuildHead:jb,_fnDrawHead:ea,_fnDraw:M,_fnReDraw:N,_fnAddOptionsHtml:mb,_fnDetectHeader:da,_fnGetUniqueThs:qa,_fnFeatureHtmlFilter:ob,_fnFilterComplete:fa,_fnFilterCustom:xb,_fnFilterColumn:wb,_fnFilter:vb,_fnFilterCreateSearch:Qa,
|
||||||
|
_fnEscapeRegex:va,_fnFilterData:yb,_fnFeatureHtmlInfo:rb,_fnUpdateInfo:Bb,_fnInfoMacros:Cb,_fnInitialise:ga,_fnInitComplete:ta,_fnLengthChange:Ra,_fnFeatureHtmlLength:nb,_fnFeatureHtmlPaginate:sb,_fnPageChange:Ta,_fnFeatureHtmlProcessing:pb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:qb,_fnScrollDraw:Y,_fnApplyToChildren:G,_fnCalculateColumnWidths:Ga,_fnThrottle:ua,_fnConvertToWidth:Db,_fnScrollingWidthAdjust:Fb,_fnGetWidestNode:Eb,_fnGetMaxLenString:Gb,_fnStringToCss:s,_fnScrollBarWidth:Hb,_fnSortFlatten:U,
|
||||||
|
_fnSort:lb,_fnSortAria:Jb,_fnSortListener:Ua,_fnSortAttachListener:Oa,_fnSortingClasses:xa,_fnSortData:Ib,_fnSaveState:ya,_fnLoadState:Kb,_fnSettingsFromNode:za,_fnLog:I,_fnMap:E,_fnBindAction:Va,_fnCallbackReg:z,_fnCallbackFire:w,_fnLengthOverflow:Sa,_fnRenderer:Pa,_fnDataSource:B,_fnRowAttributes:Ma,_fnCalculateEnd:function(){}});h.fn.dataTable=m;h.fn.dataTableSettings=m.settings;h.fn.dataTableExt=m.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(m,function(a,b){h.fn.DataTable[a]=
|
||||||
|
b});return h.fn.dataTable};"function"===typeof define&&define.amd?define("datatables",["jquery"],P):"object"===typeof exports?module.exports=P(require("jquery")):jQuery&&!jQuery.fn.dataTable&&P(jQuery)})(window,document);
|
||||||
15129
externals/jquery.datatables.js
vendored
Normal file
14950
externals/jquery.datatables_ase.js
vendored
Normal file
11
externals/jquery.js
vendored
Normal file
5
externals/jquery.min.js
vendored
Normal file
544
externals/jquery.typeahead.css
vendored
Normal file
@@ -0,0 +1,544 @@
|
|||||||
|
.typeahead__container {
|
||||||
|
/**
|
||||||
|
* Restore the font weight unset by the previous rule.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Show the overflow in IE.
|
||||||
|
* 1. Show the overflow in Edge.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Remove the inheritance of text transform in Edge, Firefox, and IE.
|
||||||
|
* 1. Remove the inheritance of text transform in Firefox.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
|
||||||
|
* controls in Android 4.
|
||||||
|
* 2. Correct the inability to style clickable types in iOS and Safari.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Remove the inner border and padding in Firefox.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Restore the focus styles unset by the previous rule.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Change the border, margin, and padding in all browsers (opinionated).
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* 1. Correct the text wrapping in Edge and IE.
|
||||||
|
* 2. Correct the color inheritance from `fieldset` elements in IE.
|
||||||
|
* 3. Remove the padding so developers are not caught out when they zero out
|
||||||
|
* `fieldset` elements in all browsers.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Remove the default vertical scrollbar in IE.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* 1. Add the correct box sizing in IE 10-.
|
||||||
|
* 2. Remove the padding in IE 10-.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Correct the cursor style of increment and decrement buttons in Chrome.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* 1. Correct the odd appearance in Chrome and Safari.
|
||||||
|
* 2. Correct the outline style in Safari.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Remove the inner padding and cancel buttons in Chrome and Safari on OS X.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Correct the text style of placeholders in Chrome, Edge, and Safari.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* 1. Correct the inability to style clickable types in iOS and Safari.
|
||||||
|
* 2. Change font properties to `inherit` in Safari.
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button,
|
||||||
|
.typeahead__container input,
|
||||||
|
.typeahead__container optgroup,
|
||||||
|
.typeahead__container select,
|
||||||
|
.typeahead__container textarea {
|
||||||
|
font: inherit;
|
||||||
|
/* 1 */
|
||||||
|
margin: 0;
|
||||||
|
/* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container optgroup {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button,
|
||||||
|
.typeahead__container input {
|
||||||
|
/* 1 */
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button,
|
||||||
|
.typeahead__container select {
|
||||||
|
/* 1 */
|
||||||
|
text-transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button,
|
||||||
|
.typeahead__container html [type="button"],
|
||||||
|
.typeahead__container [type="reset"],
|
||||||
|
.typeahead__container [type="submit"] {
|
||||||
|
-webkit-appearance: button;
|
||||||
|
/* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button::-moz-focus-inner,
|
||||||
|
.typeahead__container [type="button"]::-moz-focus-inner,
|
||||||
|
.typeahead__container [type="reset"]::-moz-focus-inner,
|
||||||
|
.typeahead__container [type="submit"]::-moz-focus-inner {
|
||||||
|
border-style: none;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button:-moz-focusring,
|
||||||
|
.typeahead__container [type="button"]:-moz-focusring,
|
||||||
|
.typeahead__container [type="reset"]:-moz-focusring,
|
||||||
|
.typeahead__container [type="submit"]:-moz-focusring {
|
||||||
|
outline: 1px dotted ButtonText;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container fieldset {
|
||||||
|
border: 1px solid #c0c0c0;
|
||||||
|
margin: 0 2px;
|
||||||
|
padding: 0.35em 0.625em 0.75em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container legend {
|
||||||
|
box-sizing: border-box;
|
||||||
|
/* 1 */
|
||||||
|
color: inherit;
|
||||||
|
/* 2 */
|
||||||
|
display: table;
|
||||||
|
/* 1 */
|
||||||
|
max-width: 100%;
|
||||||
|
/* 1 */
|
||||||
|
padding: 0;
|
||||||
|
/* 3 */
|
||||||
|
white-space: normal;
|
||||||
|
/* 1 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container textarea {
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container [type="checkbox"],
|
||||||
|
.typeahead__container [type="radio"] {
|
||||||
|
box-sizing: border-box;
|
||||||
|
/* 1 */
|
||||||
|
padding: 0;
|
||||||
|
/* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container [type="number"]::-webkit-inner-spin-button,
|
||||||
|
.typeahead__container [type="number"]::-webkit-outer-spin-button {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container [type="search"] {
|
||||||
|
-webkit-appearance: textfield;
|
||||||
|
/* 1 */
|
||||||
|
outline-offset: -2px;
|
||||||
|
/* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container [type="search"]::-webkit-search-cancel-button,
|
||||||
|
.typeahead__container [type="search"]::-webkit-search-decoration {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container ::-webkit-input-placeholder {
|
||||||
|
color: inherit;
|
||||||
|
opacity: 0.54;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container ::-webkit-file-upload-button {
|
||||||
|
-webkit-appearance: button;
|
||||||
|
/* 1 */
|
||||||
|
font: inherit;
|
||||||
|
/* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container {
|
||||||
|
position: relative;
|
||||||
|
font: 14px Lato, "Helvetica Neue", Arial, Helvetica, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container * {
|
||||||
|
box-sizing: border-box;
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__query {
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__filter {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__filter button {
|
||||||
|
min-width: 100%;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__filter button:after {
|
||||||
|
display: inline-block;
|
||||||
|
margin-left: 4px;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
vertical-align: -2px;
|
||||||
|
content: "";
|
||||||
|
border: 4px solid;
|
||||||
|
border-right-color: transparent;
|
||||||
|
border-bottom-color: transparent;
|
||||||
|
border-left-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__field {
|
||||||
|
font-size: 0;
|
||||||
|
position: relative;
|
||||||
|
display: table;
|
||||||
|
border-collapse: collapse;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__field > * {
|
||||||
|
display: table-cell;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__query, .typeahead__filter, .typeahead__button {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__button {
|
||||||
|
position: relative;
|
||||||
|
font-size: 0;
|
||||||
|
width: 1%;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__button button {
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
border-bottom-right-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__field {
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__field input {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: 32px;
|
||||||
|
padding: 6px 12px;
|
||||||
|
background: #fff;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 2px 0 0 2px;
|
||||||
|
transition: all ease-in-out .15s;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
-moz-appearance: none;
|
||||||
|
appearance: none;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__field input:focus, .typeahead__field input:active {
|
||||||
|
border-color: #66afe9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__field input[type="search"],
|
||||||
|
.typeahead__field input[type="search"]::-webkit-search-cancel-button {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__field input[type="search"]::-ms-clear {
|
||||||
|
display: none;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container.hint .typeahead__field input {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container.hint .typeahead__field input:last-child, .typeahead__hint {
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button {
|
||||||
|
display: inline-block;
|
||||||
|
margin-bottom: 0;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: middle;
|
||||||
|
-ms-touch-action: manipulation;
|
||||||
|
touch-action: manipulation;
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
height: 32px;
|
||||||
|
padding: 6px 12px;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button:hover, .typeahead__container button:focus {
|
||||||
|
color: #3c3c3c;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
border-color: #b3b3b3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button:active, .typeahead__container button.active {
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container button:focus, .typeahead__container button:active {
|
||||||
|
border-color: #66afe9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container input.disabled,
|
||||||
|
.typeahead__container input[disabled],
|
||||||
|
.typeahead__container button.disabled,
|
||||||
|
.typeahead__container button[disabled] {
|
||||||
|
cursor: not-allowed;
|
||||||
|
pointer-events: none;
|
||||||
|
opacity: 0.65;
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: #fff;
|
||||||
|
border-color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__filter, .typeahead__button {
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__filter button, .typeahead__button button {
|
||||||
|
margin-left: -1px;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__filter:hover, .typeahead__filter:active, .typeahead__filter:focus, .typeahead__button:hover, .typeahead__button:active, .typeahead__button:focus {
|
||||||
|
z-index: 1001;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__filter:hover button:focus, .typeahead__filter:hover button:active, .typeahead__filter:active button:focus, .typeahead__filter:active button:active, .typeahead__filter:focus button:focus, .typeahead__filter:focus button:active, .typeahead__button:hover button:focus, .typeahead__button:hover button:active, .typeahead__button:active button:focus, .typeahead__button:active button:active, .typeahead__button:focus button:focus, .typeahead__button:focus button:active {
|
||||||
|
z-index: 1001;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__filter + .typeahead__button button {
|
||||||
|
margin-left: -2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container.filter .typeahead__filter {
|
||||||
|
z-index: 1001;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list, .typeahead__dropdown {
|
||||||
|
position: absolute;
|
||||||
|
top: 100%;
|
||||||
|
left: 0;
|
||||||
|
z-index: 1000;
|
||||||
|
width: 100%;
|
||||||
|
min-width: 160px;
|
||||||
|
padding: 5px 0;
|
||||||
|
margin: 2px 0 0;
|
||||||
|
list-style: none;
|
||||||
|
text-align: left;
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 2px;
|
||||||
|
background-clip: padding-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__result.detached .typeahead__list {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1041;
|
||||||
|
top: initial;
|
||||||
|
left: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__dropdown {
|
||||||
|
right: 0;
|
||||||
|
left: initial;
|
||||||
|
z-index: 1001;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list > li {
|
||||||
|
position: relative;
|
||||||
|
border-top: solid 1px #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list > li:first-child {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list > li > a,
|
||||||
|
.typeahead__dropdown > li > a {
|
||||||
|
display: block;
|
||||||
|
padding: 6px 12px;
|
||||||
|
clear: both;
|
||||||
|
color: #333333;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list > li > a:hover,
|
||||||
|
.typeahead__list > li > a:focus,
|
||||||
|
.typeahead__list > li.active > a,
|
||||||
|
.typeahead__dropdown > li > a:hover,
|
||||||
|
.typeahead__dropdown > li > a:focus,
|
||||||
|
.typeahead__dropdown > li.active > a {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
color: #3c3c3c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list.empty > li > a {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list.empty > li > a:hover,
|
||||||
|
.typeahead__list.empty > li > a:focus,
|
||||||
|
.typeahead__list.empty > li.active > a {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list > li.typeahead__group {
|
||||||
|
border-color: #bfdef6;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list > li.typeahead__group:first-child {
|
||||||
|
border-top: solid 1px #bfdef6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list > li.typeahead__group > a,
|
||||||
|
.typeahead__list > li.typeahead__group > a:hover,
|
||||||
|
.typeahead__list > li.typeahead__group > a:focus,
|
||||||
|
.typeahead__list > li.typeahead__group.active > a {
|
||||||
|
cursor: default;
|
||||||
|
color: #17639f;
|
||||||
|
background: #ecf5fc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__list > li.typeahead__group + li.typeahead__item {
|
||||||
|
border-color: #bfdef6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container.result .typeahead__list,
|
||||||
|
.typeahead__container.filter .typeahead__dropdown,
|
||||||
|
.typeahead__container.hint .typeahead__hint,
|
||||||
|
.typeahead__container.backdrop + .typeahead__backdrop {
|
||||||
|
display: block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container .typeahead__list,
|
||||||
|
.typeahead__container .typeahead__dropdown,
|
||||||
|
.typeahead__container .typeahead__hint,
|
||||||
|
.typeahead__container + .typeahead__backdrop {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__dropdown li:last-child {
|
||||||
|
margin-top: 5px;
|
||||||
|
padding-top: 5px;
|
||||||
|
border-top: solid 1px #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__cancel-button {
|
||||||
|
visibility: hidden;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
border-radius: 50%;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
position: absolute;
|
||||||
|
top: 8px;
|
||||||
|
right: .8em;
|
||||||
|
cursor: pointer;
|
||||||
|
background: url(data:image/svg+xml;charset=utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDQzOC41MzMgNDM4LjUzMyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDM4LjUzMyA0MzguNTMzOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnPgoJPHBhdGggZD0iTTQwOS4xMzMsMTA5LjIwM2MtMTkuNjA4LTMzLjU5Mi00Ni4yMDUtNjAuMTg5LTc5Ljc5OC03OS43OTZDMjk1LjczNiw5LjgwMSwyNTkuMDU4LDAsMjE5LjI3MywwICAgYy0zOS43ODEsMC03Ni40Nyw5LjgwMS0xMTAuMDYzLDI5LjQwN2MtMzMuNTk1LDE5LjYwNC02MC4xOTIsNDYuMjAxLTc5LjgsNzkuNzk2QzkuODAxLDE0Mi44LDAsMTc5LjQ4OSwwLDIxOS4yNjcgICBjMCwzOS43OCw5LjgwNCw3Ni40NjMsMjkuNDA3LDExMC4wNjJjMTkuNjA3LDMzLjU5Miw0Ni4yMDQsNjAuMTg5LDc5Ljc5OSw3OS43OThjMzMuNTk3LDE5LjYwNSw3MC4yODMsMjkuNDA3LDExMC4wNjMsMjkuNDA3ICAgczc2LjQ3LTkuODAyLDExMC4wNjUtMjkuNDA3YzMzLjU5My0xOS42MDIsNjAuMTg5LTQ2LjIwNiw3OS43OTUtNzkuNzk4YzE5LjYwMy0zMy41OTYsMjkuNDAzLTcwLjI4NCwyOS40MDMtMTEwLjA2MiAgIEM0MzguNTMzLDE3OS40ODUsNDI4LjczMiwxNDIuNzk1LDQwOS4xMzMsMTA5LjIwM3ogTTMyMi42MjEsMjcwLjkzOWMzLjYxNywzLjYxMyw1LjQyOCw3LjkwNSw1LjQyOCwxMi44NTQgICBjMCw1LjEzMy0xLjgxMSw5LjUxNC01LjQyOCwxMy4xMjdsLTI1LjY5MywyNS43MDFjLTMuNjE0LDMuNjEzLTcuOTk0LDUuNDItMTMuMTM1LDUuNDJjLTQuOTQ4LDAtOS4yMzYtMS44MDctMTIuODQ3LTUuNDIgICBsLTUxLjY3Ni01MS42ODJsLTUxLjY3OCw1MS42ODJjLTMuNjE2LDMuNjEzLTcuODk4LDUuNDItMTIuODQ3LDUuNDJjLTUuMTQsMC05LjUxNy0xLjgwNy0xMy4xMzQtNS40MmwtMjUuNjk3LTI1LjcwMSAgIGMtMy42MTYtMy42MTMtNS40MjQtNy45OTQtNS40MjQtMTMuMTI3YzAtNC45NDgsMS44MDktOS4yNCw1LjQyNC0xMi44NTRsNTEuNjc4LTUxLjY3M2wtNTEuNjc4LTUxLjY3OCAgIGMtMy42MTYtMy42MTItNS40MjQtNy44OTgtNS40MjQtMTIuODQ3YzAtNS4xNCwxLjgwOS05LjUxNyw1LjQyNC0xMy4xMzRsMjUuNjk3LTI1LjY5M2MzLjYxNy0zLjYxNiw3Ljk5NC01LjQyNCwxMy4xMzQtNS40MjQgICBjNC45NDksMCw5LjIzMSwxLjgwOSwxMi44NDcsNS40MjRsNTEuNjc4LDUxLjY3NGw1MS42NzYtNTEuNjc0YzMuNjEtMy42MTYsNy44OTgtNS40MjQsMTIuODQ3LTUuNDI0ICAgYzUuMTQxLDAsOS41MjEsMS44MDksMTMuMTM1LDUuNDI0bDI1LjY5MywyNS42OTNjMy42MTcsMy42MTcsNS40MjgsNy45OTQsNS40MjgsMTMuMTM0YzAsNC45NDgtMS44MTEsOS4yMzUtNS40MjgsMTIuODQ3ICAgbC01MS42NzUsNTEuNjc4TDMyMi42MjEsMjcwLjkzOXoiIGZpbGw9IiM1NTU1NTUiLz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K) no-repeat scroll center center transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container.cancel:not(.loading) .typeahead__cancel-button {
|
||||||
|
visibility: visible;
|
||||||
|
opacity: .25;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container.cancel:not(.loading) .typeahead__cancel-button:hover {
|
||||||
|
opacity: .4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__search-icon {
|
||||||
|
padding: 0 1.25rem;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
display: block;
|
||||||
|
background: url(data:image/svg+xml;charset=utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTguMS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI1MC4zMTMgMjUwLjMxMyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjUwLjMxMyAyNTAuMzEzOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCI+CjxnIGlkPSJTZWFyY2giPgoJPHBhdGggc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkOyIgZD0iTTI0NC4xODYsMjE0LjYwNGwtNTQuMzc5LTU0LjM3OGMtMC4yODktMC4yODktMC42MjgtMC40OTEtMC45My0wLjc2ICAgYzEwLjctMTYuMjMxLDE2Ljk0NS0zNS42NiwxNi45NDUtNTYuNTU0QzIwNS44MjIsNDYuMDc1LDE1OS43NDcsMCwxMDIuOTExLDBTMCw0Ni4wNzUsMCwxMDIuOTExICAgYzAsNTYuODM1LDQ2LjA3NCwxMDIuOTExLDEwMi45MSwxMDIuOTExYzIwLjg5NSwwLDQwLjMyMy02LjI0NSw1Ni41NTQtMTYuOTQ1YzAuMjY5LDAuMzAxLDAuNDcsMC42NCwwLjc1OSwwLjkyOWw1NC4zOCw1NC4zOCAgIGM4LjE2OSw4LjE2OCwyMS40MTMsOC4xNjgsMjkuNTgzLDBDMjUyLjM1NCwyMzYuMDE3LDI1Mi4zNTQsMjIyLjc3MywyNDQuMTg2LDIxNC42MDR6IE0xMDIuOTExLDE3MC4xNDYgICBjLTM3LjEzNCwwLTY3LjIzNi0zMC4xMDItNjcuMjM2LTY3LjIzNWMwLTM3LjEzNCwzMC4xMDMtNjcuMjM2LDY3LjIzNi02Ny4yMzZjMzcuMTMyLDAsNjcuMjM1LDMwLjEwMyw2Ny4yMzUsNjcuMjM2ICAgQzE3MC4xNDYsMTQwLjA0NCwxNDAuMDQzLDE3MC4xNDYsMTAyLjkxMSwxNzAuMTQ2eiIgZmlsbD0iIzU1NTU1NSIvPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo=) no-repeat scroll center center transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container.loading .typeahead__query:before, .typeahead__container.loading .typeahead__query:after {
|
||||||
|
transition: all 0s linear, opacity 0.2s ease;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 3;
|
||||||
|
content: '';
|
||||||
|
top: 50%;
|
||||||
|
right: .55em;
|
||||||
|
margin-top: -10.5px;
|
||||||
|
width: 21px;
|
||||||
|
height: 21px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-radius: 500rem;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: .1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container.loading .typeahead__query:before {
|
||||||
|
border-color: rgba(0, 0, 0, 0.35);
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead__container.loading .typeahead__query:after {
|
||||||
|
-webkit-animation: button-spin 0.6s linear;
|
||||||
|
animation: button-spin 0.6s linear;
|
||||||
|
-webkit-animation-iteration-count: infinite;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
border-color: #fff transparent transparent;
|
||||||
|
box-shadow: 0 0 0 1px transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes button-spin {
|
||||||
|
from {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
-webkit-transform: rotate(360deg);
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes button-spin {
|
||||||
|
from {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
-webkit-transform: rotate(360deg);
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
3083
externals/jquery.typeahead.js
vendored
Normal file
1
externals/jquery.typeahead.min.css
vendored
Normal file
11
externals/jquery.typeahead.min.js
vendored
Normal file
497
externals/jquery.ui.position.js
vendored
Normal file
@@ -0,0 +1,497 @@
|
|||||||
|
/*!
|
||||||
|
* jQuery UI Position v1.10.0
|
||||||
|
* http://jqueryui.com
|
||||||
|
*
|
||||||
|
* Copyright 2013 jQuery Foundation and other contributors
|
||||||
|
* Released under the MIT license.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://api.jqueryui.com/position/
|
||||||
|
*/
|
||||||
|
(function( $, undefined ) {
|
||||||
|
|
||||||
|
$.ui = $.ui || {};
|
||||||
|
|
||||||
|
var cachedScrollbarWidth,
|
||||||
|
max = Math.max,
|
||||||
|
abs = Math.abs,
|
||||||
|
round = Math.round,
|
||||||
|
rhorizontal = /left|center|right/,
|
||||||
|
rvertical = /top|center|bottom/,
|
||||||
|
roffset = /[\+\-]\d+%?/,
|
||||||
|
rposition = /^\w+/,
|
||||||
|
rpercent = /%$/,
|
||||||
|
_position = $.fn.position;
|
||||||
|
|
||||||
|
function getOffsets( offsets, width, height ) {
|
||||||
|
return [
|
||||||
|
parseInt( offsets[ 0 ], 10 ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
|
||||||
|
parseInt( offsets[ 1 ], 10 ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseCss( element, property ) {
|
||||||
|
return parseInt( $.css( element, property ), 10 ) || 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getDimensions( elem ) {
|
||||||
|
var raw = elem[0];
|
||||||
|
if ( raw.nodeType === 9 ) {
|
||||||
|
return {
|
||||||
|
width: elem.width(),
|
||||||
|
height: elem.height(),
|
||||||
|
offset: { top: 0, left: 0 }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if ( $.isWindow( raw ) ) {
|
||||||
|
return {
|
||||||
|
width: elem.width(),
|
||||||
|
height: elem.height(),
|
||||||
|
offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if ( raw.preventDefault ) {
|
||||||
|
return {
|
||||||
|
width: 0,
|
||||||
|
height: 0,
|
||||||
|
offset: { top: raw.pageY, left: raw.pageX }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
width: elem.outerWidth(),
|
||||||
|
height: elem.outerHeight(),
|
||||||
|
offset: elem.offset()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
$.position = {
|
||||||
|
scrollbarWidth: function() {
|
||||||
|
if ( cachedScrollbarWidth !== undefined ) {
|
||||||
|
return cachedScrollbarWidth;
|
||||||
|
}
|
||||||
|
var w1, w2,
|
||||||
|
div = $( "<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ),
|
||||||
|
innerDiv = div.children()[0];
|
||||||
|
|
||||||
|
$( "body" ).append( div );
|
||||||
|
w1 = innerDiv.offsetWidth;
|
||||||
|
div.css( "overflow", "scroll" );
|
||||||
|
|
||||||
|
w2 = innerDiv.offsetWidth;
|
||||||
|
|
||||||
|
if ( w1 === w2 ) {
|
||||||
|
w2 = div[0].clientWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.remove();
|
||||||
|
|
||||||
|
return (cachedScrollbarWidth = w1 - w2);
|
||||||
|
},
|
||||||
|
getScrollInfo: function( within ) {
|
||||||
|
var overflowX = within.isWindow ? "" : within.element.css( "overflow-x" ),
|
||||||
|
overflowY = within.isWindow ? "" : within.element.css( "overflow-y" ),
|
||||||
|
hasOverflowX = overflowX === "scroll" ||
|
||||||
|
( overflowX === "auto" && within.width < within.element[0].scrollWidth ),
|
||||||
|
hasOverflowY = overflowY === "scroll" ||
|
||||||
|
( overflowY === "auto" && within.height < within.element[0].scrollHeight );
|
||||||
|
return {
|
||||||
|
width: hasOverflowX ? $.position.scrollbarWidth() : 0,
|
||||||
|
height: hasOverflowY ? $.position.scrollbarWidth() : 0
|
||||||
|
};
|
||||||
|
},
|
||||||
|
getWithinInfo: function( element ) {
|
||||||
|
var withinElement = $( element || window ),
|
||||||
|
isWindow = $.isWindow( withinElement[0] );
|
||||||
|
return {
|
||||||
|
element: withinElement,
|
||||||
|
isWindow: isWindow,
|
||||||
|
offset: withinElement.offset() || { left: 0, top: 0 },
|
||||||
|
scrollLeft: withinElement.scrollLeft(),
|
||||||
|
scrollTop: withinElement.scrollTop(),
|
||||||
|
width: isWindow ? withinElement.width() : withinElement.outerWidth(),
|
||||||
|
height: isWindow ? withinElement.height() : withinElement.outerHeight()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$.fn.position = function( options ) {
|
||||||
|
if ( !options || !options.of ) {
|
||||||
|
return _position.apply( this, arguments );
|
||||||
|
}
|
||||||
|
|
||||||
|
// make a copy, we don't want to modify arguments
|
||||||
|
options = $.extend( {}, options );
|
||||||
|
|
||||||
|
var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
|
||||||
|
target = $( options.of ),
|
||||||
|
within = $.position.getWithinInfo( options.within ),
|
||||||
|
scrollInfo = $.position.getScrollInfo( within ),
|
||||||
|
collision = ( options.collision || "flip" ).split( " " ),
|
||||||
|
offsets = {};
|
||||||
|
|
||||||
|
dimensions = getDimensions( target );
|
||||||
|
if ( target[0].preventDefault ) {
|
||||||
|
// force left top to allow flipping
|
||||||
|
options.at = "left top";
|
||||||
|
}
|
||||||
|
targetWidth = dimensions.width;
|
||||||
|
targetHeight = dimensions.height;
|
||||||
|
targetOffset = dimensions.offset;
|
||||||
|
// clone to reuse original targetOffset later
|
||||||
|
basePosition = $.extend( {}, targetOffset );
|
||||||
|
|
||||||
|
// force my and at to have valid horizontal and vertical positions
|
||||||
|
// if a value is missing or invalid, it will be converted to center
|
||||||
|
$.each( [ "my", "at" ], function() {
|
||||||
|
var pos = ( options[ this ] || "" ).split( " " ),
|
||||||
|
horizontalOffset,
|
||||||
|
verticalOffset;
|
||||||
|
|
||||||
|
if ( pos.length === 1) {
|
||||||
|
pos = rhorizontal.test( pos[ 0 ] ) ?
|
||||||
|
pos.concat( [ "center" ] ) :
|
||||||
|
rvertical.test( pos[ 0 ] ) ?
|
||||||
|
[ "center" ].concat( pos ) :
|
||||||
|
[ "center", "center" ];
|
||||||
|
}
|
||||||
|
pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
|
||||||
|
pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
|
||||||
|
|
||||||
|
// calculate offsets
|
||||||
|
horizontalOffset = roffset.exec( pos[ 0 ] );
|
||||||
|
verticalOffset = roffset.exec( pos[ 1 ] );
|
||||||
|
offsets[ this ] = [
|
||||||
|
horizontalOffset ? horizontalOffset[ 0 ] : 0,
|
||||||
|
verticalOffset ? verticalOffset[ 0 ] : 0
|
||||||
|
];
|
||||||
|
|
||||||
|
// reduce to just the positions without the offsets
|
||||||
|
options[ this ] = [
|
||||||
|
rposition.exec( pos[ 0 ] )[ 0 ],
|
||||||
|
rposition.exec( pos[ 1 ] )[ 0 ]
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
// normalize collision option
|
||||||
|
if ( collision.length === 1 ) {
|
||||||
|
collision[ 1 ] = collision[ 0 ];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( options.at[ 0 ] === "right" ) {
|
||||||
|
basePosition.left += targetWidth;
|
||||||
|
} else if ( options.at[ 0 ] === "center" ) {
|
||||||
|
basePosition.left += targetWidth / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( options.at[ 1 ] === "bottom" ) {
|
||||||
|
basePosition.top += targetHeight;
|
||||||
|
} else if ( options.at[ 1 ] === "center" ) {
|
||||||
|
basePosition.top += targetHeight / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
|
||||||
|
basePosition.left += atOffset[ 0 ];
|
||||||
|
basePosition.top += atOffset[ 1 ];
|
||||||
|
|
||||||
|
return this.each(function() {
|
||||||
|
var collisionPosition, using,
|
||||||
|
elem = $( this ),
|
||||||
|
elemWidth = elem.outerWidth(),
|
||||||
|
elemHeight = elem.outerHeight(),
|
||||||
|
marginLeft = parseCss( this, "marginLeft" ),
|
||||||
|
marginTop = parseCss( this, "marginTop" ),
|
||||||
|
collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width,
|
||||||
|
collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height,
|
||||||
|
position = $.extend( {}, basePosition ),
|
||||||
|
myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
|
||||||
|
|
||||||
|
if ( options.my[ 0 ] === "right" ) {
|
||||||
|
position.left -= elemWidth;
|
||||||
|
} else if ( options.my[ 0 ] === "center" ) {
|
||||||
|
position.left -= elemWidth / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( options.my[ 1 ] === "bottom" ) {
|
||||||
|
position.top -= elemHeight;
|
||||||
|
} else if ( options.my[ 1 ] === "center" ) {
|
||||||
|
position.top -= elemHeight / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
position.left += myOffset[ 0 ];
|
||||||
|
position.top += myOffset[ 1 ];
|
||||||
|
|
||||||
|
// if the browser doesn't support fractions, then round for consistent results
|
||||||
|
if ( !$.support.offsetFractions ) {
|
||||||
|
position.left = round( position.left );
|
||||||
|
position.top = round( position.top );
|
||||||
|
}
|
||||||
|
|
||||||
|
collisionPosition = {
|
||||||
|
marginLeft: marginLeft,
|
||||||
|
marginTop: marginTop
|
||||||
|
};
|
||||||
|
|
||||||
|
$.each( [ "left", "top" ], function( i, dir ) {
|
||||||
|
if ( $.ui.position[ collision[ i ] ] ) {
|
||||||
|
$.ui.position[ collision[ i ] ][ dir ]( position, {
|
||||||
|
targetWidth: targetWidth,
|
||||||
|
targetHeight: targetHeight,
|
||||||
|
elemWidth: elemWidth,
|
||||||
|
elemHeight: elemHeight,
|
||||||
|
collisionPosition: collisionPosition,
|
||||||
|
collisionWidth: collisionWidth,
|
||||||
|
collisionHeight: collisionHeight,
|
||||||
|
offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
|
||||||
|
my: options.my,
|
||||||
|
at: options.at,
|
||||||
|
within: within,
|
||||||
|
elem : elem
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if ( options.using ) {
|
||||||
|
// adds feedback as second argument to using callback, if present
|
||||||
|
using = function( props ) {
|
||||||
|
var left = targetOffset.left - position.left,
|
||||||
|
right = left + targetWidth - elemWidth,
|
||||||
|
top = targetOffset.top - position.top,
|
||||||
|
bottom = top + targetHeight - elemHeight,
|
||||||
|
feedback = {
|
||||||
|
target: {
|
||||||
|
element: target,
|
||||||
|
left: targetOffset.left,
|
||||||
|
top: targetOffset.top,
|
||||||
|
width: targetWidth,
|
||||||
|
height: targetHeight
|
||||||
|
},
|
||||||
|
element: {
|
||||||
|
element: elem,
|
||||||
|
left: position.left,
|
||||||
|
top: position.top,
|
||||||
|
width: elemWidth,
|
||||||
|
height: elemHeight
|
||||||
|
},
|
||||||
|
horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
|
||||||
|
vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
|
||||||
|
};
|
||||||
|
if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
|
||||||
|
feedback.horizontal = "center";
|
||||||
|
}
|
||||||
|
if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
|
||||||
|
feedback.vertical = "middle";
|
||||||
|
}
|
||||||
|
if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
|
||||||
|
feedback.important = "horizontal";
|
||||||
|
} else {
|
||||||
|
feedback.important = "vertical";
|
||||||
|
}
|
||||||
|
options.using.call( this, props, feedback );
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
elem.offset( $.extend( position, { using: using } ) );
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
$.ui.position = {
|
||||||
|
fit: {
|
||||||
|
left: function( position, data ) {
|
||||||
|
var within = data.within,
|
||||||
|
withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
|
||||||
|
outerWidth = within.width,
|
||||||
|
collisionPosLeft = position.left - data.collisionPosition.marginLeft,
|
||||||
|
overLeft = withinOffset - collisionPosLeft,
|
||||||
|
overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
|
||||||
|
newOverRight;
|
||||||
|
|
||||||
|
// element is wider than within
|
||||||
|
if ( data.collisionWidth > outerWidth ) {
|
||||||
|
// element is initially over the left side of within
|
||||||
|
if ( overLeft > 0 && overRight <= 0 ) {
|
||||||
|
newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;
|
||||||
|
position.left += overLeft - newOverRight;
|
||||||
|
// element is initially over right side of within
|
||||||
|
} else if ( overRight > 0 && overLeft <= 0 ) {
|
||||||
|
position.left = withinOffset;
|
||||||
|
// element is initially over both left and right sides of within
|
||||||
|
} else {
|
||||||
|
if ( overLeft > overRight ) {
|
||||||
|
position.left = withinOffset + outerWidth - data.collisionWidth;
|
||||||
|
} else {
|
||||||
|
position.left = withinOffset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// too far left -> align with left edge
|
||||||
|
} else if ( overLeft > 0 ) {
|
||||||
|
position.left += overLeft;
|
||||||
|
// too far right -> align with right edge
|
||||||
|
} else if ( overRight > 0 ) {
|
||||||
|
position.left -= overRight;
|
||||||
|
// adjust based on position and margin
|
||||||
|
} else {
|
||||||
|
position.left = max( position.left - collisionPosLeft, position.left );
|
||||||
|
}
|
||||||
|
},
|
||||||
|
top: function( position, data ) {
|
||||||
|
var within = data.within,
|
||||||
|
withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
|
||||||
|
outerHeight = data.within.height,
|
||||||
|
collisionPosTop = position.top - data.collisionPosition.marginTop,
|
||||||
|
overTop = withinOffset - collisionPosTop,
|
||||||
|
overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
|
||||||
|
newOverBottom;
|
||||||
|
|
||||||
|
// element is taller than within
|
||||||
|
if ( data.collisionHeight > outerHeight ) {
|
||||||
|
// element is initially over the top of within
|
||||||
|
if ( overTop > 0 && overBottom <= 0 ) {
|
||||||
|
newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;
|
||||||
|
position.top += overTop - newOverBottom;
|
||||||
|
// element is initially over bottom of within
|
||||||
|
} else if ( overBottom > 0 && overTop <= 0 ) {
|
||||||
|
position.top = withinOffset;
|
||||||
|
// element is initially over both top and bottom of within
|
||||||
|
} else {
|
||||||
|
if ( overTop > overBottom ) {
|
||||||
|
position.top = withinOffset + outerHeight - data.collisionHeight;
|
||||||
|
} else {
|
||||||
|
position.top = withinOffset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// too far up -> align with top
|
||||||
|
} else if ( overTop > 0 ) {
|
||||||
|
position.top += overTop;
|
||||||
|
// too far down -> align with bottom edge
|
||||||
|
} else if ( overBottom > 0 ) {
|
||||||
|
position.top -= overBottom;
|
||||||
|
// adjust based on position and margin
|
||||||
|
} else {
|
||||||
|
position.top = max( position.top - collisionPosTop, position.top );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
flip: {
|
||||||
|
left: function( position, data ) {
|
||||||
|
var within = data.within,
|
||||||
|
withinOffset = within.offset.left + within.scrollLeft,
|
||||||
|
outerWidth = within.width,
|
||||||
|
offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
|
||||||
|
collisionPosLeft = position.left - data.collisionPosition.marginLeft,
|
||||||
|
overLeft = collisionPosLeft - offsetLeft,
|
||||||
|
overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
|
||||||
|
myOffset = data.my[ 0 ] === "left" ?
|
||||||
|
-data.elemWidth :
|
||||||
|
data.my[ 0 ] === "right" ?
|
||||||
|
data.elemWidth :
|
||||||
|
0,
|
||||||
|
atOffset = data.at[ 0 ] === "left" ?
|
||||||
|
data.targetWidth :
|
||||||
|
data.at[ 0 ] === "right" ?
|
||||||
|
-data.targetWidth :
|
||||||
|
0,
|
||||||
|
offset = -2 * data.offset[ 0 ],
|
||||||
|
newOverRight,
|
||||||
|
newOverLeft;
|
||||||
|
|
||||||
|
if ( overLeft < 0 ) {
|
||||||
|
newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;
|
||||||
|
if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
|
||||||
|
position.left += myOffset + atOffset + offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( overRight > 0 ) {
|
||||||
|
newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;
|
||||||
|
if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
|
||||||
|
position.left += myOffset + atOffset + offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
top: function( position, data ) {
|
||||||
|
var within = data.within,
|
||||||
|
withinOffset = within.offset.top + within.scrollTop,
|
||||||
|
outerHeight = within.height,
|
||||||
|
offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
|
||||||
|
collisionPosTop = position.top - data.collisionPosition.marginTop,
|
||||||
|
overTop = collisionPosTop - offsetTop,
|
||||||
|
overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
|
||||||
|
top = data.my[ 1 ] === "top",
|
||||||
|
myOffset = top ?
|
||||||
|
-data.elemHeight :
|
||||||
|
data.my[ 1 ] === "bottom" ?
|
||||||
|
data.elemHeight :
|
||||||
|
0,
|
||||||
|
atOffset = data.at[ 1 ] === "top" ?
|
||||||
|
data.targetHeight :
|
||||||
|
data.at[ 1 ] === "bottom" ?
|
||||||
|
-data.targetHeight :
|
||||||
|
0,
|
||||||
|
offset = -2 * data.offset[ 1 ],
|
||||||
|
newOverTop,
|
||||||
|
newOverBottom;
|
||||||
|
if ( overTop < 0 ) {
|
||||||
|
newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;
|
||||||
|
if ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) {
|
||||||
|
position.top += myOffset + atOffset + offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( overBottom > 0 ) {
|
||||||
|
newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;
|
||||||
|
if ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) {
|
||||||
|
position.top += myOffset + atOffset + offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
flipfit: {
|
||||||
|
left: function() {
|
||||||
|
$.ui.position.flip.left.apply( this, arguments );
|
||||||
|
$.ui.position.fit.left.apply( this, arguments );
|
||||||
|
},
|
||||||
|
top: function() {
|
||||||
|
$.ui.position.flip.top.apply( this, arguments );
|
||||||
|
$.ui.position.fit.top.apply( this, arguments );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// fraction support test
|
||||||
|
(function () {
|
||||||
|
var testElement, testElementParent, testElementStyle, offsetLeft, i,
|
||||||
|
body = document.getElementsByTagName( "body" )[ 0 ],
|
||||||
|
div = document.createElement( "div" );
|
||||||
|
|
||||||
|
//Create a "fake body" for testing based on method used in jQuery.support
|
||||||
|
testElement = document.createElement( body ? "div" : "body" );
|
||||||
|
testElementStyle = {
|
||||||
|
visibility: "hidden",
|
||||||
|
width: 0,
|
||||||
|
height: 0,
|
||||||
|
border: 0,
|
||||||
|
margin: 0,
|
||||||
|
background: "none"
|
||||||
|
};
|
||||||
|
if ( body ) {
|
||||||
|
$.extend( testElementStyle, {
|
||||||
|
position: "absolute",
|
||||||
|
left: "-1000px",
|
||||||
|
top: "-1000px"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
for ( i in testElementStyle ) {
|
||||||
|
testElement.style[ i ] = testElementStyle[ i ];
|
||||||
|
}
|
||||||
|
testElement.appendChild( div );
|
||||||
|
testElementParent = body || document.documentElement;
|
||||||
|
testElementParent.insertBefore( testElement, testElementParent.firstChild );
|
||||||
|
|
||||||
|
div.style.cssText = "position: absolute; left: 10.7432222px;";
|
||||||
|
|
||||||
|
offsetLeft = $( div ).offset().left;
|
||||||
|
$.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11;
|
||||||
|
|
||||||
|
testElement.innerHTML = "";
|
||||||
|
testElementParent.removeChild( testElement );
|
||||||
|
})();
|
||||||
|
|
||||||
|
}( jQuery ) );
|
||||||
19
externals/msrCrypto.js
vendored
Normal file
177
fonts/segoe-ui/west-european/normal/latest.woff
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
wOFF <20>@ <20>H OS/2 D Z `J<>|cmap <01> <1C>"<<3C>cvt <04> <01>
|
||||||
|
"<22>]<5D>fpgm <06> <05>
|
||||||
|
\ID<49>ggasp L #glyf \ <20>O <><CDB8>khead <20><> 6 6<><36>T2hhea <20><> ! $z
|
||||||
|
8hmtx <20> <03> c!<21>Dloca <20><> <20><>Pmaxp <20><> 6fname <20><> <20> <01><1F>>post <20><> <20>Q wprep <20><> h @<40><><1E>x<EFBFBD>c`f<>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><EFBFBD><D598>QB3_dHc<12>`e<>febB&<26>e'(<28>
|
||||||
|
VP`p`<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@F^<5E>ELL
|
||||||
|
Ar,<0C><><EFBFBD><EFBFBD>3 9f<0C> x<>e<EFBFBD>}L<>U<1C>?<3F><>"i
|
||||||
|
\4
|
||||||
|
5<EFBFBD><EFBFBD>(<28><><14>Ȧ6<C8A6><36>--<2D>Z[[j)) <20><><EFBFBD> <20> jR<6A><52>Ŝ<EFBFBD>F<EFBFBD>VF<56><46>7<EFBFBD>ũ<EFBFBD><C5A9>a<EFBFBD>VTj<54><6A><EFBFBD><EFBFBD><EFBFBD>[ن<><15><><EFBFBD>ta<74><61><EFBFBD>}<7D>9;<3B><><EFBFBD><EFBFBD>~<7E>~<11><>^<5E><><05><><EFBFBD><1A>I$<24>jݦ>ꯁ<1A>a<1A><>5^<13><>'<27><><EFBFBD>)_<0B>DժS<D5AA><53><EFBFBD><19>Lqf8<66><38>g<>S<EFBFBD><53>r8<07>3<EFBFBD>@`H`{`_<><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><03>&٤<>~&&<26>d<EFBFBD><64>f<EFBFBD><66>2<EFBFBD>M<EFBFBD>t7<>Mr{<7B>)n?7<><1D>Nts<74><73><EFBFBD>-<19><><EFBFBD><EFBFBD><EFBFBD>ћ<EFBFBD>o<EFBFBD>0<><30>Kw*M<><4D>j<EFBFBD>Fk<46><1E><><<3C><>5]E<>PU<50>'<27><0B>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>O<><4F>1<EFBFBD><31>ncb<c,O<><16>d<EFBFBD>ӷ<EFBFBD>'/<2F>Ct<43><74><<3C>u<EFBFBD><1C><>&<26><10>!<21><>~<7E>]<5D>v<EFBFBD>
|
||||||
|
<EFBFBD><EFBFBD>~<7E><>Gx7<78>V<EFBFBD><56>w<EFBFBD>k<EFBFBD><6B>{
|
||||||
|
<EFBFBD><EFBFBD>I{9<><39><EFBFBD><EFBFBD>h~<7E><><EFBFBD><EFBFBD>֑<EFBFBD>'<27>Y<EFBFBD><59><EFBFBD><EFBFBD>ȪH<05><14>T<EFBFBD>7<EFBFBD><37><EFBFBD><EFBFBD>@<40>]<5D><>pi87<38>u<><75><EFBFBD>Up<55><06><>f<7F><66>AA<41>{Y<><59>"v^aU<61>uj<75><6A>5ҥ<35>Ю.<2E><><EFBFBD>Q
|
||||||
|
is<EFBFBD>M<EFBFBD><EFBFBD>ns<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6<EFBFBD>y<EFBFBD>Uz<EFBFBD>
|
||||||
|
<EFBFBD>F-u<><75>
|
||||||
|
<EFBFBD><EFBFBD><0E>yUb%<25>4O<34><4F><EFBFBD>6<EFBFBD>2<EFBFBD>8<EFBFBD>R6<52><1E>h<EFBFBD>:o<>>9<><07>d<16><><EFBFBD>a<EFBFBD><61><EFBFBD>C|<7C><11>r<EFBFBD><14><>w|χ<><CF87>*<2A><><EFBFBD><0F>H!<21><><EFBFBD>+<14><<3C><>e%<25><>G)<29>Y<EFBFBD>B<EFBFBD>XD9<44><39>H/P<><12>X<EFBFBD>v<EFBFBD>d<19><><EFBFBD>˹<EFBFBD><CBB9><EFBFBD><EFBFBD>^<1F><><EFBFBD><EFBFBD>M<EFBFBD><4D>$<24><>o<EFBFBD><6F>]=<3D><1B>,ݮ<> <09>O<EFBFBD><4F><EFBFBD><EFBFBD>JT<4A>u<EFBFBD>X<05>̯<EFBFBD>Uo<55><6F>qz@w(<28><><EFBFBD>Xw)<29><>i<EFBFBD><1C>5<EFBFBD>:x<><78>MS<4D><1E>N<>~<1E><>zX<7A><58>S<19><>M<>c<EFBFBD><63>N<10><14><><EFBFBD>N&<26>*<2A><>M<EFBFBD><4D><19><><EFBFBD>O<EFBFBD><4F><EFBFBD>Y<EFBFBD>W<EFBFBD><57><EFBFBD>6<EFBFBD><36>pC<13><>M<EFBFBD>=<3D><>\=<3D><>|<7C>Yʳy-<2D>l<EFBFBD><6C>b<EFBFBD><62>\<5C>ܥ*W<><57><EFBFBD>r<EFBFBD>h<EFBFBD>u<EFBFBD><75><EFBFBD>!<21>F-f{m<>*<2A><01><><EFBFBD>( x<><78><EFBFBD><EFBFBD>KTQ<14>?<3F><><EFBFBD><EFBFBD><EFBFBD>,&"j<><1B><><EFBFBD> <20><>P<EFBFBD><50>hᏁ<68><E18F81> <0C><>j<0C><>**2<><32>P0<50><30><EFBFBD> B<><42><EFBFBD>ڸQra<72>J<><4A>ׯo<D7AF>:!A<><0B><>p<EFBFBD>9<EFBFBD><39>ù<EFBFBD><C3B9>{<7B>o<>3<EFBFBD><33>s<EFBFBD>`.<2E>KiǮ<69>'G<>i05<30><35>o<EFBFBD>yW<79>t<16><>7Mܹ`ףW<D7A3><57>n<EFBFBD>ܓ<EFBFBD>tk9<6B>/yJ<79>S<<3C>T<06>--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5n<35><6E>V<EFBFBD><56>o<EFBFBD><6F><EFBFBD><05><02><><EFBFBD>(<28>'<27>q<EFBFBD><1E>YY<><59>9I3yƲ(<28>jd><3E><1C>=<16><1F><><EFBFBD>\咷<>-i<><69>A<EFBFBD>~<7E><>_<>{B/=ܥE#<13>2~<7E><>u<EFBFBD>><1F>ް<EFBFBD><DEB0>g4<67><34>$wH<77>V<EFBFBD><56>U<EFBFBD><55><0E>&姝O<<3C>Y<EFBFBD>I<EFBFBD>=N5<4E>(vK<1E>+<2B><><EFBFBD><01>კ3<E18399>:=E7<45><37>_<EFBFBD>wG<77><0E><>)<29>4Ɋvs<76>U<EFBFBD><55>~<7E>"<22>X~<7E><>x<>n<><6E>ߊ<EFBFBD>?y Ӷ۹<D3B6>m٬<><D9AC><EFBFBD><EFBFBD>λє{<7B>[<<3C><>N0<4E>KC<4B>V<EFBFBD>!B<><11>DVu4G<34><47><EFBFBD>"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:[g<><67>fU<66>><3E>5<EFBFBD><35><EFBFBD>2<EFBFBD>c<>)<29><><01><>k<EFBFBD>y<EFBFBD>T<EFBFBD>^QGR<47><1E>a<0F><><EFBFBD><xڍV<DA8D>oG<14>Y'<27>ˡ<EFBFBD>|<7C><><EFBFBD>v<EFBFBD><76>)eܖ<>`{
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD>qi7<69><37>Fr|<7C><>T<EFBFBD>=TD<54><44><11>ކ<><DE86><EFBFBD>CE*<12><>jo !Uo<55>{<7B>k<EFBFBD>I<EFBFBD>Z<EFBFBD>;~<7E>{<7B>ͼﵽ<CDBC>c}sëV<C3AB>[Y<><59><EFBFBD><EFBFBD>x<EFBFBD>V1<56><31><EFBFBD>}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<5D>}<7D><><EFBFBD>/.<>٧<EFBFBD>Ks<4B><73><EFBFBD>O.||>s<><73>Ȑ~<7E><>Yqf&}<7D><><EFBFBD><EFBFBD><EFBFBD>DJ<4A><7F>xrltdx<64><78><EFBFBD>@B<>l<EFBFBD><6C>!<21>w<EFBFBD>&<26><>}H<>S<><53>\y<><79>6!3%/g<><67>X
|
||||||
|
-`<60>%<25>*<2A>!<21>s<1E><><EFBFBD><EFBFBD><EFBFBD>@"<22><>5PyYH2<>5<EFBFBD>ju<6A>Pq
|
||||||
|
S<EFBFBD>M<EFBFBD><EFBFBD><1E><><EFBFBD><EFBFBD>k<02>~<17><>ߥ<EFBFBD><DFA5><EFBFBD>^F<><11><08><><EFBFBD><EFBFBD>>x<>C<EFBFBD><43>t<><74><EFBFBD>.#3v<33>9f<39>
|
||||||
|
<0F>09<30>/ <20>
|
||||||
|
Y<EFBFBD>%<25>i{<7B>c<EFBFBD><63>ႅ<EFBFBD><E18285>H<EFBFBD><48>X<16><>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD>ڋ<EFBFBD>;b<>ԛ<EFBFBD>S<EFBFBD>ƈ<EFBFBD><C688>Ø<EFBFBD><C398>"j<>@7uIet ~YuñѼ<C3B1><D1BC>7<EFBFBD> S G<># <20><><1F><>
|
||||||
|
<EFBFBD>-<2D>\56<<3C><><EFBFBD> sz<>`<60><>H<EFBFBD><05>r&9<><39><EFBFBD>^?<3F><>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD>8<><38><EFBFBD><EFBFBD><08>
|
||||||
|
v
|
||||||
|
خg;<3B>^[g[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5Y"<22>4<EFBFBD>p<EFBFBD>T<EFBFBD>@<08><><EFBFBD>oHJwA-<2D><<3C>4d<34>{<7B><>q5<0B><>#x<>qϧ2<CFA7><32>Y@<40>H<EFBFBD>}htL<><4C>)<0B>Ql<51><6C><EFBFBD>"8<>mI<6D> x(<28>'4<><34>kЊE<D08A>F<EFBFBD><03><><EFBFBD><EFBFBD>0<EFBFBD><30>@)<29><>Ҧ<EFBFBD>q<EFBFBD><71><EFBFBD>c<EFBFBD><63>$<24><><EFBFBD>Q<EFBFBD><51><EFBFBD><EFBFBD><EFBFBD>o:$<24>40;<3B><1F>T<EFBFBD>q(<28>~<7E>Ln<4C><6E>M<EFBFBD>)<29><>{<7B><>=<3D>֫t<D6AB>zH<11><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4L<34><4C>Bt<1C>D渮a<E6B8AE><61>E<EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD>:Z<1F><><EFBFBD>C<EFBFBD><43>'<27><>ў<<3C>U<EFBFBD>ê*x<>]+x1l<>q<><71><EFBFBD>Q<>Q<14>2/<2F>2<EFBFBD><13>20e<30><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͖*<2A>S<10>{<7B><><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><1A>R<EFBFBD><07>4<EFBFBD><04><>"<22>Qi<51>,<2C>FU<46><55>.~5j`<60><>y<14><>թ<EFBFBD><D5A9><EFBFBD><19>E<EFBFBD><45>Aє<41><D194>j<><6A>֖)u3<08><><EFBFBD><EFBFBD><EFBFBD>K<EFBFBD><4B><1C>'<27><02>{<1E>~<7E>_<EFBFBD>$S<>+%<25>\ݤ<>e<>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>F<><46>ʔ<EFBFBD><CA94><1D>V<<3C>=<3D>Y<EFBFBD><59>Bے8<DB92><38>,<2C>xi<78>T<10><><EFBFBD>Mђu<17>பY<E0AEAA>`<><7F><EFBFBD><EFBFBD>:%<25>e<EFBFBD><65><EFBFBD>8@X<>q<EFBFBD><71><EFBFBD>[<5B>Q<<3C>0<EFBFBD><30>v<EFBFBD>6<EFBFBD><36>
|
||||||
|
<EFBFBD>V<EFBFBD>h/ٖ<>gv<67><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t9<74><39><EFBFBD>iu9=u<><75>\<5C>Kk<4B>Q<EFBFBD><51><EFBFBD><1C><> y5<79><35><EFBFBD><EFBFBD>m:U<><55><EFBFBD><0C><>tO<74>݄<EFBFBD>bJ <09>F-_<>p<EFBFBD>R<EFBFBD><13><><EFBFBD>n<EFBFBD><6E>&<26><0C>ݎ<EFBFBD><DD8E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD><51>E]<5D>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dS:<3A>y<EFBFBD><79>g8K<38>HO<48><4F>!<21>W<<3C> <09><><EFBFBD><EFBFBD>݊_ <20>ƻ}C<19>D<EFBFBD>D$<24><>0<EFBFBD><30>_<EFBFBD>H<EFBFBD>'u<>H<EFBFBD>$<24>HbɃ<62>4<EFBFBD><34><EFBFBD>+<2B><><EFBFBD>"<22>J<EFBFBD>>ح<><D8AD><EFBFBD><EFBFBD>lP<6C>A<EFBFBD>5<<3C><0F>^<5E>{h2<68><32><EFBFBD><EFBFBD>q<EFBFBD>B{<7B><><EFBFBD><EFBFBD><7F><EFBFBD><EFBFBD><EFBFBD><7F>X<>`_D<0F><15>VuKՍ<4B><D58D>q<17>]<5D><><EFBFBD>Q~/<2F>]<5D>F<7F>T=<3D><>;<3B>^<06>s<EFBFBD>ޯ<EFBFBD>P<EFBFBD><50>GE<47>[<5B><><EFBFBD><EFBFBD>><3E>^<5E><>FB<46>)<29><><EFBFBD>ɉ#<18> <20>#ߋ<07>><3E><>Bh<42><68><EFBFBD><EFBFBD><EFBFBD>;k.<2E><><1E><>ɝ<EFBFBD><C99D><EFBFBD>q-<2D>/x<>9仏%c<>B5B <09><><EFBFBD>
|
||||||
|
+q<q_V<><56><EFBFBD><EFBFBD>XKq<14><>wۜ)l<><6C>qv<71><76>E<EFBFBD>]t^]d3
|
||||||
|
9<11><>J 6a-<2D><>O<EFBFBD><4F>{t<><1E>G<EFBFBD><47>6<EFBFBD><36><EFBFBD><13><><EFBFBD><13><>g<><67>|<7C><><10>*
|
||||||
|
n<EFBFBD>V8b<EFBFBD>H<EFBFBD><EFBFBD>vd<76><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1B><>$C5<43><35>E<0B><>p<EFBFBD>0<EFBFBD>e<EFBFBD>%<25>ctJ"<22><>y<><79>t<1A><>Y4<59><34><EFBFBD>9<EFBFBD><39>ef<>N<EFBFBD>ߧ;0U<30>l
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD><EFBFBD>
|
||||||
|
<07><> xڬ<78> |E<>7^<5E><><EFBFBD>sO<73><4F>39gr2!C<08>JD<>K,2@ Q<11>]PQ JdQYDDYDD<>E<<3C>><3E>܅UWYdY<64>!<21>y<EFBFBD><79><EFBFBD>'p<70><7F><EFBFBD><EFBFBD><7F><EFBFBD><EFBFBD><EFBFBD>TOW=<3D>SO}<7D><><EFBFBD><10>l&D\"<22>$<24>XH<58><48><EFBFBD>P&&I6<49>$<24>xkG<>P{<7B>SE<53><13><14><<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ti<7F><69><EFBFBD>k<EFBFBD><6B>D <20>ZN<5A><4E>R|<7C>Bj<42>(c<>]<13>;F<>>*<2A><05>,<2C><04>zv<7A><76><EFBFBD><EFBFBD><EFBFBD>E<EFBFBD><45>i<EFBFBD><69>9<EFBFBD><Ȓ<>Oo8<6F><38><EFBFBD>c55<35>6N<36><4E><EFBFBD>۵<EFBFBD>*(+d<><64><EFBFBD><EFBFBD><EFBFBD>]<5D><><EFBFBD><EFBFBD>_<EFBFBD><5F>|K<>#<23>{<7B>.<2E>XW'5<>;+<2B>g<EFBFBD>i<EFBFBD>x<EFBFBD>\<5C>g?<3F>><17><>϶<EFBFBD>Bͯ<42><CDAF>bB|Y|G<>D<EFBFBD><44>d<EFBFBD><64><18>M<1E><> K|<7C><>R衝W<E8A19D>/WIMzo<7A>2<EFBFBD>|W<><57><13><><EFBFBD><EFBFBD>&<26><>e<EFBFBD>&%D<>LU9[`<60>%<25><12>ɷY#<23>Pn<50><6E>t<>=<3D><>p<>\j<>(3<>Oy<4F><79>\Q<><51><16><><EFBFBD><EFBFBD>l9<6C>A,<2C>E<EFBFBD>Y,<2C>`<16><>D<EFBFBD><44><16>J<EFBFBD><4A>j<EFBFBD>9<EFBFBD><39>:<3A><>:<3A>9<EFBFBD>9g<><01><>L<1C>{<7B><>&<26>;<3B>!y<><79>2q<32><71><1E>n<EFBFBD>i<EFBFBD><69><EFBFBD>D~KB5<42>{<7B>
|
||||||
|
u<EFBFBD>t <20><>K/~<7E>p{<03><>X^<5E><>BxŪc<C5AA><63>dIxY
|
||||||
|
YR<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><6C><0B><><1D>`<60>~<7E>Om=<3D><>h`<60><>a<EFBFBD><61><EFBFBD>
|
||||||
|
[<5B>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}<7D><>L<EFBFBD>&<26><><EFBFBD>T|<7C>u<EFBFBD><75>Ɩ{OB<>H1<48>@^Ѳm%TΧ<54>\*(#n<>HT<48>:D<>dP<64><50><EFBFBD>??<07><><EFBFBD><EFBFBD>w<EFBFBD><77>p"U<>[~<7E>Vbg<62>`0<1A><><EFBFBD>R<EFBFBD>W<EFBFBD><57>DV<44><56>̀r<7F><72>ٚRD`a<><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD> 丂<><E4B882>C<06>9<EFBFBD><16><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD>,ꢮDñ<44>64<36><34> <12>&q,<04>u$<19><>d<EFBFBD><64><EFBFBD>6<EFBFBD><36><13><><06>w<EFBFBD><77><EFBFBD>?$<24><><06>W(<28>*(<28>
|
||||||
|
<06><><12><><EFBFBD><EFBFBD>d
|
||||||
|
<EFBFBD><EFBFBD>z<EFBFBD>\=<3D><1C>}<7D>.U<><55><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD>|<7C><>CO<8`<60>S<EFBFBD><53>{Y?5l<35><6C><EFBFBD>_<EFBFBD>~<7E><><EFBFBD><EFBFBD>ɾ<02><><EFBFBD><EFBFBD>Uv<><76>+<2B><0E>ӧ<EFBFBD>{a<><61><EFBFBD><EFBFBD>}<7D>s[<5B><><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><0E><><13>i9!k<><0E> !<21><>R<EFBFBD>$<24>j<EFBFBD><6A>0+hW<68>*p<><70><EFBFBD>קr<D7A7>,u<>[<5B>"<22><><EFBFBD>O<EFBFBD>bm<62><6D><EFBFBD><EFBFBD><15>
|
||||||
|
<17><>}q'̨<><CCA8><EFBFBD><EFBFBD>w;<3B><>i<1F>Z<EFBFBD>õ<EFBFBD><C3B5><13>lp<6C><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><01>OjA<6A>E<EFBFBD>
|
||||||
|
<EFBFBD><02>><3E>X<0E>b{Z<>~.<2E><10>؇<EFBFBD>B<12>9l<><6C>V<0F>}<7D>' <09>Wm<57>,+@%+<2B>F%Ŵ<><C5B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5;<3B>nX<6E>Ծ{<7B>N<EFBFBD><4E>0f<30>$vM<76><4D><07>C%kv<6B><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w3<77>,<2C><><EFBFBD>'vٿm<D9BF>;¬<><C2AC><EFBFBD>Y<EFBFBD>b<EFBFBD><62><EFBFBD>#Ύ<>6<EFBFBD>rp<72><70>w<<3C><>;<3B><><15>g-<2D>o<EFBFBD><6F>% <20><>Z<EFBFBD><5A>{I;Ir
|
||||||
|
<EFBFBD><EFBFBD>|<7C>匸<EFBFBD><E58CB8>HYj m<>O<EFBFBD>T<EFBFBD><54>.t<><74><EFBFBD><EFBFBD>d<>ՠ<EFBFBD>4'<27><><0E>B>u<>*Rn4\<5C><><1C>퉮<><ED89AE>nHH9<48><39>4<EFBFBD>M<EFBFBD><4D><EFBFBD><EFBFBD>Sv<1F>y2E|ݮ<>]<5D><><EFBFBD><EFBFBD>ʲ<EFBFBD><CAB2><EFBFBD>7<14><>P<EFBFBD><50>e<EFBFBD><65><EFBFBD><18><>PhDS<>iT<69>&
|
||||||
|
<EFBFBD>}<7D>Z<EFBFBD><5A><06><1D>XI<03><>6<EFBFBD><36>@B<><42>gH_|6^|<7C><><EFBFBD><EFBFBD>t<EFBFBD>"<1A>q<14><02>*<15><0B>nV<07><>rVչ<56><D5B9><EFBFBD><EFBFBD><13>ʖ<<16><><12>&<26><><EFBFBD><EFBFBD>-<2D><05>yu@<40><>+{ <09><18><0C><>ڹ\(,<2C>-p<1A><>Ez<45><7A><EFBFBD><EFBFBD>}K<>M<EFBFBD><4D><EFBFBD>Ԕ]w\<5C><>Ѽ<1E>ܚ<EFBFBD><DC9A><EFBFBD>j<EFBFBD><6A>
|
||||||
|
<EFBFBD><EFBFBD>-<2D>;ml}<7D><><EFBFBD>m<EFBFBD>G<EFBFBD>L(<28>~<7E>(<28>ֽ<EFBFBD>]^<5E>X<EFBFBD>U<EFBFBD><0E>cʈ<63><CA88>7N<37>5<EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD>kfО<66>5<EFBFBD><17><><EFBFBD>F:<3A>(X8?<3F>_S<5F>9><3E>Wq<57>IMׯ<4D><D7AF>o<EFBFBD><6F><EFBFBD>Q]<5D><>;,2<><32><EFBFBD>G<EFBFBD>f7<><37><EFBFBD>Tm,<2C><13>uo?j<>3<EFBFBD>{W\QR<><0F><><EFBFBD>Ǫ<EFBFBD>l7v<37><76><EFBFBD><EFBFBD>"=<3D>N<EFBFBD><EFBFBD>ľ<EFBFBD>,]yyy`<60><><EFBFBD><EFBFBD>zUx<55>n'<14>ڙ<><05><>`<60><01><EFBFBD>&<0C><0F><><EFBFBD><EFBFBD>ڭ<><DAAD>
|
||||||
|
á<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ꠃ(<28>u<15><>HT:!<21><13>8<EFBFBD><38>3<EFBFBD>
|
||||||
|
<<3C><>`<60>1/<2F>q<EFBFBD><1D><><18>ŵ<EFBFBD>!<1E><>ģ<EFBFBD>$<24> <09>V<EFBFBD>o<EFBFBD>.k<>C<EFBFBD>^:^ <20>O<EFBFBD><4F>Kt<4B><74><EFBFBD>g<06><>q<EFBFBD><71><EFBFBD>/<10><><EFBFBD>s<EFBFBD>@<40><><EFBFBD><EFBFBD>怓j2L<32>ӿ<EFBFBD><07><><EFBFBD>i9<69><39><EFBFBD><EFBFBD>V<07>OH<4F>ŧ<><C5A7>x,<2C><>p_<70>÷<EFBFBD><C3B7>]<5D>Ck<43>m/<2F>I<EFBFBD>M<4D><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>
|
||||||
|
<EFBFBD>2'<<3C>Mn<4D>:1<><31><EFBFBD>IV<49><56>MD<4D><44>f<1D>Rlp<6C><70>d<EFBFBD>@<40>NYvX<1D>:<3A>hw1<77>r<EFBFBD>s@W~<7E>˵ݑH&<26>?TV<54>j<0E><><EFBFBD><EFBFBD>uM<02>(<28>LST<53>v<><76><EFBFBD>T
|
||||||
|
<EFBFBD><EFBFBD>[Z]\-<2D>$+fN<66><4E><EFBFBD><EFBFBD><EFBFBD>7Lݯ<4C><DDAF>H<EFBFBD><48><EFBFBD><10><>C<EFBFBD><43>s <20><>?
|
||||||
|
<EFBFBD>g<EFBFBD><05><>
|
||||||
|
<EFBFBD><EFBFBD>밯ߑE<EFBFBD>1<0E><>J-<2D>ܢ<EFBFBD>m<EFBFBD><6D>T<EFBFBD>X<EFBFBD><58>)<29>B]<5D>k<>(<28>Iv<0B>'<27>E$Ujj<6A>ĩz<C4A9>p5<70>ݩ<EFBFBD>H<><48><EFBFBD><03>
|
||||||
|
<17>XU<58>F\<5C>O<EFBFBD>K<EFBFBD><4B>>x]#x<><78>n<EFBFBD><6E>~3<<3C>T?C{<7B><>Az<41>j<EFBFBD>5<EFBFBD><35>*hl<68>H<EFBFBD><48><04><0E>A<EFBFBD>4O<34><4F><EFBFBD><EFBFBD><EFBFBD>><15><>n<EFBFBD><6E>DPOf<01><><EFBFBD>'<27>r<><72><18>]<5D><><EFBFBD><EFBFBD>o<EFBFBD>Z<EFBFBD>ӓ8<D393><38><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD>O<><4F>T<EFBFBD>M]%P!
|
||||||
|
<EFBFBD><EFBFBD>RJ
|
||||||
|
<EFBFBD>\
|
||||||
|
q<EFBFBD>nULؙ<EFBFBD>J(<28>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Cț@<40><1C>C<EFBFBD><1D><><EFBFBD><EFBFBD><EFBFBD><01>.x<><78> <20>p_<70><5F><EFBFBD><EFBFBD><02>D]]<5D><><EFBFBD><EFBFBD>O<EFBFBD><4F><EFBFBD>:<3A><><EFBFBD><EFBFBD>[<5B><>#<23><11>5<EFBFBD>R<EFBFBD><52><EFBFBD><EFBFBD><EFBFBD>QH q<><71>(<28>k<EFBFBD>1=d<><64>]j<>y<EFBFBD>|<0F><><EFBFBD>-e͠OU&<26><> Y<><59>d<05>iv<69><76><<3C>BM))bj-Nd<4E> R<>T<EFBFBD><0B>\XPR<02><>ۥK2<4B><32>X<EFBFBD>/<2F><>{<7B>sӧ<5<>G<EFBFBD><47><EFBFBD><EFBFBD>N<EFBFBD><4E>E<EFBFBD>R?B;<3B><><EFBFBD><07><>/_7v7<76>=<3D><12><>ẴG<E1BAB4>><3E>*<2A>"<22><>k hJ{A<>s5<73><35>B<EFBFBD>S<EFBFBD><05><>B<EFBFBD>0<1B><>I<EFBFBD><49><EFBFBD>P<EFBFBD>SE<53><45><EFBFBD>f<EFBFBD><66>^<5E>:)|<7C><>w<EFBFBD><77>*<2A>̹}bI/<2F>_<><5F><0E><>J<EFBFBD><4A>o<0C>z3!<21>8<EFBFBD><38><03><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>jY<6A>2-Fr<46><72><EFBFBD>u<EFBFBD>h<EFBFBD>n<EFBFBD><6E>RS<52>m<EFBFBD><6D>f'<27>F<EFBFBD>Ɍ<EFBFBD>[<5B>C%<0C>kPаU0F<30>}<7D><1C>k,C<>\1<DD8B><31><15><>V<EFBFBD><56><EFBFBD><EFBFBD>¾O<C2BE><1B>vjm<6A>U<EFBFBD><55><EFBFBD>a<EFBFBD><61>|<7C><><EFBFBD>{ۍn<DB8D>2x<32><78>-ԍ<><1D>*<2A>Jw<4A><77>"9~eï<65>ϝ֭߄T<DF84>ۃW<DB83>^<5E>p<EFBFBD>U]'L<><04><><07>x<01>ݞL<DD9E>z<07>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>i<EFBFBD><12>F<EFBFBD><46><EFBFBD>E,++<2B>p<><70><EFBFBD><EFBFBD>y<EFBFBD>R><3E>=<3D><><EFBFBD>J<EFBFBD>U<EFBFBD>F<EFBFBD> <20><>V<EFBFBD>d7<64>Ƈ<EFBFBD><C687>ґ<><D291><EFBFBD>%<0E><>~<7E><>hC5<43><35>n-<2D><>$,#Uj<55><6A>*<19>t<EFBFBD><15><><EFBFBD><EFBFBD>U)<29><><EFBFBD>Wwڑ9<DA91>^0的>m֭t<D6AD><74><EFBFBD><EFBFBD>w-<2D>7r<37><72><1A><><EFBFBD><EFBFBD>G&<26><>k<1F><><EFBFBD><EFBFBD><1D>K<EFBFBD>M<EFBFBD>h<EFBFBD>^j<>ׄG<D784>+G.<1C>s<7F>h<EFBFBD>1<11>l;<3B>\<01>K<EFBFBD>cTZ.k<>[<5B><><EFBFBD>U<EFBFBD>*֦<><D6A6>z܊"<22>%S<10>5I<35><49><EFBFBD>K<EFBFBD><4B>&<26>Yj<59><6A><10><02>@!<21> <1B>܌<><DC8C>ٳ1=f́g<1B>z<11>~<7E><>s<EFBFBD>JM̓<4D><CD83><EFBFBD>ҫ<EFBFBD><D2AB><EFBFBD><EFBFBD>3?<3F><><Hؿ<48><D8BF>-<2D><><EFBFBD>l<02><>})$<24>ZY<5A><59><EFBFBD>PȠy<C8A0>5(<28><>o<0F><>ץ²<17><1C>es<><73>q<>=<3D><><EFBFBD>ҵs <09>(<1F>3<><33><EFBFBD><EFBFBD>ﮗn;|<7C><>u<EFBFBD><17>H<EFBFBD><48>\<5C><><EFBFBD><EFBFBD>tJ<><4A><1B><>3}ׂ<>t<EFBFBD><74><EFBFBD>s<EFBFBD>zlS^?<3F><><EFBFBD>G&2<><32>5<EFBFBD>(<28><><EFBFBD><EFBFBD>q<EFBFBD><71>-<2D><1D>&J:<3A>˵"<22><>,<2C>ź<EFBFBD>#0<>sJ<73>RY99<15><><EFBFBD>W<EFBFBD>|RW<52><57>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><18><>'<27><>&<26><>rs<72>WL<>~<07><><EFBFBD>sb <20><>Q1<51><31>ٛ<EFBFBD><D99B><EFBFBD><EFBFBD><EFBFBD>^C<><1D>k<EFBFBD><6B>[<5B><>k<EFBFBD><6B>]<5D><><EFBFBD>1<0F><>mK<6D><13>zN<18>0p<30><70>kB<6B>v<EFBFBD><76>I;<3B><>b<EFBFBD>S<EFBFBD>Z<EFBFBD>"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0C><>W<EFBFBD><<3C>ݾq<DDBE><71><EFBFBD><EFBFBD>:<3A>_5<5F>{<7B>;<3B>U'<27>ݎ<EFBFBD>s<>G<EFBFBD><47><EFBFBD>t|<7C>X<EFBFBD>ݚWS<57>VPXD<58>x<EFBFBD>u)<29>lE<6C><45>L_$}M<16><>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<15>.<2E>1<EFBFBD>0qʘ+<2B><1D>c'_?4<><34><EFBFBD>VJ<56>k<EFBFBD>~<7E>/<2F>Y<EFBFBD><59><EFBFBD>wP<07><><0E><><EFBFBD><EFBFBD><07><>-<2D>s<EFBFBD>XH<58><48> 2JKt]f<>[<5B><>^+<2B><><EFBFBD>e<EFBFBD>僊<EFBFBD>i$ %{<7B>L6<4C>z<EFBFBD>l<EFBFBD><6C>o<EFBFBD>.<2E>q]єrYH+<2B>C<EFBFBD><43>KV<4B><56><EFBFBD> <20>6V0j<12>G<EFBFBD>"<22><>I<EFBFBD>j<EFBFBD><6A>U&<26>}}Y<><59><EFBFBD>چ<EFBFBD>=<3D><>~͚)=<3D><><EFBFBD>5<EFBFBD>O<EFBFBD>e<EFBFBD><65><EFBFBD>q<EFBFBD><71><EFBFBD>}w<>pSo l<><6C>'<27><><EFBFBD>4<EFBFBD>,Y<>{x<>N<EFBFBD>h%<25><>5<EFBFBD>U<EFBFBD><55>Е5<D095>]_<1F><><EFBFBD>uW<75>=<3D><><EFBFBD><EFBFBD><EFBFBD>_<>D<EFBFBD>p<EFBFBD><70><EFBFBD>ՌYK<7F>^<5E><><EFBFBD><EFBFBD>g<EFBFBD><67><EFBFBD>N<><4E>1iHy|<7C>MB*yM<79><4D><EFBFBD><EFBFBD><EFBFBD>Tv<1E><>qJ<><18><><EFBFBD><EFBFBD><EFBFBD>/F<>YC<59><43>%<25>Ly+֥@<40>J$<14><1C>%<25>&C<><43>x͛l]`2<><32>P6D<36> <20>%<25>wr<77>ڣ<EFBFBD><DAA3><EFBFBD>2k<32><6B><EFBFBD>&wG=<3D>iZ<69><5A><EFBFBD><EFBFBD><EFBFBD>~<7E>o<EFBFBD><6F><EFBFBD>]|<7C><>^<5E>' "<22>Ի<EFBFBD><D4BB>qV<71>G<EFBFBD><47>G<EFBFBD>T<EFBFBD><54>ϐu^<5E>B<EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD>\[<5B><><EFBFBD><EFBFBD>}<07>Z<16><>:_<><5F> <20><>zhA<68><41>%<25>N<EFBFBD><4E>QN<51><4E><05><>W<12><><EFBFBD>݅<EFBFBD><01><1A>D<EFBFBD><44><EFBFBD>[M<>GW<>
|
||||||
|
<EFBFBD>KW<EFBFBD><EFBFBD>yd]aY<61>4X֛w<D69B>.<2E>G0<47><30>
|
||||||
|
<EFBFBD>N*
|
||||||
|
U<EFBFBD><EFBFBD>)<19>qk<71>N<EFBFBD><4E>,3<><33>G̓`Ӊ<>Ɖ<EFBFBD><C689>y<EFBFBD>ۄ6nڸ<1E>KD6p8<70><38>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><18>v<EFBFBD>h<>x<EFBFBD>w<EFBFBD>Dy]]<19><><EFBFBD>]Lo3<6F>U<01>M<0B><>9gSjA<6A>!P8<><38><EFBFBD>p<EFBFBD>A<EFBFBD><05>.<2E><>?<3F>A<>DM<44>G<13>d"~<7E>$<24><><EFBFBD><0C><><EFBFBD><EFBFBD>V<EFBFBD> <20><>S<EFBFBD>7<EFBFBD><37><EFBFBD><EFBFBD>¯<17><1D><><EFBFBD><EFBFBD><EFBFBD>zQ?<3F>|<7C><><EFBFBD>װ)<29>7<EFBFBD><37>Yڟ<59><05><>O<EFBFBD>3%Ď<>;J<>3<EFBFBD><11><>$Ю=d1č<31><C48D><EFBFBD>al<1B><><EFBFBD>_r<5F>X *<2A>X,<2C><>ֱ<EFBFBD>T<EFBFBD>i<EFBFBD><69><08>s炱P<0B><>X<EFBFBD>%<25><>l<EFBFBD><6C>Ї4Ү2<D2AE>~<7E><>cY<63>r<EFBFBD>u<EFBFBD><75>& <09><><EFBFBD>x<EFBFBD>*y<14>Ҙ<D298>lǨ"_<><5F><EFBFBD><EFBFBD><EFBFBD>E<EFBFBD>h<EFBFBD>v<EFBFBD><76><12><>ʃz<CA83><18>0
|
||||||
|
<EFBFBD>><fw<03>s<EFBFBD>"j"<22><><EFBFBD><EFBFBD>"<22><>!VP
|
||||||
|
<EFBFBD><EFBFBD>F<EFBFBD>ܵ<><DCB5>*<2A>;9p<39><70>d<EFBFBD>6,<2C><><EFBFBD>u<EFBFBD><06>}C<><43>W<EFBFBD><57><EFBFBD>s<EFBFBD>qEYA,<16><><11>
|
||||||
|
<EFBFBD><EFBFBD>YC<EFBFBD>k7<EFBFBD><1C><><EFBFBD><EFBFBD><15>+#w<><18><EFBFBD><EEAA99>ϸv<CFB8>Б]<5D>d<><64><EFBFBD><EFBFBD><EFBFBD>D~,<2C><>(<28>F<EFBFBD>K<EFBFBD>Z.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>$/h<><68><EFBFBD><EFBFBD>+)#<23>T<EFBFBD><54><18><><EFBFBD>
|
||||||
|
t`<0E><>a
|
||||||
|
H<1B>k<03>D<0C>%a6[r`ʦt<CAA6><74>V30<33>0<EFBFBD><15><>L<>ER<45>.V-<2D>L<13><>z<EFBFBD>=ʻ<><CABB><0B><>]<5D>_yn<79>vh<76>s<EFBFBD><73>
|
||||||
|
<EFBFBD>D(i<> <20><><0C>N<><4E>]<1F><>pũ<>8"
|
||||||
|
<14><0F><><0B>!<21><><02>3<EFBFBD>G/<2F>JbQ<62><51>H<EFBFBD><12>o<EFBFBD><14><>@<40>6<EFBFBD>q<>t<EFBFBD><74><EFBFBD>~<7E>ח<EFBFBD>ݪ<EFBFBD><DDAA>uAb֔<07>M<EFBFBD>[<5B>'<27>|z+<2B><><EFBFBD><EFBFBD>g<EFBFBD><67><EFBFBD>F<EFBFBD>C?<3F>7<EFBFBD>at<61>ߞ<EFBFBD>|<7C><>u7<0E><><EFBFBD>n:<3A><><EFBFBD><EFBFBD>i<EFBFBD>לkҟ<6B><D29F>9<EFBFBD><39><EFBFBD><EFBFBD>h}<7D>~X?<3F>/<2F><>ߟ>O<><4F>S<EFBFBD>q}<7D><><EFBFBD>)<29><1D>><3E><><EFBFBD>{~z<>c<EFBFBD>}<7D><10><0B><>4ƻZ j<>Lm*<2A>V<EFBFBD><56><EFBFBD><0E>p<EFBFBD>&:<3A>ft<66><74>3<EFBFBD>Dwс <20><><EFBFBD><EFBFBD>'0<><30>8<EFBFBD>+5x<35>v<EFBFBD><76><EFBFBD><EFBFBD>p<EFBFBD><70>éy<C3A9><79><EFBFBD><EFBFBD>fU<04>ʪ`5@qV<71><56>`<60><><EFBFBD><02>=K<>0$<24>ø<EFBFBD><C3B8>$<24>߉GJx`<60><><1B>OB<12>Z <20>D
|
||||||
|
Tf<>_<EFBFBD><5F><07><>+<12><><EFBFBD>n<EFBFBD><6E>n<><6E>t<C29B> <20>Ib<49>,<2C>
|
||||||
|
i<EFBFBD><EFBFBD>JJe<0B><>{N?<3F><><EFBFBD>B<EFBFBD><42>G<EFBFBD>9`<60><> <09><> <20><10>˫<EFBFBD>Y<EFBFBD><59>
|
||||||
|
<EFBFBD><EFBFBD>/<01>L M<14><><EFBFBD><EFBFBD><0B>isQ<73>A<EFBFBD><41>,b/<2F>A<EFBFBD><41>a<EFBFBD>'<27>*<2A><>D(<28><>J<EFBFBD>t\<5C><><EFBFBD>q<>8hU<><55>*uA.<18><><EFBFBD><EFBFBD>G<EFBFBD>q<EFBFBD><12><><EFBFBD>\ <09>I<16>C_<43><5F><EFBFBD><0B><$\/E<>Rd!(<28>3<EFBFBD>p<>~~<7E>ЧGb8)P5ǿ<35>W%<25><>5|<1F><>\<5C><>\
|
||||||
|
2<EFBFBD><EFBFBD>#H<><06><><EFBFBD><EFBFBD><EFBFBD>й)2<0F><>X<EFBFBD><58>}x<>gKf<4B>ڮ<EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><1B>^<5E>z<EFBFBD><13>f<EFBFBD>i<EFBFBD>깻JD<4A>k<>|- z<><7A>漗nJ7<4A><37><EFBFBD>#<1B><><08>N<EFBFBD><4E><EFBFBD>4<EFBFBD><34><EFBFBD>^IhF<7F>u2
|
||||||
|
<EFBFBD><13><><EFBFBD>Ե;H /<2F><><EFBFBD>@<40>'<27>V<EFBFBD>q@;<3B><>eu<65>JYE<59><45>@<40><>Yt<59>T$<24><>TSH*<2A>KH$<24><><EFBFBD>ڛ<EFBFBD><18>j<EFBFBD>\<5C>Cn<43>,<2C><>$<24><><EFBFBD><EFBFBD> X<>r<EFBFBD>9/9j<39><6A>de<64><65><EFBFBD><EFBFBD><1F><><EFBFBD><EFBFBD>t<03><><EFBFBD><EFBFBD>M{<02>4<EFBFBD><34><EFBFBD>z<0C>˩FG<46>-ݟ<1B><><EFBFBD>O<EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD>i<>z<EFBFBD>3<EFBFBD>!<21><><0C>iP[<5B>ƅB!";E쩈<45><17><><EFBFBD><EFBFBD><0B><>2E<32>e<EFBFBD><15>'<27>04q<34><6<1C>
|
||||||
|
<EFBFBD>jC9<EFBFBD>-<2D><>7d@7e@Go-ɰ<><C9B0><EFBFBD><EFBFBD><EFBFBD>V@<40><>%<25><>(؊c<06><><10><><EFBFBD><EFBFBD><1F><>c<EFBFBD>E<EFBFBD><45>wKM<4B><4D><EFBFBD>.<2E>fI8<49><38><EFBFBD>ӀP
|
||||||
|
\<5C><><EFBFBD>]02<07><>u<EFBFBD>a<<3C>@<40>U<EFBFBD>
|
||||||
|
<EFBFBD>.P;<3B><>+H<>.<18>h%<25>%۱<>v<EFBFBD><76>;l_H<5F><48><EFBFBD><EFBFBD>,_<><5F><EFBFBD><EFBFBD>k<EFBFBD>yiM&<26><><EFBFBD>*<2A>p<EFBFBD><70>n<EFBFBD>`<60>
|
||||||
|
<EFBFBD>/<2F>+m<15><><EFBFBD><15><>Ya<59><61><EFBFBD><EFBFBD>^<5E><>n7<6E><37><EFBFBD>{<7B>n<EFBFBD>ʰ/<2F> V<> X-`<60><><EFBFBD>0Q$<24><11> c<>d염в<EC97BC><D0B2><1C>?<3F>T<EFBFBD>#bK<>a<EFBFBD>qZ<71>f<EFBFBD>Nѥ<4E><D1A5>H<EFBFBD>%<25>!<21><1A>C[<5B><> <20><>C黠#<23><>#ʍ<>획ةJC<4A>2<EFBFBD>d>Z<>
|
||||||
|
<EFBFBD><EFBFBD>$#<23><>#<23>!<21><><EFBFBD>z(P""<22>Ed1v<31>,<2C>)r
|
||||||
|
;<3B>G<EFBFBD><47><EFBFBD><EFBFBD><EFBFBD>gN><1D>g<>9n<>]<%<25><>Nkµgqfm<66>`:p<>s<EFBFBD><73>~<06><><EFBFBD>蓴ωG<CF89><47><EFBFBD><EFBFBD><EFBFBD><16><><EFBFBD><EFBFBD>y<EFBFBD>!z|<7C>\<5C><>^Nѧ<07><>
|
||||||
|
tF?<3F><>އ<EFBFBD>~<7E><><EFBFBD><EFBFBD>#<23><>9Z?+<2B>~<7E>,YA~<7E>W<EFBFBD>ڙ<EFBFBD>l<04>@<40><>]Da<44>A<EFBFBD><41><EFBFBD><EFBFBD>P<EFBFBD>U<EFBFBD>"<22><10><><EFBFBD>P2<15>d<EFBFBD> )q<><71><EFBFBD><EFBFBD>܇A2<41>}<18>L<EFBFBD>?nIgm<67>"|<7C>E<EFBFBD>?=D<>^<5E>ێ<EFBFBD>Oz=<3D><><EFBFBD><EFBFBD><EFBFBD>B
|
||||||
|
r<EFBFBD><EFBFBD>+h<><18>=I<>߲~K<><4B><EFBFBD>;!gNr<4E>"6
|
||||||
|
X<1D><>,[<19>s<EFBFBD>s0 u;<3B>S$<24><><EFBFBD>'8鉕<0F><1E><>a<EFBFBD>Ϣ<><CFA2><EFBFBD>n<EFBFBD>d18<15>V*<2A>)3y<1B>?<3F><19>x<EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD>u<EFBFBD>2<EFBFBD>/[<04>E<EFBFBD>&<26><><EFBFBD><EFBFBD>ɚLjo<6A>ީd<DEA9><64><EFBFBD><EFBFBD>Mۻk<DBBB><02><><03><06>4<EFBFBD><1D><><EFBFBD>Y<DB9D>q<01><>Rnw<6E>T<EFBFBD>p<EFBFBD>07<30><0C>4<EFBFBD>:<3A>eG@<40>v <09>`<60>U<EFBFBD> g<>is<06>2<EFBFBD>S<EFBFBD><53><EFBFBD>Of<14>l7<6C><37><EFBFBD>F^<5E>ei<1E><>RX<52>9K $<24>$7<>H<48>o<11>l<11>a!<21>^z<><7A><EFBFBD>ؕ<06><><13>nM1y<31>6<EFBFBD><36>$r<>f<EFBFBD>"<22>><3E><>ϩ\N<>B<EFBFBD>WX~t<><74>w<EFBFBD><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><16><><EFBFBD><EFBFBD>$<24>%<25>EMɂ<4D><C982>|LTj<54><6A>L<EFBFBD><4C>uk<75><6B><EFBFBD>@<40>ئtx<74><78>IMgu<67><75><EFBFBD>t?ޫ<05>f<EFBFBD><66>}<7D><><EFBFBD><EFBFBD>'L<0F> <20><>+C|<7C>v<EFBFBD><76>,<2C>E%<25>K<EFBFBD>z<EFBFBD>^&^"4Yx!<0B>J<0F><><EFBFBD>G1J@s}H<><10><><EFBFBD>j<EFBFBD>p<<3C>B<0F><03><>1%<>t<><74>Ƃ<>\C<><0F><>`<11><>{<7B><>C<EFBFBD><43><EFBFBD> <20>(<28>T0<54><30><EFBFBD><1C>Ҥ<<3C><>n1<6E>Ӄ<EFBFBD>z(<14><1B><>{<7B><>Ϣ<><CFA2><EFBFBD>^<5E><><EFBFBD><EFBFBD><1D><>/<2F><>n<EFBFBD><1F><>(<28><><EFBFBD>jfvc_<1B><><EFBFBD>
|
||||||
|
<EFBFBD><EFBFBD>g4<EFBFBD>,'<27><05><>R<07><18><01><14>I<EFBFBD>3 <20>Cz<43>$<24><><EFBFBD>F<EFBFBD>K<EFBFBD><4B><EFBFBD>z<EFBFBD><0F>ʃ<EFBFBD>D<EFBFBD><17><>C<EFBFBD>b[+<2B><>b[<5B>B<EFBFBD>I[FV<46><56>4<EFBFBD>ךJ<D79A><1A> <><18><15>*<2A><><EFBFBD>PR<50>IJ<49><4A><EFBFBD><EFBFBD><1C>l<EFBFBD><6C><EFBFBD><EFBFBD>vG<76>h<EFBFBD>"Ί'<27>:<3A>/<2F><><EFBFBD>#<23>g<EFBFBD>jd?<1E>來<EFBFBD><16>W<EFBFBD>N-<2D>x<11>d'<27><><EFBFBD>ŋ<EFBFBD><C58B><EFBFBD>)<29><01><><EFBFBD>#<07><>@E@"
|
||||||
|
ޡ<EFBFBD>
|
||||||
|
ޡ,`<60>(j~369<>xqt<12>ZM<0F>PS<50>㻠<EFBFBD><E3BBA0><EFBFBD><EFBFBD><EFBFBD>LZG<5A>ӛ<EFBFBD><15><><EFBFBD><EFBFBD>o<EFBFBD><6F>˓T<CB93>τ<EFBFBD>j<EFBFBD>><3E><>ק<EFBFBD><D7A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><52>W<EFBFBD> ~<7E><><EFBFBD>`z<><7A>.&<12>w<><77>KVj<56>/<2F><><EFBFBD>P<EFBFBD><50>$<24>RN'<13><><01><>YP<59>-<2D>Vu<56>@5A<><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HT<48><54><EFBFBD>8ZC<5A>q<EFBFBD>t<EFBFBD>`<60>N8<4E><38>sQy<><79><02><>f<EFBFBD><66><19>6<EFBFBD><36><EFBFBD><EFBFBD>Q.1<EFBFBD><EFBFBD><03>N<EFBFBD><EFBFBD><7F><EFBFBD><EFBFBD><EFBFBD>};<3B>?<3F><><10><>ǥ<EFBFBD>?<3F><><EFBFBD><EFBFBD>,|<7C><><EFBFBD><EFBFBD>*<2A><><EFBFBD>W+<03><><EFBFBD><EFBFBD>tѲ|<7C><>q:cѧ<12>5<EFBFBD><35>id<><64>P+<2B>A<1E>=<3D>7<><37>hi<68>G<EFBFBD><47><12><><EFBFBD><1E><02>*V,<2C><02><>QC<51>ϫ<EFBFBD>x<EFBFBD><78><12><><EFBFBD>/<<3C><>K<EFBFBD>7m<37>{<7B>J<DEB2> <20><><EFBFBD><EFBFBD>ӏ<EFBFBD>w߲<77>_<EFBFBD><5F><EFBFBD><EFBFBD>%K¯<4B><0E>u<><75>Ç<EFBFBD>ou*<2A><><EFBFBD>FL<46>|<7C> <09>ř'ojn<>6=<3D><><EFBFBD><01>F)%/j<><6A>*<2A>in
|
||||||
|
<EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><<3C><>՞뀾;<18><>l<1E><>1<EFBFBD><31>/E<s:<3A>R႕<52><E18295><EFBFBD><EFBFBD><11><07><><EFBFBD><EFBFBD>]R<><52>l<EFBFBD><6C><EFBFBD><EFBFBD>nb>;O#@N<><4E><EFBFBD>
|
||||||
|
<EFBFBD>J\<0C>08I$/<2F>N<EFBFBD>565<36>o嬐<6F><E5AC90>3a<33>@QO<51>E.8|:֫<><D6AB><EFBFBD><EFBFBD>-tۘGo<47><6F>8<EFBFBD><38>+<2B><>*<12><><EFBFBD>}]{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WU<57><55><1B><>ĸ<07>
|
||||||
|
X0<EFBFBD><EFBFBD>OT<EFBFBD>w<EFBFBD>"<22><><EFBFBD>ϔ\q<>v0<DB9D>9-߱<><DFB1><EFBFBD>U<EFBFBD>}-0<><30><EFBFBD>/<2F><><17>˲<EFBFBD><CBB2><01>9<0C><>J*<1C><><15><0C> E0<45>Ń<EFBFBD><C583><EFBFBD><EFBFBD>
|
||||||
|
<EFBFBD>p<EFBFBD>,<2C><>l0]<5D><>Z<18> <20>;u<>W<EFBFBD>:<3A><><EFBFBD><EFBFBD>
|
||||||
|
<EFBFBD>jH<>$t<><02><><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD>V<EFBFBD><56><EFBFBD><16>P!*8<>m<EFBFBD>f<EFBFBD><66>Vc<15>S<EFBFBD><53>0f&<06>s<EFBFBD>=u6<1E>.6܆<>*<1E>G/Oi&G <20><>Ǩ<EFBFBD>y?<>&w|d]r<><72>+<06>z\<5C><><15>5|x<><78>ת<EFBFBD><0E><>~<7E>m-<2D><>s<EFBFBD>}{&\?<3F><>ۡ<EFBFBD><DBA1><EFBFBD><EFBFBD><EFBFBD>)݆_ѻ<5F>d<EFBFBD><64>YCƯS<><53>7"Թ<>{<7B><><EFBFBD>^<5E>%<25>&<26>2<><32><EFBFBD><EFBFBD><1D>|<7C>L{<7B>J'<27><>j<06>]<06>.<2E><1A> <20>Y<EFBFBD><59>X%↥<><E286A5> 1<><31><EFBFBD><11><BX<42><1C>Lt<4C>1<EFBFBD>Ն!<21><>;<3B><12>{Za/'U<><55><13>\- <20><>=<16><><EFBFBD>-<2D>u<EFBFBD>/<2F>pV<70>D<>[<01>}t<><74>Z'<27>1<EEB583><31>
|
||||||
|
Q<>!\w2<77>]<5D><16>a<EFBFBD><61>7<07> <04>p(ld<6C>FldY(<28><><EFBFBD><EFBFBD>q<>F<EFBFBD><46><EFBFBD>`f<>A<EFBFBD>ڪ<EFBFBD>0J
|
||||||
|
<EFBFBD><EFBFBD>8<EFBFBD><1F><><EFBFBD><EFBFBD><EFBFBD>:<3A>E<DEB8>,<2C>I<EFBFBD><49>nnޠ_A<5F><41>[<5B><>^<5E><><EFBFBD>c<1F><><EFBFBD>t<><74><EFBFBD>*t<><74><EFBFBD><EFBFBD>t<EFBFBD><03><><EFBFBD>8<EFBFBD><38>@<07>pU<70><55><EFBFBD>
|
||||||
|
><3E>8h<17>ΰPK;<3B><><08>8<EFBFBD>;<3B><><16>1<EFBFBD><31>\<5C>/i<>)<29>G<EFBFBD>8v<38>CE<43><45><12>?Y<><59><EFBFBD><10><><EFBFBD>lz_<7F>(C<><1C>
|
||||||
|
+qȰ<71><C8B0><EFBFBD><EFBFBD>[qG<#<23><18><> <0E><><EFBFBD>/<2F>ϼH<CFBC><48><EFBFBD>Ek<45>6Қ <20><><03><>z<EFBFBD>oA̕E<CC95>eb.<2E>[<5B><>˦s<CBA6><73>L?<3F>颷9<E9A2B7><39>6:O<>٘{<7B><>o~<7E><>6<1F><1B><>hN<68><4E>N<>Vt<<3C>G<14><>2<><32>uђ<75>U<EFBFBD>"<22><><EFBFBD>6<EFBFBD><36>mR7o<>9<>H]'R<><19><> ڇ<><DA87>0<EFBFBD>PW|W<>{<08><><15><>m<EFBFBD><6D><EFBFBD><EFBFBD>+<2B><>\<5C>.*)<29><>lw0<77><30>Ki<4B>fWBQ<42>H<EFBFBD>@8<>xn<17>D<EFBFBD>A)r<>9<08>u$r }
|
||||||
|
4<07>N<1A>3<EFBFBD><33><EFBFBD>gb<67><0B>5<18><><EFBFBD><EFBFBD>8<EFBFBD>k<EFBFBD>|<7C><>2N<32><4E><EFBFBD><EFBFBD><EFBFBD>>Q<><51><EFBFBD>'<>G<EFBFBD>@;<3B>$Iʢ=<1F><15>UC<><18>#<23><>\<5C><><EFBFBD>s <20><>v<EFBFBD>P5Jxn[͠<><CDA0><EFBFBD>!<06><>&<26>V<EFBFBD><1C>"<22>|t<><74><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD>t<EFBFBD><74><EFBFBD>n<EFBFBD><6E><EFBFBD>̣ԇ<CCA3><D487>p<EFBFBD>b߭Qs6<><36><EFBFBD>jp<6A><0C><>9<><39>e<14>D<EFBFBD>wJ8<4A><38><EFBFBD><EFBFBD><EFBFBD>)<29><>2md<6D><64>hs0[<5B><><EFBFBD><EFBFBD>BB<1B><02>C(<28><><<08><10>-<2D>LZ<4C>АӪ
|
||||||
|
<EFBFBD>Ħ#<23>n<EFBFBD>+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߦŹA1<1A><>^<5E>{
|
||||||
|
ő<EFBFBD>PE<EFBFBD>s<EFBFBD>=<3D>u<EFBFBD>ZYYWB<57><42><EFBFBD>1<EFBFBD><31>8<EFBFBD>yn<79>b<EFBFBD><62>T<EFBFBD>Q*1<>4<>M@m"<22>6dC<07> <jA<6A>%<25>B<14><>[<5B><>
|
||||||
|
HB<12><><EFBFBD><EFBFBD><EFBFBD>6D<36><44><EFBFBD><EFBFBD>Ә<13>:<3A><><EFBFBD><EFBFBD>[<5B><>˴<EFBFBD><CBB4><EFBFBD><EFBFBD>9t`<60><><EFBFBD>S<EFBFBD><53><EFBFBD>H<EFBFBD>v,<2C>"<22>}<7D>A<1F><><EFBFBD><EFBFBD>͚<EFBFBD> }c<>r<EFBFBD><72>ȚNxVE<56>0<>}<7D><><EFBFBD>nRIpJ9R<39><52>BL<42><4C>HW<48>D/<2F>Z<EFBFBD>t<>Ȝ<EFBFBD><C89C>T/r<06>Q<EFBFBD><51><EFBFBD><EFBFBD>ǥω<C7A5><CF89>X<EFBFBD>l<EFBFBD>sDi`<60>\"c<>ء<><v@A<><41>Q<EFBFBD>R<EFBFBD><52><EFBFBD> <20>x}<7D><1E><><EFBFBD>{<7B>wZ<10>4<EFBFBD>\<5C><> <09><><EFBFBD>Q<1C><>
|
||||||
|
]<5D><>T<EFBFBD>y<04>Ӕ<EFBFBD><D394><EFBFBD>i<EFBFBD>FE"<22><>,3<><33><EFBFBD><EFBFBD><EFBFBD>Y3F<33><46>/<0F><><EFBFBD><EFBFBD>_,<04><><EFBFBD><EFBFBD>N<EFBFBD><4E>+}<7D><><EFBFBD>Yg݄<67>|ۢ<><DBA2>L<EFBFBD><4C>l
|
||||||
|
<EFBFBD><12>M<EFBFBD> <20>F<EFBFBD><46><EFBFBD><EFBFBD>J<>}䴼zT<7A>拏x<EFA59B><78><EFBFBD>lz$3*`<60>$JN0<4E><15><1A>?u>[<5B><><EFBFBD>T%=<3D>U1<55>I_<49><5F><EFBFBD><EFBFBD>}<7D>,<2C><>Y8<59>o<EFBFBD>i<EFBFBD>Z<EFBFBD>9R<><05><>t<0F><><EFBFBD>]b1-$<24><><EFBFBD>L4 <20>m<EFBFBD>I<EFBFBD>k<EFBFBD><6B><EFBFBD>d<EFBFBD><64><07><><EFBFBD><EFBFBD>4<EFBFBD><34>t#<23><><EFBFBD>D<EFBFBD><44>շƼ<>ݼ<EFBFBD><DDBC>°f<><66><EFBFBD>7og<6F><67>'<27><>e<EFBFBD><65>*<2A>D<EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD>`5<><35><12><><07>s<EFBFBD><73> <20>! #g<><67><EFBFBD>O<16>g<EFBFBD>@<40>~<7E>eG2[,<2C><01>瓭Z<E793AD><5A>Rb<52><62>(<28><10>#<23>6<EFBFBD>P<EFBFBD>ڛ<EFBFBD><DA9B><01>#<23>4<EFBFBD><34><EFBFBD><02><><EFBFBD>(.<2E><>1<EFBFBD>U<EFBFBD>J<EFBFBD>"(<28><><EFBFBD><17>%T0<18>/<2F>7yJ!oiL<69>,<2C><>ZqKX<4B><15><><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>d<EFBFBD><64><EFBFBD>neW<18>#<23>M<EFBFBD>V<19> <20><>X5bkQ<6B><51>"g<>=l<>&<26><>w<EFBFBD>=C<>i<EFBFBD><69><1F>#<23><><EFBFBD><EFBFBD><EFBFBD>3nJ<6E>}<7D><>=<1B><><EFBFBD><EFBFBD>8<EFBFBD>n<19><>zM<7A>z<EFBFBD><7A><03>><3E><18><>f<EFBFBD>'ä<>D%<25>d<EFBFBD>'v<><76>,@J<>1<EFBFBD>-ٶ<>ƔM<15><>1<EFBFBD><31>a<EFBFBD>|
|
||||||
|
#<w<><77>_<EFBFBD>,<2C>U8<55>/^l<><6C><EFBFBD>^l<>]<5D><><EFBFBD>M@A<>\<5C><><EFBFBD>8G/<2F><>L
|
||||||
|
<EFBFBD><EFBFBD>+ @qa<71><61><EFBFBD>$+<2B>C]<5D>9<EFBFBD><39>2,n<>$<24><><EFBFBD><EFBFBD>:<3A><><EFBFBD>S<EFBFBD>\<5C><>Ԇ<EFBFBD>l_<6C>F:<3A><1E><><EFBFBD><EFBFBD>_<EFBFBD><16>M<EFBFBD><4D><16><><EFBFBD>7<EFBFBD>~<7E>5<EFBFBD><35>q <05>A
|
||||||
|
<02>.m<>FmJD$ `<60>G
|
||||||
|
SB<53>;QSV<53>DaM<>,t<08><>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD>b<1F>b <13>%l(<15>q<EFBFBD>"*<2A>c<EFBFBD><63>M<02><>9<EFBFBD>T<EFBFBD><54>I1<49><31>Tu&&<26>6<EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>OZ<4F><5A><EFBFBD><1B><><EFBFBD>7<EFBFBD><37>{<7B>+h<>_<EFBFBD>4Y<34>eȱ<65>w<EFBFBD><77>B.<2E>hD<68><44><EFBFBD>#ZW<05><18>p<EFBFBD><16><>l<EFBFBD>`p<1C>S<EFBFBD><53><10><>b<EFBFBD><62>*<19>{Ɣ<><C694>Z.<2E><>a`<18><01>[qvX<76>(<28><>mk[&<26><><EFBFBD>V&<26>X<0F>DS<44>c<><63>Mf<4D><66>`<60><>n<12><>z寔|<7C><>8<EFBFBD>禅k<E7A685>=yﲧ<79><1F><>tZ<74>Y<EFBFBD>{<7B>/<0F><><EFBFBD>ū<EFBFBD>;r<>5<>x<>%<11><><EFBFBD>ZF\G<><47><1F><>ܥ"Q<><51> <20>A%<12>.dD(<28><><EFBFBD>X<EFBFBD>b<1F>5<02>|&<06><><EFBFBD>ɇ
|
||||||
|
<1A><07>/;<3B><>jmU<55>H'<27>J<EFBFBD><4A>8.rĿ<>D<EFBFBD><44><EFBFBD><EFBFBD>2<EFBFBD>BFk4DZ<><5A>
|
||||||
|
<EFBFBD><EFBFBD> ),<2C><>tGqG<71>3<EFBFBD><33>~<7E><><19><><EFBFBD><EFBFBD>[<5B><><EFBFBD>36<33><36>'O<><4F><EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD><1D><><EFBFBD>Vݿa<DDBF>ݨ<EFBFBD><DDA8>@<1E><05>h<EFBFBD>_ *<10><1B><>p<><70><EFBFBD>\.gcʥx<05>\<06><><EFBFBD>j<EFBFBD>I<EFBFBD><49>ۆò<DB86><C3B2>l8,<2C><12><>?<3F>G<EFBFBD><47><EFBFBD>z<><7A><EFBFBD>D<EFBFBD>6<EFBFBD><36>,'+1<><q><3E><><EFBFBD>C <20><>nL `<60><>V%yRGHx<48><78><EFBFBD><EFBFBD>ӧ<EFBFBD>x<EFBFBD>ٽ<EFBFBD>(<28>Fg<67>aE<61>
|
||||||
|
6c<EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>"G<><Q<05><>I1yCS<43>"e<><1B>Z<EFBFBD>eي<65><1C><><EFBFBD><EFBFBD>T<EFBFBD><54>*X`<60><><EFBFBD>]<5D>0<EFBFBD>`H <09><>rS>UD<><44><EFBFBD>VKl<4B><6C><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD>8<EFBFBD>㶕<EFBFBD>QlŦQl]<5D>"<22>Ut]M<><4D><17>6<EFBFBD>;<3B>̄A.<2E>Z<EFBFBD>f#2H<32>6<14>1<EFBFBD>m<EFBFBD>zL<7A>W<EFBFBD>(<28>U<17><EFBFBD><7F><EFBFBD><EFBFBD>?<3F>:W<><57>o/<7F><7F>w<EFBFBD><77>I<EFBFBD>伇<EFBFBD>=y<><79>g<EFBFBD><67>o<EFBFBD><6F>4<EFBFBD><34><EFBFBD>v<EFBFBD>z<EFBFBD><7A><12><><EFBFBD><EFBFBD><EFBFBD>;<0F><><EFBFBD><EFBFBD>kO9<>R<EFBFBD><52>vt<><74><EFBFBD><EFBFBD><EFBFBD> *<2A><><EFBFBD>H<03><>STD};<3B>t<EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD>3Z<1E><>><3E><>~<7E>%6<> <20>nO<><4F>ݞ<EFBFBD>C\+<2B><>L<EFBFBD>!V<>Qq<51><71><EFBFBD><1E><><EFBFBD>l:5<1B><>8<EFBFBD>3:RL<>V<>_<02>=<3D>U},H<>J<18><04>S<EFBFBD>{4X+$<24>u<EFBFBD><75>[q<><71>3<EFBFBD><33><EFBFBD>o<EFBFBD><6F>xMZ<4D>2<EFBFBD><32>2<EFBFBD><32>ryTC`<60><><EFBFBD>
|
||||||
|
<EFBFBD><EFBFBD>]{袬(<1F><>lY<6C>^ekk7m<37><6D><1E><>={<7B><><EFBFBD>:<3A><0C><>-<2D><><<3C>'<27><>MZgA º|r9<1E>iL<69><4C><EFBFBD>x<EFBFBD><78>
|
||||||
|
<EFBFBD><EFBFBD>/!<21>";<3B><><1D><><1D>۳"F<><1A>g<EFBFBD><67><EFBFBD>e<EFBFBD><65>Cf<43><66><EFBFBD>m<EFBFBD><6D>m<EFBFBD><16><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><10><><EFBFBD>f<EFBFBD><66><EFBFBD>u<1D>v<><76><EFBFBD><EFBFBD><EFBFBD>T8a]P<>:<3A>,ZD<0B>t!<21>Ό
|
||||||
|
J<EFBFBD>ɂ<EFBFBD>
|
||||||
|
<EFBFBD><EFBFBD>!<21>%<1A>vE&v<><76><EFBFBD>sq3<71>p<70><13>"ƣ<><C6A3><EFBFBD>ҖH<D296>2i<32>͗>7cu<63>|<7C>3|S<><53>ƌ<EFBFBD><C68C><EFBFBD>9>f <07>;<3B><><EFBFBD><03>s<EFBFBD><73><13><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD><5A><EFBFBD>5<EFBFBD>C<EFBFBD><43>x<18><><EFBFBD><EFBFBD>&<26><>L<EFBFBD><4C>,sZ<73><5A>#<23><02>ρ<EFBFBD><CF81><EFBFBD><03>O<1A>(<03><>O<EFBFBD><4F>}<7D><>^)<29><<18><>h<1C>(<28><><EFBFBD>ee<65><65><12>NQ
|
||||||
|
<04>EW@AnX<6E>)v<><76><EFBFBD>R<7F><52><EFBFBD><EFBFBD><EFBFBD>^{<7B>߃
|
||||||
|
=<3D>Ѓ
|
||||||
|
=K<><4B><EFBFBD><EFBFBD><EFBFBD>ɍ)<29>b<EFBFBD><62><12><1D>i<EFBFBD><69><EFBFBD><EFBFBD>'9Y4f_Ra<52><61><EFBFBD><EFBFBD><EFBFBD>/asT<73> @<40><><01><13>dm-<2D>+<2B><>^<5E>
|
||||||
|
q#Sbο<62>y<EFBFBD><79>j<EFBFBD>!<21><><EFBFBD><EFBFBD>M<EFBFBD><4D>Ozp<7A><70>SV <20>o~o<><6F><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>0p<30><70><07>N<EFBFBD><11><><EFBFBD>߯J<DFAF><11>ƽ<EFBFBD><C6BD><EFBFBD>&hF<68><46>
|
||||||
|
<EFBFBD>:<3A>s^<5E>ؕ<EFBFBD><D895><EFBFBD>%<02><><EFBFBD><EFBFBD><1C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><17>c<EFBFBD><63>_<EFBFBD>9<EFBFBD>X<03>t<EFBFBD>=C<><43>Ŗ<EFBFBD>B?z<><0B>ᨶ<EFBFBD><E1A8B6><EFBFBD>I
|
||||||
|
<EFBFBD>a<>e<EFBFBD>V<18><1C> <20>mL<6D><4C>먬^̥<>m<EFBFBD>,<2C><>=g<>W<EFBFBD><57>|<7C>!<14>Yp<59>U<EFBFBD><55>q<EFBFBD><71>F<EFBFBD>b<16><>8"<22>3.<2E>`C] <09>I<EFBFBD><49>nB<6E>_<EFBFBD>Ь<7F><D0AC>P<EFBFBD><50><EFBFBD><EFBFBD>
|
||||||
|
{<7B><><EFBFBD><7F><EFBFBD><EFBFBD>4<EFBFBD>*<2A><02>۳<EFBFBD><DBB3>?e<>?ٷ<><D9B7><EFBFBD><EFBFBD>xѾ<>^DY<44> <20>ggо<67><D0BE>&<26><>C<7F>ދ<EFBFBD> <09><>h<EFBFBD><68><EFBFBD>3<EFBFBD><33>[9<>?<3F><>C_<43><5F><EFBFBD><EFBFBD>i<EFBFBD>h?<3F>(}<7D><><17>><3E><><EFBFBD>W<><57><1B>*<1A>lf<6C>c<EFBFBD><63>Lp<4C><70><EFBFBD>/
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD>P<EFBFBD><EFBFBD>1<EFBFBD>Q<EFBFBD><EFBFBD>A<EFBFBD>U<EFBFBD>"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}<0C><>Ek<45>m^<5E><>i<EFBFBD><69><EFBFBD><EFBFBD>0<EFBFBD><30><16> <09><><EFBFBD>ƅ<EFBFBD>?<>w<EFBFBD><77>ј<EFBFBD><D198>K<EFBFBD>F<>z<EFBFBD>8Ae<41><65><EFBFBD>-<01>B<EFBFBD>]p<><70><<3C><>/<2F>dYb<59><62><EFBFBD>O͍[t<>Z<EFBFBD><0B><>5h<35><1E><>L<EFBFBD>f ^<5E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Փ<EFBFBD><03><14>Lild<6C><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)sܨ-&^W<><0B><>q-b)<29>,H<><48>Im<18><05><11>~/ҷ
|
||||||
|
<EFBFBD><EFBFBD>]9<>k<EFBFBD><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?Ҙ<><D298>D<>9<EFBFBD><39><EFBFBD><EFBFBD>S<1D><>P<EFBFBD><50>ŊB<C58A>-Ƙ<<3C>]E<>
|
||||||
|
I<EFBFBD><EFBFBD>
|
||||||
|
<EFBFBD><EFBFBD> 9fB<66><42><EFBFBD>;0<><30><1A>0<EFBFBD>1<EFBFBD>#<1C>qg<71>Xq <20><><EFBFBD> <20>Ļ?Z\<5C><>N<EFBFBD><4E>ط<EFBFBD>n<EFBFBD>}<03><>t<EFBFBD><74><EFBFBD><EFBFBD><EFBFBD>rs<72>I^6e`<60>><3E>V<0F>P<EFBFBD>㺕<EFBFBD>k<EFBFBD>
|
||||||
|
}<7D><>}Gt<47>wˀ<77><CB80><EFBFBD><EFBFBD>%U<>v]:<14><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5pZ<70>"<22>P<EFBFBD><50><EFBFBD>p<EFBFBD><70> $?_<>θ<EFBFBD><CEB8><EFBFBD>^<5E><>֨<EFBFBD>nq<6E><0E><>S`<60><0B><>\<5C>><3E><><EFBFBD>@<40><12><0C><>f<EFBFBD><66>h<EFBFBD>u<EFBFBD>6н2<D0BD><32>g<EFBFBD>+.<2E><>&)P<13><<1C>W<EFBFBD><57>$n<>
|
||||||
|
wv<1B><>sǎMT<4D><54>˯<EFBFBD><CBAF><EFBFBD><1E>eg<><67><EFBFBD>V<EFBFBD>_<EFBFBD>qDߏ<><0E><><<3C>r<EFBFBD>L<EFBFBD>?sq<73>*<2A>:e`NɉsNU<4E>
|
||||||
|
<EFBFBD>+)T<><54><EFBFBD><EFBFBD><EFBFBD>n6<6E>ۛ<EFBFBD><DB9B>S<14><> aK,<2C>ְ<EFBFBD><D6B0>E<EFBFBD>w<EFBFBD><77>;<3B><>c̵<63>%<25><>֨A<> <20><>&q<><71><EFBFBD><EFBFBD>'<27><>~d<>ƽt<C6BD>p}z<><7A><EFBFBD><EFBFBD><06><>@<40>ٛ<EFBFBD>1$<24>4<EFBFBD><0E>fQ:S<><<18>@g<>ȝ<EFBFBD><<3C>ɸg<><67><EFBFBD>&<04><><EFBFBD>8"<1D><><EFBFBD><11><>4<EFBFBD><Ȁ3<<3C>Q<19><><EFBFBD>jx<#<23>(n<1B>`o<><1F><><EFBFBD><EFBFBD>b<EFBFBD>E<EFBFBD>a<12>f"<22>t<EFBFBD><74><EFBFBD><EFBFBD>^<02><>0!<21><0E>s6y_<0B>Φ<EFBFBD><CEA6>t<EFBFBD><74>γ<EFBFBD><19>v<EFBFBD><76>j'<27>F<EFBFBD><46><EFBFBD><EFBFBD>.O<><4F><EFBFBD><EFBFBD><05>'<27>9<EFBFBD>G<EFBFBD>:<3A>}<7D>#<23>xfEO<45><4F><EFBFBD>?N<>tty#<23><>n<EFBFBD><6E>3<EFBFBD><33>}W+<2B>N<0E><><0B><12>e<13>ݡ<EFBFBD>ۆZ=孎r<12><><17><\L<><4C>$<24>e<EFBFBD><65><0E><><EFBFBD><0F><>ȼ<EFBFBD>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD>]<5D>2<EFBFBD><32><EFBFBD><0F><>UP<55>EB _v<5F>*<2A>I<EFBFBD><49>\/<2F>)<29>d<EFBFBD><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
++<2B><>[
|
||||||
|
g><3E>g<EFBFBD>7<EFBFBD>Gos<6F>9N:<3A>N<EFBFBD>1z;<3B>(<18><>n<EFBFBD><6E>3<EFBFBD>Ɏ<EFBFBD>X<EFBFBD><13><>˜<EFBFBD>N<EFBFBD><4E><EFBFBD>S|<7C>X<EFBFBD><58><EFBFBD><EFBFBD>Q͕i<>#V<>Vy.gFV<0B>y0$#<0F> <09>=><3E><>RDp9<01>1<EFBFBD>[:1<><17><>3<EFBFBD>m<02>/Gil<69>y:<1A><>l<EFBFBD><6C><EFBFBD>ֿ<EFBFBD><D6BF>/K<>:<1C>G<1B><>/
|
||||||
|
D<><44>uV<75><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><47>K<><4B><EFBFBD>H3<48><33><EFBFBD>><02><><EFBFBD>ڰ<EFBFBD><DAB0><EFBFBD><EFBFBD><EFBFBD>,P?
|
||||||
|
BOV2<56>G<EFBFBD>G<EFBFBD>PZ<15><>r1P#dl)<29><>wf<77>P<EFBFBD><50><EFBFBD><EFBFBD>̤<EFBFBD>g&MЅ<4D>t9<74>I<EFBFBD><?i<>h[<5B>q<>qmfڛ<66><DA9B><EFBFBD>]U}><18>><3E><>/<2F>Z<EFBFBD>W<EFBFBD><57><EFBFBD>U<EFBFBD>O<EFBFBD>
|
||||||
|
<16>*K
|
||||||
|
-ɹ<><C9B9><EFBFBD><EFBFBD><07>k^ez<65>I<EFBFBD>6ܙ<05><><05>c<><63>'5<>]<5D>2<EFBFBD>.¦<>Q<><51>5<1C>e<EFBFBD><65><EFBFBD>9Sb<53>9SV<53>C<17>5ha<68><61> t<><74><EFBFBD>7
|
||||||
|
#<23><>Ƥ?gA<67>^<5E><>+<2B><><EFBFBD>
|
||||||
|
<18>h}/<2F>G<0C><>Z<EFBFBD>G<EFBFBD>e<EFBFBD>>%;<3B><<3C>_<EFBFBD>pM9 M<><4D>7 9<>ဤX'<27><><EFBFBD>C<EFBFBD><43><EFBFBD>}<7D><><EFBFBD>2Y4<59>jj<6A>V_MT<4D><54>eBY<42>Ai<41><69>y<<3C>K<EFBFBD>@<40><><EFBFBD> ~K <08><><EFBFBD><>_O<5F><4F><EFBFBD>]{<7B>}<7D>H+i<><1B><19><>i<11>"<22>!<21><><EFBFBD>~<7E><><EFBFBD><03>O<EFBFBD><4F>P涁u<E6B681><75>y`<11>4#9<><39>J<EFBFBD><4A><EFBFBD><EFBFBD>ASO[<5B>Fϳl]#T<>'h%`ЇI}*<2A><><EFBFBD>0B<30>wh<77><68>$yhJ<68>:m<>]<5D>T<> J/<2F><><EFBFBD><EFBFBD>h<EFBFBD><68>ڢ<EFBFBD>!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѐ#=T<><54><EFBFBD><EFBFBD>Ł<EFBFBD><C581>T<EFBFBD><54><0B><>suUI<15>Z<EFBFBD>x<EFBFBD>!A]<5D><>}͕<><CD95><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
<EFBFBD>C<EFBFBD>mq<EFBFBD>0n*<2A>}<7D>Q<EFBFBD>x<EFBFBD><16>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD>пxs<>ߣ{ĭ<>)<29>[<5B><>@(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><14>h.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Gl<47>쁠<EFBFBD><EC81A0>tC<74><02>z<1C><>o<><6F>\P<><50>
|
||||||
|
<20><><EFBFBD>c7<63><37><EFBFBD><EFBFBD>V˃o^m<7F><15>R<EFBFBD>q<EFBFBD><71>;<3B><><EFBFBD><EFBFBD>_N<><4E>xs<78><0F>v<EFBFBD><76><EFBFBD>CZZ<5A><1E>q<EFBFBD><71> h<><68>ȷt)x<>M˧¢|<7C>Ҟ<1F>-<2D><><EFBFBD>#<23><>xU<15>7T5T<01><>{<7B> .<2E>&<26><>A<0B>,<2C>sr1\k<><<0B><><EFBFBD>kc<6B><63><EFBFBD>S<EFBFBD>;O/;<3B>T<EFBFBD><54><1D>|W <09><><EFBFBD>
|
||||||
|
<EFBFBD>o<13>|<7C><><<3C>~<7E>ƒhfcI>z<10><><EFBFBD>1<EFBFBD>&<26>N<EFBFBD><4E><EFBFBD>r<EFBFBD><72>c<05><14><><EFBFBD>]<5D>T<EFBFBD><54><0C><>F<EFBFBD><46>~Q<12>V<>rr<72><72><EFBFBD><EFBFBD>#Xr<10>
|
||||||
|
o<EFBFBD><EFBFBD>CEn<45>A\!5/t<>j<EFBFBD>)<29>U<11><><EFBFBD><EFBFBD><EFBFBD>=)<29>m<EFBFBD><6D> d<><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>`푚<>m<1D><<3C>-E76<37>44<34>|<7C>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD>>p<><70>hnVi<56>Y<><59>hXQ<58>l`<60><>0{<7B><>i<EFBFBD><69>Vj<56>+<2B><>^o<><6F>e|<7C>i<EFBFBD><69>7<0F>օj+<2B><>Ut<55>un{<7B><><16><>1<EFBFBD>ܛ<01>Ps<>B<EFBFBD>j^<5E><><EFBFBD><EFBFBD><1B>z;.'<27><>ȉOsЮn<D0AE><6E>zQ7<1A>2[K<><4B><01>;<3B><>G<EFBFBD><47>i<EFBFBD><69>&y~<7E><><EFBFBD><EFBFBD><EFBFBD>m<EFBFBD>3!<21>?C<>JC<06>h<><68><EFBFBD>lZ)Hi<48>ي<EFBFBD>P<EFBFBD><50>>><3E><>g<EFBFBD><67>_<EFBFBD>]]ͻ m<><6D><EFBFBD>(<28>
|
||||||
|
I<EFBFBD>b<EFBFBD>f<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD>w\f<><66>|c<>^ ނ<>J<EFBFBD><4A>O<>^]ܺy<>l<EFBFBD><6C>֎b!vikwk<77>O<EFBFBD>Zh|<7C>-'5[QT<51>E<>2<><32><EFBFBD>f{<7B><0<><30><EFBFBD><EFBFBD>1P<31><50>5{<7B>=4gB<67><42><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD>l}<7D>Q<EFBFBD>%<25><><EFBFBD>i<EFBFBD><0E> .~<7E><><EFBFBD><EFBFBD><EFBFBD>>Z<><19>k<EFBFBD>B<EFBFBD><19><0B>1N<1F><>4<EFBFBD><34>r<EFBFBD><72>t1<74>><3E><>pZ<70>3<EFBFBD><33><EFBFBD><EFBFBD>(<28><>uz<75><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u<1F><><EFBFBD>m<EFBFBD><6D><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD>֟<EFBFBD>=<3D>q<EFBFBD><71><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>X<EFBFBD>k3.ޞS<DE9E><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w&<26><><17><>3<EFBFBD><33>s<01>G@;<3B>?sZ<73><5A>1dQ<64>VL<56>6<EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD>iۧ<69>l+<2B><>Vj<56><6A><03><>-<2D><>=o<>e<EFBFBD><65><EFBFBD><EFBFBD>[<5B>Y<EFBFBD>
|
||||||
|
<EFBFBD><EFBFBD>=oyګ<><DAAB>F<EFBFBD>Zr<>f<><66>><17> P<><02>>_<><5F><EFBFBD>&<><<3C>Y<EFBFBD><59><EFBFBD><EFBFBD>0<EFBFBD>r/<2F><>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD>T]<5D><>_k<5F>H<EFBFBD>)<29><12><><EFBFBD><EFBFBD>}<7D><><EFBFBD><EFBFBD>?<12>y'D.<2E><15>v<EFBFBD><76><EFBFBD><EFBFBD>|c<>&<26>y<EFBFBD>:<3A><><EFBFBD>|<7C><>&<26><><EFBFBD>p<EFBFBD>uR_<52>)㎝<>w%-<2D><><EFBFBD><0B><><EFBFBD><17>Pn<50><6E><EFBFBD><EFBFBD>0<EFBFBD><30>#C<>s<EFBFBD><73><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD>X/n߇<6E>0<EFBFBD><30><EFBFBD><EFBFBD>^<5E>ZL}<7D>~<7E><><EFBFBD><EFBFBD>'<27><>ٚ<05>V<EFBFBD><56><EFBFBD>%<25><>XG<58>c}<7D><18>@-<2D>lh.м6cPA<50><11>J<EFBFBD><4A><02><>e;<3B>M<EFBFBD>D,<2C>!ؙ<><D899><EFBFBD>G <20><><EFBFBD>τKdjV`鷬<><E9B7AC><EFBFBD>|<16>bVȤ*^AG8<47><38>m7<6D><37>~<7E><><EFBFBD>[ߎ<><DF8E>y<><79><EFBFBD>~ڤO<DAA4>c\y
|
||||||
|
<EFBFBD>SX+m<><6D>ЮZ<D0AE>x<EFBFBD><78><EFBFBD>[<5B><>GS<47><53>lu<6C><75>6<EFBFBD>(Sl4<6C><34><EFBFBD>x<EFBFBD><1B>,D<1C>Ky<4B><79>2^<5E><><EFBFBD>6>vی'6<><36>{<7B><>njfw>1<><31>G<1F>><3E> <09>kt<6B>>c<><63>Ս<EFBFBD>^<5E>iy<69><79><EFBFBD><EFBFBD><02><>Kiu<69>J:<3A>$,C%<25><>R<EFBFBD> x<><1E><><<3C><><EFBFBD><EFBFBD>[<5B>r<EFBFBD><05><><14><><0E>?$
|
||||||
|
_L<EFBFBD><EFBFBD><EFBFBD>s?=<3D><>g/<2F><><EFBFBD>Lk<4C><6B><EFBFBD><EFBFBD>^C<03>uK<75><4B>x<EFBFBD><78>6<EFBFBD><36><<3C>s<0E><>6˖@a<15>?s<><73>[<5B>jɨ<6A><C9A8><EFBFBD><EFBFBD>[<5B><><EFBFBD>o<EFBFBD>ye<79><65><EFBFBD>7̞{<7B><>y<EFBFBD><79>{<7B><>n<EFBFBD><6E>r<EFBFBD><06><><EFBFBD><EFBFBD><><7F><EFBFBD>i<EFBFBD><15><><EFBFBD>;<3B>~<7E>?<3F>v<EFBFBD>!<21><>d<EFBFBD><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>&k5<6B><35>2<EFBFBD>;䗬V<E497AC>)e<>f+N<><4E>iJ9E<01>d7<64><37>7/rS7<53>d<>5<EFBFBD><*R0/ <20>C<EFBFBD><43><EFBFBD>
|
||||||
|
<EFBFBD><EFBFBD>6<01><><EFBFBD><EFBFBD>a<EFBFBD>1]<5D>cb1<62><31>U<EFBFBD><55>Ytoy<6F><79> <20>;<3B><<3C><>?<3F><><EFBFBD>gnw<>-<2D><>v<EFBFBD><76>W<EFBFBD>ז<EFBFBD><D796><EFBFBD><D78B>/<2F>n<EFBFBD>H<EFBFBD>~<7E><>}<7D><EFBFBD><7F><EFBFBD>]<5D><>Y<EFBFBD><59><01><><15>-<2D><><EFBFBD>f<>2<EFBFBD><32>-<2D><0C>-N<>K<EFBFBD><07>
|
||||||
|
<0B><>H<EFBFBD>N<EFBFBD><10>0nʕ{<7B>_<EFBFBD>+u<>8!9j<39><6A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H^S*RF<52><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD>k<EFBFBD><6B><EFBFBD>9T0!5'<27><>9B<39><42>b<EFBFBD><62><EFBFBD><03><>+<2B>хAk<41><6B>~<7E>7q<0C>hֶ<68>e<0E><><EFBFBD>L54<35>hͽ8vA<76>>ܳB<DCB3><42><EFBFBD>2kڊ(<28>|{<7B>yz<79><7A>vhB<68><42>!<21><>_=<3D><>#<23><><EFBFBD>z<EFBFBD><7A><EFBFBD>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD>/<2F><>uꆹ[<5B>~<7E>O<EFBFBD><4F>7<EFBFBD>z߈I<DF88><49><EFBFBD>Ӗl꺡<6C>U=<3D><>4<>O\=tŢM<C5A2>
|
||||||
|
<EFBFBD>VV<EFBFBD>|<7C>ޭtQrJ<72><4A>k/<2F><><EFBFBD><06>Cֳ<>0<EFBFBD>"<22><><EFBFBD>5&<26>-<2D>S_<53><5F><EFBFBD><EFBFBD>덴
|
||||||
|
n<><6E>v<EFBFBD>ĉ<EFBFBD>WӇWO<57><4F>!<<3C>o<06>U<EFBFBD>w<1F>Z<D7BA><5A> v79<37>R<EFBFBD>,xqyAn<0B>n<EFBFBD>(<28>$%x<><78><EFBFBD><EFBFBD>WX<57><58>;|xVO<>B<07>Ä<EFBFBD><0E>h<>%<25><><EFBFBD>o<>$0i<30>1'<27><>bƏ<62><C68F><18><>c<EFBFBD><63>)S<>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><67><EFBFBD>-}<7D><><EFBFBD>D<>5hu<68>,<2C>b<EFBFBD>Q<EFBFBD>)<05>x`BD3 Y<><59>+dP<64><50>n<EFBFBD><6E>M<EFBFBD><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ژ
|
||||||
|
SʊXc<EFBFBD>(<28><0F>g<EFBFBD><15>s-<2D><>Qegˋcxf<66>|h<><68>0<EFBFBD><30><EFBFBD>.<1A>f/<2F>-<0C>WC<57><43>̦<><CCA6><EFBFBD>9<13><><EFBFBD><EFBFBD><EFBFBD><19>o(n<><0F><><EFBFBD>o<EFBFBD><6F>af<61>b <09><1E>"zd<7A>؛<EFBFBD>9<EFBFBD>s<EFBFBD><73>S<EFBFBD><53><EFBFBD><EFBFBD>/<2F>n><3E>v6<76><36><EFBFBD><EFBFBD>7<08>U<8<38><7F><EFBFBD>_<EFBFBD>7O<37>2K<4B><7F>~q<><71><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>F<EFBFBD>4@<>w<EFBFBD>q<EFBFBD>0<EFBFBD>| 2<16>!"<22>JZ<4A><5A>J۹f<DBB9> x<><78><EFBFBD>:<3A><>D<EFBFBD>"<22>ECeyC<79><03>D~~";+<2B>4֮,<2C>,<2C><>TYY4?<1A>OE<4F><45>u<EFBFBD><75><EFBFBD><EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD>d<EFBFBD>E2<45><32><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>!<21>P<50>THz<48><7A>ة<EFBFBD><D8A9><EFBFBD>[2bS<62><0E>p<EFBFBD>W<08>%<0F>d<EFBFBD><64><EFBFBD>h }<7D>%<25>l<EFBFBD><6C><EFBFBD><EFBFBD>t<EFBFBD><74>g<EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><7F><EFBFBD><EFBFBD>^<5E>|h핝o<ED959D><6F><EFBFBD>UF<><46><EFBFBD>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD>-t<><74>?cß<C39F>7<EFBFBD>W<EFBFBD>G<EFBFBD>O?J۽<4A>>m<><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD>܋<EFBFBD><EFBFBD>ϻ"<22>+<2B><>I^ <20>ȩӑ<C8A9>{<7B>x<EFBFBD>7W(<1D><>:v<0C>{#77<37><37><EFBFBD><02><03>XV|hJ<68><4A><EFBFBD>Jd1<64>ee{<7B><>C<EFBFBD>L^<5E><>&(<28>7S2z<>$<24><>V
|
||||||
|
a@t:<3A>{<15>cQ\<5C><>!<12>x<EFBFBD>T<EFBFBD>sQti<74><69>J<EFBFBD>u<EFBFBD>J<EFBFBD><<3C><>]<5D><><EFBFBD><EFBFBD>`<60><><EFBFBD><EFBFBD><EFBFBD>%<25>?<3F><>l<><07>fj<66>hθ<68><0F><><EFBFBD><EFBFBD>+<2B><><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC>x<EFBFBD><78>D<EFBFBD>w<><77><17><><EFBFBD><EFBFBD>%<25><><EFBFBD>{<7B><>ϨX<CFA8><58>߮<EFBFBD><DFAE><EFBFBD><1C>Z{ <13>fE<66>9ڕ<39>s<1A><><EFBFBD>r<EFBFBD>w<EFBFBD><77>dA*٘<><06><><EFBFBD><EFBFBD> s<>!C(U(,rX<72>%<25>l><3E><><1D><><05>Q<1F>%0<><30><1F>=<3D>Z=V<>L<EFBFBD><4C><EFBFBD>5 <09> i<>U(i<>&<26>,(<28> $\J|<7C>#<19>B1i<31><14><><EFBFBD><1F><13>^<5E><><EFBFBD>{<7B><>-<2D><>H<EFBFBD><48><0B>%<25><>Uzz|<7C>-<2D><>x<EFBFBD>K<>W'<27><04>=?<1B><>@<40>YXd<58><64>K.<2E> N<><4E><EFBFBD>?<3F>v}퇣_ w<1C><><1A><07><>x_q<5F>0<><30> ɠ`<60><>Y<EFBFBD><59>(<28><1F><><EFBFBD>F<EFBFBD><46>ڜ<0B><>u<EFBFBD>ڮC<DAAE><43><EFBFBD><EFBFBD><0E>kڷ<6B><DAB7>M|<7C>k<EFBFBD>CW8<57>ֽ<EFBFBD>q<EFBFBD>u<08><>F<EFBFBD>D|d<><64><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>%8<><16>9<EFBFBD><39>y͂<79><16><>q[<0E><><EFBFBD>p<> Z<>'4<>3<17><>6"<22>LqtLq<4C><15><><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD><54><EFBFBD>Exy<78><79>#<23>5ϟ}٩<>m<EFBFBD>_<EFBFBD><5F><EFBFBD>V<EFBFBD>|<7C>*,<2C><><EFBFBD><EFBFBD>b<EFBFBD><62><EFBFBD>gOܷ<4F>,<2C>m<EFBFBD>˄<EFBFBD>
|
||||||
|
<EFBFBD>=Je}<7D><><EFBFBD>8<EFBFBD><38><EFBFBD>J{-<2D>%KhW<68><57><12>3<EFBFBD>%<25>-<2D><><EFBFBD>#<23>in<13><>ॠ<EFBFBD>T<EFBFBD><07>b8ffl<04>W<EFBFBD>%<25>͍<EFBFBD><EFBFBD><D78D><EFBFBD><EFBFBD>ݸO<DDB8><4F>E<1F><>,J<03><>c<EFBFBD>R><3E><>8<EFBFBD> o<><6F>*^<5E><>Z<EFBFBD><5A>R&<11>`M<04><><EFBFBD><EFBFBD><EFBFBD>\o<><6F>ތ<EFBFBD>hf<68>ϖ<>AL<41><4C><EFBFBD><EFBFBD>A<EFBFBD><41>)<29> <03>B<EFBFBD>Z<1C>z
|
||||||
|
<EFBFBD><EFBFBD>8mӅW<EFBFBD> <20><>֧<EFBFBD>,韅!i<>X}<7D>Q<EFBFBD>è@W <09><>KA<4B>ƴ<1C><><02>q<EFBFBD><16><><EFBFBD><EFBFBD><EFBFBD>5n:<3A>Es<45>M^.ӵ<><D3B5><EFBFBD>(<28>mr<6D>` %<25> B<05>Sp
|
||||||
|
<EFBFBD>%2<0B>5<EFBFBD><35><EFBFBD>Ǵ<47>2<EFBFBD>@<40>`<05>h
|
||||||
|
<EFBFBD>}_<05><11>9<EFBFBD>7G<37><47><EFBFBD>Ŷ<59><CC82><EFBFBD>(<28><>tX<05><><EFBFBD><EFBFBD>9<EFBFBD>b~<7E>0<EFBFBD>K<EFBFBD>Z<EFBFBD>A<EFBFBD>t<EFBFBD><74>_<EFBFBD><5F><EFBFBD>ŴM<C5B4>"V<>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD>] <09>i<EFBFBD><69>HN<48><4E><EFBFBD>?hٓ4<D993>y<EFBFBD><79><EFBFBD>`A<><41>V<EFBFBD>[<5B><>C<EFBFBD> <20>z<EFBFBD><7A> <20><>(
|
||||||
|
<EFBFBD>m<EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<>@o<>}NlY:<3A><>=<3D>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD>a<>½<C2BD><7F>:<3A><05><><EFBFBD>o<EFBFBD><6F><EFBFBD><EFBFBD>ݽ_<DDBD>-<2D><><EFBFBD>G<EFBFBD><47>X<EFBFBD><58><EFBFBD><EFBFBD>nߚ<><DF9A><EFBFBD><EFBFBD><7F>Z<EFBFBD>oް<6F>VQ?<15><13><><1D><1B>8<>KJ<4B><4A>Z<EFBFBD><5A>bzM<7A><4D>Ȧ#B`<60><16>٥<EFBFBD>><3E><><EFBFBD><EFBFBD><0B>(TQ<54><17><>Ƀd<C983><64>% <20>Dp<44><70><1D>f<EFBFBD>I^<5E><>8<EFBFBD>^<5E>D(<28>[J<>qF<71><46><EFBFBD><EFBFBD>RV<52>)<29>c=(_<><5F>aoqÂ<71><1B><><EFBFBD>I<EFBFBD><49><EFBFBD>><3E><>7
|
||||||
|
<0B>7<EFBFBD>Ԁ<EFBFBD>5Vvٖ<76><D996>|<7C><><EFBFBD><EFBFBD>k7<1D><><EFBFBD><EFBFBD>
|
||||||
|
<EFBFBD><16>t<EFBFBD><74>{&><3E><>}<7D>KS/<2F><><EFBFBD><1E><EFBFBD>h<EFBFBD>ƿ<EFBFBD><EFBFBD><7F><EFBFBD><EFBFBD>=<3D><1D>Ko^5k<35>0<><30><EFBFBD>3<EFBFBD><33><EFBFBD>:U<><55><EFBFBD>ܹ<06><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g-<2D>O,<2C>SE<>U<EFBFBD><55>?<15>:<3A>Ԧ<04><11>,<2C>GMͱJӠ;<3B>?VB5*[<5B>S<16>7<EFBFBD><37>ŔV<>S<EFBFBD><53>%.7<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<02><><EFBFBD><EFBFBD><1C><>U<EFBFBD><55>g<1A>MQ<0B>2b<32><62><EFBFBD><EFBFBD>l^f<><66><EFBFBD><EFBFBD>?%j˨=c<><08><><EFBFBD>D<EFBFBD><44>A3<41>_<EFBFBD><5F>a9/Tn<54>Kz<4B><7A>^<5E>tg7zl<7A><6C>A<EFBFBD>_<EFBFBD>'<27><>ګ#f<>Tkk<6B>-,<2C><>x
|
||||||
|
.ܪ%<25><><EFBFBD><15><><EFBFBD>S<EFBFBD>><<08><>l<EFBFBD>Κseze<14><><EFBFBD>v<><76><1F>U2<55><32>Q<EFBFBD>O<EFBFBD><4F>B<EFBFBD><42>2藗W <20><>v<EFBFBD><76>M<EFBFBD><1F>0<EFBFBD>M <20><>W<EFBFBD>)"UB^<5E><02><><EFBFBD>p<EFBFBD>M)<29><>u{<7B>6 d@<fq<66><71><EFBFBD>:<3A><><EFBFBD><EFBFBD><08><><EFBFBD>|><3E>b|k-<2D><EFBFBD>N<EFBFBD>(<28><><EFBFBD>$(M<><4D><1C><1F><>_
|
||||||
|
<03><>5J<35>c <20>s<1E>,<2C>jt;<3B>
|
||||||
|
<EFBFBD>\<5C><><EFBFBD>R<EFBFBD>,fR<66>Z<7F><5A><EFBFBD>W_Os<4F><73>t<EFBFBD><74>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57><EFBFBD>9><3E>U<EFBFBD>,5<><35><EFBFBD><EFBFBD>ν<EFBFBD><CEBD><EFBFBD><0E>ʴޭ<CAB4><DEAD> ڌv<DA8C>>C<0C><><EFBFBD>A<EFBFBD>}<7D><15><><EFBFBD>d<19><><EFBFBD>~<7E>o <20><>><3E><><EFBFBD>m_<6D>U<EFBFBD>yr<>3<EFBFBD>8<EFBFBD><38>G<EFBFBD><47>K<EFBFBD>AHd<48>b<EFBFBD>5
|
||||||
|
<EFBFBD>ڃ<EFBFBD>̎az<EFBFBD>1<EFBFBD>b쑌<15><><EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<>5$
|
||||||
|
<EFBFBD><EFBFBD>o<EFBFBD><10>xb<78>-s<1E><>o<EFBFBD><6F><EFBFBD>tUZ<55><5A><EFBFBD><7F>m<EFBFBD><6D><EFBFBD>i<EFBFBD>K =<3D><>^<11><>H<EFBFBD><48><EFBFBD>TM<54><4D>pw<70>*J<>7<EFBFBD>XN3<4E>X$g<><17><10>"yC4<12>4<EFBFBD><02>"Q<17>$fe<66>D%<25>)<29><><EFBFBD>Qo<51><6F><EFBFBD>*<2A>\<5C>f<EFBFBD>D<0C>DMzc<16><><EFBFBD><EFBFBD><EFBFBD><05><><EFBFBD> <20><><EFBFBD>R<11>B<EFBFBD><42>1b<31><62>ży<C5BC><79><EFBFBD>|<7C><>_<EFBFBD>?<3F><>|<7C><><EFBFBD>eg<65>n<EFBFBD><1E><><EFBFBD>k:<3A>&<26>/<2F><>ﭟѿ<EFAD9F>R<EFBFBD><52>-<1F><><EFBFBD><EFBFBD>~}<7D>{<7B><><EFBFBD><EFBFBD><EFBFBD>Gk<47>I=.<2E><><EFBFBD>B/<>w<>1<EFBFBD><06> qYE<59> <20>ق<>oh<><68>E9<45>$.Ň0<C587><30><EFBFBD><19><><EFBFBD>*<2A> . 7<><37>ss<73>M<EFBFBD>;<3B>n<EFBFBD>/ <09><>ؽz|0<><30>
|
||||||
|
<1B><>|<7C><>C^C<>K<EFBFBD>|Sw<53>E<16><>+l<>|K<>R<EFBFBD>ͅ<><CD85>E@l b<0E><><EFBFBD>q<EFBFBD>f<EFBFBD><04><>)<29>oiE\<5C><><EFBFBD><EFBFBD>~<7E>[<5B><><EFBFBD><EFBFBD>z[g<><67><EFBFBD><EFBFBD><EFBFBD>--WG<>C1u!_4|<%<14> M)<1F><><EFBFBD>Y9<59>+&<26>٘<06><>'<27>w<EFBFBD><77><EFBFBD><<3C><><EFBFBD>`<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><03>*zn{q<>@<40><><7F>
|
||||||
|
/<2F><1E><>T*}<7D>%́<><17>
|
||||||
|
;<3B>Џ|<7C><>:⣸<>Cr<04><><EFBFBD>CuD<1D><>o)r<><72>a)<29>X<EFBFBD>py<70><79>I<EFBFBD>)<29><><10>_=@<40><><18>V<EFBFBD>ȫ<EFBFBD>ȹ<>Uí<55>*+i<7F><69>Y<EFBFBD><59>KRf<52>Q<EFBFBD><51><EFBFBD><EFBFBD>f<EFBFBD><66>`<60>b<EFBFBD><62><EFBFBD><EFBFBD>w<>W=|<7C>]g<>y螙<79><<3C><><EFBFBD>;wm<19><>/<10>\?kV<6B><1B><>-<2D><><EFBFBD>|<7C><>o<EFBFBD><6F>nIjs<73><7F>~<7E><><EFBFBD><15>vj\<5C><>l<7F><6C><EFBFBD>c<03><>+m;ll<>Q<0E><>1<EFBFBD><31>[<5B><><EFBFBD>y<EFBFBD>oN<6F>]<5D>}<7D><>SO<53><4F><EFBFBD>c<EFBFBD>̚:i<>a<><61><EFBFBD>~<7E><>kO<6B>|_<>g<EFBFBD><67><EFBFBD>+<1E><><EFBFBD><18><><EFBFBD>HOq<4F><71><EFBFBD><EFBFBD>3<15>)UQ}g!<21>*<2A><>4;<3B>
|
||||||
|
<0B><01>h<EFBFBD><68>#8
|
||||||
|
#8
|
||||||
|
/<10><>a<EFBFBD>Q<EFBFBD>0Ө<30><D3A8>!{"<22>"<22>Q̵cs;6<>/P<><50><EFBFBD><EFBFBD><1F>^L<>
|
||||||
|
X֥<02><>t<EFBFBD>(<28><><EFBFBD> <20>bv<0B><14>7<EFBFBD>3~<7E>(o<><6F><EFBFBD><7F><EFBFBD>$<<3C><><EFBFBD>x
|
||||||
|
XО4<D09E>î<EFBFBD><C3AE>&8 <09>4<10><><EFBFBD>2<EFBFBD><32>T,=<3D><><EFBFBD><EFBFBD><EFBFBD><13><EFBFBD>KG<4B><47><EFBFBD><EFBFBD><EFBFBD>&:<3A><><EFBFBD>:3M<4D><7F>z<EFBFBD><7A><EFBFBD><EFBFBD>7<EFBFBD><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B\C<>F<1F>5t<35><74><EFBFBD><EFBFBD>G}<7D>Ԩ=<3D><><\<0C>BҁT<D281>#Zlx<6C>^<5E><>)<1D>OGة<47>)gc-<2D><>dq<0E><17><14>٢<EFBFBD>j<EFBFBD>?<3F><>H<EFBFBD><48><EFBFBD><EFBFBD><12><>p<EFBFBD>b<0F>O<EFBFBD>C<1D>S<EFBFBD>'EE<45>1UT$<24>1@<07><>Ѽ<EFBFBD>hic*<2A><><EFBFBD><7F><EFBFBD>`qu$<24>6<EFBFBD>رcj<63><1A><>$<24><03><><EFBFBD>`<60><>Ԝ/o<><17>-<2D><>s<18>ޕ<EFBFBD><DE95><EFBFBD>N<EFBFBD><4E><EFBFBD>
|
||||||
|
m<EFBFBD><EFBFBD>DK/<2F>GW2<>L<EFBFBD>
|
||||||
|
8<EFBFBD><EFBFBD><EFBFBD>]u<><75>t<EFBFBD><74>X<EFBFBD><58><EFBFBD>K<EFBFBD><4B>?<3F>*<2A><>qݳt<11>?y<><79>5<EFBFBD><35><EFBFBD>L<EFBFBD>q<EFBFBD><71><EFBFBD><EFBFBD>w͚<77>ٷ<EFBFBD><D9B7>{<7B>M9k<39><6B>I<EFBFBD><49>o_J<5F><4A>*<2A>0wӸÇ<D3B8>s<EFBFBD>U<EFBFBD>\<5C><><EFBFBD>õNk<4E><6B>+SO<01>;<3B>l<0C><>|<7C>{D<0E>&<26><>{R<><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f!s<><73>;<08><19>{<7B><><EFBFBD>->o<02>4M<34>Ӧ<EFBFBD><D3A6><EFBFBD>v<EFBFBD>iX<>$<24><><EFBFBD><EFBFBD>b<EFBFBD>݅<EFBFBD><DD85>.Ľ.LMs<4D><73> <09><><EFBFBD>m2<6D><32><EFBFBD>lL<6C><4C><EFBFBD><EFBFBD><08>fs<>d<EFBFBD> <20>apk<70><6B><EFBFBD>c<EFBFBD>;<3B>?<3F>m<EFBFBD><6D>De<44><65>N<EFBFBD><4E><EFBFBD><1F><>5R
|
||||||
|
J<EFBFBD><1C><>R<EFBFBD><52>H5<> ,S<>v<EFBFBD>x<EFBFBD><78>w<16><>o<EFBFBD>@sNQ<EF99BF><51>U<EFBFBD><<3C>|<7C><>[<17><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6<EFBFBD><36>Mxl<78><6C>eobf<62><66><1D>W<EFBFBD>?ٷd4}+}t<><74><EFBFBD><EFBFBD>FM<46><4D>^<5E>z<EFBFBD>A^ʹ<>V<EFBFBD><56><EFBFBD>fj3Uy1<79>i<EFBFBD><69>L;<3B>R1<52>D<EFBFBD>b<EFBFBD>X<EFBFBD>k<>b<EFBFBD>_<EFBFBD>U<EFBFBD><55><16><><EFBFBD>3<EFBFBD><33><16>EM<45>[/)fz}<7D>_(f*<2A><>_<EFBFBD><5F><EFBFBD>ǢX<C7A2>4Ò<>Q<EFBFBD>KH<4B>d<EFBFBD>ڬ<EFBFBD><DAAC>S<EFBFBD><53><EFBFBD>n<EFBFBD><6E><EFBFBD>s<EFBFBD><73>e{V<>0<EFBFBD>g<14>t<EFBFBD><74>f<EFBFBD> & <09>i<EFBFBD><69>N:<17>T_<54>/IͿ<><14>滛uӌ<75><D38C>ڹ
|
||||||
|
Q<EFBFBD><EFBFBD>
|
||||||
|
]\<5C>:<11><><EFBFBD><EFBFBD><EFBFBD> <20><1F>Ҷ<EFBFBD><D2B6><EFBFBD>><3E>C<EFBFBD>D<EFBFBD>?%<1A>MT<>%<25>ب<EFBFBD><D8A8>fI<66>QD<51><44>9<EFBFBD><39>v<>t<EFBFBD>XIo<49><6F>ΨC<CEA8>L<EFBFBD><4C>ch%<25><>J<EFBFBD><4A>)IED<45><44><EFBFBD><EFBFBD>ӛG<D39B><47> <09>E<EFBFBD>`x<>#nE<6E><45>H}ޭ<>+[<5B><><EFBFBD><EFBFBD>`<60><>Y<EFBFBD>pjv<6A>&)<29>W<EFBFBD><57>O<EFBFBD>=<3D>b<EFBFBD>2<EFBFBD>;<3B>G<EFBFBD>x<EFBFBD>,<1B>Ũ<1D>@&<26>j=x<>j<>e<EFBFBD>*<2A><>X<>&z<>?<3F><><EFBFBD>3;<3B><><EFBFBD>^W<><57>*<2A><>A_c*<18><><EFBFBD>SY̡6<CCA1>|ԗ<><D497>F<EFBFBD><46><EFBFBD><EFBFBD><EFBFBD>P<12><><EFBFBD> ?<3F>B<EFBFBD>s̶<73>$<03>L0<4C><30>U<EFBFBD>|<7C>U<EFBFBD>j<EFBFBD><EFBFBD><7F>T<EFBFBD>X<1D><><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD>W<EFBFBD>*u<><75>ϳwk<77><6B>s{wyz<79>>F} @<40><><EFBFBD><EFBFBD>?_<><5F><07><>9-ne<07><><EFBFBD>'<0F>@<40>X<EFBFBD><58>ُ<EFBFBD><D98F>np<12>fR<66><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>V<EFBFBD><56>? <05><>
|
||||||
|
\<17>
|
||||||
|
<11>c<EFBFBD>.P<>.<2E><>~<7E><><EFBFBD><EFBFBD>}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B>3<EFBFBD>D55<35>Bh
|
||||||
|
<EFBFBD>l<EFBFBD>U<EFBFBD>~x<>3<><33><13>|<7C><><EFBFBD>GK<47><4B>1<EFBFBD>/<2F><><0E><>8<EFBFBD><38>+7aJ<61>~Ã<1B><>m`<60><>Q<EFBFBD>_TI<54><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C>V+ .J<>T<EFBFBD>p%<25>dA<64><01>. <09>E]<5D>R(o<>)_<><5F><EFBFBD> #m
|
||||||
|
|ͥIZj<5A>eϜ<>.ض<0B>O<EFBFBD><4F>b<EFBFBD>(<17><>
|
||||||
|
<EFBFBD><06><>9<EFBFBD>ѥbLsWx<57>hr<68><72>b<EFBFBD><62><EFBFBD>@<<01>N<EFBFBD>|OK<4F><4B><0E>]><3E>P<EFBFBD><50><EFBFBD><EFBFBD>?$<24><>/*<2A><>j<EFBFBD>$<0E><><EFBFBD>y<EFBFBD>f<><66>ܢD<7F>[<5B>#<23>6<EFBFBD><36>f<EFBFBD><66><EFBFBD>t<08>M<EFBFBD><0E><>o<>O
|
||||||
|
Y<1C><>@ <20>;l<>i<EFBFBD><10>4<EFBFBD>`l5o8x<38>2<EFBFBD>x#<23><>܍<EFBFBD><DC8D>K0<4B>}<7D><><EFBFBD><EFBFBD><EFBFBD>\<><7F><11>G[ig<69><67><EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD>kՊ<6B>SR=9<>Q\!<19><>=<0B>n<EFBFBD>ܒsN+<2B>T8w@ɮ<>=<3D><>]xVQ<56><51><EFBFBD><EFBFBD>p<EFBFBD>Hd<48>o<EFBFBD>h<EFBFBD>דV<D793>c<EFBFBD>e<EFBFBD><65>on]<5D>T!<21><17>j<EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<7B><>事<EFBFBD><E4BA8B><EFBFBD>'<27>W3<57><33>k3k<> <09>k}h><1D>s
|
||||||
|
=<3D>l<EFBFBD>%x<><78><19><1D><><EFBFBD>Ҏ4e<34>C<EFBFBD>5[<16>P,dI<64>sx.<2E><>ޚ<EFBFBD>t<EFBFBD>>MG\<5C><><EFBFBD><EFBFBD><EFBFBD>F
|
||||||
1
images/ASX_Delete.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 19" enable-background="new 0 0 19 19"><style type="text/css">.icon-asx-blue{fill:#0081E4;}</style><path class="icon-asx-blue" d="M10.207 9.5l8.647 8.646-.707.707-8.647-8.646-8.646 8.647-.707-.707 8.646-8.647-8.647-8.646.707-.707 8.647 8.646 8.646-8.646.707.707-8.646 8.646z"/></svg>
|
||||||
|
After Width: | Height: | Size: 338 B |
45
images/ASX_More.svg
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 19 19" style="enable-background:new 0 0 19 19;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.icon_x002D_asx_x002D_blue{fill:#0081E4;}
|
||||||
|
.icon_x002D_canvas_x002D_transparent{opacity:0;fill:#F6F6F6;fill-opacity:0;}
|
||||||
|
</style>
|
||||||
|
<path id="canvas" class="icon_x002D_canvas_x002D_transparent" d="M19,0v19H0V0H19z"/>
|
||||||
|
<path class="icon_x002D_asx_x002D_blue" d="M6.538,9.666c0,0.701-0.568,1.269-1.269,1.269S4,10.367,4,9.666
|
||||||
|
c0-0.701,0.568-1.269,1.269-1.269S6.538,8.965,6.538,9.666z M9.5,8.397C8.799,8.379,8.216,8.932,8.198,9.633
|
||||||
|
s0.535,1.284,1.236,1.302c0.022,0.001,0.044,0.001,0.066,0c0.701-0.018,1.254-0.6,1.236-1.301C10.718,8.958,10.175,8.415,9.5,8.397z
|
||||||
|
M13.731,8.397c-0.701,0-1.269,0.568-1.269,1.269c0,0.701,0.568,1.269,1.269,1.269S15,10.367,15,9.666
|
||||||
|
C15,8.965,14.432,8.397,13.731,8.397z"/>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
8
images/ASX_QueryBuilder.svg
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 19" enable-background="new 0 0 19 19">
|
||||||
|
<style type="text/css">
|
||||||
|
.icon-asx-blue {
|
||||||
|
fill:#0081E4;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<path class="icon-asx-blue" d="M19 0h-16v4h-3v15h16v-4h3v-15zm-15 7h11v7h-11v-7zm11 11h-14v-11h2v8h12v3zm3-4h-2v-10h-12v-1h14v11zm-5-4v1h-7v-1h7z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 356 B |
1
images/ASX_Refresh.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 19" enable-background="new 0 0 19 19"><style type="text/css">.icon-asx-blue{fill:#0081E4;}</style><path class="icon-asx-blue" d="M18.482 9.331c0 4.953-4.029 8.982-8.982 8.982-4.953 0-8.982-4.029-8.982-8.982 0-3.67 2.277-6.977 5.631-8.331h-5.149v-1h7v7h-1v-5.233c-3.237 1.071-5.482 4.132-5.482 7.564 0 4.401 3.581 7.982 7.982 7.982s7.982-3.581 7.982-7.982c0-2.535-1.164-4.862-3.192-6.386l.6-.8c2.283 1.714 3.592 4.334 3.592 7.186z"/></svg>
|
||||||
|
After Width: | Height: | Size: 494 B |
1
images/ASX_Remove.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 19" enable-background="new 0 0 19 19"><style type="text/css">.icon-asx-blue{fill:#0081E4;}</style><path class="icon-asx-blue" d="M19 10h-19v-1h19v1z"/></svg>
|
||||||
|
After Width: | Height: | Size: 213 B |
3
images/Add-disabled.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M15.5 8.5H8.5V15.5H7.5V8.5H0.5V7.5H7.5V0.5H8.4V7.5H15.4V8.5H15.5Z" fill="#CCCCCC"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 196 B |
8
images/Add-property.svg
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 21.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
width="16px" height="16px" viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
|
||||||
|
<g>
|
||||||
|
<path d="M16,7.5v1H8.5V16h-1V8.5H0v-1h7.5V0h1v7.5H16z" fill="#393939"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 470 B |
3
images/Add.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M15.5 8.5H8.5V15.5H7.5V8.5H0.5V7.5H7.5V0.5H8.4V7.5H15.4V8.5H15.5Z" fill="#0078D4"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 196 B |
12
images/AddCollection-1.svg
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0)">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.22 13.0167V13.8367H12.5667V16.3967H13.3867V13.8367H15.7333V12.91H13.3867V10.35H12.5667V13.0167H10.22ZM14 10.0312C14.1354 10.0583 14.2642 10.089 14.3867 10.1232C14.4291 10.1351 14.4708 10.1474 14.5117 10.1602C14.6706 10.2096 14.8333 10.2734 15 10.3516V6.28906L13 4.28906V0H1V14H3V16H9.05469C8.90885 15.8542 8.77734 15.6966 8.66016 15.5273C8.54297 15.3581 8.4401 15.1823 8.35156 15H4V3H10V7H14V10.0312ZM11.1333 6.0224H13.4224L11.1333 3.73333V6.0224ZM10.7776 2.06667L12.0667 3.35573V1.06667L2.06667 1.06667L2.06667 13.0667H3.06667V2.06667H10.7776Z" fill="#393939"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.66016 15.5273C8.54297 15.3581 8.4401 15.1823 8.35156 15H4V3H10V7H14V10.0312C14.1823 10.0677 14.3529 10.1107 14.5117 10.1602C14.6706 10.2096 14.8333 10.2734 15 10.3516V6.28906L13 4.28906V0H1V14H3V16H9.05469C8.90885 15.8542 8.77734 15.6966 8.66016 15.5273ZM11.1333 3.73333L13.4224 6.0224H11.1333V3.73333ZM3.06667 2.06667V13.0667H2.06667V1.06667H12.0667V3.35573L10.7776 2.06667H3.06667Z" fill="#CCCCCC"/>
|
||||||
|
<path d="M12.5667 10.35V13.0167H10.22V13.8367H12.5667V16.3967H13.3867V13.8367H15.7333V12.91H13.3867V10.35H12.5667Z" fill="#CCCCCC"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0">
|
||||||
|
<rect width="16" height="16" fill="white"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
12
images/AddCollection.svg
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0)">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.22 13.0167V13.8367H12.5667V16.3967H13.3867V13.8367H15.7333V12.91H13.3867V10.35H12.5667V13.0167H10.22ZM14 10.0312C14.1354 10.0583 14.2642 10.089 14.3867 10.1232C14.4291 10.1351 14.4708 10.1474 14.5117 10.1602C14.6706 10.2096 14.8333 10.2734 15 10.3516V6.28906L13 4.28906V0H1V14H3V16H9.05469C8.90885 15.8542 8.77734 15.6966 8.66016 15.5273C8.54297 15.3581 8.4401 15.1823 8.35156 15H4V3H10V7H14V10.0312ZM11.1333 6.0224H13.4224L11.1333 3.73333V6.0224ZM10.7776 2.06667L12.0667 3.35573V1.06667L2.06667 1.06667L2.06667 13.0667H3.06667V2.06667H10.7776Z" fill="#393939"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.66016 15.5273C8.54297 15.3581 8.4401 15.1823 8.35156 15H4V3H10V7H14V10.0312C14.1823 10.0677 14.3529 10.1107 14.5117 10.1602C14.6706 10.2096 14.8333 10.2734 15 10.3516V6.28906L13 4.28906V0H1V14H3V16H9.05469C8.90885 15.8542 8.77734 15.6966 8.66016 15.5273ZM11.1333 3.73333L13.4224 6.0224H11.1333V3.73333ZM3.06667 2.06667V13.0667H2.06667V1.06667H12.0667V3.35573L10.7776 2.06667H3.06667Z" fill="#0078D4"/>
|
||||||
|
<path d="M12.5667 10.35V13.0167H10.22V13.8367H12.5667V16.3967H13.3867V13.8367H15.7333V12.91H13.3867V10.35H12.5667Z" fill="#0078D4"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0">
|
||||||
|
<rect width="16" height="16" fill="white"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
4
images/AddDatabase-disabled.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg width="13" height="16" viewBox="0 0 13 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M5.33333 13.8667C5.57576 13.8667 5.82323 13.8583 6.07576 13.8417C6.20202 14.2083 6.35859 14.55 6.54545 14.8667C6.34343 14.8889 6.14141 14.9056 5.93939 14.9167C5.73737 14.9278 5.53535 14.9333 5.33333 14.9333C4.65657 14.9333 3.99495 14.8722 3.34848 14.75C3.16162 14.7167 2.9495 14.6681 2.71212 14.6042C2.47475 14.5403 2.23232 14.4597 1.98485 14.3625C1.73737 14.2653 1.49495 14.1514 1.25758 14.0208C1.0202 13.8903 0.808081 13.7389 0.621212 13.5667C0.434344 13.3944 0.284091 13.2014 0.170455 12.9875C0.056818 12.7736 0 12.5333 0 12.2667V2.66667C0 2.41667 0.0492425 2.19306 0.147728 1.99583C0.246212 1.79861 0.373737 1.61667 0.530303 1.45C0.70202 1.26111 0.907828 1.09444 1.14773 0.95C1.38763 0.805556 1.64646 0.679167 1.92424 0.570833C2.20202 0.4625 2.49242 0.372222 2.79545 0.3C3.09848 0.227777 3.39899 0.169444 3.69697 0.125C3.99495 0.0805552 4.28283 0.048611 4.56061 0.0291664C4.83838 0.00972231 5.09596 0 5.33333 0C5.69697 0 6.09975 0.0222219 6.54167 0.0666664C6.98359 0.111111 7.4255 0.1875 7.86742 0.295833C8.30934 0.404167 8.7298 0.552778 9.12879 0.741667C9.52778 0.930555 9.86364 1.16667 10.1364 1.45C10.2929 1.61111 10.4205 1.79444 10.5189 2C10.6174 2.20556 10.6667 2.42778 10.6667 2.66667V7.43333H9.69697V4.25C9.39394 4.45556 9.06187 4.62778 8.70076 4.76667C8.33965 4.90556 7.96843 5.01667 7.58712 5.1C7.20581 5.18333 6.82197 5.24306 6.43561 5.27917C6.04924 5.31528 5.68182 5.33333 5.33333 5.33333C4.98485 5.33333 4.61742 5.31528 4.23106 5.27917C3.8447 5.24306 3.4596 5.18333 3.07576 5.1C2.69192 5.01667 2.32071 4.90556 1.96212 4.76667C1.60354 4.62778 1.27273 4.45556 0.969697 4.25V12.2667C0.969697 12.3778 1.00631 12.4806 1.07955 12.575C1.15278 12.6694 1.22475 12.7472 1.29545 12.8083C1.53283 13.0139 1.82197 13.1847 2.16288 13.3208C2.50379 13.4569 2.86111 13.5653 3.23485 13.6458C3.60859 13.7264 3.9798 13.7833 4.34848 13.8167C4.71717 13.85 5.04545 13.8667 5.33333 13.8667ZM5.33333 1.06667C5.07576 1.06667 4.80682 1.07639 4.52652 1.09583C4.24621 1.11528 3.96465 1.14861 3.68182 1.19583C3.39899 1.24306 3.12121 1.30417 2.84848 1.37917C2.57576 1.45417 2.32071 1.54444 2.08333 1.65C2.00758 1.68333 1.90657 1.73472 1.7803 1.80417C1.65404 1.87361 1.5303 1.95278 1.40909 2.04167C1.28788 2.13056 1.18434 2.22778 1.09848 2.33333C1.01263 2.43889 0.969697 2.55 0.969697 2.66667C0.969697 2.71111 0.977272 2.75278 0.992424 2.79167C1.00758 2.83056 1.02778 2.86944 1.05303 2.90833C1.16414 3.08611 1.32323 3.24444 1.5303 3.38333C1.73737 3.52222 1.9697 3.64167 2.22727 3.74167C2.48485 3.84167 2.75884 3.925 3.04924 3.99167C3.33965 4.05833 3.62374 4.1125 3.90152 4.15417C4.17929 4.19583 4.44318 4.225 4.69318 4.24167C4.94318 4.25833 5.15657 4.26667 5.33333 4.26667C5.5101 4.26667 5.72349 4.25833 5.97348 4.24167C6.22348 4.225 6.48737 4.19583 6.76515 4.15417C7.04293 4.1125 7.32702 4.05833 7.61742 3.99167C7.90783 3.925 8.18182 3.84167 8.43939 3.74167C8.69697 3.64167 8.92803 3.52361 9.13258 3.3875C9.33712 3.25139 9.49747 3.09167 9.61364 2.90833C9.63889 2.86944 9.65909 2.83056 9.67424 2.79167C9.68939 2.75278 9.69697 2.71111 9.69697 2.66667C9.69697 2.55 9.65404 2.43889 9.56818 2.33333C9.48232 2.22778 9.37879 2.13056 9.25758 2.04167C9.13636 1.95278 9.01263 1.87361 8.88636 1.80417C8.7601 1.73472 8.65909 1.68333 8.58333 1.65C8.34596 1.54444 8.09091 1.45417 7.81818 1.37917C7.54545 1.30417 7.26768 1.24306 6.98485 1.19583C6.70202 1.14861 6.42045 1.11528 6.14015 1.09583C5.85985 1.07639 5.59091 1.06667 5.33333 1.06667Z" fill="#CCCCCC"/>
|
||||||
|
<path d="M12.48 12.5867H10.1333V15.1467H9.81334V12.5867H7.46667V12.2667H9.81334V9.60001H10.1333V12.16H12.48V12.5867Z" fill="#CCCCCC" stroke="#CCCCCC" stroke-width="0.5"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.6 KiB |
4
images/AddDatabase.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg width="13" height="16" viewBox="0 0 13 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M5.33333 13.8667C5.57576 13.8667 5.82323 13.8583 6.07576 13.8417C6.20202 14.2083 6.35859 14.55 6.54545 14.8667C6.34343 14.8889 6.14141 14.9056 5.93939 14.9167C5.73737 14.9278 5.53535 14.9333 5.33333 14.9333C4.65657 14.9333 3.99495 14.8722 3.34848 14.75C3.16162 14.7167 2.9495 14.6681 2.71212 14.6042C2.47475 14.5403 2.23232 14.4597 1.98485 14.3625C1.73737 14.2653 1.49495 14.1514 1.25758 14.0208C1.0202 13.8903 0.808081 13.7389 0.621212 13.5667C0.434344 13.3944 0.284091 13.2014 0.170455 12.9875C0.056818 12.7736 0 12.5333 0 12.2667V2.66667C0 2.41667 0.0492425 2.19306 0.147728 1.99583C0.246212 1.79861 0.373737 1.61667 0.530303 1.45C0.70202 1.26111 0.907828 1.09444 1.14773 0.95C1.38763 0.805556 1.64646 0.679167 1.92424 0.570833C2.20202 0.4625 2.49242 0.372222 2.79545 0.3C3.09848 0.227777 3.39899 0.169444 3.69697 0.125C3.99495 0.0805552 4.28283 0.048611 4.56061 0.0291664C4.83838 0.00972231 5.09596 0 5.33333 0C5.69697 0 6.09975 0.0222219 6.54167 0.0666664C6.98359 0.111111 7.4255 0.1875 7.86742 0.295833C8.30934 0.404167 8.7298 0.552778 9.12879 0.741667C9.52778 0.930555 9.86364 1.16667 10.1364 1.45C10.2929 1.61111 10.4205 1.79444 10.5189 2C10.6174 2.20556 10.6667 2.42778 10.6667 2.66667V7.43333H9.69697V4.25C9.39394 4.45556 9.06187 4.62778 8.70076 4.76667C8.33965 4.90556 7.96843 5.01667 7.58712 5.1C7.20581 5.18333 6.82197 5.24306 6.43561 5.27917C6.04924 5.31528 5.68182 5.33333 5.33333 5.33333C4.98485 5.33333 4.61742 5.31528 4.23106 5.27917C3.8447 5.24306 3.4596 5.18333 3.07576 5.1C2.69192 5.01667 2.32071 4.90556 1.96212 4.76667C1.60354 4.62778 1.27273 4.45556 0.969697 4.25V12.2667C0.969697 12.3778 1.00631 12.4806 1.07955 12.575C1.15278 12.6694 1.22475 12.7472 1.29545 12.8083C1.53283 13.0139 1.82197 13.1847 2.16288 13.3208C2.50379 13.4569 2.86111 13.5653 3.23485 13.6458C3.60859 13.7264 3.9798 13.7833 4.34848 13.8167C4.71717 13.85 5.04545 13.8667 5.33333 13.8667ZM5.33333 1.06667C5.07576 1.06667 4.80682 1.07639 4.52652 1.09583C4.24621 1.11528 3.96465 1.14861 3.68182 1.19583C3.39899 1.24306 3.12121 1.30417 2.84848 1.37917C2.57576 1.45417 2.32071 1.54444 2.08333 1.65C2.00758 1.68333 1.90657 1.73472 1.7803 1.80417C1.65404 1.87361 1.5303 1.95278 1.40909 2.04167C1.28788 2.13056 1.18434 2.22778 1.09848 2.33333C1.01263 2.43889 0.969697 2.55 0.969697 2.66667C0.969697 2.71111 0.977273 2.75278 0.992424 2.79167C1.00758 2.83056 1.02778 2.86944 1.05303 2.90833C1.16414 3.08611 1.32323 3.24444 1.5303 3.38333C1.73737 3.52222 1.9697 3.64167 2.22727 3.74167C2.48485 3.84167 2.75884 3.925 3.04924 3.99167C3.33965 4.05833 3.62374 4.1125 3.90152 4.15417C4.17929 4.19583 4.44318 4.225 4.69318 4.24167C4.94318 4.25833 5.15657 4.26667 5.33333 4.26667C5.5101 4.26667 5.72348 4.25833 5.97348 4.24167C6.22348 4.225 6.48737 4.19583 6.76515 4.15417C7.04293 4.1125 7.32702 4.05833 7.61742 3.99167C7.90783 3.925 8.18182 3.84167 8.43939 3.74167C8.69697 3.64167 8.92803 3.52361 9.13258 3.3875C9.33712 3.25139 9.49747 3.09167 9.61364 2.90833C9.63889 2.86944 9.65909 2.83056 9.67424 2.79167C9.68939 2.75278 9.69697 2.71111 9.69697 2.66667C9.69697 2.55 9.65404 2.43889 9.56818 2.33333C9.48232 2.22778 9.37879 2.13056 9.25758 2.04167C9.13636 1.95278 9.01263 1.87361 8.88636 1.80417C8.7601 1.73472 8.65909 1.68333 8.58333 1.65C8.34596 1.54444 8.09091 1.45417 7.81818 1.37917C7.54545 1.30417 7.26768 1.24306 6.98485 1.19583C6.70202 1.14861 6.42045 1.11528 6.14015 1.09583C5.85985 1.07639 5.59091 1.06667 5.33333 1.06667Z" fill="#0078D4"/>
|
||||||
|
<path d="M12.48 12.5867H10.1333V15.1467H9.81334V12.5867H7.46667V12.2667H9.81334V9.60001H10.1333V12.16H12.48V12.5867Z" fill="#0078D4" stroke="#0078D4" stroke-width="0.5"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.6 KiB |
6
images/AddDocument-disabled.svg
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 0.399994V14.2H7V13.2H2.5V1.39999H8.5V3.99999H11.4V8.39999H12.4V3.27674L9.19132 0.399994H1.5ZM10.5933 2.99999L9.5 2.0198V2.99999H10.5933Z" fill="#CCCCCC"/>
|
||||||
|
<path d="M3.80002 9.5C3.80002 10.1 4.20002 10.4 4.90002 10.4H5.00002V10C4.80002 10 4.70002 10 4.60002 9.9C4.50002 9.8 4.50002 9.6 4.50002 9.4V8.6C4.50002 8.1 4.30002 7.9 3.90002 7.8C4.30002 7.7 4.50002 7.4 4.50002 7V6.2C4.50002 5.8 4.70002 5.6 5.00002 5.6V5.1C4.30002 5.1 3.90002 5.4 3.90002 6V6.9C3.90002 7.3 3.70002 7.5 3.40002 7.5V8C3.70002 8 3.80002 8.2 3.80002 8.6V9.5Z" fill="#CCCCCC"/>
|
||||||
|
<path d="M10.4 8C10 8 9.90002 8.2 9.90002 8.6V9.5C9.90002 10.1 9.50002 10.4 8.80002 10.4V9.9C8.91718 9.9 9.00002 9.86569 9.06865 9.83726C9.11718 9.81716 9.1586 9.8 9.20002 9.8C9.30002 9.7 9.30002 9.6 9.30002 9.3V8.5C9.30002 8.1 9.50002 7.8 9.90002 7.7C9.50002 7.6 9.30002 7.4 9.30002 7V6.1C9.30002 5.7 9.10002 5.5 8.80002 5.5V5C9.50002 5 9.90002 5.3 9.90002 5.9V6.8C9.90002 7.2 10.1 7.4 10.4 7.4V8Z" fill="#CCCCCC"/>
|
||||||
|
<path d="M10.2 8.89999V11.4H7.79999V12.4H10.2V14.9H11.2V12.4H13.6V11.4H11.2V8.89999H10.2Z" fill="#CCCCCC"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
8
images/AddDocument.svg
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M11.9 3.49999H9V0.899994" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
<path d="M4.89999 10.4C4.19999 10.4 3.79999 10.1 3.79999 9.50001V8.60001C3.79999 8.20001 3.69999 8.00001 3.39999 8.00001V7.50001C3.69999 7.50001 3.89999 7.30001 3.89999 6.90001V6.00001C3.89999 5.40001 4.29999 5.10001 4.99999 5.10001V5.60001C4.69999 5.60001 4.49999 5.80001 4.49999 6.20001V7.00001C4.49999 7.40001 4.29999 7.70001 3.89999 7.80001C4.29999 7.90001 4.49999 8.10001 4.49999 8.60001V9.40001C4.49999 9.60001 4.49999 9.80001 4.59999 9.90001C4.69999 10 4.79999 10 4.99999 10V10.4H4.89999Z" fill="#0078D4"/>
|
||||||
|
<path d="M10.4 8C9.99999 8 9.89999 8.2 9.89999 8.6V9.5C9.89999 10.1 9.49999 10.4 8.79999 10.4V9.9C8.99999 9.9 9.09999 9.8 9.19999 9.8C9.29999 9.7 9.29999 9.6 9.29999 9.3V8.5C9.29999 8.1 9.49999 7.8 9.89999 7.7C9.49999 7.6 9.29999 7.4 9.29999 7V6.1C9.29999 5.7 9.09999 5.5 8.79999 5.5V5C9.49999 5 9.89999 5.3 9.89999 5.9V6.8C9.89999 7.2 10.1 7.4 10.4 7.4V8Z" fill="#0078D4"/>
|
||||||
|
<path d="M10.7 8.89999V14.9" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
<path d="M7.79999 11.9H13.6" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
<path d="M7 13.7H2V0.899994H9L11.9 3.49999V8.39999" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
8
images/AddEntity-1.svg
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M15.1 1.3H0.799988V5.6H15.1V1.3Z" stroke="#CCCCCC" stroke-miterlimit="10"/>
|
||||||
|
<path d="M15 5.90001H4V10.2H15V5.90001Z" stroke="#CCCCCC" stroke-miterlimit="10"/>
|
||||||
|
<path d="M15 10.2H4V14.5H15V10.2Z" stroke="#CCCCCC" stroke-miterlimit="10"/>
|
||||||
|
<path d="M5.40002 1.5V5.2" stroke="#CCCCCC" stroke-miterlimit="10"/>
|
||||||
|
<path d="M8 6.39999V10.1" stroke="#CCCCCC" stroke-miterlimit="10"/>
|
||||||
|
<path d="M8 10.5V14.2" stroke="#CCCCCC" stroke-miterlimit="10"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 550 B |
8
images/AddEntity.svg
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M15.1 1.3H0.799988V5.6H15.1V1.3Z" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
<path d="M15 5.90001H4V10.2H15V5.90001Z" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
<path d="M15 10.2H4V14.5H15V10.2Z" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
<path d="M5.40002 1.5V5.2" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
<path d="M8 6.39999V10.1" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
<path d="M8 10.5V14.2" stroke="#0078D4" stroke-miterlimit="10"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 550 B |