{"version":3,"file":"modules/685-685.js?cacheBreaker=4555875d5215606c5256","mappings":"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Aa,QACb,GAAM,gBACN,SAAY,CACX,iBAED,KAAQ,iBAET,CACC,UAAa,QACb,GAAM,aACN,SAAY,CACX,cAED,KAAQ,cAET,CACC,UAAa,QACb,GAAM,UACN,SAAY,CACX,WAED,KAAQ,WAET,CACC,UAAa,QACb,GAAM,cACN,SAAY,CACX,eAED,KAAQ,eAET,CACC,UAAa,QACb,GAAM,WACN,SAAY,CACX,YAED,KAAQ,YAET,CACC,UAAa,QACb,GAAM,YACN,SAAY,CACX,aAED,KAAQ,aAET,CACC,UAAa,QACb,GAAM,YACN,SAAY,CACX,aAED,KAAQ,aAET,CACC,UAAa,QACb,GAAM,aACN,SAAY,CACX,cAED,KAAQ,cAET,CACC,UAAa,QACb,GAAM,YACN,SAAY,CACX,aAED,KAAQ,aAET,CACC,UAAa,QACb,GAAM,aACN,SAAY,CACX,cAED,KAAQ,cAET,CACC,UAAa,QACb,GAAM,wBACN,SAAY,CACX,yBAED,KAAQ,yBAET,CACC,UAAa,QACb,GAAM,wBACN,SAAY,CACX,yBAED,KAAQ,yBAET,CACC,UAAa,QACb,GAAM,qBACN,SAAY,CACX,sBAED,KAAQ,sBAET,CACC,UAAa,QACb,GAAM,gBACN,SAAY,CACX,iBAED,KAAQ,iBAET,CACC,UAAa,QACb,GAAM,YACN,SAAY,CACX,aAED,KAAQ,aAET,CACC,UAAa,QACb,GAAM,iBACN,SAAY,CACX,kBAED,KAAQ,kBAET,CACC,UAAa,QACb,GAAM,4BACN,SAAY,CACX,6BAED,KAAQ,6BAET,CACC,UAAa,QACb,GAAM,cACN,SAAY,CACX,eAED,KAAQ,eAET,CACC,UAAa,QACb,GAAM,eACN,SAAY,CACX,gBAED,KAAQ,gBAET,CACC,UAAa,QACb,GAAM,gBACN,SAAY,CACX,iBAED,KAAQ,iBAET,CACC,UAAa,QACb,GAAM,aACN,SAAY,CACX,cAED,KAAQ,cAET,CACC,UAAa,QACb,GAAM,oBACN,SAAY,CACX,qBAED,KAAQ,qBAET,CACC,UAAa,QACb,GAAM,eACN,SAAY,CACX,gBAED,KAAQ,gBAET,CACC,UAAa,QACb,GAAM,kBACN,SAAY,CACX,mBAED,KAAQ,mBAET,CACC,UAAa,QACb,GAAM,SACN,SAAY,CACX,UAED,KAAQ,UAET,CACC,UAAa,QACb,GAAM,eACN,SAAY,CACX,gBAED,KAAQ,gBAET,CACC,UAAa,QACb,GAAM,mBACN,SAAY,CACX,oBAED,KAAQ,oBAET,CACC,UAAa,QACb,GAAM,iBACN,SAAY,CACX,kBAED,KAAQ,kBAET,CACC,UAAa,QACb,GAAM,oBACN,SAAY,CACX,qBAED,KAAQ,qBAET,CACC,UAAa,QACb,GAAM,eACN,SAAY,CACX,gBAED,KAAQ,gBAET,CACC,UAAa,QACb,GAAM,uBACN,SAAY,CACX,wBAED,KAAQ,wBAET,CACC,UAAa,QACb,GAAM,oBACN,SAAY,CACX,qBAED,KAAQ,qBAET,CACC,UAAa,QACb,GAAM,UACN,SAAY,CACX,WAED,KAAQ,WAET,CACC,UAAa,QACb,GAAM,mBACN,SAAY,CACX,oBAED,KAAQ,oBAET,CACC,UAAa,QACb,GAAM,aACN,SAAY,CACX,cAED,KAAQ,cAET,CACC,UAAa,QACb,GAAM,eACN,SAAY,CACX,gBAED,KAAQ,gBAET,CACC,UAAa,QACb,GAAM,iBACN,SAAY,CACX,kBAED,KAAQ,kBAET,CACC,UAAa,QACb,GAAM,WACN,SAAY,CACX,YAED,KAAQ,YAET,CACC,UAAa,QACb,GAAM,kBACN,SAAY,CACX,mBAED,KAAQ,mBAET,CACC,UAAa,QACb,GAAM,WACN,SAAY,CACX,YAED,KAAQ,YAET,CACC,UAAa,QACb,GAAM,mBACN,SAAY,CACX,oBAED,KAAQ,oBAET,CACC,UAAa,QACb,GAAM,cACN,SAAY,CACX,eAED,KAAQ,eAET,CACC,UAAa,QACb,GAAM,aACN,SAAY,CACX,cAED,KAAQ,cAET,CACC,UAAa,QACb,GAAM,UACN,SAAY,CACX,WAED,KAAQ,WAET,CACC,UAAa,QACb,GAAM,UACN,SAAY,CACX,WAED,KAAQ,WAET,CACC,UAAa,QACb,GAAM,sBACN,SAAY,CACX,uBAED,KAAQ,uBAET,CACC,UAAa,QACb,GAAM,eACN,SAAY,CACX,gBAED,KAAQ,gBAET,CACC,UAAa,QACb,GAAM,mBACN,SAAY,CACX,oBAED,KAAQ,oBAET,CACC,UAAa,QACb,GAAM,YACN,SAAY,CACX,aAED,KAAQ,aAET,CACC,UAAa,QACb,GAAM,gBACN,SAAY,CACX,iBAED,KAAQ,iBAET,CACC,UAAa,QACb,GAAM,mBACN,SAAY,CACX,oBAED,KAAQ,oBAET,CACC,UAAa,QACb,GAAM,cACN,SAAY,CACX,eAED,KAAQ,eAET,CACC,UAAa,QACb,GAAM,mBACN,SAAY,CACX,oBAED,KAAQ,oBAET,CACC,UAAa,QACb,GAAM,kBACN,SAAY,CACX,mBAED,KAAQ,mBAET,CACC,UAAa,QACb,GAAM,iBACN,SAAY,CACX,kBAED,KAAQ,kBAET,CACC,UAAa,QACb,GAAM,yBACN,SAAY,CACX,0BAED,KAAQ,0BAET,CACC,UAAa,QACb,GAAM,cACN,SAAY,CACX,eAED,KAAQ,eAET,CACC,UAAa,QACb,GAAM,kBACN,SAAY,CACX,mBAED,KAAQ,mBAET,CACC,UAAa,QACb,GAAM,qBACN,SAAY,CACX,sBAED,KAAQ,sBAET,CACC,UAAa,QACb,GAAM,kBACN,SAAY,CACX,mBAED,KAAQ,mBAET,CACC,UAAa,QACb,GAAM,uBACN,SAAY,CACX,wBAED,KAAQ,wBAET,CACC,UAAa,QACb,GAAM,oBACN,SAAY,CACX,qBAED,KAAQ,qBAET,CACC,UAAa,QACb,GAAM,WACN,SAAY,CACX,YAED,KAAQ,YAET,CACC,UAAa,QACb,GAAM,aACN,SAAY,CACX,cAED,KAAQ,cAET,CACC,UAAa,QACb,GAAM,YACN,SAAY,CACX,aAED,KAAQ,aAET,CACC,UAAa,QACb,GAAM,eACN,SAAY,CACX,gBAED,KAAQ,gBAET,CACC,UAAa,QACb,GAAM,YACN,SAAY,CACX,aAED,KAAQ,aAET,CACC,UAAa,QACb,GAAM,YACN,SAAY,CACX,aAED,KAAQ,aAET,CACC,UAAa,QACb,GAAM,WACN,SAAY,CACX,YAED,KAAQ,YAET,CACC,UAAa,QACb,GAAM,iBACN,SAAY,CACX,kBAED,KAAQ,kBAET,CACC,UAAa,QACb,GAAM,eACN,SAAY,CACX,gBAED,KAAQ,gBAET,CACC,UAAa,QACb,GAAM,iBACN,SAAY,CACX,kBAED,KAAQ,kBAET,CACC,UAAa,QACb,GAAM,kBACN,SAAY,CACX,mBAED,KAAQ,mBAET,CACC,UAAa,QACb,GAAM,YACN,SAAY,CACX,aAED,KAAQ,aAET,CACC,UAAa,QACb,GAAM,WACN,SAAY,CACX,YAED,KAAQ,YAET,CACC,UAAa,QACb,GAAM,4BACN,SAAY,CACX,6BAED,KAAQ,6BAET,CACC,UAAa,QACb,GAAM,mBACN,SAAY,CACX,WACA,WAED,KAAQ,oBAET,CACC,UAAa,QACb,GAAM,gBACN,SAAY,CACX,gBACA,aAED,KAAQ,iBAET,CACC,UAAa,QACb,GAAM,gBACN,SAAY,CACX,gBACA,UAED,KAAQ,iBAET,CACC,UAAa,QACb,GAAM,iBACN,SAAY,CACX,iBACA,UACA,aAED,KAAQ,kBAET,CACC,UAAa,QACb,GAAM,gBACN,SAAY,CACX,OACA,YAED,KAAQ,iBAET,CACC,UAAa,QACb,GAAM,aACN,SAAY,CACX,aACA,SACA,OAED,KAAQ,cAET,CACC,UAAa,QACb,GAAM,gBACN,SAAY,CACX,gBACA,SACA,SACA,UAED,KAAQ,iBAET,CACC,UAAa,QACb,GAAM,oBACN,SAAY,CACX,oBACA,SACA,WACA,cAED,KAAQ,qBAET,CACC,UAAa,QACb,GAAM,oBACN,SAAY,CACX,oBACA,SACA,WACA,cAED,KAAQ,qBAET,CACC,UAAa,QACb,GAAM,kBACN,SAAY,CACX,kBACA,SACA,YAED,KAAQ,mBAET,CACC,UAAa,QACb,GAAM,gCACN,SAAY,CACX,gCACA,SACA,WACA,YACA,UAED,KAAQ,iCAET,CACC,UAAa,QACb,GAAM,mBACN,SAAY,CACX,mBACA,WACA,UACA,aAED,KAAQ,oBAET,CACC,UAAa,QACb,GAAM,yBACN,SAAY,CACX,yBACA,qBACA,iBAED,KAAQ,0BAET,CACC,UAAa,QACb,GAAM,sBACN,SAAY,CACX,sBACA,kBACA,aACA,QAED,KAAQ,uBAET,CACC,UAAa,QACb,GAAM,qBACN,SAAY,CACX,qBACA,SACA,WAED,KAAQ,sBAET,CACC,UAAa,QACb,GAAM,UACN,SAAY,CACX,UACA,UAED,KAAQ,WAET,CACC,UAAa,QACb,GAAM,kBACN,SAAY,CACX,kBACA,WACA,YACA,UAED,KAAQ,mBAET,CACC,UAAa,QACb,GAAM,QACN,SAAY,CACX,SAED,KAAQ,SAET,CACC,UAAa,QACb,GAAM,aACN,SAAY,CACX,aACA,QACA,SAED,KAAQ,cAET,CACC,UAAa,QACb,GAAM,SACN,SAAY,CACX,SACA,KACA,MACA,OACA,QAED,KAAQ,UAET,CACC,UAAa,QACb,GAAM,mBACN,SAAY,CACX,mBACA,WAED,KAAQ,oBAET,CACC,UAAa,QACb,GAAM,WACN,SAAY,CACX,YAED,KAAQ,YAET,CACC,UAAa,QACb,GAAM,aACN,SAAY,CACX,aACA,OACA,QAED,KAAQ,cAET,CACC,UAAa,QACb,GAAM,cACN,SAAY,CACX,cACA,OACA,OACA,UAED,KAAQ,eAET,CACC,UAAa,QACb,GAAM,WACN,SAAY,CACX,WACA,QACA,OAED,KAAQ,YAET,CACC,UAAa,QACb,GAAM,aACN,SAAY,CACX,aACA,QAED,KAAQ,cAET,CACC,UAAa,QACb,GAAM,QACN,SAAY,CACX,SAED,KAAQ,SAET,CACC,UAAa,QACb,GAAM,2BACN,SAAY,CACX,2BACA,OAED,KAAQ,OAET,CACC,UAAa,QACb,GAAM,gBACN,SAAY,CACX,gBACA,SAED,KAAQ,iBAET,CACC,UAAa,QACb,GAAM,gBACN,SAAY,CACX,gBACA,QAED,KAAQ,iBAET,CACC,UAAa,QACb,GAAM,SACN,SAAY,CACX,UAED,KAAQ,UAET,CACC,UAAa,QACb,GAAM,mBACN,SAAY,CACX,mBACA,SACA,WAED,KAAQ,oBAET,CACC,UAAa,QACb,GAAM,qBACN,SAAY,CACX,qBACA,YACA,aACA,SACA,eAED,KAAQ,sBAET,CACC,UAAa,QACb,GAAM,sBACN,SAAY,CACX,sBACA,WAED,KAAQ,uBAET,CACC,UAAa,QACb,GAAM,cACN,SAAY,CACX,eAED,KAAQ,eAET,CACC,UAAa,QACb,GAAM,WACN,SAAY,CACX,WACA,MAED,KAAQ,YAET,CACC,UAAa,QACb,GAAM,UACN,SAAY,CACX,UACA,WACA,QAED,KAAQ,WAET,CACC,UAAa,QACb,GAAM,uBACN,SAAY,CACX,uBACA,kBACA,mBACA,UACA,YAED,KAAQ,wBAET,CACC,UAAa,QACb,GAAM,oBACN,SAAY,CACX,oBACA,OACA,SAED,KAAQ,qBAET,CACC,UAAa,QACb,GAAM,UACN,SAAY,CACX,WAED,KAAQ,WAET,CACC,UAAa,QACb,GAAM,OACN,SAAY,CACX,QAED,KAAQ,QAET,CACC,UAAa,QACb,GAAM,mBACN,SAAY,CACX,mBACA,UAED,KAAQ,oBAET,CACC,UAAa,QACb,GAAM,sBACN,SAAY,CACX,sBACA,SAED,KAAQ,uBAET,CACC,UAAa,QACb,GAAM,cACN,SAAY,CACX,cACA,cAED,KAAQ,eAET,CACC,UAAa,QACb,GAAM,yBACN,SAAY,CACX,0BAED,KAAQ,0BAET,CACC,UAAa,QACb,GAAM,eACN,SAAY,CACX,YAED,KAAQ,gBAET,CACC,UAAa,QACb,GAAM,mBACN,SAAY,CACX,mBACA,MAED,KAAQ,oBAET,CACC,UAAa,QACb,GAAM,YACN,SAAY,CACX,YACA,MACA,SAED,KAAQ,aAET,CACC,UAAa,QACb,GAAM,WACN,SAAY,CACX,YAED,KAAQ,YAET,CACC,UAAa,QACb,GAAM,cACN,SAAY,CACX,eACA,eAED,KAAQ,eAET,CACC,UAAa,QACb,GAAM,sBACN,SAAY,CACX,sBACA,eACA,UAED,KAAQ,uBAET,CACC,UAAa,QACb,GAAM,WACN,SAAY,CACX,UACA,YAED,KAAQ,YAET,CACC,UAAa,QACb,GAAM,kBACN,SAAY,CACX,kBACA,QACA,MACA,SAED,KAAQ,mBAET,CACC,UAAa,QACb,GAAM,qBACN,SAAY,CACX,qBACA,QACA,SACA,SAED,KAAQ,sBAET,CACC,UAAa,QACb,GAAM,QACN,SAAY,CACX,SAED,KAAQ,SAET,CACC,UAAa,QACb,GAAM,kBACN,SAAY,CACX,kBACA,cACA,OAED,KAAQ,mBAET,CACC,UAAa,QACb,GAAM,UACN,SAAY,CACX,WAED,KAAQ,WAET,CACC,UAAa,QACb,GAAM,UACN,SAAY,CACX,UACA,KACA,QAED,KAAQ,WAET,CACC,UAAa,QACb,GAAM,sBACN,SAAY,CACX,sBACA,WACA,OACA,KACA,MAED,KAAQ,uBAET,CACC,UAAa,QACb,GAAM,wBACN,SAAY,CACX,wBACA,WACA,OACA,KACA,QAED,KAAQ,yBAET,CACC,UAAa,QACb,GAAM,wBACN,SAAY,CACX,wBACA,SACA,SACA,WAED,KAAQ,yBAET,CACC,UAAa,QACb,GAAM,sBACN,SAAY,CACX,sBACA,SACA,gBAED,KAAQ,uBAET,CACC,UAAa,QACb,GAAM,MACN,SAAY,CACX,OAED,KAAQ,OAET,CACC,UAAa,QACb,GAAM,MACN,SAAY,CACX,OAED,KAAQ,OAET,CACC,UAAa,QACb,GAAM,aACN,SAAY,CACX,aACA,SACA,OAED,KAAQ,cAET,CACC,UAAa,QACb,GAAM,qBACN,SAAY,CACX,qBACA,SACA,MACA,WAED,KAAQ,sBAET,CACC,UAAa,QACb,GAAM,gBACN,SAAY,CACX,gBACA,SACA,UAED,KAAQ,iBAET,CACC,UAAa,QACb,GAAM,wBACN,SAAY,CACX,wBACA,SACA,SACA,WAED,KAAQ,yBAET,CACC,UAAa,QACb,GAAM,eACN,SAAY,CACX,eACA,SACA,SAED,KAAQ,gBAET,CACC,UAAa,QACb,GAAM,uBACN,SAAY,CACX,uBACA,SACA,QACA,WAED,KAAQ,wBAET,CACC,UAAa,QACb,GAAM,WACN,SAAY,CACX,MACA,WACA,QAED,KAAQ","sources":["webpack://@dwp/solution-builder/./node_modules/@dwp/dashboards/index.js","webpack://@dwp/solution-builder/./node_modules/@dwp/dashboards/src/scripts/directives/m42-dashboard-item.js","webpack://@dwp/solution-builder/./node_modules/@dwp/dashboards/src/scripts/directives/m42-dashboard-widget-configuration.js","webpack://@dwp/solution-builder/./node_modules/@dwp/dashboards/src/scripts/directives/m42-dashboard-widget-help.js","webpack://@dwp/solution-builder/./node_modules/@dwp/dashboards/src/scripts/directives/m42-dashboard-widget-registry.js","webpack://@dwp/solution-builder/./node_modules/@dwp/dashboards/src/scripts/directives/m42-dashboard.js","webpack://@dwp/solution-builder/./node_modules/@dwp/dashboards/src/scripts/fallback-providers/m42-local-storage-layout-data-provider.js","webpack://@dwp/solution-builder/./node_modules/@dwp/dashboards/src/scripts/m42-dashboards.js","webpack://@dwp/solution-builder/./node_modules/@dwp/dashboards/src/scripts/providers/m42-local-storage-data-provider.js","webpack://@dwp/solution-builder/./node_modules/@dwp/dashboards/src/scripts/services/m42-dashboard-data-coordinator.js","webpack://@dwp/solution-builder/./node_modules/@dwp/dashboards/src/scripts/services/m42-dashboard-layout-manager.js","webpack://@dwp/solution-builder/./node_modules/@dwp/dashboards/src/scripts/services/m42-dashboard-manager.js","webpack://@dwp/solution-builder/./node_modules/@dwp/dashboards/src/scripts/services/m42-data-query-cache.js","webpack://@dwp/solution-builder/./node_modules/@dwp/dashboards/src/scripts/services/m42-local-storage.js","webpack://@dwp/solution-builder/./node_modules/angular-md5/angular-md5.js","webpack://@dwp/solution-builder/./node_modules/angular-signalr-hub/signalr-hub.js","webpack://@dwp/solution-builder/./node_modules/angular-sortable-view/src/angular-sortable-view.js","webpack://@dwp/solution-builder/./node_modules/angular-uuid4/angular-uuid4.js","webpack://@dwp/solution-builder/./node_modules/@dwp/api-parser/dist/api/Schema/classes/Schema/Classes.GetClass.ts","webpack://@dwp/solution-builder/./node_modules/core-js/modules/es.regexp.flags.js","webpack://@dwp/solution-builder/./node_modules/signalr/jquery.signalR.js","webpack://@dwp/solution-builder/./node_modules/@dwp/mx-icons-font/dist/codepoints.js"],"sourcesContent":["import './vendors.js';\r\nimport './src/scripts/m42-dashboards.js';\r\nimport './src/scripts/directives/m42-dashboard.js';\r\nimport './src/scripts/directives/m42-dashboard-item.js';\r\nimport './src/scripts/directives/m42-dashboard-widget-registry.js';\r\nimport './src/scripts/directives/m42-dashboard-widget-configuration.js';\r\nimport './src/scripts/directives/m42-dashboard-widget-help.js';\r\nimport './src/scripts/services/m42-dashboard-manager.js';\r\nimport './src/scripts/services/m42-dashboard-layout-manager.js';\r\nimport './src/scripts/services/m42-data-query-cache.js';\r\nimport './src/scripts/services/m42-dashboard-data-coordinator.js';\r\nimport './src/scripts/services/m42-local-storage.js';\r\nimport './src/scripts/fallback-providers/m42-local-storage-layout-data-provider.js';\r\nimport './src/scripts/providers/m42-local-storage-data-provider.js';\r\n\r\nexport default 'm42Dashboards';","\r\nangular.module('m42Dashboards').directive('m42DashboardItem', ['$compile', function ($compile) {\r\n const COMPILE_CACHE = {};\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n m42Widget: '=',\r\n m42Params: '=',\r\n\t\t\tm42WidgetId: '=',\r\n\t\t\tm42DashboardId: '=',\r\n\t\t\tm42DashboardViewMode:'=',\r\n\t\t\tm42GridOptions:'=',\r\n\t\t\tm42DashboardPublicFunctions:'='\r\n },\r\n template: '\\\r\n
\\\r\n
\\\r\n
\\\r\n
',\r\n\r\n link: function (scope, element) {\r\n\r\n function camelToDash(str) {\r\n return str.replace(/\\W+/g, '-')\r\n .replace(/([a-z\\d])([A-Z])/g, '$1-$2');\r\n }\r\n\r\n if (!COMPILE_CACHE[scope.m42Widget]) {\r\n\r\n var widgetTypeName = camelToDash(scope.m42Widget);\r\n\r\n var template= ''\r\n +'';\r\n\r\n COMPILE_CACHE[scope.m42Widget] = $compile(template);\r\n }\r\n\r\n COMPILE_CACHE[scope.m42Widget](scope, function (clonedElement) {\r\n element.find('div').eq(2).append(clonedElement);\r\n });\r\n }\r\n };\r\n}]);\r\n\r\n","angular.module('m42Dashboards').directive('m42DashboardWidgetConfiguration', ['$compile', function ($compile) {\r\n const COMPILE_CACHE = {};\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n m42WidgetTypeName: '=?',\r\n m42Widget :'=?'\r\n },\r\n template: '
',\r\n\r\n link: function (scope, element) {\r\n\r\n if (!COMPILE_CACHE[scope.m42WidgetTypeName]) {\r\n var widgetTypeName = scope.m42WidgetTypeName;\r\n var template= '';\r\n COMPILE_CACHE[scope.m42WidgetTypeName] = $compile(template);\r\n }\r\n\r\n COMPILE_CACHE[scope.m42WidgetTypeName](scope, function (clonedElement) {\r\n element.find('div').append(clonedElement);\r\n });\r\n },\r\n controller: ['$scope','$rootScope','$element','$compile', function ($scope,$rootScope,$element,$compile) {\r\n\r\n function camelToDash(str) {\r\n return str.replace(/\\W+/g, '-')\r\n .replace(/([a-z\\d])([A-Z])/g, '$1-$2');\r\n }\r\n\r\n $scope.renderConfigurationPage = function (){\r\n\r\n var widgetTypeName = camelToDash($scope.m42WidgetTypeName);\r\n\r\n var template= '';\r\n $(\"#m42-widget-configuration\").html($compile(template)($scope));\r\n };\r\n\r\n $rootScope.$on(\"openM42WidgetConfiguration\", function(event,message){\r\n $scope.m42Widget= message.widget;\r\n $scope.m42WidgetTypeName = message.widget.type;\r\n $scope.successCallback = message.successCallback;\r\n $scope.m42DashboardIdentifier = message.dashboardIdentifier;\r\n $scope.renderConfigurationPage();\r\n })\r\n }]\r\n };\r\n}]);","\r\nangular.module('m42Dashboards').directive('m42DashboardHelp', ['$compile', function ($compile) {\r\n\tconst COMPILE_CACHE = {};\r\n\r\n\treturn {\r\n\t\trestrict: 'E',\r\n\t\tscope: {\r\n\t\t\tm42WidgetTypeName: '=?'\r\n\t\t},\r\n\t\ttemplate: '
',\r\n\r\n\t\tlink: function (scope, element) {\r\n\r\n\t\t\tif (!COMPILE_CACHE[scope.m42WidgetTypeName]) {\r\n\t\t\t\tvar widgetTypeName = scope.m42WidgetTypeName;\r\n\t\t\t\tvar template= '';\r\n\t\t\t\tCOMPILE_CACHE[scope.m42WidgetTypeName] = $compile(template);\r\n\t\t\t}\r\n\r\n\t\t\tCOMPILE_CACHE[scope.m42WidgetTypeName](scope, function (clonedElement) {\r\n\t\t\t\telement.find('div').append(clonedElement);\r\n\t\t\t});\r\n\t\t},\r\n\t\tcontroller: ['$scope','$element','$compile', function ($scope,$element,$compile) {\r\n\r\n\r\n\t\t\t$scope.renderHelpPage = function (){\r\n\t\t\t\tvar widgetTypeName = $scope.m42WidgetTypeName;\r\n\t\t\t\tvar template= '';\r\n\t\t\t\t$(\"#m42-widget-help\").html($compile(template)($scope));\r\n\t\t\t};\r\n\r\n\t\t\t$scope.$on(\"openM42WidgetHelp\", function(event,message){\r\n\t\t\t\t$scope.m42WidgetTypeName = message.widgetTypeName;\r\n\t\t\t\t$scope.renderHelpPage();\r\n\t\t\t})\r\n\t\t}]\r\n\t};\r\n}]);\r\n\r\n","'use strict';\r\n\r\nangular.module('m42Dashboards')\r\n\t.directive('m42DashboardWidgetRegistry', [\r\n\t\tfunction () {\r\n\t\t\treturn {\r\n\t\t\t\trestrict: 'E',\r\n\t\t\t\tscope: {\r\n\t\t\t\t\tdashboardIdentifier: '@',\r\n\t\t\t\t\tregistrySearchString: '=?',\r\n\t\t\t\t\tregistryWidgetProvider: \"=\",\r\n\t\t\t\t\tregistryPublicFunctions: \"=?\",\r\n\t\t\t\t\taddWidgetCallback: \"&\"\r\n\t\t\t\t},\r\n\t\t\t\ttemplate: '\\\r\n
\t\t\t\t\\\r\n \t\t\t\\\r\n \t\t\t\t\\\r\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\r\n \t
\t\t\t\\\r\n \t \t\t\t\\\r\n \t
\t\t\t\\\r\n \t

{{widget.params.name}}

\t\t\t\\\r\n \t

{{widget.params.description}}

\t\t\t\\\r\n \t
\t\t\t\\\r\n \t add \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\r\n \t
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\r\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\r\n \t
0\" class=\"widget-group\" layout=\"column\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\r\n \t\t

{{widget.group.title}}

\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\r\n \t\t\t\t\t\t\t\t\t\\\r\n \t\t\t \t\t\t\\\r\n \t\t
\t\t\t\\\r\n \t\t

{{grpWidget.params.name}}

\t\t\t\\\r\n \t\t

{{grpWidget.params.description}}

\t\t\t\\\r\n \t\t
\t\t\t\\\r\n \t\t add \t\t\t\t\t\t\\\r\n \t\t
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\r\n \t
\t\t\t\t\t\t\t\t\\\r\n
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\r\n
\t\t\t\t\\\r\n
',\r\n\r\n\t\t\t\tlink: function ($scope, element, attributes) {\r\n\t\t\t\t\t// Checks if an outside controller has setup a connection to \"registryPublicFunctions\"\r\n\t\t\t\t\t// if a connection is made through setting an object, the directive offers some functions from its isolated scope to it\r\n\t\t\t\t\t$scope.$watch('registryPublicFunctions', function (connectionObj) {\r\n\t\t\t\t\t\tif (connectionObj) {\r\n\t\t\t\t\t\t\t$scope.registryPublicFunctions.registerNewWidgets = $scope.registerNewWidgets;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\tcontroller: ['$scope', '$m42DashboardManagerService', '$filter', function ($scope, $m42DashboardManagerService, $filter) {\r\n\r\n\t\t\t\t\t$scope.widgets = [];\r\n\r\n\t\t\t\t\tfunction getWidgets() {\r\n\t\t\t\t\t\t$m42DashboardManagerService.loadRegistryWidgets($scope.registryWidgetProvider, $scope.dashboardIdentifier).then(function (widgets) {\r\n\t\t\t\t\t\t\t$scope.widgets = applySearchString(widgets);\r\n\t\t\t\t\t\t}).catch(function (error) {\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfunction applySearchString(widgets) {\r\n\t\t\t\t\t\tvar filteredWidgets = [];\r\n\r\n\t\t\t\t\t\tif ($scope.registrySearchString && $scope.registrySearchString.length > 0) {\r\n\r\n\t\t\t\t\t\t\tfor (var i = 0; i < widgets.length; i++) {\r\n\r\n\t\t\t\t\t\t\t\tif(widgets[i].group && widgets[i].group.widgets.length > 0){\r\n\r\n\t\t\t\t\t\t\t\t\twidgets[i].group.widgets.forEach(function(grpWidget){\r\n\t\t\t\t\t\t\t\t\t\tvar loweredWidgetName = $filter('lowercase')(grpWidget.params.name);\r\n\t\t\t\t\t\t\t\t\t\tvar loweredWidgetDescription = $filter('lowercase')(grpWidget.params.description);\r\n\t\t\t\t\t\t\t\t\t\tvar loweredSearchString = $filter('lowercase')($scope.registrySearchString);\r\n\t\t\t\t\t\t\t\t\t\tif (loweredWidgetName.indexOf(loweredSearchString) !== -1 || loweredWidgetDescription.indexOf(loweredSearchString) !== -1) {\r\n\t\t\t\t\t\t\t\t\t\t\tfilteredWidgets.push(grpWidget);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\t\t\tvar loweredWidgetName = $filter('lowercase')(widgets[i].params.name);\r\n\t\t\t\t\t\t\t\t\tvar loweredWidgetDescription = $filter('lowercase')(widgets[i].params.description);\r\n\t\t\t\t\t\t\t\t\tvar loweredSearchString = $filter('lowercase')($scope.registrySearchString);\r\n\t\t\t\t\t\t\t\t\tif (loweredWidgetName.indexOf(loweredSearchString) !== -1 || loweredWidgetDescription.indexOf(loweredSearchString) !== -1) {\r\n\t\t\t\t\t\t\t\t\t\tfilteredWidgets.push(widgets[i]);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn filteredWidgets;\r\n\t\t\t\t\t\t} else\r\n\t\t\t\t\t\t\treturn widgets;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$scope.$watch(\"registrySearchString\", function (newVal, oldVal) {\r\n\t\t\t\t\t\tif (newVal !== oldVal) {\r\n\t\t\t\t\t\t\tgetWidgets();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$scope.registerNewWidgets = function (widgets) {\r\n\t\t\t\t\t\tvar availableWidgetTypes = [];\r\n\t\t\t\t\t\tfor (var i = 0; i < $scope.widgets.length; i++) {\r\n\t\t\t\t\t\t\tavailableWidgetTypes.push($scope.widgets[i].type);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tfor (var a = 0; a < widgets.length; a++) {\r\n\t\t\t\t\t\t\tif (availableWidgetTypes.indexOf(widgets[a].type) === -1) {\r\n\t\t\t\t\t\t\t\t$scope.widgets.push(widgets[a]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t$scope.addWidgetToDashboard = function (widget) {\r\n\t\t\t\t\t\tvar widgetToAdd = angular.copy(widget);\r\n\t\t\t\t\t\tif ($scope.addWidgetCallback) {\r\n\t\t\t\t\t\t\t$scope.addWidgetCallback({widget: widgetToAdd});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tgetWidgets();\r\n\t\t\t\t}]\r\n\t\t\t}\r\n\t\t}\r\n\t]);\r\n","angular.module('m42Dashboards').directive('m42Dashboard', ['$m42DashboardManagerService', function ($m42DashboardManagerService) {\r\n return {\r\n template: ' \\\r\n
\\\r\n \\\r\n
',\r\n transclude: true,\r\n restrict: 'E',\r\n scope: {\r\n dashboardId: \"@\",\r\n dashboardDataProvider: \"=\",\r\n dashboardLayoutDataProvider: \"=\",\r\n gridOptions: \"=?\",\r\n dashboardViewMode: \"@\",\r\n saveOnLeavingEditMode: \"=?\",\r\n dashboardPublicFunctions: \"=?\",\r\n itemsDeletable: \"=?\"\r\n },\r\n link: function ($scope, element, attributes) {\r\n\r\n // Checks if an outside controller has setup a connection to \"dashboardPublicFunctions\"\r\n // if a connection is made through setting an object, the directive offers some functions from its isolated scope to it\r\n $scope.$watch('dashboardPublicFunctions', function (connectionObj) {\r\n if (connectionObj) {\r\n $scope.dashboardPublicFunctions.saveDashboard = $scope.saveDashboard;\r\n $scope.dashboardPublicFunctions.deleteWidgetById = $scope.deleteWidgetById;\r\n $scope.dashboardPublicFunctions.addWidget = $scope.addWidget;\r\n $scope.dashboardPublicFunctions.refresh = $scope.refresh;\r\n $scope.dashboardPublicFunctions.renderDashboard = $scope.renderDashboard;\r\n }\r\n });\r\n },\r\n\r\n controller: ['$scope', '$rootScope', '$window', '$element', '$filter', '$m42DashboardManagerService', '$m42LocalStorageLayoutDataProvider', function ($scope, $rootScope, $window, $element, $filter, $m42DashboardManagerService, $m42LocalStorageLayoutDataProvider) {\r\n\r\n // generate local scope variables\r\n $scope.widgets = [];\r\n\r\n\r\n\t\t\t$scope.dynamicEditingActive = false;\r\n\r\n var registeredWidgetDirectives = [];\r\n\r\n // define the fallback should the user forget to set a layoutprovider\r\n var dashboardLayoutDataProvider = $scope.dashboardLayoutDataProvider;\r\n if (dashboardLayoutDataProvider === undefined || dashboardLayoutDataProvider === null) {\r\n dashboardLayoutDataProvider = $m42LocalStorageLayoutDataProvider;\r\n }\r\n\r\n // set if the directive didn't receive an options object, use the default one\r\n if ($scope.gridOptions === undefined) {\r\n $scope.gridOptions = $m42DashboardManagerService.getDefaultDashboardOptions();\r\n }else {\r\n $scope.gridOptions = angular.extend($m42DashboardManagerService.getDefaultDashboardOptions(),$scope.gridOptions);\r\n }\r\n var initialOptions = angular.copy($scope.gridOptions);\r\n\r\n // dashboard becomes active, load the widgets initially\r\n if ($window.innerWidth <= 600) {\r\n $scope.currentDeviceType = \"smartphone\";\r\n }\r\n else if ($window.innerWidth >= 600 && $window.innerWidth <= 960) {\r\n $scope.currentDeviceType = \"tablet\";\r\n }\r\n else {\r\n $scope.currentDeviceType = \"desktop\";\r\n }\r\n\r\n $scope.renderDashboard = function () {\r\n\r\n $m42DashboardManagerService.loadDashboard($scope.dashboardId, $scope.currentDeviceType, $scope.dashboardDataProvider, dashboardLayoutDataProvider).then(function (widgets) {\r\n\r\n // assign widgets to dashboard\r\n $scope.widgets = widgets.map(function (widget) {\r\n\t\t\t\t\t\tif(widget.id && widget.type && widget.frame && widget.frame.size && widget.frame.origin){\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\ttype: widget.type,\r\n\t\t\t\t\t\t\t\tparams: widget.params,\r\n\t\t\t\t\t\t\t\tid: widget.id,\r\n\t\t\t\t\t\t\t\tsizeX: widget.frame.size.w,\r\n\t\t\t\t\t\t\t\tsizeY: widget.frame.size.h,\r\n\t\t\t\t\t\t\t\tcol: widget.frame.origin.x,\r\n\t\t\t\t\t\t\t\trow: widget.frame.origin.y\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t }\r\n });\r\n $m42DashboardManagerService.registeredDashboards[$scope.dashboardId] = $scope.widgets;\r\n\r\n }).catch(function (error) {\r\n alert(error);\r\n });\r\n\r\n };\r\n\r\n $scope.renderDashboard();\r\n\r\n $scope.mapWidgetsToLayout = function (widgets) {\r\n\r\n\t\t\t\t\tvar layout = widgets.map(function (widget) {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\tid: widget.id,\r\n\t\t\t\t\t\t\t\tframe: {\r\n\t\t\t\t\t\t\t\t\torigin: {\r\n\t\t\t\t\t\t\t\t\t\tx: widget.col,\r\n\t\t\t\t\t\t\t\t\t\ty: widget.row\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tsize: {\r\n\t\t\t\t\t\t\t\t\t\tw: widget.sizeX,\r\n\t\t\t\t\t\t\t\t\t\th: widget.sizeY\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn layout;\r\n };\r\n\r\n $scope.mapWidgetsToDto = function (widgets) {\r\n var dtos = widgets.map(function (widget) {\r\n return {\r\n id: widget.id,\r\n type: widget.type,\r\n params: widget.params\r\n }\r\n });\r\n return dtos;\r\n };\r\n\r\n $scope.saveDashboard = function () {\r\n var layout = $scope.mapWidgetsToLayout($scope.widgets);\r\n var widgets = $scope.mapWidgetsToDto($scope.widgets);\r\n $m42DashboardManagerService.storeDashboard($scope.dashboardId, layout, widgets, $scope.currentDeviceType, $scope.dashboardDataProvider, dashboardLayoutDataProvider)\r\n };\r\n\r\n // removes the widget from the widgets in the current dashboard scope and sends a delete notification\r\n $scope.deleteWidgetById = function (widgetIdentifier) {\r\n var widgets = $scope.widgets;\r\n for (var i = 0; i < widgets.length; i++) {\r\n if (widgets[i].id === widgetIdentifier) {\r\n widgets.splice(i, 1);\r\n $rootScope.$emit(\"widgetDeleted\", {id: widgetIdentifier});\r\n\r\n\t\t\t\t\t\tif($scope.dashboardViewMode === \"dynamic\"){\r\n\t\t\t\t\t\t\t$scope.saveDashboard();\r\n\t\t\t\t\t\t}\r\n }\r\n }\r\n };\r\n\r\n $scope.addWidget = function (widget) {\r\n $scope.widgets.push(widget);\r\n\t\t\t\tif($scope.dashboardViewMode === \"dynamic\"){\r\n\t\t\t\t\t$scope.saveDashboard();\r\n\t\t\t\t}\r\n };\r\n\r\n // Sets the Background grid matrix, when the dashboard is in edit mode\r\n $scope.getGridBackground = function () {\r\n\r\n if ($scope.dashboardViewMode === \"edit\" || $scope.dashboardViewMode === \"dynamic\" && $scope.dynamicEditingActive === true) {\r\n\r\n var colWith = ($scope.gridOptions.colWidth).toString() + 'px ';\r\n var gridItemSize = colWith + colWith;\r\n var gridItemMargin = $scope.gridOptions.margins[0].toString() + 'px ';\r\n return {\r\n background: 'linear-gradient(90deg, #FFFFFF ' + gridItemMargin + ', rgba(0,0,0,0)' + gridItemMargin + '), '\r\n + 'linear-gradient(180deg, #FFFFFF ' + gridItemMargin + ', rgba(0,0,0,0) ' + gridItemMargin + '), rgba(153, 87, 34, 0.06)',\r\n backgroundSize: gridItemSize\r\n };\r\n }\r\n };\r\n\r\n // This function can be used by instantiating widget directives.\r\n // mainly used to trigger the query() function again, when the queryCache gets invalidated.\r\n\r\n this.registerWidget = function (widgetDirectiveCtrl){\r\n\t\t\t\tregisteredWidgetDirectives.push(widgetDirectiveCtrl);\r\n };\r\n\r\n this.unregisterWidget = function (widgetDirectiveCtrl){\r\n var index = registeredWidgetDirectives.indexOf(widgetDirectiveCtrl);\r\n\r\n if (index >= -1 ){\r\n registeredWidgetDirectives.splice(index,1);\r\n }\r\n };\r\n\r\n $scope.refresh = function () {\r\n $m42DashboardManagerService.refreshWidgetData().then(function () {\r\n registeredWidgetDirectives.forEach(function(widgetDirectiveCtrl){\r\n widgetDirectiveCtrl.getData();\r\n })\r\n })\r\n };\r\n\r\n // Disable widget elements beeing clickable when dragging widgets\r\n // ---> except the delete icon for widgets\r\n $element[0].addEventListener('click', function (event) {\r\n if ($scope.dashboardViewMode === \"edit\") {\r\n if (\r\n event.target.className.indexOf('delete-widget-button') === -1 &&\r\n event.target.className.indexOf('delete-widget-icon') === -1\r\n ) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n }, true);\r\n\r\n\r\n $scope.$watch('dashboardViewMode', function (newVal, oldVal) {\r\n\r\n // write view logic to switch the mode\r\n // show the grid frame tiles, allow to drag, allow to resize\r\n\t\t\t\tswitch($scope.dashboardViewMode){\r\n\t\t\t\t\tcase 'edit':\r\n\t\t\t\t\t\t$scope.gridOptions.draggable.enabled = true;\r\n\t\t\t\t\t\t$scope.gridOptions.resizable.enabled = true; break;\r\n\t\t\t\t\tcase 'view':\r\n\t\t\t\t\t\t$scope.gridOptions.draggable.enabled = false;\r\n\t\t\t\t\t\t$scope.gridOptions.resizable.enabled = false; break;\r\n\t\t\t\t\tcase 'dynamic':\r\n\t\t\t\t\t\t$scope.gridOptions.draggable.enabled = true;\r\n\t\t\t\t\t\t$scope.gridOptions.draggable.handle = \".m42-widget-dragndrop-bar\";\r\n\t\t\t\t\t\t$scope.gridOptions.resizable.enabled = true; break;\r\n\t\t\t\t}\r\n\r\n if (oldVal === 'edit' && newVal === 'view' && $scope.saveOnLeavingEditMode !== false) {\r\n $scope.saveDashboard();\r\n }\r\n });\r\n\r\n // Rearranges the order of gridster items based on the current deviceType\r\n $scope.handleGridsterResize = function () {\r\n var numOfCols = $scope.gridOptions.columns;\r\n var widgets = $scope.widgets;\r\n for (var i = 0; i < widgets.length; i++) {\r\n var widget = widgets[i];\r\n if (widget.col >= numOfCols || (widget.col <= numOfCols && widget.sizeX > numOfCols - widget.col)) {\r\n widget.row += widget.sizeY;\r\n widget.col = 0;\r\n }\r\n if (widget.sizeX > numOfCols || $scope.currentDeviceType === \"smartphone\" ) {\r\n widget.sizeX = numOfCols;\r\n }\r\n }\r\n };\r\n\r\n // Listens if any widget of this dashboard has been edited/updated/saved\r\n // Saves the current Dashboard\r\n\r\n $rootScope.$on(\"m42WidgetUpdated\", function (event, message) {\r\n if (message.id !== undefined) {\r\n var widgetId = message.id;\r\n for (var i = 0; i < $scope.widgets.length; i++) {\r\n if (widgetId === $scope.widgets[i].id) {\r\n $scope.saveDashboard();\r\n }\r\n }\r\n }\r\n });\r\n\t\t\t$rootScope.$on(\"m42WidgetAdded\", function (event, message) {\r\n\t\t\t\tif (message.id !== undefined) {\r\n\t\t\t\t\tvar widgetId = message.id;\r\n\t\t\t\t\tfor (var i = 0; i < $scope.widgets.length; i++) {\r\n\t\t\t\t\t\tif (widgetId === $scope.widgets[i].id && $scope.dashboardViewMode === \"dynamic\") {\r\n\t\t\t\t\t\t\t$scope.saveDashboard();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$rootScope.$on(\"editingM42Dashboard\", function(event,message){\r\n\t\t\t\t$scope.dynamicEditingActive = true;\r\n\t\t\t});\r\n\r\n\t\t\t$rootScope.$on(\"editingM42DashboardFinished\", function(event,message){\r\n\t\t\t\t$scope.dynamicEditingActive = false;\r\n\t\t\t\t$scope.saveDashboard();\r\n\t\t\t});\r\n\r\n // sets the layout to be responsive for different deviceTypes\r\n $scope.$watch(function () {\r\n return $window.innerWidth;\r\n }, function watchCallback(newValue,oldValue) {\r\n\r\n //smartphone\r\n if (newValue <= 600) {\r\n $scope.currentDeviceType = \"smartphone\";\r\n $scope.gridOptions.columns = 3;\r\n $scope.gridOptions.colWidth = (newValue - initialOptions.margins[0]) / 3;\r\n $scope.gridOptions.rowHeight = (newValue - initialOptions.margins[0]) / 3;\r\n $scope.handleGridsterResize();\r\n\t\t\t\t\tif($scope.dashboardViewMode === \"dynamic\"){\r\n\t\t\t\t\t\t$scope.saveDashboard();\r\n\t\t\t\t\t}\r\n }\r\n //tablet\r\n else if (newValue >= 600 && newValue <= 960) {\r\n $scope.currentDeviceType = \"tablet\";\r\n $scope.gridOptions.columns = 6;\r\n $scope.gridOptions.colWidth = (newValue - initialOptions.margins[0]) / 6;\r\n $scope.gridOptions.rowHeight =(newValue - initialOptions.margins[0]) / 6;\r\n $scope.handleGridsterResize();\r\n\t\t\t\t\tif($scope.dashboardViewMode === \"dynamic\"){\r\n\t\t\t\t\t\t$scope.saveDashboard();\r\n\t\t\t\t\t}\r\n\r\n }\r\n //desktop\r\n else if (newValue >= 960 && !(oldValue>=960) ) {\r\n $scope.currentDeviceType = \"desktop\";\r\n $scope.gridOptions.columns = initialOptions.columns; //12;\r\n $scope.gridOptions.colWidth = initialOptions.colWidth;//160;\r\n $scope.gridOptions.rowHeight = initialOptions.rowHeight;//160;\r\n $scope.renderDashboard();\r\n\t\t\t\t\tif($scope.dashboardViewMode === \"dynamic\"){\r\n\t\t\t\t\t\t$scope.saveDashboard();\r\n\t\t\t\t\t}\r\n }\r\n });\r\n }]\r\n };\r\n}]);\r\n","angular.module('m42Dashboards').service('$m42LocalStorageLayoutDataProvider', ['$m42LocalStorage', '$q', function ($m42LocalStorage, $q) {\r\n var self = this;\r\n\r\n self.loadDashboardLayout = function (dashboardId, deviceType) {\r\n\r\n var localDashboards = $m42LocalStorage.getItem(\"m42Dashboards\");\r\n\r\n if (localDashboards !== undefined && localDashboards !== null) {\r\n\r\n var m42Dashboards = JSON.parse(localDashboards);\r\n\r\n if (m42Dashboards[dashboardId] !== undefined && m42Dashboards[dashboardId][deviceType] !== undefined) {\r\n return $q.when(m42Dashboards[dashboardId][deviceType]);\r\n }\r\n }\r\n\r\n return $q.when([]);\r\n };\r\n\r\n self.storeDashboardLayout = function (dashboardId, widgetLayouts, deviceType) {\r\n\r\n var dfd = $q.defer();\r\n\r\n if (dashboardId && widgetLayouts) {\r\n var localDashboards = $m42LocalStorage.getItem(\"m42Dashboards\");\r\n if (localDashboards !== undefined && localDashboards !== null) {\r\n var m42Dashboards = JSON.parse(localDashboards);\r\n } else {\r\n var m42Dashboards = {};\r\n }\r\n\r\n if (m42Dashboards[dashboardId] === undefined) {\r\n m42Dashboards[dashboardId] = {};\r\n }\r\n\r\n m42Dashboards[dashboardId][deviceType] = widgetLayouts;\r\n $m42LocalStorage.setItem(\"m42Dashboards\", JSON.stringify(m42Dashboards));\r\n\r\n dfd.resolve();\r\n }\r\n\r\n return dfd.promise;\r\n };\r\n\r\n}]);\r\n","'use strict';\r\n\r\nangular.module('m42Dashboards', [\"gridster\",\"uuid4\",'angular-md5']);\r\n\r\n\r\n","'use strict';\r\n\r\nangular.module('m42Dashboards').service('$m42LocalStorageDataProvider', ['$q','$m42LocalStorage', function ($q,$m42LocalStorage) {\r\n var self = this;\r\n\r\n self.loadDashboardWidgets = function (dashboardId) {\r\n var dfd = $q.defer();\r\n\r\n var loadedDashboardWidgets;\r\n var localDashboards = $m42LocalStorage.getItem(\"m42Dashboards\");\r\n\r\n if (localDashboards !== undefined && localDashboards !== null) {\r\n var m42Dashboards = JSON.parse(localDashboards);\r\n\r\n if (m42Dashboards[dashboardId] !== undefined && m42Dashboards[dashboardId].widgets !== undefined) {\r\n loadedDashboardWidgets = m42Dashboards[dashboardId].widgets;\r\n dfd.resolve(loadedDashboardWidgets);\r\n }\r\n }\r\n else {\r\n // currently no dashboard in local storage so we just return an empty array.\r\n dfd.resolve([]);\r\n }\r\n\r\n return dfd.promise;\r\n };\r\n\r\n self.saveDashboardWidgets = function (dashboardId, dashboardWidgets) {\r\n var dfd = $q.defer();\r\n\r\n if (dashboardId && dashboardWidgets) {\r\n var localDashboards = $m42LocalStorage.getItem(\"m42Dashboards\");\r\n if (localDashboards !== undefined && localDashboards !== null) {\r\n var m42Dashboards = JSON.parse(localDashboards);\r\n }\r\n else {\r\n var m42Dashboards = {};\r\n }\r\n if (m42Dashboards[dashboardId] === undefined) {\r\n m42Dashboards[dashboardId] = {};\r\n }\r\n m42Dashboards[dashboardId].widgets = dashboardWidgets;\r\n $m42LocalStorage.setItem(\"m42Dashboards\", JSON.stringify(m42Dashboards));\r\n dfd.resolve();\r\n }else{\r\n\r\n dfd.reject();\r\n }\r\n return dfd.promise;\r\n };\r\n}]);","'use strict';\r\n\r\nangular.module('m42Dashboards').service('$m42DashboardDataCoordinator', ['$q', '$m42DataQueryCache', function ($q, $m42DataQueryCache) {\r\n var self = this;\r\n\r\n /*\r\n * Holds all registered dataSources -> (api)functions that can be called with queryoption parameters\r\n */\r\n var dataSources = {};\r\n\r\n\r\n /*\r\n * Registers a DataSource to be used whenever needed\r\n */\r\n self.registerDatasource = function (name, options, groupingProperties, filterProperties, queryCallback) {\r\n var dfd = $q.defer();\r\n\r\n if (name !== undefined && angular.isString(name) && name.length !== 0) {\r\n dataSources[name] = {\r\n name: name,\r\n function: queryCallback,\r\n groupingProperties: groupingProperties,\r\n filterProperties: filterProperties,\r\n\r\n options: options\r\n };\r\n dfd.resolve();\r\n } else {\r\n dfd.reject;\r\n }\r\n\r\n return dfd.promise;\r\n };\r\n\r\n self.invalidateCache = function () {\r\n return $q.when($m42DataQueryCache.invalidateCache());\r\n };\r\n\r\n\r\n self.getDatasources = function () {\r\n return dataSources;\r\n };\r\n\r\n\r\n self.getDatasource = function (name) {\r\n if (name !== undefined && dataSources[name]) {\r\n return dataSources[name];\r\n } else\r\n return null\r\n };\r\n\r\n\r\n /*\r\n * Performs a data query (Ensure concurrent queries are handled)\r\n */\r\n self.query = function (name, queryOptions) {\r\n\r\n // Check the queryCache if there is already a the same query available (name and options together build the cachekey)\r\n var runningQueryPromise = $m42DataQueryCache.getQuery(name, queryOptions);\r\n\r\n if (!runningQueryPromise) {\r\n\r\n //If not, create a running promise in the queryCache with name + cachekey\r\n runningQueryPromise = $m42DataQueryCache.registerQuery(name, queryOptions);\r\n\r\n // get the registered datasource\r\n var datasource = self.getDatasource(name);\r\n\r\n // query data\r\n if (datasource) {\r\n datasource.function(queryOptions).then(function (result) {\r\n // commit the result (resolves the promise)\r\n $m42DataQueryCache.commitQuery(runningQueryPromise, result)\r\n },\r\n null,\r\n function (notification) {\r\n if (notification) {\r\n runningQueryPromise.notify(notification);\r\n }\r\n }).catch(function(error){\r\n\t\t\t\t\trunningQueryPromise.reject();\r\n\t\t\t\t});\r\n }\r\n }\r\n\r\n // return the promise\r\n\r\n return runningQueryPromise.promise;\r\n }\r\n\r\n\r\n}]);\r\n","angular.module('m42Dashboards').service('$m42DashboardLayoutManagerService', ['$rootScope', '$q', '$document', '$window', function ($rootScope, $q, $document, $window) {\r\n var self = this;\r\n\r\n self.currentWidgets = {};\r\n\r\n self.loadDashboardLayout = function (dashboardId, layoutDataProvider, deviceType) {\r\n return layoutDataProvider.loadDashboardLayout(dashboardId, deviceType);\r\n };\r\n\r\n self.storeDashboardLayout = function (dashboardId, widgetLayouts, layoutDataProvider, deviceType) {\r\n return layoutDataProvider.storeDashboardLayout(dashboardId, widgetLayouts, deviceType);\r\n };\r\n\r\n /*\r\n * Returns the standard layout when no specific layout is available\r\n */\r\n self.getDefaultLayoutSync = function (dashboardId, widgetId) {\r\n return {\r\n id: widgetId,\r\n frame: {\r\n origin: {x: 0, y: 0},\r\n size: {w: 1, h: 1}\r\n }\r\n }\r\n };\r\n\r\n var dragEventLastMousePosition = undefined;\r\n\r\n self.defaultGridOptions = function () {\r\n return {\r\n columns: 12, // the width of the grid, in columns\r\n pushing: true, // whether to push other items out of the way on move or resize\r\n floating: true, // whether to automatically float items up so they stack (you can temporarily disable if you are adding unsorted items with ng-repeat)\r\n swapping: false, // whether or not to have items of the same size switch places instead of pushing down if they are the same size\r\n width: 'auto', // can be an integer or 'auto'. 'auto' scales gridster to be the full width of its containing element\r\n colWidth: 160,//'auto', // can be an integer or 'auto'. 'auto' uses the pixel width of the element divided by 'columns'\r\n rowHeight: 160,//'match', // can be an integer or 'match'. Match uses the colWidth, giving you square widgets.\r\n margins: [10, 10], // the pixel distance between each widget\r\n outerMargin: true, // whether margins apply to outer edges of the grid\r\n isMobile: false, // stacks the grid items if true\r\n mobileBreakPoint: 600, // if the screen is not wider that this, remove the grid layout and stack the items\r\n mobileModeEnabled: false, // whether or not to toggle mobile mode when screen width is less than mobileBreakPoint\r\n minColumns: 3, // the minimum columns the grid must have\r\n minRows: 2, // the minimum height of the grid, in rows\r\n maxRows: 100,\r\n defaultSizeX: 2, // the default width of a gridster item, if not specifed\r\n defaultSizeY: 1, // the default height of a gridster item, if not specified\r\n minSizeX: 1, // minimum column width of an item\r\n maxSizeX: 6, // maximum column width of an item\r\n minSizeY: 1, // minumum row height of an item\r\n maxSizeY: 6, // maximum row height of an item\r\n saveGridItemCalculatedHeightInMobile: false, // grid item height in mobile display. true- to use the calculated height by sizeY given\r\n resizable: {\r\n enabled: false,\r\n handles: ['n', 'e', 's', 'w', 'ne', 'se', 'sw', 'nw'],\r\n start: function (event, $element, widget) {\r\n\t\t\t\t\t$rootScope.$emit(\"editingM42Dashboard\", {})\r\n }, // optional callback fired when resize is started,\r\n resize: function (event, $element, widget) {\r\n }, // optional callback fired when item is resized,\r\n stop: function (event, $element, widget) {\r\n\t\t\t\t\t$rootScope.$emit(\"editingM42DashboardFinished\", {})\r\n } // optional callback fired when item is finished resizing\r\n },\r\n draggable: {\r\n enabled: true, // whether dragging items is supported\r\n // handle: '.my-class', // optional selector for resize handle\r\n scrollSensitivity: 20, // distance in pixels from the edge of the viewport after which the viewport should scroll, relative to pointer\r\n scrollSpeed: 15, // speed at which the window should scroll once the mouse pointer gets within scrollSensitivity distance\r\n nestingEnabled: false, // wether to allow items to be dragged to a parent/child/sibling gridster instance. when true, needs implementation of \"addItem\" and \"removeItem\" callbacks and \"addItem\" callback on parent instance\r\n start: function (event, $element, widget) {\r\n if (event.target.className !== \"delete-widget-icon ng-scope\") {\r\n dragEventLastMousePosition = event.pageX;\r\n $element.addClass(\"m42-griditem-dragging\");\r\n\t\t\t\t\t\t$rootScope.$emit(\"editingM42Dashboard\", {})\r\n }\r\n\r\n }, // optional callback fired// when drag is started,\r\n drag: function (event, $element, widget) {\r\n if (event.target.className !== \"delete-widget-icon ng-scope\") {\r\n if (event.pageX > dragEventLastMousePosition) {\r\n $element.removeClass(\"m42-griditem-rotate-left\");\r\n $element.addClass(\"m42-griditem-rotate-right\");\r\n dragEventLastMousePosition = event.pageX\r\n\r\n } else if (event.pageX < dragEventLastMousePosition) {\r\n $element.removeClass(\"m42-griditem-rotate-right\");\r\n $element.addClass(\"m42-griditem-rotate-left\");\r\n dragEventLastMousePosition = event.pageX;\r\n }\r\n }\r\n }, // optional callback fired when item is moved,\r\n stop: function (event, $element, widget) {\r\n $element.removeClass(\"m42-griditem-dragging\");\r\n $element.removeClass(\"m42-griditem-rotate-left\");\r\n $element.removeClass(\"m42-griditem-rotate-right\");\r\n\t\t\t\t\t$rootScope.$emit(\"editingM42DashboardFinished\", {})\r\n }, // optional callback fired when item is finished dragging\r\n addItem: function (widget) {\r\n }, // optional callback fired when item was moved from another gridster instance to this instance,\r\n removeItem: function (widget) {\r\n } // optional callback fired when item was moved to another gridster instance from this instance\r\n }\r\n };\r\n\r\n }\r\n\r\n}]);\r\n\r\n\r\n\r\n\r\n","/**\r\n * Created by jgrimm on 14.06.2016.\r\n */\r\nangular.module('m42Dashboards').service('$m42DashboardManagerService', ['$m42DashboardLayoutManagerService', '$m42DashboardDataCoordinator', '$q', '$rootScope', function ($m42DashboardLayoutManagerService, $m42DashboardDataCoordinator, $q,$rootScope) {\r\n var self = this;\r\n\r\n self.registeredDashboards = {};\r\n self.availableWidgetTypes = [];\r\n\r\n var registerAvailableWidgetTypes = function (registryWidgets) {\r\n\r\n for (var i = 0; i < registryWidgets.length; i++) {\r\n if (self.availableWidgetTypes.indexOf(registryWidgets[i].type) === -1)\r\n self.availableWidgetTypes.push(registryWidgets[i].type);\r\n }\r\n };\r\n\r\n self.addWidgetToDashboard = function (dashboardIdentifier, widget) {\r\n if (angular.isString(dashboardIdentifier) && self.registeredDashboards[dashboardIdentifier]) {\r\n if(widget.defaultSize && widget.defaultSize.w !== undefined && widget.defaultSize.h !== undefined){\r\n widget.sizeX = widget.defaultSize.w;\r\n widget.sizeY = widget.defaultSize.h;\r\n }\r\n\t\t\tif(widget.defaultPosition && widget.defaultPosition.x !== undefined && widget.defaultPosition.y !== undefined){\r\n\t\t\t\twidget.row = widget.defaultPosition.x;\r\n\t\t\t\twidget.col = widget.defaultPosition.y;\r\n\t\t\t}\r\n self.registeredDashboards[dashboardIdentifier].push(widget);\r\n\r\n\t\t\t$rootScope.$emit(\"m42WidgetAdded\", {\r\n\t\t\t\tid: widget.id\r\n\t\t\t});\r\n }\r\n };\r\n self.updateWidgetInDashboard = function (dashboardIdentifier, widget) {\r\n\r\n if (angular.isString(dashboardIdentifier) && self.registeredDashboards[dashboardIdentifier]) {\r\n var dashboard = self.registeredDashboards[dashboardIdentifier];\r\n\r\n for (var i = 0; i < dashboard.length; i++) {\r\n if (dashboard[i].id === widget.id) {\r\n dashboard[i].params = widget.params;\r\n dashboard[i] = {\r\n col:dashboard[i].col,\r\n row:dashboard[i].row,\r\n sizeX:dashboard[i].sizeX,\r\n sizeY: dashboard[i].sizeY,\r\n id:widget.id,\r\n type:widget.type,\r\n params: widget.params\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n self.loadDashboard = function (dashboardIdentifier, deviceType, dashboardDataProvider, dashboardLayoutDataProvider) {\r\n\r\n return dashboardDataProvider.loadDashboardWidgets(dashboardIdentifier).then(function (loadedWidgets) {\r\n return $m42DashboardLayoutManagerService.loadDashboardLayout(dashboardIdentifier, dashboardLayoutDataProvider, deviceType).then(function (loadedWidgetLayouts) {\r\n\r\n var checkedWidgets = [];\r\n\r\n // Check if a widget Registry is connected to the dashboard to ensure that only those widgets get loaded that are also available in the registry\r\n if (self.availableWidgetTypes.length !== 0) {\r\n for (var i = 0; i < loadedWidgets.length; i++) {\r\n if (self.availableWidgetTypes.indexOf(loadedWidgets[i].type) !== -1) {\r\n checkedWidgets.push(loadedWidgets[i]);\r\n }\r\n }\r\n } else {\r\n // Otherwise load the widgets\r\n checkedWidgets = loadedWidgets;\r\n }\r\n\r\n // index layout by id\r\n var indexedLayoutItems = {};\r\n loadedWidgetLayouts.forEach(function (layout) {\r\n indexedLayoutItems[layout.id] = layout;\r\n });\r\n\r\n // visit every widget and apply layout\r\n checkedWidgets.forEach(function (widget) {\r\n\r\n // generate a layout for the widget\r\n var layout = indexedLayoutItems[widget.id];\r\n\r\n if (layout === undefined) {\r\n\r\n layout = $m42DashboardLayoutManagerService.getDefaultLayoutSync(dashboardIdentifier, widget.id);\r\n\r\n if(widget.defaultSize && widget.defaultSize.w !== undefined && widget.defaultSize.h !== undefined){\r\n angular.extend(layout.frame.size, widget.defaultSize);\r\n }\r\n\t\t\t\t\t\tif(widget.defaultPosition && widget.defaultPosition.x !== undefined && widget.defaultPosition.y !== undefined){\r\n\t\t\t\t\t\t\tangular.extend(layout.frame.origin, widget.defaultPosition);\r\n\t\t\t\t\t\t}\r\n }\r\n // extend the object\r\n angular.extend(widget, layout);\r\n });\r\n\r\n // done\r\n return $q.when(checkedWidgets);\r\n });\r\n });\r\n };\r\n\r\n self.loadRegistryWidgets = function (registryWidgetsProvider) {\r\n var dfd = $q.defer();\r\n\r\n registryWidgetsProvider.loadRegistryWidgets().then(function (loadedWidgets) {\r\n registerAvailableWidgetTypes(loadedWidgets);\r\n dfd.resolve(loadedWidgets);\r\n }).catch(function (error) {\r\n dfd.reject(error);\r\n });\r\n\r\n return dfd.promise;\r\n };\r\n\r\n self.registerDashboard = function (dashboardIdentifier, dashboardFunctions) {\r\n self.registeredDashboards[dashboardIdentifier] = dashboardFunctions;\r\n };\r\n\r\n self.storeDashboard = function (dashboardIdentifier, dashboardWidgetsLayout, dashboardWidgets, deviceType, dashboardDataProvider, dashboardLayoutDataProvider) {\r\n $m42DashboardLayoutManagerService.storeDashboardLayout(dashboardIdentifier, dashboardWidgetsLayout, dashboardLayoutDataProvider, deviceType).then(function () {\r\n return dashboardDataProvider.saveDashboardWidgets(dashboardIdentifier, dashboardWidgets);\r\n })\r\n };\r\n\r\n self.refreshWidgetData = function () {\r\n return $q.when($m42DashboardDataCoordinator.invalidateCache());\r\n };\r\n\r\n self.getDefaultDashboardOptions = function () {\r\n return $m42DashboardLayoutManagerService.defaultGridOptions();\r\n };\r\n\r\n\r\n}]);\r\n\r\n","\r\n'use strict';\r\n\r\nangular.module('m42Dashboards').service('$m42DataQueryCache', ['$q','md5', function ($q,md5) {\r\n var self = this;\r\n\r\n var queryCache = {};\r\n\r\n var createQueryKey = function (name, queryOptions){\r\n var queryHash = md5.createHash(name + queryOptions);\r\n\r\n return queryHash ;\r\n };\r\n\r\n\r\n self.invalidateCache = function () {\r\n queryCache = {};\r\n };\r\n\r\n // Check if a query is already stored in the queryCache\r\n self.getQuery = function(name, queryOptions){\r\n var query = queryCache[createQueryKey(name,queryOptions)];\r\n\r\n if(query !== undefined) {\r\n return query;\r\n }else\r\n return null;\r\n };\r\n\r\n // Create a running promise in the queryCache with name + cachekey\r\n self.registerQuery = function (name,queryOptions){\r\n var queryPromise = $q.defer();\r\n\r\n queryCache[createQueryKey(name,queryOptions)] = queryPromise;\r\n\r\n return queryPromise;\r\n };\r\n\r\n // Commit/Resolve a runningQueryPromise with its result\r\n self.commitQuery = function(runningQueryPromise, result){\r\n runningQueryPromise.resolve(result);\r\n };\r\n\r\n}]);","'use strict';\r\n\r\nangular.module('m42Dashboards')\r\n\r\n\t.service('$m42LocalStorage', ['$window', function ($window) {\r\n\t\tvar self = this;\r\n\r\n\t\tself.length = function () {\r\n\t\t\ttry {\r\n\t\t\t\treturn $window.localStorage.length;\r\n\t\t\t} catch (e) {\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tself.key = function (index) {\r\n\t\t\ttry {\r\n\t\t\t\treturn $window.localStorage.key(index);\r\n\t\t\t} catch (e) {\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tself.getItem = function (key, defaultValue) {\r\n\t\t\ttry {\r\n\t\t\t\treturn $window.localStorage.getItem(key);\r\n\t\t\t} catch (e) {\r\n\t\t\t\treturn defaultValue;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tself.setItem = function (key, value) {\r\n\t\t\ttry {\r\n\t\t\t\t$window.localStorage.setItem(key, value);\r\n\t\t\t} catch (e) {\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tself.removeItem = function (key) {\r\n\t\t\ttry {\r\n\t\t\t\t$window.localStorage.removeItem(key);\r\n\t\t\t} catch (e) {\r\n\t\t\t}\r\n\t\t};\r\n\t}]);\r\n\r\n\r\n","/*\n angular-md5 - v0.1.8 \n 2015-11-17\n*/\n\n/* commonjs package manager support (eg componentjs) */\nif (typeof module !== \"undefined\" && typeof exports !== \"undefined\" && module.exports === exports) {\n module.exports = \"angular-md5\";\n}\n(function(angular) {\n angular.module(\"angular-md5\", [ \"gdi2290.md5\" ]);\n angular.module(\"ngMd5\", [ \"gdi2290.md5\" ]);\n angular.module(\"gdi2290.md5\", [ \"gdi2290.gravatar-filter\", \"gdi2290.md5-service\", \"gdi2290.md5-filter\" ]);\n \"use strict\";\n angular.module(\"gdi2290.gravatar-filter\", []).filter(\"gravatar\", [ \"md5\", function(md5) {\n var cache = {};\n return function(text, defaultText) {\n if (!cache[text]) {\n defaultText = defaultText ? md5.createHash(defaultText.toString().toLowerCase()) : \"\";\n cache[text] = text ? md5.createHash(text.toString().toLowerCase()) : defaultText;\n }\n return cache[text];\n };\n } ]);\n \"use strict\";\n angular.module(\"gdi2290.md5-filter\", []).filter(\"md5\", [ \"md5\", function(md5) {\n return function(text) {\n return text ? md5.createHash(text.toString().toLowerCase()) : text;\n };\n } ]);\n \"use strict\";\n angular.module(\"gdi2290.md5-service\", []).factory(\"md5\", [ function() {\n var md5 = {\n createHash: function(str) {\n if (null === str) {\n return null;\n }\n var xl;\n var rotateLeft = function(lValue, iShiftBits) {\n return lValue << iShiftBits | lValue >>> 32 - iShiftBits;\n };\n var addUnsigned = function(lX, lY) {\n var lX4, lY4, lX8, lY8, lResult;\n lX8 = lX & 2147483648;\n lY8 = lY & 2147483648;\n lX4 = lX & 1073741824;\n lY4 = lY & 1073741824;\n lResult = (lX & 1073741823) + (lY & 1073741823);\n if (lX4 & lY4) {\n return lResult ^ 2147483648 ^ lX8 ^ lY8;\n }\n if (lX4 | lY4) {\n if (lResult & 1073741824) {\n return lResult ^ 3221225472 ^ lX8 ^ lY8;\n } else {\n return lResult ^ 1073741824 ^ lX8 ^ lY8;\n }\n } else {\n return lResult ^ lX8 ^ lY8;\n }\n };\n var _F = function(x, y, z) {\n return x & y | ~x & z;\n };\n var _G = function(x, y, z) {\n return x & z | y & ~z;\n };\n var _H = function(x, y, z) {\n return x ^ y ^ z;\n };\n var _I = function(x, y, z) {\n return y ^ (x | ~z);\n };\n var _FF = function(a, b, c, d, x, s, ac) {\n a = addUnsigned(a, addUnsigned(addUnsigned(_F(b, c, d), x), ac));\n return addUnsigned(rotateLeft(a, s), b);\n };\n var _GG = function(a, b, c, d, x, s, ac) {\n a = addUnsigned(a, addUnsigned(addUnsigned(_G(b, c, d), x), ac));\n return addUnsigned(rotateLeft(a, s), b);\n };\n var _HH = function(a, b, c, d, x, s, ac) {\n a = addUnsigned(a, addUnsigned(addUnsigned(_H(b, c, d), x), ac));\n return addUnsigned(rotateLeft(a, s), b);\n };\n var _II = function(a, b, c, d, x, s, ac) {\n a = addUnsigned(a, addUnsigned(addUnsigned(_I(b, c, d), x), ac));\n return addUnsigned(rotateLeft(a, s), b);\n };\n var convertToWordArray = function(str) {\n var lWordCount;\n var lMessageLength = str.length;\n var lNumberOfWords_temp1 = lMessageLength + 8;\n var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - lNumberOfWords_temp1 % 64) / 64;\n var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;\n var lWordArray = new Array(lNumberOfWords - 1);\n var lBytePosition = 0;\n var lByteCount = 0;\n while (lByteCount < lMessageLength) {\n lWordCount = (lByteCount - lByteCount % 4) / 4;\n lBytePosition = lByteCount % 4 * 8;\n lWordArray[lWordCount] = lWordArray[lWordCount] | str.charCodeAt(lByteCount) << lBytePosition;\n lByteCount++;\n }\n lWordCount = (lByteCount - lByteCount % 4) / 4;\n lBytePosition = lByteCount % 4 * 8;\n lWordArray[lWordCount] = lWordArray[lWordCount] | 128 << lBytePosition;\n lWordArray[lNumberOfWords - 2] = lMessageLength << 3;\n lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;\n return lWordArray;\n };\n var wordToHex = function(lValue) {\n var wordToHexValue = \"\", wordToHexValue_temp = \"\", lByte, lCount;\n for (lCount = 0; lCount <= 3; lCount++) {\n lByte = lValue >>> lCount * 8 & 255;\n wordToHexValue_temp = \"0\" + lByte.toString(16);\n wordToHexValue = wordToHexValue + wordToHexValue_temp.substr(wordToHexValue_temp.length - 2, 2);\n }\n return wordToHexValue;\n };\n var x = [], k, AA, BB, CC, DD, a, b, c, d, S11 = 7, S12 = 12, S13 = 17, S14 = 22, S21 = 5, S22 = 9, S23 = 14, S24 = 20, S31 = 4, S32 = 11, S33 = 16, S34 = 23, S41 = 6, S42 = 10, S43 = 15, S44 = 21;\n x = convertToWordArray(str);\n a = 1732584193;\n b = 4023233417;\n c = 2562383102;\n d = 271733878;\n xl = x.length;\n for (k = 0; k < xl; k += 16) {\n AA = a;\n BB = b;\n CC = c;\n DD = d;\n a = _FF(a, b, c, d, x[k + 0], S11, 3614090360);\n d = _FF(d, a, b, c, x[k + 1], S12, 3905402710);\n c = _FF(c, d, a, b, x[k + 2], S13, 606105819);\n b = _FF(b, c, d, a, x[k + 3], S14, 3250441966);\n a = _FF(a, b, c, d, x[k + 4], S11, 4118548399);\n d = _FF(d, a, b, c, x[k + 5], S12, 1200080426);\n c = _FF(c, d, a, b, x[k + 6], S13, 2821735955);\n b = _FF(b, c, d, a, x[k + 7], S14, 4249261313);\n a = _FF(a, b, c, d, x[k + 8], S11, 1770035416);\n d = _FF(d, a, b, c, x[k + 9], S12, 2336552879);\n c = _FF(c, d, a, b, x[k + 10], S13, 4294925233);\n b = _FF(b, c, d, a, x[k + 11], S14, 2304563134);\n a = _FF(a, b, c, d, x[k + 12], S11, 1804603682);\n d = _FF(d, a, b, c, x[k + 13], S12, 4254626195);\n c = _FF(c, d, a, b, x[k + 14], S13, 2792965006);\n b = _FF(b, c, d, a, x[k + 15], S14, 1236535329);\n a = _GG(a, b, c, d, x[k + 1], S21, 4129170786);\n d = _GG(d, a, b, c, x[k + 6], S22, 3225465664);\n c = _GG(c, d, a, b, x[k + 11], S23, 643717713);\n b = _GG(b, c, d, a, x[k + 0], S24, 3921069994);\n a = _GG(a, b, c, d, x[k + 5], S21, 3593408605);\n d = _GG(d, a, b, c, x[k + 10], S22, 38016083);\n c = _GG(c, d, a, b, x[k + 15], S23, 3634488961);\n b = _GG(b, c, d, a, x[k + 4], S24, 3889429448);\n a = _GG(a, b, c, d, x[k + 9], S21, 568446438);\n d = _GG(d, a, b, c, x[k + 14], S22, 3275163606);\n c = _GG(c, d, a, b, x[k + 3], S23, 4107603335);\n b = _GG(b, c, d, a, x[k + 8], S24, 1163531501);\n a = _GG(a, b, c, d, x[k + 13], S21, 2850285829);\n d = _GG(d, a, b, c, x[k + 2], S22, 4243563512);\n c = _GG(c, d, a, b, x[k + 7], S23, 1735328473);\n b = _GG(b, c, d, a, x[k + 12], S24, 2368359562);\n a = _HH(a, b, c, d, x[k + 5], S31, 4294588738);\n d = _HH(d, a, b, c, x[k + 8], S32, 2272392833);\n c = _HH(c, d, a, b, x[k + 11], S33, 1839030562);\n b = _HH(b, c, d, a, x[k + 14], S34, 4259657740);\n a = _HH(a, b, c, d, x[k + 1], S31, 2763975236);\n d = _HH(d, a, b, c, x[k + 4], S32, 1272893353);\n c = _HH(c, d, a, b, x[k + 7], S33, 4139469664);\n b = _HH(b, c, d, a, x[k + 10], S34, 3200236656);\n a = _HH(a, b, c, d, x[k + 13], S31, 681279174);\n d = _HH(d, a, b, c, x[k + 0], S32, 3936430074);\n c = _HH(c, d, a, b, x[k + 3], S33, 3572445317);\n b = _HH(b, c, d, a, x[k + 6], S34, 76029189);\n a = _HH(a, b, c, d, x[k + 9], S31, 3654602809);\n d = _HH(d, a, b, c, x[k + 12], S32, 3873151461);\n c = _HH(c, d, a, b, x[k + 15], S33, 530742520);\n b = _HH(b, c, d, a, x[k + 2], S34, 3299628645);\n a = _II(a, b, c, d, x[k + 0], S41, 4096336452);\n d = _II(d, a, b, c, x[k + 7], S42, 1126891415);\n c = _II(c, d, a, b, x[k + 14], S43, 2878612391);\n b = _II(b, c, d, a, x[k + 5], S44, 4237533241);\n a = _II(a, b, c, d, x[k + 12], S41, 1700485571);\n d = _II(d, a, b, c, x[k + 3], S42, 2399980690);\n c = _II(c, d, a, b, x[k + 10], S43, 4293915773);\n b = _II(b, c, d, a, x[k + 1], S44, 2240044497);\n a = _II(a, b, c, d, x[k + 8], S41, 1873313359);\n d = _II(d, a, b, c, x[k + 15], S42, 4264355552);\n c = _II(c, d, a, b, x[k + 6], S43, 2734768916);\n b = _II(b, c, d, a, x[k + 13], S44, 1309151649);\n a = _II(a, b, c, d, x[k + 4], S41, 4149444226);\n d = _II(d, a, b, c, x[k + 11], S42, 3174756917);\n c = _II(c, d, a, b, x[k + 2], S43, 718787259);\n b = _II(b, c, d, a, x[k + 9], S44, 3951481745);\n a = addUnsigned(a, AA);\n b = addUnsigned(b, BB);\n c = addUnsigned(c, CC);\n d = addUnsigned(d, DD);\n }\n var temp = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);\n return temp.toLowerCase();\n }\n };\n return md5;\n } ]);\n})(angular);","angular.module('SignalR', [])\r\n.constant('$', window.jQuery)\r\n.factory('Hub', ['$', function ($) {\r\n\t//This will allow same connection to be used for all Hubs\r\n\t//It also keeps connection as singleton.\r\n\tvar globalConnections = [];\r\n\r\n\tfunction initNewConnection(options) {\r\n\t\tvar connection = null;\r\n\t\tif (options && options.rootPath) {\r\n\t\t\tconnection = $.hubConnection(options.rootPath, { useDefaultPath: false });\r\n\t\t} else {\r\n\t\t\tconnection = $.hubConnection();\r\n\t\t}\r\n\r\n\t\tconnection.logging = (options && options.logging ? true : false);\r\n\t\treturn connection;\r\n\t}\r\n\r\n\tfunction getConnection(options) {\r\n\t\tvar useSharedConnection = !(options && options.useSharedConnection === false);\r\n\t\tif (useSharedConnection) {\r\n\t\t\treturn typeof globalConnections[options.rootPath] === 'undefined' ?\r\n\t\t\tglobalConnections[options.rootPath] = initNewConnection(options) :\r\n\t\t\tglobalConnections[options.rootPath];\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn initNewConnection(options);\r\n\t\t}\r\n\t}\r\n\r\n\treturn function (hubName, options) {\r\n\t\tvar Hub = this;\r\n\r\n\t\tHub.connection = getConnection(options);\r\n\t\tHub.proxy = Hub.connection.createHubProxy(hubName);\r\n\r\n\t\tHub.on = function (event, fn) {\r\n\t\t\tHub.proxy.on(event, fn);\r\n\t\t};\r\n\t\tHub.invoke = function (method, args) {\r\n\t\t\treturn Hub.proxy.invoke.apply(Hub.proxy, arguments)\r\n\t\t};\r\n\t\tHub.disconnect = function () {\r\n\t\t\tHub.connection.stop();\r\n\t\t};\r\n\t\tHub.connect = function (queryParams) {\r\n\t\t\tvar startOptions = {};\r\n\t\t\tif (options.transport) startOptions.transport = options.transport;\r\n\t\t\tif (options.jsonp) startOptions.jsonp = options.jsonp;\r\n\t\t\tif (options.pingInterval !== undefined) startOptions.pingInterval = options.pingInterval;\r\n\t\t\t\r\n\t\t\tif (angular.isDefined(options.withCredentials)) startOptions.withCredentials = options.withCredentials;\r\n\t\t\tif(queryParams) Hub.connection.qs = queryParams;\r\n\t\t\treturn Hub.connection.start(startOptions);\r\n\t\t};\r\n\r\n\t\tif (options && options.listeners) {\r\n\t\t\tObject.getOwnPropertyNames(options.listeners)\r\n\t\t\t.filter(function (propName) {\r\n\t\t \treturn typeof options.listeners[propName] === 'function';})\r\n\t\t .forEach(function (propName) {\r\n\t\t \tHub.on(propName, options.listeners[propName]);\r\n\t\t \t});\r\n\t\t}\r\n\t\tif (options && options.methods) {\r\n\t\t\tangular.forEach(options.methods, function (method) {\r\n\t\t\t\tHub[method] = function () {\r\n\t\t\t\t\tvar args = $.makeArray(arguments);\r\n\t\t\t\t\targs.unshift(method);\r\n\t\t\t\t\treturn Hub.invoke.apply(Hub, args);\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (options && options.queryParams) {\r\n\t\t\tHub.connection.qs = options.queryParams;\r\n\t\t}\r\n\t\tif (options && options.errorHandler) {\r\n\t\t\tHub.connection.error(options.errorHandler);\r\n\t\t}\r\n\t\tif (options && options.stateChanged) {\r\n\t\t Hub.connection.stateChanged(options.stateChanged);\r\n\t\t}\r\n\r\n\t\t//Adding additional property of promise allows to access it in rest of the application.\r\n\t\tif(options.autoConnect === undefined || options.autoConnect){\r\n\t\t\tHub.promise = Hub.connect();\t\r\n\t\t}\r\n\t\t\r\n\t\treturn Hub;\r\n\t};\r\n}]);\r\n\r\n// Common.js package manager support (e.g. ComponentJS, WebPack)\r\nif (typeof module !== 'undefined' && typeof exports !== 'undefined' && module.exports === exports) {\r\n module.exports = 'SignalR';\r\n}\r\n","//\n// Copyright Kamil Pękala http://github.com/kamilkp\n// angular-sortable-view v0.0.21 2021/06/02\n//\n\n;(function(window, angular){\n\t'use strict';\n\t/* jshint eqnull:true */\n\t/* jshint -W041 */\n\t/* jshint -W030 */\n\n\tvar module = angular.module('angular-sortable-view', []);\n\tmodule.directive('svRoot', [function(){\n\t\tfunction shouldBeAfter(elem, pointer, isGrid){\n\t\t\treturn isGrid ? elem.x - pointer.x < 0 : elem.y - pointer.y < 0;\n\t\t}\n\t\tfunction getSortableElements(key){\n\t\t\treturn ROOTS_MAP[key];\n\t\t}\n\t\tfunction removeSortableElements(key){\n\t\t\tdelete ROOTS_MAP[key];\n\t\t}\n\t\tfunction getCoords(rect) {\n\t\t\treturn [\n\t\t\t\t{ x: rect.left, y: rect.top },\n\t\t\t\t{ x: rect.left + rect.width, y: rect.top },\n\t\t\t\t{ x: rect.left, y: rect.top + rect.height },\n\t\t\t\t{ x: rect.left + rect.width, y: rect.top + rect.height },\n\t\t\t\t{ x: rect.left + rect.width/2, y: rect.top + rect.height/2 },\n\t\t\t];\n\t\t}\n\t\tfunction getDistance(point, coords) {\n\t\t\tif (\n\t\t\t\tpoint.x >= coords[0].x && point.x <= coords[1].x &&\n\t\t\t\tpoint.y >= coords[0].y && point.y <= coords[2].y\n\t\t\t) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\treturn Math.min.apply(Math, coords.map(function(coord){\n\t\t\t\treturn (coord.x - point.x)*(coord.x - point.x) + (coord.y - point.y)*(coord.y - point.y);\n\t\t\t}));\n\t\t}\n\n\t\tvar sortingInProgress;\n\t\tvar ROOTS_MAP = Object.create(null);\n\t\t// window.ROOTS_MAP = ROOTS_MAP; // for debug purposes\n\n\t\treturn {\n\t\t\trestrict: 'A',\n\t\t\tcontroller: ['$scope', '$attrs', '$interpolate', '$parse', function($scope, $attrs, $interpolate, $parse){\n\t\t\t\tvar mapKey = $interpolate($attrs.svRoot)($scope) || $scope.$id;\n\t\t\t\tif(!ROOTS_MAP[mapKey]) ROOTS_MAP[mapKey] = [];\n\n\t\t\t\tvar that = this;\n\t\t\t\tvar candidates; // set of possible destinations\n\t\t\t\tvar $placeholder;// placeholder element\n\t\t\t\tvar options; // sortable options\n\t\t\t\tvar $helper; // helper element - the one thats being dragged around with the mouse pointer\n\t\t\t\tvar $original; // original element\n\t\t\t\tvar $target; // last best candidate\n\t\t\t\tvar isGrid = false;\n\t\t\t\tvar onSort = $parse($attrs.svOnSort);\n\n\t\t\t\t// ----- hack due to https://github.com/angular/angular.js/issues/8044\n\t\t\t\t$attrs.svOnStart = $attrs.$$element[0].attributes['sv-on-start'];\n\t\t\t\t$attrs.svOnStart = $attrs.svOnStart && $attrs.svOnStart.value;\n\n\t\t\t\t$attrs.svOnStop = $attrs.$$element[0].attributes['sv-on-stop'];\n\t\t\t\t$attrs.svOnStop = $attrs.svOnStop && $attrs.svOnStop.value;\n\t\t\t\t// -------------------------------------------------------------------\n\n\t\t\t\tvar onStart = $parse($attrs.svOnStart);\n\t\t\t\tvar onStop = $parse($attrs.svOnStop);\n\n\t\t\t\tthis.sortingInProgress = function(){\n\t\t\t\t\treturn sortingInProgress;\n\t\t\t\t};\n\n\t\t\t\tif($attrs.svGrid){ // sv-grid determined explicite\n\t\t\t\t\tisGrid = $attrs.svGrid === \"true\" ? true : $attrs.svGrid === \"false\" ? false : null;\n\t\t\t\t\tif(isGrid === null)\n\t\t\t\t\t\tthrow 'Invalid value of sv-grid attribute';\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t// check if at least one of the lists have a grid like layout\n\t\t\t\t\t$scope.$watchCollection(function(){\n\t\t\t\t\t\treturn getSortableElements(mapKey);\n\t\t\t\t\t}, function(collection){\n\t\t\t\t\t\tisGrid = false;\n\t\t\t\t\t\tvar array = collection.filter(function(item){\n\t\t\t\t\t\t\treturn !item.container;\n\t\t\t\t\t\t}).map(function(item){\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tpart: item.getPart().id,\n\t\t\t\t\t\t\t\ty: item.element[0].getBoundingClientRect().top\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t\tvar dict = Object.create(null);\n\t\t\t\t\t\tarray.forEach(function(item){\n\t\t\t\t\t\t\tif(dict[item.part])\n\t\t\t\t\t\t\t\tdict[item.part].push(item.y);\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tdict[item.part] = [item.y];\n\t\t\t\t\t\t});\n\t\t\t\t\t\tObject.keys(dict).forEach(function(key){\n\t\t\t\t\t\t\tdict[key].sort();\n\t\t\t\t\t\t\tdict[key].forEach(function(item, index){\n\t\t\t\t\t\t\t\tif(index < dict[key].length - 1){\n\t\t\t\t\t\t\t\t\tif(item > 0 && item === dict[key][index + 1]){\n\t\t\t\t\t\t\t\t\t\tisGrid = true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tthis.$moveUpdate = function(opts, mouse, svElement, svOriginal, svPlaceholder, originatingPart, originatingIndex){\n\t\t\t\t\tvar svRect = svElement[0].getBoundingClientRect();\n\t\t\t\t\tif(opts.tolerance === 'element') {\n\t\t\t\t\t\tmouse.x = ~~(svRect.left + svRect.width/2);\n\t\t\t\t\t\tmouse.y = ~~(svRect.top + svRect.height/2);\n\t\t\t\t\t}\n\n\t\t\t\t\tsortingInProgress = true;\n\t\t\t\t\tcandidates = [];\n\t\t\t\t\tif(!$placeholder){\n\t\t\t\t\t\tif(svPlaceholder){ // custom placeholder\n\t\t\t\t\t\t\t$placeholder = svPlaceholder.clone();\n\t\t\t\t\t\t\t$placeholder.removeClass('ng-hide');\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{ // default placeholder\n\t\t\t\t\t\t\t$placeholder = svOriginal.clone();\n\t\t\t\t\t\t\t$placeholder.addClass('sv-visibility-hidden');\n\t\t\t\t\t\t\t$placeholder.addClass('sv-placeholder');\n\t\t\t\t\t\t\t$placeholder.css({\n\t\t\t\t\t\t\t\t'height': svRect.height + 'px',\n\t\t\t\t\t\t\t\t'width': svRect.width + 'px'\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsvOriginal.after($placeholder);\n\t\t\t\t\t\tif (!originatingPart.copyMode) {\n\t\t\t\t\t\t\tsvOriginal.addClass('ng-hide');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// cache options, helper and original element reference\n\t\t\t\t\t\t$original = svOriginal;\n\t\t\t\t\t\toptions = opts;\n\t\t\t\t\t\t$helper = svElement;\n\n\t\t\t\t\t\tonStart($scope, {\n\t\t\t\t\t\t\t$helper: {element: $helper},\n\t\t\t\t\t\t\t$part: originatingPart.model(originatingPart.scope),\n\t\t\t\t\t\t\t$index: originatingIndex,\n\t\t\t\t\t\t\t$item: originatingPart.model(originatingPart.scope)[originatingIndex]\n\t\t\t\t\t\t});\n\t\t\t\t\t\t$scope.$root && $scope.$root.$$phase || $scope.$apply();\n\t\t\t\t\t}\n\n\t\t\t\t\t// ----- move the element\n\t\t\t\t\t$helper[0].reposition({\n\t\t\t\t\t\tx: mouse.x + 2 * windowScrollX() - mouse.initialWindowScroll.x - mouse.offset.x*svRect.width,\n\t\t\t\t\t\ty: mouse.y + 2 * windowScrollY() - mouse.initialWindowScroll.y - mouse.offset.y*svRect.height\n\t\t\t\t\t});\n\n\t\t\t\t\t// ------ manage candidates\n\t\t\t\t\tgetSortableElements(mapKey).forEach(function(se, index){\n\t\t\t\t\t\tif(opts.containment != null){\n\t\t\t\t\t\t\t// TODO: optimize this since it could be calculated only once when the moving begins\n\t\t\t\t\t\t\tif(\n\t\t\t\t\t\t\t\t!elementMatchesSelector(se.element, opts.containment) &&\n\t\t\t\t\t\t\t\t!elementMatchesSelector(se.element, opts.containment + ' *')\n\t\t\t\t\t\t\t) return; // element is not within allowed containment\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar rect = se.element[0].getBoundingClientRect();\n\t\t\t\t\t\tvar seCoords = getCoords(rect);\n\n\t\t\t\t\t\tvar center = {\n\t\t\t\t\t\t\tx: ~~(rect.left + rect.width/2),\n\t\t\t\t\t\t\ty: ~~(rect.top + rect.height/2)\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tvar centerHoriz = {\n\t\t\t\t\t\t\tx: ~~(rect.left + rect.width/2),\n\t\t\t\t\t\t\ty: ~~(rect.top)\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tvar centerVert = {\n\t\t\t\t\t\t\tx: ~~(rect.left),\n\t\t\t\t\t\t\ty: ~~(rect.top + rect.height/2)\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif(\n\t\t\t\t\t\t\t!se.container && // not the container element\n\t\t\t\t\t\t\t(se.element[0].scrollHeight || se.element[0].scrollWidth)\n\t\t\t\t\t\t){ // element is visible\n\t\t\t\t\t\t\tvar sePart = se.getPart();\n\t\t\t\t\t\t\tcandidates.push({\n\t\t\t\t\t\t\t\telement: se.element,\n\t\t\t\t\t\t\t\tq: getDistance(mouse, seCoords),\n\t\t\t\t\t\t\t\tview: sePart,\n\t\t\t\t\t\t\t\ttargetIndex: se.getIndex(),\n\t\t\t\t\t\t\t\tafter: shouldBeAfter(center, mouse, ('isGrid' in sePart) ? sePart.isGrid : isGrid)\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(\n\t\t\t\t\t\t\tse.container &&\n\t\t\t\t\t\t\t!se.element[0].querySelector('[sv-element]:not(.sv-placeholder):not(.sv-source)') // empty container\n\t\t\t\t\t\t){\n\t\t\t\t\t\t\tvar c = center;\n\t\t\t\t\t\t\tif (se.centerVariant === 'vertical') {\n\t\t\t\t\t\t\t\tc = centerVert;\n\t\t\t\t\t\t\t} else if (se.centerVariant === 'horizontal') {\n\t\t\t\t\t\t\t\tc = centerHoriz;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcandidates.push({\n\t\t\t\t\t\t\t\telement: se.element,\n\t\t\t\t\t\t\t\tq: (c.x - mouse.x)*(c.x - mouse.x) + (c.y - mouse.y)*(c.y - mouse.y),\n\t\t\t\t\t\t\t\tview: se.getPart(),\n\t\t\t\t\t\t\t\ttargetIndex: 0,\n\t\t\t\t\t\t\t\tcontainer: true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tvar pRect = $placeholder[0].getBoundingClientRect();\n\t\t\t\t\tcandidates.push({\n\t\t\t\t\t\tq: getDistance(mouse, getCoords(pRect)),\n\t\t\t\t\t\telement: $placeholder,\n\t\t\t\t\t\tplaceholder: true\n\t\t\t\t\t});\n\t\t\t\t\tcandidates.sort(function(a, b){\n\t\t\t\t\t\treturn a.q - b.q;\n\t\t\t\t\t});\n\n\t\t\t\t\tcandidates.forEach(function(cand, index){\n\t\t\t\t\t\tif(index === 0 && !cand.placeholder && !cand.container){\n\t\t\t\t\t\t\t$target = cand;\n\t\t\t\t\t\t\tcand.element.addClass('sv-candidate');\n\t\t\t\t\t\t\tif(cand.after)\n\t\t\t\t\t\t\t\tcand.element.after($placeholder);\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tinsertElementBefore(cand.element, $placeholder);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if(index === 0 && cand.container){\n\t\t\t\t\t\t\t$target = cand;\n\t\t\t\t\t\t\tcand.element.append($placeholder);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tcand.element.removeClass('sv-candidate');\n\t\t\t\t\t});\n\t\t\t\t};\n\n\t\t\t\tthis.$drop = function(originatingPart, index, options){\n\t\t\t\t\tif(!$placeholder) return;\n\n\t\t\t\t\tif(options.revert && !($target && $target.view && $target.view.noRevert)){\n\t\t\t\t\t\tvar placeholderRect = $placeholder[0].getBoundingClientRect();\n\t\t\t\t\t\tvar helperRect = $helper[0].getBoundingClientRect();\n\t\t\t\t\t\tvar distance = Math.sqrt(\n\t\t\t\t\t\t\tMath.pow(helperRect.top - placeholderRect.top, 2) +\n\t\t\t\t\t\t\tMath.pow(helperRect.left - placeholderRect.left, 2)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tvar duration = +options.revert*distance/200; // constant speed: duration depends on distance\n\t\t\t\t\t\tduration = Math.min(duration, +options.revert); // however it's not longer that options.revert\n\n\t\t\t\t\t\t['-webkit-', '-moz-', '-ms-', '-o-', ''].forEach(function(prefix){\n\t\t\t\t\t\t\tif(typeof $helper[0].style[prefix + 'transition'] !== \"undefined\")\n\t\t\t\t\t\t\t\t$helper[0].style[prefix + 'transition'] = 'all ' + duration + 'ms ease';\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(afterRevert, duration);\n\t\t\t\t\t\t$helper.css({\n\t\t\t\t\t\t\t'top': placeholderRect.top + document.body.scrollTop + 'px',\n\t\t\t\t\t\t\t'left': placeholderRect.left + document.body.scrollLeft + 'px'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tafterRevert();\n\n\t\t\t\t\tfunction afterRevert(){\n\t\t\t\t\t\tsortingInProgress = false;\n\t\t\t\t\t\t$placeholder.remove();\n\t\t\t\t\t\t$helper.remove();\n\t\t\t\t\t\t$original.removeClass('ng-hide');\n\n\t\t\t\t\t\tcandidates = void 0;\n\t\t\t\t\t\t$placeholder = void 0;\n\t\t\t\t\t\toptions = void 0;\n\t\t\t\t\t\t$helper = void 0;\n\t\t\t\t\t\t$original = void 0;\n\n\t\t\t\t\t\t// sv-on-stop callback\n\t\t\t\t\t\tonStop($scope, {\n\t\t\t\t\t\t\t$part: originatingPart.model(originatingPart.scope),\n\t\t\t\t\t\t\t$index: index,\n\t\t\t\t\t\t\t$item: originatingPart.model(originatingPart.scope)[index]\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif($target){\n\t\t\t\t\t\t\t$target.element.removeClass('sv-candidate');\n\t\t\t\t\t\t\tvar spliced = originatingPart.model(originatingPart.scope).splice(index, 1);\n\t\t\t\t\t\t\tvar targetIndex = $target.targetIndex;\n\t\t\t\t\t\t\tif($target.view === originatingPart && $target.targetIndex > index)\n\t\t\t\t\t\t\t\ttargetIndex--;\n\t\t\t\t\t\t\tif($target.after)\n\t\t\t\t\t\t\t\ttargetIndex++;\n\t\t\t\t\t\t\t$target.view.model($target.view.scope).splice(targetIndex, 0, spliced[0]);\n\n\t\t\t\t\t\t\t// sv-on-sort callback\n\t\t\t\t\t\t\tif($target.view !== originatingPart || index !== targetIndex)\n\t\t\t\t\t\t\t\tonSort($scope, {\n\t\t\t\t\t\t\t\t\t$partTo: $target.view.model($target.view.scope),\n\t\t\t\t\t\t\t\t\t$partFrom: originatingPart.model(originatingPart.scope),\n\t\t\t\t\t\t\t\t\t$item: spliced[0],\n\t\t\t\t\t\t\t\t\t$indexTo: targetIndex,\n\t\t\t\t\t\t\t\t\t$indexFrom: index\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$target = void 0;\n\n\t\t\t\t\t\t$scope.$root && $scope.$root.$$phase || $scope.$apply();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.addToSortableElements = function(se){\n\t\t\t\t\tgetSortableElements(mapKey).push(se);\n\t\t\t\t};\n\t\t\t\tthis.removeFromSortableElements = function(se){\n\t\t\t\t\tvar elems = getSortableElements(mapKey);\n\t\t\t\t\tvar index = elems.indexOf(se);\n\t\t\t\t\tif(index > -1){\n\t\t\t\t\t\telems.splice(index, 1);\n\t\t\t\t\t\tif(elems.length === 0)\n\t\t\t\t\t\t\tremoveSortableElements(mapKey);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}]\n\t\t};\n\t}]);\n\n\tmodule.directive('svPart', ['$parse', function($parse){\n\t\treturn {\n\t\t\trestrict: 'A',\n\t\t\trequire: '^svRoot',\n\t\t\tcontroller: ['$scope', function($scope){\n\t\t\t\t$scope.$ctrl = this;\n\t\t\t\tthis.getPart = function(){\n\t\t\t\t\treturn $scope.part;\n\t\t\t\t};\n\t\t\t\tthis.$drop = function(index, options){\n\t\t\t\t\t$scope.$sortableRoot.$drop($scope.part, index, options);\n\t\t\t\t};\n\t\t\t}],\n\t\t\tscope: true,\n\t\t\tlink: function($scope, $element, $attrs, $sortable){\n\t\t\t\tif(!$attrs.svPart) throw new Error('no model provided');\n\t\t\t\tvar model = $parse($attrs.svPart);\n\t\t\t\tif(!model.assign) throw new Error('model not assignable');\n\n\t\t\t\t$scope.part = {\n\t\t\t\t\tid: $scope.$id,\n\t\t\t\t\telement: $element,\n\t\t\t\t\tmodel: model,\n\t\t\t\t\tcopyMode: $attrs.svCopy === 'true',\n\t\t\t\t\tnoRevert: $attrs.svNoRevert === 'true',\n\t\t\t\t\tscope: $scope\n\t\t\t\t};\n\n\t\t\t\tif ('isGrid' in $attrs) {\n\t\t\t\t\t$scope.part.isGrid = $attrs.isGrid === 'true';\n\t\t\t\t}\n\n\t\t\t\t$scope.$sortableRoot = $sortable;\n\n\t\t\t\tvar sortablePart = {\n\t\t\t\t\telement: $element,\n\t\t\t\t\tgetPart: $scope.$ctrl.getPart,\n\t\t\t\t\tcontainer: true,\n\t\t\t\t\tcenterVariant: $attrs.svCenter || 'both',\n\t\t\t\t};\n\t\t\t\t$sortable.addToSortableElements(sortablePart);\n\t\t\t\t$scope.$on('$destroy', function(){\n\t\t\t\t\t$sortable.removeFromSortableElements(sortablePart);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}]);\n\n\tmodule.directive('svElement', ['$parse', '$window', function($parse, $window){\n\t\treturn {\n\t\t\trestrict: 'A',\n\t\t\trequire: ['^svPart', '^svRoot'],\n\t\t\tcontroller: ['$scope', function($scope){\n\t\t\t\t$scope.$ctrl = this;\n\t\t\t}],\n\t\t\tlink: function($scope, $element, $attrs, $controllers){\n\t\t\t\tvar sortableElement = {\n\t\t\t\t\telement: $element,\n\t\t\t\t\tgetPart: $controllers[0].getPart,\n\t\t\t\t\tgetIndex: function(){\n\t\t\t\t\t\treturn $scope.$index;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t$controllers[1].addToSortableElements(sortableElement);\n\t\t\t\t$scope.$on('$destroy', function(){\n\t\t\t\t\t$controllers[1].removeFromSortableElements(sortableElement);\n\t\t\t\t});\n\n\t\t\t\tvar handle = $element;\n\t\t\t\thandle.on('mousedown touchstart', onMousedown);\n\t\t\t\t$scope.$watch('$ctrl.handle', function(customHandle){\n\t\t\t\t\tif(customHandle){\n\t\t\t\t\t\thandle.off('mousedown touchstart', onMousedown);\n\t\t\t\t\t\thandle = customHandle;\n\t\t\t\t\t\thandle.on('mousedown touchstart', onMousedown);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tvar helper;\n\t\t\t\t$scope.$watch('$ctrl.helper', function(customHelper){\n\t\t\t\t\tif(customHelper){\n\t\t\t\t\t\thelper = customHelper;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tvar placeholder;\n\t\t\t\t$scope.$watch('$ctrl.placeholder', function(customPlaceholder){\n\t\t\t\t\tif(customPlaceholder){\n\t\t\t\t\t\tplaceholder = customPlaceholder;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tvar body = angular.element(document.body);\n\t\t\t\tvar html = angular.element(document.documentElement);\n\t\t\t\tvar windowElement = angular.element($window);\n\n\t\t\t\tvar moveExecuted;\n\n\t\t\t\tfunction onMousedown(e){\n\t\t\t\t\ttouchFix(e);\n\n\t\t\t\t\tif($controllers[1].sortingInProgress()) return;\n\t\t\t\t\tif(e.button != 0 && e.type === 'mousedown') return;\n\n\t\t\t\t\tvar svHandleDisabledAttr = e.target.attributes['sv-handle-disabled'];\n\t\t\t\t\tif(svHandleDisabledAttr && svHandleDisabledAttr.value === 'true') return;\n\n\t\t\t\t\tmoveExecuted = false;\n\t\t\t\t\tvar opts = $parse($attrs.svElement)($scope);\n\t\t\t\t\topts = angular.extend({}, {\n\t\t\t\t\t\ttolerance: 'pointer',\n\t\t\t\t\t\trevert: 200,\n\t\t\t\t\t\tcontainment: 'body',\n\t\t\t\t\t\tpositionFixedAnchor: null,\n\t\t\t\t\t}, opts);\n\n\t\t\t\t\tvar positionFixedAnchorRect;\n\t\t\t\t\tif(opts.containment){\n\t\t\t\t\t\tvar containmentRect = closestElement.call($element, opts.containment)[0].getBoundingClientRect();\n\t\t\t\t\t}\n\n\t\t\t\t\tif(opts.positionFixedAnchor) {\n\t\t\t\t\t\tpositionFixedAnchorRect = closestElement.call($element, opts.positionFixedAnchor)[0].getBoundingClientRect();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar target = $element;\n\t\t\t\t\tvar clientRect = $element[0].getBoundingClientRect();\n\t\t\t\t\tvar clone;\n\n\t\t\t\t\tif(!helper) helper = $controllers[0].helper;\n\t\t\t\t\tif(!placeholder) placeholder = $controllers[0].placeholder;\n\t\t\t\t\tif(helper){\n\t\t\t\t\t\tclone = helper.clone();\n\t\t\t\t\t\tclone.removeClass('ng-hide');\n\t\t\t\t\t\tclone.css({\n\t\t\t\t\t\t\t'left': clientRect.left + document.body.scrollLeft + 'px',\n\t\t\t\t\t\t\t'top': clientRect.top + document.body.scrollTop + 'px'\n\t\t\t\t\t\t});\n\t\t\t\t\t\ttarget.addClass('sv-visibility-hidden');\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tclone = target.clone();\n\t\t\t\t\t\tclone.addClass('sv-helper').css({\n\t\t\t\t\t\t\t'left': clientRect.left + document.body.scrollLeft + 'px',\n\t\t\t\t\t\t\t'top': clientRect.top + document.body.scrollTop + 'px',\n\t\t\t\t\t\t\t'width': clientRect.width + 'px'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tclone[0].reposition = function(coords){\n\t\t\t\t\t\tvar targetLeft = coords.x;\n\t\t\t\t\t\tvar targetTop = coords.y;\n\t\t\t\t\t\tvar helperRect = clone[0].getBoundingClientRect();\n\n\t\t\t\t\t\tvar body = document.body;\n\n\t\t\t\t\t\tif(containmentRect){\n\t\t\t\t\t\t\tif(targetTop < containmentRect.top + windowScrollY()) // top boundary\n\t\t\t\t\t\t\t\ttargetTop = containmentRect.top + windowScrollY();\n\t\t\t\t\t\t\tif(targetTop + helperRect.height > containmentRect.top + windowScrollY() + containmentRect.height) // bottom boundary\n\t\t\t\t\t\t\t\ttargetTop = containmentRect.top + windowScrollY() + containmentRect.height - helperRect.height;\n\t\t\t\t\t\t\tif(targetLeft < containmentRect.left + windowScrollX()) // left boundary\n\t\t\t\t\t\t\t\ttargetLeft = containmentRect.left + windowScrollX();\n\t\t\t\t\t\t\tif(targetLeft + helperRect.width > containmentRect.left + windowScrollX() + containmentRect.width) // right boundary\n\t\t\t\t\t\t\t\ttargetLeft = containmentRect.left + windowScrollX() + containmentRect.width - helperRect.width;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar left = targetLeft - windowScrollX();\n\t\t\t\t\t\tvar top = targetTop - windowScrollY();\n\n\t\t\t\t\t\tif (positionFixedAnchorRect) {\n\t\t\t\t\t\t\tleft -= positionFixedAnchorRect.left;\n\t\t\t\t\t\t\ttop -= positionFixedAnchorRect.top;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.style.left = left + 'px';\n\t\t\t\t\t\tthis.style.top = top + 'px';\n\t\t\t\t\t};\n\n\t\t\t\t\tvar pointerOffset = {\n\t\t\t\t\t\tx: (e.clientX - clientRect.left)/clientRect.width,\n\t\t\t\t\t\ty: (e.clientY - clientRect.top)/clientRect.height\n\t\t\t\t\t};\n\n\t\t\t\t\tvar initialWindowScroll = {\n\t\t\t\t\t\tx: windowScrollX(),\n\t\t\t\t\t\ty: windowScrollY(),\n\t\t\t\t\t};\n\n\t\t\t\t\tvar lastMoveEvent = null;\n\n\t\t\t\t\thtml.addClass('sv-sorting-in-progress');\n\t\t\t\t\twindowElement.on('scroll', onWindowScroll);\n\t\t\t\t\thtml.on('mousemove touchmove', onMousemove).on('mouseup touchend touchcancel', function mouseup(e){\n\t\t\t\t\t\thtml.off('mousemove touchmove', onMousemove);\n\t\t\t\t\t\thtml.off('mouseup touchend touchcancel', mouseup);\n\t\t\t\t\t\twindowElement.off('scroll', onWindowScroll);\n\t\t\t\t\t\tlastMoveEvent = null\n\n\t\t\t\t\t\thtml.removeClass('sv-sorting-in-progress');\n\t\t\t\t\t\tif(moveExecuted){\n\t\t\t\t\t\t\t$controllers[0].$drop($scope.$index, opts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$element.removeClass('sv-visibility-hidden');\n\t\t\t\t\t});\n\n\t\t\t\t\t// onMousemove(e);\n\t\t\t\t\tfunction onMousemove(e){\n\t\t\t\t\t\ttouchFix(e);\n\t\t\t\t\t\tif(!moveExecuted){\n\t\t\t\t\t\t\t$element.parent().prepend(clone);\n\t\t\t\t\t\t\tmoveExecuted = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$controllers[1].$moveUpdate(opts, {\n\t\t\t\t\t\t\tx: e.clientX,\n\t\t\t\t\t\t\ty: e.clientY,\n\t\t\t\t\t\t\toffset: pointerOffset,\n\t\t\t\t\t\t\tinitialWindowScroll: initialWindowScroll\n\t\t\t\t\t\t}, clone, $element, placeholder, $controllers[0].getPart(), $scope.$index);\n\n\t\t\t\t\t\tlastMoveEvent = e;\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction onWindowScroll() {\n\t\t\t\t\t\tif (lastMoveEvent) {\n\t\t\t\t\t\t\tonMousemove(lastMoveEvent);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}]);\n\n\tmodule.directive('svHandle', function(){\n\t\treturn {\n\t\t\trequire: '?^svElement',\n\t\t\tlink: function($scope, $element, $attrs, $ctrl){\n\t\t\t\tif($ctrl)\n\t\t\t\t\t$ctrl.handle = $element.add($ctrl.handle); // support multiple handles\n\t\t\t}\n\t\t};\n\t});\n\n\tmodule.directive('svHelper', function(){\n\t\treturn {\n\t\t\trequire: ['?^svPart', '?^svElement'],\n\t\t\tlink: function($scope, $element, $attrs, $ctrl){\n\t\t\t\t$element.addClass('sv-helper').addClass('ng-hide');\n\t\t\t\tif($ctrl[1])\n\t\t\t\t\t$ctrl[1].helper = $element;\n\t\t\t\telse if($ctrl[0])\n\t\t\t\t\t$ctrl[0].helper = $element;\n\t\t\t}\n\t\t};\n\t});\n\n\tmodule.directive('svPlaceholder', function(){\n\t\treturn {\n\t\t\trequire: ['?^svPart', '?^svElement'],\n\t\t\tlink: function($scope, $element, $attrs, $ctrl){\n\t\t\t\t$element.addClass('sv-placeholder').addClass('ng-hide');\n\t\t\t\tif($ctrl[1])\n\t\t\t\t\t$ctrl[1].placeholder = $element;\n\t\t\t\telse if($ctrl[0])\n\t\t\t\t\t$ctrl[0].placeholder = $element;\n\t\t\t}\n\t\t};\n\t});\n\n\tangular.element(document.head).append([\n\t\t''\n\t].join(''));\n\n\tfunction touchFix(e){\n\t\tif(!('clientX' in e) && !('clientY' in e)) {\n\t\t\tvar touches = e.touches || e.originalEvent.touches;\n\t\t\tif(touches && touches.length) {\n\t\t\t\te.clientX = touches[0].clientX;\n\t\t\t\te.clientY = touches[0].clientY;\n\t\t\t}\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\tfunction getPreviousSibling(element){\n\t\telement = element[0];\n\t\tif(element.previousElementSibling)\n\t\t\treturn angular.element(element.previousElementSibling);\n\t\telse{\n\t\t\tvar sib = element.previousSibling;\n\t\t\twhile(sib != null && sib.nodeType != 1)\n\t\t\t\tsib = sib.previousSibling;\n\t\t\treturn angular.element(sib);\n\t\t}\n\t}\n\n\tfunction insertElementBefore(element, newElement){\n\t\tvar prevSibl = getPreviousSibling(element);\n\t\tif(prevSibl.length > 0){\n\t\t\tprevSibl.after(newElement);\n\t\t}\n\t\telse{\n\t\t\telement.parent().prepend(newElement);\n\t\t}\n\t}\n\n\tfunction windowScrollX() {\n return 'scrollX' in window ? window.scrollX : document[0].documentElement.scrollLeft;\n }\n\n function windowScrollY() {\n return 'scrollY' in window ? window.scrollY : document[0].documentElement.scrollTop;\n }\n\n\tvar dde = document.documentElement,\n\tmatchingFunction = dde.matches ? 'matches' :\n\t\t\t\t\t\tdde.matchesSelector ? 'matchesSelector' :\n\t\t\t\t\t\tdde.webkitMatches ? 'webkitMatches' :\n\t\t\t\t\t\tdde.webkitMatchesSelector ? 'webkitMatchesSelector' :\n\t\t\t\t\t\tdde.msMatches ? 'msMatches' :\n\t\t\t\t\t\tdde.msMatchesSelector ? 'msMatchesSelector' :\n\t\t\t\t\t\tdde.mozMatches ? 'mozMatches' :\n\t\t\t\t\t\tdde.mozMatchesSelector ? 'mozMatchesSelector' : null;\n\tif(matchingFunction == null)\n\t\tthrow 'This browser doesn\\'t support the HTMLElement.matches method';\n\n\tfunction elementMatchesSelector(element, selector){\n\t\tif(element instanceof angular.element) element = element[0];\n\t\tif(matchingFunction !== null)\n\t\t\treturn element[matchingFunction](selector);\n\t}\n\n\tvar closestElement = angular.element.prototype.closest || function (selector){\n\t\tvar el = this[0].parentNode;\n\t\twhile(el !== document.documentElement && !el[matchingFunction](selector))\n\t\t\tel = el.parentNode;\n\n\t\tif(el[matchingFunction](selector))\n\t\t\treturn angular.element(el);\n\t\telse\n\t\t\treturn angular.element();\n\t};\n\n\t/*\n\t\tSimple implementation of jQuery's .add method\n\t */\n\tif(typeof angular.element.prototype.add !== 'function'){\n\t\tangular.element.prototype.add = function(elem){\n\t\t\tvar i, res = angular.element();\n\t\t\telem = angular.element(elem);\n\t\t\tfor(i=0;i 0; i >>>= 1, z += z) {\n if (i & 1) {\n string = z + string;\n }\n }\n return string;\n };\n\n var fromParts = function(timeLow, timeMid, timeHiAndVersion, clockSeqHiAndReserved, clockSeqLow, node) {\n var hex = paddedString(timeLow.toString(16), 8)\n + '-'\n + paddedString(timeMid.toString(16), 4)\n + '-'\n + paddedString(timeHiAndVersion.toString(16), 4)\n + '-'\n + paddedString(clockSeqHiAndReserved.toString(16), 2)\n + paddedString(clockSeqLow.toString(16), 2)\n + '-'\n + paddedString(node.toString(16), 12);\n return hex;\n };\n\n return {\n generate: function () {\n return fromParts(\n randomUI32(),\n randomUI16(),\n 0x4000 | randomUI12(),\n 0x80 | randomUI06(),\n randomUI08(),\n randomUI48()\n );\n },\n\n // addition by Ka-Jan to test for validity\n // Based on: http://stackoverflow.com/questions/7905929/how-to-test-valid-uuid-guid\n validate: function (uuid) {\n var testPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return testPattern.test(uuid);\n }\n };\n });\n\n}(angular));\n","export const enum DataType {\n\tStringType = 0,\n\tGuidType = 1,\n\tIntType = 2,\n\tDateType = 3,\n\tLongType = 4,\n\tFloatType = 5,\n\tBlobType = 6,\n\tVirtualRelationEnd = 7,\n\tTextType = 8,\n\tBoolType = 9,\n\tDecimalType = 10,\n\tExpressionGuidType = 11,\n\tBitType = 12,\n\tVarBinaryType = 13,\n\tStringTypeShort = 14,\n\tCurrency = 15,\n\tCurrencyCode = 16,\n\tUnknown = 200\n}\nexport const enum ProtectionLevel {\n\tNotSet = 0,\n\tInternal = 1,\n\tSystem = 2,\n\tCustomizable = 3,\n\tCustom = 4,\n\tStaging = 5\n}\nexport const enum SchemaType {\n\tObjectClass = 0,\n\tObjectType = 1,\n\tPickup = 2,\n\tAttribute = 3,\n\tRelation = 4\n}\nexport const enum RelationType {\n\tOneToMany = 0,\n\tManyToMany = 1,\n\tNullOrOneToOne = 2,\n\tZeroOrOneToMany = 3,\n\tOneToOne = 4,\n\tNoRelation = 5,\n\tManyToOne = 61440,\n\tOneToZeroOrOne = 61442,\n\tManyToZeroOrOne = 61443\n}\nexport const enum ClassType {\n\tCustomClass = 3,\n\tPickup = 4,\n\tCommonClass = 9,\n\tViewBased = 10,\n\tSimpleCommonClass = 12,\n\tSimpleCiBase = 13\n}\nexport type ObjectClassSchema = {\n\tAttributes?: AttributeSchema[];\n\tUsedInTypes?: SchemaObject[];\n\tCardinalities?: RelatedClassCardinality[];\n\tRelations?: RelationSchema[];\n\tUseSimpleExpression?: boolean;\n\tIsPickup?: boolean;\n\tData?: Data[];\n\tClassType?: ClassType;\n\tId?: string;\n\tInternalName?: string;\n\tDescription?: string;\n\tDisplayExpression?: string;\n\tDisplayName?: string;\n\tSchemaType?: SchemaType;\n\tProtectionLevel?: ProtectionLevel;\n\tEnableHistory?: boolean;\n\tDisplayNameLCID?: number[];\n};\nexport type AttributeSchema = {\n\tDatatype?: DataType;\n\tPrecision?: number;\n\tScale?: number;\n\tAllowNull?: boolean;\n\tIsPickup?: boolean;\n\tHasDefaultValue?: boolean;\n\tLength?: number;\n\tPickupClass?: SchemaObjectInfo;\n\tLanguageDependent?: boolean;\n\tPickupValueDbColumnName?: string;\n\tDefaultValue?: string;\n\tIsInternal?: boolean;\n\tContainsHtml?: boolean;\n\tId?: string;\n\tInternalName?: string;\n\tDescription?: string;\n\tDisplayExpression?: string;\n\tDisplayName?: string;\n\tSchemaType?: SchemaType;\n\tProtectionLevel?: ProtectionLevel;\n\tEnableHistory?: boolean;\n\tDisplayNameLCID?: number[];\n};\nexport type SchemaObjectInfo = {\n\tInternalName?: string;\n\tDisplayName?: string;\n\tId?: string;\n\tProtectionLevel?: ProtectionLevel;\n};\nexport type SchemaObject = {\n\tId?: string;\n\tInternalName?: string;\n\tDescription?: string;\n\tDisplayExpression?: string;\n\tDisplayName?: string;\n\tSchemaType?: SchemaType;\n\tProtectionLevel?: ProtectionLevel;\n\tEnableHistory?: boolean;\n\tDisplayNameLCID?: number[];\n};\nexport type RelatedClassCardinality = {\n\tTypeInternalName?: string;\n\tTypeId?: string;\n\tCardinality?: number;\n};\nexport type RelationSchema = {\n\tAttributeNameLeft?: string;\n\tAttributeNameRight?: string;\n\tAttributeDataTypeLeft?: DataType;\n\tAttributeDataTypeRight?: DataType;\n\tAttributeLeft?: SchemaObjectInfo;\n\tAttributeRight?: SchemaObjectInfo;\n\tClassLeft?: SchemaObjectInfo;\n\tClassRight?: SchemaObjectInfo;\n\tDisplayExpressionLeft?: string;\n\tDisplayExpressionRight?: string;\n\tDisplayNameLeft?: string;\n\tDisplayNameRight?: string;\n\tDescriptionLeft?: string;\n\tDescriptionRight?: string;\n\tDbNxMTableName?: string;\n\tRelationType?: RelationType;\n\tIsInternal?: boolean;\n\tId?: string;\n\tInternalName?: string;\n\tDescription?: string;\n\tDisplayExpression?: string;\n\tDisplayName?: string;\n\tSchemaType?: SchemaType;\n\tProtectionLevel?: ProtectionLevel;\n\tEnableHistory?: boolean;\n\tDisplayNameLCID?: number[];\n};\nexport type RequestDTO = {\n\tid?: string;\n};\nexport type ResponseDTO = ObjectClassSchema;\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = global.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n var INDICES_SUPPORT = true;\n try {\n RegExp('.', 'd');\n } catch (error) {\n INDICES_SUPPORT = false;\n }\n\n var O = {};\n // modern V8 bug\n var calls = '';\n var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n var addGetter = function (key, chr) {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(O, key, { get: function () {\n calls += chr;\n return true;\n } });\n };\n\n var pairs = {\n dotAll: 's',\n global: 'g',\n ignoreCase: 'i',\n multiline: 'm',\n sticky: 'y'\n };\n\n if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n for (var key in pairs) addGetter(key, pairs[key]);\n\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n configurable: true,\n get: regExpFlags\n});\n","/* jquery.signalR.core.js */\r\n/*global window:false */\r\n/*!\r\n * ASP.NET SignalR JavaScript Library 2.4.3\r\n * http://signalr.net/\r\n *\r\n * Copyright (c) .NET Foundation. All rights reserved.\r\n * Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n *\r\n */\r\n\r\n/// \r\n/// \r\n(function ($, window, undefined) {\r\n\r\n var resources = {\r\n nojQuery: \"jQuery was not found. Please ensure jQuery is referenced before the SignalR client JavaScript file.\",\r\n noTransportOnInit: \"No transport could be initialized successfully. Try specifying a different transport or none at all for auto initialization.\",\r\n errorOnNegotiate: \"Error during negotiation request.\",\r\n stoppedWhileLoading: \"The connection was stopped during page load.\",\r\n stoppedWhileNegotiating: \"The connection was stopped during the negotiate request.\",\r\n errorParsingNegotiateResponse: \"Error parsing negotiate response.\",\r\n errorRedirectionExceedsLimit: \"Negotiate redirection limit exceeded.\",\r\n errorDuringStartRequest: \"Error during start request. Stopping the connection.\",\r\n errorFromServer: \"Error message received from the server: '{0}'.\",\r\n stoppedDuringStartRequest: \"The connection was stopped during the start request.\",\r\n errorParsingStartResponse: \"Error parsing start response: '{0}'. Stopping the connection.\",\r\n invalidStartResponse: \"Invalid start response: '{0}'. Stopping the connection.\",\r\n protocolIncompatible: \"You are using a version of the client that isn't compatible with the server. Client version {0}, server version {1}.\",\r\n aspnetCoreSignalrServer: \"Detected a connection attempt to an ASP.NET Core SignalR Server. This client only supports connecting to an ASP.NET SignalR Server. See https://aka.ms/signalr-core-differences for details.\",\r\n sendFailed: \"Send failed.\",\r\n parseFailed: \"Failed at parsing response: {0}\",\r\n longPollFailed: \"Long polling request failed.\",\r\n eventSourceFailedToConnect: \"EventSource failed to connect.\",\r\n eventSourceError: \"Error raised by EventSource\",\r\n webSocketClosed: \"WebSocket closed.\",\r\n pingServerFailedInvalidResponse: \"Invalid ping response when pinging server: '{0}'.\",\r\n pingServerFailed: \"Failed to ping server.\",\r\n pingServerFailedStatusCode: \"Failed to ping server. Server responded with status code {0}, stopping the connection.\",\r\n pingServerFailedParse: \"Failed to parse ping server response, stopping the connection.\",\r\n noConnectionTransport: \"Connection is in an invalid state, there is no transport active.\",\r\n webSocketsInvalidState: \"The Web Socket transport is in an invalid state, transitioning into reconnecting.\",\r\n reconnectTimeout: \"Couldn't reconnect within the configured timeout of {0} ms, disconnecting.\",\r\n reconnectWindowTimeout: \"The client has been inactive since {0} and it has exceeded the inactivity timeout of {1} ms. Stopping the connection.\",\r\n jsonpNotSupportedWithAccessToken: \"The JSONP protocol does not support connections that require a Bearer token to connect, such as the Azure SignalR Service.\"\r\n };\r\n\r\n if (typeof ($) !== \"function\") {\r\n // no jQuery!\r\n throw new Error(resources.nojQuery);\r\n }\r\n\r\n var signalR,\r\n _connection,\r\n _pageLoaded = (window.document.readyState === \"complete\"),\r\n _pageWindow = $(window),\r\n _negotiateAbortText = \"__Negotiate Aborted__\",\r\n events = {\r\n onStart: \"onStart\",\r\n onStarting: \"onStarting\",\r\n onReceived: \"onReceived\",\r\n onError: \"onError\",\r\n onConnectionSlow: \"onConnectionSlow\",\r\n onReconnecting: \"onReconnecting\",\r\n onReconnect: \"onReconnect\",\r\n onStateChanged: \"onStateChanged\",\r\n onDisconnect: \"onDisconnect\"\r\n },\r\n ajaxDefaults = {\r\n processData: true,\r\n timeout: null,\r\n async: true,\r\n global: false,\r\n cache: false\r\n },\r\n log = function (msg, logging) {\r\n if (logging === false) {\r\n return;\r\n }\r\n var m;\r\n if (typeof (window.console) === \"undefined\") {\r\n return;\r\n }\r\n m = \"[\" + new Date().toTimeString() + \"] SignalR: \" + msg;\r\n if (window.console.debug) {\r\n window.console.debug(m);\r\n } else if (window.console.log) {\r\n window.console.log(m);\r\n }\r\n },\r\n\r\n changeState = function (connection, expectedState, newState) {\r\n if (expectedState === connection.state) {\r\n connection.state = newState;\r\n\r\n $(connection).triggerHandler(events.onStateChanged, [{ oldState: expectedState, newState: newState }]);\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n isDisconnecting = function (connection) {\r\n return connection.state === signalR.connectionState.disconnected;\r\n },\r\n\r\n supportsKeepAlive = function (connection) {\r\n return connection._.keepAliveData.activated &&\r\n connection.transport.supportsKeepAlive(connection);\r\n },\r\n\r\n configureStopReconnectingTimeout = function (connection) {\r\n var stopReconnectingTimeout,\r\n onReconnectTimeout;\r\n\r\n // Check if this connection has already been configured to stop reconnecting after a specified timeout.\r\n // Without this check if a connection is stopped then started events will be bound multiple times.\r\n if (!connection._.configuredStopReconnectingTimeout) {\r\n onReconnectTimeout = function (connection) {\r\n var message = signalR._.format(signalR.resources.reconnectTimeout, connection.disconnectTimeout);\r\n connection.log(message);\r\n $(connection).triggerHandler(events.onError, [signalR._.error(message, /* source */ \"TimeoutException\")]);\r\n connection.stop(/* async */ false, /* notifyServer */ false);\r\n };\r\n\r\n connection.reconnecting(function () {\r\n var connection = this;\r\n\r\n // Guard against state changing in a previous user defined even handler\r\n if (connection.state === signalR.connectionState.reconnecting) {\r\n stopReconnectingTimeout = window.setTimeout(function () { onReconnectTimeout(connection); }, connection.disconnectTimeout);\r\n }\r\n });\r\n\r\n connection.stateChanged(function (data) {\r\n if (data.oldState === signalR.connectionState.reconnecting) {\r\n // Clear the pending reconnect timeout check\r\n window.clearTimeout(stopReconnectingTimeout);\r\n }\r\n });\r\n\r\n connection._.configuredStopReconnectingTimeout = true;\r\n }\r\n };\r\n\r\n signalR = function (url, qs, logging) {\r\n /// Creates a new SignalR connection for the given url\r\n /// The URL of the long polling endpoint\r\n /// \r\n /// [Optional] Custom querystring parameters to add to the connection URL.\r\n /// If an object, every non-function member will be added to the querystring.\r\n /// If a string, it's added to the QS as specified.\r\n /// \r\n /// \r\n /// [Optional] A flag indicating whether connection logging is enabled to the browser\r\n /// console/log. Defaults to false.\r\n /// \r\n\r\n return new signalR.fn.init(url, qs, logging);\r\n };\r\n\r\n signalR._ = {\r\n defaultContentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\r\n\r\n ieVersion: (function () {\r\n var version,\r\n matches;\r\n\r\n if (window.navigator.appName === 'Microsoft Internet Explorer') {\r\n // Check if the user agent has the pattern \"MSIE (one or more numbers).(one or more numbers)\";\r\n matches = /MSIE ([0-9]+\\.[0-9]+)/.exec(window.navigator.userAgent);\r\n\r\n if (matches) {\r\n version = window.parseFloat(matches[1]);\r\n }\r\n }\r\n\r\n // undefined value means not IE\r\n return version;\r\n })(),\r\n\r\n error: function (message, source, context) {\r\n var e = new Error(message);\r\n e.source = source;\r\n\r\n if (typeof context !== \"undefined\") {\r\n e.context = context;\r\n }\r\n\r\n return e;\r\n },\r\n\r\n transportError: function (message, transport, source, context) {\r\n var e = this.error(message, source, context);\r\n e.transport = transport ? transport.name : undefined;\r\n return e;\r\n },\r\n\r\n format: function () {\r\n /// Usage: format(\"Hi {0}, you are {1}!\", \"Foo\", 100) \r\n var s = arguments[0];\r\n for (var i = 0; i < arguments.length - 1; i++) {\r\n s = s.replace(\"{\" + i + \"}\", arguments[i + 1]);\r\n }\r\n return s;\r\n },\r\n\r\n firefoxMajorVersion: function (userAgent) {\r\n // Firefox user agents: http://useragentstring.com/pages/Firefox/\r\n var matches = userAgent.match(/Firefox\\/(\\d+)/);\r\n if (!matches || !matches.length || matches.length < 2) {\r\n return 0;\r\n }\r\n return parseInt(matches[1], 10 /* radix */);\r\n },\r\n\r\n configurePingInterval: function (connection) {\r\n var config = connection._.config,\r\n onFail = function (error) {\r\n $(connection).triggerHandler(events.onError, [error]);\r\n };\r\n\r\n if (config && !connection._.pingIntervalId && config.pingInterval) {\r\n connection._.pingIntervalId = window.setInterval(function () {\r\n signalR.transports._logic.pingServer(connection).fail(onFail);\r\n }, config.pingInterval);\r\n }\r\n }\r\n };\r\n\r\n signalR.events = events;\r\n\r\n signalR.resources = resources;\r\n\r\n signalR.ajaxDefaults = ajaxDefaults;\r\n\r\n signalR.changeState = changeState;\r\n\r\n signalR.isDisconnecting = isDisconnecting;\r\n\r\n signalR.connectionState = {\r\n connecting: 0,\r\n connected: 1,\r\n reconnecting: 2,\r\n disconnected: 4\r\n };\r\n\r\n signalR.hub = {\r\n start: function () {\r\n // This will get replaced with the real hub connection start method when hubs is referenced correctly\r\n throw new Error(\"SignalR: Error loading hubs. Ensure your hubs reference is correct, e.g. .\");\r\n }\r\n };\r\n\r\n // .on() was added in version 1.7.0, .load() was removed in version 3.0.0 so we fallback to .load() if .on() does\r\n // not exist to not break existing applications\r\n if (typeof _pageWindow.on === \"function\") {\r\n _pageWindow.on(\"load\", function () { _pageLoaded = true; });\r\n }\r\n else {\r\n _pageWindow.load(function () { _pageLoaded = true; });\r\n }\r\n\r\n function validateTransport(requestedTransport, connection) {\r\n /// Validates the requested transport by cross checking it with the pre-defined signalR.transports\r\n /// The designated transports that the user has specified.\r\n /// The connection that will be using the requested transports. Used for logging purposes.\r\n /// \r\n\r\n if ($.isArray(requestedTransport)) {\r\n // Go through transport array and remove an \"invalid\" tranports\r\n for (var i = requestedTransport.length - 1; i >= 0; i--) {\r\n var transport = requestedTransport[i];\r\n if ($.type(transport) !== \"string\" || !signalR.transports[transport]) {\r\n connection.log(\"Invalid transport: \" + transport + \", removing it from the transports list.\");\r\n requestedTransport.splice(i, 1);\r\n }\r\n }\r\n\r\n // Verify we still have transports left, if we dont then we have invalid transports\r\n if (requestedTransport.length === 0) {\r\n connection.log(\"No transports remain within the specified transport array.\");\r\n requestedTransport = null;\r\n }\r\n } else if (!signalR.transports[requestedTransport] && requestedTransport !== \"auto\") {\r\n connection.log(\"Invalid transport: \" + requestedTransport.toString() + \".\");\r\n requestedTransport = null;\r\n } else if (requestedTransport === \"auto\" && signalR._.ieVersion <= 8) {\r\n // If we're doing an auto transport and we're IE8 then force longPolling, #1764\r\n return [\"longPolling\"];\r\n\r\n }\r\n\r\n return requestedTransport;\r\n }\r\n\r\n function getDefaultPort(protocol) {\r\n if (protocol === \"http:\") {\r\n return 80;\r\n } else if (protocol === \"https:\") {\r\n return 443;\r\n }\r\n }\r\n\r\n function addDefaultPort(protocol, url) {\r\n // Remove ports from url. We have to check if there's a / or end of line\r\n // following the port in order to avoid removing ports such as 8080.\r\n if (url.match(/:\\d+$/)) {\r\n return url;\r\n } else {\r\n return url + \":\" + getDefaultPort(protocol);\r\n }\r\n }\r\n\r\n function ConnectingMessageBuffer(connection, drainCallback) {\r\n var that = this,\r\n buffer = [];\r\n\r\n that.tryBuffer = function (message) {\r\n if (connection.state === $.signalR.connectionState.connecting) {\r\n buffer.push(message);\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n that.drain = function () {\r\n // Ensure that the connection is connected when we drain (do not want to drain while a connection is not active)\r\n if (connection.state === $.signalR.connectionState.connected) {\r\n while (buffer.length > 0) {\r\n drainCallback(buffer.shift());\r\n }\r\n }\r\n };\r\n\r\n that.clear = function () {\r\n buffer = [];\r\n };\r\n }\r\n\r\n signalR.fn = signalR.prototype = {\r\n init: function (url, qs, logging) {\r\n var $connection = $(this);\r\n\r\n this.url = url;\r\n this.qs = qs;\r\n this.lastError = null;\r\n this._ = {\r\n keepAliveData: {},\r\n connectingMessageBuffer: new ConnectingMessageBuffer(this, function (message) {\r\n $connection.triggerHandler(events.onReceived, [message]);\r\n }),\r\n lastMessageAt: new Date().getTime(),\r\n lastActiveAt: new Date().getTime(),\r\n beatInterval: 5000, // Default value, will only be overridden if keep alive is enabled,\r\n beatHandle: null,\r\n totalTransportConnectTimeout: 0, // This will be the sum of the TransportConnectTimeout sent in response to negotiate and connection.transportConnectTimeout\r\n redirectQs: null\r\n };\r\n if (typeof (logging) === \"boolean\") {\r\n this.logging = logging;\r\n }\r\n },\r\n\r\n _parseResponse: function (response) {\r\n var that = this;\r\n\r\n if (!response) {\r\n return response;\r\n } else if (typeof response === \"string\") {\r\n return that.json.parse(response);\r\n } else {\r\n return response;\r\n }\r\n },\r\n\r\n _originalJson: window.JSON,\r\n\r\n json: window.JSON,\r\n\r\n isCrossDomain: function (url, against) {\r\n /// Checks if url is cross domain\r\n /// The base URL\r\n /// \r\n /// An optional argument to compare the URL against, if not specified it will be set to window.location.\r\n /// If specified it must contain a protocol and a host property.\r\n /// \r\n var link;\r\n\r\n url = $.trim(url);\r\n\r\n against = against || window.location;\r\n\r\n if (url.indexOf(\"http\") !== 0) {\r\n return false;\r\n }\r\n\r\n // Create an anchor tag.\r\n link = window.document.createElement(\"a\");\r\n link.href = url;\r\n\r\n // When checking for cross domain we have to special case port 80 because the window.location will remove the\r\n return link.protocol + addDefaultPort(link.protocol, link.host) !== against.protocol + addDefaultPort(against.protocol, against.host);\r\n },\r\n\r\n ajaxDataType: \"text\",\r\n\r\n contentType: \"application/json; charset=UTF-8\",\r\n\r\n logging: false,\r\n\r\n state: signalR.connectionState.disconnected,\r\n\r\n clientProtocol: \"2.1\",\r\n\r\n // We want to support older servers since the 2.0 change is to support redirection results, which isn't\r\n // really breaking in the protocol. So if a user updates their client to 2.0 protocol version there's\r\n // no reason they can't still connect to a 1.5 server. The 2.1 protocol is sent by the client so the SignalR\r\n // service knows the client will use they query string returned via the RedirectUrl for subsequent requests.\r\n // It doesn't matter whether the server reflects back 2.1 or continues using 2.0 as the protocol version.\r\n supportedProtocols: [\"1.5\", \"2.0\", \"2.1\"],\r\n\r\n negotiateRedirectSupportedProtocols: [\"2.0\", \"2.1\"],\r\n\r\n reconnectDelay: 2000,\r\n\r\n transportConnectTimeout: 0,\r\n\r\n disconnectTimeout: 30000, // This should be set by the server in response to the negotiate request (30s default)\r\n\r\n reconnectWindow: 30000, // This should be set by the server in response to the negotiate request\r\n\r\n keepAliveWarnAt: 2 / 3, // Warn user of slow connection if we breach the X% mark of the keep alive timeout\r\n\r\n start: function (options, callback) {\r\n /// Starts the connection\r\n /// Options map\r\n /// A callback function to execute when the connection has started\r\n var connection = this,\r\n config = {\r\n pingInterval: 300000,\r\n waitForPageLoad: true,\r\n transport: \"auto\",\r\n jsonp: false\r\n },\r\n initialize,\r\n deferred = connection._deferral || $.Deferred(), // Check to see if there is a pre-existing deferral that's being built on, if so we want to keep using it\r\n parser = window.document.createElement(\"a\"),\r\n setConnectionUrl = function (connection, url) {\r\n if (connection.url === url && connection.baseUrl) {\r\n // when the url related properties are already set\r\n return;\r\n }\r\n\r\n connection.url = url;\r\n\r\n // Resolve the full url\r\n parser.href = connection.url;\r\n if (!parser.protocol || parser.protocol === \":\") {\r\n connection.protocol = window.document.location.protocol;\r\n connection.host = parser.host || window.document.location.host;\r\n } else {\r\n connection.protocol = parser.protocol;\r\n connection.host = parser.host;\r\n }\r\n\r\n connection.baseUrl = connection.protocol + \"//\" + connection.host;\r\n\r\n // Set the websocket protocol\r\n connection.wsProtocol = connection.protocol === \"https:\" ? \"wss://\" : \"ws://\";\r\n\r\n // If the url is protocol relative, prepend the current windows protocol to the url.\r\n if (connection.url.indexOf(\"//\") === 0) {\r\n connection.url = window.location.protocol + connection.url;\r\n connection.log(\"Protocol relative URL detected, normalizing it to '\" + connection.url + \"'.\");\r\n }\r\n\r\n if (connection.isCrossDomain(connection.url)) {\r\n connection.log(\"Auto detected cross domain url.\");\r\n\r\n if (config.transport === \"auto\") {\r\n // Cross-domain does not support foreverFrame\r\n config.transport = [\"webSockets\", \"serverSentEvents\", \"longPolling\"];\r\n }\r\n\r\n if (typeof connection.withCredentials === \"undefined\") {\r\n connection.withCredentials = true;\r\n }\r\n\r\n // Determine if jsonp is the only choice for negotiation, ajaxSend and ajaxAbort.\r\n // i.e. if the browser doesn't supports CORS\r\n // If it is, ignore any preference to the contrary, and switch to jsonp.\r\n if (!$.support.cors) {\r\n connection.ajaxDataType = \"jsonp\";\r\n connection.log(\"Using jsonp because this browser doesn't support CORS.\");\r\n }\r\n\r\n connection.contentType = signalR._.defaultContentType;\r\n }\r\n };\r\n\r\n connection.lastError = null;\r\n\r\n // Persist the deferral so that if start is called multiple times the same deferral is used.\r\n connection._deferral = deferred;\r\n\r\n if (!connection.json) {\r\n // no JSON!\r\n throw new Error(\"SignalR: No JSON parser found. Please ensure json2.js is referenced before the SignalR.js file if you need to support clients without native JSON parsing support, e.g. IE<8.\");\r\n }\r\n\r\n if ($.type(options) === \"function\") {\r\n // Support calling with single callback parameter\r\n callback = options;\r\n } else if ($.type(options) === \"object\") {\r\n $.extend(config, options);\r\n if ($.type(config.callback) === \"function\") {\r\n callback = config.callback;\r\n }\r\n }\r\n\r\n config.transport = validateTransport(config.transport, connection);\r\n\r\n // If the transport is invalid throw an error and abort start\r\n if (!config.transport) {\r\n throw new Error(\"SignalR: Invalid transport(s) specified, aborting start.\");\r\n }\r\n\r\n connection._.config = config;\r\n\r\n // Check to see if start is being called prior to page load\r\n // If waitForPageLoad is true we then want to re-direct function call to the window load event\r\n if (!_pageLoaded && config.waitForPageLoad === true) {\r\n connection._.deferredStartHandler = function () {\r\n connection.start(options, callback);\r\n };\r\n _pageWindow.bind(\"load\", connection._.deferredStartHandler);\r\n\r\n return deferred.promise();\r\n }\r\n\r\n // If we're already connecting just return the same deferral as the original connection start\r\n if (connection.state === signalR.connectionState.connecting) {\r\n return deferred.promise();\r\n } else if (changeState(connection,\r\n signalR.connectionState.disconnected,\r\n signalR.connectionState.connecting) === false) {\r\n // We're not connecting so try and transition into connecting.\r\n // If we fail to transition then we're either in connected or reconnecting.\r\n\r\n deferred.resolve(connection);\r\n return deferred.promise();\r\n }\r\n\r\n configureStopReconnectingTimeout(connection);\r\n\r\n // If jsonp with no/auto transport is specified, then set the transport to long polling\r\n // since that is the only transport for which jsonp really makes sense.\r\n // Some developers might actually choose to specify jsonp for same origin requests\r\n // as demonstrated by Issue #623.\r\n if (config.transport === \"auto\" && config.jsonp === true) {\r\n config.transport = \"longPolling\";\r\n }\r\n\r\n connection.withCredentials = config.withCredentials;\r\n\r\n // Save the original url so that we can reset it when we stop and restart the connection\r\n connection._originalUrl = connection.url;\r\n\r\n connection.ajaxDataType = config.jsonp ? \"jsonp\" : \"text\";\r\n\r\n setConnectionUrl(connection, connection.url);\r\n\r\n $(connection).bind(events.onStart, function (e, data) {\r\n if ($.type(callback) === \"function\") {\r\n callback.call(connection);\r\n }\r\n deferred.resolve(connection);\r\n });\r\n\r\n connection._.initHandler = signalR.transports._logic.initHandler(connection);\r\n\r\n initialize = function (transports, index) {\r\n var noTransportError = signalR._.error(resources.noTransportOnInit);\r\n\r\n index = index || 0;\r\n if (index >= transports.length) {\r\n if (index === 0) {\r\n connection.log(\"No transports supported by the server were selected.\");\r\n } else if (index === 1) {\r\n connection.log(\"No fallback transports were selected.\");\r\n } else {\r\n connection.log(\"Fallback transports exhausted.\");\r\n }\r\n\r\n // No transport initialized successfully\r\n $(connection).triggerHandler(events.onError, [noTransportError]);\r\n deferred.reject(noTransportError);\r\n // Stop the connection if it has connected and move it into the disconnected state\r\n connection.stop();\r\n return;\r\n }\r\n\r\n // The connection was aborted\r\n if (connection.state === signalR.connectionState.disconnected) {\r\n return;\r\n }\r\n\r\n var transportName = transports[index],\r\n transport = signalR.transports[transportName],\r\n onFallback = function () {\r\n initialize(transports, index + 1);\r\n };\r\n\r\n connection.transport = transport;\r\n\r\n try {\r\n connection._.initHandler.start(transport, function () { // success\r\n // Firefox 11+ doesn't allow sync XHR withCredentials: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#withCredentials\r\n var isFirefox11OrGreater = signalR._.firefoxMajorVersion(window.navigator.userAgent) >= 11,\r\n asyncAbort = true;\r\n\r\n connection.log(\"The start request succeeded. Transitioning to the connected state.\");\r\n\r\n if (supportsKeepAlive(connection)) {\r\n signalR.transports._logic.monitorKeepAlive(connection);\r\n }\r\n\r\n if (connection._.keepAliveData.activated) {\r\n signalR.transports._logic.startHeartbeat(connection);\r\n }\r\n\r\n // Used to ensure low activity clients maintain their authentication.\r\n // Must be configured once a transport has been decided to perform valid ping requests.\r\n signalR._.configurePingInterval(connection);\r\n\r\n if (!changeState(connection,\r\n signalR.connectionState.connecting,\r\n signalR.connectionState.connected)) {\r\n connection.log(\"WARNING! The connection was not in the connecting state.\");\r\n }\r\n\r\n // Drain any incoming buffered messages (messages that came in prior to connect)\r\n connection._.connectingMessageBuffer.drain();\r\n\r\n $(connection).triggerHandler(events.onStart);\r\n\r\n // wire the stop handler for when the user leaves the page\r\n _pageWindow.bind(\"unload\", function () {\r\n connection.log(\"Window unloading, stopping the connection.\");\r\n\r\n connection.stop(asyncAbort);\r\n });\r\n\r\n if (isFirefox11OrGreater) {\r\n // Firefox does not fire cross-domain XHRs in the normal unload handler on tab close.\r\n // #2400\r\n _pageWindow.bind(\"beforeunload\", function () {\r\n // If connection.stop() runs runs in beforeunload and fails, it will also fail\r\n // in unload unless connection.stop() runs after a timeout.\r\n window.setTimeout(function () {\r\n connection.stop(asyncAbort);\r\n }, 0);\r\n });\r\n }\r\n }, onFallback);\r\n }\r\n catch (error) {\r\n connection.log(transport.name + \" transport threw '\" + error.message + \"' when attempting to start.\");\r\n onFallback();\r\n }\r\n };\r\n\r\n var url = connection.url + \"/negotiate\",\r\n onFailed = function (error, connection) {\r\n var err = signalR._.error(resources.errorOnNegotiate, error, connection._.negotiateRequest);\r\n\r\n $(connection).triggerHandler(events.onError, err);\r\n deferred.reject(err);\r\n // Stop the connection if negotiate failed\r\n connection.stop();\r\n };\r\n\r\n $(connection).triggerHandler(events.onStarting);\r\n\r\n url = signalR.transports._logic.prepareQueryString(connection, url);\r\n\r\n connection.log(\"Negotiating with '\" + url + \"'.\");\r\n\r\n // Save the ajax negotiate request object so we can abort it if stop is called while the request is in flight.\r\n connection._.negotiateRequest = function () {\r\n var res,\r\n redirects = 0,\r\n MAX_REDIRECTS = 100,\r\n keepAliveData,\r\n protocolError,\r\n transports = [],\r\n supportedTransports = [],\r\n negotiate = function (connection, onSuccess) {\r\n var url = signalR.transports._logic.prepareQueryString(connection, connection.url + \"/negotiate\");\r\n connection.log(\"Negotiating with '\" + url + \"'.\");\r\n var options = {\r\n url: url,\r\n error: function (error, statusText) {\r\n // We don't want to cause any errors if we're aborting our own negotiate request.\r\n if (statusText !== _negotiateAbortText) {\r\n onFailed(error, connection);\r\n } else {\r\n // This rejection will noop if the deferred has already been resolved or rejected.\r\n deferred.reject(signalR._.error(resources.stoppedWhileNegotiating, null /* error */, connection._.negotiateRequest));\r\n }\r\n },\r\n success: onSuccess\r\n };\r\n\r\n if (connection.accessToken) {\r\n options.headers = { \"Authorization\": \"Bearer \" + connection.accessToken };\r\n }\r\n\r\n return signalR.transports._logic.ajax(connection, options);\r\n },\r\n callback = function (result) {\r\n try {\r\n res = connection._parseResponse(result);\r\n } catch (error) {\r\n onFailed(signalR._.error(resources.errorParsingNegotiateResponse, error), connection);\r\n return;\r\n }\r\n\r\n // Check if the server is an ASP.NET Core app\r\n if (res.availableTransports) {\r\n protocolError = signalR._.error(resources.aspnetCoreSignalrServer);\r\n $(connection).triggerHandler(events.onError, [protocolError]);\r\n deferred.reject(protocolError);\r\n return;\r\n }\r\n\r\n if (!res.ProtocolVersion || (connection.supportedProtocols.indexOf(res.ProtocolVersion) === -1)) {\r\n protocolError = signalR._.error(signalR._.format(resources.protocolIncompatible, connection.clientProtocol, res.ProtocolVersion));\r\n $(connection).triggerHandler(events.onError, [protocolError]);\r\n deferred.reject(protocolError);\r\n\r\n return;\r\n }\r\n\r\n // Check for a redirect response (which must have a ProtocolVersion of 2.0 or greater)\r\n // ProtocolVersion 2.1 is the highest supported by the client, so we can just check for 2.0 or 2.1 for now\r\n // instead of trying to do proper version string comparison in JavaScript.\r\n if (connection.negotiateRedirectSupportedProtocols.indexOf(res.ProtocolVersion) !== -1) {\r\n if (res.Error) {\r\n protocolError = signalR._.error(signalR._.format(resources.errorFromServer, res.Error));\r\n $(connection).triggerHandler(events.onError, [protocolError]);\r\n deferred.reject(protocolError);\r\n return;\r\n }\r\n else if (res.RedirectUrl) {\r\n if (redirects === MAX_REDIRECTS) {\r\n onFailed(signalR._.error(resources.errorRedirectionExceedsLimit), connection);\r\n return;\r\n }\r\n\r\n if (config.transport === \"auto\") {\r\n // Redirected connections do not support foreverFrame\r\n config.transport = [\"webSockets\", \"serverSentEvents\", \"longPolling\"];\r\n }\r\n\r\n connection.log(\"Received redirect to: \" + res.RedirectUrl);\r\n connection.accessToken = res.AccessToken;\r\n\r\n var splitUrlAndQs = res.RedirectUrl.split(\"?\", 2);\r\n setConnectionUrl(connection, splitUrlAndQs[0]);\r\n\r\n // Update redirectQs with query string from only the most recent RedirectUrl.\r\n connection._.redirectQs = splitUrlAndQs.length === 2 ? splitUrlAndQs[1] : null;\r\n\r\n if (connection.ajaxDataType === \"jsonp\" && connection.accessToken) {\r\n onFailed(signalR._.error(resources.jsonpNotSupportedWithAccessToken), connection);\r\n return;\r\n }\r\n\r\n redirects++;\r\n negotiate(connection, callback);\r\n return;\r\n }\r\n }\r\n\r\n keepAliveData = connection._.keepAliveData;\r\n connection.appRelativeUrl = res.Url;\r\n connection.id = res.ConnectionId;\r\n connection.token = res.ConnectionToken;\r\n connection.webSocketServerUrl = res.WebSocketServerUrl;\r\n\r\n // The long poll timeout is the ConnectionTimeout plus 10 seconds\r\n connection._.pollTimeout = res.ConnectionTimeout * 1000 + 10000; // in ms\r\n\r\n // Once the server has labeled the PersistentConnection as Disconnected, we should stop attempting to reconnect\r\n // after res.DisconnectTimeout seconds.\r\n connection.disconnectTimeout = res.DisconnectTimeout * 1000; // in ms\r\n\r\n // Add the TransportConnectTimeout from the response to the transportConnectTimeout from the client to calculate the total timeout\r\n connection._.totalTransportConnectTimeout = connection.transportConnectTimeout + res.TransportConnectTimeout * 1000;\r\n\r\n // If we have a keep alive\r\n if (res.KeepAliveTimeout) {\r\n // Register the keep alive data as activated\r\n keepAliveData.activated = true;\r\n\r\n // Timeout to designate when to force the connection into reconnecting converted to milliseconds\r\n keepAliveData.timeout = res.KeepAliveTimeout * 1000;\r\n\r\n // Timeout to designate when to warn the developer that the connection may be dead or is not responding.\r\n keepAliveData.timeoutWarning = keepAliveData.timeout * connection.keepAliveWarnAt;\r\n\r\n // Instantiate the frequency in which we check the keep alive. It must be short in order to not miss/pick up any changes\r\n connection._.beatInterval = (keepAliveData.timeout - keepAliveData.timeoutWarning) / 3;\r\n } else {\r\n keepAliveData.activated = false;\r\n }\r\n\r\n connection.reconnectWindow = connection.disconnectTimeout + (keepAliveData.timeout || 0);\r\n\r\n $.each(signalR.transports, function (key) {\r\n if ((key.indexOf(\"_\") === 0) || (key === \"webSockets\" && !res.TryWebSockets)) {\r\n return true;\r\n }\r\n supportedTransports.push(key);\r\n });\r\n\r\n if ($.isArray(config.transport)) {\r\n $.each(config.transport, function (_, transport) {\r\n if ($.inArray(transport, supportedTransports) >= 0) {\r\n transports.push(transport);\r\n }\r\n });\r\n } else if (config.transport === \"auto\") {\r\n transports = supportedTransports;\r\n } else if ($.inArray(config.transport, supportedTransports) >= 0) {\r\n transports.push(config.transport);\r\n }\r\n\r\n initialize(transports);\r\n };\r\n\r\n return negotiate(connection, callback);\r\n }();\r\n\r\n return deferred.promise();\r\n },\r\n\r\n starting: function (callback) {\r\n /// Adds a callback that will be invoked before anything is sent over the connection\r\n /// A callback function to execute before the connection is fully instantiated.\r\n /// \r\n var connection = this;\r\n $(connection).bind(events.onStarting, function (e, data) {\r\n callback.call(connection);\r\n });\r\n return connection;\r\n },\r\n\r\n send: function (data) {\r\n /// Sends data over the connection\r\n /// The data to send over the connection\r\n /// \r\n var connection = this;\r\n\r\n if (connection.state === signalR.connectionState.disconnected) {\r\n // Connection hasn't been started yet\r\n throw new Error(\"SignalR: Connection must be started before data can be sent. Call .start() before .send()\");\r\n }\r\n\r\n if (connection.state === signalR.connectionState.connecting) {\r\n // Connection hasn't been started yet\r\n throw new Error(\"SignalR: Connection has not been fully initialized. Use .start().done() or .start().fail() to run logic after the connection has started.\");\r\n }\r\n\r\n connection.transport.send(connection, data);\r\n // REVIEW: Should we return deferred here?\r\n return connection;\r\n },\r\n\r\n received: function (callback) {\r\n /// Adds a callback that will be invoked after anything is received over the connection\r\n /// A callback function to execute when any data is received on the connection\r\n /// \r\n var connection = this;\r\n $(connection).bind(events.onReceived, function (e, data) {\r\n callback.call(connection, data);\r\n });\r\n return connection;\r\n },\r\n\r\n stateChanged: function (callback) {\r\n /// Adds a callback that will be invoked when the connection state changes\r\n /// A callback function to execute when the connection state changes\r\n /// \r\n var connection = this;\r\n $(connection).bind(events.onStateChanged, function (e, data) {\r\n callback.call(connection, data);\r\n });\r\n return connection;\r\n },\r\n\r\n error: function (callback) {\r\n /// Adds a callback that will be invoked after an error occurs with the connection\r\n /// A callback function to execute when an error occurs on the connection\r\n /// \r\n var connection = this;\r\n $(connection).bind(events.onError, function (e, errorData, sendData) {\r\n connection.lastError = errorData;\r\n // In practice 'errorData' is the SignalR built error object.\r\n // In practice 'sendData' is undefined for all error events except those triggered by\r\n // 'ajaxSend' and 'webSockets.send'.'sendData' is the original send payload.\r\n callback.call(connection, errorData, sendData);\r\n });\r\n return connection;\r\n },\r\n\r\n disconnected: function (callback) {\r\n /// Adds a callback that will be invoked when the client disconnects\r\n /// A callback function to execute when the connection is broken\r\n /// \r\n var connection = this;\r\n $(connection).bind(events.onDisconnect, function (e, data) {\r\n callback.call(connection);\r\n });\r\n return connection;\r\n },\r\n\r\n connectionSlow: function (callback) {\r\n /// Adds a callback that will be invoked when the client detects a slow connection\r\n /// A callback function to execute when the connection is slow\r\n /// \r\n var connection = this;\r\n $(connection).bind(events.onConnectionSlow, function (e, data) {\r\n callback.call(connection);\r\n });\r\n\r\n return connection;\r\n },\r\n\r\n reconnecting: function (callback) {\r\n /// Adds a callback that will be invoked when the underlying transport begins reconnecting\r\n /// A callback function to execute when the connection enters a reconnecting state\r\n /// \r\n var connection = this;\r\n $(connection).bind(events.onReconnecting, function (e, data) {\r\n callback.call(connection);\r\n });\r\n return connection;\r\n },\r\n\r\n reconnected: function (callback) {\r\n /// Adds a callback that will be invoked when the underlying transport reconnects\r\n /// A callback function to execute when the connection is restored\r\n /// \r\n var connection = this;\r\n $(connection).bind(events.onReconnect, function (e, data) {\r\n callback.call(connection);\r\n });\r\n return connection;\r\n },\r\n\r\n stop: function (async, notifyServer) {\r\n /// Stops listening\r\n /// Whether or not to asynchronously abort the connection\r\n /// Whether we want to notify the server that we are aborting the connection\r\n /// \r\n var connection = this,\r\n // Save deferral because this is always cleaned up\r\n deferral = connection._deferral;\r\n\r\n // Verify that we've bound a load event.\r\n if (connection._.deferredStartHandler) {\r\n // Unbind the event.\r\n _pageWindow.unbind(\"load\", connection._.deferredStartHandler);\r\n }\r\n\r\n // Always clean up private non-timeout based state.\r\n delete connection._.config;\r\n delete connection._.deferredStartHandler;\r\n\r\n // This needs to be checked despite the connection state because a connection start can be deferred until page load.\r\n // If we've deferred the start due to a page load we need to unbind the \"onLoad\" -> start event.\r\n if (!_pageLoaded && (!connection._.config || connection._.config.waitForPageLoad === true)) {\r\n connection.log(\"Stopping connection prior to negotiate.\");\r\n\r\n // If we have a deferral we should reject it\r\n if (deferral) {\r\n deferral.reject(signalR._.error(resources.stoppedWhileLoading));\r\n }\r\n\r\n // Short-circuit because the start has not been fully started.\r\n return;\r\n }\r\n\r\n if (connection.state === signalR.connectionState.disconnected) {\r\n return;\r\n }\r\n\r\n connection.log(\"Stopping connection.\");\r\n\r\n // Clear this no matter what\r\n window.clearTimeout(connection._.beatHandle);\r\n window.clearInterval(connection._.pingIntervalId);\r\n\r\n if (connection.transport) {\r\n connection.transport.stop(connection);\r\n\r\n if (notifyServer !== false) {\r\n connection.transport.abort(connection, async);\r\n }\r\n\r\n if (supportsKeepAlive(connection)) {\r\n signalR.transports._logic.stopMonitoringKeepAlive(connection);\r\n }\r\n\r\n connection.transport = null;\r\n }\r\n\r\n if (connection._.negotiateRequest) {\r\n // If the negotiation request has already completed this will noop.\r\n connection._.negotiateRequest.abort(_negotiateAbortText);\r\n delete connection._.negotiateRequest;\r\n }\r\n\r\n // Ensure that initHandler.stop() is called before connection._deferral is deleted\r\n if (connection._.initHandler) {\r\n connection._.initHandler.stop();\r\n }\r\n\r\n delete connection._deferral;\r\n delete connection.messageId;\r\n delete connection.groupsToken;\r\n delete connection.id;\r\n delete connection._.pingIntervalId;\r\n delete connection._.lastMessageAt;\r\n delete connection._.lastActiveAt;\r\n\r\n // Clear out our message buffer\r\n connection._.connectingMessageBuffer.clear();\r\n\r\n // Clean up this event\r\n $(connection).unbind(events.onStart);\r\n\r\n // Reset the URL and clear the access token\r\n delete connection.accessToken;\r\n delete connection.protocol;\r\n delete connection.host;\r\n delete connection.baseUrl;\r\n delete connection.wsProtocol;\r\n delete connection.contentType;\r\n connection.url = connection._originalUrl;\r\n connection._.redirectQs = null;\r\n\r\n // Trigger the disconnect event\r\n changeState(connection, connection.state, signalR.connectionState.disconnected);\r\n $(connection).triggerHandler(events.onDisconnect);\r\n\r\n return connection;\r\n },\r\n\r\n log: function (msg) {\r\n log(msg, this.logging);\r\n }\r\n };\r\n\r\n signalR.fn.init.prototype = signalR.fn;\r\n\r\n signalR.noConflict = function () {\r\n /// Reinstates the original value of $.connection and returns the signalR object for manual assignment\r\n /// \r\n if ($.connection === signalR) {\r\n $.connection = _connection;\r\n }\r\n return signalR;\r\n };\r\n\r\n if ($.connection) {\r\n _connection = $.connection;\r\n }\r\n\r\n $.connection = $.signalR = signalR;\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.transports.common.js */\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n/*global window:false */\r\n/// \r\n\r\n(function ($, window, undefined) {\r\n\r\n var signalR = $.signalR,\r\n events = $.signalR.events,\r\n changeState = $.signalR.changeState,\r\n startAbortText = \"__Start Aborted__\",\r\n transportLogic;\r\n\r\n signalR.transports = {};\r\n\r\n function beat(connection) {\r\n if (connection._.keepAliveData.monitoring) {\r\n checkIfAlive(connection);\r\n }\r\n\r\n // Ensure that we successfully marked active before continuing the heartbeat.\r\n if (transportLogic.markActive(connection)) {\r\n connection._.beatHandle = window.setTimeout(function () {\r\n beat(connection);\r\n }, connection._.beatInterval);\r\n }\r\n }\r\n\r\n function checkIfAlive(connection) {\r\n var keepAliveData = connection._.keepAliveData,\r\n timeElapsed;\r\n\r\n // Only check if we're connected\r\n if (connection.state === signalR.connectionState.connected) {\r\n timeElapsed = new Date().getTime() - connection._.lastMessageAt;\r\n\r\n // Check if the keep alive has completely timed out\r\n if (timeElapsed >= keepAliveData.timeout) {\r\n connection.log(\"Keep alive timed out. Notifying transport that connection has been lost.\");\r\n\r\n // Notify transport that the connection has been lost\r\n connection.transport.lostConnection(connection);\r\n } else if (timeElapsed >= keepAliveData.timeoutWarning) {\r\n // This is to assure that the user only gets a single warning\r\n if (!keepAliveData.userNotified) {\r\n connection.log(\"Keep alive has been missed, connection may be dead/slow.\");\r\n $(connection).triggerHandler(events.onConnectionSlow);\r\n keepAliveData.userNotified = true;\r\n }\r\n } else {\r\n keepAliveData.userNotified = false;\r\n }\r\n }\r\n }\r\n\r\n function getAjaxUrl(connection, path) {\r\n var url = connection.url + path;\r\n\r\n if (connection.transport) {\r\n url += \"?transport=\" + connection.transport.name;\r\n }\r\n\r\n return transportLogic.prepareQueryString(connection, url);\r\n }\r\n\r\n function InitHandler(connection) {\r\n this.connection = connection;\r\n\r\n this.startRequested = false;\r\n this.startCompleted = false;\r\n this.connectionStopped = false;\r\n }\r\n\r\n InitHandler.prototype = {\r\n start: function (transport, onSuccess, onFallback) {\r\n var that = this,\r\n connection = that.connection,\r\n failCalled = false;\r\n\r\n if (that.startRequested || that.connectionStopped) {\r\n connection.log(\"WARNING! \" + transport.name + \" transport cannot be started. Initialization ongoing or completed.\");\r\n return;\r\n }\r\n\r\n connection.log(transport.name + \" transport starting.\");\r\n\r\n transport.start(connection, function () {\r\n if (!failCalled) {\r\n that.initReceived(transport, onSuccess);\r\n }\r\n }, function (error) {\r\n // Don't allow the same transport to cause onFallback to be called twice\r\n if (!failCalled) {\r\n failCalled = true;\r\n that.transportFailed(transport, error, onFallback);\r\n }\r\n\r\n // Returns true if the transport should stop;\r\n // false if it should attempt to reconnect\r\n return !that.startCompleted || that.connectionStopped;\r\n });\r\n\r\n that.transportTimeoutHandle = window.setTimeout(function () {\r\n if (!failCalled) {\r\n failCalled = true;\r\n connection.log(transport.name + \" transport timed out when trying to connect.\");\r\n that.transportFailed(transport, undefined, onFallback);\r\n }\r\n }, connection._.totalTransportConnectTimeout);\r\n },\r\n\r\n stop: function () {\r\n this.connectionStopped = true;\r\n window.clearTimeout(this.transportTimeoutHandle);\r\n signalR.transports._logic.tryAbortStartRequest(this.connection);\r\n },\r\n\r\n initReceived: function (transport, onSuccess) {\r\n var that = this,\r\n connection = that.connection;\r\n\r\n if (that.startRequested) {\r\n connection.log(\"WARNING! The client received multiple init messages.\");\r\n return;\r\n }\r\n\r\n if (that.connectionStopped) {\r\n return;\r\n }\r\n\r\n that.startRequested = true;\r\n window.clearTimeout(that.transportTimeoutHandle);\r\n\r\n connection.log(transport.name + \" transport connected. Initiating start request.\");\r\n signalR.transports._logic.ajaxStart(connection, function () {\r\n that.startCompleted = true;\r\n onSuccess();\r\n });\r\n },\r\n\r\n transportFailed: function (transport, error, onFallback) {\r\n var connection = this.connection,\r\n deferred = connection._deferral,\r\n wrappedError;\r\n\r\n if (this.connectionStopped) {\r\n return;\r\n }\r\n\r\n window.clearTimeout(this.transportTimeoutHandle);\r\n\r\n if (!this.startRequested) {\r\n transport.stop(connection);\r\n\r\n connection.log(transport.name + \" transport failed to connect. Attempting to fall back.\");\r\n onFallback();\r\n } else if (!this.startCompleted) {\r\n // Do not attempt to fall back if a start request is ongoing during a transport failure.\r\n // Instead, trigger an error and stop the connection.\r\n wrappedError = signalR._.error(signalR.resources.errorDuringStartRequest, error);\r\n\r\n connection.log(transport.name + \" transport failed during the start request. Stopping the connection.\");\r\n $(connection).triggerHandler(events.onError, [wrappedError]);\r\n if (deferred) {\r\n deferred.reject(wrappedError);\r\n }\r\n\r\n connection.stop();\r\n } else {\r\n // The start request has completed, but the connection has not stopped.\r\n // No need to do anything here. The transport should attempt its normal reconnect logic.\r\n }\r\n }\r\n };\r\n\r\n transportLogic = signalR.transports._logic = {\r\n ajax: function (connection, options) {\r\n return $.ajax(\r\n $.extend(/*deep copy*/ true, {}, $.signalR.ajaxDefaults, {\r\n type: \"GET\",\r\n data: {},\r\n xhrFields: { withCredentials: connection.withCredentials },\r\n contentType: connection.contentType,\r\n dataType: connection.ajaxDataType\r\n }, options));\r\n },\r\n\r\n pingServer: function (connection) {\r\n /// Pings the server\r\n /// Connection associated with the server ping\r\n /// \r\n var url,\r\n xhr,\r\n deferral = $.Deferred();\r\n\r\n if (connection.transport) {\r\n url = connection.url + \"/ping\";\r\n\r\n url = transportLogic.addQs(url, connection.qs);\r\n\r\n xhr = transportLogic.ajax(connection, {\r\n url: url,\r\n headers: connection.accessToken ? { \"Authorization\": \"Bearer \" + connection.accessToken } : {},\r\n success: function (result) {\r\n var data;\r\n\r\n try {\r\n data = connection._parseResponse(result);\r\n }\r\n catch (error) {\r\n deferral.reject(\r\n signalR._.transportError(\r\n signalR.resources.pingServerFailedParse,\r\n connection.transport,\r\n error,\r\n xhr\r\n )\r\n );\r\n connection.stop();\r\n return;\r\n }\r\n\r\n if (data.Response === \"pong\") {\r\n deferral.resolve();\r\n }\r\n else {\r\n deferral.reject(\r\n signalR._.transportError(\r\n signalR._.format(signalR.resources.pingServerFailedInvalidResponse, result),\r\n connection.transport,\r\n null /* error */,\r\n xhr\r\n )\r\n );\r\n }\r\n },\r\n error: function (error) {\r\n if (error.status === 401 || error.status === 403) {\r\n deferral.reject(\r\n signalR._.transportError(\r\n signalR._.format(signalR.resources.pingServerFailedStatusCode, error.status),\r\n connection.transport,\r\n error,\r\n xhr\r\n )\r\n );\r\n connection.stop();\r\n }\r\n else {\r\n deferral.reject(\r\n signalR._.transportError(\r\n signalR.resources.pingServerFailed,\r\n connection.transport,\r\n error,\r\n xhr\r\n )\r\n );\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n deferral.reject(\r\n signalR._.transportError(\r\n signalR.resources.noConnectionTransport,\r\n connection.transport\r\n )\r\n );\r\n }\r\n\r\n return deferral.promise();\r\n },\r\n\r\n prepareQueryString: function (connection, url) {\r\n var preparedUrl;\r\n\r\n // Use addQs to start since it handles the ?/& prefix for us\r\n preparedUrl = transportLogic.addQs(url, \"clientProtocol=\" + connection.clientProtocol);\r\n\r\n if (typeof (connection._.redirectQs) === \"string\") {\r\n // Add the redirect-specified query string params if any\r\n preparedUrl = transportLogic.addQs(preparedUrl, connection._.redirectQs);\r\n } else {\r\n // Otherwise, add the user-specified query string params if any\r\n preparedUrl = transportLogic.addQs(preparedUrl, connection.qs);\r\n }\r\n\r\n if (connection.token) {\r\n preparedUrl += \"&connectionToken=\" + window.encodeURIComponent(connection.token);\r\n }\r\n\r\n if (connection.data) {\r\n preparedUrl += \"&connectionData=\" + window.encodeURIComponent(connection.data);\r\n }\r\n\r\n return preparedUrl;\r\n },\r\n\r\n addQs: function (url, qs) {\r\n var appender = url.indexOf(\"?\") !== -1 ? \"&\" : \"?\",\r\n firstChar;\r\n\r\n if (!qs) {\r\n return url;\r\n }\r\n\r\n if (typeof (qs) === \"object\") {\r\n return url + appender + $.param(qs);\r\n }\r\n\r\n if (typeof (qs) === \"string\") {\r\n firstChar = qs.charAt(0);\r\n\r\n if (firstChar === \"?\" || firstChar === \"&\") {\r\n appender = \"\";\r\n }\r\n\r\n return url + appender + qs;\r\n }\r\n\r\n throw new Error(\"Query string property must be either a string or object.\");\r\n },\r\n\r\n // BUG #2953: The url needs to be same otherwise it will cause a memory leak\r\n getUrl: function (connection, transport, reconnecting, poll, ajaxPost) {\r\n /// Gets the url for making a GET based connect request\r\n var baseUrl = transport === \"webSockets\" ? \"\" : connection.baseUrl,\r\n url = baseUrl + connection.appRelativeUrl,\r\n qs = \"transport=\" + transport;\r\n\r\n if (!ajaxPost && connection.groupsToken) {\r\n qs += \"&groupsToken=\" + window.encodeURIComponent(connection.groupsToken);\r\n }\r\n\r\n if (!reconnecting) {\r\n url += \"/connect\";\r\n } else {\r\n if (poll) {\r\n // longPolling transport specific\r\n url += \"/poll\";\r\n } else {\r\n url += \"/reconnect\";\r\n }\r\n\r\n if (!ajaxPost && connection.messageId) {\r\n qs += \"&messageId=\" + window.encodeURIComponent(connection.messageId);\r\n }\r\n }\r\n url += \"?\" + qs;\r\n url = transportLogic.prepareQueryString(connection, url);\r\n\r\n // With sse or ws, access_token in request header is not supported\r\n if (connection.transport && connection.accessToken) {\r\n if (connection.transport.name === \"serverSentEvents\" || connection.transport.name === \"webSockets\") {\r\n url += \"&access_token=\" + window.encodeURIComponent(connection.accessToken);\r\n }\r\n }\r\n\r\n if (!ajaxPost) {\r\n url += \"&tid=\" + Math.floor(Math.random() * 11);\r\n }\r\n\r\n return url;\r\n },\r\n\r\n maximizePersistentResponse: function (minPersistentResponse) {\r\n return {\r\n MessageId: minPersistentResponse.C,\r\n Messages: minPersistentResponse.M,\r\n Initialized: typeof (minPersistentResponse.S) !== \"undefined\" ? true : false,\r\n ShouldReconnect: typeof (minPersistentResponse.T) !== \"undefined\" ? true : false,\r\n LongPollDelay: minPersistentResponse.L,\r\n GroupsToken: minPersistentResponse.G,\r\n Error: minPersistentResponse.E\r\n };\r\n },\r\n\r\n updateGroups: function (connection, groupsToken) {\r\n if (groupsToken) {\r\n connection.groupsToken = groupsToken;\r\n }\r\n },\r\n\r\n stringifySend: function (connection, message) {\r\n if (typeof (message) === \"string\" || typeof (message) === \"undefined\" || message === null) {\r\n return message;\r\n }\r\n return connection.json.stringify(message);\r\n },\r\n\r\n ajaxSend: function (connection, data) {\r\n var payload = transportLogic.stringifySend(connection, data),\r\n url = getAjaxUrl(connection, \"/send\"),\r\n xhr,\r\n onFail = function (error, connection) {\r\n $(connection).triggerHandler(events.onError, [signalR._.transportError(signalR.resources.sendFailed, connection.transport, error, xhr), data]);\r\n };\r\n\r\n\r\n xhr = transportLogic.ajax(connection, {\r\n url: url,\r\n type: connection.ajaxDataType === \"jsonp\" ? \"GET\" : \"POST\",\r\n contentType: signalR._.defaultContentType,\r\n headers: connection.accessToken ? { \"Authorization\": \"Bearer \" + connection.accessToken } : {},\r\n data: {\r\n data: payload\r\n },\r\n success: function (result) {\r\n var res;\r\n\r\n if (result) {\r\n try {\r\n res = connection._parseResponse(result);\r\n }\r\n catch (error) {\r\n onFail(error, connection);\r\n connection.stop();\r\n return;\r\n }\r\n\r\n transportLogic.triggerReceived(connection, res);\r\n }\r\n },\r\n error: function (error, textStatus) {\r\n if (textStatus === \"abort\" || textStatus === \"parsererror\") {\r\n // The parsererror happens for sends that don't return any data, and hence\r\n // don't write the jsonp callback to the response. This is harder to fix on the server\r\n // so just hack around it on the client for now.\r\n return;\r\n }\r\n\r\n onFail(error, connection);\r\n }\r\n });\r\n\r\n return xhr;\r\n },\r\n\r\n ajaxAbort: function (connection, async) {\r\n if (typeof (connection.transport) === \"undefined\") {\r\n return;\r\n }\r\n\r\n // Async by default unless explicitly overidden\r\n async = typeof async === \"undefined\" ? true : async;\r\n\r\n var url = getAjaxUrl(connection, \"/abort\");\r\n\r\n var requestHeaders = connection.accessToken ? { \"Authorization\": \"Bearer \" + connection.accessToken } : {};\r\n\r\n //option #1 - send \"fetch\" with keepalive\r\n if (window.fetch) {\r\n // use the fetch API with keepalive\r\n window.fetch(url, {\r\n method: \"POST\",\r\n keepalive: true,\r\n headers: requestHeaders,\r\n credentials: connection.withCredentials === true ? \"include\" : \"same-origin\"\r\n });\r\n }\r\n else { \r\n // fetch is not available - fallback to $.ajax\r\n transportLogic.ajax(connection, {\r\n url: url,\r\n async: async,\r\n timeout: 1000,\r\n type: \"POST\",\r\n headers: requestHeaders,\r\n dataType: \"text\" // We don't want to use JSONP here even when JSONP is enabled\r\n });\r\n }\r\n\r\n connection.log(\"Fired ajax abort async = \" + async + \".\");\r\n },\r\n\r\n ajaxStart: function (connection, onSuccess) {\r\n var rejectDeferred = function (error) {\r\n var deferred = connection._deferral;\r\n if (deferred) {\r\n deferred.reject(error);\r\n }\r\n },\r\n triggerStartError = function (error) {\r\n connection.log(\"The start request failed. Stopping the connection.\");\r\n $(connection).triggerHandler(events.onError, [error]);\r\n rejectDeferred(error);\r\n connection.stop();\r\n };\r\n\r\n connection._.startRequest = transportLogic.ajax(connection, {\r\n url: getAjaxUrl(connection, \"/start\"),\r\n headers: connection.accessToken ? { \"Authorization\": \"Bearer \" + connection.accessToken } : {},\r\n success: function (result, statusText, xhr) {\r\n var data;\r\n\r\n try {\r\n data = connection._parseResponse(result);\r\n } catch (error) {\r\n triggerStartError(signalR._.error(\r\n signalR._.format(signalR.resources.errorParsingStartResponse, result),\r\n error, xhr));\r\n return;\r\n }\r\n\r\n if (data.Response === \"started\") {\r\n onSuccess();\r\n } else {\r\n triggerStartError(signalR._.error(\r\n signalR._.format(signalR.resources.invalidStartResponse, result),\r\n null /* error */, xhr));\r\n }\r\n },\r\n error: function (xhr, statusText, error) {\r\n if (statusText !== startAbortText) {\r\n triggerStartError(signalR._.error(\r\n signalR.resources.errorDuringStartRequest,\r\n error, xhr));\r\n } else {\r\n // Stop has been called, no need to trigger the error handler\r\n // or stop the connection again with onStartError\r\n connection.log(\"The start request aborted because connection.stop() was called.\");\r\n rejectDeferred(signalR._.error(\r\n signalR.resources.stoppedDuringStartRequest,\r\n null /* error */, xhr));\r\n }\r\n }\r\n });\r\n },\r\n\r\n tryAbortStartRequest: function (connection) {\r\n if (connection._.startRequest) {\r\n // If the start request has already completed this will noop.\r\n connection._.startRequest.abort(startAbortText);\r\n delete connection._.startRequest;\r\n }\r\n },\r\n\r\n tryInitialize: function (connection, persistentResponse, onInitialized) {\r\n if (persistentResponse.Initialized && onInitialized) {\r\n onInitialized();\r\n } else if (persistentResponse.Initialized) {\r\n connection.log(\"WARNING! The client received an init message after reconnecting.\");\r\n }\r\n\r\n },\r\n\r\n triggerReceived: function (connection, data) {\r\n if (!connection._.connectingMessageBuffer.tryBuffer(data)) {\r\n $(connection).triggerHandler(events.onReceived, [data]);\r\n }\r\n },\r\n\r\n processMessages: function (connection, minData, onInitialized) {\r\n var data;\r\n\r\n if(minData && (typeof minData.I !== \"undefined\")) {\r\n // This is a response to a message the client sent\r\n transportLogic.triggerReceived(connection, minData);\r\n return;\r\n }\r\n\r\n // Update the last message time stamp\r\n transportLogic.markLastMessage(connection);\r\n\r\n if (minData) {\r\n // This is a message send directly to the client\r\n data = transportLogic.maximizePersistentResponse(minData);\r\n\r\n if (data.Error) {\r\n // This is a global error, stop the connection.\r\n connection.log(\"Received an error message from the server: \" + minData.E);\r\n $(connection).triggerHandler(signalR.events.onError, [signalR._.error(minData.E, /* source */ \"ServerError\")]);\r\n connection.stop(/* async */ false, /* notifyServer */ false);\r\n return;\r\n }\r\n\r\n transportLogic.updateGroups(connection, data.GroupsToken);\r\n\r\n if (data.MessageId) {\r\n connection.messageId = data.MessageId;\r\n }\r\n\r\n if (data.Messages) {\r\n $.each(data.Messages, function (index, message) {\r\n transportLogic.triggerReceived(connection, message);\r\n });\r\n\r\n transportLogic.tryInitialize(connection, data, onInitialized);\r\n }\r\n }\r\n },\r\n\r\n monitorKeepAlive: function (connection) {\r\n var keepAliveData = connection._.keepAliveData;\r\n\r\n // If we haven't initiated the keep alive timeouts then we need to\r\n if (!keepAliveData.monitoring) {\r\n keepAliveData.monitoring = true;\r\n\r\n transportLogic.markLastMessage(connection);\r\n\r\n // Save the function so we can unbind it on stop\r\n connection._.keepAliveData.reconnectKeepAliveUpdate = function () {\r\n // Mark a new message so that keep alive doesn't time out connections\r\n transportLogic.markLastMessage(connection);\r\n };\r\n\r\n // Update Keep alive on reconnect\r\n $(connection).bind(events.onReconnect, connection._.keepAliveData.reconnectKeepAliveUpdate);\r\n\r\n connection.log(\"Now monitoring keep alive with a warning timeout of \" + keepAliveData.timeoutWarning + \", keep alive timeout of \" + keepAliveData.timeout + \" and disconnecting timeout of \" + connection.disconnectTimeout);\r\n } else {\r\n connection.log(\"Tried to monitor keep alive but it's already being monitored.\");\r\n }\r\n },\r\n\r\n stopMonitoringKeepAlive: function (connection) {\r\n var keepAliveData = connection._.keepAliveData;\r\n\r\n // Only attempt to stop the keep alive monitoring if its being monitored\r\n if (keepAliveData.monitoring) {\r\n // Stop monitoring\r\n keepAliveData.monitoring = false;\r\n\r\n // Remove the updateKeepAlive function from the reconnect event\r\n $(connection).unbind(events.onReconnect, connection._.keepAliveData.reconnectKeepAliveUpdate);\r\n\r\n // Clear all the keep alive data\r\n connection._.keepAliveData = {};\r\n connection.log(\"Stopping the monitoring of the keep alive.\");\r\n }\r\n },\r\n\r\n startHeartbeat: function (connection) {\r\n connection._.lastActiveAt = new Date().getTime();\r\n beat(connection);\r\n },\r\n\r\n markLastMessage: function (connection) {\r\n connection._.lastMessageAt = new Date().getTime();\r\n connection._.lastActiveAt = connection._.lastMessageAt;\r\n },\r\n\r\n markActive: function (connection) {\r\n if (transportLogic.verifyLastActive(connection)) {\r\n connection._.lastActiveAt = new Date().getTime();\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n isConnectedOrReconnecting: function (connection) {\r\n return connection.state === signalR.connectionState.connected ||\r\n connection.state === signalR.connectionState.reconnecting;\r\n },\r\n\r\n ensureReconnectingState: function (connection) {\r\n if (changeState(connection,\r\n signalR.connectionState.connected,\r\n signalR.connectionState.reconnecting) === true) {\r\n $(connection).triggerHandler(events.onReconnecting);\r\n }\r\n return connection.state === signalR.connectionState.reconnecting;\r\n },\r\n\r\n clearReconnectTimeout: function (connection) {\r\n if (connection && connection._.reconnectTimeout) {\r\n window.clearTimeout(connection._.reconnectTimeout);\r\n delete connection._.reconnectTimeout;\r\n }\r\n },\r\n\r\n verifyLastActive: function (connection) {\r\n // If there is no keep alive configured, we cannot assume that timer callbacks will\r\n // run frequently enough to keep lastActiveAt updated.\r\n // https://github.com/SignalR/SignalR/issues/4536\r\n if (!connection._.keepAliveData.activated ||\r\n new Date().getTime() - connection._.lastActiveAt < connection.reconnectWindow) {\r\n return true;\r\n }\r\n\r\n var message = signalR._.format(signalR.resources.reconnectWindowTimeout, new Date(connection._.lastActiveAt), connection.reconnectWindow);\r\n connection.log(message);\r\n $(connection).triggerHandler(events.onError, [signalR._.error(message, /* source */ \"TimeoutException\")]);\r\n connection.stop(/* async */ false, /* notifyServer */ false);\r\n return false;\r\n },\r\n\r\n reconnect: function (connection, transportName) {\r\n var transport = signalR.transports[transportName];\r\n\r\n // We should only set a reconnectTimeout if we are currently connected\r\n // and a reconnectTimeout isn't already set.\r\n if (transportLogic.isConnectedOrReconnecting(connection) && !connection._.reconnectTimeout) {\r\n // Need to verify before the setTimeout occurs because an application sleep could occur during the setTimeout duration.\r\n if (!transportLogic.verifyLastActive(connection)) {\r\n return;\r\n }\r\n\r\n connection._.reconnectTimeout = window.setTimeout(function () {\r\n if (!transportLogic.verifyLastActive(connection)) {\r\n return;\r\n }\r\n\r\n transport.stop(connection);\r\n\r\n if (transportLogic.ensureReconnectingState(connection)) {\r\n connection.log(transportName + \" reconnecting.\");\r\n transport.start(connection);\r\n }\r\n }, connection.reconnectDelay);\r\n }\r\n },\r\n\r\n handleParseFailure: function (connection, result, error, onFailed, context) {\r\n var wrappedError = signalR._.transportError(\r\n signalR._.format(signalR.resources.parseFailed, result),\r\n connection.transport,\r\n error,\r\n context);\r\n\r\n // If we're in the initialization phase trigger onFailed, otherwise stop the connection.\r\n if (onFailed && onFailed(wrappedError)) {\r\n connection.log(\"Failed to parse server response while attempting to connect.\");\r\n } else {\r\n $(connection).triggerHandler(events.onError, [wrappedError]);\r\n connection.stop();\r\n }\r\n },\r\n\r\n initHandler: function (connection) {\r\n return new InitHandler(connection);\r\n },\r\n\r\n foreverFrame: {\r\n count: 0,\r\n connections: {}\r\n }\r\n };\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.transports.webSockets.js */\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n\r\n/*global window:false */\r\n/// \r\n\r\n(function ($, window, undefined) {\r\n\r\n var signalR = $.signalR,\r\n events = $.signalR.events,\r\n changeState = $.signalR.changeState,\r\n transportLogic = signalR.transports._logic;\r\n\r\n signalR.transports.webSockets = {\r\n name: \"webSockets\",\r\n\r\n supportsKeepAlive: function () {\r\n return true;\r\n },\r\n\r\n send: function (connection, data) {\r\n var payload = transportLogic.stringifySend(connection, data);\r\n\r\n try {\r\n connection.socket.send(payload);\r\n } catch (ex) {\r\n $(connection).triggerHandler(events.onError,\r\n [signalR._.transportError(\r\n signalR.resources.webSocketsInvalidState,\r\n connection.transport,\r\n ex,\r\n connection.socket\r\n ),\r\n data]);\r\n }\r\n },\r\n\r\n start: function (connection, onSuccess, onFailed) {\r\n var url,\r\n opened = false,\r\n that = this,\r\n reconnecting = !onSuccess,\r\n $connection = $(connection);\r\n\r\n if (!window.WebSocket) {\r\n onFailed();\r\n return;\r\n }\r\n\r\n if (!connection.socket) {\r\n if (connection.webSocketServerUrl) {\r\n url = connection.webSocketServerUrl;\r\n } else {\r\n url = connection.wsProtocol + connection.host;\r\n }\r\n\r\n url += transportLogic.getUrl(connection, this.name, reconnecting);\r\n\r\n connection.log(\"Connecting to websocket endpoint '\" + url + \"'.\");\r\n connection.socket = new window.WebSocket(url);\r\n\r\n connection.socket.onopen = function () {\r\n opened = true;\r\n connection.log(\"Websocket opened.\");\r\n\r\n transportLogic.clearReconnectTimeout(connection);\r\n\r\n if (changeState(connection,\r\n signalR.connectionState.reconnecting,\r\n signalR.connectionState.connected) === true) {\r\n $connection.triggerHandler(events.onReconnect);\r\n }\r\n };\r\n\r\n connection.socket.onclose = function (event) {\r\n var error;\r\n\r\n // Only handle a socket close if the close is from the current socket.\r\n // Sometimes on disconnect the server will push down an onclose event\r\n // to an expired socket.\r\n\r\n if (this === connection.socket) {\r\n if (opened && typeof event.wasClean !== \"undefined\" && event.wasClean === false) {\r\n // Ideally this would use the websocket.onerror handler (rather than checking wasClean in onclose) but\r\n // I found in some circumstances Chrome won't call onerror. This implementation seems to work on all browsers.\r\n error = signalR._.transportError(\r\n signalR.resources.webSocketClosed,\r\n connection.transport,\r\n event);\r\n\r\n connection.log(\"Unclean disconnect from websocket: \" + (event.reason || \"[no reason given].\"));\r\n } else {\r\n connection.log(\"Websocket closed.\");\r\n }\r\n\r\n if (!onFailed || !onFailed(error)) {\r\n if (error) {\r\n $(connection).triggerHandler(events.onError, [error]);\r\n }\r\n\r\n that.reconnect(connection);\r\n }\r\n }\r\n };\r\n\r\n connection.socket.onmessage = function (event) {\r\n var data;\r\n\r\n try {\r\n data = connection._parseResponse(event.data);\r\n }\r\n catch (error) {\r\n transportLogic.handleParseFailure(connection, event.data, error, onFailed, event);\r\n return;\r\n }\r\n\r\n if (data) {\r\n transportLogic.processMessages(connection, data, onSuccess);\r\n }\r\n };\r\n }\r\n },\r\n\r\n reconnect: function (connection) {\r\n transportLogic.reconnect(connection, this.name);\r\n },\r\n\r\n lostConnection: function (connection) {\r\n this.reconnect(connection);\r\n },\r\n\r\n stop: function (connection) {\r\n // Don't trigger a reconnect after stopping\r\n transportLogic.clearReconnectTimeout(connection);\r\n\r\n if (connection.socket) {\r\n connection.log(\"Closing the Websocket.\");\r\n connection.socket.close();\r\n connection.socket = null;\r\n }\r\n },\r\n\r\n abort: function (connection, async) {\r\n transportLogic.ajaxAbort(connection, async);\r\n }\r\n };\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.transports.serverSentEvents.js */\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n\r\n/*global window:false */\r\n/// \r\n\r\n(function ($, window, undefined) {\r\n\r\n var signalR = $.signalR,\r\n events = $.signalR.events,\r\n changeState = $.signalR.changeState,\r\n transportLogic = signalR.transports._logic,\r\n clearReconnectAttemptTimeout = function (connection) {\r\n window.clearTimeout(connection._.reconnectAttemptTimeoutHandle);\r\n delete connection._.reconnectAttemptTimeoutHandle;\r\n };\r\n\r\n signalR.transports.serverSentEvents = {\r\n name: \"serverSentEvents\",\r\n\r\n supportsKeepAlive: function () {\r\n return true;\r\n },\r\n\r\n timeOut: 3000,\r\n\r\n start: function (connection, onSuccess, onFailed) {\r\n var that = this,\r\n opened = false,\r\n $connection = $(connection),\r\n reconnecting = !onSuccess,\r\n url;\r\n\r\n if (connection.eventSource) {\r\n connection.log(\"The connection already has an event source. Stopping it.\");\r\n connection.stop();\r\n }\r\n\r\n if (!window.EventSource) {\r\n if (onFailed) {\r\n connection.log(\"This browser doesn't support SSE.\");\r\n onFailed();\r\n }\r\n return;\r\n }\r\n\r\n url = transportLogic.getUrl(connection, this.name, reconnecting);\r\n\r\n try {\r\n connection.log(\"Attempting to connect to SSE endpoint '\" + url + \"'.\");\r\n connection.eventSource = new window.EventSource(url, { withCredentials: connection.withCredentials });\r\n }\r\n catch (e) {\r\n connection.log(\"EventSource failed trying to connect with error \" + e.Message + \".\");\r\n if (onFailed) {\r\n // The connection failed, call the failed callback\r\n onFailed();\r\n } else {\r\n $connection.triggerHandler(events.onError, [signalR._.transportError(signalR.resources.eventSourceFailedToConnect, connection.transport, e)]);\r\n if (reconnecting) {\r\n // If we were reconnecting, rather than doing initial connect, then try reconnect again\r\n that.reconnect(connection);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if (reconnecting) {\r\n connection._.reconnectAttemptTimeoutHandle = window.setTimeout(function () {\r\n if (opened === false) {\r\n // If we're reconnecting and the event source is attempting to connect,\r\n // don't keep retrying. This causes duplicate connections to spawn.\r\n if (connection.eventSource.readyState !== window.EventSource.OPEN) {\r\n // If we were reconnecting, rather than doing initial connect, then try reconnect again\r\n that.reconnect(connection);\r\n }\r\n }\r\n },\r\n that.timeOut);\r\n }\r\n\r\n connection.eventSource.addEventListener(\"open\", function (e) {\r\n connection.log(\"EventSource connected.\");\r\n\r\n clearReconnectAttemptTimeout(connection);\r\n transportLogic.clearReconnectTimeout(connection);\r\n\r\n if (opened === false) {\r\n opened = true;\r\n\r\n if (changeState(connection,\r\n signalR.connectionState.reconnecting,\r\n signalR.connectionState.connected) === true) {\r\n $connection.triggerHandler(events.onReconnect);\r\n }\r\n }\r\n }, false);\r\n\r\n connection.eventSource.addEventListener(\"message\", function (e) {\r\n var res;\r\n\r\n // process messages\r\n if (e.data === \"initialized\") {\r\n return;\r\n }\r\n\r\n try {\r\n res = connection._parseResponse(e.data);\r\n }\r\n catch (error) {\r\n transportLogic.handleParseFailure(connection, e.data, error, onFailed, e);\r\n return;\r\n }\r\n\r\n transportLogic.processMessages(connection, res, onSuccess);\r\n }, false);\r\n\r\n connection.eventSource.addEventListener(\"error\", function (e) {\r\n var error = signalR._.transportError(\r\n signalR.resources.eventSourceError,\r\n connection.transport,\r\n e);\r\n\r\n // Only handle an error if the error is from the current Event Source.\r\n // Sometimes on disconnect the server will push down an error event\r\n // to an expired Event Source.\r\n if (this !== connection.eventSource) {\r\n return;\r\n }\r\n\r\n if (onFailed && onFailed(error)) {\r\n return;\r\n }\r\n\r\n connection.log(\"EventSource readyState: \" + connection.eventSource.readyState + \".\");\r\n\r\n if (e.eventPhase === window.EventSource.CLOSED) {\r\n // We don't use the EventSource's native reconnect function as it\r\n // doesn't allow us to change the URL when reconnecting. We need\r\n // to change the URL to not include the /connect suffix, and pass\r\n // the last message id we received.\r\n connection.log(\"EventSource reconnecting due to the server connection ending.\");\r\n that.reconnect(connection);\r\n } else {\r\n // connection error\r\n connection.log(\"EventSource error.\");\r\n $connection.triggerHandler(events.onError, [error]);\r\n }\r\n }, false);\r\n },\r\n\r\n reconnect: function (connection) {\r\n transportLogic.reconnect(connection, this.name);\r\n },\r\n\r\n lostConnection: function (connection) {\r\n this.reconnect(connection);\r\n },\r\n\r\n send: function (connection, data) {\r\n transportLogic.ajaxSend(connection, data);\r\n },\r\n\r\n stop: function (connection) {\r\n // Don't trigger a reconnect after stopping\r\n clearReconnectAttemptTimeout(connection);\r\n transportLogic.clearReconnectTimeout(connection);\r\n\r\n if (connection && connection.eventSource) {\r\n connection.log(\"EventSource calling close().\");\r\n connection.eventSource.close();\r\n connection.eventSource = null;\r\n delete connection.eventSource;\r\n }\r\n },\r\n\r\n abort: function (connection, async) {\r\n transportLogic.ajaxAbort(connection, async);\r\n }\r\n };\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.transports.foreverFrame.js */\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n\r\n/*global window:false */\r\n/// \r\n\r\n(function ($, window, undefined) {\r\n\r\n var signalR = $.signalR,\r\n events = $.signalR.events,\r\n changeState = $.signalR.changeState,\r\n transportLogic = signalR.transports._logic,\r\n createFrame = function () {\r\n var frame = window.document.createElement(\"iframe\");\r\n frame.setAttribute(\"style\", \"position:absolute;top:0;left:0;width:0;height:0;visibility:hidden;\");\r\n return frame;\r\n },\r\n // Used to prevent infinite loading icon spins in older versions of ie\r\n // We build this object inside a closure so we don't pollute the rest of\r\n // the foreverFrame transport with unnecessary functions/utilities.\r\n loadPreventer = (function () {\r\n var loadingFixIntervalId = null,\r\n loadingFixInterval = 1000,\r\n attachedTo = 0;\r\n\r\n return {\r\n prevent: function () {\r\n // Prevent additional iframe removal procedures from newer browsers\r\n if (signalR._.ieVersion <= 8) {\r\n // We only ever want to set the interval one time, so on the first attachedTo\r\n if (attachedTo === 0) {\r\n // Create and destroy iframe every 3 seconds to prevent loading icon, super hacky\r\n loadingFixIntervalId = window.setInterval(function () {\r\n var tempFrame = createFrame();\r\n\r\n window.document.body.appendChild(tempFrame);\r\n window.document.body.removeChild(tempFrame);\r\n\r\n tempFrame = null;\r\n }, loadingFixInterval);\r\n }\r\n\r\n attachedTo++;\r\n }\r\n },\r\n cancel: function () {\r\n // Only clear the interval if there's only one more object that the loadPreventer is attachedTo\r\n if (attachedTo === 1) {\r\n window.clearInterval(loadingFixIntervalId);\r\n }\r\n\r\n if (attachedTo > 0) {\r\n attachedTo--;\r\n }\r\n }\r\n };\r\n })();\r\n\r\n signalR.transports.foreverFrame = {\r\n name: \"foreverFrame\",\r\n\r\n supportsKeepAlive: function () {\r\n return true;\r\n },\r\n\r\n // Added as a value here so we can create tests to verify functionality\r\n iframeClearThreshold: 50,\r\n\r\n start: function (connection, onSuccess, onFailed) {\r\n if (connection.accessToken) {\r\n if (onFailed) {\r\n connection.log(\"Forever Frame does not support connections that require a Bearer token to connect, such as the Azure SignalR Service.\");\r\n onFailed();\r\n }\r\n return;\r\n }\r\n\r\n var that = this,\r\n frameId = (transportLogic.foreverFrame.count += 1),\r\n url,\r\n frame = createFrame(),\r\n frameLoadHandler = function () {\r\n connection.log(\"Forever frame iframe finished loading and is no longer receiving messages.\");\r\n if (!onFailed || !onFailed()) {\r\n that.reconnect(connection);\r\n }\r\n };\r\n\r\n if (window.EventSource) {\r\n // If the browser supports SSE, don't use Forever Frame\r\n if (onFailed) {\r\n connection.log(\"Forever Frame is not supported by SignalR on browsers with SSE support.\");\r\n onFailed();\r\n }\r\n return;\r\n }\r\n\r\n frame.setAttribute(\"data-signalr-connection-id\", connection.id);\r\n\r\n // Start preventing loading icon\r\n // This will only perform work if the loadPreventer is not attached to another connection.\r\n loadPreventer.prevent();\r\n\r\n // Build the url\r\n url = transportLogic.getUrl(connection, this.name);\r\n url += \"&frameId=\" + frameId;\r\n\r\n // add frame to the document prior to setting URL to avoid caching issues.\r\n window.document.documentElement.appendChild(frame);\r\n\r\n connection.log(\"Binding to iframe's load event.\");\r\n\r\n if (frame.addEventListener) {\r\n frame.addEventListener(\"load\", frameLoadHandler, false);\r\n } else if (frame.attachEvent) {\r\n frame.attachEvent(\"onload\", frameLoadHandler);\r\n }\r\n\r\n frame.src = url;\r\n transportLogic.foreverFrame.connections[frameId] = connection;\r\n\r\n connection.frame = frame;\r\n connection.frameId = frameId;\r\n\r\n if (onSuccess) {\r\n connection.onSuccess = function () {\r\n connection.log(\"Iframe transport started.\");\r\n onSuccess();\r\n };\r\n }\r\n },\r\n\r\n reconnect: function (connection) {\r\n var that = this;\r\n\r\n // Need to verify connection state and verify before the setTimeout occurs because an application sleep could occur during the setTimeout duration.\r\n if (transportLogic.isConnectedOrReconnecting(connection) && transportLogic.verifyLastActive(connection)) {\r\n window.setTimeout(function () {\r\n // Verify that we're ok to reconnect.\r\n if (!transportLogic.verifyLastActive(connection)) {\r\n return;\r\n }\r\n\r\n if (connection.frame && transportLogic.ensureReconnectingState(connection)) {\r\n var frame = connection.frame,\r\n src = transportLogic.getUrl(connection, that.name, true) + \"&frameId=\" + connection.frameId;\r\n connection.log(\"Updating iframe src to '\" + src + \"'.\");\r\n frame.src = src;\r\n }\r\n }, connection.reconnectDelay);\r\n }\r\n },\r\n\r\n lostConnection: function (connection) {\r\n this.reconnect(connection);\r\n },\r\n\r\n send: function (connection, data) {\r\n transportLogic.ajaxSend(connection, data);\r\n },\r\n\r\n receive: function (connection, data) {\r\n var cw,\r\n body,\r\n response;\r\n\r\n if (connection.json !== connection._originalJson) {\r\n // If there's a custom JSON parser configured then serialize the object\r\n // using the original (browser) JSON parser and then deserialize it using\r\n // the custom parser (connection._parseResponse does that). This is so we\r\n // can easily send the response from the server as \"raw\" JSON but still\r\n // support custom JSON deserialization in the browser.\r\n data = connection._originalJson.stringify(data);\r\n }\r\n\r\n response = connection._parseResponse(data);\r\n\r\n transportLogic.processMessages(connection, response, connection.onSuccess);\r\n\r\n // Protect against connection stopping from a callback trigger within the processMessages above.\r\n if (connection.state === $.signalR.connectionState.connected) {\r\n // Delete the script & div elements\r\n connection.frameMessageCount = (connection.frameMessageCount || 0) + 1;\r\n if (connection.frameMessageCount > signalR.transports.foreverFrame.iframeClearThreshold) {\r\n connection.frameMessageCount = 0;\r\n cw = connection.frame.contentWindow || connection.frame.contentDocument;\r\n if (cw && cw.document && cw.document.body) {\r\n body = cw.document.body;\r\n\r\n // Remove all the child elements from the iframe's body to conserver memory\r\n while (body.firstChild) {\r\n body.removeChild(body.firstChild);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n\r\n stop: function (connection) {\r\n var cw = null;\r\n\r\n // Stop attempting to prevent loading icon\r\n loadPreventer.cancel();\r\n\r\n if (connection.frame) {\r\n if (connection.frame.stop) {\r\n connection.frame.stop();\r\n } else {\r\n try {\r\n cw = connection.frame.contentWindow || connection.frame.contentDocument;\r\n if (cw.document && cw.document.execCommand) {\r\n cw.document.execCommand(\"Stop\");\r\n }\r\n }\r\n catch (e) {\r\n connection.log(\"Error occurred when stopping foreverFrame transport. Message = \" + e.message + \".\");\r\n }\r\n }\r\n\r\n // Ensure the iframe is where we left it\r\n if (connection.frame.parentNode === window.document.documentElement) {\r\n window.document.documentElement.removeChild(connection.frame);\r\n }\r\n\r\n delete transportLogic.foreverFrame.connections[connection.frameId];\r\n connection.frame = null;\r\n connection.frameId = null;\r\n delete connection.frame;\r\n delete connection.frameId;\r\n delete connection.onSuccess;\r\n delete connection.frameMessageCount;\r\n connection.log(\"Stopping forever frame.\");\r\n }\r\n },\r\n\r\n abort: function (connection, async) {\r\n transportLogic.ajaxAbort(connection, async);\r\n },\r\n\r\n getConnection: function (id) {\r\n return transportLogic.foreverFrame.connections[id];\r\n },\r\n\r\n started: function (connection) {\r\n if (changeState(connection,\r\n signalR.connectionState.reconnecting,\r\n signalR.connectionState.connected) === true) {\r\n\r\n $(connection).triggerHandler(events.onReconnect);\r\n }\r\n }\r\n };\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.transports.longPolling.js */\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n\r\n/*global window:false */\r\n/// \r\n\r\n(function ($, window, undefined) {\r\n\r\n var signalR = $.signalR,\r\n events = $.signalR.events,\r\n changeState = $.signalR.changeState,\r\n isDisconnecting = $.signalR.isDisconnecting,\r\n transportLogic = signalR.transports._logic;\r\n\r\n signalR.transports.longPolling = {\r\n name: \"longPolling\",\r\n\r\n supportsKeepAlive: function () {\r\n return false;\r\n },\r\n\r\n reconnectDelay: 3000,\r\n\r\n start: function (connection, onSuccess, onFailed) {\r\n /// Starts the long polling connection\r\n /// The SignalR connection to start\r\n var that = this,\r\n fireConnect = function () {\r\n fireConnect = $.noop;\r\n\r\n connection.log(\"LongPolling connected.\");\r\n\r\n if (onSuccess) {\r\n onSuccess();\r\n } else {\r\n connection.log(\"WARNING! The client received an init message after reconnecting.\");\r\n }\r\n },\r\n tryFailConnect = function (error) {\r\n if (onFailed(error)) {\r\n connection.log(\"LongPolling failed to connect.\");\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n privateData = connection._,\r\n reconnectErrors = 0,\r\n fireReconnected = function (instance) {\r\n window.clearTimeout(privateData.reconnectTimeoutId);\r\n privateData.reconnectTimeoutId = null;\r\n\r\n if (changeState(instance,\r\n signalR.connectionState.reconnecting,\r\n signalR.connectionState.connected) === true) {\r\n // Successfully reconnected!\r\n instance.log(\"Raising the reconnect event\");\r\n $(instance).triggerHandler(events.onReconnect);\r\n }\r\n },\r\n // 1 hour\r\n maxFireReconnectedTimeout = 3600000;\r\n\r\n if (connection.pollXhr) {\r\n connection.log(\"Polling xhr requests already exists, aborting.\");\r\n connection.stop();\r\n }\r\n\r\n connection.messageId = null;\r\n\r\n privateData.reconnectTimeoutId = null;\r\n\r\n privateData.pollTimeoutId = window.setTimeout(function () {\r\n (function poll(instance, raiseReconnect) {\r\n var messageId = instance.messageId,\r\n connect = (messageId === null),\r\n reconnecting = !connect,\r\n polling = !raiseReconnect,\r\n url = transportLogic.getUrl(instance, that.name, reconnecting, polling, true /* use Post for longPolling */),\r\n postData = {};\r\n\r\n if (instance.messageId) {\r\n postData.messageId = instance.messageId;\r\n }\r\n\r\n if (instance.groupsToken) {\r\n postData.groupsToken = instance.groupsToken;\r\n }\r\n\r\n // If we've disconnected during the time we've tried to re-instantiate the poll then stop.\r\n if (isDisconnecting(instance) === true) {\r\n return;\r\n }\r\n\r\n connection.log(\"Opening long polling request to '\" + url + \"'.\");\r\n instance.pollXhr = transportLogic.ajax(connection, {\r\n xhrFields: {\r\n onprogress: function () {\r\n transportLogic.markLastMessage(connection);\r\n }\r\n },\r\n url: url,\r\n type: \"POST\",\r\n contentType: signalR._.defaultContentType,\r\n data: postData,\r\n timeout: connection._.pollTimeout,\r\n headers: connection.accessToken ? { \"Authorization\": \"Bearer \" + connection.accessToken } : {},\r\n success: function (result) {\r\n var minData,\r\n delay = 0,\r\n data,\r\n shouldReconnect;\r\n\r\n connection.log(\"Long poll complete.\");\r\n\r\n // Reset our reconnect errors so if we transition into a reconnecting state again we trigger\r\n // reconnected quickly\r\n reconnectErrors = 0;\r\n\r\n try {\r\n // Remove any keep-alives from the beginning of the result\r\n minData = connection._parseResponse(result);\r\n }\r\n catch (error) {\r\n transportLogic.handleParseFailure(instance, result, error, tryFailConnect, instance.pollXhr);\r\n return;\r\n }\r\n\r\n // If there's currently a timeout to trigger reconnect, fire it now before processing messages\r\n if (privateData.reconnectTimeoutId !== null) {\r\n fireReconnected(instance);\r\n }\r\n\r\n if (minData) {\r\n data = transportLogic.maximizePersistentResponse(minData);\r\n }\r\n\r\n transportLogic.processMessages(instance, minData, fireConnect);\r\n\r\n if (data &&\r\n $.type(data.LongPollDelay) === \"number\") {\r\n delay = data.LongPollDelay;\r\n }\r\n\r\n if (isDisconnecting(instance) === true) {\r\n return;\r\n }\r\n\r\n shouldReconnect = data && data.ShouldReconnect;\r\n if (shouldReconnect) {\r\n // Transition into the reconnecting state\r\n // If this fails then that means that the user transitioned the connection into a invalid state in processMessages.\r\n if (!transportLogic.ensureReconnectingState(instance)) {\r\n return;\r\n }\r\n }\r\n\r\n // We never want to pass a raiseReconnect flag after a successful poll. This is handled via the error function\r\n if (delay > 0) {\r\n privateData.pollTimeoutId = window.setTimeout(function () {\r\n poll(instance, shouldReconnect);\r\n }, delay);\r\n } else {\r\n poll(instance, shouldReconnect);\r\n }\r\n },\r\n\r\n error: function (data, textStatus) {\r\n var error = signalR._.transportError(signalR.resources.longPollFailed, connection.transport, data, instance.pollXhr);\r\n\r\n // Stop trying to trigger reconnect, connection is in an error state\r\n // If we're not in the reconnect state this will noop\r\n window.clearTimeout(privateData.reconnectTimeoutId);\r\n privateData.reconnectTimeoutId = null;\r\n\r\n if (textStatus === \"abort\") {\r\n connection.log(\"Aborted xhr request.\");\r\n return;\r\n }\r\n\r\n if (!tryFailConnect(error)) {\r\n\r\n // Increment our reconnect errors, we assume all errors to be reconnect errors\r\n // In the case that it's our first error this will cause Reconnect to be fired\r\n // after 1 second due to reconnectErrors being = 1.\r\n reconnectErrors++;\r\n\r\n if (connection.state !== signalR.connectionState.reconnecting) {\r\n connection.log(\"An error occurred using longPolling. Status = \" + textStatus + \". Response = \" + data.responseText + \".\");\r\n $(instance).triggerHandler(events.onError, [error]);\r\n }\r\n\r\n // We check the state here to verify that we're not in an invalid state prior to verifying Reconnect.\r\n // If we're not in connected or reconnecting then the next ensureReconnectingState check will fail and will return.\r\n // Therefore we don't want to change that failure code path.\r\n if ((connection.state === signalR.connectionState.connected ||\r\n connection.state === signalR.connectionState.reconnecting) &&\r\n !transportLogic.verifyLastActive(connection)) {\r\n return;\r\n }\r\n\r\n // Transition into the reconnecting state\r\n // If this fails then that means that the user transitioned the connection into the disconnected or connecting state within the above error handler trigger.\r\n if (!transportLogic.ensureReconnectingState(instance)) {\r\n return;\r\n }\r\n\r\n // Call poll with the raiseReconnect flag as true after the reconnect delay\r\n privateData.pollTimeoutId = window.setTimeout(function () {\r\n poll(instance, true);\r\n }, that.reconnectDelay);\r\n }\r\n }\r\n });\r\n\r\n // This will only ever pass after an error has occurred via the poll ajax procedure.\r\n if (reconnecting && raiseReconnect === true) {\r\n // We wait to reconnect depending on how many times we've failed to reconnect.\r\n // This is essentially a heuristic that will exponentially increase in wait time before\r\n // triggering reconnected. This depends on the \"error\" handler of Poll to cancel this\r\n // timeout if it triggers before the Reconnected event fires.\r\n // The Math.min at the end is to ensure that the reconnect timeout does not overflow.\r\n privateData.reconnectTimeoutId = window.setTimeout(function () { fireReconnected(instance); }, Math.min(1000 * (Math.pow(2, reconnectErrors) - 1), maxFireReconnectedTimeout));\r\n }\r\n }(connection));\r\n }, 250); // Have to delay initial poll so Chrome doesn't show loader spinner in tab\r\n },\r\n\r\n lostConnection: function (connection) {\r\n if (connection.pollXhr) {\r\n connection.pollXhr.abort(\"lostConnection\");\r\n }\r\n },\r\n\r\n send: function (connection, data) {\r\n transportLogic.ajaxSend(connection, data);\r\n },\r\n\r\n stop: function (connection) {\r\n /// Stops the long polling connection\r\n /// The SignalR connection to stop\r\n\r\n window.clearTimeout(connection._.pollTimeoutId);\r\n window.clearTimeout(connection._.reconnectTimeoutId);\r\n\r\n delete connection._.pollTimeoutId;\r\n delete connection._.reconnectTimeoutId;\r\n\r\n if (connection.pollXhr) {\r\n connection.pollXhr.abort();\r\n connection.pollXhr = null;\r\n delete connection.pollXhr;\r\n }\r\n },\r\n\r\n abort: function (connection, async) {\r\n transportLogic.ajaxAbort(connection, async);\r\n }\r\n };\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.hubs.js */\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n/*global window:false */\r\n/// \r\n\r\n(function ($, window, undefined) {\r\n\r\n var nextGuid = 0;\r\n var eventNamespace = \".hubProxy\",\r\n signalR = $.signalR;\r\n\r\n function makeEventName(event) {\r\n return event + eventNamespace;\r\n }\r\n\r\n // Equivalent to Array.prototype.map\r\n function map(arr, fun, thisp) {\r\n var i,\r\n length = arr.length,\r\n result = [];\r\n for (i = 0; i < length; i += 1) {\r\n if (arr.hasOwnProperty(i)) {\r\n result[i] = fun.call(thisp, arr[i], i, arr);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function getArgValue(a) {\r\n return $.isFunction(a) ? null : ($.type(a) === \"undefined\" ? null : a);\r\n }\r\n\r\n function hasMembers(obj) {\r\n for (var key in obj) {\r\n // If we have any properties in our callback map then we have callbacks and can exit the loop via return\r\n if (obj.hasOwnProperty(key)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function clearInvocationCallbacks(connection, error) {\r\n /// \r\n var callbacks = connection._.invocationCallbacks,\r\n callback;\r\n\r\n if (hasMembers(callbacks)) {\r\n connection.log(\"Clearing hub invocation callbacks with error: \" + error + \".\");\r\n }\r\n\r\n // Reset the callback cache now as we have a local var referencing it\r\n connection._.invocationCallbackId = 0;\r\n delete connection._.invocationCallbacks;\r\n connection._.invocationCallbacks = {};\r\n\r\n // Loop over the callbacks and invoke them.\r\n // We do this using a local var reference and *after* we've cleared the cache\r\n // so that if a fail callback itself tries to invoke another method we don't\r\n // end up with its callback in the list we're looping over.\r\n for (var callbackId in callbacks) {\r\n callback = callbacks[callbackId];\r\n callback.method.call(callback.scope, { E: error });\r\n }\r\n }\r\n\r\n function isCallbackFromGeneratedHubProxy(callback) {\r\n // https://github.com/SignalR/SignalR/issues/4310\r\n // The stringified callback from the old generated hub proxy is 137 characters in Edge, Firefox and Chrome.\r\n // We slice to avoid wasting too many cycles searching through the text of a long large function.\r\n return $.isFunction(callback) && callback.toString().slice(0, 256).indexOf(\"// Call the client hub method\") >= 0;\r\n }\r\n\r\n // hubProxy\r\n function hubProxy(hubConnection, hubName) {\r\n /// \r\n /// Creates a new proxy object for the given hub connection that can be used to invoke\r\n /// methods on server hubs and handle client method invocation requests from the server.\r\n /// \r\n return new hubProxy.fn.init(hubConnection, hubName);\r\n }\r\n\r\n hubProxy.fn = hubProxy.prototype = {\r\n init: function (connection, hubName) {\r\n this.state = {};\r\n this.connection = connection;\r\n this.hubName = hubName;\r\n this._ = {\r\n callbackMap: {}\r\n };\r\n },\r\n\r\n constructor: hubProxy,\r\n\r\n hasSubscriptions: function () {\r\n return hasMembers(this._.callbackMap);\r\n },\r\n\r\n on: function (eventName, callback, callbackIdentity) {\r\n /// Wires up a callback to be invoked when a invocation request is received from the server hub.\r\n /// The name of the hub event to register the callback for.\r\n /// The callback to be invoked.\r\n /// An optional object to use as the \"identity\" for the callback when checking if the handler has already been registered. Defaults to the value of 'callback' if not provided.\r\n var that = this,\r\n callbackMap = that._.callbackMap,\r\n isFromOldGeneratedHubProxy = !callbackIdentity && isCallbackFromGeneratedHubProxy(callback);\r\n\r\n // We need the third \"identity\" argument because the registerHubProxies call made by signalr/js wraps the user-provided callback in a custom wrapper which breaks the identity comparison.\r\n // callbackIdentity allows the caller of `on` to provide a separate object to use as the \"identity\". `registerHubProxies` uses the original user callback as this identity object.\r\n callbackIdentity = callbackIdentity || callback;\r\n\r\n // Assign a global ID to the identity object. This tags the object so we can detect the same object when it comes back.\r\n if(!callbackIdentity._signalRGuid) {\r\n callbackIdentity._signalRGuid = nextGuid++;\r\n }\r\n\r\n // Normalize the event name to lowercase\r\n eventName = eventName.toLowerCase();\r\n\r\n // If there is not an event registered for this callback yet we want to create its event space in the callback map.\r\n var callbackSpace = callbackMap[eventName];\r\n if (!callbackSpace) {\r\n callbackSpace = [];\r\n callbackMap[eventName] = callbackSpace;\r\n }\r\n\r\n // Check if there's already a registration\r\n var registration;\r\n for (var i = 0; i < callbackSpace.length; i++) {\r\n if (callbackSpace[i].guid === callbackIdentity._signalRGuid || (isFromOldGeneratedHubProxy && callbackSpace[i].isFromOldGeneratedHubProxy)) {\r\n registration = callbackSpace[i];\r\n }\r\n }\r\n\r\n // Create a registration if there isn't one already\r\n if (!registration) {\r\n registration = {\r\n guid: callbackIdentity._signalRGuid,\r\n eventHandlers: [],\r\n isFromOldGeneratedHubProxy: isFromOldGeneratedHubProxy\r\n };\r\n callbackMap[eventName].push(registration);\r\n }\r\n\r\n var handler = function (e, data) {\r\n callback.apply(that, data);\r\n };\r\n registration.eventHandlers.push(handler);\r\n\r\n $(that).bind(makeEventName(eventName), handler);\r\n\r\n return that;\r\n },\r\n\r\n off: function (eventName, callback, callbackIdentity) {\r\n /// Removes the callback invocation request from the server hub for the given event name.\r\n /// The name of the hub event to unregister the callback for.\r\n /// The callback to be removed.\r\n /// An optional object to use as the \"identity\" when looking up the callback. Corresponds to the same parameter provided to 'on'. Defaults to the value of 'callback' if not provided.\r\n var that = this,\r\n callbackMap = that._.callbackMap,\r\n callbackSpace,\r\n isFromOldGeneratedHubProxy = !callbackIdentity && isCallbackFromGeneratedHubProxy(callback);\r\n\r\n callbackIdentity = callbackIdentity || callback;\r\n\r\n // Normalize the event name to lowercase\r\n eventName = eventName.toLowerCase();\r\n\r\n callbackSpace = callbackMap[eventName];\r\n\r\n // Verify that there is an event space to unbind\r\n if (callbackSpace) {\r\n\r\n if (callback) {\r\n // Find the callback registration\r\n var callbackRegistration;\r\n var callbackIndex;\r\n for (var i = 0; i < callbackSpace.length; i++) {\r\n if (callbackSpace[i].guid === callbackIdentity._signalRGuid || (isFromOldGeneratedHubProxy && callbackSpace[i].isFromOldGeneratedHubProxy)) {\r\n callbackIndex = i;\r\n callbackRegistration = callbackSpace[i];\r\n }\r\n }\r\n\r\n // Only unbind if there's an event bound with eventName and a callback with the specified callback\r\n if (callbackRegistration) {\r\n // Unbind all event handlers associated with the registration.\r\n for (var j = 0; j < callbackRegistration.eventHandlers.length; j++) {\r\n $(that).unbind(makeEventName(eventName), callbackRegistration.eventHandlers[j]);\r\n }\r\n\r\n // Remove the registration from the list\r\n callbackSpace.splice(i, 1);\r\n\r\n // Check if there are any registrations left, if not we need to destroy it.\r\n if (callbackSpace.length === 0) {\r\n delete callbackMap[eventName];\r\n }\r\n }\r\n } else if (!callback) { // Check if we're removing the whole event and we didn't error because of an invalid callback\r\n $(that).unbind(makeEventName(eventName));\r\n\r\n delete callbackMap[eventName];\r\n }\r\n }\r\n\r\n return that;\r\n },\r\n\r\n invoke: function (methodName) {\r\n /// Invokes a server hub method with the given arguments.\r\n /// The name of the server hub method.\r\n\r\n var that = this,\r\n connection = that.connection,\r\n args = $.makeArray(arguments).slice(1),\r\n argValues = map(args, getArgValue),\r\n data = { H: that.hubName, M: methodName, A: argValues, I: connection._.invocationCallbackId },\r\n d = $.Deferred(),\r\n callback = function (minResult) {\r\n var result = that._maximizeHubResponse(minResult),\r\n source,\r\n error;\r\n\r\n // Update the hub state\r\n $.extend(that.state, result.State);\r\n\r\n if (result.Progress) {\r\n if (d.notifyWith) {\r\n // Progress is only supported in jQuery 1.7+\r\n d.notifyWith(that, [result.Progress.Data]);\r\n } else if (!connection._.progressjQueryVersionLogged) {\r\n connection.log(\"A hub method invocation progress update was received but the version of jQuery in use (\" + $.prototype.jquery + \") does not support progress updates. Upgrade to jQuery 1.7+ to receive progress notifications.\");\r\n connection._.progressjQueryVersionLogged = true;\r\n }\r\n } else if (result.Error) {\r\n // Server hub method threw an exception, log it & reject the deferred\r\n if (result.StackTrace) {\r\n connection.log(result.Error + \"\\n\" + result.StackTrace + \".\");\r\n }\r\n\r\n // result.ErrorData is only set if a HubException was thrown\r\n source = result.IsHubException ? \"HubException\" : \"Exception\";\r\n error = signalR._.error(result.Error, source);\r\n error.data = result.ErrorData;\r\n\r\n connection.log(that.hubName + \".\" + methodName + \" failed to execute. Error: \" + error.message);\r\n d.rejectWith(that, [error]);\r\n } else {\r\n // Server invocation succeeded, resolve the deferred\r\n connection.log(\"Invoked \" + that.hubName + \".\" + methodName);\r\n d.resolveWith(that, [result.Result]);\r\n }\r\n };\r\n\r\n connection._.invocationCallbacks[connection._.invocationCallbackId.toString()] = { scope: that, method: callback };\r\n connection._.invocationCallbackId += 1;\r\n\r\n if (!$.isEmptyObject(that.state)) {\r\n data.S = that.state;\r\n }\r\n\r\n connection.log(\"Invoking \" + that.hubName + \".\" + methodName);\r\n connection.send(data);\r\n\r\n return d.promise();\r\n },\r\n\r\n _maximizeHubResponse: function (minHubResponse) {\r\n return {\r\n State: minHubResponse.S,\r\n Result: minHubResponse.R,\r\n Progress: minHubResponse.P ? {\r\n Id: minHubResponse.P.I,\r\n Data: minHubResponse.P.D\r\n } : null,\r\n Id: minHubResponse.I,\r\n IsHubException: minHubResponse.H,\r\n Error: minHubResponse.E,\r\n StackTrace: minHubResponse.T,\r\n ErrorData: minHubResponse.D\r\n };\r\n }\r\n };\r\n\r\n hubProxy.fn.init.prototype = hubProxy.fn;\r\n\r\n // hubConnection\r\n function hubConnection(url, options) {\r\n /// Creates a new hub connection.\r\n /// [Optional] The hub route url, defaults to \"/signalr\".\r\n /// [Optional] Settings to use when creating the hubConnection.\r\n var settings = {\r\n qs: null,\r\n logging: false,\r\n useDefaultPath: true\r\n };\r\n\r\n $.extend(settings, options);\r\n\r\n if (!url || settings.useDefaultPath) {\r\n url = (url || \"\") + \"/signalr\";\r\n }\r\n return new hubConnection.fn.init(url, settings);\r\n }\r\n\r\n hubConnection.fn = hubConnection.prototype = $.connection();\r\n\r\n hubConnection.fn.init = function (url, options) {\r\n var settings = {\r\n qs: null,\r\n logging: false,\r\n useDefaultPath: true\r\n },\r\n connection = this;\r\n\r\n $.extend(settings, options);\r\n\r\n // Call the base constructor\r\n $.signalR.fn.init.call(connection, url, settings.qs, settings.logging);\r\n\r\n // Object to store hub proxies for this connection\r\n connection.proxies = {};\r\n\r\n connection._.invocationCallbackId = 0;\r\n connection._.invocationCallbacks = {};\r\n\r\n // Wire up the received handler\r\n connection.received(function (minData) {\r\n var data, proxy, dataCallbackId, callback, hubName, eventName;\r\n if (!minData) {\r\n return;\r\n }\r\n\r\n // We have to handle progress updates first in order to ensure old clients that receive\r\n // progress updates enter the return value branch and then no-op when they can't find\r\n // the callback in the map (because the minData.I value will not be a valid callback ID)\r\n // Process progress notification\r\n if (typeof (minData.P) !== \"undefined\") {\r\n dataCallbackId = minData.P.I.toString();\r\n callback = connection._.invocationCallbacks[dataCallbackId];\r\n if (callback) {\r\n callback.method.call(callback.scope, minData);\r\n }\r\n } else if (typeof (minData.I) !== \"undefined\") {\r\n // We received the return value from a server method invocation, look up callback by id and call it\r\n dataCallbackId = minData.I.toString();\r\n callback = connection._.invocationCallbacks[dataCallbackId];\r\n if (callback) {\r\n // Delete the callback from the proxy\r\n connection._.invocationCallbacks[dataCallbackId] = null;\r\n delete connection._.invocationCallbacks[dataCallbackId];\r\n\r\n // Invoke the callback\r\n callback.method.call(callback.scope, minData);\r\n }\r\n } else {\r\n data = this._maximizeClientHubInvocation(minData);\r\n\r\n // We received a client invocation request, i.e. broadcast from server hub\r\n connection.log(\"Triggering client hub event '\" + data.Method + \"' on hub '\" + data.Hub + \"'.\");\r\n\r\n // Normalize the names to lowercase\r\n hubName = data.Hub.toLowerCase();\r\n eventName = data.Method.toLowerCase();\r\n\r\n // Trigger the local invocation event\r\n proxy = this.proxies[hubName];\r\n\r\n // Update the hub state\r\n $.extend(proxy.state, data.State);\r\n $(proxy).triggerHandler(makeEventName(eventName), [data.Args]);\r\n }\r\n });\r\n\r\n connection.error(function (errData, origData) {\r\n var callbackId, callback;\r\n\r\n if (!origData) {\r\n // No original data passed so this is not a send error\r\n return;\r\n }\r\n\r\n callbackId = origData.I;\r\n callback = connection._.invocationCallbacks[callbackId];\r\n\r\n // Verify that there is a callback bound (could have been cleared)\r\n if (callback) {\r\n // Delete the callback\r\n connection._.invocationCallbacks[callbackId] = null;\r\n delete connection._.invocationCallbacks[callbackId];\r\n\r\n // Invoke the callback with an error to reject the promise\r\n callback.method.call(callback.scope, { E: errData });\r\n }\r\n });\r\n\r\n connection.reconnecting(function () {\r\n if (connection.transport && connection.transport.name === \"webSockets\") {\r\n clearInvocationCallbacks(connection, \"Connection started reconnecting before invocation result was received.\");\r\n }\r\n });\r\n\r\n connection.disconnected(function () {\r\n clearInvocationCallbacks(connection, \"Connection was disconnected before invocation result was received.\");\r\n });\r\n };\r\n\r\n hubConnection.fn._maximizeClientHubInvocation = function (minClientHubInvocation) {\r\n return {\r\n Hub: minClientHubInvocation.H,\r\n Method: minClientHubInvocation.M,\r\n Args: minClientHubInvocation.A,\r\n State: minClientHubInvocation.S\r\n };\r\n };\r\n\r\n hubConnection.fn._registerSubscribedHubs = function () {\r\n /// \r\n /// Sets the starting event to loop through the known hubs and register any new hubs\r\n /// that have been added to the proxy.\r\n /// \r\n var connection = this;\r\n\r\n if (!connection._subscribedToHubs) {\r\n connection._subscribedToHubs = true;\r\n connection.starting(function () {\r\n // Set the connection's data object with all the hub proxies with active subscriptions.\r\n // These proxies will receive notifications from the server.\r\n var subscribedHubs = [];\r\n\r\n $.each(connection.proxies, function (key) {\r\n if (this.hasSubscriptions()) {\r\n subscribedHubs.push({ name: key });\r\n connection.log(\"Client subscribed to hub '\" + key + \"'.\");\r\n }\r\n });\r\n\r\n if (subscribedHubs.length === 0) {\r\n connection.log(\"No hubs have been subscribed to. The client will not receive data from hubs. To fix, declare at least one client side function prior to connection start for each hub you wish to subscribe to.\");\r\n }\r\n\r\n connection.data = connection.json.stringify(subscribedHubs);\r\n });\r\n }\r\n };\r\n\r\n hubConnection.fn.createHubProxy = function (hubName) {\r\n /// \r\n /// Creates a new proxy object for the given hub connection that can be used to invoke\r\n /// methods on server hubs and handle client method invocation requests from the server.\r\n /// \r\n /// \r\n /// The name of the hub on the server to create the proxy for.\r\n /// \r\n\r\n // Normalize the name to lowercase\r\n hubName = hubName.toLowerCase();\r\n\r\n var proxy = this.proxies[hubName];\r\n if (!proxy) {\r\n proxy = hubProxy(this, hubName);\r\n this.proxies[hubName] = proxy;\r\n }\r\n\r\n this._registerSubscribedHubs();\r\n\r\n return proxy;\r\n };\r\n\r\n hubConnection.fn.init.prototype = hubConnection.fn;\r\n\r\n $.hubConnection = hubConnection;\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.version.js */\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n\r\n/*global window:false */\r\n/// \r\n(function ($, undefined) {\r\n // This will be modified by the build script\r\n $.signalR.version = \"2.4.3\";\r\n}(window.jQuery));\r\n","export default [\n\t{\n\t\t'id': 'action',\n\t\t'name': 'Action',\n\t\t'icons': [{\n\t\t\t'codepoint': 'E84D',\n\t\t\t'id': '3d_rotation',\n\t\t\t'keywords': ['action', '3d', 'rotation'],\n\t\t\t'name': '3d rotation'\n\t\t}, {\n\t\t\t'codepoint': 'E84E',\n\t\t\t'id': 'accessibility',\n\t\t\t'keywords': ['action', 'accessibility'],\n\t\t\t'name': 'accessibility'\n\t\t}, {\n\t\t\t'codepoint': 'E914',\n\t\t\t'id': 'accessible',\n\t\t\t'keywords': ['action', 'accessible'],\n\t\t\t'name': 'accessible'\n\t\t}, {\n\t\t\t'codepoint': 'E84F',\n\t\t\t'id': 'account_balance',\n\t\t\t'keywords': ['action', 'account', 'balance'],\n\t\t\t'name': 'account balance'\n\t\t}, {\n\t\t\t'codepoint': 'E850',\n\t\t\t'id': 'account_balance_wallet',\n\t\t\t'keywords': ['action', 'account', 'balance', 'wallet'],\n\t\t\t'name': 'account balance wallet'\n\t\t}, {\n\t\t\t'codepoint': 'E851',\n\t\t\t'id': 'account_box',\n\t\t\t'keywords': ['action', 'account', 'box'],\n\t\t\t'name': 'account box'\n\t\t}, {\n\t\t\t'codepoint': 'E853',\n\t\t\t'id': 'account_circle',\n\t\t\t'keywords': ['action', 'account', 'circle'],\n\t\t\t'name': 'account circle'\n\t\t}, {\n\t\t\t'codepoint': 'E854',\n\t\t\t'id': 'add_shopping_cart',\n\t\t\t'keywords': ['action', 'add', 'shopping', 'cart'],\n\t\t\t'name': 'add shopping cart'\n\t\t}, {\n\t\t\t'codepoint': 'E855',\n\t\t\t'id': 'alarm',\n\t\t\t'keywords': ['action', 'alarm'],\n\t\t\t'name': 'alarm'\n\t\t}, {\n\t\t\t'codepoint': 'E856',\n\t\t\t'id': 'alarm_add',\n\t\t\t'keywords': ['action', 'alarm', 'add'],\n\t\t\t'name': 'alarm add'\n\t\t}, {\n\t\t\t'codepoint': 'E857',\n\t\t\t'id': 'alarm_off',\n\t\t\t'keywords': ['action', 'alarm', 'off'],\n\t\t\t'name': 'alarm off'\n\t\t}, {\n\t\t\t'codepoint': 'E858',\n\t\t\t'id': 'alarm_on',\n\t\t\t'keywords': ['action', 'alarm', 'on'],\n\t\t\t'name': 'alarm on'\n\t\t}, {\n\t\t\t'codepoint': 'E90B',\n\t\t\t'id': 'all_out',\n\t\t\t'keywords': ['action', 'all', 'out'],\n\t\t\t'name': 'all out'\n\t\t}, {\n\t\t\t'codepoint': 'E859',\n\t\t\t'id': 'android',\n\t\t\t'keywords': ['action', 'android'],\n\t\t\t'name': 'android'\n\t\t}, {\n\t\t\t'codepoint': 'E85A',\n\t\t\t'id': 'announcement',\n\t\t\t'keywords': ['action', 'announcement'],\n\t\t\t'name': 'announcement'\n\t\t}, {\n\t\t\t'codepoint': 'E85B',\n\t\t\t'id': 'aspect_ratio',\n\t\t\t'keywords': ['action', 'aspect', 'ratio'],\n\t\t\t'name': 'aspect ratio'\n\t\t}, {\n\t\t\t'codepoint': 'E85C',\n\t\t\t'id': 'assessment',\n\t\t\t'keywords': ['action', 'assessment'],\n\t\t\t'name': 'assessment'\n\t\t}, {\n\t\t\t'codepoint': 'E85D',\n\t\t\t'id': 'assignment',\n\t\t\t'keywords': ['action', 'assignment'],\n\t\t\t'name': 'assignment'\n\t\t}, {\n\t\t\t'codepoint': 'E85E',\n\t\t\t'id': 'assignment_ind',\n\t\t\t'keywords': ['action', 'assignment', 'ind'],\n\t\t\t'name': 'assignment ind'\n\t\t}, {\n\t\t\t'codepoint': 'E85F',\n\t\t\t'id': 'assignment_late',\n\t\t\t'keywords': ['action', 'assignment', 'late'],\n\t\t\t'name': 'assignment late'\n\t\t}, {\n\t\t\t'codepoint': 'E860',\n\t\t\t'id': 'assignment_return',\n\t\t\t'keywords': ['action', 'assignment', 'return'],\n\t\t\t'name': 'assignment return'\n\t\t}, {\n\t\t\t'codepoint': 'E861',\n\t\t\t'id': 'assignment_returned',\n\t\t\t'keywords': ['action', 'assignment', 'returned'],\n\t\t\t'name': 'assignment returned'\n\t\t}, {\n\t\t\t'codepoint': 'E862',\n\t\t\t'id': 'assignment_turned_in',\n\t\t\t'keywords': ['action', 'assignment', 'turned', 'in'],\n\t\t\t'name': 'assignment turned in'\n\t\t}, {\n\t\t\t'codepoint': 'E863',\n\t\t\t'id': 'autorenew',\n\t\t\t'keywords': ['action', 'autorenew'],\n\t\t\t'name': 'autorenew'\n\t\t}, {\n\t\t\t'codepoint': 'E864',\n\t\t\t'id': 'backup',\n\t\t\t'keywords': ['action', 'backup'],\n\t\t\t'name': 'backup'\n\t\t}, {\n\t\t\t'codepoint': 'E865',\n\t\t\t'id': 'book',\n\t\t\t'keywords': ['action', 'book'],\n\t\t\t'name': 'book'\n\t\t}, {\n\t\t\t'codepoint': 'E866',\n\t\t\t'id': 'bookmark',\n\t\t\t'keywords': ['action', 'bookmark'],\n\t\t\t'name': 'bookmark'\n\t\t}, {\n\t\t\t'codepoint': 'E867',\n\t\t\t'id': 'bookmark_border',\n\t\t\t'keywords': ['action', 'bookmark', 'border'],\n\t\t\t'name': 'bookmark border'\n\t\t}, {\n\t\t\t'codepoint': 'E98B',\n\t\t\t'id': 'bookmarks',\n\t\t\t'keywords': ['action', 'bookmarks'],\n\t\t\t'name': 'bookmarks'\n\t\t}, {\n\t\t\t'codepoint': 'E868',\n\t\t\t'id': 'bug_report',\n\t\t\t'keywords': ['action', 'bug', 'report'],\n\t\t\t'name': 'bug report'\n\t\t}, {\n\t\t\t'codepoint': 'E869',\n\t\t\t'id': 'build',\n\t\t\t'keywords': ['action', 'build'],\n\t\t\t'name': 'build'\n\t\t}, {\n\t\t\t'codepoint': 'E86A',\n\t\t\t'id': 'cached',\n\t\t\t'keywords': ['action', 'cached'],\n\t\t\t'name': 'cached'\n\t\t}, {\n\t\t\t'codepoint': 'E8FC',\n\t\t\t'id': 'camera_enhance',\n\t\t\t'keywords': ['action', 'camera', 'enhance'],\n\t\t\t'name': 'camera enhance'\n\t\t}, {\n\t\t\t'codepoint': 'E8F6',\n\t\t\t'id': 'card_giftcard',\n\t\t\t'keywords': ['action', 'card', 'giftcard'],\n\t\t\t'name': 'card giftcard'\n\t\t}, {\n\t\t\t'codepoint': 'E8F7',\n\t\t\t'id': 'card_membership',\n\t\t\t'keywords': ['action', 'card', 'membership'],\n\t\t\t'name': 'card membership'\n\t\t}, {\n\t\t\t'codepoint': 'E8F8',\n\t\t\t'id': 'card_travel',\n\t\t\t'keywords': ['action', 'card', 'travel'],\n\t\t\t'name': 'card travel'\n\t\t}, {\n\t\t\t'codepoint': 'E86B',\n\t\t\t'id': 'change_history',\n\t\t\t'keywords': ['action', 'change', 'history'],\n\t\t\t'name': 'change history'\n\t\t}, {\n\t\t\t'codepoint': 'E86C',\n\t\t\t'id': 'check_circle',\n\t\t\t'keywords': ['action', 'check', 'circle'],\n\t\t\t'name': 'check circle'\n\t\t}, {\n\t\t\t'codepoint': 'E86D',\n\t\t\t'id': 'chrome_reader_mode',\n\t\t\t'keywords': ['action', 'chrome', 'reader', 'mode'],\n\t\t\t'name': 'chrome reader mode'\n\t\t}, {\n\t\t\t'codepoint': 'E86E',\n\t\t\t'id': 'class',\n\t\t\t'keywords': ['action', 'class'],\n\t\t\t'name': 'class'\n\t\t}, {\n\t\t\t'codepoint': 'E86F',\n\t\t\t'id': 'code',\n\t\t\t'keywords': ['action', 'code'],\n\t\t\t'name': 'code'\n\t\t}, {\n\t\t\t'codepoint': 'E915',\n\t\t\t'id': 'compare_arrows',\n\t\t\t'keywords': ['action', 'compare', 'arrows'],\n\t\t\t'name': 'compare arrows'\n\t\t}, {\n\t\t\t'codepoint': 'E90C',\n\t\t\t'id': 'copyright',\n\t\t\t'keywords': ['action', 'copyright'],\n\t\t\t'name': 'copyright'\n\t\t}, {\n\t\t\t'codepoint': 'E870',\n\t\t\t'id': 'credit_card',\n\t\t\t'keywords': ['action', 'credit', 'card'],\n\t\t\t'name': 'credit card'\n\t\t}, {\n\t\t\t'codepoint': 'E871',\n\t\t\t'id': 'dashboard',\n\t\t\t'keywords': ['action', 'dashboard'],\n\t\t\t'name': 'dashboard'\n\t\t}, {\n\t\t\t'codepoint': 'E916',\n\t\t\t'id': 'date_range',\n\t\t\t'keywords': ['action', 'date', 'range'],\n\t\t\t'name': 'date range'\n\t\t}, {\n\t\t\t'codepoint': 'E872',\n\t\t\t'id': 'delete',\n\t\t\t'keywords': ['action', 'delete'],\n\t\t\t'name': 'delete'\n\t\t}, {\n\t\t\t'codepoint': 'E92B',\n\t\t\t'id': 'delete_forever',\n\t\t\t'keywords': ['action', 'delete', 'forever'],\n\t\t\t'name': 'delete forever'\n\t\t}, {\n\t\t\t'codepoint': 'E873',\n\t\t\t'id': 'description',\n\t\t\t'keywords': ['action', 'description'],\n\t\t\t'name': 'description'\n\t\t}, {\n\t\t\t'codepoint': 'E875',\n\t\t\t'id': 'dns',\n\t\t\t'keywords': ['action', 'dns'],\n\t\t\t'name': 'dns'\n\t\t}, {\n\t\t\t'codepoint': 'E876',\n\t\t\t'id': 'done',\n\t\t\t'keywords': ['action', 'done'],\n\t\t\t'name': 'done'\n\t\t}, {\n\t\t\t'codepoint': 'E877',\n\t\t\t'id': 'done_all',\n\t\t\t'keywords': ['action', 'done', 'all'],\n\t\t\t'name': 'done all'\n\t\t}, {\n\t\t\t'codepoint': 'E917',\n\t\t\t'id': 'donut_large',\n\t\t\t'keywords': ['action', 'donut', 'large'],\n\t\t\t'name': 'donut large'\n\t\t}, {\n\t\t\t'codepoint': 'E918',\n\t\t\t'id': 'donut_small',\n\t\t\t'keywords': ['action', 'donut', 'small'],\n\t\t\t'name': 'donut small'\n\t\t}, {\n\t\t\t'codepoint': 'E8FB',\n\t\t\t'id': 'eject',\n\t\t\t'keywords': ['action', 'eject'],\n\t\t\t'name': 'eject'\n\t\t}, {\n\t\t\t'codepoint': 'E926',\n\t\t\t'id': 'euro_symbol',\n\t\t\t'keywords': ['action', 'euro', 'symbol'],\n\t\t\t'name': 'euro symbol'\n\t\t}, {\n\t\t\t'codepoint': 'E878',\n\t\t\t'id': 'event',\n\t\t\t'keywords': ['action', 'event'],\n\t\t\t'name': 'event'\n\t\t}, {\n\t\t\t'codepoint': 'E903',\n\t\t\t'id': 'event_seat',\n\t\t\t'keywords': ['action', 'event', 'seat'],\n\t\t\t'name': 'event seat'\n\t\t}, {\n\t\t\t'codepoint': 'E879',\n\t\t\t'id': 'exit_to_app',\n\t\t\t'keywords': ['action', 'exit', 'to', 'app'],\n\t\t\t'name': 'exit to app'\n\t\t}, {\n\t\t\t'codepoint': 'E87A',\n\t\t\t'id': 'explore',\n\t\t\t'keywords': ['action', 'explore'],\n\t\t\t'name': 'explore'\n\t\t}, {\n\t\t\t'codepoint': 'E87B',\n\t\t\t'id': 'extension',\n\t\t\t'keywords': ['action', 'extension'],\n\t\t\t'name': 'extension'\n\t\t}, {\n\t\t\t'codepoint': 'E87C',\n\t\t\t'id': 'face',\n\t\t\t'keywords': ['action', 'face'],\n\t\t\t'name': 'face'\n\t\t}, {\n\t\t\t'codepoint': 'E87D',\n\t\t\t'id': 'favorite',\n\t\t\t'keywords': ['action', 'favorite'],\n\t\t\t'name': 'favorite'\n\t\t}, {\n\t\t\t'codepoint': 'E87E',\n\t\t\t'id': 'favorite_border',\n\t\t\t'keywords': ['action', 'favorite', 'border'],\n\t\t\t'name': 'favorite border'\n\t\t}, {\n\t\t\t'codepoint': 'E87F',\n\t\t\t'id': 'feedback',\n\t\t\t'keywords': ['action', 'feedback'],\n\t\t\t'name': 'feedback'\n\t\t}, {\n\t\t\t'codepoint': 'E880',\n\t\t\t'id': 'find_in_page',\n\t\t\t'keywords': ['action', 'find', 'in', 'page'],\n\t\t\t'name': 'find in page'\n\t\t}, {\n\t\t\t'codepoint': 'E881',\n\t\t\t'id': 'find_replace',\n\t\t\t'keywords': ['action', 'find', 'replace'],\n\t\t\t'name': 'find replace'\n\t\t}, {\n\t\t\t'codepoint': 'E90D',\n\t\t\t'id': 'fingerprint',\n\t\t\t'keywords': ['action', 'fingerprint'],\n\t\t\t'name': 'fingerprint'\n\t\t}, {\n\t\t\t'codepoint': 'E904',\n\t\t\t'id': 'flight_land',\n\t\t\t'keywords': ['action', 'flight', 'land'],\n\t\t\t'name': 'flight land'\n\t\t}, {\n\t\t\t'codepoint': 'E905',\n\t\t\t'id': 'flight_takeoff',\n\t\t\t'keywords': ['action', 'flight', 'takeoff'],\n\t\t\t'name': 'flight takeoff'\n\t\t}, {\n\t\t\t'codepoint': 'E882',\n\t\t\t'id': 'flip_to_back',\n\t\t\t'keywords': ['action', 'flip', 'to', 'back'],\n\t\t\t'name': 'flip to back'\n\t\t}, {\n\t\t\t'codepoint': 'E883',\n\t\t\t'id': 'flip_to_front',\n\t\t\t'keywords': ['action', 'flip', 'to', 'front'],\n\t\t\t'name': 'flip to front'\n\t\t}, {\n\t\t\t'codepoint': 'E927',\n\t\t\t'id': 'g_translate',\n\t\t\t'keywords': ['action', 'g', 'translate'],\n\t\t\t'name': 'g translate'\n\t\t}, {\n\t\t\t'codepoint': 'E90E',\n\t\t\t'id': 'gavel',\n\t\t\t'keywords': ['action', 'gavel'],\n\t\t\t'name': 'gavel'\n\t\t}, {\n\t\t\t'codepoint': 'E884',\n\t\t\t'id': 'get_app',\n\t\t\t'keywords': ['action', 'get', 'app'],\n\t\t\t'name': 'get app'\n\t\t}, {\n\t\t\t'codepoint': 'E908',\n\t\t\t'id': 'gif',\n\t\t\t'keywords': ['action', 'gif'],\n\t\t\t'name': 'gif'\n\t\t}, {\n\t\t\t'codepoint': 'E885',\n\t\t\t'id': 'grade',\n\t\t\t'keywords': ['action', 'grade'],\n\t\t\t'name': 'grade'\n\t\t}, {\n\t\t\t'codepoint': 'E886',\n\t\t\t'id': 'group_work',\n\t\t\t'keywords': ['action', 'group', 'work'],\n\t\t\t'name': 'group work'\n\t\t}, {\n\t\t\t'codepoint': 'E887',\n\t\t\t'id': 'help',\n\t\t\t'keywords': ['action', 'help'],\n\t\t\t'name': 'help'\n\t\t}, {\n\t\t\t'codepoint': 'E8FD',\n\t\t\t'id': 'help_outline',\n\t\t\t'keywords': ['action', 'help', 'outline'],\n\t\t\t'name': 'help outline'\n\t\t}, {\n\t\t\t'codepoint': 'E888',\n\t\t\t'id': 'highlight_off',\n\t\t\t'keywords': ['action', 'highlight', 'off'],\n\t\t\t'name': 'highlight off'\n\t\t}, {\n\t\t\t'codepoint': 'E889',\n\t\t\t'id': 'history',\n\t\t\t'keywords': ['action', 'history'],\n\t\t\t'name': 'history'\n\t\t}, {\n\t\t\t'codepoint': 'E88A',\n\t\t\t'id': 'home',\n\t\t\t'keywords': ['action', 'home'],\n\t\t\t'name': 'home'\n\t\t}, {\n\t\t\t'codepoint': 'E88B',\n\t\t\t'id': 'hourglass_empty',\n\t\t\t'keywords': ['action', 'hourglass', 'empty'],\n\t\t\t'name': 'hourglass empty'\n\t\t}, {\n\t\t\t'codepoint': 'E88C',\n\t\t\t'id': 'hourglass_full',\n\t\t\t'keywords': ['action', 'hourglass', 'full'],\n\t\t\t'name': 'hourglass full'\n\t\t}, {\n\t\t\t'codepoint': 'E902',\n\t\t\t'id': 'http',\n\t\t\t'keywords': ['action', 'http'],\n\t\t\t'name': 'http'\n\t\t}, {\n\t\t\t'codepoint': 'E88D',\n\t\t\t'id': 'https',\n\t\t\t'keywords': ['action', 'https'],\n\t\t\t'name': 'https'\n\t\t}, {\n\t\t\t'codepoint': 'E912',\n\t\t\t'id': 'important_devices',\n\t\t\t'keywords': ['action', 'important', 'devices'],\n\t\t\t'name': 'important devices'\n\t\t}, {\n\t\t\t'codepoint': 'E88E',\n\t\t\t'id': 'info',\n\t\t\t'keywords': ['action', 'info'],\n\t\t\t'name': 'info'\n\t\t}, {\n\t\t\t'codepoint': 'E88F',\n\t\t\t'id': 'info_outline',\n\t\t\t'keywords': ['action', 'info', 'outline'],\n\t\t\t'name': 'info outline'\n\t\t}, {\n\t\t\t'codepoint': 'E890',\n\t\t\t'id': 'input',\n\t\t\t'keywords': ['action', 'input'],\n\t\t\t'name': 'input'\n\t\t}, {\n\t\t\t'codepoint': 'E891',\n\t\t\t'id': 'invert_colors',\n\t\t\t'keywords': ['action', 'invert', 'colors'],\n\t\t\t'name': 'invert colors'\n\t\t}, {\n\t\t\t'codepoint': 'E892',\n\t\t\t'id': 'label',\n\t\t\t'keywords': ['action', 'label'],\n\t\t\t'name': 'label'\n\t\t}, {\n\t\t\t'codepoint': 'E893',\n\t\t\t'id': 'label_outline',\n\t\t\t'keywords': ['action', 'label', 'outline'],\n\t\t\t'name': 'label outline'\n\t\t}, {\n\t\t\t'codepoint': 'E894',\n\t\t\t'id': 'language',\n\t\t\t'keywords': ['action', 'language'],\n\t\t\t'name': 'language'\n\t\t}, {\n\t\t\t'codepoint': 'E895',\n\t\t\t'id': 'launch',\n\t\t\t'keywords': ['action', 'launch'],\n\t\t\t'name': 'launch'\n\t\t}, {\n\t\t\t'codepoint': 'E90F',\n\t\t\t'id': 'lightbulb_outline',\n\t\t\t'keywords': ['action', 'lightbulb', 'outline'],\n\t\t\t'name': 'lightbulb outline'\n\t\t}, {\n\t\t\t'codepoint': 'E919',\n\t\t\t'id': 'line_style',\n\t\t\t'keywords': ['action', 'line', 'style'],\n\t\t\t'name': 'line style'\n\t\t}, {\n\t\t\t'codepoint': 'E91A',\n\t\t\t'id': 'line_weight',\n\t\t\t'keywords': ['action', 'line', 'weight'],\n\t\t\t'name': 'line weight'\n\t\t}, {\n\t\t\t'codepoint': 'E896',\n\t\t\t'id': 'list',\n\t\t\t'keywords': ['action', 'list'],\n\t\t\t'name': 'list'\n\t\t}, {\n\t\t\t'codepoint': 'E897',\n\t\t\t'id': 'lock',\n\t\t\t'keywords': ['action', 'lock'],\n\t\t\t'name': 'lock'\n\t\t}, {\n\t\t\t'codepoint': 'E898',\n\t\t\t'id': 'lock_open',\n\t\t\t'keywords': ['action', 'lock', 'open'],\n\t\t\t'name': 'lock open'\n\t\t}, {\n\t\t\t'codepoint': 'E899',\n\t\t\t'id': 'lock_outline',\n\t\t\t'keywords': ['action', 'lock', 'outline'],\n\t\t\t'name': 'lock outline'\n\t\t}, {\n\t\t\t'codepoint': 'E89A',\n\t\t\t'id': 'loyalty',\n\t\t\t'keywords': ['action', 'loyalty'],\n\t\t\t'name': 'loyalty'\n\t\t}, {\n\t\t\t'codepoint': 'E89B',\n\t\t\t'id': 'markunread_mailbox',\n\t\t\t'keywords': ['action', 'markunread', 'mailbox'],\n\t\t\t'name': 'markunread mailbox'\n\t\t}, /*{\n\t\t\t'codepoint': 'E91B',\n\t\t\t'id': 'motorcycle',\n\t\t\t'keywords': ['action', 'motorcycle'],\n\t\t\t'name': 'motorcycle'\n\t\t},*/ {\n\t\t\t'codepoint': 'E89C',\n\t\t\t'id': 'note_add',\n\t\t\t'keywords': ['action', 'note', 'add'],\n\t\t\t'name': 'note add'\n\t\t}, {\n\t\t\t'codepoint': 'E90A',\n\t\t\t'id': 'offline_pin',\n\t\t\t'keywords': ['action', 'offline', 'pin'],\n\t\t\t'name': 'offline pin'\n\t\t}, {\n\t\t\t'codepoint': 'E91C',\n\t\t\t'id': 'opacity',\n\t\t\t'keywords': ['action', 'opacity'],\n\t\t\t'name': 'opacity'\n\t\t}, {\n\t\t\t'codepoint': 'E89D',\n\t\t\t'id': 'open_in_browser',\n\t\t\t'keywords': ['action', 'open', 'in', 'browser'],\n\t\t\t'name': 'open in browser'\n\t\t}, {\n\t\t\t'codepoint': 'E89E',\n\t\t\t'id': 'open_in_new',\n\t\t\t'keywords': ['action', 'open', 'in', 'new'],\n\t\t\t'name': 'open in new'\n\t\t}, {\n\t\t\t'codepoint': 'E89F',\n\t\t\t'id': 'open_with',\n\t\t\t'keywords': ['action', 'open', 'with'],\n\t\t\t'name': 'open with'\n\t\t}, {\n\t\t\t'codepoint': 'E8A0',\n\t\t\t'id': 'pageview',\n\t\t\t'keywords': ['action', 'pageview'],\n\t\t\t'name': 'pageview'\n\t\t}, {\n\t\t\t'codepoint': 'E925',\n\t\t\t'id': 'pan_tool',\n\t\t\t'keywords': ['action', 'pan', 'tool'],\n\t\t\t'name': 'pan tool'\n\t\t}, {\n\t\t\t'codepoint': 'E8A1',\n\t\t\t'id': 'payment',\n\t\t\t'keywords': ['action', 'payment'],\n\t\t\t'name': 'payment'\n\t\t}, {\n\t\t\t'codepoint': 'E8A2',\n\t\t\t'id': 'perm_camera_mic',\n\t\t\t'keywords': ['action', 'perm', 'camera', 'mic'],\n\t\t\t'name': 'perm camera mic'\n\t\t}, {\n\t\t\t'codepoint': 'E8A3',\n\t\t\t'id': 'perm_contact_calendar',\n\t\t\t'keywords': ['action', 'perm', 'contact', 'calendar'],\n\t\t\t'name': 'perm contact calendar'\n\t\t}, {\n\t\t\t'codepoint': 'E8A4',\n\t\t\t'id': 'perm_data_setting',\n\t\t\t'keywords': ['action', 'perm', 'data', 'setting'],\n\t\t\t'name': 'perm data setting'\n\t\t}, {\n\t\t\t'codepoint': 'E8A5',\n\t\t\t'id': 'perm_device_information',\n\t\t\t'keywords': ['action', 'perm', 'device', 'information'],\n\t\t\t'name': 'perm device information'\n\t\t}, {\n\t\t\t'codepoint': 'E8A6',\n\t\t\t'id': 'perm_identity',\n\t\t\t'keywords': ['action', 'perm', 'identity'],\n\t\t\t'name': 'perm identity'\n\t\t}, {\n\t\t\t'codepoint': 'E8A7',\n\t\t\t'id': 'perm_media',\n\t\t\t'keywords': ['action', 'perm', 'media'],\n\t\t\t'name': 'perm media'\n\t\t}, {\n\t\t\t'codepoint': 'E8A8',\n\t\t\t'id': 'perm_phone_msg',\n\t\t\t'keywords': ['action', 'perm', 'phone', 'msg'],\n\t\t\t'name': 'perm phone msg'\n\t\t}, {\n\t\t\t'codepoint': 'E8A9',\n\t\t\t'id': 'perm_scan_wifi',\n\t\t\t'keywords': ['action', 'perm', 'scan', 'wifi'],\n\t\t\t'name': 'perm scan wifi'\n\t\t}, {\n\t\t\t'codepoint': 'E91D',\n\t\t\t'id': 'pets',\n\t\t\t'keywords': ['action', 'pets'],\n\t\t\t'name': 'pets'\n\t\t}, {\n\t\t\t'codepoint': 'E8AA',\n\t\t\t'id': 'picture_in_picture',\n\t\t\t'keywords': ['action', 'picture', 'in', 'picture'],\n\t\t\t'name': 'picture in picture'\n\t\t}, {\n\t\t\t'codepoint': 'E911',\n\t\t\t'id': 'picture_in_picture_alt',\n\t\t\t'keywords': ['action', 'picture', 'in', 'picture', 'alt'],\n\t\t\t'name': 'picture in picture alt'\n\t\t}, {\n\t\t\t'codepoint': 'E906',\n\t\t\t'id': 'play_for_work',\n\t\t\t'keywords': ['action', 'play', 'for', 'work'],\n\t\t\t'name': 'play for work'\n\t\t}, {\n\t\t\t'codepoint': 'E8AB',\n\t\t\t'id': 'polymer',\n\t\t\t'keywords': ['action', 'polymer'],\n\t\t\t'name': 'polymer'\n\t\t}, {\n\t\t\t'codepoint': 'E8AC',\n\t\t\t'id': 'power_settings_new',\n\t\t\t'keywords': ['action', 'power', 'settings', 'new'],\n\t\t\t'name': 'power settings new'\n\t\t}, {\n\t\t\t'codepoint': 'E91E',\n\t\t\t'id': 'pregnant_woman',\n\t\t\t'keywords': ['action', 'pregnant', 'woman'],\n\t\t\t'name': 'pregnant woman'\n\t\t}, {\n\t\t\t'codepoint': 'E8AD',\n\t\t\t'id': 'print',\n\t\t\t'keywords': ['action', 'print'],\n\t\t\t'name': 'print'\n\t\t}, {\n\t\t\t'codepoint': 'E8AE',\n\t\t\t'id': 'query_builder',\n\t\t\t'keywords': ['action', 'query', 'builder'],\n\t\t\t'name': 'query builder'\n\t\t}, {\n\t\t\t'codepoint': 'E8AF',\n\t\t\t'id': 'question_answer',\n\t\t\t'keywords': ['action', 'question', 'answer'],\n\t\t\t'name': 'question answer'\n\t\t}, {\n\t\t\t'codepoint': 'E8B0',\n\t\t\t'id': 'receipt',\n\t\t\t'keywords': ['action', 'receipt'],\n\t\t\t'name': 'receipt'\n\t\t}, {\n\t\t\t'codepoint': 'E91F',\n\t\t\t'id': 'record_voice_over',\n\t\t\t'keywords': ['action', 'record', 'voice', 'over'],\n\t\t\t'name': 'record voice over'\n\t\t}, {\n\t\t\t'codepoint': 'E8B1',\n\t\t\t'id': 'redeem',\n\t\t\t'keywords': ['action', 'redeem'],\n\t\t\t'name': 'redeem'\n\t\t}, {\n\t\t\t'codepoint': 'E928',\n\t\t\t'id': 'remove_shopping_cart',\n\t\t\t'keywords': ['action', 'remove', 'shopping', 'cart'],\n\t\t\t'name': 'remove shopping cart'\n\t\t}, {\n\t\t\t'codepoint': 'E8FE',\n\t\t\t'id': 'reorder',\n\t\t\t'keywords': ['action', 'reorder'],\n\t\t\t'name': 'reorder'\n\t\t}, {\n\t\t\t'codepoint': 'E8B2',\n\t\t\t'id': 'report_problem',\n\t\t\t'keywords': ['action', 'report', 'problem'],\n\t\t\t'name': 'report problem'\n\t\t}, {\n\t\t\t'codepoint': 'E8B3',\n\t\t\t'id': 'restore',\n\t\t\t'keywords': ['action', 'restore'],\n\t\t\t'name': 'restore'\n\t\t}, {\n\t\t\t'codepoint': 'E929',\n\t\t\t'id': 'restore_page',\n\t\t\t'keywords': ['action', 'restore', 'page'],\n\t\t\t'name': 'restore page'\n\t\t}, {\n\t\t\t'codepoint': 'E8B4',\n\t\t\t'id': 'room',\n\t\t\t'keywords': ['action', 'room'],\n\t\t\t'name': 'room'\n\t\t}, {\n\t\t\t'codepoint': 'E920',\n\t\t\t'id': 'rounded_corner',\n\t\t\t'keywords': ['action', 'rounded', 'corner'],\n\t\t\t'name': 'rounded corner'\n\t\t}, {\n\t\t\t'codepoint': 'E921',\n\t\t\t'id': 'rowing',\n\t\t\t'keywords': ['action', 'rowing'],\n\t\t\t'name': 'rowing'\n\t\t}, {\n\t\t\t'codepoint': 'E8B5',\n\t\t\t'id': 'schedule',\n\t\t\t'keywords': ['action', 'schedule'],\n\t\t\t'name': 'schedule'\n\t\t}, {\n\t\t\t'codepoint': 'E8B6',\n\t\t\t'id': 'search',\n\t\t\t'keywords': ['action', 'search'],\n\t\t\t'name': 'search'\n\t\t}, {\n\t\t\t'codepoint': 'E8B8',\n\t\t\t'id': 'settings',\n\t\t\t'keywords': ['action', 'settings'],\n\t\t\t'name': 'settings'\n\t\t}, {\n\t\t\t'codepoint': 'E8B9',\n\t\t\t'id': 'settings_applications',\n\t\t\t'keywords': ['action', 'settings', 'applications'],\n\t\t\t'name': 'settings applications'\n\t\t}, {\n\t\t\t'codepoint': 'E8BA',\n\t\t\t'id': 'settings_backup_restore',\n\t\t\t'keywords': ['action', 'settings', 'backup', 'restore'],\n\t\t\t'name': 'settings backup restore'\n\t\t}, {\n\t\t\t'codepoint': 'E8BB',\n\t\t\t'id': 'settings_bluetooth',\n\t\t\t'keywords': ['action', 'settings', 'bluetooth'],\n\t\t\t'name': 'settings bluetooth'\n\t\t}, {\n\t\t\t'codepoint': 'E8BD',\n\t\t\t'id': 'settings_brightness',\n\t\t\t'keywords': ['action', 'settings', 'brightness'],\n\t\t\t'name': 'settings brightness'\n\t\t}, {\n\t\t\t'codepoint': 'E8BC',\n\t\t\t'id': 'settings_cell',\n\t\t\t'keywords': ['action', 'settings', 'cell'],\n\t\t\t'name': 'settings cell'\n\t\t}, {\n\t\t\t'codepoint': 'E8BE',\n\t\t\t'id': 'settings_ethernet',\n\t\t\t'keywords': ['action', 'settings', 'ethernet'],\n\t\t\t'name': 'settings ethernet'\n\t\t}, {\n\t\t\t'codepoint': 'E8BF',\n\t\t\t'id': 'settings_input_antenna',\n\t\t\t'keywords': ['action', 'settings', 'input', 'antenna'],\n\t\t\t'name': 'settings input antenna'\n\t\t}, {\n\t\t\t'codepoint': 'E8C0',\n\t\t\t'id': 'settings_input_component',\n\t\t\t'keywords': ['action', 'settings', 'input', 'component'],\n\t\t\t'name': 'settings input component'\n\t\t}, {\n\t\t\t'codepoint': 'E8C1',\n\t\t\t'id': 'settings_input_composite',\n\t\t\t'keywords': ['action', 'settings', 'input', 'composite'],\n\t\t\t'name': 'settings input composite'\n\t\t}, {\n\t\t\t'codepoint': 'E8C2',\n\t\t\t'id': 'settings_input_hdmi',\n\t\t\t'keywords': ['action', 'settings', 'input', 'hdmi'],\n\t\t\t'name': 'settings input hdmi'\n\t\t}, {\n\t\t\t'codepoint': 'E8C3',\n\t\t\t'id': 'settings_input_svideo',\n\t\t\t'keywords': ['action', 'settings', 'input', 'svideo'],\n\t\t\t'name': 'settings input svideo'\n\t\t}, {\n\t\t\t'codepoint': 'E8C4',\n\t\t\t'id': 'settings_overscan',\n\t\t\t'keywords': ['action', 'settings', 'overscan'],\n\t\t\t'name': 'settings overscan'\n\t\t}, {\n\t\t\t'codepoint': 'E8C5',\n\t\t\t'id': 'settings_phone',\n\t\t\t'keywords': ['action', 'settings', 'phone'],\n\t\t\t'name': 'settings phone'\n\t\t}, {\n\t\t\t'codepoint': 'E8C6',\n\t\t\t'id': 'settings_power',\n\t\t\t'keywords': ['action', 'settings', 'power'],\n\t\t\t'name': 'settings power'\n\t\t}, {\n\t\t\t'codepoint': 'E8C7',\n\t\t\t'id': 'settings_remote',\n\t\t\t'keywords': ['action', 'settings', 'remote'],\n\t\t\t'name': 'settings remote'\n\t\t}, {\n\t\t\t'codepoint': 'E8C8',\n\t\t\t'id': 'settings_voice',\n\t\t\t'keywords': ['action', 'settings', 'voice'],\n\t\t\t'name': 'settings voice'\n\t\t}, {\n\t\t\t'codepoint': 'E8C9',\n\t\t\t'id': 'shop',\n\t\t\t'keywords': ['action', 'shop'],\n\t\t\t'name': 'shop'\n\t\t}, {\n\t\t\t'codepoint': 'E8CA',\n\t\t\t'id': 'shop_two',\n\t\t\t'keywords': ['action', 'shop', 'two'],\n\t\t\t'name': 'shop two'\n\t\t}, {\n\t\t\t'codepoint': 'E8CB',\n\t\t\t'id': 'shopping_basket',\n\t\t\t'keywords': ['action', 'shopping', 'basket'],\n\t\t\t'name': 'shopping basket'\n\t\t}, {\n\t\t\t'codepoint': 'E8CC',\n\t\t\t'id': 'shopping_cart',\n\t\t\t'keywords': ['action', 'shopping', 'cart'],\n\t\t\t'name': 'shopping cart'\n\t\t}, {\n\t\t\t'codepoint': 'E8CD',\n\t\t\t'id': 'speaker_notes',\n\t\t\t'keywords': ['action', 'speaker', 'notes'],\n\t\t\t'name': 'speaker notes'\n\t\t}, {\n\t\t\t'codepoint': 'E92A',\n\t\t\t'id': 'speaker_notes_off',\n\t\t\t'keywords': ['action', 'speaker', 'notes', 'off'],\n\t\t\t'name': 'speaker notes off'\n\t\t}, {\n\t\t\t'codepoint': 'E8CE',\n\t\t\t'id': 'spellcheck',\n\t\t\t'keywords': ['action', 'spellcheck'],\n\t\t\t'name': 'spellcheck'\n\t\t}, {\n\t\t\t'codepoint': 'E8D0',\n\t\t\t'id': 'stars',\n\t\t\t'keywords': ['action', 'stars'],\n\t\t\t'name': 'stars'\n\t\t}, {\n\t\t\t'codepoint': 'E8D1',\n\t\t\t'id': 'store',\n\t\t\t'keywords': ['action', 'store'],\n\t\t\t'name': 'store'\n\t\t}, {\n\t\t\t'codepoint': 'E8D2',\n\t\t\t'id': 'subject',\n\t\t\t'keywords': ['action', 'subject'],\n\t\t\t'name': 'subject'\n\t\t}, {\n\t\t\t'codepoint': 'E8D3',\n\t\t\t'id': 'supervisor_account',\n\t\t\t'keywords': ['action', 'supervisor', 'account'],\n\t\t\t'name': 'supervisor account'\n\t\t}, {\n\t\t\t'codepoint': 'E8D4',\n\t\t\t'id': 'swap_horiz',\n\t\t\t'keywords': ['action', 'swap', 'horiz'],\n\t\t\t'name': 'swap horiz'\n\t\t}, {\n\t\t\t'codepoint': 'E8D5',\n\t\t\t'id': 'swap_vert',\n\t\t\t'keywords': ['action', 'swap', 'vert'],\n\t\t\t'name': 'swap vert'\n\t\t}, {\n\t\t\t'codepoint': 'E8D6',\n\t\t\t'id': 'swap_vertical_circle',\n\t\t\t'keywords': ['action', 'swap', 'vertical', 'circle'],\n\t\t\t'name': 'swap vertical circle'\n\t\t}, {\n\t\t\t'codepoint': 'E8D7',\n\t\t\t'id': 'system_update_alt',\n\t\t\t'keywords': ['action', 'system', 'update', 'alt'],\n\t\t\t'name': 'system update alt'\n\t\t}, {\n\t\t\t'codepoint': 'E8D8',\n\t\t\t'id': 'tab',\n\t\t\t'keywords': ['action', 'tab'],\n\t\t\t'name': 'tab'\n\t\t}, {\n\t\t\t'codepoint': 'E8D9',\n\t\t\t'id': 'tab_unselected',\n\t\t\t'keywords': ['action', 'tab', 'unselected'],\n\t\t\t'name': 'tab unselected'\n\t\t}, {\n\t\t\t'codepoint': 'E8DA',\n\t\t\t'id': 'theaters',\n\t\t\t'keywords': ['action', 'theaters'],\n\t\t\t'name': 'theaters'\n\t\t}, {\n\t\t\t'codepoint': 'E8DB',\n\t\t\t'id': 'thumb_down',\n\t\t\t'keywords': ['action', 'thumb', 'down'],\n\t\t\t'name': 'thumb down'\n\t\t}, {\n\t\t\t'codepoint': 'E8DC',\n\t\t\t'id': 'thumb_up',\n\t\t\t'keywords': ['action', 'thumb', 'up'],\n\t\t\t'name': 'thumb up'\n\t\t}, {\n\t\t\t'codepoint': 'E8DD',\n\t\t\t'id': 'thumbs_up_down',\n\t\t\t'keywords': ['action', 'thumbs', 'up', 'down'],\n\t\t\t'name': 'thumbs up down'\n\t\t}, {\n\t\t\t'codepoint': 'E922',\n\t\t\t'id': 'timeline',\n\t\t\t'keywords': ['action', 'timeline'],\n\t\t\t'name': 'timeline'\n\t\t}, {\n\t\t\t'codepoint': 'E8DE',\n\t\t\t'id': 'toc',\n\t\t\t'keywords': ['action', 'toc'],\n\t\t\t'name': 'toc'\n\t\t}, {\n\t\t\t'codepoint': 'E8DF',\n\t\t\t'id': 'today',\n\t\t\t'keywords': ['action', 'today'],\n\t\t\t'name': 'today'\n\t\t}, {\n\t\t\t'codepoint': 'E8E0',\n\t\t\t'id': 'toll',\n\t\t\t'keywords': ['action', 'toll'],\n\t\t\t'name': 'toll'\n\t\t}, {\n\t\t\t'codepoint': 'E913',\n\t\t\t'id': 'touch_app',\n\t\t\t'keywords': ['action', 'touch', 'app'],\n\t\t\t'name': 'touch app'\n\t\t}, {\n\t\t\t'codepoint': 'E8E1',\n\t\t\t'id': 'track_changes',\n\t\t\t'keywords': ['action', 'track', 'changes'],\n\t\t\t'name': 'track changes'\n\t\t}, {\n\t\t\t'codepoint': 'E8E2',\n\t\t\t'id': 'translate',\n\t\t\t'keywords': ['action', 'translate'],\n\t\t\t'name': 'translate'\n\t\t}, {\n\t\t\t'codepoint': 'E8E3',\n\t\t\t'id': 'trending_down',\n\t\t\t'keywords': ['action', 'trending', 'down'],\n\t\t\t'name': 'trending down'\n\t\t}, {\n\t\t\t'codepoint': 'E8E4',\n\t\t\t'id': 'trending_flat',\n\t\t\t'keywords': ['action', 'trending', 'flat'],\n\t\t\t'name': 'trending flat'\n\t\t}, {\n\t\t\t'codepoint': 'E8E5',\n\t\t\t'id': 'trending_up',\n\t\t\t'keywords': ['action', 'trending', 'up'],\n\t\t\t'name': 'trending up'\n\t\t}, {\n\t\t\t'codepoint': 'E8E6',\n\t\t\t'id': 'turned_in',\n\t\t\t'keywords': ['action', 'turned', 'in'],\n\t\t\t'name': 'turned in'\n\t\t}, {\n\t\t\t'codepoint': 'E8E7',\n\t\t\t'id': 'turned_in_not',\n\t\t\t'keywords': ['action', 'turned', 'in', 'not'],\n\t\t\t'name': 'turned in not'\n\t\t}, {\n\t\t\t'codepoint': 'E923',\n\t\t\t'id': 'update',\n\t\t\t'keywords': ['action', 'update'],\n\t\t\t'name': 'update'\n\t\t}, {\n\t\t\t'codepoint': 'E8E8',\n\t\t\t'id': 'verified_user',\n\t\t\t'keywords': ['action', 'verified', 'user'],\n\t\t\t'name': 'verified user'\n\t\t}, {\n\t\t\t'codepoint': 'E8E9',\n\t\t\t'id': 'view_agenda',\n\t\t\t'keywords': ['action', 'view', 'agenda'],\n\t\t\t'name': 'view agenda'\n\t\t}, {\n\t\t\t'codepoint': 'E8EA',\n\t\t\t'id': 'view_array',\n\t\t\t'keywords': ['action', 'view', 'array'],\n\t\t\t'name': 'view array'\n\t\t}, {\n\t\t\t'codepoint': 'E8EB',\n\t\t\t'id': 'view_carousel',\n\t\t\t'keywords': ['action', 'view', 'carousel'],\n\t\t\t'name': 'view carousel'\n\t\t}, {\n\t\t\t'codepoint': 'E8EC',\n\t\t\t'id': 'view_column',\n\t\t\t'keywords': ['action', 'view', 'column'],\n\t\t\t'name': 'view column'\n\t\t}, {\n\t\t\t'codepoint': 'E8ED',\n\t\t\t'id': 'view_day',\n\t\t\t'keywords': ['action', 'view', 'day'],\n\t\t\t'name': 'view day'\n\t\t}, {\n\t\t\t'codepoint': 'E8EE',\n\t\t\t'id': 'view_headline',\n\t\t\t'keywords': ['action', 'view', 'headline'],\n\t\t\t'name': 'view headline'\n\t\t}, {\n\t\t\t'codepoint': 'E8EF',\n\t\t\t'id': 'view_list',\n\t\t\t'keywords': ['action', 'view', 'list'],\n\t\t\t'name': 'view list'\n\t\t}, {\n\t\t\t'codepoint': 'E8F0',\n\t\t\t'id': 'view_module',\n\t\t\t'keywords': ['action', 'view', 'module'],\n\t\t\t'name': 'view module'\n\t\t}, {\n\t\t\t'codepoint': 'E8F1',\n\t\t\t'id': 'view_quilt',\n\t\t\t'keywords': ['action', 'view', 'quilt'],\n\t\t\t'name': 'view quilt'\n\t\t}, {\n\t\t\t'codepoint': 'E8F2',\n\t\t\t'id': 'view_stream',\n\t\t\t'keywords': ['action', 'view', 'stream'],\n\t\t\t'name': 'view stream'\n\t\t}, {\n\t\t\t'codepoint': 'E8F3',\n\t\t\t'id': 'view_week',\n\t\t\t'keywords': ['action', 'view', 'week'],\n\t\t\t'name': 'view week'\n\t\t}, {\n\t\t\t'codepoint': 'E8F4',\n\t\t\t'id': 'visibility',\n\t\t\t'keywords': ['action', 'visibility'],\n\t\t\t'name': 'visibility'\n\t\t}, {\n\t\t\t'codepoint': 'E8F5',\n\t\t\t'id': 'visibility_off',\n\t\t\t'keywords': ['action', 'visibility', 'off'],\n\t\t\t'name': 'visibility off'\n\t\t}, {\n\t\t\t'codepoint': 'E924',\n\t\t\t'id': 'watch_later',\n\t\t\t'keywords': ['action', 'watch', 'later'],\n\t\t\t'name': 'watch later'\n\t\t}, {\n\t\t\t'codepoint': 'E8F9',\n\t\t\t'id': 'work',\n\t\t\t'keywords': ['action', 'work'],\n\t\t\t'name': 'work'\n\t\t}, {\n\t\t\t'codepoint': 'E8FA',\n\t\t\t'id': 'youtube_searched_for',\n\t\t\t'keywords': ['action', 'youtube', 'searched', 'for'],\n\t\t\t'name': 'youtube searched for'\n\t\t}, {\n\t\t\t'codepoint': 'E8FF',\n\t\t\t'id': 'zoom_in',\n\t\t\t'keywords': ['action', 'zoom', 'in'],\n\t\t\t'name': 'zoom in'\n\t\t}, {\n\t\t\t'codepoint': 'E900',\n\t\t\t'id': 'zoom_out',\n\t\t\t'keywords': ['action', 'zoom', 'out'],\n\t\t\t'name': 'zoom out'\n\t\t}]\n\t},\n\t{\n\t\t'id': 'alert',\n\t\t'name': 'Alert',\n\t\t'icons': [{\n\t\t\t'codepoint': 'E003',\n\t\t\t'id': 'add_alert',\n\t\t\t'keywords': ['alert', 'add', 'alert'],\n\t\t\t'name': 'add alert'\n\t\t}, {\n\t\t\t'codepoint': 'E000',\n\t\t\t'id': 'error',\n\t\t\t'keywords': ['alert', 'error'],\n\t\t\t'name': 'error'\n\t\t}, {\n\t\t\t'codepoint': 'E001',\n\t\t\t'id': 'error_outline',\n\t\t\t'keywords': ['alert', 'error', 'outline'],\n\t\t\t'name': 'error outline'\n\t\t}, {\n\t\t\t'codepoint': 'E002',\n\t\t\t'id': 'warning',\n\t\t\t'keywords': ['alert', 'warning'],\n\t\t\t'name': 'warning'\n\t\t}]\n\t},\n\t{\n\t\t'id': 'av',\n\t\t'name': 'Av',\n\t\t'icons': [{\n\t\t\t'codepoint': 'E05C',\n\t\t\t'id': 'add_to_queue',\n\t\t\t'keywords': ['av', 'add', 'to', 'queue'],\n\t\t\t'name': 'add to queue'\n\t\t}, {\n\t\t\t'codepoint': 'E055',\n\t\t\t'id': 'airplay',\n\t\t\t'keywords': ['av', 'airplay'],\n\t\t\t'name': 'airplay'\n\t\t}, {\n\t\t\t'codepoint': 'E019',\n\t\t\t'id': 'album',\n\t\t\t'keywords': ['av', 'album'],\n\t\t\t'name': 'album'\n\t\t}, {\n\t\t\t'codepoint': 'E060',\n\t\t\t'id': 'art_track',\n\t\t\t'keywords': ['av', 'art', 'track'],\n\t\t\t'name': 'art track'\n\t\t}, {\n\t\t\t'codepoint': 'E01B',\n\t\t\t'id': 'av_timer',\n\t\t\t'keywords': ['av', 'av', 'timer'],\n\t\t\t'name': 'av timer'\n\t\t}, {\n\t\t\t'codepoint': 'E06B',\n\t\t\t'id': 'branding_watermark',\n\t\t\t'keywords': ['av', 'branding', 'watermark'],\n\t\t\t'name': 'branding watermark'\n\t\t}, {\n\t\t\t'codepoint': 'E06C',\n\t\t\t'id': 'call_to_action',\n\t\t\t'keywords': ['av', 'call', 'to', 'action'],\n\t\t\t'name': 'call to action'\n\t\t}, {\n\t\t\t'codepoint': 'E01C',\n\t\t\t'id': 'closed_caption',\n\t\t\t'keywords': ['av', 'closed', 'caption'],\n\t\t\t'name': 'closed caption'\n\t\t}, {\n\t\t\t'codepoint': 'E01D',\n\t\t\t'id': 'equalizer',\n\t\t\t'keywords': ['av', 'equalizer'],\n\t\t\t'name': 'equalizer'\n\t\t}, {\n\t\t\t'codepoint': 'E01E',\n\t\t\t'id': 'explicit',\n\t\t\t'keywords': ['av', 'explicit'],\n\t\t\t'name': 'explicit'\n\t\t}, {\n\t\t\t'codepoint': 'E01F',\n\t\t\t'id': 'fast_forward',\n\t\t\t'keywords': ['av', 'fast', 'forward'],\n\t\t\t'name': 'fast forward'\n\t\t}, {\n\t\t\t'codepoint': 'E020',\n\t\t\t'id': 'fast_rewind',\n\t\t\t'keywords': ['av', 'fast', 'rewind'],\n\t\t\t'name': 'fast rewind'\n\t\t}, {\n\t\t\t'codepoint': 'E06D',\n\t\t\t'id': 'featured_play_list',\n\t\t\t'keywords': ['av', 'featured', 'play', 'list'],\n\t\t\t'name': 'featured play list'\n\t\t}, {\n\t\t\t'codepoint': 'E06E',\n\t\t\t'id': 'featured_video',\n\t\t\t'keywords': ['av', 'featured', 'video'],\n\t\t\t'name': 'featured video'\n\t\t}, {\n\t\t\t'codepoint': 'E05D',\n\t\t\t'id': 'fiber_dvr',\n\t\t\t'keywords': ['av', 'fiber', 'dvr'],\n\t\t\t'name': 'fiber dvr'\n\t\t}, {\n\t\t\t'codepoint': 'E061',\n\t\t\t'id': 'fiber_manual_record',\n\t\t\t'keywords': ['av', 'fiber', 'manual', 'record'],\n\t\t\t'name': 'fiber manual record'\n\t\t}, {\n\t\t\t'codepoint': 'E05E',\n\t\t\t'id': 'fiber_new',\n\t\t\t'keywords': ['av', 'fiber', 'new'],\n\t\t\t'name': 'fiber new'\n\t\t}, {\n\t\t\t'codepoint': 'E06A',\n\t\t\t'id': 'fiber_pin',\n\t\t\t'keywords': ['av', 'fiber', 'pin'],\n\t\t\t'name': 'fiber pin'\n\t\t}, {\n\t\t\t'codepoint': 'E062',\n\t\t\t'id': 'fiber_smart_record',\n\t\t\t'keywords': ['av', 'fiber', 'smart', 'record'],\n\t\t\t'name': 'fiber smart record'\n\t\t}, {\n\t\t\t'codepoint': 'E056',\n\t\t\t'id': 'forward_10',\n\t\t\t'keywords': ['av', 'forward', '10'],\n\t\t\t'name': 'forward 10'\n\t\t}, {\n\t\t\t'codepoint': 'E057',\n\t\t\t'id': 'forward_30',\n\t\t\t'keywords': ['av', 'forward', '30'],\n\t\t\t'name': 'forward 30'\n\t\t}, {\n\t\t\t'codepoint': 'E058',\n\t\t\t'id': 'forward_5',\n\t\t\t'keywords': ['av', 'forward', '5'],\n\t\t\t'name': 'forward 5'\n\t\t}, {\n\t\t\t'codepoint': 'E021',\n\t\t\t'id': 'games',\n\t\t\t'keywords': ['av', 'games'],\n\t\t\t'name': 'games'\n\t\t}, {\n\t\t\t'codepoint': 'E052',\n\t\t\t'id': 'hd',\n\t\t\t'keywords': ['av', 'hd'],\n\t\t\t'name': 'hd'\n\t\t}, {\n\t\t\t'codepoint': 'E023',\n\t\t\t'id': 'hearing',\n\t\t\t'keywords': ['av', 'hearing'],\n\t\t\t'name': 'hearing'\n\t\t}, {\n\t\t\t'codepoint': 'E024',\n\t\t\t'id': 'high_quality',\n\t\t\t'keywords': ['av', 'high', 'quality'],\n\t\t\t'name': 'high quality'\n\t\t}, {\n\t\t\t'codepoint': 'E02E',\n\t\t\t'id': 'library_add',\n\t\t\t'keywords': ['av', 'library', 'add'],\n\t\t\t'name': 'library add'\n\t\t}, {\n\t\t\t'codepoint': 'E02F',\n\t\t\t'id': 'library_books',\n\t\t\t'keywords': ['av', 'library', 'books'],\n\t\t\t'name': 'library books'\n\t\t}, {\n\t\t\t'codepoint': 'E030',\n\t\t\t'id': 'library_music',\n\t\t\t'keywords': ['av', 'library', 'music'],\n\t\t\t'name': 'library music'\n\t\t}, {\n\t\t\t'codepoint': 'E028',\n\t\t\t'id': 'loop',\n\t\t\t'keywords': ['av', 'loop'],\n\t\t\t'name': 'loop'\n\t\t}, {\n\t\t\t'codepoint': 'E029',\n\t\t\t'id': 'mic',\n\t\t\t'keywords': ['av', 'mic'],\n\t\t\t'name': 'mic'\n\t\t}, {\n\t\t\t'codepoint': 'E02A',\n\t\t\t'id': 'mic_none',\n\t\t\t'keywords': ['av', 'mic', 'none'],\n\t\t\t'name': 'mic none'\n\t\t}, {\n\t\t\t'codepoint': 'E02B',\n\t\t\t'id': 'mic_off',\n\t\t\t'keywords': ['av', 'mic', 'off'],\n\t\t\t'name': 'mic off'\n\t\t}, {\n\t\t\t'codepoint': 'E02C',\n\t\t\t'id': 'movie',\n\t\t\t'keywords': ['av', 'movie'],\n\t\t\t'name': 'movie'\n\t\t}, {\n\t\t\t'codepoint': 'E063',\n\t\t\t'id': 'music_video',\n\t\t\t'keywords': ['av', 'music', 'video'],\n\t\t\t'name': 'music video'\n\t\t}, {\n\t\t\t'codepoint': 'E031',\n\t\t\t'id': 'new_releases',\n\t\t\t'keywords': ['av', 'new', 'releases'],\n\t\t\t'name': 'new releases'\n\t\t}, {\n\t\t\t'codepoint': 'E033',\n\t\t\t'id': 'not_interested',\n\t\t\t'keywords': ['av', 'not', 'interested'],\n\t\t\t'name': 'not interested'\n\t\t}, {\n\t\t\t'codepoint': 'E06F',\n\t\t\t'id': 'note',\n\t\t\t'keywords': ['av', 'note'],\n\t\t\t'name': 'note'\n\t\t}, {\n\t\t\t'codepoint': 'E034',\n\t\t\t'id': 'pause',\n\t\t\t'keywords': ['av', 'pause'],\n\t\t\t'name': 'pause'\n\t\t}, {\n\t\t\t'codepoint': 'E035',\n\t\t\t'id': 'pause_circle_filled',\n\t\t\t'keywords': ['av', 'pause', 'circle', 'filled'],\n\t\t\t'name': 'pause circle filled'\n\t\t}, {\n\t\t\t'codepoint': 'E036',\n\t\t\t'id': 'pause_circle_outline',\n\t\t\t'keywords': ['av', 'pause', 'circle', 'outline'],\n\t\t\t'name': 'pause circle outline'\n\t\t}, {\n\t\t\t'codepoint': 'E037',\n\t\t\t'id': 'play_arrow',\n\t\t\t'keywords': ['av', 'play', 'arrow'],\n\t\t\t'name': 'play arrow'\n\t\t}, {\n\t\t\t'codepoint': 'E038',\n\t\t\t'id': 'play_circle_filled',\n\t\t\t'keywords': ['av', 'play', 'circle', 'filled'],\n\t\t\t'name': 'play circle filled'\n\t\t}, {\n\t\t\t'codepoint': 'E039',\n\t\t\t'id': 'play_circle_outline',\n\t\t\t'keywords': ['av', 'play', 'circle', 'outline'],\n\t\t\t'name': 'play circle outline'\n\t\t}, {\n\t\t\t'codepoint': 'E03B',\n\t\t\t'id': 'playlist_add',\n\t\t\t'keywords': ['av', 'playlist', 'add'],\n\t\t\t'name': 'playlist add'\n\t\t}, {\n\t\t\t'codepoint': 'E065',\n\t\t\t'id': 'playlist_add_check',\n\t\t\t'keywords': ['av', 'playlist', 'add', 'check'],\n\t\t\t'name': 'playlist add check'\n\t\t}, {\n\t\t\t'codepoint': 'E05F',\n\t\t\t'id': 'playlist_play',\n\t\t\t'keywords': ['av', 'playlist', 'play'],\n\t\t\t'name': 'playlist play'\n\t\t}, {\n\t\t\t'codepoint': 'E03C',\n\t\t\t'id': 'queue',\n\t\t\t'keywords': ['av', 'queue'],\n\t\t\t'name': 'queue'\n\t\t}, {\n\t\t\t'codepoint': 'E03D',\n\t\t\t'id': 'queue_music',\n\t\t\t'keywords': ['av', 'queue', 'music'],\n\t\t\t'name': 'queue music'\n\t\t}, {\n\t\t\t'codepoint': 'E066',\n\t\t\t'id': 'queue_play_next',\n\t\t\t'keywords': ['av', 'queue', 'play', 'next'],\n\t\t\t'name': 'queue play next'\n\t\t}, {\n\t\t\t'codepoint': 'E03E',\n\t\t\t'id': 'radio',\n\t\t\t'keywords': ['av', 'radio'],\n\t\t\t'name': 'radio'\n\t\t}, {\n\t\t\t'codepoint': 'E03F',\n\t\t\t'id': 'recent_actors',\n\t\t\t'keywords': ['av', 'recent', 'actors'],\n\t\t\t'name': 'recent actors'\n\t\t}, {\n\t\t\t'codepoint': 'E067',\n\t\t\t'id': 'remove_from_queue',\n\t\t\t'keywords': ['av', 'remove', 'from', 'queue'],\n\t\t\t'name': 'remove from queue'\n\t\t}, {\n\t\t\t'codepoint': 'E040',\n\t\t\t'id': 'repeat',\n\t\t\t'keywords': ['av', 'repeat'],\n\t\t\t'name': 'repeat'\n\t\t}, {\n\t\t\t'codepoint': 'E041',\n\t\t\t'id': 'repeat_one',\n\t\t\t'keywords': ['av', 'repeat', 'one'],\n\t\t\t'name': 'repeat one'\n\t\t}, {\n\t\t\t'codepoint': 'E042',\n\t\t\t'id': 'replay',\n\t\t\t'keywords': ['av', 'replay'],\n\t\t\t'name': 'replay'\n\t\t}, {\n\t\t\t'codepoint': 'E059',\n\t\t\t'id': 'replay_10',\n\t\t\t'keywords': ['av', 'replay', '10'],\n\t\t\t'name': 'replay 10'\n\t\t}, {\n\t\t\t'codepoint': 'E05A',\n\t\t\t'id': 'replay_30',\n\t\t\t'keywords': ['av', 'replay', '30'],\n\t\t\t'name': 'replay 30'\n\t\t}, {\n\t\t\t'codepoint': 'E05B',\n\t\t\t'id': 'replay_5',\n\t\t\t'keywords': ['av', 'replay', '5'],\n\t\t\t'name': 'replay 5'\n\t\t}, {\n\t\t\t'codepoint': 'E043',\n\t\t\t'id': 'shuffle',\n\t\t\t'keywords': ['av', 'shuffle'],\n\t\t\t'name': 'shuffle'\n\t\t}, {\n\t\t\t'codepoint': 'E044',\n\t\t\t'id': 'skip_next',\n\t\t\t'keywords': ['av', 'skip', 'next'],\n\t\t\t'name': 'skip next'\n\t\t}, {\n\t\t\t'codepoint': 'E045',\n\t\t\t'id': 'skip_previous',\n\t\t\t'keywords': ['av', 'skip', 'previous'],\n\t\t\t'name': 'skip previous'\n\t\t}, {\n\t\t\t'codepoint': 'E068',\n\t\t\t'id': 'slow_motion_video',\n\t\t\t'keywords': ['av', 'slow', 'motion', 'video'],\n\t\t\t'name': 'slow motion video'\n\t\t}, {\n\t\t\t'codepoint': 'E046',\n\t\t\t'id': 'snooze',\n\t\t\t'keywords': ['av', 'snooze'],\n\t\t\t'name': 'snooze'\n\t\t}, {\n\t\t\t'codepoint': 'E053',\n\t\t\t'id': 'sort_by_alpha',\n\t\t\t'keywords': ['av', 'sort', 'by', 'alpha'],\n\t\t\t'name': 'sort by alpha'\n\t\t}, {\n\t\t\t'codepoint': 'E047',\n\t\t\t'id': 'stop',\n\t\t\t'keywords': ['av', 'stop'],\n\t\t\t'name': 'stop'\n\t\t}, {\n\t\t\t'codepoint': 'E064',\n\t\t\t'id': 'subscriptions',\n\t\t\t'keywords': ['av', 'subscriptions'],\n\t\t\t'name': 'subscriptions'\n\t\t}, {\n\t\t\t'codepoint': 'E048',\n\t\t\t'id': 'subtitles',\n\t\t\t'keywords': ['av', 'subtitles'],\n\t\t\t'name': 'subtitles'\n\t\t}, {\n\t\t\t'codepoint': 'E049',\n\t\t\t'id': 'surround_sound',\n\t\t\t'keywords': ['av', 'surround', 'sound'],\n\t\t\t'name': 'surround sound'\n\t\t}, {\n\t\t\t'codepoint': 'E070',\n\t\t\t'id': 'video_call',\n\t\t\t'keywords': ['av', 'video', 'call'],\n\t\t\t'name': 'video call'\n\t\t}, {\n\t\t\t'codepoint': 'E071',\n\t\t\t'id': 'video_label',\n\t\t\t'keywords': ['av', 'video', 'label'],\n\t\t\t'name': 'video label'\n\t\t}, {\n\t\t\t'codepoint': 'E04A',\n\t\t\t'id': 'video_library',\n\t\t\t'keywords': ['av', 'video', 'library'],\n\t\t\t'name': 'video library'\n\t\t}, {\n\t\t\t'codepoint': 'E04B',\n\t\t\t'id': 'videocam',\n\t\t\t'keywords': ['av', 'videocam'],\n\t\t\t'name': 'videocam'\n\t\t}, {\n\t\t\t'codepoint': 'E04C',\n\t\t\t'id': 'videocam_off',\n\t\t\t'keywords': ['av', 'videocam', 'off'],\n\t\t\t'name': 'videocam off'\n\t\t}, {\n\t\t\t'codepoint': 'E04D',\n\t\t\t'id': 'volume_down',\n\t\t\t'keywords': ['av', 'volume', 'down'],\n\t\t\t'name': 'volume down'\n\t\t}, {\n\t\t\t'codepoint': 'E04E',\n\t\t\t'id': 'volume_mute',\n\t\t\t'keywords': ['av', 'volume', 'mute'],\n\t\t\t'name': 'volume mute'\n\t\t}, {\n\t\t\t'codepoint': 'E04F',\n\t\t\t'id': 'volume_off',\n\t\t\t'keywords': ['av', 'volume', 'off'],\n\t\t\t'name': 'volume off'\n\t\t}, {\n\t\t\t'codepoint': 'E050',\n\t\t\t'id': 'volume_up',\n\t\t\t'keywords': ['av', 'volume', 'up'],\n\t\t\t'name': 'volume up'\n\t\t}, {\n\t\t\t'codepoint': 'E051',\n\t\t\t'id': 'web',\n\t\t\t'keywords': ['av', 'web'],\n\t\t\t'name': 'web'\n\t\t}, {\n\t\t\t'codepoint': 'E069',\n\t\t\t'id': 'web_asset',\n\t\t\t'keywords': ['av', 'web', 'asset'],\n\t\t\t'name': 'web asset'\n\t\t}]\n\t}, {\n\t\t'id': 'communication',\n\t\t'name': 'Communication',\n\t\t'icons': [{\n\t\t\t'codepoint': 'E0AF',\n\t\t\t'id': 'business',\n\t\t\t'keywords': ['communication', 'business'],\n\t\t\t'name': 'business'\n\t\t}, {\n\t\t\t'codepoint': 'E0B0',\n\t\t\t'id': 'call',\n\t\t\t'keywords': ['communication', 'call'],\n\t\t\t'name': 'call'\n\t\t}, {\n\t\t\t'codepoint': 'E0B1',\n\t\t\t'id': 'call_end',\n\t\t\t'keywords': ['communication', 'call', 'end'],\n\t\t\t'name': 'call end'\n\t\t}, {\n\t\t\t'codepoint': 'E0B2',\n\t\t\t'id': 'call_made',\n\t\t\t'keywords': ['communication', 'call', 'made'],\n\t\t\t'name': 'call made'\n\t\t}, {\n\t\t\t'codepoint': 'E0B3',\n\t\t\t'id': 'call_merge',\n\t\t\t'keywords': ['communication', 'call', 'merge'],\n\t\t\t'name': 'call merge'\n\t\t}, {\n\t\t\t'codepoint': 'E0B4',\n\t\t\t'id': 'call_missed',\n\t\t\t'keywords': ['communication', 'call', 'missed'],\n\t\t\t'name': 'call missed'\n\t\t}, {\n\t\t\t'codepoint': 'E0E4',\n\t\t\t'id': 'call_missed_outgoing',\n\t\t\t'keywords': ['communication', 'call', 'missed', 'outgoing'],\n\t\t\t'name': 'call missed outgoing'\n\t\t}, {\n\t\t\t'codepoint': 'E0B5',\n\t\t\t'id': 'call_received',\n\t\t\t'keywords': ['communication', 'call', 'received'],\n\t\t\t'name': 'call received'\n\t\t}, {\n\t\t\t'codepoint': 'E0B6',\n\t\t\t'id': 'call_split',\n\t\t\t'keywords': ['communication', 'call', 'split'],\n\t\t\t'name': 'call split'\n\t\t}, {\n\t\t\t'codepoint': 'E0B7',\n\t\t\t'id': 'chat',\n\t\t\t'keywords': ['communication', 'chat'],\n\t\t\t'name': 'chat'\n\t\t}, {\n\t\t\t'codepoint': 'E0CA',\n\t\t\t'id': 'chat_bubble',\n\t\t\t'keywords': ['communication', 'chat', 'bubble'],\n\t\t\t'name': 'chat bubble'\n\t\t}, {\n\t\t\t'codepoint': 'E0CB',\n\t\t\t'id': 'chat_bubble_outline',\n\t\t\t'keywords': ['communication', 'chat', 'bubble', 'outline'],\n\t\t\t'name': 'chat bubble outline'\n\t\t}, {\n\t\t\t'codepoint': 'E0B8',\n\t\t\t'id': 'clear_all',\n\t\t\t'keywords': ['communication', 'clear', 'all'],\n\t\t\t'name': 'clear all'\n\t\t}, {\n\t\t\t'codepoint': 'E0B9',\n\t\t\t'id': 'comment',\n\t\t\t'keywords': ['communication', 'comment'],\n\t\t\t'name': 'comment'\n\t\t}, {\n\t\t\t'codepoint': 'E0D0',\n\t\t\t'id': 'contact_mail',\n\t\t\t'keywords': ['communication', 'contact', 'mail'],\n\t\t\t'name': 'contact mail'\n\t\t}, {\n\t\t\t'codepoint': 'E0CF',\n\t\t\t'id': 'contact_phone',\n\t\t\t'keywords': ['communication', 'contact', 'phone'],\n\t\t\t'name': 'contact phone'\n\t\t}, {\n\t\t\t'codepoint': 'E0BA',\n\t\t\t'id': 'contacts',\n\t\t\t'keywords': ['communication', 'contacts'],\n\t\t\t'name': 'contacts'\n\t\t}, {\n\t\t\t'codepoint': 'E0BB',\n\t\t\t'id': 'dialer_sip',\n\t\t\t'keywords': ['communication', 'dialer', 'sip'],\n\t\t\t'name': 'dialer sip'\n\t\t}, {\n\t\t\t'codepoint': 'E0BC',\n\t\t\t'id': 'dialpad',\n\t\t\t'keywords': ['communication', 'dialpad'],\n\t\t\t'name': 'dialpad'\n\t\t}, {\n\t\t\t'codepoint': 'E0BE',\n\t\t\t'id': 'email',\n\t\t\t'keywords': ['communication', 'email'],\n\t\t\t'name': 'email'\n\t\t}, {\n\t\t\t'codepoint': 'E0BF',\n\t\t\t'id': 'forum',\n\t\t\t'keywords': ['communication', 'forum'],\n\t\t\t'name': 'forum'\n\t\t}, {\n\t\t\t'codepoint': 'E0E0',\n\t\t\t'id': 'import_contacts',\n\t\t\t'keywords': ['communication', 'import', 'contacts'],\n\t\t\t'name': 'import contacts'\n\t\t}, {\n\t\t\t'codepoint': 'E0C3',\n\t\t\t'id': 'import_export',\n\t\t\t'keywords': ['communication', 'import', 'export'],\n\t\t\t'name': 'import export'\n\t\t}, {\n\t\t\t'codepoint': 'E0C4',\n\t\t\t'id': 'invert_colors_off',\n\t\t\t'keywords': ['communication', 'invert', 'colors', 'off'],\n\t\t\t'name': 'invert colors off'\n\t\t}, {\n\t\t\t'codepoint': 'E0C6',\n\t\t\t'id': 'live_help',\n\t\t\t'keywords': ['communication', 'live', 'help'],\n\t\t\t'name': 'live help'\n\t\t}, {\n\t\t\t'codepoint': 'E0C7',\n\t\t\t'id': 'location_off',\n\t\t\t'keywords': ['communication', 'location', 'off'],\n\t\t\t'name': 'location off'\n\t\t}, {\n\t\t\t'codepoint': 'E0C8',\n\t\t\t'id': 'location_on',\n\t\t\t'keywords': ['communication', 'location', 'on'],\n\t\t\t'name': 'location on'\n\t\t}, {\n\t\t\t'codepoint': 'E0E1',\n\t\t\t'id': 'mail_outline',\n\t\t\t'keywords': ['communication', 'mail', 'outline'],\n\t\t\t'name': 'mail outline'\n\t\t}, {\n\t\t\t'codepoint': 'E0C9',\n\t\t\t'id': 'message',\n\t\t\t'keywords': ['communication', 'message'],\n\t\t\t'name': 'message'\n\t\t}, {\n\t\t\t'codepoint': 'E0CC',\n\t\t\t'id': 'no_sim',\n\t\t\t'keywords': ['communication', 'no', 'sim'],\n\t\t\t'name': 'no sim'\n\t\t}, {\n\t\t\t'codepoint': 'E0CD',\n\t\t\t'id': 'phone',\n\t\t\t'keywords': ['communication', 'phone'],\n\t\t\t'name': 'phone'\n\t\t}, {\n\t\t\t'codepoint': 'E0DB',\n\t\t\t'id': 'phonelink_erase',\n\t\t\t'keywords': ['communication', 'phonelink', 'erase'],\n\t\t\t'name': 'phonelink erase'\n\t\t}, {\n\t\t\t'codepoint': 'E0DC',\n\t\t\t'id': 'phonelink_lock',\n\t\t\t'keywords': ['communication', 'phonelink', 'lock'],\n\t\t\t'name': 'phonelink lock'\n\t\t}, {\n\t\t\t'codepoint': 'E0DD',\n\t\t\t'id': 'phonelink_ring',\n\t\t\t'keywords': ['communication', 'phonelink', 'ring'],\n\t\t\t'name': 'phonelink ring'\n\t\t}, {\n\t\t\t'codepoint': 'E0DE',\n\t\t\t'id': 'phonelink_setup',\n\t\t\t'keywords': ['communication', 'phonelink', 'setup'],\n\t\t\t'name': 'phonelink setup'\n\t\t}, {\n\t\t\t'codepoint': 'E0CE',\n\t\t\t'id': 'portable_wifi_off',\n\t\t\t'keywords': ['communication', 'portable', 'wifi', 'off'],\n\t\t\t'name': 'portable wifi off'\n\t\t}, {\n\t\t\t'codepoint': 'E0DF',\n\t\t\t'id': 'present_to_all',\n\t\t\t'keywords': ['communication', 'present', 'to', 'all'],\n\t\t\t'name': 'present to all'\n\t\t}, {\n\t\t\t'codepoint': 'E0D1',\n\t\t\t'id': 'ring_volume',\n\t\t\t'keywords': ['communication', 'ring', 'volume'],\n\t\t\t'name': 'ring volume'\n\t\t}, {\n\t\t\t'codepoint': 'E0E5',\n\t\t\t'id': 'rss_feed',\n\t\t\t'keywords': ['communication', 'rss', 'feed'],\n\t\t\t'name': 'rss feed'\n\t\t}, {\n\t\t\t'codepoint': 'E0E2',\n\t\t\t'id': 'screen_share',\n\t\t\t'keywords': ['communication', 'screen', 'share'],\n\t\t\t'name': 'screen share'\n\t\t}, {\n\t\t\t'codepoint': 'E0D2',\n\t\t\t'id': 'speaker_phone',\n\t\t\t'keywords': ['communication', 'speaker', 'phone'],\n\t\t\t'name': 'speaker phone'\n\t\t}, {\n\t\t\t'codepoint': 'E0D3',\n\t\t\t'id': 'stay_current_landscape',\n\t\t\t'keywords': ['communication', 'stay', 'current', 'landscape'],\n\t\t\t'name': 'stay current landscape'\n\t\t}, {\n\t\t\t'codepoint': 'E0D4',\n\t\t\t'id': 'stay_current_portrait',\n\t\t\t'keywords': ['communication', 'stay', 'current', 'portrait'],\n\t\t\t'name': 'stay current portrait'\n\t\t}, {\n\t\t\t'codepoint': 'E0D5',\n\t\t\t'id': 'stay_primary_landscape',\n\t\t\t'keywords': ['communication', 'stay', 'primary', 'landscape'],\n\t\t\t'name': 'stay primary landscape'\n\t\t}, {\n\t\t\t'codepoint': 'E0D6',\n\t\t\t'id': 'stay_primary_portrait',\n\t\t\t'keywords': ['communication', 'stay', 'primary', 'portrait'],\n\t\t\t'name': 'stay primary portrait'\n\t\t}, {\n\t\t\t'codepoint': 'E0E3',\n\t\t\t'id': 'stop_screen_share',\n\t\t\t'keywords': ['communication', 'stop', 'screen', 'share'],\n\t\t\t'name': 'stop screen share'\n\t\t}, {\n\t\t\t'codepoint': 'E0D7',\n\t\t\t'id': 'swap_calls',\n\t\t\t'keywords': ['communication', 'swap', 'calls'],\n\t\t\t'name': 'swap calls'\n\t\t}, {\n\t\t\t'codepoint': 'E0D8',\n\t\t\t'id': 'textsms',\n\t\t\t'keywords': ['communication', 'textsms'],\n\t\t\t'name': 'textsms'\n\t\t}, {\n\t\t\t'codepoint': 'E0D9',\n\t\t\t'id': 'voicemail',\n\t\t\t'keywords': ['communication', 'voicemail'],\n\t\t\t'name': 'voicemail'\n\t\t}, {\n\t\t\t'codepoint': 'E0DA',\n\t\t\t'id': 'vpn_key',\n\t\t\t'keywords': ['communication', 'vpn', 'key'],\n\t\t\t'name': 'vpn key'\n\t\t}]\n\t}, {\n\t\t'id': 'content',\n\t\t'name': 'Content',\n\t\t'icons': [{\n\t\t\t'codepoint': 'E145',\n\t\t\t'id': 'add',\n\t\t\t'keywords': ['content', 'add'],\n\t\t\t'name': 'add'\n\t\t}, {\n\t\t\t'codepoint': 'E146',\n\t\t\t'id': 'add_box',\n\t\t\t'keywords': ['content', 'add', 'box'],\n\t\t\t'name': 'add box'\n\t\t}, {\n\t\t\t'codepoint': 'E147',\n\t\t\t'id': 'add_circle',\n\t\t\t'keywords': ['content', 'add', 'circle'],\n\t\t\t'name': 'add circle'\n\t\t}, {\n\t\t\t'codepoint': 'E148',\n\t\t\t'id': 'add_circle_outline',\n\t\t\t'keywords': ['content', 'add', 'circle', 'outline'],\n\t\t\t'name': 'add circle outline'\n\t\t}, {\n\t\t\t'codepoint': 'E149',\n\t\t\t'id': 'archive',\n\t\t\t'keywords': ['content', 'archive'],\n\t\t\t'name': 'archive'\n\t\t}, {\n\t\t\t'codepoint': 'E14A',\n\t\t\t'id': 'backspace',\n\t\t\t'keywords': ['content', 'backspace'],\n\t\t\t'name': 'backspace'\n\t\t}, {\n\t\t\t'codepoint': 'E14B',\n\t\t\t'id': 'block',\n\t\t\t'keywords': ['content', 'block'],\n\t\t\t'name': 'block'\n\t\t}, {\n\t\t\t'codepoint': 'E14C',\n\t\t\t'id': 'clear',\n\t\t\t'keywords': ['content', 'clear'],\n\t\t\t'name': 'clear'\n\t\t}, {\n\t\t\t'codepoint': 'E14D',\n\t\t\t'id': 'content_copy',\n\t\t\t'keywords': ['content', 'content', 'copy'],\n\t\t\t'name': 'content copy'\n\t\t}, {\n\t\t\t'codepoint': 'E14E',\n\t\t\t'id': 'content_cut',\n\t\t\t'keywords': ['content', 'content', 'cut'],\n\t\t\t'name': 'content cut'\n\t\t}, {\n\t\t\t'codepoint': 'E14F',\n\t\t\t'id': 'content_paste',\n\t\t\t'keywords': ['content', 'content', 'paste'],\n\t\t\t'name': 'content paste'\n\t\t}, {\n\t\t\t'codepoint': 'E150',\n\t\t\t'id': 'create',\n\t\t\t'keywords': ['content', 'create'],\n\t\t\t'name': 'create'\n\t\t}, {\n\t\t\t'codepoint': 'E16C',\n\t\t\t'id': 'delete_sweep',\n\t\t\t'keywords': ['content', 'delete', 'sweep'],\n\t\t\t'name': 'delete sweep'\n\t\t}, {\n\t\t\t'codepoint': 'E151',\n\t\t\t'id': 'drafts',\n\t\t\t'keywords': ['content', 'drafts'],\n\t\t\t'name': 'drafts'\n\t\t}, {\n\t\t\t'codepoint': 'E152',\n\t\t\t'id': 'filter_list',\n\t\t\t'keywords': ['content', 'filter', 'list'],\n\t\t\t'name': 'filter list'\n\t\t}, {\n\t\t\t'codepoint': 'E153',\n\t\t\t'id': 'flag',\n\t\t\t'keywords': ['content', 'flag'],\n\t\t\t'name': 'flag'\n\t\t}, {\n\t\t\t'codepoint': 'E167',\n\t\t\t'id': 'font_download',\n\t\t\t'keywords': ['content', 'font', 'download'],\n\t\t\t'name': 'font download'\n\t\t}, {\n\t\t\t'codepoint': 'E154',\n\t\t\t'id': 'forward',\n\t\t\t'keywords': ['content', 'forward'],\n\t\t\t'name': 'forward'\n\t\t}, {\n\t\t\t'codepoint': 'E155',\n\t\t\t'id': 'gesture',\n\t\t\t'keywords': ['content', 'gesture'],\n\t\t\t'name': 'gesture'\n\t\t}, {\n\t\t\t'codepoint': 'E156',\n\t\t\t'id': 'inbox',\n\t\t\t'keywords': ['content', 'inbox'],\n\t\t\t'name': 'inbox'\n\t\t}, {\n\t\t\t'codepoint': 'E157',\n\t\t\t'id': 'link',\n\t\t\t'keywords': ['content', 'link'],\n\t\t\t'name': 'link'\n\t\t}, {\n\t\t\t'codepoint': 'E16D',\n\t\t\t'id': 'low_priority',\n\t\t\t'keywords': ['content', 'low', 'priority'],\n\t\t\t'name': 'low priority'\n\t\t}, {\n\t\t\t'codepoint': 'E158',\n\t\t\t'id': 'mail',\n\t\t\t'keywords': ['content', 'mail'],\n\t\t\t'name': 'mail'\n\t\t}, {\n\t\t\t'codepoint': 'E159',\n\t\t\t'id': 'markunread',\n\t\t\t'keywords': ['content', 'markunread'],\n\t\t\t'name': 'markunread'\n\t\t}, {\n\t\t\t'codepoint': 'E168',\n\t\t\t'id': 'move_to_inbox',\n\t\t\t'keywords': ['content', 'move', 'to', 'inbox'],\n\t\t\t'name': 'move to inbox'\n\t\t}, {\n\t\t\t'codepoint': 'E16A',\n\t\t\t'id': 'next_week',\n\t\t\t'keywords': ['content', 'next', 'week'],\n\t\t\t'name': 'next week'\n\t\t}, {\n\t\t\t'codepoint': 'E15A',\n\t\t\t'id': 'redo',\n\t\t\t'keywords': ['content', 'redo'],\n\t\t\t'name': 'redo'\n\t\t}, {\n\t\t\t'codepoint': 'E15B',\n\t\t\t'id': 'remove',\n\t\t\t'keywords': ['content', 'remove'],\n\t\t\t'name': 'remove'\n\t\t}, {\n\t\t\t'codepoint': 'E15C',\n\t\t\t'id': 'remove_circle',\n\t\t\t'keywords': ['content', 'remove', 'circle'],\n\t\t\t'name': 'remove circle'\n\t\t}, {\n\t\t\t'codepoint': 'E15D',\n\t\t\t'id': 'remove_circle_outline',\n\t\t\t'keywords': ['content', 'remove', 'circle', 'outline'],\n\t\t\t'name': 'remove circle outline'\n\t\t}, {\n\t\t\t'codepoint': 'E15E',\n\t\t\t'id': 'reply',\n\t\t\t'keywords': ['content', 'reply'],\n\t\t\t'name': 'reply'\n\t\t}, {\n\t\t\t'codepoint': 'E15F',\n\t\t\t'id': 'reply_all',\n\t\t\t'keywords': ['content', 'reply', 'all'],\n\t\t\t'name': 'reply all'\n\t\t}, {\n\t\t\t'codepoint': 'E160',\n\t\t\t'id': 'report',\n\t\t\t'keywords': ['content', 'report'],\n\t\t\t'name': 'report'\n\t\t}, {\n\t\t\t'codepoint': 'E161',\n\t\t\t'id': 'save',\n\t\t\t'keywords': ['content', 'save'],\n\t\t\t'name': 'save'\n\t\t}, {\n\t\t\t'codepoint': 'E162',\n\t\t\t'id': 'select_all',\n\t\t\t'keywords': ['content', 'select', 'all'],\n\t\t\t'name': 'select all'\n\t\t}, {\n\t\t\t'codepoint': 'E163',\n\t\t\t'id': 'send',\n\t\t\t'keywords': ['content', 'send'],\n\t\t\t'name': 'send'\n\t\t}, {\n\t\t\t'codepoint': 'E164',\n\t\t\t'id': 'sort',\n\t\t\t'keywords': ['content', 'sort'],\n\t\t\t'name': 'sort'\n\t\t}, {\n\t\t\t'codepoint': 'E165',\n\t\t\t'id': 'text_format',\n\t\t\t'keywords': ['content', 'text', 'format'],\n\t\t\t'name': 'text format'\n\t\t}, {\n\t\t\t'codepoint': 'E169',\n\t\t\t'id': 'unarchive',\n\t\t\t'keywords': ['content', 'unarchive'],\n\t\t\t'name': 'unarchive'\n\t\t}, {\n\t\t\t'codepoint': 'E166',\n\t\t\t'id': 'undo',\n\t\t\t'keywords': ['content', 'undo'],\n\t\t\t'name': 'undo'\n\t\t}, {\n\t\t\t'codepoint': 'E16B',\n\t\t\t'id': 'weekend',\n\t\t\t'keywords': ['content', 'weekend'],\n\t\t\t'name': 'weekend'\n\t\t}]\n\t}, {\n\t\t'id': 'device',\n\t\t'name': 'Device',\n\t\t'icons': [{\n\t\t\t'codepoint': 'E190',\n\t\t\t'id': 'access_alarm',\n\t\t\t'keywords': ['device', 'access', 'alarm'],\n\t\t\t'name': 'access alarm'\n\t\t}, {\n\t\t\t'codepoint': 'E191',\n\t\t\t'id': 'access_alarms',\n\t\t\t'keywords': ['device', 'access', 'alarms'],\n\t\t\t'name': 'access alarms'\n\t\t}, {\n\t\t\t'codepoint': 'E192',\n\t\t\t'id': 'access_time',\n\t\t\t'keywords': ['device', 'access', 'time'],\n\t\t\t'name': 'access time'\n\t\t}, {\n\t\t\t'codepoint': 'E193',\n\t\t\t'id': 'add_alarm',\n\t\t\t'keywords': ['device', 'add', 'alarm'],\n\t\t\t'name': 'add alarm'\n\t\t}, {\n\t\t\t'codepoint': 'E195',\n\t\t\t'id': 'airplanemode_active',\n\t\t\t'keywords': ['device', 'airplanemode', 'active'],\n\t\t\t'name': 'airplanemode active'\n\t\t}, {\n\t\t\t'codepoint': 'E194',\n\t\t\t'id': 'airplanemode_inactive',\n\t\t\t'keywords': ['device', 'airplanemode', 'inactive'],\n\t\t\t'name': 'airplanemode inactive'\n\t\t}, {\n\t\t\t'codepoint': 'E19C',\n\t\t\t'id': 'battery_alert',\n\t\t\t'keywords': ['device', 'battery', 'alert'],\n\t\t\t'name': 'battery alert'\n\t\t}, {\n\t\t\t'codepoint': 'E1A3',\n\t\t\t'id': 'battery_charging_full',\n\t\t\t'keywords': ['device', 'battery', 'charging', 'full'],\n\t\t\t'name': 'battery charging full'\n\t\t}, {\n\t\t\t'codepoint': 'E1A4',\n\t\t\t'id': 'battery_full',\n\t\t\t'keywords': ['device', 'battery', 'full'],\n\t\t\t'name': 'battery full'\n\t\t}, {\n\t\t\t'codepoint': 'E1A5',\n\t\t\t'id': 'battery_std',\n\t\t\t'keywords': ['device', 'battery', 'std'],\n\t\t\t'name': 'battery std'\n\t\t}, {\n\t\t\t'codepoint': 'E1A6',\n\t\t\t'id': 'battery_unknown',\n\t\t\t'keywords': ['device', 'battery', 'unknown'],\n\t\t\t'name': 'battery unknown'\n\t\t}, {\n\t\t\t'codepoint': 'E1A7',\n\t\t\t'id': 'bluetooth',\n\t\t\t'keywords': ['device', 'bluetooth'],\n\t\t\t'name': 'bluetooth'\n\t\t}, {\n\t\t\t'codepoint': 'E1A8',\n\t\t\t'id': 'bluetooth_connected',\n\t\t\t'keywords': ['device', 'bluetooth', 'connected'],\n\t\t\t'name': 'bluetooth connected'\n\t\t}, {\n\t\t\t'codepoint': 'E1A9',\n\t\t\t'id': 'bluetooth_disabled',\n\t\t\t'keywords': ['device', 'bluetooth', 'disabled'],\n\t\t\t'name': 'bluetooth disabled'\n\t\t}, {\n\t\t\t'codepoint': 'E1AA',\n\t\t\t'id': 'bluetooth_searching',\n\t\t\t'keywords': ['device', 'bluetooth', 'searching'],\n\t\t\t'name': 'bluetooth searching'\n\t\t}, {\n\t\t\t'codepoint': 'E1AB',\n\t\t\t'id': 'brightness_auto',\n\t\t\t'keywords': ['device', 'brightness', 'auto'],\n\t\t\t'name': 'brightness auto'\n\t\t}, {\n\t\t\t'codepoint': 'E1AC',\n\t\t\t'id': 'brightness_high',\n\t\t\t'keywords': ['device', 'brightness', 'high'],\n\t\t\t'name': 'brightness high'\n\t\t}, {\n\t\t\t'codepoint': 'E1AD',\n\t\t\t'id': 'brightness_low',\n\t\t\t'keywords': ['device', 'brightness', 'low'],\n\t\t\t'name': 'brightness low'\n\t\t}, {\n\t\t\t'codepoint': 'E1AE',\n\t\t\t'id': 'brightness_medium',\n\t\t\t'keywords': ['device', 'brightness', 'medium'],\n\t\t\t'name': 'brightness medium'\n\t\t}, {\n\t\t\t'codepoint': 'E1AF',\n\t\t\t'id': 'data_usage',\n\t\t\t'keywords': ['device', 'data', 'usage'],\n\t\t\t'name': 'data usage'\n\t\t}, {\n\t\t\t'codepoint': 'E1B0',\n\t\t\t'id': 'developer_mode',\n\t\t\t'keywords': ['device', 'developer', 'mode'],\n\t\t\t'name': 'developer mode'\n\t\t}, {\n\t\t\t'codepoint': 'E1B1',\n\t\t\t'id': 'devices',\n\t\t\t'keywords': ['device', 'devices'],\n\t\t\t'name': 'devices'\n\t\t}, {\n\t\t\t'codepoint': 'E1B2',\n\t\t\t'id': 'dvr',\n\t\t\t'keywords': ['device', 'dvr'],\n\t\t\t'name': 'dvr'\n\t\t}, {\n\t\t\t'codepoint': 'E1B3',\n\t\t\t'id': 'gps_fixed',\n\t\t\t'keywords': ['device', 'gps', 'fixed'],\n\t\t\t'name': 'gps fixed'\n\t\t}, {\n\t\t\t'codepoint': 'E1B4',\n\t\t\t'id': 'gps_not_fixed',\n\t\t\t'keywords': ['device', 'gps', 'not', 'fixed'],\n\t\t\t'name': 'gps not fixed'\n\t\t}, {\n\t\t\t'codepoint': 'E1B5',\n\t\t\t'id': 'gps_off',\n\t\t\t'keywords': ['device', 'gps', 'off'],\n\t\t\t'name': 'gps off'\n\t\t}, {\n\t\t\t'codepoint': 'E1B8',\n\t\t\t'id': 'graphic_eq',\n\t\t\t'keywords': ['device', 'graphic', 'eq'],\n\t\t\t'name': 'graphic eq'\n\t\t}, {\n\t\t\t'codepoint': 'E1B6',\n\t\t\t'id': 'location_disabled',\n\t\t\t'keywords': ['device', 'location', 'disabled'],\n\t\t\t'name': 'location disabled'\n\t\t}, {\n\t\t\t'codepoint': 'E1B7',\n\t\t\t'id': 'location_searching',\n\t\t\t'keywords': ['device', 'location', 'searching'],\n\t\t\t'name': 'location searching'\n\t\t}, {\n\t\t\t'codepoint': 'E1B9',\n\t\t\t'id': 'network_cell',\n\t\t\t'keywords': ['device', 'network', 'cell'],\n\t\t\t'name': 'network cell'\n\t\t}, {\n\t\t\t'codepoint': 'E1BA',\n\t\t\t'id': 'network_wifi',\n\t\t\t'keywords': ['device', 'network', 'wifi'],\n\t\t\t'name': 'network wifi'\n\t\t}, {\n\t\t\t'codepoint': 'E1BB',\n\t\t\t'id': 'nfc',\n\t\t\t'keywords': ['device', 'nfc'],\n\t\t\t'name': 'nfc'\n\t\t}, {\n\t\t\t'codepoint': 'E1BE',\n\t\t\t'id': 'screen_lock_landscape',\n\t\t\t'keywords': ['device', 'screen', 'lock', 'landscape'],\n\t\t\t'name': 'screen lock landscape'\n\t\t}, {\n\t\t\t'codepoint': 'E1BF',\n\t\t\t'id': 'screen_lock_portrait',\n\t\t\t'keywords': ['device', 'screen', 'lock', 'portrait'],\n\t\t\t'name': 'screen lock portrait'\n\t\t}, {\n\t\t\t'codepoint': 'E1C0',\n\t\t\t'id': 'screen_lock_rotation',\n\t\t\t'keywords': ['device', 'screen', 'lock', 'rotation'],\n\t\t\t'name': 'screen lock rotation'\n\t\t}, {\n\t\t\t'codepoint': 'E1C1',\n\t\t\t'id': 'screen_rotation',\n\t\t\t'keywords': ['device', 'screen', 'rotation'],\n\t\t\t'name': 'screen rotation'\n\t\t}, {\n\t\t\t'codepoint': 'E1C2',\n\t\t\t'id': 'sd_storage',\n\t\t\t'keywords': ['device', 'sd', 'storage'],\n\t\t\t'name': 'sd storage'\n\t\t}, {\n\t\t\t'codepoint': 'E1C3',\n\t\t\t'id': 'settings_system_daydream',\n\t\t\t'keywords': ['device', 'settings', 'system', 'daydream'],\n\t\t\t'name': 'settings system daydream'\n\t\t}, {\n\t\t\t'codepoint': 'E1C8',\n\t\t\t'id': 'signal_cellular_4_bar',\n\t\t\t'keywords': ['device', 'signal', 'cellular', '4', 'bar'],\n\t\t\t'name': 'signal cellular 4 bar'\n\t\t}, {\n\t\t\t'codepoint': 'E1CD',\n\t\t\t'id': 'signal_cellular_connected_no_internet_4_bar',\n\t\t\t'keywords': ['device', 'signal', 'cellular', 'connected', 'no', 'internet', '4', 'bar'],\n\t\t\t'name': 'signal cellular connected no internet 4 bar'\n\t\t}, {\n\t\t\t'codepoint': 'E1CE',\n\t\t\t'id': 'signal_cellular_no_sim',\n\t\t\t'keywords': ['device', 'signal', 'cellular', 'no', 'sim'],\n\t\t\t'name': 'signal cellular no sim'\n\t\t}, {\n\t\t\t'codepoint': 'E1CF',\n\t\t\t'id': 'signal_cellular_null',\n\t\t\t'keywords': ['device', 'signal', 'cellular', 'null'],\n\t\t\t'name': 'signal cellular null'\n\t\t}, {\n\t\t\t'codepoint': 'E1D0',\n\t\t\t'id': 'signal_cellular_off',\n\t\t\t'keywords': ['device', 'signal', 'cellular', 'off'],\n\t\t\t'name': 'signal cellular off'\n\t\t}, {\n\t\t\t'codepoint': 'E1D8',\n\t\t\t'id': 'signal_wifi_4_bar',\n\t\t\t'keywords': ['device', 'signal', 'wifi', '4', 'bar'],\n\t\t\t'name': 'signal wifi 4 bar'\n\t\t}, {\n\t\t\t'codepoint': 'E1D9',\n\t\t\t'id': 'signal_wifi_4_bar_lock',\n\t\t\t'keywords': ['device', 'signal', 'wifi', '4', 'bar', 'lock'],\n\t\t\t'name': 'signal wifi 4 bar lock'\n\t\t}, {\n\t\t\t'codepoint': 'E1DA',\n\t\t\t'id': 'signal_wifi_off',\n\t\t\t'keywords': ['device', 'signal', 'wifi', 'off'],\n\t\t\t'name': 'signal wifi off'\n\t\t}, {\n\t\t\t'codepoint': 'E1DB',\n\t\t\t'id': 'storage',\n\t\t\t'keywords': ['device', 'storage'],\n\t\t\t'name': 'storage'\n\t\t}, {\n\t\t\t'codepoint': 'E1E0',\n\t\t\t'id': 'usb',\n\t\t\t'keywords': ['device', 'usb'],\n\t\t\t'name': 'usb'\n\t\t}, {\n\t\t\t'codepoint': 'E1BC',\n\t\t\t'id': 'wallpaper',\n\t\t\t'keywords': ['device', 'wallpaper'],\n\t\t\t'name': 'wallpaper'\n\t\t}, {\n\t\t\t'codepoint': 'E1BD',\n\t\t\t'id': 'widgets',\n\t\t\t'keywords': ['device', 'widgets'],\n\t\t\t'name': 'widgets'\n\t\t}, {\n\t\t\t'codepoint': 'E1E1',\n\t\t\t'id': 'wifi_lock',\n\t\t\t'keywords': ['device', 'wifi', 'lock'],\n\t\t\t'name': 'wifi lock'\n\t\t}, {\n\t\t\t'codepoint': 'E1E2',\n\t\t\t'id': 'wifi_tethering',\n\t\t\t'keywords': ['device', 'wifi', 'tethering'],\n\t\t\t'name': 'wifi tethering'\n\t\t}]\n\t}, {\n\t\t'id': 'editor',\n\t\t'name': 'Editor',\n\t\t'icons': [{\n\t\t\t'codepoint': 'E226',\n\t\t\t'id': 'attach_file',\n\t\t\t'keywords': ['editor', 'attach', 'file'],\n\t\t\t'name': 'attach file'\n\t\t}, {\n\t\t\t'codepoint': 'E227',\n\t\t\t'id': 'attach_money',\n\t\t\t'keywords': ['editor', 'attach', 'money'],\n\t\t\t'name': 'attach money'\n\t\t}, {\n\t\t\t'codepoint': 'E228',\n\t\t\t'id': 'border_all',\n\t\t\t'keywords': ['editor', 'border', 'all'],\n\t\t\t'name': 'border all'\n\t\t}, {\n\t\t\t'codepoint': 'E229',\n\t\t\t'id': 'border_bottom',\n\t\t\t'keywords': ['editor', 'border', 'bottom'],\n\t\t\t'name': 'border bottom'\n\t\t}, {\n\t\t\t'codepoint': 'E22A',\n\t\t\t'id': 'border_clear',\n\t\t\t'keywords': ['editor', 'border', 'clear'],\n\t\t\t'name': 'border clear'\n\t\t}, {\n\t\t\t'codepoint': 'E22B',\n\t\t\t'id': 'border_color',\n\t\t\t'keywords': ['editor', 'border', 'color'],\n\t\t\t'name': 'border color'\n\t\t}, {\n\t\t\t'codepoint': 'E22C',\n\t\t\t'id': 'border_horizontal',\n\t\t\t'keywords': ['editor', 'border', 'horizontal'],\n\t\t\t'name': 'border horizontal'\n\t\t}, {\n\t\t\t'codepoint': 'E22D',\n\t\t\t'id': 'border_inner',\n\t\t\t'keywords': ['editor', 'border', 'inner'],\n\t\t\t'name': 'border inner'\n\t\t}, {\n\t\t\t'codepoint': 'E22E',\n\t\t\t'id': 'border_left',\n\t\t\t'keywords': ['editor', 'border', 'left'],\n\t\t\t'name': 'border left'\n\t\t}, {\n\t\t\t'codepoint': 'E22F',\n\t\t\t'id': 'border_outer',\n\t\t\t'keywords': ['editor', 'border', 'outer'],\n\t\t\t'name': 'border outer'\n\t\t}, {\n\t\t\t'codepoint': 'E230',\n\t\t\t'id': 'border_right',\n\t\t\t'keywords': ['editor', 'border', 'right'],\n\t\t\t'name': 'border right'\n\t\t}, {\n\t\t\t'codepoint': 'E231',\n\t\t\t'id': 'border_style',\n\t\t\t'keywords': ['editor', 'border', 'style'],\n\t\t\t'name': 'border style'\n\t\t}, {\n\t\t\t'codepoint': 'E232',\n\t\t\t'id': 'border_top',\n\t\t\t'keywords': ['editor', 'border', 'top'],\n\t\t\t'name': 'border top'\n\t\t}, {\n\t\t\t'codepoint': 'E233',\n\t\t\t'id': 'border_vertical',\n\t\t\t'keywords': ['editor', 'border', 'vertical'],\n\t\t\t'name': 'border vertical'\n\t\t}, {\n\t\t\t'codepoint': 'E6DD',\n\t\t\t'id': 'bubble_chart',\n\t\t\t'keywords': ['editor', 'bubble', 'chart'],\n\t\t\t'name': 'bubble chart'\n\t\t}, {\n\t\t\t'codepoint': 'E25D',\n\t\t\t'id': 'drag_handle',\n\t\t\t'keywords': ['editor', 'drag', 'handle'],\n\t\t\t'name': 'drag handle'\n\t\t}, {\n\t\t\t'codepoint': 'E234',\n\t\t\t'id': 'format_align_center',\n\t\t\t'keywords': ['editor', 'format', 'align', 'center'],\n\t\t\t'name': 'format align center'\n\t\t}, {\n\t\t\t'codepoint': 'E235',\n\t\t\t'id': 'format_align_justify',\n\t\t\t'keywords': ['editor', 'format', 'align', 'justify'],\n\t\t\t'name': 'format align justify'\n\t\t}, {\n\t\t\t'codepoint': 'E236',\n\t\t\t'id': 'format_align_left',\n\t\t\t'keywords': ['editor', 'format', 'align', 'left'],\n\t\t\t'name': 'format align left'\n\t\t}, {\n\t\t\t'codepoint': 'E237',\n\t\t\t'id': 'format_align_right',\n\t\t\t'keywords': ['editor', 'format', 'align', 'right'],\n\t\t\t'name': 'format align right'\n\t\t}, {\n\t\t\t'codepoint': 'E238',\n\t\t\t'id': 'format_bold',\n\t\t\t'keywords': ['editor', 'format', 'bold'],\n\t\t\t'name': 'format bold'\n\t\t}, {\n\t\t\t'codepoint': 'E239',\n\t\t\t'id': 'format_clear',\n\t\t\t'keywords': ['editor', 'format', 'clear'],\n\t\t\t'name': 'format clear'\n\t\t}, {\n\t\t\t'codepoint': 'E23A',\n\t\t\t'id': 'format_color_fill',\n\t\t\t'keywords': ['editor', 'format', 'color', 'fill'],\n\t\t\t'name': 'format color fill'\n\t\t}, {\n\t\t\t'codepoint': 'E23B',\n\t\t\t'id': 'format_color_reset',\n\t\t\t'keywords': ['editor', 'format', 'color', 'reset'],\n\t\t\t'name': 'format color reset'\n\t\t}, {\n\t\t\t'codepoint': 'E23C',\n\t\t\t'id': 'format_color_text',\n\t\t\t'keywords': ['editor', 'format', 'color', 'text'],\n\t\t\t'name': 'format color text'\n\t\t}, {\n\t\t\t'codepoint': 'E23D',\n\t\t\t'id': 'format_indent_decrease',\n\t\t\t'keywords': ['editor', 'format', 'indent', 'decrease'],\n\t\t\t'name': 'format indent decrease'\n\t\t}, {\n\t\t\t'codepoint': 'E23E',\n\t\t\t'id': 'format_indent_increase',\n\t\t\t'keywords': ['editor', 'format', 'indent', 'increase'],\n\t\t\t'name': 'format indent increase'\n\t\t}, {\n\t\t\t'codepoint': 'E23F',\n\t\t\t'id': 'format_italic',\n\t\t\t'keywords': ['editor', 'format', 'italic'],\n\t\t\t'name': 'format italic'\n\t\t}, {\n\t\t\t'codepoint': 'E240',\n\t\t\t'id': 'format_line_spacing',\n\t\t\t'keywords': ['editor', 'format', 'line', 'spacing'],\n\t\t\t'name': 'format line spacing'\n\t\t}, {\n\t\t\t'codepoint': 'E241',\n\t\t\t'id': 'format_list_bulleted',\n\t\t\t'keywords': ['editor', 'format', 'list', 'bulleted'],\n\t\t\t'name': 'format list bulleted'\n\t\t}, {\n\t\t\t'codepoint': 'E242',\n\t\t\t'id': 'format_list_numbered',\n\t\t\t'keywords': ['editor', 'format', 'list', 'numbered'],\n\t\t\t'name': 'format list numbered'\n\t\t}, {\n\t\t\t'codepoint': 'E243',\n\t\t\t'id': 'format_paint',\n\t\t\t'keywords': ['editor', 'format', 'paint'],\n\t\t\t'name': 'format paint'\n\t\t}, {\n\t\t\t'codepoint': 'E244',\n\t\t\t'id': 'format_quote',\n\t\t\t'keywords': ['editor', 'format', 'quote'],\n\t\t\t'name': 'format quote'\n\t\t}, {\n\t\t\t'codepoint': 'E25E',\n\t\t\t'id': 'format_shapes',\n\t\t\t'keywords': ['editor', 'format', 'shapes'],\n\t\t\t'name': 'format shapes'\n\t\t}, {\n\t\t\t'codepoint': 'E245',\n\t\t\t'id': 'format_size',\n\t\t\t'keywords': ['editor', 'format', 'size'],\n\t\t\t'name': 'format size'\n\t\t}, {\n\t\t\t'codepoint': 'E246',\n\t\t\t'id': 'format_strikethrough',\n\t\t\t'keywords': ['editor', 'format', 'strikethrough'],\n\t\t\t'name': 'format strikethrough'\n\t\t}, {\n\t\t\t'codepoint': 'E247',\n\t\t\t'id': 'format_textdirection_l_to_r',\n\t\t\t'keywords': ['editor', 'format', 'textdirection', 'l', 'to', 'r'],\n\t\t\t'name': 'format textdirection l to r'\n\t\t}, {\n\t\t\t'codepoint': 'E248',\n\t\t\t'id': 'format_textdirection_r_to_l',\n\t\t\t'keywords': ['editor', 'format', 'textdirection', 'r', 'to', 'l'],\n\t\t\t'name': 'format textdirection r to l'\n\t\t}, {\n\t\t\t'codepoint': 'E249',\n\t\t\t'id': 'format_underlined',\n\t\t\t'keywords': ['editor', 'format', 'underlined'],\n\t\t\t'name': 'format underlined'\n\t\t}, {\n\t\t\t'codepoint': 'E24A',\n\t\t\t'id': 'functions',\n\t\t\t'keywords': ['editor', 'functions'],\n\t\t\t'name': 'functions'\n\t\t}, {\n\t\t\t'codepoint': 'E25F',\n\t\t\t'id': 'highlight',\n\t\t\t'keywords': ['editor', 'highlight'],\n\t\t\t'name': 'highlight'\n\t\t}, {\n\t\t\t'codepoint': 'E24B',\n\t\t\t'id': 'insert_chart',\n\t\t\t'keywords': ['editor', 'insert', 'chart'],\n\t\t\t'name': 'insert chart'\n\t\t}, {\n\t\t\t'codepoint': 'E24C',\n\t\t\t'id': 'insert_comment',\n\t\t\t'keywords': ['editor', 'insert', 'comment'],\n\t\t\t'name': 'insert comment'\n\t\t}, {\n\t\t\t'codepoint': 'E24D',\n\t\t\t'id': 'insert_drive_file',\n\t\t\t'keywords': ['editor', 'insert', 'drive', 'file'],\n\t\t\t'name': 'insert drive file'\n\t\t}, {\n\t\t\t'codepoint': 'E24E',\n\t\t\t'id': 'insert_emoticon',\n\t\t\t'keywords': ['editor', 'insert', 'emoticon'],\n\t\t\t'name': 'insert emoticon'\n\t\t}, {\n\t\t\t'codepoint': 'E24F',\n\t\t\t'id': 'insert_invitation',\n\t\t\t'keywords': ['editor', 'insert', 'invitation'],\n\t\t\t'name': 'insert invitation'\n\t\t}, {\n\t\t\t'codepoint': 'E250',\n\t\t\t'id': 'insert_link',\n\t\t\t'keywords': ['editor', 'insert', 'link'],\n\t\t\t'name': 'insert link'\n\t\t}, {\n\t\t\t'codepoint': 'E251',\n\t\t\t'id': 'insert_photo',\n\t\t\t'keywords': ['editor', 'insert', 'photo'],\n\t\t\t'name': 'insert photo'\n\t\t}, {\n\t\t\t'codepoint': 'E260',\n\t\t\t'id': 'linear_scale',\n\t\t\t'keywords': ['editor', 'linear', 'scale'],\n\t\t\t'name': 'linear scale'\n\t\t}, {\n\t\t\t'codepoint': 'E252',\n\t\t\t'id': 'merge_type',\n\t\t\t'keywords': ['editor', 'merge', 'type'],\n\t\t\t'name': 'merge type'\n\t\t}, {\n\t\t\t'codepoint': 'E253',\n\t\t\t'id': 'mode_comment',\n\t\t\t'keywords': ['editor', 'mode', 'comment'],\n\t\t\t'name': 'mode comment'\n\t\t}, {\n\t\t\t'codepoint': 'E254',\n\t\t\t'id': 'mode_edit',\n\t\t\t'keywords': ['editor', 'mode', 'edit'],\n\t\t\t'name': 'mode edit'\n\t\t}, {\n\t\t\t'codepoint': 'E263',\n\t\t\t'id': 'monetization_on',\n\t\t\t'keywords': ['editor', 'monetization', 'on'],\n\t\t\t'name': 'monetization on'\n\t\t}, {\n\t\t\t'codepoint': 'E25C',\n\t\t\t'id': 'money_off',\n\t\t\t'keywords': ['editor', 'money', 'off'],\n\t\t\t'name': 'money off'\n\t\t}, {\n\t\t\t'codepoint': 'E6DF',\n\t\t\t'id': 'multiline_chart',\n\t\t\t'keywords': ['editor', 'multiline', 'chart'],\n\t\t\t'name': 'multiline chart'\n\t\t}, {\n\t\t\t'codepoint': 'E6C4',\n\t\t\t'id': 'pie_chart',\n\t\t\t'keywords': ['editor', 'pie', 'chart'],\n\t\t\t'name': 'pie chart'\n\t\t}, {\n\t\t\t'codepoint': 'E255',\n\t\t\t'id': 'publish',\n\t\t\t'keywords': ['editor', 'publish'],\n\t\t\t'name': 'publish'\n\t\t}, {\n\t\t\t'codepoint': 'E261',\n\t\t\t'id': 'short_text',\n\t\t\t'keywords': ['editor', 'short', 'text'],\n\t\t\t'name': 'short text'\n\t\t}, {\n\t\t\t'codepoint': 'E6E1',\n\t\t\t'id': 'show_chart',\n\t\t\t'keywords': ['editor', 'show', 'chart'],\n\t\t\t'name': 'show chart'\n\t\t}, {\n\t\t\t'codepoint': 'E256',\n\t\t\t'id': 'space_bar',\n\t\t\t'keywords': ['editor', 'space', 'bar'],\n\t\t\t'name': 'space bar'\n\t\t}, {\n\t\t\t'codepoint': 'E257',\n\t\t\t'id': 'strikethrough_s',\n\t\t\t'keywords': ['editor', 'strikethrough', 's'],\n\t\t\t'name': 'strikethrough s'\n\t\t}, {\n\t\t\t'codepoint': 'E262',\n\t\t\t'id': 'text_fields',\n\t\t\t'keywords': ['editor', 'text', 'fields'],\n\t\t\t'name': 'text fields'\n\t\t}, {\n\t\t\t'codepoint': 'E264',\n\t\t\t'id': 'title',\n\t\t\t'keywords': ['editor', 'title'],\n\t\t\t'name': 'title'\n\t\t}, {\n\t\t\t'codepoint': 'E258',\n\t\t\t'id': 'vertical_align_bottom',\n\t\t\t'keywords': ['editor', 'vertical', 'align', 'bottom'],\n\t\t\t'name': 'vertical align bottom'\n\t\t}, {\n\t\t\t'codepoint': 'E259',\n\t\t\t'id': 'vertical_align_center',\n\t\t\t'keywords': ['editor', 'vertical', 'align', 'center'],\n\t\t\t'name': 'vertical align center'\n\t\t}, {\n\t\t\t'codepoint': 'E25A',\n\t\t\t'id': 'vertical_align_top',\n\t\t\t'keywords': ['editor', 'vertical', 'align', 'top'],\n\t\t\t'name': 'vertical align top'\n\t\t}, {\n\t\t\t'codepoint': 'E25B',\n\t\t\t'id': 'wrap_text',\n\t\t\t'keywords': ['editor', 'wrap', 'text'],\n\t\t\t'name': 'wrap text'\n\t\t}]\n\t}, {\n\t\t'id': 'file',\n\t\t'name': 'File',\n\t\t'icons': [{\n\t\t\t'codepoint': 'E2BC',\n\t\t\t'id': 'attachment',\n\t\t\t'keywords': ['file', 'attachment'],\n\t\t\t'name': 'attachment'\n\t\t}, {\n\t\t\t'codepoint': 'E2BD',\n\t\t\t'id': 'cloud',\n\t\t\t'keywords': ['file', 'cloud'],\n\t\t\t'name': 'cloud'\n\t\t}, {\n\t\t\t'codepoint': 'E2BE',\n\t\t\t'id': 'cloud_circle',\n\t\t\t'keywords': ['file', 'cloud', 'circle'],\n\t\t\t'name': 'cloud circle'\n\t\t}, {\n\t\t\t'codepoint': 'E2BF',\n\t\t\t'id': 'cloud_done',\n\t\t\t'keywords': ['file', 'cloud', 'done'],\n\t\t\t'name': 'cloud done'\n\t\t}, {\n\t\t\t'codepoint': 'E2C0',\n\t\t\t'id': 'cloud_download',\n\t\t\t'keywords': ['file', 'cloud', 'download'],\n\t\t\t'name': 'cloud download'\n\t\t}, {\n\t\t\t'codepoint': 'E2C1',\n\t\t\t'id': 'cloud_off',\n\t\t\t'keywords': ['file', 'cloud', 'off'],\n\t\t\t'name': 'cloud off'\n\t\t}, {\n\t\t\t'codepoint': 'E2C2',\n\t\t\t'id': 'cloud_queue',\n\t\t\t'keywords': ['file', 'cloud', 'queue'],\n\t\t\t'name': 'cloud queue'\n\t\t}, {\n\t\t\t'codepoint': 'E2C3',\n\t\t\t'id': 'cloud_upload',\n\t\t\t'keywords': ['file', 'cloud', 'upload'],\n\t\t\t'name': 'cloud upload'\n\t\t}, {\n\t\t\t'codepoint': 'E2CC',\n\t\t\t'id': 'create_new_folder',\n\t\t\t'keywords': ['file', 'create', 'new', 'folder'],\n\t\t\t'name': 'create new folder'\n\t\t}, {\n\t\t\t'codepoint': 'E2C4',\n\t\t\t'id': 'file_download',\n\t\t\t'keywords': ['file', 'file', 'download'],\n\t\t\t'name': 'file download'\n\t\t}, {\n\t\t\t'codepoint': 'E2C6',\n\t\t\t'id': 'file_upload',\n\t\t\t'keywords': ['file', 'file', 'upload'],\n\t\t\t'name': 'file upload'\n\t\t}, {\n\t\t\t'codepoint': 'E2C7',\n\t\t\t'id': 'folder',\n\t\t\t'keywords': ['file', 'folder'],\n\t\t\t'name': 'folder'\n\t\t}, {\n\t\t\t'codepoint': 'E2C8',\n\t\t\t'id': 'folder_open',\n\t\t\t'keywords': ['file', 'folder', 'open'],\n\t\t\t'name': 'folder open'\n\t\t}, {\n\t\t\t'codepoint': 'E2C9',\n\t\t\t'id': 'folder_shared',\n\t\t\t'keywords': ['file', 'folder', 'shared'],\n\t\t\t'name': 'folder shared'\n\t\t}]\n\t}, {\n\t\t'id': 'hardware',\n\t\t'name': 'Hardware',\n\t\t'icons': [{\n\t\t\t'codepoint': 'E307',\n\t\t\t'id': 'cast',\n\t\t\t'keywords': ['hardware', 'cast'],\n\t\t\t'name': 'cast'\n\t\t}, {\n\t\t\t'codepoint': 'E308',\n\t\t\t'id': 'cast_connected',\n\t\t\t'keywords': ['hardware', 'cast', 'connected'],\n\t\t\t'name': 'cast connected'\n\t\t}, {\n\t\t\t'codepoint': 'E30A',\n\t\t\t'id': 'computer',\n\t\t\t'keywords': ['hardware', 'computer'],\n\t\t\t'name': 'computer'\n\t\t}, {\n\t\t\t'codepoint': 'E30B',\n\t\t\t'id': 'desktop_mac',\n\t\t\t'keywords': ['hardware', 'desktop', 'mac'],\n\t\t\t'name': 'desktop mac'\n\t\t}, {\n\t\t\t'codepoint': 'E30C',\n\t\t\t'id': 'desktop_windows',\n\t\t\t'keywords': ['hardware', 'desktop', 'windows'],\n\t\t\t'name': 'desktop windows'\n\t\t}, {\n\t\t\t'codepoint': 'E30D',\n\t\t\t'id': 'developer_board',\n\t\t\t'keywords': ['hardware', 'developer', 'board'],\n\t\t\t'name': 'developer board'\n\t\t}, {\n\t\t\t'codepoint': 'E335',\n\t\t\t'id': 'device_hub',\n\t\t\t'keywords': ['hardware', 'device', 'hub'],\n\t\t\t'name': 'device hub'\n\t\t}, {\n\t\t\t'codepoint': 'E337',\n\t\t\t'id': 'devices_other',\n\t\t\t'keywords': ['hardware', 'devices', 'other'],\n\t\t\t'name': 'devices other'\n\t\t}, {\n\t\t\t'codepoint': 'E30E',\n\t\t\t'id': 'dock',\n\t\t\t'keywords': ['hardware', 'dock'],\n\t\t\t'name': 'dock'\n\t\t}, {\n\t\t\t'codepoint': 'E30F',\n\t\t\t'id': 'gamepad',\n\t\t\t'keywords': ['hardware', 'gamepad'],\n\t\t\t'name': 'gamepad'\n\t\t}, {\n\t\t\t'codepoint': 'E310',\n\t\t\t'id': 'headset',\n\t\t\t'keywords': ['hardware', 'headset'],\n\t\t\t'name': 'headset'\n\t\t}, {\n\t\t\t'codepoint': 'E311',\n\t\t\t'id': 'headset_mic',\n\t\t\t'keywords': ['hardware', 'headset', 'mic'],\n\t\t\t'name': 'headset mic'\n\t\t}, {\n\t\t\t'codepoint': 'E312',\n\t\t\t'id': 'keyboard',\n\t\t\t'keywords': ['hardware', 'keyboard'],\n\t\t\t'name': 'keyboard'\n\t\t}, {\n\t\t\t'codepoint': 'E313',\n\t\t\t'id': 'keyboard_arrow_down',\n\t\t\t'keywords': ['hardware', 'keyboard', 'arrow', 'down'],\n\t\t\t'name': 'keyboard arrow down'\n\t\t}, {\n\t\t\t'codepoint': 'E314',\n\t\t\t'id': 'keyboard_arrow_left',\n\t\t\t'keywords': ['hardware', 'keyboard', 'arrow', 'left'],\n\t\t\t'name': 'keyboard arrow left'\n\t\t}, {\n\t\t\t'codepoint': 'E315',\n\t\t\t'id': 'keyboard_arrow_right',\n\t\t\t'keywords': ['hardware', 'keyboard', 'arrow', 'right'],\n\t\t\t'name': 'keyboard arrow right'\n\t\t}, {\n\t\t\t'codepoint': 'E316',\n\t\t\t'id': 'keyboard_arrow_up',\n\t\t\t'keywords': ['hardware', 'keyboard', 'arrow', 'up'],\n\t\t\t'name': 'keyboard arrow up'\n\t\t}, {\n\t\t\t'codepoint': 'E317',\n\t\t\t'id': 'keyboard_backspace',\n\t\t\t'keywords': ['hardware', 'keyboard', 'backspace'],\n\t\t\t'name': 'keyboard backspace'\n\t\t}, {\n\t\t\t'codepoint': 'E318',\n\t\t\t'id': 'keyboard_capslock',\n\t\t\t'keywords': ['hardware', 'keyboard', 'capslock'],\n\t\t\t'name': 'keyboard capslock'\n\t\t}, {\n\t\t\t'codepoint': 'E31A',\n\t\t\t'id': 'keyboard_hide',\n\t\t\t'keywords': ['hardware', 'keyboard', 'hide'],\n\t\t\t'name': 'keyboard hide'\n\t\t}, {\n\t\t\t'codepoint': 'E31B',\n\t\t\t'id': 'keyboard_return',\n\t\t\t'keywords': ['hardware', 'keyboard', 'return'],\n\t\t\t'name': 'keyboard return'\n\t\t}, {\n\t\t\t'codepoint': 'E31C',\n\t\t\t'id': 'keyboard_tab',\n\t\t\t'keywords': ['hardware', 'keyboard', 'tab'],\n\t\t\t'name': 'keyboard tab'\n\t\t}, {\n\t\t\t'codepoint': 'E31D',\n\t\t\t'id': 'keyboard_voice',\n\t\t\t'keywords': ['hardware', 'keyboard', 'voice'],\n\t\t\t'name': 'keyboard voice'\n\t\t}, {\n\t\t\t'codepoint': 'E31E',\n\t\t\t'id': 'laptop',\n\t\t\t'keywords': ['hardware', 'laptop'],\n\t\t\t'name': 'laptop'\n\t\t}, {\n\t\t\t'codepoint': 'E31F',\n\t\t\t'id': 'laptop_chromebook',\n\t\t\t'keywords': ['hardware', 'laptop', 'chromebook'],\n\t\t\t'name': 'laptop chromebook'\n\t\t}, {\n\t\t\t'codepoint': 'E320',\n\t\t\t'id': 'laptop_mac',\n\t\t\t'keywords': ['hardware', 'laptop', 'mac'],\n\t\t\t'name': 'laptop mac'\n\t\t}, {\n\t\t\t'codepoint': 'E321',\n\t\t\t'id': 'laptop_windows',\n\t\t\t'keywords': ['hardware', 'laptop', 'windows'],\n\t\t\t'name': 'laptop windows'\n\t\t}, {\n\t\t\t'codepoint': 'E322',\n\t\t\t'id': 'memory',\n\t\t\t'keywords': ['hardware', 'memory'],\n\t\t\t'name': 'memory'\n\t\t}, {\n\t\t\t'codepoint': 'E323',\n\t\t\t'id': 'mouse',\n\t\t\t'keywords': ['hardware', 'mouse'],\n\t\t\t'name': 'mouse'\n\t\t}, {\n\t\t\t'codepoint': 'E324',\n\t\t\t'id': 'phone_android',\n\t\t\t'keywords': ['hardware', 'phone', 'android'],\n\t\t\t'name': 'phone android'\n\t\t}, {\n\t\t\t'codepoint': 'E325',\n\t\t\t'id': 'phone_iphone',\n\t\t\t'keywords': ['hardware', 'phone', 'iphone'],\n\t\t\t'name': 'phone iphone'\n\t\t}, {\n\t\t\t'codepoint': 'E326',\n\t\t\t'id': 'phonelink',\n\t\t\t'keywords': ['hardware', 'phonelink'],\n\t\t\t'name': 'phonelink'\n\t\t}, {\n\t\t\t'codepoint': 'E327',\n\t\t\t'id': 'phonelink_off',\n\t\t\t'keywords': ['hardware', 'phonelink', 'off'],\n\t\t\t'name': 'phonelink off'\n\t\t}, {\n\t\t\t'codepoint': 'E336',\n\t\t\t'id': 'power_input',\n\t\t\t'keywords': ['hardware', 'power', 'input'],\n\t\t\t'name': 'power input'\n\t\t}, {\n\t\t\t'codepoint': 'E328',\n\t\t\t'id': 'router',\n\t\t\t'keywords': ['hardware', 'router'],\n\t\t\t'name': 'router'\n\t\t}, {\n\t\t\t'codepoint': 'E329',\n\t\t\t'id': 'scanner',\n\t\t\t'keywords': ['hardware', 'scanner'],\n\t\t\t'name': 'scanner'\n\t\t}, {\n\t\t\t'codepoint': 'E32A',\n\t\t\t'id': 'security',\n\t\t\t'keywords': ['hardware', 'security'],\n\t\t\t'name': 'security'\n\t\t}, {\n\t\t\t'codepoint': 'E32B',\n\t\t\t'id': 'sim_card',\n\t\t\t'keywords': ['hardware', 'sim', 'card'],\n\t\t\t'name': 'sim card'\n\t\t}, {\n\t\t\t'codepoint': 'E32C',\n\t\t\t'id': 'smartphone',\n\t\t\t'keywords': ['hardware', 'smartphone'],\n\t\t\t'name': 'smartphone'\n\t\t}, {\n\t\t\t'codepoint': 'E32D',\n\t\t\t'id': 'speaker',\n\t\t\t'keywords': ['hardware', 'speaker'],\n\t\t\t'name': 'speaker'\n\t\t}, {\n\t\t\t'codepoint': 'E32E',\n\t\t\t'id': 'speaker_group',\n\t\t\t'keywords': ['hardware', 'speaker', 'group'],\n\t\t\t'name': 'speaker group'\n\t\t}, {\n\t\t\t'codepoint': 'E32F',\n\t\t\t'id': 'tablet',\n\t\t\t'keywords': ['hardware', 'tablet'],\n\t\t\t'name': 'tablet'\n\t\t}, {\n\t\t\t'codepoint': 'E330',\n\t\t\t'id': 'tablet_android',\n\t\t\t'keywords': ['hardware', 'tablet', 'android'],\n\t\t\t'name': 'tablet android'\n\t\t}, {\n\t\t\t'codepoint': 'E331',\n\t\t\t'id': 'tablet_mac',\n\t\t\t'keywords': ['hardware', 'tablet', 'mac'],\n\t\t\t'name': 'tablet mac'\n\t\t}, {\n\t\t\t'codepoint': 'E332',\n\t\t\t'id': 'toys',\n\t\t\t'keywords': ['hardware', 'toys'],\n\t\t\t'name': 'toys'\n\t\t}, {\n\t\t\t'codepoint': 'E333',\n\t\t\t'id': 'tv',\n\t\t\t'keywords': ['hardware', 'tv'],\n\t\t\t'name': 'tv'\n\t\t}, {\n\t\t\t'codepoint': 'E338',\n\t\t\t'id': 'videogame_asset',\n\t\t\t'keywords': ['hardware', 'videogame', 'asset'],\n\t\t\t'name': 'videogame asset'\n\t\t}, {\n\t\t\t'codepoint': 'E334',\n\t\t\t'id': 'watch',\n\t\t\t'keywords': ['hardware', 'watch'],\n\t\t\t'name': 'watch'\n\t\t}]\n\t}, {\n\t\t'id': 'image',\n\t\t'name': 'Image',\n\t\t'icons': [{\n\t\t\t'codepoint': 'E439',\n\t\t\t'id': 'add_a_photo',\n\t\t\t'keywords': ['image', 'add', 'a', 'photo'],\n\t\t\t'name': 'add a photo'\n\t\t}, {\n\t\t\t'codepoint': 'E39D',\n\t\t\t'id': 'add_to_photos',\n\t\t\t'keywords': ['image', 'add', 'to', 'photos'],\n\t\t\t'name': 'add to photos'\n\t\t}, {\n\t\t\t'codepoint': 'E39E',\n\t\t\t'id': 'adjust',\n\t\t\t'keywords': ['image', 'adjust'],\n\t\t\t'name': 'adjust'\n\t\t}, {\n\t\t\t'codepoint': 'E39F',\n\t\t\t'id': 'assistant',\n\t\t\t'keywords': ['image', 'assistant'],\n\t\t\t'name': 'assistant'\n\t\t}, {\n\t\t\t'codepoint': 'E3A0',\n\t\t\t'id': 'assistant_photo',\n\t\t\t'keywords': ['image', 'assistant', 'photo'],\n\t\t\t'name': 'assistant photo'\n\t\t}, {\n\t\t\t'codepoint': 'E3A1',\n\t\t\t'id': 'audiotrack',\n\t\t\t'keywords': ['image', 'audiotrack'],\n\t\t\t'name': 'audiotrack'\n\t\t}, {\n\t\t\t'codepoint': 'E3A2',\n\t\t\t'id': 'blur_circular',\n\t\t\t'keywords': ['image', 'blur', 'circular'],\n\t\t\t'name': 'blur circular'\n\t\t}, {\n\t\t\t'codepoint': 'E3A3',\n\t\t\t'id': 'blur_linear',\n\t\t\t'keywords': ['image', 'blur', 'linear'],\n\t\t\t'name': 'blur linear'\n\t\t}, {\n\t\t\t'codepoint': 'E3A4',\n\t\t\t'id': 'blur_off',\n\t\t\t'keywords': ['image', 'blur', 'off'],\n\t\t\t'name': 'blur off'\n\t\t}, {\n\t\t\t'codepoint': 'E3A5',\n\t\t\t'id': 'blur_on',\n\t\t\t'keywords': ['image', 'blur', 'on'],\n\t\t\t'name': 'blur on'\n\t\t}, {\n\t\t\t'codepoint': 'E3A6',\n\t\t\t'id': 'brightness_1',\n\t\t\t'keywords': ['image', 'brightness', '1'],\n\t\t\t'name': 'brightness 1'\n\t\t}, {\n\t\t\t'codepoint': 'E3A7',\n\t\t\t'id': 'brightness_2',\n\t\t\t'keywords': ['image', 'brightness', '2'],\n\t\t\t'name': 'brightness 2'\n\t\t}, {\n\t\t\t'codepoint': 'E3A8',\n\t\t\t'id': 'brightness_3',\n\t\t\t'keywords': ['image', 'brightness', '3'],\n\t\t\t'name': 'brightness 3'\n\t\t}, {\n\t\t\t'codepoint': 'E3A9',\n\t\t\t'id': 'brightness_4',\n\t\t\t'keywords': ['image', 'brightness', '4'],\n\t\t\t'name': 'brightness 4'\n\t\t}, {\n\t\t\t'codepoint': 'E3AA',\n\t\t\t'id': 'brightness_5',\n\t\t\t'keywords': ['image', 'brightness', '5'],\n\t\t\t'name': 'brightness 5'\n\t\t}, {\n\t\t\t'codepoint': 'E3AB',\n\t\t\t'id': 'brightness_6',\n\t\t\t'keywords': ['image', 'brightness', '6'],\n\t\t\t'name': 'brightness 6'\n\t\t}, {\n\t\t\t'codepoint': 'E3AC',\n\t\t\t'id': 'brightness_7',\n\t\t\t'keywords': ['image', 'brightness', '7'],\n\t\t\t'name': 'brightness 7'\n\t\t}, {\n\t\t\t'codepoint': 'E3AD',\n\t\t\t'id': 'broken_image',\n\t\t\t'keywords': ['image', 'broken', 'image'],\n\t\t\t'name': 'broken image'\n\t\t}, {\n\t\t\t'codepoint': 'E3AE',\n\t\t\t'id': 'brush',\n\t\t\t'keywords': ['image', 'brush'],\n\t\t\t'name': 'brush'\n\t\t}, {\n\t\t\t'codepoint': 'E43C',\n\t\t\t'id': 'burst_mode',\n\t\t\t'keywords': ['image', 'burst', 'mode'],\n\t\t\t'name': 'burst mode'\n\t\t}, {\n\t\t\t'codepoint': 'E3AF',\n\t\t\t'id': 'camera',\n\t\t\t'keywords': ['image', 'camera'],\n\t\t\t'name': 'camera'\n\t\t}, {\n\t\t\t'codepoint': 'E3B0',\n\t\t\t'id': 'camera_alt',\n\t\t\t'keywords': ['image', 'camera', 'alt'],\n\t\t\t'name': 'camera alt'\n\t\t}, {\n\t\t\t'codepoint': 'E3B1',\n\t\t\t'id': 'camera_front',\n\t\t\t'keywords': ['image', 'camera', 'front'],\n\t\t\t'name': 'camera front'\n\t\t}, {\n\t\t\t'codepoint': 'E3B2',\n\t\t\t'id': 'camera_rear',\n\t\t\t'keywords': ['image', 'camera', 'rear'],\n\t\t\t'name': 'camera rear'\n\t\t}, {\n\t\t\t'codepoint': 'E3B3',\n\t\t\t'id': 'camera_roll',\n\t\t\t'keywords': ['image', 'camera', 'roll'],\n\t\t\t'name': 'camera roll'\n\t\t}, {\n\t\t\t'codepoint': 'E3B4',\n\t\t\t'id': 'center_focus_strong',\n\t\t\t'keywords': ['image', 'center', 'focus', 'strong'],\n\t\t\t'name': 'center focus strong'\n\t\t}, {\n\t\t\t'codepoint': 'E3B5',\n\t\t\t'id': 'center_focus_weak',\n\t\t\t'keywords': ['image', 'center', 'focus', 'weak'],\n\t\t\t'name': 'center focus weak'\n\t\t}, {\n\t\t\t'codepoint': 'E3B6',\n\t\t\t'id': 'collections',\n\t\t\t'keywords': ['image', 'collections'],\n\t\t\t'name': 'collections'\n\t\t}, {\n\t\t\t'codepoint': 'E431',\n\t\t\t'id': 'collections_bookmark',\n\t\t\t'keywords': ['image', 'collections', 'bookmark'],\n\t\t\t'name': 'collections bookmark'\n\t\t}, {\n\t\t\t'codepoint': 'E3B7',\n\t\t\t'id': 'color_lens',\n\t\t\t'keywords': ['image', 'color', 'lens'],\n\t\t\t'name': 'color lens'\n\t\t}, {\n\t\t\t'codepoint': 'E3B8',\n\t\t\t'id': 'colorize',\n\t\t\t'keywords': ['image', 'colorize'],\n\t\t\t'name': 'colorize'\n\t\t}, {\n\t\t\t'codepoint': 'E3B9',\n\t\t\t'id': 'compare',\n\t\t\t'keywords': ['image', 'compare'],\n\t\t\t'name': 'compare'\n\t\t}, {\n\t\t\t'codepoint': 'E3BA',\n\t\t\t'id': 'control_point',\n\t\t\t'keywords': ['image', 'control', 'point'],\n\t\t\t'name': 'control point'\n\t\t}, {\n\t\t\t'codepoint': 'E3BB',\n\t\t\t'id': 'control_point_duplicate',\n\t\t\t'keywords': ['image', 'control', 'point', 'duplicate'],\n\t\t\t'name': 'control point duplicate'\n\t\t}, {\n\t\t\t'codepoint': 'E3BE',\n\t\t\t'id': 'crop',\n\t\t\t'keywords': ['image', 'crop'],\n\t\t\t'name': 'crop'\n\t\t}, {\n\t\t\t'codepoint': 'E3BC',\n\t\t\t'id': 'crop_16_9',\n\t\t\t'keywords': ['image', 'crop', '16', '9'],\n\t\t\t'name': 'crop 16 9'\n\t\t}, {\n\t\t\t'codepoint': 'E3BD',\n\t\t\t'id': 'crop_3_2',\n\t\t\t'keywords': ['image', 'crop', '3', '2'],\n\t\t\t'name': 'crop 3 2'\n\t\t}, {\n\t\t\t'codepoint': 'E3BF',\n\t\t\t'id': 'crop_5_4',\n\t\t\t'keywords': ['image', 'crop', '5', '4'],\n\t\t\t'name': 'crop 5 4'\n\t\t}, {\n\t\t\t'codepoint': 'E3C0',\n\t\t\t'id': 'crop_7_5',\n\t\t\t'keywords': ['image', 'crop', '7', '5'],\n\t\t\t'name': 'crop 7 5'\n\t\t}, {\n\t\t\t'codepoint': 'E3C1',\n\t\t\t'id': 'crop_din',\n\t\t\t'keywords': ['image', 'crop', 'din'],\n\t\t\t'name': 'crop din'\n\t\t}, {\n\t\t\t'codepoint': 'E3C2',\n\t\t\t'id': 'crop_free',\n\t\t\t'keywords': ['image', 'crop', 'free'],\n\t\t\t'name': 'crop free'\n\t\t}, {\n\t\t\t'codepoint': 'E3C3',\n\t\t\t'id': 'crop_landscape',\n\t\t\t'keywords': ['image', 'crop', 'landscape'],\n\t\t\t'name': 'crop landscape'\n\t\t}, {\n\t\t\t'codepoint': 'E3C4',\n\t\t\t'id': 'crop_original',\n\t\t\t'keywords': ['image', 'crop', 'original'],\n\t\t\t'name': 'crop original'\n\t\t}, {\n\t\t\t'codepoint': 'E3C5',\n\t\t\t'id': 'crop_portrait',\n\t\t\t'keywords': ['image', 'crop', 'portrait'],\n\t\t\t'name': 'crop portrait'\n\t\t}, {\n\t\t\t'codepoint': 'E437',\n\t\t\t'id': 'crop_rotate',\n\t\t\t'keywords': ['image', 'crop', 'rotate'],\n\t\t\t'name': 'crop rotate'\n\t\t}, {\n\t\t\t'codepoint': 'E3C6',\n\t\t\t'id': 'crop_square',\n\t\t\t'keywords': ['image', 'crop', 'square'],\n\t\t\t'name': 'crop square'\n\t\t}, {\n\t\t\t'codepoint': 'E3C7',\n\t\t\t'id': 'dehaze',\n\t\t\t'keywords': ['image', 'dehaze'],\n\t\t\t'name': 'dehaze'\n\t\t}, {\n\t\t\t'codepoint': 'E3C8',\n\t\t\t'id': 'details',\n\t\t\t'keywords': ['image', 'details'],\n\t\t\t'name': 'details'\n\t\t}, {\n\t\t\t'codepoint': 'E3C9',\n\t\t\t'id': 'edit',\n\t\t\t'keywords': ['image', 'edit'],\n\t\t\t'name': 'edit'\n\t\t}, {\n\t\t\t'codepoint': 'E3CA',\n\t\t\t'id': 'exposure',\n\t\t\t'keywords': ['image', 'exposure'],\n\t\t\t'name': 'exposure'\n\t\t}, {\n\t\t\t'codepoint': 'E3CB',\n\t\t\t'id': 'exposure_neg_1',\n\t\t\t'keywords': ['image', 'exposure', 'neg', '1'],\n\t\t\t'name': 'exposure neg 1'\n\t\t}, {\n\t\t\t'codepoint': 'E3CC',\n\t\t\t'id': 'exposure_neg_2',\n\t\t\t'keywords': ['image', 'exposure', 'neg', '2'],\n\t\t\t'name': 'exposure neg 2'\n\t\t}, {\n\t\t\t'codepoint': 'E3CD',\n\t\t\t'id': 'exposure_plus_1',\n\t\t\t'keywords': ['image', 'exposure', 'plus', '1'],\n\t\t\t'name': 'exposure plus 1'\n\t\t}, {\n\t\t\t'codepoint': 'E3CE',\n\t\t\t'id': 'exposure_plus_2',\n\t\t\t'keywords': ['image', 'exposure', 'plus', '2'],\n\t\t\t'name': 'exposure plus 2'\n\t\t}, {\n\t\t\t'codepoint': 'E3CF',\n\t\t\t'id': 'exposure_zero',\n\t\t\t'keywords': ['image', 'exposure', 'zero'],\n\t\t\t'name': 'exposure zero'\n\t\t}, {\n\t\t\t'codepoint': 'E3D3',\n\t\t\t'id': 'filter',\n\t\t\t'keywords': ['image', 'filter'],\n\t\t\t'name': 'filter'\n\t\t}, {\n\t\t\t'codepoint': 'E3D0',\n\t\t\t'id': 'filter_1',\n\t\t\t'keywords': ['image', 'filter', '1'],\n\t\t\t'name': 'filter 1'\n\t\t}, {\n\t\t\t'codepoint': 'E3D1',\n\t\t\t'id': 'filter_2',\n\t\t\t'keywords': ['image', 'filter', '2'],\n\t\t\t'name': 'filter 2'\n\t\t}, {\n\t\t\t'codepoint': 'E3D2',\n\t\t\t'id': 'filter_3',\n\t\t\t'keywords': ['image', 'filter', '3'],\n\t\t\t'name': 'filter 3'\n\t\t}, {\n\t\t\t'codepoint': 'E3D4',\n\t\t\t'id': 'filter_4',\n\t\t\t'keywords': ['image', 'filter', '4'],\n\t\t\t'name': 'filter 4'\n\t\t}, {\n\t\t\t'codepoint': 'E3D5',\n\t\t\t'id': 'filter_5',\n\t\t\t'keywords': ['image', 'filter', '5'],\n\t\t\t'name': 'filter 5'\n\t\t}, {\n\t\t\t'codepoint': 'E3D6',\n\t\t\t'id': 'filter_6',\n\t\t\t'keywords': ['image', 'filter', '6'],\n\t\t\t'name': 'filter 6'\n\t\t}, {\n\t\t\t'codepoint': 'E3D7',\n\t\t\t'id': 'filter_7',\n\t\t\t'keywords': ['image', 'filter', '7'],\n\t\t\t'name': 'filter 7'\n\t\t}, {\n\t\t\t'codepoint': 'E3D8',\n\t\t\t'id': 'filter_8',\n\t\t\t'keywords': ['image', 'filter', '8'],\n\t\t\t'name': 'filter 8'\n\t\t}, {\n\t\t\t'codepoint': 'E3D9',\n\t\t\t'id': 'filter_9',\n\t\t\t'keywords': ['image', 'filter', '9'],\n\t\t\t'name': 'filter 9'\n\t\t}, {\n\t\t\t'codepoint': 'E3DA',\n\t\t\t'id': 'filter_9_plus',\n\t\t\t'keywords': ['image', 'filter', '9', 'plus'],\n\t\t\t'name': 'filter 9 plus'\n\t\t}, {\n\t\t\t'codepoint': 'E3DB',\n\t\t\t'id': 'filter_b_and_w',\n\t\t\t'keywords': ['image', 'filter', 'b', 'and', 'w'],\n\t\t\t'name': 'filter b and w'\n\t\t}, {\n\t\t\t'codepoint': 'E3DC',\n\t\t\t'id': 'filter_center_focus',\n\t\t\t'keywords': ['image', 'filter', 'center', 'focus'],\n\t\t\t'name': 'filter center focus'\n\t\t}, {\n\t\t\t'codepoint': 'E3DD',\n\t\t\t'id': 'filter_drama',\n\t\t\t'keywords': ['image', 'filter', 'drama'],\n\t\t\t'name': 'filter drama'\n\t\t}, {\n\t\t\t'codepoint': 'E3DE',\n\t\t\t'id': 'filter_frames',\n\t\t\t'keywords': ['image', 'filter', 'frames'],\n\t\t\t'name': 'filter frames'\n\t\t}, {\n\t\t\t'codepoint': 'E3DF',\n\t\t\t'id': 'filter_hdr',\n\t\t\t'keywords': ['image', 'filter', 'hdr'],\n\t\t\t'name': 'filter hdr'\n\t\t}, {\n\t\t\t'codepoint': 'E3E0',\n\t\t\t'id': 'filter_none',\n\t\t\t'keywords': ['image', 'filter', 'none'],\n\t\t\t'name': 'filter none'\n\t\t}, {\n\t\t\t'codepoint': 'E3E2',\n\t\t\t'id': 'filter_tilt_shift',\n\t\t\t'keywords': ['image', 'filter', 'tilt', 'shift'],\n\t\t\t'name': 'filter tilt shift'\n\t\t}, {\n\t\t\t'codepoint': 'E3E3',\n\t\t\t'id': 'filter_vintage',\n\t\t\t'keywords': ['image', 'filter', 'vintage'],\n\t\t\t'name': 'filter vintage'\n\t\t}, {\n\t\t\t'codepoint': 'E3E4',\n\t\t\t'id': 'flare',\n\t\t\t'keywords': ['image', 'flare'],\n\t\t\t'name': 'flare'\n\t\t}, {\n\t\t\t'codepoint': 'E3E5',\n\t\t\t'id': 'flash_auto',\n\t\t\t'keywords': ['image', 'flash', 'auto'],\n\t\t\t'name': 'flash auto'\n\t\t}, {\n\t\t\t'codepoint': 'E3E6',\n\t\t\t'id': 'flash_off',\n\t\t\t'keywords': ['image', 'flash', 'off'],\n\t\t\t'name': 'flash off'\n\t\t}, {\n\t\t\t'codepoint': 'E3E7',\n\t\t\t'id': 'flash_on',\n\t\t\t'keywords': ['image', 'flash', 'on'],\n\t\t\t'name': 'flash on'\n\t\t}, {\n\t\t\t'codepoint': 'E3E8',\n\t\t\t'id': 'flip',\n\t\t\t'keywords': ['image', 'flip'],\n\t\t\t'name': 'flip'\n\t\t}, {\n\t\t\t'codepoint': 'E3E9',\n\t\t\t'id': 'gradient',\n\t\t\t'keywords': ['image', 'gradient'],\n\t\t\t'name': 'gradient'\n\t\t}, {\n\t\t\t'codepoint': 'E3EA',\n\t\t\t'id': 'grain',\n\t\t\t'keywords': ['image', 'grain'],\n\t\t\t'name': 'grain'\n\t\t}, {\n\t\t\t'codepoint': 'E3EB',\n\t\t\t'id': 'grid_off',\n\t\t\t'keywords': ['image', 'grid', 'off'],\n\t\t\t'name': 'grid off'\n\t\t}, {\n\t\t\t'codepoint': 'E3EC',\n\t\t\t'id': 'grid_on',\n\t\t\t'keywords': ['image', 'grid', 'on'],\n\t\t\t'name': 'grid on'\n\t\t}, {\n\t\t\t'codepoint': 'E3ED',\n\t\t\t'id': 'hdr_off',\n\t\t\t'keywords': ['image', 'hdr', 'off'],\n\t\t\t'name': 'hdr off'\n\t\t}, {\n\t\t\t'codepoint': 'E3EE',\n\t\t\t'id': 'hdr_on',\n\t\t\t'keywords': ['image', 'hdr', 'on'],\n\t\t\t'name': 'hdr on'\n\t\t}, {\n\t\t\t'codepoint': 'E3F1',\n\t\t\t'id': 'hdr_strong',\n\t\t\t'keywords': ['image', 'hdr', 'strong'],\n\t\t\t'name': 'hdr strong'\n\t\t}, {\n\t\t\t'codepoint': 'E3F2',\n\t\t\t'id': 'hdr_weak',\n\t\t\t'keywords': ['image', 'hdr', 'weak'],\n\t\t\t'name': 'hdr weak'\n\t\t}, {\n\t\t\t'codepoint': 'E3F3',\n\t\t\t'id': 'healing',\n\t\t\t'keywords': ['image', 'healing'],\n\t\t\t'name': 'healing'\n\t\t}, {\n\t\t\t'codepoint': 'E3F4',\n\t\t\t'id': 'image',\n\t\t\t'keywords': ['image', 'image'],\n\t\t\t'name': 'image'\n\t\t}, {\n\t\t\t'codepoint': 'E3F5',\n\t\t\t'id': 'image_aspect_ratio',\n\t\t\t'keywords': ['image', 'image', 'aspect', 'ratio'],\n\t\t\t'name': 'image aspect ratio'\n\t\t}, {\n\t\t\t'codepoint': 'E3F6',\n\t\t\t'id': 'iso',\n\t\t\t'keywords': ['image', 'iso'],\n\t\t\t'name': 'iso'\n\t\t}, {\n\t\t\t'codepoint': 'E3F7',\n\t\t\t'id': 'landscape',\n\t\t\t'keywords': ['image', 'landscape'],\n\t\t\t'name': 'landscape'\n\t\t}, {\n\t\t\t'codepoint': 'E3F8',\n\t\t\t'id': 'leak_add',\n\t\t\t'keywords': ['image', 'leak', 'add'],\n\t\t\t'name': 'leak add'\n\t\t}, {\n\t\t\t'codepoint': 'E3F9',\n\t\t\t'id': 'leak_remove',\n\t\t\t'keywords': ['image', 'leak', 'remove'],\n\t\t\t'name': 'leak remove'\n\t\t}, {\n\t\t\t'codepoint': 'E3FA',\n\t\t\t'id': 'lens',\n\t\t\t'keywords': ['image', 'lens'],\n\t\t\t'name': 'lens'\n\t\t}, {\n\t\t\t'codepoint': 'E438',\n\t\t\t'id': 'linked_camera',\n\t\t\t'keywords': ['image', 'linked', 'camera'],\n\t\t\t'name': 'linked camera'\n\t\t}, {\n\t\t\t'codepoint': 'E3FC',\n\t\t\t'id': 'looks',\n\t\t\t'keywords': ['image', 'looks'],\n\t\t\t'name': 'looks'\n\t\t}, {\n\t\t\t'codepoint': 'E3FB',\n\t\t\t'id': 'looks_3',\n\t\t\t'keywords': ['image', 'looks', '3'],\n\t\t\t'name': 'looks 3'\n\t\t}, {\n\t\t\t'codepoint': 'E3FD',\n\t\t\t'id': 'looks_4',\n\t\t\t'keywords': ['image', 'looks', '4'],\n\t\t\t'name': 'looks 4'\n\t\t}, {\n\t\t\t'codepoint': 'E3FE',\n\t\t\t'id': 'looks_5',\n\t\t\t'keywords': ['image', 'looks', '5'],\n\t\t\t'name': 'looks 5'\n\t\t}, {\n\t\t\t'codepoint': 'E3FF',\n\t\t\t'id': 'looks_6',\n\t\t\t'keywords': ['image', 'looks', '6'],\n\t\t\t'name': 'looks 6'\n\t\t}, {\n\t\t\t'codepoint': 'E400',\n\t\t\t'id': 'looks_one',\n\t\t\t'keywords': ['image', 'looks', 'one'],\n\t\t\t'name': 'looks one'\n\t\t}, {\n\t\t\t'codepoint': 'E401',\n\t\t\t'id': 'looks_two',\n\t\t\t'keywords': ['image', 'looks', 'two'],\n\t\t\t'name': 'looks two'\n\t\t}, {\n\t\t\t'codepoint': 'E402',\n\t\t\t'id': 'loupe',\n\t\t\t'keywords': ['image', 'loupe'],\n\t\t\t'name': 'loupe'\n\t\t}, {\n\t\t\t'codepoint': 'E403',\n\t\t\t'id': 'monochrome_photos',\n\t\t\t'keywords': ['image', 'monochrome', 'photos'],\n\t\t\t'name': 'monochrome photos'\n\t\t}, {\n\t\t\t'codepoint': 'E404',\n\t\t\t'id': 'movie_creation',\n\t\t\t'keywords': ['image', 'movie', 'creation'],\n\t\t\t'name': 'movie creation'\n\t\t}, {\n\t\t\t'codepoint': 'E43A',\n\t\t\t'id': 'movie_filter',\n\t\t\t'keywords': ['image', 'movie', 'filter'],\n\t\t\t'name': 'movie filter'\n\t\t}, {\n\t\t\t'codepoint': 'E405',\n\t\t\t'id': 'music_note',\n\t\t\t'keywords': ['image', 'music', 'note'],\n\t\t\t'name': 'music note'\n\t\t}, {\n\t\t\t'codepoint': 'E406',\n\t\t\t'id': 'nature',\n\t\t\t'keywords': ['image', 'nature'],\n\t\t\t'name': 'nature'\n\t\t}, {\n\t\t\t'codepoint': 'E407',\n\t\t\t'id': 'nature_people',\n\t\t\t'keywords': ['image', 'nature', 'people'],\n\t\t\t'name': 'nature people'\n\t\t}, {\n\t\t\t'codepoint': 'E408',\n\t\t\t'id': 'navigate_before',\n\t\t\t'keywords': ['image', 'navigate', 'before'],\n\t\t\t'name': 'navigate before'\n\t\t}, {\n\t\t\t'codepoint': 'E409',\n\t\t\t'id': 'navigate_next',\n\t\t\t'keywords': ['image', 'navigate', 'next'],\n\t\t\t'name': 'navigate next'\n\t\t}, {\n\t\t\t'codepoint': 'E40A',\n\t\t\t'id': 'palette',\n\t\t\t'keywords': ['image', 'palette'],\n\t\t\t'name': 'palette'\n\t\t}, {\n\t\t\t'codepoint': 'E40B',\n\t\t\t'id': 'panorama',\n\t\t\t'keywords': ['image', 'panorama'],\n\t\t\t'name': 'panorama'\n\t\t}, {\n\t\t\t'codepoint': 'E40C',\n\t\t\t'id': 'panorama_fish_eye',\n\t\t\t'keywords': ['image', 'panorama', 'fish', 'eye'],\n\t\t\t'name': 'panorama fish eye'\n\t\t}, {\n\t\t\t'codepoint': 'E40D',\n\t\t\t'id': 'panorama_horizontal',\n\t\t\t'keywords': ['image', 'panorama', 'horizontal'],\n\t\t\t'name': 'panorama horizontal'\n\t\t}, {\n\t\t\t'codepoint': 'E40E',\n\t\t\t'id': 'panorama_vertical',\n\t\t\t'keywords': ['image', 'panorama', 'vertical'],\n\t\t\t'name': 'panorama vertical'\n\t\t}, {\n\t\t\t'codepoint': 'E40F',\n\t\t\t'id': 'panorama_wide_angle',\n\t\t\t'keywords': ['image', 'panorama', 'wide', 'angle'],\n\t\t\t'name': 'panorama wide angle'\n\t\t}, {\n\t\t\t'codepoint': 'E410',\n\t\t\t'id': 'photo',\n\t\t\t'keywords': ['image', 'photo'],\n\t\t\t'name': 'photo'\n\t\t}, {\n\t\t\t'codepoint': 'E411',\n\t\t\t'id': 'photo_album',\n\t\t\t'keywords': ['image', 'photo', 'album'],\n\t\t\t'name': 'photo album'\n\t\t}, {\n\t\t\t'codepoint': 'E412',\n\t\t\t'id': 'photo_camera',\n\t\t\t'keywords': ['image', 'photo', 'camera'],\n\t\t\t'name': 'photo camera'\n\t\t}, {\n\t\t\t'codepoint': 'E43B',\n\t\t\t'id': 'photo_filter',\n\t\t\t'keywords': ['image', 'photo', 'filter'],\n\t\t\t'name': 'photo filter'\n\t\t}, {\n\t\t\t'codepoint': 'E413',\n\t\t\t'id': 'photo_library',\n\t\t\t'keywords': ['image', 'photo', 'library'],\n\t\t\t'name': 'photo library'\n\t\t}, {\n\t\t\t'codepoint': 'E432',\n\t\t\t'id': 'photo_size_select_actual',\n\t\t\t'keywords': ['image', 'photo', 'size', 'select', 'actual'],\n\t\t\t'name': 'photo size select actual'\n\t\t}, {\n\t\t\t'codepoint': 'E433',\n\t\t\t'id': 'photo_size_select_large',\n\t\t\t'keywords': ['image', 'photo', 'size', 'select', 'large'],\n\t\t\t'name': 'photo size select large'\n\t\t}, {\n\t\t\t'codepoint': 'E434',\n\t\t\t'id': 'photo_size_select_small',\n\t\t\t'keywords': ['image', 'photo', 'size', 'select', 'small'],\n\t\t\t'name': 'photo size select small'\n\t\t}, {\n\t\t\t'codepoint': 'E415',\n\t\t\t'id': 'picture_as_pdf',\n\t\t\t'keywords': ['image', 'picture', 'as', 'pdf'],\n\t\t\t'name': 'picture as pdf'\n\t\t}, {\n\t\t\t'codepoint': 'E416',\n\t\t\t'id': 'portrait',\n\t\t\t'keywords': ['image', 'portrait'],\n\t\t\t'name': 'portrait'\n\t\t}, {\n\t\t\t'codepoint': 'E417',\n\t\t\t'id': 'remove_red_eye',\n\t\t\t'keywords': ['image', 'remove', 'red', 'eye'],\n\t\t\t'name': 'remove red eye'\n\t\t}, {\n\t\t\t'codepoint': 'E418',\n\t\t\t'id': 'rotate_90_degrees_ccw',\n\t\t\t'keywords': ['image', 'rotate', '90', 'degrees', 'ccw'],\n\t\t\t'name': 'rotate 90 degrees ccw'\n\t\t}, {\n\t\t\t'codepoint': 'E419',\n\t\t\t'id': 'rotate_left',\n\t\t\t'keywords': ['image', 'rotate', 'left'],\n\t\t\t'name': 'rotate left'\n\t\t}, {\n\t\t\t'codepoint': 'E41A',\n\t\t\t'id': 'rotate_right',\n\t\t\t'keywords': ['image', 'rotate', 'right'],\n\t\t\t'name': 'rotate right'\n\t\t}, {\n\t\t\t'codepoint': 'E41B',\n\t\t\t'id': 'slideshow',\n\t\t\t'keywords': ['image', 'slideshow'],\n\t\t\t'name': 'slideshow'\n\t\t}, {\n\t\t\t'codepoint': 'E41C',\n\t\t\t'id': 'straighten',\n\t\t\t'keywords': ['image', 'straighten'],\n\t\t\t'name': 'straighten'\n\t\t}, {\n\t\t\t'codepoint': 'E41D',\n\t\t\t'id': 'style',\n\t\t\t'keywords': ['image', 'style'],\n\t\t\t'name': 'style'\n\t\t}, {\n\t\t\t'codepoint': 'E41E',\n\t\t\t'id': 'switch_camera',\n\t\t\t'keywords': ['image', 'switch', 'camera'],\n\t\t\t'name': 'switch camera'\n\t\t}, {\n\t\t\t'codepoint': 'E41F',\n\t\t\t'id': 'switch_video',\n\t\t\t'keywords': ['image', 'switch', 'video'],\n\t\t\t'name': 'switch video'\n\t\t}, {\n\t\t\t'codepoint': 'E420',\n\t\t\t'id': 'tag_faces',\n\t\t\t'keywords': ['image', 'tag', 'faces'],\n\t\t\t'name': 'tag faces'\n\t\t}, {\n\t\t\t'codepoint': 'E421',\n\t\t\t'id': 'texture',\n\t\t\t'keywords': ['image', 'texture'],\n\t\t\t'name': 'texture'\n\t\t}, {\n\t\t\t'codepoint': 'E422',\n\t\t\t'id': 'timelapse',\n\t\t\t'keywords': ['image', 'timelapse'],\n\t\t\t'name': 'timelapse'\n\t\t}, {\n\t\t\t'codepoint': 'E425',\n\t\t\t'id': 'timer',\n\t\t\t'keywords': ['image', 'timer'],\n\t\t\t'name': 'timer'\n\t\t}, {\n\t\t\t'codepoint': 'E423',\n\t\t\t'id': 'timer_10',\n\t\t\t'keywords': ['image', 'timer', '10'],\n\t\t\t'name': 'timer 10'\n\t\t}, {\n\t\t\t'codepoint': 'E424',\n\t\t\t'id': 'timer_3',\n\t\t\t'keywords': ['image', 'timer', '3'],\n\t\t\t'name': 'timer 3'\n\t\t}, {\n\t\t\t'codepoint': 'E426',\n\t\t\t'id': 'timer_off',\n\t\t\t'keywords': ['image', 'timer', 'off'],\n\t\t\t'name': 'timer off'\n\t\t}, {\n\t\t\t'codepoint': 'E427',\n\t\t\t'id': 'tonality',\n\t\t\t'keywords': ['image', 'tonality'],\n\t\t\t'name': 'tonality'\n\t\t}, {\n\t\t\t'codepoint': 'E428',\n\t\t\t'id': 'transform',\n\t\t\t'keywords': ['image', 'transform'],\n\t\t\t'name': 'transform'\n\t\t}, {\n\t\t\t'codepoint': 'E429',\n\t\t\t'id': 'tune',\n\t\t\t'keywords': ['image', 'tune'],\n\t\t\t'name': 'tune'\n\t\t}, {\n\t\t\t'codepoint': 'E42A',\n\t\t\t'id': 'view_comfy',\n\t\t\t'keywords': ['image', 'view', 'comfy'],\n\t\t\t'name': 'view comfy'\n\t\t}, {\n\t\t\t'codepoint': 'E42B',\n\t\t\t'id': 'view_compact',\n\t\t\t'keywords': ['image', 'view', 'compact'],\n\t\t\t'name': 'view compact'\n\t\t}, {\n\t\t\t'codepoint': 'E435',\n\t\t\t'id': 'vignette',\n\t\t\t'keywords': ['image', 'vignette'],\n\t\t\t'name': 'vignette'\n\t\t}, {\n\t\t\t'codepoint': 'E42C',\n\t\t\t'id': 'wb_auto',\n\t\t\t'keywords': ['image', 'wb', 'auto'],\n\t\t\t'name': 'wb auto'\n\t\t}, {\n\t\t\t'codepoint': 'E42D',\n\t\t\t'id': 'wb_cloudy',\n\t\t\t'keywords': ['image', 'wb', 'cloudy'],\n\t\t\t'name': 'wb cloudy'\n\t\t}, {\n\t\t\t'codepoint': 'E42E',\n\t\t\t'id': 'wb_incandescent',\n\t\t\t'keywords': ['image', 'wb', 'incandescent'],\n\t\t\t'name': 'wb incandescent'\n\t\t}, {\n\t\t\t'codepoint': 'E436',\n\t\t\t'id': 'wb_iridescent',\n\t\t\t'keywords': ['image', 'wb', 'iridescent'],\n\t\t\t'name': 'wb iridescent'\n\t\t}, {\n\t\t\t'codepoint': 'E430',\n\t\t\t'id': 'wb_sunny',\n\t\t\t'keywords': ['image', 'wb', 'sunny'],\n\t\t\t'name': 'wb sunny'\n\t\t}]\n\t}, {\n\t\t'id': 'maps',\n\t\t'name': 'Maps',\n\t\t'icons': [{\n\t\t\t'codepoint': 'E567',\n\t\t\t'id': 'add_location',\n\t\t\t'keywords': ['maps', 'add', 'location'],\n\t\t\t'name': 'add location'\n\t\t}, {\n\t\t\t'codepoint': 'E52D',\n\t\t\t'id': 'beenhere',\n\t\t\t'keywords': ['maps', 'beenhere'],\n\t\t\t'name': 'beenhere'\n\t\t}, {\n\t\t\t'codepoint': 'E52E',\n\t\t\t'id': 'directions',\n\t\t\t'keywords': ['maps', 'directions'],\n\t\t\t'name': 'directions'\n\t\t}, {\n\t\t\t'codepoint': 'E52F',\n\t\t\t'id': 'directions_bike',\n\t\t\t'keywords': ['maps', 'directions', 'bike'],\n\t\t\t'name': 'directions bike'\n\t\t}, {\n\t\t\t'codepoint': 'E532',\n\t\t\t'id': 'directions_boat',\n\t\t\t'keywords': ['maps', 'directions', 'boat'],\n\t\t\t'name': 'directions boat'\n\t\t}, {\n\t\t\t'codepoint': 'E530',\n\t\t\t'id': 'directions_bus',\n\t\t\t'keywords': ['maps', 'directions', 'bus'],\n\t\t\t'name': 'directions bus'\n\t\t}, {\n\t\t\t'codepoint': 'E531',\n\t\t\t'id': 'directions_car',\n\t\t\t'keywords': ['maps', 'directions', 'car'],\n\t\t\t'name': 'directions car'\n\t\t}, {\n\t\t\t'codepoint': 'E534',\n\t\t\t'id': 'directions_railway',\n\t\t\t'keywords': ['maps', 'directions', 'railway'],\n\t\t\t'name': 'directions railway'\n\t\t}, {\n\t\t\t'codepoint': 'E566',\n\t\t\t'id': 'directions_run',\n\t\t\t'keywords': ['maps', 'directions', 'run'],\n\t\t\t'name': 'directions run'\n\t\t}, {\n\t\t\t'codepoint': 'E533',\n\t\t\t'id': 'directions_subway',\n\t\t\t'keywords': ['maps', 'directions', 'subway'],\n\t\t\t'name': 'directions subway'\n\t\t}, {\n\t\t\t'codepoint': 'E535',\n\t\t\t'id': 'directions_transit',\n\t\t\t'keywords': ['maps', 'directions', 'transit'],\n\t\t\t'name': 'directions transit'\n\t\t}, {\n\t\t\t'codepoint': 'E536',\n\t\t\t'id': 'directions_walk',\n\t\t\t'keywords': ['maps', 'directions', 'walk'],\n\t\t\t'name': 'directions walk'\n\t\t}, {\n\t\t\t'codepoint': 'E568',\n\t\t\t'id': 'edit_location',\n\t\t\t'keywords': ['maps', 'edit', 'location'],\n\t\t\t'name': 'edit location'\n\t\t}, {\n\t\t\t'codepoint': 'E56D',\n\t\t\t'id': 'ev_station',\n\t\t\t'keywords': ['maps', 'ev', 'station'],\n\t\t\t'name': 'ev station'\n\t\t}, {\n\t\t\t'codepoint': 'E539',\n\t\t\t'id': 'flight',\n\t\t\t'keywords': ['maps', 'flight'],\n\t\t\t'name': 'flight'\n\t\t}, {\n\t\t\t'codepoint': 'E53A',\n\t\t\t'id': 'hotel',\n\t\t\t'keywords': ['maps', 'hotel'],\n\t\t\t'name': 'hotel'\n\t\t}, {\n\t\t\t'codepoint': 'E53B',\n\t\t\t'id': 'layers',\n\t\t\t'keywords': ['maps', 'layers'],\n\t\t\t'name': 'layers'\n\t\t}, {\n\t\t\t'codepoint': 'E53C',\n\t\t\t'id': 'layers_clear',\n\t\t\t'keywords': ['maps', 'layers', 'clear'],\n\t\t\t'name': 'layers clear'\n\t\t}, {\n\t\t\t'codepoint': 'E53F',\n\t\t\t'id': 'local_activity',\n\t\t\t'keywords': ['maps', 'local', 'activity'],\n\t\t\t'name': 'local activity'\n\t\t}, {\n\t\t\t'codepoint': 'E53D',\n\t\t\t'id': 'local_airport',\n\t\t\t'keywords': ['maps', 'local', 'airport'],\n\t\t\t'name': 'local airport'\n\t\t}, {\n\t\t\t'codepoint': 'E53E',\n\t\t\t'id': 'local_atm',\n\t\t\t'keywords': ['maps', 'local', 'atm'],\n\t\t\t'name': 'local atm'\n\t\t}, {\n\t\t\t'codepoint': 'E540',\n\t\t\t'id': 'local_bar',\n\t\t\t'keywords': ['maps', 'local', 'bar'],\n\t\t\t'name': 'local bar'\n\t\t}, {\n\t\t\t'codepoint': 'E541',\n\t\t\t'id': 'local_cafe',\n\t\t\t'keywords': ['maps', 'local', 'cafe'],\n\t\t\t'name': 'local cafe'\n\t\t}, {\n\t\t\t'codepoint': 'E542',\n\t\t\t'id': 'local_car_wash',\n\t\t\t'keywords': ['maps', 'local', 'car', 'wash'],\n\t\t\t'name': 'local car wash'\n\t\t}, {\n\t\t\t'codepoint': 'E543',\n\t\t\t'id': 'local_convenience_store',\n\t\t\t'keywords': ['maps', 'local', 'convenience', 'store'],\n\t\t\t'name': 'local convenience store'\n\t\t}, {\n\t\t\t'codepoint': 'E556',\n\t\t\t'id': 'local_dining',\n\t\t\t'keywords': ['maps', 'local', 'dining'],\n\t\t\t'name': 'local dining'\n\t\t}, {\n\t\t\t'codepoint': 'E544',\n\t\t\t'id': 'local_drink',\n\t\t\t'keywords': ['maps', 'local', 'drink'],\n\t\t\t'name': 'local drink'\n\t\t}, {\n\t\t\t'codepoint': 'E545',\n\t\t\t'id': 'local_florist',\n\t\t\t'keywords': ['maps', 'local', 'florist'],\n\t\t\t'name': 'local florist'\n\t\t}, {\n\t\t\t'codepoint': 'E546',\n\t\t\t'id': 'local_gas_station',\n\t\t\t'keywords': ['maps', 'local', 'gas', 'station'],\n\t\t\t'name': 'local gas station'\n\t\t}, {\n\t\t\t'codepoint': 'E547',\n\t\t\t'id': 'local_grocery_store',\n\t\t\t'keywords': ['maps', 'local', 'grocery', 'store'],\n\t\t\t'name': 'local grocery store'\n\t\t}, {\n\t\t\t'codepoint': 'E548',\n\t\t\t'id': 'local_hospital',\n\t\t\t'keywords': ['maps', 'local', 'hospital'],\n\t\t\t'name': 'local hospital'\n\t\t}, {\n\t\t\t'codepoint': 'E549',\n\t\t\t'id': 'local_hotel',\n\t\t\t'keywords': ['maps', 'local', 'hotel'],\n\t\t\t'name': 'local hotel'\n\t\t}, {\n\t\t\t'codepoint': 'E54A',\n\t\t\t'id': 'local_laundry_service',\n\t\t\t'keywords': ['maps', 'local', 'laundry', 'service'],\n\t\t\t'name': 'local laundry service'\n\t\t}, {\n\t\t\t'codepoint': 'E54B',\n\t\t\t'id': 'local_library',\n\t\t\t'keywords': ['maps', 'local', 'library'],\n\t\t\t'name': 'local library'\n\t\t}, {\n\t\t\t'codepoint': 'E54C',\n\t\t\t'id': 'local_mall',\n\t\t\t'keywords': ['maps', 'local', 'mall'],\n\t\t\t'name': 'local mall'\n\t\t}, {\n\t\t\t'codepoint': 'E54D',\n\t\t\t'id': 'local_movies',\n\t\t\t'keywords': ['maps', 'local', 'movies'],\n\t\t\t'name': 'local movies'\n\t\t}, {\n\t\t\t'codepoint': 'E54E',\n\t\t\t'id': 'local_offer',\n\t\t\t'keywords': ['maps', 'local', 'offer'],\n\t\t\t'name': 'local offer'\n\t\t}, {\n\t\t\t'codepoint': 'E54F',\n\t\t\t'id': 'local_parking',\n\t\t\t'keywords': ['maps', 'local', 'parking'],\n\t\t\t'name': 'local parking'\n\t\t}, {\n\t\t\t'codepoint': 'E550',\n\t\t\t'id': 'local_pharmacy',\n\t\t\t'keywords': ['maps', 'local', 'pharmacy'],\n\t\t\t'name': 'local pharmacy'\n\t\t}, {\n\t\t\t'codepoint': 'E551',\n\t\t\t'id': 'local_phone',\n\t\t\t'keywords': ['maps', 'local', 'phone'],\n\t\t\t'name': 'local phone'\n\t\t}, {\n\t\t\t'codepoint': 'E552',\n\t\t\t'id': 'local_pizza',\n\t\t\t'keywords': ['maps', 'local', 'pizza'],\n\t\t\t'name': 'local pizza'\n\t\t}, {\n\t\t\t'codepoint': 'E553',\n\t\t\t'id': 'local_play',\n\t\t\t'keywords': ['maps', 'local', 'play'],\n\t\t\t'name': 'local play'\n\t\t}, {\n\t\t\t'codepoint': 'E554',\n\t\t\t'id': 'local_post_office',\n\t\t\t'keywords': ['maps', 'local', 'post', 'office'],\n\t\t\t'name': 'local post office'\n\t\t}, {\n\t\t\t'codepoint': 'E555',\n\t\t\t'id': 'local_printshop',\n\t\t\t'keywords': ['maps', 'local', 'printshop'],\n\t\t\t'name': 'local printshop'\n\t\t}, {\n\t\t\t'codepoint': 'E557',\n\t\t\t'id': 'local_see',\n\t\t\t'keywords': ['maps', 'local', 'see'],\n\t\t\t'name': 'local see'\n\t\t}, {\n\t\t\t'codepoint': 'E558',\n\t\t\t'id': 'local_shipping',\n\t\t\t'keywords': ['maps', 'local', 'shipping'],\n\t\t\t'name': 'local shipping'\n\t\t}, {\n\t\t\t'codepoint': 'E559',\n\t\t\t'id': 'local_taxi',\n\t\t\t'keywords': ['maps', 'local', 'taxi'],\n\t\t\t'name': 'local taxi'\n\t\t}, {\n\t\t\t'codepoint': 'E55B',\n\t\t\t'id': 'map',\n\t\t\t'keywords': ['maps', 'map'],\n\t\t\t'name': 'map'\n\t\t}, {\n\t\t\t'codepoint': 'E55C',\n\t\t\t'id': 'my_location',\n\t\t\t'keywords': ['maps', 'my', 'location'],\n\t\t\t'name': 'my location'\n\t\t}, {\n\t\t\t'codepoint': 'E55D',\n\t\t\t'id': 'navigation',\n\t\t\t'keywords': ['maps', 'navigation'],\n\t\t\t'name': 'navigation'\n\t\t}, {\n\t\t\t'codepoint': 'E569',\n\t\t\t'id': 'near_me',\n\t\t\t'keywords': ['maps', 'near', 'me'],\n\t\t\t'name': 'near me'\n\t\t}, {\n\t\t\t'codepoint': 'E55A',\n\t\t\t'id': 'person_pin',\n\t\t\t'keywords': ['maps', 'person', 'pin'],\n\t\t\t'name': 'person pin'\n\t\t}, {\n\t\t\t'codepoint': 'E56A',\n\t\t\t'id': 'person_pin_circle',\n\t\t\t'keywords': ['maps', 'person', 'pin', 'circle'],\n\t\t\t'name': 'person pin circle'\n\t\t}, {\n\t\t\t'codepoint': 'E55E',\n\t\t\t'id': 'pin_drop',\n\t\t\t'keywords': ['maps', 'pin', 'drop'],\n\t\t\t'name': 'pin drop'\n\t\t}, {\n\t\t\t'codepoint': 'E55F',\n\t\t\t'id': 'place',\n\t\t\t'keywords': ['maps', 'place'],\n\t\t\t'name': 'place'\n\t\t}, {\n\t\t\t'codepoint': 'E560',\n\t\t\t'id': 'rate_review',\n\t\t\t'keywords': ['maps', 'rate', 'review'],\n\t\t\t'name': 'rate review'\n\t\t}, {\n\t\t\t'codepoint': 'E56C',\n\t\t\t'id': 'restaurant',\n\t\t\t'keywords': ['maps', 'restaurant'],\n\t\t\t'name': 'restaurant'\n\t\t}, {\n\t\t\t'codepoint': 'E561',\n\t\t\t'id': 'restaurant_menu',\n\t\t\t'keywords': ['maps', 'restaurant', 'menu'],\n\t\t\t'name': 'restaurant menu'\n\t\t}, {\n\t\t\t'codepoint': 'E562',\n\t\t\t'id': 'satellite',\n\t\t\t'keywords': ['maps', 'satellite'],\n\t\t\t'name': 'satellite'\n\t\t}, {\n\t\t\t'codepoint': 'E563',\n\t\t\t'id': 'store_mall_directory',\n\t\t\t'keywords': ['maps', 'store', 'mall', 'directory'],\n\t\t\t'name': 'store mall directory'\n\t\t}, {\n\t\t\t'codepoint': 'E56E',\n\t\t\t'id': 'streetview',\n\t\t\t'keywords': ['maps', 'streetview'],\n\t\t\t'name': 'streetview'\n\t\t}, {\n\t\t\t'codepoint': 'E56F',\n\t\t\t'id': 'subway',\n\t\t\t'keywords': ['maps', 'subway'],\n\t\t\t'name': 'subway'\n\t\t}, {\n\t\t\t'codepoint': 'E564',\n\t\t\t'id': 'terrain',\n\t\t\t'keywords': ['maps', 'terrain'],\n\t\t\t'name': 'terrain'\n\t\t}, {\n\t\t\t'codepoint': 'E565',\n\t\t\t'id': 'traffic',\n\t\t\t'keywords': ['maps', 'traffic'],\n\t\t\t'name': 'traffic'\n\t\t}, {\n\t\t\t'codepoint': 'E570',\n\t\t\t'id': 'train',\n\t\t\t'keywords': ['maps', 'train'],\n\t\t\t'name': 'train'\n\t\t}, {\n\t\t\t'codepoint': 'E571',\n\t\t\t'id': 'tram',\n\t\t\t'keywords': ['maps', 'tram'],\n\t\t\t'name': 'tram'\n\t\t}, {\n\t\t\t'codepoint': 'E572',\n\t\t\t'id': 'transfer_within_a_station',\n\t\t\t'keywords': ['maps', 'transfer', 'within', 'a', 'station'],\n\t\t\t'name': 'transfer within a station'\n\t\t}, {\n\t\t\t'codepoint': 'E56B',\n\t\t\t'id': 'zoom_out_map',\n\t\t\t'keywords': ['maps', 'zoom', 'out', 'map'],\n\t\t\t'name': 'zoom out map'\n\t\t}]\n\t}, {\n\t\t'id': 'navigation',\n\t\t'name': 'Navigation',\n\t\t'icons': [{\n\t\t\t'codepoint': 'E5C3',\n\t\t\t'id': 'apps',\n\t\t\t'keywords': ['navigation', 'apps'],\n\t\t\t'name': 'apps'\n\t\t}, {\n\t\t\t'codepoint': 'E5C4',\n\t\t\t'id': 'arrow_back',\n\t\t\t'keywords': ['navigation', 'arrow', 'back'],\n\t\t\t'name': 'arrow back'\n\t\t}, {\n\t\t\t'codepoint': 'E5DB',\n\t\t\t'id': 'arrow_downward',\n\t\t\t'keywords': ['navigation', 'arrow', 'downward'],\n\t\t\t'name': 'arrow downward'\n\t\t}, {\n\t\t\t'codepoint': 'E5C5',\n\t\t\t'id': 'arrow_drop_down',\n\t\t\t'keywords': ['navigation', 'arrow', 'drop', 'down'],\n\t\t\t'name': 'arrow drop down'\n\t\t}, {\n\t\t\t'codepoint': 'E5C6',\n\t\t\t'id': 'arrow_drop_down_circle',\n\t\t\t'keywords': ['navigation', 'arrow', 'drop', 'down', 'circle'],\n\t\t\t'name': 'arrow drop down circle'\n\t\t}, {\n\t\t\t'codepoint': 'E5C7',\n\t\t\t'id': 'arrow_drop_up',\n\t\t\t'keywords': ['navigation', 'arrow', 'drop', 'up'],\n\t\t\t'name': 'arrow drop up'\n\t\t}, {\n\t\t\t'codepoint': 'E5C8',\n\t\t\t'id': 'arrow_forward',\n\t\t\t'keywords': ['navigation', 'arrow', 'forward'],\n\t\t\t'name': 'arrow forward'\n\t\t}, {\n\t\t\t'codepoint': 'E5D8',\n\t\t\t'id': 'arrow_upward',\n\t\t\t'keywords': ['navigation', 'arrow', 'upward'],\n\t\t\t'name': 'arrow upward'\n\t\t}, {\n\t\t\t'codepoint': 'E5C9',\n\t\t\t'id': 'cancel',\n\t\t\t'keywords': ['navigation', 'cancel'],\n\t\t\t'name': 'cancel'\n\t\t}, {\n\t\t\t'codepoint': 'E5CA',\n\t\t\t'id': 'check',\n\t\t\t'keywords': ['navigation', 'check'],\n\t\t\t'name': 'check'\n\t\t}, {\n\t\t\t'codepoint': 'E5CB',\n\t\t\t'id': 'chevron_left',\n\t\t\t'keywords': ['navigation', 'chevron', 'left'],\n\t\t\t'name': 'chevron left'\n\t\t}, {\n\t\t\t'codepoint': 'E5CC',\n\t\t\t'id': 'chevron_right',\n\t\t\t'keywords': ['navigation', 'chevron', 'right'],\n\t\t\t'name': 'chevron right'\n\t\t}, {\n\t\t\t'codepoint': 'E5CD',\n\t\t\t'id': 'close',\n\t\t\t'keywords': ['navigation', 'close'],\n\t\t\t'name': 'close'\n\t\t}, {\n\t\t\t'codepoint': 'E5CE',\n\t\t\t'id': 'expand_less',\n\t\t\t'keywords': ['navigation', 'expand', 'less'],\n\t\t\t'name': 'expand less'\n\t\t}, {\n\t\t\t'codepoint': 'E5CF',\n\t\t\t'id': 'expand_more',\n\t\t\t'keywords': ['navigation', 'expand', 'more'],\n\t\t\t'name': 'expand more'\n\t\t}, {\n\t\t\t'codepoint': 'E5DC',\n\t\t\t'id': 'first_page',\n\t\t\t'keywords': ['navigation', 'first', 'page'],\n\t\t\t'name': 'first page'\n\t\t}, {\n\t\t\t'codepoint': 'E5D0',\n\t\t\t'id': 'fullscreen',\n\t\t\t'keywords': ['navigation', 'fullscreen'],\n\t\t\t'name': 'fullscreen'\n\t\t}, {\n\t\t\t'codepoint': 'E5D1',\n\t\t\t'id': 'fullscreen_exit',\n\t\t\t'keywords': ['navigation', 'fullscreen', 'exit'],\n\t\t\t'name': 'fullscreen exit'\n\t\t}, {\n\t\t\t'codepoint': 'E5DD',\n\t\t\t'id': 'last_page',\n\t\t\t'keywords': ['navigation', 'last', 'page'],\n\t\t\t'name': 'last page'\n\t\t}, {\n\t\t\t'codepoint': 'E5D2',\n\t\t\t'id': 'menu',\n\t\t\t'keywords': ['navigation', 'menu'],\n\t\t\t'name': 'menu'\n\t\t}, {\n\t\t\t'codepoint': 'E5D3',\n\t\t\t'id': 'more_horiz',\n\t\t\t'keywords': ['navigation', 'more', 'horiz'],\n\t\t\t'name': 'more horiz'\n\t\t}, {\n\t\t\t'codepoint': 'E5D4',\n\t\t\t'id': 'more_vert',\n\t\t\t'keywords': ['navigation', 'more', 'vert'],\n\t\t\t'name': 'more vert'\n\t\t}, {\n\t\t\t'codepoint': 'E5D5',\n\t\t\t'id': 'refresh',\n\t\t\t'keywords': ['navigation', 'refresh'],\n\t\t\t'name': 'refresh'\n\t\t}, {\n\t\t\t'codepoint': 'E5D9',\n\t\t\t'id': 'subdirectory_arrow_left',\n\t\t\t'keywords': ['navigation', 'subdirectory', 'arrow', 'left'],\n\t\t\t'name': 'subdirectory arrow left'\n\t\t}, {\n\t\t\t'codepoint': 'E5DA',\n\t\t\t'id': 'subdirectory_arrow_right',\n\t\t\t'keywords': ['navigation', 'subdirectory', 'arrow', 'right'],\n\t\t\t'name': 'subdirectory arrow right'\n\t\t}, {\n\t\t\t'codepoint': 'E5D6',\n\t\t\t'id': 'unfold_less',\n\t\t\t'keywords': ['navigation', 'unfold', 'less'],\n\t\t\t'name': 'unfold less'\n\t\t}, {\n\t\t\t'codepoint': 'E5D7',\n\t\t\t'id': 'unfold_more',\n\t\t\t'keywords': ['navigation', 'unfold', 'more'],\n\t\t\t'name': 'unfold more'\n\t\t}]\n\t}, {\n\t\t'id': 'notification',\n\t\t'name': 'Notification',\n\t\t'icons': [{\n\t\t\t'codepoint': 'E60E',\n\t\t\t'id': 'adb',\n\t\t\t'keywords': ['notification', 'adb'],\n\t\t\t'name': 'adb'\n\t\t}, {\n\t\t\t'codepoint': 'E630',\n\t\t\t'id': 'airline_seat_flat',\n\t\t\t'keywords': ['notification', 'airline', 'seat', 'flat'],\n\t\t\t'name': 'airline seat flat'\n\t\t}, {\n\t\t\t'codepoint': 'E631',\n\t\t\t'id': 'airline_seat_flat_angled',\n\t\t\t'keywords': ['notification', 'airline', 'seat', 'flat', 'angled'],\n\t\t\t'name': 'airline seat flat angled'\n\t\t}, {\n\t\t\t'codepoint': 'E632',\n\t\t\t'id': 'airline_seat_individual_suite',\n\t\t\t'keywords': ['notification', 'airline', 'seat', 'individual', 'suite'],\n\t\t\t'name': 'airline seat individual suite'\n\t\t}, {\n\t\t\t'codepoint': 'E633',\n\t\t\t'id': 'airline_seat_legroom_extra',\n\t\t\t'keywords': ['notification', 'airline', 'seat', 'legroom', 'extra'],\n\t\t\t'name': 'airline seat legroom extra'\n\t\t}, {\n\t\t\t'codepoint': 'E634',\n\t\t\t'id': 'airline_seat_legroom_normal',\n\t\t\t'keywords': ['notification', 'airline', 'seat', 'legroom', 'normal'],\n\t\t\t'name': 'airline seat legroom normal'\n\t\t}, {\n\t\t\t'codepoint': 'E635',\n\t\t\t'id': 'airline_seat_legroom_reduced',\n\t\t\t'keywords': ['notification', 'airline', 'seat', 'legroom', 'reduced'],\n\t\t\t'name': 'airline seat legroom reduced'\n\t\t}, {\n\t\t\t'codepoint': 'E636',\n\t\t\t'id': 'airline_seat_recline_extra',\n\t\t\t'keywords': ['notification', 'airline', 'seat', 'recline', 'extra'],\n\t\t\t'name': 'airline seat recline extra'\n\t\t}, {\n\t\t\t'codepoint': 'E637',\n\t\t\t'id': 'airline_seat_recline_normal',\n\t\t\t'keywords': ['notification', 'airline', 'seat', 'recline', 'normal'],\n\t\t\t'name': 'airline seat recline normal'\n\t\t}, {\n\t\t\t'codepoint': 'E60F',\n\t\t\t'id': 'bluetooth_audio',\n\t\t\t'keywords': ['notification', 'bluetooth', 'audio'],\n\t\t\t'name': 'bluetooth audio'\n\t\t}, {\n\t\t\t'codepoint': 'E638',\n\t\t\t'id': 'confirmation_number',\n\t\t\t'keywords': ['notification', 'confirmation', 'number'],\n\t\t\t'name': 'confirmation number'\n\t\t}, {\n\t\t\t'codepoint': 'E610',\n\t\t\t'id': 'disc_full',\n\t\t\t'keywords': ['notification', 'disc', 'full'],\n\t\t\t'name': 'disc full'\n\t\t}, {\n\t\t\t'codepoint': 'E613',\n\t\t\t'id': 'drive_eta',\n\t\t\t'keywords': ['notification', 'drive', 'eta'],\n\t\t\t'name': 'drive eta'\n\t\t}, {\n\t\t\t'codepoint': 'E63F',\n\t\t\t'id': 'enhanced_encryption',\n\t\t\t'keywords': ['notification', 'enhanced', 'encryption'],\n\t\t\t'name': 'enhanced encryption'\n\t\t}, {\n\t\t\t'codepoint': 'E614',\n\t\t\t'id': 'event_available',\n\t\t\t'keywords': ['notification', 'event', 'available'],\n\t\t\t'name': 'event available'\n\t\t}, {\n\t\t\t'codepoint': 'E615',\n\t\t\t'id': 'event_busy',\n\t\t\t'keywords': ['notification', 'event', 'busy'],\n\t\t\t'name': 'event busy'\n\t\t}, {\n\t\t\t'codepoint': 'E616',\n\t\t\t'id': 'event_note',\n\t\t\t'keywords': ['notification', 'event', 'note'],\n\t\t\t'name': 'event note'\n\t\t}, {\n\t\t\t'codepoint': 'E617',\n\t\t\t'id': 'folder_special',\n\t\t\t'keywords': ['notification', 'folder', 'special'],\n\t\t\t'name': 'folder special'\n\t\t}, {\n\t\t\t'codepoint': 'E639',\n\t\t\t'id': 'live_tv',\n\t\t\t'keywords': ['notification', 'live', 'tv'],\n\t\t\t'name': 'live tv'\n\t\t}, {\n\t\t\t'codepoint': 'E618',\n\t\t\t'id': 'mms',\n\t\t\t'keywords': ['notification', 'mms'],\n\t\t\t'name': 'mms'\n\t\t}, {\n\t\t\t'codepoint': 'E619',\n\t\t\t'id': 'more',\n\t\t\t'keywords': ['notification', 'more'],\n\t\t\t'name': 'more'\n\t\t}, {\n\t\t\t'codepoint': 'E640',\n\t\t\t'id': 'network_check',\n\t\t\t'keywords': ['notification', 'network', 'check'],\n\t\t\t'name': 'network check'\n\t\t}, {\n\t\t\t'codepoint': 'E61A',\n\t\t\t'id': 'network_locked',\n\t\t\t'keywords': ['notification', 'network', 'locked'],\n\t\t\t'name': 'network locked'\n\t\t}, {\n\t\t\t'codepoint': 'E641',\n\t\t\t'id': 'no_encryption',\n\t\t\t'keywords': ['notification', 'no', 'encryption'],\n\t\t\t'name': 'no encryption'\n\t\t}, {\n\t\t\t'codepoint': 'E63A',\n\t\t\t'id': 'ondemand_video',\n\t\t\t'keywords': ['notification', 'ondemand', 'video'],\n\t\t\t'name': 'ondemand video'\n\t\t}, {\n\t\t\t'codepoint': 'E63B',\n\t\t\t'id': 'personal_video',\n\t\t\t'keywords': ['notification', 'personal', 'video'],\n\t\t\t'name': 'personal video'\n\t\t}, {\n\t\t\t'codepoint': 'E61B',\n\t\t\t'id': 'phone_bluetooth_speaker',\n\t\t\t'keywords': ['notification', 'phone', 'bluetooth', 'speaker'],\n\t\t\t'name': 'phone bluetooth speaker'\n\t\t}, {\n\t\t\t'codepoint': 'E61C',\n\t\t\t'id': 'phone_forwarded',\n\t\t\t'keywords': ['notification', 'phone', 'forwarded'],\n\t\t\t'name': 'phone forwarded'\n\t\t}, {\n\t\t\t'codepoint': 'E61D',\n\t\t\t'id': 'phone_in_talk',\n\t\t\t'keywords': ['notification', 'phone', 'in', 'talk'],\n\t\t\t'name': 'phone in talk'\n\t\t}, {\n\t\t\t'codepoint': 'E61E',\n\t\t\t'id': 'phone_locked',\n\t\t\t'keywords': ['notification', 'phone', 'locked'],\n\t\t\t'name': 'phone locked'\n\t\t}, {\n\t\t\t'codepoint': 'E61F',\n\t\t\t'id': 'phone_missed',\n\t\t\t'keywords': ['notification', 'phone', 'missed'],\n\t\t\t'name': 'phone missed'\n\t\t}, {\n\t\t\t'codepoint': 'E620',\n\t\t\t'id': 'phone_paused',\n\t\t\t'keywords': ['notification', 'phone', 'paused'],\n\t\t\t'name': 'phone paused'\n\t\t}, {\n\t\t\t'codepoint': 'E63C',\n\t\t\t'id': 'power',\n\t\t\t'keywords': ['notification', 'power'],\n\t\t\t'name': 'power'\n\t\t}, {\n\t\t\t'codepoint': 'E645',\n\t\t\t'id': 'priority_high',\n\t\t\t'keywords': ['notification', 'priority', 'high'],\n\t\t\t'name': 'priority high'\n\t\t}, {\n\t\t\t'codepoint': 'E623',\n\t\t\t'id': 'sd_card',\n\t\t\t'keywords': ['notification', 'sd', 'card'],\n\t\t\t'name': 'sd card'\n\t\t}, {\n\t\t\t'codepoint': 'E624',\n\t\t\t'id': 'sim_card_alert',\n\t\t\t'keywords': ['notification', 'sim', 'card', 'alert'],\n\t\t\t'name': 'sim card alert'\n\t\t}, {\n\t\t\t'codepoint': 'E625',\n\t\t\t'id': 'sms',\n\t\t\t'keywords': ['notification', 'sms'],\n\t\t\t'name': 'sms'\n\t\t}, {\n\t\t\t'codepoint': 'E626',\n\t\t\t'id': 'sms_failed',\n\t\t\t'keywords': ['notification', 'sms', 'failed'],\n\t\t\t'name': 'sms failed'\n\t\t}, {\n\t\t\t'codepoint': 'E627',\n\t\t\t'id': 'sync',\n\t\t\t'keywords': ['notification', 'sync'],\n\t\t\t'name': 'sync'\n\t\t}, {\n\t\t\t'codepoint': 'E628',\n\t\t\t'id': 'sync_disabled',\n\t\t\t'keywords': ['notification', 'sync', 'disabled'],\n\t\t\t'name': 'sync disabled'\n\t\t}, {\n\t\t\t'codepoint': 'E629',\n\t\t\t'id': 'sync_problem',\n\t\t\t'keywords': ['notification', 'sync', 'problem'],\n\t\t\t'name': 'sync problem'\n\t\t}, {\n\t\t\t'codepoint': 'E62A',\n\t\t\t'id': 'system_update',\n\t\t\t'keywords': ['notification', 'system', 'update'],\n\t\t\t'name': 'system update'\n\t\t}, {\n\t\t\t'codepoint': 'E62B',\n\t\t\t'id': 'tap_and_play',\n\t\t\t'keywords': ['notification', 'tap', 'and', 'play'],\n\t\t\t'name': 'tap and play'\n\t\t}, {\n\t\t\t'codepoint': 'E62C',\n\t\t\t'id': 'time_to_leave',\n\t\t\t'keywords': ['notification', 'time', 'to', 'leave'],\n\t\t\t'name': 'time to leave'\n\t\t}, {\n\t\t\t'codepoint': 'E62D',\n\t\t\t'id': 'vibration',\n\t\t\t'keywords': ['notification', 'vibration'],\n\t\t\t'name': 'vibration'\n\t\t}, {\n\t\t\t'codepoint': 'E62E',\n\t\t\t'id': 'voice_chat',\n\t\t\t'keywords': ['notification', 'voice', 'chat'],\n\t\t\t'name': 'voice chat'\n\t\t}, {\n\t\t\t'codepoint': 'E62F',\n\t\t\t'id': 'vpn_lock',\n\t\t\t'keywords': ['notification', 'vpn', 'lock'],\n\t\t\t'name': 'vpn lock'\n\t\t}, {\n\t\t\t'codepoint': 'E63D',\n\t\t\t'id': 'wc',\n\t\t\t'keywords': ['notification', 'wc'],\n\t\t\t'name': 'wc'\n\t\t}, {\n\t\t\t'codepoint': 'E63E',\n\t\t\t'id': 'wifi',\n\t\t\t'keywords': ['notification', 'wifi'],\n\t\t\t'name': 'wifi'\n\t\t}]\n\t}, {\n\t\t'id': 'places',\n\t\t'name': 'Places',\n\t\t'icons': [{\n\t\t\t'codepoint': 'EB3B',\n\t\t\t'id': 'ac_unit',\n\t\t\t'keywords': ['places', 'ac', 'unit'],\n\t\t\t'name': 'ac unit'\n\t\t}, {\n\t\t\t'codepoint': 'EB3C',\n\t\t\t'id': 'airport_shuttle',\n\t\t\t'keywords': ['places', 'airport', 'shuttle'],\n\t\t\t'name': 'airport shuttle'\n\t\t}, {\n\t\t\t'codepoint': 'EB3D',\n\t\t\t'id': 'all_inclusive',\n\t\t\t'keywords': ['places', 'all', 'inclusive'],\n\t\t\t'name': 'all inclusive'\n\t\t}, {\n\t\t\t'codepoint': 'EB3E',\n\t\t\t'id': 'beach_access',\n\t\t\t'keywords': ['places', 'beach', 'access'],\n\t\t\t'name': 'beach access'\n\t\t}, {\n\t\t\t'codepoint': 'EB3F',\n\t\t\t'id': 'business_center',\n\t\t\t'keywords': ['places', 'business', 'center'],\n\t\t\t'name': 'business center'\n\t\t}, {\n\t\t\t'codepoint': 'EB40',\n\t\t\t'id': 'casino',\n\t\t\t'keywords': ['places', 'casino'],\n\t\t\t'name': 'casino'\n\t\t}, {\n\t\t\t'codepoint': 'EB41',\n\t\t\t'id': 'child_care',\n\t\t\t'keywords': ['places', 'child', 'care'],\n\t\t\t'name': 'child care'\n\t\t}, {\n\t\t\t'codepoint': 'EB42',\n\t\t\t'id': 'child_friendly',\n\t\t\t'keywords': ['places', 'child', 'friendly'],\n\t\t\t'name': 'child friendly'\n\t\t}, {\n\t\t\t'codepoint': 'EB43',\n\t\t\t'id': 'fitness_center',\n\t\t\t'keywords': ['places', 'fitness', 'center'],\n\t\t\t'name': 'fitness center'\n\t\t}, {\n\t\t\t'codepoint': 'EB44',\n\t\t\t'id': 'free_breakfast',\n\t\t\t'keywords': ['places', 'free', 'breakfast'],\n\t\t\t'name': 'free breakfast'\n\t\t}, {\n\t\t\t'codepoint': 'EB45',\n\t\t\t'id': 'golf_course',\n\t\t\t'keywords': ['places', 'golf', 'course'],\n\t\t\t'name': 'golf course'\n\t\t}, {\n\t\t\t'codepoint': 'EB46',\n\t\t\t'id': 'hot_tub',\n\t\t\t'keywords': ['places', 'hot', 'tub'],\n\t\t\t'name': 'hot tub'\n\t\t}, {\n\t\t\t'codepoint': 'EB47',\n\t\t\t'id': 'kitchen',\n\t\t\t'keywords': ['places', 'kitchen'],\n\t\t\t'name': 'kitchen'\n\t\t}, {\n\t\t\t'codepoint': 'EB48',\n\t\t\t'id': 'pool',\n\t\t\t'keywords': ['places', 'pool'],\n\t\t\t'name': 'pool'\n\t\t}, {\n\t\t\t'codepoint': 'EB49',\n\t\t\t'id': 'room_service',\n\t\t\t'keywords': ['places', 'room', 'service'],\n\t\t\t'name': 'room service'\n\t\t}, {\n\t\t\t'codepoint': 'E642',\n\t\t\t'id': 'rv_hookup',\n\t\t\t'keywords': ['places', 'rv', 'hookup'],\n\t\t\t'name': 'rv hookup'\n\t\t}, {\n\t\t\t'codepoint': 'EB4A',\n\t\t\t'id': 'smoke_free',\n\t\t\t'keywords': ['places', 'smoke', 'free'],\n\t\t\t'name': 'smoke free'\n\t\t}, {\n\t\t\t'codepoint': 'EB4B',\n\t\t\t'id': 'smoking_rooms',\n\t\t\t'keywords': ['places', 'smoking', 'rooms'],\n\t\t\t'name': 'smoking rooms'\n\t\t}, {\n\t\t\t'codepoint': 'EB4C',\n\t\t\t'id': 'spa',\n\t\t\t'keywords': ['places', 'spa'],\n\t\t\t'name': 'spa'\n\t\t}]\n\t}, {\n\t\t'id': 'social',\n\t\t'name': 'Social',\n\t\t'icons': [{\n\t\t\t'codepoint': 'E7E9',\n\t\t\t'id': 'cake',\n\t\t\t'keywords': ['social', 'cake'],\n\t\t\t'name': 'cake'\n\t\t}, {\n\t\t\t'codepoint': 'E7EE',\n\t\t\t'id': 'domain',\n\t\t\t'keywords': ['social', 'domain'],\n\t\t\t'name': 'domain'\n\t\t}, {\n\t\t\t'codepoint': 'E7EF',\n\t\t\t'id': 'group',\n\t\t\t'keywords': ['social', 'group'],\n\t\t\t'name': 'group'\n\t\t}, {\n\t\t\t'codepoint': 'E7F0',\n\t\t\t'id': 'group_add',\n\t\t\t'keywords': ['social', 'group', 'add'],\n\t\t\t'name': 'group add'\n\t\t}, {\n\t\t\t'codepoint': 'E7F1',\n\t\t\t'id': 'location_city',\n\t\t\t'keywords': ['social', 'location', 'city'],\n\t\t\t'name': 'location city'\n\t\t}, {\n\t\t\t'codepoint': 'E7F2',\n\t\t\t'id': 'mood',\n\t\t\t'keywords': ['social', 'mood'],\n\t\t\t'name': 'mood'\n\t\t}, {\n\t\t\t'codepoint': 'E7F3',\n\t\t\t'id': 'mood_bad',\n\t\t\t'keywords': ['social', 'mood', 'bad'],\n\t\t\t'name': 'mood bad'\n\t\t}, {\n\t\t\t'codepoint': 'E7F4',\n\t\t\t'id': 'notifications',\n\t\t\t'keywords': ['social', 'notifications'],\n\t\t\t'name': 'notifications'\n\t\t}, {\n\t\t\t'codepoint': 'E7F7',\n\t\t\t'id': 'notifications_active',\n\t\t\t'keywords': ['social', 'notifications', 'active'],\n\t\t\t'name': 'notifications active'\n\t\t}, {\n\t\t\t'codepoint': 'E7F5',\n\t\t\t'id': 'notifications_none',\n\t\t\t'keywords': ['social', 'notifications', 'none'],\n\t\t\t'name': 'notifications none'\n\t\t}, {\n\t\t\t'codepoint': 'E7F6',\n\t\t\t'id': 'notifications_off',\n\t\t\t'keywords': ['social', 'notifications', 'off'],\n\t\t\t'name': 'notifications off'\n\t\t}, {\n\t\t\t'codepoint': 'E7F8',\n\t\t\t'id': 'notifications_paused',\n\t\t\t'keywords': ['social', 'notifications', 'paused'],\n\t\t\t'name': 'notifications paused'\n\t\t}, {\n\t\t\t'codepoint': 'E7F9',\n\t\t\t'id': 'pages',\n\t\t\t'keywords': ['social', 'pages'],\n\t\t\t'name': 'pages'\n\t\t}, {\n\t\t\t'codepoint': 'E7FA',\n\t\t\t'id': 'party_mode',\n\t\t\t'keywords': ['social', 'party', 'mode'],\n\t\t\t'name': 'party mode'\n\t\t}, {\n\t\t\t'codepoint': 'E7FB',\n\t\t\t'id': 'people',\n\t\t\t'keywords': ['social', 'people'],\n\t\t\t'name': 'people'\n\t\t}, {\n\t\t\t'codepoint': 'E7FC',\n\t\t\t'id': 'people_outline',\n\t\t\t'keywords': ['social', 'people', 'outline'],\n\t\t\t'name': 'people outline'\n\t\t}, {\n\t\t\t'codepoint': 'E7FD',\n\t\t\t'id': 'person',\n\t\t\t'keywords': ['social', 'person'],\n\t\t\t'name': 'person'\n\t\t}, {\n\t\t\t'codepoint': 'E7FE',\n\t\t\t'id': 'person_add',\n\t\t\t'keywords': ['social', 'person', 'add'],\n\t\t\t'name': 'person add'\n\t\t}, {\n\t\t\t'codepoint': 'E7FF',\n\t\t\t'id': 'person_outline',\n\t\t\t'keywords': ['social', 'person', 'outline'],\n\t\t\t'name': 'person outline'\n\t\t}, {\n\t\t\t'codepoint': 'E800',\n\t\t\t'id': 'plus_one',\n\t\t\t'keywords': ['social', 'plus', 'one'],\n\t\t\t'name': 'plus one'\n\t\t}, {\n\t\t\t'codepoint': 'E801',\n\t\t\t'id': 'poll',\n\t\t\t'keywords': ['social', 'poll'],\n\t\t\t'name': 'poll'\n\t\t}, {\n\t\t\t'codepoint': 'E80B',\n\t\t\t'id': 'public',\n\t\t\t'keywords': ['social', 'public'],\n\t\t\t'name': 'public'\n\t\t}, {\n\t\t\t'codepoint': 'E80C',\n\t\t\t'id': 'school',\n\t\t\t'keywords': ['social', 'school'],\n\t\t\t'name': 'school'\n\t\t}, {\n\t\t\t'codepoint': 'E811',\n\t\t\t'id': 'sentiment_dissatisfied',\n\t\t\t'keywords': ['social', 'sentiment', 'dissatisfied'],\n\t\t\t'name': 'sentiment dissatisfied'\n\t\t}, {\n\t\t\t'codepoint': 'E813',\n\t\t\t'id': 'sentiment_satisfied',\n\t\t\t'keywords': ['social', 'sentiment', 'satisfied'],\n\t\t\t'name': 'sentiment satisfied'\n\t\t}, {\n\t\t\t'codepoint': 'E814',\n\t\t\t'id': 'sentiment_very_dissatisfied',\n\t\t\t'keywords': ['social', 'sentiment', 'very', 'dissatisfied'],\n\t\t\t'name': 'sentiment very dissatisfied'\n\t\t}, {\n\t\t\t'codepoint': 'E815',\n\t\t\t'id': 'sentiment_very_satisfied',\n\t\t\t'keywords': ['social', 'sentiment', 'very', 'satisfied'],\n\t\t\t'name': 'sentiment very satisfied'\n\t\t}, {\n\t\t\t'codepoint': 'E80D',\n\t\t\t'id': 'share',\n\t\t\t'keywords': ['social', 'share'],\n\t\t\t'name': 'share'\n\t\t}, {\n\t\t\t'codepoint': 'E80E',\n\t\t\t'id': 'whatshot',\n\t\t\t'keywords': ['social', 'whatshot'],\n\t\t\t'name': 'whatshot'\n\t\t}]\n\t}, {\n\t\t'id': 'toggle',\n\t\t'name': 'Toggle',\n\t\t'icons': [{\n\t\t\t'codepoint': 'E834',\n\t\t\t'id': 'check_box',\n\t\t\t'keywords': ['toggle', 'check', 'box'],\n\t\t\t'name': 'check box'\n\t\t}, {\n\t\t\t'codepoint': 'E835',\n\t\t\t'id': 'check_box_outline_blank',\n\t\t\t'keywords': ['toggle', 'check', 'box', 'outline', 'blank'],\n\t\t\t'name': 'check box outline blank'\n\t\t}, {\n\t\t\t'codepoint': 'E909',\n\t\t\t'id': 'indeterminate_check_box',\n\t\t\t'keywords': ['toggle', 'indeterminate', 'check', 'box'],\n\t\t\t'name': 'indeterminate check box'\n\t\t}, {\n\t\t\t'codepoint': 'E837',\n\t\t\t'id': 'radio_button_checked',\n\t\t\t'keywords': ['toggle', 'radio', 'button', 'checked'],\n\t\t\t'name': 'radio button checked'\n\t\t}, {\n\t\t\t'codepoint': 'E836',\n\t\t\t'id': 'radio_button_unchecked',\n\t\t\t'keywords': ['toggle', 'radio', 'button', 'unchecked'],\n\t\t\t'name': 'radio button unchecked'\n\t\t}, {\n\t\t\t'codepoint': 'E838',\n\t\t\t'id': 'star',\n\t\t\t'keywords': ['toggle', 'star'],\n\t\t\t'name': 'star'\n\t\t}, {\n\t\t\t'codepoint': 'E83A',\n\t\t\t'id': 'star_border',\n\t\t\t'keywords': ['toggle', 'star', 'border'],\n\t\t\t'name': 'star border'\n\t\t}, {\n\t\t\t'codepoint': 'E839',\n\t\t\t'id': 'star_half',\n\t\t\t'keywords': ['toggle', 'star', 'half'],\n\t\t\t'name': 'star half'\n\t\t}]\n\t},\n\n\t{\n\t\t'id': 'additional',\n\t\t'name': 'Additional',\n\t\t'icons': [\n\t\t\t{\n\t\t\t\t'codepoint': 'E930',\n\t\t\t\t'id': 'administration',\n\t\t\t\t'keywords': ['administration'],\n\t\t\t\t'name': 'administration'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E931',\n\t\t\t\t'id': 'assets',\n\t\t\t\t'keywords': ['assets'],\n\t\t\t\t'name': 'assets'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E932',\n\t\t\t\t'id': 'contract',\n\t\t\t\t'keywords': ['contract'],\n\t\t\t\t'name': 'contract'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E933',\n\t\t\t\t'id': 'licenses',\n\t\t\t\t'keywords': ['licenses'],\n\t\t\t\t'name': 'licenses'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E934',\n\t\t\t\t'id': 'master_data',\n\t\t\t\t'keywords': ['master data'],\n\t\t\t\t'name': 'master data'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E935',\n\t\t\t\t'id': 'queue_management',\n\t\t\t\t'keywords': ['queue management'],\n\t\t\t\t'name': 'queue management'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E936',\n\t\t\t\t'id': 'self_service_portal',\n\t\t\t\t'keywords': ['self service portal'],\n\t\t\t\t'name': 'self service portal'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E937',\n\t\t\t\t'id': 'catalog',\n\t\t\t\t'keywords': ['catalog'],\n\t\t\t\t'name': 'catalog'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E941',\n\t\t\t\t'id': 'checkerboard',\n\t\t\t\t'keywords': ['checkerboard'],\n\t\t\t\t'name': 'checkerboard'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E942',\n\t\t\t\t'id': 'chevron_double_down',\n\t\t\t\t'keywords': ['chevron double down'],\n\t\t\t\t'name': 'chevron double down'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E943',\n\t\t\t\t'id': 'column_chart',\n\t\t\t\t'keywords': ['column_chart'],\n\t\t\t\t'name': 'column_chart'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E944',\n\t\t\t\t'id': 'copy_square',\n\t\t\t\t'keywords': ['copy square'],\n\t\t\t\t'name': 'copy square'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E945',\n\t\t\t\t'id': 'create_announce',\n\t\t\t\t'keywords': ['create announce'],\n\t\t\t\t'name': 'create announce'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E946',\n\t\t\t\t'id': 'create_service',\n\t\t\t\t'keywords': ['create service'],\n\t\t\t\t'name': 'create service'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E947',\n\t\t\t\t'id': 'create_service_bundle',\n\t\t\t\t'keywords': ['create service bundle'],\n\t\t\t\t'name': 'create service bundle'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E948',\n\t\t\t\t'id': 'create_service_group',\n\t\t\t\t'keywords': ['create service group'],\n\t\t\t\t'name': 'create service group'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E949',\n\t\t\t\t'id': 'create_service_set',\n\t\t\t\t'keywords': ['create service set'],\n\t\t\t\t'name': 'create service set'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E950',\n\t\t\t\t'id': 'database',\n\t\t\t\t'keywords': ['database'],\n\t\t\t\t'name': 'database'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E951',\n\t\t\t\t'id': 'device_chrome',\n\t\t\t\t'keywords': ['device chrome'],\n\t\t\t\t'name': 'device chrome'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E952',\n\t\t\t\t'id': 'device_safari',\n\t\t\t\t'keywords': ['device safari'],\n\t\t\t\t'name': 'device safari'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E953',\n\t\t\t\t'id': 'enterprise_favorite',\n\t\t\t\t'keywords': ['enterprise favorite'],\n\t\t\t\t'name': 'enterprise favorite'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E954',\n\t\t\t\t'id': 'extension_gallery',\n\t\t\t\t'keywords': ['extension gallery'],\n\t\t\t\t'name': 'extension gallery'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E955',\n\t\t\t\t'id': 'file_document',\n\t\t\t\t'keywords': ['file document'],\n\t\t\t\t'name': 'file document'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E956',\n\t\t\t\t'id': 'file_pdf',\n\t\t\t\t'keywords': ['file pdf'],\n\t\t\t\t'name': 'file pdf'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E958',\n\t\t\t\t'id': 'ghost',\n\t\t\t\t'keywords': ['ghost'],\n\t\t\t\t'name': 'ghost'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E959',\n\t\t\t\t'id': 'incident',\n\t\t\t\t'keywords': ['incident'],\n\t\t\t\t'name': 'incident'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E961',\n\t\t\t\t'id': 'newspaper',\n\t\t\t\t'keywords': ['newspaper'],\n\t\t\t\t'name': 'newspaper'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E962',\n\t\t\t\t'id': 'new_action',\n\t\t\t\t'keywords': ['new action'],\n\t\t\t\t'name': 'new action'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E963',\n\t\t\t\t'id': 'new_application',\n\t\t\t\t'keywords': ['new application'],\n\t\t\t\t'name': 'new application'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E964',\n\t\t\t\t'id': 'new_incident',\n\t\t\t\t'keywords': ['new incident'],\n\t\t\t\t'name': 'new incident'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E965',\n\t\t\t\t'id': 'numeric',\n\t\t\t\t'keywords': ['numeric'],\n\t\t\t\t'name': 'numeric'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E966',\n\t\t\t\t'id': 'order_new_service',\n\t\t\t\t'keywords': ['order new service'],\n\t\t\t\t'name': 'order new service'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E967',\n\t\t\t\t'id': 'pin',\n\t\t\t\t'keywords': ['pin'],\n\t\t\t\t'name': 'pin'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E968',\n\t\t\t\t'id': 'report_incident',\n\t\t\t\t'keywords': ['report incident'],\n\t\t\t\t'name': 'report incident'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E969',\n\t\t\t\t'id': 'search_drop_down',\n\t\t\t\t'keywords': ['search drop down'],\n\t\t\t\t'name': 'search drop down'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E970',\n\t\t\t\t'id': 'search_kb',\n\t\t\t\t'keywords': ['search kb'],\n\t\t\t\t'name': 'search kb'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E971',\n\t\t\t\t'id': 'service',\n\t\t\t\t'keywords': ['service'],\n\t\t\t\t'name': 'service'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E972',\n\t\t\t\t'id': 'service_bundle',\n\t\t\t\t'keywords': ['service bundle'],\n\t\t\t\t'name': 'service bundle'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E973',\n\t\t\t\t'id': 'service_group',\n\t\t\t\t'keywords': ['service group'],\n\t\t\t\t'name': 'service group'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E974',\n\t\t\t\t'id': 'service_set',\n\t\t\t\t'keywords': ['service set'],\n\t\t\t\t'name': 'service set'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E975',\n\t\t\t\t'id': 'sort_asc',\n\t\t\t\t'keywords': ['sort asc'],\n\t\t\t\t'name': 'sort asc'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E976',\n\t\t\t\t'id': 'sort_desc',\n\t\t\t\t'keywords': ['sort desc'],\n\t\t\t\t'name': 'sort desc'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E979',\n\t\t\t\t'id': 'support_agent',\n\t\t\t\t'keywords': ['support agent'],\n\t\t\t\t'name': 'support agent'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E980',\n\t\t\t\t'id': 'text',\n\t\t\t\t'keywords': ['text'],\n\t\t\t\t'name': 'text'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E981',\n\t\t\t\t'id': 'timetable',\n\t\t\t\t'keywords': ['timetable'],\n\t\t\t\t'name': 'timetable'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E982',\n\t\t\t\t'id': 'tools',\n\t\t\t\t'keywords': ['tools'],\n\t\t\t\t'name': 'tools'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E983',\n\t\t\t\t'id': 'unpin',\n\t\t\t\t'keywords': ['unpin'],\n\t\t\t\t'name': 'unpin'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E984',\n\t\t\t\t'id': 'vault',\n\t\t\t\t'keywords': ['vault'],\n\t\t\t\t'name': 'vault'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E985',\n\t\t\t\t'id': 'view_horiz',\n\t\t\t\t'keywords': ['view_horiz'],\n\t\t\t\t'name': 'view_horiz'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1000',\n\t\t\t\t'id': 'activities',\n\t\t\t\t'keywords': ['activities'],\n\t\t\t\t'name': 'activities'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1001',\n\t\t\t\t'id': 'business_contacts',\n\t\t\t\t'keywords': ['business contacts'],\n\t\t\t\t'name': 'business contacts'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1002',\n\t\t\t\t'id': 'business_partners',\n\t\t\t\t'keywords': ['business partners'],\n\t\t\t\t'name': 'business partners'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1003',\n\t\t\t\t'id': 'campaign',\n\t\t\t\t'keywords': ['campaign'],\n\t\t\t\t'name': 'campaign'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1005',\n\t\t\t\t'id': 'collaboration',\n\t\t\t\t'keywords': ['collaboration'],\n\t\t\t\t'name': 'collaboration'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1006',\n\t\t\t\t'id': 'complex_system',\n\t\t\t\t'keywords': ['complex system'],\n\t\t\t\t'name': 'complex system'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1007',\n\t\t\t\t'id': 'environments',\n\t\t\t\t'keywords': ['environments'],\n\t\t\t\t'name': 'environments'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1008',\n\t\t\t\t'id': 'groups',\n\t\t\t\t'keywords': ['groups'],\n\t\t\t\t'name': 'groups'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1009',\n\t\t\t\t'id': 'integration',\n\t\t\t\t'keywords': ['integration'],\n\t\t\t\t'name': 'integration'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1010',\n\t\t\t\t'id': 'knowledge_base',\n\t\t\t\t'keywords': ['knowledge base'],\n\t\t\t\t'name': 'knowledge base'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1011',\n\t\t\t\t'id': 'known_errors',\n\t\t\t\t'keywords': ['known errors'],\n\t\t\t\t'name': 'known errors'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1012',\n\t\t\t\t'id': 'landing_pages',\n\t\t\t\t'keywords': ['landing pages'],\n\t\t\t\t'name': 'landing pages'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1014',\n\t\t\t\t'id': 'order',\n\t\t\t\t'keywords': ['order'],\n\t\t\t\t'name': 'order'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1015',\n\t\t\t\t'id': 'organization_structure',\n\t\t\t\t'keywords': ['organization structure'],\n\t\t\t\t'name': 'organization structure'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1016',\n\t\t\t\t'id': 'peripherals',\n\t\t\t\t'keywords': ['peripherals'],\n\t\t\t\t'name': 'peripherals'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1018',\n\t\t\t\t'id': 'procurement',\n\t\t\t\t'keywords': ['procurement'],\n\t\t\t\t'name': 'procurement'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1019',\n\t\t\t\t'id': 'purchased_licenses',\n\t\t\t\t'keywords': ['purchased licenses'],\n\t\t\t\t'name': 'purchased licenses'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1020',\n\t\t\t\t'id': 'queue_profile',\n\t\t\t\t'keywords': ['queue profile'],\n\t\t\t\t'name': 'queue profile'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1021',\n\t\t\t\t'id': 'required_licenses',\n\t\t\t\t'keywords': ['required licenses'],\n\t\t\t\t'name': 'required licenses'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1022',\n\t\t\t\t'id': 'server_inventory',\n\t\t\t\t'keywords': ['server inventory'],\n\t\t\t\t'name': 'server inventory'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1023',\n\t\t\t\t'id': 'services_processes',\n\t\t\t\t'keywords': ['services processes'],\n\t\t\t\t'name': 'services processes'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1024',\n\t\t\t\t'id': 'service_catalog',\n\t\t\t\t'keywords': ['service catalog'],\n\t\t\t\t'name': 'service catalog'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1025',\n\t\t\t\t'id': 'service_level_management',\n\t\t\t\t'keywords': ['service level management'],\n\t\t\t\t'name': 'service level management'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1026',\n\t\t\t\t'id': 'service_portfolio',\n\t\t\t\t'keywords': ['service portfolio'],\n\t\t\t\t'name': 'service portfolio'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1027',\n\t\t\t\t'id': 'software_compliance',\n\t\t\t\t'keywords': ['software compliance'],\n\t\t\t\t'name': 'software compliance'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1028',\n\t\t\t\t'id': 'stock_keeping_units',\n\t\t\t\t'keywords': ['stock keeping units'],\n\t\t\t\t'name': 'stock keeping units'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1029',\n\t\t\t\t'id': 'support',\n\t\t\t\t'keywords': ['support'],\n\t\t\t\t'name': 'support'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1030',\n\t\t\t\t'id': 'task',\n\t\t\t\t'keywords': ['task'],\n\t\t\t\t'name': 'task'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1031',\n\t\t\t\t'id': 'technical_inventory',\n\t\t\t\t'keywords': ['technical inventory'],\n\t\t\t\t'name': 'technical inventory'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1032',\n\t\t\t\t'id': 'ticket',\n\t\t\t\t'keywords': ['ticket'],\n\t\t\t\t'name': 'ticket'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1034',\n\t\t\t\t'id': 'user_interface',\n\t\t\t\t'keywords': ['user interface'],\n\t\t\t\t'name': 'user interface'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1035',\n\t\t\t\t'id': 'workplace',\n\t\t\t\t'keywords': ['workplace'],\n\t\t\t\t'name': 'workplace'\n\t\t\t},\n\t\t\t{\n\t\t\t\t'codepoint': 'E1036',\n\t\t\t\t'id': 'change_request',\n\t\t\t\t'keywords': ['change request'],\n\t\t\t\t'name': 'change request'\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1037\",\n\t\t\t\t\"id\": \"AAD_office\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"AAD_office\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"AAD_office\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1038\",\n\t\t\t\t\"id\": \"add_licenses\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"add_licenses\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"add_licenses\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1039\",\n\t\t\t\t\"id\": \"advanced_details\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"advanced_details\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"advanced_details\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1040\",\n\t\t\t\t\"id\": \"ad_connector\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"ad_connector\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"ad_connector\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1041\",\n\t\t\t\t\"id\": \"agreement\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"agreement\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"agreement\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1042\",\n\t\t\t\t\"id\": \"api\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"api\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"api\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1043\",\n\t\t\t\t\"id\": \"application_type\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"application_type\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"application_type\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1044\",\n\t\t\t\t\"id\": \"automated_process\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"automated_process\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"automated_process\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1045\",\n\t\t\t\t\"id\": \"auto_fix_high\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"auto_fix_high\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"auto_fix_high\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1046\",\n\t\t\t\t\"id\": \"auto_graph\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"auto_graph\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"auto_graph\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1047\",\n\t\t\t\t\"id\": \"biotech\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"biotech\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"biotech\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1048\",\n\t\t\t\t\"id\": \"catalog_add\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"catalog_add\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"catalog_add\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1049\",\n\t\t\t\t\"id\": \"category\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"category\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"category\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1051\",\n\t\t\t\t\"id\": \"checklist\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"checklist\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"checklist\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1052\",\n\t\t\t\t\"id\": \"circle_in\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"circle_in\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"circle_in\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1053\",\n\t\t\t\t\"id\": \"circle_out\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"circle_out\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"circle_out\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1054\",\n\t\t\t\t\"id\": \"component\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"component\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"component\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1055\",\n\t\t\t\t\"id\": \"computer_2\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"computer_2\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"computer_2\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1056\",\n\t\t\t\t\"id\": \"configuration_package\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"configuration_package\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"configuration_package\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1057\",\n\t\t\t\t\"id\": \"configuration_project\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"configuration_project\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"configuration_project\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1058\",\n\t\t\t\t\"id\": \"control_descriptor\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"control descriptor\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"control descriptor\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1059\",\n\t\t\t\t\"id\": \"create_ticket\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"create ticket\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"create ticket\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1060\",\n\t\t\t\t\"id\": \"create_kb\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"create kb\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"create kb\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1061\",\n\t\t\t\t\"id\": \"create_problem\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"create problem\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"create problem\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1062\",\n\t\t\t\t\"id\": \"create_purchased_licenses\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"create purchased licenses\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"create purchased licenses\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1063\",\n\t\t\t\t\"id\": \"create_task\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"create_task\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"create_task\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1064\",\n\t\t\t\t\"id\": \"data_gateway\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"data_gateway\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"data_gateway\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1065\",\n\t\t\t\t\"id\": \"data_provider\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"data_provider\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"data_provider\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1066\",\n\t\t\t\t\"id\": \"data_query\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"data_query\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"data_query\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1067\",\n\t\t\t\t\"id\": \"data_query_filter\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"data_query_filter\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"data_query_filter\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1068\",\n\t\t\t\t\"id\": \"dependencies\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"dependencies\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"dependencies\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1069\",\n\t\t\t\t\"id\": \"design_services\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"design_services\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"design_services\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1070\",\n\t\t\t\t\"id\": \"dialog\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"dialog\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"dialog\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1071\",\n\t\t\t\t\"id\": \"disable_list\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"disable_list\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"disable_list\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1072\",\n\t\t\t\t\"id\": \"email_descriptor\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"email_descriptor\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"email_descriptor\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1073\",\n\t\t\t\t\"id\": \"email_template\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"email_template\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"email_template\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1074\",\n\t\t\t\t\"id\": \"engine_activation\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"engine_activation\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"engine_activation\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1075\",\n\t\t\t\t\"id\": \"filter_small\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"filter_small\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"filter_small\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1076\",\n\t\t\t\t\"id\": \"financial_accounting\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"financial_accounting\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"financial_accounting\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1077\",\n\t\t\t\t\"id\": \"generating_tokens\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"generating_tokens\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"generating_tokens\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1078\",\n\t\t\t\t\"id\": \"holiday\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"holiday\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"holiday\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1079\",\n\t\t\t\t\"id\": \"hourglass_bottom\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"hourglass_bottom\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"hourglass_bottom\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1080\",\n\t\t\t\t\"id\": \"how_to_reg\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"how_to_reg\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"how_to_reg\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1081\",\n\t\t\t\t\"id\": \"licence_pool\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"licence_pool\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"licence_pool\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1082\",\n\t\t\t\t\"id\": \"license_unused\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"license_unused\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"license_unused\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1083\",\n\t\t\t\t\"id\": \"list_alt\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"list_alt\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"list_alt\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1084\",\n\t\t\t\t\"id\": \"master_contract\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"master_contract\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"master_contract\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1085\",\n\t\t\t\t\"id\": \"material\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"material\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"material\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1086\",\n\t\t\t\t\"id\": \"medical_services\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"medical_services\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"medical_services\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1087\",\n\t\t\t\t\"id\": \"merge_right\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"merge_right\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"merge_right\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1088\",\n\t\t\t\t\"id\": \"north_east\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"north_east\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"north_east\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1089\",\n\t\t\t\t\"id\": \"preview\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"preview\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"preview\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1090\",\n\t\t\t\t\"id\": \"problem\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"problem\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"problem\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1091\",\n\t\t\t\t\"id\": \"quick_call_template\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"quick_call_template\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"quick_call_template\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1092\",\n\t\t\t\t\"id\": \"receipt_long\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"receipt_long\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"receipt_long\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1093\",\n\t\t\t\t\"id\": \"receipt_thumb_up\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"receipt_thumb_up\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"receipt_thumb_up\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1094\",\n\t\t\t\t\"id\": \"recommend\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"recommend\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"recommend\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1095\",\n\t\t\t\t\"id\": \"request_quote\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"request_quote\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"request_quote\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1096\",\n\t\t\t\t\"id\": \"requisition_item\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"requisition_item\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"requisition_item\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1097\",\n\t\t\t\t\"id\": \"restart_alt\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"restart_alt\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"restart_alt\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1098\",\n\t\t\t\t\"id\": \"restricted_field\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"restricted_field\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"restricted_field\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1099\",\n\t\t\t\t\"id\": \"search_incident\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"search_incident\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"search_incident\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1100\",\n\t\t\t\t\"id\": \"search_problem\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"search_problem\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"search_problem\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1101\",\n\t\t\t\t\"id\": \"search_service_request\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"search_service_request\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"search_service_request\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1102\",\n\t\t\t\t\"id\": \"search_task\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"search_task\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"search_task\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1103\",\n\t\t\t\t\"id\": \"service_booking\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"service_booking\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"service_booking\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1104\",\n\t\t\t\t\"id\": \"service_connection\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"service_connection\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"service_connection\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1105\",\n\t\t\t\t\"id\": \"service_request\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"service_request\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"service_request\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1106\",\n\t\t\t\t\"id\": \"service_time_profile\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"service_time_profile\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"service_time_profile\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1107\",\n\t\t\t\t\"id\": \"set_license_model\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"set_license_model\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"set_license_model\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1108\",\n\t\t\t\t\"id\": \"shortcut\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"shortcut\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"shortcut\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1109\",\n\t\t\t\t\"id\": \"south_east\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"south_east\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"south_east\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1110\",\n\t\t\t\t\"id\": \"spaceship\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"spaceship\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"spaceship\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1111\",\n\t\t\t\t\"id\": \"sports_score\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"sports_score\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"sports_score\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1112\",\n\t\t\t\t\"id\": \"structure\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"structure\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"structure\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1113\",\n\t\t\t\t\"id\": \"take_over\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"take_over\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"take_over\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1114\",\n\t\t\t\t\"id\": \"template\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"template\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"template\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1115\",\n\t\t\t\t\"id\": \"thumb_down_all\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"thumb_down_all\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"thumb_down_all\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1116\",\n\t\t\t\t\"id\": \"thumb_up_all\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"thumb_up_all\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"thumb_up_all\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1117\",\n\t\t\t\t\"id\": \"transformation\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"transformation\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"transformation\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1118\",\n\t\t\t\t\"id\": \"universal_asset\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"universal_asset\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"universal_asset\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1119\",\n\t\t\t\t\"id\": \"user_role\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"user_role\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"user_role\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1120\",\n\t\t\t\t\"id\": \"verified\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"verified\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"verified\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1121\",\n\t\t\t\t\"id\": \"workflow_process_instance\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"workflow_process_instance\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"workflow_process_instance\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1137\",\n\t\t\t\t\"id\": \"activity_monitor\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"activity\",\n\t\t\t\t\t\"monitor\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"activity monitor\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1138\",\n\t\t\t\t\"id\": \"add_extension\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"add extension\",\n\t\t\t\t\t\"extension\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"add extension\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1139\",\n\t\t\t\t\"id\": \"change_layout\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"change layout\",\n\t\t\t\t\t\"layout\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"change layout\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1140\",\n\t\t\t\t\"id\": \"data_collector\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"data_collector\",\n\t\t\t\t\t\"collect\",\n\t\t\t\t\t\"collector\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"data collector\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1141\",\n\t\t\t\t\"id\": \"download_logs\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"logs\",\n\t\t\t\t\t\"download\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"download logs\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1142\",\n\t\t\t\t\"id\": \"import_log\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"import_log\",\n\t\t\t\t\t\"import\",\n\t\t\t\t\t\"log\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"import log\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1143\",\n\t\t\t\t\"id\": \"manage_action\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"manage action\",\n\t\t\t\t\t\"action\",\n\t\t\t\t\t\"manage\",\n\t\t\t\t\t\"finger\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"manage action\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1144\",\n\t\t\t\t\"id\": \"manage_activities\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"manage activities\",\n\t\t\t\t\t\"manage\",\n\t\t\t\t\t\"activity\",\n\t\t\t\t\t\"activities\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"manage activities\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1145\",\n\t\t\t\t\"id\": \"manage_assemblies\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"manage assemblies\",\n\t\t\t\t\t\"manage\",\n\t\t\t\t\t\"assembly\",\n\t\t\t\t\t\"assemblies\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"manage assemblies\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1146\",\n\t\t\t\t\"id\": \"manage_category\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"manage category\",\n\t\t\t\t\t\"manage\",\n\t\t\t\t\t\"category\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"manage category\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1147\",\n\t\t\t\t\"id\": \"manage_workflow_configuration\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"manage_workflow_configuration\",\n\t\t\t\t\t\"manage\",\n\t\t\t\t\t\"workflow\",\n\t\t\t\t\t\"workflows\",\n\t\t\t\t\t\"worker\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"manage workflow configuration\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1148\",\n\t\t\t\t\"id\": \"migrate_workflow\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"migrate_workflow\",\n\t\t\t\t\t\"workflow\",\n\t\t\t\t\t\"migrate\",\n\t\t\t\t\t\"migration\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"migrate workflow\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1149\",\n\t\t\t\t\"id\": \"new_configuration_item\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"new configuration item\",\n\t\t\t\t\t\"configuration item\",\n\t\t\t\t\t\"configuration\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"new configuration item\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1150\",\n\t\t\t\t\"id\": \"new_management_area\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"new management area\",\n\t\t\t\t\t\"management area\",\n\t\t\t\t\t\"management\",\n\t\t\t\t\t\"area\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"new management area\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1151\",\n\t\t\t\t\"id\": \"view_active_engine\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"view active engine\",\n\t\t\t\t\t\"engine\",\n\t\t\t\t\t\"engines\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"view active engine\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1152\",\n\t\t\t\t\"id\": \"workers\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"workers\",\n\t\t\t\t\t\"worker\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"workers\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1153\",\n\t\t\t\t\"id\": \"workflow_studio\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"workflow_studio\",\n\t\t\t\t\t\"workflow\",\n\t\t\t\t\t\"workflows\",\n\t\t\t\t\t\"studio\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"workflow studio\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1154\",\n\t\t\t\t\"id\": \"apple\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"apple\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"apple\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1155\",\n\t\t\t\t\"id\": \"blackberry\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"blackberry\",\n\t\t\t\t\t\"black\",\n\t\t\t\t\t\"berry\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"blackberry\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1156\",\n\t\t\t\t\"id\": \"cd_dvd\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"cd dvd\",\n\t\t\t\t\t\"cd\",\n\t\t\t\t\t\"dvd\",\n\t\t\t\t\t\"disc\",\n\t\t\t\t\t\"disk\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"cd dvd\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1157\",\n\t\t\t\t\"id\": \"external_storage\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"external storage\",\n\t\t\t\t\t\"storage\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"external storage\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1158\",\n\t\t\t\t\"id\": \"firewire\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"firewire\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"firewire\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1159\",\n\t\t\t\t\"id\": \"fixed_disk\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"fixed disk\",\n\t\t\t\t\t\"disk\",\n\t\t\t\t\t\"disc\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"fixed disk\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1160\",\n\t\t\t\t\"id\": \"floppy_disk\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"floppy disk\",\n\t\t\t\t\t\"disk\",\n\t\t\t\t\t\"disc\",\n\t\t\t\t\t\"floppy\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"floppy disk\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1161\",\n\t\t\t\t\"id\": \"infrared\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"infrared\",\n\t\t\t\t\t\"infra\",\n\t\t\t\t\t\"red\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"infrared\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1162\",\n\t\t\t\t\"id\": \"isdn_cards\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"isdn cards\",\n\t\t\t\t\t\"isdn\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"isdn cards\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1163\",\n\t\t\t\t\"id\": \"modem\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"modem\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"modem\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1164\",\n\t\t\t\t\"id\": \"near_field_communication\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"near field communication\",\n\t\t\t\t\t\"nfc\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"nfc\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1165\",\n\t\t\t\t\"id\": \"network_share\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"network share\",\n\t\t\t\t\t\"share\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"network share\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1166\",\n\t\t\t\t\"id\": \"parallel_port\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"parallel port\",\n\t\t\t\t\t\"port\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"parallel port\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1167\",\n\t\t\t\t\"id\": \"pcmcia\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"pcmcia\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"pcmcia\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1168\",\n\t\t\t\t\"id\": \"portable_devices\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"portable devices\",\n\t\t\t\t\t\"device\",\n\t\t\t\t\t\"devices\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"portable devices\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1169\",\n\t\t\t\t\"id\": \"smart_card_readers\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"smart_card_readers\",\n\t\t\t\t\t\"smartcard\",\n\t\t\t\t\t\"smart card\",\n\t\t\t\t\t\"reader\",\n\t\t\t\t\t\"card reader\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"smart card readers\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1170\",\n\t\t\t\t\"id\": \"thin_client_storage\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"thin client storage\",\n\t\t\t\t\t\"storage\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"thin client storage\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1171\",\n\t\t\t\t\"id\": \"thunderbolt\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"thunderbolt\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"thunderbolt\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1172\",\n\t\t\t\t\"id\": \"tv_tuner\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"tv tuner\",\n\t\t\t\t\t\"tv\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"tv tuner\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1173\",\n\t\t\t\t\"id\": \"unknown\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"unknown\",\n\t\t\t\t\t\"question\",\n\t\t\t\t\t\"help\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"unknown\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1174\",\n\t\t\t\t\"id\": \"usb_network_adapters\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"usb network adapters\",\n\t\t\t\t\t\"network adapter\",\n\t\t\t\t\t\"network adapters\",\n\t\t\t\t\t\"adapter\",\n\t\t\t\t\t\"adapters\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"usb network adapters\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1175\",\n\t\t\t\t\"id\": \"wireless-fidelity\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"wireless fidelity\",\n\t\t\t\t\t\"wifi\",\n\t\t\t\t\t\"wi-fi\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"wireless-fidelity\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1176\",\n\t\t\t\t\"id\": \"booking\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"booking\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"booking\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1177\",\n\t\t\t\t\"id\": \"suem\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"suem\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"suem\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1178\",\n\t\t\t\t\"id\": \"temporary_access\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"temporary_access\",\n\t\t\t\t\t\"access\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"temporary_access\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1179\",\n\t\t\t\t\"id\": \"agent_configuration\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"agent configuration\",\n\t\t\t\t\t\"agent\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"agent configuration\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1180\",\n\t\t\t\t\"id\": \"deployments\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"deployments\",\n\t\t\t\t\t\"deployment\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"deployments\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1181\",\n\t\t\t\t\"id\": \"endpoint_configuration\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"endpoint_configuration\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"endpoint configuration\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1182\",\n\t\t\t\t\"id\": \"feedback_new\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"feedback\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"feedback new\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1183\",\n\t\t\t\t\"id\": \"operating_system\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"operating system\",\n\t\t\t\t\t\"os\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"operating system\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1184\",\n\t\t\t\t\"id\": \"bar_chart\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"bar chart\",\n\t\t\t\t\t\"bar\",\n\t\t\t\t\t\"chart\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"bar chart\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1185\",\n\t\t\t\t\"id\": \"progress\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"progress\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"progress\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1186\",\n\t\t\t\t\"id\": \"provisioned\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"provisioning\",\n\t\t\t\t\t\"provisioned\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"provisioned\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1187\",\n\t\t\t\t\"id\": \"provisioning_failed\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"provisioning failed\",\n\t\t\t\t\t\"provisioning\",\n\t\t\t\t\t\"failed\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"provisioning failed\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1188\",\n\t\t\t\t\"id\": \"released\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"release\",\n\t\t\t\t\t\"released\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"released\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1189\",\n\t\t\t\t\"id\": \"stack_bar_chart\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"stack bar chart\",\n\t\t\t\t\t\"stack\",\n\t\t\t\t\t\"bar\",\n\t\t\t\t\t\"chart\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"stack bar chart\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1190\",\n\t\t\t\t\"id\": \"stack_column_chart\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"stack column chart\",\n\t\t\t\t\t\"stack\",\n\t\t\t\t\t\"column\",\n\t\t\t\t\t\"chart\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"stack column chart\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1191\",\n\t\t\t\t\"id\": \"table\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"table\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"table\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1192\",\n\t\t\t\t\"id\": \"description_new\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"description new\",\n\t\t\t\t\t\"description\",\n\t\t\t\t\t\"new\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"description new\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1193\",\n\t\t\t\t\"id\": \"journal\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"journal\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"journal\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1194\",\n\t\t\t\t\"id\": \"no_data\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"no data\",\n\t\t\t\t\t\"no\",\n\t\t\t\t\t\"data\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"no data\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1195\",\n\t\t\t\t\"id\": \"reported_time_by_me\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"reported time by me\",\n\t\t\t\t\t\"reported\",\n\t\t\t\t\t\"time\",\n\t\t\t\t\t\"by\",\n\t\t\t\t\t\"me\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"reported time by me\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1196\",\n\t\t\t\t\"id\": \"reported_time_by_team\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"reported time by team\",\n\t\t\t\t\t\"reported\",\n\t\t\t\t\t\"time\",\n\t\t\t\t\t\"by\",\n\t\t\t\t\t\"team\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"reported time by team\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1197\",\n\t\t\t\t\"id\": \"create_change_request\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"create change request\",\n\t\t\t\t\t\"create\",\n\t\t\t\t\t\"change\",\n\t\t\t\t\t\"request\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"create change request\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1198\",\n\t\t\t\t\"id\": \"domain_verification\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"domain verification\",\n\t\t\t\t\t\"domain\",\n\t\t\t\t\t\"verification\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"domain verification\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1199\",\n\t\t\t\t\"id\": \"edp\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"edp\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"edp\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1200\",\n\t\t\t\t\"id\": \"uem\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"uem\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"uem\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1201\",\n\t\t\t\t\"id\": \"circle_big\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"circle big\",\n\t\t\t\t\t\"circle\",\n\t\t\t\t\t\"big\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"circle big\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1202\",\n\t\t\t\t\"id\": \"circle_big_outline\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"circle big outline\",\n\t\t\t\t\t\"circle\",\n\t\t\t\t\t\"big\",\n\t\t\t\t\t\"outline\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"circle big outline\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1203\",\n\t\t\t\t\"id\": \"circle_medium\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"circle medium\",\n\t\t\t\t\t\"circle\",\n\t\t\t\t\t\"medium\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"circle medium\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1204\",\n\t\t\t\t\"id\": \"circle_medium_outline\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"circle medium outline\",\n\t\t\t\t\t\"circle\",\n\t\t\t\t\t\"medium\",\n\t\t\t\t\t\"outline\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"circle medium outline\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1205\",\n\t\t\t\t\"id\": \"circle_small\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"circle small\",\n\t\t\t\t\t\"circle\",\n\t\t\t\t\t\"small\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"circle small\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1206\",\n\t\t\t\t\"id\": \"circle_small_outline\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"circle small outline\",\n\t\t\t\t\t\"circle\",\n\t\t\t\t\t\"small\",\n\t\t\t\t\t\"outline\"\n\t\t\t\t],\n\t\t\t\t\"name\": \"circle small outline\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"codepoint\": \"E1207\",\n\t\t\t\t\"id\": \"m42_logo\",\n\t\t\t\t\"keywords\": [\n\t\t\t\t\t\"m42\",\n\t\t\t\t\t\"matrix42\",\n\t\t\t\t\t\"logo\",\n\t\t\t\t],\n\t\t\t\t\"name\": \"Matrix42 Logo\"\n\t\t\t}\n\t\t]\n\t}\n];\n"],"names":["angular","module","directive","$compile","COMPILE_CACHE","restrict","scope","m42Widget","m42Params","m42WidgetId","m42DashboardId","m42DashboardViewMode","m42GridOptions","m42DashboardPublicFunctions","template","link","element","widgetTypeName","replace","clonedElement","find","eq","append","m42WidgetTypeName","controller","$scope","$rootScope","$element","renderConfigurationPage","$","html","$on","event","message","widget","type","successCallback","m42DashboardIdentifier","dashboardIdentifier","renderHelpPage","registrySearchString","registryWidgetProvider","registryPublicFunctions","addWidgetCallback","attributes","$watch","connectionObj","registerNewWidgets","$m42DashboardManagerService","$filter","getWidgets","loadRegistryWidgets","then","widgets","filteredWidgets","length","i","group","forEach","grpWidget","loweredWidgetName","params","name","loweredWidgetDescription","description","loweredSearchString","indexOf","push","applySearchString","catch","error","newVal","oldVal","availableWidgetTypes","a","addWidgetToDashboard","widgetToAdd","copy","transclude","dashboardId","dashboardDataProvider","dashboardLayoutDataProvider","gridOptions","dashboardViewMode","saveOnLeavingEditMode","dashboardPublicFunctions","itemsDeletable","saveDashboard","deleteWidgetById","addWidget","refresh","renderDashboard","$window","$m42LocalStorageLayoutDataProvider","dynamicEditingActive","registeredWidgetDirectives","undefined","getDefaultDashboardOptions","extend","initialOptions","innerWidth","currentDeviceType","loadDashboard","map","id","frame","size","origin","sizeX","w","sizeY","h","col","x","row","y","registeredDashboards","alert","mapWidgetsToLayout","mapWidgetsToDto","layout","storeDashboard","widgetIdentifier","splice","$emit","getGridBackground","colWith","toString","gridItemSize","gridItemMargin","margins","background","backgroundSize","this","registerWidget","widgetDirectiveCtrl","unregisterWidget","index","refreshWidgetData","getData","addEventListener","target","className","preventDefault","stopPropagation","draggable","enabled","resizable","handle","handleGridsterResize","numOfCols","columns","widgetId","newValue","oldValue","colWidth","rowHeight","service","$m42LocalStorage","$q","loadDashboardLayout","deviceType","localDashboards","getItem","m42Dashboards","JSON","parse","when","storeDashboardLayout","widgetLayouts","dfd","defer","setItem","stringify","resolve","promise","loadDashboardWidgets","loadedDashboardWidgets","saveDashboardWidgets","dashboardWidgets","reject","$m42DataQueryCache","self","dataSources","registerDatasource","options","groupingProperties","filterProperties","queryCallback","isString","function","invalidateCache","getDatasources","getDatasource","query","queryOptions","runningQueryPromise","getQuery","registerQuery","datasource","result","commitQuery","notification","notify","$document","currentWidgets","layoutDataProvider","getDefaultLayoutSync","dragEventLastMousePosition","defaultGridOptions","pushing","floating","swapping","width","outerMargin","isMobile","mobileBreakPoint","mobileModeEnabled","minColumns","minRows","maxRows","defaultSizeX","defaultSizeY","minSizeX","maxSizeX","minSizeY","maxSizeY","saveGridItemCalculatedHeightInMobile","handles","start","resize","stop","scrollSensitivity","scrollSpeed","nestingEnabled","pageX","addClass","drag","removeClass","addItem","removeItem","$m42DashboardLayoutManagerService","$m42DashboardDataCoordinator","defaultSize","defaultPosition","updateWidgetInDashboard","dashboard","loadedWidgets","loadedWidgetLayouts","checkedWidgets","indexedLayoutItems","registryWidgetsProvider","registryWidgets","registerAvailableWidgetTypes","registerDashboard","dashboardFunctions","dashboardWidgetsLayout","md5","queryCache","createQueryKey","createHash","queryPromise","localStorage","e","key","defaultValue","value","exports","filter","cache","text","defaultText","toLowerCase","factory","str","xl","k","AA","BB","CC","DD","b","c","d","rotateLeft","lValue","iShiftBits","addUnsigned","lX","lY","lX4","lY4","lX8","lY8","lResult","_FF","s","ac","z","_F","_GG","_G","_HH","_H","_II","_I","wordToHex","lCount","wordToHexValue","wordToHexValue_temp","substr","lWordCount","lMessageLength","lNumberOfWords_temp1","lNumberOfWords","lWordArray","Array","lBytePosition","lByteCount","charCodeAt","convertToWordArray","constant","window","jQuery","globalConnections","initNewConnection","connection","rootPath","hubConnection","useDefaultPath","logging","hubName","Hub","useSharedConnection","getConnection","proxy","createHubProxy","on","fn","invoke","method","args","apply","arguments","disconnect","connect","queryParams","startOptions","transport","jsonp","pingInterval","isDefined","withCredentials","qs","listeners","Object","getOwnPropertyNames","propName","methods","makeArray","unshift","errorHandler","stateChanged","autoConnect","touchFix","touches","originalEvent","clientX","clientY","windowScrollX","scrollX","document","documentElement","scrollLeft","windowScrollY","scrollY","scrollTop","shouldBeAfter","elem","pointer","isGrid","getSortableElements","ROOTS_MAP","getCoords","rect","left","top","height","getDistance","point","coords","Math","min","coord","sortingInProgress","create","$attrs","$interpolate","$parse","mapKey","svRoot","$id","candidates","$placeholder","$helper","$original","$target","onSort","svOnSort","svOnStart","$$element","svOnStop","onStart","onStop","svGrid","$watchCollection","collection","array","item","container","part","getPart","getBoundingClientRect","dict","keys","sort","$moveUpdate","opts","mouse","svElement","svOriginal","svPlaceholder","originatingPart","originatingIndex","svRect","tolerance","clone","css","after","copyMode","$part","model","$index","$item","$root","$$phase","$apply","reposition","initialWindowScroll","offset","se","containment","elementMatchesSelector","seCoords","center","centerHoriz","centerVert","scrollHeight","scrollWidth","sePart","q","view","targetIndex","getIndex","querySelector","centerVariant","pRect","placeholder","cand","newElement","prevSibl","previousElementSibling","sib","previousSibling","nodeType","getPreviousSibling","parent","prepend","$drop","revert","noRevert","afterRevert","placeholderRect","helperRect","distance","sqrt","pow","duration","prefix","style","setTimeout","body","remove","spliced","$partTo","$partFrom","$indexTo","$indexFrom","addToSortableElements","removeFromSortableElements","elems","require","$ctrl","$sortableRoot","$sortable","svPart","Error","assign","svCopy","svNoRevert","sortablePart","svCenter","$controllers","sortableElement","helper","onMousedown","customHandle","off","customHelper","customPlaceholder","moveExecuted","windowElement","button","svHandleDisabledAttr","positionFixedAnchorRect","positionFixedAnchor","containmentRect","closestElement","call","clientRect","targetLeft","targetTop","pointerOffset","lastMoveEvent","onWindowScroll","onMousemove","mouseup","add","head","join","dde","matchingFunction","matches","matchesSelector","webkitMatches","webkitMatchesSelector","msMatches","msMatchesSelector","mozMatches","mozMatchesSelector","selector","prototype","closest","el","parentNode","res","maxFromBits","bits","limitUI06","limitUI08","limitUI12","limitUI16","limitUI32","getRandomInt","max","floor","random","paddedString","string","String","generate","timeLow","timeMid","timeHiAndVersion","clockSeqHiAndReserved","clockSeqLow","node","validate","uuid","test","ClassType","global","DESCRIPTORS","defineBuiltInAccessor","regExpFlags","fails","RegExp","RegExpPrototype","INDICES_SUPPORT","O","calls","expected","addGetter","chr","defineProperty","get","pairs","dotAll","ignoreCase","multiline","sticky","hasIndices","getOwnPropertyDescriptor","configurable","resources","nojQuery","noTransportOnInit","errorOnNegotiate","stoppedWhileLoading","stoppedWhileNegotiating","errorParsingNegotiateResponse","errorRedirectionExceedsLimit","errorDuringStartRequest","errorFromServer","stoppedDuringStartRequest","errorParsingStartResponse","invalidStartResponse","protocolIncompatible","aspnetCoreSignalrServer","sendFailed","parseFailed","longPollFailed","eventSourceFailedToConnect","eventSourceError","webSocketClosed","pingServerFailedInvalidResponse","pingServerFailed","pingServerFailedStatusCode","pingServerFailedParse","noConnectionTransport","webSocketsInvalidState","reconnectTimeout","reconnectWindowTimeout","jsonpNotSupportedWithAccessToken","signalR","_connection","version","_pageLoaded","readyState","_pageWindow","_negotiateAbortText","events","onStarting","onReceived","onError","onConnectionSlow","onReconnecting","onReconnect","onStateChanged","onDisconnect","changeState","expectedState","newState","state","triggerHandler","oldState","supportsKeepAlive","_","keepAliveData","activated","addDefaultPort","protocol","url","match","getDefaultPort","ConnectingMessageBuffer","drainCallback","that","buffer","tryBuffer","connectionState","connecting","drain","connected","shift","clear","init","defaultContentType","ieVersion","navigator","appName","exec","userAgent","parseFloat","source","context","transportError","format","firefoxMajorVersion","parseInt","configurePingInterval","config","onFail","pingIntervalId","setInterval","transports","_logic","pingServer","fail","ajaxDefaults","processData","timeout","async","isDisconnecting","disconnected","reconnecting","hub","load","$connection","lastError","connectingMessageBuffer","lastMessageAt","Date","getTime","lastActiveAt","beatInterval","beatHandle","totalTransportConnectTimeout","redirectQs","_parseResponse","response","json","_originalJson","isCrossDomain","against","trim","location","createElement","href","host","ajaxDataType","contentType","clientProtocol","supportedProtocols","negotiateRedirectSupportedProtocols","reconnectDelay","transportConnectTimeout","disconnectTimeout","reconnectWindow","keepAliveWarnAt","callback","initialize","waitForPageLoad","deferred","_deferral","Deferred","parser","setConnectionUrl","baseUrl","wsProtocol","log","support","cors","requestedTransport","isArray","validateTransport","deferredStartHandler","bind","stopReconnectingTimeout","onReconnectTimeout","configuredStopReconnectingTimeout","data","clearTimeout","configureStopReconnectingTimeout","_originalUrl","initHandler","noTransportError","transportName","onFallback","isFirefox11OrGreater","monitorKeepAlive","startHeartbeat","onFailed","err","negotiateRequest","prepareQueryString","protocolError","redirects","supportedTransports","negotiate","onSuccess","statusText","success","accessToken","headers","ajax","availableTransports","ProtocolVersion","RedirectUrl","AccessToken","splitUrlAndQs","split","appRelativeUrl","Url","ConnectionId","token","ConnectionToken","webSocketServerUrl","WebSocketServerUrl","pollTimeout","ConnectionTimeout","DisconnectTimeout","TransportConnectTimeout","KeepAliveTimeout","timeoutWarning","each","TryWebSockets","inArray","starting","send","received","errorData","sendData","connectionSlow","reconnected","notifyServer","deferral","unbind","clearInterval","abort","stopMonitoringKeepAlive","messageId","groupsToken","msg","m","toTimeString","console","debug","noConflict","transportLogic","startAbortText","beat","monitoring","timeElapsed","lostConnection","userNotified","checkIfAlive","markActive","getAjaxUrl","path","InitHandler","startRequested","startCompleted","connectionStopped","failCalled","initReceived","transportFailed","transportTimeoutHandle","tryAbortStartRequest","ajaxStart","wrappedError","xhrFields","dataType","xhr","addQs","Response","status","preparedUrl","encodeURIComponent","firstChar","appender","param","charAt","getUrl","poll","ajaxPost","maximizePersistentResponse","minPersistentResponse","MessageId","C","Messages","M","Initialized","ShouldReconnect","LongPollDelay","L","GroupsToken","G","E","updateGroups","stringifySend","ajaxSend","payload","triggerReceived","textStatus","ajaxAbort","requestHeaders","fetch","keepalive","credentials","rejectDeferred","triggerStartError","startRequest","tryInitialize","persistentResponse","onInitialized","processMessages","minData","I","markLastMessage","reconnectKeepAliveUpdate","verifyLastActive","isConnectedOrReconnecting","ensureReconnectingState","clearReconnectTimeout","reconnect","handleParseFailure","foreverFrame","count","connections","webSockets","socket","ex","opened","WebSocket","onopen","onclose","wasClean","reason","onmessage","close","clearReconnectAttemptTimeout","reconnectAttemptTimeoutHandle","serverSentEvents","timeOut","eventSource","EventSource","Message","OPEN","eventPhase","CLOSED","loadingFixIntervalId","attachedTo","createFrame","setAttribute","loadPreventer","prevent","tempFrame","appendChild","removeChild","cancel","iframeClearThreshold","frameId","frameLoadHandler","attachEvent","src","receive","cw","frameMessageCount","contentWindow","contentDocument","firstChild","execCommand","started","longPolling","fireConnect","noop","tryFailConnect","privateData","reconnectErrors","fireReconnected","instance","reconnectTimeoutId","pollXhr","pollTimeoutId","raiseReconnect","polling","postData","onprogress","shouldReconnect","delay","responseText","nextGuid","makeEventName","getArgValue","isFunction","hasMembers","obj","hasOwnProperty","clearInvocationCallbacks","callbacks","invocationCallbacks","callbackId","invocationCallbackId","isCallbackFromGeneratedHubProxy","slice","hubProxy","settings","callbackMap","constructor","hasSubscriptions","eventName","callbackIdentity","isFromOldGeneratedHubProxy","_signalRGuid","registration","callbackSpace","guid","eventHandlers","handler","callbackRegistration","j","methodName","argValues","arr","fun","thisp","H","A","minResult","_maximizeHubResponse","State","Progress","notifyWith","Data","progressjQueryVersionLogged","jquery","StackTrace","IsHubException","ErrorData","rejectWith","resolveWith","Result","isEmptyObject","S","minHubResponse","R","P","Id","D","T","proxies","dataCallbackId","_maximizeClientHubInvocation","Method","Args","errData","origData","minClientHubInvocation","_registerSubscribedHubs","_subscribedToHubs","subscribedHubs"],"sourceRoot":""}