diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..881534a --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +.DS_Store +/*.launch +/deployment/ +/packages/ +/releases/ +/.mendix-cache/ +/.classpath +/.project +/*.mpr.bak +/*.mpr.lock +/project-settings.user.json +/javasource/*/proxies/ +/javasource/system/ +/**/node_modules/ +!/javascriptsource/**/node_modules/ +/.idea/ +**/.idea/ +/*.iml +[Ll]ogs/ +/*.log# Custom scripts and build artifacts + +# Custom scripts and build artifacts +theme-cache/ +themesource/email_connector/prepros.config +themesource/email_connector/web/main.css diff --git a/EmailConnectorMigrationApp.mpr b/EmailConnectorMigrationApp.mpr index 4565198..10e5a38 100644 Binary files a/EmailConnectorMigrationApp.mpr and b/EmailConnectorMigrationApp.mpr differ diff --git a/EmailConnectorMigrationApp.mpr.bak b/EmailConnectorMigrationApp.mpr.bak index 45d0114..4565198 100644 Binary files a/EmailConnectorMigrationApp.mpr.bak and b/EmailConnectorMigrationApp.mpr.bak differ diff --git a/README.md b/README.md index d0c3a01..cef9e12 100644 --- a/README.md +++ b/README.md @@ -5,14 +5,12 @@ This utility will assist you in migrating only data from the [Email with templat ## Considerations ### Dependencies - Latest [Email with template](https://marketplace.mendix.com/link/component/259) module. -- [Email Connector](https://marketplace.mendix.com/link/component/120739) version 3.0.0 module. +- Latest [Email Connector](https://marketplace.mendix.com/link/component/120739) module. - Latest [Encryption](https://marketplace.mendix.com/link/component/1011) module. - Latest [Mx Reflection](https://marketplace.mendix.com/link/component/69) module. ### Pre-rerequisites - This utility will help migrate only data. -- App on MX 7 should first migrate to MX 8 LTS -- App should be on at least Mendix 8 LTS - The app should have the most recent version of the Email with Template Module. - The app should have the most recent Mx Model reflection module. - The app should have the most recent Encryption module. @@ -28,21 +26,20 @@ This utility will assist you in migrating only data from the [Email with templat - Will migrate all data. - Email accounts with OAuth provider details. - Email accounts will be migrated. - - OAuth provider’s Client ID and Client secrete will be migrated. - - OAuth provider’s callback URL will not be migrated. + - OAuth provider’s Client ID, Client secret and existing callback URL will be migrated. ### Email templates - Tokens associated with email template will be migrated. - Attachments associated with email template will be migrated. ### Email Messages -- Email messages with attachments will be migrated. +- Email messages with attachments and email headers will be migrated. +- Email message association with email account will be migrated if association account selected. ### Error logs -- Will migrate all data but will not be associated with the email account; this must be addressed after migration. +- Will migrate all data and association with selected email account, if association is not selected logs will be migrated without any association and must be addressed after migration. ### Associations - Associations that exist in both modules will only be migrated. - Email Connector-specific associations must be configured after/during migration. ### Data loss -- Because Email Connector does not support custom mail headers, data from the 'Header' entity will not be migrated. -- It is not possible to associate 'EmailMessage' with 'EmailAccount,' so messages with the status Queued, Sent, Failed, Error, Received will not be listed. Such 'EmailMessage' will be dormant until the user establishes the association after/during migration. +- It is not possible to associate 'EmailMessage' and 'Logs' with 'EmailAccount' if association is not selected so logs and messages with the status Queued, Sent, Failed, Error, Received will not be listed. Such 'EmailMessage' will be dormant until the user establishes the association after/during migration. ## Following things will not be migrated @@ -73,8 +70,8 @@ This utility will assist you in migrating only data from the [Email with templat 11. Examine the email connector module's 'After Migration' statistics. 1. Validate the data in email connector entities, or else. Open the overview page for the email connector. 2. Validate the templates that were migrated. - 3. Validate email messages, to view email messages, create an association with an email account. - 4. Validate Error Logs, if necessary, create an association with an email account to view them from the Account Settings page. + 3. Validate email messages, to view email messages, create an association with an email account if "Set Association" is not selected during migration. + 4. Validate Error Logs, to view them from the Account Settings page create an association with an email account if "Set Association" is not selected during migration. 5. Validate account and verify send email works for accounts migrated with basic authentication. 17. In the case of Oauth, update the Oauth provider details, but wait for additional steps before re-authorizing and making it work. 18. If you are good with the data uninstall the email template module. diff --git a/javascriptsource/datawidgets/actions/Export_To_Excel.js b/javascriptsource/datawidgets/actions/Export_To_Excel.js new file mode 100644 index 0000000..6786297 --- /dev/null +++ b/javascriptsource/datawidgets/actions/Export_To_Excel.js @@ -0,0 +1,82 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import "mx-global"; +import { Big } from "big.js"; +import { utils, writeFileXLSX } from './xlsx-export-tools.js'; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * @param {string} datagridName + * @param {string} fileName + * @param {string} sheetName + * @param {boolean} includeColumnHeaders + * @param {Big} chunkSize - The number of items fetched and exported per request. + * @returns {Promise.} + */ +export async function Export_To_Excel(datagridName, fileName, sheetName, includeColumnHeaders, chunkSize) { + // BEGIN USER CODE + if (!fileName || !datagridName || !sheetName) { + return false; + } + + const REGISTRY_NAME = "com.mendix.widgets.web.datagrid.export"; + const registry = window[REGISTRY_NAME]; + const controller = registry.get(datagridName); + + if (controller === undefined) { + return false; + } + + return new Promise((resolve) => { + function handler(req) { + let worksheet; + let headers; + + req.on("headers", (hds) => { + headers = hds.map(header => header.name); + if (includeColumnHeaders) { + worksheet = utils.aoa_to_sheet([headers]); + } + }); + + req.on("data", (data) => { + if (worksheet === undefined) { + worksheet = utils.aoa_to_sheet(data) + } else { + utils.sheet_add_aoa(worksheet, data, { origin: -1 }); + } + }); + + req.on("end", () => { + if (worksheet) { + // Set character width for each column + // https://docs.sheetjs.com/docs/csf/sheet#worksheet-object + worksheet["!cols"] = headers.map(header => ({ + wch: header.length + 10 + })); + const workbook = utils.book_new(); + utils.book_append_sheet(workbook, worksheet, sheetName === "" ? "Data" : sheetName); + writeFileXLSX(workbook, `${fileName}.xlsx`); + resolve(true); + } else { + resolve(false); + } + }); + + req.on("abort", () => resolve(false)); + } + + controller.exportData(handler, { + withHeaders: true, + limit: chunkSize.toNumber() + }) + }); + // END USER CODE +} diff --git a/javascriptsource/datawidgets/actions/Reset_All_Filters.js b/javascriptsource/datawidgets/actions/Reset_All_Filters.js new file mode 100644 index 0000000..34ebe0d --- /dev/null +++ b/javascriptsource/datawidgets/actions/Reset_All_Filters.js @@ -0,0 +1,26 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import "mx-global"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * @param {string} targetName - Name of the widget for which filters should be reset. Valid targets are: Data grid 2, Gallery. You can find filter name in widget settings in the "Common" group (Properties>Common>Name). + * @param {boolean} setToDefault - Set to default value. If true, filter will be set to its default value, otherwise it will be set to empty. + * @returns {Promise.} + */ +export async function Reset_All_Filters(targetName, setToDefault) { + // BEGIN USER CODE + const plugin = window["com.mendix.widgets.web.plugin.externalEvents"]; + if (plugin) { + plugin.emit(targetName, "reset.filters", setToDefault); + } + // END USER CODE +} diff --git a/javascriptsource/datawidgets/actions/Reset_Filter.js b/javascriptsource/datawidgets/actions/Reset_Filter.js new file mode 100644 index 0000000..076281d --- /dev/null +++ b/javascriptsource/datawidgets/actions/Reset_Filter.js @@ -0,0 +1,26 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import "mx-global"; +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * @param {string} targetName - Name of the filter to reset. Valid targets are: Number filter, Date filter, Text filter, Drop-down filter. You can find filter name in widget settings in the "Common" group (Properties>Common>Name). + * @param {boolean} setToDefault - Set to default value. If true, filter will be set to its default value, otherwise it will be set to empty. + * @returns {Promise.} + */ +export async function Reset_Filter(targetName, setToDefault) { + // BEGIN USER CODE + const plugin = window["com.mendix.widgets.web.plugin.externalEvents"]; + if (plugin) { + plugin.emit(targetName, "reset.value", setToDefault); + } + // END USER CODE +} diff --git a/javascriptsource/datawidgets/actions/Set_Filter.js b/javascriptsource/datawidgets/actions/Set_Filter.js new file mode 100644 index 0000000..68517a8 --- /dev/null +++ b/javascriptsource/datawidgets/actions/Set_Filter.js @@ -0,0 +1,34 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import "mx-global"; +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * @param {string} targetName - Name of the filter to set. Valid targets are: Number filter, Date filter, Text filter, Drop-down filter. You can find filter name in widget settings in the "Common" group (Properties>Common>Name). + * @param {boolean} useDefaultValue - Determine the use of default value provided by the filter component itself. +If true, "Value" section will be ignored + * @param {"DataWidgets.Filter_Operators.contains"|"DataWidgets.Filter_Operators.startsWith"|"DataWidgets.Filter_Operators.endsWith"|"DataWidgets.Filter_Operators.between"|"DataWidgets.Filter_Operators.greater"|"DataWidgets.Filter_Operators.greaterEqual"|"DataWidgets.Filter_Operators.equal"|"DataWidgets.Filter_Operators.notEqual"|"DataWidgets.Filter_Operators.smaller"|"DataWidgets.Filter_Operators.smallerEqual"|"DataWidgets.Filter_Operators.empty"|"DataWidgets.Filter_Operators.notEmpty"} operators - Selected operators value. If filter has operators, this value will be applied. + * @param {string} stringValue - Value set for dropdown filter or text filter. Choose empty if not use. + * @param {Big} numberValue - Number value for number filter. Choose empty if not use. + * @param {Date} dateTimeValue - Date time value for date filter, can also be use as "start date". Choose empty if not use. + * @param {Date} dateTimeValue_2 - End date time value for range filter. Choose empty if not use. + * @returns {Promise.} + */ +export async function Set_Filter(targetName, useDefaultValue, operators, stringValue, numberValue, dateTimeValue, dateTimeValue_2) { + // BEGIN USER CODE + const plugin = window["com.mendix.widgets.web.plugin.externalEvents"]; + if (plugin) { + plugin.emit(targetName, "set.value", useDefaultValue, { + operators, stringValue, numberValue, dateTimeValue, dateTimeValue2: dateTimeValue_2 + }); + } + // END USER CODE +} diff --git a/javascriptsource/datawidgets/actions/xlsx-export-tools.js b/javascriptsource/datawidgets/actions/xlsx-export-tools.js new file mode 100644 index 0000000..9536149 --- /dev/null +++ b/javascriptsource/datawidgets/actions/xlsx-export-tools.js @@ -0,0 +1,3 @@ +/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */ +var e=function(e){return String.fromCharCode(e)},t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function r(e){for(var r="",n=0,a=0,i=0,o=0,s=0,l=0,c=0,f=0;f>2,s=(3&n)<<4|(a=e.charCodeAt(f++))>>4,l=(15&a)<<2|(i=e.charCodeAt(f++))>>6,c=63&i,isNaN(a)?l=c=64:isNaN(i)&&(c=64),r+=t.charAt(o)+t.charAt(s)+t.charAt(l)+t.charAt(c);return r}function n(e){var r="",n=0,a=0,i=0,o=0,s=0,l=0;"data:"==e.slice(0,5)&&((c=e.slice(0,1024).indexOf(";base64,"))>-1&&(e=e.slice(c+8)));e=e.replace(/[^\w\+\/\=]/g,"");for(var c=0;c>4,r+=String.fromCharCode(n),a=(15&o)<<4|(s=t.indexOf(e.charAt(c++)))>>2,64!==s&&(r+=String.fromCharCode(a)),i=(3&s)<<6|(l=t.indexOf(e.charAt(c++))),64!==l&&(r+=String.fromCharCode(i));return r}var a=function(){return"undefined"!=typeof Buffer&&"undefined"!=typeof process&&void 0!==process.versions&&!!process.versions.node}(),i=function(){if("undefined"!=typeof Buffer){var e=!Buffer.from;if(!e)try{Buffer.from("foo","utf8")}catch(t){e=!0}return e?function(e,t){return t?new Buffer(e,t):new Buffer(e)}:Buffer.from.bind(Buffer)}return function(){}}(),o=function(){if("undefined"==typeof Buffer)return!1;var e=i([65,0]);return!!e&&1==e.toString("utf16le").length}();function s(e){return a?Buffer.alloc?Buffer.alloc(e):new Buffer(e):"undefined"!=typeof Uint8Array?new Uint8Array(e):new Array(e)}function l(e){return a?Buffer.allocUnsafe?Buffer.allocUnsafe(e):new Buffer(e):"undefined"!=typeof Uint8Array?new Uint8Array(e):new Array(e)}var c=function(e){return a?i(e,"binary"):e.split("").map((function(e){return 255&e.charCodeAt(0)}))};function f(e){if("undefined"==typeof ArrayBuffer)return c(e);for(var t=new ArrayBuffer(e.length),r=new Uint8Array(t),n=0;n!=e.length;++n)r[n]=255&e.charCodeAt(n);return t}var h=a?function(e){return Buffer.concat(e.map((function(e){return Buffer.isBuffer(e)?e:i(e)})))}:function(e){if("undefined"!=typeof Uint8Array){var t=0,r=0;for(t=0;t=0;)t+=e.charAt(r--);return t}function m(e,t){var r=""+e;return r.length>=t?r:ve("0",t-r.length)+r}function g(e,t){var r=""+e;return r.length>=t?r:ve(" ",t-r.length)+r}function v(e,t){var r=""+e;return r.length>=t?r:r+ve(" ",t-r.length)}var b=Math.pow(2,32);function x(e,t){return e>b||e<-b?function(e,t){var r=""+Math.round(e);return r.length>=t?r:ve("0",t-r.length)+r}(e,t):function(e,t){var r=""+e;return r.length>=t?r:ve("0",t-r.length)+r}(Math.round(e),t)}function w(e,t){return t=t||0,e.length>=7+t&&103==(32|e.charCodeAt(t))&&101==(32|e.charCodeAt(t+1))&&110==(32|e.charCodeAt(t+2))&&101==(32|e.charCodeAt(t+3))&&114==(32|e.charCodeAt(t+4))&&97==(32|e.charCodeAt(t+5))&&108==(32|e.charCodeAt(t+6))}var y=[["Sun","Sunday"],["Mon","Monday"],["Tue","Tuesday"],["Wed","Wednesday"],["Thu","Thursday"],["Fri","Friday"],["Sat","Saturday"]],C=[["J","Jan","January"],["F","Feb","February"],["M","Mar","March"],["A","Apr","April"],["M","May","May"],["J","Jun","June"],["J","Jul","July"],["A","Aug","August"],["S","Sep","September"],["O","Oct","October"],["N","Nov","November"],["D","Dec","December"]];var S={0:"General",1:"0",2:"0.00",3:"#,##0",4:"#,##0.00",9:"0%",10:"0.00%",11:"0.00E+00",12:"# ?/?",13:"# ??/??",14:"m/d/yy",15:"d-mmm-yy",16:"d-mmm",17:"mmm-yy",18:"h:mm AM/PM",19:"h:mm:ss AM/PM",20:"h:mm",21:"h:mm:ss",22:"m/d/yy h:mm",37:"#,##0 ;(#,##0)",38:"#,##0 ;[Red](#,##0)",39:"#,##0.00;(#,##0.00)",40:"#,##0.00;[Red](#,##0.00)",45:"mm:ss",46:"[h]:mm:ss",47:"mmss.0",48:"##0.0E+0",49:"@",56:'"上午/下午 "hh"時"mm"分"ss"秒 "'},k={5:37,6:38,7:39,8:40,23:0,24:0,25:0,26:0,27:14,28:14,29:14,30:14,31:14,50:14,51:14,52:14,53:14,54:14,55:14,56:14,57:14,58:14,59:1,60:2,61:3,62:4,67:9,68:10,69:12,70:13,71:14,72:14,73:15,74:16,75:17,76:20,77:21,78:22,79:45,80:46,81:47,82:0},_={5:'"$"#,##0_);\\("$"#,##0\\)',63:'"$"#,##0_);\\("$"#,##0\\)',6:'"$"#,##0_);[Red]\\("$"#,##0\\)',64:'"$"#,##0_);[Red]\\("$"#,##0\\)',7:'"$"#,##0.00_);\\("$"#,##0.00\\)',65:'"$"#,##0.00_);\\("$"#,##0.00\\)',8:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',66:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',41:'_(* #,##0_);_(* \\(#,##0\\);_(* "-"_);_(@_)',42:'_("$"* #,##0_);_("$"* \\(#,##0\\);_("$"* "-"_);_(@_)',43:'_(* #,##0.00_);_(* \\(#,##0.00\\);_(* "-"??_);_(@_)',44:'_("$"* #,##0.00_);_("$"* \\(#,##0.00\\);_("$"* "-"??_);_(@_)'};function A(e,t,r){for(var n=e<0?-1:1,a=e*n,i=0,o=1,s=0,l=1,c=0,f=0,h=Math.floor(a);ct&&(c>t?(f=l,s=i):(f=c,s=o)),!r)return[0,n*s,f];var u=Math.floor(n*s/f);return[u,n*s-u*f,f]}function T(e,t,r){if(e>2958465||e<0)return null;var n=0|(e=function(e){var t=e.toPrecision(16);if(t.indexOf("e")>-1){var r=t.slice(0,t.indexOf("e"));return(r=r.indexOf(".")>-1?r.slice(0,"0."==r.slice(0,2)?17:16):r.slice(0,15)+ve("0",r.length-15))+t.slice(t.indexOf("e"))}var n=t.indexOf(".")>-1?t.slice(0,"0."==t.slice(0,2)?17:16):t.slice(0,15)+ve("0",t.length-15);return Number(n)}(e)),a=Math.floor(86400*(e-n)),i=0,o=[],s={D:n,T:a,u:86400*(e-n)-a,y:0,m:0,d:0,H:0,M:0,S:0,q:0};if(Math.abs(s.u)<1e-6&&(s.u=0),t&&t.date1904&&(n+=1462),s.u>.9999&&(s.u=0,86400==++a&&(s.T=a=0,++n,++s.D)),60===n)o=r?[1317,10,29]:[1900,2,29],i=3;else if(0===n)o=r?[1317,8,29]:[1900,1,0],i=6;else{n>60&&--n;var l=new Date(1900,0,1);l.setDate(l.getDate()+n-1),o=[l.getFullYear(),l.getMonth()+1,l.getDate()],i=l.getDay(),n<60&&(i=(i+6)%7),r&&(i=function(e,t){t[0]-=581;var r=e.getDay();e<60&&(r=(r+6)%7);return r}(l,o))}return s.y=o[0],s.m=o[1],s.d=o[2],s.S=a%60,a=Math.floor(a/60),s.M=a%60,a=Math.floor(a/60),s.H=a,s.q=i,s}function D(e){return-1==e.indexOf(".")?e:e.replace(/(?:\.0*|(\.\d*[1-9])0+)$/,"$1")}function O(e){if(!isFinite(e))return isNaN(e)?"#NUM!":"#DIV/0!";var t,r=Math.floor(Math.log(Math.abs(e))*Math.LOG10E);return t=r>=-4&&r<=-1?e.toPrecision(10+r):Math.abs(r)<=9?function(e){var t=e<0?12:11,r=D(e.toFixed(12));return r.length<=t||(r=e.toPrecision(10)).length<=t?r:e.toExponential(5)}(e):10===r?e.toFixed(10).substr(0,12):function(e){var t=D(e.toFixed(11));return t.length>(e<0?12:11)||"0"===t||"-0"===t?e.toPrecision(6):t}(e),D(function(e){return-1==e.indexOf("E")?e:e.replace(/(?:\.0*|(\.\d*[1-9])0+)[Ee]/,"$1E").replace(/(E[+-])(\d)$/,"$10$2")}(t.toUpperCase()))}function F(e,t){switch(typeof e){case"string":return e;case"boolean":return e?"TRUE":"FALSE";case"number":return(0|e)===e?e.toString(10):O(e);case"undefined":return"";case"object":if(null==e)return"";if(e instanceof Date)return K(14,fe(e,t&&t.date1904),t)}throw new Error("unsupported value in General format: "+e)}function E(e,t,r,n){var a,i="",o=0,s=0,l=r.y,c=0;switch(e){case 98:l=r.y+543;case 121:switch(t.length){case 1:case 2:a=l%100,c=2;break;default:a=l%1e4,c=4}break;case 109:switch(t.length){case 1:case 2:a=r.m,c=t.length;break;case 3:return C[r.m-1][1];case 5:return C[r.m-1][0];default:return C[r.m-1][2]}break;case 100:switch(t.length){case 1:case 2:a=r.d,c=t.length;break;case 3:return y[r.q][0];default:return y[r.q][1]}break;case 104:switch(t.length){case 1:case 2:a=1+(r.H+11)%12,c=t.length;break;default:throw"bad hour format: "+t}break;case 72:switch(t.length){case 1:case 2:a=r.H,c=t.length;break;default:throw"bad hour format: "+t}break;case 77:switch(t.length){case 1:case 2:a=r.M,c=t.length;break;default:throw"bad minute format: "+t}break;case 115:if("s"!=t&&"ss"!=t&&".0"!=t&&".00"!=t&&".000"!=t)throw"bad second format: "+t;return 0!==r.u||"s"!=t&&"ss"!=t?(s=n>=2?3===n?1e3:100:1===n?10:1,(o=Math.round(s*(r.S+r.u)))>=60*s&&(o=0),"s"===t?0===o?"0":""+o/s:(i=m(o,2+n),"ss"===t?i.substr(0,2):"."+i.substr(2,t.length-1))):m(r.S,t.length);case 90:switch(t){case"[h]":case"[hh]":a=24*r.D+r.H;break;case"[m]":case"[mm]":a=60*(24*r.D+r.H)+r.M;break;case"[s]":case"[ss]":a=60*(60*(24*r.D+r.H)+r.M)+(0==n?Math.round(r.S+r.u):r.S);break;default:throw"bad abstime format: "+t}c=3===t.length?1:2;break;case 101:a=l,c=1}return c>0?m(a,c):""}function M(e){if(e.length<=3)return e;for(var t=e.length%3,r=e.substr(0,t);t!=e.length;t+=3)r+=(r.length>0?",":"")+e.substr(t,3);return r}var N=/%/g;function I(e,t){var r,n=e.indexOf("E")-e.indexOf(".")-1;if(e.match(/^#+0.0E\+0$/)){if(0==t)return"0.0E+0";if(t<0)return"-"+I(e,-t);var a=e.indexOf(".");-1===a&&(a=e.indexOf("E"));var i=Math.floor(Math.log(t)*Math.LOG10E)%a;if(i<0&&(i+=a),-1===(r=(t/Math.pow(10,i)).toPrecision(n+1+(a+i)%a)).indexOf("e")){var o=Math.floor(Math.log(t)*Math.LOG10E);for(-1===r.indexOf(".")?r=r.charAt(0)+"."+r.substr(1)+"E+"+(o-r.length+i):r+="E+"+(o-i);"0."===r.substr(0,2);)r=(r=r.charAt(0)+r.substr(2,a)+"."+r.substr(2+a)).replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0.");r=r.replace(/\+-/,"-")}r=r.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,(function(e,t,r,n){return t+r+n.substr(0,(a+i)%a)+"."+n.substr(i)+"E"}))}else r=t.toExponential(n);return e.match(/E\+00$/)&&r.match(/e[+-]\d$/)&&(r=r.substr(0,r.length-1)+"0"+r.charAt(r.length-1)),e.match(/E\-/)&&r.match(/e\+/)&&(r=r.replace(/e\+/,"e")),r.replace("e","E")}var P=/# (\?+)( ?)\/( ?)(\d+)/;var R=/^#*0*\.([0#]+)/,L=/\)[^)]*[0#]/,U=/\(###\) ###\\?-####/;function z(e){for(var t,r="",n=0;n!=e.length;++n)switch(t=e.charCodeAt(n)){case 35:break;case 63:r+=" ";break;case 48:r+="0";break;default:r+=String.fromCharCode(t)}return r}function j(e,t){var r=Math.pow(10,t);return""+Math.round(e*r)/r}function B(e,t){var r=e-Math.floor(e),n=Math.pow(10,t);return t<(""+Math.round(r*n)).length?0:Math.round(r*n)}function W(e,t,r){if(40===e.charCodeAt(0)&&!t.match(L)){var n=t.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,"");return r>=0?W("n",n,r):"("+W("n",n,-r)+")"}if(44===t.charCodeAt(t.length-1))return function(e,t,r){for(var n=t.length-1;44===t.charCodeAt(n-1);)--n;return V(e,t.substr(0,n),r/Math.pow(10,3*(t.length-n)))}(e,t,r);if(-1!==t.indexOf("%"))return function(e,t,r){var n=t.replace(N,""),a=t.length-n.length;return V(e,n,r*Math.pow(10,2*a))+ve("%",a)}(e,t,r);if(-1!==t.indexOf("E"))return I(t,r);if(36===t.charCodeAt(0))return"$"+W(e,t.substr(" "==t.charAt(1)?2:1),r);var a,i,o,s,l=Math.abs(r),c=r<0?"-":"";if(t.match(/^00+$/))return c+x(l,t.length);if(t.match(/^[#?]+$/))return"0"===(a=x(r,0))&&(a=""),a.length>t.length?a:z(t.substr(0,t.length-a.length))+a;if(i=t.match(P))return function(e,t,r){var n=parseInt(e[4],10),a=Math.round(t*n),i=Math.floor(a/n),o=a-i*n,s=n;return r+(0===i?"":""+i)+" "+(0===o?ve(" ",e[1].length+1+e[4].length):g(o,e[1].length)+e[2]+"/"+e[3]+m(s,e[4].length))}(i,l,c);if(t.match(/^#+0+$/))return c+x(l,t.length-t.indexOf("0"));if(i=t.match(R))return a=j(r,i[1].length).replace(/^([^\.]+)$/,"$1."+z(i[1])).replace(/\.$/,"."+z(i[1])).replace(/\.(\d*)$/,(function(e,t){return"."+t+ve("0",z(i[1]).length-t.length)})),-1!==t.indexOf("0.")?a:a.replace(/^0\./,".");if(t=t.replace(/^#+([0.])/,"$1"),i=t.match(/^(0*)\.(#*)$/))return c+j(l,i[2].length).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,i[1].length?"0.":".");if(i=t.match(/^#{1,3},##0(\.?)$/))return c+M(x(l,0));if(i=t.match(/^#,##0\.([#0]*0)$/))return r<0?"-"+W(e,t,-r):M(""+(Math.floor(r)+function(e,t){return t<(""+Math.round((e-Math.floor(e))*Math.pow(10,t))).length?1:0}(r,i[1].length)))+"."+m(B(r,i[1].length),i[1].length);if(i=t.match(/^#,#*,#0/))return W(e,t.replace(/^#,#*,/,""),r);if(i=t.match(/^([0#]+)(\\?-([0#]+))+$/))return a=d(W(e,t.replace(/[\\-]/g,""),r)),o=0,d(d(t.replace(/\\/g,"")).replace(/[0#]/g,(function(e){return o-2147483648?""+(e>=0?0|e:e-1|0):""+Math.floor(e)}(r)).replace(/^\d,\d{3}$/,"0$&").replace(/^\d*$/,(function(e){return"00,"+(e.length<3?m(0,3-e.length):"")+e}))+"."+m(o,i[1].length);switch(t){case"###,##0.00":return W(e,"#,##0.00",r);case"###,###":case"##,###":case"#,###":var p=M(x(l,0));return"0"!==p?c+p:"";case"###,###.00":return W(e,"###,##0.00",r).replace(/^0\./,".");case"#,###.00":return W(e,"#,##0.00",r).replace(/^0\./,".")}throw new Error("unsupported format |"+t+"|")}function H(e,t){var r,n=e.indexOf("E")-e.indexOf(".")-1;if(e.match(/^#+0.0E\+0$/)){if(0==t)return"0.0E+0";if(t<0)return"-"+H(e,-t);var a=e.indexOf(".");-1===a&&(a=e.indexOf("E"));var i=Math.floor(Math.log(t)*Math.LOG10E)%a;if(i<0&&(i+=a),!(r=(t/Math.pow(10,i)).toPrecision(n+1+(a+i)%a)).match(/[Ee]/)){var o=Math.floor(Math.log(t)*Math.LOG10E);-1===r.indexOf(".")?r=r.charAt(0)+"."+r.substr(1)+"E+"+(o-r.length+i):r+="E+"+(o-i),r=r.replace(/\+-/,"-")}r=r.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,(function(e,t,r,n){return t+r+n.substr(0,(a+i)%a)+"."+n.substr(i)+"E"}))}else r=t.toExponential(n);return e.match(/E\+00$/)&&r.match(/e[+-]\d$/)&&(r=r.substr(0,r.length-1)+"0"+r.charAt(r.length-1)),e.match(/E\-/)&&r.match(/e\+/)&&(r=r.replace(/e\+/,"e")),r.replace("e","E")}function X(e,t,r){if(40===e.charCodeAt(0)&&!t.match(L)){var n=t.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,"");return r>=0?X("n",n,r):"("+X("n",n,-r)+")"}if(44===t.charCodeAt(t.length-1))return function(e,t,r){for(var n=t.length-1;44===t.charCodeAt(n-1);)--n;return V(e,t.substr(0,n),r/Math.pow(10,3*(t.length-n)))}(e,t,r);if(-1!==t.indexOf("%"))return function(e,t,r){var n=t.replace(N,""),a=t.length-n.length;return V(e,n,r*Math.pow(10,2*a))+ve("%",a)}(e,t,r);if(-1!==t.indexOf("E"))return H(t,r);if(36===t.charCodeAt(0))return"$"+X(e,t.substr(" "==t.charAt(1)?2:1),r);var a,i,o,s,l=Math.abs(r),c=r<0?"-":"";if(t.match(/^00+$/))return c+m(l,t.length);if(t.match(/^[#?]+$/))return a=""+r,0===r&&(a=""),a.length>t.length?a:z(t.substr(0,t.length-a.length))+a;if(i=t.match(P))return function(e,t,r){return r+(0===t?"":""+t)+ve(" ",e[1].length+2+e[4].length)}(i,l,c);if(t.match(/^#+0+$/))return c+m(l,t.length-t.indexOf("0"));if(i=t.match(R))return a=(a=(""+r).replace(/^([^\.]+)$/,"$1."+z(i[1])).replace(/\.$/,"."+z(i[1]))).replace(/\.(\d*)$/,(function(e,t){return"."+t+ve("0",z(i[1]).length-t.length)})),-1!==t.indexOf("0.")?a:a.replace(/^0\./,".");if(t=t.replace(/^#+([0.])/,"$1"),i=t.match(/^(0*)\.(#*)$/))return c+(""+l).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,i[1].length?"0.":".");if(i=t.match(/^#{1,3},##0(\.?)$/))return c+M(""+l);if(i=t.match(/^#,##0\.([#0]*0)$/))return r<0?"-"+X(e,t,-r):M(""+r)+"."+ve("0",i[1].length);if(i=t.match(/^#,#*,#0/))return X(e,t.replace(/^#,#*,/,""),r);if(i=t.match(/^([0#]+)(\\?-([0#]+))+$/))return a=d(X(e,t.replace(/[\\-]/g,""),r)),o=0,d(d(t.replace(/\\/g,"")).replace(/[0#]/g,(function(e){return o-1||"\\"==r&&"-"==e.charAt(t+1)&&"0#".indexOf(e.charAt(t+2))>-1););break;case"?":for(;e.charAt(++t)===r;);break;case"*":++t," "!=e.charAt(t)&&"*"!=e.charAt(t)||++t;break;case"(":case")":++t;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":for(;t-1;);break;default:++t}return!1}var q=/\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/;function Y(e,t){if(null==t)return!1;var r=parseFloat(t[2]);switch(t[1]){case"=":if(e==r)return!0;break;case">":if(e>r)return!0;break;case"<":if(e":if(e!=r)return!0;break;case">=":if(e>=r)return!0;break;case"<=":if(e<=r)return!0}return!1}function Z(e,t){var r=function(e){for(var t=[],r=!1,n=0,a=0;n-1&&--n,r.length>4)throw new Error("cannot find right format for |"+r.join("|")+"|");if("number"!=typeof t)return[4,4===r.length||a>-1?r[r.length-1]:"@"];switch("number"!=typeof t||isFinite(t)||(t=0),r.length){case 1:r=a>-1?["General","General","General",r[0]]:[r[0],r[0],r[0],"@"];break;case 2:r=a>-1?[r[0],r[0],r[0],r[1]]:[r[0],r[1],r[0],"@"];break;case 3:r=a>-1?[r[0],r[1],r[0],r[2]]:[r[0],r[1],r[2],"@"]}var i=t>0?r[0]:t<0?r[1]:r[2];if(-1===r[0].indexOf("[")&&-1===r[1].indexOf("["))return[n,i];if(null!=r[0].match(/\[[=<>]/)||null!=r[1].match(/\[[=<>]/)){var o=r[0].match(q),s=r[1].match(q);return Y(t,o)?[n,r[0]]:Y(t,s)?[n,r[1]]:[n,r[null!=o&&null!=s?2:1]]}return[n,i]}function K(e,t,r){null==r&&(r={});var n="";switch(typeof e){case"string":n="m/d/yy"==e&&r.dateNF?r.dateNF:e;break;case"number":null==(n=14==e&&r.dateNF?r.dateNF:(null!=r.table?r.table:S)[e])&&(n=r.table&&r.table[k[e]]||S[k[e]]),null==n&&(n=_[e]||"General")}if(w(n,0))return F(t,r);t instanceof Date&&(t=fe(t,r.date1904));var a=Z(n,t);if(w(a[1]))return F(t,r);if(!0===t)t="TRUE";else if(!1===t)t="FALSE";else{if(""===t||null==t)return"";if(isNaN(t)&&a[1].indexOf("0")>-1)return"#NUM!";if(!isFinite(t)&&a[1].indexOf("0")>-1)return"#DIV/0!"}return function(e,t,r,n){for(var a,i,o,s=[],l="",c=0,f="",h="t",u="H";c=12?e.charAt(c+2):f),m.t="T",u="h",c+=3):"AM/PM"===e.substr(c,5).toUpperCase()?(null!=a&&(m.v=a.H>=12?"PM":"AM"),m.t="T",c+=5,u="h"):"上午/下午"===e.substr(c,5).toUpperCase()?(null!=a&&(m.v=a.H>=12?"下午":"上午"),m.t="T",c+=5,u="h"):(m.t="t",++c),null==a&&"T"===m.t)return"";s[s.length]=m,h=f;break;case"[":for(l=f;"]"!==e.charAt(c++)&&c-1&&(l=(l.match(/\$([^-\[\]]*)/)||[])[1]||"$",J(e)||(s[s.length]={t:"t",v:l}));break;case".":if(null!=a){for(l=f;++c-1;)l+=f;s[s.length]={t:"n",v:l};break;case"?":for(l=f;e.charAt(++c)===f;)l+=f;s[s.length]={t:f,v:l},h=f;break;case"*":++c," "!=e.charAt(c)&&"*"!=e.charAt(c)||++c;break;case"(":case")":s[s.length]={t:1===n?"t":f,v:f},++c;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":for(l=f;c-1;)l+=e.charAt(c);s[s.length]={t:"D",v:l};break;case" ":s[s.length]={t:f,v:f},++c;break;case"$":s[s.length]={t:"t",v:"$"},++c;break;default:if(-1===",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP".indexOf(f))throw new Error("unrecognized character "+f+" in "+e);s[s.length]={t:"t",v:f},++c}var g,v,b=0,x=0;for(c=s.length-1,h="t";c>=0;--c)switch(s[c].t){case"h":case"H":s[c].t=u,h="h",b<1&&(b=1);break;case"s":(g=s[c].v.match(/\.0+$/))&&(x=Math.max(x,g[0].length-1),b=4),b<3&&(b=3);case"d":case"y":case"e":h=s[c].t;break;case"M":h=s[c].t,b<2&&(b=2);break;case"m":"s"===h&&(s[c].t="M",b<2&&(b=2));break;case"X":break;case"Z":b<1&&s[c].v.match(/[Hh]/)&&(b=1),b<2&&s[c].v.match(/[Mm]/)&&(b=2),b<3&&s[c].v.match(/[Ss]/)&&(b=3)}switch(b){case 0:break;case 1:case 2:case 3:a.u>=.5&&(a.u=0,++a.S),a.S>=60&&(a.S=0,++a.M),a.M>=60&&(a.M=0,++a.H),a.H>=24&&(a.H=0,++a.D,(v=T(a.D)).u=a.u,v.S=a.S,v.M=a.M,v.H=a.H,a=v);break;case 4:switch(x){case 1:a.u=Math.round(10*a.u)/10;break;case 2:a.u=Math.round(100*a.u)/100;break;case 3:a.u=Math.round(1e3*a.u)/1e3}a.u>=1&&(a.u=0,++a.S),a.S>=60&&(a.S=0,++a.M),a.M>=60&&(a.M=0,++a.H),a.H>=24&&(a.H=0,++a.D,(v=T(a.D)).u=a.u,v.S=a.S,v.M=a.M,v.H=a.H,a=v)}var y,C="";for(c=0;c0){40==C.charCodeAt(0)?(S=t<0&&45===C.charCodeAt(0)?-t:t,k=V("n",C,S)):(k=V("n",C,S=t<0&&n>1?-t:t),S<0&&s[0]&&"t"==s[0].t&&(k=k.substr(1),s[0].v="-"+s[0].v)),y=k.length-1;var A=s.length;for(c=0;c-1){A=c;break}var D=s.length;if(A===s.length&&-1===k.indexOf("E")){for(c=s.length-1;c>=0;--c)null!=s[c]&&-1!=="n?".indexOf(s[c].t)&&(y>=s[c].v.length-1?(y-=s[c].v.length,s[c].v=k.substr(y+1,s[c].v.length)):y<0?s[c].v="":(s[c].v=k.substr(0,y+1),y=-1),s[c].t="t",D=c);y>=0&&D=0;--c)if(null!=s[c]&&-1!=="n?".indexOf(s[c].t)){for(i=s[c].v.indexOf(".")>-1&&c===A?s[c].v.indexOf(".")-1:s[c].v.length-1,_=s[c].v.substr(i+1);i>=0;--i)y>=0&&("0"===s[c].v.charAt(i)||"#"===s[c].v.charAt(i))&&(_=k.charAt(y--)+_);s[c].v=_,s[c].t="t",D=c}for(y>=0&&D-1&&c===A?s[c].v.indexOf(".")+1:0,_=s[c].v.substr(0,i);i-1&&(S=n>1&&t<0&&c>0&&"-"===s[c-1].v?-t:t,s[c].v=V(s[c].t,s[c].v,S),s[c].t="t");var O="";for(c=0;c!==s.length;++c)null!=s[c]&&(O+=s[c].v);return O}(a[1],t,r,a[0])}function Q(e,t){if("number"!=typeof t){t=+t||-1;for(var r=0;r<392;++r)if(null!=S[r]){if(S[r]==e){t=r;break}}else t<0&&(t=r);t<0&&(t=391)}return S[t]=e,t}var ee={"d.m":"d\\.m"};var te=function(){var e={};e.version="1.2.0";var t=function(){for(var e=0,t=new Array(256),r=0;256!=r;++r)e=1&(e=1&(e=1&(e=1&(e=1&(e=1&(e=1&(e=1&(e=r)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1,t[r]=e;return"undefined"!=typeof Int32Array?new Int32Array(t):t}();var r=function(e){var t=0,r=0,n=0,a="undefined"!=typeof Int32Array?new Int32Array(4096):new Array(4096);for(n=0;256!=n;++n)a[n]=e[n];for(n=0;256!=n;++n)for(r=e[n],t=256+n;t<4096;t+=256)r=a[t]=r>>>8^e[255&r];var i=[];for(n=1;16!=n;++n)i[n-1]="undefined"!=typeof Int32Array&&"function"==typeof a.subarray?a.subarray(256*n,256*n+256):a.slice(256*n,256*n+256);return i}(t),n=r[0],a=r[1],i=r[2],o=r[3],s=r[4],l=r[5],c=r[6],f=r[7],h=r[8],u=r[9],p=r[10],d=r[11],m=r[12],g=r[13],v=r[14];return e.table=t,e.bstr=function(e,r){for(var n=~r,a=0,i=e.length;a>>8^t[255&(n^e.charCodeAt(a++))];return~n},e.buf=function(e,r){for(var b=~r,x=e.length-15,w=0;w>8&255]^m[e[w++]^b>>16&255]^d[e[w++]^b>>>24]^p[e[w++]]^u[e[w++]]^h[e[w++]]^f[e[w++]]^c[e[w++]]^l[e[w++]]^s[e[w++]]^o[e[w++]]^i[e[w++]]^a[e[w++]]^n[e[w++]]^t[e[w++]];for(x+=15;w>>8^t[255&(b^e[w++])];return~b},e.str=function(e,r){for(var n=~r,a=0,i=e.length,o=0,s=0;a>>8^t[255&(n^o)]:o<2048?n=(n=n>>>8^t[255&(n^(192|o>>6&31))])>>>8^t[255&(n^(128|63&o))]:o>=55296&&o<57344?(o=64+(1023&o),s=1023&e.charCodeAt(a++),n=(n=(n=(n=n>>>8^t[255&(n^(240|o>>8&7))])>>>8^t[255&(n^(128|o>>2&63))])>>>8^t[255&(n^(128|s>>6&15|(3&o)<<4))])>>>8^t[255&(n^(128|63&s))]):n=(n=(n=n>>>8^t[255&(n^(224|o>>12&15))])>>>8^t[255&(n^(128|o>>6&63))])>>>8^t[255&(n^(128|63&o))];return~n},e}(),re=function(){var e,t={};function o(e){if("/"==e.charAt(e.length-1))return-1===e.slice(0,-1).indexOf("/")?e:o(e.slice(0,-1));var t=e.lastIndexOf("/");return-1===t?e:e.slice(0,t+1)}function f(e){if("/"==e.charAt(e.length-1))return f(e.slice(0,-1));var t=e.lastIndexOf("/");return-1===t?e:e.slice(t+1)}function d(e,t){"string"==typeof t&&(t=new Date(t));var r=t.getHours();r=(r=r<<6|t.getMinutes())<<5|t.getSeconds()>>>1,e.write_shift(2,r);var n=t.getFullYear()-1980;n=(n=n<<4|t.getMonth()+1)<<5|t.getDate(),e.write_shift(2,n)}function m(e){Tt(e,0);for(var t={},r=0;e.l<=e.length-4;){var n=e.read_shift(2),a=e.read_shift(2),i=e.l+a,o={};switch(n){case 21589:1&(r=e.read_shift(1))&&(o.mtime=e.read_shift(4)),a>5&&(2&r&&(o.atime=e.read_shift(4)),4&r&&(o.ctime=e.read_shift(4))),o.mtime&&(o.mt=new Date(1e3*o.mtime));break;case 1:var s=e.read_shift(4),l=e.read_shift(4);o.usz=l*Math.pow(2,32)+s,s=e.read_shift(4),l=e.read_shift(4),o.csz=l*Math.pow(2,32)+s}e.l=i,t[n]=o}return t}function g(){return e||(e=undefined)}function v(e,t){if(80==e[0]&&75==e[1])return ge(e,t);if(109==(32|e[0])&&105==(32|e[1]))return function(e,t){if("mime-version:"!=M(e.slice(0,13)).toLowerCase())throw new Error("Unsupported MAD header");var r=t&&t.root||"",n=(a&&Buffer.isBuffer(e)?e.toString("binary"):M(e)).split("\r\n"),i=0,o="";for(i=0;i0&&(r=(r=r.slice(0,r.length-1)).slice(0,r.lastIndexOf("/")+1),o.slice(0,r.length)!=r););var s=(n[1]||"").match(/boundary="(.*?)"/);if(!s)throw new Error("MAD cannot find boundary");var l="--"+(s[1]||""),c=[],f=[],h={FileIndex:c,FullPaths:f};C(h);var u,p=0;for(i=0;i=a&&(u-=a),!o[u]){l=[];var d=[];for(h=u;h>=0;){d[h]=!0,o[h]=!0,s[s.length]=h,l.push(e[h]);var m=r[Math.floor(4*h/n)];if(n<4+(p=4*h&c))throw new Error("FAT boundary crossed: "+h+" 4 "+n);if(!e[m])break;if(d[h=xt(e[m],p)])break}i[u]={nodes:s,data:Ye([l])}}return i}(v,o,f,c);o0&&s!==T&&(S[s].name="!MiniFAT"),S[f[0]].name="!FAT",S.fat_addrs=f,S.ssz=c;var k=[],_=[],A=[];!function(e,t,r,n,a,i,o,s){for(var l,c=0,f=n.length?2:0,h=t[e].data,u=0,p=0;u0&&c!==T&&(t[c].name="!StreamData")):m.size>=4096?(m.storage="fat",void 0===t[m.start]&&(t[m.start]=w(r,m.start,t.fat_addrs,t.ssz)),t[m.start].name=m.name,m.content=t[m.start].data.slice(0,m.size)):(m.storage="minifat",m.size<0?m.size=0:c!==T&&m.start!==T&&t[c]&&(m.content=b(m,t[c].data,(t[s]||{}).data))),m.content&&Tt(m.content,0),i[l]=m,o.push(m)}}(o,S,v,k,n,{},_,s),function(e,t,r){for(var n=0,a=0,i=0,o=0,s=0,l=r.length,c=[],f=[];n0&&o>=0;)i.push(t.slice(o*A,o*A+A)),a-=A,o=xt(r,4*o);return 0===i.length?Dt(0):h(i).slice(0,e.size)}function x(e,t,r,n,a){var i=T;if(e===T){if(0!==t)throw new Error("DIFAT chain shorter than expected")}else if(-1!==e){var o=r[e],s=(n>>>2)-1;if(!o)return;for(var l=0;l=1&&x(xt(o,n-4),t-1,r,n,a)}}function w(e,t,r,n,a){var i=[],o=[];a||(a=[]);var s=n-1,l=0,c=0;for(l=t;l>=0;){a[l]=!0,i[i.length]=l,o.push(e[l]);var f=r[Math.floor(4*l/n)];if(n<4+(c=4*l&s))throw new Error("FAT boundary crossed: "+l+" 4 "+n);if(!e[f])break;l=xt(e[f],c)}return{nodes:i,data:Ye([o])}}function y(e,t){return new Date(1e3*(bt(e,t+4)/1e7*Math.pow(2,32)+bt(e,t)/1e7-11644473600))}function C(e,t){var r=t||{},n=r.root||"Root Entry";if(e.FullPaths||(e.FullPaths=[]),e.FileIndex||(e.FileIndex=[]),e.FullPaths.length!==e.FileIndex.length)throw new Error("inconsistent CFB structure");0===e.FullPaths.length&&(e.FullPaths[0]=n+"/",e.FileIndex[0]={name:n,type:5}),r.CLSID&&(e.FileIndex[0].clsid=r.CLSID),function(e){var t="Sh33tJ5";if(re.find(e,"/"+t))return;var r=Dt(4);r[0]=55,r[1]=r[3]=50,r[2]=54,e.FileIndex.push({name:t,type:2,content:r,size:4,L:69,R:69,C:69}),e.FullPaths.push(e.FullPaths[0]+t),S(e)}(e)}function S(e,t){C(e);for(var r=!1,n=!1,a=e.FullPaths.length-1;a>=0;--a){var i=e.FileIndex[a];switch(i.type){case 0:n?r=!0:(e.FileIndex.pop(),e.FullPaths.pop());break;case 1:case 2:case 5:n=!0,isNaN(i.R*i.L*i.C)&&(r=!0),i.R>-1&&i.L>-1&&i.R==i.L&&(r=!0);break;default:r=!0}}if(r||t){var s=new Date(1987,1,19),l=0,c=Object.create?Object.create(null):{},h=[];for(a=0;a1?1:-1,p.size=0,p.type=5;else if("/"==d.slice(-1)){for(l=a+1;l=h.length?-1:l,l=a+1;l=h.length?-1:l,p.type=1}else o(e.FullPaths[a+1]||"")==o(d)&&(p.R=a+1),p.type=2}}}function k(e,t){var r=t||{};if("mad"==r.fileType)return function(e,t){for(var r=t||{},n=r.boundary||"SheetJS",i=["MIME-Version: 1.0",'Content-Type: multipart/related; boundary="'+(n="------="+n).slice(2)+'"',"","",""],o=e.FullPaths[0],s=o,l=e.FileIndex[0],c=1;c=32&&d<128&&++u;var g=u>=4*p/5;i.push(n),i.push("Content-Location: "+(r.root||"file:///C:/SheetJS/")+s),i.push("Content-Transfer-Encoding: "+(g?"quoted-printable":"base64")),i.push("Content-Type: "+xe(l,s)),i.push(""),i.push(g?ye(h):we(h))}return i.push(n+"--\r\n"),i.join("\r\n")}(e,r);if(S(e),"zip"===r.fileType)return function(e,t){var r=t||{},n=[],a=[],i=Dt(1),o=r.compression?8:0,s=0,l=0,f=0,u=0,p=0,m=e.FullPaths[0],g=m,v=e.FileIndex[0],b=[],x=0;for(l=1;l0&&(i<4096?t+=i+63>>6:r+=i+511>>9)}}for(var o=e.FullPaths.length+3>>2,s=t+127>>7,l=(t+7>>3)+r+o+s,c=l+127>>7,f=c<=109?0:Math.ceil((c-109)/127);l+c+f+127>>7>c;)f=++c<=109?0:Math.ceil((c-109)/127);var h=[1,f,c,s,o,r,t,0];return e.FileIndex[0].size=t<<6,h[7]=(e.FileIndex[0].start=h[0]+h[1]+h[2]+h[3]+h[4]+h[5])+(h[6]+7>>3),h}(e),i=Dt(n[7]<<9),o=0,s=0;for(o=0;o<8;++o)i.write_shift(1,O[o]);for(o=0;o<8;++o)i.write_shift(2,0);for(i.write_shift(2,62),i.write_shift(2,3),i.write_shift(2,65534),i.write_shift(2,9),i.write_shift(2,6),o=0;o<3;++o)i.write_shift(2,0);for(i.write_shift(4,0),i.write_shift(4,n[2]),i.write_shift(4,n[0]+n[1]+n[2]+n[3]-1),i.write_shift(4,0),i.write_shift(4,4096),i.write_shift(4,n[3]?n[0]+n[1]+n[2]-1:T),i.write_shift(4,n[3]),i.write_shift(-4,n[1]?n[0]-1:T),i.write_shift(4,n[1]),o=0;o<109;++o)i.write_shift(-4,o>9)));for(l(n[6]+7>>3);511&i.l;)i.write_shift(-4,E.ENDOFCHAIN);for(s=o=0,f=0;f=4096||(p.start=s,l(u+63>>6)));for(;511&i.l;)i.write_shift(-4,E.ENDOFCHAIN);for(o=0;o31&&(console.error("Name "+g+" will be truncated to "+g.slice(0,31)),g=g.slice(0,31)),u=2*(g.length+1),i.write_shift(64,g,"utf16le"),i.write_shift(2,u),i.write_shift(1,p.type),i.write_shift(1,p.color),i.write_shift(-4,p.L),i.write_shift(-4,p.R),i.write_shift(-4,p.C),p.clsid)i.write_shift(16,p.clsid,"hex");else for(f=0;f<4;++f)i.write_shift(4,0);i.write_shift(4,p.state||0),i.write_shift(4,0),i.write_shift(4,0),i.write_shift(4,0),i.write_shift(4,0),i.write_shift(4,p.start),i.write_shift(4,p.size),i.write_shift(4,0)}else{for(f=0;f<17;++f)i.write_shift(4,0);for(f=0;f<3;++f)i.write_shift(4,-1);for(f=0;f<12;++f)i.write_shift(4,0)}}for(o=1;o=4096)if(i.l=p.start+1<<9,a&&Buffer.isBuffer(p.content))p.content.copy(i,i.l,0,p.size),i.l+=p.size+511&-512;else{for(f=0;f0&&p.size<4096)if(a&&Buffer.isBuffer(p.content))p.content.copy(i,i.l,0,p.size),i.l+=p.size+63&-64;else{for(f=0;f>16|U>>8|U));function B(e,t){var r=z[255&e];return t<=8?r>>>8-t:(r=r<<8|z[e>>8&255],t<=16?r>>>16-t:(r=r<<8|z[e>>16&255])>>>24-t)}function W(e,t){var r=7&t,n=t>>>3;return(e[n]|(r<=6?0:e[n+1]<<8))>>>r&3}function H(e,t){var r=7&t,n=t>>>3;return(e[n]|(r<=5?0:e[n+1]<<8))>>>r&7}function X(e,t){var r=7&t,n=t>>>3;return(e[n]|(r<=3?0:e[n+1]<<8))>>>r&31}function V(e,t){var r=7&t,n=t>>>3;return(e[n]|(r<=1?0:e[n+1]<<8))>>>r&127}function G(e,t,r){var n=7&t,a=t>>>3,i=(1<>>n;return r<8-n?o&i:(o|=e[a+1]<<8-n,r<16-n?o&i:(o|=e[a+2]<<16-n,r<24-n?o&i:(o|=e[a+3]<<24-n)&i))}function J(e,t,r){var n=7&t,a=t>>>3;return n<=5?e[a]|=(7&r)<>8-n),t+3}function q(e,t,r){return r=(1&r)<<(7&t),e[t>>>3]|=r,t+1}function Y(e,t,r){var n=t>>>3;return r<<=7&t,e[n]|=255&r,r>>>=8,e[n+1]=r,t+8}function Z(e,t,r){var n=t>>>3;return r<<=7&t,e[n]|=255&r,r>>>=8,e[n+1]=255&r,e[n+2]=r>>>8,t+16}function K(e,t){var r=e.length,n=2*r>t?2*r:t+5,i=0;if(r>=t)return e;if(a){var o=l(n);if(e.copy)e.copy(o);else for(;i>n-h,o=(1<=0;--o)t[s|o<0;)t[t.l++]=e[r++]}return t.l}(t,r):function(t,r){for(var a=0,i=0,o=$?new Uint16Array(32768):[];i0;)r[r.l++]=t[i++];a=8*r.l}else{a=J(r,a,+!(i+s!=t.length)+2);for(var l=0;s-- >0;){var c=t[i],f=-1,h=0;if((f=o[l=32767&(l<<5^c)])&&((f|=-32768&i)>i&&(f-=32768),f2){(c=n[h])<=22?a=Y(r,a,z[c+1]>>1)-1:(Y(r,a,3),Y(r,a+=5,z[c-23]>>5),a+=3);var u=c<8?0:c-4>>2;u>0&&(Z(r,a,h-P[c]),a+=u),c=e[i-f],a=Y(r,a,z[c]>>3),a-=3;var p=c<4?0:c-2>>1;p>0&&(Z(r,a,i-f-R[c]),a+=p);for(var d=0;d>>3;return(e[n]|(r<=4?0:e[n+1]<<8))>>>r&15}(e,t+=5)+4;t+=4;for(var i=0,o=$?new Uint8Array(19):Q(19),s=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],l=1,c=$?new Uint8Array(8):Q(8),f=$?new Uint8Array(8):Q(8),h=o.length,u=0;u>8-d;for(var m=(1<<7-d)-1;m>=0;--m)fe[p|m<>>=3){case 16:for(i=3+W(e,t),t+=2,p=g[g.length-1];i-- >0;)g.push(p);break;case 17:for(i=3+H(e,t),t+=3;i-- >0;)g.push(0);break;case 18:for(i=11+V(e,t),t+=7;i-- >0;)g.push(0);break;default:g.push(p),l>>0,c=0,f=0;!(1&n);)if(n=H(e,r),r+=3,n>>>1!=0)for(n>>1==1?(c=9,f=5):(r=pe(e,r),c=he,f=ue);;){!t&&o>>1==1?ne[h]:le[h];if(r+=15&u,(u>>>=4)>>>8&255){if(256==u)break;var p=(u-=257)<8?0:u-4>>2;p>5&&(p=0);var d=i+P[u];p>0&&(d+=G(e,r,p),r+=p),h=G(e,r,f),r+=15&(u=n>>>1==1?ae[h]:ce[h]);var m=(u>>>=4)<4?0:u-2>>1,g=R[u];for(m>0&&(g+=G(e,r,m),r+=m),!t&&o>>3]|e[1+(r>>>3)]<<8;if(r+=32,v>0)for(!t&&o0;)a[i++]=e[r>>>3],r+=8}return t?[a,r+7>>>3]:[a.slice(0,i),r+7>>>3]}(e.slice(e.l||0),t);return e.l+=r[1],r[0]}function me(e,t){if(!e)throw new Error(t);"undefined"!=typeof console&&console.error(t)}function ge(e,t){var r=e;Tt(r,0);var n={FileIndex:[],FullPaths:[]};C(n,{root:t.root});for(var a=r.length-4;(80!=r[a]||75!=r[a+1]||5!=r[a+2]||6!=r[a+3])&&a>=0;)--a;r.l=a+4,r.l+=4;var i=r.read_shift(2);r.l+=6;var o=r.read_shift(4);for(r.l=o,a=0;a>>=5);r>>>=4,n.setMilliseconds(0),n.setFullYear(r+1980),n.setMonth(i-1),n.setDate(a);var o=31&t,s=63&(t>>>=5);return t>>>=6,n.setHours(t),n.setMinutes(s),n.setSeconds(o<<1),n}(e);if(8257&i)throw new Error("Unsupported ZIP encryption");e.read_shift(4);for(var l=e.read_shift(4),c=e.read_shift(4),f=e.read_shift(2),h=e.read_shift(2),u="",p=0;p>2,s=(3&n)<<4|(a=e[f++])>>4,l=(15&a)<<2|(i=e[f++])>>6,c=63&i,isNaN(a)?l=c=64:isNaN(i)&&(c=64),r+=t.charAt(o)+t.charAt(s)+t.charAt(l)+t.charAt(c);return r}(new Uint8Array(ne(a)));return chrome.downloads.download({url:l,filename:e,saveAs:!0})}}if("undefined"!=typeof $&&"undefined"!=typeof File&&"undefined"!=typeof Folder)try{var c=File(e);return c.open("w"),c.encoding="binary",Array.isArray(r)&&(r=function(e){if(Array.isArray(e))return e.map((function(e){return String.fromCharCode(e)})).join("");for(var t=[],r=0;r=60&&e<61)return e;var t=new Date;return t.setTime(24*(e>60?e:e+1)*60*60*1e3+se),t}var ue=/^(\d+):(\d+)(:\d+)?(\.\d+)?$/,pe=/^(\d+)-(\d+)-(\d+)$/,de=/^(\d+)-(\d+)-(\d+)[T ](\d+):(\d+)(:\d+)?(\.\d+)?$/;function me(e,t){if(e instanceof Date)return e;var r=e.match(ue);return r?new Date((t?ce:le)+1e3*(60*(60*parseInt(r[1],10)+parseInt(r[2],10))+(r[3]?parseInt(r[3].slice(1),10):0))+(r[4]?parseInt((r[4]+"000").slice(1,4),10):0)):(r=e.match(pe))?new Date(Date.UTC(+r[1],+r[2]-1,+r[3],0,0,0,0)):(r=e.match(de))?new Date(Date.UTC(+r[1],+r[2]-1,+r[3],+r[4],+r[5],r[6]&&parseInt(r[6].slice(1),10)||0,r[7]&&parseInt((r[7]+"0000").slice(1,4),10)||0)):new Date(e)}function ge(e){if("undefined"!=typeof JSON&&!Array.isArray(e))return JSON.parse(JSON.stringify(e));if("object"!=typeof e||null==e)return e;if(e instanceof Date)return new Date(e.getTime());var t={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=ge(e[r]));return t}function ve(e,t){for(var r="";r.length3&&-1==Se.indexOf(t))return i}else if(t.replace(/[ap]m?/,"").match(/[a-z]/))return i;return o<0||o>8099||e.match(/[^-0-9:,\/\\\ ]/)?i:a}function _e(e){return new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()))}function Ae(e,t,r){if(e.FullPaths){var n;if(Array.isArray(r)&&"string"==typeof r[0]&&(r=r.join("")),"string"==typeof r)return n=a?i(r):function(e){for(var t=[],r=0,n=e.length+250,a=s(e.length+255),i=0;i>6&31,a[r++]=128|63&o;else if(o>=55296&&o<57344){o=64+(1023&o);var l=1023&e.charCodeAt(++i);a[r++]=240|o>>8&7,a[r++]=128|o>>2&63,a[r++]=128|l>>6&15|(3&o)<<4,a[r++]=128|63&l}else a[r++]=224|o>>12&15,a[r++]=128|o>>6&63,a[r++]=128|63&o;r>n&&(t.push(a.slice(0,r)),r=0,a=s(65535),n=65530)}return t.push(a.slice(0,r)),h(t)}(r),re.utils.cfb_add(e,t,n);re.utils.cfb_add(e,t,r)}else e.file(t,r)}var Te='\r\n',De=oe({""":'"',"'":"'",">":">","<":"<","&":"&"}),Oe=/[&<>'"]/g,Fe=/[\u0000-\u0008\u000b-\u001f\uFFFE-\uFFFF]/g;function Ee(e){return(e+"").replace(Oe,(function(e){return De[e]})).replace(Fe,(function(e){return"_x"+("000"+e.charCodeAt(0).toString(16)).slice(-4)+"_"}))}var Me=/[\u0000-\u001f]/g;function Ne(e){return(e+"").replace(Oe,(function(e){return De[e]})).replace(/\n/g,"
").replace(Me,(function(e){return"&#x"+("000"+e.charCodeAt(0).toString(16)).slice(-4)+";"}))}function Ie(e){for(var t="",r=0,n=0,a=0,i=0,o=0,s=0;r191&&n<224?(o=(31&n)<<6,o|=63&a,t+=String.fromCharCode(o)):(i=e.charCodeAt(r++),n<240?t+=String.fromCharCode((15&n)<<12|(63&a)<<6|63&i):(s=((7&n)<<18|(63&a)<<12|(63&i)<<6|63&(o=e.charCodeAt(r++)))-65536,t+=String.fromCharCode(55296+(s>>>10&1023)),t+=String.fromCharCode(56320+(1023&s)))));return t}function Pe(e){var t,r,n,a=s(2*e.length),i=1,o=0,l=0;for(r=0;r>>10&1023),t=56320+(1023&t)),0!==l&&(a[o++]=255&l,a[o++]=l>>>8,l=0),a[o++]=t%256,a[o++]=t>>>8;return a.slice(0,o).toString("ucs2")}function Re(e){return i(e,"binary").toString("utf8")}var Le="foo bar baz☃🍣",Ue=a&&(Re(Le)==Ie(Le)&&Re||Pe(Le)==Ie(Le)&&Pe)||Ie,$e=a?function(e){return i(e,"utf8").toString("binary")}:function(e){for(var t=[],r=0,n=0,a=0;r>6))),t.push(String.fromCharCode(128+(63&n)));break;case n>=55296&&n<57344:n-=55296,a=e.charCodeAt(r++)-56320+(n<<10),t.push(String.fromCharCode(240+(a>>18&7))),t.push(String.fromCharCode(144+(a>>12&63))),t.push(String.fromCharCode(128+(a>>6&63))),t.push(String.fromCharCode(128+(63&a)));break;default:t.push(String.fromCharCode(224+(n>>12))),t.push(String.fromCharCode(128+(n>>6&63))),t.push(String.fromCharCode(128+(63&n)))}return t.join("")},ze=function(){var e=[["nbsp"," "],["middot","·"],["quot",'"'],["apos","'"],["gt",">"],["lt","<"],["amp","&"]].map((function(e){return[new RegExp("&"+e[0]+";","ig"),e[1]]}));return function(t){for(var r=t.replace(/^[\t\n\r ]+/,"").replace(/(^|[^\t\n\r ])[\t\n\r ]+$/,"$1").replace(/>\s+/g,">").replace(/\b\s+/g,"\n").replace(/<[^<>]*>/g,""),n=0;n"+t+""}function We(e){return ie(e).map((function(t){return" "+t+'="'+e[t]+'"'})).join("")}function He(e,t,r){return"<"+e+(null!=r?We(r):"")+(null!=t?(t.match(je)?' xml:space="preserve"':"")+">"+t+""}function Xe(e,t){try{return e.toISOString().replace(/\.\d*/,"")}catch(e){if(t)throw e}return""}var Ve={CORE_PROPS:"http://schemas.openxmlformats.org/package/2006/metadata/core-properties",CUST_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties",EXT_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties",CT:"http://schemas.openxmlformats.org/package/2006/content-types",RELS:"http://schemas.openxmlformats.org/package/2006/relationships",TCMNT:"http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments",dc:"http://purl.org/dc/elements/1.1/",dcterms:"http://purl.org/dc/terms/",dcmitype:"http://purl.org/dc/dcmitype/",mx:"http://schemas.microsoft.com/office/mac/excel/2008/main",r:"http://schemas.openxmlformats.org/officeDocument/2006/relationships",sjs:"http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties",vt:"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes",xsi:"http://www.w3.org/2001/XMLSchema-instance",xsd:"http://www.w3.org/2001/XMLSchema"},Ge=["http://schemas.openxmlformats.org/spreadsheetml/2006/main","http://purl.oclc.org/ooxml/spreadsheetml/main","http://schemas.microsoft.com/office/excel/2006/main","http://schemas.microsoft.com/office/excel/2006/2"],Je={o:"urn:schemas-microsoft-com:office:office",x:"urn:schemas-microsoft-com:office:excel",ss:"urn:schemas-microsoft-com:office:spreadsheet",dt:"uuid:C2F41010-65B3-11d1-A29F-00AA00C14882",mv:"http://macVmlSchemaUri",v:"urn:schemas-microsoft-com:vml",html:"http://www.w3.org/TR/REC-html40"};var qe=function(e){for(var t=[],r=0;r0&&Buffer.isBuffer(e[0][0])?Buffer.concat(e[0].map((function(e){return Buffer.isBuffer(e)?e:i(e)}))):qe(e)}:qe,Ze=function(e,t,r){for(var n=[],a=t;a0?rt(e,t+4,t+4+r-1):""},at=nt,it=function(e,t){var r=bt(e,t);return r>0?rt(e,t+4,t+4+r-1):""},ot=it,st=function(e,t){var r=2*bt(e,t);return r>0?rt(e,t+4,t+4+r-1):""},lt=st,ct=function(e,t){var r=bt(e,t);return r>0?Ke(e,t+4,t+4+r):""},ft=ct,ht=function(e,t){var r=bt(e,t);return r>0?rt(e,t+4,t+4+r):""},ut=ht,pt=function(e,t){return function(e,t){for(var r=1-2*(e[t+7]>>>7),n=((127&e[t+7])<<4)+(e[t+6]>>>4&15),a=15&e[t+6],i=5;i>=0;--i)a=256*a+e[t+i];return 2047==n?0==a?r*(1/0):NaN:(0==n?n=-1022:(n-=1023,a+=Math.pow(2,52)),r*Math.pow(2,n-52)*a)}(e,t)},dt=pt;a&&(at=function(e,t){if(!Buffer.isBuffer(e))return nt(e,t);var r=e.readUInt32LE(t);return r>0?e.toString("utf8",t+4,t+4+r-1):""},ot=function(e,t){if(!Buffer.isBuffer(e))return it(e,t);var r=e.readUInt32LE(t);return r>0?e.toString("utf8",t+4,t+4+r-1):""},lt=function(e,t){if(!Buffer.isBuffer(e)||!o)return st(e,t);var r=2*e.readUInt32LE(t);return e.toString("utf16le",t+4,t+4+r-1)},ft=function(e,t){if(!Buffer.isBuffer(e)||!o)return ct(e,t);var r=e.readUInt32LE(t);return e.toString("utf16le",t+4,t+4+r)},ut=function(e,t){if(!Buffer.isBuffer(e))return ht(e,t);var r=e.readUInt32LE(t);return e.toString("utf8",t+4,t+4+r)},dt=function(e,t){return Buffer.isBuffer(e)?e.readDoubleLE(t):pt(e,t)});var mt=function(e,t){return e[t]},gt=function(e,t){return 256*e[t+1]+e[t]},vt=function(e,t){var r=256*e[t+1]+e[t];return r<32768?r:-1*(65535-r+1)},bt=function(e,t){return e[t+3]*(1<<24)+(e[t+2]<<16)+(e[t+1]<<8)+e[t]},xt=function(e,t){return e[t+3]<<24|e[t+2]<<16|e[t+1]<<8|e[t]},wt=function(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]};function yt(t,r){var n,i,s,l,c,f,h="",u=[];switch(r){case"dbcs":if(f=this.l,a&&Buffer.isBuffer(this)&&o)h=this.slice(this.l,this.l+2*t).toString("utf16le");else for(c=0;c0?xt:wt)(this,this.l),this.l+=4,n);case 8:case-8:if("f"===r)return i=8==t?dt(this,this.l):dt([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]],0),this.l+=8,i;t=8;case 16:h=et(this,this.l,t)}}return this.l+=t,h}var Ct=function(e,t,r){e[r]=255&t,e[r+1]=t>>>8&255,e[r+2]=t>>>16&255,e[r+3]=t>>>24&255},St=function(e,t,r){e[r]=255&t,e[r+1]=t>>8&255,e[r+2]=t>>16&255,e[r+3]=t>>24&255},kt=function(e,t,r){e[r]=255&t,e[r+1]=t>>>8&255};function _t(e,t,r){var n=0,a=0;if("dbcs"===r){for(a=0;a!=t.length;++a)kt(this,t.charCodeAt(a),this.l+2*a);n=2*t.length}else if("sbcs"===r||"cpstr"==r){for(t=t.replace(/[^\x00-\x7F]/g,"_"),a=0;a!=t.length;++a)this[this.l+a]=255&t.charCodeAt(a);n=t.length}else{if("hex"===r){for(;a>8}for(;this.l>>=8,this[this.l+1]=255&t;break;case 3:n=3,this[this.l]=255&t,t>>>=8,this[this.l+1]=255&t,t>>>=8,this[this.l+2]=255&t;break;case 4:n=4,Ct(this,t,this.l);break;case 8:if(n=8,"f"===r){!function(e,t,r){var n=(t<0||1/t==-1/0?1:0)<<7,a=0,i=0,o=n?-t:t;isFinite(o)?0==o?a=i=0:(a=Math.floor(Math.log(o)/Math.LN2),i=o*Math.pow(2,52-a),a<=-1023&&(!isFinite(i)||i>4|n}(this,t,this.l);break}case 16:break;case-4:n=4,St(this,t,this.l)}}return this.l+=n,this}function At(e,t){var r=et(this,this.l,e.length>>1);if(r!==e)throw new Error(t+"Expected "+e+" saw "+r);this.l+=e.length>>1}function Tt(e,t){e.l=t,e.read_shift=yt,e.chk=At,e.write_shift=_t}function Dt(e){var t=s(e);return Tt(t,0),t}function Ot(e){return""+(e+1)}function Ft(e){if(e<0)throw new Error("invalid column "+e);var t="";for(++e;e;e=Math.floor((e-1)/26))t=String.fromCharCode((e-1)%26+65)+t;return t}function Et(e){for(var t=0,r=0,n=0;n=48&&a<=57?t=10*t+(a-48):a>=65&&a<=90&&(r=26*r+(a-64))}return{c:r-1,r:t-1}}function Mt(e){for(var t=e.c+1,r="";t;t=(t-1)/26|0)r=String.fromCharCode((t-1)%26+65)+r;return r+(e.r+1)}function Nt(e){var t=e.indexOf(":");return-1==t?{s:Et(e),e:Et(e)}:{s:Et(e.slice(0,t)),e:Et(e.slice(t+1))}}function It(e,t){return void 0===t||"number"==typeof t?It(e.s,e.e):("string"!=typeof e&&(e=Mt(e)),"string"!=typeof t&&(t=Mt(t)),e==t?e:e+":"+t)}function Pt(e){var t=Nt(e);return"$"+Ft(t.s.c)+"$"+Ot(t.s.r)+":$"+Ft(t.e.c)+"$"+Ot(t.e.r)}function Rt(e,t){if(!(e||t&&t.biff<=5&&t.biff>=2))throw new Error("empty sheet name");return/[^\w\u4E00-\u9FFF\u3040-\u30FF]/.test(e)?"'"+e.replace(/'/g,"''")+"'":e}function Lt(e){var t={s:{c:0,r:0},e:{c:0,r:0}},r=0,n=0,a=0,i=e.length;for(r=0;n26);++n)r=26*r+a;for(t.s.c=--r,r=0;n9);++n)r=10*r+a;if(t.s.r=--r,n===i||10!=a)return t.e.c=t.s.c,t.e.r=t.s.r,t;for(++n,r=0;n!=i&&!((a=e.charCodeAt(n)-64)<1||a>26);++n)r=26*r+a;for(t.e.c=--r,r=0;n!=i&&!((a=e.charCodeAt(n)-48)<0||a>9);++n)r=10*r+a;return t.e.r=--r,t}function Ut(e,t){var r="d"==e.t&&t instanceof Date;if(null!=e.z)try{return e.w=K(e.z,r?fe(t):t)}catch(e){}try{return e.w=K((e.XF||{}).numFmtId||(r?14:0),r?fe(t):t)}catch(e){return""+t}}function $t(e,t,r){return null==e||null==e.t||"z"==e.t?"":void 0!==e.w?e.w:("d"==e.t&&!e.z&&r&&r.dateNF&&(e.z=r.dateNF),"e"==e.t?jt[e.v]||e.v:Ut(e,null==t?e.v:t))}function zt(e,t,r){var n=r||{},a=e?null!=e["!data"]:n.dense,i=e||(a?{"!data":[]}:{});a&&!i["!data"]&&(i["!data"]=[]);var o=0,s=0;if(i&&null!=n.origin)if("number"==typeof n.origin)o=n.origin;else{var l="string"==typeof n.origin?Et(n.origin):n.origin;o=l.r,s=l.c}var c={s:{c:1e7,r:1e7},e:{c:0,r:0}};if(i["!ref"]){var f=Lt(i["!ref"]);c.s.c=f.s.c,c.s.r=f.s.r,c.e.c=Math.max(c.e.c,f.e.c),c.e.r=Math.max(c.e.r,f.e.r),-1==o&&(c.e.r=o=i["!ref"]?f.e.r+1:0)}else c.s.c=c.e.c=c.s.r=c.e.r=0;for(var h=[],u=!1,p=0;p!=t.length;++p)if(t[p]){if(!Array.isArray(t[p]))throw new Error("aoa_to_sheet expects an array of arrays");var d=o+p;a&&(i["!data"][d]||(i["!data"][d]=[]),h=i["!data"][d]);for(var m=t[p],g=0;g!=m.length;++g)if(void 0!==m[g]){var v={v:m[g],t:""},b=s+g;if(c.s.r>d&&(c.s.r=d),c.s.c>b&&(c.s.c=b),c.e.r0&&(n=e[r][0],i[i.length]=He("Override",null,{PartName:("/"==n[0]?"":"/")+n,ContentType:Ht[r][t.bookType]||Ht[r].xlsx}))},s=function(r){(e[r]||[]).forEach((function(e){i[i.length]=He("Override",null,{PartName:("/"==e[0]?"":"/")+e,ContentType:Ht[r][t.bookType]||Ht[r].xlsx})}))},l=function(t){(e[t]||[]).forEach((function(e){i[i.length]=He("Override",null,{PartName:("/"==e[0]?"":"/")+e,ContentType:a[t][0]})}))};return o("workbooks"),s("sheets"),s("charts"),l("themes"),["strs","styles"].forEach(o),["coreprops","extprops","custprops"].forEach(l),l("vba"),l("comments"),l("threadedcomments"),l("drawings"),s("metadata"),l("people"),!r&&i.length>2&&(i[i.length]="",i[1]=i[1].replace("/>",">")),i.join("")}var Vt={WB:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",SHEET:"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument",HLINK:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",VML:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing",XPATH:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath",XMISS:"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing",XLINK:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink",CXML:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml",CXMLP:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps",CMNT:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",CORE_PROPS:"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties",EXT_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties",CUST_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties",SST:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings",STY:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",THEME:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",CHART:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart",CHARTEX:"http://schemas.microsoft.com/office/2014/relationships/chartEx",CS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet",WS:["http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet","http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet"],DS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet",MS:"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet",IMG:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",DRAW:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",XLMETA:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata",TCMNT:"http://schemas.microsoft.com/office/2017/10/relationships/threadedComment",PEOPLE:"http://schemas.microsoft.com/office/2017/10/relationships/person",CONN:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/connections",VBA:"http://schemas.microsoft.com/office/2006/relationships/vbaProject"};function Gt(e){var t=[Te,He("Relationships",null,{xmlns:Ve.RELS})];return ie(e["!id"]).forEach((function(r){t[t.length]=He("Relationship",null,e["!id"][r])})),t.length>2&&(t[t.length]="",t[1]=t[1].replace("/>",">")),t.join("")}function Jt(e,t,r,n,a,i){if(a||(a={}),e["!id"]||(e["!id"]={}),e["!idx"]||(e["!idx"]=1),t<0)for(t=e["!idx"];e["!id"]["rId"+t];++t);if(e["!idx"]=t+1,a.Id="rId"+t,a.Type=n,a.Target=r,i?a.TargetMode=i:[Vt.HLINK,Vt.XPATH,Vt.XMISS].indexOf(a.Type)>-1&&(a.TargetMode="External"),e["!id"][a.Id])throw new Error("Cannot rewrite rId "+t);return e["!id"][a.Id]=a,e[("/"+a.Target).replace("//","/")]=a,t}var qt=[["cp:category","Category"],["cp:contentStatus","ContentStatus"],["cp:keywords","Keywords"],["cp:lastModifiedBy","LastAuthor"],["cp:lastPrinted","LastPrinted"],["cp:revision","RevNumber"],["cp:version","Version"],["dc:creator","Author"],["dc:description","Comments"],["dc:identifier","Identifier"],["dc:language","Language"],["dc:subject","Subject"],["dc:title","Title"],["dcterms:created","CreatedDate","date"],["dcterms:modified","ModifiedDate","date"]];function Yt(e,t,r,n,a){null==a[e]&&null!=t&&""!==t&&(a[e]=t,t=Ee(t),n[n.length]=r?He(e,t,r):Be(e,t))}var Zt=[["Application","Application","string"],["AppVersion","AppVersion","string"],["Company","Company","string"],["DocSecurity","DocSecurity","string"],["Manager","Manager","string"],["HyperlinksChanged","HyperlinksChanged","bool"],["SharedDoc","SharedDoc","bool"],["LinksUpToDate","LinksUpToDate","bool"],["ScaleCrop","ScaleCrop","bool"],["HeadingPairs","HeadingPairs","raw"],["TitlesOfParts","TitlesOfParts","raw"]];function Kt(e){var t=[Te,He("Properties",null,{xmlns:Ve.CUST_PROPS,"xmlns:vt":Ve.vt})];if(!e)return t.join("");var r=1;return ie(e).forEach((function(n){++r,t[t.length]=He("property",function(e,t){switch(typeof e){case"string":var r=He("vt:lpwstr",Ee(e));return t&&(r=r.replace(/"/g,"_x0022_")),r;case"number":return He((0|e)==e?"vt:i4":"vt:r8",Ee(String(e)));case"boolean":return He("vt:bool",e?"true":"false")}if(e instanceof Date)return He("vt:filetime",Xe(e));throw new Error("Unable to serialize "+e)}(e[n],!0),{fmtid:"{D5CDD505-2E9C-101B-9397-08002B2CF9AE}",pid:r,name:Ee(n)})})),t.length>2&&(t[t.length]="",t[1]=t[1].replace("/>",">")),t.join("")}var Qt=/^\s|\s$|[\t\n\r]/;var er=6;var tr=96;function rr(e){return 96*e/tr}function nr(e,t){var r,n=[Te,He("styleSheet",null,{xmlns:Ge[0],"xmlns:vt":Ve.vt})];return e.SSF&&null!=(r=function(e){var t=[""];return[[5,8],[23,26],[41,44],[50,392]].forEach((function(r){for(var n=r[0];n<=r[1];++n)null!=e[n]&&(t[t.length]=He("numFmt",null,{numFmtId:n,formatCode:Ee(e[n])}))})),1===t.length?"":(t[t.length]="",t[0]=He("numFmts",null,{count:t.length-2}).replace("/>",">"),t.join(""))}(e.SSF))&&(n[n.length]=r),n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',(r=function(e){var t=[];return t[t.length]=He("cellXfs",null),e.forEach((function(e){t[t.length]=He("xf",null,e)})),t[t.length]="",2===t.length?"":(t[0]=He("cellXfs",null,{count:t.length-2}).replace("/>",">"),t.join(""))}(t.cellXfs))&&(n[n.length]=r),n[n.length]='',n[n.length]='',n[n.length]='',n.length>2&&(n[n.length]="",n[1]=n[1].replace("/>",">")),n.join("")}function ar(e,t,r){var n=[21600,21600],a=["m0,0l0",n[1],n[0],n[1],n[0],"0xe"].join(","),i=[He("xml",null,{"xmlns:v":Je.v,"xmlns:o":Je.o,"xmlns:x":Je.x,"xmlns:mv":Je.mv}).replace(/\/>/,">"),He("o:shapelayout",He("o:idmap",null,{"v:ext":"edit",data:e}),{"v:ext":"edit"})],o=65536*e,s=t||[];return s.length>0&&i.push(He("v:shapetype",[He("v:stroke",null,{joinstyle:"miter"}),He("v:path",null,{gradientshapeok:"t","o:connecttype":"rect"})].join(""),{id:"_x0000_t202",coordsize:n.join(","),"o:spt":202,path:a})),s.forEach((function(e){++o,i.push(function(e,t,r){var n=Et(e[0]),a={color2:"#BEFF82",type:"gradient"};"gradient"==a.type&&(a.angle="-180");var i="gradient"==a.type?He("o:fill",null,{type:"gradientUnscaled","v:ext":"view"}):null,o=He("v:fill",i,a),s={on:"t",obscured:"t"};return["",o,He("v:shadow",null,s),He("v:path",null,{"o:connecttype":"none"}),'
','',"","",Be("x:Anchor",[n.c+1,0,n.r+1,0,n.c+3,20,n.r+5,20].join(",")),Be("x:AutoFill","False"),Be("x:Row",String(n.r)),Be("x:Column",String(n.c)),e[1].hidden?"":"","",""].join("")}(e,o))})),i.push(""),i.join("")}function ir(e){var t=[Te,He("comments",null,{xmlns:Ge[0]})],r=[];return t.push(""),e.forEach((function(e){e[1].forEach((function(e){var n=Ee(e.a);-1==r.indexOf(n)&&(r.push(n),t.push(""+n+"")),e.T&&e.ID&&-1==r.indexOf("tc="+e.ID)&&(r.push("tc="+e.ID),t.push("tc="+e.ID+""))}))})),0==r.length&&(r.push("SheetJ5"),t.push("SheetJ5")),t.push(""),t.push(""),e.forEach((function(e){var n=0,a=[],i=0;if(e[1][0]&&e[1][0].T&&e[1][0].ID&&(n=r.indexOf("tc="+e[1][0].ID)),e[1].forEach((function(e){e.a&&(n=r.indexOf(Ee(e.a))),e.T&&++i,a.push(null==e.t?"":Ee(e.t))})),0===i)e[1].forEach((function(n){t.push(''),t.push(Be("t",null==n.t?"":Ee(n.t))),t.push("")}));else{e[1][0]&&e[1][0].T&&e[1][0].ID&&(n=r.indexOf("tc="+e[1][0].ID)),t.push('');for(var o="Comment:\n "+a[0]+"\n",s=1;s")}})),t.push(""),t.length>2&&(t[t.length]="",t[1]=t[1].replace("/>",">")),t.join("")}function or(e,t,r){var n=[Te,He("ThreadedComments",null,{xmlns:Ve.TCMNT}).replace(/[\/]>/,">")];return e.forEach((function(e){var a="";(e[1]||[]).forEach((function(i,o){if(i.T){i.a&&-1==t.indexOf(i.a)&&t.push(i.a);var s={ref:e[0],id:"{54EE7951-7262-4200-6969-"+("000000000000"+r.tcid++).slice(-12)+"}"};0==o?a=s.id:s.parentId=a,i.ID=s.id,i.a&&(s.personId="{54EE7950-7262-4200-6969-"+("000000000000"+t.indexOf(i.a)).slice(-12)+"}"),n.push(He("threadedComment",Be("text",i.t||""),s))}else delete i.ID}))})),n.push(""),n.join("")}var sr=["xlsb","xlsm","xlam","biff8","xla"];try{/(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\d{4}|104[0-7]\d{3}|1048[0-4]\d{2}|10485[0-6]\d|104857[0-6]|[1-9]\d{0,5})(?![_.\(A-Za-z0-9])/g}catch(e){}var lr="undefined"!=typeof Map;function cr(e,t){var r,n,a={min:e+1,max:e+1},i=-1;return t.MDW&&(er=t.MDW),null!=t.width?a.customWidth=1:null!=t.wpx?(r=t.wpx,i=Math.floor((r-5)/er*100+.5)/100):null!=t.wch&&(i=t.wch),i>-1?(a.width=(n=i,Math.round((n*er+5)/er*256)/256),a.customWidth=1):null!=t.width&&(a.width=t.width),t.hidden&&(a.hidden=!0),null!=t.level&&(a.outlineLevel=a.level=t.level),a}function fr(e,t,r){var n,a,i=r.revssf[null!=t.z?t.z:"General"],o=60,s=e.length;if(null==i&&r.ssf)for(;o<392;++o)if(null==r.ssf[o]){n=t.z,a=o,Q(ee[n]||n,a),r.ssf[o]=t.z,r.revssf[t.z]=i=o;break}for(o=0;o!=s;++o)if(e[o].numFmtId===i)return o;return e[s]={numFmtId:i,fontId:0,fillId:0,borderId:0,xfId:0,applyNumberFormat:1},s}function hr(e,t,r){if(e&&e["!ref"]){var n=Lt(e["!ref"]);if(n.e.c=0;--r)n=((16384&n?1:0)|n<<1&32767)^t[r];return 52811^n}(e.password).toString(16).toUpperCase()),He("sheetProtection",null,t)}function mr(e,t,r,n,a,i,o){if(e.c&&r["!comments"].push([t,e.c]),(void 0===e.v||"z"===e.t&&!(n||{}).sheetStubs)&&"string"!=typeof e.f&&void 0===e.z)return"";var s="",l=e.t,c=e.v;if("z"!==e.t)switch(e.t){case"b":s=e.v?"1":"0";break;case"n":isNaN(e.v)?(e.t="e",s=jt[e.v=36]):isFinite(e.v)?s=""+e.v:(e.t="e",s=jt[e.v=7]);break;case"e":s=jt[e.v];break;case"d":if(n&&n.cellDates){var f=me(e.v,o);s=f.toISOString(),f.getUTCFullYear()<1900&&(s=s.slice(s.indexOf("T")+1).replace("Z",""))}else(e=ge(e)).t="n",s=""+(e.v=fe(me(e.v,o),o));void 0===e.z&&(e.z=S[14]);break;default:s=e.v}var h="z"==e.t||null==e.v?"":Be("v",Ee(s)),u={r:t},p=fr(n.cellXfs,e,n);switch(0!==p&&(u.s=p),e.t){case"n":case"z":break;case"d":u.t="d";break;case"b":u.t="b";break;case"e":u.t="e";break;default:if(null==e.v){delete e.t;break}if(e.v.length>32767)throw new Error("Text length must not exceed 32767 characters");if(n&&n.bookSST){h=Be("v",""+function(e,t,r){var n=0,a=e.length;if(r){if(lr?r.has(t):Object.prototype.hasOwnProperty.call(r,t))for(var i=lr?r.get(t):r[t];n16383||f.e.r>1048575){if(t.WTF)throw new Error("Range "+c+" exceeds format limit A1:XFD1048576");f.e.c=Math.min(f.e.c,16383),f.e.r=Math.min(f.e.c,1048575),c=It(f)}n||(n={}),l["!comments"]=[];var h=[];!function(e,t,r,n,a){var i=!1,o={},s=null;if("xlsx"!==n.bookType&&t.vbaraw){var l=t.SheetNames[r];try{t.Workbook&&(l=t.Workbook.Sheets[r].CodeName||l)}catch(e){}i=!0,o.codeName=$e(Ee(l))}if(e&&e["!outline"]){var c={summaryBelow:1,summaryRight:1};e["!outline"].above&&(c.summaryBelow=0),e["!outline"].left&&(c.summaryRight=0),s=(s||"")+He("outlinePr",null,c)}(i||s)&&(a[a.length]=He("sheetPr",s,o))}(l,r,e,t,i),i[i.length]=He("dimension",null,{ref:c}),i[i.length]=function(e,t,r,n){var a={workbookViewId:"0"};return(((n||{}).Workbook||{}).Views||[])[0]&&(a.rightToLeft=n.Workbook.Views[0].RTL?"1":"0"),He("sheetViews",He("sheetView",null,a),{})}(0,0,0,r),t.sheetFormat&&(i[i.length]=He("sheetFormatPr",null,{defaultRowHeight:t.sheetFormat.defaultRowHeight||"16",baseColWidth:t.sheetFormat.baseColWidth||"10",outlineLevelRow:t.sheetFormat.outlineLevelRow||"7"})),null!=l["!cols"]&&l["!cols"].length>0&&(i[i.length]=function(e,t){for(var r,n=[""],a=0;a!=t.length;++a)(r=t[a])&&(n[n.length]=He("col",null,cr(a,r)));return n[n.length]="",n.join("")}(0,l["!cols"])),i[a=i.length]="",l["!links"]=[],null!=l["!ref"]&&(s=function(e,t,r,n){var a,i,o=[],s=[],l=Lt(e["!ref"]),c="",f="",h=[],u=0,p=0,d=e["!rows"],m=null!=e["!data"],g=m?e["!data"]:[],v={r:f},b=-1,x=(((n||{}).Workbook||{}).WBProps||{}).date1904;for(p=l.s.c;p<=l.e.c;++p)h[p]=Ft(p);for(u=l.s.r;u<=l.e.r;++u){s=[],f=Ot(u);var w=m?g[u]:[];for(p=l.s.c;p<=l.e.c;++p){a=h[p]+f;var y=m?w[p]:e[a];void 0!==y&&null!=(c=mr(y,a,e,t,0,0,x))&&s.push(c)}(s.length>0||d&&d[u])&&(v={r:f},d&&d[u]&&((i=d[u]).hidden&&(v.hidden=1),b=-1,i.hpx?b=rr(i.hpx):i.hpt&&(b=i.hpt),b>-1&&(v.ht=b,v.customHeight=1),i.level&&(v.outlineLevel=i.level)),o[o.length]=He("row",s.join(""),v))}if(d)for(;u-1&&(v.ht=b,v.customHeight=1),i.level&&(v.outlineLevel=i.level),o[o.length]=He("row","",v));return o.join("")}(l,t,0,r),s.length>0&&(i[i.length]=s)),i.length>a+1&&(i[i.length]="",i[a]=i[a].replace("/>",">")),l["!protect"]&&(i[i.length]=dr(l["!protect"])),null!=l["!autofilter"]&&(i[i.length]=function(e,t,r,n){var a="string"==typeof e.ref?e.ref:It(e.ref);r.Workbook||(r.Workbook={Sheets:[]}),r.Workbook.Names||(r.Workbook.Names=[]);var i=r.Workbook.Names,o=Nt(a);o.s.r==o.e.r&&(o.e.r=Nt(t["!ref"]).e.r,a=It(o));for(var s=0;s0&&(i[i.length]=function(e){if(0===e.length)return"";for(var t='',r=0;r!=e.length;++r)t+='';return t+""}(l["!merges"]));var u,p,d=-1,m=-1;return l["!links"].length>0&&(i[i.length]="",l["!links"].forEach((function(e){e[1].Target&&(u={ref:e[0]},"#"!=e[1].Target.charAt(0)&&(m=Jt(n,-1,Ee(e[1].Target).replace(/#[\s\S]*$/,""),Vt.HLINK),u["r:id"]="rId"+m),(d=e[1].Target.indexOf("#"))>-1&&(u.location=Ee(e[1].Target.slice(d+1))),e[1].Tooltip&&(u.tooltip=Ee(e[1].Tooltip)),u.display=e[1].display,i[i.length]=He("hyperlink",null,u))})),i[i.length]=""),delete l["!links"],null!=l["!margins"]&&(i[i.length]=(function(e,t){if(e){var r=[.7,.7,.75,.75,.3,.3];null==e.left&&(e.left=r[0]),null==e.right&&(e.right=r[1]),null==e.top&&(e.top=r[2]),null==e.bottom&&(e.bottom=r[3]),null==e.header&&(e.header=r[4]),null==e.footer&&(e.footer=r[5])}}(p=l["!margins"]),He("pageMargins",null,p))),t&&!t.ignoreEC&&null!=t.ignoreEC||(i[i.length]=Be("ignoredErrors",He("ignoredError",null,{numberStoredAsText:1,sqref:c}))),h.length>0&&(m=Jt(n,-1,"../drawings/drawing"+(e+1)+".xml",Vt.DRAW),i[i.length]=He("drawing",null,{"r:id":"rId"+m}),l["!drawing"]=h),l["!comments"].length>0&&(m=Jt(n,-1,"../drawings/vmlDrawing"+(e+1)+".vml",Vt.VML),i[i.length]=He("legacyDrawing",null,{"r:id":"rId"+m}),l["!legacy"]=m),i.length>1&&(i[i.length]="",i[1]=i[1].replace("/>",">")),i.join("")}var vr=[["allowRefreshQuery",!1,"bool"],["autoCompressPictures",!0,"bool"],["backupFile",!1,"bool"],["checkCompatibility",!1,"bool"],["CodeName",""],["date1904",!1,"bool"],["defaultThemeVersion",0,"int"],["filterPrivacy",!1,"bool"],["hidePivotFieldList",!1,"bool"],["promptedSolutions",!1,"bool"],["publishItems",!1,"bool"],["refreshAllConnections",!1,"bool"],["saveExternalLinkValues",!0,"bool"],["showBorderUnselectedTables",!0,"bool"],["showInkAnnotation",!0,"bool"],["showObjects","all"],["showPivotChartFilter",!1,"bool"],["updateLinks","userSet"]],br=":][*?/\\".split("");function xr(e,t){try{if(""==e)throw new Error("Sheet name cannot be blank");if(e.length>31)throw new Error("Sheet name cannot exceed 31 chars");if(39==e.charCodeAt(0)||39==e.charCodeAt(e.length-1))throw new Error("Sheet name cannot start or end with apostrophe (')");if("history"==e.toLowerCase())throw new Error("Sheet name cannot be 'History'");br.forEach((function(t){if(-1!=e.indexOf(t))throw new Error("Sheet name cannot contain : \\ / ? * [ ]")}))}catch(e){if(t)return!1;throw e}return!0}function wr(e){if(!e||!e.SheetNames||!e.Sheets)throw new Error("Invalid Workbook");if(!e.SheetNames.length)throw new Error("Workbook is empty");var t,r,n,a=e.Workbook&&e.Workbook.Sheets||[];t=e.SheetNames,r=a,n=!!e.vbaraw,t.forEach((function(e,a){xr(e);for(var i=0;i22)throw new Error("Bad Code Name: Worksheet"+o)}}));for(var i=0;ir||a[h].s.c>l||a[h].e.r1&&(o.rowspan=c),f>1&&(o.colspan=f),n.editable?d=''+d+"":p&&(o["data-t"]=p&&p.t||"z",null!=p.v&&(o["data-v"]=Ne(p.v instanceof Date?p.v.toISOString():p.v)),null!=p.z&&(o["data-z"]=p.z),p.l&&"#"!=(p.l.Target||"#").charAt(0)&&(d=''+d+"")),o.id=(n.id||"sjs")+"-"+u,i.push(He("td",d,o))}}return""+i.join("")+""}function Cr(e,t,r){var n=t.rows;if(!n)throw"Unsupported origin when "+t.tagName+" is not a TABLE";var a=r||{},i=null!=e["!data"],o=0,s=0;if(null!=a.origin)if("number"==typeof a.origin)o=a.origin;else{var l="string"==typeof a.origin?Et(a.origin):a.origin;o=l.r,s=l.c}var c=Math.min(a.sheetRows||1e7,n.length),f={s:{r:0,c:0},e:{r:o,c:s}};if(e["!ref"]){var h=Nt(e["!ref"]);f.s.r=Math.min(f.s.r,h.s.r),f.s.c=Math.min(f.s.c,h.s.c),f.e.r=Math.max(f.e.r,h.e.r),f.e.c=Math.max(f.e.c,h.e.c),-1==o&&(f.e.r=o=h.e.r+1)}var u=[],p=0,d=e["!rows"]||(e["!rows"]=[]),m=0,g=0,v=0,b=0,x=0,w=0;for(e["!cols"]||(e["!cols"]=[]);m1||w>1)&&u.push({s:{r:g+o,c:b+s},e:{r:g+o+(x||1)-1,c:b+s+(w||1)-1}});var D={t:"s",v:_},O=k.getAttribute("data-t")||k.getAttribute("t")||"";null!=_&&(0==_.length?D.t=O||"z":a.raw||0==_.trim().length||"s"==O||("e"==O&&jt[+_]?D={t:"e",v:+_,w:jt[+_]}:"TRUE"===_?D={t:"b",v:!0}:"FALSE"===_?D={t:"b",v:!1}:isNaN(be(_))?isNaN(ke(_).getDate())?35==_.charCodeAt(0)&&null!=Bt[_]&&(D={t:"e",v:Bt[_],w:_}):(D={t:"d",v:me(_)},a.UTC&&(D.v=_e(D.v)),a.cellDates||(D={t:"n",v:fe(D.v)}),D.z=a.dateNF||S[14]):D={t:"n",v:be(_)})),void 0===D.z&&null!=A&&(D.z=A);var F="",E=k.getElementsByTagName("A");if(E&&E.length)for(var M=0;M=c&&(e["!fullref"]=It((f.e.r=n.length-m+g-1+o,f))),e}function Sr(e,t){var r={};return(t||{}).dense&&(r["!data"]=[]),Cr(r,e,t)}function kr(e){var t="",r=function(e){return e.ownerDocument.defaultView&&"function"==typeof e.ownerDocument.defaultView.getComputedStyle?e.ownerDocument.defaultView.getComputedStyle:"function"==typeof getComputedStyle?getComputedStyle:null} +/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */(e);return r&&(t=r(e).getPropertyValue("display")),t||(t=e.style&&e.style.display),"none"===t}function _r(e){var t;(t=[["cellDates",!1],["bookSST",!1],["bookType","xlsx"],["compression",!1],["WTF",!1]],function(e){for(var r=0;r!=t.length;++r){var n=t[r];void 0===e[n[0]]&&(e[n[0]]=n[1]),"n"===n[2]&&(e[n[0]]=Number(e[n[0]]))}})(e)}function Ar(e,t){var r;e&&!e.SSF&&(e.SSF=ge(S)),e&&e.SSF&&(r||(r={}),r[0]="General",r[1]="0",r[2]="0.00",r[3]="#,##0",r[4]="#,##0.00",r[9]="0%",r[10]="0.00%",r[11]="0.00E+00",r[12]="# ?/?",r[13]="# ??/??",r[14]="m/d/yy",r[15]="d-mmm-yy",r[16]="d-mmm",r[17]="mmm-yy",r[18]="h:mm AM/PM",r[19]="h:mm:ss AM/PM",r[20]="h:mm",r[21]="h:mm:ss",r[22]="m/d/yy h:mm",r[37]="#,##0 ;(#,##0)",r[38]="#,##0 ;[Red](#,##0)",r[39]="#,##0.00;(#,##0.00)",r[40]="#,##0.00;[Red](#,##0.00)",r[45]="mm:ss",r[46]="[h]:mm:ss",r[47]="mmss.0",r[48]="##0.0E+0",r[49]="@",r[56]='"上午/下午 "hh"時"mm"分"ss"秒 "',S=r,function(e){for(var t=0;392!=t;++t)void 0!==e[t]&&Q(e[t],t)}(e.SSF),t.revssf=function(e){for(var t=[],r=ie(e),n=0;n!==r.length;++n)t[e[r[n]]]=parseInt(r[n],10);return t}(e.SSF),t.revssf[e.SSF[65535]]=0,t.ssf=e.SSF),t.rels={},t.wbrels={},t.Strings=[],t.Strings.Count=0,t.Strings.Unique=0,lr?t.revStrings=new Map:(t.revStrings={},t.revStrings.foo=[],delete t.revStrings.foo);var n="xml",a=sr.indexOf(t.bookType)>-1,i={workbooks:[],sheets:[],charts:[],dialogs:[],macros:[],rels:[],strs:[],comments:[],threadedcomments:[],links:[],coreprops:[],extprops:[],custprops:[],themes:[],styles:[],calcchains:[],vba:[],drawings:[],metadata:[],people:[],TODO:[],xmlns:""};_r(t=t||{});var o,s,l,c=re.utils.cfb_new(),f="",h=0;if(t.cellXfs=[],fr(t.cellXfs,{},{revssf:{General:0}}),e.Props||(e.Props={}),Ae(c,f="docProps/core.xml",function(e,t){var r=t||{},n=[Te,He("cp:coreProperties",null,{"xmlns:cp":Ve.CORE_PROPS,"xmlns:dc":Ve.dc,"xmlns:dcterms":Ve.dcterms,"xmlns:dcmitype":Ve.dcmitype,"xmlns:xsi":Ve.xsi})],a={};if(!e&&!r.Props)return n.join("");e&&(null!=e.CreatedDate&&Yt("dcterms:created","string"==typeof e.CreatedDate?e.CreatedDate:Xe(e.CreatedDate,r.WTF),{"xsi:type":"dcterms:W3CDTF"},n,a),null!=e.ModifiedDate&&Yt("dcterms:modified","string"==typeof e.ModifiedDate?e.ModifiedDate:Xe(e.ModifiedDate,r.WTF),{"xsi:type":"dcterms:W3CDTF"},n,a));for(var i=0;i!=qt.length;++i){var o=qt[i],s=r.Props&&null!=r.Props[o[1]]?r.Props[o[1]]:e?e[o[1]]:null;!0===s?s="1":!1===s?s="0":"number"==typeof s&&(s=String(s)),null!=s&&Yt(o[0],s,null,n,a)}return n.length>2&&(n[n.length]="",n[1]=n[1].replace("/>",">")),n.join("")}(e.Props,t)),i.coreprops.push(f),Jt(t.rels,2,f,Vt.CORE_PROPS),f="docProps/app.xml",e.Props&&e.Props.SheetNames);else if(e.Workbook&&e.Workbook.Sheets){for(var u=[],p=0;pWorksheets")+l("vt:variant",l("vt:i4",String(o.Worksheets))),{size:2,baseType:"variant"})),s[s.length]=l("TitlesOfParts",l("vt:vector",o.SheetNames.map((function(e){return""+Ee(e)+""})).join(""),{size:o.Worksheets,baseType:"lpstr"})),s.length>2&&(s[s.length]="",s[1]=s[1].replace("/>",">")),s.join(""))),i.extprops.push(f),Jt(t.rels,3,f,Vt.EXT_PROPS),e.Custprops!==e.Props&&ie(e.Custprops||{}).length>0&&(Ae(c,f="docProps/custom.xml",Kt(e.Custprops)),i.custprops.push(f),Jt(t.rels,4,f,Vt.CUST_PROPS));var d,m,g=["SheetJ5"];for(t.tcid=0,h=1;h<=e.SheetNames.length;++h){var v={"!id":{}},b=e.Sheets[e.SheetNames[h-1]];(b||{})["!type"];if(Ae(c,f="xl/worksheets/sheet"+h+"."+n,gr(h-1,t,e,v)),i.sheets.push(f),Jt(t.wbrels,-1,"worksheets/sheet"+h+"."+n,Vt.WS[0]),b){var x=b["!comments"],w=!1,y="";if(x&&x.length>0){var C=!1;x.forEach((function(e){e[1].forEach((function(e){1==e.T&&(C=!0)}))})),C&&(Ae(c,y="xl/threadedComments/threadedComment"+h+".xml",or(x,g,t)),i.threadedcomments.push(y),Jt(v,-1,"../threadedComments/threadedComment"+h+".xml",Vt.TCMNT)),Ae(c,y="xl/comments"+h+"."+n,ir(x)),i.comments.push(y),Jt(v,-1,"../comments"+h+"."+n,Vt.CMNT),w=!0}b["!legacy"]&&w&&Ae(c,"xl/drawings/vmlDrawing"+h+".vml",ar(h,b["!comments"])),delete b["!comments"],delete b["!legacy"]}v["!id"].rId1&&Ae(c,(m=void 0,m=(d=f).lastIndexOf("/"),d.slice(0,m+1)+"_rels/"+d.slice(m+1)+".rels"),Gt(v))}return null!=t.Strings&&t.Strings.length>0&&(Ae(c,f="xl/sharedStrings."+n,function(e,t){if(!t.bookSST)return"";var r=[Te];r[r.length]=He("sst",null,{xmlns:Ge[0],count:e.Count,uniqueCount:e.Unique});for(var n=0;n!=e.length;++n)if(null!=e[n]){var a=e[n],i="";a.r?i+=a.r:(i+=""),i+="",r[r.length]=i}return r.length>2&&(r[r.length]="",r[1]=r[1].replace("/>",">")),r.join("")}(t.Strings,t)),i.strs.push(f),Jt(t.wbrels,-1,"sharedStrings."+n,Vt.SST)),Ae(c,f="xl/workbook."+n,function(e){var t=[Te];t[t.length]=He("workbook",null,{xmlns:Ge[0],"xmlns:r":Ve.r});var r=e.Workbook&&(e.Workbook.Names||[]).length>0,n={codeName:"ThisWorkbook"};e.Workbook&&e.Workbook.WBProps&&(vr.forEach((function(t){null!=e.Workbook.WBProps[t[0]]&&e.Workbook.WBProps[t[0]]!=t[1]&&(n[t[0]]=e.Workbook.WBProps[t[0]])})),e.Workbook.WBProps.CodeName&&(n.codeName=e.Workbook.WBProps.CodeName,delete n.CodeName)),t[t.length]=He("workbookPr",null,n);var a=e.Workbook&&e.Workbook.Sheets||[],i=0;if(a&&a[0]&&a[0].Hidden){for(t[t.length]="",i=0;i!=e.SheetNames.length&&a[i]&&a[i].Hidden;++i);i==e.SheetNames.length&&(i=0),t[t.length]='',t[t.length]=""}for(t[t.length]="",i=0;i!=e.SheetNames.length;++i){var o={name:Ee(e.SheetNames[i].slice(0,31))};if(o.sheetId=""+(i+1),o["r:id"]="rId"+(i+1),a[i])switch(a[i].Hidden){case 1:o.state="hidden";break;case 2:o.state="veryHidden"}t[t.length]=He("sheet",null,o)}return t[t.length]="",r&&(t[t.length]="",e.Workbook&&e.Workbook.Names&&e.Workbook.Names.forEach((function(e){var r={name:e.Name};e.Comment&&(r.comment=e.Comment),null!=e.Sheet&&(r.localSheetId=""+e.Sheet),e.Hidden&&(r.hidden="1"),e.Ref&&(t[t.length]=He("definedName",Ee(e.Ref),r))})),t[t.length]=""),t.length>2&&(t[t.length]="",t[1]=t[1].replace("/>",">")),t.join("")}(e)),i.workbooks.push(f),Jt(t.rels,1,f,Vt.WB),Ae(c,f="xl/theme/theme1.xml",function(e,t){if(t&&t.themeXLSX)return t.themeXLSX;if(e&&"string"==typeof e.raw)return e.raw;var r=[Te];return r[r.length]='',r[r.length]="",r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]="",r[r.length]='',r[r.length]="",r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]="",r[r.length]="",r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]="",r[r.length]="",r[r.length]='',r[r.length]="",r[r.length]='',r[r.length]='',r[r.length]="",r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]="",r[r.length]='',r[r.length]="",r[r.length]='',r[r.length]="",r[r.length]='',r[r.length]='',r[r.length]="",r[r.length]='',r[r.length]="",r[r.length]="",r[r.length]="",r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]="",r[r.length]="",r[r.length]="",r[r.length]="",r[r.length]='',r[r.length]="",r[r.length]="",r[r.length]="",r[r.length]="",r[r.length]='',r[r.length]="",r[r.length]="",r[r.length]="",r[r.length]="",r[r.length]='',r[r.length]="",r[r.length]='',r[r.length]='',r[r.length]="",r[r.length]="",r[r.length]="",r[r.length]='',r[r.length]='',r[r.length]="",r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]="",r[r.length]='',r[r.length]="",r[r.length]='',r[r.length]="",r[r.length]='',r[r.length]='',r[r.length]="",r[r.length]='',r[r.length]="",r[r.length]="",r[r.length]="",r[r.length]="",r[r.length]="",r[r.length]="",r[r.length]='',r[r.length]="",r[r.length]="",r[r.length]='',r[r.length]="",r[r.length]="",r[r.length]="",r[r.length]="",r.join("")}(e.Themes,t)),i.themes.push(f),Jt(t.wbrels,-1,"theme/theme1.xml",Vt.THEME),Ae(c,f="xl/styles."+n,nr(e,t)),i.styles.push(f),Jt(t.wbrels,-1,"styles."+n,Vt.STY),e.vbaraw&&a&&(Ae(c,f="xl/vbaProject.bin",e.vbaraw),i.vba.push(f),Jt(t.wbrels,-1,"vbaProject.bin",Vt.VBA)),Ae(c,f="xl/metadata."+n,function(){var e=[Te];return e.push('\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n'),e.join("")}()),i.metadata.push(f),Jt(t.wbrels,-1,"metadata."+n,Vt.XLMETA),g.length>1&&(Ae(c,f="xl/persons/person.xml",function(e){var t=[Te,He("personList",null,{xmlns:Ve.TCMNT,"xmlns:x":Ge[0]}).replace(/[\/]>/,">")];return e.forEach((function(e,r){t.push(He("person",null,{displayName:e,id:"{54EE7950-7262-4200-6969-"+("000000000000"+r).slice(-12)+"}",userId:e,providerId:"None"}))})),t.push(""),t.join("")}(g)),i.people.push(f),Jt(t.wbrels,-1,"persons/person.xml",Vt.PEOPLE)),Ae(c,"[Content_Types].xml",Xt(i,t)),Ae(c,"_rels/.rels",Gt(t.rels)),Ae(c,"xl/_rels/workbook.xml.rels",Gt(t.wbrels)),delete t.revssf,delete t.ssf,c}function Tr(e,t){var r=ge(t||{});return function(e,t){var r={},n=a?"nodebuffer":"undefined"!=typeof Uint8Array?"array":"string";t.compression&&(r.compression="DEFLATE");if(t.password)r.type=n;else switch(t.type){case"base64":r.type="base64";break;case"binary":r.type="string";break;case"string":throw new Error("'string' output type invalid for '"+t.bookType+"' files");case"buffer":case"file":r.type=n;break;default:throw new Error("Unrecognized type "+t.type)}var i=e.FullPaths?re.write(e,{fileType:"zip",type:{nodebuffer:"buffer",string:"binary"}[r.type]||r.type,compression:!!t.compression}):e.generate(r);if("undefined"!=typeof Deno&&"string"==typeof i){if("binary"==t.type||"base64"==t.type)return i;i=new Uint8Array(f(i))}return t.password&&"undefined"!=typeof encrypt_agile?function(e,t){switch(t.type){case"base64":case"binary":break;case"buffer":case"array":t.type="";break;case"file":return ae(t.file,re.write(e,{type:a?"buffer":""}));case"string":throw new Error("'string' output type invalid for '"+t.bookType+"' files");default:throw new Error("Unrecognized type "+t.type)}return re.write(e,t)}(encrypt_agile(i,t.password),t):"file"===t.type?ae(t.file,i):"string"==t.type?Ue(i):i}(Ar(e,r),r)}function Dr(e,t){wr(e);var r=ge(t||{});if(r.cellStyles&&(r.cellNF=!0,r.sheetStubs=!0),"array"==r.type){r.type="binary";var n=Dr(e,r);return r.type="array",f(n)}return Tr(e,r)}function Or(e,t,r){var n=r||{};return n.type="file",n.file=t,function(e){if(!e.bookType){var t=e.file.slice(e.file.lastIndexOf(".")).toLowerCase();t.match(/^\.[a-z]+$/)&&(e.bookType=t.slice(1)),e.bookType={xls:"biff8",htm:"html",slk:"sylk",socialcalc:"eth",Sh33tJS:"WTF"}[e.bookType]||e.bookType}}(n),Dr(e,n)}function Fr(e,t,r,n,a,i,o){var s,l=Ot(r),c=o.defval,f=o.raw||!Object.prototype.hasOwnProperty.call(o,"raw"),h=!0,u=null!=e["!data"],p=1===a?[]:{};if(1!==a)if(Object.defineProperty)try{Object.defineProperty(p,"__rowNum__",{value:r,enumerable:!1})}catch(e){p.__rowNum__=r}else p.__rowNum__=r;if(!u||e["!data"][r])for(var d=t.s.c;d<=t.e.c;++d){var m=u?(e["!data"][r]||[])[d]:e[n[d]+l];if(null!=m&&void 0!==m.t){var g=m.v;switch(m.t){case"z":if(null==g)break;continue;case"e":g=0==g?null:void 0;break;case"s":case"b":case"n":if(!m.z||!J(m.z))break;if("number"==typeof(g=he(g)))break;case"d":o&&(o.UTC||!1===o.raw)||(s=new Date(g),g=new Date(s.getUTCFullYear(),s.getUTCMonth(),s.getUTCDate(),s.getUTCHours(),s.getUTCMinutes(),s.getUTCSeconds(),s.getUTCMilliseconds()));break;default:throw new Error("unrecognized type "+m.t)}if(null!=i[d]){if(null==g)if("e"==m.t&&null===g)p[i[d]]=null;else if(void 0!==c)p[i[d]]=c;else{if(!f||null!==g)continue;p[i[d]]=null}else p[i[d]]=("n"===m.t&&"boolean"==typeof o.rawNumbers?o.rawNumbers:f)?g:$t(m,g,o);null!=g&&(h=!1)}}else{if(void 0===c)continue;null!=i[d]&&(p[i[d]]=c)}}return{row:p,isempty:h}}function Er(e,t){if(null==e||null==e["!ref"])return[];var r={t:"n",v:0},n=0,a=1,i=[],o=0,s="",l={s:{r:0,c:0},e:{r:0,c:0}},c=t||{},f=null!=c.range?c.range:e["!ref"];switch(1===c.header?n=1:"A"===c.header?n=2:Array.isArray(c.header)?n=3:null==c.header&&(n=0),typeof f){case"string":l=Lt(f);break;case"number":(l=Lt(e["!ref"])).s.r=f;break;default:l=f}n>0&&(a=0);var h=Ot(l.s.r),u=[],p=[],d=0,m=0,g=null!=e["!data"],v=l.s.r,b=0,x={};g&&!e["!data"][v]&&(e["!data"][v]=[]);var w=c.skipHidden&&e["!cols"]||[],y=c.skipHidden&&e["!rows"]||[];for(b=l.s.c;b<=l.e.c;++b)if(!(w[b]||{}).hidden)switch(u[b]=Ft(b),r=g?e["!data"][v][b]:e[u[b]+h],n){case 1:i[b]=b-l.s.c;break;case 2:i[b]=u[b];break;case 3:i[b]=c.header[b-l.s.c];break;default:if(null==r&&(r={w:"__EMPTY",t:"s"}),s=o=$t(r,null,c),m=x[o]||0){do{s=o+"_"+m++}while(x[s]);x[o]=m,x[s]=1}else x[o]=1;i[b]=s}for(v=l.s.r+a;v<=l.e.r;++v)if(!(y[v]||{}).hidden){var C=Fr(e,l,v,u,n,i,c);(!1===C.isempty||(1===n?!1!==c.blankrows:c.blankrows))&&(p[d++]=C.row)}return p.length=d,p}!function(){try{return"undefined"==typeof Uint8Array||void 0===Uint8Array.prototype.subarray?"slice":"undefined"!=typeof Buffer?void 0===Buffer.prototype.subarray?"slice":("function"==typeof Buffer.from?Buffer.from([72,62]):new Buffer([72,62]))instanceof Uint8Array?"subarray":"slice":"subarray"}catch(e){return"slice"}}();var Mr=/"/g;function Nr(e,t,r,n,a,i,o,s,l){for(var c=!0,f=[],h="",u=Ot(r),p=null!=e["!data"],d=p&&e["!data"][r]||[],m=t.s.c;m<=t.e.c;++m)if(n[m]){var g=p?d[m]:e[n[m]+u];if(null==g)h="";else if(null!=g.v){c=!1,h=""+(l.rawNumbers&&"n"==g.t?g.v:$t(g,null,l));for(var v=0,b=0;v!==h.length;++v)if((b=h.charCodeAt(v))===a||b===i||34===b||l.forceQuotes){h='"'+h.replace(Mr,'""')+'"';break}"ID"==h&&0==s&&0==f.length&&(h='"ID"')}else null==g.f||g.F?h="":(c=!1,(h="="+g.f).indexOf(",")>=0&&(h='"'+h.replace(Mr,'""')+'"'));f.push(h)}if(l.strip)for(;""===f[f.length-1];)--f.length;return!1===l.blankrows&&c?null:f.join(o)}function Ir(e,t){var r=[],n=null==t?{}:t;if(null==e||null==e["!ref"])return"";for(var a=Lt(e["!ref"]),i=void 0!==n.FS?n.FS:",",o=i.charCodeAt(0),s=void 0!==n.RS?n.RS:"\n",l=s.charCodeAt(0),c="",f=[],h=n.skipHidden&&e["!cols"]||[],u=n.skipHidden&&e["!rows"]||[],p=a.s.c;p<=a.e.c;++p)(h[p]||{}).hidden||(f[p]=Ft(p));for(var d=0,m=a.s.r;m<=a.e.r;++m)(u[m]||{}).hidden||null!=(c=Nr(e,a,m,f,o,l,i,d,n))&&(c||!1!==n.blankrows)&&r.push((d++?s:"")+c);return r.join("")}function Pr(e,t,r){var n=r||{},a=e?null!=e["!data"]:n.dense,i=+!n.skipHeader,o=e||{};!e&&a&&(o["!data"]=[]);var s=0,l=0;if(o&&null!=n.origin)if("number"==typeof n.origin)s=n.origin;else{var c="string"==typeof n.origin?Et(n.origin):n.origin;s=c.r,l=c.c}var f={s:{c:0,r:0},e:{c:l,r:s+t.length-1+i}};if(o["!ref"]){var h=Lt(o["!ref"]);f.e.c=Math.max(f.e.c,h.e.c),f.e.r=Math.max(f.e.r,h.e.r),-1==s&&(s=h.e.r+1,f.e.r=s+t.length-1+i)}else-1==s&&(s=0,f.e.r=t.length-1+i);var u=n.header||[],p=0,d=[];t.forEach((function(e,t){a&&!o["!data"][s+t+i]&&(o["!data"][s+t+i]=[]),a&&(d=o["!data"][s+t+i]),ie(e).forEach((function(r){-1==(p=u.indexOf(r))&&(u[p=u.length]=r);var c=e[r],f="z",h="",m=a?"":Ft(l+p)+Ot(s+t+i),g=a?d[l+p]:o[m];!c||"object"!=typeof c||c instanceof Date?("number"==typeof c?f="n":"boolean"==typeof c?f="b":"string"==typeof c?f="s":c instanceof Date?(f="d",n.UTC||(c=_e(c)),n.cellDates||(f="n",c=fe(c)),h=null!=g&&g.z&&J(g.z)?g.z:n.dateNF||S[14]):null===c&&n.nullError&&(f="e",c=0),g?(g.t=f,g.v=c,delete g.w,delete g.R,h&&(g.z=h)):a?d[l+p]=g={t:f,v:c}:o[m]=g={t:f,v:c},h&&(g.z=h)):a?d[l+p]=c:o[m]=c}))})),f.e.c=Math.max(f.e.c,l+u.length-1);var m=Ot(s);if(a&&!o["!data"][s]&&(o["!data"][s]=[]),i)for(p=0;p=65535)throw new Error("Too many worksheets");if(n&&e.SheetNames.indexOf(r)>=0&&r.length<32){var i=r.match(/\d+$/);a=i&&+i[0]||0;var o=i&&r.slice(0,i.index)||r;for(++a;a<=65535&&-1!=e.SheetNames.indexOf(r=o+a);++a);}if(xr(r),e.SheetNames.indexOf(r)>=0)throw new Error("Worksheet with name |"+r+"| already exists!");return e.SheetNames.push(r),e.Sheets[r]=t,r}function Ur(e,t,r){return t?(e.l={Target:t},r&&(e.l.Tooltip=r)):delete e.l,e}var $r={encode_col:Ft,encode_row:Ot,encode_cell:Mt,encode_range:It,decode_col:function(e){for(var t=e.replace(/^\$([A-Z])/,"$1"),r=0,n=0;n!==t.length;++n)r=26*r+t.charCodeAt(n)-64;return r-1},decode_row:function(e){return parseInt(e.replace(/\$(\d+)$/,"$1"),10)-1},split_cell:function(e){return e.replace(/(\$?[A-Z]*)(\$?\d*)/,"$1,$2").split(",")},decode_cell:Et,decode_range:Nt,format_cell:$t,sheet_new:function(e){var t={};return(e||{}).dense&&(t["!data"]=[]),t},sheet_add_aoa:zt,sheet_add_json:Pr,sheet_add_dom:Cr,aoa_to_sheet:function(e,t){return zt(null,e,t)},json_to_sheet:function(e,t){return Pr(null,e,t)},table_to_sheet:Sr,table_to_book:function(e,t){return function(e,t){var r=t&&t.sheet?t.sheet:"Sheet1",n={};return n[r]=e,{SheetNames:[r],Sheets:n}}(Sr(e,t),t)},sheet_to_csv:Ir,sheet_to_txt:function(e,t){return t||(t={}),t.FS="\t",t.RS="\n",Ir(e,t)},sheet_to_json:Er,sheet_to_html:function(e,t){var r=t||{},n=null!=r.header?r.header:'SheetJS Table Export',a=null!=r.footer?r.footer:"",i=[n],o=Nt(e["!ref"]||"A1");if(i.push(function(e,t,r){return[].join("")+""}(0,0,r)),e["!ref"])for(var s=o.s.r;s<=o.e.r;++s)i.push(yr(e,o,s,r));return i.push(""+a),i.join("")},sheet_to_formulae:function(e,t){var r,n="",a="";if(null==e||null==e["!ref"])return[];var i,o=Lt(e["!ref"]),s="",l=[],c=[],f=null!=e["!data"];for(i=o.s.c;i<=o.e.c;++i)l[i]=Ft(i);for(var h=o.s.r;h<=o.e.r;++h)for(s=Ot(h),i=o.s.c;i<=o.e.c;++i)if(n=l[i]+s,a="",void 0!==(r=f?(e["!data"][h]||[])[i]:e[n])){if(null!=r.F){if(n=r.F,!r.f)continue;a=r.f,-1==n.indexOf(":")&&(n=n+":"+n)}if(null!=r.f)a=r.f;else{if(t&&!1===t.values)continue;if("z"==r.t)continue;if("n"==r.t&&null!=r.v)a=""+r.v;else if("b"==r.t)a=r.v?"TRUE":"FALSE";else if(void 0!==r.w)a="'"+r.w;else{if(void 0===r.v)continue;a="s"==r.t?"'"+r.v:""+r.v}}c[c.length]=n+"="+a}return c},sheet_to_row_object_array:Er,sheet_get_cell:Rr,book_new:function(e,t){var r={SheetNames:[],Sheets:{}};return e&&Lr(r,e,t||"Sheet1"),r},book_append_sheet:Lr,book_set_sheet_visibility:function(e,t,r){e.Workbook||(e.Workbook={}),e.Workbook.Sheets||(e.Workbook.Sheets=[]);var n=function(e,t){if("number"==typeof t){if(t>=0&&e.SheetNames.length>t)return t;throw new Error("Cannot find sheet # "+t)}if("string"==typeof t){var r=e.SheetNames.indexOf(t);if(r>-1)return r;throw new Error("Cannot find sheet name |"+t+"|")}throw new Error("Cannot find sheet |"+t+"|")}(e,t);switch(e.Workbook.Sheets[n]||(e.Workbook.Sheets[n]={}),r){case 0:case 1:case 2:break;default:throw new Error("Bad sheet visibility setting "+r)}e.Workbook.Sheets[n].Hidden=r},cell_set_number_format:function(e,t){return e.z=t,e},cell_set_hyperlink:Ur,cell_set_internal_link:function(e,t,r){return Ur(e,"#"+t,r)},cell_add_comment:function(e,t,r){e.c||(e.c=[]),e.c.push({t,a:r||"SheetJS"})},sheet_set_array_formula:function(e,t,r,n){for(var a="string"!=typeof t?t:Lt(t),i="string"==typeof t?t:It(t),o=a.s.r;o<=a.e.r;++o)for(var s=a.s.c;s<=a.e.c;++s){var l=Rr(e,o,s);l.t="n",l.F=i,delete l.v,o==a.s.r&&s==a.s.c&&(l.f=r,n&&(l.D=!0))}var c=Nt(e["!ref"]);return c.s.r>a.s.r&&(c.s.r=a.s.r),c.s.c>a.s.c&&(c.s.c=a.s.c),c.e.r} + */ +export async function JS_OpenSignInPage(url) { + // BEGIN USER CODE + window.location.href = url; + // END USER CODE +} diff --git a/javascriptsource/feedbackmodule/actions/GetStorageItemObject.js b/javascriptsource/feedbackmodule/actions/GetStorageItemObject.js new file mode 100644 index 0000000..7f73a5b --- /dev/null +++ b/javascriptsource/feedbackmodule/actions/GetStorageItemObject.js @@ -0,0 +1,104 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import "mx-global"; +import { Big } from "big.js"; +import AsyncStorage from '@react-native-community/async-storage'; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * What does this JavaScript action do? + * + * Get locally stored JSON object stored in clients internet browser. Identified by a unique key. Can be accessed by the GetStorageItemObject action. Please note that users can clear the device storage. + * @param {string} key - This field is required. + * @param {string} entity - This field is required. + * @returns {Promise.} + */ +export async function GetStorageItemObject(key, entity) { + // BEGIN USER CODE + if (!key) { + return Promise.reject(new Error("Input parameter 'Key' is required")); + } + if (!entity) { + return Promise.reject(new Error("Input parameter 'Entity' is required")); + } + return getItem(key).then(result => { + if (result === null) { + return Promise.reject(new Error(`Storage item '${key}' does not exist`)); + } + const value = JSON.parse(result); + return getOrCreateMxObject(entity, value).then(newObject => { + const newValue = serializeMxObject(newObject); + return setItem(key, JSON.stringify(newValue)).then(() => newObject); + }); + }); + function getItem(key) { + if (navigator && navigator.product === "ReactNative") { + return AsyncStorage.getItem(key); + } + if (window) { + const value = window.localStorage.getItem(key); + return Promise.resolve(value); + } + return Promise.reject(new Error("No storage API available")); + } + function setItem(key, value) { + if (navigator && navigator.product === "ReactNative") { + return AsyncStorage.setItem(key, value); + } + if (window) { + window.localStorage.setItem(key, value); + return Promise.resolve(); + } + return Promise.reject(new Error("No storage API available")); + } + function getOrCreateMxObject(entity, value) { + return getMxObject(value.guid).then(existingObject => { + if (existingObject) { + return existingObject; + } + else { + return createMxObject(entity, value); + } + }); + } + function getMxObject(guid) { + return new Promise((resolve, reject) => { + mx.data.get({ + guid, + callback: mxObject => resolve(mxObject), + error: error => reject(error) + }); + }); + } + function createMxObject(entity, value) { + return new Promise((resolve, reject) => { + mx.data.create({ + entity, + callback: mxObject => { + Object.keys(value) + .filter(attribute => attribute !== "guid") + .forEach(attributeName => { + const attributeValue = value[attributeName]; + mxObject.set(attributeName, attributeValue); + }); + resolve(mxObject); + }, + error: () => reject(new Error(`Could not create '${entity}' object`)) + }); + }); + } + function serializeMxObject(object) { + return object.getAttributes().reduce((accumulator, attributeName) => { + accumulator[attributeName] = object.get(attributeName); + return accumulator; + }, { guid: object.getGuid() }); + } + // END USER CODE +} diff --git a/javascriptsource/feedbackmodule/actions/JS_PopulateFeedbackMetadata.js b/javascriptsource/feedbackmodule/actions/JS_PopulateFeedbackMetadata.js new file mode 100644 index 0000000..79ff1f2 --- /dev/null +++ b/javascriptsource/feedbackmodule/actions/JS_PopulateFeedbackMetadata.js @@ -0,0 +1,72 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import "mx-global"; +import { Big } from "big.js"; + +// BEGIN EXTRA CODE + const handleUserRoles = async () => { + if(!mx) return undefined; + try { + return await mx.session.getUserRoleNames(); + } catch (error){ + console.error("Error getting user role names", error); + return undefined; + } + }; + const handlePagePath = async () => { + if(!mx) return undefined; + try { + const mendixVersion = mx.version + const mendixMajorVersion = mendixVersion.split('.')[0]; + switch(mendixMajorVersion) { + case '9': + case '10': + return mx.ui.getContentForm().path.toString(); + default: + return undefined; + }; + } catch { + console.error("Error getting page path", error); + return undefined + } + }; +// END EXTRA CODE + +/** + * What does this JavaScript action do? + * + * Returns meta data from the clients internet browser. + * + * This includes; + * + * ActiveUserRoles + * PageName + * EnvironmentURL + * Browser + * ScreenWidth + * ScreenHeight + * @param {MxObject} feedback + * @returns {Promise.} + */ +export async function JS_PopulateFeedbackMetadata(feedback) { + // BEGIN USER CODE + try { + const userRoles = await handleUserRoles(); + const pagePath = await handlePagePath(); + feedback.set("ActiveUserRoles", userRoles); + feedback.set("PageName", pagePath); + feedback.set("EnvironmentURL", window.location.href); + feedback.set("Browser", navigator.userAgent); + feedback.set("ScreenWidth", window.screen.width); + feedback.set("ScreenHeight", window.screen.height); + return feedback; + } catch (error) { + console.error("Error setting meta data", error); + } + // END USER CODE +} diff --git a/javascriptsource/feedbackmodule/actions/JS_Recalculate_MendixModal_Error_PopUp_Zindex.js b/javascriptsource/feedbackmodule/actions/JS_Recalculate_MendixModal_Error_PopUp_Zindex.js new file mode 100644 index 0000000..eadee7d --- /dev/null +++ b/javascriptsource/feedbackmodule/actions/JS_Recalculate_MendixModal_Error_PopUp_Zindex.js @@ -0,0 +1,40 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import "mx-global"; +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * @returns {Promise.} + */ +export async function JS_Recalculate_MendixModal_Error_PopUp_Zindex() { + // BEGIN USER CODE + + function setModalZindex(cssSelector, zIndexValue) { + try { + const htmlElement = document.querySelectorAll(cssSelector); + + if(!htmlElement.length) { + return; + } + + htmlElement.forEach(item => item.style.zIndex = zIndexValue); + + } catch(error) { + console.warn("Feedback Module JS_Recalculate_Modal_Zindex could not execute correctly", error); + } + }; + + setTimeout(() => { + setModalZindex(".mx-dialog-info, mx-dialog-warning, .mx-dialog-error", "90"); + setModalZindex(".mx-underlay", "80"); + },500); + // END USER CODE +} diff --git a/javascriptsource/feedbackmodule/actions/JS_RevokeUploadedFileFromMemory.js b/javascriptsource/feedbackmodule/actions/JS_RevokeUploadedFileFromMemory.js new file mode 100644 index 0000000..6791c87 --- /dev/null +++ b/javascriptsource/feedbackmodule/actions/JS_RevokeUploadedFileFromMemory.js @@ -0,0 +1,50 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import "mx-global"; +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * What does this JavaScript action do? + * + * After you have uploaded an image it removes locally stored image from memory. This is a custom build action. + * + * Dependency Note: + * This JavaScript action should be used only when you have inserted the Image Upload JavaScript Action called 'JS_UploadAndConvertToFileBlobURL' into your nanoflow. + * + * More detailed explanation: Memory management. + * + * To upload a image we use a custom build Javascript action called 'JS_UploadAndConvertToFileBlobURL'. + * Inside this action we use a JavaScript method called createObjectURL() to upload and store files in local memory. We can access and cosume this in memory image resource via the URL path that is returned from the createObjectURL() method. + * + * However, each time you call createObjectURL(), a new object is created in memory, even if you've already created one for the same object. + * So each of these must be released by calling this action called 'JS_RevokeUploadedFileFromMemory' when you no longer need them. + * + * Browsers will release object URLs automatically when the document is unloaded; however, for optimal performance and memory usage, if there are safe times when you can explicitly unload them, you should do so with the JavaScriptAction called 'JS_RevokeUploadedFileFromMemory'. + * @param {string} fileBlobURL - You have to pass the fileBlobURL that was created using the URL.createObjectURL() in the JS Action called 'JS_UploadAndConvertToFileBlobURL' + * @returns {Promise.} + */ +export async function JS_RevokeUploadedFileFromMemory(fileBlobURL) { + // BEGIN USER CODE + /* We use the URL.createObjectURL() static method which creates a string containing a URL representing the + image uploaded. + The image blob is stored in the clients browser and takes up memory whilst the session is active. So here we + revoke the image when the user deletes the image. Note that the image is automaticlly revoked when the browser refreshes + or closes. + + You have to pass the fileBlobURL that was created using the URL.createObjectURL() in the JS Action called 'JS_UploadAndConvertToFileBlobURL' + */ + if(fileBlobURL && typeof fileBlobURL === "string"){ + URL.revokeObjectURL(fileBlobURL); + } else { + throw new Error("Image was not removed from browser memory"); + } + // END USER CODE +} diff --git a/javascriptsource/feedbackmodule/actions/JS_ToggleFeedbackAnnotateWidget.js b/javascriptsource/feedbackmodule/actions/JS_ToggleFeedbackAnnotateWidget.js new file mode 100644 index 0000000..35382f2 --- /dev/null +++ b/javascriptsource/feedbackmodule/actions/JS_ToggleFeedbackAnnotateWidget.js @@ -0,0 +1,74 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import "mx-global"; +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// messageActionTypes are to identify the postMessage types between the JS Action & Feedback Widget. +const messageAction_toggleAnnotateMode = "mxFeedbackWidget_toggleAnnotateMode"; // The Feedback widget reads this to trigger a specific screenshot mode stage. +const messageAction_isBase64 = "mxFeedbackWidget_convertedToBase64"; // We expect this string from the widget when screenshot mode in enabled. +const messageAction_actionCancelled = "mxFeedbackWidget_actionCancelled" // The Feedback widget will send this back if screenshot/annotation actions are cancelled by the user. + +const parseJSON = (event) => { + try { + return JSON.parse(event); + } catch { + return undefined; + } +}; +// END EXTRA CODE + +/** + * What does this JavaScript action do? + * + * When you upload a screenshot manually the image can be annotatated. + * + * More detailed explanation: + * The Mendix Feedback Widget handles annotation and also renders a default styled button on your page. + * + * In order to trigger the annotation mode you have to use this JavaScript action to send the widget the correct image payload. + * + * Return Type: + * Will return base 64 image string + * @param {string} fileBlobURL + * @returns {Promise.} + */ +export async function JS_ToggleFeedbackAnnotateWidget(fileBlobURL) { + // BEGIN USER CODE + /* + The widget and JS action communicate with the following postMessage object structure: + messageObject = {messageActionType: string;messageData: string;} + */ + const messageObject = { + "messageActionType": messageAction_toggleAnnotateMode, // The widget reads this to trigger the Annotate Mode. + "messageData": fileBlobURL // The widget uses this URL reference to get access to the locally stored image blob. + }; + + postMessage(JSON.stringify(messageObject), window.origin); // Send the serialized message object to Feedback Wiget to trigger annotate mode. + + return new Promise(resolve => { + function handleEvent(event) { + const parsedData = parseJSON(event.data); // Convert the received string to an object. + + if(event.origin === window.origin) { + if (parsedData && parsedData.messageActionType === messageAction_isBase64) { + window.removeEventListener("message", handleEvent); + resolve(parsedData.messageData); // Resolve & return the base64 image to the nanoflow. + }; + if(parsedData && parsedData.messageActionType === messageAction_actionCancelled) { + resolve(); + } + } + + }; + + window.addEventListener("message", handleEvent); // Listen and wait for the Feedback Widget to send the base64 image. + + }); + // END USER CODE +} diff --git a/javascriptsource/feedbackmodule/actions/JS_ToggleFeedbackScreenshotWidget.js b/javascriptsource/feedbackmodule/actions/JS_ToggleFeedbackScreenshotWidget.js new file mode 100644 index 0000000..fafc71c --- /dev/null +++ b/javascriptsource/feedbackmodule/actions/JS_ToggleFeedbackScreenshotWidget.js @@ -0,0 +1,73 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import "mx-global"; +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// messageActionTypes are to identify the postMessage types between the JS Action & Feedback Widget. +const messageAction_toggleAnnotateMode = "mxFeedbackWidget_toggleScreenshotMode"; // The Feedback widget reads this to trigger a specific screenshot mode stage. +const messageAction_isBase64 = "mxFeedbackWidget_convertedToBase64"; // We expect this string from the widget when screenshot mode in enabled. +const messageAction_actionCancelled = "mxFeedbackWidget_actionCancelled" // The Feedback widget will send this back if screenshot/annotation actions are cancelled by the user. + +/* + The widget and JS action communicate with the following postMessage object structure: + messageObject = {messageActionType: string;messageData: string;} +*/ +const messageObject = { + "messageActionType": messageAction_toggleAnnotateMode //The Feedback widget reads this to trigger a specific Mode. +}; + +const parseJson = (event) => { + try { + return JSON.parse(event); + } catch { + return undefined; + } +}; +// END EXTRA CODE + +/** + * What does this JavaScript action do? + * + * Lets to take a screenshot of the current visible page + * + * More detailed explanation: + * The Mendix Feedback Widget handles annotation, screenshot and also renders a default styled button on your page. + * + * Usage: + * You should use this JavaScript action to trigger the screenshot functionality. + * + * Return Type: + * Will return a image base64 string + * + * @returns {Promise.} + */ +export async function JS_ToggleFeedbackScreenshotWidget() { + // BEGIN USER CODE + postMessage(JSON.stringify(messageObject), window.origin); // Send a message to the Feedback Wiget to trigger screenshot mode. + + return new Promise(resolve => { + + function handleEvent(event){ + const parsedData = parseJson(event.data); + if(parsedData && event.origin === window.origin) { + if (parsedData.messageActionType === messageAction_isBase64) { + window.removeEventListener("message", handleEvent); + resolve(parsedData.messageData); // Resolve & return the base64 image to the nanoflow. + }; + if(parsedData.messageActionType === messageAction_actionCancelled){ + resolve("uploadCancelled"); + } + } + }; + + window.addEventListener("message", handleEvent); // Listen and wait for the Feedback Widget to send back the edited screenshot as base64. + + }); + // END USER CODE +} diff --git a/javascriptsource/feedbackmodule/actions/JS_UploadAndConvertToFileBlobURL.js b/javascriptsource/feedbackmodule/actions/JS_UploadAndConvertToFileBlobURL.js new file mode 100644 index 0000000..2e50fe3 --- /dev/null +++ b/javascriptsource/feedbackmodule/actions/JS_UploadAndConvertToFileBlobURL.js @@ -0,0 +1,113 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import "mx-global"; + +// BEGIN EXTRA CODE + var isUploading = false; + +    async function storeFileAndGetResourceUrl(file) { +        return URL.createObjectURL(file); // Saves the file to locally memory and returns a URL path to the Blob object. +    }; + +    function removeDomElements({fileInput, progressId}) { +        if(progressId) mx.ui.hideProgress(progressId); +        if(fileInput) document.body.removeChild(fileInput); + isUploading = false;     +    } + +    function validateFileTypes ({acceptedTypes, fileType}) { +        if(!acceptedTypes && !fileType) return false; +        const accepted = acceptedTypes.split(","); +        return accepted.some(type => new RegExp(type).test(fileType)); +    } + +    function validateFileSize ({uploadedFile, maxSize}) { +        if(!uploadedFile && !maxSize) return false; +        const uploadedSize = uploadedFile.size / 1024 / 1024; // Convert to MB +        return uploadedSize < (maxSize.c[0] + 0.1); // 0.1 MB extra tolerance +    } +// END EXTRA CODE + +/** + * What does this JavaScript Action do? + * + * This is a custom build JavaScript Action that triggers the file upload dialog box to open in your internet browser. + * + * Dependency Note: + * This JavaScript action should be used with the JavaScript Action called 'JS_RevokeUploadedFileFromMemory' so that the image uploaded is removed from local memory :) + * + * Explanation of this JavaScript Action & Memory management. + * + * We use createObjectURL() to upload and store files in local memory. We can access and cosume this in memory image resource via the URL path that is returned from the createObjectURL() method. + * + * However, each time you call createObjectURL(), a new object is created in memory, even if you've already created one for the same object. + * So each of these must be released by calling the JS Action called 'JS_RevokeUploadedFileFromMemory' when you no longer need them. + * + * Browsers will release object URLs automatically when the document is unloaded; however, for optimal performance and memory usage, if there are safe times when you can explicitly unload them, you should do so with the JavaScriptAction called 'JS_RevokeUploadedFileFromMemory'. + * @param {string} userDefined_mimeTypes + * @param {Big} userDefined_fileUploadSize + * @returns {Promise.} + */ +export async function JS_UploadAndConvertToFileBlobURL(userDefined_mimeTypes, userDefined_fileUploadSize) { + // BEGIN USER CODE +    return new Promise((resolve, reject) => { +        try { +            // Create and append the HTML input element to the body +            const fileInput = document.createElement("input"); +            fileInput.style.position = "absolute"; +            fileInput.style.left = "-9999px"; +            fileInput.name = "fileupload"; +            fileInput.id = "fileupload"; +            fileInput.type = "file"; +            if(userDefined_mimeTypes){ +                fileInput.accept = userDefined_mimeTypes; +            } +            fileInput.multiple = false; +            fileInput.onchange = handleFileUpload; +            document.body.appendChild(fileInput); + fileInput.addEventListener("cancel", () => resolve("uploadCancelled")); +            fileInput.click(); + +            // A function used to validate & store the uploaded file to local memory. +            function handleFileUpload(event) { + isUploading = true; + +                const newFile = event.target.files[0]; +                const progressId = mx.ui.showProgress(null, true); + +                // Check if the uploaded file type matches the user defined accepted types. +                if (!validateFileTypes({acceptedTypes: fileInput.accept, fileType: newFile.type})) { +                    removeDomElements({fileInput, progressId}); +                    resolve("fileTypeNotAccepted"); +                    return; +                } +                // Check if the uploaded file matches the user defined upload size. +                if (!validateFileSize({uploadedFile: newFile, maxSize: userDefined_fileUploadSize})) { +                    removeDomElements({fileInput, progressId}); +                    resolve("fileSizeNotAccepted"); +                    return; +                } +                // Store file locally on users device and return path to resource. +                storeFileAndGetResourceUrl(newFile).then((fileBlobURL) => { +                    if(fileBlobURL && typeof fileBlobURL === "string") { +                        removeDomElements({fileInput, progressId}); +                        resolve(fileBlobURL); +                    } else { +                        removeDomElements({fileInput, progressId}); +                        resolve("fileNotConverted"); +                    } +                }) +                return; +            }; +        } catch (error) { +            reject(error); +        } +    }); + // END USER CODE +} diff --git a/javascriptsource/feedbackmodule/actions/SetStorageItemObject.js b/javascriptsource/feedbackmodule/actions/SetStorageItemObject.js new file mode 100644 index 0000000..f4ecff9 --- /dev/null +++ b/javascriptsource/feedbackmodule/actions/SetStorageItemObject.js @@ -0,0 +1,47 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import AsyncStorage from '@react-native-community/async-storage'; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Store a Mendix object in device storage, identified by a unique key. Can be accesed by the GetStargeItemObject action. Please note that users can clear the device storage. + * @param {string} key - This field is required. + * @param {MxObject} value - This field is required. + * @returns {Promise.} + */ +export async function SetStorageItemObject(key, value) { + // BEGIN USER CODE + if (!key) { + return Promise.reject(new Error("Input parameter 'Key' is required")); + } + if (!value) { + return Promise.reject(new Error("Input parameter 'Value' is required")); + } + const serializedObject = serializeMxObject(value); + return setItem(key, JSON.stringify(serializedObject)); + function setItem(key, value) { + if (navigator && navigator.product === "ReactNative") { + return AsyncStorage.setItem(key, value); + } + if (window) { + window.localStorage.setItem(key, value); + return Promise.resolve(); + } + return Promise.reject(new Error("No storage API available")); + } + function serializeMxObject(object) { + return object.getAttributes().reduce((accumulator, attributeName) => { + accumulator[attributeName] = object.get(attributeName); + return accumulator; + }, { guid: object.getGuid() }); + } + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/Base64Decode.js b/javascriptsource/nanoflowcommons/actions/Base64Decode.js new file mode 100644 index 0000000..7079518 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/Base64Decode.js @@ -0,0 +1,22 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import { Base64 } from 'js-base64'; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * @param {string} base64 + * @returns {Promise.} + */ +export async function Base64Decode(base64) { + // BEGIN USER CODE + return Base64.decode(base64); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/Base64DecodeToImage.js b/javascriptsource/nanoflowcommons/actions/Base64DecodeToImage.js new file mode 100644 index 0000000..055f7fc --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/Base64DecodeToImage.js @@ -0,0 +1,32 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import { Base64 } from 'js-base64'; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * @param {string} base64 + * @param {MxObject} image + * @returns {Promise.} + */ +export async function Base64DecodeToImage(base64, image) { + // BEGIN USER CODE + if (!base64) { + throw new Error("base64 String should not be empty"); + } + if (!image) { + throw new Error("image should not be null"); + } + const blob = new Blob([Base64.toUint8Array(base64)], { type: "image/png" }); + return new Promise((resolve, reject) => { + mx.data.saveDocument(image.getGuid(), "camera image", {}, blob, () => resolve(true), reject); + }); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/Base64Encode.js b/javascriptsource/nanoflowcommons/actions/Base64Encode.js new file mode 100644 index 0000000..643579f --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/Base64Encode.js @@ -0,0 +1,23 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import "mx-global"; +import { Big } from "big.js"; +import { Base64 } from 'js-base64'; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * @param {string} string + * @returns {Promise.} + */ +export async function Base64Encode(string) { + // BEGIN USER CODE + return Base64.encode(base64); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/CallPhoneNumber.js b/javascriptsource/nanoflowcommons/actions/CallPhoneNumber.js new file mode 100644 index 0000000..7639e64 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/CallPhoneNumber.js @@ -0,0 +1,46 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * This action can be used to launch a phone app on the devices and initiate dialing of the specified phone number. The user has to confirm to initate the actual call. + * @param {string} phoneNumber - This field is required. + * @returns {Promise.} + */ +export async function CallPhoneNumber(phoneNumber) { + // BEGIN USER CODE + if (!phoneNumber) { + return Promise.reject(new Error("Input parameter 'Phone number' is required")); + } + const url = `tel:${encodeURI(phoneNumber)}`; + // Native platform + if (navigator && navigator.product === "ReactNative") { + const Linking = require("react-native").Linking; + return Linking.canOpenURL(url).then(supported => { + if (!supported) { + return false; + } + return Linking.openURL(url).then(() => true); + }); + } + // Hybrid platform + if (window && window.cordova) { + window.open(url, "_system"); + return Promise.resolve(true); + } + // Web platform + if (window) { + window.location.href = url; + return Promise.resolve(true); + } + return Promise.resolve(false); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/ClearCachedSessionData.js b/javascriptsource/nanoflowcommons/actions/ClearCachedSessionData.js new file mode 100644 index 0000000..5c4b97f --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/ClearCachedSessionData.js @@ -0,0 +1,24 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Clears saved session data from the local storage for offline native and PWAs. + * @returns {Promise.} + */ +export async function ClearCachedSessionData() { + // BEGIN USER CODE + if (mx.session && mx.session.clearCachedSessionData === undefined) { + return Promise.reject(new Error("JS action 'Clear cached session data' is not supported prior to Mendix client v9.14")); + } + await mx.session.clearCachedSessionData(); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/ClearLocalStorage.js b/javascriptsource/nanoflowcommons/actions/ClearLocalStorage.js new file mode 100644 index 0000000..67e6067 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/ClearLocalStorage.js @@ -0,0 +1,27 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * @returns {Promise.} + */ +export async function ClearLocalStorage() { + // BEGIN USER CODE + try { + localStorage.clear(); + return true; + } + catch (e) { + console.error(e); + return false; + } + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/DraftEmail.js b/javascriptsource/nanoflowcommons/actions/DraftEmail.js new file mode 100644 index 0000000..99ed516 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/DraftEmail.js @@ -0,0 +1,64 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Start drafting an email in the platform specified email client. This might work differently for each user depending on their platform and local configuration. + * @param {string} recipient - The recipient, or recipients, separated by comma's. + * @param {string} cc - The Carbon Copy recipient, or recipients, separated by comma's. + * @param {string} bcc - The Blind Carbon Copy recipient, or recipients, separated by comma's. + * @param {string} subject + * @param {string} body + * @returns {Promise.} + */ +export async function DraftEmail(recipient, cc, bcc, subject, body) { + // BEGIN USER CODE + let url = "mailto:"; + if (recipient) { + url += `${encodeURI(recipient)}?`; + } + if (cc) { + url += `cc=${encodeURIComponent(cc)}&`; + } + if (bcc) { + url += `bcc=${encodeURIComponent(bcc)}&`; + } + if (subject) { + url += `subject=${encodeURIComponent(subject)}&`; + } + if (body) { + url += `body=${encodeURIComponent(body)}&`; + } + // Remove the last '?' or '&' + url = url.slice(0, -1); + // Native platform + if (navigator && navigator.product === "ReactNative") { + const Linking = require("react-native").Linking; + return Linking.canOpenURL(url).then(supported => { + if (!supported) { + return false; + } + return Linking.openURL(url).then(() => true); + }); + } + // Hybrid platform + if (window && window.cordova) { + window.open(url, "_system"); + return Promise.resolve(true); + } + // Web platform + if (window) { + window.location.href = url; + return Promise.resolve(true); + } + return Promise.resolve(false); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/FindObjectWithGUID.js b/javascriptsource/nanoflowcommons/actions/FindObjectWithGUID.js new file mode 100644 index 0000000..e6b22a0 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/FindObjectWithGUID.js @@ -0,0 +1,22 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * @param {MxObject[]} list + * @param {string} objectGUID + * @returns {Promise.} + */ +export async function FindObjectWithGUID(list, objectGUID) { + // BEGIN USER CODE + return list.find(element => element.getGuid() === objectGUID); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/GenerateUniqueID.js b/javascriptsource/nanoflowcommons/actions/GenerateUniqueID.js new file mode 100644 index 0000000..e6a6f77 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/GenerateUniqueID.js @@ -0,0 +1,62 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +const COUNTER_STORE = "idCounter"; +let locked = false; +let currentCounter; +function sleep(time) { + return new Promise(resolve => setTimeout(resolve, time)); +} +async function initializeCounter() { + currentCounter = JSON.parse((await getItem(COUNTER_STORE)) || "-1"); +} +async function getItem(key) { + if (navigator && navigator.product === "ReactNative") { + const AsyncStorage = (await import('@react-native-community/async-storage')).default; + return AsyncStorage.getItem(key); + } + if (window) { + return window.localStorage.getItem(key); + } + throw new Error("No storage API available"); +} +async function setItem(key, value) { + if (navigator && navigator.product === "ReactNative") { + const AsyncStorage = (await import('@react-native-community/async-storage')).default; + return AsyncStorage.setItem(key, value); + } + if (window) { + return window.localStorage.setItem(key, value); + } + throw new Error("No storage API available"); +} +// END EXTRA CODE + +/** + * Generates a unique ID based on the current session. + * @returns {Promise.} + */ +export async function GenerateUniqueID() { + // BEGIN USER CODE + const sessionId = mx.session.getConfig("sessionObjectId"); + const rnd = Math.round(Math.random() * 10000); + // eslint-disable-next-line no-unmodified-loop-condition + while (locked) { + await sleep(10); + } + locked = true; + if (typeof currentCounter === "undefined") { + await initializeCounter(); + } + await setItem(COUNTER_STORE, JSON.stringify(++currentCounter)); + locked = false; + return `${sessionId}:${currentCounter}:${rnd}`; + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/GenerateUniqueID.json b/javascriptsource/nanoflowcommons/actions/GenerateUniqueID.json new file mode 100644 index 0000000..a560d6d --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/GenerateUniqueID.json @@ -0,0 +1,5 @@ +{ + "nativeDependencies": { + "@react-native-community/async-storage": "1.12.1" + } +} diff --git a/javascriptsource/nanoflowcommons/actions/Geocode.js b/javascriptsource/nanoflowcommons/actions/Geocode.js new file mode 100644 index 0000000..818ed57 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/Geocode.js @@ -0,0 +1,119 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import Geodecoder from 'react-native-geocoder'; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Geocoding is the process of converting addresses (like a street address) into geographic coordinates (latitude and longitude), which you can use to place markers on a map, or position the map. + * @param {string} address - This field is required. + * @param {"NanoflowCommons.GeocodingProvider.Google"|"NanoflowCommons.GeocodingProvider.Geocodio"|"NanoflowCommons.GeocodingProvider.LocationIQ"|"NanoflowCommons.GeocodingProvider.MapQuest"} geocodingProvider - This field is required for use on web. + * @param {string} providerApiKey - This field is required for use on web. Note that the keys are accessible by the end users and should be protected in other ways; for example restricted domain name. + * @returns {Promise.} + */ +export async function Geocode(address, geocodingProvider, providerApiKey) { + // BEGIN USER CODE + /** + * Documentation: + * - Native: https://github.com/devfd/react-native-geocoder + * - Google: https://developers.google.com/maps/documentation/geocoding/intro#GeocodingRequests + * - Geocodio: https://www.geocod.io/docs/#geocoding + * - LocationIQ: https://locationiq.com/docs-html/index.html#search-forward-geocoding + * - MapQuest: https://developer.mapquest.com/documentation/open/geocoding-api/address/get/ + */ + if (!address) { + return Promise.reject(new Error("Input parameter 'Address' is required")); + } + if (navigator && navigator.product === "ReactNative") { + return Geodecoder.geocodeAddress(address).then(results => { + if (results.length === 0) { + return Promise.reject(new Error("No results found")); + } + return createMxObject(String(results[0].position.lat), String(results[0].position.lng)); + }); + } + if (!geocodingProvider) { + return Promise.reject(new Error("Input parameter 'Geocoding provider' is required for use on web")); + } + if (!providerApiKey) { + return Promise.reject(new Error("Input parameter 'Provider api key' is required for use on web")); + } + const url = getApiUrl(geocodingProvider, address, providerApiKey); + return fetch(url) + .then(response => response.json().catch(() => response.text().then(text => { + return Promise.reject(new Error(text)); + }))) + .then(response => getLatLong(geocodingProvider, response)) + .then(latLong => createMxObject(latLong[0], latLong[1])) + .catch(error => Promise.reject(error)); + function getApiUrl(provider, query, key) { + query = encodeURIComponent(query); + key = encodeURIComponent(key); + switch (provider) { + case "Google": + return `https://maps.googleapis.com/maps/api/geocode/json?address=${query}&key=${key}`; + case "Geocodio": + return `https://api.geocod.io/v1.3/geocode?q=${query}&api_key=${key}`; + case "LocationIQ": + return `https://eu1.locationiq.com/v1/search.php?format=json&q=${query}&key=${key}`; + case "MapQuest": + return `https://open.mapquestapi.com/geocoding/v1/address?location=${query}&key=${key}`; + } + } + function getLatLong(provider, response) { + switch (provider) { + case "Google": + if (response.status !== "OK") { + throw new Error(response.error_message); + } + return [response.results[0].geometry.location.lat, response.results[0].geometry.location.lng]; + case "Geocodio": + if (response.error) { + throw new Error(response.error); + } + if (response.results.length === 0) { + throw new Error("No results found"); + } + return [response.results[0].location.lat, response.results[0].location.lng]; + case "LocationIQ": + if (response.error) { + throw new Error(response.error); + } + if (response.length === 0) { + throw new Error("No results found"); + } + return [response[0].lat, response[0].lon]; + case "MapQuest": + if (response.info.statuscode !== 0) { + throw new Error(response.info.messages.join(", ")); + } + if (response.results.length === 0) { + throw new Error("No results found"); + } + return [response.results[0].locations[0].latLng.lat, response.results[0].locations[0].latLng.lng]; + } + } + function createMxObject(lat, long) { + return new Promise((resolve, reject) => { + mx.data.create({ + entity: "NanoflowCommons.Position", + callback: mxObject => { + mxObject.set("Latitude", lat); + mxObject.set("Longitude", long); + resolve(mxObject); + }, + error: () => { + reject(new Error("Could not create 'NanoflowCommons.Position' object to store coordinates")); + } + }); + }); + } + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/Geocode.json b/javascriptsource/nanoflowcommons/actions/Geocode.json new file mode 100644 index 0000000..aa3b0e5 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/Geocode.json @@ -0,0 +1,5 @@ +{ + "nativeDependencies": { + "react-native-geocoder": "0.5.0" + } +} diff --git a/javascriptsource/nanoflowcommons/actions/GetCurrentLocation.js b/javascriptsource/nanoflowcommons/actions/GetCurrentLocation.js new file mode 100644 index 0000000..fd6fa3d --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/GetCurrentLocation.js @@ -0,0 +1,110 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import Geolocation from '@react-native-community/geolocation'; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * This action retrieves the current geographical position of a user/device. + * + * Since this can compromise privacy, the position is not available unless the user approves it. The web browser will request the permission at the first time the location is requested. When denied by the user it will not prompt a second time. + * + * On hybrid and native platforms the permission can be requested with the `RequestLocationPermission` action. + * + * Best practices: + * https://developers.google.com/web/fundamentals/native-hardware/user-location/ + * @param {Big} timeout - The maximum length of time (in milliseconds) the device is allowed to take in order to return a location. If set as empty, default value will be 30 second timeout. + * @param {Big} maximumAge - The maximum age (in milliseconds) of a possible cached position that is acceptable to return. If set to 0, it means that the device cannot use a cached position and must attempt to retrieve the real current position. By default the device will always return a cached position regardless of its age. + * @param {boolean} highAccuracy - Use a higher accuracy method to determine the current location. Setting this to false saves battery life. + * @returns {Promise.} + */ +export async function GetCurrentLocation(timeout, maximumAge, highAccuracy) { + // BEGIN USER CODE + let reactNativeModule; + let geolocationModule; + if (navigator && navigator.product === "ReactNative") { + reactNativeModule = require("react-native"); + if (!reactNativeModule) { + return Promise.reject(new Error("React Native module could not be found")); + } + if (reactNativeModule.NativeModules.RNFusedLocation) { + geolocationModule = (await import('react-native-geolocation-service')).default; + } + else if (reactNativeModule.NativeModules.RNCGeolocation) { + geolocationModule = Geolocation; + } + else { + return Promise.reject(new Error("Geolocation module could not be found")); + } + } + else if (navigator && navigator.geolocation) { + geolocationModule = navigator.geolocation; + } + else { + return Promise.reject(new Error("Geolocation module could not be found")); + } + return new Promise((resolve, reject) => { + const options = getOptions(); + geolocationModule === null || geolocationModule === void 0 ? void 0 : geolocationModule.getCurrentPosition(onSuccess, onError, options); + function onSuccess(position) { + mx.data.create({ + entity: "NanoflowCommons.Geolocation", + callback: mxObject => { + const geolocation = mapPositionToMxObject(mxObject, position); + resolve(geolocation); + }, + error: () => reject(new Error("Could not create 'NanoflowCommons.Geolocation' object to store location")) + }); + } + function onError(error) { + return reject(new Error(error.message)); + } + function getOptions() { + let timeoutNumber = timeout && Number(timeout.toString()); + const maximumAgeNumber = maximumAge && Number(maximumAge.toString()); + // If the timeout is 0 or undefined (empty), it causes a crash on iOS. + // If the timeout is undefined (empty); we set timeout to 30 sec (default timeout) + // If the timeout is 0; we set timeout to 1 hour (no timeout) + if ((reactNativeModule === null || reactNativeModule === void 0 ? void 0 : reactNativeModule.Platform.OS) === "ios") { + if (timeoutNumber === undefined) { + timeoutNumber = 30000; + } + else if (timeoutNumber === 0) { + timeoutNumber = 3600000; + } + } + return { + timeout: timeoutNumber, + maximumAge: maximumAgeNumber, + enableHighAccuracy: highAccuracy + }; + } + function mapPositionToMxObject(mxObject, position) { + mxObject.set("Timestamp", new Date(position.timestamp)); + mxObject.set("Latitude", new Big(position.coords.latitude.toFixed(8))); + mxObject.set("Longitude", new Big(position.coords.longitude.toFixed(8))); + mxObject.set("Accuracy", new Big(position.coords.accuracy.toFixed(8))); + if (position.coords.altitude != null) { + mxObject.set("Altitude", new Big(position.coords.altitude.toFixed(8))); + } + if (position.coords.altitudeAccuracy != null && position.coords.altitudeAccuracy !== -1) { + mxObject.set("AltitudeAccuracy", new Big(position.coords.altitudeAccuracy.toFixed(8))); + } + if (position.coords.heading != null && position.coords.heading !== -1) { + mxObject.set("Heading", new Big(position.coords.heading.toFixed(8))); + } + if (position.coords.speed != null && position.coords.speed !== -1) { + mxObject.set("Speed", new Big(position.coords.speed.toFixed(8))); + } + return mxObject; + } + }); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/GetCurrentLocation.json b/javascriptsource/nanoflowcommons/actions/GetCurrentLocation.json new file mode 100644 index 0000000..9fd572c --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/GetCurrentLocation.json @@ -0,0 +1,6 @@ +{ + "nativeDependencies": { + "@react-native-community/geolocation": "2.0.2", + "react-native-geolocation-service": "5.2.0" + } +} diff --git a/javascriptsource/nanoflowcommons/actions/GetCurrentLocationMinimumAccuracy.js b/javascriptsource/nanoflowcommons/actions/GetCurrentLocationMinimumAccuracy.js new file mode 100644 index 0000000..4252667 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/GetCurrentLocationMinimumAccuracy.js @@ -0,0 +1,143 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import Geolocation from '@react-native-community/geolocation'; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * This action retrieves the current geographical position of a user/device with a minimum accuracy as parameter. If a position is not acquired with minimum accuracy within a specific timeout it will retrieve the last most precise location. + * + * Since this can compromise privacy, the position is not available unless the user approves it. The web browser will request the permission at the first time the location is requested. When denied by the user it will not prompt a second time. + * + * On hybrid and native platforms the permission can be requested with the `RequestLocationPermission` action. + * + * Best practices: + * https://developers.google.com/web/fundamentals/native-hardware/user-location/ + * @param {Big} timeout - The maximum length of time (in milliseconds) the device is allowed to take in order to return a location. If set as empty, default value will be 30 second timeout. + * @param {Big} maximumAge - The maximum age (in milliseconds) of a possible cached position that is acceptable to return. If set to 0, it means that the device cannot use a cached position and must attempt to retrieve the real current position. By default the device will always return a cached position regardless of its age. + * @param {boolean} highAccuracy - Use a higher accuracy method to determine the current location. Setting this to false saves battery life. + * @param {Big} minimumAccuracy - The minimum accuracy to be received in meters. Less amount of meters, more precise is the location. + * @returns {Promise.} + */ +export async function GetCurrentLocationMinimumAccuracy(timeout, maximumAge, highAccuracy, minimumAccuracy) { + // BEGIN USER CODE + let reactNativeModule; + let geolocationModule; + if (navigator && navigator.product === "ReactNative") { + reactNativeModule = require("react-native"); + if (!reactNativeModule) { + return Promise.reject(new Error("React Native module could not be found")); + } + if (reactNativeModule.NativeModules.RNFusedLocation) { + geolocationModule = (await import('react-native-geolocation-service')).default; + } + else if (reactNativeModule.NativeModules.RNCGeolocation) { + geolocationModule = Geolocation; + } + else { + return Promise.reject(new Error("Geolocation module could not be found")); + } + } + else if (navigator && navigator.geolocation) { + geolocationModule = navigator.geolocation; + } + else { + return Promise.reject(new Error("Geolocation module could not be found")); + } + return new Promise((resolve, reject) => { + if (!geolocationModule) { + return reject(new Error("Geolocation module could not be found")); + } + const options = getOptions(); + // This action is only required while running in PWA or hybrid. + if (navigator && (!navigator.product || navigator.product !== "ReactNative")) { + // This ensures the browser will not ignore the maximumAge https://stackoverflow.com/questions/3397585/navigator-geolocation-getcurrentposition-sometimes-works-sometimes-doesnt/31916631#31916631 + geolocationModule.getCurrentPosition( + // eslint-disable-next-line @typescript-eslint/no-empty-function + () => { }, + // eslint-disable-next-line @typescript-eslint/no-empty-function + () => { }, {}); + } + const timeoutId = setTimeout(onTimeout, Number(timeout)); + const watchId = geolocationModule.watchPosition(onSuccess, onError, options); + let lastAccruedPosition; + function createGeolocationObject(position) { + mx.data.create({ + entity: "NanoflowCommons.Geolocation", + callback: mxObject => resolve(mapPositionToMxObject(mxObject, position)), + error: () => reject(new Error("Could not create 'NanoflowCommons.Geolocation' object to store location")) + }); + } + function onTimeout() { + geolocationModule === null || geolocationModule === void 0 ? void 0 : geolocationModule.clearWatch(watchId); + if (lastAccruedPosition) { + createGeolocationObject(lastAccruedPosition); + } + else { + reject(new Error("Timeout expired")); + } + } + function onSuccess(position) { + if (!minimumAccuracy || Number(minimumAccuracy) >= position.coords.accuracy) { + clearTimeout(timeoutId); + geolocationModule === null || geolocationModule === void 0 ? void 0 : geolocationModule.clearWatch(watchId); + createGeolocationObject(position); + } + else { + if (!lastAccruedPosition || position.coords.accuracy < lastAccruedPosition.coords.accuracy) { + lastAccruedPosition = position; + } + } + } + function onError(error) { + return reject(new Error(error.message)); + } + function getOptions() { + let timeoutNumber = timeout && Number(timeout.toString()); + const maximumAgeNumber = maximumAge && Number(maximumAge.toString()); + // If the timeout is 0 or undefined (empty), it causes a crash on iOS. + // If the timeout is undefined (empty); we set timeout to 30 sec (default timeout) + // If the timeout is 0; we set timeout to 1 hour (no timeout) + if ((reactNativeModule === null || reactNativeModule === void 0 ? void 0 : reactNativeModule.Platform.OS) === "ios") { + if (timeoutNumber === undefined) { + timeoutNumber = 30000; + } + else if (timeoutNumber === 0) { + timeoutNumber = 3600000; + } + } + return { + timeout: timeoutNumber, + maximumAge: maximumAgeNumber, + enableHighAccuracy: highAccuracy + }; + } + function mapPositionToMxObject(mxObject, position) { + mxObject.set("Timestamp", new Date(position.timestamp)); + mxObject.set("Latitude", new Big(position.coords.latitude.toFixed(8))); + mxObject.set("Longitude", new Big(position.coords.longitude.toFixed(8))); + mxObject.set("Accuracy", new Big(position.coords.accuracy.toFixed(8))); + if (position.coords.altitude != null) { + mxObject.set("Altitude", new Big(position.coords.altitude.toFixed(8))); + } + if (position.coords.altitudeAccuracy != null && position.coords.altitudeAccuracy !== -1) { + mxObject.set("AltitudeAccuracy", new Big(position.coords.altitudeAccuracy.toFixed(8))); + } + if (position.coords.heading != null && position.coords.heading !== -1) { + mxObject.set("Heading", new Big(position.coords.heading.toFixed(8))); + } + if (position.coords.speed != null && position.coords.speed !== -1) { + mxObject.set("Speed", new Big(position.coords.speed.toFixed(8))); + } + return mxObject; + } + }); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/GetCurrentLocationMinimumAccuracy.json b/javascriptsource/nanoflowcommons/actions/GetCurrentLocationMinimumAccuracy.json new file mode 100644 index 0000000..9fd572c --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/GetCurrentLocationMinimumAccuracy.json @@ -0,0 +1,6 @@ +{ + "nativeDependencies": { + "@react-native-community/geolocation": "2.0.2", + "react-native-geolocation-service": "5.2.0" + } +} diff --git a/javascriptsource/nanoflowcommons/actions/GetGuid.js b/javascriptsource/nanoflowcommons/actions/GetGuid.js new file mode 100644 index 0000000..195ae99 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/GetGuid.js @@ -0,0 +1,25 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Get the Mendix Object GUID. + * @param {MxObject} entityObject - This field is required. + * @returns {Promise.} + */ +export async function GetGuid(entityObject) { + // BEGIN USER CODE + if (!entityObject) { + return Promise.reject(new Error("Input parameter 'Entity object' is required.")); + } + return Promise.resolve(entityObject.getGuid()); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/GetObjectByGuid.js b/javascriptsource/nanoflowcommons/actions/GetObjectByGuid.js new file mode 100644 index 0000000..8843428 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/GetObjectByGuid.js @@ -0,0 +1,41 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Get a Mendix object by its GUID. + * @param {string} entity - This field is required. + * @param {string} objectGuid - This field is required. + * @returns {Promise.} + */ +export async function GetObjectByGuid(entity, objectGuid) { + // BEGIN USER CODE + if (!entity) { + return Promise.reject(new Error("Input parameter 'Entity' is required.")); + } + if (!objectGuid) { + return Promise.reject(new Error("Input parameter 'Object guid' is required.")); + } + return new Promise((resolve, reject) => { + mx.data.get({ + guid: objectGuid, + callback: object => { + if (object) { + resolve(object); + } + else { + reject(new Error("'Object guid' not found")); + } + } + }); + }); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/GetPlatform.js b/javascriptsource/nanoflowcommons/actions/GetPlatform.js new file mode 100644 index 0000000..b65bffe --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/GetPlatform.js @@ -0,0 +1,29 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Get the client platform (NanoflowCommons.Platform) where the action is running. + * @returns {Promise.<"NanoflowCommons.Platform.Web"|"NanoflowCommons.Platform.Native_mobile"|"NanoflowCommons.Platform.Hybrid_mobile">} + */ +export async function GetPlatform() { + // BEGIN USER CODE + if (window && window.cordova) { + return Promise.resolve("Hybrid_mobile"); + } + else if (navigator && navigator.product === "ReactNative") { + return Promise.resolve("Native_mobile"); + } + else { + return Promise.resolve("Web"); + } + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/GetRemoteUrl.js b/javascriptsource/nanoflowcommons/actions/GetRemoteUrl.js new file mode 100644 index 0000000..cd950b0 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/GetRemoteUrl.js @@ -0,0 +1,20 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * @returns {Promise.} + */ +export async function GetRemoteUrl() { + // BEGIN USER CODE + return mx.remoteUrl; + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/GetStorageItemObject.js b/javascriptsource/nanoflowcommons/actions/GetStorageItemObject.js new file mode 100644 index 0000000..77a84f4 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/GetStorageItemObject.js @@ -0,0 +1,101 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import AsyncStorage from '@react-native-community/async-storage'; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Store a Mendix object in device storage, identified by a unique key. Can be accessed by the GetStorageItemObject action. Please note that users can clear the device storage. + * @param {string} key - This field is required. + * @param {string} entity - This field is required. + * @returns {Promise.} + */ +export async function GetStorageItemObject(key, entity) { + // BEGIN USER CODE + if (!key) { + return Promise.reject(new Error("Input parameter 'Key' is required")); + } + if (!entity) { + return Promise.reject(new Error("Input parameter 'Entity' is required")); + } + return getItem(key).then(result => { + if (result === null) { + return Promise.reject(new Error(`Storage item '${key}' does not exist`)); + } + const value = JSON.parse(result); + return getOrCreateMxObject(entity, value).then(newObject => { + const newValue = serializeMxObject(newObject); + return setItem(key, JSON.stringify(newValue)).then(() => newObject); + }); + }); + function getItem(key) { + if (navigator && navigator.product === "ReactNative") { + return AsyncStorage.getItem(key); + } + if (window) { + const value = window.localStorage.getItem(key); + return Promise.resolve(value); + } + return Promise.reject(new Error("No storage API available")); + } + function setItem(key, value) { + if (navigator && navigator.product === "ReactNative") { + return AsyncStorage.setItem(key, value); + } + if (window) { + window.localStorage.setItem(key, value); + return Promise.resolve(); + } + return Promise.reject(new Error("No storage API available")); + } + function getOrCreateMxObject(entity, value) { + return getMxObject(value.guid).then(existingObject => { + if (existingObject) { + return existingObject; + } + else { + return createMxObject(entity, value); + } + }); + } + function getMxObject(guid) { + return new Promise((resolve, reject) => { + mx.data.get({ + guid, + callback: mxObject => resolve(mxObject), + error: error => reject(error) + }); + }); + } + function createMxObject(entity, value) { + return new Promise((resolve, reject) => { + mx.data.create({ + entity, + callback: mxObject => { + Object.keys(value) + .filter(attribute => attribute !== "guid") + .forEach(attributeName => { + const attributeValue = value[attributeName]; + mxObject.set(attributeName, attributeValue); + }); + resolve(mxObject); + }, + error: () => reject(new Error(`Could not create '${entity}' object`)) + }); + }); + } + function serializeMxObject(object) { + return object.getAttributes().reduce((accumulator, attributeName) => { + accumulator[attributeName] = object.get(attributeName); + return accumulator; + }, { guid: object.getGuid() }); + } + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/GetStorageItemObject.json b/javascriptsource/nanoflowcommons/actions/GetStorageItemObject.json new file mode 100644 index 0000000..a560d6d --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/GetStorageItemObject.json @@ -0,0 +1,5 @@ +{ + "nativeDependencies": { + "@react-native-community/async-storage": "1.12.1" + } +} diff --git a/javascriptsource/nanoflowcommons/actions/GetStorageItemObjectList.js b/javascriptsource/nanoflowcommons/actions/GetStorageItemObjectList.js new file mode 100644 index 0000000..05e4aba --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/GetStorageItemObjectList.js @@ -0,0 +1,101 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import AsyncStorage from '@react-native-community/async-storage'; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Retrieve a local stored list of Mendix objects identified by a unique key. When objects are the client state it will be returned, if not they will be re-created. Note: when re-creating the local Mendix object the Mendix Object ID will never be the same. + * @param {string} key - This field is required. + * @param {string} entity - This field is required. + * @returns {Promise.} + */ +export async function GetStorageItemObjectList(key, entity) { + // BEGIN USER CODE + if (!key) { + return Promise.reject(new Error("Input parameter 'Key' is required")); + } + if (!entity) { + return Promise.reject(new Error("Input parameter 'Entity' is required")); + } + return getItem(key).then(result => { + if (result === null) { + return Promise.reject(new Error(`Storage item '${key}' does not exist`)); + } + const values = JSON.parse(result); + return Promise.all(values.map(value => getOrCreateMxObject(entity, value))).then(newObjects => { + const newValues = newObjects.map(newObject => serializeMxObject(newObject)); + return setItem(key, JSON.stringify(newValues)).then(() => newObjects); + }); + }); + function getItem(key) { + if (navigator && navigator.product === "ReactNative") { + return AsyncStorage.getItem(key); + } + if (window) { + const value = window.localStorage.getItem(key); + return Promise.resolve(value); + } + return Promise.reject(new Error("No storage API available")); + } + function setItem(key, value) { + if (navigator && navigator.product === "ReactNative") { + return AsyncStorage.setItem(key, value); + } + if (window) { + window.localStorage.setItem(key, value); + return Promise.resolve(); + } + return Promise.reject(new Error("No storage API available")); + } + function getOrCreateMxObject(entity, value) { + return getMxObject(value.guid).then(existingObject => { + if (existingObject) { + return existingObject; + } + else { + return createMxObject(entity, value); + } + }); + } + function getMxObject(guid) { + return new Promise((resolve, reject) => { + mx.data.get({ + guid, + callback: mxObject => resolve(mxObject), + error: error => reject(error) + }); + }); + } + function createMxObject(entity, value) { + return new Promise((resolve, reject) => { + mx.data.create({ + entity, + callback: mxObject => { + Object.keys(value) + .filter(attribute => attribute !== "guid") + .forEach(attributeName => { + const attributeValue = value[attributeName]; + mxObject.set(attributeName, attributeValue); + }); + resolve(mxObject); + }, + error: () => reject(new Error(`Could not create '${entity}' object`)) + }); + }); + } + function serializeMxObject(object) { + return object.getAttributes().reduce((accumulator, attributeName) => { + accumulator[attributeName] = object.get(attributeName); + return accumulator; + }, { guid: object.getGuid() }); + } + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/GetStorageItemObjectList.json b/javascriptsource/nanoflowcommons/actions/GetStorageItemObjectList.json new file mode 100644 index 0000000..a560d6d --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/GetStorageItemObjectList.json @@ -0,0 +1,5 @@ +{ + "nativeDependencies": { + "@react-native-community/async-storage": "1.12.1" + } +} diff --git a/javascriptsource/nanoflowcommons/actions/GetStorageItemString.js b/javascriptsource/nanoflowcommons/actions/GetStorageItemString.js new file mode 100644 index 0000000..8c0d212 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/GetStorageItemString.js @@ -0,0 +1,42 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import AsyncStorage from '@react-native-community/async-storage'; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Retrieve a local stored string value identified by a unique key. This could be set via the SetStorageItemString JavaScript action. + * + * @param {string} key - This field is required. + * @returns {Promise.} + */ +export async function GetStorageItemString(key) { + // BEGIN USER CODE + if (!key) { + return Promise.reject(new Error("Input parameter 'Key' is required")); + } + return getItem(key).then(result => { + if (result === null) { + return Promise.reject(new Error(`Storage item '${key}' does not exist`)); + } + return result; + }); + async function getItem(key) { + if (navigator && navigator.product === "ReactNative") { + return AsyncStorage.getItem(key); + } + if (window) { + const value = window.localStorage.getItem(key); + return Promise.resolve(value); + } + return Promise.reject(new Error("No storage API available")); + } + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/GetStorageItemString.json b/javascriptsource/nanoflowcommons/actions/GetStorageItemString.json new file mode 100644 index 0000000..a560d6d --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/GetStorageItemString.json @@ -0,0 +1,5 @@ +{ + "nativeDependencies": { + "@react-native-community/async-storage": "1.12.1" + } +} diff --git a/javascriptsource/nanoflowcommons/actions/GetStraightLineDistance.js b/javascriptsource/nanoflowcommons/actions/GetStraightLineDistance.js new file mode 100644 index 0000000..ef03b45 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/GetStraightLineDistance.js @@ -0,0 +1,56 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +function deg2rad(deg) { + return deg.times(Math.PI / 180); +} +function kmToStatueMile(km) { + return km.div(1.609344); +} +function kmToNauticalMile(km) { + return km.div(1.852); +} +// END EXTRA CODE + +/** + * @param {Big} latitudePoint1 + * @param {Big} longitudePoint1 + * @param {Big} latitudePoint2 + * @param {Big} longitudePoint2 + * @param {"NanoflowCommons.Enum_DistanceUnit.KILOMETER"|"NanoflowCommons.Enum_DistanceUnit.STATUTE_MILE"|"NanoflowCommons.Enum_DistanceUnit.NAUTICAL_MILE"} unit + * @returns {Promise.} + */ +export async function GetStraightLineDistance(latitudePoint1, longitudePoint1, latitudePoint2, longitudePoint2, unit) { + // BEGIN USER CODE + const R = 6371; // Radius of the earth in km + const dLat = deg2rad(latitudePoint2.minus(latitudePoint1)).toNumber(); + const dLon = deg2rad(longitudePoint2.minus(longitudePoint1)).toNumber(); + const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + + Math.cos(deg2rad(latitudePoint1).toNumber()) * + Math.cos(deg2rad(latitudePoint2).toNumber()) * + Math.sin(dLon / 2) * + Math.sin(dLon / 2); + const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + const d = new Big(R * c); // Distance in km + switch (unit) { + case "KILOMETER": { + return d; + } + case "STATUTE_MILE": { + return kmToStatueMile(d); + } + case "NAUTICAL_MILE": { + return kmToNauticalMile(d); + } + default: + throw new Error(`Unknown unit: ${unit}`); + } + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/HideProgress.js b/javascriptsource/nanoflowcommons/actions/HideProgress.js new file mode 100644 index 0000000..50a0e95 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/HideProgress.js @@ -0,0 +1,26 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Hides default progress bar + * @param {Big} identifier - Identifier of ui which should be hidden. This param is required + * @returns {Promise.} + */ +export async function HideProgress(identifier) { + // BEGIN USER CODE + if (identifier == null) { + return Promise.reject(new Error("Input parameter 'Identifier' is required")); + } + mx.ui.hideProgress(Number(identifier)); + return Promise.resolve(); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/IsConnectedToServer.js b/javascriptsource/nanoflowcommons/actions/IsConnectedToServer.js new file mode 100644 index 0000000..2717e2c --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/IsConnectedToServer.js @@ -0,0 +1,27 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * @returns {Promise.} + */ +export async function IsConnectedToServer() { + // BEGIN USER CODE + try { + const response = await fetch(mx.remoteUrl); + return response.ok; + } + catch (err) { + console.error(err); + return false; + } + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/LICENSE b/javascriptsource/nanoflowcommons/actions/LICENSE new file mode 100644 index 0000000..564e565 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/LICENSE @@ -0,0 +1,202 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Mendix BV + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/NavigateTo.js b/javascriptsource/nanoflowcommons/actions/NavigateTo.js new file mode 100644 index 0000000..8944d1c --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/NavigateTo.js @@ -0,0 +1,72 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Opens a navigation application on your device or a web browser showing Google Maps directions. + * @param {string} location - This field is required. + * @returns {Promise.} + */ +export async function NavigateTo(location) { + // BEGIN USER CODE + if (!location) { + return Promise.reject(new Error("Input parameter 'Location' is required")); + } + location = encodeURIComponent(location); + const iosUrl = `maps://maps.apple.com/?daddr=${location}`; + const androidUrl = `google.navigation:q=${location}`; + const webUrl = `https://maps.google.com/maps?daddr=${location}`; + // Native platform + if (navigator && navigator.product === "ReactNative") { + const Linking = require("react-native").Linking; + const Platform = require("react-native").Platform; + const url = Platform.select({ + ios: iosUrl, + default: androidUrl + }); + return Linking.canOpenURL(url).then(supported => { + if (!supported) { + return false; + } + return Linking.openURL(url).then(() => true); + }); + } + // Hybrid or mobile web platform + if (window && window.navigator.userAgent) { + // iOS platform + if (/iPad|iPhone|iPod/i.test(window.navigator.userAgent)) { + openUrl(iosUrl); + return Promise.resolve(true); + } + // Android platform + if (/android|sink/i.test(window.navigator.userAgent)) { + openUrl(androidUrl); + return Promise.resolve(true); + } + } + // Desktop web or other platform + if (window) { + window.location.href = webUrl; + return Promise.resolve(true); + } + return Promise.resolve(false); + function openUrl(url) { + // Hybrid platform + if (window && window.cordova) { + window.open(url, "_system"); + } + // Mobile web platform + if (window) { + window.location.href = url; + } + } + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/OpenMap.js b/javascriptsource/nanoflowcommons/actions/OpenMap.js new file mode 100644 index 0000000..be6ebc1 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/OpenMap.js @@ -0,0 +1,72 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Opens a map application on your device or a web browser showing Google Maps. + * @param {string} location - Can be either address, latitude/longitude (51.906, 4.488) or interest point.This field is required. + * @returns {Promise.} + */ +export async function OpenMap(location) { + // BEGIN USER CODE + if (!location) { + return Promise.reject(new Error("Input parameter 'Location' is required")); + } + location = encodeURIComponent(location); + const iosUrl = `maps://maps.apple.com/?q=${location}`; + const androidUrl = `geo:0,0?q=${location}`; + const webUrl = `https://maps.google.com/maps?q=${location}`; + // Native platform + if (navigator && navigator.product === "ReactNative") { + const Linking = require("react-native").Linking; + const Platform = require("react-native").Platform; + const url = Platform.select({ + ios: iosUrl, + default: androidUrl + }); + return Linking.canOpenURL(url).then(supported => { + if (!supported) { + return false; + } + return Linking.openURL(url).then(() => true); + }); + } + // Hybrid or mobile web platform + if (window && window.navigator.userAgent) { + // iOS platform + if (/iPad|iPhone|iPod/i.test(window.navigator.userAgent)) { + openUrl(iosUrl); + return Promise.resolve(true); + } + // Android platform + if (/android|sink/i.test(window.navigator.userAgent)) { + openUrl(androidUrl); + return Promise.resolve(true); + } + } + // Desktop web or other platform + if (window) { + window.location.href = webUrl; + return Promise.resolve(true); + } + return Promise.resolve(false); + function openUrl(url) { + // Hybrid platform + if (window && window.cordova) { + window.open(url, "_system"); + } + // Mobile web platform + if (window) { + window.location.href = url; + } + } + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/OpenURL.js b/javascriptsource/nanoflowcommons/actions/OpenURL.js new file mode 100644 index 0000000..e96b3bd --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/OpenURL.js @@ -0,0 +1,45 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Opens the provided URL in the web browser. + * @param {string} url - This field is required. + * @returns {Promise.} + */ +export async function OpenURL(url) { + // BEGIN USER CODE + if (!url) { + return Promise.reject(new Error("Input parameter 'Url' is required")); + } + // Native platform + if (navigator && navigator.product === "ReactNative") { + const Linking = require("react-native").Linking; + return Linking.canOpenURL(url).then(supported => { + if (!supported) { + return false; + } + return Linking.openURL(url).then(() => true); + }); + } + // Hybrid platform + if (window && window.cordova) { + window.open(url, "_system"); + return Promise.resolve(true); + } + // Web platform + if (window) { + window.location.href = url; + return Promise.resolve(true); + } + return Promise.resolve(false); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/RefreshEntity.js b/javascriptsource/nanoflowcommons/actions/RefreshEntity.js new file mode 100644 index 0000000..973ddbc --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/RefreshEntity.js @@ -0,0 +1,30 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Updates an entity without needing to refresh the whole page via passing an entity. + * @param {string} entityToRefresh - Entity which will be refreshed. + * @returns {Promise.} + */ +export async function RefreshEntity(entityToRefresh) { + // BEGIN USER CODE + if (!entityToRefresh) { + return Promise.reject(new Error("EntityToRefresh parameter is required")); + } + return new Promise(resolve => { + mx.data.update({ + entity: entityToRefresh, + callback: () => resolve(true) + }); + }); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/RefreshObject.js b/javascriptsource/nanoflowcommons/actions/RefreshObject.js new file mode 100644 index 0000000..6216ae4 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/RefreshObject.js @@ -0,0 +1,30 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Updates an entity object without needing to refresh the whole page via passing an entity object. + * @param {MxObject} objectToRefresh - Object which will be refreshed. + * @returns {Promise.} + */ +export async function RefreshObject(objectToRefresh) { + // BEGIN USER CODE + if (!objectToRefresh) { + return Promise.reject(new Error("ObjectToRefresh parameter is required")); + } + return new Promise(resolve => { + mx.data.update({ + guid: objectToRefresh.getGuid(), + callback: () => resolve(true) + }); + }); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/Reload.js b/javascriptsource/nanoflowcommons/actions/Reload.js new file mode 100644 index 0000000..363e682 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/Reload.js @@ -0,0 +1,25 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Reloads web and native applications. + * @returns {Promise.} + */ +export async function Reload() { + // BEGIN USER CODE + mx.reload(); + return new Promise(() => { + // Never resolve this pormise to ensure that the next action in the nanoflow (if any) + // will not be executed before the actual reload is happended. + }); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/RemoveStorageItem.js b/javascriptsource/nanoflowcommons/actions/RemoveStorageItem.js new file mode 100644 index 0000000..e0b9d2d --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/RemoveStorageItem.js @@ -0,0 +1,36 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import AsyncStorage from '@react-native-community/async-storage'; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Remove a content identified by a unique key. This could be set via any of the Set Storage Item JavaScript actions + * @param {string} key - This field is required. + * @returns {Promise.} + */ +export async function RemoveStorageItem(key) { + // BEGIN USER CODE + if (!key) { + return Promise.reject(new Error("Input parameter 'Key' is required")); + } + return removeItem(key).then(() => true); + function removeItem(key) { + if (navigator && navigator.product === "ReactNative") { + return AsyncStorage.removeItem(key); + } + if (window) { + window.localStorage.removeItem(key); + return Promise.resolve(); + } + return Promise.reject(new Error("No storage API available")); + } + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/RemoveStorageItem.json b/javascriptsource/nanoflowcommons/actions/RemoveStorageItem.json new file mode 100644 index 0000000..a560d6d --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/RemoveStorageItem.json @@ -0,0 +1,5 @@ +{ + "nativeDependencies": { + "@react-native-community/async-storage": "1.12.1" + } +} diff --git a/javascriptsource/nanoflowcommons/actions/RequestLocationPermission.js b/javascriptsource/nanoflowcommons/actions/RequestLocationPermission.js new file mode 100644 index 0000000..9867ad6 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/RequestLocationPermission.js @@ -0,0 +1,129 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import Geolocation from '@react-native-community/geolocation'; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * On the native platform a request for permission should be made before the `GetCurrentLocation` action would work. + * @returns {Promise.} + */ +export async function RequestLocationPermission() { + // BEGIN USER CODE + var _a; + let reactNativeModule; + let geolocationModule; + const hasPermissionIOS = async () => { + const openSetting = () => { + reactNativeModule === null || reactNativeModule === void 0 ? void 0 : reactNativeModule.Linking.openSettings().catch(() => { + reactNativeModule === null || reactNativeModule === void 0 ? void 0 : reactNativeModule.Alert.alert("Unable to open settings."); + }); + }; + return geolocationModule + .requestAuthorization("whenInUse") + .then((status) => { + if (status === "granted") { + return true; + } + if (status === "denied") { + reactNativeModule === null || reactNativeModule === void 0 ? void 0 : reactNativeModule.Alert.alert("Location permission denied."); + } + if (status === "disabled") { + reactNativeModule === null || reactNativeModule === void 0 ? void 0 : reactNativeModule.Alert.alert("Location Services must be enabled to determine your location.", "", [ + { text: "Go to Settings", onPress: openSetting }, + { + text: "Don't Use Location" + } + ]); + } + return false; + }); + }; + const hasPermissionAndroid = async () => { + var _a, _b; + if (typeof ((_a = reactNativeModule === null || reactNativeModule === void 0 ? void 0 : reactNativeModule.Platform) === null || _a === void 0 ? void 0 : _a.Version) === "number" && ((_b = reactNativeModule === null || reactNativeModule === void 0 ? void 0 : reactNativeModule.Platform) === null || _b === void 0 ? void 0 : _b.Version) < 23) { + return true; + } + const androidLocationPermission = reactNativeModule === null || reactNativeModule === void 0 ? void 0 : reactNativeModule.PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION; + if (!androidLocationPermission) { + return false; + } + return reactNativeModule === null || reactNativeModule === void 0 ? void 0 : reactNativeModule.PermissionsAndroid.check(androidLocationPermission).then(hasPermission => { + var _a; + return hasPermission + ? true + : (_a = reactNativeModule === null || reactNativeModule === void 0 ? void 0 : reactNativeModule.PermissionsAndroid) === null || _a === void 0 ? void 0 : _a.request(androidLocationPermission).then(status => { + if (status === (reactNativeModule === null || reactNativeModule === void 0 ? void 0 : reactNativeModule.PermissionsAndroid.RESULTS.GRANTED)) { + return true; + } + if (status === (reactNativeModule === null || reactNativeModule === void 0 ? void 0 : reactNativeModule.PermissionsAndroid.RESULTS.DENIED)) { + reactNativeModule.ToastAndroid.show("Location permission denied by user.", reactNativeModule.ToastAndroid.LONG); + } + else if (status === (reactNativeModule === null || reactNativeModule === void 0 ? void 0 : reactNativeModule.PermissionsAndroid.RESULTS.NEVER_ASK_AGAIN)) { + reactNativeModule.ToastAndroid.show("Location permission revoked by user.", reactNativeModule.ToastAndroid.LONG); + } + return false; + }); + }); + }; + const hasLocationPermission = async () => { + if ((reactNativeModule === null || reactNativeModule === void 0 ? void 0 : reactNativeModule.Platform.OS) === "ios") { + const hasPermission = await hasPermissionIOS(); + return hasPermission; + } + if ((reactNativeModule === null || reactNativeModule === void 0 ? void 0 : reactNativeModule.Platform.OS) === "android") { + const hasPermission = await hasPermissionAndroid(); + return hasPermission !== null && hasPermission !== void 0 ? hasPermission : false; + } + return Promise.reject(new Error("Unsupported platform")); + }; + const hasLocationPermissionForOldLibrary = async () => { + if ((reactNativeModule === null || reactNativeModule === void 0 ? void 0 : reactNativeModule.Platform.OS) === "android") { + const locationPermission = reactNativeModule.PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION; + return reactNativeModule.PermissionsAndroid.check(locationPermission).then(hasPermission => hasPermission + ? true + : reactNativeModule === null || reactNativeModule === void 0 ? void 0 : reactNativeModule.PermissionsAndroid.request(locationPermission).then(status => status === (reactNativeModule === null || reactNativeModule === void 0 ? void 0 : reactNativeModule.PermissionsAndroid.RESULTS.GRANTED))); + } + else if (geolocationModule && geolocationModule.requestAuthorization) { + try { + geolocationModule.requestAuthorization(); + return Promise.resolve(true); + } + catch (error) { + return Promise.reject(error); + } + } + return false; + }; + if (navigator && navigator.product === "ReactNative") { + reactNativeModule = require("react-native"); + if (!reactNativeModule) { + return Promise.reject(new Error("React Native module could not be found")); + } + if (reactNativeModule.NativeModules.RNFusedLocation) { + geolocationModule = (await import('react-native-geolocation-service')).default; + return hasLocationPermission(); + } + else if (reactNativeModule.NativeModules.RNCGeolocation) { + geolocationModule = Geolocation; + return (_a = (await hasLocationPermissionForOldLibrary())) !== null && _a !== void 0 ? _a : false; + } + else { + return Promise.reject(new Error("Geolocation module could not be found")); + } + } + else if (navigator && navigator.geolocation) { + return Promise.reject(new Error("No permission request for location is required for web/hybrid platform")); + } + else { + return Promise.reject(new Error("Geolocation module could not be found")); + } + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/RequestLocationPermission.json b/javascriptsource/nanoflowcommons/actions/RequestLocationPermission.json new file mode 100644 index 0000000..9fd572c --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/RequestLocationPermission.json @@ -0,0 +1,6 @@ +{ + "nativeDependencies": { + "@react-native-community/geolocation": "2.0.2", + "react-native-geolocation-service": "5.2.0" + } +} diff --git a/javascriptsource/nanoflowcommons/actions/ReverseGeocode.js b/javascriptsource/nanoflowcommons/actions/ReverseGeocode.js new file mode 100644 index 0000000..5da0cce --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/ReverseGeocode.js @@ -0,0 +1,109 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import Geodecoder from 'react-native-geocoder'; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Reverse geocoding is the process of converting geographic coordinates (latitude and longitude) into a human-readable address. + * @param {string} latitude - This field is required. + * @param {string} longitude - This field is required. + * @param {"NanoflowCommons.GeocodingProvider.Google"|"NanoflowCommons.GeocodingProvider.Geocodio"|"NanoflowCommons.GeocodingProvider.LocationIQ"|"NanoflowCommons.GeocodingProvider.MapQuest"} geocodingProvider - This field is required for use on web. + * @param {string} providerApiKey - This field is required for use on web. Note that the keys are accessible by the end users and should be protected in other ways; for example restricted domain name. + * @returns {Promise.} + */ +export async function ReverseGeocode(latitude, longitude, geocodingProvider, providerApiKey) { + // BEGIN USER CODE + /** + * Documentation: + * - Native: https://github.com/devfd/react-native-geocoder + * - Google: https://developers.google.com/maps/documentation/geocoding/intro#ReverseGeocoding + * - Geocodio: https://www.geocod.io/docs/#reverse-geocoding + * - LocationIQ: https://locationiq.com/docs-html/index.html#reverse-geocoding + * - MapQuest: https://developer.mapquest.com/documentation/open/geocoding-api/address/get/ + */ + if (!latitude) { + return Promise.reject(new Error("Input parameter 'Latitude' is required")); + } + if (!longitude) { + return Promise.reject(new Error("Input parameter 'Longitude' is required")); + } + if (navigator && navigator.product === "ReactNative") { + const position = { lat: Number(latitude), lng: Number(longitude) }; + return Geodecoder.geocodePosition(position).then(results => { + if (results.length === 0) { + return Promise.reject(new Error("No results found")); + } + return results[0].formattedAddress; + }); + } + if (!geocodingProvider) { + return Promise.reject(new Error("Input parameter 'Geocoding provider' is required for use on web")); + } + if (!providerApiKey) { + return Promise.reject(new Error("Input parameter 'Provider api key' is required for use on web")); + } + latitude = encodeURIComponent(latitude); + longitude = encodeURIComponent(longitude); + providerApiKey = encodeURIComponent(providerApiKey); + const url = getApiUrl(geocodingProvider, latitude, longitude, providerApiKey); + return fetch(url) + .then(response => response.json().catch(() => response.text().then(text => { + return Promise.reject(new Error(text)); + }))) + .then(response => getAddress(geocodingProvider, response)) + .catch(error => Promise.reject(error)); + function getApiUrl(provider, lat, long, key) { + switch (provider) { + case "Google": + return `https://maps.googleapis.com/maps/api/geocode/json?latlng=${lat},${long}&key=${key}`; + case "Geocodio": + return `https://api.geocod.io/v1.3/reverse?q=${lat},${long}&api_key=${key}`; + case "LocationIQ": + return `https://eu1.locationiq.com/v1/reverse.php?format=json&lat=${lat}&lon=${long}&key=${key}`; + case "MapQuest": + return `https://www.mapquestapi.com/geocoding/v1/reverse?location=${lat},${long}&key=${key}`; + } + } + function getAddress(provider, response) { + switch (provider) { + case "Google": + if (response.status !== "OK") { + throw new Error(response.error_message); + } + return response.results[0].formatted_address; + case "Geocodio": + if (response.error) { + throw new Error(response.error); + } + if (response.results.length === 0) { + throw new Error("No results found"); + } + return response.results[0].formatted_address; + case "LocationIQ": + if (response.error) { + throw new Error(response.error); + } + return response.display_name; + case "MapQuest": + if (response.info.statuscode !== 0) { + throw new Error(response.info.messages.join(", ")); + } + if (response.results.length === 0) { + throw new Error("No results found"); + } + const location = response.results[0].locations[0]; + const city = location.adminArea5; + const country = location.adminArea1; + return `${location.street}, ${location.postalCode} ${city}, ${country}`; + } + } + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/ReverseGeocode.json b/javascriptsource/nanoflowcommons/actions/ReverseGeocode.json new file mode 100644 index 0000000..aa3b0e5 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/ReverseGeocode.json @@ -0,0 +1,5 @@ +{ + "nativeDependencies": { + "react-native-geocoder": "0.5.0" + } +} diff --git a/javascriptsource/nanoflowcommons/actions/SendTextMessage.js b/javascriptsource/nanoflowcommons/actions/SendTextMessage.js new file mode 100644 index 0000000..e83fb07 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/SendTextMessage.js @@ -0,0 +1,46 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Launches the text messaging app on your device. + * @param {string} phoneNumber - This field is required. + * @returns {Promise.} + */ +export async function SendTextMessage(phoneNumber) { + // BEGIN USER CODE + if (!phoneNumber) { + return Promise.reject(new Error("Input parameter 'Phone number' is required")); + } + const url = `sms:${encodeURI(phoneNumber)}`; + // Native platform + if (navigator && navigator.product === "ReactNative") { + const Linking = require("react-native").Linking; + return Linking.canOpenURL(url).then(supported => { + if (!supported) { + return false; + } + return Linking.openURL(url).then(() => true); + }); + } + // Hybrid platform + if (window && window.cordova) { + window.open(url, "_system"); + return Promise.resolve(true); + } + // Web platform + if (window) { + window.location.href = url; + return Promise.resolve(true); + } + return Promise.resolve(false); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/SetStorageItemObject.js b/javascriptsource/nanoflowcommons/actions/SetStorageItemObject.js new file mode 100644 index 0000000..f4ecff9 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/SetStorageItemObject.js @@ -0,0 +1,47 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import AsyncStorage from '@react-native-community/async-storage'; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Store a Mendix object in device storage, identified by a unique key. Can be accesed by the GetStargeItemObject action. Please note that users can clear the device storage. + * @param {string} key - This field is required. + * @param {MxObject} value - This field is required. + * @returns {Promise.} + */ +export async function SetStorageItemObject(key, value) { + // BEGIN USER CODE + if (!key) { + return Promise.reject(new Error("Input parameter 'Key' is required")); + } + if (!value) { + return Promise.reject(new Error("Input parameter 'Value' is required")); + } + const serializedObject = serializeMxObject(value); + return setItem(key, JSON.stringify(serializedObject)); + function setItem(key, value) { + if (navigator && navigator.product === "ReactNative") { + return AsyncStorage.setItem(key, value); + } + if (window) { + window.localStorage.setItem(key, value); + return Promise.resolve(); + } + return Promise.reject(new Error("No storage API available")); + } + function serializeMxObject(object) { + return object.getAttributes().reduce((accumulator, attributeName) => { + accumulator[attributeName] = object.get(attributeName); + return accumulator; + }, { guid: object.getGuid() }); + } + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/SetStorageItemObject.json b/javascriptsource/nanoflowcommons/actions/SetStorageItemObject.json new file mode 100644 index 0000000..a560d6d --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/SetStorageItemObject.json @@ -0,0 +1,5 @@ +{ + "nativeDependencies": { + "@react-native-community/async-storage": "1.12.1" + } +} diff --git a/javascriptsource/nanoflowcommons/actions/SetStorageItemObjectList.js b/javascriptsource/nanoflowcommons/actions/SetStorageItemObjectList.js new file mode 100644 index 0000000..004a1d3 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/SetStorageItemObjectList.js @@ -0,0 +1,47 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import AsyncStorage from '@react-native-community/async-storage'; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Store a list of Mendix objects in device storage, identified by a unique key. Can be accessed by the GetStorageItemObject action. Please note that users can clear the device storage. + * @param {string} key - This field is required. + * @param {MxObject[]} value - This field is required. + * @returns {Promise.} + */ +export async function SetStorageItemObjectList(key, value) { + // BEGIN USER CODE + if (!key) { + return Promise.reject(new Error("Input parameter 'Key' is required")); + } + if (!value) { + return Promise.reject(new Error("Input parameter 'Value' is required")); + } + const serializedObjects = value.map(serializeMxObject); + return setItem(key, JSON.stringify(serializedObjects)); + function setItem(key, value) { + if (navigator && navigator.product === "ReactNative") { + return AsyncStorage.setItem(key, value); + } + if (window) { + window.localStorage.setItem(key, value); + return Promise.resolve(); + } + return Promise.reject(new Error("No storage API available")); + } + function serializeMxObject(object) { + return object.getAttributes().reduce((accumulator, attributeName) => { + accumulator[attributeName] = object.get(attributeName); + return accumulator; + }, { guid: object.getGuid() }); + } + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/SetStorageItemObjectList.json b/javascriptsource/nanoflowcommons/actions/SetStorageItemObjectList.json new file mode 100644 index 0000000..a560d6d --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/SetStorageItemObjectList.json @@ -0,0 +1,5 @@ +{ + "nativeDependencies": { + "@react-native-community/async-storage": "1.12.1" + } +} diff --git a/javascriptsource/nanoflowcommons/actions/SetStorageItemString.js b/javascriptsource/nanoflowcommons/actions/SetStorageItemString.js new file mode 100644 index 0000000..7c0460a --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/SetStorageItemString.js @@ -0,0 +1,40 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import AsyncStorage from '@react-native-community/async-storage'; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Store a string value in the device storage, identified by a unique key. Can be accessed by the GetStorageItemObject action. Please note that users can clear the device storage. + * @param {string} key - This field is required. + * @param {string} value - This field is required. + * @returns {Promise.} + */ +export async function SetStorageItemString(key, value) { + // BEGIN USER CODE + if (!key) { + return Promise.reject(new Error("Input parameter 'Key' is required")); + } + if (!value) { + return Promise.reject(new Error("Input parameter 'Value' is required")); + } + return setItem(key, value); + function setItem(key, value) { + if (navigator && navigator.product === "ReactNative") { + return AsyncStorage.setItem(key, value); + } + if (window) { + window.localStorage.setItem(key, value); + return Promise.resolve(); + } + return Promise.reject(new Error("No storage API available")); + } + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/SetStorageItemString.json b/javascriptsource/nanoflowcommons/actions/SetStorageItemString.json new file mode 100644 index 0000000..a560d6d --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/SetStorageItemString.json @@ -0,0 +1,5 @@ +{ + "nativeDependencies": { + "@react-native-community/async-storage": "1.12.1" + } +} diff --git a/javascriptsource/nanoflowcommons/actions/Share.js b/javascriptsource/nanoflowcommons/actions/Share.js new file mode 100644 index 0000000..dd18881 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/Share.js @@ -0,0 +1,58 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Action to invoke the native sharing mechanism of the device. + * @param {string} url - The url to share. + * @param {string} text - The text to share. + * @param {string} title - An optional title for the message or url to share. Only some share targets use this value. + * @returns {Promise.} + */ +export async function Share(url, text, title) { + // BEGIN USER CODE + if (!text && !url) { + return Promise.reject(new Error("It is required to provide at least one of input parameters 'Text' and 'Url'")); + } + // Native platform + // Documentation https://facebook.github.io/react-native/docs/share + if (navigator && navigator.product === "ReactNative") { + const RNShare = require("react-native").Share; + const content = url && text ? { message: text + "\n" + url, title } : url ? { url, title } : { message: text, title }; + return RNShare.share(content).then(result => { + if (result.action === RNShare.dismissedAction) { + return false; + } + return true; + }); + } + // Web platform + // Documentation https://developer.mozilla.org/en-US/docs/Web/API/Navigator/share + if (navigator && navigator.share) { + return navigator.share({ url, text, title }).then(() => true); + } + // Hybrid platform + // Documentation https://github.com/EddyVerbruggen/SocialSharing-PhoneGap-Plugin + if (window && window.plugins && window.plugins.socialsharing) { + return new Promise((resolve, reject) => { + window.plugins.socialsharing.shareWithOptions({ + message: text, + subject: title, + url + }, result => resolve(result.completed), errorMessage => reject(new Error(errorMessage))); + }); + } + if (document && document.location && document.location.protocol === "http:") { + return Promise.reject(new Error("This action requires a secure https: connection")); + } + return Promise.reject(new Error("This action is not supported by this browser")); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/ShowConfirmation.js b/javascriptsource/nanoflowcommons/actions/ShowConfirmation.js new file mode 100644 index 0000000..03e26d7 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/ShowConfirmation.js @@ -0,0 +1,50 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Shows a confirmation dialog during the execution of a nanoflow, to make perform actions based on the user input. + * @param {string} titleCaption - Set to empty to use default text 'Confirmation'. (Only for native) + * @param {string} question - This field is required. + * @param {string} cancelButtonCaption - Set to empty to use default text 'Cancel'. + * @param {string} proceedButtonCaption - Set to empty to use default text 'OK'. + * @returns {Promise.} + */ +export async function ShowConfirmation(titleCaption, question, cancelButtonCaption, proceedButtonCaption) { + // BEGIN USER CODE + if (!question) { + return Promise.reject(new Error("Input parameter 'Question' is required")); + } + const cancel = cancelButtonCaption || "Cancel"; + const proceed = proceedButtonCaption || "OK"; + const title = titleCaption || "Confirmation"; + // Native platform + if (navigator && navigator.product === "ReactNative") { + const Alert = require("react-native").Alert; + return new Promise(resolve => { + Alert.alert(title, question, [ + { text: cancel, onPress: () => resolve(false), style: "cancel" }, + { text: proceed, onPress: () => resolve(true) } + ]); + }); + } + // Other platforms + return new Promise(resolve => { + mx.ui.confirmation({ + content: question, + proceed, + cancel, + handler: () => resolve(true), + onCancel: () => resolve(false) + }); + }); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/ShowProgress.js b/javascriptsource/nanoflowcommons/actions/ShowProgress.js new file mode 100644 index 0000000..990f9dd --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/ShowProgress.js @@ -0,0 +1,27 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Shows default progress bar + * @param {string} message - The text to show while loading. + * @param {boolean} blocking - Block the user interface immediately. + * @returns {Promise.} + */ +export async function ShowProgress(message, blocking) { + // BEGIN USER CODE + const id = mx.ui.showProgress(message, blocking); + if (id !== undefined) { + return Promise.resolve(new Big(id)); + } + return Promise.reject(new Error("Could not open the loading dialog")); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/SignIn.js b/javascriptsource/nanoflowcommons/actions/SignIn.js new file mode 100644 index 0000000..ebb6bfd --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/SignIn.js @@ -0,0 +1,36 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Tries to login using a username and password. + * + * Returns an HTTP response status code, for example: + * - 200 when the login succeeds + * - 401 when the entered username or password is incorrect + * - 0 when the network connection is unavailable + * + * @param {string} username - This field is required. + * @param {string} password - This field is required. + * @returns {Promise.} + */ +export async function SignIn(username, password) { + // BEGIN USER CODE + if (!username || !password) { + return Promise.resolve(new Big(401)); + } + return new Promise(resolve => { + const onSuccess = () => resolve(new Big(200)); + const onError = (error) => resolve(new Big(error.status)); + mx.login(username, password, onSuccess, onError); + }); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/SignOut.js b/javascriptsource/nanoflowcommons/actions/SignOut.js new file mode 100644 index 0000000..e6652ad --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/SignOut.js @@ -0,0 +1,28 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * If the user is logged in, logs out the user and restarts the client. + * + * If the user is not logged in, the return value is false + * + * @returns {Promise.} + */ +export async function SignOut() { + // BEGIN USER CODE + if (!mx.session.isGuest()) { + mx.logout(); + return Promise.resolve(true); + } + return Promise.resolve(false); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/StorageItemExists.js b/javascriptsource/nanoflowcommons/actions/StorageItemExists.js new file mode 100644 index 0000000..6ce9b48 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/StorageItemExists.js @@ -0,0 +1,36 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import AsyncStorage from '@react-native-community/async-storage'; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Check if an item exists in a device storage, identified by a unique key. The value could be set by a Set Storage Item action. + * @param {string} key - This field is required. + * @returns {Promise.} + */ +export async function StorageItemExists(key) { + // BEGIN USER CODE + if (!key) { + return Promise.reject(new Error("Input parameter 'Key' is required")); + } + return getItem(key).then(result => result !== null); + function getItem(key) { + if (navigator && navigator.product === "ReactNative") { + return AsyncStorage.getItem(key); + } + if (window) { + const value = window.localStorage.getItem(key); + return Promise.resolve(value); + } + return Promise.reject(new Error("No storage API available")); + } + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/StorageItemExists.json b/javascriptsource/nanoflowcommons/actions/StorageItemExists.json new file mode 100644 index 0000000..a560d6d --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/StorageItemExists.json @@ -0,0 +1,5 @@ +{ + "nativeDependencies": { + "@react-native-community/async-storage": "1.12.1" + } +} diff --git a/javascriptsource/nanoflowcommons/actions/TimeBetween.js b/javascriptsource/nanoflowcommons/actions/TimeBetween.js new file mode 100644 index 0000000..a321f61 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/TimeBetween.js @@ -0,0 +1,50 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * The TimeBetween function calculates the difference between the input Date and times in milliseconds, seconds, minutes, hours or days, depending on the unitOfTime. + * @param {Date} startDate + * @param {Date} endDate + * @param {string} unitOfTime - Must be one of: "MILLISECOND"|"SECOND"|"MINUTE"|"HOUR"|"DAY" + * @returns {Promise.} + */ +export async function TimeBetween(startDate, endDate, unitOfTime) { + // BEGIN USER CODE + if (startDate == null) { + throw new Error("Required field: startDate"); + } + if (endDate == null) { + throw new Error("Required field: endDate"); + } + if (unitOfTime == null) { + throw new Error("Required field: unitOfTime"); + } + const difference = endDate.getTime() - startDate.getTime(); + function getDiff(difference, unit) { + switch (unit) { + case "MILLISECOND": + return difference; + case "SECOND": + return difference / 1000; + case "MINUTE": + return difference / 60000; + case "HOUR": + return difference / 3600000; + case "DAY": + return difference / 86400000; + default: + throw new Error("Unit of time not supported: " + unit); + } + } + return new Big(getDiff(difference, unitOfTime)); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/ToggleSidebar.js b/javascriptsource/nanoflowcommons/actions/ToggleSidebar.js new file mode 100644 index 0000000..9579cd3 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/ToggleSidebar.js @@ -0,0 +1,25 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * @returns {Promise.} + */ +export async function ToggleSidebar() { + // BEGIN USER CODE + mx.ui.toggleSidebar(); + // Web platform + if (window && !(navigator && navigator.product === "ReactNative")) { + document.dispatchEvent(new CustomEvent("toggleSidebar")); + } + return Promise.resolve(); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/Wait.js b/javascriptsource/nanoflowcommons/actions/Wait.js new file mode 100644 index 0000000..09474df --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/Wait.js @@ -0,0 +1,27 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Wait for number of milliseconds before continuing nanoflow execution. + * @param {Big} delay - The number of milliseconds to wait. This field is required. + * @returns {Promise.} + */ +export async function Wait(delay) { + // BEGIN USER CODE + if (delay == null) { + return Promise.reject(new Error("Input parameter 'delay' is required.")); + } + return new Promise(resolve => { + setTimeout(() => resolve(), Number(delay)); + }); + // END USER CODE +} diff --git a/javascriptsource/nanoflowcommons/actions/dependencies.json b/javascriptsource/nanoflowcommons/actions/dependencies.json new file mode 100644 index 0000000..624d87b --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/dependencies.json @@ -0,0 +1 @@ +[{"react-native-geocoder":{"version":"0.5.0","transitive":false,"url":"https://github.com/devfd/react-native-geocoder"}},{"@react-native-community/geolocation":{"version":"2.0.2","transitive":false,"url":"https://github.com/react-native-community/react-native-geolocation#README.md"}},{"react-native-geolocation-service":{"version":"5.2.0","transitive":false,"url":"https://github.com/Agontuk/react-native-geolocation-service"}},{"@react-native-community/async-storage":{"version":"1.12.1","transitive":false,"url":"https://github.com/react-native-community/react-native-async-storage#readme"}},{"deep-assign":{"version":"3.0.0","transitive":true,"url":null}},{"is-obj":{"version":"1.0.1","transitive":true,"url":null}},{"js-base64":{"version":"3.7.2","transitive":false,"url":null}}] \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/dependencies.txt b/javascriptsource/nanoflowcommons/actions/dependencies.txt new file mode 100644 index 0000000..60f76f9 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/dependencies.txt @@ -0,0 +1,217 @@ +Name: react-native-geocoder +Version: 0.5.0 +License: MIT +Private: false +Description: react native geocoding and reverse geocoding +Repository: https://github.com/devfd/react-native-geocoder +Homepage: https://github.com/devfd/react-native-geocoder +License Copyright: +=== + +The MIT License (MIT) + +Copyright (c) 2015 Alexey + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + +--- + +Name: @react-native-community/geolocation +Version: 2.0.2 +License: MIT +Private: false +Description: React Native Geolocation Module for iOS and Android +Homepage: https://github.com/react-native-community/react-native-geolocation#README.md + +--- + +Name: react-native-geolocation-service +Version: 5.2.0 +License: MIT +Private: false +Description: React native geolocation service for iOS and android +Repository: https://github.com/Agontuk/react-native-geolocation-service +Homepage: https://github.com/Agontuk/react-native-geolocation-service +License Copyright: +=== + +The MIT License (MIT) +Copyright (c) 2018 Iftekhar Rifat + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +OR OTHER DEALINGS IN THE SOFTWARE. + + +--- + +Name: @react-native-community/async-storage +Version: 1.12.1 +License: MIT +Private: false +Description: Asynchronous, persistent, key-value storage system for React Native. +Repository: https://github.com/react-native-community/react-native-async-storage.git +Homepage: https://github.com/react-native-community/react-native-async-storage#readme +License Copyright: +=== + +MIT License + +Copyright (c) 2015-present, Facebook, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- + +Name: deep-assign +Version: 3.0.0 +License: MIT +Private: false +Description: Recursive Object.assign() +Repository: sindresorhus/deep-assign +License Copyright: +=== + +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +--- + +Name: is-obj +Version: 1.0.1 +License: MIT +Private: false +Description: Check if a value is an object +Repository: sindresorhus/is-obj +License Copyright: +=== + +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +--- + +Name: js-base64 +Version: 3.7.2 +License: BSD-3-Clause +Private: false +Description: Yet another Base64 transcoder in pure-JS +Repository: git+https://github.com/dankogai/js-base64.git +License Copyright: +=== + +Copyright (c) 2014, Dan Kogai +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of {{{project}}} nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/LICENSE b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/LICENSE new file mode 100644 index 0000000..d902153 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2015-present, Facebook, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/README.md b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/README.md new file mode 100644 index 0000000..a96bb58 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/README.md @@ -0,0 +1,27 @@ +# React Native Async Storage + +An asynchronous, unencrypted, persistent, key-value storage system for React Native. + + +## Supported platforms + +- iOS +- Android +- [Web](https://github.com/react-native-community/async-storage/releases/tag/v1.9.0) +- [MacOS](https://github.com/react-native-community/async-storage/releases/tag/v1.8.1) +- [Windows](https://github.com/react-native-community/async-storage/releases/tag/v1.10.0) + + +## Getting Started + +Head over to [documentation](https://react-native-community.github.io/async-storage/) to learn more. + + +## Contribution +Pull requests are welcome. Please open an issue first to discuss what you would like to change. + +See the [CONTRIBUTING](CONTRIBUTING.md) file for more information. + +## License + +MIT. diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/AsyncStorage.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/AsyncStorage.js new file mode 100644 index 0000000..389ca45 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/AsyncStorage.js @@ -0,0 +1,2 @@ +"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _deepAssign=_interopRequireDefault(require("deep-assign"));var mergeLocalStorageItem=function mergeLocalStorageItem(key,value){var oldValue=window.localStorage.getItem(key);var oldObject=JSON.parse(oldValue);var newObject=JSON.parse(value);var nextValue=JSON.stringify((0,_deepAssign.default)({},oldObject,newObject));window.localStorage.setItem(key,nextValue);};var createPromise=function createPromise(getValue,callback){return new Promise(function(resolve,reject){try{var value=getValue();if(callback){callback(null,value);}resolve(value);}catch(err){if(callback){callback(err);}reject(err);}});};var createPromiseAll=function createPromiseAll(promises,callback,processResult){return Promise.all(promises).then(function(result){var value=processResult?processResult(result):null;callback&&callback(null,value);return Promise.resolve(value);},function(errors){callback&&callback(errors);return Promise.reject(errors);});};var AsyncStorage=function(){function AsyncStorage(){(0,_classCallCheck2.default)(this,AsyncStorage);}(0,_createClass2.default)(AsyncStorage,null,[{key:"getItem",value:function getItem(key,callback){return createPromise(function(){return window.localStorage.getItem(key);},callback);}},{key:"setItem",value:function setItem(key,value,callback){return createPromise(function(){window.localStorage.setItem(key,value);},callback);}},{key:"removeItem",value:function removeItem(key,callback){return createPromise(function(){return window.localStorage.removeItem(key);},callback);}},{key:"mergeItem",value:function mergeItem(key,value,callback){return createPromise(function(){mergeLocalStorageItem(key,value);},callback);}},{key:"clear",value:function clear(callback){return createPromise(function(){window.localStorage.clear();},callback);}},{key:"getAllKeys",value:function getAllKeys(callback){return createPromise(function(){var numberOfKeys=window.localStorage.length;var keys=[];for(var i=0;i {\n const oldValue = window.localStorage.getItem(key);\n const oldObject = JSON.parse(oldValue);\n const newObject = JSON.parse(value);\n const nextValue = JSON.stringify(merge({}, oldObject, newObject));\n window.localStorage.setItem(key, nextValue);\n};\n\nconst createPromise = (getValue, callback): Promise<*> => {\n return new Promise((resolve, reject) => {\n try {\n const value = getValue();\n if (callback) {\n callback(null, value);\n }\n resolve(value);\n } catch (err) {\n if (callback) {\n callback(err);\n }\n reject(err);\n }\n });\n};\n\nconst createPromiseAll = (promises, callback, processResult): Promise<*> => {\n return Promise.all(promises).then(\n result => {\n const value = processResult ? processResult(result) : null;\n callback && callback(null, value);\n return Promise.resolve(value);\n },\n errors => {\n callback && callback(errors);\n return Promise.reject(errors);\n }\n );\n};\n\nexport default class AsyncStorage {\n\n /**\n * Fetches `key` value.\n */\n static getItem(key: string, callback?: Function): Promise<*> {\n return createPromise(() => {\n return window.localStorage.getItem(key);\n }, callback);\n }\n\n /**\n * Sets `value` for `key`.\n */\n static setItem(key: string, value: string, callback?: Function): Promise<*> {\n return createPromise(() => {\n window.localStorage.setItem(key, value);\n }, callback);\n }\n\n /**\n * Removes a `key`\n */\n static removeItem(key: string, callback?: Function): Promise<*> {\n return createPromise(() => {\n return window.localStorage.removeItem(key);\n }, callback);\n }\n\n /**\n * Merges existing value with input value, assuming they are stringified JSON.\n */\n static mergeItem(key: string, value: string, callback?: Function): Promise<*> {\n return createPromise(() => {\n mergeLocalStorageItem(key, value);\n }, callback);\n }\n\n /**\n * Erases *all* AsyncStorage for the domain.\n */\n static clear(callback?: Function): Promise<*> {\n return createPromise(() => {\n window.localStorage.clear();\n }, callback);\n }\n\n /**\n * Gets *all* keys known to the app, for all callers, libraries, etc.\n */\n static getAllKeys(callback?: Function): Promise<*> {\n return createPromise(() => {\n const numberOfKeys = window.localStorage.length;\n const keys = [];\n for (let i = 0; i < numberOfKeys; i += 1) {\n const key = window.localStorage.key(i);\n keys.push(key);\n }\n return keys;\n }, callback);\n }\n\n /**\n * (stub) Flushes any pending requests using a single batch call to get the data.\n */\n static flushGetRequests() {}\n\n /**\n * multiGet resolves to an array of key-value pair arrays that matches the\n * input format of multiSet.\n *\n * multiGet(['k1', 'k2']) -> [['k1', 'val1'], ['k2', 'val2']]\n */\n static multiGet(keys: Array, callback?: Function): Promise<*> {\n const promises = keys.map(key => AsyncStorage.getItem(key));\n const processResult = result => result.map((value, i) => [keys[i], value]);\n return createPromiseAll(promises, callback, processResult);\n }\n\n /**\n * Takes an array of key-value array pairs.\n * multiSet([['k1', 'val1'], ['k2', 'val2']])\n */\n static multiSet(keyValuePairs: Array>, callback?: Function): Promise<*> {\n const promises = keyValuePairs.map(item => AsyncStorage.setItem(item[0], item[1]));\n return createPromiseAll(promises, callback);\n }\n\n /**\n * Delete all the keys in the `keys` array.\n */\n static multiRemove(keys: Array, callback?: Function): Promise<*> {\n const promises = keys.map(key => AsyncStorage.removeItem(key));\n return createPromiseAll(promises, callback);\n }\n\n /**\n * Takes an array of key-value array pairs and merges them with existing\n * values, assuming they are stringified JSON.\n *\n * multiMerge([['k1', 'val1'], ['k2', 'val2']])\n */\n static multiMerge(keyValuePairs: Array>, callback?: Function): Promise<*> {\n const promises = keyValuePairs.map(item => AsyncStorage.mergeItem(item[0], item[1]));\n return createPromiseAll(promises, callback);\n }\n}\n"]} \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/AsyncStorage.native.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/AsyncStorage.native.js new file mode 100644 index 0000000..f8f919f --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/AsyncStorage.native.js @@ -0,0 +1,2 @@ +'use strict';var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _RCTAsyncStorage=_interopRequireDefault(require("./RCTAsyncStorage"));if(!_RCTAsyncStorage.default){throw new Error("[@RNC/AsyncStorage]: NativeModule: AsyncStorage is null.\n\nTo fix this issue try these steps:\n\n \u2022 Run `react-native link @react-native-community/async-storage` in the project root.\n\n \u2022 Rebuild and restart the app.\n\n \u2022 Run the packager with `--reset-cache` flag.\n\n \u2022 If you are using CocoaPods on iOS, run `pod install` in the `ios` directory and then rebuild and re-run the app.\n\n \u2022 If this happens while testing with Jest, check out docs how to integrate AsyncStorage with it: https://react-native-community.github.io/async-storage/docs/advanced/jest\n\nIf none of these fix the issue, please open an issue on the Github repository: https://github.com/react-native-community/react-native-async-storage/issues \n");}function checkValidInput(usedKey,value){var isValuePassed=arguments.length>1;if(typeof usedKey!=='string'){console.warn("[AsyncStorage] Using ".concat(typeof usedKey," type for key is not supported. This can lead to unexpected behavior/errors. Use string instead.\nKey passed: ").concat(usedKey,"\n"));}if(isValuePassed&&typeof value!=='string'){if(value==null){throw new Error("[AsyncStorage] Passing null/undefined as value is not supported. If you want to remove value, Use .remove method instead.\nPassed value: ".concat(value,"\nPassed key: ").concat(usedKey,"\n"));}else{console.warn("[AsyncStorage] The value for key \"".concat(usedKey,"\" is not a string. This can lead to unexpected behavior/errors. Consider stringifying it.\nPassed value: ").concat(value,"\nPassed key: ").concat(usedKey,"\n"));}}}var AsyncStorage={_getRequests:[],_getKeys:[],_immediate:null,getItem:function getItem(key,callback){return new Promise(function(resolve,reject){checkValidInput(key);_RCTAsyncStorage.default.multiGet([key],function(errors,result){var value=result&&result[0]&&result[0][1]?result[0][1]:null;var errs=convertErrors(errors);callback&&callback(errs&&errs[0],value);if(errs){reject(errs[0]);}else{resolve(value);}});});},setItem:function setItem(key,value,callback){return new Promise(function(resolve,reject){checkValidInput(key,value);_RCTAsyncStorage.default.multiSet([[key,value]],function(errors){var errs=convertErrors(errors);callback&&callback(errs&&errs[0]);if(errs){reject(errs[0]);}else{resolve(null);}});});},removeItem:function removeItem(key,callback){return new Promise(function(resolve,reject){checkValidInput(key);_RCTAsyncStorage.default.multiRemove([key],function(errors){var errs=convertErrors(errors);callback&&callback(errs&&errs[0]);if(errs){reject(errs[0]);}else{resolve(null);}});});},mergeItem:function mergeItem(key,value,callback){return new Promise(function(resolve,reject){checkValidInput(key,value);_RCTAsyncStorage.default.multiMerge([[key,value]],function(errors){var errs=convertErrors(errors);callback&&callback(errs&&errs[0]);if(errs){reject(errs[0]);}else{resolve(null);}});});},clear:function clear(callback){return new Promise(function(resolve,reject){_RCTAsyncStorage.default.clear(function(error){var err=convertError(error);callback&&callback(err);if(err){reject(err);}else{resolve(null);}});});},getAllKeys:function getAllKeys(callback){return new Promise(function(resolve,reject){_RCTAsyncStorage.default.getAllKeys(function(error,keys){var err=convertError(error);callback&&callback(err,keys);if(err){reject(err);}else{resolve(keys);}});});},flushGetRequests:function flushGetRequests(){var getRequests=this._getRequests;var getKeys=this._getKeys;this._getRequests=[];this._getKeys=[];_RCTAsyncStorage.default.multiGet(getKeys,function(errors,result){var map={};result&&result.forEach(function(_ref){var _ref2=(0,_slicedToArray2.default)(_ref,2),key=_ref2[0],value=_ref2[1];map[key]=value;return value;});var reqLength=getRequests.length;for(var i=0;i;\n\ntype MultiGetCallbackFunction = (\n errors: ?$ReadOnlyArray,\n result: ?$ReadOnlyArray,\n) => void;\n\ntype MultiRequest = {|\n keys: $ReadOnlyArray,\n callback: ?MultiGetCallbackFunction,\n keyIndex: number,\n resolve: ?(result?: Promise>) => void,\n reject: ?(error?: any) => void,\n|};\n\nfunction checkValidInput(usedKey: string, value: any) {\n const isValuePassed = arguments.length > 1;\n\n if (typeof usedKey !== 'string') {\n console.warn(\n `[AsyncStorage] Using ${typeof usedKey} type for key is not supported. This can lead to unexpected behavior/errors. Use string instead.\\nKey passed: ${usedKey}\\n`,\n );\n }\n\n if (isValuePassed && typeof value !== 'string') {\n if (value == null) {\n throw new Error(\n `[AsyncStorage] Passing null/undefined as value is not supported. If you want to remove value, Use .remove method instead.\\nPassed value: ${value}\\nPassed key: ${usedKey}\\n`,\n );\n } else {\n console.warn(\n `[AsyncStorage] The value for key \"${usedKey}\" is not a string. This can lead to unexpected behavior/errors. Consider stringifying it.\\nPassed value: ${value}\\nPassed key: ${usedKey}\\n`,\n );\n }\n }\n}\n\n/**\n * `AsyncStorage` is a simple, unencrypted, asynchronous, persistent, key-value\n * storage system that is global to the app. It should be used instead of\n * LocalStorage.\n *\n * See http://reactnative.dev/docs/asyncstorage.html\n */\nconst AsyncStorage = {\n _getRequests: ([]: Array),\n _getKeys: ([]: Array),\n _immediate: (null: ?number),\n\n /**\n * Fetches an item for a `key` and invokes a callback upon completion.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#getitem\n */\n getItem: function(\n key: string,\n callback?: ?(error: ?Error, result: string | null) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n checkValidInput(key);\n RCTAsyncStorage.multiGet([key], function(errors, result) {\n // Unpack result to get value from [[key,value]]\n const value = result && result[0] && result[0][1] ? result[0][1] : null;\n const errs = convertErrors(errors);\n callback && callback(errs && errs[0], value);\n if (errs) {\n reject(errs[0]);\n } else {\n resolve(value);\n }\n });\n });\n },\n\n /**\n * Sets the value for a `key` and invokes a callback upon completion.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#setitem\n */\n setItem: function(\n key: string,\n value: string,\n callback?: ?(error: ?Error) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n checkValidInput(key, value);\n RCTAsyncStorage.multiSet([[key, value]], function(errors) {\n const errs = convertErrors(errors);\n callback && callback(errs && errs[0]);\n if (errs) {\n reject(errs[0]);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Removes an item for a `key` and invokes a callback upon completion.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#removeitem\n */\n removeItem: function(\n key: string,\n callback?: ?(error: ?Error) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n checkValidInput(key);\n RCTAsyncStorage.multiRemove([key], function(errors) {\n const errs = convertErrors(errors);\n callback && callback(errs && errs[0]);\n if (errs) {\n reject(errs[0]);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Merges an existing `key` value with an input value, assuming both values\n * are stringified JSON.\n *\n * **NOTE:** This is not supported by all native implementations.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#mergeitem\n */\n mergeItem: function(\n key: string,\n value: string,\n callback?: ?(error: ?Error) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n checkValidInput(key, value);\n RCTAsyncStorage.multiMerge([[key, value]], function(errors) {\n const errs = convertErrors(errors);\n callback && callback(errs && errs[0]);\n if (errs) {\n reject(errs[0]);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Erases *all* `AsyncStorage` for all clients, libraries, etc. You probably\n * don't want to call this; use `removeItem` or `multiRemove` to clear only\n * your app's keys.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#clear\n */\n clear: function(callback?: ?(error: ?Error) => void): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.clear(function(error) {\n const err = convertError(error);\n callback && callback(err);\n if (err) {\n reject(err);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Gets *all* keys known to your app; for all callers, libraries, etc.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#getallkeys\n */\n getAllKeys: function(\n callback?: ?(error: ?Error, keys: ?ReadOnlyArrayString) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.getAllKeys(function(error, keys) {\n const err = convertError(error);\n callback && callback(err, keys);\n if (err) {\n reject(err);\n } else {\n resolve(keys);\n }\n });\n });\n },\n\n /**\n * The following batched functions are useful for executing a lot of\n * operations at once, allowing for native optimizations and provide the\n * convenience of a single callback after all operations are complete.\n *\n * These functions return arrays of errors, potentially one for every key.\n * For key-specific errors, the Error object will have a key property to\n * indicate which key caused the error.\n */\n\n /**\n * Flushes any pending requests using a single batch call to get the data.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#flushgetrequests\n * */\n flushGetRequests: function(): void {\n const getRequests = this._getRequests;\n const getKeys = this._getKeys;\n\n this._getRequests = [];\n this._getKeys = [];\n\n RCTAsyncStorage.multiGet(getKeys, function(errors, result) {\n // Even though the runtime complexity of this is theoretically worse vs if we used a map,\n // it's much, much faster in practice for the data sets we deal with (we avoid\n // allocating result pair arrays). This was heavily benchmarked.\n //\n // Is there a way to avoid using the map but fix the bug in this breaking test?\n // https://github.com/facebook/react-native/commit/8dd8ad76579d7feef34c014d387bf02065692264\n const map = {};\n result &&\n result.forEach(([key, value]) => {\n map[key] = value;\n return value;\n });\n const reqLength = getRequests.length;\n for (let i = 0; i < reqLength; i++) {\n const request = getRequests[i];\n const requestKeys = request.keys;\n const requestResult = requestKeys.map(key => [key, map[key]]);\n request.callback && request.callback(null, requestResult);\n request.resolve && request.resolve(requestResult);\n }\n });\n },\n\n /**\n * This allows you to batch the fetching of items given an array of `key`\n * inputs. Your callback will be invoked with an array of corresponding\n * key-value pairs found.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#multiget\n */\n multiGet: function(\n keys: Array,\n callback?: ?MultiGetCallbackFunction,\n ): Promise> {\n if (!this._immediate) {\n this._immediate = setImmediate(() => {\n this._immediate = null;\n this.flushGetRequests();\n });\n }\n\n const getRequest: MultiRequest = {\n keys: keys,\n callback: callback,\n // do we need this?\n keyIndex: this._getKeys.length,\n resolve: null,\n reject: null,\n };\n\n const promiseResult = new Promise((resolve, reject) => {\n getRequest.resolve = resolve;\n getRequest.reject = reject;\n });\n\n this._getRequests.push(getRequest);\n // avoid fetching duplicates\n keys.forEach(key => {\n if (this._getKeys.indexOf(key) === -1) {\n this._getKeys.push(key);\n }\n });\n\n return promiseResult;\n },\n\n /**\n * Use this as a batch operation for storing multiple key-value pairs. When\n * the operation completes you'll get a single callback with any errors.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#multiset\n */\n multiSet: function(\n keyValuePairs: Array>,\n callback?: ?(errors: ?$ReadOnlyArray) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n keyValuePairs.forEach(([key, value]) => {\n checkValidInput(key, value);\n });\n\n RCTAsyncStorage.multiSet(keyValuePairs, function(errors) {\n const error = convertErrors(errors);\n callback && callback(error);\n if (error) {\n reject(error);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Call this to batch the deletion of all keys in the `keys` array.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#multiremove\n */\n multiRemove: function(\n keys: Array,\n callback?: ?(errors: ?$ReadOnlyArray) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n keys.forEach(key => checkValidInput(key));\n\n RCTAsyncStorage.multiRemove(keys, function(errors) {\n const error = convertErrors(errors);\n callback && callback(error);\n if (error) {\n reject(error);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Batch operation to merge in existing and new values for a given set of\n * keys. This assumes that the values are stringified JSON.\n *\n * **NOTE**: This is not supported by all native implementations.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#multimerge\n */\n multiMerge: function(\n keyValuePairs: Array>,\n callback?: ?(errors: ?$ReadOnlyArray) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiMerge(keyValuePairs, function(errors) {\n const error = convertErrors(errors);\n callback && callback(error);\n if (error) {\n reject(error);\n } else {\n resolve(null);\n }\n });\n });\n },\n};\n\n// Not all native implementations support merge.\nif (!RCTAsyncStorage.multiMerge) {\n delete AsyncStorage.mergeItem;\n delete AsyncStorage.multiMerge;\n}\n\nfunction convertErrors(errs): ?$ReadOnlyArray {\n if (!errs || (Array.isArray(errs) && errs.length === 0)) {\n return null;\n }\n return (Array.isArray(errs) ? errs : [errs]).map(e => convertError(e));\n}\n\nfunction convertError(error): ?Error {\n if (!error) {\n return null;\n }\n const out = new Error(error.message);\n // $FlowFixMe: adding custom properties to error.\n out.key = error.key;\n return out;\n}\n\nexport default AsyncStorage;\n"]} \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/RCTAsyncStorage.expo.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/RCTAsyncStorage.expo.js new file mode 100644 index 0000000..b56813f --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/RCTAsyncStorage.expo.js @@ -0,0 +1,2 @@ +"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _require=require('react-native'),NativeModules=_require.NativeModules,TurboModuleRegistry=_require.TurboModuleRegistry;var RCTAsyncStorage;if(TurboModuleRegistry){RCTAsyncStorage=TurboModuleRegistry.get("AsyncSQLiteDBStorage")||TurboModuleRegistry.get("AsyncLocalStorage");}else{RCTAsyncStorage=NativeModules.AsyncSQLiteDBStorage||NativeModules.AsyncLocalStorage;}var _default=RCTAsyncStorage;exports.default=_default; +//# sourceMappingURL=RCTAsyncStorage.expo.js.map \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/RCTAsyncStorage.expo.js.map b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/RCTAsyncStorage.expo.js.map new file mode 100644 index 0000000..51a1482 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/RCTAsyncStorage.expo.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RCTAsyncStorage.expo.js"],"names":["require","NativeModules","TurboModuleRegistry","RCTAsyncStorage","get","AsyncSQLiteDBStorage","AsyncLocalStorage"],"mappings":"0GAS6CA,OAAO,CAAC,cAAD,C,CAA7CC,a,UAAAA,a,CAAeC,mB,UAAAA,mB,CAEtB,GAAIC,CAAAA,eAAJ,CAMA,GAAID,mBAAJ,CAAyB,CACvBC,eAAe,CAAGD,mBAAmB,CAACE,GAApB,CAAwB,sBAAxB,GAAmDF,mBAAmB,CAACE,GAApB,CAAwB,mBAAxB,CAArE,CACD,CAFD,IAEO,CACLD,eAAe,CAAGF,aAAa,CAACI,oBAAd,EAAsCJ,aAAa,CAACK,iBAAtE,CACD,C,aAEcH,e","sourcesContent":["/**\n * Expo managed apps don't include the @react-native-community/async-storage\n * native modules yet, but the API interface is the same, so we can use the version\n * exported from React Native still.\n *\n * If in future releases (eg: @react-native-community/async-storage >= 2.0.0) this\n * will likely not be valid anymore, and the package will need to be included in the Expo SDK\n * to continue to work.\n */\nconst {NativeModules, TurboModuleRegistry} = require('react-native');\n\nlet RCTAsyncStorage;\n\n// TurboModuleRegistry falls back to NativeModules\n// so we don't have to try go assign NativeModules'\n// counterparts if TurboModuleRegistry would resolve\n// with undefined.\nif (TurboModuleRegistry) {\n RCTAsyncStorage = TurboModuleRegistry.get(\"AsyncSQLiteDBStorage\") || TurboModuleRegistry.get(\"AsyncLocalStorage\");\n} else {\n RCTAsyncStorage = NativeModules.AsyncSQLiteDBStorage || NativeModules.AsyncLocalStorage;\n}\n\nexport default RCTAsyncStorage;\n"]} \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/RCTAsyncStorage.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/RCTAsyncStorage.js new file mode 100644 index 0000000..e27c047 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/RCTAsyncStorage.js @@ -0,0 +1,2 @@ +"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _require=require('react-native'),NativeModules=_require.NativeModules;var RCTAsyncStorage=NativeModules.PlatformLocalStorage||NativeModules.RNC_AsyncSQLiteDBStorage||NativeModules.RNCAsyncStorage;var _default=RCTAsyncStorage;exports.default=_default; +//# sourceMappingURL=RCTAsyncStorage.js.map \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/RCTAsyncStorage.js.map b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/RCTAsyncStorage.js.map new file mode 100644 index 0000000..423a7b5 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/RCTAsyncStorage.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RCTAsyncStorage.js"],"names":["require","NativeModules","RCTAsyncStorage","PlatformLocalStorage","RNC_AsyncSQLiteDBStorage","RNCAsyncStorage"],"mappings":"0GAAwBA,OAAO,CAAC,cAAD,C,CAAxBC,a,UAAAA,a,CAEP,GAAMC,CAAAA,eAAe,CACnBD,aAAa,CAACE,oBAAd,EACAF,aAAa,CAACG,wBADd,EAEAH,aAAa,CAACI,eAHhB,C,aAKeH,e","sourcesContent":["const {NativeModules} = require('react-native');\n\nconst RCTAsyncStorage =\n NativeModules.PlatformLocalStorage || // Support for external modules, like react-native-windows\n NativeModules.RNC_AsyncSQLiteDBStorage ||\n NativeModules.RNCAsyncStorage;\n\nexport default RCTAsyncStorage;"]} \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/hooks.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/hooks.js new file mode 100644 index 0000000..ff3b907 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/hooks.js @@ -0,0 +1,2 @@ +"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.useAsyncStorage=useAsyncStorage;var _AsyncStorage=_interopRequireDefault(require("./AsyncStorage"));function useAsyncStorage(key){return{getItem:function getItem(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}return _AsyncStorage.default.getItem.apply(_AsyncStorage.default,[key].concat(args));},setItem:function setItem(){for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++){args[_key2]=arguments[_key2];}return _AsyncStorage.default.setItem.apply(_AsyncStorage.default,[key].concat(args));},mergeItem:function mergeItem(){for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++){args[_key3]=arguments[_key3];}return _AsyncStorage.default.mergeItem.apply(_AsyncStorage.default,[key].concat(args));},removeItem:function removeItem(){for(var _len4=arguments.length,args=new Array(_len4),_key4=0;_key4<_len4;_key4++){args[_key4]=arguments[_key4];}return _AsyncStorage.default.removeItem.apply(_AsyncStorage.default,[key].concat(args));}};} +//# sourceMappingURL=hooks.js.map \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/hooks.js.map b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/hooks.js.map new file mode 100644 index 0000000..17842b4 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/hooks.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["hooks.js"],"names":["useAsyncStorage","key","getItem","args","AsyncStorage","setItem","mergeItem","removeItem"],"mappings":"iMAKA,oEAiBO,QAASA,CAAAA,eAAT,CAAyBC,GAAzB,CAAwD,CAC7D,MAAO,CACLC,OAAO,CAAE,iDAAIC,IAAJ,0CAAIA,IAAJ,8BAAaC,uBAAaF,OAAb,8BAAqBD,GAArB,SAA6BE,IAA7B,EAAb,EADJ,CAELE,OAAO,CAAE,kDAAIF,IAAJ,+CAAIA,IAAJ,gCAAaC,uBAAaC,OAAb,8BAAqBJ,GAArB,SAA6BE,IAA7B,EAAb,EAFJ,CAGLG,SAAS,CAAE,oDAAIH,IAAJ,+CAAIA,IAAJ,gCAAaC,uBAAaE,SAAb,8BAAuBL,GAAvB,SAA+BE,IAA/B,EAAb,EAHN,CAILI,UAAU,CAAE,qDAAIJ,IAAJ,+CAAIA,IAAJ,gCAAaC,uBAAaG,UAAb,8BAAwBN,GAAxB,SAAgCE,IAAhC,EAAb,EAJP,CAAP,CAMD","sourcesContent":["/**\n * @format\n * @flow\n */\n\nimport AsyncStorage from './AsyncStorage';\n\ntype AsyncStorageHook = {\n getItem: (\n callback?: ?(error: ?Error, result: string | null) => void,\n ) => Promise,\n setItem: (\n value: string,\n callback?: ?(error: ?Error) => void,\n ) => Promise,\n mergeItem: (\n value: string,\n callback?: ?(error: ?Error) => void,\n ) => Promise,\n removeItem: (callback?: ?(error: ?Error) => void) => Promise,\n};\n\nexport function useAsyncStorage(key: string): AsyncStorageHook {\n return {\n getItem: (...args) => AsyncStorage.getItem(key, ...args),\n setItem: (...args) => AsyncStorage.setItem(key, ...args),\n mergeItem: (...args) => AsyncStorage.mergeItem(key, ...args),\n removeItem: (...args) => AsyncStorage.removeItem(key, ...args),\n };\n}\n"]} \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/index.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/index.js new file mode 100644 index 0000000..b067f74 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/index.js @@ -0,0 +1,2 @@ +"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"useAsyncStorage",{enumerable:true,get:function get(){return _hooks.useAsyncStorage;}});exports.default=void 0;var _AsyncStorage=_interopRequireDefault(require("./AsyncStorage"));var _hooks=require("./hooks");var _default=_AsyncStorage.default;exports.default=_default; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/index.js.map b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/index.js.map new file mode 100644 index 0000000..2e14469 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/commonjs/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["index.js"],"names":["AsyncStorage"],"mappings":"sSAKA,oEAGA,8B,aADeA,qB","sourcesContent":["/**\n * @format\n * @flow\n */\n\nimport AsyncStorage from './AsyncStorage';\n\nexport default AsyncStorage;\nexport {useAsyncStorage} from './hooks';\n"]} \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/AsyncStorage.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/AsyncStorage.js new file mode 100644 index 0000000..fc1f737 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/AsyncStorage.js @@ -0,0 +1,2 @@ +var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _deepAssign=_interopRequireDefault(require("deep-assign"));var mergeLocalStorageItem=function mergeLocalStorageItem(key,value){var oldValue=window.localStorage.getItem(key);var oldObject=JSON.parse(oldValue);var newObject=JSON.parse(value);var nextValue=JSON.stringify((0,_deepAssign.default)({},oldObject,newObject));window.localStorage.setItem(key,nextValue);};var createPromise=function createPromise(getValue,callback){return new Promise(function(resolve,reject){try{var value=getValue();if(callback){callback(null,value);}resolve(value);}catch(err){if(callback){callback(err);}reject(err);}});};var createPromiseAll=function createPromiseAll(promises,callback,processResult){return Promise.all(promises).then(function(result){var value=processResult?processResult(result):null;callback&&callback(null,value);return Promise.resolve(value);},function(errors){callback&&callback(errors);return Promise.reject(errors);});};var AsyncStorage=function(){function AsyncStorage(){(0,_classCallCheck2.default)(this,AsyncStorage);}(0,_createClass2.default)(AsyncStorage,null,[{key:"getItem",value:function getItem(key,callback){return createPromise(function(){return window.localStorage.getItem(key);},callback);}},{key:"setItem",value:function setItem(key,value,callback){return createPromise(function(){window.localStorage.setItem(key,value);},callback);}},{key:"removeItem",value:function removeItem(key,callback){return createPromise(function(){return window.localStorage.removeItem(key);},callback);}},{key:"mergeItem",value:function mergeItem(key,value,callback){return createPromise(function(){mergeLocalStorageItem(key,value);},callback);}},{key:"clear",value:function clear(callback){return createPromise(function(){window.localStorage.clear();},callback);}},{key:"getAllKeys",value:function getAllKeys(callback){return createPromise(function(){var numberOfKeys=window.localStorage.length;var keys=[];for(var i=0;i {\n const oldValue = window.localStorage.getItem(key);\n const oldObject = JSON.parse(oldValue);\n const newObject = JSON.parse(value);\n const nextValue = JSON.stringify(merge({}, oldObject, newObject));\n window.localStorage.setItem(key, nextValue);\n};\n\nconst createPromise = (getValue, callback): Promise<*> => {\n return new Promise((resolve, reject) => {\n try {\n const value = getValue();\n if (callback) {\n callback(null, value);\n }\n resolve(value);\n } catch (err) {\n if (callback) {\n callback(err);\n }\n reject(err);\n }\n });\n};\n\nconst createPromiseAll = (promises, callback, processResult): Promise<*> => {\n return Promise.all(promises).then(\n result => {\n const value = processResult ? processResult(result) : null;\n callback && callback(null, value);\n return Promise.resolve(value);\n },\n errors => {\n callback && callback(errors);\n return Promise.reject(errors);\n }\n );\n};\n\nexport default class AsyncStorage {\n\n /**\n * Fetches `key` value.\n */\n static getItem(key: string, callback?: Function): Promise<*> {\n return createPromise(() => {\n return window.localStorage.getItem(key);\n }, callback);\n }\n\n /**\n * Sets `value` for `key`.\n */\n static setItem(key: string, value: string, callback?: Function): Promise<*> {\n return createPromise(() => {\n window.localStorage.setItem(key, value);\n }, callback);\n }\n\n /**\n * Removes a `key`\n */\n static removeItem(key: string, callback?: Function): Promise<*> {\n return createPromise(() => {\n return window.localStorage.removeItem(key);\n }, callback);\n }\n\n /**\n * Merges existing value with input value, assuming they are stringified JSON.\n */\n static mergeItem(key: string, value: string, callback?: Function): Promise<*> {\n return createPromise(() => {\n mergeLocalStorageItem(key, value);\n }, callback);\n }\n\n /**\n * Erases *all* AsyncStorage for the domain.\n */\n static clear(callback?: Function): Promise<*> {\n return createPromise(() => {\n window.localStorage.clear();\n }, callback);\n }\n\n /**\n * Gets *all* keys known to the app, for all callers, libraries, etc.\n */\n static getAllKeys(callback?: Function): Promise<*> {\n return createPromise(() => {\n const numberOfKeys = window.localStorage.length;\n const keys = [];\n for (let i = 0; i < numberOfKeys; i += 1) {\n const key = window.localStorage.key(i);\n keys.push(key);\n }\n return keys;\n }, callback);\n }\n\n /**\n * (stub) Flushes any pending requests using a single batch call to get the data.\n */\n static flushGetRequests() {}\n\n /**\n * multiGet resolves to an array of key-value pair arrays that matches the\n * input format of multiSet.\n *\n * multiGet(['k1', 'k2']) -> [['k1', 'val1'], ['k2', 'val2']]\n */\n static multiGet(keys: Array, callback?: Function): Promise<*> {\n const promises = keys.map(key => AsyncStorage.getItem(key));\n const processResult = result => result.map((value, i) => [keys[i], value]);\n return createPromiseAll(promises, callback, processResult);\n }\n\n /**\n * Takes an array of key-value array pairs.\n * multiSet([['k1', 'val1'], ['k2', 'val2']])\n */\n static multiSet(keyValuePairs: Array>, callback?: Function): Promise<*> {\n const promises = keyValuePairs.map(item => AsyncStorage.setItem(item[0], item[1]));\n return createPromiseAll(promises, callback);\n }\n\n /**\n * Delete all the keys in the `keys` array.\n */\n static multiRemove(keys: Array, callback?: Function): Promise<*> {\n const promises = keys.map(key => AsyncStorage.removeItem(key));\n return createPromiseAll(promises, callback);\n }\n\n /**\n * Takes an array of key-value array pairs and merges them with existing\n * values, assuming they are stringified JSON.\n *\n * multiMerge([['k1', 'val1'], ['k2', 'val2']])\n */\n static multiMerge(keyValuePairs: Array>, callback?: Function): Promise<*> {\n const promises = keyValuePairs.map(item => AsyncStorage.mergeItem(item[0], item[1]));\n return createPromiseAll(promises, callback);\n }\n}\n"]} \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/AsyncStorage.native.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/AsyncStorage.native.js new file mode 100644 index 0000000..f8f919f --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/AsyncStorage.native.js @@ -0,0 +1,2 @@ +'use strict';var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _RCTAsyncStorage=_interopRequireDefault(require("./RCTAsyncStorage"));if(!_RCTAsyncStorage.default){throw new Error("[@RNC/AsyncStorage]: NativeModule: AsyncStorage is null.\n\nTo fix this issue try these steps:\n\n \u2022 Run `react-native link @react-native-community/async-storage` in the project root.\n\n \u2022 Rebuild and restart the app.\n\n \u2022 Run the packager with `--reset-cache` flag.\n\n \u2022 If you are using CocoaPods on iOS, run `pod install` in the `ios` directory and then rebuild and re-run the app.\n\n \u2022 If this happens while testing with Jest, check out docs how to integrate AsyncStorage with it: https://react-native-community.github.io/async-storage/docs/advanced/jest\n\nIf none of these fix the issue, please open an issue on the Github repository: https://github.com/react-native-community/react-native-async-storage/issues \n");}function checkValidInput(usedKey,value){var isValuePassed=arguments.length>1;if(typeof usedKey!=='string'){console.warn("[AsyncStorage] Using ".concat(typeof usedKey," type for key is not supported. This can lead to unexpected behavior/errors. Use string instead.\nKey passed: ").concat(usedKey,"\n"));}if(isValuePassed&&typeof value!=='string'){if(value==null){throw new Error("[AsyncStorage] Passing null/undefined as value is not supported. If you want to remove value, Use .remove method instead.\nPassed value: ".concat(value,"\nPassed key: ").concat(usedKey,"\n"));}else{console.warn("[AsyncStorage] The value for key \"".concat(usedKey,"\" is not a string. This can lead to unexpected behavior/errors. Consider stringifying it.\nPassed value: ").concat(value,"\nPassed key: ").concat(usedKey,"\n"));}}}var AsyncStorage={_getRequests:[],_getKeys:[],_immediate:null,getItem:function getItem(key,callback){return new Promise(function(resolve,reject){checkValidInput(key);_RCTAsyncStorage.default.multiGet([key],function(errors,result){var value=result&&result[0]&&result[0][1]?result[0][1]:null;var errs=convertErrors(errors);callback&&callback(errs&&errs[0],value);if(errs){reject(errs[0]);}else{resolve(value);}});});},setItem:function setItem(key,value,callback){return new Promise(function(resolve,reject){checkValidInput(key,value);_RCTAsyncStorage.default.multiSet([[key,value]],function(errors){var errs=convertErrors(errors);callback&&callback(errs&&errs[0]);if(errs){reject(errs[0]);}else{resolve(null);}});});},removeItem:function removeItem(key,callback){return new Promise(function(resolve,reject){checkValidInput(key);_RCTAsyncStorage.default.multiRemove([key],function(errors){var errs=convertErrors(errors);callback&&callback(errs&&errs[0]);if(errs){reject(errs[0]);}else{resolve(null);}});});},mergeItem:function mergeItem(key,value,callback){return new Promise(function(resolve,reject){checkValidInput(key,value);_RCTAsyncStorage.default.multiMerge([[key,value]],function(errors){var errs=convertErrors(errors);callback&&callback(errs&&errs[0]);if(errs){reject(errs[0]);}else{resolve(null);}});});},clear:function clear(callback){return new Promise(function(resolve,reject){_RCTAsyncStorage.default.clear(function(error){var err=convertError(error);callback&&callback(err);if(err){reject(err);}else{resolve(null);}});});},getAllKeys:function getAllKeys(callback){return new Promise(function(resolve,reject){_RCTAsyncStorage.default.getAllKeys(function(error,keys){var err=convertError(error);callback&&callback(err,keys);if(err){reject(err);}else{resolve(keys);}});});},flushGetRequests:function flushGetRequests(){var getRequests=this._getRequests;var getKeys=this._getKeys;this._getRequests=[];this._getKeys=[];_RCTAsyncStorage.default.multiGet(getKeys,function(errors,result){var map={};result&&result.forEach(function(_ref){var _ref2=(0,_slicedToArray2.default)(_ref,2),key=_ref2[0],value=_ref2[1];map[key]=value;return value;});var reqLength=getRequests.length;for(var i=0;i;\n\ntype MultiGetCallbackFunction = (\n errors: ?$ReadOnlyArray,\n result: ?$ReadOnlyArray,\n) => void;\n\ntype MultiRequest = {|\n keys: $ReadOnlyArray,\n callback: ?MultiGetCallbackFunction,\n keyIndex: number,\n resolve: ?(result?: Promise>) => void,\n reject: ?(error?: any) => void,\n|};\n\nfunction checkValidInput(usedKey: string, value: any) {\n const isValuePassed = arguments.length > 1;\n\n if (typeof usedKey !== 'string') {\n console.warn(\n `[AsyncStorage] Using ${typeof usedKey} type for key is not supported. This can lead to unexpected behavior/errors. Use string instead.\\nKey passed: ${usedKey}\\n`,\n );\n }\n\n if (isValuePassed && typeof value !== 'string') {\n if (value == null) {\n throw new Error(\n `[AsyncStorage] Passing null/undefined as value is not supported. If you want to remove value, Use .remove method instead.\\nPassed value: ${value}\\nPassed key: ${usedKey}\\n`,\n );\n } else {\n console.warn(\n `[AsyncStorage] The value for key \"${usedKey}\" is not a string. This can lead to unexpected behavior/errors. Consider stringifying it.\\nPassed value: ${value}\\nPassed key: ${usedKey}\\n`,\n );\n }\n }\n}\n\n/**\n * `AsyncStorage` is a simple, unencrypted, asynchronous, persistent, key-value\n * storage system that is global to the app. It should be used instead of\n * LocalStorage.\n *\n * See http://reactnative.dev/docs/asyncstorage.html\n */\nconst AsyncStorage = {\n _getRequests: ([]: Array),\n _getKeys: ([]: Array),\n _immediate: (null: ?number),\n\n /**\n * Fetches an item for a `key` and invokes a callback upon completion.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#getitem\n */\n getItem: function(\n key: string,\n callback?: ?(error: ?Error, result: string | null) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n checkValidInput(key);\n RCTAsyncStorage.multiGet([key], function(errors, result) {\n // Unpack result to get value from [[key,value]]\n const value = result && result[0] && result[0][1] ? result[0][1] : null;\n const errs = convertErrors(errors);\n callback && callback(errs && errs[0], value);\n if (errs) {\n reject(errs[0]);\n } else {\n resolve(value);\n }\n });\n });\n },\n\n /**\n * Sets the value for a `key` and invokes a callback upon completion.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#setitem\n */\n setItem: function(\n key: string,\n value: string,\n callback?: ?(error: ?Error) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n checkValidInput(key, value);\n RCTAsyncStorage.multiSet([[key, value]], function(errors) {\n const errs = convertErrors(errors);\n callback && callback(errs && errs[0]);\n if (errs) {\n reject(errs[0]);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Removes an item for a `key` and invokes a callback upon completion.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#removeitem\n */\n removeItem: function(\n key: string,\n callback?: ?(error: ?Error) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n checkValidInput(key);\n RCTAsyncStorage.multiRemove([key], function(errors) {\n const errs = convertErrors(errors);\n callback && callback(errs && errs[0]);\n if (errs) {\n reject(errs[0]);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Merges an existing `key` value with an input value, assuming both values\n * are stringified JSON.\n *\n * **NOTE:** This is not supported by all native implementations.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#mergeitem\n */\n mergeItem: function(\n key: string,\n value: string,\n callback?: ?(error: ?Error) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n checkValidInput(key, value);\n RCTAsyncStorage.multiMerge([[key, value]], function(errors) {\n const errs = convertErrors(errors);\n callback && callback(errs && errs[0]);\n if (errs) {\n reject(errs[0]);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Erases *all* `AsyncStorage` for all clients, libraries, etc. You probably\n * don't want to call this; use `removeItem` or `multiRemove` to clear only\n * your app's keys.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#clear\n */\n clear: function(callback?: ?(error: ?Error) => void): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.clear(function(error) {\n const err = convertError(error);\n callback && callback(err);\n if (err) {\n reject(err);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Gets *all* keys known to your app; for all callers, libraries, etc.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#getallkeys\n */\n getAllKeys: function(\n callback?: ?(error: ?Error, keys: ?ReadOnlyArrayString) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.getAllKeys(function(error, keys) {\n const err = convertError(error);\n callback && callback(err, keys);\n if (err) {\n reject(err);\n } else {\n resolve(keys);\n }\n });\n });\n },\n\n /**\n * The following batched functions are useful for executing a lot of\n * operations at once, allowing for native optimizations and provide the\n * convenience of a single callback after all operations are complete.\n *\n * These functions return arrays of errors, potentially one for every key.\n * For key-specific errors, the Error object will have a key property to\n * indicate which key caused the error.\n */\n\n /**\n * Flushes any pending requests using a single batch call to get the data.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#flushgetrequests\n * */\n flushGetRequests: function(): void {\n const getRequests = this._getRequests;\n const getKeys = this._getKeys;\n\n this._getRequests = [];\n this._getKeys = [];\n\n RCTAsyncStorage.multiGet(getKeys, function(errors, result) {\n // Even though the runtime complexity of this is theoretically worse vs if we used a map,\n // it's much, much faster in practice for the data sets we deal with (we avoid\n // allocating result pair arrays). This was heavily benchmarked.\n //\n // Is there a way to avoid using the map but fix the bug in this breaking test?\n // https://github.com/facebook/react-native/commit/8dd8ad76579d7feef34c014d387bf02065692264\n const map = {};\n result &&\n result.forEach(([key, value]) => {\n map[key] = value;\n return value;\n });\n const reqLength = getRequests.length;\n for (let i = 0; i < reqLength; i++) {\n const request = getRequests[i];\n const requestKeys = request.keys;\n const requestResult = requestKeys.map(key => [key, map[key]]);\n request.callback && request.callback(null, requestResult);\n request.resolve && request.resolve(requestResult);\n }\n });\n },\n\n /**\n * This allows you to batch the fetching of items given an array of `key`\n * inputs. Your callback will be invoked with an array of corresponding\n * key-value pairs found.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#multiget\n */\n multiGet: function(\n keys: Array,\n callback?: ?MultiGetCallbackFunction,\n ): Promise> {\n if (!this._immediate) {\n this._immediate = setImmediate(() => {\n this._immediate = null;\n this.flushGetRequests();\n });\n }\n\n const getRequest: MultiRequest = {\n keys: keys,\n callback: callback,\n // do we need this?\n keyIndex: this._getKeys.length,\n resolve: null,\n reject: null,\n };\n\n const promiseResult = new Promise((resolve, reject) => {\n getRequest.resolve = resolve;\n getRequest.reject = reject;\n });\n\n this._getRequests.push(getRequest);\n // avoid fetching duplicates\n keys.forEach(key => {\n if (this._getKeys.indexOf(key) === -1) {\n this._getKeys.push(key);\n }\n });\n\n return promiseResult;\n },\n\n /**\n * Use this as a batch operation for storing multiple key-value pairs. When\n * the operation completes you'll get a single callback with any errors.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#multiset\n */\n multiSet: function(\n keyValuePairs: Array>,\n callback?: ?(errors: ?$ReadOnlyArray) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n keyValuePairs.forEach(([key, value]) => {\n checkValidInput(key, value);\n });\n\n RCTAsyncStorage.multiSet(keyValuePairs, function(errors) {\n const error = convertErrors(errors);\n callback && callback(error);\n if (error) {\n reject(error);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Call this to batch the deletion of all keys in the `keys` array.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#multiremove\n */\n multiRemove: function(\n keys: Array,\n callback?: ?(errors: ?$ReadOnlyArray) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n keys.forEach(key => checkValidInput(key));\n\n RCTAsyncStorage.multiRemove(keys, function(errors) {\n const error = convertErrors(errors);\n callback && callback(error);\n if (error) {\n reject(error);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Batch operation to merge in existing and new values for a given set of\n * keys. This assumes that the values are stringified JSON.\n *\n * **NOTE**: This is not supported by all native implementations.\n *\n * See http://reactnative.dev/docs/asyncstorage.html#multimerge\n */\n multiMerge: function(\n keyValuePairs: Array>,\n callback?: ?(errors: ?$ReadOnlyArray) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiMerge(keyValuePairs, function(errors) {\n const error = convertErrors(errors);\n callback && callback(error);\n if (error) {\n reject(error);\n } else {\n resolve(null);\n }\n });\n });\n },\n};\n\n// Not all native implementations support merge.\nif (!RCTAsyncStorage.multiMerge) {\n delete AsyncStorage.mergeItem;\n delete AsyncStorage.multiMerge;\n}\n\nfunction convertErrors(errs): ?$ReadOnlyArray {\n if (!errs || (Array.isArray(errs) && errs.length === 0)) {\n return null;\n }\n return (Array.isArray(errs) ? errs : [errs]).map(e => convertError(e));\n}\n\nfunction convertError(error): ?Error {\n if (!error) {\n return null;\n }\n const out = new Error(error.message);\n // $FlowFixMe: adding custom properties to error.\n out.key = error.key;\n return out;\n}\n\nexport default AsyncStorage;\n"]} \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/RCTAsyncStorage.expo.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/RCTAsyncStorage.expo.js new file mode 100644 index 0000000..b4d28ce --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/RCTAsyncStorage.expo.js @@ -0,0 +1,2 @@ +Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _require=require('react-native'),NativeModules=_require.NativeModules,TurboModuleRegistry=_require.TurboModuleRegistry;var RCTAsyncStorage;if(TurboModuleRegistry){RCTAsyncStorage=TurboModuleRegistry.get("AsyncSQLiteDBStorage")||TurboModuleRegistry.get("AsyncLocalStorage");}else{RCTAsyncStorage=NativeModules.AsyncSQLiteDBStorage||NativeModules.AsyncLocalStorage;}var _default=RCTAsyncStorage;exports.default=_default; +//# sourceMappingURL=RCTAsyncStorage.expo.js.map \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/RCTAsyncStorage.expo.js.map b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/RCTAsyncStorage.expo.js.map new file mode 100644 index 0000000..d333e71 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/RCTAsyncStorage.expo.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RCTAsyncStorage.expo.js"],"names":["require","NativeModules","TurboModuleRegistry","RCTAsyncStorage","get","AsyncSQLiteDBStorage","AsyncLocalStorage"],"mappings":"6FAS6CA,OAAO,CAAC,cAAD,C,CAA7CC,a,UAAAA,a,CAAeC,mB,UAAAA,mB,CAEtB,GAAIC,CAAAA,eAAJ,CAMA,GAAID,mBAAJ,CAAyB,CACvBC,eAAe,CAAGD,mBAAmB,CAACE,GAApB,CAAwB,sBAAxB,GAAmDF,mBAAmB,CAACE,GAApB,CAAwB,mBAAxB,CAArE,CACD,CAFD,IAEO,CACLD,eAAe,CAAGF,aAAa,CAACI,oBAAd,EAAsCJ,aAAa,CAACK,iBAAtE,CACD,C,aAEcH,e","sourcesContent":["/**\n * Expo managed apps don't include the @react-native-community/async-storage\n * native modules yet, but the API interface is the same, so we can use the version\n * exported from React Native still.\n *\n * If in future releases (eg: @react-native-community/async-storage >= 2.0.0) this\n * will likely not be valid anymore, and the package will need to be included in the Expo SDK\n * to continue to work.\n */\nconst {NativeModules, TurboModuleRegistry} = require('react-native');\n\nlet RCTAsyncStorage;\n\n// TurboModuleRegistry falls back to NativeModules\n// so we don't have to try go assign NativeModules'\n// counterparts if TurboModuleRegistry would resolve\n// with undefined.\nif (TurboModuleRegistry) {\n RCTAsyncStorage = TurboModuleRegistry.get(\"AsyncSQLiteDBStorage\") || TurboModuleRegistry.get(\"AsyncLocalStorage\");\n} else {\n RCTAsyncStorage = NativeModules.AsyncSQLiteDBStorage || NativeModules.AsyncLocalStorage;\n}\n\nexport default RCTAsyncStorage;\n"]} \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/RCTAsyncStorage.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/RCTAsyncStorage.js new file mode 100644 index 0000000..f05afa6 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/RCTAsyncStorage.js @@ -0,0 +1,2 @@ +Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _require=require('react-native'),NativeModules=_require.NativeModules;var RCTAsyncStorage=NativeModules.PlatformLocalStorage||NativeModules.RNC_AsyncSQLiteDBStorage||NativeModules.RNCAsyncStorage;var _default=RCTAsyncStorage;exports.default=_default; +//# sourceMappingURL=RCTAsyncStorage.js.map \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/RCTAsyncStorage.js.map b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/RCTAsyncStorage.js.map new file mode 100644 index 0000000..d9d8f2d --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/RCTAsyncStorage.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["RCTAsyncStorage.js"],"names":["require","NativeModules","RCTAsyncStorage","PlatformLocalStorage","RNC_AsyncSQLiteDBStorage","RNCAsyncStorage"],"mappings":"6FAAwBA,OAAO,CAAC,cAAD,C,CAAxBC,a,UAAAA,a,CAEP,GAAMC,CAAAA,eAAe,CACnBD,aAAa,CAACE,oBAAd,EACAF,aAAa,CAACG,wBADd,EAEAH,aAAa,CAACI,eAHhB,C,aAKeH,e","sourcesContent":["const {NativeModules} = require('react-native');\n\nconst RCTAsyncStorage =\n NativeModules.PlatformLocalStorage || // Support for external modules, like react-native-windows\n NativeModules.RNC_AsyncSQLiteDBStorage ||\n NativeModules.RNCAsyncStorage;\n\nexport default RCTAsyncStorage;"]} \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/hooks.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/hooks.js new file mode 100644 index 0000000..c7cae58 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/hooks.js @@ -0,0 +1,2 @@ +var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.useAsyncStorage=useAsyncStorage;var _AsyncStorage=_interopRequireDefault(require("./AsyncStorage"));function useAsyncStorage(key){return{getItem:function getItem(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}return _AsyncStorage.default.getItem.apply(_AsyncStorage.default,[key].concat(args));},setItem:function setItem(){for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++){args[_key2]=arguments[_key2];}return _AsyncStorage.default.setItem.apply(_AsyncStorage.default,[key].concat(args));},mergeItem:function mergeItem(){for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++){args[_key3]=arguments[_key3];}return _AsyncStorage.default.mergeItem.apply(_AsyncStorage.default,[key].concat(args));},removeItem:function removeItem(){for(var _len4=arguments.length,args=new Array(_len4),_key4=0;_key4<_len4;_key4++){args[_key4]=arguments[_key4];}return _AsyncStorage.default.removeItem.apply(_AsyncStorage.default,[key].concat(args));}};} +//# sourceMappingURL=hooks.js.map \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/hooks.js.map b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/hooks.js.map new file mode 100644 index 0000000..1bf13b8 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/hooks.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["hooks.js"],"names":["useAsyncStorage","key","getItem","args","AsyncStorage","setItem","mergeItem","removeItem"],"mappings":"oLAKA,oEAiBO,QAASA,CAAAA,eAAT,CAAyBC,GAAzB,CAAwD,CAC7D,MAAO,CACLC,OAAO,CAAE,iDAAIC,IAAJ,0CAAIA,IAAJ,8BAAaC,uBAAaF,OAAb,8BAAqBD,GAArB,SAA6BE,IAA7B,EAAb,EADJ,CAELE,OAAO,CAAE,kDAAIF,IAAJ,+CAAIA,IAAJ,gCAAaC,uBAAaC,OAAb,8BAAqBJ,GAArB,SAA6BE,IAA7B,EAAb,EAFJ,CAGLG,SAAS,CAAE,oDAAIH,IAAJ,+CAAIA,IAAJ,gCAAaC,uBAAaE,SAAb,8BAAuBL,GAAvB,SAA+BE,IAA/B,EAAb,EAHN,CAILI,UAAU,CAAE,qDAAIJ,IAAJ,+CAAIA,IAAJ,gCAAaC,uBAAaG,UAAb,8BAAwBN,GAAxB,SAAgCE,IAAhC,EAAb,EAJP,CAAP,CAMD","sourcesContent":["/**\n * @format\n * @flow\n */\n\nimport AsyncStorage from './AsyncStorage';\n\ntype AsyncStorageHook = {\n getItem: (\n callback?: ?(error: ?Error, result: string | null) => void,\n ) => Promise,\n setItem: (\n value: string,\n callback?: ?(error: ?Error) => void,\n ) => Promise,\n mergeItem: (\n value: string,\n callback?: ?(error: ?Error) => void,\n ) => Promise,\n removeItem: (callback?: ?(error: ?Error) => void) => Promise,\n};\n\nexport function useAsyncStorage(key: string): AsyncStorageHook {\n return {\n getItem: (...args) => AsyncStorage.getItem(key, ...args),\n setItem: (...args) => AsyncStorage.setItem(key, ...args),\n mergeItem: (...args) => AsyncStorage.mergeItem(key, ...args),\n removeItem: (...args) => AsyncStorage.removeItem(key, ...args),\n };\n}\n"]} \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/index.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/index.js new file mode 100644 index 0000000..a36fd51 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/index.js @@ -0,0 +1,2 @@ +var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"useAsyncStorage",{enumerable:true,get:function get(){return _hooks.useAsyncStorage;}});exports.default=void 0;var _AsyncStorage=_interopRequireDefault(require("./AsyncStorage"));var _hooks=require("./hooks");var _default=_AsyncStorage.default;exports.default=_default; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/index.js.map b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/index.js.map new file mode 100644 index 0000000..dd75097 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/lib/module/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["index.js"],"names":["AsyncStorage"],"mappings":"yRAKA,oEAGA,8B,aADeA,qB","sourcesContent":["/**\n * @format\n * @flow\n */\n\nimport AsyncStorage from './AsyncStorage';\n\nexport default AsyncStorage;\nexport {useAsyncStorage} from './hooks';\n"]} \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/macos/RNCAsyncStorage.xcodeproj/project.pbxproj b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/macos/RNCAsyncStorage.xcodeproj/project.pbxproj new file mode 100644 index 0000000..8c2f897 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/macos/RNCAsyncStorage.xcodeproj/project.pbxproj @@ -0,0 +1,385 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 1990B97A223993B0009E5EA1 /* RNCAsyncStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = B3E7B5881CC2AC0600A0062D /* RNCAsyncStorage.h */; }; + 1990B97B223993B0009E5EA1 /* RNCAsyncStorageDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1990B9402233FE3A009E5EA1 /* RNCAsyncStorageDelegate.h */; }; + 3893A2E123C509D1009200E3 /* RNCAsyncStorage.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = B3E7B5881CC2AC0600A0062D /* RNCAsyncStorage.h */; }; + 3893A2E223C509D1009200E3 /* RNCAsyncStorageDelegate.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1990B9402233FE3A009E5EA1 /* RNCAsyncStorageDelegate.h */; }; + 3893A2E523C50AFE009200E3 /* RNCAsyncStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = B3E7B5881CC2AC0600A0062D /* RNCAsyncStorage.h */; }; + 3893A2E623C50AFE009200E3 /* RNCAsyncStorageDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1990B9402233FE3A009E5EA1 /* RNCAsyncStorageDelegate.h */; }; + 3893A2E823C50AFE009200E3 /* RNCAsyncStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = B3E7B5891CC2AC0600A0062D /* RNCAsyncStorage.m */; }; + 3893A2EB23C50AFE009200E3 /* RNCAsyncStorage.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = B3E7B5881CC2AC0600A0062D /* RNCAsyncStorage.h */; }; + 3893A2EC23C50AFE009200E3 /* RNCAsyncStorageDelegate.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1990B9402233FE3A009E5EA1 /* RNCAsyncStorageDelegate.h */; }; + B3E7B58A1CC2AC0600A0062D /* RNCAsyncStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = B3E7B5891CC2AC0600A0062D /* RNCAsyncStorage.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 3893A2EA23C50AFE009200E3 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = include/RNCAsyncStorage; + dstSubfolderSpec = 16; + files = ( + 3893A2EB23C50AFE009200E3 /* RNCAsyncStorage.h in CopyFiles */, + 3893A2EC23C50AFE009200E3 /* RNCAsyncStorageDelegate.h in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 58B511D91A9E6C8500147676 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + 3893A2E123C509D1009200E3 /* RNCAsyncStorage.h in CopyFiles */, + 3893A2E223C509D1009200E3 /* RNCAsyncStorageDelegate.h in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 134814201AA4EA6300B7C361 /* libRNCAsyncStorage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNCAsyncStorage.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 1990B9402233FE3A009E5EA1 /* RNCAsyncStorageDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNCAsyncStorageDelegate.h; path = ../ios/RNCAsyncStorageDelegate.h; sourceTree = ""; }; + 3893A2F023C50AFE009200E3 /* libRNCAsyncStorage-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libRNCAsyncStorage-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B3E7B5881CC2AC0600A0062D /* RNCAsyncStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNCAsyncStorage.h; path = ../ios/RNCAsyncStorage.h; sourceTree = ""; }; + B3E7B5891CC2AC0600A0062D /* RNCAsyncStorage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RNCAsyncStorage.m; path = ../ios/RNCAsyncStorage.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3893A2E923C50AFE009200E3 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 58B511D81A9E6C8500147676 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 134814211AA4EA7D00B7C361 /* Products */ = { + isa = PBXGroup; + children = ( + 134814201AA4EA6300B7C361 /* libRNCAsyncStorage.a */, + ); + name = Products; + sourceTree = ""; + }; + 58B511D21A9E6C8500147676 = { + isa = PBXGroup; + children = ( + B3E7B5881CC2AC0600A0062D /* RNCAsyncStorage.h */, + B3E7B5891CC2AC0600A0062D /* RNCAsyncStorage.m */, + 1990B9402233FE3A009E5EA1 /* RNCAsyncStorageDelegate.h */, + 134814211AA4EA7D00B7C361 /* Products */, + 3893A2F023C50AFE009200E3 /* libRNCAsyncStorage-macOS.a */, + ); + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 19F94B1D2239A948006921A9 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 1990B97A223993B0009E5EA1 /* RNCAsyncStorage.h in Headers */, + 1990B97B223993B0009E5EA1 /* RNCAsyncStorageDelegate.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3893A2E423C50AFE009200E3 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 3893A2E523C50AFE009200E3 /* RNCAsyncStorage.h in Headers */, + 3893A2E623C50AFE009200E3 /* RNCAsyncStorageDelegate.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 3893A2E323C50AFE009200E3 /* RNCAsyncStorage-macOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3893A2ED23C50AFE009200E3 /* Build configuration list for PBXNativeTarget "RNCAsyncStorage-macOS" */; + buildPhases = ( + 3893A2E423C50AFE009200E3 /* Headers */, + 3893A2E723C50AFE009200E3 /* Sources */, + 3893A2E923C50AFE009200E3 /* Frameworks */, + 3893A2EA23C50AFE009200E3 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "RNCAsyncStorage-macOS"; + productName = RCTDataManager; + productReference = 3893A2F023C50AFE009200E3 /* libRNCAsyncStorage-macOS.a */; + productType = "com.apple.product-type.library.static"; + }; + 58B511DA1A9E6C8500147676 /* RNCAsyncStorage */ = { + isa = PBXNativeTarget; + buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNCAsyncStorage" */; + buildPhases = ( + 19F94B1D2239A948006921A9 /* Headers */, + 58B511D71A9E6C8500147676 /* Sources */, + 58B511D81A9E6C8500147676 /* Frameworks */, + 58B511D91A9E6C8500147676 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = RNCAsyncStorage; + productName = RCTDataManager; + productReference = 134814201AA4EA6300B7C361 /* libRNCAsyncStorage.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 58B511D31A9E6C8500147676 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0830; + ORGANIZATIONNAME = Facebook; + TargetAttributes = { + 58B511DA1A9E6C8500147676 = { + CreatedOnToolsVersion = 6.1.1; + }; + }; + }; + buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNCAsyncStorage" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + English, + en, + ); + mainGroup = 58B511D21A9E6C8500147676; + productRefGroup = 58B511D21A9E6C8500147676; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 58B511DA1A9E6C8500147676 /* RNCAsyncStorage */, + 3893A2E323C50AFE009200E3 /* RNCAsyncStorage-macOS */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 3893A2E723C50AFE009200E3 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3893A2E823C50AFE009200E3 /* RNCAsyncStorage.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 58B511D71A9E6C8500147676 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B3E7B58A1CC2AC0600A0062D /* RNCAsyncStorage.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 3893A2EE23C50AFE009200E3 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/../node_modules/react-native/React/**", + ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 3893A2EF23C50AFE009200E3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/../node_modules/react-native/React/**", + ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 58B511ED1A9E6C8500147676 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 58B511EE1A9E6C8500147676 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 58B511F01A9E6C8500147676 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../../React/**", + "$(SRCROOT)/../../react-native/React/**", + ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = RNCAsyncStorage; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos appletvsimulator appletvos"; + }; + name = Debug; + }; + 58B511F11A9E6C8500147676 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../../React/**", + "$(SRCROOT)/../../react-native/React/**", + ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = RNCAsyncStorage; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos appletvsimulator appletvos"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3893A2ED23C50AFE009200E3 /* Build configuration list for PBXNativeTarget "RNCAsyncStorage-macOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3893A2EE23C50AFE009200E3 /* Debug */, + 3893A2EF23C50AFE009200E3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNCAsyncStorage" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 58B511ED1A9E6C8500147676 /* Debug */, + 58B511EE1A9E6C8500147676 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNCAsyncStorage" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 58B511F01A9E6C8500147676 /* Debug */, + 58B511F11A9E6C8500147676 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 58B511D31A9E6C8500147676 /* Project object */; +} diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/macos/RNCAsyncStorage.xcodeproj/xcshareddata/xcschemes/RNCAsyncStorage-macOS.xcscheme b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/macos/RNCAsyncStorage.xcodeproj/xcshareddata/xcschemes/RNCAsyncStorage-macOS.xcscheme new file mode 100644 index 0000000..817e512 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/macos/RNCAsyncStorage.xcodeproj/xcshareddata/xcschemes/RNCAsyncStorage-macOS.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/macos/RNCAsyncStorage.xcodeproj/xcshareddata/xcschemes/RNCAsyncStorage.xcscheme b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/macos/RNCAsyncStorage.xcodeproj/xcshareddata/xcschemes/RNCAsyncStorage.xcscheme new file mode 100644 index 0000000..7d809e3 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/macos/RNCAsyncStorage.xcodeproj/xcshareddata/xcschemes/RNCAsyncStorage.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/deep-assign/index.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/deep-assign/index.js new file mode 100644 index 0000000..2b45bad --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/deep-assign/index.js @@ -0,0 +1,68 @@ +'use strict'; +var isObj = require('is-obj'); +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Sources cannot be null or undefined'); + } + + return Object(val); +} + +function assignKey(to, from, key) { + var val = from[key]; + + if (val === undefined || val === null) { + return; + } + + if (hasOwnProperty.call(to, key)) { + if (to[key] === undefined || to[key] === null) { + throw new TypeError('Cannot convert undefined or null to object (' + key + ')'); + } + } + + if (!hasOwnProperty.call(to, key) || !isObj(val)) { + to[key] = val; + } else { + to[key] = assign(Object(to[key]), from[key]); + } +} + +function assign(to, from) { + if (to === from) { + return to; + } + + from = Object(from); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + assignKey(to, from, key); + } + } + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(from); + + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + assignKey(to, from, symbols[i]); + } + } + } + + return to; +} + +module.exports = function deepAssign(target) { + target = toObject(target); + + for (var s = 1; s < arguments.length; s++) { + assign(target, arguments[s]); + } + + return target; +}; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/deep-assign/license b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/deep-assign/license new file mode 100644 index 0000000..654d0bf --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/deep-assign/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/deep-assign/package.json b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/deep-assign/package.json new file mode 100644 index 0000000..1c9faf3 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/deep-assign/package.json @@ -0,0 +1,51 @@ +{ + "name": "deep-assign", + "version": "3.0.0", + "description": "Recursive Object.assign()", + "license": "MIT", + "repository": "sindresorhus/deep-assign", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "xo && ava" + }, + "files": [ + "index.js" + ], + "keywords": [ + "object", + "obj", + "assign", + "extend", + "properties", + "merge", + "clone", + "copy", + "mixin", + "deep", + "recursive", + "key", + "keys", + "values", + "prop", + "properties" + ], + "dependencies": { + "is-obj": "^1.0.0" + }, + "devDependencies": { + "ava": "*", + "xo": "*" + }, + "xo": { + "ignores": [ + "test.js" + ] + } +} diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/deep-assign/readme.md b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/deep-assign/readme.md new file mode 100644 index 0000000..fd65ca9 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/deep-assign/readme.md @@ -0,0 +1,35 @@ +# deep-assign [![Build Status](https://travis-ci.org/sindresorhus/deep-assign.svg?branch=master)](https://travis-ci.org/sindresorhus/deep-assign) + +> Recursive [`Object.assign()`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) + + +## Install + +``` +$ npm install --save deep-assign +``` + + +## Usage + +```js +var deepAssign = require('deep-assign'); + +deepAssign({a: {b: 0}}, {a: {b: 1, c: 2}}, {a: {c: 3}}); +//=> {a: {b: 1, c: 3}} +``` + + +### deepAssign(target, source, [source, ...]) + +Recursively assigns own enumerable properties of `source` objects to the `target` object and returns the `target` object. Additional `source` objects will overwrite previous ones. + + +## Related + +- [object-assign](https://github.com/sindresorhus/object-assign) - ES2015 Object.assign() ponyfill + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/is-obj/index.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/is-obj/index.js new file mode 100644 index 0000000..4d023bc --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/is-obj/index.js @@ -0,0 +1,5 @@ +'use strict'; +module.exports = function (x) { + var type = typeof x; + return x !== null && (type === 'object' || type === 'function'); +}; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/is-obj/license b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/is-obj/license new file mode 100644 index 0000000..654d0bf --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/is-obj/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/is-obj/package.json b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/is-obj/package.json new file mode 100644 index 0000000..c441d27 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/is-obj/package.json @@ -0,0 +1,33 @@ +{ + "name": "is-obj", + "version": "1.0.1", + "description": "Check if a value is an object", + "license": "MIT", + "repository": "sindresorhus/is-obj", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "xo && ava" + }, + "files": [ + "index.js" + ], + "keywords": [ + "obj", + "object", + "is", + "check", + "test", + "type" + ], + "devDependencies": { + "ava": "*", + "xo": "*" + } +} diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/is-obj/readme.md b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/is-obj/readme.md new file mode 100644 index 0000000..d311026 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/node_modules/is-obj/readme.md @@ -0,0 +1,34 @@ +# is-obj [![Build Status](https://travis-ci.org/sindresorhus/is-obj.svg?branch=master)](https://travis-ci.org/sindresorhus/is-obj) + +> Check if a value is an object + +Keep in mind that array, function, regexp, etc, are objects in JavaScript.
+See [`is-plain-obj`](https://github.com/sindresorhus/is-plain-obj) if you want to check for plain objects. + + +## Install + +``` +$ npm install --save is-obj +``` + + +## Usage + +```js +const isObj = require('is-obj'); + +isObj({foo: 'bar'}); +//=> true + +isObj([1, 2, 3]); +//=> true + +isObj('foo'); +//=> false +``` + + +## License + +MIT © [Sindre Sorhus](https://sindresorhus.com) diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/package.json b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/package.json new file mode 100644 index 0000000..0080fb4 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/package.json @@ -0,0 +1,125 @@ +{ + "name": "@react-native-community/async-storage", + "version": "1.12.1", + "description": "Asynchronous, persistent, key-value storage system for React Native.", + "main": "lib/commonjs/index.js", + "module": "lib/module/index.js", + "react-native": "src/index.js", + "types": "./types/index.d.ts", + "files": [ + "lib/", + "src/", + "jest/", + "types/", + "android/src", + "android/build.gradle", + "ios/", + "macos/", + "windows/", + "RNCAsyncStorage.podspec" + ], + "author": "Krzysztof Borowy ", + "contributors": [ + "Evan Bacon (https://github.com/evanbacon)" + ], + "homepage": "https://github.com/react-native-community/react-native-async-storage#readme", + "license": "MIT", + "keywords": [ + "react-native", + "react native", + "async storage", + "asyncstorage", + "storage" + ], + "repository": { + "type": "git", + "url": "https://github.com/react-native-community/react-native-async-storage.git" + }, + "scripts": { + "prepare": "bob build", + "start": "node node_modules/react-native/local-cli/cli.js start", + "start:android": "react-native run-android --root example/", + "start:ios": "react-native run-ios --project-path example/ios --scheme AsyncStorageExample", + "start:web": "expo start:web", + "start:macos": "node node_modules/react-native-macos/local-cli/cli.js start --use-react-native-macos", + "start:windows": "react-native start --use-react-native-windows", + "build:e2e:ios": "detox build -c ios", + "build:e2e:android": "detox build -c android", + "build:e2e:macos": "scripts/run_macos_e2e.sh 'build'", + "test": "yarn test:lint && yarn test:flow", + "test:flow": "flow check", + "test:lint": "eslint src/**/*.js example/**/*.js jest/*.js", + "test:e2e:ios": "detox test -c ios", + "test:e2e:android": "detox test -c android", + "test:e2e:macos": "scripts/run_macos_e2e.sh 'test'" + }, + "peerDependencies": { + "react": "^16.8", + "react-native": ">=0.59" + }, + "dependencies": { + "deep-assign": "^3.0.0" + }, + "devDependencies": { + "@babel/core": "^7.6.2", + "@babel/runtime": "^7.6.2", + "@react-native-community/bob": "^0.14.0", + "@react-native-community/cli": "^3.1.0", + "@react-native-community/cli-platform-android": "^3.1.0", + "@react-native-community/cli-platform-ios": "^3.1.0", + "@react-native-community/eslint-config": "^0.0.5", + "babel-jest": "^24.9.0", + "babel-plugin-module-resolver": "3.1.3", + "detox": "12.6.1", + "eslint": "5.1.0", + "expo": "36.0.2", + "flow-bin": "0.105.2", + "jest": "^24.9.0", + "metro": "0.56.4", + "metro-react-native-babel-preset": "^0.56.0", + "react": "16.9.0", + "react-dom": "16.9.0", + "react-native": "0.61.5", + "react-native-macos": "0.60.0-microsoft.50", + "react-native-web": "~0.12.0", + "react-native-windows": "0.61.0", + "react-test-renderer": "16.9.0" + }, + "jest": { + "preset": "react-native", + "setupFiles": [ + "./example/jest.setup.js" + ] + }, + "detox": { + "test-runner": "jest", + "runner-config": "example/e2e/config.json", + "configurations": { + "ios": { + "binaryPath": "example/ios/build/Build/Products/Release-iphonesimulator/AsyncStorageExample.app", + "build": ".circleci/scripts/run_ios_e2e.sh \"iPhone X\"", + "type": "ios.simulator", + "name": "iPhone X" + }, + "android": { + "binaryPath": "example/android/app/build/outputs/apk/release/app-release.apk", + "build": ".circleci/scripts/run_android_e2e.sh", + "type": "android.emulator", + "name": "Emu_E2E" + } + } + }, + "@react-native-community/bob": { + "source": "src", + "output": "lib", + "targets": [ + [ + "commonjs", + { + "copyFlow": true + } + ], + "module" + ] + } +} diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/src/AsyncStorage.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/src/AsyncStorage.js new file mode 100644 index 0000000..020d16e --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/src/AsyncStorage.js @@ -0,0 +1,158 @@ +/** + * Copyright (c) Nicolas Gallagher. + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow + */ + +import merge from 'deep-assign'; + +const mergeLocalStorageItem = (key, value) => { + const oldValue = window.localStorage.getItem(key); + const oldObject = JSON.parse(oldValue); + const newObject = JSON.parse(value); + const nextValue = JSON.stringify(merge({}, oldObject, newObject)); + window.localStorage.setItem(key, nextValue); +}; + +const createPromise = (getValue, callback): Promise<*> => { + return new Promise((resolve, reject) => { + try { + const value = getValue(); + if (callback) { + callback(null, value); + } + resolve(value); + } catch (err) { + if (callback) { + callback(err); + } + reject(err); + } + }); +}; + +const createPromiseAll = (promises, callback, processResult): Promise<*> => { + return Promise.all(promises).then( + result => { + const value = processResult ? processResult(result) : null; + callback && callback(null, value); + return Promise.resolve(value); + }, + errors => { + callback && callback(errors); + return Promise.reject(errors); + } + ); +}; + +export default class AsyncStorage { + + /** + * Fetches `key` value. + */ + static getItem(key: string, callback?: Function): Promise<*> { + return createPromise(() => { + return window.localStorage.getItem(key); + }, callback); + } + + /** + * Sets `value` for `key`. + */ + static setItem(key: string, value: string, callback?: Function): Promise<*> { + return createPromise(() => { + window.localStorage.setItem(key, value); + }, callback); + } + + /** + * Removes a `key` + */ + static removeItem(key: string, callback?: Function): Promise<*> { + return createPromise(() => { + return window.localStorage.removeItem(key); + }, callback); + } + + /** + * Merges existing value with input value, assuming they are stringified JSON. + */ + static mergeItem(key: string, value: string, callback?: Function): Promise<*> { + return createPromise(() => { + mergeLocalStorageItem(key, value); + }, callback); + } + + /** + * Erases *all* AsyncStorage for the domain. + */ + static clear(callback?: Function): Promise<*> { + return createPromise(() => { + window.localStorage.clear(); + }, callback); + } + + /** + * Gets *all* keys known to the app, for all callers, libraries, etc. + */ + static getAllKeys(callback?: Function): Promise<*> { + return createPromise(() => { + const numberOfKeys = window.localStorage.length; + const keys = []; + for (let i = 0; i < numberOfKeys; i += 1) { + const key = window.localStorage.key(i); + keys.push(key); + } + return keys; + }, callback); + } + + /** + * (stub) Flushes any pending requests using a single batch call to get the data. + */ + static flushGetRequests() {} + + /** + * multiGet resolves to an array of key-value pair arrays that matches the + * input format of multiSet. + * + * multiGet(['k1', 'k2']) -> [['k1', 'val1'], ['k2', 'val2']] + */ + static multiGet(keys: Array, callback?: Function): Promise<*> { + const promises = keys.map(key => AsyncStorage.getItem(key)); + const processResult = result => result.map((value, i) => [keys[i], value]); + return createPromiseAll(promises, callback, processResult); + } + + /** + * Takes an array of key-value array pairs. + * multiSet([['k1', 'val1'], ['k2', 'val2']]) + */ + static multiSet(keyValuePairs: Array>, callback?: Function): Promise<*> { + const promises = keyValuePairs.map(item => AsyncStorage.setItem(item[0], item[1])); + return createPromiseAll(promises, callback); + } + + /** + * Delete all the keys in the `keys` array. + */ + static multiRemove(keys: Array, callback?: Function): Promise<*> { + const promises = keys.map(key => AsyncStorage.removeItem(key)); + return createPromiseAll(promises, callback); + } + + /** + * Takes an array of key-value array pairs and merges them with existing + * values, assuming they are stringified JSON. + * + * multiMerge([['k1', 'val1'], ['k2', 'val2']]) + */ + static multiMerge(keyValuePairs: Array>, callback?: Function): Promise<*> { + const promises = keyValuePairs.map(item => AsyncStorage.mergeItem(item[0], item[1])); + return createPromiseAll(promises, callback); + } +} diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/src/AsyncStorage.native.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/src/AsyncStorage.native.js new file mode 100644 index 0000000..1ad6d61 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/src/AsyncStorage.native.js @@ -0,0 +1,414 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow + * @jsdoc + */ + +'use strict'; + +import RCTAsyncStorage from './RCTAsyncStorage'; + +if (!RCTAsyncStorage) { + throw new Error(`[@RNC/AsyncStorage]: NativeModule: AsyncStorage is null. + +To fix this issue try these steps: + + • Run \`react-native link @react-native-community/async-storage\` in the project root. + + • Rebuild and restart the app. + + • Run the packager with \`--reset-cache\` flag. + + • If you are using CocoaPods on iOS, run \`pod install\` in the \`ios\` directory and then rebuild and re-run the app. + + • If this happens while testing with Jest, check out docs how to integrate AsyncStorage with it: https://react-native-community.github.io/async-storage/docs/advanced/jest + +If none of these fix the issue, please open an issue on the Github repository: https://github.com/react-native-community/react-native-async-storage/issues +`); +} + +type ReadOnlyArrayString = $ReadOnlyArray; + +type MultiGetCallbackFunction = ( + errors: ?$ReadOnlyArray, + result: ?$ReadOnlyArray, +) => void; + +type MultiRequest = {| + keys: $ReadOnlyArray, + callback: ?MultiGetCallbackFunction, + keyIndex: number, + resolve: ?(result?: Promise>) => void, + reject: ?(error?: any) => void, +|}; + +function checkValidInput(usedKey: string, value: any) { + const isValuePassed = arguments.length > 1; + + if (typeof usedKey !== 'string') { + console.warn( + `[AsyncStorage] Using ${typeof usedKey} type for key is not supported. This can lead to unexpected behavior/errors. Use string instead.\nKey passed: ${usedKey}\n`, + ); + } + + if (isValuePassed && typeof value !== 'string') { + if (value == null) { + throw new Error( + `[AsyncStorage] Passing null/undefined as value is not supported. If you want to remove value, Use .remove method instead.\nPassed value: ${value}\nPassed key: ${usedKey}\n`, + ); + } else { + console.warn( + `[AsyncStorage] The value for key "${usedKey}" is not a string. This can lead to unexpected behavior/errors. Consider stringifying it.\nPassed value: ${value}\nPassed key: ${usedKey}\n`, + ); + } + } +} + +/** + * `AsyncStorage` is a simple, unencrypted, asynchronous, persistent, key-value + * storage system that is global to the app. It should be used instead of + * LocalStorage. + * + * See http://reactnative.dev/docs/asyncstorage.html + */ +const AsyncStorage = { + _getRequests: ([]: Array), + _getKeys: ([]: Array), + _immediate: (null: ?number), + + /** + * Fetches an item for a `key` and invokes a callback upon completion. + * + * See http://reactnative.dev/docs/asyncstorage.html#getitem + */ + getItem: function( + key: string, + callback?: ?(error: ?Error, result: string | null) => void, + ): Promise { + return new Promise((resolve, reject) => { + checkValidInput(key); + RCTAsyncStorage.multiGet([key], function(errors, result) { + // Unpack result to get value from [[key,value]] + const value = result && result[0] && result[0][1] ? result[0][1] : null; + const errs = convertErrors(errors); + callback && callback(errs && errs[0], value); + if (errs) { + reject(errs[0]); + } else { + resolve(value); + } + }); + }); + }, + + /** + * Sets the value for a `key` and invokes a callback upon completion. + * + * See http://reactnative.dev/docs/asyncstorage.html#setitem + */ + setItem: function( + key: string, + value: string, + callback?: ?(error: ?Error) => void, + ): Promise { + return new Promise((resolve, reject) => { + checkValidInput(key, value); + RCTAsyncStorage.multiSet([[key, value]], function(errors) { + const errs = convertErrors(errors); + callback && callback(errs && errs[0]); + if (errs) { + reject(errs[0]); + } else { + resolve(null); + } + }); + }); + }, + + /** + * Removes an item for a `key` and invokes a callback upon completion. + * + * See http://reactnative.dev/docs/asyncstorage.html#removeitem + */ + removeItem: function( + key: string, + callback?: ?(error: ?Error) => void, + ): Promise { + return new Promise((resolve, reject) => { + checkValidInput(key); + RCTAsyncStorage.multiRemove([key], function(errors) { + const errs = convertErrors(errors); + callback && callback(errs && errs[0]); + if (errs) { + reject(errs[0]); + } else { + resolve(null); + } + }); + }); + }, + + /** + * Merges an existing `key` value with an input value, assuming both values + * are stringified JSON. + * + * **NOTE:** This is not supported by all native implementations. + * + * See http://reactnative.dev/docs/asyncstorage.html#mergeitem + */ + mergeItem: function( + key: string, + value: string, + callback?: ?(error: ?Error) => void, + ): Promise { + return new Promise((resolve, reject) => { + checkValidInput(key, value); + RCTAsyncStorage.multiMerge([[key, value]], function(errors) { + const errs = convertErrors(errors); + callback && callback(errs && errs[0]); + if (errs) { + reject(errs[0]); + } else { + resolve(null); + } + }); + }); + }, + + /** + * Erases *all* `AsyncStorage` for all clients, libraries, etc. You probably + * don't want to call this; use `removeItem` or `multiRemove` to clear only + * your app's keys. + * + * See http://reactnative.dev/docs/asyncstorage.html#clear + */ + clear: function(callback?: ?(error: ?Error) => void): Promise { + return new Promise((resolve, reject) => { + RCTAsyncStorage.clear(function(error) { + const err = convertError(error); + callback && callback(err); + if (err) { + reject(err); + } else { + resolve(null); + } + }); + }); + }, + + /** + * Gets *all* keys known to your app; for all callers, libraries, etc. + * + * See http://reactnative.dev/docs/asyncstorage.html#getallkeys + */ + getAllKeys: function( + callback?: ?(error: ?Error, keys: ?ReadOnlyArrayString) => void, + ): Promise { + return new Promise((resolve, reject) => { + RCTAsyncStorage.getAllKeys(function(error, keys) { + const err = convertError(error); + callback && callback(err, keys); + if (err) { + reject(err); + } else { + resolve(keys); + } + }); + }); + }, + + /** + * The following batched functions are useful for executing a lot of + * operations at once, allowing for native optimizations and provide the + * convenience of a single callback after all operations are complete. + * + * These functions return arrays of errors, potentially one for every key. + * For key-specific errors, the Error object will have a key property to + * indicate which key caused the error. + */ + + /** + * Flushes any pending requests using a single batch call to get the data. + * + * See http://reactnative.dev/docs/asyncstorage.html#flushgetrequests + * */ + flushGetRequests: function(): void { + const getRequests = this._getRequests; + const getKeys = this._getKeys; + + this._getRequests = []; + this._getKeys = []; + + RCTAsyncStorage.multiGet(getKeys, function(errors, result) { + // Even though the runtime complexity of this is theoretically worse vs if we used a map, + // it's much, much faster in practice for the data sets we deal with (we avoid + // allocating result pair arrays). This was heavily benchmarked. + // + // Is there a way to avoid using the map but fix the bug in this breaking test? + // https://github.com/facebook/react-native/commit/8dd8ad76579d7feef34c014d387bf02065692264 + const map = {}; + result && + result.forEach(([key, value]) => { + map[key] = value; + return value; + }); + const reqLength = getRequests.length; + for (let i = 0; i < reqLength; i++) { + const request = getRequests[i]; + const requestKeys = request.keys; + const requestResult = requestKeys.map(key => [key, map[key]]); + request.callback && request.callback(null, requestResult); + request.resolve && request.resolve(requestResult); + } + }); + }, + + /** + * This allows you to batch the fetching of items given an array of `key` + * inputs. Your callback will be invoked with an array of corresponding + * key-value pairs found. + * + * See http://reactnative.dev/docs/asyncstorage.html#multiget + */ + multiGet: function( + keys: Array, + callback?: ?MultiGetCallbackFunction, + ): Promise> { + if (!this._immediate) { + this._immediate = setImmediate(() => { + this._immediate = null; + this.flushGetRequests(); + }); + } + + const getRequest: MultiRequest = { + keys: keys, + callback: callback, + // do we need this? + keyIndex: this._getKeys.length, + resolve: null, + reject: null, + }; + + const promiseResult = new Promise((resolve, reject) => { + getRequest.resolve = resolve; + getRequest.reject = reject; + }); + + this._getRequests.push(getRequest); + // avoid fetching duplicates + keys.forEach(key => { + if (this._getKeys.indexOf(key) === -1) { + this._getKeys.push(key); + } + }); + + return promiseResult; + }, + + /** + * Use this as a batch operation for storing multiple key-value pairs. When + * the operation completes you'll get a single callback with any errors. + * + * See http://reactnative.dev/docs/asyncstorage.html#multiset + */ + multiSet: function( + keyValuePairs: Array>, + callback?: ?(errors: ?$ReadOnlyArray) => void, + ): Promise { + return new Promise((resolve, reject) => { + keyValuePairs.forEach(([key, value]) => { + checkValidInput(key, value); + }); + + RCTAsyncStorage.multiSet(keyValuePairs, function(errors) { + const error = convertErrors(errors); + callback && callback(error); + if (error) { + reject(error); + } else { + resolve(null); + } + }); + }); + }, + + /** + * Call this to batch the deletion of all keys in the `keys` array. + * + * See http://reactnative.dev/docs/asyncstorage.html#multiremove + */ + multiRemove: function( + keys: Array, + callback?: ?(errors: ?$ReadOnlyArray) => void, + ): Promise { + return new Promise((resolve, reject) => { + keys.forEach(key => checkValidInput(key)); + + RCTAsyncStorage.multiRemove(keys, function(errors) { + const error = convertErrors(errors); + callback && callback(error); + if (error) { + reject(error); + } else { + resolve(null); + } + }); + }); + }, + + /** + * Batch operation to merge in existing and new values for a given set of + * keys. This assumes that the values are stringified JSON. + * + * **NOTE**: This is not supported by all native implementations. + * + * See http://reactnative.dev/docs/asyncstorage.html#multimerge + */ + multiMerge: function( + keyValuePairs: Array>, + callback?: ?(errors: ?$ReadOnlyArray) => void, + ): Promise { + return new Promise((resolve, reject) => { + RCTAsyncStorage.multiMerge(keyValuePairs, function(errors) { + const error = convertErrors(errors); + callback && callback(error); + if (error) { + reject(error); + } else { + resolve(null); + } + }); + }); + }, +}; + +// Not all native implementations support merge. +if (!RCTAsyncStorage.multiMerge) { + delete AsyncStorage.mergeItem; + delete AsyncStorage.multiMerge; +} + +function convertErrors(errs): ?$ReadOnlyArray { + if (!errs || (Array.isArray(errs) && errs.length === 0)) { + return null; + } + return (Array.isArray(errs) ? errs : [errs]).map(e => convertError(e)); +} + +function convertError(error): ?Error { + if (!error) { + return null; + } + const out = new Error(error.message); + // $FlowFixMe: adding custom properties to error. + out.key = error.key; + return out; +} + +export default AsyncStorage; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/src/RCTAsyncStorage.expo.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/src/RCTAsyncStorage.expo.js new file mode 100644 index 0000000..607eecc --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/src/RCTAsyncStorage.expo.js @@ -0,0 +1,24 @@ +/** + * Expo managed apps don't include the @react-native-community/async-storage + * native modules yet, but the API interface is the same, so we can use the version + * exported from React Native still. + * + * If in future releases (eg: @react-native-community/async-storage >= 2.0.0) this + * will likely not be valid anymore, and the package will need to be included in the Expo SDK + * to continue to work. + */ +const {NativeModules, TurboModuleRegistry} = require('react-native'); + +let RCTAsyncStorage; + +// TurboModuleRegistry falls back to NativeModules +// so we don't have to try go assign NativeModules' +// counterparts if TurboModuleRegistry would resolve +// with undefined. +if (TurboModuleRegistry) { + RCTAsyncStorage = TurboModuleRegistry.get("AsyncSQLiteDBStorage") || TurboModuleRegistry.get("AsyncLocalStorage"); +} else { + RCTAsyncStorage = NativeModules.AsyncSQLiteDBStorage || NativeModules.AsyncLocalStorage; +} + +export default RCTAsyncStorage; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/src/RCTAsyncStorage.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/src/RCTAsyncStorage.js new file mode 100644 index 0000000..eb2356e --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/src/RCTAsyncStorage.js @@ -0,0 +1,8 @@ +const {NativeModules} = require('react-native'); + +const RCTAsyncStorage = + NativeModules.PlatformLocalStorage || // Support for external modules, like react-native-windows + NativeModules.RNC_AsyncSQLiteDBStorage || + NativeModules.RNCAsyncStorage; + +export default RCTAsyncStorage; \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/src/hooks.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/src/hooks.js new file mode 100644 index 0000000..0d8052a --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/src/hooks.js @@ -0,0 +1,30 @@ +/** + * @format + * @flow + */ + +import AsyncStorage from './AsyncStorage'; + +type AsyncStorageHook = { + getItem: ( + callback?: ?(error: ?Error, result: string | null) => void, + ) => Promise, + setItem: ( + value: string, + callback?: ?(error: ?Error) => void, + ) => Promise, + mergeItem: ( + value: string, + callback?: ?(error: ?Error) => void, + ) => Promise, + removeItem: (callback?: ?(error: ?Error) => void) => Promise, +}; + +export function useAsyncStorage(key: string): AsyncStorageHook { + return { + getItem: (...args) => AsyncStorage.getItem(key, ...args), + setItem: (...args) => AsyncStorage.setItem(key, ...args), + mergeItem: (...args) => AsyncStorage.mergeItem(key, ...args), + removeItem: (...args) => AsyncStorage.removeItem(key, ...args), + }; +} diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/src/index.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/src/index.js new file mode 100644 index 0000000..61215f0 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/src/index.js @@ -0,0 +1,9 @@ +/** + * @format + * @flow + */ + +import AsyncStorage from './AsyncStorage'; + +export default AsyncStorage; +export {useAsyncStorage} from './hooks'; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/types/index.d.ts b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/types/index.d.ts new file mode 100644 index 0000000..2cfdcb3 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/async-storage/types/index.d.ts @@ -0,0 +1,88 @@ +// CREDITS: This types are based on the original work made by all the people who contributed to @types/react-native + +declare module '@react-native-community/async-storage' { + /** + * AsyncStorage is a simple, unencrypted, asynchronous, persistent, key-value storage + * system that is global to the app. It should be used instead of LocalStorage. + * + * It is recommended that you use an abstraction on top of `AsyncStorage` + * instead of `AsyncStorage` directly for anything more than light usage since + * it operates globally. + * + * On iOS, `AsyncStorage` is backed by native code that stores small values in a + * serialized dictionary and larger values in separate files. On Android, + * `AsyncStorage` will use either [RocksDB](http://rocksdb.org/) or SQLite + * based on what is available. + * + * @see https://github.com/react-native-community/react-native-async-storage/blob/master/docs/API.md + */ + export interface AsyncStorageStatic { + /** + * Fetches key and passes the result to callback, along with an Error if there is any. + */ + getItem(key: string, callback?: (error?: Error, result?: string) => void): Promise; + + /** + * Sets value for key and calls callback on completion, along with an Error if there is any + */ + setItem(key: string, value: string, callback?: (error?: Error) => void): Promise; + + removeItem(key: string, callback?: (error?: Error) => void): Promise; + + /** + * Merges existing value with input value, assuming they are stringified json. Returns a Promise object. + * Not supported by all native implementation + */ + mergeItem(key: string, value: string, callback?: (error?: Error) => void): Promise; + + /** + * Erases all AsyncStorage for all clients, libraries, etc. You probably don't want to call this. + * Use removeItem or multiRemove to clear only your own keys instead. + */ + clear(callback?: (error?: Error) => void): Promise; + + /** + * Gets all keys known to the app, for all callers, libraries, etc + */ + getAllKeys(callback?: (error?: Error, keys?: string[]) => void): Promise; + + /** + * multiGet invokes callback with an array of key-value pair arrays that matches the input format of multiSet + */ + multiGet( + keys: string[], + callback?: (errors?: Error[], result?: [string, string | null][]) => void + ): Promise<[string, string | null][]>; + + /** + * multiSet and multiMerge take arrays of key-value array pairs that match the output of multiGet, + * + * multiSet([['k1', 'val1'], ['k2', 'val2']], cb); + */ + multiSet(keyValuePairs: string[][], callback?: (errors?: Error[]) => void): Promise; + + /** + * Delete all the keys in the keys array. + */ + multiRemove(keys: string[], callback?: (errors?: Error[]) => void): Promise; + + /** + * Merges existing values with input values, assuming they are stringified json. + * Returns a Promise object. + * + * Not supported by all native implementations. + */ + multiMerge(keyValuePairs: string[][], callback?: (errors?: Error[]) => void): Promise; + } + + export function useAsyncStorage(key: string): { + getItem(callback?: (error?: Error, result?: string) => void): Promise; + setItem(value: string, callback?: (error?: Error) => void): Promise; + mergeItem(value: string, callback?: (error?: Error) => void): Promise; + removeItem(callback?: (error?: Error) => void): Promise; + } + + const AsyncStorage: AsyncStorageStatic; + + export default AsyncStorage; +} diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/README.md b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/README.md new file mode 100644 index 0000000..985b937 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/README.md @@ -0,0 +1,281 @@ +# `@react-native-community/geolocation` +[![CircleCI Status](https://img.shields.io/circleci/project/github/react-native-community/react-native-geolocation/master.svg)](https://circleci.com/gh/react-native-community/workflows/react-native-geolocation/tree/master) ![Supports Android, iOS and web](https://img.shields.io/badge/platforms-android%20%7C%20ios%20%7C%20web-lightgrey.svg) ![MIT License](https://img.shields.io/npm/l/@react-native-community/geolocation.svg) + +The Geolocation API extends the [Geolocation web spec](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation). + +Currently, on Android, this uses the [android.location API](https://developer.android.com/reference/android/location/package-summary). This API is not recommended by Google because it is less accurate and slower than the recommended [Google Location Services API](https://developer.android.com/training/location/). This is something that we want to change in the near future https://github.com/react-native-community/react-native-geolocation/issues/6. + +In order to use the new [Google Location Services API](https://developer.android.com/training/location/) with React Native, please check out alternative libraries: + +- [react-native-geolocation-service](https://github.com/Agontuk/react-native-geolocation-service) +- [react-native-location](https://github.com/timfpark/react-native-location) + +## Getting started + +`yarn add @react-native-community/geolocation` + +or + +`npm install @react-native-community/geolocation --save` + +### Mostly automatic installation + +`react-native link @react-native-community/geolocation` + +### Manual installation + +
+Manually link the library on iOS + +### `Open project.xcodeproj in Xcode` + +Drag `RNCGeolocation.xcodeproj` to your project on Xcode (usually under the Libraries group on Xcode): + +![xcode-add](https://facebook.github.io/react-native/docs/assets/AddToLibraries.png) + +### Link `libRNCGeolocation.a` binary with libraries + +Click on your main project file (the one that represents the `.xcodeproj`) select `Build Phases` and drag the static library from the `Products` folder inside the Library you are importing to `Link Binary With Libraries` (or use the `+` sign and choose library from the list): + +![xcode-link](https://facebook.github.io/react-native/docs/assets/AddToBuildPhases.png) + +### Using CocoaPods + +Update your `Podfile` + +``` +pod 'react-native-geolocation', path: '../node_modules/@react-native-community/geolocation' +``` + +
+ +
+Manually link the library on Android + +#### `android/settings.gradle` +```groovy +include ':react-native-community-geolocation' +project(':react-native-community-geolocation').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/geolocation/android') +``` + +#### `android/app/build.gradle` +```groovy +dependencies { + ... + implementation project(':react-native-community-geolocation') +} +``` + +#### `android/app/src/main/.../MainApplication.java` +On top, where imports are: + +```java +import com.reactnativecommunity.geolocation.GeolocationPackage; +``` + +Add the `GeolocationPackage` class to your list of exported packages. + +```java +@Override +protected List getPackages() { + return Arrays.asList( + new MainReactPackage(), + new GeolocationPackage() + ); +} +``` +
+ +## Configuration and Permissions + + + +### iOS + +You need to include `NSLocationWhenInUseUsageDescription` and `NSLocationAlwaysAndWhenInUseUsageDescription` in `Info.plist` to enable geolocation when using the app. If your app supports iOS 10 and earlier, the `NSLocationAlwaysUsageDescription` key is also required. If these keys are not present in the `Info.plist`, authorization requests fail immediately and silently. Geolocation is enabled by default when you create a project with `react-native init`. + +In order to enable geolocation in the background, you need to include the 'NSLocationAlwaysUsageDescription' key in Info.plist and add location as a background mode in the 'Capabilities' tab in Xcode. + +### Android + +To request access to location, you need to add the following line to your app's `AndroidManifest.xml`: + +`` + +Android API >= 18 Positions will also contain a `mocked` boolean to indicate if position was created from a mock provider. + +

+ Android API >= 23 Requires an additional step to check for, and request + the ACCESS_FINE_LOCATION permission using + the PermissionsAndroid API. + Failure to do so may result in a hard crash. +

+ +## Migrating from the core `react-native` module +This module was created when the Geolocation was split out from the core of React Native. As a browser polyfill, this API was available through the `navigator.geolocation` global - you didn't need to import it. To migrate to this module you need to follow the installation instructions above and change following code: + +```javascript +navigator.geolocation.setRNConfiguration(config); +``` + +to: + +```javascript +import Geolocation from '@react-native-community/geolocation'; + +Geolocation.setRNConfiguration(config); +``` + +If you need to have geolocation API aligned with the browser (cross-platform apps), or want to support backward compatibility, please consider adding following lines at the root level, for example at the top of your App.js file (only for [react native](https://facebook.github.io/react-native/docs/platform-specific-code.html#native-specific-extensions-ie-sharing-code-with-nodejs-and-web)): + +```javascript +navigator.geolocation = require('@react-native-community/geolocation'); +``` + +## Usage + +### Example + +```javascript +import Geolocation from '@react-native-community/geolocation'; + +Geolocation.getCurrentPosition(info => console.log(info)); +``` + +Check out the [example project](example) for more examples. + +## Methods + +### Summary + +* [`setRNConfiguration`](#setrnconfiguration) +* [`requestAuthorization`](#requestauthorization) +* [`getCurrentPosition`](#getcurrentposition) +* [`watchPosition`](#watchposition) +* [`clearWatch`](#clearwatch) +* [`stopObserving`](#stopobserving) + +--- + +### Details + +#### `setRNConfiguration()` + +```javascript +geolocation.setRNConfiguration(config); +``` + +Sets configuration options that will be used in all location requests. + +**Parameters:** + +| Name | Type | Required | Description | +| ------ | ------ | -------- | ----------- | +| config | object | Yes | See below. | + +Supported options: + +* `skipPermissionRequests` (boolean, iOS-only) - Defaults to `false`. If `true`, you must request permissions before using Geolocation APIs. +* `authorizationLevel` (string, iOS-only) - Either `"whenInUse"`, `"always"`, or `"auto"`. Changes the whether the user will be asked to give "always" or "when in use" location services permission. Any other value or `auto` will use the default behaviour, where the permission level is based on the contents of your `Info.plist`. + +--- + +#### `requestAuthorization()` + +```javascript +geolocation.requestAuthorization(); +``` + +Request suitable Location permission based on the key configured on pList. If NSLocationAlwaysUsageDescription is set, it will request Always authorization, although if NSLocationWhenInUseUsageDescription is set, it will request InUse authorization. + +--- + +#### `getCurrentPosition()` + +```javascript +geolocation.getCurrentPosition(geo_success, [geo_error], [geo_options]); +``` + +Invokes the success callback once with the latest location info. + +**Parameters:** + +| Name | Type | Required | Description | +| ----------- | -------- | -------- | ----------------------------------------- | +| geo_success | function | Yes | Invoked with latest location info. | +| geo_error | function | No | Invoked whenever an error is encountered. | +| geo_options | object | No | See below. | + +Supported options: + +* `timeout` (ms) - Is a positive value representing the maximum length of time (in milliseconds) the device is allowed to take in order to return a position. Defaults to INFINITY. +* `maximumAge` (ms) - Is a positive value indicating the maximum age in milliseconds of a possible cached position that is acceptable to return. If set to 0, it means that the device cannot use a cached position and must attempt to retrieve the real current position. If set to Infinity the device will always return a cached position regardless of its age. Defaults to INFINITY. +* `enableHighAccuracy` (bool) - Is a boolean representing if to use GPS or not. If set to true, a GPS position will be requested. If set to false, a WIFI location will be requested. + +--- + +#### `watchPosition()` + +```javascript +geolocation.watchPosition(success, [error], [options]); +``` + +Invokes the success callback whenever the location changes. Returns a `watchId` (number). + +**Parameters:** + +| Name | Type | Required | Description | +| ------- | -------- | -------- | ----------------------------------------- | +| success | function | Yes | Invoked whenever the location changes. | +| error | function | No | Invoked whenever an error is encountered. | +| options | object | No | See below. | + +Supported options: + +* `timeout` (ms) - Is a positive value representing the maximum length of time (in milliseconds) the device is allowed to take in order to return a position. Defaults to INFINITY. +* `maximumAge` (ms) - Is a positive value indicating the maximum age in milliseconds of a possible cached position that is acceptable to return. If set to 0, it means that the device cannot use a cached position and must attempt to retrieve the real current position. If set to Infinity the device will always return a cached position regardless of its age. Defaults to INFINITY. +* `enableHighAccuracy` (bool) - Is a boolean representing if to use GPS or not. If set to true, a GPS position will be requested. If set to false, a WIFI location will be requested. +* `distanceFilter` (m) - The minimum distance from the previous location to exceed before returning a new location. Set to 0 to not filter locations. Defaults to 100m. +* `useSignificantChanges` (bool) - Uses the battery-efficient native significant changes APIs to return locations. Locations will only be returned when the device detects a significant distance has been breached. Defaults to FALSE. + +--- + +#### `clearWatch()` + +```javascript +geolocation.clearWatch(watchID); +``` + +**Parameters:** + +| Name | Type | Required | Description | +| ------- | ------ | -------- | ------------------------------------ | +| watchID | number | Yes | Id as returned by `watchPosition()`. | + +--- + +#### `stopObserving()` + +```javascript +geolocation.stopObserving(); +``` + +Stops observing for device location changes. In addition, it removes all listeners previously registered. + +Notice that this method has only effect if the `geolocation.watchPosition(successCallback, errorCallback)` method was previously invoked. + +## Contributors + +This module was extracted from `react-native` core. Please reffer to https://github.com/react-native-community/react-native-geolocation/graphs/contributors for the complete list of contributors. + +## License +The library is released under the MIT licence. For more information see `LICENSE`. diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/js/implementation.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/js/implementation.js new file mode 100644 index 0000000..bc8461f --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/js/implementation.js @@ -0,0 +1,61 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow + */ + +type GeoOptions = { + timeout?: number, + maximumAge?: number, + enableHighAccuracy?: boolean, +}; + +const Geolocation = { + setRNConfiguration: function() { + throw new Error('method not supported by the browser'); + }, + requestAuthorization: function() { + throw new Error('method not supported by the browser'); + }, + getCurrentPosition: async function( + success: Function, + error?: Function, + options?: GeoOptions, + ) { + if (typeof success !== 'function') { + throw new Error('success callback must be a function'); + } else if (!navigator || !navigator.geolocation) { + console.error('Navigator is undefined'); + return; + } + navigator.geolocation.getCurrentPosition(success, error, options); + }, + watchPosition: function( + success: Function, + error?: Function, + options?: GeoOptions, + ) { + if (typeof success !== 'function') { + throw new Error('success callback must be a function'); + } else if (!navigator || !navigator.geolocation) { + console.error('Navigator is undefined'); + return; + } + navigator.geolocation.watchPosition(success, error, options); + }, + clearWatch: function(watchID: number) { + if (!navigator || !navigator.geolocation) { + console.error('Navigator is undefined'); + return; + } + navigator.geolocation.clearWatch(watchID); + }, + stopObserving: function() { + throw new Error('method not supported by the browser'); + }, +}; +module.exports = Geolocation; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/js/implementation.native.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/js/implementation.native.js new file mode 100644 index 0000000..2f573c1 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/js/implementation.native.js @@ -0,0 +1,160 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow + */ + +import {RNCGeolocation, GeolocationEventEmitter} from './nativeInterface'; + +import invariant from 'invariant'; +import {logError, warning} from './utils'; + +let subscriptions = []; +let updatesEnabled = false; + +type GeoConfiguration = { + skipPermissionRequests: boolean, + authorizationLevel: 'always' | 'whenInUse' | 'auto', +}; + +type GeoOptions = { + timeout?: number, + maximumAge?: number, + enableHighAccuracy?: boolean, + distanceFilter?: number, + useSignificantChanges?: boolean, +}; + +/** + * The Geolocation API extends the web spec: + * https://developer.mozilla.org/en-US/docs/Web/API/Geolocation + * + * See https://facebook.github.io/react-native/docs/geolocation.html + */ +const Geolocation = { + /* + * Sets configuration options that will be used in all location requests. + * + * See https://facebook.github.io/react-native/docs/geolocation.html#setrnconfiguration + * + */ + setRNConfiguration: function(config: GeoConfiguration) { + if (RNCGeolocation.setConfiguration) { + RNCGeolocation.setConfiguration(config); + } + }, + + /* + * Requests Location permissions based on the key configured on pList. + * + * See https://facebook.github.io/react-native/docs/geolocation.html#requestauthorization + */ + requestAuthorization: function() { + RNCGeolocation.requestAuthorization(); + }, + + /* + * Invokes the success callback once with the latest location info. + * + * See https://facebook.github.io/react-native/docs/geolocation.html#getcurrentposition + */ + getCurrentPosition: async function( + geo_success: Function, + geo_error?: Function, + geo_options?: GeoOptions, + ) { + invariant( + typeof geo_success === 'function', + 'Must provide a valid geo_success callback.', + ); + + // Permission checks/requests are done on the native side + RNCGeolocation.getCurrentPosition( + geo_options || {}, + geo_success, + geo_error || logError, + ); + }, + + /* + * Invokes the success callback whenever the location changes. + * + * See https://facebook.github.io/react-native/docs/geolocation.html#watchposition + */ + watchPosition: function( + success: Function, + error?: Function, + options?: GeoOptions, + ): number { + if (!updatesEnabled) { + RNCGeolocation.startObserving(options || {}); + updatesEnabled = true; + } + const watchID = subscriptions.length; + subscriptions.push([ + GeolocationEventEmitter.addListener('geolocationDidChange', success), + error + ? GeolocationEventEmitter.addListener('geolocationError', error) + : null, + ]); + return watchID; + }, + + /* + * Unsubscribes the watcher with the given watchID. + * + * See https://facebook.github.io/react-native/docs/geolocation.html#clearwatch + */ + clearWatch: function(watchID: number) { + const sub = subscriptions[watchID]; + if (!sub) { + // Silently exit when the watchID is invalid or already cleared + // This is consistent with timers + return; + } + + sub[0].remove(); + // array element refinements not yet enabled in Flow + const sub1 = sub[1]; + sub1 && sub1.remove(); + subscriptions[watchID] = undefined; + let noWatchers = true; + for (let ii = 0; ii < subscriptions.length; ii++) { + if (subscriptions[ii]) { + noWatchers = false; // still valid subscriptions + } + } + if (noWatchers) { + Geolocation.stopObserving(); + } + }, + + /* + * Stops observing for device location changes and removes all registered listeners. + * + * See https://facebook.github.io/react-native/docs/geolocation.html#stopobserving + */ + stopObserving: function() { + if (updatesEnabled) { + RNCGeolocation.stopObserving(); + updatesEnabled = false; + for (let ii = 0; ii < subscriptions.length; ii++) { + const sub = subscriptions[ii]; + if (sub) { + warning(false, 'Called stopObserving with existing subscriptions.'); + sub[0].remove(); + // array element refinements not yet enabled in Flow + const sub1 = sub[1]; + sub1 && sub1.remove(); + } + } + subscriptions = []; + } + }, +}; + +module.exports = Geolocation; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/js/index.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/js/index.js new file mode 100644 index 0000000..a844ab4 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/js/index.js @@ -0,0 +1,13 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow + */ + +import Geolocation from './implementation'; + +module.exports = Geolocation; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/js/nativeInterface.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/js/nativeInterface.js new file mode 100644 index 0000000..c0a1829 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/js/nativeInterface.js @@ -0,0 +1,37 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow + */ + +import {NativeEventEmitter, NativeModules} from 'react-native'; + +const {RNCGeolocation} = NativeModules; + +// Produce an error if we don't have the native module +if (!RNCGeolocation) { + throw new Error(`@react-native-community/geolocation: NativeModule.RNCGeolocation is null. To fix this issue try these steps: +• Run \`react-native link @react-native-community/geolocation\` in the project root. +• Rebuild and re-run the app. +• If you are using CocoaPods on iOS, run \`pod install\` in the \`ios\` directory and then rebuild and re-run the app. You may also need to re-open Xcode to get the new pods. +If none of these fix the issue, please open an issue on the Github repository: https://github.com/react-native-community/react-native-geolocation`); +} + +/** + * We export the native interface in this way to give easy shared access to it between the + * JavaScript code and the tests + */ +let nativeEventEmitter = null; +module.exports = { + RNCGeolocation, + get GeolocationEventEmitter() { + if (!nativeEventEmitter) { + nativeEventEmitter = new NativeEventEmitter(RNCGeolocation); + } + return nativeEventEmitter; + }, +}; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/js/utils.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/js/utils.js new file mode 100644 index 0000000..9bd3f8f --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/js/utils.js @@ -0,0 +1,61 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow strict + */ + +'use strict'; + +/** + * Small utility that can be used as an error handler. You cannot just pass + * `console.error` as a failure callback - it's not properly bound. If passes an + * `Error` object, it will print the message and stack. + */ +const logError = function(...args: $ReadOnlyArray) { + if (args.length === 1 && args[0] instanceof Error) { + const err = args[0]; + console.error('Error: "' + err.message + '". Stack:\n' + err.stack); + } else { + console.error.apply(console, args); + } +}; + +/** + * Similar to invariant but only logs a warning if the condition is not met. + * This can be used to log issues in development environments in critical + * paths. Removing the logging code for production environments will keep the + * same logic and follow the same code paths. + */ +const warning = __DEV__ + ? function(condition: boolean, format: string, ...args: any[]) { + if (format === undefined) { + throw new Error( + '`warning(condition, format, ...args)` requires a warning ' + + 'message argument', + ); + } + if (!condition) { + var argIndex = 0; + var message = + 'Warning: ' + format.replace(/%s/g, () => args[argIndex++]); + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + } + } + : function(...args: any[]) {}; + +module.exports = { + logError, + warning, +}; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/commonjs/implementation.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/commonjs/implementation.js new file mode 100644 index 0000000..b217f15 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/commonjs/implementation.js @@ -0,0 +1,2 @@ +var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _regenerator=_interopRequireDefault(require("@babel/runtime/regenerator"));var Geolocation={setRNConfiguration:function setRNConfiguration(){throw new Error('method not supported by the browser');},requestAuthorization:function requestAuthorization(){throw new Error('method not supported by the browser');},getCurrentPosition:function getCurrentPosition(success,error,options){return _regenerator.default.async(function getCurrentPosition$(_context){while(1){switch(_context.prev=_context.next){case 0:if(!(typeof success!=='function')){_context.next=4;break;}throw new Error('success callback must be a function');case 4:if(!(!navigator||!navigator.geolocation)){_context.next=7;break;}console.error('Navigator is undefined');return _context.abrupt("return");case 7:navigator.geolocation.getCurrentPosition(success,error,options);case 8:case"end":return _context.stop();}}});},watchPosition:function watchPosition(success,error,options){if(typeof success!=='function'){throw new Error('success callback must be a function');}else if(!navigator||!navigator.geolocation){console.error('Navigator is undefined');return;}navigator.geolocation.watchPosition(success,error,options);},clearWatch:function clearWatch(watchID){if(!navigator||!navigator.geolocation){console.error('Navigator is undefined');return;}navigator.geolocation.clearWatch(watchID);},stopObserving:function stopObserving(){throw new Error('method not supported by the browser');}};module.exports=Geolocation; +//# sourceMappingURL=implementation.js.map \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/commonjs/implementation.js.map b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/commonjs/implementation.js.map new file mode 100644 index 0000000..e1770ec --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/commonjs/implementation.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["implementation.js"],"names":["Geolocation","setRNConfiguration","Error","requestAuthorization","getCurrentPosition","success","error","options","navigator","geolocation","console","watchPosition","clearWatch","watchID","stopObserving","module","exports"],"mappings":"kKAgBA,GAAMA,CAAAA,WAAW,CAAG,CAClBC,kBAAkB,CAAE,6BAAW,CAC7B,KAAM,IAAIC,CAAAA,KAAJ,CAAU,qCAAV,CAAN,CACD,CAHiB,CAIlBC,oBAAoB,CAAE,+BAAW,CAC/B,KAAM,IAAID,CAAAA,KAAJ,CAAU,qCAAV,CAAN,CACD,CANiB,CAOlBE,kBAAkB,CAAE,4BAClBC,OADkB,CAElBC,KAFkB,CAGlBC,OAHkB,oIAKd,MAAOF,CAAAA,OAAP,GAAmB,UALL,+BAMV,IAAIH,CAAAA,KAAJ,CAAU,qCAAV,CANU,aAOP,CAACM,SAAD,EAAc,CAACA,SAAS,CAACC,WAPlB,0BAQhBC,OAAO,CAACJ,KAAR,CAAc,wBAAd,EARgB,wCAWlBE,SAAS,CAACC,WAAV,CAAsBL,kBAAtB,CAAyCC,OAAzC,CAAkDC,KAAlD,CAAyDC,OAAzD,EAXkB,8CAPF,CAoBlBI,aAAa,CAAE,uBACbN,OADa,CAEbC,KAFa,CAGbC,OAHa,CAIb,CACA,GAAI,MAAOF,CAAAA,OAAP,GAAmB,UAAvB,CAAmC,CACjC,KAAM,IAAIH,CAAAA,KAAJ,CAAU,qCAAV,CAAN,CACD,CAFD,IAEO,IAAI,CAACM,SAAD,EAAc,CAACA,SAAS,CAACC,WAA7B,CAA0C,CAC/CC,OAAO,CAACJ,KAAR,CAAc,wBAAd,EACA,OACD,CACDE,SAAS,CAACC,WAAV,CAAsBE,aAAtB,CAAoCN,OAApC,CAA6CC,KAA7C,CAAoDC,OAApD,EACD,CAhCiB,CAiClBK,UAAU,CAAE,oBAASC,OAAT,CAA0B,CACpC,GAAI,CAACL,SAAD,EAAc,CAACA,SAAS,CAACC,WAA7B,CAA0C,CACxCC,OAAO,CAACJ,KAAR,CAAc,wBAAd,EACA,OACD,CACDE,SAAS,CAACC,WAAV,CAAsBG,UAAtB,CAAiCC,OAAjC,EACD,CAvCiB,CAwClBC,aAAa,CAAE,wBAAW,CACxB,KAAM,IAAIZ,CAAAA,KAAJ,CAAU,qCAAV,CAAN,CACD,CA1CiB,CAApB,CA4CAa,MAAM,CAACC,OAAP,CAAiBhB,WAAjB","sourcesContent":["/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * @flow\n */\n\ntype GeoOptions = {\n timeout?: number,\n maximumAge?: number,\n enableHighAccuracy?: boolean,\n};\n\nconst Geolocation = {\n setRNConfiguration: function() {\n throw new Error('method not supported by the browser');\n },\n requestAuthorization: function() {\n throw new Error('method not supported by the browser');\n },\n getCurrentPosition: async function(\n success: Function,\n error?: Function,\n options?: GeoOptions,\n ) {\n if (typeof success !== 'function') {\n throw new Error('success callback must be a function');\n } else if (!navigator || !navigator.geolocation) {\n console.error('Navigator is undefined');\n return;\n }\n navigator.geolocation.getCurrentPosition(success, error, options);\n },\n watchPosition: function(\n success: Function,\n error?: Function,\n options?: GeoOptions,\n ) {\n if (typeof success !== 'function') {\n throw new Error('success callback must be a function');\n } else if (!navigator || !navigator.geolocation) {\n console.error('Navigator is undefined');\n return;\n }\n navigator.geolocation.watchPosition(success, error, options);\n },\n clearWatch: function(watchID: number) {\n if (!navigator || !navigator.geolocation) {\n console.error('Navigator is undefined');\n return;\n }\n navigator.geolocation.clearWatch(watchID);\n },\n stopObserving: function() {\n throw new Error('method not supported by the browser');\n },\n};\nmodule.exports = Geolocation;\n"]} \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/commonjs/implementation.native.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/commonjs/implementation.native.js new file mode 100644 index 0000000..e50f427 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/commonjs/implementation.native.js @@ -0,0 +1,2 @@ +var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _regenerator=_interopRequireDefault(require("@babel/runtime/regenerator"));var _nativeInterface=require("./nativeInterface");var _invariant=_interopRequireDefault(require("invariant"));var _utils=require("./utils");var subscriptions=[];var updatesEnabled=false;var Geolocation={setRNConfiguration:function setRNConfiguration(config){if(_nativeInterface.RNCGeolocation.setConfiguration){_nativeInterface.RNCGeolocation.setConfiguration(config);}},requestAuthorization:function requestAuthorization(){_nativeInterface.RNCGeolocation.requestAuthorization();},getCurrentPosition:function getCurrentPosition(geo_success,geo_error,geo_options){return _regenerator.default.async(function getCurrentPosition$(_context){while(1){switch(_context.prev=_context.next){case 0:(0,_invariant.default)(typeof geo_success==='function','Must provide a valid geo_success callback.');_nativeInterface.RNCGeolocation.getCurrentPosition(geo_options||{},geo_success,geo_error||_utils.logError);case 2:case"end":return _context.stop();}}});},watchPosition:function watchPosition(success,error,options){if(!updatesEnabled){_nativeInterface.RNCGeolocation.startObserving(options||{});updatesEnabled=true;}var watchID=subscriptions.length;subscriptions.push([_nativeInterface.GeolocationEventEmitter.addListener('geolocationDidChange',success),error?_nativeInterface.GeolocationEventEmitter.addListener('geolocationError',error):null]);return watchID;},clearWatch:function clearWatch(watchID){var sub=subscriptions[watchID];if(!sub){return;}sub[0].remove();var sub1=sub[1];sub1&&sub1.remove();subscriptions[watchID]=undefined;var noWatchers=true;for(var ii=0;ii2?_len2-2:0),_key2=2;_key2<_len2;_key2++){args[_key2-2]=arguments[_key2];}if(format===undefined){throw new Error('`warning(condition, format, ...args)` requires a warning '+'message argument');}if(!condition){var argIndex=0;var message='Warning: '+format.replace(/%s/g,function(){return args[argIndex++];});if(typeof console!=='undefined'){console.error(message);}try{throw new Error(message);}catch(x){}}}:function(){};module.exports={logError:logError,warning:warning}; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/commonjs/utils.js.map b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/commonjs/utils.js.map new file mode 100644 index 0000000..fbe3154 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/commonjs/utils.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["utils.js"],"names":["logError","args","length","Error","err","console","error","message","stack","apply","warning","__DEV__","condition","format","undefined","argIndex","replace","x","module","exports"],"mappings":"AAUA,aAOA,GAAMA,CAAAA,QAAQ,CAAG,QAAXA,CAAAA,QAAW,EAAyC,+BAA7BC,IAA6B,0CAA7BA,IAA6B,wBACxD,GAAIA,IAAI,CAACC,MAAL,GAAgB,CAAhB,EAAqBD,IAAI,CAAC,CAAD,CAAJ,UAAmBE,CAAAA,KAA5C,CAAmD,CACjD,GAAMC,CAAAA,GAAG,CAAGH,IAAI,CAAC,CAAD,CAAhB,CACAI,OAAO,CAACC,KAAR,CAAc,WAAaF,GAAG,CAACG,OAAjB,CAA2B,cAA3B,CAA4CH,GAAG,CAACI,KAA9D,EACD,CAHD,IAGO,CACLH,OAAO,CAACC,KAAR,CAAcG,KAAd,CAAoBJ,OAApB,CAA6BJ,IAA7B,EACD,CACF,CAPD,CAeA,GAAMS,CAAAA,OAAO,CAAGC,OAAO,CACnB,SAASC,SAAT,CAA6BC,MAA7B,CAA6D,gCAAbZ,IAAa,2DAAbA,IAAa,4BAC3D,GAAIY,MAAM,GAAKC,SAAf,CAA0B,CACxB,KAAM,IAAIX,CAAAA,KAAJ,CACJ,4DACE,kBAFE,CAAN,CAID,CACD,GAAI,CAACS,SAAL,CAAgB,CACd,GAAIG,CAAAA,QAAQ,CAAG,CAAf,CACA,GAAIR,CAAAA,OAAO,CACT,YAAcM,MAAM,CAACG,OAAP,CAAe,KAAf,CAAsB,iBAAMf,CAAAA,IAAI,CAACc,QAAQ,EAAT,CAAV,EAAtB,CADhB,CAEA,GAAI,MAAOV,CAAAA,OAAP,GAAmB,WAAvB,CAAoC,CAClCA,OAAO,CAACC,KAAR,CAAcC,OAAd,EACD,CACD,GAAI,CAIF,KAAM,IAAIJ,CAAAA,KAAJ,CAAUI,OAAV,CAAN,CACD,CAAC,MAAOU,CAAP,CAAU,CAAE,CACf,CACF,CAtBkB,CAuBnB,UAAyB,CAAE,CAvB/B,CAyBAC,MAAM,CAACC,OAAP,CAAiB,CACfnB,QAAQ,CAARA,QADe,CAEfU,OAAO,CAAPA,OAFe,CAAjB","sourcesContent":["/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * @flow strict\n */\n\n'use strict';\n\n/**\n * Small utility that can be used as an error handler. You cannot just pass\n * `console.error` as a failure callback - it's not properly bound. If passes an\n * `Error` object, it will print the message and stack.\n */\nconst logError = function(...args: $ReadOnlyArray) {\n if (args.length === 1 && args[0] instanceof Error) {\n const err = args[0];\n console.error('Error: \"' + err.message + '\". Stack:\\n' + err.stack);\n } else {\n console.error.apply(console, args);\n }\n};\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\nconst warning = __DEV__\n ? function(condition: boolean, format: string, ...args: any[]) {\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument',\n );\n }\n if (!condition) {\n var argIndex = 0;\n var message =\n 'Warning: ' + format.replace(/%s/g, () => args[argIndex++]);\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n }\n : function(...args: any[]) {};\n\nmodule.exports = {\n logError,\n warning,\n};\n"]} \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/module/implementation.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/module/implementation.js new file mode 100644 index 0000000..6b59e07 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/module/implementation.js @@ -0,0 +1,2 @@ +import _regeneratorRuntime from"@babel/runtime/regenerator";var Geolocation={setRNConfiguration:function setRNConfiguration(){throw new Error('method not supported by the browser');},requestAuthorization:function requestAuthorization(){throw new Error('method not supported by the browser');},getCurrentPosition:function getCurrentPosition(success,error,options){return _regeneratorRuntime.async(function getCurrentPosition$(_context){while(1){switch(_context.prev=_context.next){case 0:if(!(typeof success!=='function')){_context.next=4;break;}throw new Error('success callback must be a function');case 4:if(!(!navigator||!navigator.geolocation)){_context.next=7;break;}console.error('Navigator is undefined');return _context.abrupt("return");case 7:navigator.geolocation.getCurrentPosition(success,error,options);case 8:case"end":return _context.stop();}}});},watchPosition:function watchPosition(success,error,options){if(typeof success!=='function'){throw new Error('success callback must be a function');}else if(!navigator||!navigator.geolocation){console.error('Navigator is undefined');return;}navigator.geolocation.watchPosition(success,error,options);},clearWatch:function clearWatch(watchID){if(!navigator||!navigator.geolocation){console.error('Navigator is undefined');return;}navigator.geolocation.clearWatch(watchID);},stopObserving:function stopObserving(){throw new Error('method not supported by the browser');}};module.exports=Geolocation; +//# sourceMappingURL=implementation.js.map \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/module/implementation.js.map b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/module/implementation.js.map new file mode 100644 index 0000000..684b194 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/module/implementation.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["implementation.js"],"names":["Geolocation","setRNConfiguration","Error","requestAuthorization","getCurrentPosition","success","error","options","navigator","geolocation","console","watchPosition","clearWatch","watchID","stopObserving","module","exports"],"mappings":"4DAgBA,GAAMA,CAAAA,WAAW,CAAG,CAClBC,kBAAkB,CAAE,6BAAW,CAC7B,KAAM,IAAIC,CAAAA,KAAJ,CAAU,qCAAV,CAAN,CACD,CAHiB,CAIlBC,oBAAoB,CAAE,+BAAW,CAC/B,KAAM,IAAID,CAAAA,KAAJ,CAAU,qCAAV,CAAN,CACD,CANiB,CAOlBE,kBAAkB,CAAE,4BAClBC,OADkB,CAElBC,KAFkB,CAGlBC,OAHkB,mIAKd,MAAOF,CAAAA,OAAP,GAAmB,UALL,+BAMV,IAAIH,CAAAA,KAAJ,CAAU,qCAAV,CANU,aAOP,CAACM,SAAD,EAAc,CAACA,SAAS,CAACC,WAPlB,0BAQhBC,OAAO,CAACJ,KAAR,CAAc,wBAAd,EARgB,wCAWlBE,SAAS,CAACC,WAAV,CAAsBL,kBAAtB,CAAyCC,OAAzC,CAAkDC,KAAlD,CAAyDC,OAAzD,EAXkB,8CAPF,CAoBlBI,aAAa,CAAE,uBACbN,OADa,CAEbC,KAFa,CAGbC,OAHa,CAIb,CACA,GAAI,MAAOF,CAAAA,OAAP,GAAmB,UAAvB,CAAmC,CACjC,KAAM,IAAIH,CAAAA,KAAJ,CAAU,qCAAV,CAAN,CACD,CAFD,IAEO,IAAI,CAACM,SAAD,EAAc,CAACA,SAAS,CAACC,WAA7B,CAA0C,CAC/CC,OAAO,CAACJ,KAAR,CAAc,wBAAd,EACA,OACD,CACDE,SAAS,CAACC,WAAV,CAAsBE,aAAtB,CAAoCN,OAApC,CAA6CC,KAA7C,CAAoDC,OAApD,EACD,CAhCiB,CAiClBK,UAAU,CAAE,oBAASC,OAAT,CAA0B,CACpC,GAAI,CAACL,SAAD,EAAc,CAACA,SAAS,CAACC,WAA7B,CAA0C,CACxCC,OAAO,CAACJ,KAAR,CAAc,wBAAd,EACA,OACD,CACDE,SAAS,CAACC,WAAV,CAAsBG,UAAtB,CAAiCC,OAAjC,EACD,CAvCiB,CAwClBC,aAAa,CAAE,wBAAW,CACxB,KAAM,IAAIZ,CAAAA,KAAJ,CAAU,qCAAV,CAAN,CACD,CA1CiB,CAApB,CA4CAa,MAAM,CAACC,OAAP,CAAiBhB,WAAjB","sourcesContent":["/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * @flow\n */\n\ntype GeoOptions = {\n timeout?: number,\n maximumAge?: number,\n enableHighAccuracy?: boolean,\n};\n\nconst Geolocation = {\n setRNConfiguration: function() {\n throw new Error('method not supported by the browser');\n },\n requestAuthorization: function() {\n throw new Error('method not supported by the browser');\n },\n getCurrentPosition: async function(\n success: Function,\n error?: Function,\n options?: GeoOptions,\n ) {\n if (typeof success !== 'function') {\n throw new Error('success callback must be a function');\n } else if (!navigator || !navigator.geolocation) {\n console.error('Navigator is undefined');\n return;\n }\n navigator.geolocation.getCurrentPosition(success, error, options);\n },\n watchPosition: function(\n success: Function,\n error?: Function,\n options?: GeoOptions,\n ) {\n if (typeof success !== 'function') {\n throw new Error('success callback must be a function');\n } else if (!navigator || !navigator.geolocation) {\n console.error('Navigator is undefined');\n return;\n }\n navigator.geolocation.watchPosition(success, error, options);\n },\n clearWatch: function(watchID: number) {\n if (!navigator || !navigator.geolocation) {\n console.error('Navigator is undefined');\n return;\n }\n navigator.geolocation.clearWatch(watchID);\n },\n stopObserving: function() {\n throw new Error('method not supported by the browser');\n },\n};\nmodule.exports = Geolocation;\n"]} \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/module/implementation.native.js b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/module/implementation.native.js new file mode 100644 index 0000000..4d0822a --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/module/implementation.native.js @@ -0,0 +1,2 @@ +import _regeneratorRuntime from"@babel/runtime/regenerator";import{RNCGeolocation,GeolocationEventEmitter}from'./nativeInterface';import invariant from'invariant';import{logError,warning}from'./utils';var subscriptions=[];var updatesEnabled=false;var Geolocation={setRNConfiguration:function setRNConfiguration(config){if(RNCGeolocation.setConfiguration){RNCGeolocation.setConfiguration(config);}},requestAuthorization:function requestAuthorization(){RNCGeolocation.requestAuthorization();},getCurrentPosition:function getCurrentPosition(geo_success,geo_error,geo_options){return _regeneratorRuntime.async(function getCurrentPosition$(_context){while(1){switch(_context.prev=_context.next){case 0:invariant(typeof geo_success==='function','Must provide a valid geo_success callback.');RNCGeolocation.getCurrentPosition(geo_options||{},geo_success,geo_error||logError);case 2:case"end":return _context.stop();}}});},watchPosition:function watchPosition(success,error,options){if(!updatesEnabled){RNCGeolocation.startObserving(options||{});updatesEnabled=true;}var watchID=subscriptions.length;subscriptions.push([GeolocationEventEmitter.addListener('geolocationDidChange',success),error?GeolocationEventEmitter.addListener('geolocationError',error):null]);return watchID;},clearWatch:function clearWatch(watchID){var sub=subscriptions[watchID];if(!sub){return;}sub[0].remove();var sub1=sub[1];sub1&&sub1.remove();subscriptions[watchID]=undefined;var noWatchers=true;for(var ii=0;ii2?_len2-2:0),_key2=2;_key2<_len2;_key2++){args[_key2-2]=arguments[_key2];}if(format===undefined){throw new Error('`warning(condition, format, ...args)` requires a warning '+'message argument');}if(!condition){var argIndex=0;var message='Warning: '+format.replace(/%s/g,function(){return args[argIndex++];});if(typeof console!=='undefined'){console.error(message);}try{throw new Error(message);}catch(x){}}}:function(){};module.exports={logError:logError,warning:warning}; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/module/utils.js.map b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/module/utils.js.map new file mode 100644 index 0000000..fbe3154 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/lib/module/utils.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["utils.js"],"names":["logError","args","length","Error","err","console","error","message","stack","apply","warning","__DEV__","condition","format","undefined","argIndex","replace","x","module","exports"],"mappings":"AAUA,aAOA,GAAMA,CAAAA,QAAQ,CAAG,QAAXA,CAAAA,QAAW,EAAyC,+BAA7BC,IAA6B,0CAA7BA,IAA6B,wBACxD,GAAIA,IAAI,CAACC,MAAL,GAAgB,CAAhB,EAAqBD,IAAI,CAAC,CAAD,CAAJ,UAAmBE,CAAAA,KAA5C,CAAmD,CACjD,GAAMC,CAAAA,GAAG,CAAGH,IAAI,CAAC,CAAD,CAAhB,CACAI,OAAO,CAACC,KAAR,CAAc,WAAaF,GAAG,CAACG,OAAjB,CAA2B,cAA3B,CAA4CH,GAAG,CAACI,KAA9D,EACD,CAHD,IAGO,CACLH,OAAO,CAACC,KAAR,CAAcG,KAAd,CAAoBJ,OAApB,CAA6BJ,IAA7B,EACD,CACF,CAPD,CAeA,GAAMS,CAAAA,OAAO,CAAGC,OAAO,CACnB,SAASC,SAAT,CAA6BC,MAA7B,CAA6D,gCAAbZ,IAAa,2DAAbA,IAAa,4BAC3D,GAAIY,MAAM,GAAKC,SAAf,CAA0B,CACxB,KAAM,IAAIX,CAAAA,KAAJ,CACJ,4DACE,kBAFE,CAAN,CAID,CACD,GAAI,CAACS,SAAL,CAAgB,CACd,GAAIG,CAAAA,QAAQ,CAAG,CAAf,CACA,GAAIR,CAAAA,OAAO,CACT,YAAcM,MAAM,CAACG,OAAP,CAAe,KAAf,CAAsB,iBAAMf,CAAAA,IAAI,CAACc,QAAQ,EAAT,CAAV,EAAtB,CADhB,CAEA,GAAI,MAAOV,CAAAA,OAAP,GAAmB,WAAvB,CAAoC,CAClCA,OAAO,CAACC,KAAR,CAAcC,OAAd,EACD,CACD,GAAI,CAIF,KAAM,IAAIJ,CAAAA,KAAJ,CAAUI,OAAV,CAAN,CACD,CAAC,MAAOU,CAAP,CAAU,CAAE,CACf,CACF,CAtBkB,CAuBnB,UAAyB,CAAE,CAvB/B,CAyBAC,MAAM,CAACC,OAAP,CAAiB,CACfnB,QAAQ,CAARA,QADe,CAEfU,OAAO,CAAPA,OAFe,CAAjB","sourcesContent":["/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * @flow strict\n */\n\n'use strict';\n\n/**\n * Small utility that can be used as an error handler. You cannot just pass\n * `console.error` as a failure callback - it's not properly bound. If passes an\n * `Error` object, it will print the message and stack.\n */\nconst logError = function(...args: $ReadOnlyArray) {\n if (args.length === 1 && args[0] instanceof Error) {\n const err = args[0];\n console.error('Error: \"' + err.message + '\". Stack:\\n' + err.stack);\n } else {\n console.error.apply(console, args);\n }\n};\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\nconst warning = __DEV__\n ? function(condition: boolean, format: string, ...args: any[]) {\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument',\n );\n }\n if (!condition) {\n var argIndex = 0;\n var message =\n 'Warning: ' + format.replace(/%s/g, () => args[argIndex++]);\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n }\n : function(...args: any[]) {};\n\nmodule.exports = {\n logError,\n warning,\n};\n"]} \ No newline at end of file diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/package.json b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/package.json new file mode 100644 index 0000000..1145870 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/package.json @@ -0,0 +1,124 @@ +{ + "name": "@react-native-community/geolocation", + "version": "2.0.2", + "description": "React Native Geolocation Module for iOS and Android", + "react-native": "js/index.js", + "main": "lib/commonjs/index.js", + "files": [ + "lib/", + "js/", + "typings/", + "/android", + "!/android/build", + "/ios", + "/*.podspec" + ], + "typings": "typings/index.d.ts", + "author": "React Native Community", + "contributors": [ + "Janic Duplessis ", + "Michal Chudziak ", + "Matt Oakes " + ], + "homepage": "https://github.com/react-native-community/react-native-geolocation#README.md", + "license": "MIT", + "scripts": { + "start": "react-native start", + "test": "yarn validate:eslint && yarn validate:flow && yarn test:jest", + "validate:eslint": "eslint 'js/**/*.js' 'example/**/*.js'", + "validate:flow": "flow check", + "test:jest": "jest js/", + "build:e2e:android:debug": "detox build -c android.emu.debug", + "build:e2e:android:release": "detox build -c android.emu.release", + "test:e2e:android:debug": "detox test -c android.emu.debug", + "test:e2e:android:release": "detox test -c android.emu.release", + "build:e2e:ios:debug": "detox build -c ios.sim.debug", + "build:e2e:ios:release": "detox build -c ios.sim.release", + "test:e2e:ios:debug": "detox test -c ios.sim.debug", + "test:e2e:ios:release": "detox test -c ios.sim.release", + "prepare": "bob build" + }, + "keywords": [ + "react-native", + "geolocation", + "location" + ], + "peerDependencies": { + "react": "*", + "react-native": "*" + }, + "devDependencies": { + "@babel/core": "^7.5.5", + "@babel/runtime": "^7.5.5", + "@react-native-community/bob": "^0.6.1", + "@react-native-community/eslint-config": "^0.0.5", + "@semantic-release/git": "^7.0.16", + "babel-core": "^7.0.0-bridge.0", + "babel-eslint": "^10.0.2", + "babel-jest": "^24.9.0", + "babel-plugin-module-resolver": "^3.2.0", + "detox": "^14.0.2", + "eslint": "^5.16.0", + "eslint-config-prettier": "^6.0.0", + "eslint-plugin-prettier": "3.0.1", + "flow-bin": "^0.92.0", + "jest": "^24.9.0", + "metro-react-native-babel-preset": "0.56.0", + "prettier": "^1.18.2", + "react": "16.8.3", + "react-native": "0.59.10", + "react-test-renderer": "16.8.3", + "semantic-release": "^15.13.21" + }, + "jest": { + "preset": "react-native", + "setupFilesAfterEnv": [ + "/jest.setup.js" + ] + }, + "detox": { + "test-runner": "jest", + "runner-config": "example/e2e/config.json", + "configurations": { + "ios.sim.debug": { + "binaryPath": "example/ios/build/Build/Products/Debug-iphonesimulator/GeolocationExample.app", + "build": "export RCT_NO_LAUNCH_PACKAGER=true && xcodebuild -project example/ios/GeolocationExample.xcodeproj -destination 'platform=iOS Simulator,name=iPhone X' -scheme GeolocationExample -parallelizeTargets -configuration Debug -derivedDataPath example/ios/build -UseModernBuildSystem=YES | xcpretty -k", + "type": "ios.simulator", + "name": "iPhone X" + }, + "ios.sim.release": { + "binaryPath": "example/ios/build/Build/Products/Release-iphonesimulator/GeolocationExample.app", + "build": "export RCT_NO_LAUNCH_PACKAGER=true && xcodebuild -project example/ios/GeolocationExample.xcodeproj -destination 'platform=iOS Simulator,name=iPhone X' -scheme GeolocationExample -parallelizeTargets -configuration Release -derivedDataPath example/ios/build -UseModernBuildSystem=YES | xcpretty -k", + "type": "ios.simulator", + "name": "iPhone X" + }, + "android.emu.debug": { + "binaryPath": "example/android/app/build/outputs/apk/debug/app-debug.apk", + "build": "export RCT_NO_LAUNCH_PACKAGER=true && pushd example/android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && popd", + "type": "android.emulator", + "name": "TestingAVD" + }, + "android.emu.release": { + "binaryPath": "example/android/app/build/outputs/apk/release/app-release.apk", + "build": "export RCT_NO_LAUNCH_PACKAGER=true && pushd example/android && ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release && popd", + "type": "android.emulator", + "name": "TestingAVD" + } + }, + "specs": "" + }, + "dependencies": {}, + "@react-native-community/bob": { + "source": "js", + "output": "lib", + "targets": [ + [ + "commonjs", + { + "flow": true + } + ], + "module" + ] + } +} diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/typings/index.d.ts b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/typings/index.d.ts new file mode 100644 index 0000000..6cfc80a --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/@react-native-community/geolocation/typings/index.d.ts @@ -0,0 +1,77 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + */ + +export type GeolocationConfiguration = { + skipPermissionRequests: boolean; + authorizationLevel: 'always' | 'whenInUse' | 'auto'; +}; + +export type GeolocationOptions = { + timeout?: number; + maximumAge?: number; + enableHighAccuracy?: boolean; + distanceFilter?: number; + useSignificantChanges?: boolean; +}; + +export type GeolocationResponse = { + coords: { + latitude: number; + longitude: number; + altitude: number | null; + accuracy: number; + altitudeAccuracy: number | null; + heading: number | null; + speed: number | null; + }; + timestamp: number; +}; + +export type GeolocationError = { + code: number; + message: string; + PERMISSION_DENIED: number; + POSITION_UNAVAILABLE: number; + TIMEOUT: number; +}; + +export interface GeolocationStatic { + /** + * Invokes the success callback once with the latest location info. Supported + * options: timeout (ms), maximumAge (ms), enableHighAccuracy (bool) + * On Android, this can return almost immediately if the location is cached or + * request an update, which might take a while. + */ + getCurrentPosition( + success: (position: GeolocationResponse) => void, + error?: (error: GeolocationError) => void, + options?: GeolocationOptions + ): void; + + /** + * Invokes the success callback whenever the location changes. Supported + * options: timeout (ms), maximumAge (ms), enableHighAccuracy (bool), distanceFilter(m) + */ + watchPosition( + success: (position: GeolocationResponse) => void, + error?: (error: GeolocationError) => void, + options?: GeolocationOptions + ): number; + + clearWatch(watchID: number): void; + + stopObserving(): void; + + requestAuthorization(): void; + + setRNConfiguration(config: GeolocationConfiguration): void; +} + +declare let Geolocation: GeolocationStatic; +export default Geolocation; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/invariant/CHANGELOG.md b/javascriptsource/nanoflowcommons/actions/node_modules/invariant/CHANGELOG.md new file mode 100644 index 0000000..bc52f1c --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/invariant/CHANGELOG.md @@ -0,0 +1,69 @@ +2.2.4 / 2018-03-13 +================== + + * Use flow strict mode (i.e. `@flow strict`). + +2.2.3 / 2018-02-19 +================== + + * Change license from BSD+Patents to MIT. + +2.2.2 / 2016-11-15 +================== + + * Add LICENSE file. + * Misc housekeeping. + +2.2.1 / 2016-03-09 +================== + + * Use `NODE_ENV` variable instead of `__DEV__` to cache `process.env.NODE_ENV`. + +2.2.0 / 2015-11-17 +================== + + * Use `error.name` instead of `Invariant Violation`. + +2.1.3 / 2015-11-17 +================== + + * Remove `@provideModule` pragma. + +2.1.2 / 2015-10-27 +================== + + * Fix license. + +2.1.1 / 2015-09-20 +================== + + * Use correct SPDX license. + * Test "browser.js" using browserify. + * Switch from "envify" to "loose-envify". + +2.1.0 / 2015-06-03 +================== + + * Add "envify" as a dependency. + * Fixed license field in "package.json". + +2.0.0 / 2015-02-21 +================== + + * Switch to using the "browser" field. There are now browser and server versions that respect the "format" in production. + +1.0.2 / 2014-09-24 +================== + + * Added tests, npmignore and gitignore. + * Clarifications in README. + +1.0.1 / 2014-09-24 +================== + + * Actually include 'invariant.js'. + +1.0.0 / 2014-09-24 +================== + + * Initial release. diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/invariant/LICENSE b/javascriptsource/nanoflowcommons/actions/node_modules/invariant/LICENSE new file mode 100644 index 0000000..188fb2b --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/invariant/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2013-present, Facebook, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/invariant/README.md b/javascriptsource/nanoflowcommons/actions/node_modules/invariant/README.md new file mode 100644 index 0000000..4f18354 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/invariant/README.md @@ -0,0 +1,37 @@ +# invariant + +[![Build Status](https://travis-ci.org/zertosh/invariant.svg?branch=master)](https://travis-ci.org/zertosh/invariant) + +A mirror of Facebook's `invariant` (e.g. [React](https://github.com/facebook/react/blob/v0.13.3/src/vendor/core/invariant.js), [flux](https://github.com/facebook/flux/blob/2.0.2/src/invariant.js)). + +A way to provide descriptive errors in development but generic errors in production. + +## Install + +With [npm](http://npmjs.org) do: + +```sh +npm install invariant +``` + +## `invariant(condition, message)` + +```js +var invariant = require('invariant'); + +invariant(someTruthyVal, 'This will not throw'); +// No errors + +invariant(someFalseyVal, 'This will throw an error with this message'); +// Error: Invariant Violation: This will throw an error with this message +``` + +**Note:** When `process.env.NODE_ENV` is not `production`, the message is required. If omitted, `invariant` will throw regardless of the truthiness of the condition. When `process.env.NODE_ENV` is `production`, the message is optional – so they can be minified away. + +### Browser + +When used with [browserify](https://github.com/substack/node-browserify), it'll use `browser.js` (instead of `invariant.js`) and the [envify](https://github.com/hughsk/envify) transform will inline the value of `process.env.NODE_ENV`. + +### Node + +The node version is optimized around the performance implications of accessing `process.env`. The value of `process.env.NODE_ENV` is cached, and repeatedly used instead of reading `process.env`. See [Server rendering is slower with npm react #812](https://github.com/facebook/react/issues/812) diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/invariant/browser.js b/javascriptsource/nanoflowcommons/actions/node_modules/invariant/browser.js new file mode 100644 index 0000000..b3941bc --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/invariant/browser.js @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +/** + * Use invariant() to assert state which your program assumes to be true. + * + * Provide sprintf-style format (only %s is supported) and arguments + * to provide information about what broke and what you were + * expecting. + * + * The invariant message will be stripped in production, but the invariant + * will remain to ensure logic does not differ in production. + */ + +var invariant = function(condition, format, a, b, c, d, e, f) { + if (process.env.NODE_ENV !== 'production') { + if (format === undefined) { + throw new Error('invariant requires an error message argument'); + } + } + + if (!condition) { + var error; + if (format === undefined) { + error = new Error( + 'Minified exception occurred; use the non-minified dev environment ' + + 'for the full error message and additional helpful warnings.' + ); + } else { + var args = [a, b, c, d, e, f]; + var argIndex = 0; + error = new Error( + format.replace(/%s/g, function() { return args[argIndex++]; }) + ); + error.name = 'Invariant Violation'; + } + + error.framesToPop = 1; // we don't care about invariant's own frame + throw error; + } +}; + +module.exports = invariant; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/invariant/invariant.js b/javascriptsource/nanoflowcommons/actions/node_modules/invariant/invariant.js new file mode 100644 index 0000000..b543e9f --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/invariant/invariant.js @@ -0,0 +1,51 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +/** + * Use invariant() to assert state which your program assumes to be true. + * + * Provide sprintf-style format (only %s is supported) and arguments + * to provide information about what broke and what you were + * expecting. + * + * The invariant message will be stripped in production, but the invariant + * will remain to ensure logic does not differ in production. + */ + +var NODE_ENV = process.env.NODE_ENV; + +var invariant = function(condition, format, a, b, c, d, e, f) { + if (NODE_ENV !== 'production') { + if (format === undefined) { + throw new Error('invariant requires an error message argument'); + } + } + + if (!condition) { + var error; + if (format === undefined) { + error = new Error( + 'Minified exception occurred; use the non-minified dev environment ' + + 'for the full error message and additional helpful warnings.' + ); + } else { + var args = [a, b, c, d, e, f]; + var argIndex = 0; + error = new Error( + format.replace(/%s/g, function() { return args[argIndex++]; }) + ); + error.name = 'Invariant Violation'; + } + + error.framesToPop = 1; // we don't care about invariant's own frame + throw error; + } +}; + +module.exports = invariant; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/invariant/invariant.js.flow b/javascriptsource/nanoflowcommons/actions/node_modules/invariant/invariant.js.flow new file mode 100644 index 0000000..462ab73 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/invariant/invariant.js.flow @@ -0,0 +1,7 @@ +/* @flow strict */ + +declare module.exports: ( + condition: any, + format?: string, + ...args: Array +) => void; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/invariant/package.json b/javascriptsource/nanoflowcommons/actions/node_modules/invariant/package.json new file mode 100644 index 0000000..bb1499f --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/invariant/package.json @@ -0,0 +1,35 @@ +{ + "name": "invariant", + "version": "2.2.4", + "description": "invariant", + "keywords": [ + "test", + "invariant" + ], + "license": "MIT", + "author": "Andres Suarez ", + "files": [ + "browser.js", + "invariant.js", + "invariant.js.flow" + ], + "repository": "https://github.com/zertosh/invariant", + "scripts": { + "test": "NODE_ENV=production tap test/*.js && NODE_ENV=development tap test/*.js" + }, + "dependencies": { + "loose-envify": "^1.0.0" + }, + "devDependencies": { + "browserify": "^11.0.1", + "flow-bin": "^0.67.1", + "tap": "^1.4.0" + }, + "main": "invariant.js", + "browser": "browser.js", + "browserify": { + "transform": [ + "loose-envify" + ] + } +} diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/js-base64/LICENSE.md b/javascriptsource/nanoflowcommons/actions/node_modules/js-base64/LICENSE.md new file mode 100644 index 0000000..fd579a4 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/js-base64/LICENSE.md @@ -0,0 +1,27 @@ +Copyright (c) 2014, Dan Kogai +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of {{{project}}} nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/js-base64/README.md b/javascriptsource/nanoflowcommons/actions/node_modules/js-base64/README.md new file mode 100644 index 0000000..c0c598a --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/js-base64/README.md @@ -0,0 +1,177 @@ +[![build status](https://app.travis-ci.com/dankogai/js-base64.svg)](https://app.travis-ci.com/github/dankogai/js-base64) + +# base64.js + +Yet another [Base64] transcoder. + +[Base64]: http://en.wikipedia.org/wiki/Base64 + +## Install + +```shell +$ npm install --save js-base64 +``` + +## Usage + +### In Browser + +Locally… + +```html + +``` + +… or Directly from CDN. In which case you don't even need to install. + +```html + +``` + +This good old way loads `Base64` in the global context (`window`). Though `Base64.noConflict()` is made available, you should consider using ES6 Module to avoid tainting `window`. + +### As an ES6 Module + +locally… + +```javascript +import { Base64 } from 'js-base64'; +``` + +```javascript +// or if you prefer no Base64 namespace +import { encode, decode } from 'js-base64'; +``` + +or even remotely. + +```html + +``` + +```html + +``` + +### node.js (commonjs) + +```javascript +const {Base64} = require('js-base64'); +``` + +Unlike the case above, the global context is no longer modified. + +You can also use [esm] to `import` instead of `require`. + +[esm]: https://github.com/standard-things/esm + +```javascript +require=require('esm')(module); +import {Base64} from 'js-base64'; +``` + +## SYNOPSIS + +```javascript +let latin = 'dankogai'; +let utf8 = '小飼弾' +let u8s = new Uint8Array([100,97,110,107,111,103,97,105]); +Base64.encode(latin); // ZGFua29nYWk= +Base64.encode(latin, true)); // ZGFua29nYWk skips padding +Base64.encodeURI(latin)); // ZGFua29nYWk +Base64.btoa(latin); // ZGFua29nYWk= +Base64.btoa(utf8); // raises exception +Base64.fromUint8Array(u8s); // ZGFua29nYWk= +Base64.fromUint8Array(u8s, true); // ZGFua29nYW which is URI safe +Base64.encode(utf8); // 5bCP6aO85by+ +Base64.encode(utf8, true) // 5bCP6aO85by- +Base64.encodeURI(utf8); // 5bCP6aO85by- +``` + +```javascript +Base64.decode( 'ZGFua29nYWk=');// dankogai +Base64.decode( 'ZGFua29nYWk'); // dankogai +Base64.atob( 'ZGFua29nYWk=');// dankogai +Base64.atob( '5bCP6aO85by+');// '小飼弾' which is nonsense +Base64.toUint8Array('ZGFua29nYWk=');// u8s above +Base64.decode( '5bCP6aO85by+');// 小飼弾 +// note .decodeURI() is unnecessary since it accepts both flavors +Base64.decode( '5bCP6aO85by-');// 小飼弾 +``` + +```javascript +Base64.isValid(0); // false: 0 is not string +Base64.isValid(''); // true: a valid Base64-encoded empty byte +Base64.isValid('ZA=='); // true: a valid Base64-encoded 'd' +Base64.isValid('Z A='); // true: whitespaces are okay +Base64.isValid('ZA'); // true: padding ='s can be omitted +Base64.isValid('++'); // true: can be non URL-safe +Base64.isValid('--'); // true: or URL-safe +Base64.isValid('+-'); // false: can't mix both +``` + +### Built-in Extensions + +By default `Base64` leaves built-in prototypes untouched. But you can extend them as below. + +```javascript +// you have to explicitly extend String.prototype +Base64.extendString(); +// once extended, you can do the following +'dankogai'.toBase64(); // ZGFua29nYWk= +'小飼弾'.toBase64(); // 5bCP6aO85by+ +'小飼弾'.toBase64(true); // 5bCP6aO85by- +'小飼弾'.toBase64URI(); // 5bCP6aO85by- ab alias of .toBase64(true) +'小飼弾'.toBase64URL(); // 5bCP6aO85by- an alias of .toBase64URI() +'ZGFua29nYWk='.fromBase64(); // dankogai +'5bCP6aO85by+'.fromBase64(); // 小飼弾 +'5bCP6aO85by-'.fromBase64(); // 小飼弾 +'5bCP6aO85by-'.toUint8Array();// u8s above +``` + +```javascript +// you have to explicitly extend Uint8Array.prototype +Base64.extendUint8Array(); +// once extended, you can do the following +u8s.toBase64(); // 'ZGFua29nYWk=' +u8s.toBase64URI(); // 'ZGFua29nYWk' +u8s.toBase64URL(); // 'ZGFua29nYWk' an alias of .toBase64URI() +``` + +```javascript +// extend all at once +Base64.extendBuiltins() +``` + +## `.decode()` vs `.atob` (and `.encode()` vs `btoa()`) + +Suppose you have: + +``` +var pngBase64 = + "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="; +``` + +Which is a Base64-encoded 1x1 transparent PNG, **DO NOT USE** `Base64.decode(pngBase64)`.  Use `Base64.atob(pngBase64)` instead.  `Base64.decode()` decodes to UTF-8 string while `Base64.atob()` decodes to bytes, which is compatible to browser built-in `atob()` (Which is absent in node.js).  The same rule applies to the opposite direction. + +Or even better, `Base64.toUint8Array(pngBase64)`. + +### If you really, really need an ES5 version + +You can transpiles to an ES5 that runs on IEs before 11. Do the following in your shell. + +```shell +$ make base64.es5.js +``` + +## Brief History + +* Since version 3.3 it is written in TypeScript. Now `base64.mjs` is compiled from `base64.ts` then `base64.js` is generated from `base64.mjs`. +* Since version 3.7 `base64.js` is ES5-compatible again (hence IE11-compabile). +* Since 3.0 `js-base64` switch to ES2015 module so it is no longer compatible with legacy browsers like IE (see above) diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/js-base64/base64.d.ts b/javascriptsource/nanoflowcommons/actions/node_modules/js-base64/base64.d.ts new file mode 100644 index 0000000..f2677f7 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/js-base64/base64.d.ts @@ -0,0 +1,135 @@ +/** + * base64.ts + * + * Licensed under the BSD 3-Clause License. + * http://opensource.org/licenses/BSD-3-Clause + * + * References: + * http://en.wikipedia.org/wiki/Base64 + * + * @author Dan Kogai (https://github.com/dankogai) + */ +declare const version = "3.7.2"; +/** + * @deprecated use lowercase `version`. + */ +declare const VERSION = "3.7.2"; +/** + * polyfill version of `btoa` + */ +declare const btoaPolyfill: (bin: string) => string; +/** + * does what `window.btoa` of web browsers do. + * @param {String} bin binary string + * @returns {string} Base64-encoded string + */ +declare const _btoa: (bin: string) => string; +/** + * converts a Uint8Array to a Base64 string. + * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5 + * @returns {string} Base64 string + */ +declare const fromUint8Array: (u8a: Uint8Array, urlsafe?: boolean) => string; +/** + * @deprecated should have been internal use only. + * @param {string} src UTF-8 string + * @returns {string} UTF-16 string + */ +declare const utob: (u: string) => string; +/** + * converts a UTF-8-encoded string to a Base64 string. + * @param {boolean} [urlsafe] if `true` make the result URL-safe + * @returns {string} Base64 string + */ +declare const encode: (src: string, urlsafe?: boolean) => string; +/** + * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5. + * @returns {string} Base64 string + */ +declare const encodeURI: (src: string) => string; +/** + * @deprecated should have been internal use only. + * @param {string} src UTF-16 string + * @returns {string} UTF-8 string + */ +declare const btou: (b: string) => string; +/** + * polyfill version of `atob` + */ +declare const atobPolyfill: (asc: string) => string; +/** + * does what `window.atob` of web browsers do. + * @param {String} asc Base64-encoded string + * @returns {string} binary string + */ +declare const _atob: (asc: string) => string; +/** + * converts a Base64 string to a Uint8Array. + */ +declare const toUint8Array: (a: string) => Uint8Array; +/** + * converts a Base64 string to a UTF-8 string. + * @param {String} src Base64 string. Both normal and URL-safe are supported + * @returns {string} UTF-8 string + */ +declare const decode: (src: string) => string; +/** + * check if a value is a valid Base64 string + * @param {String} src a value to check + */ +declare const isValid: (src: any) => boolean; +/** + * extend String.prototype with relevant methods + */ +declare const extendString: () => void; +/** + * extend Uint8Array.prototype with relevant methods + */ +declare const extendUint8Array: () => void; +/** + * extend Builtin prototypes with relevant methods + */ +declare const extendBuiltins: () => void; +declare const gBase64: { + version: string; + VERSION: string; + atob: (asc: string) => string; + atobPolyfill: (asc: string) => string; + btoa: (bin: string) => string; + btoaPolyfill: (bin: string) => string; + fromBase64: (src: string) => string; + toBase64: (src: string, urlsafe?: boolean) => string; + encode: (src: string, urlsafe?: boolean) => string; + encodeURI: (src: string) => string; + encodeURL: (src: string) => string; + utob: (u: string) => string; + btou: (b: string) => string; + decode: (src: string) => string; + isValid: (src: any) => boolean; + fromUint8Array: (u8a: Uint8Array, urlsafe?: boolean) => string; + toUint8Array: (a: string) => Uint8Array; + extendString: () => void; + extendUint8Array: () => void; + extendBuiltins: () => void; +}; +export { version }; +export { VERSION }; +export { _atob as atob }; +export { atobPolyfill }; +export { _btoa as btoa }; +export { btoaPolyfill }; +export { decode as fromBase64 }; +export { encode as toBase64 }; +export { utob }; +export { encode }; +export { encodeURI }; +export { encodeURI as encodeURL }; +export { btou }; +export { decode }; +export { isValid }; +export { fromUint8Array }; +export { toUint8Array }; +export { extendString }; +export { extendUint8Array }; +export { extendBuiltins }; +export { gBase64 as Base64 }; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/js-base64/base64.js b/javascriptsource/nanoflowcommons/actions/node_modules/js-base64/base64.js new file mode 100644 index 0000000..98bc742 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/js-base64/base64.js @@ -0,0 +1,319 @@ +// +// THIS FILE IS AUTOMATICALLY GENERATED! DO NOT EDIT BY HAND! +// +; +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + ? module.exports = factory() + : typeof define === 'function' && define.amd + ? define(factory) : + // cf. https://github.com/dankogai/js-base64/issues/119 + (function () { + // existing version for noConflict() + var _Base64 = global.Base64; + var gBase64 = factory(); + gBase64.noConflict = function () { + global.Base64 = _Base64; + return gBase64; + }; + if (global.Meteor) { // Meteor.js + Base64 = gBase64; + } + global.Base64 = gBase64; + })(); +}((typeof self !== 'undefined' ? self + : typeof window !== 'undefined' ? window + : typeof global !== 'undefined' ? global + : this), function () { + 'use strict'; + /** + * base64.ts + * + * Licensed under the BSD 3-Clause License. + * http://opensource.org/licenses/BSD-3-Clause + * + * References: + * http://en.wikipedia.org/wiki/Base64 + * + * @author Dan Kogai (https://github.com/dankogai) + */ + var version = '3.7.2'; + /** + * @deprecated use lowercase `version`. + */ + var VERSION = version; + var _hasatob = typeof atob === 'function'; + var _hasbtoa = typeof btoa === 'function'; + var _hasBuffer = typeof Buffer === 'function'; + var _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined; + var _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined; + var b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + var b64chs = Array.prototype.slice.call(b64ch); + var b64tab = (function (a) { + var tab = {}; + a.forEach(function (c, i) { return tab[c] = i; }); + return tab; + })(b64chs); + var b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/; + var _fromCC = String.fromCharCode.bind(String); + var _U8Afrom = typeof Uint8Array.from === 'function' + ? Uint8Array.from.bind(Uint8Array) + : function (it, fn) { + if (fn === void 0) { fn = function (x) { return x; }; } + return new Uint8Array(Array.prototype.slice.call(it, 0).map(fn)); + }; + var _mkUriSafe = function (src) { return src + .replace(/=/g, '').replace(/[+\/]/g, function (m0) { return m0 == '+' ? '-' : '_'; }); }; + var _tidyB64 = function (s) { return s.replace(/[^A-Za-z0-9\+\/]/g, ''); }; + /** + * polyfill version of `btoa` + */ + var btoaPolyfill = function (bin) { + // console.log('polyfilled'); + var u32, c0, c1, c2, asc = ''; + var pad = bin.length % 3; + for (var i = 0; i < bin.length;) { + if ((c0 = bin.charCodeAt(i++)) > 255 || + (c1 = bin.charCodeAt(i++)) > 255 || + (c2 = bin.charCodeAt(i++)) > 255) + throw new TypeError('invalid character found'); + u32 = (c0 << 16) | (c1 << 8) | c2; + asc += b64chs[u32 >> 18 & 63] + + b64chs[u32 >> 12 & 63] + + b64chs[u32 >> 6 & 63] + + b64chs[u32 & 63]; + } + return pad ? asc.slice(0, pad - 3) + "===".substring(pad) : asc; + }; + /** + * does what `window.btoa` of web browsers do. + * @param {String} bin binary string + * @returns {string} Base64-encoded string + */ + var _btoa = _hasbtoa ? function (bin) { return btoa(bin); } + : _hasBuffer ? function (bin) { return Buffer.from(bin, 'binary').toString('base64'); } + : btoaPolyfill; + var _fromUint8Array = _hasBuffer + ? function (u8a) { return Buffer.from(u8a).toString('base64'); } + : function (u8a) { + // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326 + var maxargs = 0x1000; + var strs = []; + for (var i = 0, l = u8a.length; i < l; i += maxargs) { + strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs))); + } + return _btoa(strs.join('')); + }; + /** + * converts a Uint8Array to a Base64 string. + * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5 + * @returns {string} Base64 string + */ + var fromUint8Array = function (u8a, urlsafe) { + if (urlsafe === void 0) { urlsafe = false; } + return urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a); + }; + // This trick is found broken https://github.com/dankogai/js-base64/issues/130 + // const utob = (src: string) => unescape(encodeURIComponent(src)); + // reverting good old fationed regexp + var cb_utob = function (c) { + if (c.length < 2) { + var cc = c.charCodeAt(0); + return cc < 0x80 ? c + : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6)) + + _fromCC(0x80 | (cc & 0x3f))) + : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f)) + + _fromCC(0x80 | ((cc >>> 6) & 0x3f)) + + _fromCC(0x80 | (cc & 0x3f))); + } + else { + var cc = 0x10000 + + (c.charCodeAt(0) - 0xD800) * 0x400 + + (c.charCodeAt(1) - 0xDC00); + return (_fromCC(0xf0 | ((cc >>> 18) & 0x07)) + + _fromCC(0x80 | ((cc >>> 12) & 0x3f)) + + _fromCC(0x80 | ((cc >>> 6) & 0x3f)) + + _fromCC(0x80 | (cc & 0x3f))); + } + }; + var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; + /** + * @deprecated should have been internal use only. + * @param {string} src UTF-8 string + * @returns {string} UTF-16 string + */ + var utob = function (u) { return u.replace(re_utob, cb_utob); }; + // + var _encode = _hasBuffer + ? function (s) { return Buffer.from(s, 'utf8').toString('base64'); } + : _TE + ? function (s) { return _fromUint8Array(_TE.encode(s)); } + : function (s) { return _btoa(utob(s)); }; + /** + * converts a UTF-8-encoded string to a Base64 string. + * @param {boolean} [urlsafe] if `true` make the result URL-safe + * @returns {string} Base64 string + */ + var encode = function (src, urlsafe) { + if (urlsafe === void 0) { urlsafe = false; } + return urlsafe + ? _mkUriSafe(_encode(src)) + : _encode(src); + }; + /** + * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5. + * @returns {string} Base64 string + */ + var encodeURI = function (src) { return encode(src, true); }; + // This trick is found broken https://github.com/dankogai/js-base64/issues/130 + // const btou = (src: string) => decodeURIComponent(escape(src)); + // reverting good old fationed regexp + var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g; + var cb_btou = function (cccc) { + switch (cccc.length) { + case 4: + var cp = ((0x07 & cccc.charCodeAt(0)) << 18) + | ((0x3f & cccc.charCodeAt(1)) << 12) + | ((0x3f & cccc.charCodeAt(2)) << 6) + | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000; + return (_fromCC((offset >>> 10) + 0xD800) + + _fromCC((offset & 0x3FF) + 0xDC00)); + case 3: + return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12) + | ((0x3f & cccc.charCodeAt(1)) << 6) + | (0x3f & cccc.charCodeAt(2))); + default: + return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6) + | (0x3f & cccc.charCodeAt(1))); + } + }; + /** + * @deprecated should have been internal use only. + * @param {string} src UTF-16 string + * @returns {string} UTF-8 string + */ + var btou = function (b) { return b.replace(re_btou, cb_btou); }; + /** + * polyfill version of `atob` + */ + var atobPolyfill = function (asc) { + // console.log('polyfilled'); + asc = asc.replace(/\s+/g, ''); + if (!b64re.test(asc)) + throw new TypeError('malformed base64.'); + asc += '=='.slice(2 - (asc.length & 3)); + var u24, bin = '', r1, r2; + for (var i = 0; i < asc.length;) { + u24 = b64tab[asc.charAt(i++)] << 18 + | b64tab[asc.charAt(i++)] << 12 + | (r1 = b64tab[asc.charAt(i++)]) << 6 + | (r2 = b64tab[asc.charAt(i++)]); + bin += r1 === 64 ? _fromCC(u24 >> 16 & 255) + : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255) + : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255); + } + return bin; + }; + /** + * does what `window.atob` of web browsers do. + * @param {String} asc Base64-encoded string + * @returns {string} binary string + */ + var _atob = _hasatob ? function (asc) { return atob(_tidyB64(asc)); } + : _hasBuffer ? function (asc) { return Buffer.from(asc, 'base64').toString('binary'); } + : atobPolyfill; + // + var _toUint8Array = _hasBuffer + ? function (a) { return _U8Afrom(Buffer.from(a, 'base64')); } + : function (a) { return _U8Afrom(_atob(a), function (c) { return c.charCodeAt(0); }); }; + /** + * converts a Base64 string to a Uint8Array. + */ + var toUint8Array = function (a) { return _toUint8Array(_unURI(a)); }; + // + var _decode = _hasBuffer + ? function (a) { return Buffer.from(a, 'base64').toString('utf8'); } + : _TD + ? function (a) { return _TD.decode(_toUint8Array(a)); } + : function (a) { return btou(_atob(a)); }; + var _unURI = function (a) { return _tidyB64(a.replace(/[-_]/g, function (m0) { return m0 == '-' ? '+' : '/'; })); }; + /** + * converts a Base64 string to a UTF-8 string. + * @param {String} src Base64 string. Both normal and URL-safe are supported + * @returns {string} UTF-8 string + */ + var decode = function (src) { return _decode(_unURI(src)); }; + /** + * check if a value is a valid Base64 string + * @param {String} src a value to check + */ + var isValid = function (src) { + if (typeof src !== 'string') + return false; + var s = src.replace(/\s+/g, '').replace(/={0,2}$/, ''); + return !/[^\s0-9a-zA-Z\+/]/.test(s) || !/[^\s0-9a-zA-Z\-_]/.test(s); + }; + // + var _noEnum = function (v) { + return { + value: v, enumerable: false, writable: true, configurable: true + }; + }; + /** + * extend String.prototype with relevant methods + */ + var extendString = function () { + var _add = function (name, body) { return Object.defineProperty(String.prototype, name, _noEnum(body)); }; + _add('fromBase64', function () { return decode(this); }); + _add('toBase64', function (urlsafe) { return encode(this, urlsafe); }); + _add('toBase64URI', function () { return encode(this, true); }); + _add('toBase64URL', function () { return encode(this, true); }); + _add('toUint8Array', function () { return toUint8Array(this); }); + }; + /** + * extend Uint8Array.prototype with relevant methods + */ + var extendUint8Array = function () { + var _add = function (name, body) { return Object.defineProperty(Uint8Array.prototype, name, _noEnum(body)); }; + _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); }); + _add('toBase64URI', function () { return fromUint8Array(this, true); }); + _add('toBase64URL', function () { return fromUint8Array(this, true); }); + }; + /** + * extend Builtin prototypes with relevant methods + */ + var extendBuiltins = function () { + extendString(); + extendUint8Array(); + }; + var gBase64 = { + version: version, + VERSION: VERSION, + atob: _atob, + atobPolyfill: atobPolyfill, + btoa: _btoa, + btoaPolyfill: btoaPolyfill, + fromBase64: decode, + toBase64: encode, + encode: encode, + encodeURI: encodeURI, + encodeURL: encodeURI, + utob: utob, + btou: btou, + decode: decode, + isValid: isValid, + fromUint8Array: fromUint8Array, + toUint8Array: toUint8Array, + extendString: extendString, + extendUint8Array: extendUint8Array, + extendBuiltins: extendBuiltins + }; + // + // export Base64 to the namespace + // + // ES5 is yet to have Object.assign() that may make transpilers unhappy. + // gBase64.Base64 = Object.assign({}, gBase64); + gBase64.Base64 = {}; + Object.keys(gBase64).forEach(function (k) { return gBase64.Base64[k] = gBase64[k]; }); + return gBase64; +})); diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/js-base64/base64.mjs b/javascriptsource/nanoflowcommons/actions/node_modules/js-base64/base64.mjs new file mode 100644 index 0000000..735760a --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/js-base64/base64.mjs @@ -0,0 +1,296 @@ +/** + * base64.ts + * + * Licensed under the BSD 3-Clause License. + * http://opensource.org/licenses/BSD-3-Clause + * + * References: + * http://en.wikipedia.org/wiki/Base64 + * + * @author Dan Kogai (https://github.com/dankogai) + */ +const version = '3.7.2'; +/** + * @deprecated use lowercase `version`. + */ +const VERSION = version; +const _hasatob = typeof atob === 'function'; +const _hasbtoa = typeof btoa === 'function'; +const _hasBuffer = typeof Buffer === 'function'; +const _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined; +const _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined; +const b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; +const b64chs = Array.prototype.slice.call(b64ch); +const b64tab = ((a) => { + let tab = {}; + a.forEach((c, i) => tab[c] = i); + return tab; +})(b64chs); +const b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/; +const _fromCC = String.fromCharCode.bind(String); +const _U8Afrom = typeof Uint8Array.from === 'function' + ? Uint8Array.from.bind(Uint8Array) + : (it, fn = (x) => x) => new Uint8Array(Array.prototype.slice.call(it, 0).map(fn)); +const _mkUriSafe = (src) => src + .replace(/=/g, '').replace(/[+\/]/g, (m0) => m0 == '+' ? '-' : '_'); +const _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\+\/]/g, ''); +/** + * polyfill version of `btoa` + */ +const btoaPolyfill = (bin) => { + // console.log('polyfilled'); + let u32, c0, c1, c2, asc = ''; + const pad = bin.length % 3; + for (let i = 0; i < bin.length;) { + if ((c0 = bin.charCodeAt(i++)) > 255 || + (c1 = bin.charCodeAt(i++)) > 255 || + (c2 = bin.charCodeAt(i++)) > 255) + throw new TypeError('invalid character found'); + u32 = (c0 << 16) | (c1 << 8) | c2; + asc += b64chs[u32 >> 18 & 63] + + b64chs[u32 >> 12 & 63] + + b64chs[u32 >> 6 & 63] + + b64chs[u32 & 63]; + } + return pad ? asc.slice(0, pad - 3) + "===".substring(pad) : asc; +}; +/** + * does what `window.btoa` of web browsers do. + * @param {String} bin binary string + * @returns {string} Base64-encoded string + */ +const _btoa = _hasbtoa ? (bin) => btoa(bin) + : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64') + : btoaPolyfill; +const _fromUint8Array = _hasBuffer + ? (u8a) => Buffer.from(u8a).toString('base64') + : (u8a) => { + // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326 + const maxargs = 0x1000; + let strs = []; + for (let i = 0, l = u8a.length; i < l; i += maxargs) { + strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs))); + } + return _btoa(strs.join('')); + }; +/** + * converts a Uint8Array to a Base64 string. + * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5 + * @returns {string} Base64 string + */ +const fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a); +// This trick is found broken https://github.com/dankogai/js-base64/issues/130 +// const utob = (src: string) => unescape(encodeURIComponent(src)); +// reverting good old fationed regexp +const cb_utob = (c) => { + if (c.length < 2) { + var cc = c.charCodeAt(0); + return cc < 0x80 ? c + : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6)) + + _fromCC(0x80 | (cc & 0x3f))) + : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f)) + + _fromCC(0x80 | ((cc >>> 6) & 0x3f)) + + _fromCC(0x80 | (cc & 0x3f))); + } + else { + var cc = 0x10000 + + (c.charCodeAt(0) - 0xD800) * 0x400 + + (c.charCodeAt(1) - 0xDC00); + return (_fromCC(0xf0 | ((cc >>> 18) & 0x07)) + + _fromCC(0x80 | ((cc >>> 12) & 0x3f)) + + _fromCC(0x80 | ((cc >>> 6) & 0x3f)) + + _fromCC(0x80 | (cc & 0x3f))); + } +}; +const re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; +/** + * @deprecated should have been internal use only. + * @param {string} src UTF-8 string + * @returns {string} UTF-16 string + */ +const utob = (u) => u.replace(re_utob, cb_utob); +// +const _encode = _hasBuffer + ? (s) => Buffer.from(s, 'utf8').toString('base64') + : _TE + ? (s) => _fromUint8Array(_TE.encode(s)) + : (s) => _btoa(utob(s)); +/** + * converts a UTF-8-encoded string to a Base64 string. + * @param {boolean} [urlsafe] if `true` make the result URL-safe + * @returns {string} Base64 string + */ +const encode = (src, urlsafe = false) => urlsafe + ? _mkUriSafe(_encode(src)) + : _encode(src); +/** + * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5. + * @returns {string} Base64 string + */ +const encodeURI = (src) => encode(src, true); +// This trick is found broken https://github.com/dankogai/js-base64/issues/130 +// const btou = (src: string) => decodeURIComponent(escape(src)); +// reverting good old fationed regexp +const re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g; +const cb_btou = (cccc) => { + switch (cccc.length) { + case 4: + var cp = ((0x07 & cccc.charCodeAt(0)) << 18) + | ((0x3f & cccc.charCodeAt(1)) << 12) + | ((0x3f & cccc.charCodeAt(2)) << 6) + | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000; + return (_fromCC((offset >>> 10) + 0xD800) + + _fromCC((offset & 0x3FF) + 0xDC00)); + case 3: + return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12) + | ((0x3f & cccc.charCodeAt(1)) << 6) + | (0x3f & cccc.charCodeAt(2))); + default: + return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6) + | (0x3f & cccc.charCodeAt(1))); + } +}; +/** + * @deprecated should have been internal use only. + * @param {string} src UTF-16 string + * @returns {string} UTF-8 string + */ +const btou = (b) => b.replace(re_btou, cb_btou); +/** + * polyfill version of `atob` + */ +const atobPolyfill = (asc) => { + // console.log('polyfilled'); + asc = asc.replace(/\s+/g, ''); + if (!b64re.test(asc)) + throw new TypeError('malformed base64.'); + asc += '=='.slice(2 - (asc.length & 3)); + let u24, bin = '', r1, r2; + for (let i = 0; i < asc.length;) { + u24 = b64tab[asc.charAt(i++)] << 18 + | b64tab[asc.charAt(i++)] << 12 + | (r1 = b64tab[asc.charAt(i++)]) << 6 + | (r2 = b64tab[asc.charAt(i++)]); + bin += r1 === 64 ? _fromCC(u24 >> 16 & 255) + : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255) + : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255); + } + return bin; +}; +/** + * does what `window.atob` of web browsers do. + * @param {String} asc Base64-encoded string + * @returns {string} binary string + */ +const _atob = _hasatob ? (asc) => atob(_tidyB64(asc)) + : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary') + : atobPolyfill; +// +const _toUint8Array = _hasBuffer + ? (a) => _U8Afrom(Buffer.from(a, 'base64')) + : (a) => _U8Afrom(_atob(a), c => c.charCodeAt(0)); +/** + * converts a Base64 string to a Uint8Array. + */ +const toUint8Array = (a) => _toUint8Array(_unURI(a)); +// +const _decode = _hasBuffer + ? (a) => Buffer.from(a, 'base64').toString('utf8') + : _TD + ? (a) => _TD.decode(_toUint8Array(a)) + : (a) => btou(_atob(a)); +const _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/')); +/** + * converts a Base64 string to a UTF-8 string. + * @param {String} src Base64 string. Both normal and URL-safe are supported + * @returns {string} UTF-8 string + */ +const decode = (src) => _decode(_unURI(src)); +/** + * check if a value is a valid Base64 string + * @param {String} src a value to check + */ +const isValid = (src) => { + if (typeof src !== 'string') + return false; + const s = src.replace(/\s+/g, '').replace(/={0,2}$/, ''); + return !/[^\s0-9a-zA-Z\+/]/.test(s) || !/[^\s0-9a-zA-Z\-_]/.test(s); +}; +// +const _noEnum = (v) => { + return { + value: v, enumerable: false, writable: true, configurable: true + }; +}; +/** + * extend String.prototype with relevant methods + */ +const extendString = function () { + const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body)); + _add('fromBase64', function () { return decode(this); }); + _add('toBase64', function (urlsafe) { return encode(this, urlsafe); }); + _add('toBase64URI', function () { return encode(this, true); }); + _add('toBase64URL', function () { return encode(this, true); }); + _add('toUint8Array', function () { return toUint8Array(this); }); +}; +/** + * extend Uint8Array.prototype with relevant methods + */ +const extendUint8Array = function () { + const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body)); + _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); }); + _add('toBase64URI', function () { return fromUint8Array(this, true); }); + _add('toBase64URL', function () { return fromUint8Array(this, true); }); +}; +/** + * extend Builtin prototypes with relevant methods + */ +const extendBuiltins = () => { + extendString(); + extendUint8Array(); +}; +const gBase64 = { + version: version, + VERSION: VERSION, + atob: _atob, + atobPolyfill: atobPolyfill, + btoa: _btoa, + btoaPolyfill: btoaPolyfill, + fromBase64: decode, + toBase64: encode, + encode: encode, + encodeURI: encodeURI, + encodeURL: encodeURI, + utob: utob, + btou: btou, + decode: decode, + isValid: isValid, + fromUint8Array: fromUint8Array, + toUint8Array: toUint8Array, + extendString: extendString, + extendUint8Array: extendUint8Array, + extendBuiltins: extendBuiltins, +}; +// makecjs:CUT // +export { version }; +export { VERSION }; +export { _atob as atob }; +export { atobPolyfill }; +export { _btoa as btoa }; +export { btoaPolyfill }; +export { decode as fromBase64 }; +export { encode as toBase64 }; +export { utob }; +export { encode }; +export { encodeURI }; +export { encodeURI as encodeURL }; +export { btou }; +export { decode }; +export { isValid }; +export { fromUint8Array }; +export { toUint8Array }; +export { extendString }; +export { extendUint8Array }; +export { extendBuiltins }; +// and finally, +export { gBase64 as Base64 }; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/js-base64/package.json b/javascriptsource/nanoflowcommons/actions/node_modules/js-base64/package.json new file mode 100644 index 0000000..5c6ed32 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/js-base64/package.json @@ -0,0 +1,36 @@ +{ + "name": "js-base64", + "version": "3.7.2", + "description": "Yet another Base64 transcoder in pure-JS", + "main": "base64.js", + "module": "base64.mjs", + "types": "base64.d.ts", + "files": [ + "base64.js", + "base64.mjs", + "base64.d.ts" + ], + "exports": { + ".": { + "import": "./base64.mjs", + "require": "./base64.js" + }, + "./package.json": "./package.json" + }, + "scripts": { + "test": "make clean && make test" + }, + "devDependencies": { + "@types/node": "^14.0.26", + "esm": "^3.2.25", + "mocha": "^8.4.0", + "typescript": "^3.9.7" + }, + "repository": "git+https://github.com/dankogai/js-base64.git", + "keywords": [ + "base64", + "binary" + ], + "author": "Dan Kogai", + "license": "BSD-3-Clause" +} diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geocoder/LICENSE b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geocoder/LICENSE new file mode 100644 index 0000000..f27b176 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geocoder/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Alexey + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geocoder/README.md b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geocoder/README.md new file mode 100644 index 0000000..8ab2533 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geocoder/README.md @@ -0,0 +1,147 @@ + + +# react-native-geocoder + +[![CircleCI](https://circleci.com/gh/devfd/react-native-geocoder/tree/master.svg?style=shield)](https://circleci.com/gh/devfd/react-native-geocoder/tree/master) + +geocoding services for react native + + +## Version table +| Geocoder Version | RN | +| ------- |:----------| +| >=0.4.6 | >= 0.40.0 | +| <0.4.5 | <0.40.0 | + + +## Install +``` +npm install --save react-native-geocoder +``` +## iOS + +1. In the XCode's "Project navigator", right click on Libraries folder under your project ➜ `Add Files to <...>` +2. Go to `node_modules` ➜ `react-native-geocoder` and add `ios/RNGeocoder.xcodeproj` file +3. Add libRNGeocoder.a to "Build Phases" -> "Link Binary With Libraries" + +## Android +1. In `android/setting.gradle` + +```gradle +... +include ':react-native-geocoder', ':app' +project(':react-native-geocoder').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-geocoder/android') +``` + +3. In `android/app/build.gradle` + +```gradle +... +dependencies { + ... + compile project(':react-native-geocoder') +} +``` + +4. register module (in MainApplication.java) + +```java +import com.devfd.RNGeocoder.RNGeocoderPackage; // <--- import + +public class MainActivity extends ReactActivity { + ...... + + @Override + protected List getPackages() { + return Arrays.asList( + new MainReactPackage(), + new RNGeocoderPackage()); // <------ add this + } + + ...... + +} + +``` + +## Usage +``` +import Geocoder from 'react-native-geocoder'; + +// Position Geocoding +var NY = { + lat: 40.7809261, + lng: -73.9637594 +}; + +Geocoder.geocodePosition(NY).then(res => { + // res is an Array of geocoding object (see below) +}) +.catch(err => console.log(err)) + +// Address Geocoding +Geocoder.geocodeAddress('New York').then(res => { + // res is an Array of geocoding object (see below) +}) +.catch(err => console.log(err)) +``` + +## Fallback to google maps geocoding + +Geocoding services might not be included in some Android devices (Kindle, some 4.1 devices, non-google devices). For those special cases the lib can fallback to the [online google maps geocoding service](https://developers.google.com/maps/documentation/geocoding/intro#Geocoding) + +```js +import Geocoder from 'react-native-geocoder'; +// simply add your google key +Geocoder.fallbackToGoogle(MY_KEY); + +// use the lib as usual +let ret = await Geocoder.geocodePosition({lat, lng}) +// you get the same results + +``` + +## With async / await +``` +try { + + const res = await Geocoder.geocodePosition(NY); + ... + + const res = await Geocoder.geocodeAddress('London'); + ... +} +catch(err) { + console.log(err); +} +``` + +## Geocoding object format +both iOS and Android will return the following object: + +```js +{ + position: {lat, lng}, + formattedAddress: String, // the full address + feature: String | null, // ex Yosemite Park, Eiffel Tower + streetNumber: String | null, + streetName: String | null, + postalCode: String | null, + locality: String | null, // city name + country: String, + countryCode: String + adminArea: String | null + subAdminArea: String | null, + subLocality: String | null +} +``` + +## Notes + +### iOS +iOS does not allow sending multiple geocoding requests simultaneously, hence if you send a second call, the first one will be cancelled. + +### Android +geocoding may not work on older android devices (4.1) and will not work if Google play services are not available. + + diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geocoder/index.js b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geocoder/index.js new file mode 100644 index 0000000..6bbbdfa --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geocoder/index.js @@ -0,0 +1,3 @@ +import Geocoder from './js/geocoder.js'; + +export default Geocoder; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geocoder/js/geocoder.js b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geocoder/js/geocoder.js new file mode 100644 index 0000000..3a4563e --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geocoder/js/geocoder.js @@ -0,0 +1,34 @@ +import { NativeModules } from 'react-native'; +import GoogleApi from './googleApi.js'; + +const { RNGeocoder } = NativeModules; + +export default { + apiKey: null, + + fallbackToGoogle(key) { + this.apiKey = key; + }, + + geocodePosition(position) { + if (!position || !position.lat || !position.lng) { + return Promise.reject(new Error("invalid position: {lat, lng} required")); + } + + return RNGeocoder.geocodePosition(position).catch(err => { + if (!this.apiKey) { throw err; } + return GoogleApi.geocodePosition(this.apiKey, position); + }); + }, + + geocodeAddress(address) { + if (!address) { + return Promise.reject(new Error("address is null")); + } + + return RNGeocoder.geocodeAddress(address).catch(err => { + if (!this.apiKey) { throw err; } + return GoogleApi.geocodeAddress(this.apiKey, address); + }); + }, +} diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geocoder/js/googleApi.js b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geocoder/js/googleApi.js new file mode 100644 index 0000000..4358de7 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geocoder/js/googleApi.js @@ -0,0 +1,87 @@ +const googleUrl = 'https://maps.google.com/maps/api/geocode/json'; + +function format(raw) { + const address = { + position: {}, + formattedAddress: raw.formatted_address || '', + feature: null, + streetNumber: null, + streetName: null, + postalCode: null, + locality: null, + country: null, + countryCode: null, + adminArea: null, + subAdminArea: null, + subLocality: null, + }; + + if (raw.geometry && raw.geometry.location) { + address.position = { + lat: raw.geometry.location.lat, + lng: raw.geometry.location.lng, + } + } + + raw.address_components.forEach(component => { + if (component.types.indexOf('route') !== -1) { + address.streetName = component.long_name; + } + else if (component.types.indexOf('street_number') !== -1) { + address.streetNumber = component.long_name; + } + else if (component.types.indexOf('country') !== -1) { + address.country = component.long_name; + address.countryCode = component.short_name; + } + else if (component.types.indexOf('locality') !== -1) { + address.locality = component.long_name; + } + else if (component.types.indexOf('postal_code') !== -1) { + address.postalCode = component.long_name; + } + else if (component.types.indexOf('administrative_area_level_1') !== -1) { + address.adminArea = component.long_name; + } + else if (component.types.indexOf('administrative_area_level_2') !== -1) { + address.subAdminArea = component.long_name; + } + else if (component.types.indexOf('sublocality') !== -1 || component.types.indexOf('sublocality_level_1') !== -1) { + address.subLocality = component.long_name; + } + else if (component.types.indexOf('point_of_interest') !== -1 || component.types.indexOf('colloquial_area') !== -1) { + address.feature = component.long_name; + } + }); + + return address; +} + +export default { + geocodePosition(apiKey, position) { + if (!apiKey || !position || !position.lat || !position.lng) { + return Promise.reject(new Error("invalid apiKey / position")); + } + + return this.geocodeRequest(`${googleUrl}?key=${apiKey}&latlng=${position.lat},${position.lng}`); + }, + + geocodeAddress(apiKey, address) { + if (!apiKey || !address) { + return Promise.reject(new Error("invalid apiKey / address")); + } + + return this.geocodeRequest(`${googleUrl}?key=${apiKey}&address=${encodeURI(address)}`); + }, + + async geocodeRequest(url) { + const res = await fetch(url); + const json = await res.json(); + + if (!json.results || json.status !== 'OK') { + return Promise.reject(new Error(`geocoding error ${json.status}, ${json.error_message}`)); + } + + return json.results.map(format); + } +} diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geocoder/package.json b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geocoder/package.json new file mode 100644 index 0000000..22e016b --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geocoder/package.json @@ -0,0 +1,43 @@ +{ + "name": "react-native-geocoder", + "version": "0.5.0", + "description": "react native geocoding and reverse geocoding", + "main": "index.js", + "scripts": { + "test": "mocha --recursive --require test/setup.js --reporter dot test/unit " + }, + "keywords": [ + "react-component", + "react-native", + "geocoding", + "ios", + "android" + ], + "author": { + "name": "devfd", + "email": "hello@devfd.me", + "url": "https://github.com/devfd" + }, + "repository": { + "type": "git", + "url": "https://github.com/devfd/react-native-geocoder" + }, + "bugs": { + "url": "https://github.com/devfd/react-native-geocoder/issues" + }, + "homepage": "https://github.com/devfd/react-native-geocoder", + "license": "MIT", + "devDependencies": { + "appium": "^1.5.3", + "babel-core": "^6.11.4", + "babel-polyfill": "^6.9.1", + "babel-preset-react-native": "^1.9.0", + "chai": "^3.5.0", + "colors": "^1.1.2", + "mocha": "^3.0.0", + "proxyquire": "^1.7.10", + "sinon": "^1.17.5", + "sinon-chai": "^2.8.0", + "wd": "^0.4.0" + } +} diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/CHANGELOG.md b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/CHANGELOG.md new file mode 100644 index 0000000..ae1104a --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/CHANGELOG.md @@ -0,0 +1,59 @@ +# Changelog + +### 5.2.0 (February 2, 2021) + - Android: fix location request on airplane mode + - iOS: add ability to configure showsBackgroundLocationIndicator + - iOS: fix location delay in getCurrentPosition method + - iOS: add `reduced` as an accuracy option + +### 5.1.1 (November 28, 2020) + - Fix iOS `pod install` issue. + +### 5.1.0 (November 26, 2020) + - Android/iOS: add support for specifying accuracy level + - Android: only trigger error in watchPosition if location service is off + +### 5.0.0 (May 30, 2020) +#### Breaking + - iOS: new iOS module implementation. Follow this [issue](https://github.com/Agontuk/react-native-geolocation-service/issues/173) for details. + - iOS: Removed `setRNConfiguration` usage & updated `requestAuthorization` to return promise. + - Android: removed permissions from manifest. You have to declare location permission in your main `AndroidManifest.xml`. + - Android: update play-services-location version to `17.0.0`. + +#### Fixes + - Android: emit error if location is unavailable during `watchPosition` call. + - Only start timer if timeout is valid. + +### 4.0.2 (May 15, 2020) + - Fix ios module warning + +### 4.0.1 (April 29, 2020) + - Removed premature check of isLocationEnabled in startObserving + +### 4.0.0 (February 3, 2020) + - Android: update android support library to androidx + - Android: fix ApiException handling in getLastLocation method + +### 3.1.0 (August 30, 2019) + - Add support for web + - Update location request flow ([described here](https://github.com/Agontuk/react-native-geolocation-service/issues/108#issuecomment-524217651)) + +### 3.0.0 (July 23, 2019) + - Fix typescript definition + - __BREAKING__: Switch to `@react-native-community/geolocation` library for iOS implementation (follow iOS setup instruction) + - Export `PositionError` constants + - Added `forceRequestLocation` flag to request location with only GPS enabled + +### 2.0.1 (May 5, 2019) + - Add typescript definition + +### 2.0.0 (December 2, 2018) + - Support RN 0.57+ + +### 1.1.0 (July 2, 2018) + - Added support for project wide gradle properties. + - Added support for tracking location update. + +### 1.0.4 (April 20, 2018) + - Fix crash due to illegal callback invocation. + - Added `showLocationDialog` option to control whether to show location dialog if it is disabled. diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/LICENSE b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/LICENSE new file mode 100644 index 0000000..f49caf8 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) +Copyright (c) 2018 Iftekhar Rifat + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/README.md b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/README.md new file mode 100644 index 0000000..b845bb3 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/README.md @@ -0,0 +1,133 @@ +# react-native-geolocation-service +React native geolocation service for iOS and android. + +# Why ? +This library is created in an attempt to fix the location timeout issue on android with the react-native's current implementation of Geolocation API. This library tries to solve the issue by using Google Play Service's new `FusedLocationProviderClient` API, which Google strongly recommends over android's default framework location API. It automatically decides which provider to use based on your request configuration and also prompts you to change the location mode if it doesn't satisfy your current request configuration. + +> NOTE: Location request can still timeout since many android devices have GPS issue in the hardware/system level. Check the [FAQ](#faq) for more details. + +# Installation +yarn +```bash +yarn add react-native-geolocation-service +``` + +npm +```bash +npm install react-native-geolocation-service +``` + +# Compatibility +| RN Version | Package Version | +| ---------- | --------------- | +| >=0.60 | >=3.0.0 | +| <0.60 | 2.0.0 | +| <0.57 | 1.1.0 | + +# Setup + - See [docs/setup.md](docs/setup.md) + - Check out example project + +# Usage +Since this library was meant to be a drop-in replacement for the RN's Geolocation API, the usage is pretty straight forward, with some extra error cases to handle. + +> One thing to note, for android this library assumes that location permission is already granted by the user, so you have to use `PermissionsAndroid` to request for permission before making the location request. + +```js +... +import Geolocation from 'react-native-geolocation-service'; +... + +componentDidMount() { + if (hasLocationPermission) { + Geolocation.getCurrentPosition( + (position) => { + console.log(position); + }, + (error) => { + // See error code charts below. + console.log(error.code, error.message); + }, + { enableHighAccuracy: true, timeout: 15000, maximumAge: 10000 } + ); + } +} +``` + +# API +#### `async requestAuthorization(authorizationLevel) (iOS only)` +Request location permission based on the authorizationLevel parameter. Can be either `"whenInUse"` or `"always"`. You have to configure the plist keys during setup. + +When promise resolves, returns the status of the authorization. +- `disabled` - Location service is disabled +- `granted` - Permission granted +- `denied` - Permission denied +- `restricted` - Permission restricted + +#### `getCurrentPosition(successCallback, ?errorCallback, ?options)` + - **successCallback**: Invoked with latest location info. + - **errorCallback**: Invoked whenever an error is encountered. + - **options**: + + | Name | Type | Default | Description | + | -- | -- | -- | -- | + | timeout | `ms` | `INFINITY` | Request timeout | + | maximumAge | `ms` | `INFINITY` | How long previous location will be cached | + | accuracy | `object` | `--` | {
   android: [Link](docs/accuracy.md#android),
   ios: [Link](docs/accuracy.md#ios)
}

If not provided or provided with invalid value, falls back to use `enableHighAccuracy` | + | enableHighAccuracy | `bool` | `false` | Use high accuracy mode + | distanceFilter | `m` | `0` | Minimum displacement in meters + | showLocationDialog | `bool` | `true` | Whether to ask to enable location in Android (android only) + | forceRequestLocation | `bool` | `false` | Force request location even after denying improve accuracy dialog (android only) + +#### `watchPosition(successCallback, ?errorCallback, ?options)` + - **successCallback**: Invoked with latest location info. + - **errorCallback**: Invoked whenever an error is encountered. + - **options**: + + | Name | Type | Default | Description | + | -- | -- | -- | -- | + | accuracy | `object` | `--` | {
   android: [Link](docs/accuracy.md#android),
   ios: [Link](docs/accuracy.md#ios)
}

If not provided or provided with invalid value, falls back to use `enableHighAccuracy` | + | enableHighAccuracy | `bool` | `false` | Use high accuracy mode + | distanceFilter | `m` | `100` | Minimum displacement between location updates in meters + | interval | `ms` | `10000` | Interval for active location updates (android only) + | fastestInterval | `ms` | `5000` | Fastest rate at which your application will receive location updates, which might be faster than `interval` in some situations (for example, if other applications are triggering location updates) (android only) + | showLocationDialog | `bool` | `true` | whether to ask to enable location in Android (android only) + | forceRequestLocation | `bool` | `false` | Force request location even after denying improve accuracy dialog (android only) + | useSignificantChanges | `bool` | false | Uses the battery-efficient native significant changes APIs to return locations. Locations will only be returned when the device detects a significant distance has been breached (iOS only) + | showsBackgroundLocationIndicator | `bool` | false | This setting enables a blue bar or a blue pill in the status bar on iOS. When the app moves to the background, the system uses this property to determine whether to change the status bar appearance to indicate that location services are in use. Users can tap the indicator to return to your app. (iOS only) + +#### `clearWatch(watchId)` + - watchId (id returned by `watchPosition`) + +#### `stopObserving()` +Stops observing for device location changes. In addition, it removes all listeners previously registered. + +# Error Codes +| Name | Code | Description | +| --- | --- | --- | +| PERMISSION_DENIED | 1 | Location permission is not granted | +| POSITION_UNAVAILABLE | 2 | Location provider not available | +| TIMEOUT | 3 | Location request timed out | +| PLAY_SERVICE_NOT_AVAILABLE | 4 | Google play service is not installed or has an older version (android only) | +| SETTINGS_NOT_SATISFIED | 5 | Location service is not enabled or location mode is not appropriate for the current request (android only) | +| INTERNAL_ERROR | -1 | Library crashed for some reason or the `getCurrentActivity()` returned null (android only) | + +# FAQ +1. **Location timeout still happening ?** + + Try the following steps: (Taken from [here](https://support.strava.com/hc/en-us/articles/216918967-Troubleshooting-GPS-Issues)) + - Turn phone off/on + - Turn GPS off/on + - Disable any battery saver settings, including Power Saving Mode, Battery Management or any third party apps + - Perform an "AGPS reset": Install the App GPS Status & Toolbox, then in that app, go to Menu > Tools > Manage A-GPS State > Reset + + Adjusting battery saver settings on different devices: + + - HTC: Access your phone settings > battery > power saving mode > battery optimization > select your app > don't optimize > save + - Huawei: Turn Energy Settings to Normal and add your app to "Protected Apps" + - LG If you're running Android 6 or higher: Settings > battery & power saving > battery usage > ignore optimizations > turn ON for your app + - Motorola If you're running Android 6 or higher: Battery > select the menu in the upper right-hand corner > battery optimization > not optimized > all apps > select your app > don't optimize + - OnePlus (using OxygenOS Settings): Battery > battery optimization > switch to 'all apps' > select your app > don't optimize + - Samsung: Access battery settings > app power saving > details > your app > disabled + - Sony If you're running Android 6 or higher: Battery > from the menu in the upper right-hand corner > battery optimization > apps > your app + - Xiaomi (MIUI OS) If you're running Android 6 or higher: Access your phone settings > additional settings > battery and performance > manage battery usage > apps > your app diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/index.d.ts b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/index.d.ts new file mode 100644 index 0000000..9f6c4e3 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/index.d.ts @@ -0,0 +1,98 @@ +declare module 'react-native-geolocation-service' { + export type AuthorizationLevel = 'always' | 'whenInUse' + + export type AuthorizationResult = 'disabled' | 'granted' | 'denied' | 'restricted' + + export type AccuracyIOS = + | 'bestForNavigation' + | 'best' + | 'nearestTenMeters' + | 'hundredMeters' + | 'kilometer' + | 'threeKilometers' + | 'reduced'; + + export type AccuracyAndroid = + | 'high' + | 'balanced' + | 'low' + | 'passive'; + + interface BaseOptions { + accuracy?: { + android?: AccuracyAndroid; + ios?: AccuracyIOS; + }; + enableHighAccuracy?: boolean + distanceFilter?: number + showLocationDialog?: boolean + forceRequestLocation?: boolean + } + + interface GeoOptions extends BaseOptions { + timeout?: number + maximumAge?: number + } + + interface GeoWatchOptions extends BaseOptions { + interval?: number + fastestInterval?: number + useSignificantChanges?: boolean + showsBackgroundLocationIndicator?: boolean + } + + export enum PositionError { + PERMISSION_DENIED = 1, + POSITION_UNAVAILABLE = 2, + TIMEOUT = 3, + PLAY_SERVICE_NOT_AVAILABLE = 4, + SETTINGS_NOT_SATISFIED = 5, + INTERNAL_ERROR = -1 + } + + export interface GeoError { + code: PositionError + message: string + } + + export interface GeoCoordinates { + latitude: number + longitude: number + accuracy: number + altitude: number | null + heading: number | null + speed: number | null + altitudeAccuracy: number | null + } + + export interface GeoPosition { + coords: GeoCoordinates + timestamp: number + mocked?: boolean; + } + + type SuccessCallback = (position: GeoPosition) => void + + type ErrorCallback = (error: GeoError) => void + + export function requestAuthorization( + authorizationLevel: AuthorizationLevel + ): Promise + + export function getCurrentPosition( + successCallback: SuccessCallback, + errorCallback?: ErrorCallback, + options?: GeoOptions + ): void + + export function watchPosition( + successCallback: SuccessCallback, + errorCallback?: ErrorCallback, + options?: GeoWatchOptions + ): number + + export function clearWatch(watchID: number): void + + export function stopObserving(): void +} + diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/js/Geolocation.js b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/js/Geolocation.js new file mode 100644 index 0000000..3fc7eba --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/js/Geolocation.js @@ -0,0 +1,46 @@ +/* eslint-disable no-undef */ +/* eslint-disable func-names */ +/* eslint-disable object-shorthand */ +const Geolocation = { + setRNConfiguration: function () { + throw new Error('Method not supported by browser'); + }, + + requestAuthorization: async function () { + return Promise.reject('Method not supported by browser'); + }, + + getCurrentPosition: function (success, error, options) { + if (!success) { + throw new Error('Must provide a success callback'); + } else if (!navigator || !navigator.geolocation) { + throw new Error('Navigator is not defined'); + } + + navigator.geolocation.getCurrentPosition(success, error, options); + }, + + watchPosition: function (success, error, options) { + if (!success) { + throw new Error('Must provide a success callback'); + } else if (!navigator || !navigator.geolocation) { + throw new Error('Navigator is not defined'); + } + + return navigator.geolocation.watchPosition(success, error, options); + }, + + clearWatch: function (watchID) { + if (!navigator || !navigator.geolocation) { + throw new Error('Navigator is not defined'); + } + + navigator.geolocation.clearWatch(watchID); + }, + + stopObserving: function () { + throw new Error('Method not supported by browser'); + } +}; + +export default Geolocation; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/js/Geolocation.native.js b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/js/Geolocation.native.js new file mode 100644 index 0000000..89ccb4f --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/js/Geolocation.native.js @@ -0,0 +1,114 @@ +import { NativeEventEmitter, NativeModules, Platform } from 'react-native'; + +const { RNFusedLocation } = NativeModules; +const LocationEventEmitter = new NativeEventEmitter(RNFusedLocation); + +const noop = () => {}; +let subscriptions = []; +let updatesEnabled = false; + +const Geolocation = { + setRNConfiguration: (config) => {}, // eslint-disable-line no-unused-vars + + requestAuthorization: async (authorizationLevel) => { + if (Platform.OS !== 'ios') { + return Promise.reject('requestAuthorization is only for iOS'); + } + + if (!authorizationLevel) { + // eslint-disable-next-line no-console + console.error('authorizationLevel must be provided'); + } + + return RNFusedLocation.requestAuthorization(authorizationLevel); + }, + + getCurrentPosition: (success, error = noop, options = {}) => { + if (!success) { + // eslint-disable-next-line no-console + console.error('Must provide a success callback'); + } + + // Right now, we're assuming user already granted location permission. + RNFusedLocation.getCurrentPosition(options, success, error); + }, + + watchPosition: (success, error = null, options = {}) => { + if (!success) { + // eslint-disable-next-line no-console + console.error('Must provide a success callback'); + } + + if (!updatesEnabled) { + RNFusedLocation.startObserving(options); + updatesEnabled = true; + } + + const watchID = subscriptions.length; + + subscriptions.push([ + LocationEventEmitter.addListener('geolocationDidChange', success), + error ? LocationEventEmitter.addListener('geolocationError', error) : null + ]); + + return watchID; + }, + + clearWatch: (watchID) => { + const sub = subscriptions[watchID]; + + if (!sub) { + // Silently exit when the watchID is invalid or already cleared + // This is consistent with timers + return; + } + + sub[0].remove(); + + const sub1 = sub[1]; + + if (sub1) { + sub1.remove(); + } + + subscriptions[watchID] = undefined; + + let noWatchers = true; + + for (let ii = 0; ii < subscriptions.length; ii += 1) { + if (subscriptions[ii]) { + noWatchers = false; // still valid subscriptions + } + } + + if (noWatchers) { + Geolocation.stopObserving(); + } + }, + + stopObserving: () => { + if (updatesEnabled) { + RNFusedLocation.stopObserving(); + updatesEnabled = false; + + for (let ii = 0; ii < subscriptions.length; ii += 1) { + const sub = subscriptions[ii]; + if (sub) { + // eslint-disable-next-line no-console + console.warn('Called stopObserving with existing subscriptions.'); + sub[0].remove(); + + const sub1 = sub[1]; + + if (sub1) { + sub1.remove(); + } + } + } + + subscriptions = []; + } + } +}; + +export default Geolocation; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/js/index.js b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/js/index.js new file mode 100644 index 0000000..c4881e7 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/js/index.js @@ -0,0 +1,12 @@ +import Geolocation from './Geolocation'; + +export const PositionError = Object.freeze({ + PERMISSION_DENIED: 1, + POSITION_UNAVAILABLE: 2, + TIMEOUT: 3, + PLAY_SERVICE_NOT_AVAILABLE: 4, + SETTINGS_NOT_SATISFIED: 5, + INTERNAL_ERROR: -1 +}); + +export default Geolocation; diff --git a/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/package.json b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/package.json new file mode 100644 index 0000000..56ae224 --- /dev/null +++ b/javascriptsource/nanoflowcommons/actions/node_modules/react-native-geolocation-service/package.json @@ -0,0 +1,49 @@ +{ + "name": "react-native-geolocation-service", + "version": "5.2.0", + "description": "React native geolocation service for iOS and android", + "main": "js/index.js", + "scripts": { + "precommit": "lint-staged" + }, + "keywords": [ + "react-native", + "react", + "native", + "fused", + "location", + "geolocation", + "android", + "ios" + ], + "author": { + "name": "Iftekhar Rifat", + "email": "rifat662@gmail.com", + "url": "https://github.com/Agontuk" + }, + "license": "MIT", + "homepage": "https://github.com/Agontuk/react-native-geolocation-service", + "repository": { + "type": "git", + "url": "https://github.com/Agontuk/react-native-geolocation-service" + }, + "dependencies": {}, + "devDependencies": { + "babel-eslint": "^7.2.3", + "eslint": "^4.4.1", + "eslint-config-airbnb": "^15.1.0", + "eslint-plugin-import": "^2.7.0", + "eslint-plugin-jsx-a11y": "^6.0.2", + "eslint-plugin-react": "^7.1.0", + "husky": "^0.14.3", + "lint-staged": "^4.0.3", + "react": "16.5.0", + "react-native": "0.57.0" + }, + "lint-staged": { + "*.js": [ + "eslint", + "git add" + ] + } +} diff --git a/javascriptsource/webactions/.version b/javascriptsource/webactions/.version new file mode 100644 index 0000000..f161b5d --- /dev/null +++ b/javascriptsource/webactions/.version @@ -0,0 +1 @@ +2.10.0 \ No newline at end of file diff --git a/javascriptsource/webactions/LICENSE b/javascriptsource/webactions/LICENSE new file mode 100644 index 0000000..51dfbf5 --- /dev/null +++ b/javascriptsource/webactions/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2020 Mendix Technology BV + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/javascriptsource/webactions/actions/FocusHelper.js b/javascriptsource/webactions/actions/FocusHelper.js new file mode 100644 index 0000000..68a7273 --- /dev/null +++ b/javascriptsource/webactions/actions/FocusHelper.js @@ -0,0 +1,322 @@ +export function setFocus(element) { + clearSelection(); + element.focus(); + selectText(element); +} + +function clearSelection() { + // This is necessary for IE and Edge + const selection = document.getSelection(); + if (selection === null || isEmptySelection(selection)) { + // Prevent IE11 from switching focus to document.body unless absolutely necessary + return; + } + selection.removeAllRanges(); + selection.addRange(document.createRange()); +} + +function isEmptySelection(selection) { + if (selection.rangeCount === 1) { + const range = selection.getRangeAt(0); + return range.startOffset === range.endOffset; + } + return selection.rangeCount === 0; +} + +function selectText(element) { + const input = element; + if (input.type === "text" || input.type === "password") { + input.select(); + } +} + +export function getFocus() { + const activeElement = document.activeElement && getHTMLElement(document.activeElement); + return activeElement !== document.body ? activeElement : null; +} + +export function clearFocus() { + const current = getFocus(); + if (current) { + current.blur(); + } +} + +export function focusFirst(container) { + const first = findFirst(container); + if (first) { + setFocus(first); + } +} + +export function focusNext() { + const next = findNext(getFocus()); + if (next) { + setFocus(next); + } +} + +export function findFirst(container) { + return findNextInContainer(container, false); +} + +export function findNext(target, reverse = false) { + var _a; + const element = target && getHTMLElement(target); + const next = () => element && findNextNonWrapping(element, reverse); + const wrapAround = () => { + var _a; + return findNextNonWrapping( + (_a = getFocusCapturingRoot(element)) !== null && _a !== void 0 ? _a : document.body, + reverse + ); + }; + return (_a = next()) !== null && _a !== void 0 ? _a : wrapAround(); +} + +function findNextNonWrapping(element, reverse = false) { + const focusRoot = getFocusRoot(element); + let current; + if (!focusRoot.contains(element)) { + if (isFocusable(focusRoot)) { + return focusRoot; + } + current = focusRoot; + } else { + current = element; + } + let found; + if (!reverse && isFocusContext(current) && !skipContainer(current)) { + found = findNextInContainer(current, !!reverse); + if (found) { + return found; + } + } + do { + const context = findFocusContext(current, focusRoot); + found = findNextInContainer(context, !!reverse, current); + if (found) { + return found; + } + if (reverse && isFocusable(context)) { + return context; + } + current = context; + } while (current !== focusRoot); + return null; +} + +const FOCUS_CONTEXT_ATTRIBUTE = "data-focusindex"; +const FOCUS_CAPTURING_ATTRIBUTE = "data-focus-capturing"; +const FOCUS_CAPTURING_MODAL = "modal"; +const FOCUS_CAPTURING_NON_MODAL = "non-modal"; + +function findFocusContext(element, focusRoot) { + if (element === focusRoot) { + return focusRoot; + } + let current = element; + while (current !== focusRoot && current.parentElement) { + current = current.parentElement; + if (isFocusContext(current)) { + return current; + } + } + return focusRoot; +} + +function getFocusRoot(element) { + var _a; + const capturingRoot = getFocusCapturingRoot(element); + if (!capturingRoot) { + // We're outside all focus capturing elements, e.g. in a floating popup + return document.body; + } + return (_a = getModalFocusRoot()) !== null && _a !== void 0 ? _a : capturingRoot; +} + +function getModalFocusRoot() { + const focusRoots = document.querySelectorAll(`[${FOCUS_CAPTURING_ATTRIBUTE}=${FOCUS_CAPTURING_MODAL}]`); + const focusRoot = focusRoots.length ? focusRoots[focusRoots.length - 1] : null; + return focusRoot && isHTMLElement(focusRoot) ? focusRoot : null; +} + +function getFocusCapturingRoot(element) { + if (!element || element === document.body) { + return document.body; + } + let current = element; + while (current && isHTMLElement(current)) { + const captureMode = current.getAttribute(FOCUS_CAPTURING_ATTRIBUTE); + if (captureMode === FOCUS_CAPTURING_MODAL || captureMode === FOCUS_CAPTURING_NON_MODAL) { + return current; + } + current = current.parentElement; + } + return null; +} + +function findNextInContainer(container, reverse, afterElement) { + const startTabIndex = afterElement && afterElement !== container ? getEffectiveTabIndex(afterElement) : undefined; + const candidates = gatherDescendants(container); + const tabIndices = Object.keys(candidates) + .map(s => parseInt(s, 10)) + .filter(tabIndexFilter(startTabIndex, reverse)) + .sort(compareTabIndex); + if (reverse) { + tabIndices.reverse(); + } + for (const tabIndex of tabIndices) { + let array = candidates[tabIndex]; + if (array !== undefined) { + if (reverse) { + array.reverse(); + } + if (tabIndex === startTabIndex) { + array = array.slice(array.indexOf(afterElement) + 1); + } + const candidate = findNextInArray(array, reverse); + if (candidate) { + return candidate; + } + } + } + return null; +} + +function findNextInArray(array, reverse) { + for (const element of array) { + if (!reverse && isFocusable(element)) { + return element; + } + if (isFocusContext(element) && !skipContainer(element)) { + const candidate = findNextInContainer(element, reverse); + if (candidate) { + return candidate; + } + } + if (reverse && isFocusable(element)) { + return element; + } + } + return null; +} + +function gatherDescendants(e, output = {}) { + for (let i = 0; i < e.children.length; i++) { + const child = e.children.item(i); + if (!isHTMLElement(child)) { + continue; + } + const tabIndex = getEffectiveTabIndex(child); + const elements = (output[tabIndex] = tabIndex in output ? output[tabIndex] : []); + elements.push(child); + if (!isFocusContext(child)) { + gatherDescendants(child, output); + } + } + return output; +} + +function tabIndexFilter(startTabIndex, reverse) { + return startTabIndex === undefined + ? () => true + : reverse + ? t => compareTabIndex(t, startTabIndex) <= 0 + : t => compareTabIndex(t, startTabIndex) >= 0; +} + +function compareTabIndex(a, b) { + return a === b ? 0 : a === 0 ? 1 : b === 0 ? -1 : a - b; +} + +function isFocusContext(element) { + return element === document.body || element.getAttribute(FOCUS_CONTEXT_ATTRIBUTE) !== null; +} + +function getEffectiveTabIndex(element) { + const focusIndex = getIntAttribute(element, FOCUS_CONTEXT_ATTRIBUTE); + const tabIndexValue = focusIndex !== null ? focusIndex : getTabIndex(element); + // An element with tabindex -1 is placed within the natural order of elements with effective tabindex 0 + return Math.max(0, tabIndexValue !== null && tabIndexValue !== void 0 ? tabIndexValue : 0); +} + +function getTabIndex(element) { + const tabIndex = getIntAttribute(element, "tabindex"); + return tabIndex !== -32768 ? tabIndex : null; // -32768 is returned by IE/Edge for tabindex="" :( +} + +function getIntAttribute(element, attribute) { + const value = element.getAttribute(attribute); + return value ? parseInt(value, 10) : null; +} + +function skipContainer(element) { + return element.getAttribute(FOCUS_CONTEXT_ATTRIBUTE) === "-1"; +} + +export function isFocusable(element) { + return isNavigableElement(element) && isInteractive(element); +} + +export function isNavigableElement(element) { + if (skipContainer(element)) { + return false; + } + const tabIndex = getTabIndex(element); + return (tabIndex === null ? getDefaultTabIndex(element) : tabIndex) >= 0; +} + +export function getFocusableContainer(target) { + let element = getHTMLElement(target); + while (element) { + if (getTabIndex(element) !== null || getDefaultTabIndex(element) === 0) { + return element; + } + element = element.parentElement; + } + return null; +} + +function getDefaultTabIndex(element) { + // We have to check this ourselves, because IE and Edge return the wrong default value for the tabIndex JS property. + switch (element.tagName.toLowerCase()) { + case "a": + case "area": + case "button": + case "input": + case "object": + case "select": + case "textarea": + return 0; + default: + return element.getAttribute("contenteditable") ? 0 : -1; + } +} + +export function isInteractive(element) { + return isVisible(element) && isEnabled(element); +} + +function isVisible(element) { + if (element.offsetWidth === 0 && element.offsetHeight === 0) { + return false; + } + return window.getComputedStyle(element).visibility === "visible"; +} + +function isEnabled(element) { + return !element.disabled; +} + +export function getHTMLElement(target) { + return isHTMLElement(target) ? target : isNode(target) ? target.parentElement : null; +} + +function isNode(target) { + return target.parentElement !== undefined; +} + +export function isHTMLElement(target) { + return target.offsetParent !== undefined; +} diff --git a/javascriptsource/webactions/actions/FocusNext.js b/javascriptsource/webactions/actions/FocusNext.js new file mode 100644 index 0000000..3ad313b --- /dev/null +++ b/javascriptsource/webactions/actions/FocusNext.js @@ -0,0 +1,23 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import { focusNext } from "./FocusHelper"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Move the keyboard focus to the next element that can be focused. + * @returns {Promise.} + */ +export async function FocusNext() { + // BEGIN USER CODE + focusNext(); + return Promise.resolve(); + // END USER CODE +} diff --git a/javascriptsource/webactions/actions/FocusPrevious.js b/javascriptsource/webactions/actions/FocusPrevious.js new file mode 100644 index 0000000..4e27285 --- /dev/null +++ b/javascriptsource/webactions/actions/FocusPrevious.js @@ -0,0 +1,29 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import { findNext, getFocus, setFocus } from "./FocusHelper"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Move the keyboard focus to the previous element that can be focused. + * @returns {Promise.} + */ +export async function FocusPrevious() { + // BEGIN USER CODE + function focusPrevious() { + const previous = findNext(getFocus(), true); + if (previous) { + setFocus(previous); + } + } + focusPrevious(); + return Promise.resolve(); + // END USER CODE +} diff --git a/javascriptsource/webactions/actions/ReadCookie.js b/javascriptsource/webactions/actions/ReadCookie.js new file mode 100644 index 0000000..b61c418 --- /dev/null +++ b/javascriptsource/webactions/actions/ReadCookie.js @@ -0,0 +1,23 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * @param {string} key + * @returns {Promise.} + */ +export async function ReadCookie(key) { + // BEGIN USER CODE + const entry = document.cookie.split("; ").find(row => row.startsWith(`${key}=`)); + const value = entry ? entry.split("=")[1] : undefined; + return value ? value : ""; + // END USER CODE +} diff --git a/javascriptsource/webactions/actions/ScrollTo.js b/javascriptsource/webactions/actions/ScrollTo.js new file mode 100644 index 0000000..30312f9 --- /dev/null +++ b/javascriptsource/webactions/actions/ScrollTo.js @@ -0,0 +1,31 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Scroll the window to make targeted element visible + * @param {string} targetSelector - Selector to reach the element to be scrolled to. Examples: .warning to scroll to an element with the class warning, or .mx-name-textBox1 to scroll to a text box with the class mx-name-textBox1 (and name textBox1). + * @returns {Promise.} + */ +export async function ScrollTo(targetSelector) { + // BEGIN USER CODE + const element = document.querySelector(targetSelector); + if (element) { + element.scrollIntoView({ + behavior: "smooth", + block: "start", + inline: "nearest" + }); + } else { + console.log("no item found"); + } + // END USER CODE +} diff --git a/javascriptsource/webactions/actions/SetCookie.js b/javascriptsource/webactions/actions/SetCookie.js new file mode 100644 index 0000000..db44f1a --- /dev/null +++ b/javascriptsource/webactions/actions/SetCookie.js @@ -0,0 +1,26 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * @param {string} key + * @param {string} value + * @returns {Promise.} + */ +export async function SetCookie(key, value) { + // BEGIN USER CODE + try { + document.cookie = key + "=" + value + ";"; + } catch (e) { + console.error(e); + } + // END USER CODE +} diff --git a/javascriptsource/webactions/actions/SetFavicon.js b/javascriptsource/webactions/actions/SetFavicon.js new file mode 100644 index 0000000..3756d4b --- /dev/null +++ b/javascriptsource/webactions/actions/SetFavicon.js @@ -0,0 +1,56 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +function cloneWithNewUrl(link, href) { + const target = link.cloneNode(); + const search = new URL(link.href).search; + target.href = href; + const targetHref = new URL(target.href); + targetHref.search = search; + target.href = targetHref.toString(); + return target; +} +// END EXTRA CODE + +/** + * @param {string} iconUrl16x16 + * @param {string} iconUrl32x32 + * @param {string} appleTouchIconUrl + * @returns {Promise.} + */ +export async function SetFavicon(iconUrl16x16, iconUrl32x32, appleTouchIconUrl) { + // BEGIN USER CODE + const entries = [ + ['link[rel="icon"][sizes="16x16"]', iconUrl16x16, "16x16"], + ['link[rel="icon"][sizes="32x32"]', iconUrl32x32, "32x32"], + ['link[rel="apple-touch-icon"]', appleTouchIconUrl] + ]; + const links = entries.reduce((acc, [selector, href, sizes]) => { + const element = document.querySelector(selector); + if (element) { + acc.push(cloneWithNewUrl(element, href)); + element.remove(); + } else { + const link = document.createElement("link"); + link.href = href; + const bypassCacheHref = new URL(link.href); + bypassCacheHref.search = "v" + Date.now(); + link.href = bypassCacheHref.toString(); + link.rel = "icon"; + if (sizes) { + link.sizes = sizes; + } + acc.push(link); + } + return acc; + }, []); + document.head.append(...links); + // END USER CODE +} diff --git a/javascriptsource/webactions/actions/SetFocus.js b/javascriptsource/webactions/actions/SetFocus.js new file mode 100644 index 0000000..fcf6046 --- /dev/null +++ b/javascriptsource/webactions/actions/SetFocus.js @@ -0,0 +1,33 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; +import { isFocusable, focusFirst, setFocus } from "./FocusHelper"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Set focus to the element found with the selector, The element should be able to hold focus like a link, button, or input. + * @param {string} targetSelector - Selector to reach the element to give focus. Examples: .warning to scroll to focus element with the class warning, or .mx-name-textBox1 to focus to a text box with the class mx-name-textBox1 (and name textBox1). + * @returns {Promise.} + */ +export async function SetFocus(targetSelector) { + // BEGIN USER CODE + const targetNode = targetSelector ? document.querySelector(targetSelector) : null; + if (targetNode) { + if (isFocusable(targetNode)) { + setFocus(targetNode); + } else { + // If the target is not focusable, select the first focusable within + focusFirst(targetNode); + } + } else { + console.warn(`No DOM node found to set focus for query selector ${targetSelector}`); + } + // END USER CODE +} diff --git a/javascriptsource/webactions/actions/TakePicture.js b/javascriptsource/webactions/actions/TakePicture.js new file mode 100644 index 0000000..f97e54f --- /dev/null +++ b/javascriptsource/webactions/actions/TakePicture.js @@ -0,0 +1,412 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +import { Big } from "big.js"; + +// BEGIN EXTRA CODE +// END EXTRA CODE + +/** + * Take a picture using the device's camera. + * @param {MxObject} picture - This is required. + * @param {boolean} showConfirmationScreen + * @param {"WebActions.PictureQuality.original"|"WebActions.PictureQuality.low"|"WebActions.PictureQuality.medium"|"WebActions.PictureQuality.high"|"WebActions.PictureQuality.custom"} pictureQuality - The default picture quality is 'Medium'. + * @param {Big} maximumWidth - The picture will be scaled to this maximum pixel width, while maintaining the aspect ratio. + * @param {Big} maximumHeight - The picture will be scaled to this maximum pixel height, while maintaining the aspect ratio. + * @returns {Promise.} + */ +export async function TakePicture(picture, showConfirmationScreen, pictureQuality, maximumWidth, maximumHeight) { + // BEGIN USER CODE + const CAMERA_POSITION = { + BACK_CAMERA: "environment", + FRONT_CAMERA: "user" + }; + const getUserText = prepareLanguage(); + if (!picture) { + return Promise.reject(new Error("Input parameter 'Picture' is required.")); + } + if (!picture.inheritsFrom("System.Image")) { + return Promise.reject(new Error(`Entity ${picture.getEntity()} does not inherit from 'System.Image'.`)); + } + if (!("mediaDevices" in navigator) || !("getUserMedia" in navigator.mediaDevices)) { + return Promise.reject(new Error("Media devices are not supported.")); + } + if (pictureQuality === "custom" && !maximumHeight && !maximumWidth) { + return Promise.reject( + new Error("Picture quality is set to 'Custom', but no maximum width or height was provided") + ); + } + // TODO: WC-463 rollup has a bug where comments are removed from the top of files, disallowing imports between "extra code" comments. Until this is fixed, SVGs are manually encoded and added here. + const closeSVG = + "PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xOC4yMjIyIDE2LjAwMDNMMjYuNTM5NyA3LjY4MjhDMjcuMTU0MSA3LjA2ODM4IDI3LjE1NDEgNi4wNzUyNCAyNi41Mzk3IDUuNDYwODJDMjUuOTI1MyA0Ljg0NjM5IDI0LjkzMjEgNC44NDYzOSAyNC4zMTc3IDUuNDYwODJMMTYuMDAwMiAxMy43NzgzTDcuNjgyNzkgNS40NjA4MkM3LjA2ODM3IDQuODQ2MzkgNi4wNzUyNCA0Ljg0NjM5IDUuNDYwODIgNS40NjA4MkM0Ljg0NjM5IDYuMDc1MjQgNC44NDYzOSA3LjA2ODM4IDUuNDYwODIgNy42ODI4TDEzLjc3ODMgMTYuMDAwM0w1LjQ2MDgyIDI0LjMxNzhDNC44NDYzOSAyNC45MzIzIDQuODQ2MzkgMjUuOTI1NCA1LjQ2MDgyIDI2LjUzOThDNS43NjcyNCAyNi44NDYzIDYuMTY5NTIgMjcuMDAwMyA2LjU3MTggMjcuMDAwM0M2Ljk3NDA4IDI3LjAwMDMgNy4zNzYzNiAyNi44NDYzIDcuNjgyNzkgMjYuNTM5OEwxNi4wMDAyIDE4LjIyMjNMMjQuMzE3NyAyNi41Mzk4QzI0LjYyNDEgMjYuODQ2MyAyNS4wMjY0IDI3LjAwMDMgMjUuNDI4NyAyNy4wMDAzQzI1LjgzMSAyNy4wMDAzIDI2LjIzMzMgMjYuODQ2MyAyNi41Mzk3IDI2LjUzOThDMjcuMTU0MSAyNS45MjU0IDI3LjE1NDEgMjQuOTMyMyAyNi41Mzk3IDI0LjMxNzhMMTguMjIyMiAxNi4wMDAzWiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="; + const syncSVG = + "PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS45OTk5IDVDMTIuNzA5MyA1IDkuNzU0NzQgNi40NDQ1NCA3LjczNzY2IDguNzM3NjJMMTAuMTQ2NCAxMS4xNDY0QzEwLjQ2MTQgMTEuNDYxNCAxMC4yMzgzIDEyIDkuNzkyOSAxMkgyLjVDMi4yMjM4NiAxMiAyIDExLjc3NjEgMiAxMS41VjQuMjA3MDZDMiAzLjc2MTYgMi41Mzg1OCAzLjUzODUyIDIuODUzNTYgMy44NTM1TDUuNjEzMiA2LjYxMzE2QzguMTczOTIgMy43ODE1IDExLjg3ODIgMiAxNS45OTk5IDJDMjMuMTY0NCAyIDI5LjA3MDIgNy4zODA0MiAyOS45MDAyIDE0LjMyMTlDMjkuOTk4NiAxNS4xNDQ0IDI5LjQxMTYgMTUuODkxIDI4LjU4OSAxNS45ODk0QzI3Ljc2NjQgMTYuMDg3OCAyNy4wMTk4IDE1LjUwMDcgMjYuOTIxNCAxNC42NzgxQzI2LjI2OTYgOS4yMjY5IDIxLjYyNzIgNSAxNS45OTk5IDVaTTMuNDEwOSAxNi4wMTA2QzQuMjMzNDYgMTUuOTEyMiA0Ljk4MDAyIDE2LjQ5OTMgNS4wNzg0IDE3LjMyMTlDNS43MzAzMiAyMi43NzMgMTAuMzcyNiAyNyAxNS45OTk5IDI3QzE5LjI5MDYgMjcgMjIuMjQ1MiAyNS41NTU0IDI0LjI2MjIgMjMuMjYyNEwyMS44NTM2IDIwLjg1MzZDMjEuNTM4NiAyMC41Mzg2IDIxLjc2MTYgMjAgMjIuMjA3MiAyMEgyOS41QzI5Ljc3NjIgMjAgMzAgMjAuMjI0IDMwIDIwLjVWMjcuNzkzQzMwIDI4LjIzODQgMjkuNDYxNCAyOC40NjE0IDI5LjE0NjQgMjguMTQ2NEwyNi4zODY4IDI1LjM4NjhDMjMuODI2IDI4LjIxODQgMjAuMTIxNiAzMCAxNS45OTk5IDMwQzguODM1NDIgMzAgMi45Mjk3OCAyNC42MTk2IDIuMDk5NjIgMTcuNjc4MUMyLjAwMTI2IDE2Ljg1NTYgMi41ODgzNCAxNi4xMDkgMy40MTA5IDE2LjAxMDZaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K"; + const cameraButtonSVG = + "PHN2ZyB3aWR0aD0iNzAiIGhlaWdodD0iNzAiIHZpZXdCb3g9IjAgMCA3MCA3MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMzUiIGN5PSIzNSIgcj0iMzUiIGZpbGw9IndoaXRlIi8+CjxjaXJjbGUgY3g9IjM1IiBjeT0iMzUiIHI9IjI4IiBmaWxsPSJ3aGl0ZSIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSIyIi8+Cjwvc3ZnPgo="; + const saveSVG = + "PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTI5Ljc1ODMgNS4zOTY5NEMzMC40MDY5IDUuOTczNTMgMzAuNDY1NCA2Ljk2Njc5IDI5Ljg4ODggNy42MTU0NEwxMy4xMjY5IDI2LjQ3MjZDMTIuODI4NyAyNi44MDgxIDEyLjQwMTIgMjcgMTEuOTUyNCAyN0MxMS41MDM1IDI3IDExLjA3NjEgMjYuODA4MSAxMC43Nzc5IDI2LjQ3MjZMMi4zOTY5NCAxNy4wNDRDMS44MjAzNiAxNi4zOTUzIDEuODc4NzkgMTUuNDAyMSAyLjUyNzQ0IDE0LjgyNTVDMy4xNzYxIDE0LjI0ODkgNC4xNjkzNiAxNC4zMDc0IDQuNzQ1OTQgMTQuOTU2TDExLjk1MjQgMjMuMDYzM0wyNy41Mzk4IDUuNTI3NDRDMjguMTE2NCA0Ljg3ODc5IDI5LjEwOTYgNC44MjAzNiAyOS43NTgzIDUuMzk2OTRaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K"; + // eslint-disable-next-line no-async-promise-executor + return new Promise(async (resolve, reject) => { + let error; + let stream; + let videoIsReady = false; + let shouldFaceEnvironment = true; + const { + video, + wrapper, + actionControl, + switchControl, + closeControl, + createAction, + controlsWrapper, + createActionAndSwitch, + addAllControlButtons, + removeAllControlButtons + } = createFirstScreenElements(); + document.body.appendChild(wrapper); + await startCamera(CAMERA_POSITION.BACK_CAMERA); + const { handler: takePictureHandler, cleanup: secondScreenCleanup } = prepareSecondScreen(); + if (await hasMultipleCameras()) { + controlsWrapper.classList.add("take-picture-action-switch-control-wrapper"); + createActionAndSwitch(); + } else { + controlsWrapper.classList.add("take-picture-action-control-wrapper"); + createAction(); + } + closeControl.addEventListener("click", () => { + closeControlHandler(); + secondScreenCleanup(); + resolve(false); + }); + switchControl.addEventListener("click", switchControlHandler); + actionControl.addEventListener("click", () => { + removeAllControlButtons(); + if (showConfirmationScreen) { + // Delay the `takePictureHandler` to the next cycle so the UI preparations can go first. Otherwise, the control-buttons are not removed while the second screen is being set up. + setTimeout(() => { + takePictureHandler(() => { + addAllControlButtons(); + video.play(); + }); + }, 0); + } else { + video.pause(); + const videoCanvas = getVideoCanvas(); + savePicture(videoCanvas, () => { + videoCanvas.remove(); + closeControlHandler(); + }); + } + }); + video.addEventListener("loadedmetadata", () => (videoIsReady = true)); + function getVideoCanvas() { + const videoCanvas = document.createElement("canvas"); + videoCanvas.height = video.videoHeight; + videoCanvas.width = video.videoWidth; + const videoContext = videoCanvas.getContext("2d"); + videoContext === null || videoContext === void 0 ? void 0 : videoContext.drawImage(video, 0, 0); + return videoCanvas; + } + function createFirstScreenElements() { + const wrapper = document.createElement("div"); + wrapper.setAttribute("role", "dialog"); + wrapper.setAttribute("aria-labelledby", "take-picture-modal-label"); + wrapper.classList.add("take-picture-wrapper"); + const video = document.createElement("video"); + video.classList.add("take-picture-video-element"); + video.setAttribute("autoplay", ""); + video.setAttribute("muted", ""); + video.setAttribute("playsinline", ""); + const controlsWrapper = document.createElement("div"); + const closeControlWrapper = document.createElement("div"); + closeControlWrapper.classList.add("take-picture-close-control-wrapper"); + const actionControl = document.createElement("button"); + actionControl.setAttribute("aria-label", getUserText("Take picture", "Foto nemen")); + actionControl.classList.add("take-picture-action-control"); + const actionControlWrapper = document.createElement("div"); + actionControlWrapper.classList.add("take-picture-action-spacing"); + const switchControl = document.createElement("button"); + switchControl.setAttribute("aria-label", getUserText("Switch camera", "Van camera wisselen")); + switchControl.classList.add("take-picture-switch-control"); + const switchControlWrapper = document.createElement("div"); + switchControlWrapper.classList.add("take-picture-switch-spacing"); + const closeControl = document.createElement("button"); + closeControl.setAttribute("aria-label", getUserText("Close", "Afsluiten")); + closeControl.classList.add("take-picture-close-control"); + const closeImg = document.createElement("img"); + closeImg.src = `data:image/svg+xml;base64,${closeSVG}`; + const switchImg = document.createElement("img"); + switchImg.src = `data:image/svg+xml;base64,${syncSVG}`; + const takePictureImg = document.createElement("img"); + takePictureImg.src = `data:image/svg+xml;base64,${cameraButtonSVG}`; + closeControl.appendChild(closeImg); + switchControl.appendChild(switchImg); + actionControl.appendChild(takePictureImg); + function createActionAndSwitch() { + const spacingDiv = document.createElement("div"); + spacingDiv.classList.add("take-picture-spacing-div"); + actionControlWrapper.appendChild(actionControl); + switchControlWrapper.appendChild(switchControl); + controlsWrapper.appendChild(spacingDiv); + controlsWrapper.appendChild(actionControlWrapper); + controlsWrapper.appendChild(switchControlWrapper); + } + closeControlWrapper.appendChild(closeControl); + function addAllControlButtons() { + wrapper.appendChild(controlsWrapper); + wrapper.appendChild(closeControlWrapper); + } + function removeAllControlButtons() { + wrapper.removeChild(controlsWrapper); + wrapper.removeChild(closeControlWrapper); + } + addAllControlButtons(); + wrapper.appendChild(video); + return { + video, + wrapper, + controlsWrapper, + actionControl, + switchControl, + closeControl, + createActionAndSwitch, + createAction: () => controlsWrapper.appendChild(actionControl), + addAllControlButtons, + removeAllControlButtons + }; + } + function prepareSecondScreen() { + let confirmationWrapper; + return { + handler: onResumeFirstScreen => { + if (videoIsReady) { + confirmationWrapper = document.createElement("div"); + confirmationWrapper.classList.add("take-picture-confirm-wrapper"); + video.pause(); + // Element to retrieve the blob from mediaStream (not rendered on the screen) + const videoCanvas = getVideoCanvas(); + const pictureImg = document.createElement("img"); + pictureImg.classList.add("take-picture-image"); + pictureImg.src = videoCanvas.toDataURL(); + const buttonWrapper = document.createElement("div"); + buttonWrapper.classList.add("take-picture-button-wrapper"); + const saveBtn = document.createElement("button"); + saveBtn.setAttribute("aria-label", getUserText("Save", "Opslaan")); + saveBtn.classList.add("take-picture-save-control"); + const saveImg = document.createElement("img"); + saveImg.src = `data:image/svg+xml;base64,${saveSVG}`; + saveBtn.appendChild(saveImg); + const closeBtn = document.createElement("button"); + closeBtn.setAttribute("aria-label", getUserText("Close", "Afsluiten")); + closeBtn.classList.add("take-picture-close-control"); + const closeImg = document.createElement("img"); + closeImg.src = `data:image/svg+xml;base64,${closeSVG}`; + closeBtn.appendChild(closeImg); + buttonWrapper.appendChild(closeBtn); + buttonWrapper.appendChild(saveBtn); + confirmationWrapper.appendChild(buttonWrapper); + confirmationWrapper.appendChild(pictureImg); + document.body.appendChild(confirmationWrapper); + saveBtn.addEventListener("click", () => { + confirmationWrapper.removeChild(buttonWrapper); + savePicture(videoCanvas, () => { + closeControlHandler(); + cleanupConfirmationElements(); + }); + }); + closeBtn.addEventListener("click", () => { + cleanupConfirmationElements(); + onResumeFirstScreen(); + }); + // eslint-disable-next-line no-inner-declarations + function cleanupConfirmationElements() { + document.body.removeChild(confirmationWrapper); + videoCanvas.remove(); + } + } + }, + cleanup: () => { + try { + document.body.removeChild(confirmationWrapper); + } catch (e) { + // silently handle case where node already removed. + } + } + }; + } + async function switchControlHandler() { + if (!stream) { + return; + } + stopCamera(); + if (await hasMultipleCameras()) { + shouldFaceEnvironment = !shouldFaceEnvironment; + } + await startCamera(shouldFaceEnvironment ? CAMERA_POSITION.BACK_CAMERA : CAMERA_POSITION.FRONT_CAMERA); + } + function closeControlHandler() { + stopCamera(); + document.body.removeChild(wrapper); + } + async function startCamera(facingMode) { + var _a; + try { + stream = await navigator.mediaDevices.getUserMedia({ + video: Object.assign({ facingMode }, getCameraQuality()) + }); + (_a = stream === null || stream === void 0 ? void 0 : stream.getTracks()) === null || _a === void 0 + ? void 0 + : _a.forEach(track => { + track.addEventListener("ended", () => { + closeControlHandler(); + reject(new Error("Video stream unexpectedly ended.")); + }); + }); + } catch (e) { + if (e instanceof Error) { + switch (e.name) { + case "NotAllowedError": + error = getUserText("Permission denied.", "Geen toestemming."); + break; + case "NotFoundError": + error = getUserText("Media not available.", "Media niet beschikbaar."); + break; + case "NotReadableError": + error = getUserText( + "Media not available, is it already in use elsewhere?", + "Media niet beschikbaar, wordt deze al ergens anders gebruikt?" + ); + break; + default: + error = e.message; + break; + } + } + } + if (error) { + closeControlHandler(); + mx.ui.error(error); + resolve(false); + } + if (stream) { + video.srcObject = stream; + } + } + function stopCamera() { + videoIsReady = false; + const tracks = stream === null || stream === void 0 ? void 0 : stream.getTracks(); + tracks === null || tracks === void 0 + ? void 0 + : tracks.forEach(track => { + track.stop(); + }); + stream = undefined; + } + function savePicture(videoCanvas, onSuccess) { + const progressId = mx.ui.showProgress(); + const filename = `device-camera-picture-${new Date().getTime()}.png`; // `toBlob` defaults to PNG. + new Promise((resolve, reject) => { + videoCanvas.toBlob(blob => { + if (blob) { + resolve(blob); + } else { + mx.ui.hideProgress(progressId); + reject(new Error("Couldn't save picture, please try again.")); + } + }); + }) + .then(blob => { + mx.data.saveDocument( + picture.getGuid(), + filename, + {}, + blob, + () => { + picture.set("Name", filename); + mx.data.commit({ + mxobj: picture, + callback: () => { + mx.ui.hideProgress(progressId); + onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(); + resolve(true); + }, + error: error => { + mx.ui.hideProgress(progressId); + reject( + new Error( + `An error occurred while trying to save the file${ + error.message ? `: ${error.message}` : "" + }. Please try again.` + ) + ); + } + }); + }, + error => { + mx.ui.hideProgress(progressId); + reject( + new Error( + `An error occurred while trying to save the file${ + error.message ? `: ${error.message}` : "" + }. Please try again.` + ) + ); + } + ); + }) + .catch(message => { + mx.ui.hideProgress(progressId); + reject(new Error(message)); + }); + } + function getCameraQuality() { + switch (pictureQuality) { + case "low": + return { + width: { ideal: 1024 }, + height: { ideal: 1024 } + }; + case "medium": + default: + return { + width: { ideal: 2048 }, + height: { ideal: 2048 } + }; + case "high": + return { + width: { ideal: 4096 }, + height: { ideal: 4096 } + }; + case "custom": + return { + width: { ideal: Number(maximumWidth) }, + height: { ideal: Number(maximumHeight) } + }; + } + } + }); + function prepareLanguage() { + const englishFn = english => english; + try { + return mx.session.sessionData.locale.code.toLowerCase().includes("en") + ? englishFn + : (_english, dutch) => dutch; + } catch (_) { + return englishFn; + } + } + async function hasMultipleCameras() { + const videoDevices = (await navigator.mediaDevices.enumerateDevices()).filter( + deviceInfo => deviceInfo.kind === "videoinput" + ); + if (!videoDevices.length) { + return Promise.reject(new Error("Your device does not have a camera.")); + } + return videoDevices.length > 1; + } + // END USER CODE +} diff --git a/javasource/administration/proxies/Account.java b/javasource/administration/proxies/Account.java index e5dbdb3..8cdf450 100644 --- a/javasource/administration/proxies/Account.java +++ b/javasource/administration/proxies/Account.java @@ -23,6 +23,7 @@ public enum MemberNames Password("Password"), LastLogin("LastLogin"), Blocked("Blocked"), + BlockedSince("BlockedSince"), Active("Active"), FailedLogins("FailedLogins"), WebServiceUser("WebServiceUser"), @@ -31,7 +32,7 @@ public enum MemberNames User_Language("System.User_Language"), User_TimeZone("System.User_TimeZone"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -47,14 +48,15 @@ public java.lang.String toString() public Account(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Administration.Account")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected Account(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject accountMendixObject) { super(context, accountMendixObject); - if (!com.mendix.core.Core.isSubClassOf("Administration.Account", accountMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Administration.Account"); + if (!com.mendix.core.Core.isSubClassOf(entityName, accountMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } } /** @@ -69,6 +71,9 @@ public static administration.proxies.Account initialize(com.mendix.systemwideint /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static administration.proxies.Account initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -83,10 +88,11 @@ public static administration.proxies.Account load(com.mendix.systemwideinterface public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//Administration.Account" + xpathConstraint)) - result.add(administration.proxies.Account.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> administration.proxies.Account.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** @@ -200,9 +206,9 @@ public final void setIsLocalUser(com.mendix.systemwideinterfaces.core.IContext c @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final administration.proxies.Account that = (administration.proxies.Account) obj; @@ -222,7 +228,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Administration.Account"; + return entityName; } /** diff --git a/javasource/administration/proxies/AccountPasswordData.java b/javasource/administration/proxies/AccountPasswordData.java index 76846d3..598d090 100644 --- a/javasource/administration/proxies/AccountPasswordData.java +++ b/javasource/administration/proxies/AccountPasswordData.java @@ -25,7 +25,7 @@ public enum MemberNames ConfirmPassword("ConfirmPassword"), AccountPasswordData_Account("Administration.AccountPasswordData_Account"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -41,15 +41,17 @@ public java.lang.String toString() public AccountPasswordData(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Administration.AccountPasswordData")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected AccountPasswordData(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject accountPasswordDataMendixObject) { - if (accountPasswordDataMendixObject == null) + if (accountPasswordDataMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Administration.AccountPasswordData", accountPasswordDataMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Administration.AccountPasswordData"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, accountPasswordDataMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.accountPasswordDataMendixObject = accountPasswordDataMendixObject; this.context = context; @@ -67,6 +69,9 @@ public static administration.proxies.AccountPasswordData initialize(com.mendix.s /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static administration.proxies.AccountPasswordData initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -81,6 +86,7 @@ public static administration.proxies.AccountPasswordData load(com.mendix.systemw /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -89,6 +95,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -219,6 +226,7 @@ public final void setConfirmPassword(com.mendix.systemwideinterfaces.core.IConte } /** + * @throws com.mendix.core.CoreException * @return value of AccountPasswordData_Account */ public final administration.proxies.Account getAccountPasswordData_Account() throws com.mendix.core.CoreException @@ -229,13 +237,15 @@ public final administration.proxies.Account getAccountPasswordData_Account() thr /** * @param context * @return value of AccountPasswordData_Account + * @throws com.mendix.core.CoreException */ public final administration.proxies.Account getAccountPasswordData_Account(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { administration.proxies.Account result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.AccountPasswordData_Account.toString()); - if (identifier != null) + if (identifier != null) { result = administration.proxies.Account.load(context, identifier); + } return result; } @@ -255,10 +265,11 @@ public final void setAccountPasswordData_Account(administration.proxies.Account */ public final void setAccountPasswordData_Account(com.mendix.systemwideinterfaces.core.IContext context, administration.proxies.Account accountpassworddata_account) { - if (accountpassworddata_account == null) + if (accountpassworddata_account == null) { getMendixObject().setValue(context, MemberNames.AccountPasswordData_Account.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.AccountPasswordData_Account.toString(), accountpassworddata_account.getMendixObject().getId()); + } } /** @@ -280,9 +291,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final administration.proxies.AccountPasswordData that = (administration.proxies.AccountPasswordData) obj; @@ -302,7 +313,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Administration.AccountPasswordData"; + return entityName; } /** diff --git a/javasource/administration/proxies/microflows/Microflows.java b/javasource/administration/proxies/microflows/Microflows.java index cf4d0e7..923c073 100644 --- a/javasource/administration/proxies/microflows/Microflows.java +++ b/javasource/administration/proxies/microflows/Microflows.java @@ -7,13 +7,19 @@ import java.util.HashMap; import java.util.Map; import com.mendix.core.Core; -import com.mendix.core.CoreException; -import com.mendix.systemwideinterfaces.MendixRuntimeException; import com.mendix.systemwideinterfaces.core.IContext; import com.mendix.systemwideinterfaces.core.IMendixObject; public class Microflows { + /** + * @deprecated + * The default constructor of the Microflows class should not be used. + * Use the static microflow invocation methods instead. + */ + @java.lang.Deprecated(since = "9.12", forRemoval = true) + public Microflows() {} + // These are the microflows for the Administration module public static void changeMyPassword(IContext context, administration.proxies.AccountPasswordData _accountPasswordData) { @@ -50,14 +56,13 @@ public static java.util.List retrieveTimeZones(IContext { Map params = new HashMap<>(); java.util.List objs = Core.microflowCall("Administration.RetrieveTimeZones").withParams(params).execute(context); - java.util.List result = null; - if (objs != null) - { - result = new java.util.ArrayList<>(); - for (IMendixObject obj : objs) - result.add(system.proxies.TimeZone.initialize(context, obj)); + if (objs == null) { + return null; + } else { + return objs.stream() + .map(obj -> system.proxies.TimeZone.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } - return result; } public static void saveNewAccount(IContext context, administration.proxies.AccountPasswordData _accountPasswordData) { @@ -77,4 +82,4 @@ public static void showPasswordForm(IContext context, administration.proxies.Acc params.put("Account", _account == null ? null : _account.getMendixObject()); Core.microflowCall("Administration.ShowPasswordForm").withParams(params).execute(context); } -} \ No newline at end of file +} diff --git a/javasource/atlas_ui_resources/proxies/constants/Constants.java b/javasource/atlas_ui_resources/proxies/constants/Constants.java deleted file mode 100644 index c11d979..0000000 --- a/javasource/atlas_ui_resources/proxies/constants/Constants.java +++ /dev/null @@ -1,17 +0,0 @@ -// This file was generated by Mendix Studio Pro. -// -// WARNING: Code you write here will be lost the next time you deploy the project. - -package atlas_ui_resources.proxies.constants; - -import com.mendix.core.Core; - -public class Constants -{ - // These are the constants for the Atlas_UI_Resources module - - public static java.lang.String getAtlas_UI_Resources_Version() - { - return (java.lang.String)Core.getConfiguration().getConstantValue("Atlas_UI_Resources.Atlas_UI_Resources_Version"); - } -} \ No newline at end of file diff --git a/javasource/email_connector/actions/CalculateIncomingAccountMetrics.java b/javasource/email_connector/actions/CalculateIncomingAccountMetrics.java index dfb3bda..067d245 100644 --- a/javasource/email_connector/actions/CalculateIncomingAccountMetrics.java +++ b/javasource/email_connector/actions/CalculateIncomingAccountMetrics.java @@ -10,64 +10,119 @@ package email_connector.actions; import com.mendix.core.Core; +import com.mendix.core.CoreException; import com.mendix.datahub.connector.eventtracking.Metrics; import com.mendix.systemwideinterfaces.core.IContext; import com.mendix.webui.CustomJavaAction; -import email_connector.proxies.ENUM_IncomingProtocol; -import email_connector.proxies.EmailAccount; -import email_connector.proxies.IncomingEmailConfiguration; +import email_connector.proxies.*; +import com.mendix.systemwideinterfaces.core.IMendixObject; +import email_connector.proxies.constants.Constants; +import java.util.Map; +import java.util.stream.Collectors; +import static java.util.stream.Collectors.counting; public class CalculateIncomingAccountMetrics extends CustomJavaAction { - public CalculateIncomingAccountMetrics(IContext context) + private java.util.List __EmailAccountList; + private java.util.List EmailAccountList; + + public CalculateIncomingAccountMetrics(IContext context, java.util.List EmailAccountList) { super(context); + this.__EmailAccountList = EmailAccountList; } @java.lang.Override public java.lang.Void executeAction() throws Exception { + this.EmailAccountList = java.util.Optional.ofNullable(this.__EmailAccountList) + .orElse(java.util.Collections.emptyList()) + .stream() + .map(__EmailAccountListElement -> email_connector.proxies.EmailAccount.initialize(getContext(), __EmailAccountListElement)) + .collect(java.util.stream.Collectors.toList()); + // BEGIN USER CODE for (var protocol : ENUM_IncomingProtocol.values()) { - var query = "SELECT "+ EmailAccount.entityName +"/"+ EmailAccount.MemberNames.isOAuthUsed.toString() +" FROM " - + IncomingEmailConfiguration.entityName +" INNER JOIN " - + IncomingEmailConfiguration.entityName +"/"+IncomingEmailConfiguration.MemberNames.IncomingEmailConfiguration_EmailAccount.toString() +"/"+ EmailAccount.entityName - + " WHERE " + IncomingEmailConfiguration.MemberNames.IncomingProtocol.toString() + "='" + protocol.getCaption() + "';"; - var request = Core.createOQLTextGetRequest(); - request.setQuery(query); - var dataTable = Core.retrieveOQLDataTable(getContext(), request); - var oauthAccCnt=0; - var basicAccCnt=0; - if (dataTable.getRowCount() > 0) { - for (com.mendix.systemwideinterfaces.connectionbus.data.IDataRow row : dataTable) { - if((boolean) row.getValue(getContext(), 0)) - oauthAccCnt++; - else - basicAccCnt++; + var basicAccCount = this.EmailAccountList.stream() + .filter(emailAccount -> { + try { + return protocol.equals(emailAccount.getIncomingEmailConfiguration_EmailAccount().getIncomingProtocol()) && !emailAccount.getisOAuthUsed(); + } catch (CoreException e) { + Core.getLogger(Constants.getLogNode()).error(e); + } + return false; + }) + .count(); + + Map mailBoxTypeAccounts = this.EmailAccountList.stream().filter(emailAccount -> { + try { + return protocol.equals(emailAccount.getIncomingEmailConfiguration_EmailAccount().getIncomingProtocol()); + } catch (CoreException e) { + Core.getLogger(Constants.getLogNode()).error(e); + } + return false; + }).collect(Collectors.groupingBy(EmailAccount::getIsSharedMailbox, counting())); + + Map oAuthAccounts = this.EmailAccountList.stream().filter(emailAccount -> { + try { + return protocol.equals(emailAccount.getIncomingEmailConfiguration_EmailAccount().getIncomingProtocol()) && emailAccount.getEmailAccount_OAuthProvider() != null; + } catch (CoreException e) { + Core.getLogger(Constants.getLogNode()).error(e); + } + return false; + }).collect(Collectors.groupingBy(emailAccount -> { + try { + return emailAccount.getEmailAccount_OAuthProvider().getOAuthType(); + } catch (CoreException e) { + throw new IllegalStateException(e); } - } + }, counting())); + + Metrics.createGauge("dnl_connectors_ec_account_configuration") + .addTag("type", protocol.getCaption()) + .addTag("auth_method", "basic") + .addTag("setup", "incoming") + .setDescription("User sets up account configuration") + .build() + .recordValue(basicAccCount); + Metrics.createGauge("dnl_connectors_ec_account_configuration") + .addTag("type", protocol.getCaption()) + .addTag("auth_method", ENUM_OAuthType.AUTH_CODE.name().toLowerCase()) + .addTag("setup", "incoming") + .setDescription("User sets up account configuration") + .build() + .recordValue(oAuthAccounts.getOrDefault(ENUM_OAuthType.AUTH_CODE, 0L)); Metrics.createGauge("dnl_connectors_ec_account_configuration") - .addTag("type", protocol.getCaption()) - .addTag("auth_method", "basic") - .addTag("setup", "incoming") - .setDescription("User sets up account configuration") - .build() - .recordValue(basicAccCnt); + .addTag("type", protocol.getCaption()) + .addTag("auth_method", ENUM_OAuthType.CLIENT_CRED.name().toLowerCase()) + .addTag("setup", "incoming") + .setDescription("User sets up account configuration") + .build() + .recordValue(oAuthAccounts.getOrDefault(ENUM_OAuthType.CLIENT_CRED, 0L)); Metrics.createGauge("dnl_connectors_ec_account_configuration") - .addTag("type", protocol.getCaption()) - .addTag("auth_method", "oauth") - .addTag("setup", "incoming") - .setDescription("User sets up account configuration") - .build() - .recordValue(oauthAccCnt); + .addTag("type", protocol.getCaption()) + .addTag("setup", "incoming") + .addTag("mailbox_type", "shared") + .setDescription("User sets up account configuration") + .build() + .recordValue(mailBoxTypeAccounts.getOrDefault(Boolean.TRUE, 0L)); + Metrics.createGauge("dnl_connectors_ec_account_configuration") + .addTag("type", protocol.getCaption()) + .addTag("setup", "incoming") + .addTag("mailbox_type", "primary") + .setDescription("User sets up account configuration") + .build() + .recordValue(mailBoxTypeAccounts.getOrDefault(Boolean.FALSE, 0L)); } + return null; // END USER CODE } /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/email_connector/actions/CalculateOutgoingAccountMetrics.java b/javasource/email_connector/actions/CalculateOutgoingAccountMetrics.java index 2db3666..10b6d97 100644 --- a/javasource/email_connector/actions/CalculateOutgoingAccountMetrics.java +++ b/javasource/email_connector/actions/CalculateOutgoingAccountMetrics.java @@ -10,58 +10,112 @@ package email_connector.actions; import com.mendix.core.Core; +import com.mendix.core.CoreException; import com.mendix.datahub.connector.eventtracking.Metrics; import com.mendix.systemwideinterfaces.core.IContext; import com.mendix.webui.CustomJavaAction; +import email_connector.proxies.ENUM_OAuthType; import email_connector.proxies.ENUM_OutgoingProtocol; import email_connector.proxies.EmailAccount; -import email_connector.proxies.OutgoingEmailConfiguration; +import com.mendix.systemwideinterfaces.core.IMendixObject; +import email_connector.proxies.constants.Constants; +import java.util.Map; +import java.util.stream.Collectors; +import static java.util.stream.Collectors.counting; public class CalculateOutgoingAccountMetrics extends CustomJavaAction { - public CalculateOutgoingAccountMetrics(IContext context) + private java.util.List __EmailAccountList; + private java.util.List EmailAccountList; + + public CalculateOutgoingAccountMetrics(IContext context, java.util.List EmailAccountList) { super(context); + this.__EmailAccountList = EmailAccountList; } @java.lang.Override public java.lang.Void executeAction() throws Exception { + this.EmailAccountList = java.util.Optional.ofNullable(this.__EmailAccountList) + .orElse(java.util.Collections.emptyList()) + .stream() + .map(__EmailAccountListElement -> email_connector.proxies.EmailAccount.initialize(getContext(), __EmailAccountListElement)) + .collect(java.util.stream.Collectors.toList()); + // BEGIN USER CODE for (var protocol : ENUM_OutgoingProtocol.values()) { + var basicAccCount = this.EmailAccountList.stream() + .filter(emailAccount -> { + try { + return protocol.equals(emailAccount.getOutgoingEmailConfiguration_EmailAccount().getOutgoingProtocol()) && !emailAccount.getisOAuthUsed(); + } catch (CoreException e) { + Core.getLogger(Constants.getLogNode()).error(e); + } + return false; + }) + .count(); + + Map mailBoxTypeAccounts = this.EmailAccountList.stream().filter(emailAccount -> { + try { + return protocol.equals(emailAccount.getOutgoingEmailConfiguration_EmailAccount().getOutgoingProtocol()); + } catch (CoreException e) { + Core.getLogger(Constants.getLogNode()).error(e); + } + return false; + }).collect(Collectors.groupingBy(EmailAccount::getIsSharedMailbox, counting())); - var query = "SELECT "+ EmailAccount.entityName +"/"+ EmailAccount.MemberNames.isOAuthUsed.toString() +" FROM " - + OutgoingEmailConfiguration.entityName +" INNER JOIN " - + OutgoingEmailConfiguration.entityName +"/"+OutgoingEmailConfiguration.MemberNames.OutgoingEmailConfiguration_EmailAccount.toString() +"/"+ EmailAccount.entityName - + " WHERE " + OutgoingEmailConfiguration.MemberNames.OutgoingProtocol.toString() + "='" + protocol.getCaption() + "';"; - var request = Core.createOQLTextGetRequest(); - request.setQuery(query); - var dataTable = Core.retrieveOQLDataTable(getContext(), request); - var oauthAccCnt=0; - var basicAccCnt=0; - if (dataTable.getRowCount() > 0) { - for (com.mendix.systemwideinterfaces.connectionbus.data.IDataRow row : dataTable) { - if((boolean) row.getValue(getContext(), 0)) - oauthAccCnt++; - else - basicAccCnt++; + Map oAuthAccounts = this.EmailAccountList.stream().filter(emailAccount -> { + try { + return protocol.equals(emailAccount.getOutgoingEmailConfiguration_EmailAccount().getOutgoingProtocol()) && emailAccount.getEmailAccount_OAuthProvider() != null; + } catch (CoreException e) { + Core.getLogger(Constants.getLogNode()).error(e); + } + return false; + }).collect(Collectors.groupingBy(emailAccount -> { + try { + return emailAccount.getEmailAccount_OAuthProvider().getOAuthType(); + } catch (CoreException e) { + throw new IllegalStateException(e); } - } + }, counting())); + Metrics.createGauge("dnl_connectors_ec_account_configuration") .addTag("type", protocol.getCaption()) .addTag("auth_method", "basic") .addTag("setup", "outgoing") .setDescription("User sets up account configuration") .build() - .recordValue(basicAccCnt); + .recordValue(basicAccCount); + Metrics.createGauge("dnl_connectors_ec_account_configuration") + .addTag("type", protocol.getCaption()) + .addTag("auth_method", ENUM_OAuthType.AUTH_CODE.name().toLowerCase()) + .addTag("setup", "outgoing") + .setDescription("User sets up account configuration") + .build() + .recordValue(oAuthAccounts.getOrDefault(ENUM_OAuthType.AUTH_CODE, 0L)); + Metrics.createGauge("dnl_connectors_ec_account_configuration") + .addTag("type", protocol.getCaption()) + .addTag("auth_method", ENUM_OAuthType.CLIENT_CRED.name().toLowerCase()) + .addTag("setup", "outgoing") + .setDescription("User sets up account configuration") + .build() + .recordValue(oAuthAccounts.getOrDefault(ENUM_OAuthType.CLIENT_CRED, 0L)); + Metrics.createGauge("dnl_connectors_ec_account_configuration") + .addTag("type", protocol.getCaption()) + .addTag("setup", "outgoing") + .addTag("mailbox_type", "shared") + .setDescription("User sets up account configuration") + .build() + .recordValue(mailBoxTypeAccounts.getOrDefault(Boolean.TRUE, 0L)); Metrics.createGauge("dnl_connectors_ec_account_configuration") .addTag("type", protocol.getCaption()) - .addTag("auth_method", "oauth") .addTag("setup", "outgoing") + .addTag("mailbox_type", "primary") .setDescription("User sets up account configuration") .build() - .recordValue(oauthAccCnt); + .recordValue(mailBoxTypeAccounts.getOrDefault(Boolean.FALSE, 0L)); } return null; // END USER CODE @@ -69,6 +123,7 @@ public java.lang.Void executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/email_connector/actions/CheckServerConnection.java b/javasource/email_connector/actions/CheckServerConnection.java index d9286d7..933ca4f 100644 --- a/javasource/email_connector/actions/CheckServerConnection.java +++ b/javasource/email_connector/actions/CheckServerConnection.java @@ -40,7 +40,7 @@ public CheckServerConnection(IContext context, IMendixObject EmailAccount) @java.lang.Override public java.lang.Void executeAction() throws Exception { - this.EmailAccount = __EmailAccount == null ? null : email_connector.proxies.EmailAccount.initialize(getContext(), __EmailAccount); + this.EmailAccount = this.__EmailAccount == null ? null : email_connector.proxies.EmailAccount.initialize(getContext(), __EmailAccount); // BEGIN USER CODE if (this.EmailAccount == null) { @@ -61,6 +61,7 @@ public java.lang.Void executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/email_connector/actions/ConvertHTMLBodyToPlainText.java b/javasource/email_connector/actions/ConvertHTMLBodyToPlainText.java index b315b29..cadff20 100644 --- a/javasource/email_connector/actions/ConvertHTMLBodyToPlainText.java +++ b/javasource/email_connector/actions/ConvertHTMLBodyToPlainText.java @@ -41,6 +41,7 @@ public java.lang.String executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/email_connector/actions/CopyAttachmentContent.java b/javasource/email_connector/actions/CopyAttachmentContent.java index 54404b2..1d92011 100644 --- a/javasource/email_connector/actions/CopyAttachmentContent.java +++ b/javasource/email_connector/actions/CopyAttachmentContent.java @@ -32,9 +32,9 @@ public CopyAttachmentContent(IContext context, IMendixObject CopyFrom, IMendixOb @java.lang.Override public java.lang.Boolean executeAction() throws Exception { - this.CopyFrom = __CopyFrom == null ? null : system.proxies.FileDocument.initialize(getContext(), __CopyFrom); + this.CopyFrom = this.__CopyFrom == null ? null : system.proxies.FileDocument.initialize(getContext(), __CopyFrom); - this.CopyTo = __CopyTo == null ? null : system.proxies.FileDocument.initialize(getContext(), __CopyTo); + this.CopyTo = this.__CopyTo == null ? null : system.proxies.FileDocument.initialize(getContext(), __CopyTo); // BEGIN USER CODE IContext context = this.getContext(); @@ -50,6 +50,7 @@ public java.lang.Boolean executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/email_connector/actions/CreateEmailFromTemplate.java b/javasource/email_connector/actions/CreateEmailFromTemplate.java index b0180c6..3ad6c00 100644 --- a/javasource/email_connector/actions/CreateEmailFromTemplate.java +++ b/javasource/email_connector/actions/CreateEmailFromTemplate.java @@ -40,7 +40,7 @@ public CreateEmailFromTemplate(IContext context, IMendixObject DataObject, IMend @java.lang.Override public IMendixObject executeAction() throws Exception { - this.EmailTemplate = __EmailTemplate == null ? null : email_connector.proxies.EmailTemplate.initialize(getContext(), __EmailTemplate); + this.EmailTemplate = this.__EmailTemplate == null ? null : email_connector.proxies.EmailTemplate.initialize(getContext(), __EmailTemplate); // BEGIN USER CODE if (this.EmailTemplate == null) @@ -63,6 +63,7 @@ public IMendixObject executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/email_connector/actions/DeleteDuplicateMxReflectionObject.java b/javasource/email_connector/actions/DeleteDuplicateMxReflectionObject.java new file mode 100644 index 0000000..03d66f0 --- /dev/null +++ b/javasource/email_connector/actions/DeleteDuplicateMxReflectionObject.java @@ -0,0 +1,206 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +// Special characters, e.g., é, ö, à, etc. are supported in comments. + +package email_connector.actions; + +import com.mendix.core.Core; +import com.mendix.core.CoreException; +import com.mendix.systemwideinterfaces.core.IContext; +import com.mendix.systemwideinterfaces.core.IMendixIdentifier; +import com.mendix.systemwideinterfaces.core.IMendixObject; +import com.mendix.webui.CustomJavaAction; +import email_connector.proxies.EmailTemplate; +import email_connector.proxies.constants.Constants; +import mxmodelreflection.proxies.MxObjectMember; +import mxmodelreflection.proxies.MxObjectReference; +import mxmodelreflection.proxies.MxObjectType; +import mxmodelreflection.proxies.Token; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +public class DeleteDuplicateMxReflectionObject extends CustomJavaAction +{ + private java.util.List __TokenList; + private java.util.List TokenList; + private java.util.List __MxObjectMemberList; + private java.util.List MxObjectMemberList; + private java.util.List __MxObjectReferenceList; + private java.util.List MxObjectReferenceList; + private java.util.List __MxObjectTypeList; + private java.util.List MxObjectTypeList; + private java.util.List __EmailTemplateList; + private java.util.List EmailTemplateList; + + public DeleteDuplicateMxReflectionObject(IContext context, java.util.List TokenList, java.util.List MxObjectMemberList, java.util.List MxObjectReferenceList, java.util.List MxObjectTypeList, java.util.List EmailTemplateList) + { + super(context); + this.__TokenList = TokenList; + this.__MxObjectMemberList = MxObjectMemberList; + this.__MxObjectReferenceList = MxObjectReferenceList; + this.__MxObjectTypeList = MxObjectTypeList; + this.__EmailTemplateList = EmailTemplateList; + } + + @java.lang.Override + public java.lang.Void executeAction() throws Exception + { + this.TokenList = java.util.Optional.ofNullable(this.__TokenList) + .orElse(java.util.Collections.emptyList()) + .stream() + .map(__TokenListElement -> mxmodelreflection.proxies.Token.initialize(getContext(), __TokenListElement)) + .collect(java.util.stream.Collectors.toList()); + + this.MxObjectMemberList = java.util.Optional.ofNullable(this.__MxObjectMemberList) + .orElse(java.util.Collections.emptyList()) + .stream() + .map(__MxObjectMemberListElement -> mxmodelreflection.proxies.MxObjectMember.initialize(getContext(), __MxObjectMemberListElement)) + .collect(java.util.stream.Collectors.toList()); + + this.MxObjectReferenceList = java.util.Optional.ofNullable(this.__MxObjectReferenceList) + .orElse(java.util.Collections.emptyList()) + .stream() + .map(__MxObjectReferenceListElement -> mxmodelreflection.proxies.MxObjectReference.initialize(getContext(), __MxObjectReferenceListElement)) + .collect(java.util.stream.Collectors.toList()); + + this.MxObjectTypeList = java.util.Optional.ofNullable(this.__MxObjectTypeList) + .orElse(java.util.Collections.emptyList()) + .stream() + .map(__MxObjectTypeListElement -> mxmodelreflection.proxies.MxObjectType.initialize(getContext(), __MxObjectTypeListElement)) + .collect(java.util.stream.Collectors.toList()); + + this.EmailTemplateList = java.util.Optional.ofNullable(this.__EmailTemplateList) + .orElse(java.util.Collections.emptyList()) + .stream() + .map(__EmailTemplateListElement -> email_connector.proxies.EmailTemplate.initialize(getContext(), __EmailTemplateListElement)) + .collect(java.util.stream.Collectors.toList()); + + // BEGIN USER CODE + int mxObjectMemberDuplicateCount = 0; + int mxObjectReferenceDuplicateCount = 0; + int mxObjectTypeDuplicateCount = 0; + if (!this.MxObjectMemberList.isEmpty()) { + List duplicateMxObjectMemberList = filterDuplicates(this.MxObjectMemberList, MxObjectMember::getCompleteName); + if (!duplicateMxObjectMemberList.isEmpty()) { + List mxObjectMemberIMendixObjectList = sortAndMapToMendixObjects(duplicateMxObjectMemberList, MxObjectMember::getMendixObject); + List mxObjectMemberOriginalList = new ArrayList<>(); + // Process tokens + for (IMendixObject token : this.__TokenList) { + processTokenAndEmailTemplates(mxObjectMemberIMendixObjectList, token, Token.MemberNames.Token_MxObjectMember.toString(), MxObjectMember.MemberNames.CompleteName.toString(), mxObjectMemberOriginalList); + Core.commit(this.getContext(), token); + } + // Remove original objects from list of all duplicates + mxObjectMemberIMendixObjectList.removeAll(mxObjectMemberOriginalList); + mxObjectMemberDuplicateCount = mxObjectMemberIMendixObjectList.size(); + // Delete objects which are created due to duplication of templates + Core.delete(this.getContext(), mxObjectMemberIMendixObjectList); + } + } + if (!this.MxObjectReferenceList.isEmpty()) { + List duplicateMxObjectReferenceList = filterMxObjectReferenceDuplicates(this.MxObjectReferenceList, MxObjectReference::getCompleteName, MxObjectReference::getParentEntity); + if (!duplicateMxObjectReferenceList.isEmpty()) { + List mxObjectReferenceIMendixObjectList = sortAndMapToMendixObjects(duplicateMxObjectReferenceList, MxObjectReference::getMendixObject); + List mxObjectReferenceOriginalList = new ArrayList<>(); + // Process tokens + for (IMendixObject token : this.__TokenList) { + processTokenAndEmailTemplates(mxObjectReferenceIMendixObjectList, token, Token.MemberNames.Token_MxObjectReference.toString(), MxObjectReference.MemberNames.CompleteName.toString(), mxObjectReferenceOriginalList); + Core.commit(this.getContext(), token); + } + // Remove original objects from list of all duplicates + mxObjectReferenceIMendixObjectList.removeAll(mxObjectReferenceOriginalList); + mxObjectReferenceDuplicateCount = mxObjectReferenceIMendixObjectList.size(); + // Delete objects which are created due to duplication of templates + Core.delete(this.getContext(), mxObjectReferenceIMendixObjectList); + } + } + + if (!this.MxObjectTypeList.isEmpty()) { + List duplicateMxObjectTypeList = filterDuplicates(this.MxObjectTypeList, MxObjectType::getCompleteName); + if (!duplicateMxObjectTypeList.isEmpty()) { + List mxObjectTypeIMendixObjectList = sortAndMapToMendixObjects(duplicateMxObjectTypeList, MxObjectType::getMendixObject); + List mxObjectTypeOriginalList = new ArrayList<>(); + // Process tokens + for (IMendixObject token : this.__TokenList) { + processTokenAndEmailTemplates(mxObjectTypeIMendixObjectList, token, Token.MemberNames.Token_MxObjectType_Start.toString(), MxObjectType.MemberNames.CompleteName.toString(), mxObjectTypeOriginalList); + processTokenAndEmailTemplates(mxObjectTypeIMendixObjectList, token, Token.MemberNames.Token_MxObjectType_Referenced.toString(), MxObjectType.MemberNames.CompleteName.toString(), mxObjectTypeOriginalList); + Core.commit(this.getContext(), token); + } + // Process email templates + for (IMendixObject emailTemplate : this.__EmailTemplateList) { + processTokenAndEmailTemplates(mxObjectTypeIMendixObjectList, emailTemplate, EmailTemplate.MemberNames.EmailTemplate_MxObjectType.toString(), MxObjectType.MemberNames.CompleteName.toString(), mxObjectTypeOriginalList); + Core.commit(this.getContext(), emailTemplate); + } + // Remove original objects from list of all duplicates + mxObjectTypeIMendixObjectList.removeAll(mxObjectTypeOriginalList); + mxObjectTypeDuplicateCount = mxObjectTypeIMendixObjectList.size(); + // Delete objects which are created due to duplication of templates + Core.delete(this.getContext(), mxObjectTypeIMendixObjectList); + } + } + Core.getLogger(Constants.getLogNode()).info(String.format("Successfully deleted %d record(s) from entity '%s'.", mxObjectMemberDuplicateCount, "MxObjectMember")); + Core.getLogger(Constants.getLogNode()).info(String.format("Successfully deleted %d record(s) from entity '%s'.", mxObjectReferenceDuplicateCount, "MxObjectReference")); + Core.getLogger(Constants.getLogNode()).info(String.format("Successfully deleted %d record(s) from entity '%s'.", mxObjectTypeDuplicateCount, "MxObjectType")); + return null; + // END USER CODE + } + + /** + * Returns a string representation of this action + * @return a string representation of this action + */ + @java.lang.Override + public java.lang.String toString() + { + return "DeleteDuplicateMxReflectionObject"; + } + + // BEGIN EXTRA CODE + private List filterDuplicates(List list, Function getCompleteName) { + return list.stream() + .collect(Collectors.groupingBy(getCompleteName)) + .values().stream() + .filter(l -> l.size() > 1) + .flatMap(List::stream) + .collect(Collectors.toList()); + } + + private List filterMxObjectReferenceDuplicates(List list, Function getCompleteName, Function getParentEntity) { + return list.stream() + .collect(Collectors.groupingBy(getCompleteName, Collectors.groupingBy(getParentEntity, Collectors.toList()))) + .values().stream() + .flatMap(map -> map.values().stream()) + .filter(l -> l.size() > 1) + .flatMap(List::stream) + .collect(Collectors.toList()); + } + + private List sortAndMapToMendixObjects(List list, Function getMendixObject) { + return list.stream() + .map(getMendixObject) + .sorted(Comparator.comparingLong(obj -> obj.getId().toLong())) + .collect(Collectors.toList()); + } + + private void processTokenAndEmailTemplates(List duplicateMendixObjectsList, IMendixObject mendixObject, String referenceName, String completeNameReference, List originalList) throws CoreException { + IMendixIdentifier mxIdentifier = mendixObject.getValue(this.getContext(), referenceName); + if (mxIdentifier != null) { + IMendixObject object = Core.retrieveId(this.getContext(), mxIdentifier); + for (IMendixObject duplicateMxObject : duplicateMendixObjectsList) { + if (duplicateMxObject.getValue(this.getContext(), completeNameReference).equals(object.getValue(this.getContext(), completeNameReference))) { + mendixObject.setValue(this.getContext(), referenceName, duplicateMxObject.getId()); + if(!originalList.contains(duplicateMxObject)) { + originalList.add(duplicateMxObject); + } + break; + } + } + } + } + // END EXTRA CODE +} diff --git a/javasource/email_connector/actions/EndTransaction.java b/javasource/email_connector/actions/EndTransaction.java index 0f30c6c..6e4db6d 100644 --- a/javasource/email_connector/actions/EndTransaction.java +++ b/javasource/email_connector/actions/EndTransaction.java @@ -30,6 +30,7 @@ public java.lang.Void executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/email_connector/actions/GenerateOAuthNonce.java b/javasource/email_connector/actions/GenerateOAuthNonce.java index a84de4b..895eb55 100644 --- a/javasource/email_connector/actions/GenerateOAuthNonce.java +++ b/javasource/email_connector/actions/GenerateOAuthNonce.java @@ -30,6 +30,7 @@ public java.lang.String executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/email_connector/actions/GetAppRootURL.java b/javasource/email_connector/actions/GetAppRootURL.java index 54df9d7..b390177 100644 --- a/javasource/email_connector/actions/GetAppRootURL.java +++ b/javasource/email_connector/actions/GetAppRootURL.java @@ -31,6 +31,7 @@ public java.lang.String executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/email_connector/actions/GetAutoConfig.java b/javasource/email_connector/actions/GetAutoConfig.java index 892fd1a..41935e6 100644 --- a/javasource/email_connector/actions/GetAutoConfig.java +++ b/javasource/email_connector/actions/GetAutoConfig.java @@ -42,6 +42,7 @@ public IMendixObject executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/email_connector/actions/GetBaseDNList.java b/javasource/email_connector/actions/GetBaseDNList.java index fa4a9fd..31a5a48 100644 --- a/javasource/email_connector/actions/GetBaseDNList.java +++ b/javasource/email_connector/actions/GetBaseDNList.java @@ -34,7 +34,7 @@ public GetBaseDNList(IContext context, IMendixObject LDAPConfiguration) @java.lang.Override public java.util.List executeAction() throws Exception { - this.LDAPConfiguration = __LDAPConfiguration == null ? null : email_connector.proxies.LDAPConfiguration.initialize(getContext(), __LDAPConfiguration); + this.LDAPConfiguration = this.__LDAPConfiguration == null ? null : email_connector.proxies.LDAPConfiguration.initialize(getContext(), __LDAPConfiguration); // BEGIN USER CODE if (this.LDAPConfiguration == null) @@ -62,6 +62,7 @@ public java.util.List executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/email_connector/actions/GetFolderNames.java b/javasource/email_connector/actions/GetFolderNames.java index 15fbd60..11f07e7 100644 --- a/javasource/email_connector/actions/GetFolderNames.java +++ b/javasource/email_connector/actions/GetFolderNames.java @@ -36,7 +36,7 @@ public GetFolderNames(IContext context, IMendixObject MxEmailAccount) @java.lang.Override public java.util.List executeAction() throws Exception { - this.MxEmailAccount = __MxEmailAccount == null ? null : email_connector.proxies.EmailAccount.initialize(getContext(), __MxEmailAccount); + this.MxEmailAccount = this.__MxEmailAccount == null ? null : email_connector.proxies.EmailAccount.initialize(getContext(), __MxEmailAccount); // BEGIN USER CODE if (this.MxEmailAccount == null) @@ -57,6 +57,7 @@ public java.util.List executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/email_connector/actions/GetMendixID.java b/javasource/email_connector/actions/GetMendixID.java index 295e88e..2812440 100644 --- a/javasource/email_connector/actions/GetMendixID.java +++ b/javasource/email_connector/actions/GetMendixID.java @@ -33,6 +33,7 @@ public java.lang.Long executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/email_connector/actions/GetPayloadFromJWT.java b/javasource/email_connector/actions/GetPayloadFromJWT.java index f360d09..83a8dfa 100644 --- a/javasource/email_connector/actions/GetPayloadFromJWT.java +++ b/javasource/email_connector/actions/GetPayloadFromJWT.java @@ -35,6 +35,7 @@ public java.lang.String executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/email_connector/actions/RetrieveEmailMessages.java b/javasource/email_connector/actions/RetrieveEmailMessages.java index 77c48dd..93ccd11 100644 --- a/javasource/email_connector/actions/RetrieveEmailMessages.java +++ b/javasource/email_connector/actions/RetrieveEmailMessages.java @@ -42,7 +42,7 @@ public RetrieveEmailMessages(IContext context, IMendixObject emailAccount, java. @java.lang.Override public java.lang.Void executeAction() throws Exception { - this.emailAccount = __emailAccount == null ? null : email_connector.proxies.EmailAccount.initialize(getContext(), __emailAccount); + this.emailAccount = this.__emailAccount == null ? null : email_connector.proxies.EmailAccount.initialize(getContext(), __emailAccount); // BEGIN USER CODE if (this.emailAccount == null) @@ -63,6 +63,7 @@ public java.lang.Void executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/email_connector/actions/SendEmail.java b/javasource/email_connector/actions/SendEmail.java index ea267cd..047455a 100644 --- a/javasource/email_connector/actions/SendEmail.java +++ b/javasource/email_connector/actions/SendEmail.java @@ -43,9 +43,9 @@ public SendEmail(IContext context, IMendixObject EmailAccount, IMendixObject Ema @java.lang.Override public java.lang.Boolean executeAction() throws Exception { - this.EmailAccount = __EmailAccount == null ? null : email_connector.proxies.EmailAccount.initialize(getContext(), __EmailAccount); + this.EmailAccount = this.__EmailAccount == null ? null : email_connector.proxies.EmailAccount.initialize(getContext(), __EmailAccount); - this.EmailMessage = __EmailMessage == null ? null : email_connector.proxies.EmailMessage.initialize(getContext(), __EmailMessage); + this.EmailMessage = this.__EmailMessage == null ? null : email_connector.proxies.EmailMessage.initialize(getContext(), __EmailMessage); // BEGIN USER CODE if (this.EmailAccount == null) @@ -85,6 +85,7 @@ public java.lang.Boolean executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/email_connector/actions/SendEmailWithTemplate.java b/javasource/email_connector/actions/SendEmailWithTemplate.java index 2e7af95..fd424b1 100644 --- a/javasource/email_connector/actions/SendEmailWithTemplate.java +++ b/javasource/email_connector/actions/SendEmailWithTemplate.java @@ -44,9 +44,9 @@ public SendEmailWithTemplate(IContext context, IMendixObject DataObject, IMendix @java.lang.Override public java.lang.Void executeAction() throws Exception { - this.EmailAccount = __EmailAccount == null ? null : email_connector.proxies.EmailAccount.initialize(getContext(), __EmailAccount); + this.EmailAccount = this.__EmailAccount == null ? null : email_connector.proxies.EmailAccount.initialize(getContext(), __EmailAccount); - this.EmailTemplate = __EmailTemplate == null ? null : email_connector.proxies.EmailTemplate.initialize(getContext(), __EmailTemplate); + this.EmailTemplate = this.__EmailTemplate == null ? null : email_connector.proxies.EmailTemplate.initialize(getContext(), __EmailTemplate); // BEGIN USER CODE if (this.EmailAccount == null) @@ -84,6 +84,7 @@ public java.lang.Void executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/email_connector/actions/SubscribeToIncomingEmail.java b/javasource/email_connector/actions/SubscribeToIncomingEmail.java index 1aad320..a9072f7 100644 --- a/javasource/email_connector/actions/SubscribeToIncomingEmail.java +++ b/javasource/email_connector/actions/SubscribeToIncomingEmail.java @@ -39,7 +39,7 @@ public SubscribeToIncomingEmail(IContext context, IMendixObject account, java.la @java.lang.Override public java.lang.Void executeAction() throws Exception { - this.account = __account == null ? null : email_connector.proxies.EmailAccount.initialize(getContext(), __account); + this.account = this.__account == null ? null : email_connector.proxies.EmailAccount.initialize(getContext(), __account); // BEGIN USER CODE if (this.account == null) @@ -57,6 +57,7 @@ public java.lang.Void executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/email_connector/actions/UnsubscribeFromIncomingEmail.java b/javasource/email_connector/actions/UnsubscribeFromIncomingEmail.java index 486d9b8..9e64a2e 100644 --- a/javasource/email_connector/actions/UnsubscribeFromIncomingEmail.java +++ b/javasource/email_connector/actions/UnsubscribeFromIncomingEmail.java @@ -34,7 +34,7 @@ public UnsubscribeFromIncomingEmail(IContext context, IMendixObject account) @java.lang.Override public java.lang.Void executeAction() throws Exception { - this.account = __account == null ? null : email_connector.proxies.EmailAccount.initialize(getContext(), __account); + this.account = this.__account == null ? null : email_connector.proxies.EmailAccount.initialize(getContext(), __account); // BEGIN USER CODE if (this.account == null) @@ -50,6 +50,7 @@ public java.lang.Void executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/email_connector/implementation/Commons.java b/javasource/email_connector/implementation/Commons.java index 4bd1b18..ad4a85d 100644 --- a/javasource/email_connector/implementation/Commons.java +++ b/javasource/email_connector/implementation/Commons.java @@ -49,7 +49,7 @@ else if (attachmentPosition.equalsIgnoreCase("attachment")) } public static String getHandling(ENUM_MessageHandling messageHandling) throws EmailConnectorException { - if(messageHandling == null) + if (messageHandling == null) throw new EmailConnectorException(Error.EMPTY_MESSAGE_HANDLING.getMessage()); else if (messageHandling.equals(ENUM_MessageHandling.DeleteMessage)) return "DeleteMessage"; @@ -60,7 +60,7 @@ else if (messageHandling.equals(ENUM_MessageHandling.MoveMessage)) } public static FetchStrategy getFetchStrategy(email_connector.proxies.ENUM_FetchStrategy fetchStrategy) throws EmailConnectorException { - if(fetchStrategy == null) + if (fetchStrategy == null) throw new EmailConnectorException(Error.EMPTY_FETCH_STRATEGY.getMessage()); else if (fetchStrategy.name().equalsIgnoreCase("Latest")) return FetchStrategy.LATEST; diff --git a/javasource/email_connector/implementation/EmailListener.java b/javasource/email_connector/implementation/EmailListener.java index 1af3b2a..f3b13fd 100644 --- a/javasource/email_connector/implementation/EmailListener.java +++ b/javasource/email_connector/implementation/EmailListener.java @@ -58,7 +58,7 @@ public void onBatchReceived(List messageList) { } catch (CoreRuntimeException | EmailConnectorException | CoreException e) { log.error(e.getMessage(), e); if (context != null && context.isInTransaction()) - context.rollbackTransAction(); + context.rollbackTransaction(); } } diff --git a/javasource/email_connector/implementation/MxMailMapper.java b/javasource/email_connector/implementation/MxMailMapper.java index 2b39c30..1f0f9a2 100644 --- a/javasource/email_connector/implementation/MxMailMapper.java +++ b/javasource/email_connector/implementation/MxMailMapper.java @@ -15,9 +15,7 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; import static email_connector.implementation.Commons.*; @@ -50,18 +48,23 @@ public static void setReceiveAccountConfigurations(EmailAccount mxEmailAccount, } - private static void setCommonAccountConfiguration(EmailAccount mxEmailAccount, Account serverAccount) { + private static void setCommonAccountConfiguration(EmailAccount mxEmailAccount, Account serverAccount) throws EmailConnectorException { serverAccount.setSanitizeEmailBodyForXSSScript(mxEmailAccount.getsanitizeEmailBodyForXSSScript()); - serverAccount.setConnectionTimeout(String.valueOf(mxEmailAccount.getTimeout())); + if (mxEmailAccount.getTimeout() > 0) serverAccount.setConnectionTimeout(mxEmailAccount.getTimeout()); serverAccount.setFromDisplayName(mxEmailAccount.getFromDisplayName()); serverAccount.setUseSSLServerCheckIdentity(mxEmailAccount.getUseSSLCheckServerIdentity()); + serverAccount.setSharedMailbox(mxEmailAccount.getIsSharedMailbox()); + if (mxEmailAccount.getIsSharedMailbox() && (mxEmailAccount.getMailAddress() == null || mxEmailAccount.getMailAddress().isBlank())) { + throw new EmailConnectorException(Error.EMPTY_MAIL_ADDRESS.getMessage()); + } + serverAccount.setMailAddress(mxEmailAccount.getMailAddress()); serverAccount.setOAuthUsed(mxEmailAccount.getisOAuthUsed()); - if (serverAccount.isOAuthUsed() && mxEmailAccount.getOAuthSetupComplete().equals(true)) { + if (serverAccount.isOAuthUsed()) { serverAccount.setoAuthAccessTokenWorker(new OAuthTokenWorker(mxEmailAccount)); } } - private static void processAttachment(Message serverMessage, EmailMessage mxEmailMessage, boolean processInlineAttachment,IContext context) throws EmailConnectorException { + private static void processAttachment(Message serverMessage, EmailMessage mxEmailMessage, boolean processInlineAttachment, IContext context) throws EmailConnectorException { List serverAttachmentList = serverMessage.getAttachment(); for (Attachment serverAttachment : serverAttachmentList) { var mxAttachment = new email_connector.proxies.Attachment(context); @@ -75,7 +78,6 @@ private static void processAttachment(Message serverMessage, EmailMessage mxEmai mxAttachment.setattachmentSize(serverAttachment.getAttachmentSize()); if (serverAttachment.getAttachmentPosition() != null) mxAttachment.setPosition(getPosition(serverAttachment.getAttachmentPosition())); - var byteStream = new ByteArrayInputStream(serverAttachment.getAttachmentContent()); Core.storeFileDocumentContent(context, mxAttachment.getMendixObject(), byteStream); if (serverAttachment.getAttachmentPosition() != null && processInlineAttachment) { @@ -84,12 +86,11 @@ private static void processAttachment(Message serverMessage, EmailMessage mxEmai } } - private static void displayInlineAttachment(EmailMessage mxEmailMessage, Attachment serverAttachment, email_connector.proxies.Attachment mxAttachment) { - var url = "/file?target=window&fileID="; + var url = "/file?target=window&guid="; if (serverAttachment.getAttachmentPosition().equalsIgnoreCase("inline")) { String source = "cid:" + serverAttachment.getAttachmentContentID(); - String target = url + mxAttachment.getFileID(); + String target = url + mxAttachment.getMendixObject().getId().toLong(); mxEmailMessage.setContent(mxEmailMessage.getContent().replaceAll(source, target)); } } @@ -111,12 +112,10 @@ private static EmailMessage getMxEmailMessage(EmailAccount mxEmailAccount, Messa mxEmailMessage.setReplyTo(serverMessage.getReplyTo()); mxEmailMessage.setFromDisplayName(serverMessage.getFromDisplayName()); if (serverMessage.isHasAttachments()) { - processAttachment(serverMessage, mxEmailMessage, mxEmailAccount.getIncomingEmailConfiguration_EmailAccount().getProcessInlineImage(),context); + processAttachment(serverMessage, mxEmailMessage, mxEmailAccount.getIncomingEmailConfiguration_EmailAccount().getProcessInlineImage(), context); } - if(serverMessage.getHeaders() != null && !serverMessage.getHeaders().isEmpty()) - { - for (var header: serverMessage.getHeaders().entrySet()) - { + if (serverMessage.getHeaders() != null && !serverMessage.getHeaders().isEmpty()) { + for (var header : serverMessage.getHeaders().entrySet()) { var mxHeader = new EmailHeader(context); mxHeader.setKey(header.getKey()); mxHeader.setValue(header.getValue()); @@ -160,17 +159,23 @@ public static void setServerSendEmailMessage(EmailMessage emailMessage, SendEmai sendEmailMsg.setSubject(emailMessage.getSubject()); sendEmailMsg.setFromDisplayName(emailMessage.getFromDisplayName()); setRecipients(emailMessage, sendEmailMsg); - sendEmailMsg.setContent(emailMessage.getContent()); sendEmailMsg.setPlainBody(emailMessage.getPlainBody()); sendEmailMsg.setUseOnlyPlainText(emailMessage.getUseOnlyPlainText()); sendEmailMsg.setSigned(emailMessage.getisSigned()); - sendEmailMsg.setEncrypted(emailMessage.getisEncrypted()); + Map headerMap = new HashMap<>(); + List emailHeaders = Core.retrieveByPath(context, emailMessage.getMendixObject(), EmailHeader.MemberNames.EmailHeader_EmailMessage.toString()); + if (emailHeaders != null) { + for (IMendixObject header : emailHeaders) { + headerMap.put(EmailHeader.initialize(context, header).getKey(), EmailHeader.initialize(context, header).getValue()); + } + } + + sendEmailMsg.setHeaders(headerMap); if (emailMessage.getReplyTo() != null && !emailMessage.getReplyTo().isEmpty()) sendEmailMsg.setReplyTo(emailMessage.getReplyTo()); - if (attachmentList != null && !attachmentList.isEmpty()) { List serverAttachmentList = new ArrayList<>(); for (email_connector.proxies.Attachment mxAttachment : attachmentList) { @@ -186,7 +191,6 @@ public static void setServerSendEmailMessage(EmailMessage emailMessage, SendEmai } catch (IOException ex) { throw new EmailConnectorException(Error.ERROR_FETCH_ATTACHMENT_CONTENT.getMessage()); } - } sendEmailMsg.setAttachment(serverAttachmentList); } @@ -195,19 +199,15 @@ public static void setServerSendEmailMessage(EmailMessage emailMessage, SendEmai private static void setRecipients(EmailMessage emailMessage, SendEmailMessage sendEmailMsg) { if (emailMessage.getFrom() != null && !emailMessage.getFrom().isEmpty()) sendEmailMsg.setFrom(Arrays.asList(emailMessage.getFrom().trim().split(ADDRESSSEPARATORREGEX))); - if (emailMessage.getTo() != null && !emailMessage.getTo().isEmpty()) sendEmailMsg.setTo(Arrays.asList(emailMessage.getTo().trim().split(ADDRESSSEPARATORREGEX))); - if (emailMessage.getCC() != null && !emailMessage.getCC().isEmpty()) sendEmailMsg.setCc(Arrays.asList(emailMessage.getCC().trim().split(ADDRESSSEPARATORREGEX))); - if (emailMessage.getBCC() != null && !emailMessage.getBCC().isEmpty()) sendEmailMsg.setBcc(Arrays.asList(emailMessage.getBCC().trim().split(ADDRESSSEPARATORREGEX))); } public static void getMappedEmailProvider(IContext context, EmailProvider emailProviders, email_connector.proxies.EmailProvider mxEmailProvider) throws EmailConnectorException { - for (com.mendix.datahub.connector.email.model.autoconfig.IncomingServer incomingServer : emailProviders.getIncomingServers()) { var mxIncomingServer = new IncomingServer(context); mxIncomingServer.setIncomingServer_EmailProvider(mxEmailProvider); @@ -216,8 +216,6 @@ public static void getMappedEmailProvider(IContext context, EmailProvider emailP mxIncomingServer.setSocketType(incomingServer.getSocketType()); mxIncomingServer.setIncomingProtocol(getIncomingProxyProtocol(incomingServer.getType())); } - - for (com.mendix.datahub.connector.email.model.autoconfig.OutgoingServer outgoingServer : emailProviders.getOutgoingServers()) { var mxOutgoingServer = new OutgoingServer(context); mxOutgoingServer.setOutgoingServer_EmailProvider(mxEmailProvider); @@ -242,6 +240,7 @@ public static EmailMessage getEmailMessageFromTemplate(IContext context, EmailTe emailMessage.setUseOnlyPlainText(emailTemplate.getUseOnlyPlainText()); emailMessage.setReplyTo(emailTemplate.getReplyTo()); emailMessage.setFromDisplayName(emailTemplate.getFromDisplayName()); + emailMessage.setFrom(emailTemplate.getFromAddress()); if (Boolean.TRUE.equals(queued)) { emailMessage.setQueuedForSending(true); emailMessage.setStatus(ENUM_EmailStatus.QUEUED); diff --git a/javasource/email_connector/implementation/NotificationListener.java b/javasource/email_connector/implementation/NotificationListener.java index 4655a5f..ee8193d 100644 --- a/javasource/email_connector/implementation/NotificationListener.java +++ b/javasource/email_connector/implementation/NotificationListener.java @@ -56,7 +56,7 @@ public void onEmailNotificationReceived(List messageList) { } catch (CoreRuntimeException | EmailConnectorException | CoreException e) { log.error(e.getMessage(), e); if (context != null && context.isInTransaction()) - context.rollbackTransAction(); + context.rollbackTransaction(); } } diff --git a/javasource/email_connector/proxies/Attachment.java b/javasource/email_connector/proxies/Attachment.java index 9883a08..4196a46 100644 --- a/javasource/email_connector/proxies/Attachment.java +++ b/javasource/email_connector/proxies/Attachment.java @@ -30,7 +30,7 @@ public enum MemberNames Attachment_EmailMessage("Email_Connector.Attachment_EmailMessage"), Attachment_EmailTemplate("Email_Connector.Attachment_EmailTemplate"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -46,14 +46,15 @@ public java.lang.String toString() public Attachment(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.Attachment")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected Attachment(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject attachmentMendixObject) { super(context, attachmentMendixObject); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.Attachment", attachmentMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.Attachment"); + if (!com.mendix.core.Core.isSubClassOf(entityName, attachmentMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } } /** @@ -68,6 +69,9 @@ public static email_connector.proxies.Attachment initialize(com.mendix.systemwid /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.Attachment initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -82,10 +86,11 @@ public static email_connector.proxies.Attachment load(com.mendix.systemwideinter public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//Email_Connector.Attachment" + xpathConstraint)) - result.add(email_connector.proxies.Attachment.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> email_connector.proxies.Attachment.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** @@ -248,9 +253,9 @@ public final email_connector.proxies.ENUM_AttachmentPosition getPosition() public final email_connector.proxies.ENUM_AttachmentPosition getPosition(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.Position.toString()); - if (obj == null) + if (obj == null) { return null; - + } return email_connector.proxies.ENUM_AttachmentPosition.valueOf((java.lang.String) obj); } @@ -270,13 +275,15 @@ public final void setPosition(email_connector.proxies.ENUM_AttachmentPosition po */ public final void setPosition(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.ENUM_AttachmentPosition position) { - if (position != null) + if (position != null) { getMendixObject().setValue(context, MemberNames.Position.toString(), position.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.Position.toString(), null); + } } /** + * @throws com.mendix.core.CoreException * @return value of Attachment_EmailMessage */ public final email_connector.proxies.EmailMessage getAttachment_EmailMessage() throws com.mendix.core.CoreException @@ -287,13 +294,15 @@ public final email_connector.proxies.EmailMessage getAttachment_EmailMessage() t /** * @param context * @return value of Attachment_EmailMessage + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.EmailMessage getAttachment_EmailMessage(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.EmailMessage result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.Attachment_EmailMessage.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.EmailMessage.load(context, identifier); + } return result; } @@ -313,13 +322,15 @@ public final void setAttachment_EmailMessage(email_connector.proxies.EmailMessag */ public final void setAttachment_EmailMessage(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.EmailMessage attachment_emailmessage) { - if (attachment_emailmessage == null) + if (attachment_emailmessage == null) { getMendixObject().setValue(context, MemberNames.Attachment_EmailMessage.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.Attachment_EmailMessage.toString(), attachment_emailmessage.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of Attachment_EmailTemplate */ public final email_connector.proxies.EmailTemplate getAttachment_EmailTemplate() throws com.mendix.core.CoreException @@ -330,13 +341,15 @@ public final email_connector.proxies.EmailTemplate getAttachment_EmailTemplate() /** * @param context * @return value of Attachment_EmailTemplate + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.EmailTemplate getAttachment_EmailTemplate(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.EmailTemplate result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.Attachment_EmailTemplate.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.EmailTemplate.load(context, identifier); + } return result; } @@ -356,18 +369,19 @@ public final void setAttachment_EmailTemplate(email_connector.proxies.EmailTempl */ public final void setAttachment_EmailTemplate(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.EmailTemplate attachment_emailtemplate) { - if (attachment_emailtemplate == null) + if (attachment_emailtemplate == null) { getMendixObject().setValue(context, MemberNames.Attachment_EmailTemplate.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.Attachment_EmailTemplate.toString(), attachment_emailtemplate.getMendixObject().getId()); + } } @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.Attachment that = (email_connector.proxies.Attachment) obj; @@ -387,7 +401,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.Attachment"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/ENUM_AttachmentPosition.java b/javasource/email_connector/proxies/ENUM_AttachmentPosition.java index 2a3af74..744614e 100644 --- a/javasource/email_connector/proxies/ENUM_AttachmentPosition.java +++ b/javasource/email_connector/proxies/ENUM_AttachmentPosition.java @@ -9,20 +9,19 @@ public enum ENUM_AttachmentPosition Attachment(new java.lang.String[][] { new java.lang.String[] { "en_US", "Attachment" } }), Inline(new java.lang.String[][] { new java.lang.String[] { "en_US", "Inline" } }); - private java.util.Map captions; + private final java.util.Map captions; private ENUM_AttachmentPosition(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/email_connector/proxies/ENUM_EmailStatus.java b/javasource/email_connector/proxies/ENUM_EmailStatus.java index 658eb5b..592843a 100644 --- a/javasource/email_connector/proxies/ENUM_EmailStatus.java +++ b/javasource/email_connector/proxies/ENUM_EmailStatus.java @@ -12,20 +12,19 @@ public enum ENUM_EmailStatus ERROR(new java.lang.String[][] { new java.lang.String[] { "en_US", "Error" } }), RECEIVED(new java.lang.String[][] { new java.lang.String[] { "en_US", "Received" } }); - private java.util.Map captions; + private final java.util.Map captions; private ENUM_EmailStatus(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/email_connector/proxies/ENUM_FetchStrategy.java b/javasource/email_connector/proxies/ENUM_FetchStrategy.java index 0031612..678368d 100644 --- a/javasource/email_connector/proxies/ENUM_FetchStrategy.java +++ b/javasource/email_connector/proxies/ENUM_FetchStrategy.java @@ -9,20 +9,19 @@ public enum ENUM_FetchStrategy Latest(new java.lang.String[][] { new java.lang.String[] { "en_US", "Latest" } }), Oldest(new java.lang.String[][] { new java.lang.String[] { "en_US", "Oldest" } }); - private java.util.Map captions; + private final java.util.Map captions; private ENUM_FetchStrategy(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/email_connector/proxies/ENUM_IncomingProtocol.java b/javasource/email_connector/proxies/ENUM_IncomingProtocol.java index d4baca9..19d4c7c 100644 --- a/javasource/email_connector/proxies/ENUM_IncomingProtocol.java +++ b/javasource/email_connector/proxies/ENUM_IncomingProtocol.java @@ -11,20 +11,19 @@ public enum ENUM_IncomingProtocol POP3(new java.lang.String[][] { new java.lang.String[] { "en_US", "POP3" } }), POP3S(new java.lang.String[][] { new java.lang.String[] { "en_US", "POP3S" } }); - private java.util.Map captions; + private final java.util.Map captions; private ENUM_IncomingProtocol(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/email_connector/proxies/ENUM_LDAPAuthType.java b/javasource/email_connector/proxies/ENUM_LDAPAuthType.java index ee32ce2..0cb2c16 100644 --- a/javasource/email_connector/proxies/ENUM_LDAPAuthType.java +++ b/javasource/email_connector/proxies/ENUM_LDAPAuthType.java @@ -9,20 +9,19 @@ public enum ENUM_LDAPAuthType none(new java.lang.String[][] { new java.lang.String[] { "en_US", "No Authentication" } }), simple(new java.lang.String[][] { new java.lang.String[] { "en_US", "Simple Authentication" } }); - private java.util.Map captions; + private final java.util.Map captions; private ENUM_LDAPAuthType(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/email_connector/proxies/ENUM_LogType.java b/javasource/email_connector/proxies/ENUM_LogType.java index b0e0c2d..59e8f2b 100644 --- a/javasource/email_connector/proxies/ENUM_LogType.java +++ b/javasource/email_connector/proxies/ENUM_LogType.java @@ -10,20 +10,19 @@ public enum ENUM_LogType Warning(new java.lang.String[][] { new java.lang.String[] { "en_US", "Warning" } }), Error(new java.lang.String[][] { new java.lang.String[] { "en_US", "Error" } }); - private java.util.Map captions; + private final java.util.Map captions; private ENUM_LogType(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/email_connector/proxies/ENUM_MessageHandling.java b/javasource/email_connector/proxies/ENUM_MessageHandling.java index 63f074d..64cc9da 100644 --- a/javasource/email_connector/proxies/ENUM_MessageHandling.java +++ b/javasource/email_connector/proxies/ENUM_MessageHandling.java @@ -10,20 +10,19 @@ public enum ENUM_MessageHandling DeleteMessage(new java.lang.String[][] { new java.lang.String[] { "en_US", "Remove original emails from server" } }), MoveMessage(new java.lang.String[][] { new java.lang.String[] { "en_US", "Move emails on server to another (existing) folder" } }); - private java.util.Map captions; + private final java.util.Map captions; private ENUM_MessageHandling(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/email_connector/proxies/ENUM_OutgoingProtocol.java b/javasource/email_connector/proxies/ENUM_OutgoingProtocol.java index 59a391a..8da6719 100644 --- a/javasource/email_connector/proxies/ENUM_OutgoingProtocol.java +++ b/javasource/email_connector/proxies/ENUM_OutgoingProtocol.java @@ -8,20 +8,19 @@ public enum ENUM_OutgoingProtocol { SMTP(new java.lang.String[][] { new java.lang.String[] { "en_US", "SMTP" } }); - private java.util.Map captions; + private final java.util.Map captions; private ENUM_OutgoingProtocol(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/email_connector/proxies/ENUM_RecipientsRegEx.java b/javasource/email_connector/proxies/ENUM_RecipientsRegEx.java index abb22e6..2a4b61b 100644 --- a/javasource/email_connector/proxies/ENUM_RecipientsRegEx.java +++ b/javasource/email_connector/proxies/ENUM_RecipientsRegEx.java @@ -8,20 +8,19 @@ public enum ENUM_RecipientsRegEx { regex(new java.lang.String[][] { new java.lang.String[] { "en_US", "^(?:(?:\"?(?:[^\";]*)\"?\\s?)??;\\s?))*(?:(?:(?:\"?(?:[^\";]*)\"?\\s?)??\\s?)))$" } }); - private java.util.Map captions; + private final java.util.Map captions; private ENUM_RecipientsRegEx(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/email_connector/proxies/EmailAccount.java b/javasource/email_connector/proxies/EmailAccount.java index 8c83641..00fd77a 100644 --- a/javasource/email_connector/proxies/EmailAccount.java +++ b/javasource/email_connector/proxies/EmailAccount.java @@ -21,6 +21,7 @@ public class EmailAccount public enum MemberNames { Username("Username"), + MailAddress("MailAddress"), Password("Password"), Timeout("Timeout"), sanitizeEmailBodyForXSSScript("sanitizeEmailBodyForXSSScript"), @@ -30,9 +31,10 @@ public enum MemberNames isOutgoingEmailConfigured("isOutgoingEmailConfigured"), FromDisplayName("FromDisplayName"), UseSSLCheckServerIdentity("UseSSLCheckServerIdentity"), + IsSharedMailbox("IsSharedMailbox"), isOAuthUsed("isOAuthUsed"), - OAuthSetupComplete("OAuthSetupComplete"), isEmailConfigAutoDetect("isEmailConfigAutoDetect"), + ComposeEmail("ComposeEmail"), OutgoingEmailConfiguration_EmailAccount("Email_Connector.OutgoingEmailConfiguration_EmailAccount"), IncomingEmailConfiguration_EmailAccount("Email_Connector.IncomingEmailConfiguration_EmailAccount"), Pk12Certificate_EmailAccount("Email_Connector.Pk12Certificate_EmailAccount"), @@ -40,7 +42,7 @@ public enum MemberNames EmailAccount_OAuthProvider("Email_Connector.EmailAccount_OAuthProvider"), EmailAccount_OAuthToken("Email_Connector.EmailAccount_OAuthToken"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -56,15 +58,17 @@ public java.lang.String toString() public EmailAccount(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.EmailAccount")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected EmailAccount(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject emailAccountMendixObject) { - if (emailAccountMendixObject == null) + if (emailAccountMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.EmailAccount", emailAccountMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.EmailAccount"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, emailAccountMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.emailAccountMendixObject = emailAccountMendixObject; this.context = context; @@ -82,6 +86,9 @@ public static email_connector.proxies.EmailAccount initialize(com.mendix.systemw /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.EmailAccount initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -96,14 +103,16 @@ public static email_connector.proxies.EmailAccount load(com.mendix.systemwideint public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//Email_Connector.EmailAccount" + xpathConstraint)) - result.add(email_connector.proxies.EmailAccount.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> email_connector.proxies.EmailAccount.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -112,6 +121,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -169,6 +179,42 @@ public final void setUsername(com.mendix.systemwideinterfaces.core.IContext cont getMendixObject().setValue(context, MemberNames.Username.toString(), username); } + /** + * @return value of MailAddress + */ + public final java.lang.String getMailAddress() + { + return getMailAddress(getContext()); + } + + /** + * @param context + * @return value of MailAddress + */ + public final java.lang.String getMailAddress(com.mendix.systemwideinterfaces.core.IContext context) + { + return (java.lang.String) getMendixObject().getValue(context, MemberNames.MailAddress.toString()); + } + + /** + * Set value of MailAddress + * @param mailaddress + */ + public final void setMailAddress(java.lang.String mailaddress) + { + setMailAddress(getContext(), mailaddress); + } + + /** + * Set value of MailAddress + * @param context + * @param mailaddress + */ + public final void setMailAddress(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String mailaddress) + { + getMendixObject().setValue(context, MemberNames.MailAddress.toString(), mailaddress); + } + /** * @return value of Password */ @@ -494,75 +540,75 @@ public final void setUseSSLCheckServerIdentity(com.mendix.systemwideinterfaces.c } /** - * @return value of isOAuthUsed + * @return value of IsSharedMailbox */ - public final java.lang.Boolean getisOAuthUsed() + public final java.lang.Boolean getIsSharedMailbox() { - return getisOAuthUsed(getContext()); + return getIsSharedMailbox(getContext()); } /** * @param context - * @return value of isOAuthUsed + * @return value of IsSharedMailbox */ - public final java.lang.Boolean getisOAuthUsed(com.mendix.systemwideinterfaces.core.IContext context) + public final java.lang.Boolean getIsSharedMailbox(com.mendix.systemwideinterfaces.core.IContext context) { - return (java.lang.Boolean) getMendixObject().getValue(context, MemberNames.isOAuthUsed.toString()); + return (java.lang.Boolean) getMendixObject().getValue(context, MemberNames.IsSharedMailbox.toString()); } /** - * Set value of isOAuthUsed - * @param isoauthused + * Set value of IsSharedMailbox + * @param issharedmailbox */ - public final void setisOAuthUsed(java.lang.Boolean isoauthused) + public final void setIsSharedMailbox(java.lang.Boolean issharedmailbox) { - setisOAuthUsed(getContext(), isoauthused); + setIsSharedMailbox(getContext(), issharedmailbox); } /** - * Set value of isOAuthUsed + * Set value of IsSharedMailbox * @param context - * @param isoauthused + * @param issharedmailbox */ - public final void setisOAuthUsed(com.mendix.systemwideinterfaces.core.IContext context, java.lang.Boolean isoauthused) + public final void setIsSharedMailbox(com.mendix.systemwideinterfaces.core.IContext context, java.lang.Boolean issharedmailbox) { - getMendixObject().setValue(context, MemberNames.isOAuthUsed.toString(), isoauthused); + getMendixObject().setValue(context, MemberNames.IsSharedMailbox.toString(), issharedmailbox); } /** - * @return value of OAuthSetupComplete + * @return value of isOAuthUsed */ - public final java.lang.Boolean getOAuthSetupComplete() + public final java.lang.Boolean getisOAuthUsed() { - return getOAuthSetupComplete(getContext()); + return getisOAuthUsed(getContext()); } /** * @param context - * @return value of OAuthSetupComplete + * @return value of isOAuthUsed */ - public final java.lang.Boolean getOAuthSetupComplete(com.mendix.systemwideinterfaces.core.IContext context) + public final java.lang.Boolean getisOAuthUsed(com.mendix.systemwideinterfaces.core.IContext context) { - return (java.lang.Boolean) getMendixObject().getValue(context, MemberNames.OAuthSetupComplete.toString()); + return (java.lang.Boolean) getMendixObject().getValue(context, MemberNames.isOAuthUsed.toString()); } /** - * Set value of OAuthSetupComplete - * @param oauthsetupcomplete + * Set value of isOAuthUsed + * @param isoauthused */ - public final void setOAuthSetupComplete(java.lang.Boolean oauthsetupcomplete) + public final void setisOAuthUsed(java.lang.Boolean isoauthused) { - setOAuthSetupComplete(getContext(), oauthsetupcomplete); + setisOAuthUsed(getContext(), isoauthused); } /** - * Set value of OAuthSetupComplete + * Set value of isOAuthUsed * @param context - * @param oauthsetupcomplete + * @param isoauthused */ - public final void setOAuthSetupComplete(com.mendix.systemwideinterfaces.core.IContext context, java.lang.Boolean oauthsetupcomplete) + public final void setisOAuthUsed(com.mendix.systemwideinterfaces.core.IContext context, java.lang.Boolean isoauthused) { - getMendixObject().setValue(context, MemberNames.OAuthSetupComplete.toString(), oauthsetupcomplete); + getMendixObject().setValue(context, MemberNames.isOAuthUsed.toString(), isoauthused); } /** @@ -602,6 +648,43 @@ public final void setisEmailConfigAutoDetect(com.mendix.systemwideinterfaces.cor } /** + * @return value of ComposeEmail + */ + public final java.lang.Boolean getComposeEmail() + { + return getComposeEmail(getContext()); + } + + /** + * @param context + * @return value of ComposeEmail + */ + public final java.lang.Boolean getComposeEmail(com.mendix.systemwideinterfaces.core.IContext context) + { + return (java.lang.Boolean) getMendixObject().getValue(context, MemberNames.ComposeEmail.toString()); + } + + /** + * Set value of ComposeEmail + * @param composeemail + */ + public final void setComposeEmail(java.lang.Boolean composeemail) + { + setComposeEmail(getContext(), composeemail); + } + + /** + * Set value of ComposeEmail + * @param context + * @param composeemail + */ + public final void setComposeEmail(com.mendix.systemwideinterfaces.core.IContext context, java.lang.Boolean composeemail) + { + getMendixObject().setValue(context, MemberNames.ComposeEmail.toString(), composeemail); + } + + /** + * @throws com.mendix.core.CoreException * @return value of OutgoingEmailConfiguration_EmailAccount */ public final email_connector.proxies.OutgoingEmailConfiguration getOutgoingEmailConfiguration_EmailAccount() throws com.mendix.core.CoreException @@ -612,13 +695,15 @@ public final email_connector.proxies.OutgoingEmailConfiguration getOutgoingEmail /** * @param context * @return value of OutgoingEmailConfiguration_EmailAccount + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.OutgoingEmailConfiguration getOutgoingEmailConfiguration_EmailAccount(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.OutgoingEmailConfiguration result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.OutgoingEmailConfiguration_EmailAccount.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.OutgoingEmailConfiguration.load(context, identifier); + } return result; } @@ -638,13 +723,15 @@ public final void setOutgoingEmailConfiguration_EmailAccount(email_connector.pro */ public final void setOutgoingEmailConfiguration_EmailAccount(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.OutgoingEmailConfiguration outgoingemailconfiguration_emailaccount) { - if (outgoingemailconfiguration_emailaccount == null) + if (outgoingemailconfiguration_emailaccount == null) { getMendixObject().setValue(context, MemberNames.OutgoingEmailConfiguration_EmailAccount.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.OutgoingEmailConfiguration_EmailAccount.toString(), outgoingemailconfiguration_emailaccount.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of IncomingEmailConfiguration_EmailAccount */ public final email_connector.proxies.IncomingEmailConfiguration getIncomingEmailConfiguration_EmailAccount() throws com.mendix.core.CoreException @@ -655,13 +742,15 @@ public final email_connector.proxies.IncomingEmailConfiguration getIncomingEmail /** * @param context * @return value of IncomingEmailConfiguration_EmailAccount + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.IncomingEmailConfiguration getIncomingEmailConfiguration_EmailAccount(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.IncomingEmailConfiguration result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.IncomingEmailConfiguration_EmailAccount.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.IncomingEmailConfiguration.load(context, identifier); + } return result; } @@ -681,13 +770,15 @@ public final void setIncomingEmailConfiguration_EmailAccount(email_connector.pro */ public final void setIncomingEmailConfiguration_EmailAccount(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.IncomingEmailConfiguration incomingemailconfiguration_emailaccount) { - if (incomingemailconfiguration_emailaccount == null) + if (incomingemailconfiguration_emailaccount == null) { getMendixObject().setValue(context, MemberNames.IncomingEmailConfiguration_EmailAccount.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.IncomingEmailConfiguration_EmailAccount.toString(), incomingemailconfiguration_emailaccount.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of Pk12Certificate_EmailAccount */ public final email_connector.proxies.Pk12Certificate getPk12Certificate_EmailAccount() throws com.mendix.core.CoreException @@ -698,13 +789,15 @@ public final email_connector.proxies.Pk12Certificate getPk12Certificate_EmailAcc /** * @param context * @return value of Pk12Certificate_EmailAccount + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.Pk12Certificate getPk12Certificate_EmailAccount(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.Pk12Certificate result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.Pk12Certificate_EmailAccount.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.Pk12Certificate.load(context, identifier); + } return result; } @@ -724,13 +817,15 @@ public final void setPk12Certificate_EmailAccount(email_connector.proxies.Pk12Ce */ public final void setPk12Certificate_EmailAccount(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.Pk12Certificate pk12certificate_emailaccount) { - if (pk12certificate_emailaccount == null) + if (pk12certificate_emailaccount == null) { getMendixObject().setValue(context, MemberNames.Pk12Certificate_EmailAccount.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.Pk12Certificate_EmailAccount.toString(), pk12certificate_emailaccount.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of EmailAccount_LDAPConfiguration */ public final email_connector.proxies.LDAPConfiguration getEmailAccount_LDAPConfiguration() throws com.mendix.core.CoreException @@ -741,13 +836,15 @@ public final email_connector.proxies.LDAPConfiguration getEmailAccount_LDAPConfi /** * @param context * @return value of EmailAccount_LDAPConfiguration + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.LDAPConfiguration getEmailAccount_LDAPConfiguration(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.LDAPConfiguration result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.EmailAccount_LDAPConfiguration.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.LDAPConfiguration.load(context, identifier); + } return result; } @@ -767,13 +864,15 @@ public final void setEmailAccount_LDAPConfiguration(email_connector.proxies.LDAP */ public final void setEmailAccount_LDAPConfiguration(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.LDAPConfiguration emailaccount_ldapconfiguration) { - if (emailaccount_ldapconfiguration == null) + if (emailaccount_ldapconfiguration == null) { getMendixObject().setValue(context, MemberNames.EmailAccount_LDAPConfiguration.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.EmailAccount_LDAPConfiguration.toString(), emailaccount_ldapconfiguration.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of EmailAccount_OAuthProvider */ public final email_connector.proxies.OAuthProvider getEmailAccount_OAuthProvider() throws com.mendix.core.CoreException @@ -784,13 +883,15 @@ public final email_connector.proxies.OAuthProvider getEmailAccount_OAuthProvider /** * @param context * @return value of EmailAccount_OAuthProvider + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.OAuthProvider getEmailAccount_OAuthProvider(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.OAuthProvider result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.EmailAccount_OAuthProvider.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.OAuthProvider.load(context, identifier); + } return result; } @@ -810,13 +911,15 @@ public final void setEmailAccount_OAuthProvider(email_connector.proxies.OAuthPro */ public final void setEmailAccount_OAuthProvider(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.OAuthProvider emailaccount_oauthprovider) { - if (emailaccount_oauthprovider == null) + if (emailaccount_oauthprovider == null) { getMendixObject().setValue(context, MemberNames.EmailAccount_OAuthProvider.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.EmailAccount_OAuthProvider.toString(), emailaccount_oauthprovider.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of EmailAccount_OAuthToken */ public final email_connector.proxies.OAuthToken getEmailAccount_OAuthToken() throws com.mendix.core.CoreException @@ -827,13 +930,15 @@ public final email_connector.proxies.OAuthToken getEmailAccount_OAuthToken() thr /** * @param context * @return value of EmailAccount_OAuthToken + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.OAuthToken getEmailAccount_OAuthToken(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.OAuthToken result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.EmailAccount_OAuthToken.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.OAuthToken.load(context, identifier); + } return result; } @@ -853,10 +958,11 @@ public final void setEmailAccount_OAuthToken(email_connector.proxies.OAuthToken */ public final void setEmailAccount_OAuthToken(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.OAuthToken emailaccount_oauthtoken) { - if (emailaccount_oauthtoken == null) + if (emailaccount_oauthtoken == null) { getMendixObject().setValue(context, MemberNames.EmailAccount_OAuthToken.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.EmailAccount_OAuthToken.toString(), emailaccount_oauthtoken.getMendixObject().getId()); + } } /** @@ -878,9 +984,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.EmailAccount that = (email_connector.proxies.EmailAccount) obj; @@ -900,7 +1006,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.EmailAccount"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/EmailConnectorLog.java b/javasource/email_connector/proxies/EmailConnectorLog.java index 02d6d9e..7e351d7 100644 --- a/javasource/email_connector/proxies/EmailConnectorLog.java +++ b/javasource/email_connector/proxies/EmailConnectorLog.java @@ -30,7 +30,7 @@ public enum MemberNames EmailConnectorLog_EmailMessage("Email_Connector.EmailConnectorLog_EmailMessage"), EmailConnectorLog_EmailAccount("Email_Connector.EmailConnectorLog_EmailAccount"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -46,15 +46,17 @@ public java.lang.String toString() public EmailConnectorLog(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.EmailConnectorLog")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected EmailConnectorLog(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject emailConnectorLogMendixObject) { - if (emailConnectorLogMendixObject == null) + if (emailConnectorLogMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.EmailConnectorLog", emailConnectorLogMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.EmailConnectorLog"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, emailConnectorLogMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.emailConnectorLogMendixObject = emailConnectorLogMendixObject; this.context = context; @@ -72,6 +74,9 @@ public static email_connector.proxies.EmailConnectorLog initialize(com.mendix.sy /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.EmailConnectorLog initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -86,14 +91,16 @@ public static email_connector.proxies.EmailConnectorLog load(com.mendix.systemwi public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//Email_Connector.EmailConnectorLog" + xpathConstraint)) - result.add(email_connector.proxies.EmailConnectorLog.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> email_connector.proxies.EmailConnectorLog.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -102,6 +109,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -175,9 +183,9 @@ public final email_connector.proxies.ENUM_LogType getLogtype() public final email_connector.proxies.ENUM_LogType getLogtype(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.Logtype.toString()); - if (obj == null) + if (obj == null) { return null; - + } return email_connector.proxies.ENUM_LogType.valueOf((java.lang.String) obj); } @@ -197,10 +205,11 @@ public final void setLogtype(email_connector.proxies.ENUM_LogType logtype) */ public final void setLogtype(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.ENUM_LogType logtype) { - if (logtype != null) + if (logtype != null) { getMendixObject().setValue(context, MemberNames.Logtype.toString(), logtype.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.Logtype.toString(), null); + } } /** @@ -384,6 +393,7 @@ public final void setIsUnread(com.mendix.systemwideinterfaces.core.IContext cont } /** + * @throws com.mendix.core.CoreException * @return value of EmailConnectorLog_EmailMessage */ public final email_connector.proxies.EmailMessage getEmailConnectorLog_EmailMessage() throws com.mendix.core.CoreException @@ -394,13 +404,15 @@ public final email_connector.proxies.EmailMessage getEmailConnectorLog_EmailMess /** * @param context * @return value of EmailConnectorLog_EmailMessage + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.EmailMessage getEmailConnectorLog_EmailMessage(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.EmailMessage result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.EmailConnectorLog_EmailMessage.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.EmailMessage.load(context, identifier); + } return result; } @@ -420,13 +432,15 @@ public final void setEmailConnectorLog_EmailMessage(email_connector.proxies.Emai */ public final void setEmailConnectorLog_EmailMessage(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.EmailMessage emailconnectorlog_emailmessage) { - if (emailconnectorlog_emailmessage == null) + if (emailconnectorlog_emailmessage == null) { getMendixObject().setValue(context, MemberNames.EmailConnectorLog_EmailMessage.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.EmailConnectorLog_EmailMessage.toString(), emailconnectorlog_emailmessage.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of EmailConnectorLog_EmailAccount */ public final email_connector.proxies.EmailAccount getEmailConnectorLog_EmailAccount() throws com.mendix.core.CoreException @@ -437,13 +451,15 @@ public final email_connector.proxies.EmailAccount getEmailConnectorLog_EmailAcco /** * @param context * @return value of EmailConnectorLog_EmailAccount + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.EmailAccount getEmailConnectorLog_EmailAccount(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.EmailAccount result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.EmailConnectorLog_EmailAccount.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.EmailAccount.load(context, identifier); + } return result; } @@ -463,10 +479,11 @@ public final void setEmailConnectorLog_EmailAccount(email_connector.proxies.Emai */ public final void setEmailConnectorLog_EmailAccount(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.EmailAccount emailconnectorlog_emailaccount) { - if (emailconnectorlog_emailaccount == null) + if (emailconnectorlog_emailaccount == null) { getMendixObject().setValue(context, MemberNames.EmailConnectorLog_EmailAccount.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.EmailConnectorLog_EmailAccount.toString(), emailconnectorlog_emailaccount.getMendixObject().getId()); + } } /** @@ -488,9 +505,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.EmailConnectorLog that = (email_connector.proxies.EmailConnectorLog) obj; @@ -510,7 +527,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.EmailConnectorLog"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/EmailMessage.java b/javasource/email_connector/proxies/EmailMessage.java index e5679e7..104f4c1 100644 --- a/javasource/email_connector/proxies/EmailMessage.java +++ b/javasource/email_connector/proxies/EmailMessage.java @@ -45,7 +45,7 @@ public enum MemberNames EmailMessage_EmailTemplate("Email_Connector.EmailMessage_EmailTemplate"), EmailMessage_EmailAccount("Email_Connector.EmailMessage_EmailAccount"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -61,15 +61,17 @@ public java.lang.String toString() public EmailMessage(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.EmailMessage")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected EmailMessage(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject emailMessageMendixObject) { - if (emailMessageMendixObject == null) + if (emailMessageMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.EmailMessage", emailMessageMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.EmailMessage"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, emailMessageMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.emailMessageMendixObject = emailMessageMendixObject; this.context = context; @@ -87,6 +89,9 @@ public static email_connector.proxies.EmailMessage initialize(com.mendix.systemw /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.EmailMessage initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -101,14 +106,16 @@ public static email_connector.proxies.EmailMessage load(com.mendix.systemwideint public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//Email_Connector.EmailMessage" + xpathConstraint)) - result.add(email_connector.proxies.EmailMessage.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> email_connector.proxies.EmailMessage.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -117,6 +124,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -802,9 +810,9 @@ public final email_connector.proxies.ENUM_EmailStatus getStatus() public final email_connector.proxies.ENUM_EmailStatus getStatus(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.Status.toString()); - if (obj == null) + if (obj == null) { return null; - + } return email_connector.proxies.ENUM_EmailStatus.valueOf((java.lang.String) obj); } @@ -824,10 +832,11 @@ public final void setStatus(email_connector.proxies.ENUM_EmailStatus status) */ public final void setStatus(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.ENUM_EmailStatus status) { - if (status != null) + if (status != null) { getMendixObject().setValue(context, MemberNames.Status.toString(), status.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.Status.toString(), null); + } } /** @@ -939,6 +948,7 @@ public final void setRecipientsToggle(com.mendix.systemwideinterfaces.core.ICont } /** + * @throws com.mendix.core.CoreException * @return value of EmailMessage_EmailTemplate */ public final email_connector.proxies.EmailTemplate getEmailMessage_EmailTemplate() throws com.mendix.core.CoreException @@ -949,13 +959,15 @@ public final email_connector.proxies.EmailTemplate getEmailMessage_EmailTemplate /** * @param context * @return value of EmailMessage_EmailTemplate + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.EmailTemplate getEmailMessage_EmailTemplate(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.EmailTemplate result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.EmailMessage_EmailTemplate.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.EmailTemplate.load(context, identifier); + } return result; } @@ -975,13 +987,15 @@ public final void setEmailMessage_EmailTemplate(email_connector.proxies.EmailTem */ public final void setEmailMessage_EmailTemplate(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.EmailTemplate emailmessage_emailtemplate) { - if (emailmessage_emailtemplate == null) + if (emailmessage_emailtemplate == null) { getMendixObject().setValue(context, MemberNames.EmailMessage_EmailTemplate.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.EmailMessage_EmailTemplate.toString(), emailmessage_emailtemplate.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of EmailMessage_EmailAccount */ public final email_connector.proxies.EmailAccount getEmailMessage_EmailAccount() throws com.mendix.core.CoreException @@ -992,13 +1006,15 @@ public final email_connector.proxies.EmailAccount getEmailMessage_EmailAccount() /** * @param context * @return value of EmailMessage_EmailAccount + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.EmailAccount getEmailMessage_EmailAccount(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.EmailAccount result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.EmailMessage_EmailAccount.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.EmailAccount.load(context, identifier); + } return result; } @@ -1018,10 +1034,11 @@ public final void setEmailMessage_EmailAccount(email_connector.proxies.EmailAcco */ public final void setEmailMessage_EmailAccount(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.EmailAccount emailmessage_emailaccount) { - if (emailmessage_emailaccount == null) + if (emailmessage_emailaccount == null) { getMendixObject().setValue(context, MemberNames.EmailMessage_EmailAccount.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.EmailMessage_EmailAccount.toString(), emailmessage_emailaccount.getMendixObject().getId()); + } } /** @@ -1043,9 +1060,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.EmailMessage that = (email_connector.proxies.EmailMessage) obj; @@ -1065,7 +1082,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.EmailMessage"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/EmailProvider.java b/javasource/email_connector/proxies/EmailProvider.java index e7b29aa..f4cea33 100644 --- a/javasource/email_connector/proxies/EmailProvider.java +++ b/javasource/email_connector/proxies/EmailProvider.java @@ -21,15 +21,18 @@ public class EmailProvider public enum MemberNames { Username("Username"), + MailAddress("MailAddress"), Password("Password"), ReceiveEmails("ReceiveEmails"), SendEmails("SendEmails"), FromDisplayName("FromDisplayName"), isOAuthUsed("isOAuthUsed"), + IsSharedMailbox("IsSharedMailbox"), + AuthType("AuthType"), SelectedConfiguration_EmailProvider("Email_Connector.SelectedConfiguration_EmailProvider"), EmailProvider_OAuthProvider("Email_Connector.EmailProvider_OAuthProvider"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -45,15 +48,17 @@ public java.lang.String toString() public EmailProvider(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.EmailProvider")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected EmailProvider(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject emailProviderMendixObject) { - if (emailProviderMendixObject == null) + if (emailProviderMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.EmailProvider", emailProviderMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.EmailProvider"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, emailProviderMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.emailProviderMendixObject = emailProviderMendixObject; this.context = context; @@ -71,6 +76,9 @@ public static email_connector.proxies.EmailProvider initialize(com.mendix.system /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.EmailProvider initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -85,6 +93,7 @@ public static email_connector.proxies.EmailProvider load(com.mendix.systemwidein /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -93,6 +102,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -150,6 +160,42 @@ public final void setUsername(com.mendix.systemwideinterfaces.core.IContext cont getMendixObject().setValue(context, MemberNames.Username.toString(), username); } + /** + * @return value of MailAddress + */ + public final java.lang.String getMailAddress() + { + return getMailAddress(getContext()); + } + + /** + * @param context + * @return value of MailAddress + */ + public final java.lang.String getMailAddress(com.mendix.systemwideinterfaces.core.IContext context) + { + return (java.lang.String) getMendixObject().getValue(context, MemberNames.MailAddress.toString()); + } + + /** + * Set value of MailAddress + * @param mailaddress + */ + public final void setMailAddress(java.lang.String mailaddress) + { + setMailAddress(getContext(), mailaddress); + } + + /** + * Set value of MailAddress + * @param context + * @param mailaddress + */ + public final void setMailAddress(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String mailaddress) + { + getMendixObject().setValue(context, MemberNames.MailAddress.toString(), mailaddress); + } + /** * @return value of Password */ @@ -331,6 +377,88 @@ public final void setisOAuthUsed(com.mendix.systemwideinterfaces.core.IContext c } /** + * @return value of IsSharedMailbox + */ + public final java.lang.Boolean getIsSharedMailbox() + { + return getIsSharedMailbox(getContext()); + } + + /** + * @param context + * @return value of IsSharedMailbox + */ + public final java.lang.Boolean getIsSharedMailbox(com.mendix.systemwideinterfaces.core.IContext context) + { + return (java.lang.Boolean) getMendixObject().getValue(context, MemberNames.IsSharedMailbox.toString()); + } + + /** + * Set value of IsSharedMailbox + * @param issharedmailbox + */ + public final void setIsSharedMailbox(java.lang.Boolean issharedmailbox) + { + setIsSharedMailbox(getContext(), issharedmailbox); + } + + /** + * Set value of IsSharedMailbox + * @param context + * @param issharedmailbox + */ + public final void setIsSharedMailbox(com.mendix.systemwideinterfaces.core.IContext context, java.lang.Boolean issharedmailbox) + { + getMendixObject().setValue(context, MemberNames.IsSharedMailbox.toString(), issharedmailbox); + } + + /** + * Set value of AuthType + * @param authtype + */ + public final email_connector.proxies.ENUM_OAuthType getAuthType() + { + return getAuthType(getContext()); + } + + /** + * @param context + * @return value of AuthType + */ + public final email_connector.proxies.ENUM_OAuthType getAuthType(com.mendix.systemwideinterfaces.core.IContext context) + { + Object obj = getMendixObject().getValue(context, MemberNames.AuthType.toString()); + if (obj == null) { + return null; + } + return email_connector.proxies.ENUM_OAuthType.valueOf((java.lang.String) obj); + } + + /** + * Set value of AuthType + * @param authtype + */ + public final void setAuthType(email_connector.proxies.ENUM_OAuthType authtype) + { + setAuthType(getContext(), authtype); + } + + /** + * Set value of AuthType + * @param context + * @param authtype + */ + public final void setAuthType(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.ENUM_OAuthType authtype) + { + if (authtype != null) { + getMendixObject().setValue(context, MemberNames.AuthType.toString(), authtype.toString()); + } else { + getMendixObject().setValue(context, MemberNames.AuthType.toString(), null); + } + } + + /** + * @throws com.mendix.core.CoreException * @return value of SelectedConfiguration_EmailProvider */ public final email_connector.proxies.SelectedConfiguration getSelectedConfiguration_EmailProvider() throws com.mendix.core.CoreException @@ -341,13 +469,15 @@ public final email_connector.proxies.SelectedConfiguration getSelectedConfigurat /** * @param context * @return value of SelectedConfiguration_EmailProvider + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.SelectedConfiguration getSelectedConfiguration_EmailProvider(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.SelectedConfiguration result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.SelectedConfiguration_EmailProvider.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.SelectedConfiguration.load(context, identifier); + } return result; } @@ -367,13 +497,15 @@ public final void setSelectedConfiguration_EmailProvider(email_connector.proxies */ public final void setSelectedConfiguration_EmailProvider(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.SelectedConfiguration selectedconfiguration_emailprovider) { - if (selectedconfiguration_emailprovider == null) + if (selectedconfiguration_emailprovider == null) { getMendixObject().setValue(context, MemberNames.SelectedConfiguration_EmailProvider.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.SelectedConfiguration_EmailProvider.toString(), selectedconfiguration_emailprovider.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of EmailProvider_OAuthProvider */ public final email_connector.proxies.OAuthProvider getEmailProvider_OAuthProvider() throws com.mendix.core.CoreException @@ -384,13 +516,15 @@ public final email_connector.proxies.OAuthProvider getEmailProvider_OAuthProvide /** * @param context * @return value of EmailProvider_OAuthProvider + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.OAuthProvider getEmailProvider_OAuthProvider(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.OAuthProvider result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.EmailProvider_OAuthProvider.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.OAuthProvider.load(context, identifier); + } return result; } @@ -410,10 +544,11 @@ public final void setEmailProvider_OAuthProvider(email_connector.proxies.OAuthPr */ public final void setEmailProvider_OAuthProvider(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.OAuthProvider emailprovider_oauthprovider) { - if (emailprovider_oauthprovider == null) + if (emailprovider_oauthprovider == null) { getMendixObject().setValue(context, MemberNames.EmailProvider_OAuthProvider.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.EmailProvider_OAuthProvider.toString(), emailprovider_oauthprovider.getMendixObject().getId()); + } } /** @@ -435,9 +570,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.EmailProvider that = (email_connector.proxies.EmailProvider) obj; @@ -457,7 +592,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.EmailProvider"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/EmailTemplate.java b/javasource/email_connector/proxies/EmailTemplate.java index edae2a5..f4adb97 100644 --- a/javasource/email_connector/proxies/EmailTemplate.java +++ b/javasource/email_connector/proxies/EmailTemplate.java @@ -40,7 +40,7 @@ public enum MemberNames EmailTemplate_Token("Email_Connector.EmailTemplate_Token"), EmailTemplate_MxObjectType("Email_Connector.EmailTemplate_MxObjectType"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -56,15 +56,17 @@ public java.lang.String toString() public EmailTemplate(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.EmailTemplate")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected EmailTemplate(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject emailTemplateMendixObject) { - if (emailTemplateMendixObject == null) + if (emailTemplateMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.EmailTemplate", emailTemplateMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.EmailTemplate"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, emailTemplateMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.emailTemplateMendixObject = emailTemplateMendixObject; this.context = context; @@ -82,6 +84,9 @@ public static email_connector.proxies.EmailTemplate initialize(com.mendix.system /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.EmailTemplate initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -96,14 +101,16 @@ public static email_connector.proxies.EmailTemplate load(com.mendix.systemwidein public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//Email_Connector.EmailTemplate" + xpathConstraint)) - result.add(email_connector.proxies.EmailTemplate.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> email_connector.proxies.EmailTemplate.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -112,6 +119,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -746,6 +754,7 @@ public final void setFromAddress(com.mendix.systemwideinterfaces.core.IContext c } /** + * @throws com.mendix.core.CoreException * @return value of EmailTemplate_Token */ public final java.util.List getEmailTemplate_Token() throws com.mendix.core.CoreException @@ -756,16 +765,19 @@ public final java.util.List getEmailTemplate_To /** * @param context * @return value of EmailTemplate_Token + * @throws com.mendix.core.CoreException */ @SuppressWarnings("unchecked") public final java.util.List getEmailTemplate_Token(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); + java.util.List result = new java.util.ArrayList<>(); Object valueObject = getMendixObject().getValue(context, MemberNames.EmailTemplate_Token.toString()); - if (valueObject == null) + if (valueObject == null) { return result; - for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) + } + for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) { result.add(mxmodelreflection.proxies.Token.initialize(context, mendixObject)); + } return result; } @@ -785,13 +797,16 @@ public final void setEmailTemplate_Token(java.util.List emailtemplate_token) { - java.util.List identifiers = new java.util.ArrayList(); - for (mxmodelreflection.proxies.Token proxyObject : emailtemplate_token) - identifiers.add(proxyObject.getMendixObject().getId()); + var identifiers = emailtemplate_token + .stream() + .map(proxyObject -> proxyObject.getMendixObject().getId()) + .collect(java.util.stream.Collectors.toList()); + getMendixObject().setValue(context, MemberNames.EmailTemplate_Token.toString(), identifiers); } /** + * @throws com.mendix.core.CoreException * @return value of EmailTemplate_MxObjectType */ public final mxmodelreflection.proxies.MxObjectType getEmailTemplate_MxObjectType() throws com.mendix.core.CoreException @@ -802,13 +817,15 @@ public final mxmodelreflection.proxies.MxObjectType getEmailTemplate_MxObjectTyp /** * @param context * @return value of EmailTemplate_MxObjectType + * @throws com.mendix.core.CoreException */ public final mxmodelreflection.proxies.MxObjectType getEmailTemplate_MxObjectType(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { mxmodelreflection.proxies.MxObjectType result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.EmailTemplate_MxObjectType.toString()); - if (identifier != null) + if (identifier != null) { result = mxmodelreflection.proxies.MxObjectType.load(context, identifier); + } return result; } @@ -828,10 +845,11 @@ public final void setEmailTemplate_MxObjectType(mxmodelreflection.proxies.MxObje */ public final void setEmailTemplate_MxObjectType(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.MxObjectType emailtemplate_mxobjecttype) { - if (emailtemplate_mxobjecttype == null) + if (emailtemplate_mxobjecttype == null) { getMendixObject().setValue(context, MemberNames.EmailTemplate_MxObjectType.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.EmailTemplate_MxObjectType.toString(), emailtemplate_mxobjecttype.getMendixObject().getId()); + } } /** @@ -853,9 +871,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.EmailTemplate that = (email_connector.proxies.EmailTemplate) obj; @@ -875,7 +893,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.EmailTemplate"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/Folder.java b/javasource/email_connector/proxies/Folder.java index 1a54525..38ef28f 100644 --- a/javasource/email_connector/proxies/Folder.java +++ b/javasource/email_connector/proxies/Folder.java @@ -22,7 +22,7 @@ public enum MemberNames { Name("Name"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -38,15 +38,17 @@ public java.lang.String toString() public Folder(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.Folder")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected Folder(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject folderMendixObject) { - if (folderMendixObject == null) + if (folderMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.Folder", folderMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.Folder"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, folderMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.folderMendixObject = folderMendixObject; this.context = context; @@ -64,6 +66,9 @@ public static email_connector.proxies.Folder initialize(com.mendix.systemwideint /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.Folder initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -78,6 +83,7 @@ public static email_connector.proxies.Folder load(com.mendix.systemwideinterface /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -86,6 +92,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -162,9 +169,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.Folder that = (email_connector.proxies.Folder) obj; @@ -184,7 +191,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.Folder"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/IncomingEmailConfiguration.java b/javasource/email_connector/proxies/IncomingEmailConfiguration.java index 95e3aff..d0192d9 100644 --- a/javasource/email_connector/proxies/IncomingEmailConfiguration.java +++ b/javasource/email_connector/proxies/IncomingEmailConfiguration.java @@ -33,7 +33,7 @@ public enum MemberNames ServerPort("ServerPort"), IncomingEmailConfiguration_EmailAccount("Email_Connector.IncomingEmailConfiguration_EmailAccount"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -49,15 +49,17 @@ public java.lang.String toString() public IncomingEmailConfiguration(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.IncomingEmailConfiguration")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected IncomingEmailConfiguration(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject incomingEmailConfigurationMendixObject) { - if (incomingEmailConfigurationMendixObject == null) + if (incomingEmailConfigurationMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.IncomingEmailConfiguration", incomingEmailConfigurationMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.IncomingEmailConfiguration"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, incomingEmailConfigurationMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.incomingEmailConfigurationMendixObject = incomingEmailConfigurationMendixObject; this.context = context; @@ -75,6 +77,9 @@ public static email_connector.proxies.IncomingEmailConfiguration initialize(com. /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.IncomingEmailConfiguration initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -89,14 +94,16 @@ public static email_connector.proxies.IncomingEmailConfiguration load(com.mendix public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//Email_Connector.IncomingEmailConfiguration" + xpathConstraint)) - result.add(email_connector.proxies.IncomingEmailConfiguration.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> email_connector.proxies.IncomingEmailConfiguration.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -105,6 +112,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -142,9 +150,9 @@ public final email_connector.proxies.ENUM_IncomingProtocol getIncomingProtocol() public final email_connector.proxies.ENUM_IncomingProtocol getIncomingProtocol(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.IncomingProtocol.toString()); - if (obj == null) + if (obj == null) { return null; - + } return email_connector.proxies.ENUM_IncomingProtocol.valueOf((java.lang.String) obj); } @@ -164,10 +172,11 @@ public final void setIncomingProtocol(email_connector.proxies.ENUM_IncomingProto */ public final void setIncomingProtocol(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.ENUM_IncomingProtocol incomingprotocol) { - if (incomingprotocol != null) + if (incomingprotocol != null) { getMendixObject().setValue(context, MemberNames.IncomingProtocol.toString(), incomingprotocol.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.IncomingProtocol.toString(), null); + } } /** @@ -294,9 +303,9 @@ public final email_connector.proxies.ENUM_MessageHandling getHandling() public final email_connector.proxies.ENUM_MessageHandling getHandling(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.Handling.toString()); - if (obj == null) + if (obj == null) { return null; - + } return email_connector.proxies.ENUM_MessageHandling.valueOf((java.lang.String) obj); } @@ -316,10 +325,11 @@ public final void setHandling(email_connector.proxies.ENUM_MessageHandling handl */ public final void setHandling(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.ENUM_MessageHandling handling) { - if (handling != null) + if (handling != null) { getMendixObject().setValue(context, MemberNames.Handling.toString(), handling.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.Handling.toString(), null); + } } /** @@ -410,9 +420,9 @@ public final email_connector.proxies.ENUM_FetchStrategy getFetchStrategy() public final email_connector.proxies.ENUM_FetchStrategy getFetchStrategy(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.FetchStrategy.toString()); - if (obj == null) + if (obj == null) { return null; - + } return email_connector.proxies.ENUM_FetchStrategy.valueOf((java.lang.String) obj); } @@ -432,10 +442,11 @@ public final void setFetchStrategy(email_connector.proxies.ENUM_FetchStrategy fe */ public final void setFetchStrategy(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.ENUM_FetchStrategy fetchstrategy) { - if (fetchstrategy != null) + if (fetchstrategy != null) { getMendixObject().setValue(context, MemberNames.FetchStrategy.toString(), fetchstrategy.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.FetchStrategy.toString(), null); + } } /** @@ -547,6 +558,7 @@ public final void setServerPort(com.mendix.systemwideinterfaces.core.IContext co } /** + * @throws com.mendix.core.CoreException * @return value of IncomingEmailConfiguration_EmailAccount */ public final email_connector.proxies.EmailAccount getIncomingEmailConfiguration_EmailAccount() throws com.mendix.core.CoreException @@ -557,13 +569,15 @@ public final email_connector.proxies.EmailAccount getIncomingEmailConfiguration_ /** * @param context * @return value of IncomingEmailConfiguration_EmailAccount + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.EmailAccount getIncomingEmailConfiguration_EmailAccount(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.EmailAccount result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.IncomingEmailConfiguration_EmailAccount.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.EmailAccount.load(context, identifier); + } return result; } @@ -583,10 +597,11 @@ public final void setIncomingEmailConfiguration_EmailAccount(email_connector.pro */ public final void setIncomingEmailConfiguration_EmailAccount(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.EmailAccount incomingemailconfiguration_emailaccount) { - if (incomingemailconfiguration_emailaccount == null) + if (incomingemailconfiguration_emailaccount == null) { getMendixObject().setValue(context, MemberNames.IncomingEmailConfiguration_EmailAccount.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.IncomingEmailConfiguration_EmailAccount.toString(), incomingemailconfiguration_emailaccount.getMendixObject().getId()); + } } /** @@ -608,9 +623,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.IncomingEmailConfiguration that = (email_connector.proxies.IncomingEmailConfiguration) obj; @@ -630,7 +645,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.IncomingEmailConfiguration"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/IncomingServer.java b/javasource/email_connector/proxies/IncomingServer.java index e6174ee..4f9fe01 100644 --- a/javasource/email_connector/proxies/IncomingServer.java +++ b/javasource/email_connector/proxies/IncomingServer.java @@ -29,7 +29,7 @@ public enum MemberNames SelectedIncomingServer("SelectedIncomingServer"), IncomingServer_EmailProvider("Email_Connector.IncomingServer_EmailProvider"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -45,15 +45,17 @@ public java.lang.String toString() public IncomingServer(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.IncomingServer")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected IncomingServer(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject incomingServerMendixObject) { - if (incomingServerMendixObject == null) + if (incomingServerMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.IncomingServer", incomingServerMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.IncomingServer"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, incomingServerMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.incomingServerMendixObject = incomingServerMendixObject; this.context = context; @@ -71,6 +73,9 @@ public static email_connector.proxies.IncomingServer initialize(com.mendix.syste /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.IncomingServer initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -85,6 +90,7 @@ public static email_connector.proxies.IncomingServer load(com.mendix.systemwidei /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -93,6 +99,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -238,9 +245,9 @@ public final email_connector.proxies.ENUM_IncomingProtocol getIncomingProtocol() public final email_connector.proxies.ENUM_IncomingProtocol getIncomingProtocol(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.IncomingProtocol.toString()); - if (obj == null) + if (obj == null) { return null; - + } return email_connector.proxies.ENUM_IncomingProtocol.valueOf((java.lang.String) obj); } @@ -260,10 +267,11 @@ public final void setIncomingProtocol(email_connector.proxies.ENUM_IncomingProto */ public final void setIncomingProtocol(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.ENUM_IncomingProtocol incomingprotocol) { - if (incomingprotocol != null) + if (incomingprotocol != null) { getMendixObject().setValue(context, MemberNames.IncomingProtocol.toString(), incomingprotocol.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.IncomingProtocol.toString(), null); + } } /** @@ -375,6 +383,7 @@ public final void setSelectedIncomingServer(com.mendix.systemwideinterfaces.core } /** + * @throws com.mendix.core.CoreException * @return value of IncomingServer_EmailProvider */ public final email_connector.proxies.EmailProvider getIncomingServer_EmailProvider() throws com.mendix.core.CoreException @@ -385,13 +394,15 @@ public final email_connector.proxies.EmailProvider getIncomingServer_EmailProvid /** * @param context * @return value of IncomingServer_EmailProvider + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.EmailProvider getIncomingServer_EmailProvider(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.EmailProvider result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.IncomingServer_EmailProvider.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.EmailProvider.load(context, identifier); + } return result; } @@ -411,10 +422,11 @@ public final void setIncomingServer_EmailProvider(email_connector.proxies.EmailP */ public final void setIncomingServer_EmailProvider(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.EmailProvider incomingserver_emailprovider) { - if (incomingserver_emailprovider == null) + if (incomingserver_emailprovider == null) { getMendixObject().setValue(context, MemberNames.IncomingServer_EmailProvider.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.IncomingServer_EmailProvider.toString(), incomingserver_emailprovider.getMendixObject().getId()); + } } /** @@ -436,9 +448,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.IncomingServer that = (email_connector.proxies.IncomingServer) obj; @@ -458,7 +470,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.IncomingServer"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/LDAPBaseDN.java b/javasource/email_connector/proxies/LDAPBaseDN.java index e41ea25..c6dfe17 100644 --- a/javasource/email_connector/proxies/LDAPBaseDN.java +++ b/javasource/email_connector/proxies/LDAPBaseDN.java @@ -22,7 +22,7 @@ public enum MemberNames { Name("Name"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -38,15 +38,17 @@ public java.lang.String toString() public LDAPBaseDN(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.LDAPBaseDN")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected LDAPBaseDN(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject lDAPBaseDNMendixObject) { - if (lDAPBaseDNMendixObject == null) + if (lDAPBaseDNMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.LDAPBaseDN", lDAPBaseDNMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.LDAPBaseDN"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, lDAPBaseDNMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.lDAPBaseDNMendixObject = lDAPBaseDNMendixObject; this.context = context; @@ -64,6 +66,9 @@ public static email_connector.proxies.LDAPBaseDN initialize(com.mendix.systemwid /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.LDAPBaseDN initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -78,6 +83,7 @@ public static email_connector.proxies.LDAPBaseDN load(com.mendix.systemwideinter /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -86,6 +92,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -162,9 +169,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.LDAPBaseDN that = (email_connector.proxies.LDAPBaseDN) obj; @@ -184,7 +191,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.LDAPBaseDN"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/LDAPConfiguration.java b/javasource/email_connector/proxies/LDAPConfiguration.java index 425415f..95a3a6d 100644 --- a/javasource/email_connector/proxies/LDAPConfiguration.java +++ b/javasource/email_connector/proxies/LDAPConfiguration.java @@ -29,7 +29,7 @@ public enum MemberNames AuthType("AuthType"), EmailAccount_LDAPConfiguration("Email_Connector.EmailAccount_LDAPConfiguration"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -45,15 +45,17 @@ public java.lang.String toString() public LDAPConfiguration(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.LDAPConfiguration")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected LDAPConfiguration(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject lDAPConfigurationMendixObject) { - if (lDAPConfigurationMendixObject == null) + if (lDAPConfigurationMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.LDAPConfiguration", lDAPConfigurationMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.LDAPConfiguration"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, lDAPConfigurationMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.lDAPConfigurationMendixObject = lDAPConfigurationMendixObject; this.context = context; @@ -71,6 +73,9 @@ public static email_connector.proxies.LDAPConfiguration initialize(com.mendix.sy /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.LDAPConfiguration initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -85,14 +90,16 @@ public static email_connector.proxies.LDAPConfiguration load(com.mendix.systemwi public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//Email_Connector.LDAPConfiguration" + xpathConstraint)) - result.add(email_connector.proxies.LDAPConfiguration.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> email_connector.proxies.LDAPConfiguration.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -101,6 +108,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -354,9 +362,9 @@ public final email_connector.proxies.ENUM_LDAPAuthType getAuthType() public final email_connector.proxies.ENUM_LDAPAuthType getAuthType(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.AuthType.toString()); - if (obj == null) + if (obj == null) { return null; - + } return email_connector.proxies.ENUM_LDAPAuthType.valueOf((java.lang.String) obj); } @@ -376,13 +384,15 @@ public final void setAuthType(email_connector.proxies.ENUM_LDAPAuthType authtype */ public final void setAuthType(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.ENUM_LDAPAuthType authtype) { - if (authtype != null) + if (authtype != null) { getMendixObject().setValue(context, MemberNames.AuthType.toString(), authtype.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.AuthType.toString(), null); + } } /** + * @throws com.mendix.core.CoreException * @return value of EmailAccount_LDAPConfiguration */ public final email_connector.proxies.EmailAccount getEmailAccount_LDAPConfiguration() throws com.mendix.core.CoreException @@ -393,13 +403,15 @@ public final email_connector.proxies.EmailAccount getEmailAccount_LDAPConfigurat /** * @param context * @return value of EmailAccount_LDAPConfiguration + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.EmailAccount getEmailAccount_LDAPConfiguration(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.EmailAccount result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.EmailAccount_LDAPConfiguration.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.EmailAccount.load(context, identifier); + } return result; } @@ -419,10 +431,11 @@ public final void setEmailAccount_LDAPConfiguration(email_connector.proxies.Emai */ public final void setEmailAccount_LDAPConfiguration(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.EmailAccount emailaccount_ldapconfiguration) { - if (emailaccount_ldapconfiguration == null) + if (emailaccount_ldapconfiguration == null) { getMendixObject().setValue(context, MemberNames.EmailAccount_LDAPConfiguration.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.EmailAccount_LDAPConfiguration.toString(), emailaccount_ldapconfiguration.getMendixObject().getId()); + } } /** @@ -444,9 +457,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.LDAPConfiguration that = (email_connector.proxies.LDAPConfiguration) obj; @@ -466,7 +479,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.LDAPConfiguration"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/ModelReflectionChecker.java b/javasource/email_connector/proxies/ModelReflectionChecker.java index 60fabab..3cd6b77 100644 --- a/javasource/email_connector/proxies/ModelReflectionChecker.java +++ b/javasource/email_connector/proxies/ModelReflectionChecker.java @@ -23,7 +23,7 @@ public enum MemberNames ModelReflectionSynced("ModelReflectionSynced"), ModelReflectionChecker_EmailTemplate("Email_Connector.ModelReflectionChecker_EmailTemplate"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -39,15 +39,17 @@ public java.lang.String toString() public ModelReflectionChecker(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.ModelReflectionChecker")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected ModelReflectionChecker(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject modelReflectionCheckerMendixObject) { - if (modelReflectionCheckerMendixObject == null) + if (modelReflectionCheckerMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.ModelReflectionChecker", modelReflectionCheckerMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.ModelReflectionChecker"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, modelReflectionCheckerMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.modelReflectionCheckerMendixObject = modelReflectionCheckerMendixObject; this.context = context; @@ -65,6 +67,9 @@ public static email_connector.proxies.ModelReflectionChecker initialize(com.mend /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.ModelReflectionChecker initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -79,6 +84,7 @@ public static email_connector.proxies.ModelReflectionChecker load(com.mendix.sys /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -87,6 +93,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -145,6 +152,7 @@ public final void setModelReflectionSynced(com.mendix.systemwideinterfaces.core. } /** + * @throws com.mendix.core.CoreException * @return value of ModelReflectionChecker_EmailTemplate */ public final email_connector.proxies.EmailTemplate getModelReflectionChecker_EmailTemplate() throws com.mendix.core.CoreException @@ -155,13 +163,15 @@ public final email_connector.proxies.EmailTemplate getModelReflectionChecker_Ema /** * @param context * @return value of ModelReflectionChecker_EmailTemplate + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.EmailTemplate getModelReflectionChecker_EmailTemplate(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.EmailTemplate result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.ModelReflectionChecker_EmailTemplate.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.EmailTemplate.load(context, identifier); + } return result; } @@ -181,10 +191,11 @@ public final void setModelReflectionChecker_EmailTemplate(email_connector.proxie */ public final void setModelReflectionChecker_EmailTemplate(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.EmailTemplate modelreflectionchecker_emailtemplate) { - if (modelreflectionchecker_emailtemplate == null) + if (modelreflectionchecker_emailtemplate == null) { getMendixObject().setValue(context, MemberNames.ModelReflectionChecker_EmailTemplate.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.ModelReflectionChecker_EmailTemplate.toString(), modelreflectionchecker_emailtemplate.getMendixObject().getId()); + } } /** @@ -206,9 +217,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.ModelReflectionChecker that = (email_connector.proxies.ModelReflectionChecker) obj; @@ -228,7 +239,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.ModelReflectionChecker"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/OAuthError.java b/javasource/email_connector/proxies/OAuthError.java deleted file mode 100644 index 57b2c1b..0000000 --- a/javasource/email_connector/proxies/OAuthError.java +++ /dev/null @@ -1,244 +0,0 @@ -// This file was generated by Mendix Studio Pro. -// -// WARNING: Code you write here will be lost the next time you deploy the project. - -package email_connector.proxies; - -public class OAuthError -{ - private final com.mendix.systemwideinterfaces.core.IMendixObject oAuthErrorMendixObject; - - private final com.mendix.systemwideinterfaces.core.IContext context; - - /** - * Internal name of this entity - */ - public static final java.lang.String entityName = "Email_Connector.OAuthError"; - - /** - * Enum describing members of this entity - */ - public enum MemberNames - { - HTTPStatusCode("HTTPStatusCode"), - Error("Error"); - - private java.lang.String metaName; - - MemberNames(java.lang.String s) - { - metaName = s; - } - - @java.lang.Override - public java.lang.String toString() - { - return metaName; - } - } - - public OAuthError(com.mendix.systemwideinterfaces.core.IContext context) - { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.OAuthError")); - } - - protected OAuthError(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject oAuthErrorMendixObject) - { - if (oAuthErrorMendixObject == null) - throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.OAuthError", oAuthErrorMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.OAuthError"); - - this.oAuthErrorMendixObject = oAuthErrorMendixObject; - this.context = context; - } - - /** - * @deprecated Use 'OAuthError.load(IContext, IMendixIdentifier)' instead. - */ - @java.lang.Deprecated - public static email_connector.proxies.OAuthError initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixIdentifier mendixIdentifier) throws com.mendix.core.CoreException - { - return email_connector.proxies.OAuthError.load(context, mendixIdentifier); - } - - /** - * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. - * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). - */ - public static email_connector.proxies.OAuthError initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) - { - return new email_connector.proxies.OAuthError(context, mendixObject); - } - - public static email_connector.proxies.OAuthError load(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixIdentifier mendixIdentifier) throws com.mendix.core.CoreException - { - com.mendix.systemwideinterfaces.core.IMendixObject mendixObject = com.mendix.core.Core.retrieveId(context, mendixIdentifier); - return email_connector.proxies.OAuthError.initialize(context, mendixObject); - } - - public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException - { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//Email_Connector.OAuthError" + xpathConstraint)) - result.add(email_connector.proxies.OAuthError.initialize(context, obj)); - return result; - } - - /** - * Commit the changes made on this proxy object. - */ - public final void commit() throws com.mendix.core.CoreException - { - com.mendix.core.Core.commit(context, getMendixObject()); - } - - /** - * Commit the changes made on this proxy object using the specified context. - */ - public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException - { - com.mendix.core.Core.commit(context, getMendixObject()); - } - - /** - * Delete the object. - */ - public final void delete() - { - com.mendix.core.Core.delete(context, getMendixObject()); - } - - /** - * Delete the object using the specified context. - */ - public final void delete(com.mendix.systemwideinterfaces.core.IContext context) - { - com.mendix.core.Core.delete(context, getMendixObject()); - } - /** - * @return value of HTTPStatusCode - */ - public final java.lang.Integer getHTTPStatusCode() - { - return getHTTPStatusCode(getContext()); - } - - /** - * @param context - * @return value of HTTPStatusCode - */ - public final java.lang.Integer getHTTPStatusCode(com.mendix.systemwideinterfaces.core.IContext context) - { - return (java.lang.Integer) getMendixObject().getValue(context, MemberNames.HTTPStatusCode.toString()); - } - - /** - * Set value of HTTPStatusCode - * @param httpstatuscode - */ - public final void setHTTPStatusCode(java.lang.Integer httpstatuscode) - { - setHTTPStatusCode(getContext(), httpstatuscode); - } - - /** - * Set value of HTTPStatusCode - * @param context - * @param httpstatuscode - */ - public final void setHTTPStatusCode(com.mendix.systemwideinterfaces.core.IContext context, java.lang.Integer httpstatuscode) - { - getMendixObject().setValue(context, MemberNames.HTTPStatusCode.toString(), httpstatuscode); - } - - /** - * @return value of Error - */ - public final java.lang.String getError() - { - return getError(getContext()); - } - - /** - * @param context - * @return value of Error - */ - public final java.lang.String getError(com.mendix.systemwideinterfaces.core.IContext context) - { - return (java.lang.String) getMendixObject().getValue(context, MemberNames.Error.toString()); - } - - /** - * Set value of Error - * @param error - */ - public final void setError(java.lang.String error) - { - setError(getContext(), error); - } - - /** - * Set value of Error - * @param context - * @param error - */ - public final void setError(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String error) - { - getMendixObject().setValue(context, MemberNames.Error.toString(), error); - } - - /** - * @return the IMendixObject instance of this proxy for use in the Core interface. - */ - public final com.mendix.systemwideinterfaces.core.IMendixObject getMendixObject() - { - return oAuthErrorMendixObject; - } - - /** - * @return the IContext instance of this proxy, or null if no IContext instance was specified at initialization. - */ - public final com.mendix.systemwideinterfaces.core.IContext getContext() - { - return context; - } - - @java.lang.Override - public boolean equals(Object obj) - { - if (obj == this) - return true; - - if (obj != null && getClass().equals(obj.getClass())) - { - final email_connector.proxies.OAuthError that = (email_connector.proxies.OAuthError) obj; - return getMendixObject().equals(that.getMendixObject()); - } - return false; - } - - @java.lang.Override - public int hashCode() - { - return getMendixObject().hashCode(); - } - - /** - * @return String name of this class - */ - public static java.lang.String getType() - { - return "Email_Connector.OAuthError"; - } - - /** - * @return String GUID from this object, format: ID_0000000000 - * @deprecated Use getMendixObject().getId().toLong() to get a unique identifier for this object. - */ - @java.lang.Deprecated - public java.lang.String getGUID() - { - return "ID_" + getMendixObject().getId().toLong(); - } -} diff --git a/javasource/email_connector/proxies/OAuthNonce.java b/javasource/email_connector/proxies/OAuthNonce.java index c621563..639262d 100644 --- a/javasource/email_connector/proxies/OAuthNonce.java +++ b/javasource/email_connector/proxies/OAuthNonce.java @@ -23,7 +23,7 @@ public enum MemberNames State("State"), OAuthNonce_EmailAccount("Email_Connector.OAuthNonce_EmailAccount"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -39,15 +39,17 @@ public java.lang.String toString() public OAuthNonce(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.OAuthNonce")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected OAuthNonce(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject oAuthNonceMendixObject) { - if (oAuthNonceMendixObject == null) + if (oAuthNonceMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.OAuthNonce", oAuthNonceMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.OAuthNonce"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, oAuthNonceMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.oAuthNonceMendixObject = oAuthNonceMendixObject; this.context = context; @@ -65,6 +67,9 @@ public static email_connector.proxies.OAuthNonce initialize(com.mendix.systemwid /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.OAuthNonce initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -79,14 +84,16 @@ public static email_connector.proxies.OAuthNonce load(com.mendix.systemwideinter public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//Email_Connector.OAuthNonce" + xpathConstraint)) - result.add(email_connector.proxies.OAuthNonce.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> email_connector.proxies.OAuthNonce.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -95,6 +102,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -153,6 +161,7 @@ public final void setState(com.mendix.systemwideinterfaces.core.IContext context } /** + * @throws com.mendix.core.CoreException * @return value of OAuthNonce_EmailAccount */ public final email_connector.proxies.EmailAccount getOAuthNonce_EmailAccount() throws com.mendix.core.CoreException @@ -163,13 +172,15 @@ public final email_connector.proxies.EmailAccount getOAuthNonce_EmailAccount() t /** * @param context * @return value of OAuthNonce_EmailAccount + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.EmailAccount getOAuthNonce_EmailAccount(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.EmailAccount result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.OAuthNonce_EmailAccount.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.EmailAccount.load(context, identifier); + } return result; } @@ -189,10 +200,11 @@ public final void setOAuthNonce_EmailAccount(email_connector.proxies.EmailAccoun */ public final void setOAuthNonce_EmailAccount(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.EmailAccount oauthnonce_emailaccount) { - if (oauthnonce_emailaccount == null) + if (oauthnonce_emailaccount == null) { getMendixObject().setValue(context, MemberNames.OAuthNonce_EmailAccount.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.OAuthNonce_EmailAccount.toString(), oauthnonce_emailaccount.getMendixObject().getId()); + } } /** @@ -214,9 +226,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.OAuthNonce that = (email_connector.proxies.OAuthNonce) obj; @@ -236,7 +248,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.OAuthNonce"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/OAuthProvider.java b/javasource/email_connector/proxies/OAuthProvider.java index 456aa28..e8f9755 100644 --- a/javasource/email_connector/proxies/OAuthProvider.java +++ b/javasource/email_connector/proxies/OAuthProvider.java @@ -28,9 +28,11 @@ public enum MemberNames TokenEndpoint("TokenEndpoint"), EmailDomain("EmailDomain"), CallbackOperationPath("CallbackOperationPath"), - CallbackURL("CallbackURL"); + CallbackURL("CallbackURL"), + OAuthType("OAuthType"), + TenantID("TenantID"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -46,15 +48,17 @@ public java.lang.String toString() public OAuthProvider(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.OAuthProvider")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected OAuthProvider(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject oAuthProviderMendixObject) { - if (oAuthProviderMendixObject == null) + if (oAuthProviderMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.OAuthProvider", oAuthProviderMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.OAuthProvider"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, oAuthProviderMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.oAuthProviderMendixObject = oAuthProviderMendixObject; this.context = context; @@ -72,6 +76,9 @@ public static email_connector.proxies.OAuthProvider initialize(com.mendix.system /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.OAuthProvider initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -86,14 +93,16 @@ public static email_connector.proxies.OAuthProvider load(com.mendix.systemwidein public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//Email_Connector.OAuthProvider" + xpathConstraint)) - result.add(email_connector.proxies.OAuthProvider.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> email_connector.proxies.OAuthProvider.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -102,6 +111,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -447,6 +457,87 @@ public final void setCallbackURL(com.mendix.systemwideinterfaces.core.IContext c getMendixObject().setValue(context, MemberNames.CallbackURL.toString(), callbackurl); } + /** + * Set value of OAuthType + * @param oauthtype + */ + public final email_connector.proxies.ENUM_OAuthType getOAuthType() + { + return getOAuthType(getContext()); + } + + /** + * @param context + * @return value of OAuthType + */ + public final email_connector.proxies.ENUM_OAuthType getOAuthType(com.mendix.systemwideinterfaces.core.IContext context) + { + Object obj = getMendixObject().getValue(context, MemberNames.OAuthType.toString()); + if (obj == null) { + return null; + } + return email_connector.proxies.ENUM_OAuthType.valueOf((java.lang.String) obj); + } + + /** + * Set value of OAuthType + * @param oauthtype + */ + public final void setOAuthType(email_connector.proxies.ENUM_OAuthType oauthtype) + { + setOAuthType(getContext(), oauthtype); + } + + /** + * Set value of OAuthType + * @param context + * @param oauthtype + */ + public final void setOAuthType(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.ENUM_OAuthType oauthtype) + { + if (oauthtype != null) { + getMendixObject().setValue(context, MemberNames.OAuthType.toString(), oauthtype.toString()); + } else { + getMendixObject().setValue(context, MemberNames.OAuthType.toString(), null); + } + } + + /** + * @return value of TenantID + */ + public final java.lang.String getTenantID() + { + return getTenantID(getContext()); + } + + /** + * @param context + * @return value of TenantID + */ + public final java.lang.String getTenantID(com.mendix.systemwideinterfaces.core.IContext context) + { + return (java.lang.String) getMendixObject().getValue(context, MemberNames.TenantID.toString()); + } + + /** + * Set value of TenantID + * @param tenantid + */ + public final void setTenantID(java.lang.String tenantid) + { + setTenantID(getContext(), tenantid); + } + + /** + * Set value of TenantID + * @param context + * @param tenantid + */ + public final void setTenantID(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String tenantid) + { + getMendixObject().setValue(context, MemberNames.TenantID.toString(), tenantid); + } + /** * @return the IMendixObject instance of this proxy for use in the Core interface. */ @@ -466,9 +557,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.OAuthProvider that = (email_connector.proxies.OAuthProvider) obj; @@ -488,7 +579,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.OAuthProvider"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/OAuthToken.java b/javasource/email_connector/proxies/OAuthToken.java index bca5ea3..ac730ef 100644 --- a/javasource/email_connector/proxies/OAuthToken.java +++ b/javasource/email_connector/proxies/OAuthToken.java @@ -28,7 +28,7 @@ public enum MemberNames id_token("id_token"), EmailAccount_OAuthToken("Email_Connector.EmailAccount_OAuthToken"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -44,15 +44,17 @@ public java.lang.String toString() public OAuthToken(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.OAuthToken")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected OAuthToken(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject oAuthTokenMendixObject) { - if (oAuthTokenMendixObject == null) + if (oAuthTokenMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.OAuthToken", oAuthTokenMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.OAuthToken"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, oAuthTokenMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.oAuthTokenMendixObject = oAuthTokenMendixObject; this.context = context; @@ -70,6 +72,9 @@ public static email_connector.proxies.OAuthToken initialize(com.mendix.systemwid /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.OAuthToken initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -84,14 +89,16 @@ public static email_connector.proxies.OAuthToken load(com.mendix.systemwideinter public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//Email_Connector.OAuthToken" + xpathConstraint)) - result.add(email_connector.proxies.OAuthToken.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> email_connector.proxies.OAuthToken.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -100,6 +107,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -338,6 +346,7 @@ public final void setid_token(com.mendix.systemwideinterfaces.core.IContext cont } /** + * @throws com.mendix.core.CoreException * @return value of EmailAccount_OAuthToken */ public final email_connector.proxies.EmailAccount getEmailAccount_OAuthToken() throws com.mendix.core.CoreException @@ -348,13 +357,15 @@ public final email_connector.proxies.EmailAccount getEmailAccount_OAuthToken() t /** * @param context * @return value of EmailAccount_OAuthToken + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.EmailAccount getEmailAccount_OAuthToken(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.EmailAccount result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.EmailAccount_OAuthToken.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.EmailAccount.load(context, identifier); + } return result; } @@ -374,10 +385,11 @@ public final void setEmailAccount_OAuthToken(email_connector.proxies.EmailAccoun */ public final void setEmailAccount_OAuthToken(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.EmailAccount emailaccount_oauthtoken) { - if (emailaccount_oauthtoken == null) + if (emailaccount_oauthtoken == null) { getMendixObject().setValue(context, MemberNames.EmailAccount_OAuthToken.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.EmailAccount_OAuthToken.toString(), emailaccount_oauthtoken.getMendixObject().getId()); + } } /** @@ -399,9 +411,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.OAuthToken that = (email_connector.proxies.OAuthToken) obj; @@ -421,7 +433,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.OAuthToken"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/OutgoingEmailConfiguration.java b/javasource/email_connector/proxies/OutgoingEmailConfiguration.java index bc03ab3..5ad1f74 100644 --- a/javasource/email_connector/proxies/OutgoingEmailConfiguration.java +++ b/javasource/email_connector/proxies/OutgoingEmailConfiguration.java @@ -28,7 +28,7 @@ public enum MemberNames ServerPort("ServerPort"), OutgoingEmailConfiguration_EmailAccount("Email_Connector.OutgoingEmailConfiguration_EmailAccount"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -44,15 +44,17 @@ public java.lang.String toString() public OutgoingEmailConfiguration(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.OutgoingEmailConfiguration")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected OutgoingEmailConfiguration(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject outgoingEmailConfigurationMendixObject) { - if (outgoingEmailConfigurationMendixObject == null) + if (outgoingEmailConfigurationMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.OutgoingEmailConfiguration", outgoingEmailConfigurationMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.OutgoingEmailConfiguration"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, outgoingEmailConfigurationMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.outgoingEmailConfigurationMendixObject = outgoingEmailConfigurationMendixObject; this.context = context; @@ -70,6 +72,9 @@ public static email_connector.proxies.OutgoingEmailConfiguration initialize(com. /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.OutgoingEmailConfiguration initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -84,14 +89,16 @@ public static email_connector.proxies.OutgoingEmailConfiguration load(com.mendix public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//Email_Connector.OutgoingEmailConfiguration" + xpathConstraint)) - result.add(email_connector.proxies.OutgoingEmailConfiguration.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> email_connector.proxies.OutgoingEmailConfiguration.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -100,6 +107,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -137,9 +145,9 @@ public final email_connector.proxies.ENUM_OutgoingProtocol getOutgoingProtocol() public final email_connector.proxies.ENUM_OutgoingProtocol getOutgoingProtocol(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.OutgoingProtocol.toString()); - if (obj == null) + if (obj == null) { return null; - + } return email_connector.proxies.ENUM_OutgoingProtocol.valueOf((java.lang.String) obj); } @@ -159,10 +167,11 @@ public final void setOutgoingProtocol(email_connector.proxies.ENUM_OutgoingProto */ public final void setOutgoingProtocol(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.ENUM_OutgoingProtocol outgoingprotocol) { - if (outgoingprotocol != null) + if (outgoingprotocol != null) { getMendixObject().setValue(context, MemberNames.OutgoingProtocol.toString(), outgoingprotocol.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.OutgoingProtocol.toString(), null); + } } /** @@ -346,6 +355,7 @@ public final void setServerPort(com.mendix.systemwideinterfaces.core.IContext co } /** + * @throws com.mendix.core.CoreException * @return value of OutgoingEmailConfiguration_EmailAccount */ public final email_connector.proxies.EmailAccount getOutgoingEmailConfiguration_EmailAccount() throws com.mendix.core.CoreException @@ -356,13 +366,15 @@ public final email_connector.proxies.EmailAccount getOutgoingEmailConfiguration_ /** * @param context * @return value of OutgoingEmailConfiguration_EmailAccount + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.EmailAccount getOutgoingEmailConfiguration_EmailAccount(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.EmailAccount result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.OutgoingEmailConfiguration_EmailAccount.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.EmailAccount.load(context, identifier); + } return result; } @@ -382,10 +394,11 @@ public final void setOutgoingEmailConfiguration_EmailAccount(email_connector.pro */ public final void setOutgoingEmailConfiguration_EmailAccount(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.EmailAccount outgoingemailconfiguration_emailaccount) { - if (outgoingemailconfiguration_emailaccount == null) + if (outgoingemailconfiguration_emailaccount == null) { getMendixObject().setValue(context, MemberNames.OutgoingEmailConfiguration_EmailAccount.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.OutgoingEmailConfiguration_EmailAccount.toString(), outgoingemailconfiguration_emailaccount.getMendixObject().getId()); + } } /** @@ -407,9 +420,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.OutgoingEmailConfiguration that = (email_connector.proxies.OutgoingEmailConfiguration) obj; @@ -429,7 +442,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.OutgoingEmailConfiguration"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/OutgoingServer.java b/javasource/email_connector/proxies/OutgoingServer.java index c24b5e5..8ad1ea1 100644 --- a/javasource/email_connector/proxies/OutgoingServer.java +++ b/javasource/email_connector/proxies/OutgoingServer.java @@ -29,7 +29,7 @@ public enum MemberNames SelectedOutgoingServer("SelectedOutgoingServer"), OutgoingServer_EmailProvider("Email_Connector.OutgoingServer_EmailProvider"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -45,15 +45,17 @@ public java.lang.String toString() public OutgoingServer(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.OutgoingServer")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected OutgoingServer(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject outgoingServerMendixObject) { - if (outgoingServerMendixObject == null) + if (outgoingServerMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.OutgoingServer", outgoingServerMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.OutgoingServer"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, outgoingServerMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.outgoingServerMendixObject = outgoingServerMendixObject; this.context = context; @@ -71,6 +73,9 @@ public static email_connector.proxies.OutgoingServer initialize(com.mendix.syste /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.OutgoingServer initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -85,6 +90,7 @@ public static email_connector.proxies.OutgoingServer load(com.mendix.systemwidei /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -93,6 +99,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -202,9 +209,9 @@ public final email_connector.proxies.ENUM_OutgoingProtocol getOutgoingProtocol() public final email_connector.proxies.ENUM_OutgoingProtocol getOutgoingProtocol(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.OutgoingProtocol.toString()); - if (obj == null) + if (obj == null) { return null; - + } return email_connector.proxies.ENUM_OutgoingProtocol.valueOf((java.lang.String) obj); } @@ -224,10 +231,11 @@ public final void setOutgoingProtocol(email_connector.proxies.ENUM_OutgoingProto */ public final void setOutgoingProtocol(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.ENUM_OutgoingProtocol outgoingprotocol) { - if (outgoingprotocol != null) + if (outgoingprotocol != null) { getMendixObject().setValue(context, MemberNames.OutgoingProtocol.toString(), outgoingprotocol.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.OutgoingProtocol.toString(), null); + } } /** @@ -375,6 +383,7 @@ public final void setSelectedOutgoingServer(com.mendix.systemwideinterfaces.core } /** + * @throws com.mendix.core.CoreException * @return value of OutgoingServer_EmailProvider */ public final email_connector.proxies.EmailProvider getOutgoingServer_EmailProvider() throws com.mendix.core.CoreException @@ -385,13 +394,15 @@ public final email_connector.proxies.EmailProvider getOutgoingServer_EmailProvid /** * @param context * @return value of OutgoingServer_EmailProvider + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.EmailProvider getOutgoingServer_EmailProvider(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.EmailProvider result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.OutgoingServer_EmailProvider.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.EmailProvider.load(context, identifier); + } return result; } @@ -411,10 +422,11 @@ public final void setOutgoingServer_EmailProvider(email_connector.proxies.EmailP */ public final void setOutgoingServer_EmailProvider(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.EmailProvider outgoingserver_emailprovider) { - if (outgoingserver_emailprovider == null) + if (outgoingserver_emailprovider == null) { getMendixObject().setValue(context, MemberNames.OutgoingServer_EmailProvider.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.OutgoingServer_EmailProvider.toString(), outgoingserver_emailprovider.getMendixObject().getId()); + } } /** @@ -436,9 +448,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.OutgoingServer that = (email_connector.proxies.OutgoingServer) obj; @@ -458,7 +470,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.OutgoingServer"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/Pk12Certificate.java b/javasource/email_connector/proxies/Pk12Certificate.java index f3c6eab..fa8fa66 100644 --- a/javasource/email_connector/proxies/Pk12Certificate.java +++ b/javasource/email_connector/proxies/Pk12Certificate.java @@ -25,7 +25,7 @@ public enum MemberNames Size("Size"), Pk12Certificate_EmailAccount("Email_Connector.Pk12Certificate_EmailAccount"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -41,14 +41,15 @@ public java.lang.String toString() public Pk12Certificate(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.Pk12Certificate")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected Pk12Certificate(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject pk12CertificateMendixObject) { super(context, pk12CertificateMendixObject); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.Pk12Certificate", pk12CertificateMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.Pk12Certificate"); + if (!com.mendix.core.Core.isSubClassOf(entityName, pk12CertificateMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } } /** @@ -63,6 +64,9 @@ public static email_connector.proxies.Pk12Certificate initialize(com.mendix.syst /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.Pk12Certificate initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -77,10 +81,11 @@ public static email_connector.proxies.Pk12Certificate load(com.mendix.systemwide public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//Email_Connector.Pk12Certificate" + xpathConstraint)) - result.add(email_connector.proxies.Pk12Certificate.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> email_connector.proxies.Pk12Certificate.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** @@ -120,6 +125,7 @@ public final void setPassphrase(com.mendix.systemwideinterfaces.core.IContext co } /** + * @throws com.mendix.core.CoreException * @return value of Pk12Certificate_EmailAccount */ public final email_connector.proxies.EmailAccount getPk12Certificate_EmailAccount() throws com.mendix.core.CoreException @@ -130,13 +136,15 @@ public final email_connector.proxies.EmailAccount getPk12Certificate_EmailAccoun /** * @param context * @return value of Pk12Certificate_EmailAccount + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.EmailAccount getPk12Certificate_EmailAccount(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.EmailAccount result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.Pk12Certificate_EmailAccount.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.EmailAccount.load(context, identifier); + } return result; } @@ -156,18 +164,19 @@ public final void setPk12Certificate_EmailAccount(email_connector.proxies.EmailA */ public final void setPk12Certificate_EmailAccount(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.EmailAccount pk12certificate_emailaccount) { - if (pk12certificate_emailaccount == null) + if (pk12certificate_emailaccount == null) { getMendixObject().setValue(context, MemberNames.Pk12Certificate_EmailAccount.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.Pk12Certificate_EmailAccount.toString(), pk12certificate_emailaccount.getMendixObject().getId()); + } } @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.Pk12Certificate that = (email_connector.proxies.Pk12Certificate) obj; @@ -187,7 +196,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.Pk12Certificate"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/Profile.java b/javasource/email_connector/proxies/Profile.java index 3af44e8..286dd12 100644 --- a/javasource/email_connector/proxies/Profile.java +++ b/javasource/email_connector/proxies/Profile.java @@ -21,9 +21,10 @@ public class Profile public enum MemberNames { Email("Email"), - Name("Name"); + Name("Name"), + Username("Username"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -39,15 +40,17 @@ public java.lang.String toString() public Profile(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.Profile")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected Profile(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject profileMendixObject) { - if (profileMendixObject == null) + if (profileMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.Profile", profileMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.Profile"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, profileMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.profileMendixObject = profileMendixObject; this.context = context; @@ -65,6 +68,9 @@ public static email_connector.proxies.Profile initialize(com.mendix.systemwidein /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.Profile initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -79,6 +85,7 @@ public static email_connector.proxies.Profile load(com.mendix.systemwideinterfac /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -87,6 +94,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -180,6 +188,42 @@ public final void setName(com.mendix.systemwideinterfaces.core.IContext context, getMendixObject().setValue(context, MemberNames.Name.toString(), name); } + /** + * @return value of Username + */ + public final java.lang.String getUsername() + { + return getUsername(getContext()); + } + + /** + * @param context + * @return value of Username + */ + public final java.lang.String getUsername(com.mendix.systemwideinterfaces.core.IContext context) + { + return (java.lang.String) getMendixObject().getValue(context, MemberNames.Username.toString()); + } + + /** + * Set value of Username + * @param username + */ + public final void setUsername(java.lang.String username) + { + setUsername(getContext(), username); + } + + /** + * Set value of Username + * @param context + * @param username + */ + public final void setUsername(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String username) + { + getMendixObject().setValue(context, MemberNames.Username.toString(), username); + } + /** * @return the IMendixObject instance of this proxy for use in the Core interface. */ @@ -199,9 +243,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.Profile that = (email_connector.proxies.Profile) obj; @@ -221,7 +265,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.Profile"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/QueryString.java b/javasource/email_connector/proxies/QueryString.java index 684d6cd..6133057 100644 --- a/javasource/email_connector/proxies/QueryString.java +++ b/javasource/email_connector/proxies/QueryString.java @@ -23,7 +23,7 @@ public enum MemberNames Param("Param"), QueryString_OAuthProvider("Email_Connector.QueryString_OAuthProvider"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -39,15 +39,17 @@ public java.lang.String toString() public QueryString(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.QueryString")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected QueryString(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject queryStringMendixObject) { - if (queryStringMendixObject == null) + if (queryStringMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.QueryString", queryStringMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.QueryString"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, queryStringMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.queryStringMendixObject = queryStringMendixObject; this.context = context; @@ -65,6 +67,9 @@ public static email_connector.proxies.QueryString initialize(com.mendix.systemwi /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.QueryString initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -79,14 +84,16 @@ public static email_connector.proxies.QueryString load(com.mendix.systemwideinte public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//Email_Connector.QueryString" + xpathConstraint)) - result.add(email_connector.proxies.QueryString.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> email_connector.proxies.QueryString.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -95,6 +102,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -153,6 +161,7 @@ public final void setParam(com.mendix.systemwideinterfaces.core.IContext context } /** + * @throws com.mendix.core.CoreException * @return value of QueryString_OAuthProvider */ public final email_connector.proxies.OAuthProvider getQueryString_OAuthProvider() throws com.mendix.core.CoreException @@ -163,13 +172,15 @@ public final email_connector.proxies.OAuthProvider getQueryString_OAuthProvider( /** * @param context * @return value of QueryString_OAuthProvider + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.OAuthProvider getQueryString_OAuthProvider(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.OAuthProvider result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.QueryString_OAuthProvider.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.OAuthProvider.load(context, identifier); + } return result; } @@ -189,10 +200,11 @@ public final void setQueryString_OAuthProvider(email_connector.proxies.OAuthProv */ public final void setQueryString_OAuthProvider(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.OAuthProvider querystring_oauthprovider) { - if (querystring_oauthprovider == null) + if (querystring_oauthprovider == null) { getMendixObject().setValue(context, MemberNames.QueryString_OAuthProvider.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.QueryString_OAuthProvider.toString(), querystring_oauthprovider.getMendixObject().getId()); + } } /** @@ -214,9 +226,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.QueryString that = (email_connector.proxies.QueryString) obj; @@ -236,7 +248,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.QueryString"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/ScopeSelected.java b/javasource/email_connector/proxies/ScopeSelected.java index 9adf592..161e401 100644 --- a/javasource/email_connector/proxies/ScopeSelected.java +++ b/javasource/email_connector/proxies/ScopeSelected.java @@ -23,7 +23,7 @@ public enum MemberNames ScopeString("ScopeString"), ScopeSelected_OAuthProvider("Email_Connector.ScopeSelected_OAuthProvider"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -39,15 +39,17 @@ public java.lang.String toString() public ScopeSelected(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.ScopeSelected")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected ScopeSelected(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject scopeSelectedMendixObject) { - if (scopeSelectedMendixObject == null) + if (scopeSelectedMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.ScopeSelected", scopeSelectedMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.ScopeSelected"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, scopeSelectedMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.scopeSelectedMendixObject = scopeSelectedMendixObject; this.context = context; @@ -65,6 +67,9 @@ public static email_connector.proxies.ScopeSelected initialize(com.mendix.system /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.ScopeSelected initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -79,14 +84,16 @@ public static email_connector.proxies.ScopeSelected load(com.mendix.systemwidein public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//Email_Connector.ScopeSelected" + xpathConstraint)) - result.add(email_connector.proxies.ScopeSelected.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> email_connector.proxies.ScopeSelected.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -95,6 +102,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -153,6 +161,7 @@ public final void setScopeString(com.mendix.systemwideinterfaces.core.IContext c } /** + * @throws com.mendix.core.CoreException * @return value of ScopeSelected_OAuthProvider */ public final email_connector.proxies.OAuthProvider getScopeSelected_OAuthProvider() throws com.mendix.core.CoreException @@ -163,13 +172,15 @@ public final email_connector.proxies.OAuthProvider getScopeSelected_OAuthProvide /** * @param context * @return value of ScopeSelected_OAuthProvider + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.OAuthProvider getScopeSelected_OAuthProvider(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.OAuthProvider result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.ScopeSelected_OAuthProvider.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.OAuthProvider.load(context, identifier); + } return result; } @@ -189,10 +200,11 @@ public final void setScopeSelected_OAuthProvider(email_connector.proxies.OAuthPr */ public final void setScopeSelected_OAuthProvider(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.OAuthProvider scopeselected_oauthprovider) { - if (scopeselected_oauthprovider == null) + if (scopeselected_oauthprovider == null) { getMendixObject().setValue(context, MemberNames.ScopeSelected_OAuthProvider.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.ScopeSelected_OAuthProvider.toString(), scopeselected_oauthprovider.getMendixObject().getId()); + } } /** @@ -214,9 +226,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.ScopeSelected that = (email_connector.proxies.ScopeSelected) obj; @@ -236,7 +248,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.ScopeSelected"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/SelectedConfiguration.java b/javasource/email_connector/proxies/SelectedConfiguration.java index 287a30a..a5d3946 100644 --- a/javasource/email_connector/proxies/SelectedConfiguration.java +++ b/javasource/email_connector/proxies/SelectedConfiguration.java @@ -31,7 +31,7 @@ public enum MemberNames OutgoingTLS("OutgoingTLS"), SelectedConfiguration_EmailProvider("Email_Connector.SelectedConfiguration_EmailProvider"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -47,15 +47,17 @@ public java.lang.String toString() public SelectedConfiguration(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Email_Connector.SelectedConfiguration")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected SelectedConfiguration(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject selectedConfigurationMendixObject) { - if (selectedConfigurationMendixObject == null) + if (selectedConfigurationMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Email_Connector.SelectedConfiguration", selectedConfigurationMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Email_Connector.SelectedConfiguration"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, selectedConfigurationMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.selectedConfigurationMendixObject = selectedConfigurationMendixObject; this.context = context; @@ -73,6 +75,9 @@ public static email_connector.proxies.SelectedConfiguration initialize(com.mendi /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static email_connector.proxies.SelectedConfiguration initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -87,6 +92,7 @@ public static email_connector.proxies.SelectedConfiguration load(com.mendix.syst /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -95,6 +101,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -240,9 +247,9 @@ public final email_connector.proxies.ENUM_IncomingProtocol getIncomingProtocol() public final email_connector.proxies.ENUM_IncomingProtocol getIncomingProtocol(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.IncomingProtocol.toString()); - if (obj == null) + if (obj == null) { return null; - + } return email_connector.proxies.ENUM_IncomingProtocol.valueOf((java.lang.String) obj); } @@ -262,10 +269,11 @@ public final void setIncomingProtocol(email_connector.proxies.ENUM_IncomingProto */ public final void setIncomingProtocol(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.ENUM_IncomingProtocol incomingprotocol) { - if (incomingprotocol != null) + if (incomingprotocol != null) { getMendixObject().setValue(context, MemberNames.IncomingProtocol.toString(), incomingprotocol.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.IncomingProtocol.toString(), null); + } } /** @@ -356,9 +364,9 @@ public final email_connector.proxies.ENUM_OutgoingProtocol getOutgoingProtocol() public final email_connector.proxies.ENUM_OutgoingProtocol getOutgoingProtocol(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.OutgoingProtocol.toString()); - if (obj == null) + if (obj == null) { return null; - + } return email_connector.proxies.ENUM_OutgoingProtocol.valueOf((java.lang.String) obj); } @@ -378,10 +386,11 @@ public final void setOutgoingProtocol(email_connector.proxies.ENUM_OutgoingProto */ public final void setOutgoingProtocol(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.ENUM_OutgoingProtocol outgoingprotocol) { - if (outgoingprotocol != null) + if (outgoingprotocol != null) { getMendixObject().setValue(context, MemberNames.OutgoingProtocol.toString(), outgoingprotocol.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.OutgoingProtocol.toString(), null); + } } /** @@ -457,6 +466,7 @@ public final void setOutgoingTLS(com.mendix.systemwideinterfaces.core.IContext c } /** + * @throws com.mendix.core.CoreException * @return value of SelectedConfiguration_EmailProvider */ public final email_connector.proxies.EmailProvider getSelectedConfiguration_EmailProvider() throws com.mendix.core.CoreException @@ -467,13 +477,15 @@ public final email_connector.proxies.EmailProvider getSelectedConfiguration_Emai /** * @param context * @return value of SelectedConfiguration_EmailProvider + * @throws com.mendix.core.CoreException */ public final email_connector.proxies.EmailProvider getSelectedConfiguration_EmailProvider(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { email_connector.proxies.EmailProvider result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.SelectedConfiguration_EmailProvider.toString()); - if (identifier != null) + if (identifier != null) { result = email_connector.proxies.EmailProvider.load(context, identifier); + } return result; } @@ -493,10 +505,11 @@ public final void setSelectedConfiguration_EmailProvider(email_connector.proxies */ public final void setSelectedConfiguration_EmailProvider(com.mendix.systemwideinterfaces.core.IContext context, email_connector.proxies.EmailProvider selectedconfiguration_emailprovider) { - if (selectedconfiguration_emailprovider == null) + if (selectedconfiguration_emailprovider == null) { getMendixObject().setValue(context, MemberNames.SelectedConfiguration_EmailProvider.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.SelectedConfiguration_EmailProvider.toString(), selectedconfiguration_emailprovider.getMendixObject().getId()); + } } /** @@ -518,9 +531,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final email_connector.proxies.SelectedConfiguration that = (email_connector.proxies.SelectedConfiguration) obj; @@ -540,7 +553,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Email_Connector.SelectedConfiguration"; + return entityName; } /** diff --git a/javasource/email_connector/proxies/constants/Constants.java b/javasource/email_connector/proxies/constants/Constants.java index abbf2e3..7bcda6e 100644 --- a/javasource/email_connector/proxies/constants/Constants.java +++ b/javasource/email_connector/proxies/constants/Constants.java @@ -8,6 +8,14 @@ public class Constants { + /** + * @deprecated + * The default constructor of the Constants class should not be used. + * Use the static get methods instead. + */ + @java.lang.Deprecated(since = "9.12", forRemoval = true) + public Constants() {} + // These are the constants for the Email_Connector module public static java.lang.String getazure_defaultConfig() @@ -15,6 +23,9 @@ public static java.lang.String getazure_defaultConfig() return (java.lang.String)Core.getConfiguration().getConstantValue("Email_Connector.azure_defaultConfig"); } + /** + * Marketplace module release version + */ public static java.lang.String getEmail_Connector_Version() { return (java.lang.String)Core.getConfiguration().getConstantValue("Email_Connector.Email_Connector_Version"); @@ -28,6 +39,14 @@ public static java.lang.Long getEmailLogRetention() return (java.lang.Long)Core.getConfiguration().getConstantValue("Email_Connector.EmailLogRetention"); } + /** + * The amount of days to preserve email messages. + */ + public static java.lang.Long getEmailMessageRetention() + { + return (java.lang.Long)Core.getConfiguration().getConstantValue("Email_Connector.EmailMessageRetention"); + } + public static java.lang.String getLogNode() { return (java.lang.String)Core.getConfiguration().getConstantValue("Email_Connector.LogNode"); diff --git a/javasource/email_connector/proxies/microflows/Microflows.java b/javasource/email_connector/proxies/microflows/Microflows.java index 004aa69..268e339 100644 --- a/javasource/email_connector/proxies/microflows/Microflows.java +++ b/javasource/email_connector/proxies/microflows/Microflows.java @@ -7,13 +7,19 @@ import java.util.HashMap; import java.util.Map; import com.mendix.core.Core; -import com.mendix.core.CoreException; -import com.mendix.systemwideinterfaces.MendixRuntimeException; import com.mendix.systemwideinterfaces.core.IContext; import com.mendix.systemwideinterfaces.core.IMendixObject; public class Microflows { + /** + * @deprecated + * The default constructor of the Microflows class should not be used. + * Use the static microflow invocation methods instead. + */ + @java.lang.Deprecated(since = "9.12", forRemoval = true) + public Microflows() {} + // These are the microflows for the Email_Connector module public static void aCO_ADE_IncomingAccountMetrics(IContext context) { @@ -25,23 +31,29 @@ public static void aCO_ADE_OutgoingAccountMetrics(IContext context) Map params = new HashMap<>(); Core.microflowCall("Email_Connector.ACO_ADE_OutgoingAccountMetrics").withParams(params).execute(context); } + public static void aCT_Attachment_CreateNew(IContext context, email_connector.proxies.EmailMessage _emailMessage) + { + Map params = new HashMap<>(); + params.put("EmailMessage", _emailMessage == null ? null : _emailMessage.getMendixObject()); + Core.microflowCall("Email_Connector.ACT_Attachment_CreateNew").withParams(params).execute(context); + } public static void aCT_Attachment_Download(IContext context, email_connector.proxies.Attachment _attachment) { Map params = new HashMap<>(); params.put("Attachment", _attachment == null ? null : _attachment.getMendixObject()); Core.microflowCall("Email_Connector.ACT_Attachment_Download").withParams(params).execute(context); } - public static void aCT_CheckServerConnectionAndClosePage(IContext context, email_connector.proxies.EmailAccount _emailAccount) + public static void aCT_EmailAccount_ClientCredentialsGrant_SaveAutoConfig(IContext context, email_connector.proxies.EmailProvider _emailProvider) { Map params = new HashMap<>(); - params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); - Core.microflowCall("Email_Connector.ACT_CheckServerConnectionAndClosePage").withParams(params).execute(context); + params.put("EmailProvider", _emailProvider == null ? null : _emailProvider.getMendixObject()); + Core.microflowCall("Email_Connector.ACT_EmailAccount_ClientCredentialsGrant_SaveAutoConfig").withParams(params).execute(context); } - public static void aCT_EmailAccount_DeleteAndClosePage(IContext context, email_connector.proxies.EmailAccount _emailAccount) + public static void aCT_EmailAccount_ClientCredentialsGrant_SaveManualConfig(IContext context, email_connector.proxies.EmailAccount _emailAccount) { Map params = new HashMap<>(); params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); - Core.microflowCall("Email_Connector.ACT_EmailAccount_DeleteAndClosePage").withParams(params).execute(context); + Core.microflowCall("Email_Connector.ACT_EmailAccount_ClientCredentialsGrant_SaveManualConfig").withParams(params).execute(context); } public static java.lang.String aCT_EmailAccount_GetOrRenewTokenJavaAction(IContext context, email_connector.proxies.EmailAccount _emailAccount) { @@ -49,6 +61,11 @@ public static java.lang.String aCT_EmailAccount_GetOrRenewTokenJavaAction(IConte params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); return (java.lang.String) Core.microflowCall("Email_Connector.ACT_EmailAccount_GetOrRenewTokenJavaAction").withParams(params).execute(context); } + public static void aCT_EmailAccount_LaunchEmailConnectorOverview(IContext context) + { + Map params = new HashMap<>(); + Core.microflowCall("Email_Connector.ACT_EmailAccount_LaunchEmailConnectorOverview").withParams(params).execute(context); + } public static void aCT_EmailAccount_RetrieveEmails(IContext context, email_connector.proxies.EmailAccount _emailAccount) { Map params = new HashMap<>(); @@ -73,6 +90,13 @@ public static void aCT_EmailAccount_SaveManualConfig(IContext context, email_con params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); Core.microflowCall("Email_Connector.ACT_EmailAccount_SaveManualConfig").withParams(params).execute(context); } + public static email_connector.proxies.EmailMessage aCT_EmailMessage_ComposeNewEmail(IContext context, email_connector.proxies.EmailAccount _emailAccount) + { + Map params = new HashMap<>(); + params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); + IMendixObject result = (IMendixObject)Core.microflowCall("Email_Connector.ACT_EmailMessage_ComposeNewEmail").withParams(params).execute(context); + return result == null ? null : email_connector.proxies.EmailMessage.initialize(context, result); + } public static void aCT_EmailMessage_ComposeReply(IContext context, email_connector.proxies.EmailMessage _emailMessage, email_connector.proxies.EmailAccount _emailAccount) { Map params = new HashMap<>(); @@ -86,17 +110,17 @@ public static void aCT_EmailMessage_Delete(IContext context, email_connector.pro params.put("EmailMessage", _emailMessage == null ? null : _emailMessage.getMendixObject()); Core.microflowCall("Email_Connector.ACT_EmailMessage_Delete").withParams(params).execute(context); } - public static void aCT_EmailMessage_DeleteQueuedEmails(IContext context, email_connector.proxies.EmailAccount _emailAccount) + public static void aCT_EmailMessage_ResetQueuedStatus(IContext context, email_connector.proxies.EmailMessage _emailMessage) { Map params = new HashMap<>(); - params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); - Core.microflowCall("Email_Connector.ACT_EmailMessage_DeleteQueuedEmails").withParams(params).execute(context); + params.put("EmailMessage", _emailMessage == null ? null : _emailMessage.getMendixObject()); + Core.microflowCall("Email_Connector.ACT_EmailMessage_ResetQueuedStatus").withParams(params).execute(context); } - public static void aCT_EmailMessage_ResetQueuedStatus(IContext context, email_connector.proxies.EmailMessage _emailMessage) + public static void aCT_EmailMessage_SendComposedEmail(IContext context, email_connector.proxies.EmailMessage _emailMessage) { Map params = new HashMap<>(); params.put("EmailMessage", _emailMessage == null ? null : _emailMessage.getMendixObject()); - Core.microflowCall("Email_Connector.ACT_EmailMessage_ResetQueuedStatus").withParams(params).execute(context); + Core.microflowCall("Email_Connector.ACT_EmailMessage_SendComposedEmail").withParams(params).execute(context); } public static void aCT_EmailMessage_SendEmailAndClosePage(IContext context, email_connector.proxies.EmailMessage _emailMessage) { @@ -110,21 +134,16 @@ public static void aCT_EmailMessage_SendQueuedEmails(IContext context, email_con params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); Core.microflowCall("Email_Connector.ACT_EmailMessage_SendQueuedEmails").withParams(params).execute(context); } - public static void aCT_EmailMessage_ShowComposeEmailPage(IContext context, email_connector.proxies.EmailAccount _emailAccount) - { - Map params = new HashMap<>(); - params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); - Core.microflowCall("Email_Connector.ACT_EmailMessage_ShowComposeEmailPage").withParams(params).execute(context); - } public static void aCT_EmailMessageList_ResetQueuedStatus(IContext context, java.util.List _emailList) { Map params = new HashMap<>(); - java.util.ArrayList listparam_emailList = null; + java.util.List listparam_emailList = null; if (_emailList != null) { listparam_emailList = new java.util.ArrayList<>(); - for (email_connector.proxies.EmailMessage obj : _emailList) + for (var obj : _emailList) { listparam_emailList.add(obj.getMendixObject()); + } } params.put("EmailList", listparam_emailList); @@ -142,12 +161,24 @@ public static void aCT_EmailTemplate_DuplicateAndShowPage(IContext context, emai params.put("EmailTemplate", _emailTemplate == null ? null : _emailTemplate.getMendixObject()); Core.microflowCall("Email_Connector.ACT_EmailTemplate_DuplicateAndShowPage").withParams(params).execute(context); } + public static void aCT_EmailTemplate_Export(IContext context, email_connector.proxies.EmailTemplate _emailTemplate) + { + Map params = new HashMap<>(); + params.put("EmailTemplate", _emailTemplate == null ? null : _emailTemplate.getMendixObject()); + Core.microflowCall("Email_Connector.ACT_EmailTemplate_Export").withParams(params).execute(context); + } public static void aCT_EmailTemplate_GenerateAndSetPlainText(IContext context, email_connector.proxies.EmailTemplate _emailTemplate) { Map params = new HashMap<>(); params.put("EmailTemplate", _emailTemplate == null ? null : _emailTemplate.getMendixObject()); Core.microflowCall("Email_Connector.ACT_EmailTemplate_GenerateAndSetPlainText").withParams(params).execute(context); } + public static void aCT_EmailTemplate_Import(IContext context, email_connector.proxies.EmailTemplateExportFile _emailTemplateExportFile) + { + Map params = new HashMap<>(); + params.put("EmailTemplateExportFile", _emailTemplateExportFile == null ? null : _emailTemplateExportFile.getMendixObject()); + Core.microflowCall("Email_Connector.ACT_EmailTemplate_Import").withParams(params).execute(context); + } public static void aCT_EmailTemplate_Save(IContext context, email_connector.proxies.EmailTemplate _emailTemplate) { Map params = new HashMap<>(); @@ -181,12 +212,6 @@ public static void aCT_LDAPConfiguration_ChangeBaseName(IContext context, email_ params.put("LDAPConfiguration", _lDAPConfiguration == null ? null : _lDAPConfiguration.getMendixObject()); Core.microflowCall("Email_Connector.ACT_LDAPConfiguration_ChangeBaseName").withParams(params).execute(context); } - public static void aCT_OAuthError_DeleteAndRedirectToHomePage(IContext context, email_connector.proxies.OAuthError _oAuthError) - { - Map params = new HashMap<>(); - params.put("OAuthError", _oAuthError == null ? null : _oAuthError.getMendixObject()); - Core.microflowCall("Email_Connector.ACT_OAuthError_DeleteAndRedirectToHomePage").withParams(params).execute(context); - } public static void aCT_OAuthProvider_Create(IContext context) { Map params = new HashMap<>(); @@ -210,6 +235,12 @@ public static void aCT_OAuthProvider_ShowOAuthProviderPage(IContext context, ema params.put("OAuthProvider", _oAuthProvider == null ? null : _oAuthProvider.getMendixObject()); Core.microflowCall("Email_Connector.ACT_OAuthProvider_ShowOAuthProviderPage").withParams(params).execute(context); } + public static void aCT_SaveEmailAccountSettingAndClosePage(IContext context, email_connector.proxies.EmailAccount _emailAccount) + { + Map params = new HashMap<>(); + params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); + Core.microflowCall("Email_Connector.ACT_SaveEmailAccountSettingAndClosePage").withParams(params).execute(context); + } public static void aCT_SelectedConfiguration_FetchEmailServerConfigAndShowConfigPage(IContext context, email_connector.proxies.EmailAccount _emailAccount) { Map params = new HashMap<>(); @@ -227,12 +258,6 @@ public static void aCT_ShowAccountSettingsPage(IContext context, email_connector params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); Core.microflowCall("Email_Connector.ACT_ShowAccountSettingsPage").withParams(params).execute(context); } - public static void aCT_ShowEmailSecurityPage(IContext context, email_connector.proxies.EmailAccount _emailAccount) - { - Map params = new HashMap<>(); - params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); - Core.microflowCall("Email_Connector.ACT_ShowEmailSecurityPage").withParams(params).execute(context); - } public static boolean bCO_EmailAccount_EncryptPassword(IContext context, email_connector.proxies.EmailAccount _emailAccount) { Map params = new HashMap<>(); @@ -263,25 +288,36 @@ public static boolean bCO_Pk12Certificate_EncryptPassphrase(IContext context, em params.put("Pk12Certificate", _pk12Certificate == null ? null : _pk12Certificate.getMendixObject()); return (java.lang.Boolean) Core.microflowCall("Email_Connector.BCO_Pk12Certificate_EncryptPassphrase").withParams(params).execute(context); } + public static void dEL_DuplicateMxReflectionObjects(IContext context) + { + Map params = new HashMap<>(); + Core.microflowCall("Email_Connector.DEL_DuplicateMxReflectionObjects").withParams(params).execute(context); + } public static email_connector.proxies.EmailAccount dS_EmailAccount_CreateDummyAccount(IContext context) { Map params = new HashMap<>(); IMendixObject result = (IMendixObject)Core.microflowCall("Email_Connector.DS_EmailAccount_CreateDummyAccount").withParams(params).execute(context); return result == null ? null : email_connector.proxies.EmailAccount.initialize(context, result); } + public static email_connector.proxies.EmailAccount_NPE dS_EmailAccount_NPE(IContext context, email_connector.proxies.EmailAccount _emailAccount) + { + Map params = new HashMap<>(); + params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); + IMendixObject result = (IMendixObject)Core.microflowCall("Email_Connector.DS_EmailAccount_NPE").withParams(params).execute(context); + return result == null ? null : email_connector.proxies.EmailAccount_NPE.initialize(context, result); + } public static java.util.List dS_FolderList(IContext context, email_connector.proxies.IncomingEmailConfiguration _incomingEmailConfiguration) { Map params = new HashMap<>(); params.put("IncomingEmailConfiguration", _incomingEmailConfiguration == null ? null : _incomingEmailConfiguration.getMendixObject()); java.util.List objs = Core.microflowCall("Email_Connector.DS_FolderList").withParams(params).execute(context); - java.util.List result = null; - if (objs != null) - { - result = new java.util.ArrayList<>(); - for (IMendixObject obj : objs) - result.add(email_connector.proxies.Folder.initialize(context, obj)); + if (objs == null) { + return null; + } else { + return objs.stream() + .map(obj -> email_connector.proxies.Folder.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } - return result; } public static email_connector.proxies.LDAPConfiguration dS_GetLDAPConfiguration(IContext context, email_connector.proxies.EmailAccount _emailAccount) { @@ -302,14 +338,20 @@ public static java.util.List dS_LDAPBaseDNLi Map params = new HashMap<>(); params.put("LDAPConfiguration", _lDAPConfiguration == null ? null : _lDAPConfiguration.getMendixObject()); java.util.List objs = Core.microflowCall("Email_Connector.DS_LDAPBaseDNList").withParams(params).execute(context); - java.util.List result = null; - if (objs != null) - { - result = new java.util.ArrayList<>(); - for (IMendixObject obj : objs) - result.add(email_connector.proxies.LDAPBaseDN.initialize(context, obj)); + if (objs == null) { + return null; + } else { + return objs.stream() + .map(obj -> email_connector.proxies.LDAPBaseDN.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } - return result; + } + public static email_connector.proxies.LDAPConfiguration_NPE dS_LDAPConfiguration_NPE(IContext context, email_connector.proxies.LDAPConfiguration _lDAPConfiguration) + { + Map params = new HashMap<>(); + params.put("LDAPConfiguration", _lDAPConfiguration == null ? null : _lDAPConfiguration.getMendixObject()); + IMendixObject result = (IMendixObject)Core.microflowCall("Email_Connector.DS_LDAPConfiguration_NPE").withParams(params).execute(context); + return result == null ? null : email_connector.proxies.LDAPConfiguration_NPE.initialize(context, result); } public static email_connector.proxies.ModelReflectionChecker dS_ModelReflectionChecker(IContext context, email_connector.proxies.EmailTemplate _emailTemplate) { @@ -318,47 +360,34 @@ public static email_connector.proxies.ModelReflectionChecker dS_ModelReflectionC IMendixObject result = (IMendixObject)Core.microflowCall("Email_Connector.DS_ModelReflectionChecker").withParams(params).execute(context); return result == null ? null : email_connector.proxies.ModelReflectionChecker.initialize(context, result); } - public static email_connector.proxies.EmailAccount dS_SelectFirstEmailAccount(IContext context) - { - Map params = new HashMap<>(); - IMendixObject result = (IMendixObject)Core.microflowCall("Email_Connector.DS_SelectFirstEmailAccount").withParams(params).execute(context); - return result == null ? null : email_connector.proxies.EmailAccount.initialize(context, result); - } - public static java.util.List dS_ShowErrorLogPage(IContext context, email_connector.proxies.EmailAccount _emailAccount) + public static email_connector.proxies.Pk12Certificate_NPE dS_Pk12Certificate_NPE(IContext context, email_connector.proxies.Pk12Certificate _pk12Certificate) { Map params = new HashMap<>(); - params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); - java.util.List objs = Core.microflowCall("Email_Connector.DS_ShowErrorLogPage").withParams(params).execute(context); - java.util.List result = null; - if (objs != null) - { - result = new java.util.ArrayList<>(); - for (IMendixObject obj : objs) - result.add(email_connector.proxies.EmailConnectorLog.initialize(context, obj)); - } - return result; + params.put("Pk12Certificate", _pk12Certificate == null ? null : _pk12Certificate.getMendixObject()); + IMendixObject result = (IMendixObject)Core.microflowCall("Email_Connector.DS_Pk12Certificate_NPE").withParams(params).execute(context); + return result == null ? null : email_connector.proxies.Pk12Certificate_NPE.initialize(context, result); } public static java.util.List oCH_Background_EmailFetchMicroflow(IContext context, java.util.List _emailMessageList) { Map params = new HashMap<>(); - java.util.ArrayList listparam_emailMessageList = null; + java.util.List listparam_emailMessageList = null; if (_emailMessageList != null) { listparam_emailMessageList = new java.util.ArrayList<>(); - for (email_connector.proxies.EmailMessage obj : _emailMessageList) + for (var obj : _emailMessageList) { listparam_emailMessageList.add(obj.getMendixObject()); + } } params.put("EmailMessageList", listparam_emailMessageList); java.util.List objs = Core.microflowCall("Email_Connector.OCH_Background_EmailFetchMicroflow").withParams(params).execute(context); - java.util.List result = null; - if (objs != null) - { - result = new java.util.ArrayList<>(); - for (IMendixObject obj : objs) - result.add(email_connector.proxies.EmailMessage.initialize(context, obj)); + if (objs == null) { + return null; + } else { + return objs.stream() + .map(obj -> email_connector.proxies.EmailMessage.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } - return result; } public static void oCH_Background_EmailReceiveComplete(IContext context) { @@ -399,6 +428,12 @@ public static void oCH_IncomingEmailConfiguration_Select(IContext context, email params.put("EmailProvider", _emailProvider == null ? null : _emailProvider.getMendixObject()); Core.microflowCall("Email_Connector.OCH_IncomingEmailConfiguration_Select").withParams(params).execute(context); } + public static void oCH_LDapConfiguration_AuthType(IContext context, email_connector.proxies.LDAPConfiguration _lDAPConfiguration) + { + Map params = new HashMap<>(); + params.put("LDAPConfiguration", _lDAPConfiguration == null ? null : _lDAPConfiguration.getMendixObject()); + Core.microflowCall("Email_Connector.OCH_LDapConfiguration_AuthType").withParams(params).execute(context); + } public static void oCH_LDAPConfiguration_DeleteConfiguration(IContext context, email_connector.proxies.EmailAccount _emailAccount) { Map params = new HashMap<>(); @@ -417,11 +452,17 @@ public static void oCH_OAuthProvider_GetOrCreateOAuthProvider(IContext context, params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); Core.microflowCall("Email_Connector.OCH_OAuthProvider_GetOrCreateOAuthProvider").withParams(params).execute(context); } - public static void oCH_OAuthProvider_SetCallbackURL(IContext context, email_connector.proxies.OAuthProvider _oAuthProvider) + public static void oCH_OAuthProvider_SetCallbackURL_AuthCode(IContext context, email_connector.proxies.OAuthProvider _oAuthProvider) + { + Map params = new HashMap<>(); + params.put("OAuthProvider", _oAuthProvider == null ? null : _oAuthProvider.getMendixObject()); + Core.microflowCall("Email_Connector.OCH_OAuthProvider_SetCallbackURL_AuthCode").withParams(params).execute(context); + } + public static void oCH_OAuthProvider_SetCallbackURL_ClientCred(IContext context, email_connector.proxies.OAuthProvider _oAuthProvider) { Map params = new HashMap<>(); params.put("OAuthProvider", _oAuthProvider == null ? null : _oAuthProvider.getMendixObject()); - Core.microflowCall("Email_Connector.OCH_OAuthProvider_SetCallbackURL").withParams(params).execute(context); + Core.microflowCall("Email_Connector.OCH_OAuthProvider_SetCallbackURL_ClientCred").withParams(params).execute(context); } public static void oCH_OutgoingEmailConfiguration_Select(IContext context, email_connector.proxies.EmailProvider _emailProvider) { @@ -447,10 +488,9 @@ public static void oEN_SetOutgoingServer(IContext context, email_connector.proxi params.put("OutgoingServer", _outgoingServer == null ? null : _outgoingServer.getMendixObject()); Core.microflowCall("Email_Connector.OEN_SetOutgoingServer").withParams(params).execute(context); } - public static java.lang.String pRS_AuthCodeCallbackGET(IContext context, system.proxies.HttpRequest _httpRequest, system.proxies.HttpResponse _httpResponse, java.lang.String _customOpPath, java.lang.String _code, java.lang.String _state, java.lang.String _error, java.lang.String _errorDescription) + public static java.lang.String pRS_AuthCodeCallbackGET(IContext context, system.proxies.HttpResponse _httpResponse, java.lang.String _customOpPath, java.lang.String _code, java.lang.String _state, java.lang.String _error, java.lang.String _errorDescription) { Map params = new HashMap<>(); - params.put("httpRequest", _httpRequest == null ? null : _httpRequest.getMendixObject()); params.put("httpResponse", _httpResponse == null ? null : _httpResponse.getMendixObject()); params.put("customOpPath", _customOpPath); params.put("code", _code); @@ -489,6 +529,21 @@ public static void sE_SendQueuedEmails(IContext context, email_connector.proxies params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); Core.microflowCall("Email_Connector.SE_SendQueuedEmails").withParams(params).execute(context); } + public static void sUB_Clear_List_LDAPConfiguration_NPE(IContext context, java.util.List _lDAPConfiguration_NPEList) + { + Map params = new HashMap<>(); + java.util.List listparam_lDAPConfiguration_NPEList = null; + if (_lDAPConfiguration_NPEList != null) + { + listparam_lDAPConfiguration_NPEList = new java.util.ArrayList<>(); + for (var obj : _lDAPConfiguration_NPEList) { + listparam_lDAPConfiguration_NPEList.add(obj.getMendixObject()); + } + } + params.put("LDAPConfiguration_NPEList", listparam_lDAPConfiguration_NPEList); + + Core.microflowCall("Email_Connector.SUB_Clear_List_LDAPConfiguration_NPE").withParams(params).execute(context); + } public static void sUB_CreateLogItem(IContext context, java.lang.String _triggeredInMF, email_connector.proxies.ENUM_LogType _logType, java.lang.String _message, email_connector.proxies.EmailMessage _emailMessage, email_connector.proxies.EmailAccount _emailAccount, boolean _isUnread, system.proxies.Error _error) { Map params = new HashMap<>(); @@ -501,27 +556,34 @@ public static void sUB_CreateLogItem(IContext context, java.lang.String _trigger params.put("Error", _error == null ? null : _error.getMendixObject()); Core.microflowCall("Email_Connector.SUB_CreateLogItem").withParams(params).execute(context); } + public static java.lang.String sUB_Decrypt(IContext context, java.lang.String _encryptedString, email_connector.proxies.EmailAccount _emailAccount) + { + Map params = new HashMap<>(); + params.put("EncryptedString", _encryptedString); + params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); + return (java.lang.String) Core.microflowCall("Email_Connector.SUB_Decrypt").withParams(params).execute(context); + } public static java.util.List sUB_DuplicateTokenList(IContext context, java.util.List _tokenList) { Map params = new HashMap<>(); - java.util.ArrayList listparam_tokenList = null; + java.util.List listparam_tokenList = null; if (_tokenList != null) { listparam_tokenList = new java.util.ArrayList<>(); - for (mxmodelreflection.proxies.Token obj : _tokenList) + for (var obj : _tokenList) { listparam_tokenList.add(obj.getMendixObject()); + } } params.put("TokenList", listparam_tokenList); java.util.List objs = Core.microflowCall("Email_Connector.SUB_DuplicateTokenList").withParams(params).execute(context); - java.util.List result = null; - if (objs != null) - { - result = new java.util.ArrayList<>(); - for (IMendixObject obj : objs) - result.add(mxmodelreflection.proxies.Token.initialize(context, obj)); + if (objs == null) { + return null; + } else { + return objs.stream() + .map(obj -> mxmodelreflection.proxies.Token.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } - return result; } public static boolean sUB_EmailAccount_CheckServerConnection(IContext context, email_connector.proxies.EmailAccount _emailAccount) { @@ -529,12 +591,45 @@ public static boolean sUB_EmailAccount_CheckServerConnection(IContext context, e params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); return (java.lang.Boolean) Core.microflowCall("Email_Connector.SUB_EmailAccount_CheckServerConnection").withParams(params).execute(context); } + public static email_connector.proxies.EmailAccount sUB_EmailAccount_Create(IContext context, email_connector.proxies.OutgoingEmailConfiguration _newOutgoingEmailConfiguration, email_connector.proxies.IncomingEmailConfiguration _newIncomingEmailConfiguration, email_connector.proxies.EmailProvider _emailProvider, email_connector.proxies.SelectedConfiguration _selectedConfiguration) + { + Map params = new HashMap<>(); + params.put("NewOutgoingEmailConfiguration", _newOutgoingEmailConfiguration == null ? null : _newOutgoingEmailConfiguration.getMendixObject()); + params.put("NewIncomingEmailConfiguration", _newIncomingEmailConfiguration == null ? null : _newIncomingEmailConfiguration.getMendixObject()); + params.put("EmailProvider", _emailProvider == null ? null : _emailProvider.getMendixObject()); + params.put("SelectedConfiguration", _selectedConfiguration == null ? null : _selectedConfiguration.getMendixObject()); + IMendixObject result = (IMendixObject)Core.microflowCall("Email_Connector.SUB_EmailAccount_Create").withParams(params).execute(context); + return result == null ? null : email_connector.proxies.EmailAccount.initialize(context, result); + } public static void sUB_EmailAccount_Delete(IContext context, email_connector.proxies.EmailAccount _emailAccount) { Map params = new HashMap<>(); params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); Core.microflowCall("Email_Connector.SUB_EmailAccount_Delete").withParams(params).execute(context); } + public static void sUB_EmailAccount_NPE_ClearList(IContext context, java.util.List _emailAccount_NPEList) + { + Map params = new HashMap<>(); + java.util.List listparam_emailAccount_NPEList = null; + if (_emailAccount_NPEList != null) + { + listparam_emailAccount_NPEList = new java.util.ArrayList<>(); + for (var obj : _emailAccount_NPEList) { + listparam_emailAccount_NPEList.add(obj.getMendixObject()); + } + } + params.put("EmailAccount_NPEList", listparam_emailAccount_NPEList); + + Core.microflowCall("Email_Connector.SUB_EmailAccount_NPE_ClearList").withParams(params).execute(context); + } + public static void sUB_EmailAccount_OAuthToken_ReplaceExpired(IContext context, email_connector.proxies.OAuthToken _expiredOAuthToken, email_connector.proxies.EmailAccount _emailAccount, email_connector.proxies.OAuthToken _newOAuthToken) + { + Map params = new HashMap<>(); + params.put("ExpiredOAuthToken", _expiredOAuthToken == null ? null : _expiredOAuthToken.getMendixObject()); + params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); + params.put("NewOAuthToken", _newOAuthToken == null ? null : _newOAuthToken.getMendixObject()); + Core.microflowCall("Email_Connector.SUB_EmailAccount_OAuthToken_ReplaceExpired").withParams(params).execute(context); + } public static void sUB_EmailAccount_Save(IContext context, email_connector.proxies.EmailAccount _emailAccount) { Map params = new HashMap<>(); @@ -547,56 +642,117 @@ public static void sUB_EmailAccount_SubscribeForEmailNotification(IContext conte params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); Core.microflowCall("Email_Connector.SUB_EmailAccount_SubscribeForEmailNotification").withParams(params).execute(context); } + public static void sUB_EmailAccount_UpdatePassword(IContext context, email_connector.proxies.EmailAccount_NPE _emailAccount_NPE, email_connector.proxies.EmailAccount _emailAccount) + { + Map params = new HashMap<>(); + params.put("EmailAccount_NPE", _emailAccount_NPE == null ? null : _emailAccount_NPE.getMendixObject()); + params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); + Core.microflowCall("Email_Connector.SUB_EmailAccount_UpdatePassword").withParams(params).execute(context); + } + public static void sUB_EmailAccount_UpdatePassword_Refresh(IContext context, email_connector.proxies.EmailAccount_NPE _emailAccount_NPE, email_connector.proxies.EmailAccount _emailAccount) + { + Map params = new HashMap<>(); + params.put("EmailAccount_NPE", _emailAccount_NPE == null ? null : _emailAccount_NPE.getMendixObject()); + params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); + Core.microflowCall("Email_Connector.SUB_EmailAccount_UpdatePassword_Refresh").withParams(params).execute(context); + } public static java.util.List sUB_EmailMessage_SetAttachments(IContext context, java.util.List _fileDocumentList, email_connector.proxies.EmailMessage _email) { Map params = new HashMap<>(); - java.util.ArrayList listparam_fileDocumentList = null; + java.util.List listparam_fileDocumentList = null; if (_fileDocumentList != null) { listparam_fileDocumentList = new java.util.ArrayList<>(); - for (system.proxies.FileDocument obj : _fileDocumentList) + for (var obj : _fileDocumentList) { listparam_fileDocumentList.add(obj.getMendixObject()); + } } params.put("FileDocumentList", listparam_fileDocumentList); params.put("Email", _email == null ? null : _email.getMendixObject()); java.util.List objs = Core.microflowCall("Email_Connector.SUB_EmailMessage_SetAttachments").withParams(params).execute(context); - java.util.List result = null; - if (objs != null) + if (objs == null) { + return null; + } else { + return objs.stream() + .map(obj -> email_connector.proxies.Attachment.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); + } + } + public static email_connector.proxies.EmailTemplate sUB_EmailTemplate_Create(IContext context, email_connector.proxies.EmailTemplate _emailTemplate, java.util.List _newTokenList) + { + Map params = new HashMap<>(); + params.put("EmailTemplate", _emailTemplate == null ? null : _emailTemplate.getMendixObject()); + java.util.List listparam_newTokenList = null; + if (_newTokenList != null) + { + listparam_newTokenList = new java.util.ArrayList<>(); + for (var obj : _newTokenList) { + listparam_newTokenList.add(obj.getMendixObject()); + } + } + params.put("NewTokenList", listparam_newTokenList); + + IMendixObject result = (IMendixObject)Core.microflowCall("Email_Connector.SUB_EmailTemplate_Create").withParams(params).execute(context); + return result == null ? null : email_connector.proxies.EmailTemplate.initialize(context, result); + } + public static void sUB_EmailTemplate_Update(IContext context, email_connector.proxies.EmailTemplate _emailTemplate, java.util.List _attachmentList_New, email_connector.proxies.EmailTemplate _newEmailTemplate) + { + Map params = new HashMap<>(); + params.put("EmailTemplate", _emailTemplate == null ? null : _emailTemplate.getMendixObject()); + java.util.List listparam_attachmentList_New = null; + if (_attachmentList_New != null) { - result = new java.util.ArrayList<>(); - for (IMendixObject obj : objs) - result.add(email_connector.proxies.Attachment.initialize(context, obj)); + listparam_attachmentList_New = new java.util.ArrayList<>(); + for (var obj : _attachmentList_New) { + listparam_attachmentList_New.add(obj.getMendixObject()); + } } - return result; + params.put("AttachmentList_New", listparam_attachmentList_New); + + params.put("NewEmailTemplate", _newEmailTemplate == null ? null : _newEmailTemplate.getMendixObject()); + Core.microflowCall("Email_Connector.SUB_EmailTemplate_Update").withParams(params).execute(context); } public static java.lang.String sUB_GenerateOAuthNonce(IContext context) { Map params = new HashMap<>(); return (java.lang.String) Core.microflowCall("Email_Connector.SUB_GenerateOAuthNonce").withParams(params).execute(context); } + public static java.util.List sUB_Get_FolderNames(IContext context, email_connector.proxies.EmailAccount _emailAccount) + { + Map params = new HashMap<>(); + params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); + java.util.List objs = Core.microflowCall("Email_Connector.SUB_Get_FolderNames").withParams(params).execute(context); + if (objs == null) { + return null; + } else { + return objs.stream() + .map(obj -> email_connector.proxies.Folder.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); + } + } public static java.util.List sUB_GetEmailTemplateAttachments(IContext context, java.util.List _fileDocumentList, email_connector.proxies.EmailTemplate _emailTemplate) { Map params = new HashMap<>(); - java.util.ArrayList listparam_fileDocumentList = null; + java.util.List listparam_fileDocumentList = null; if (_fileDocumentList != null) { listparam_fileDocumentList = new java.util.ArrayList<>(); - for (system.proxies.FileDocument obj : _fileDocumentList) + for (var obj : _fileDocumentList) { listparam_fileDocumentList.add(obj.getMendixObject()); + } } params.put("FileDocumentList", listparam_fileDocumentList); params.put("EmailTemplate", _emailTemplate == null ? null : _emailTemplate.getMendixObject()); java.util.List objs = Core.microflowCall("Email_Connector.SUB_GetEmailTemplateAttachments").withParams(params).execute(context); - java.util.List result = null; - if (objs != null) - { - result = new java.util.ArrayList<>(); - for (IMendixObject obj : objs) - result.add(email_connector.proxies.Attachment.initialize(context, obj)); + if (objs == null) { + return null; + } else { + return objs.stream() + .map(obj -> email_connector.proxies.Attachment.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } - return result; } public static email_connector.proxies.OAuthProvider sUB_GetFirstOAuthProvider(IContext context) { @@ -604,12 +760,67 @@ public static email_connector.proxies.OAuthProvider sUB_GetFirstOAuthProvider(IC IMendixObject result = (IMendixObject)Core.microflowCall("Email_Connector.SUB_GetFirstOAuthProvider").withParams(params).execute(context); return result == null ? null : email_connector.proxies.OAuthProvider.initialize(context, result); } + public static java.lang.String sUB_GetLDAPPassword(IContext context, email_connector.proxies.LDAPConfiguration _lDAPConfiguration) + { + Map params = new HashMap<>(); + params.put("LDAPConfiguration", _lDAPConfiguration == null ? null : _lDAPConfiguration.getMendixObject()); + return (java.lang.String) Core.microflowCall("Email_Connector.SUB_GetLDAPPassword").withParams(params).execute(context); + } + public static email_connector.proxies.OAuthToken sUB_GetNewOAuthToken_AuthCodeGrantFlow(IContext context, email_connector.proxies.OAuthProvider _oAuthProvider, email_connector.proxies.EmailAccount _emailAccount, email_connector.proxies.OAuthToken _oAuthToken) + { + Map params = new HashMap<>(); + params.put("OAuthProvider", _oAuthProvider == null ? null : _oAuthProvider.getMendixObject()); + params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); + params.put("OAuthToken", _oAuthToken == null ? null : _oAuthToken.getMendixObject()); + IMendixObject result = (IMendixObject)Core.microflowCall("Email_Connector.SUB_GetNewOAuthToken_AuthCodeGrantFlow").withParams(params).execute(context); + return result == null ? null : email_connector.proxies.OAuthToken.initialize(context, result); + } + public static email_connector.proxies.OAuthToken sUB_GetNewOAuthToken_ClientCredentialsGrantFlow(IContext context, email_connector.proxies.EmailAccount _emailAccount, email_connector.proxies.OAuthProvider _oAuthProvider) + { + Map params = new HashMap<>(); + params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); + params.put("OAuthProvider", _oAuthProvider == null ? null : _oAuthProvider.getMendixObject()); + IMendixObject result = (IMendixObject)Core.microflowCall("Email_Connector.SUB_GetNewOAuthToken_ClientCredentialsGrantFlow").withParams(params).execute(context); + return result == null ? null : email_connector.proxies.OAuthToken.initialize(context, result); + } public static java.lang.String sUB_GetOAuthURL(IContext context, email_connector.proxies.EmailAccount _emailAccount) { Map params = new HashMap<>(); params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); return (java.lang.String) Core.microflowCall("Email_Connector.SUB_GetOAuthURL").withParams(params).execute(context); } + public static java.lang.String sUB_GetPk12Certificate_Passphrase(IContext context, email_connector.proxies.Pk12Certificate _pk12Certificate) + { + Map params = new HashMap<>(); + params.put("Pk12Certificate", _pk12Certificate == null ? null : _pk12Certificate.getMendixObject()); + return (java.lang.String) Core.microflowCall("Email_Connector.SUB_GetPk12Certificate_Passphrase").withParams(params).execute(context); + } + public static java.lang.String sUB_GetSystemError(IContext context, system.proxies.Error _systemErrObj) + { + Map params = new HashMap<>(); + params.put("SystemErrObj", _systemErrObj == null ? null : _systemErrObj.getMendixObject()); + return (java.lang.String) Core.microflowCall("Email_Connector.SUB_GetSystemError").withParams(params).execute(context); + } + public static void sUB_LDAPConfiguration_Update_No_Auth(IContext context, email_connector.proxies.LDAPConfiguration _lDAPConfiguration) + { + Map params = new HashMap<>(); + params.put("LDAPConfiguration", _lDAPConfiguration == null ? null : _lDAPConfiguration.getMendixObject()); + Core.microflowCall("Email_Connector.SUB_LDAPConfiguration_Update_No_Auth").withParams(params).execute(context); + } + public static void sUB_LDAPConfiguration_Update_Simple(IContext context, java.lang.String _encryptedPWD, email_connector.proxies.LDAPConfiguration _lDAPConfiguration) + { + Map params = new HashMap<>(); + params.put("encryptedPWD", _encryptedPWD); + params.put("LDAPConfiguration", _lDAPConfiguration == null ? null : _lDAPConfiguration.getMendixObject()); + Core.microflowCall("Email_Connector.SUB_LDAPConfiguration_Update_Simple").withParams(params).execute(context); + } + public static void sUB_PK12Certificate_Update(IContext context, java.lang.String _encryptedPWD, email_connector.proxies.Pk12Certificate _pk12Certificate) + { + Map params = new HashMap<>(); + params.put("encryptedPWD", _encryptedPWD); + params.put("Pk12Certificate", _pk12Certificate == null ? null : _pk12Certificate.getMendixObject()); + Core.microflowCall("Email_Connector.SUB_PK12Certificate_Update").withParams(params).execute(context); + } public static void sUB_RetrieveEmails(IContext context, email_connector.proxies.EmailAccount _emailAccount) { Map params = new HashMap<>(); @@ -637,13 +848,6 @@ public static void sUB_SendQueuedEmail(IContext context, email_connector.proxies params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); Core.microflowCall("Email_Connector.SUB_SendQueuedEmail").withParams(params).execute(context); } - public static void sUB_ShowOAuthError(IContext context, email_connector.proxies.OAuthError _oAuthError, system.proxies.HttpResponse _httpResponse) - { - Map params = new HashMap<>(); - params.put("OAuthError", _oAuthError == null ? null : _oAuthError.getMendixObject()); - params.put("httpResponse", _httpResponse == null ? null : _httpResponse.getMendixObject()); - Core.microflowCall("Email_Connector.SUB_ShowOAuthError").withParams(params).execute(context); - } public static boolean vAL_BatchDetails(IContext context, email_connector.proxies.IncomingEmailConfiguration _incomingEmailConfiguration) { Map params = new HashMap<>(); @@ -674,4 +878,4 @@ public static void vAL_Pk12Certificate(IContext context, email_connector.proxies params.put("EmailMessage", _emailMessage == null ? null : _emailMessage.getMendixObject()); Core.microflowCall("Email_Connector.VAL_Pk12Certificate").withParams(params).execute(context); } -} \ No newline at end of file +} diff --git a/javasource/emailtemplate/actions/ConvertHTMLBodyToPlainText.java b/javasource/emailtemplate/actions/ConvertHTMLBodyToPlainText.java index bdfc6cf..39ffdf6 100644 --- a/javasource/emailtemplate/actions/ConvertHTMLBodyToPlainText.java +++ b/javasource/emailtemplate/actions/ConvertHTMLBodyToPlainText.java @@ -41,6 +41,7 @@ public java.lang.String executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/emailtemplate/actions/CopyAttachmentContent.java b/javasource/emailtemplate/actions/CopyAttachmentContent.java index 1589095..25702f9 100644 --- a/javasource/emailtemplate/actions/CopyAttachmentContent.java +++ b/javasource/emailtemplate/actions/CopyAttachmentContent.java @@ -32,9 +32,9 @@ public CopyAttachmentContent(IContext context, IMendixObject CopyFrom, IMendixOb @java.lang.Override public java.lang.Boolean executeAction() throws Exception { - this.CopyFrom = __CopyFrom == null ? null : system.proxies.FileDocument.initialize(getContext(), __CopyFrom); + this.CopyFrom = this.__CopyFrom == null ? null : system.proxies.FileDocument.initialize(getContext(), __CopyFrom); - this.CopyTo = __CopyTo == null ? null : system.proxies.FileDocument.initialize(getContext(), __CopyTo); + this.CopyTo = this.__CopyTo == null ? null : system.proxies.FileDocument.initialize(getContext(), __CopyTo); // BEGIN USER CODE IContext context = this.getContext(); @@ -51,6 +51,7 @@ public java.lang.Boolean executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/emailtemplate/actions/GetEmailSettingsByID.java b/javasource/emailtemplate/actions/GetEmailSettingsByID.java index 1b968fb..c18e9a4 100644 --- a/javasource/emailtemplate/actions/GetEmailSettingsByID.java +++ b/javasource/emailtemplate/actions/GetEmailSettingsByID.java @@ -36,6 +36,7 @@ public IMendixObject executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/emailtemplate/actions/OAuthRequestsHandler.java b/javasource/emailtemplate/actions/OAuthRequestsHandler.java index a819600..7238c75 100644 --- a/javasource/emailtemplate/actions/OAuthRequestsHandler.java +++ b/javasource/emailtemplate/actions/OAuthRequestsHandler.java @@ -40,6 +40,7 @@ public java.lang.Boolean executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/emailtemplate/actions/ReplaceCustomToken.java b/javasource/emailtemplate/actions/ReplaceCustomToken.java index a26030d..fd8cbfe 100644 --- a/javasource/emailtemplate/actions/ReplaceCustomToken.java +++ b/javasource/emailtemplate/actions/ReplaceCustomToken.java @@ -31,7 +31,7 @@ public ReplaceCustomToken(IContext context, java.lang.String Tokenobject, java.l @java.lang.Override public java.lang.Boolean executeAction() throws Exception { - this.Emailobject = __Emailobject == null ? null : emailtemplate.proxies.Email.initialize(getContext(), __Emailobject); + this.Emailobject = this.__Emailobject == null ? null : emailtemplate.proxies.Email.initialize(getContext(), __Emailobject); // BEGIN USER CODE if( !this.Emailobject.getUseOnlyPlainText().equals(true) ) @@ -43,6 +43,7 @@ public java.lang.Boolean executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/emailtemplate/actions/ReplaceEmailTemplateTokens.java b/javasource/emailtemplate/actions/ReplaceEmailTemplateTokens.java index d782bf5..e6af116 100644 --- a/javasource/emailtemplate/actions/ReplaceEmailTemplateTokens.java +++ b/javasource/emailtemplate/actions/ReplaceEmailTemplateTokens.java @@ -37,12 +37,13 @@ public ReplaceEmailTemplateTokens(IContext context, IMendixObject DataObject, IM @java.lang.Override public java.lang.Boolean executeAction() throws Exception { - this.email = __email == null ? null : emailtemplate.proxies.Email.initialize(getContext(), __email); + this.email = this.__email == null ? null : emailtemplate.proxies.Email.initialize(getContext(), __email); - this.TokenList = new java.util.ArrayList(); - if (__TokenList != null) - for (IMendixObject __TokenListElement : __TokenList) - this.TokenList.add(mxmodelreflection.proxies.Token.initialize(getContext(), __TokenListElement)); + this.TokenList = java.util.Optional.ofNullable(this.__TokenList) + .orElse(java.util.Collections.emptyList()) + .stream() + .map(__TokenListElement -> mxmodelreflection.proxies.Token.initialize(getContext(), __TokenListElement)) + .collect(java.util.stream.Collectors.toList()); // BEGIN USER CODE @@ -62,6 +63,7 @@ public java.lang.Boolean executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/emailtemplate/actions/SendEmail.java b/javasource/emailtemplate/actions/SendEmail.java index 95173d7..159e5d3 100644 --- a/javasource/emailtemplate/actions/SendEmail.java +++ b/javasource/emailtemplate/actions/SendEmail.java @@ -74,17 +74,19 @@ public SendEmail(IContext context, java.lang.String SMTPHost, java.lang.String S @java.lang.Override public java.lang.Boolean executeAction() throws Exception { - this.AttachmentList = new java.util.ArrayList(); - if (__AttachmentList != null) - for (IMendixObject __AttachmentListElement : __AttachmentList) - this.AttachmentList.add(system.proxies.FileDocument.initialize(getContext(), __AttachmentListElement)); + this.AttachmentList = java.util.Optional.ofNullable(this.__AttachmentList) + .orElse(java.util.Collections.emptyList()) + .stream() + .map(__AttachmentListElement -> system.proxies.FileDocument.initialize(getContext(), __AttachmentListElement)) + .collect(java.util.stream.Collectors.toList()); - this.HeaderList = new java.util.ArrayList(); - if (__HeaderList != null) - for (IMendixObject __HeaderListElement : __HeaderList) - this.HeaderList.add(emailtemplate.proxies.Header.initialize(getContext(), __HeaderListElement)); + this.HeaderList = java.util.Optional.ofNullable(this.__HeaderList) + .orElse(java.util.Collections.emptyList()) + .stream() + .map(__HeaderListElement -> emailtemplate.proxies.Header.initialize(getContext(), __HeaderListElement)) + .collect(java.util.stream.Collectors.toList()); - this.EmailSettings = __EmailSettings == null ? null : emailtemplate.proxies.EmailSettings.initialize(getContext(), __EmailSettings); + this.EmailSettings = this.__EmailSettings == null ? null : emailtemplate.proxies.EmailSettings.initialize(getContext(), __EmailSettings); // BEGIN USER CODE @@ -189,6 +191,7 @@ public java.lang.Boolean executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/emailtemplate/proxies/Attachment.java b/javasource/emailtemplate/proxies/Attachment.java index 615fcc0..6e3d816 100644 --- a/javasource/emailtemplate/proxies/Attachment.java +++ b/javasource/emailtemplate/proxies/Attachment.java @@ -25,7 +25,7 @@ public enum MemberNames Attachment_Email("EmailTemplate.Attachment_Email"), Attachment_EmailTemplate("EmailTemplate.Attachment_EmailTemplate"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -41,14 +41,15 @@ public java.lang.String toString() public Attachment(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "EmailTemplate.Attachment")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected Attachment(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject attachmentMendixObject) { super(context, attachmentMendixObject); - if (!com.mendix.core.Core.isSubClassOf("EmailTemplate.Attachment", attachmentMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a EmailTemplate.Attachment"); + if (!com.mendix.core.Core.isSubClassOf(entityName, attachmentMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } } /** @@ -63,6 +64,9 @@ public static emailtemplate.proxies.Attachment initialize(com.mendix.systemwidei /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static emailtemplate.proxies.Attachment initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -77,13 +81,15 @@ public static emailtemplate.proxies.Attachment load(com.mendix.systemwideinterfa public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//EmailTemplate.Attachment" + xpathConstraint)) - result.add(emailtemplate.proxies.Attachment.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> emailtemplate.proxies.Attachment.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** + * @throws com.mendix.core.CoreException * @return value of Attachment_Email */ public final emailtemplate.proxies.Email getAttachment_Email() throws com.mendix.core.CoreException @@ -94,13 +100,15 @@ public final emailtemplate.proxies.Email getAttachment_Email() throws com.mendix /** * @param context * @return value of Attachment_Email + * @throws com.mendix.core.CoreException */ public final emailtemplate.proxies.Email getAttachment_Email(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { emailtemplate.proxies.Email result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.Attachment_Email.toString()); - if (identifier != null) + if (identifier != null) { result = emailtemplate.proxies.Email.load(context, identifier); + } return result; } @@ -120,13 +128,15 @@ public final void setAttachment_Email(emailtemplate.proxies.Email attachment_ema */ public final void setAttachment_Email(com.mendix.systemwideinterfaces.core.IContext context, emailtemplate.proxies.Email attachment_email) { - if (attachment_email == null) + if (attachment_email == null) { getMendixObject().setValue(context, MemberNames.Attachment_Email.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.Attachment_Email.toString(), attachment_email.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of Attachment_EmailTemplate */ public final emailtemplate.proxies.EmailTemplate getAttachment_EmailTemplate() throws com.mendix.core.CoreException @@ -137,13 +147,15 @@ public final emailtemplate.proxies.EmailTemplate getAttachment_EmailTemplate() t /** * @param context * @return value of Attachment_EmailTemplate + * @throws com.mendix.core.CoreException */ public final emailtemplate.proxies.EmailTemplate getAttachment_EmailTemplate(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { emailtemplate.proxies.EmailTemplate result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.Attachment_EmailTemplate.toString()); - if (identifier != null) + if (identifier != null) { result = emailtemplate.proxies.EmailTemplate.load(context, identifier); + } return result; } @@ -163,18 +175,19 @@ public final void setAttachment_EmailTemplate(emailtemplate.proxies.EmailTemplat */ public final void setAttachment_EmailTemplate(com.mendix.systemwideinterfaces.core.IContext context, emailtemplate.proxies.EmailTemplate attachment_emailtemplate) { - if (attachment_emailtemplate == null) + if (attachment_emailtemplate == null) { getMendixObject().setValue(context, MemberNames.Attachment_EmailTemplate.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.Attachment_EmailTemplate.toString(), attachment_emailtemplate.getMendixObject().getId()); + } } @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final emailtemplate.proxies.Attachment that = (emailtemplate.proxies.Attachment) obj; @@ -194,7 +207,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "EmailTemplate.Attachment"; + return entityName; } /** diff --git a/javasource/emailtemplate/proxies/Email.java b/javasource/emailtemplate/proxies/Email.java index 54b5f9a..20b3628 100644 --- a/javasource/emailtemplate/proxies/Email.java +++ b/javasource/emailtemplate/proxies/Email.java @@ -39,7 +39,7 @@ public enum MemberNames Status("Status"), Email_EmailTemplate("EmailTemplate.Email_EmailTemplate"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -55,15 +55,17 @@ public java.lang.String toString() public Email(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "EmailTemplate.Email")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected Email(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject emailMendixObject) { - if (emailMendixObject == null) + if (emailMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("EmailTemplate.Email", emailMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a EmailTemplate.Email"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, emailMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.emailMendixObject = emailMendixObject; this.context = context; @@ -81,6 +83,9 @@ public static emailtemplate.proxies.Email initialize(com.mendix.systemwideinterf /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static emailtemplate.proxies.Email initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -95,14 +100,16 @@ public static emailtemplate.proxies.Email load(com.mendix.systemwideinterfaces.c public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//EmailTemplate.Email" + xpathConstraint)) - result.add(emailtemplate.proxies.Email.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> emailtemplate.proxies.Email.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -111,6 +118,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -724,9 +732,9 @@ public final emailtemplate.proxies.Status getStatus() public final emailtemplate.proxies.Status getStatus(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.Status.toString()); - if (obj == null) + if (obj == null) { return null; - + } return emailtemplate.proxies.Status.valueOf((java.lang.String) obj); } @@ -746,13 +754,15 @@ public final void setStatus(emailtemplate.proxies.Status status) */ public final void setStatus(com.mendix.systemwideinterfaces.core.IContext context, emailtemplate.proxies.Status status) { - if (status != null) + if (status != null) { getMendixObject().setValue(context, MemberNames.Status.toString(), status.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.Status.toString(), null); + } } /** + * @throws com.mendix.core.CoreException * @return value of Email_EmailTemplate */ public final emailtemplate.proxies.EmailTemplate getEmail_EmailTemplate() throws com.mendix.core.CoreException @@ -763,13 +773,15 @@ public final emailtemplate.proxies.EmailTemplate getEmail_EmailTemplate() throws /** * @param context * @return value of Email_EmailTemplate + * @throws com.mendix.core.CoreException */ public final emailtemplate.proxies.EmailTemplate getEmail_EmailTemplate(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { emailtemplate.proxies.EmailTemplate result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.Email_EmailTemplate.toString()); - if (identifier != null) + if (identifier != null) { result = emailtemplate.proxies.EmailTemplate.load(context, identifier); + } return result; } @@ -789,10 +801,11 @@ public final void setEmail_EmailTemplate(emailtemplate.proxies.EmailTemplate ema */ public final void setEmail_EmailTemplate(com.mendix.systemwideinterfaces.core.IContext context, emailtemplate.proxies.EmailTemplate email_emailtemplate) { - if (email_emailtemplate == null) + if (email_emailtemplate == null) { getMendixObject().setValue(context, MemberNames.Email_EmailTemplate.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.Email_EmailTemplate.toString(), email_emailtemplate.getMendixObject().getId()); + } } /** @@ -814,9 +827,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final emailtemplate.proxies.Email that = (emailtemplate.proxies.Email) obj; @@ -836,7 +849,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "EmailTemplate.Email"; + return entityName; } /** diff --git a/javasource/emailtemplate/proxies/EmailLog.java b/javasource/emailtemplate/proxies/EmailLog.java index fbdd75b..7764ac5 100644 --- a/javasource/emailtemplate/proxies/EmailLog.java +++ b/javasource/emailtemplate/proxies/EmailLog.java @@ -27,7 +27,7 @@ public enum MemberNames TriggeredInMF("TriggeredInMF"), StackTrace("StackTrace"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -43,15 +43,17 @@ public java.lang.String toString() public EmailLog(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "EmailTemplate.EmailLog")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected EmailLog(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject emailLogMendixObject) { - if (emailLogMendixObject == null) + if (emailLogMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("EmailTemplate.EmailLog", emailLogMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a EmailTemplate.EmailLog"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, emailLogMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.emailLogMendixObject = emailLogMendixObject; this.context = context; @@ -69,6 +71,9 @@ public static emailtemplate.proxies.EmailLog initialize(com.mendix.systemwideint /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static emailtemplate.proxies.EmailLog initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -83,14 +88,16 @@ public static emailtemplate.proxies.EmailLog load(com.mendix.systemwideinterface public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//EmailTemplate.EmailLog" + xpathConstraint)) - result.add(emailtemplate.proxies.EmailLog.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> emailtemplate.proxies.EmailLog.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -99,6 +106,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -172,9 +180,9 @@ public final emailtemplate.proxies.LogType getLogtype() public final emailtemplate.proxies.LogType getLogtype(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.Logtype.toString()); - if (obj == null) + if (obj == null) { return null; - + } return emailtemplate.proxies.LogType.valueOf((java.lang.String) obj); } @@ -194,10 +202,11 @@ public final void setLogtype(emailtemplate.proxies.LogType logtype) */ public final void setLogtype(com.mendix.systemwideinterfaces.core.IContext context, emailtemplate.proxies.LogType logtype) { - if (logtype != null) + if (logtype != null) { getMendixObject().setValue(context, MemberNames.Logtype.toString(), logtype.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.Logtype.toString(), null); + } } /** @@ -363,9 +372,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final emailtemplate.proxies.EmailLog that = (emailtemplate.proxies.EmailLog) obj; @@ -385,7 +394,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "EmailTemplate.EmailLog"; + return entityName; } /** diff --git a/javasource/emailtemplate/proxies/EmailSettings.java b/javasource/emailtemplate/proxies/EmailSettings.java index a7ed32c..049d7c9 100644 --- a/javasource/emailtemplate/proxies/EmailSettings.java +++ b/javasource/emailtemplate/proxies/EmailSettings.java @@ -34,7 +34,7 @@ public enum MemberNames EmailSettings_OAuthProviderDetails("EmailTemplate.EmailSettings_OAuthProviderDetails"), Token_EmailSettings("EmailTemplate.Token_EmailSettings"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -50,15 +50,17 @@ public java.lang.String toString() public EmailSettings(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "EmailTemplate.EmailSettings")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected EmailSettings(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject emailSettingsMendixObject) { - if (emailSettingsMendixObject == null) + if (emailSettingsMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("EmailTemplate.EmailSettings", emailSettingsMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a EmailTemplate.EmailSettings"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, emailSettingsMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.emailSettingsMendixObject = emailSettingsMendixObject; this.context = context; @@ -76,6 +78,9 @@ public static emailtemplate.proxies.EmailSettings initialize(com.mendix.systemwi /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static emailtemplate.proxies.EmailSettings initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -90,14 +95,16 @@ public static emailtemplate.proxies.EmailSettings load(com.mendix.systemwideinte public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//EmailTemplate.EmailSettings" + xpathConstraint)) - result.add(emailtemplate.proxies.EmailSettings.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> emailtemplate.proxies.EmailSettings.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -106,6 +113,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -524,6 +532,7 @@ public final void setisOAuthUsed(com.mendix.systemwideinterfaces.core.IContext c } /** + * @throws com.mendix.core.CoreException * @return value of EmailSettings_OAuthProviderDetails */ public final emailtemplate.proxies.OAuthProviderDetails getEmailSettings_OAuthProviderDetails() throws com.mendix.core.CoreException @@ -534,13 +543,15 @@ public final emailtemplate.proxies.OAuthProviderDetails getEmailSettings_OAuthPr /** * @param context * @return value of EmailSettings_OAuthProviderDetails + * @throws com.mendix.core.CoreException */ public final emailtemplate.proxies.OAuthProviderDetails getEmailSettings_OAuthProviderDetails(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { emailtemplate.proxies.OAuthProviderDetails result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.EmailSettings_OAuthProviderDetails.toString()); - if (identifier != null) + if (identifier != null) { result = emailtemplate.proxies.OAuthProviderDetails.load(context, identifier); + } return result; } @@ -560,13 +571,15 @@ public final void setEmailSettings_OAuthProviderDetails(emailtemplate.proxies.OA */ public final void setEmailSettings_OAuthProviderDetails(com.mendix.systemwideinterfaces.core.IContext context, emailtemplate.proxies.OAuthProviderDetails emailsettings_oauthproviderdetails) { - if (emailsettings_oauthproviderdetails == null) + if (emailsettings_oauthproviderdetails == null) { getMendixObject().setValue(context, MemberNames.EmailSettings_OAuthProviderDetails.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.EmailSettings_OAuthProviderDetails.toString(), emailsettings_oauthproviderdetails.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of Token_EmailSettings */ public final emailtemplate.proxies.Token getToken_EmailSettings() throws com.mendix.core.CoreException @@ -577,13 +590,15 @@ public final emailtemplate.proxies.Token getToken_EmailSettings() throws com.men /** * @param context * @return value of Token_EmailSettings + * @throws com.mendix.core.CoreException */ public final emailtemplate.proxies.Token getToken_EmailSettings(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { emailtemplate.proxies.Token result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.Token_EmailSettings.toString()); - if (identifier != null) + if (identifier != null) { result = emailtemplate.proxies.Token.load(context, identifier); + } return result; } @@ -603,10 +618,11 @@ public final void setToken_EmailSettings(emailtemplate.proxies.Token token_email */ public final void setToken_EmailSettings(com.mendix.systemwideinterfaces.core.IContext context, emailtemplate.proxies.Token token_emailsettings) { - if (token_emailsettings == null) + if (token_emailsettings == null) { getMendixObject().setValue(context, MemberNames.Token_EmailSettings.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.Token_EmailSettings.toString(), token_emailsettings.getMendixObject().getId()); + } } /** @@ -628,9 +644,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final emailtemplate.proxies.EmailSettings that = (emailtemplate.proxies.EmailSettings) obj; @@ -650,7 +666,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "EmailTemplate.EmailSettings"; + return entityName; } /** diff --git a/javasource/emailtemplate/proxies/EmailTemplate.java b/javasource/emailtemplate/proxies/EmailTemplate.java index d2933fb..8af42b3 100644 --- a/javasource/emailtemplate/proxies/EmailTemplate.java +++ b/javasource/emailtemplate/proxies/EmailTemplate.java @@ -35,7 +35,7 @@ public enum MemberNames EmailTemplate_MxObjectType("EmailTemplate.EmailTemplate_MxObjectType"), EmailTemplate_Token("EmailTemplate.EmailTemplate_Token"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -51,15 +51,17 @@ public java.lang.String toString() public EmailTemplate(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "EmailTemplate.EmailTemplate")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected EmailTemplate(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject emailTemplateMendixObject) { - if (emailTemplateMendixObject == null) + if (emailTemplateMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("EmailTemplate.EmailTemplate", emailTemplateMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a EmailTemplate.EmailTemplate"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, emailTemplateMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.emailTemplateMendixObject = emailTemplateMendixObject; this.context = context; @@ -77,6 +79,9 @@ public static emailtemplate.proxies.EmailTemplate initialize(com.mendix.systemwi /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static emailtemplate.proxies.EmailTemplate initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -91,14 +96,16 @@ public static emailtemplate.proxies.EmailTemplate load(com.mendix.systemwideinte public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//EmailTemplate.EmailTemplate" + xpathConstraint)) - result.add(emailtemplate.proxies.EmailTemplate.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> emailtemplate.proxies.EmailTemplate.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -107,6 +114,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -561,6 +569,7 @@ public final void setUseOnlyPlainText(com.mendix.systemwideinterfaces.core.ICont } /** + * @throws com.mendix.core.CoreException * @return value of EmailTemplate_MxObjectType */ public final mxmodelreflection.proxies.MxObjectType getEmailTemplate_MxObjectType() throws com.mendix.core.CoreException @@ -571,13 +580,15 @@ public final mxmodelreflection.proxies.MxObjectType getEmailTemplate_MxObjectTyp /** * @param context * @return value of EmailTemplate_MxObjectType + * @throws com.mendix.core.CoreException */ public final mxmodelreflection.proxies.MxObjectType getEmailTemplate_MxObjectType(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { mxmodelreflection.proxies.MxObjectType result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.EmailTemplate_MxObjectType.toString()); - if (identifier != null) + if (identifier != null) { result = mxmodelreflection.proxies.MxObjectType.load(context, identifier); + } return result; } @@ -597,13 +608,15 @@ public final void setEmailTemplate_MxObjectType(mxmodelreflection.proxies.MxObje */ public final void setEmailTemplate_MxObjectType(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.MxObjectType emailtemplate_mxobjecttype) { - if (emailtemplate_mxobjecttype == null) + if (emailtemplate_mxobjecttype == null) { getMendixObject().setValue(context, MemberNames.EmailTemplate_MxObjectType.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.EmailTemplate_MxObjectType.toString(), emailtemplate_mxobjecttype.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of EmailTemplate_Token */ public final java.util.List getEmailTemplate_Token() throws com.mendix.core.CoreException @@ -614,16 +627,19 @@ public final java.util.List getEmailTemplate_To /** * @param context * @return value of EmailTemplate_Token + * @throws com.mendix.core.CoreException */ @SuppressWarnings("unchecked") public final java.util.List getEmailTemplate_Token(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); + java.util.List result = new java.util.ArrayList<>(); Object valueObject = getMendixObject().getValue(context, MemberNames.EmailTemplate_Token.toString()); - if (valueObject == null) + if (valueObject == null) { return result; - for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) + } + for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) { result.add(mxmodelreflection.proxies.Token.initialize(context, mendixObject)); + } return result; } @@ -643,9 +659,11 @@ public final void setEmailTemplate_Token(java.util.List emailtemplate_token) { - java.util.List identifiers = new java.util.ArrayList(); - for (mxmodelreflection.proxies.Token proxyObject : emailtemplate_token) - identifiers.add(proxyObject.getMendixObject().getId()); + var identifiers = emailtemplate_token + .stream() + .map(proxyObject -> proxyObject.getMendixObject().getId()) + .collect(java.util.stream.Collectors.toList()); + getMendixObject().setValue(context, MemberNames.EmailTemplate_Token.toString(), identifiers); } @@ -668,9 +686,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final emailtemplate.proxies.EmailTemplate that = (emailtemplate.proxies.EmailTemplate) obj; @@ -690,7 +708,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "EmailTemplate.EmailTemplate"; + return entityName; } /** diff --git a/javasource/emailtemplate/proxies/Header.java b/javasource/emailtemplate/proxies/Header.java index 62dced2..20ddfa5 100644 --- a/javasource/emailtemplate/proxies/Header.java +++ b/javasource/emailtemplate/proxies/Header.java @@ -24,7 +24,7 @@ public enum MemberNames Value("Value"), Header_Email("EmailTemplate.Header_Email"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -40,15 +40,17 @@ public java.lang.String toString() public Header(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "EmailTemplate.Header")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected Header(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject headerMendixObject) { - if (headerMendixObject == null) + if (headerMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("EmailTemplate.Header", headerMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a EmailTemplate.Header"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, headerMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.headerMendixObject = headerMendixObject; this.context = context; @@ -66,6 +68,9 @@ public static emailtemplate.proxies.Header initialize(com.mendix.systemwideinter /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static emailtemplate.proxies.Header initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -80,14 +85,16 @@ public static emailtemplate.proxies.Header load(com.mendix.systemwideinterfaces. public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//EmailTemplate.Header" + xpathConstraint)) - result.add(emailtemplate.proxies.Header.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> emailtemplate.proxies.Header.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -96,6 +103,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -190,6 +198,7 @@ public final void setValue(com.mendix.systemwideinterfaces.core.IContext context } /** + * @throws com.mendix.core.CoreException * @return value of Header_Email */ public final emailtemplate.proxies.Email getHeader_Email() throws com.mendix.core.CoreException @@ -200,13 +209,15 @@ public final emailtemplate.proxies.Email getHeader_Email() throws com.mendix.cor /** * @param context * @return value of Header_Email + * @throws com.mendix.core.CoreException */ public final emailtemplate.proxies.Email getHeader_Email(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { emailtemplate.proxies.Email result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.Header_Email.toString()); - if (identifier != null) + if (identifier != null) { result = emailtemplate.proxies.Email.load(context, identifier); + } return result; } @@ -226,10 +237,11 @@ public final void setHeader_Email(emailtemplate.proxies.Email header_email) */ public final void setHeader_Email(com.mendix.systemwideinterfaces.core.IContext context, emailtemplate.proxies.Email header_email) { - if (header_email == null) + if (header_email == null) { getMendixObject().setValue(context, MemberNames.Header_Email.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.Header_Email.toString(), header_email.getMendixObject().getId()); + } } /** @@ -251,9 +263,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final emailtemplate.proxies.Header that = (emailtemplate.proxies.Header) obj; @@ -273,7 +285,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "EmailTemplate.Header"; + return entityName; } /** diff --git a/javasource/emailtemplate/proxies/LogType.java b/javasource/emailtemplate/proxies/LogType.java index fee4314..3587093 100644 --- a/javasource/emailtemplate/proxies/LogType.java +++ b/javasource/emailtemplate/proxies/LogType.java @@ -10,20 +10,19 @@ public enum LogType Warning(new java.lang.String[][] { new java.lang.String[] { "en_US", "Warning" }, new java.lang.String[] { "en_GB", "Warning" }, new java.lang.String[] { "en_ZA", "Warning" }, new java.lang.String[] { "nl_NL", "Waarschuwing" } }), Error(new java.lang.String[][] { new java.lang.String[] { "en_US", "Error" }, new java.lang.String[] { "en_GB", "Error" }, new java.lang.String[] { "en_ZA", "Error" }, new java.lang.String[] { "nl_NL", "Foutmelding" } }); - private java.util.Map captions; + private final java.util.Map captions; private LogType(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/emailtemplate/proxies/ModelReflectionChecker.java b/javasource/emailtemplate/proxies/ModelReflectionChecker.java index 6221452..237b5b5 100644 --- a/javasource/emailtemplate/proxies/ModelReflectionChecker.java +++ b/javasource/emailtemplate/proxies/ModelReflectionChecker.java @@ -23,7 +23,7 @@ public enum MemberNames ModelReflectionSynced("ModelReflectionSynced"), ModelReflectionChecker_EmailTemplate("EmailTemplate.ModelReflectionChecker_EmailTemplate"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -39,15 +39,17 @@ public java.lang.String toString() public ModelReflectionChecker(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "EmailTemplate.ModelReflectionChecker")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected ModelReflectionChecker(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject modelReflectionCheckerMendixObject) { - if (modelReflectionCheckerMendixObject == null) + if (modelReflectionCheckerMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("EmailTemplate.ModelReflectionChecker", modelReflectionCheckerMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a EmailTemplate.ModelReflectionChecker"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, modelReflectionCheckerMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.modelReflectionCheckerMendixObject = modelReflectionCheckerMendixObject; this.context = context; @@ -65,6 +67,9 @@ public static emailtemplate.proxies.ModelReflectionChecker initialize(com.mendix /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static emailtemplate.proxies.ModelReflectionChecker initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -79,6 +84,7 @@ public static emailtemplate.proxies.ModelReflectionChecker load(com.mendix.syste /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -87,6 +93,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -145,6 +152,7 @@ public final void setModelReflectionSynced(com.mendix.systemwideinterfaces.core. } /** + * @throws com.mendix.core.CoreException * @return value of ModelReflectionChecker_EmailTemplate */ public final emailtemplate.proxies.EmailTemplate getModelReflectionChecker_EmailTemplate() throws com.mendix.core.CoreException @@ -155,13 +163,15 @@ public final emailtemplate.proxies.EmailTemplate getModelReflectionChecker_Email /** * @param context * @return value of ModelReflectionChecker_EmailTemplate + * @throws com.mendix.core.CoreException */ public final emailtemplate.proxies.EmailTemplate getModelReflectionChecker_EmailTemplate(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { emailtemplate.proxies.EmailTemplate result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.ModelReflectionChecker_EmailTemplate.toString()); - if (identifier != null) + if (identifier != null) { result = emailtemplate.proxies.EmailTemplate.load(context, identifier); + } return result; } @@ -181,10 +191,11 @@ public final void setModelReflectionChecker_EmailTemplate(emailtemplate.proxies. */ public final void setModelReflectionChecker_EmailTemplate(com.mendix.systemwideinterfaces.core.IContext context, emailtemplate.proxies.EmailTemplate modelreflectionchecker_emailtemplate) { - if (modelreflectionchecker_emailtemplate == null) + if (modelreflectionchecker_emailtemplate == null) { getMendixObject().setValue(context, MemberNames.ModelReflectionChecker_EmailTemplate.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.ModelReflectionChecker_EmailTemplate.toString(), modelreflectionchecker_emailtemplate.getMendixObject().getId()); + } } /** @@ -206,9 +217,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final emailtemplate.proxies.ModelReflectionChecker that = (emailtemplate.proxies.ModelReflectionChecker) obj; @@ -228,7 +239,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "EmailTemplate.ModelReflectionChecker"; + return entityName; } /** diff --git a/javasource/emailtemplate/proxies/ModuleSetup.java b/javasource/emailtemplate/proxies/ModuleSetup.java index f58b919..5e37906 100644 --- a/javasource/emailtemplate/proxies/ModuleSetup.java +++ b/javasource/emailtemplate/proxies/ModuleSetup.java @@ -25,7 +25,7 @@ public enum MemberNames SentSuccessful("SentSuccessful"), ModuleSetup_EmailSettings("EmailTemplate.ModuleSetup_EmailSettings"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -41,15 +41,17 @@ public java.lang.String toString() public ModuleSetup(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "EmailTemplate.ModuleSetup")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected ModuleSetup(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject moduleSetupMendixObject) { - if (moduleSetupMendixObject == null) + if (moduleSetupMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("EmailTemplate.ModuleSetup", moduleSetupMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a EmailTemplate.ModuleSetup"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, moduleSetupMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.moduleSetupMendixObject = moduleSetupMendixObject; this.context = context; @@ -67,6 +69,9 @@ public static emailtemplate.proxies.ModuleSetup initialize(com.mendix.systemwide /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static emailtemplate.proxies.ModuleSetup initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -81,14 +86,16 @@ public static emailtemplate.proxies.ModuleSetup load(com.mendix.systemwideinterf public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//EmailTemplate.ModuleSetup" + xpathConstraint)) - result.add(emailtemplate.proxies.ModuleSetup.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> emailtemplate.proxies.ModuleSetup.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -97,6 +104,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -227,6 +235,7 @@ public final void setSentSuccessful(com.mendix.systemwideinterfaces.core.IContex } /** + * @throws com.mendix.core.CoreException * @return value of ModuleSetup_EmailSettings */ public final emailtemplate.proxies.EmailSettings getModuleSetup_EmailSettings() throws com.mendix.core.CoreException @@ -237,13 +246,15 @@ public final emailtemplate.proxies.EmailSettings getModuleSetup_EmailSettings() /** * @param context * @return value of ModuleSetup_EmailSettings + * @throws com.mendix.core.CoreException */ public final emailtemplate.proxies.EmailSettings getModuleSetup_EmailSettings(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { emailtemplate.proxies.EmailSettings result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.ModuleSetup_EmailSettings.toString()); - if (identifier != null) + if (identifier != null) { result = emailtemplate.proxies.EmailSettings.load(context, identifier); + } return result; } @@ -263,10 +274,11 @@ public final void setModuleSetup_EmailSettings(emailtemplate.proxies.EmailSettin */ public final void setModuleSetup_EmailSettings(com.mendix.systemwideinterfaces.core.IContext context, emailtemplate.proxies.EmailSettings modulesetup_emailsettings) { - if (modulesetup_emailsettings == null) + if (modulesetup_emailsettings == null) { getMendixObject().setValue(context, MemberNames.ModuleSetup_EmailSettings.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.ModuleSetup_EmailSettings.toString(), modulesetup_emailsettings.getMendixObject().getId()); + } } /** @@ -288,9 +300,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final emailtemplate.proxies.ModuleSetup that = (emailtemplate.proxies.ModuleSetup) obj; @@ -310,7 +322,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "EmailTemplate.ModuleSetup"; + return entityName; } /** diff --git a/javasource/emailtemplate/proxies/OAuthErrors.java b/javasource/emailtemplate/proxies/OAuthErrors.java index 8142f0d..c8a4fce 100644 --- a/javasource/emailtemplate/proxies/OAuthErrors.java +++ b/javasource/emailtemplate/proxies/OAuthErrors.java @@ -29,7 +29,7 @@ public enum MemberNames ErrorCodes("ErrorCodes"), OAuthErrors_Session("EmailTemplate.OAuthErrors_Session"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -45,15 +45,17 @@ public java.lang.String toString() public OAuthErrors(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "EmailTemplate.OAuthErrors")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected OAuthErrors(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject oAuthErrorsMendixObject) { - if (oAuthErrorsMendixObject == null) + if (oAuthErrorsMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("EmailTemplate.OAuthErrors", oAuthErrorsMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a EmailTemplate.OAuthErrors"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, oAuthErrorsMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.oAuthErrorsMendixObject = oAuthErrorsMendixObject; this.context = context; @@ -71,6 +73,9 @@ public static emailtemplate.proxies.OAuthErrors initialize(com.mendix.systemwide /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static emailtemplate.proxies.OAuthErrors initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -85,14 +90,16 @@ public static emailtemplate.proxies.OAuthErrors load(com.mendix.systemwideinterf public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//EmailTemplate.OAuthErrors" + xpathConstraint)) - result.add(emailtemplate.proxies.OAuthErrors.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> emailtemplate.proxies.OAuthErrors.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -101,6 +108,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -375,6 +383,7 @@ public final void setErrorCodes(com.mendix.systemwideinterfaces.core.IContext co } /** + * @throws com.mendix.core.CoreException * @return value of OAuthErrors_Session */ public final system.proxies.Session getOAuthErrors_Session() throws com.mendix.core.CoreException @@ -385,13 +394,15 @@ public final system.proxies.Session getOAuthErrors_Session() throws com.mendix.c /** * @param context * @return value of OAuthErrors_Session + * @throws com.mendix.core.CoreException */ public final system.proxies.Session getOAuthErrors_Session(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { system.proxies.Session result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.OAuthErrors_Session.toString()); - if (identifier != null) + if (identifier != null) { result = system.proxies.Session.load(context, identifier); + } return result; } @@ -411,10 +422,11 @@ public final void setOAuthErrors_Session(system.proxies.Session oautherrors_sess */ public final void setOAuthErrors_Session(com.mendix.systemwideinterfaces.core.IContext context, system.proxies.Session oautherrors_session) { - if (oautherrors_session == null) + if (oautherrors_session == null) { getMendixObject().setValue(context, MemberNames.OAuthErrors_Session.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.OAuthErrors_Session.toString(), oautherrors_session.getMendixObject().getId()); + } } /** @@ -436,9 +448,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final emailtemplate.proxies.OAuthErrors that = (emailtemplate.proxies.OAuthErrors) obj; @@ -458,7 +470,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "EmailTemplate.OAuthErrors"; + return entityName; } /** diff --git a/javasource/emailtemplate/proxies/OAuthPayload.java b/javasource/emailtemplate/proxies/OAuthPayload.java index 1618ec2..fbcf46f 100644 --- a/javasource/emailtemplate/proxies/OAuthPayload.java +++ b/javasource/emailtemplate/proxies/OAuthPayload.java @@ -27,7 +27,7 @@ public enum MemberNames reauthAccountId("reauthAccountId"), OAuthPayload_Session("EmailTemplate.OAuthPayload_Session"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -43,15 +43,17 @@ public java.lang.String toString() public OAuthPayload(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "EmailTemplate.OAuthPayload")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected OAuthPayload(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject oAuthPayloadMendixObject) { - if (oAuthPayloadMendixObject == null) + if (oAuthPayloadMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("EmailTemplate.OAuthPayload", oAuthPayloadMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a EmailTemplate.OAuthPayload"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, oAuthPayloadMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.oAuthPayloadMendixObject = oAuthPayloadMendixObject; this.context = context; @@ -69,6 +71,9 @@ public static emailtemplate.proxies.OAuthPayload initialize(com.mendix.systemwid /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static emailtemplate.proxies.OAuthPayload initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -83,14 +88,16 @@ public static emailtemplate.proxies.OAuthPayload load(com.mendix.systemwideinter public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//EmailTemplate.OAuthPayload" + xpathConstraint)) - result.add(emailtemplate.proxies.OAuthPayload.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> emailtemplate.proxies.OAuthPayload.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -99,6 +106,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -208,9 +216,9 @@ public final emailtemplate.proxies.SupportedOAuthProvider getprovider() public final emailtemplate.proxies.SupportedOAuthProvider getprovider(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.provider.toString()); - if (obj == null) + if (obj == null) { return null; - + } return emailtemplate.proxies.SupportedOAuthProvider.valueOf((java.lang.String) obj); } @@ -230,10 +238,11 @@ public final void setprovider(emailtemplate.proxies.SupportedOAuthProvider provi */ public final void setprovider(com.mendix.systemwideinterfaces.core.IContext context, emailtemplate.proxies.SupportedOAuthProvider provider) { - if (provider != null) + if (provider != null) { getMendixObject().setValue(context, MemberNames.provider.toString(), provider.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.provider.toString(), null); + } } /** @@ -309,6 +318,7 @@ public final void setreauthAccountId(com.mendix.systemwideinterfaces.core.IConte } /** + * @throws com.mendix.core.CoreException * @return value of OAuthPayload_Session */ public final system.proxies.Session getOAuthPayload_Session() throws com.mendix.core.CoreException @@ -319,13 +329,15 @@ public final system.proxies.Session getOAuthPayload_Session() throws com.mendix. /** * @param context * @return value of OAuthPayload_Session + * @throws com.mendix.core.CoreException */ public final system.proxies.Session getOAuthPayload_Session(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { system.proxies.Session result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.OAuthPayload_Session.toString()); - if (identifier != null) + if (identifier != null) { result = system.proxies.Session.load(context, identifier); + } return result; } @@ -345,10 +357,11 @@ public final void setOAuthPayload_Session(system.proxies.Session oauthpayload_se */ public final void setOAuthPayload_Session(com.mendix.systemwideinterfaces.core.IContext context, system.proxies.Session oauthpayload_session) { - if (oauthpayload_session == null) + if (oauthpayload_session == null) { getMendixObject().setValue(context, MemberNames.OAuthPayload_Session.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.OAuthPayload_Session.toString(), oauthpayload_session.getMendixObject().getId()); + } } /** @@ -370,9 +383,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final emailtemplate.proxies.OAuthPayload that = (emailtemplate.proxies.OAuthPayload) obj; @@ -392,7 +405,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "EmailTemplate.OAuthPayload"; + return entityName; } /** diff --git a/javasource/emailtemplate/proxies/OAuthProviderDetails.java b/javasource/emailtemplate/proxies/OAuthProviderDetails.java index 9b6fa9b..e70f8f4 100644 --- a/javasource/emailtemplate/proxies/OAuthProviderDetails.java +++ b/javasource/emailtemplate/proxies/OAuthProviderDetails.java @@ -25,7 +25,7 @@ public enum MemberNames ClientSecret("ClientSecret"), TenantID("TenantID"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -41,15 +41,17 @@ public java.lang.String toString() public OAuthProviderDetails(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "EmailTemplate.OAuthProviderDetails")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected OAuthProviderDetails(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject oAuthProviderDetailsMendixObject) { - if (oAuthProviderDetailsMendixObject == null) + if (oAuthProviderDetailsMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("EmailTemplate.OAuthProviderDetails", oAuthProviderDetailsMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a EmailTemplate.OAuthProviderDetails"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, oAuthProviderDetailsMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.oAuthProviderDetailsMendixObject = oAuthProviderDetailsMendixObject; this.context = context; @@ -67,6 +69,9 @@ public static emailtemplate.proxies.OAuthProviderDetails initialize(com.mendix.s /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static emailtemplate.proxies.OAuthProviderDetails initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -81,14 +86,16 @@ public static emailtemplate.proxies.OAuthProviderDetails load(com.mendix.systemw public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//EmailTemplate.OAuthProviderDetails" + xpathConstraint)) - result.add(emailtemplate.proxies.OAuthProviderDetails.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> emailtemplate.proxies.OAuthProviderDetails.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -97,6 +104,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -134,9 +142,9 @@ public final emailtemplate.proxies.SupportedOAuthProvider getProvider() public final emailtemplate.proxies.SupportedOAuthProvider getProvider(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.Provider.toString()); - if (obj == null) + if (obj == null) { return null; - + } return emailtemplate.proxies.SupportedOAuthProvider.valueOf((java.lang.String) obj); } @@ -156,10 +164,11 @@ public final void setProvider(emailtemplate.proxies.SupportedOAuthProvider provi */ public final void setProvider(com.mendix.systemwideinterfaces.core.IContext context, emailtemplate.proxies.SupportedOAuthProvider provider) { - if (provider != null) + if (provider != null) { getMendixObject().setValue(context, MemberNames.Provider.toString(), provider.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.Provider.toString(), null); + } } /** @@ -289,9 +298,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final emailtemplate.proxies.OAuthProviderDetails that = (emailtemplate.proxies.OAuthProviderDetails) obj; @@ -311,7 +320,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "EmailTemplate.OAuthProviderDetails"; + return entityName; } /** diff --git a/javasource/emailtemplate/proxies/PrivateConstants.java b/javasource/emailtemplate/proxies/PrivateConstants.java index f3962dc..9bdce6d 100644 --- a/javasource/emailtemplate/proxies/PrivateConstants.java +++ b/javasource/emailtemplate/proxies/PrivateConstants.java @@ -8,20 +8,19 @@ public enum PrivateConstants { regex(new java.lang.String[][] { new java.lang.String[] { "en_US", "^[^\\s\\@,]+?@([a-zA-Z0-9-]+\\.)+?[a-zA-Z]{2,}$" } }); - private java.util.Map captions; + private final java.util.Map captions; private PrivateConstants(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/emailtemplate/proxies/Status.java b/javasource/emailtemplate/proxies/Status.java index 1a9a6c0..c2e4e2d 100644 --- a/javasource/emailtemplate/proxies/Status.java +++ b/javasource/emailtemplate/proxies/Status.java @@ -11,20 +11,19 @@ public enum Status FAILED(new java.lang.String[][] { new java.lang.String[] { "en_US", "Failed" }, new java.lang.String[] { "en_GB", "Failed" }, new java.lang.String[] { "en_ZA", "Failed" }, new java.lang.String[] { "nl_NL", "Mislukt" } }), ERROR(new java.lang.String[][] { new java.lang.String[] { "en_US", "Error" }, new java.lang.String[] { "en_GB", "Error" }, new java.lang.String[] { "en_ZA", "Error" }, new java.lang.String[] { "nl_NL", "Foutmelding" } }); - private java.util.Map captions; + private final java.util.Map captions; private Status(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/emailtemplate/proxies/SupportedOAuthProvider.java b/javasource/emailtemplate/proxies/SupportedOAuthProvider.java index 415403b..fe7babd 100644 --- a/javasource/emailtemplate/proxies/SupportedOAuthProvider.java +++ b/javasource/emailtemplate/proxies/SupportedOAuthProvider.java @@ -9,20 +9,19 @@ public enum SupportedOAuthProvider NONE(new java.lang.String[][] { new java.lang.String[] { "en_US", "none" } }), AZURE(new java.lang.String[][] { new java.lang.String[] { "en_US", "azure" } }); - private java.util.Map captions; + private final java.util.Map captions; private SupportedOAuthProvider(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/emailtemplate/proxies/TestMessage.java b/javasource/emailtemplate/proxies/TestMessage.java index 07dd1a3..2a02c43 100644 --- a/javasource/emailtemplate/proxies/TestMessage.java +++ b/javasource/emailtemplate/proxies/TestMessage.java @@ -30,7 +30,7 @@ public enum MemberNames TestMessage_EmailSettings("EmailTemplate.TestMessage_EmailSettings"), TestMessage_ModuleSetup("EmailTemplate.TestMessage_ModuleSetup"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -46,15 +46,17 @@ public java.lang.String toString() public TestMessage(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "EmailTemplate.TestMessage")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected TestMessage(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject testMessageMendixObject) { - if (testMessageMendixObject == null) + if (testMessageMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("EmailTemplate.TestMessage", testMessageMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a EmailTemplate.TestMessage"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, testMessageMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.testMessageMendixObject = testMessageMendixObject; this.context = context; @@ -72,6 +74,9 @@ public static emailtemplate.proxies.TestMessage initialize(com.mendix.systemwide /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static emailtemplate.proxies.TestMessage initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -86,6 +91,7 @@ public static emailtemplate.proxies.TestMessage load(com.mendix.systemwideinterf /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -94,6 +100,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -203,9 +210,9 @@ public final emailtemplate.proxies.Status getStatus() public final emailtemplate.proxies.Status getStatus(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.Status.toString()); - if (obj == null) + if (obj == null) { return null; - + } return emailtemplate.proxies.Status.valueOf((java.lang.String) obj); } @@ -225,10 +232,11 @@ public final void setStatus(emailtemplate.proxies.Status status) */ public final void setStatus(com.mendix.systemwideinterfaces.core.IContext context, emailtemplate.proxies.Status status) { - if (status != null) + if (status != null) { getMendixObject().setValue(context, MemberNames.Status.toString(), status.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.Status.toString(), null); + } } /** @@ -376,6 +384,7 @@ public final void setPersistEmail(com.mendix.systemwideinterfaces.core.IContext } /** + * @throws com.mendix.core.CoreException * @return value of TestMessage_EmailSettings */ public final emailtemplate.proxies.EmailSettings getTestMessage_EmailSettings() throws com.mendix.core.CoreException @@ -386,13 +395,15 @@ public final emailtemplate.proxies.EmailSettings getTestMessage_EmailSettings() /** * @param context * @return value of TestMessage_EmailSettings + * @throws com.mendix.core.CoreException */ public final emailtemplate.proxies.EmailSettings getTestMessage_EmailSettings(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { emailtemplate.proxies.EmailSettings result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.TestMessage_EmailSettings.toString()); - if (identifier != null) + if (identifier != null) { result = emailtemplate.proxies.EmailSettings.load(context, identifier); + } return result; } @@ -412,13 +423,15 @@ public final void setTestMessage_EmailSettings(emailtemplate.proxies.EmailSettin */ public final void setTestMessage_EmailSettings(com.mendix.systemwideinterfaces.core.IContext context, emailtemplate.proxies.EmailSettings testmessage_emailsettings) { - if (testmessage_emailsettings == null) + if (testmessage_emailsettings == null) { getMendixObject().setValue(context, MemberNames.TestMessage_EmailSettings.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.TestMessage_EmailSettings.toString(), testmessage_emailsettings.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of TestMessage_ModuleSetup */ public final emailtemplate.proxies.ModuleSetup getTestMessage_ModuleSetup() throws com.mendix.core.CoreException @@ -429,13 +442,15 @@ public final emailtemplate.proxies.ModuleSetup getTestMessage_ModuleSetup() thro /** * @param context * @return value of TestMessage_ModuleSetup + * @throws com.mendix.core.CoreException */ public final emailtemplate.proxies.ModuleSetup getTestMessage_ModuleSetup(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { emailtemplate.proxies.ModuleSetup result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.TestMessage_ModuleSetup.toString()); - if (identifier != null) + if (identifier != null) { result = emailtemplate.proxies.ModuleSetup.load(context, identifier); + } return result; } @@ -455,10 +470,11 @@ public final void setTestMessage_ModuleSetup(emailtemplate.proxies.ModuleSetup t */ public final void setTestMessage_ModuleSetup(com.mendix.systemwideinterfaces.core.IContext context, emailtemplate.proxies.ModuleSetup testmessage_modulesetup) { - if (testmessage_modulesetup == null) + if (testmessage_modulesetup == null) { getMendixObject().setValue(context, MemberNames.TestMessage_ModuleSetup.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.TestMessage_ModuleSetup.toString(), testmessage_modulesetup.getMendixObject().getId()); + } } /** @@ -480,9 +496,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final emailtemplate.proxies.TestMessage that = (emailtemplate.proxies.TestMessage) obj; @@ -502,7 +518,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "EmailTemplate.TestMessage"; + return entityName; } /** diff --git a/javasource/emailtemplate/proxies/Token.java b/javasource/emailtemplate/proxies/Token.java index fa18333..59bb494 100644 --- a/javasource/emailtemplate/proxies/Token.java +++ b/javasource/emailtemplate/proxies/Token.java @@ -29,7 +29,7 @@ public enum MemberNames id_token("id_token"), Token_EmailSettings("EmailTemplate.Token_EmailSettings"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -45,15 +45,17 @@ public java.lang.String toString() public Token(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "EmailTemplate.Token")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected Token(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject tokenMendixObject) { - if (tokenMendixObject == null) + if (tokenMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("EmailTemplate.Token", tokenMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a EmailTemplate.Token"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, tokenMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.tokenMendixObject = tokenMendixObject; this.context = context; @@ -71,6 +73,9 @@ public static emailtemplate.proxies.Token initialize(com.mendix.systemwideinterf /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static emailtemplate.proxies.Token initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -85,14 +90,16 @@ public static emailtemplate.proxies.Token load(com.mendix.systemwideinterfaces.c public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//EmailTemplate.Token" + xpathConstraint)) - result.add(emailtemplate.proxies.Token.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> emailtemplate.proxies.Token.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -101,6 +108,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -375,6 +383,7 @@ public final void setid_token(com.mendix.systemwideinterfaces.core.IContext cont } /** + * @throws com.mendix.core.CoreException * @return value of Token_EmailSettings */ public final emailtemplate.proxies.EmailSettings getToken_EmailSettings() throws com.mendix.core.CoreException @@ -385,13 +394,15 @@ public final emailtemplate.proxies.EmailSettings getToken_EmailSettings() throws /** * @param context * @return value of Token_EmailSettings + * @throws com.mendix.core.CoreException */ public final emailtemplate.proxies.EmailSettings getToken_EmailSettings(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { emailtemplate.proxies.EmailSettings result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.Token_EmailSettings.toString()); - if (identifier != null) + if (identifier != null) { result = emailtemplate.proxies.EmailSettings.load(context, identifier); + } return result; } @@ -411,10 +422,11 @@ public final void setToken_EmailSettings(emailtemplate.proxies.EmailSettings tok */ public final void setToken_EmailSettings(com.mendix.systemwideinterfaces.core.IContext context, emailtemplate.proxies.EmailSettings token_emailsettings) { - if (token_emailsettings == null) + if (token_emailsettings == null) { getMendixObject().setValue(context, MemberNames.Token_EmailSettings.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.Token_EmailSettings.toString(), token_emailsettings.getMendixObject().getId()); + } } /** @@ -436,9 +448,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final emailtemplate.proxies.Token that = (emailtemplate.proxies.Token) obj; @@ -458,7 +470,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "EmailTemplate.Token"; + return entityName; } /** diff --git a/javasource/emailtemplate/proxies/constants/Constants.java b/javasource/emailtemplate/proxies/constants/Constants.java index b425408..d6ef36e 100644 --- a/javasource/emailtemplate/proxies/constants/Constants.java +++ b/javasource/emailtemplate/proxies/constants/Constants.java @@ -8,6 +8,14 @@ public class Constants { + /** + * @deprecated + * The default constructor of the Constants class should not be used. + * Use the static get methods instead. + */ + @java.lang.Deprecated(since = "9.12", forRemoval = true) + public Constants() {} + // These are the constants for the EmailTemplate module public static java.lang.String getazure_emailServerHostURL() diff --git a/javasource/emailtemplate/proxies/microflows/Microflows.java b/javasource/emailtemplate/proxies/microflows/Microflows.java index fcad25c..1468578 100644 --- a/javasource/emailtemplate/proxies/microflows/Microflows.java +++ b/javasource/emailtemplate/proxies/microflows/Microflows.java @@ -7,13 +7,19 @@ import java.util.HashMap; import java.util.Map; import com.mendix.core.Core; -import com.mendix.core.CoreException; -import com.mendix.systemwideinterfaces.MendixRuntimeException; import com.mendix.systemwideinterfaces.core.IContext; import com.mendix.systemwideinterfaces.core.IMendixObject; public class Microflows { + /** + * @deprecated + * The default constructor of the Microflows class should not be used. + * Use the static microflow invocation methods instead. + */ + @java.lang.Deprecated(since = "9.12", forRemoval = true) + public Microflows() {} + // These are the microflows for the EmailTemplate module public static boolean aSU_RegisterHandlers(IContext context) { @@ -143,12 +149,13 @@ public static void iVK_ResendFailedEmail(IContext context, emailtemplate.proxies public static void iVK_ResendFailedEmails(IContext context, java.util.List _emailList) { Map params = new HashMap<>(); - java.util.ArrayList listparam_emailList = null; + java.util.List listparam_emailList = null; if (_emailList != null) { listparam_emailList = new java.util.ArrayList<>(); - for (emailtemplate.proxies.Email obj : _emailList) + for (var obj : _emailList) { listparam_emailList.add(obj.getMendixObject()); + } } params.put("EmailList", listparam_emailList); @@ -253,21 +260,23 @@ public static boolean sendEmailMessage(IContext context, java.lang.String _from, params.put("CC", _cC); params.put("BCC", _bCC); params.put("EmailSettings", _emailSettings == null ? null : _emailSettings.getMendixObject()); - java.util.ArrayList listparam_attachmentList = null; + java.util.List listparam_attachmentList = null; if (_attachmentList != null) { listparam_attachmentList = new java.util.ArrayList<>(); - for (emailtemplate.proxies.Attachment obj : _attachmentList) + for (var obj : _attachmentList) { listparam_attachmentList.add(obj.getMendixObject()); + } } params.put("AttachmentList", listparam_attachmentList); - java.util.ArrayList listparam_headerList = null; + java.util.List listparam_headerList = null; if (_headerList != null) { listparam_headerList = new java.util.ArrayList<>(); - for (emailtemplate.proxies.Header obj : _headerList) + for (var obj : _headerList) { listparam_headerList.add(obj.getMendixObject()); + } } params.put("HeaderList", listparam_headerList); @@ -278,25 +287,25 @@ public static boolean sendEmailMessage(IContext context, java.lang.String _from, public static java.util.List sub_CreateAttachments(IContext context, java.util.List _fileDocumentList, emailtemplate.proxies.Email _email) { Map params = new HashMap<>(); - java.util.ArrayList listparam_fileDocumentList = null; + java.util.List listparam_fileDocumentList = null; if (_fileDocumentList != null) { listparam_fileDocumentList = new java.util.ArrayList<>(); - for (system.proxies.FileDocument obj : _fileDocumentList) + for (var obj : _fileDocumentList) { listparam_fileDocumentList.add(obj.getMendixObject()); + } } params.put("FileDocumentList", listparam_fileDocumentList); params.put("Email", _email == null ? null : _email.getMendixObject()); java.util.List objs = Core.microflowCall("EmailTemplate.Sub_CreateAttachments").withParams(params).execute(context); - java.util.List result = null; - if (objs != null) - { - result = new java.util.ArrayList<>(); - for (IMendixObject obj : objs) - result.add(emailtemplate.proxies.Attachment.initialize(context, obj)); + if (objs == null) { + return null; + } else { + return objs.stream() + .map(obj -> emailtemplate.proxies.Attachment.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } - return result; } public static void sub_CreateLogItem(IContext context, java.lang.String _triggeredInMF, emailtemplate.proxies.LogType _logType, java.lang.String _message, java.lang.String _errorMessage, java.lang.String _stackTrace) { @@ -311,24 +320,24 @@ public static void sub_CreateLogItem(IContext context, java.lang.String _trigger public static java.util.List sub_DuplicateTokenList(IContext context, java.util.List _tokenList) { Map params = new HashMap<>(); - java.util.ArrayList listparam_tokenList = null; + java.util.List listparam_tokenList = null; if (_tokenList != null) { listparam_tokenList = new java.util.ArrayList<>(); - for (mxmodelreflection.proxies.Token obj : _tokenList) + for (var obj : _tokenList) { listparam_tokenList.add(obj.getMendixObject()); + } } params.put("TokenList", listparam_tokenList); java.util.List objs = Core.microflowCall("EmailTemplate.Sub_DuplicateTokenList").withParams(params).execute(context); - java.util.List result = null; - if (objs != null) - { - result = new java.util.ArrayList<>(); - for (IMendixObject obj : objs) - result.add(mxmodelreflection.proxies.Token.initialize(context, obj)); + if (objs == null) { + return null; + } else { + return objs.stream() + .map(obj -> mxmodelreflection.proxies.Token.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } - return result; } public static void sub_SendQueuedEmail(IContext context, emailtemplate.proxies.Email _email, emailtemplate.proxies.EmailSettings _emailSettings, java.lang.String _decryptedPassword) { @@ -356,4 +365,4 @@ public static boolean vAL_ValidateOAuthProviderDetails(IContext context, emailte params.put("OAuthProviderDetails", _oAuthProviderDetails == null ? null : _oAuthProviderDetails.getMendixObject()); return (java.lang.Boolean) Core.microflowCall("EmailTemplate.VAL_ValidateOAuthProviderDetails").withParams(params).execute(context); } -} \ No newline at end of file +} diff --git a/javasource/encryption/actions/DecryptString.java b/javasource/encryption/actions/DecryptString.java index 401f7f7..f4f840c 100644 --- a/javasource/encryption/actions/DecryptString.java +++ b/javasource/encryption/actions/DecryptString.java @@ -63,6 +63,7 @@ public java.lang.String executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() @@ -117,7 +118,7 @@ private String decryptUsingGcm() throws Exception { if (s.length < 2) throw new MendixRuntimeException("Unexpected prefix when trying to decrypt string using legacy algorithm."); - Cipher c = Cipher.getInstance("AES/GCM/PKCS5PADDING"); + Cipher c = Cipher.getInstance("AES/GCM/NoPadding"); SecretKeySpec k = new SecretKeySpec(this.legacyKey.getBytes(), "AES"); // ignore Snyk Code warning; false positive byte[] iv = Base64.getDecoder().decode(s[0].getBytes()); diff --git a/javasource/encryption/actions/EncryptString.java b/javasource/encryption/actions/EncryptString.java index 05c3f4d..516afea 100644 --- a/javasource/encryption/actions/EncryptString.java +++ b/javasource/encryption/actions/EncryptString.java @@ -64,6 +64,7 @@ public java.lang.String executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/encryption/actions/GeneratePGPKeyRing.java b/javasource/encryption/actions/GeneratePGPKeyRing.java index 7afbc6a..2f31785 100644 --- a/javasource/encryption/actions/GeneratePGPKeyRing.java +++ b/javasource/encryption/actions/GeneratePGPKeyRing.java @@ -61,47 +61,37 @@ public GeneratePGPKeyRing(IContext context, IMendixObject CertPrivateKey, IMendi @java.lang.Override public java.lang.Boolean executeAction() throws Exception { - this.CertPrivateKey = __CertPrivateKey == null ? null : encryption.proxies.PGPCertificate.initialize(getContext(), __CertPrivateKey); + this.CertPrivateKey = this.__CertPrivateKey == null ? null : encryption.proxies.PGPCertificate.initialize(getContext(), __CertPrivateKey); - this.CertPublicKey = __CertPublicKey == null ? null : encryption.proxies.PGPCertificate.initialize(getContext(), __CertPublicKey); + this.CertPublicKey = this.__CertPublicKey == null ? null : encryption.proxies.PGPCertificate.initialize(getContext(), __CertPublicKey); // BEGIN USER CODE - - //Do we generate all files as ASCII armored files? - boolean armor = true; - - char pass[] = this.CertPrivateKey.getPassPhrase_Plain().toCharArray(); PGPKeyRingGenerator krgen = generateKeyRingGenerator(this.CertPrivateKey.getEmailAddress(), pass); - - + // Generate public key ring, dump to file. String tempASC = PGPFileProcessor.getNewTempFile("pub"); PGPPublicKeyRing pkr = krgen.generatePublicKeyRing(); String pubFilename = "publicKey.pub"; - OutputStream pubout = new BufferedOutputStream(new FileOutputStream(tempASC)); - if( armor ) { - pubout = new ArmoredOutputStream(pubout); - pubFilename = "publicKey.asc"; + try (OutputStream nestedStream = new BufferedOutputStream(new FileOutputStream(tempASC))) { + try (OutputStream pubout = new ArmoredOutputStream(nestedStream)) { + pubFilename = "publicKey.asc"; + pkr.encode(pubout); + } } - pkr.encode(pubout); - pubout.close(); Core.storeFileDocumentContent(getContext(), this.CertPublicKey.getMendixObject(), pubFilename, new FileInputStream(tempASC)); (new File(tempASC)).delete(); - // Generate private key, dump to file. String tempSKR = PGPFileProcessor.getNewTempFile("skr"); PGPSecretKeyRing skr = krgen.generateSecretKeyRing(); String skrFilename = "privateKey.skr"; OutputStream secout = new BufferedOutputStream(new FileOutputStream(tempSKR)); - if ( armor ) { - secout = new ArmoredOutputStream(secout); - skrFilename = "privateKey.asc"; - } + secout = new ArmoredOutputStream(secout); + skrFilename = "privateKey.asc"; skr.encode(secout); secout.close(); @@ -109,19 +99,13 @@ public java.lang.Boolean executeAction() throws Exception Core.storeFileDocumentContent(getContext(), this.CertPrivateKey.getMendixObject(), skrFilename, new FileInputStream(tempSKR)); (new File(tempSKR)).delete(); - - // Random code stuff - // PGPSecretKey skey = new Pg - // PGPSecretKeyRing.insertSecretKey(skr, ) - // skr.getSecretKey().encode(secout); - - return true; // END USER CODE } /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/encryption/actions/PGPDecryptDocument.java b/javasource/encryption/actions/PGPDecryptDocument.java index 91b5fd9..b9955fc 100644 --- a/javasource/encryption/actions/PGPDecryptDocument.java +++ b/javasource/encryption/actions/PGPDecryptDocument.java @@ -43,11 +43,11 @@ public PGPDecryptDocument(IContext context, IMendixObject PrivateDecryptionKey, @java.lang.Override public java.lang.Boolean executeAction() throws Exception { - this.PrivateDecryptionKey = __PrivateDecryptionKey == null ? null : encryption.proxies.PGPCertificate.initialize(getContext(), __PrivateDecryptionKey); + this.PrivateDecryptionKey = this.__PrivateDecryptionKey == null ? null : encryption.proxies.PGPCertificate.initialize(getContext(), __PrivateDecryptionKey); - this.DocumentToDecrypt = __DocumentToDecrypt == null ? null : system.proxies.FileDocument.initialize(getContext(), __DocumentToDecrypt); + this.DocumentToDecrypt = this.__DocumentToDecrypt == null ? null : system.proxies.FileDocument.initialize(getContext(), __DocumentToDecrypt); - this.OutputDocument = __OutputDocument == null ? null : system.proxies.FileDocument.initialize(getContext(), __OutputDocument); + this.OutputDocument = this.__OutputDocument == null ? null : system.proxies.FileDocument.initialize(getContext(), __OutputDocument); // BEGIN USER CODE PGPFileProcessor p = new PGPFileProcessor(); @@ -64,6 +64,7 @@ public java.lang.Boolean executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/encryption/actions/PGPEncryptDocument.java b/javasource/encryption/actions/PGPEncryptDocument.java index 992e657..26549f5 100644 --- a/javasource/encryption/actions/PGPEncryptDocument.java +++ b/javasource/encryption/actions/PGPEncryptDocument.java @@ -42,11 +42,11 @@ public PGPEncryptDocument(IContext context, IMendixObject ExternalPublicKey, IMe @java.lang.Override public java.lang.Boolean executeAction() throws Exception { - this.ExternalPublicKey = __ExternalPublicKey == null ? null : system.proxies.FileDocument.initialize(getContext(), __ExternalPublicKey); + this.ExternalPublicKey = this.__ExternalPublicKey == null ? null : system.proxies.FileDocument.initialize(getContext(), __ExternalPublicKey); - this.DocumentToEncrypt = __DocumentToEncrypt == null ? null : system.proxies.FileDocument.initialize(getContext(), __DocumentToEncrypt); + this.DocumentToEncrypt = this.__DocumentToEncrypt == null ? null : system.proxies.FileDocument.initialize(getContext(), __DocumentToEncrypt); - this.OutputDocument = __OutputDocument == null ? null : system.proxies.FileDocument.initialize(getContext(), __OutputDocument); + this.OutputDocument = this.__OutputDocument == null ? null : system.proxies.FileDocument.initialize(getContext(), __OutputDocument); // BEGIN USER CODE @@ -62,6 +62,7 @@ public java.lang.Boolean executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/encryption/actions/ValidatePrivateKeyRing.java b/javasource/encryption/actions/ValidatePrivateKeyRing.java index c739aa6..83f7eef 100644 --- a/javasource/encryption/actions/ValidatePrivateKeyRing.java +++ b/javasource/encryption/actions/ValidatePrivateKeyRing.java @@ -31,7 +31,7 @@ public ValidatePrivateKeyRing(IContext context, IMendixObject PrivateKeyRing) @java.lang.Override public java.lang.Boolean executeAction() throws Exception { - this.PrivateKeyRing = __PrivateKeyRing == null ? null : encryption.proxies.PGPCertificate.initialize(getContext(), __PrivateKeyRing); + this.PrivateKeyRing = this.__PrivateKeyRing == null ? null : encryption.proxies.PGPCertificate.initialize(getContext(), __PrivateKeyRing); // BEGIN USER CODE @@ -45,6 +45,7 @@ public java.lang.Boolean executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/encryption/pgp/PGPFileProcessor.java b/javasource/encryption/pgp/PGPFileProcessor.java index b12b035..20832b3 100644 --- a/javasource/encryption/pgp/PGPFileProcessor.java +++ b/javasource/encryption/pgp/PGPFileProcessor.java @@ -42,16 +42,20 @@ public boolean encrypt( IContext context ) throws Exception { try (InputStream publicKeyIn = Core.getFileDocumentContent(context, this.publicKeyFileDocument)) { String tempOutputFile = getNewTempFile("out"); - try (FileOutputStream out = new FileOutputStream(tempOutputFile)) { + try { + try (FileOutputStream out = new FileOutputStream(tempOutputFile)) { - File tmpIn = writeInputDocumentToTempFile(context); + File tmpIn = writeInputDocumentToTempFile(context); - PGPUtils.encryptFile(out, tmpIn.getAbsolutePath(), PGPUtils.readPublicKey(publicKeyIn), this.isAsciiArmored(), this.isIntegrityCheck()); + PGPUtils.encryptFile(out, tmpIn.getAbsolutePath(), PGPUtils.readPublicKey(publicKeyIn), this.isAsciiArmored(), this.isIntegrityCheck()); - tmpIn.delete(); - } + tmpIn.delete(); + } - storeOutput(context, tempOutputFile); + storeOutput(context, tempOutputFile); + } finally { + new File(tempOutputFile).delete(); + } } return true; diff --git a/javasource/encryption/pgp/PGPUtils.java b/javasource/encryption/pgp/PGPUtils.java index 21a2451..818c565 100644 --- a/javasource/encryption/pgp/PGPUtils.java +++ b/javasource/encryption/pgp/PGPUtils.java @@ -58,461 +58,451 @@ public class PGPUtils { - private static final int BUFFER_SIZE = 1 << 16; // should always be power of 2 - private static final int KEY_FLAGS = 27; - private static final int[] MASTER_KEY_CERTIFICATION_TYPES = new int[] { - PGPSignature.POSITIVE_CERTIFICATION, - PGPSignature.CASUAL_CERTIFICATION, - PGPSignature.NO_CERTIFICATION, - PGPSignature.DEFAULT_CERTIFICATION - }; - - @SuppressWarnings("unchecked") - public static PGPPublicKey readPublicKey( InputStream in ) - throws IOException, PGPException - { - - PGPPublicKeyRingCollection keyRingCollection = new PGPPublicKeyRingCollection(PGPUtil.getDecoderStream(in), new BcKeyFingerprintCalculator()); - - // - // we just loop through the collection till we find a key suitable for encryption, in the real - // world you would probably want to be a bit smarter about this. - // - PGPPublicKey publicKey = null; - - // - // iterate through the key rings. - // - Iterator rIt = keyRingCollection.getKeyRings(); - - while( publicKey == null && rIt.hasNext() ) { - PGPPublicKeyRing kRing = rIt.next(); - Iterator kIt = kRing.getPublicKeys(); - while( publicKey == null && kIt.hasNext() ) { - PGPPublicKey key = kIt.next(); - if ( key.isEncryptionKey() ) { - publicKey = key; - } - } - } - - if ( publicKey == null ) { - throw new IllegalArgumentException("Can't find public key in the key ring."); - } - if ( !isForEncryption(publicKey) ) { - throw new IllegalArgumentException("KeyID " + publicKey.getKeyID() + " not flagged for encryption."); - } - - return publicKey; - } - - @SuppressWarnings("unchecked") - public static PGPSecretKey readSecretKey( InputStream in ) - throws IOException, PGPException - { - - PGPSecretKeyRingCollection keyRingCollection = new PGPSecretKeyRingCollection(PGPUtil.getDecoderStream(in), new BcKeyFingerprintCalculator()); - - // - // We just loop through the collection till we find a key suitable for signing. - // In the real world you would probably want to be a bit smarter about this. - // - PGPSecretKey secretKey = null; - - Iterator rIt = keyRingCollection.getKeyRings(); - while( secretKey == null && rIt.hasNext() ) { - PGPSecretKeyRing keyRing = rIt.next(); - Iterator kIt = keyRing.getSecretKeys(); - while( secretKey == null && kIt.hasNext() ) { - PGPSecretKey key = kIt.next(); - if ( key.isSigningKey() ) { - secretKey = key; - } - } - } - - // Validate secret key - if ( secretKey == null ) { - throw new IllegalArgumentException("Can't find private key in the key ring."); - } - if ( !secretKey.isSigningKey() ) { - throw new IllegalArgumentException("Private key does not allow signing."); - } - if ( secretKey.getPublicKey().hasRevocation() ) { - throw new IllegalArgumentException("Private key has been revoked."); - } - if ( !hasKeyFlags(secretKey.getPublicKey(), KeyFlags.SIGN_DATA) ) { - throw new IllegalArgumentException("Key cannot be used for signing."); - } - - return secretKey; - } - - /** - * Load a secret key ring collection from keyIn and find the private key corresponding to - * keyID if it exists. - * - * @param keyIn input stream representing a key ring collection. - * @param keyID keyID we want. - * @param pass passphrase to decrypt secret key with. - * @return - * @throws IOException - * @throws PGPException - * @throws NoSuchProviderException - */ - public static PGPPrivateKey findPrivateKey( InputStream keyIn, long keyID, char[] pass ) - throws IOException, PGPException, NoSuchProviderException - { - PGPSecretKeyRingCollection pgpSec = new PGPSecretKeyRingCollection(PGPUtil.getDecoderStream(keyIn), new BcKeyFingerprintCalculator()); - return findPrivateKey(pgpSec.getSecretKey(keyID), pass); - - } - - /** - * Load a secret key and find the private key in it - * - * @param pgpSecKey The secret key - * @param pass passphrase to decrypt secret key with - * @return - * @throws PGPException - */ - public static PGPPrivateKey findPrivateKey( PGPSecretKey pgpSecKey, char[] pass ) - throws PGPException - { - if ( pgpSecKey == null ) - return null; - - PBESecretKeyDecryptor decryptor = new BcPBESecretKeyDecryptorBuilder(new BcPGPDigestCalculatorProvider()).build(pass); - return pgpSecKey.extractPrivateKey(decryptor); - } - - /** - * decrypt the passed in message stream - */ - @SuppressWarnings("unchecked") - public static void decryptFile( InputStream in, OutputStream out, InputStream keyIn, char[] passwd ) - throws Exception - { - Security.addProvider(new BouncyCastleProvider()); - - in = org.bouncycastle.openpgp.PGPUtil.getDecoderStream(in); - - PGPObjectFactory pgpF = new PGPObjectFactory(in, new BcKeyFingerprintCalculator()); - PGPEncryptedDataList enc; - - Object o = pgpF.nextObject(); - // - // the first object might be a PGP marker packet. - // - if ( o instanceof PGPEncryptedDataList ) { - enc = (PGPEncryptedDataList) o; - } - else { - enc = (PGPEncryptedDataList) pgpF.nextObject(); - } - - // - // find the secret key - // - Iterator it = enc.getEncryptedDataObjects(); - PGPPrivateKey sKey = null; - PGPPublicKeyEncryptedData pbe = null; - - while( sKey == null && it.hasNext() ) { - PGPEncryptedData data = it.next(); - if (data instanceof PGPPublicKeyEncryptedData) { - pbe = (PGPPublicKeyEncryptedData) data; - - sKey = findPrivateKey(keyIn, pbe.getKeyID(), passwd); - } - } - - if ( sKey == null ) { - throw new IllegalArgumentException("Secret key for message not found. (Looking for key:" + pbe.getKeyID() + ")"); - } - - InputStream clear = pbe.getDataStream(new BcPublicKeyDataDecryptorFactory(sKey)); - - PGPObjectFactory plainFact = new PGPObjectFactory(clear, new BcKeyFingerprintCalculator()); - - Object message = plainFact.nextObject(); - - if ( message instanceof PGPCompressedData ) { - PGPCompressedData cData = (PGPCompressedData) message; - PGPObjectFactory pgpFact = new PGPObjectFactory(cData.getDataStream(), new BcKeyFingerprintCalculator()); - - message = pgpFact.nextObject(); - } - - if ( message instanceof PGPLiteralData ) { - PGPLiteralData ld = (PGPLiteralData) message; - - InputStream unc = ld.getInputStream(); - int ch; - - while( (ch = unc.read()) >= 0 ) { - out.write(ch); - } - } - else if ( message instanceof PGPOnePassSignatureList ) { - throw new PGPException("Encrypted message contains a signed message - not literal data."); - } - else { - throw new PGPException("Message is not a simple encrypted file - type unknown."); - } - - if ( pbe.isIntegrityProtected() ) { - if ( !pbe.verify() ) { - throw new PGPException("Message failed integrity check"); - } - } - } - - public static void encryptFile( - OutputStream out, - String fileName, - PGPPublicKey encKey, - boolean armor, - boolean withIntegrityCheck ) - throws IOException, NoSuchProviderException, PGPException - { - Security.addProvider(new BouncyCastleProvider()); - - if ( armor ) { - out = new ArmoredOutputStream(out); - } - - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - PGPCompressedDataGenerator comData = new PGPCompressedDataGenerator(PGPCompressedData.ZIP); - - PGPUtil.writeFileToLiteralData( - comData.open(bOut), - PGPLiteralData.BINARY, - new File(fileName)); - - comData.close(); - - BcPGPDataEncryptorBuilder dataEncryptor = new BcPGPDataEncryptorBuilder(PGPEncryptedData.TRIPLE_DES); - dataEncryptor.setWithIntegrityPacket(withIntegrityCheck); - dataEncryptor.setSecureRandom(new SecureRandom()); - - PGPEncryptedDataGenerator encryptedDataGenerator = new PGPEncryptedDataGenerator(dataEncryptor); - encryptedDataGenerator.addMethod(new BcPublicKeyKeyEncryptionMethodGenerator(encKey)); - - byte[] bytes = bOut.toByteArray(); - OutputStream cOut = encryptedDataGenerator.open(out, bytes.length); - cOut.write(bytes); - cOut.close(); - - encryptedDataGenerator.close(); - bOut.close(); - - - if( armor ) { - out.close(); - } - } - - @SuppressWarnings("unchecked") - public static void signEncryptFile( - OutputStream out, - String fileName, - PGPPublicKey publicKey, - PGPSecretKey secretKey, - String password, - boolean armor, - boolean withIntegrityCheck ) - throws Exception - { - - // Initialize Bouncy Castle security provider - Provider provider = new BouncyCastleProvider(); - Security.addProvider(provider); - - if ( armor ) { - out = new ArmoredOutputStream(out); - } - - BcPGPDataEncryptorBuilder dataEncryptor = new BcPGPDataEncryptorBuilder(PGPEncryptedData.TRIPLE_DES); - dataEncryptor.setWithIntegrityPacket(withIntegrityCheck); - dataEncryptor.setSecureRandom(new SecureRandom()); - - PGPEncryptedDataGenerator encryptedDataGenerator = new PGPEncryptedDataGenerator(dataEncryptor); - encryptedDataGenerator.addMethod(new BcPublicKeyKeyEncryptionMethodGenerator(publicKey)); - - OutputStream encryptedOut = encryptedDataGenerator.open(out, new byte[PGPUtils.BUFFER_SIZE]); - - // Initialize compressed data generator - PGPCompressedDataGenerator compressedDataGenerator = new PGPCompressedDataGenerator(PGPCompressedData.ZIP); - OutputStream compressedOut = compressedDataGenerator.open(encryptedOut, new byte[PGPUtils.BUFFER_SIZE]); - - // Initialize signature generator - PGPPrivateKey privateKey = findPrivateKey(secretKey, password.toCharArray()); - - PGPContentSignerBuilder signerBuilder = new BcPGPContentSignerBuilder(secretKey.getPublicKey().getAlgorithm(), - HashAlgorithmTags.SHA1); - - PGPSignatureGenerator signatureGenerator = new PGPSignatureGenerator(signerBuilder); - signatureGenerator.init(PGPSignature.BINARY_DOCUMENT, privateKey); - - boolean firstTime = true; - Iterator it = secretKey.getPublicKey().getUserIDs(); - while( it.hasNext() && firstTime ) { - PGPSignatureSubpacketGenerator spGen = new PGPSignatureSubpacketGenerator(); - spGen.addSignerUserID(false, it.next()); - signatureGenerator.setHashedSubpackets(spGen.generate()); - // Exit the loop after the first iteration - firstTime = false; - } - signatureGenerator.generateOnePassVersion(false).encode(compressedOut); - - // Initialize literal data generator - PGPLiteralDataGenerator literalDataGenerator = new PGPLiteralDataGenerator(); - OutputStream literalOut = literalDataGenerator.open( - compressedOut, - PGPLiteralData.BINARY, - fileName, - new Date(), - new byte[PGPUtils.BUFFER_SIZE]); - - // Main loop - read the "in" stream, compress, encrypt and write to the "out" stream - FileInputStream in = new FileInputStream(fileName); - byte[] buf = new byte[PGPUtils.BUFFER_SIZE]; - int len; - while( (len = in.read(buf)) > 0 ) { - literalOut.write(buf, 0, len); - signatureGenerator.update(buf, 0, len); - } - - literalOut.close(); - in.close(); - literalDataGenerator.close(); - // Generate the signature, compress, encrypt and write to the "out" stream - signatureGenerator.generate().encode(compressedOut); - compressedDataGenerator.close(); - encryptedDataGenerator.close(); - if ( armor ) { - out.close(); - } - } - - public static boolean verifyFile( - InputStream in, - InputStream keyIn, - String extractContentFile ) - throws Exception - { - in = PGPUtil.getDecoderStream(in); - - PGPObjectFactory pgpFact = new PGPObjectFactory(in, new BcKeyFingerprintCalculator()); - PGPCompressedData c1 = (PGPCompressedData) pgpFact.nextObject(); - - pgpFact = new PGPObjectFactory(c1.getDataStream(), new BcKeyFingerprintCalculator()); - - PGPOnePassSignatureList p1 = (PGPOnePassSignatureList) pgpFact.nextObject(); - - PGPOnePassSignature ops = p1.get(0); - - PGPLiteralData p2 = (PGPLiteralData) pgpFact.nextObject(); - - InputStream dIn = p2.getInputStream(); - - IOUtils.copy(dIn, new FileOutputStream(extractContentFile)); - - int ch; - PGPPublicKeyRingCollection pgpRing = new PGPPublicKeyRingCollection(PGPUtil.getDecoderStream(keyIn), new BcKeyFingerprintCalculator()); - - PGPPublicKey key = pgpRing.getPublicKey(ops.getKeyID()); - - FileOutputStream out = new FileOutputStream(p2.getFileName()); - - ops.init(new BcPGPContentVerifierBuilderProvider(), key); - - while( (ch = dIn.read()) >= 0 ) - { - ops.update((byte) ch); - out.write(ch); - } - - out.close(); - - PGPSignatureList p3 = (PGPSignatureList) pgpFact.nextObject(); - return ops.verify(p3.get(0)); - } - - /** - * From LockBox Lobs PGP Encryption tools. - * http://www.lockboxlabs.org/content/downloads - * - * I didn't think it was worth having to import a 4meg lib for three methods - * - * @param key - * @return - */ - public static boolean isForEncryption( PGPPublicKey key ) - { - if ( key.getAlgorithm() == PublicKeyAlgorithmTags.RSA_SIGN - || key.getAlgorithm() == PublicKeyAlgorithmTags.DSA - || key.getAlgorithm() == PublicKeyAlgorithmTags.ECDH - || key.getAlgorithm() == PublicKeyAlgorithmTags.ECDSA ) - { - return false; - } - - return hasKeyFlags(key, KeyFlags.ENCRYPT_COMMS | KeyFlags.ENCRYPT_STORAGE); - } - - /** - * From LockBox Lobs PGP Encryption tools. - * http://www.lockboxlabs.org/content/downloads - * - * I didn't think it was worth having to import a 4meg lib for three methods - * - * @param key - * @return - */ - @SuppressWarnings("unchecked") - private static boolean hasKeyFlags( PGPPublicKey encKey, int keyUsage ) { - if ( encKey.isMasterKey() ) { - for( int i = 0; i != PGPUtils.MASTER_KEY_CERTIFICATION_TYPES.length; i++ ) { - for( Iterator eIt = encKey.getSignaturesOfType(PGPUtils.MASTER_KEY_CERTIFICATION_TYPES[i]); eIt.hasNext(); ) { - PGPSignature sig = eIt.next(); - if ( !isMatchingUsage(sig, keyUsage) ) { - return false; - } - } - } - } - else { - for( Iterator eIt = encKey.getSignaturesOfType(PGPSignature.SUBKEY_BINDING); eIt.hasNext(); ) { - PGPSignature sig = eIt.next(); - if ( !isMatchingUsage(sig, keyUsage) ) { - return false; - } - } - } - return true; - } - - /** - * From LockBox Lobs PGP Encryption tools. - * http://www.lockboxlabs.org/content/downloads - * - * I didn't think it was worth having to import a 4meg lib for three methods - * - * @param key - * @return - */ - private static boolean isMatchingUsage( PGPSignature sig, int keyUsage ) { - if ( sig.hasSubpackets() ) { - PGPSignatureSubpacketVector sv = sig.getHashedSubPackets(); - if ( sv.hasSubpacket(PGPUtils.KEY_FLAGS) ) { - if ( (sv.getKeyFlags() == 0 && keyUsage == 0) ) { - return false; - } - } - } - return true; - } + private static final int BUFFER_SIZE = 1 << 16; // should always be power of 2 + private static final int KEY_FLAGS = 27; + private static final int[] MASTER_KEY_CERTIFICATION_TYPES = new int[]{ + PGPSignature.POSITIVE_CERTIFICATION, + PGPSignature.CASUAL_CERTIFICATION, + PGPSignature.NO_CERTIFICATION, + PGPSignature.DEFAULT_CERTIFICATION + }; + + @SuppressWarnings("unchecked") + public static PGPPublicKey readPublicKey(InputStream in) + throws IOException, PGPException { + + PGPPublicKeyRingCollection keyRingCollection = new PGPPublicKeyRingCollection(PGPUtil.getDecoderStream(in), new BcKeyFingerprintCalculator()); + + // + // we just loop through the collection till we find a key suitable for encryption, in the real + // world you would probably want to be a bit smarter about this. + // + PGPPublicKey publicKey = null; + + // + // iterate through the key rings. + // + Iterator rIt = keyRingCollection.getKeyRings(); + + while (publicKey == null && rIt.hasNext()) { + PGPPublicKeyRing kRing = rIt.next(); + Iterator kIt = kRing.getPublicKeys(); + while (publicKey == null && kIt.hasNext()) { + PGPPublicKey key = kIt.next(); + if (key.isEncryptionKey()) { + publicKey = key; + } + } + } + + if (publicKey == null) { + throw new IllegalArgumentException("Can't find public key in the key ring."); + } + if (!isForEncryption(publicKey)) { + throw new IllegalArgumentException("KeyID " + publicKey.getKeyID() + " not flagged for encryption."); + } + + return publicKey; + } + + @SuppressWarnings("unchecked") + public static PGPSecretKey readSecretKey(InputStream in) + throws IOException, PGPException { + + PGPSecretKeyRingCollection keyRingCollection = new PGPSecretKeyRingCollection(PGPUtil.getDecoderStream(in), new BcKeyFingerprintCalculator()); + + // + // We just loop through the collection till we find a key suitable for signing. + // In the real world you would probably want to be a bit smarter about this. + // + PGPSecretKey secretKey = null; + + Iterator rIt = keyRingCollection.getKeyRings(); + while (secretKey == null && rIt.hasNext()) { + PGPSecretKeyRing keyRing = rIt.next(); + Iterator kIt = keyRing.getSecretKeys(); + while (secretKey == null && kIt.hasNext()) { + PGPSecretKey key = kIt.next(); + if (key.isSigningKey()) { + secretKey = key; + } + } + } + + // Validate secret key + if (secretKey == null) { + throw new IllegalArgumentException("Can't find private key in the key ring."); + } + if (!secretKey.isSigningKey()) { + throw new IllegalArgumentException("Private key does not allow signing."); + } + if (secretKey.getPublicKey().hasRevocation()) { + throw new IllegalArgumentException("Private key has been revoked."); + } + if (!hasKeyFlags(secretKey.getPublicKey(), KeyFlags.SIGN_DATA)) { + throw new IllegalArgumentException("Key cannot be used for signing."); + } + + return secretKey; + } + + /** + * Load a secret key ring collection from keyIn and find the private key corresponding to + * keyID if it exists. + * + * @param keyIn input stream representing a key ring collection. + * @param keyID keyID we want. + * @param pass passphrase to decrypt secret key with. + * @return + * @throws IOException + * @throws PGPException + * @throws NoSuchProviderException + */ + public static PGPPrivateKey findPrivateKey(InputStream keyIn, long keyID, char[] pass) + throws IOException, PGPException, NoSuchProviderException { + PGPSecretKeyRingCollection pgpSec = new PGPSecretKeyRingCollection(PGPUtil.getDecoderStream(keyIn), new BcKeyFingerprintCalculator()); + return findPrivateKey(pgpSec.getSecretKey(keyID), pass); + + } + + /** + * Load a secret key and find the private key in it + * + * @param pgpSecKey The secret key + * @param pass passphrase to decrypt secret key with + * @return + * @throws PGPException + */ + public static PGPPrivateKey findPrivateKey(PGPSecretKey pgpSecKey, char[] pass) + throws PGPException { + if (pgpSecKey == null) + return null; + + PBESecretKeyDecryptor decryptor = new BcPBESecretKeyDecryptorBuilder(new BcPGPDigestCalculatorProvider()).build(pass); + return pgpSecKey.extractPrivateKey(decryptor); + } + + /** + * decrypt the passed in message stream + */ + @SuppressWarnings("unchecked") + public static void decryptFile(InputStream in, OutputStream out, InputStream keyIn, char[] passwd) + throws Exception { + Security.addProvider(new BouncyCastleProvider()); + + in = org.bouncycastle.openpgp.PGPUtil.getDecoderStream(in); + + PGPObjectFactory pgpF = new PGPObjectFactory(in, new BcKeyFingerprintCalculator()); + PGPEncryptedDataList enc; + + Object o = pgpF.nextObject(); + // + // the first object might be a PGP marker packet. + // + if (o instanceof PGPEncryptedDataList) { + enc = (PGPEncryptedDataList) o; + } else { + enc = (PGPEncryptedDataList) pgpF.nextObject(); + } + + // + // find the secret key + // + Iterator it = enc.getEncryptedDataObjects(); + PGPPrivateKey sKey = null; + PGPPublicKeyEncryptedData pbe = null; + + while (sKey == null && it.hasNext()) { + PGPEncryptedData data = it.next(); + + if (data instanceof PGPPublicKeyEncryptedData) { + pbe = (PGPPublicKeyEncryptedData) data; + sKey = findPrivateKey(keyIn, pbe.getKeyID(), passwd); + } + } + + if (sKey == null) { + String pbeMessage = pbe == null ? "" : " (Looking for key:" + pbe.getKeyID() + ")"; + throw new IllegalArgumentException("Secret key for message not found." + pbeMessage); + } + + InputStream clear = pbe.getDataStream(new BcPublicKeyDataDecryptorFactory(sKey)); + + PGPObjectFactory plainFact = new PGPObjectFactory(clear, new BcKeyFingerprintCalculator()); + + Object message = plainFact.nextObject(); + + if (message instanceof PGPCompressedData) { + PGPCompressedData cData = (PGPCompressedData) message; + PGPObjectFactory pgpFact = new PGPObjectFactory(cData.getDataStream(), new BcKeyFingerprintCalculator()); + + message = pgpFact.nextObject(); + } + + if (message instanceof PGPLiteralData) { + PGPLiteralData ld = (PGPLiteralData) message; + + InputStream unc = ld.getInputStream(); + int ch; + + while ((ch = unc.read()) >= 0) { + out.write(ch); + } + } else if (message instanceof PGPOnePassSignatureList) { + throw new PGPException("Encrypted message contains a signed message - not literal data."); + } else { + throw new PGPException("Message is not a simple encrypted file - type unknown."); + } + + if (pbe.isIntegrityProtected()) { + if (!pbe.verify()) { + throw new PGPException("Message failed integrity check"); + } + } + } + + public static void encryptFile( + OutputStream out, + String fileName, + PGPPublicKey encKey, + boolean armor, + boolean withIntegrityCheck) + throws IOException, NoSuchProviderException, PGPException { + Security.addProvider(new BouncyCastleProvider()); + + if (armor) { + out = new ArmoredOutputStream(out); + } + + ByteArrayOutputStream bOut = new ByteArrayOutputStream(); + PGPCompressedDataGenerator comData = new PGPCompressedDataGenerator(PGPCompressedData.ZIP); + + PGPUtil.writeFileToLiteralData( + comData.open(bOut), + PGPLiteralData.BINARY, + new File(fileName)); + + comData.close(); + + BcPGPDataEncryptorBuilder dataEncryptor = new BcPGPDataEncryptorBuilder(PGPEncryptedData.TRIPLE_DES); + dataEncryptor.setWithIntegrityPacket(withIntegrityCheck); + dataEncryptor.setSecureRandom(new SecureRandom()); + + PGPEncryptedDataGenerator encryptedDataGenerator = new PGPEncryptedDataGenerator(dataEncryptor); + encryptedDataGenerator.addMethod(new BcPublicKeyKeyEncryptionMethodGenerator(encKey)); + + byte[] bytes = bOut.toByteArray(); + OutputStream cOut = encryptedDataGenerator.open(out, bytes.length); + cOut.write(bytes); + cOut.close(); + + encryptedDataGenerator.close(); + bOut.close(); + + + if (armor) { + out.close(); + } + } + + @SuppressWarnings("unchecked") + public static void signEncryptFile( + OutputStream out, + String fileName, + PGPPublicKey publicKey, + PGPSecretKey secretKey, + String password, + boolean armor, + boolean withIntegrityCheck) + throws Exception { + + // Initialize Bouncy Castle security provider + Provider provider = new BouncyCastleProvider(); + Security.addProvider(provider); + + if (armor) { + out = new ArmoredOutputStream(out); + } + + BcPGPDataEncryptorBuilder dataEncryptor = new BcPGPDataEncryptorBuilder(PGPEncryptedData.TRIPLE_DES); + dataEncryptor.setWithIntegrityPacket(withIntegrityCheck); + dataEncryptor.setSecureRandom(new SecureRandom()); + + PGPEncryptedDataGenerator encryptedDataGenerator = new PGPEncryptedDataGenerator(dataEncryptor); + encryptedDataGenerator.addMethod(new BcPublicKeyKeyEncryptionMethodGenerator(publicKey)); + + OutputStream encryptedOut = encryptedDataGenerator.open(out, new byte[PGPUtils.BUFFER_SIZE]); + + // Initialize compressed data generator + PGPCompressedDataGenerator compressedDataGenerator = new PGPCompressedDataGenerator(PGPCompressedData.ZIP); + OutputStream compressedOut = compressedDataGenerator.open(encryptedOut, new byte[PGPUtils.BUFFER_SIZE]); + + // Initialize signature generator + PGPPrivateKey privateKey = findPrivateKey(secretKey, password.toCharArray()); + + PGPContentSignerBuilder signerBuilder = new BcPGPContentSignerBuilder(secretKey.getPublicKey().getAlgorithm(), + HashAlgorithmTags.SHA1); + + PGPSignatureGenerator signatureGenerator = new PGPSignatureGenerator(signerBuilder); + signatureGenerator.init(PGPSignature.BINARY_DOCUMENT, privateKey); + + boolean firstTime = true; + Iterator it = secretKey.getPublicKey().getUserIDs(); + while (it.hasNext() && firstTime) { + PGPSignatureSubpacketGenerator spGen = new PGPSignatureSubpacketGenerator(); + spGen.addSignerUserID(false, it.next()); + signatureGenerator.setHashedSubpackets(spGen.generate()); + // Exit the loop after the first iteration + firstTime = false; + } + signatureGenerator.generateOnePassVersion(false).encode(compressedOut); + + // Initialize literal data generator + PGPLiteralDataGenerator literalDataGenerator = new PGPLiteralDataGenerator(); + OutputStream literalOut = literalDataGenerator.open( + compressedOut, + PGPLiteralData.BINARY, + fileName, + new Date(), + new byte[PGPUtils.BUFFER_SIZE]); + + // Main loop - read the "in" stream, compress, encrypt and write to the "out" stream + FileInputStream in = new FileInputStream(fileName); + byte[] buf = new byte[PGPUtils.BUFFER_SIZE]; + int len; + while ((len = in.read(buf)) > 0) { + literalOut.write(buf, 0, len); + signatureGenerator.update(buf, 0, len); + } + + literalOut.close(); + in.close(); + literalDataGenerator.close(); + // Generate the signature, compress, encrypt and write to the "out" stream + signatureGenerator.generate().encode(compressedOut); + compressedDataGenerator.close(); + encryptedDataGenerator.close(); + if (armor) { + out.close(); + } + } + + public static boolean verifyFile( + InputStream in, + InputStream keyIn, + String extractContentFile) + throws Exception { + in = PGPUtil.getDecoderStream(in); + + PGPObjectFactory pgpFact = new PGPObjectFactory(in, new BcKeyFingerprintCalculator()); + PGPCompressedData c1 = (PGPCompressedData) pgpFact.nextObject(); + + pgpFact = new PGPObjectFactory(c1.getDataStream(), new BcKeyFingerprintCalculator()); + + PGPOnePassSignatureList p1 = (PGPOnePassSignatureList) pgpFact.nextObject(); + + PGPOnePassSignature ops = p1.get(0); + + PGPLiteralData p2 = (PGPLiteralData) pgpFact.nextObject(); + + InputStream dIn = p2.getInputStream(); + + try (FileOutputStream extractContentFileStream = new FileOutputStream(extractContentFile)) { + IOUtils.copy(dIn, extractContentFileStream); + } + + int ch; + PGPPublicKeyRingCollection pgpRing = new PGPPublicKeyRingCollection(PGPUtil.getDecoderStream(keyIn), new BcKeyFingerprintCalculator()); + + PGPPublicKey key = pgpRing.getPublicKey(ops.getKeyID()); + + if (key == null) { + throw new IllegalArgumentException("Can't find public key with id: " + ops.getKeyID()); + } + + try (FileOutputStream out = new FileOutputStream(p2.getFileName())) { + ops.init(new BcPGPContentVerifierBuilderProvider(), key); + + while ((ch = dIn.read()) >= 0) { + ops.update((byte) ch); + out.write(ch); + } + } + + PGPSignatureList p3 = (PGPSignatureList) pgpFact.nextObject(); + return ops.verify(p3.get(0)); + } + + /** + * From LockBox Lobs PGP Encryption tools. + * http://www.lockboxlabs.org/content/downloads + *

+ * I didn't think it was worth having to import a 4meg lib for three methods + * + * @param key + * @return + */ + public static boolean isForEncryption(PGPPublicKey key) { + if (key.getAlgorithm() == PublicKeyAlgorithmTags.RSA_SIGN + || key.getAlgorithm() == PublicKeyAlgorithmTags.DSA + || key.getAlgorithm() == PublicKeyAlgorithmTags.ECDH + || key.getAlgorithm() == PublicKeyAlgorithmTags.ECDSA) { + return false; + } + + return hasKeyFlags(key, KeyFlags.ENCRYPT_COMMS | KeyFlags.ENCRYPT_STORAGE); + } + + /** + * From LockBox Lobs PGP Encryption tools. + * http://www.lockboxlabs.org/content/downloads + *

+ * I didn't think it was worth having to import a 4meg lib for three methods + * + * @param key + * @return + */ + @SuppressWarnings("unchecked") + private static boolean hasKeyFlags(PGPPublicKey encKey, int keyUsage) { + if (encKey.isMasterKey()) { + for (int i = 0; i != PGPUtils.MASTER_KEY_CERTIFICATION_TYPES.length; i++) { + for (Iterator eIt = encKey.getSignaturesOfType(PGPUtils.MASTER_KEY_CERTIFICATION_TYPES[i]); eIt.hasNext(); ) { + PGPSignature sig = eIt.next(); + if (!isMatchingUsage(sig, keyUsage)) { + return false; + } + } + } + } else { + for (Iterator eIt = encKey.getSignaturesOfType(PGPSignature.SUBKEY_BINDING); eIt.hasNext(); ) { + PGPSignature sig = eIt.next(); + if (!isMatchingUsage(sig, keyUsage)) { + return false; + } + } + } + return true; + } + + /** + * From LockBox Lobs PGP Encryption tools. + * http://www.lockboxlabs.org/content/downloads + *

+ * I didn't think it was worth having to import a 4meg lib for three methods + * + * @param key + * @return + */ + private static boolean isMatchingUsage(PGPSignature sig, int keyUsage) { + if (sig.hasSubpackets()) { + PGPSignatureSubpacketVector sv = sig.getHashedSubPackets(); + if (sv.hasSubpacket(PGPUtils.KEY_FLAGS)) { + if ((sv.getKeyFlags() & keyUsage) == 0) { + return false; + } + } + } + return true; + } } \ No newline at end of file diff --git a/javasource/encryption/proxies/CertificateType.java b/javasource/encryption/proxies/CertificateType.java index d6c6317..1fabb44 100644 --- a/javasource/encryption/proxies/CertificateType.java +++ b/javasource/encryption/proxies/CertificateType.java @@ -9,20 +9,19 @@ public enum CertificateType PublicKey(new java.lang.String[][] { new java.lang.String[] { "en_US", "PublicKey" } }), PrivateKey(new java.lang.String[][] { new java.lang.String[] { "en_US", "PrivateKey" } }); - private java.util.Map captions; + private final java.util.Map captions; private CertificateType(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/encryption/proxies/ExampleConfiguration.java b/javasource/encryption/proxies/ExampleConfiguration.java index 5004975..254a935 100644 --- a/javasource/encryption/proxies/ExampleConfiguration.java +++ b/javasource/encryption/proxies/ExampleConfiguration.java @@ -24,7 +24,7 @@ public enum MemberNames Username("Username"), Password("Password"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -40,15 +40,17 @@ public java.lang.String toString() public ExampleConfiguration(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Encryption.ExampleConfiguration")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected ExampleConfiguration(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject exampleConfigurationMendixObject) { - if (exampleConfigurationMendixObject == null) + if (exampleConfigurationMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Encryption.ExampleConfiguration", exampleConfigurationMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Encryption.ExampleConfiguration"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, exampleConfigurationMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.exampleConfigurationMendixObject = exampleConfigurationMendixObject; this.context = context; @@ -66,6 +68,9 @@ public static encryption.proxies.ExampleConfiguration initialize(com.mendix.syst /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static encryption.proxies.ExampleConfiguration initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -80,14 +85,16 @@ public static encryption.proxies.ExampleConfiguration load(com.mendix.systemwide public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//Encryption.ExampleConfiguration" + xpathConstraint)) - result.add(encryption.proxies.ExampleConfiguration.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> encryption.proxies.ExampleConfiguration.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -96,6 +103,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -244,9 +252,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final encryption.proxies.ExampleConfiguration that = (encryption.proxies.ExampleConfiguration) obj; @@ -266,7 +274,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Encryption.ExampleConfiguration"; + return entityName; } /** diff --git a/javasource/encryption/proxies/PGPCertificate.java b/javasource/encryption/proxies/PGPCertificate.java index 3bac57d..d886330 100644 --- a/javasource/encryption/proxies/PGPCertificate.java +++ b/javasource/encryption/proxies/PGPCertificate.java @@ -32,7 +32,7 @@ public enum MemberNames Size("Size"), SecretKey_PublicKey("Encryption.SecretKey_PublicKey"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -48,14 +48,15 @@ public java.lang.String toString() public PGPCertificate(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Encryption.PGPCertificate")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected PGPCertificate(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject pGPCertificateMendixObject) { super(context, pGPCertificateMendixObject); - if (!com.mendix.core.Core.isSubClassOf("Encryption.PGPCertificate", pGPCertificateMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Encryption.PGPCertificate"); + if (!com.mendix.core.Core.isSubClassOf(entityName, pGPCertificateMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } } /** @@ -70,6 +71,9 @@ public static encryption.proxies.PGPCertificate initialize(com.mendix.systemwide /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static encryption.proxies.PGPCertificate initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -84,10 +88,11 @@ public static encryption.proxies.PGPCertificate load(com.mendix.systemwideinterf public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//Encryption.PGPCertificate" + xpathConstraint)) - result.add(encryption.proxies.PGPCertificate.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> encryption.proxies.PGPCertificate.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** @@ -106,9 +111,9 @@ public final encryption.proxies.CertificateType getCertificateType() public final encryption.proxies.CertificateType getCertificateType(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.CertificateType.toString()); - if (obj == null) + if (obj == null) { return null; - + } return encryption.proxies.CertificateType.valueOf((java.lang.String) obj); } @@ -128,10 +133,11 @@ public final void setCertificateType(encryption.proxies.CertificateType certific */ public final void setCertificateType(com.mendix.systemwideinterfaces.core.IContext context, encryption.proxies.CertificateType certificatetype) { - if (certificatetype != null) + if (certificatetype != null) { getMendixObject().setValue(context, MemberNames.CertificateType.toString(), certificatetype.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.CertificateType.toString(), null); + } } /** @@ -279,6 +285,7 @@ public final void setEmailAddress(com.mendix.systemwideinterfaces.core.IContext } /** + * @throws com.mendix.core.CoreException * @return value of SecretKey_PublicKey */ public final encryption.proxies.PGPCertificate getSecretKey_PublicKey() throws com.mendix.core.CoreException @@ -289,13 +296,15 @@ public final encryption.proxies.PGPCertificate getSecretKey_PublicKey() throws c /** * @param context * @return value of SecretKey_PublicKey + * @throws com.mendix.core.CoreException */ public final encryption.proxies.PGPCertificate getSecretKey_PublicKey(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { encryption.proxies.PGPCertificate result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.SecretKey_PublicKey.toString()); - if (identifier != null) + if (identifier != null) { result = encryption.proxies.PGPCertificate.load(context, identifier); + } return result; } @@ -315,18 +324,19 @@ public final void setSecretKey_PublicKey(encryption.proxies.PGPCertificate secre */ public final void setSecretKey_PublicKey(com.mendix.systemwideinterfaces.core.IContext context, encryption.proxies.PGPCertificate secretkey_publickey) { - if (secretkey_publickey == null) + if (secretkey_publickey == null) { getMendixObject().setValue(context, MemberNames.SecretKey_PublicKey.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.SecretKey_PublicKey.toString(), secretkey_publickey.getMendixObject().getId()); + } } @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final encryption.proxies.PGPCertificate that = (encryption.proxies.PGPCertificate) obj; @@ -346,7 +356,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Encryption.PGPCertificate"; + return entityName; } /** diff --git a/javasource/encryption/proxies/PasswordData.java b/javasource/encryption/proxies/PasswordData.java index 585ef0c..c31916b 100644 --- a/javasource/encryption/proxies/PasswordData.java +++ b/javasource/encryption/proxies/PasswordData.java @@ -24,7 +24,7 @@ public enum MemberNames ConfirmPassword("ConfirmPassword"), PasswordData_ExampleConfiguration("Encryption.PasswordData_ExampleConfiguration"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -40,15 +40,17 @@ public java.lang.String toString() public PasswordData(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "Encryption.PasswordData")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected PasswordData(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject passwordDataMendixObject) { - if (passwordDataMendixObject == null) + if (passwordDataMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("Encryption.PasswordData", passwordDataMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a Encryption.PasswordData"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, passwordDataMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.passwordDataMendixObject = passwordDataMendixObject; this.context = context; @@ -66,6 +68,9 @@ public static encryption.proxies.PasswordData initialize(com.mendix.systemwidein /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static encryption.proxies.PasswordData initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -80,6 +85,7 @@ public static encryption.proxies.PasswordData load(com.mendix.systemwideinterfac /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -88,6 +94,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -182,6 +189,7 @@ public final void setConfirmPassword(com.mendix.systemwideinterfaces.core.IConte } /** + * @throws com.mendix.core.CoreException * @return value of PasswordData_ExampleConfiguration */ public final encryption.proxies.ExampleConfiguration getPasswordData_ExampleConfiguration() throws com.mendix.core.CoreException @@ -192,13 +200,15 @@ public final encryption.proxies.ExampleConfiguration getPasswordData_ExampleConf /** * @param context * @return value of PasswordData_ExampleConfiguration + * @throws com.mendix.core.CoreException */ public final encryption.proxies.ExampleConfiguration getPasswordData_ExampleConfiguration(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { encryption.proxies.ExampleConfiguration result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.PasswordData_ExampleConfiguration.toString()); - if (identifier != null) + if (identifier != null) { result = encryption.proxies.ExampleConfiguration.load(context, identifier); + } return result; } @@ -218,10 +228,11 @@ public final void setPasswordData_ExampleConfiguration(encryption.proxies.Exampl */ public final void setPasswordData_ExampleConfiguration(com.mendix.systemwideinterfaces.core.IContext context, encryption.proxies.ExampleConfiguration passworddata_exampleconfiguration) { - if (passworddata_exampleconfiguration == null) + if (passworddata_exampleconfiguration == null) { getMendixObject().setValue(context, MemberNames.PasswordData_ExampleConfiguration.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.PasswordData_ExampleConfiguration.toString(), passworddata_exampleconfiguration.getMendixObject().getId()); + } } /** @@ -243,9 +254,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final encryption.proxies.PasswordData that = (encryption.proxies.PasswordData) obj; @@ -265,7 +276,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "Encryption.PasswordData"; + return entityName; } /** diff --git a/javasource/encryption/proxies/constants/Constants.java b/javasource/encryption/proxies/constants/Constants.java index 513445f..e611635 100644 --- a/javasource/encryption/proxies/constants/Constants.java +++ b/javasource/encryption/proxies/constants/Constants.java @@ -8,6 +8,14 @@ public class Constants { + /** + * @deprecated + * The default constructor of the Constants class should not be used. + * Use the static get methods instead. + */ + @java.lang.Deprecated(since = "9.12", forRemoval = true) + public Constants() {} + // These are the constants for the Encryption module /** diff --git a/javasource/encryption/proxies/microflows/Microflows.java b/javasource/encryption/proxies/microflows/Microflows.java index 815aa2c..69945ae 100644 --- a/javasource/encryption/proxies/microflows/Microflows.java +++ b/javasource/encryption/proxies/microflows/Microflows.java @@ -7,13 +7,19 @@ import java.util.HashMap; import java.util.Map; import com.mendix.core.Core; -import com.mendix.core.CoreException; -import com.mendix.systemwideinterfaces.MendixRuntimeException; import com.mendix.systemwideinterfaces.core.IContext; import com.mendix.systemwideinterfaces.core.IMendixObject; public class Microflows { + /** + * @deprecated + * The default constructor of the Microflows class should not be used. + * Use the static microflow invocation methods instead. + */ + @java.lang.Deprecated(since = "9.12", forRemoval = true) + public Microflows() {} + // These are the microflows for the Encryption module public static java.lang.String decrypt(IContext context, java.lang.String _encrypted) { @@ -102,10 +108,16 @@ public static void mB_SaveCertificate(IContext context, encryption.proxies.PGPCe params.put("Certificate", _certificate == null ? null : _certificate.getMendixObject()); Core.microflowCall("Encryption.MB_SaveCertificate").withParams(params).execute(context); } + public static void mB_SavePassword(IContext context, encryption.proxies.ExampleConfiguration _exampleConfiguration) + { + Map params = new HashMap<>(); + params.put("ExampleConfiguration", _exampleConfiguration == null ? null : _exampleConfiguration.getMendixObject()); + Core.microflowCall("Encryption.MB_SavePassword").withParams(params).execute(context); + } public static void mB_ShowChangePassword(IContext context, encryption.proxies.ExampleConfiguration _exampleConfiguration) { Map params = new HashMap<>(); params.put("ExampleConfiguration", _exampleConfiguration == null ? null : _exampleConfiguration.getMendixObject()); Core.microflowCall("Encryption.MB_ShowChangePassword").withParams(params).execute(context); } -} \ No newline at end of file +} diff --git a/javasource/feedbackmodule/actions/ValidateEmail.java b/javasource/feedbackmodule/actions/ValidateEmail.java new file mode 100644 index 0000000..0e755da --- /dev/null +++ b/javasource/feedbackmodule/actions/ValidateEmail.java @@ -0,0 +1,51 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +// Special characters, e.g., é, ö, à, etc. are supported in comments. + +package feedbackmodule.actions; + +import com.mendix.systemwideinterfaces.core.IContext; +import com.mendix.webui.CustomJavaAction; + +public class ValidateEmail extends CustomJavaAction +{ + private java.lang.String EmailAddress; + + public ValidateEmail(IContext context, java.lang.String EmailAddress) + { + super(context); + this.EmailAddress = EmailAddress; + } + + @java.lang.Override + public java.lang.Boolean executeAction() throws Exception + { + // BEGIN USER CODE + + // The regex used in this code is the same used in App Insights. If you want to apply more restricted rule, you can change it here. + String emailPattern = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$"; + java.util.regex.Pattern p = java.util.regex.Pattern.compile(emailPattern); + java.util.regex.Matcher m = p.matcher(EmailAddress); + return m.matches(); + + // END USER CODE + } + + /** + * Returns a string representation of this action + * @return a string representation of this action + */ + @java.lang.Override + public java.lang.String toString() + { + return "ValidateEmail"; + } + + // BEGIN EXTRA CODE + // END EXTRA CODE +} diff --git a/javasource/feedbackmodule/actions/XSS_Sanitizer.java b/javasource/feedbackmodule/actions/XSS_Sanitizer.java new file mode 100644 index 0000000..8bae484 --- /dev/null +++ b/javasource/feedbackmodule/actions/XSS_Sanitizer.java @@ -0,0 +1,87 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +// Special characters, e.g., é, ö, à, etc. are supported in comments. + +package feedbackmodule.actions; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import com.mendix.systemwideinterfaces.core.IContext; +import com.mendix.webui.CustomJavaAction; + +public class XSS_Sanitizer extends CustomJavaAction +{ + private java.lang.String stringToSanitize; + + public XSS_Sanitizer(IContext context, java.lang.String stringToSanitize) + { + super(context); + this.stringToSanitize = stringToSanitize; + } + + @java.lang.Override + public java.lang.String executeAction() throws Exception + { + // BEGIN USER CODE + + //It's a simple XSS sanitation with regex replace. + String sanitizedString = sanitize(stringToSanitize); + return sanitizedString; + + // END USER CODE + } + + /** + * Returns a string representation of this action + * @return a string representation of this action + */ + @java.lang.Override + public java.lang.String toString() + { + return "XSS_Sanitizer"; + } + + // BEGIN EXTRA CODE + public static String sanitize(String input) { + if (input == null || input.isEmpty()) { + return input; + } + + // Remove all occurrences of ", ""); + + // Remove all event handler attributes (e.g., onclick, onmouseover) + input = input.replaceAll("(?i)\\bon\\w+\\s*=\\s*(\"[^\"]*\"|'[^']*'|[^\\s>]+)", ""); + + // Remove all javascript: URLs + input = input.replaceAll("(?i)javascript:", ""); + + // Remove all ", ""); + + // Remove all tags + input = input.replaceAll("(?i)]*>.*?", ""); + + // Remove all tags + input = input.replaceAll("(?i)]*>.*?", ""); + + // Remove all tags + input = input.replaceAll("(?i)]*>.*?", ""); + + // Remove all tags that could potentially cause redirection + input = input.replaceAll("(?i)]*http-equiv[^>]*>", ""); + + // Remove all other potentially dangerous HTML tags + Pattern pattern = Pattern.compile("<[^>]*(>|$)"); + Matcher matcher = pattern.matcher(input); + input = matcher.replaceAll(""); + + return input; + } + // END EXTRA CODE +} diff --git a/javasource/migrationutility/proxies/DataStats_Before.java b/javasource/migrationutility/proxies/DataStats_Before.java index 71d2ffa..46b0ba9 100644 --- a/javasource/migrationutility/proxies/DataStats_Before.java +++ b/javasource/migrationutility/proxies/DataStats_Before.java @@ -29,7 +29,7 @@ public enum MemberNames ETTemplates("ETTemplates"), ETErrorLogs("ETErrorLogs"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -45,15 +45,17 @@ public java.lang.String toString() public DataStats_Before(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "MigrationUtility.DataStats_Before")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected DataStats_Before(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject dataStats_BeforeMendixObject) { - if (dataStats_BeforeMendixObject == null) + if (dataStats_BeforeMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("MigrationUtility.DataStats_Before", dataStats_BeforeMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a MigrationUtility.DataStats_Before"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, dataStats_BeforeMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.dataStats_BeforeMendixObject = dataStats_BeforeMendixObject; this.context = context; @@ -71,6 +73,9 @@ public static migrationutility.proxies.DataStats_Before initialize(com.mendix.sy /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static migrationutility.proxies.DataStats_Before initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -85,14 +90,16 @@ public static migrationutility.proxies.DataStats_Before load(com.mendix.systemwi public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//MigrationUtility.DataStats_Before" + xpathConstraint)) - result.add(migrationutility.proxies.DataStats_Before.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> migrationutility.proxies.DataStats_Before.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -101,6 +108,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -429,9 +437,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final migrationutility.proxies.DataStats_Before that = (migrationutility.proxies.DataStats_Before) obj; @@ -451,7 +459,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "MigrationUtility.DataStats_Before"; + return entityName; } /** diff --git a/javasource/migrationutility/proxies/MigrationConfig.java b/javasource/migrationutility/proxies/MigrationConfig.java index 4ddeb3f..9a027cb 100644 --- a/javasource/migrationutility/proxies/MigrationConfig.java +++ b/javasource/migrationutility/proxies/MigrationConfig.java @@ -23,9 +23,11 @@ public enum MemberNames MigrateAccounts("MigrateAccounts"), MigrateEmailTemplates("MigrateEmailTemplates"), MigrateEmails("MigrateEmails"), - MigrateErrorLogs("MigrateErrorLogs"); + MigrateErrorLogs("MigrateErrorLogs"), + SetAssociation("SetAssociation"), + AssociationAccount("AssociationAccount"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -41,15 +43,17 @@ public java.lang.String toString() public MigrationConfig(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "MigrationUtility.MigrationConfig")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected MigrationConfig(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject migrationConfigMendixObject) { - if (migrationConfigMendixObject == null) + if (migrationConfigMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("MigrationUtility.MigrationConfig", migrationConfigMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a MigrationUtility.MigrationConfig"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, migrationConfigMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.migrationConfigMendixObject = migrationConfigMendixObject; this.context = context; @@ -67,6 +71,9 @@ public static migrationutility.proxies.MigrationConfig initialize(com.mendix.sys /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static migrationutility.proxies.MigrationConfig initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -81,6 +88,7 @@ public static migrationutility.proxies.MigrationConfig load(com.mendix.systemwid /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -89,6 +97,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -254,6 +263,78 @@ public final void setMigrateErrorLogs(com.mendix.systemwideinterfaces.core.ICont getMendixObject().setValue(context, MemberNames.MigrateErrorLogs.toString(), migrateerrorlogs); } + /** + * @return value of SetAssociation + */ + public final java.lang.Boolean getSetAssociation() + { + return getSetAssociation(getContext()); + } + + /** + * @param context + * @return value of SetAssociation + */ + public final java.lang.Boolean getSetAssociation(com.mendix.systemwideinterfaces.core.IContext context) + { + return (java.lang.Boolean) getMendixObject().getValue(context, MemberNames.SetAssociation.toString()); + } + + /** + * Set value of SetAssociation + * @param setassociation + */ + public final void setSetAssociation(java.lang.Boolean setassociation) + { + setSetAssociation(getContext(), setassociation); + } + + /** + * Set value of SetAssociation + * @param context + * @param setassociation + */ + public final void setSetAssociation(com.mendix.systemwideinterfaces.core.IContext context, java.lang.Boolean setassociation) + { + getMendixObject().setValue(context, MemberNames.SetAssociation.toString(), setassociation); + } + + /** + * @return value of AssociationAccount + */ + public final java.lang.String getAssociationAccount() + { + return getAssociationAccount(getContext()); + } + + /** + * @param context + * @return value of AssociationAccount + */ + public final java.lang.String getAssociationAccount(com.mendix.systemwideinterfaces.core.IContext context) + { + return (java.lang.String) getMendixObject().getValue(context, MemberNames.AssociationAccount.toString()); + } + + /** + * Set value of AssociationAccount + * @param associationaccount + */ + public final void setAssociationAccount(java.lang.String associationaccount) + { + setAssociationAccount(getContext(), associationaccount); + } + + /** + * Set value of AssociationAccount + * @param context + * @param associationaccount + */ + public final void setAssociationAccount(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String associationaccount) + { + getMendixObject().setValue(context, MemberNames.AssociationAccount.toString(), associationaccount); + } + /** * @return the IMendixObject instance of this proxy for use in the Core interface. */ @@ -273,9 +354,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final migrationutility.proxies.MigrationConfig that = (migrationutility.proxies.MigrationConfig) obj; @@ -295,7 +376,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "MigrationUtility.MigrationConfig"; + return entityName; } /** diff --git a/javasource/migrationutility/proxies/constants/Constants.java b/javasource/migrationutility/proxies/constants/Constants.java index af47ace..cb87912 100644 --- a/javasource/migrationutility/proxies/constants/Constants.java +++ b/javasource/migrationutility/proxies/constants/Constants.java @@ -8,6 +8,14 @@ public class Constants { + /** + * @deprecated + * The default constructor of the Constants class should not be used. + * Use the static get methods instead. + */ + @java.lang.Deprecated(since = "9.12", forRemoval = true) + public Constants() {} + // These are the constants for the MigrationUtility module public static java.lang.String getLogNode() diff --git a/javasource/migrationutility/proxies/microflows/Microflows.java b/javasource/migrationutility/proxies/microflows/Microflows.java index 6ddecff..2051e9e 100644 --- a/javasource/migrationutility/proxies/microflows/Microflows.java +++ b/javasource/migrationutility/proxies/microflows/Microflows.java @@ -7,15 +7,27 @@ import java.util.HashMap; import java.util.Map; import com.mendix.core.Core; -import com.mendix.core.CoreException; -import com.mendix.systemwideinterfaces.MendixRuntimeException; import com.mendix.systemwideinterfaces.core.IContext; import com.mendix.systemwideinterfaces.core.IMendixObject; public class Microflows { + /** + * @deprecated + * The default constructor of the Microflows class should not be used. + * Use the static microflow invocation methods instead. + */ + @java.lang.Deprecated(since = "9.12", forRemoval = true) + public Microflows() {} + // These are the microflows for the MigrationUtility module - public static email_connector.proxies.EmailAccount aCT_CreateEmailAccountFromEmailSettings(IContext context, java.lang.String _userName, java.lang.String _password, java.lang.String _server, java.lang.Long _port, java.lang.String _fromAddress, java.lang.String _fromDisplayName, boolean _useSSL, boolean _useTLS, java.lang.Long _maxAttempts, boolean _useSSLCheckServerIdentity, boolean _isOAuthUsed) + public static void aCT_DeleteBeforeStats(IContext context, migrationutility.proxies.DataStats_Before _dataStats_Before) + { + Map params = new HashMap<>(); + params.put("DataStats_Before", _dataStats_Before == null ? null : _dataStats_Before.getMendixObject()); + Core.microflowCall("MigrationUtility.ACT_DeleteBeforeStats").withParams(params).execute(context); + } + public static email_connector.proxies.EmailAccount aCT_IMM_CreateEmailAccountFromEmailSettings(IContext context, java.lang.String _userName, java.lang.String _password, java.lang.String _server, java.lang.Long _port, java.lang.String _fromAddress, java.lang.String _fromDisplayName, boolean _useSSL, boolean _useTLS, java.lang.Long _maxAttempts, boolean _useSSLCheckServerIdentity, boolean _isOAuthUsed) { Map params = new HashMap<>(); params.put("UserName", _userName); @@ -29,37 +41,41 @@ public static email_connector.proxies.EmailAccount aCT_CreateEmailAccountFromEma params.put("MaxAttempts", _maxAttempts); params.put("UseSSLCheckServerIdentity", _useSSLCheckServerIdentity); params.put("isOAuthUsed", _isOAuthUsed); - IMendixObject result = (IMendixObject)Core.microflowCall("MigrationUtility.ACT_CreateEmailAccountFromEmailSettings").withParams(params).execute(context); + IMendixObject result = (IMendixObject)Core.microflowCall("MigrationUtility.ACT_IMM_CreateEmailAccountFromEmailSettings").withParams(params).execute(context); return result == null ? null : email_connector.proxies.EmailAccount.initialize(context, result); } - public static email_connector.proxies.OAuthProvider aCT_CreateOAuthProvider(IContext context, email_connector.proxies.EmailAccount _mappingParent, java.lang.String _clientID, java.lang.String _clientSecret) + public static email_connector.proxies.OAuthProvider aCT_IMM_CreateOAuthProvider(IContext context, email_connector.proxies.EmailAccount _mappingParent, java.lang.String _clientID, java.lang.String _clientSecret) { Map params = new HashMap<>(); params.put("MappingParent", _mappingParent == null ? null : _mappingParent.getMendixObject()); params.put("ClientID", _clientID); params.put("ClientSecret", _clientSecret); - IMendixObject result = (IMendixObject)Core.microflowCall("MigrationUtility.ACT_CreateOAuthProvider").withParams(params).execute(context); + IMendixObject result = (IMendixObject)Core.microflowCall("MigrationUtility.ACT_IMM_CreateOAuthProvider").withParams(params).execute(context); return result == null ? null : email_connector.proxies.OAuthProvider.initialize(context, result); } - public static void aCT_DeleteBeforeStats(IContext context, migrationutility.proxies.DataStats_Before _dataStats_Before) + public static void aCT_MigrateEmailAccounts(IContext context) { Map params = new HashMap<>(); - params.put("DataStats_Before", _dataStats_Before == null ? null : _dataStats_Before.getMendixObject()); - Core.microflowCall("MigrationUtility.ACT_DeleteBeforeStats").withParams(params).execute(context); + Core.microflowCall("MigrationUtility.ACT_MigrateEmailAccounts").withParams(params).execute(context); } - public static void aCT_MigrateEmailAccounts(IContext context) + public static java.lang.Long aCT_MigrateEmails(IContext context, email_connector.proxies.EmailTemplate _emailTemplate, email_connector.proxies.EmailAccount _emailAccount, migrationutility.proxies.MigrationConfig _migrationConfig) { Map params = new HashMap<>(); - Core.microflowCall("MigrationUtility.ACT_MigrateEmailAccounts").withParams(params).execute(context); + params.put("EmailTemplate", _emailTemplate == null ? null : _emailTemplate.getMendixObject()); + params.put("EmailAccount", _emailAccount == null ? null : _emailAccount.getMendixObject()); + params.put("MigrationConfig", _migrationConfig == null ? null : _migrationConfig.getMendixObject()); + return (java.lang.Long) Core.microflowCall("MigrationUtility.ACT_MigrateEmails").withParams(params).execute(context); } - public static boolean aCT_MigrateEmailTemplates(IContext context) + public static boolean aCT_MigrateEmailTemplates(IContext context, migrationutility.proxies.MigrationConfig _migrationConfig) { Map params = new HashMap<>(); + params.put("MigrationConfig", _migrationConfig == null ? null : _migrationConfig.getMendixObject()); return (java.lang.Boolean) Core.microflowCall("MigrationUtility.ACT_MigrateEmailTemplates").withParams(params).execute(context); } - public static void aCT_MigrateErrorLog(IContext context) + public static void aCT_MigrateErrorLog(IContext context, migrationutility.proxies.MigrationConfig _migrationConfig) { Map params = new HashMap<>(); + params.put("MigrationConfig", _migrationConfig == null ? null : _migrationConfig.getMendixObject()); Core.microflowCall("MigrationUtility.ACT_MigrateErrorLog").withParams(params).execute(context); } public static void aCT_StartMigration(IContext context, migrationutility.proxies.MigrationConfig _migrationConfig) @@ -68,12 +84,6 @@ public static void aCT_StartMigration(IContext context, migrationutility.proxies params.put("MigrationConfig", _migrationConfig == null ? null : _migrationConfig.getMendixObject()); Core.microflowCall("MigrationUtility.ACT_StartMigration").withParams(params).execute(context); } - public static java.lang.String cVRT_TruncateEmailLogMessage(IContext context, java.lang.String _message) - { - Map params = new HashMap<>(); - params.put("Message", _message); - return (java.lang.String) Core.microflowCall("MigrationUtility.CVRT_TruncateEmailLogMessage").withParams(params).execute(context); - } public static migrationutility.proxies.ECDataStats_After dS_AfterStats(IContext context) { Map params = new HashMap<>(); @@ -92,4 +102,4 @@ public static migrationutility.proxies.MigrationConfig dS_MigrationConfig(IConte IMendixObject result = (IMendixObject)Core.microflowCall("MigrationUtility.DS_MigrationConfig").withParams(params).execute(context); return result == null ? null : migrationutility.proxies.MigrationConfig.initialize(context, result); } -} \ No newline at end of file +} diff --git a/javasource/mxmodelreflection/DataParser.java b/javasource/mxmodelreflection/DataParser.java index bcea11d..10970d3 100644 --- a/javasource/mxmodelreflection/DataParser.java +++ b/javasource/mxmodelreflection/DataParser.java @@ -11,11 +11,11 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.Formatter; -import java.util.Locale; import java.util.TimeZone; import com.mendix.core.Core; import com.mendix.core.CoreException; +import com.mendix.core.objectmanagement.member.MendixDateTime; import com.mendix.core.objectmanagement.member.MendixEnum; import com.mendix.systemwideinterfaces.core.IContext; import com.mendix.systemwideinterfaces.core.IMendixObjectMember; @@ -74,16 +74,14 @@ else if ( value instanceof Float ) { } return getFormattedNumber(context, Double.valueOf((Float) value), 2, 20); } + else if ( value instanceof MendixDateTime ) { + MendixDateTime mendixDate = (MendixDateTime) value; + Date date = mendixDate.getValue(context); + boolean shouldLocalize = mendixDate.shouldLocalize(); + return processDate(context, date, pattern, shouldLocalize); + } else if ( value instanceof Date ) { - TokenReplacer._logger.trace("Processing value as date, localized"); - - if( pattern != null && !"".equals(pattern) ) { - SimpleDateFormat df = new SimpleDateFormat(pattern, Core.getLocale(context) ); - df.setTimeZone(getSessionTimeZone(context)); - - return df.format( (Date) value ); - } - return processDate(context, (Date) value, true); + return processDate(context, (Date) value, pattern, true); } else if ( value instanceof Long ) { TokenReplacer._logger.trace("Processing value as long"); @@ -145,8 +143,14 @@ else if ( value instanceof Float || value instanceof Double ) { value = Double.valueOf((Float) value); strValue = getFormattedNumber(context, (Double) value, 2, 20); } + else if ( value instanceof MendixDateTime ) { + MendixDateTime mendixDate = (MendixDateTime) value; + Date date = mendixDate.getValue(context); + boolean shouldLocalize = mendixDate.shouldLocalize(); + return processDate(context, date, null, shouldLocalize); + } else if ( value instanceof Date ) - strValue = processDate(context, (Date) value, true); + strValue = processDate(context, (Date) value, null, true); else if ( value != null ) strValue = String.valueOf(value); } @@ -154,16 +158,18 @@ else if ( value != null ) return strValue; } - private static String processDate( IContext context, Date value, boolean shouldLocalize ) { - Date date = (Date) value; - Locale userLocale = Core.getLocale(context); - DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy", userLocale); + private static String processDate( IContext context, Date date, String userPattern, boolean shouldLocalize ) { + String pattern = userPattern != null && !"".equals(userPattern) ? userPattern : "dd-MMM-yyyy"; + DateFormat dateFormat = new SimpleDateFormat(pattern, Core.getLocale(context)); - TokenReplacer._logger.trace("Processing date in timezone " + (shouldLocalize ? getSessionTimeZone(context).getDisplayName() : "UTC")); - if ( shouldLocalize ) - dateFormat.setTimeZone(getSessionTimeZone(context)); - else + if ( shouldLocalize ) { + TimeZone timezone = getSessionTimeZone(context); + TokenReplacer._logger.trace("Processing date in timezone " + timezone.getDisplayName()); + dateFormat.setTimeZone(timezone); + } else { + TokenReplacer._logger.trace("Processing date in timezone UTC"); dateFormat.setTimeZone(getUTCTimeZone()); + } return dateFormat.format(date); } diff --git a/javasource/mxmodelreflection/TokenReplacer.java b/javasource/mxmodelreflection/TokenReplacer.java index 165d2bf..6cd8e4f 100644 --- a/javasource/mxmodelreflection/TokenReplacer.java +++ b/javasource/mxmodelreflection/TokenReplacer.java @@ -12,6 +12,8 @@ import com.mendix.core.Core; import com.mendix.core.CoreException; +import com.mendix.core.objectmanagement.member.MendixObjectReference; +import com.mendix.core.objectmanagement.member.MendixObjectReferenceSet; import com.mendix.logging.ILogNode; import com.mendix.systemwideinterfaces.core.IContext; import com.mendix.systemwideinterfaces.core.IMendixIdentifier; @@ -19,6 +21,7 @@ import com.mendix.systemwideinterfaces.core.IMendixObjectMember; import com.mendix.systemwideinterfaces.core.meta.IMetaAssociation; import com.mendix.systemwideinterfaces.core.meta.IMetaAssociation.AssociationOwner; +import com.mendix.systemwideinterfaces.core.meta.IMetaObject; public class TokenReplacer { @@ -105,15 +108,16 @@ public static String replaceToken(IContext context, String text, IMendixObject t IMendixObject objectTypeStart = Core.retrieveId(context, (IMendixIdentifier) token.getValue(context, Token.MemberNames.Token_MxObjectType_Start.toString())); IMendixObject objectTypeReference = Core.retrieveId(context, (IMendixIdentifier) token.getValue(context, Token.MemberNames.Token_MxObjectType_Referenced.toString())); IMendixObject member = Core.retrieveId(context, (IMendixIdentifier) token.getValue(context, Token.MemberNames.Token_MxObjectMember.toString())); - - if( Core.isSubClassOf( (String) objectTypeStart.getValue(context, MxObjectType.MemberNames.CompleteName.toString()), replacementObject.getType() ) ) + String parentName = (String) objectTypeStart.getValue(context, MxObjectType.MemberNames.CompleteName.toString()); + if( Core.isSubClassOf(parentName, replacementObject.getType() ) ) { - IMetaAssociation association = Core.getMetaAssociation((String) reference.getValue(context, MxObjectReference.MemberNames.CompleteName.toString())); - if (association.getOwner() == AssociationOwner.BOTH - || association.getParent().getName().equals(objectTypeStart.getValue(context, MxObjectType.MemberNames.CompleteName.toString())) - || Core.isSubClassOf(association.getParent().getName(), replacementObject.getType())) + String associationName = (String) reference.getValue(context, MxObjectReference.MemberNames.CompleteName.toString()); + if (replacementObject.getMetaObject().getMetaAssociationParent(associationName) != null) { - IMendixIdentifier refObjectId = replacementObject.getValue(context, (String) reference.getValue(context, MxObjectReference.MemberNames.CompleteName.toString())); + final var association = replacementObject.getMember(context, associationName); + final var refObjectId = association instanceof MendixObjectReference ? + ((MendixObjectReference) association).getValue(context) : + ((MendixObjectReferenceSet) association).getValue(context).stream().findFirst().orElse(null); if (refObjectId != null) { IMendixObject refObj = Core.retrieveId(context, refObjectId); @@ -123,7 +127,7 @@ public static String replaceToken(IContext context, String text, IMendixObject t } else { - List result = Core.retrieveXPathQuery(context, "//" + objectTypeReference.getValue(context, MxObjectType.MemberNames.CompleteName.toString()) + "[" + reference.getValue(context, MxObjectReference.MemberNames.CompleteName.toString()) + "='" + replacementObject.getId().toLong() + "']"); + List result = Core.retrieveXPathQuery(context, "//" + objectTypeReference.getValue(context, MxObjectType.MemberNames.CompleteName.toString()) + "[" + associationName + "='" + replacementObject.getId().toLong() + "']"); if (result.size() > 0) { IMendixObject rsObject = result.get(0); @@ -133,7 +137,7 @@ public static String replaceToken(IContext context, String text, IMendixObject t } else { - throw new CoreException("wrong object type in token: " + tokenValue + ", Expecting type: " + objectTypeStart.getValue(context, MxObjectType.MemberNames.CompleteName.toString()) + " received type: " + replacementObject.getType()); + throw new CoreException("wrong object type in token: " + tokenValue + ", Expecting type: " + parentName + " received type: " + replacementObject.getType()); } } } diff --git a/javasource/mxmodelreflection/actions/JA_EnumValueCaptions.java b/javasource/mxmodelreflection/actions/JA_EnumValueCaptions.java new file mode 100644 index 0000000..246e34d --- /dev/null +++ b/javasource/mxmodelreflection/actions/JA_EnumValueCaptions.java @@ -0,0 +1,55 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +// Special characters, e.g., é, ö, à, etc. are supported in comments. + +package mxmodelreflection.actions; + +import com.mendix.systemwideinterfaces.core.IContext; +import com.mendix.webui.CustomJavaAction; +import com.mendix.systemwideinterfaces.core.IMendixObject; +import mxmodelreflection.proxies.MxObjectEnumCaptions; +import java.util.stream.Collectors; + +public class JA_EnumValueCaptions extends CustomJavaAction +{ + private IMendixObject __objectEnumValue; + private mxmodelreflection.proxies.MxObjectEnumValue objectEnumValue; + + public JA_EnumValueCaptions(IContext context, IMendixObject objectEnumValue) + { + super(context); + this.__objectEnumValue = objectEnumValue; + } + + @java.lang.Override + public java.lang.String executeAction() throws Exception + { + this.objectEnumValue = this.__objectEnumValue == null ? null : mxmodelreflection.proxies.MxObjectEnumValue.initialize(getContext(), __objectEnumValue); + + // BEGIN USER CODE + if (objectEnumValue == null) { + return null; + } else { + return objectEnumValue.getCaptions().stream().map(MxObjectEnumCaptions::getCaption).collect(Collectors.joining(", ")); + } + // END USER CODE + } + + /** + * Returns a string representation of this action + * @return a string representation of this action + */ + @java.lang.Override + public java.lang.String toString() + { + return "JA_EnumValueCaptions"; + } + + // BEGIN EXTRA CODE + // END EXTRA CODE +} diff --git a/javasource/mxmodelreflection/actions/JA_EnumValueLanguages.java b/javasource/mxmodelreflection/actions/JA_EnumValueLanguages.java new file mode 100644 index 0000000..a88bc40 --- /dev/null +++ b/javasource/mxmodelreflection/actions/JA_EnumValueLanguages.java @@ -0,0 +1,55 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +// Special characters, e.g., é, ö, à, etc. are supported in comments. + +package mxmodelreflection.actions; + +import com.mendix.systemwideinterfaces.core.IContext; +import com.mendix.webui.CustomJavaAction; +import com.mendix.systemwideinterfaces.core.IMendixObject; +import mxmodelreflection.proxies.MxObjectEnumCaptions; +import java.util.stream.Collectors; + +public class JA_EnumValueLanguages extends CustomJavaAction +{ + private IMendixObject __objectEnumValue; + private mxmodelreflection.proxies.MxObjectEnumValue objectEnumValue; + + public JA_EnumValueLanguages(IContext context, IMendixObject objectEnumValue) + { + super(context); + this.__objectEnumValue = objectEnumValue; + } + + @java.lang.Override + public java.lang.String executeAction() throws Exception + { + this.objectEnumValue = this.__objectEnumValue == null ? null : mxmodelreflection.proxies.MxObjectEnumValue.initialize(getContext(), __objectEnumValue); + + // BEGIN USER CODE + if (objectEnumValue == null) { + return null; + } else { + return objectEnumValue.getCaptions().stream().map(MxObjectEnumCaptions::getLanguageCode).collect(Collectors.joining(", ")); + } + // END USER CODE + } + + /** + * Returns a string representation of this action + * @return a string representation of this action + */ + @java.lang.Override + public java.lang.String toString() + { + return "JA_EnumValueLanguages"; + } + + // BEGIN EXTRA CODE + // END EXTRA CODE +} diff --git a/javasource/mxmodelreflection/actions/JA_ReferenceObjects.java b/javasource/mxmodelreflection/actions/JA_ReferenceObjects.java new file mode 100644 index 0000000..6de9c5e --- /dev/null +++ b/javasource/mxmodelreflection/actions/JA_ReferenceObjects.java @@ -0,0 +1,55 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +// Special characters, e.g., é, ö, à, etc. are supported in comments. + +package mxmodelreflection.actions; + +import com.mendix.systemwideinterfaces.core.IContext; +import com.mendix.webui.CustomJavaAction; +import com.mendix.systemwideinterfaces.core.IMendixObject; +import mxmodelreflection.proxies.MxObjectType; +import java.util.stream.Collectors; + +public class JA_ReferenceObjects extends CustomJavaAction +{ + private IMendixObject __objectReference; + private mxmodelreflection.proxies.MxObjectReference objectReference; + + public JA_ReferenceObjects(IContext context, IMendixObject objectReference) + { + super(context); + this.__objectReference = objectReference; + } + + @java.lang.Override + public java.lang.String executeAction() throws Exception + { + this.objectReference = this.__objectReference == null ? null : mxmodelreflection.proxies.MxObjectReference.initialize(getContext(), __objectReference); + + // BEGIN USER CODE + if (objectReference == null) { + return null; + } else { + return objectReference.getMxObjectReference_MxObjectType().stream().map(MxObjectType::getCompleteName).collect(Collectors.joining(",")); + } + // END USER CODE + } + + /** + * Returns a string representation of this action + * @return a string representation of this action + */ + @java.lang.Override + public java.lang.String toString() + { + return "JA_ReferenceObjects"; + } + + // BEGIN EXTRA CODE + // END EXTRA CODE +} diff --git a/javasource/mxmodelreflection/actions/ReplaceToken.java b/javasource/mxmodelreflection/actions/ReplaceToken.java index a2a1f0c..aee6032 100644 --- a/javasource/mxmodelreflection/actions/ReplaceToken.java +++ b/javasource/mxmodelreflection/actions/ReplaceToken.java @@ -35,7 +35,7 @@ public ReplaceToken(IContext context, IMendixObject TokenObject, IMendixObject V @java.lang.Override public java.lang.String executeAction() throws Exception { - this.TokenObject = __TokenObject == null ? null : mxmodelreflection.proxies.Token.initialize(getContext(), __TokenObject); + this.TokenObject = this.__TokenObject == null ? null : mxmodelreflection.proxies.Token.initialize(getContext(), __TokenObject); // BEGIN USER CODE return TokenReplacer.replaceToken(this.getContext(), this.TextToReplace, this.__TokenObject, this.ValueObject); @@ -44,6 +44,7 @@ public java.lang.String executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/mxmodelreflection/actions/SyncObjects.java b/javasource/mxmodelreflection/actions/SyncObjects.java index 2b4c7f3..cdbd85f 100644 --- a/javasource/mxmodelreflection/actions/SyncObjects.java +++ b/javasource/mxmodelreflection/actions/SyncObjects.java @@ -53,6 +53,7 @@ public java.lang.Boolean executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/mxmodelreflection/actions/TestThePattern.java b/javasource/mxmodelreflection/actions/TestThePattern.java index cb1be8c..00ffb7a 100644 --- a/javasource/mxmodelreflection/actions/TestThePattern.java +++ b/javasource/mxmodelreflection/actions/TestThePattern.java @@ -33,7 +33,7 @@ public TestThePattern(IContext context, IMendixObject TestPatternObj) @java.lang.Override public java.lang.Boolean executeAction() throws Exception { - this.TestPatternObj = __TestPatternObj == null ? null : mxmodelreflection.proxies.TestPattern.initialize(getContext(), __TestPatternObj); + this.TestPatternObj = this.__TestPatternObj == null ? null : mxmodelreflection.proxies.TestPattern.initialize(getContext(), __TestPatternObj); // BEGIN USER CODE @@ -85,6 +85,7 @@ public java.lang.Boolean executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/mxmodelreflection/actions/ValidateTokensInMessage.java b/javasource/mxmodelreflection/actions/ValidateTokensInMessage.java index c54fd3e..d2a4a82 100644 --- a/javasource/mxmodelreflection/actions/ValidateTokensInMessage.java +++ b/javasource/mxmodelreflection/actions/ValidateTokensInMessage.java @@ -33,10 +33,11 @@ public ValidateTokensInMessage(IContext context, java.lang.String Text, java.uti @java.lang.Override public java.util.List executeAction() throws Exception { - this.TokenList = new java.util.ArrayList(); - if (__TokenList != null) - for (IMendixObject __TokenListElement : __TokenList) - this.TokenList.add(mxmodelreflection.proxies.Token.initialize(getContext(), __TokenListElement)); + this.TokenList = java.util.Optional.ofNullable(this.__TokenList) + .orElse(java.util.Collections.emptyList()) + .stream() + .map(__TokenListElement -> mxmodelreflection.proxies.Token.initialize(getContext(), __TokenListElement)) + .collect(java.util.stream.Collectors.toList()); // BEGIN USER CODE @@ -46,6 +47,7 @@ public java.util.List executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/mxmodelreflection/proxies/AssociationOwner.java b/javasource/mxmodelreflection/proxies/AssociationOwner.java index 2ff48e9..527c69f 100644 --- a/javasource/mxmodelreflection/proxies/AssociationOwner.java +++ b/javasource/mxmodelreflection/proxies/AssociationOwner.java @@ -9,20 +9,19 @@ public enum AssociationOwner _Default(new java.lang.String[][] { new java.lang.String[] { "nl_NL", "Default" }, new java.lang.String[] { "en_GB", "Default" }, new java.lang.String[] { "en_US", "Default" }, new java.lang.String[] { "en_ZA", "Default" } }), Both(new java.lang.String[][] { new java.lang.String[] { "nl_NL", "Beide" }, new java.lang.String[] { "en_GB", "Both" }, new java.lang.String[] { "en_US", "Both" }, new java.lang.String[] { "en_ZA", "Both" } }); - private java.util.Map captions; + private final java.util.Map captions; private AssociationOwner(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/mxmodelreflection/proxies/AttributeTypes.java b/javasource/mxmodelreflection/proxies/AttributeTypes.java index 775b499..ccf09ff 100644 --- a/javasource/mxmodelreflection/proxies/AttributeTypes.java +++ b/javasource/mxmodelreflection/proxies/AttributeTypes.java @@ -18,20 +18,19 @@ public enum AttributeTypes StringType(new java.lang.String[][] { new java.lang.String[] { "en_US", "String" }, new java.lang.String[] { "nl_NL", "String" }, new java.lang.String[] { "en_GB", "String" }, new java.lang.String[] { "en_ZA", "String" } }), Decimal(new java.lang.String[][] { new java.lang.String[] { "en_US", "Decimal" }, new java.lang.String[] { "nl_NL", "Decimal" }, new java.lang.String[] { "en_GB", "Decimal" }, new java.lang.String[] { "en_ZA", "Decimal" } }); - private java.util.Map captions; + private final java.util.Map captions; private AttributeTypes(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/mxmodelreflection/proxies/DbSizeEstimate.java b/javasource/mxmodelreflection/proxies/DbSizeEstimate.java index d2342c6..57be89a 100644 --- a/javasource/mxmodelreflection/proxies/DbSizeEstimate.java +++ b/javasource/mxmodelreflection/proxies/DbSizeEstimate.java @@ -26,7 +26,7 @@ public enum MemberNames FindObjectType("FindObjectType"), DbSizeEstimate_MxObjectType("MxModelReflection.DbSizeEstimate_MxObjectType"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -42,15 +42,17 @@ public java.lang.String toString() public DbSizeEstimate(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "MxModelReflection.DbSizeEstimate")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected DbSizeEstimate(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject dbSizeEstimateMendixObject) { - if (dbSizeEstimateMendixObject == null) + if (dbSizeEstimateMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("MxModelReflection.DbSizeEstimate", dbSizeEstimateMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a MxModelReflection.DbSizeEstimate"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, dbSizeEstimateMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.dbSizeEstimateMendixObject = dbSizeEstimateMendixObject; this.context = context; @@ -68,6 +70,9 @@ public static mxmodelreflection.proxies.DbSizeEstimate initialize(com.mendix.sys /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static mxmodelreflection.proxies.DbSizeEstimate initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -82,14 +87,16 @@ public static mxmodelreflection.proxies.DbSizeEstimate load(com.mendix.systemwid public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//MxModelReflection.DbSizeEstimate" + xpathConstraint)) - result.add(mxmodelreflection.proxies.DbSizeEstimate.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> mxmodelreflection.proxies.DbSizeEstimate.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -98,6 +105,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -264,6 +272,7 @@ public final void setFindObjectType(com.mendix.systemwideinterfaces.core.IContex } /** + * @throws com.mendix.core.CoreException * @return value of DbSizeEstimate_MxObjectType */ public final mxmodelreflection.proxies.MxObjectType getDbSizeEstimate_MxObjectType() throws com.mendix.core.CoreException @@ -274,13 +283,15 @@ public final mxmodelreflection.proxies.MxObjectType getDbSizeEstimate_MxObjectTy /** * @param context * @return value of DbSizeEstimate_MxObjectType + * @throws com.mendix.core.CoreException */ public final mxmodelreflection.proxies.MxObjectType getDbSizeEstimate_MxObjectType(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { mxmodelreflection.proxies.MxObjectType result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.DbSizeEstimate_MxObjectType.toString()); - if (identifier != null) + if (identifier != null) { result = mxmodelreflection.proxies.MxObjectType.load(context, identifier); + } return result; } @@ -300,10 +311,11 @@ public final void setDbSizeEstimate_MxObjectType(mxmodelreflection.proxies.MxObj */ public final void setDbSizeEstimate_MxObjectType(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.MxObjectType dbsizeestimate_mxobjecttype) { - if (dbsizeestimate_mxobjecttype == null) + if (dbsizeestimate_mxobjecttype == null) { getMendixObject().setValue(context, MemberNames.DbSizeEstimate_MxObjectType.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.DbSizeEstimate_MxObjectType.toString(), dbsizeestimate_mxobjecttype.getMendixObject().getId()); + } } /** @@ -325,9 +337,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final mxmodelreflection.proxies.DbSizeEstimate that = (mxmodelreflection.proxies.DbSizeEstimate) obj; @@ -347,7 +359,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "MxModelReflection.DbSizeEstimate"; + return entityName; } /** diff --git a/javasource/mxmodelreflection/proxies/InheritsFromContainer.java b/javasource/mxmodelreflection/proxies/InheritsFromContainer.java index 933a78d..7b2a5ac 100644 --- a/javasource/mxmodelreflection/proxies/InheritsFromContainer.java +++ b/javasource/mxmodelreflection/proxies/InheritsFromContainer.java @@ -22,7 +22,7 @@ public enum MemberNames { Summary("Summary"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -38,15 +38,17 @@ public java.lang.String toString() public InheritsFromContainer(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "MxModelReflection.InheritsFromContainer")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected InheritsFromContainer(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject inheritsFromContainerMendixObject) { - if (inheritsFromContainerMendixObject == null) + if (inheritsFromContainerMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("MxModelReflection.InheritsFromContainer", inheritsFromContainerMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a MxModelReflection.InheritsFromContainer"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, inheritsFromContainerMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.inheritsFromContainerMendixObject = inheritsFromContainerMendixObject; this.context = context; @@ -64,6 +66,9 @@ public static mxmodelreflection.proxies.InheritsFromContainer initialize(com.men /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static mxmodelreflection.proxies.InheritsFromContainer initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -78,6 +83,7 @@ public static mxmodelreflection.proxies.InheritsFromContainer load(com.mendix.sy /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -86,6 +92,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -162,9 +169,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final mxmodelreflection.proxies.InheritsFromContainer that = (mxmodelreflection.proxies.InheritsFromContainer) obj; @@ -184,7 +191,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "MxModelReflection.InheritsFromContainer"; + return entityName; } /** diff --git a/javasource/mxmodelreflection/proxies/Microflows.java b/javasource/mxmodelreflection/proxies/Microflows.java index 8979647..848bd93 100644 --- a/javasource/mxmodelreflection/proxies/Microflows.java +++ b/javasource/mxmodelreflection/proxies/Microflows.java @@ -27,7 +27,7 @@ public enum MemberNames Microflows_Output_Type("MxModelReflection.Microflows_Output_Type"), Microflows_Module("MxModelReflection.Microflows_Module"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -43,15 +43,17 @@ public java.lang.String toString() public Microflows(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "MxModelReflection.Microflows")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected Microflows(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject microflowsMendixObject) { - if (microflowsMendixObject == null) + if (microflowsMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("MxModelReflection.Microflows", microflowsMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a MxModelReflection.Microflows"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, microflowsMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.microflowsMendixObject = microflowsMendixObject; this.context = context; @@ -69,6 +71,9 @@ public static mxmodelreflection.proxies.Microflows initialize(com.mendix.systemw /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static mxmodelreflection.proxies.Microflows initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -83,14 +88,16 @@ public static mxmodelreflection.proxies.Microflows load(com.mendix.systemwideint public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//MxModelReflection.Microflows" + xpathConstraint)) - result.add(mxmodelreflection.proxies.Microflows.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> mxmodelreflection.proxies.Microflows.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -99,6 +106,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -229,6 +237,7 @@ public final void setCompleteName(com.mendix.systemwideinterfaces.core.IContext } /** + * @throws com.mendix.core.CoreException * @return value of Microflows_InputParameter */ public final java.util.List getMicroflows_InputParameter() throws com.mendix.core.CoreException @@ -239,16 +248,19 @@ public final java.util.List getMicroflows_I /** * @param context * @return value of Microflows_InputParameter + * @throws com.mendix.core.CoreException */ @SuppressWarnings("unchecked") public final java.util.List getMicroflows_InputParameter(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); + java.util.List result = new java.util.ArrayList<>(); Object valueObject = getMendixObject().getValue(context, MemberNames.Microflows_InputParameter.toString()); - if (valueObject == null) + if (valueObject == null) { return result; - for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) + } + for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) { result.add(mxmodelreflection.proxies.Parameter.initialize(context, mendixObject)); + } return result; } @@ -268,13 +280,16 @@ public final void setMicroflows_InputParameter(java.util.List microflows_inputparameter) { - java.util.List identifiers = new java.util.ArrayList(); - for (mxmodelreflection.proxies.Parameter proxyObject : microflows_inputparameter) - identifiers.add(proxyObject.getMendixObject().getId()); + var identifiers = microflows_inputparameter + .stream() + .map(proxyObject -> proxyObject.getMendixObject().getId()) + .collect(java.util.stream.Collectors.toList()); + getMendixObject().setValue(context, MemberNames.Microflows_InputParameter.toString(), identifiers); } /** + * @throws com.mendix.core.CoreException * @return value of Microflows_Output_Type */ public final mxmodelreflection.proxies.ValueType getMicroflows_Output_Type() throws com.mendix.core.CoreException @@ -285,13 +300,15 @@ public final mxmodelreflection.proxies.ValueType getMicroflows_Output_Type() thr /** * @param context * @return value of Microflows_Output_Type + * @throws com.mendix.core.CoreException */ public final mxmodelreflection.proxies.ValueType getMicroflows_Output_Type(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { mxmodelreflection.proxies.ValueType result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.Microflows_Output_Type.toString()); - if (identifier != null) + if (identifier != null) { result = mxmodelreflection.proxies.ValueType.load(context, identifier); + } return result; } @@ -311,13 +328,15 @@ public final void setMicroflows_Output_Type(mxmodelreflection.proxies.ValueType */ public final void setMicroflows_Output_Type(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.ValueType microflows_output_type) { - if (microflows_output_type == null) + if (microflows_output_type == null) { getMendixObject().setValue(context, MemberNames.Microflows_Output_Type.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.Microflows_Output_Type.toString(), microflows_output_type.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of Microflows_Module */ public final mxmodelreflection.proxies.Module getMicroflows_Module() throws com.mendix.core.CoreException @@ -328,13 +347,15 @@ public final mxmodelreflection.proxies.Module getMicroflows_Module() throws com. /** * @param context * @return value of Microflows_Module + * @throws com.mendix.core.CoreException */ public final mxmodelreflection.proxies.Module getMicroflows_Module(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { mxmodelreflection.proxies.Module result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.Microflows_Module.toString()); - if (identifier != null) + if (identifier != null) { result = mxmodelreflection.proxies.Module.load(context, identifier); + } return result; } @@ -354,10 +375,11 @@ public final void setMicroflows_Module(mxmodelreflection.proxies.Module microflo */ public final void setMicroflows_Module(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.Module microflows_module) { - if (microflows_module == null) + if (microflows_module == null) { getMendixObject().setValue(context, MemberNames.Microflows_Module.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.Microflows_Module.toString(), microflows_module.getMendixObject().getId()); + } } /** @@ -379,9 +401,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final mxmodelreflection.proxies.Microflows that = (mxmodelreflection.proxies.Microflows) obj; @@ -401,7 +423,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "MxModelReflection.Microflows"; + return entityName; } /** diff --git a/javasource/mxmodelreflection/proxies/Module.java b/javasource/mxmodelreflection/proxies/Module.java index 5f136db..53514cd 100644 --- a/javasource/mxmodelreflection/proxies/Module.java +++ b/javasource/mxmodelreflection/proxies/Module.java @@ -23,7 +23,7 @@ public enum MemberNames ModuleName("ModuleName"), SynchronizeObjectsWithinModule("SynchronizeObjectsWithinModule"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -39,15 +39,17 @@ public java.lang.String toString() public Module(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "MxModelReflection.Module")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected Module(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject moduleMendixObject) { - if (moduleMendixObject == null) + if (moduleMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("MxModelReflection.Module", moduleMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a MxModelReflection.Module"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, moduleMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.moduleMendixObject = moduleMendixObject; this.context = context; @@ -65,6 +67,9 @@ public static mxmodelreflection.proxies.Module initialize(com.mendix.systemwidei /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static mxmodelreflection.proxies.Module initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -79,14 +84,16 @@ public static mxmodelreflection.proxies.Module load(com.mendix.systemwideinterfa public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//MxModelReflection.Module" + xpathConstraint)) - result.add(mxmodelreflection.proxies.Module.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> mxmodelreflection.proxies.Module.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -95,6 +102,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -207,9 +215,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final mxmodelreflection.proxies.Module that = (mxmodelreflection.proxies.Module) obj; @@ -229,7 +237,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "MxModelReflection.Module"; + return entityName; } /** diff --git a/javasource/mxmodelreflection/proxies/MxObjectEnum.java b/javasource/mxmodelreflection/proxies/MxObjectEnum.java index fce1b75..af7308c 100644 --- a/javasource/mxmodelreflection/proxies/MxObjectEnum.java +++ b/javasource/mxmodelreflection/proxies/MxObjectEnum.java @@ -27,7 +27,7 @@ public enum MemberNames MxObjectMember_MxObjectType("MxModelReflection.MxObjectMember_MxObjectType"), MxObjectMember_Type("MxModelReflection.MxObjectMember_Type"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -43,14 +43,15 @@ public java.lang.String toString() public MxObjectEnum(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "MxModelReflection.MxObjectEnum")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected MxObjectEnum(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mxObjectEnumMendixObject) { super(context, mxObjectEnumMendixObject); - if (!com.mendix.core.Core.isSubClassOf("MxModelReflection.MxObjectEnum", mxObjectEnumMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a MxModelReflection.MxObjectEnum"); + if (!com.mendix.core.Core.isSubClassOf(entityName, mxObjectEnumMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } } /** @@ -65,6 +66,9 @@ public static mxmodelreflection.proxies.MxObjectEnum initialize(com.mendix.syste /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static mxmodelreflection.proxies.MxObjectEnum initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -79,13 +83,15 @@ public static mxmodelreflection.proxies.MxObjectEnum load(com.mendix.systemwidei public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//MxModelReflection.MxObjectEnum" + xpathConstraint)) - result.add(mxmodelreflection.proxies.MxObjectEnum.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> mxmodelreflection.proxies.MxObjectEnum.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** + * @throws com.mendix.core.CoreException * @return value of Values */ public final java.util.List getValues() throws com.mendix.core.CoreException @@ -96,16 +102,19 @@ public final java.util.List getValu /** * @param context * @return value of Values + * @throws com.mendix.core.CoreException */ @SuppressWarnings("unchecked") public final java.util.List getValues(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); + java.util.List result = new java.util.ArrayList<>(); Object valueObject = getMendixObject().getValue(context, MemberNames.Values.toString()); - if (valueObject == null) + if (valueObject == null) { return result; - for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) + } + for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) { result.add(mxmodelreflection.proxies.MxObjectEnumValue.initialize(context, mendixObject)); + } return result; } @@ -125,18 +134,20 @@ public final void setValues(java.util.List values) { - java.util.List identifiers = new java.util.ArrayList(); - for (mxmodelreflection.proxies.MxObjectEnumValue proxyObject : values) - identifiers.add(proxyObject.getMendixObject().getId()); + var identifiers = values + .stream() + .map(proxyObject -> proxyObject.getMendixObject().getId()) + .collect(java.util.stream.Collectors.toList()); + getMendixObject().setValue(context, MemberNames.Values.toString(), identifiers); } @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final mxmodelreflection.proxies.MxObjectEnum that = (mxmodelreflection.proxies.MxObjectEnum) obj; @@ -156,7 +167,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "MxModelReflection.MxObjectEnum"; + return entityName; } /** diff --git a/javasource/mxmodelreflection/proxies/MxObjectEnumCaptions.java b/javasource/mxmodelreflection/proxies/MxObjectEnumCaptions.java index 68a8a44..93faa8f 100644 --- a/javasource/mxmodelreflection/proxies/MxObjectEnumCaptions.java +++ b/javasource/mxmodelreflection/proxies/MxObjectEnumCaptions.java @@ -24,7 +24,7 @@ public enum MemberNames LanguageCode("LanguageCode"), LanguageName("LanguageName"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -40,15 +40,17 @@ public java.lang.String toString() public MxObjectEnumCaptions(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "MxModelReflection.MxObjectEnumCaptions")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected MxObjectEnumCaptions(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mxObjectEnumCaptionsMendixObject) { - if (mxObjectEnumCaptionsMendixObject == null) + if (mxObjectEnumCaptionsMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("MxModelReflection.MxObjectEnumCaptions", mxObjectEnumCaptionsMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a MxModelReflection.MxObjectEnumCaptions"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, mxObjectEnumCaptionsMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.mxObjectEnumCaptionsMendixObject = mxObjectEnumCaptionsMendixObject; this.context = context; @@ -66,6 +68,9 @@ public static mxmodelreflection.proxies.MxObjectEnumCaptions initialize(com.mend /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static mxmodelreflection.proxies.MxObjectEnumCaptions initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -80,14 +85,16 @@ public static mxmodelreflection.proxies.MxObjectEnumCaptions load(com.mendix.sys public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//MxModelReflection.MxObjectEnumCaptions" + xpathConstraint)) - result.add(mxmodelreflection.proxies.MxObjectEnumCaptions.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> mxmodelreflection.proxies.MxObjectEnumCaptions.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -96,6 +103,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -244,9 +252,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final mxmodelreflection.proxies.MxObjectEnumCaptions that = (mxmodelreflection.proxies.MxObjectEnumCaptions) obj; @@ -266,7 +274,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "MxModelReflection.MxObjectEnumCaptions"; + return entityName; } /** diff --git a/javasource/mxmodelreflection/proxies/MxObjectEnumValue.java b/javasource/mxmodelreflection/proxies/MxObjectEnumValue.java index 4e0a6e6..afca37c 100644 --- a/javasource/mxmodelreflection/proxies/MxObjectEnumValue.java +++ b/javasource/mxmodelreflection/proxies/MxObjectEnumValue.java @@ -23,7 +23,7 @@ public enum MemberNames Name("Name"), Captions("MxModelReflection.Captions"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -39,15 +39,17 @@ public java.lang.String toString() public MxObjectEnumValue(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "MxModelReflection.MxObjectEnumValue")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected MxObjectEnumValue(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mxObjectEnumValueMendixObject) { - if (mxObjectEnumValueMendixObject == null) + if (mxObjectEnumValueMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("MxModelReflection.MxObjectEnumValue", mxObjectEnumValueMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a MxModelReflection.MxObjectEnumValue"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, mxObjectEnumValueMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.mxObjectEnumValueMendixObject = mxObjectEnumValueMendixObject; this.context = context; @@ -65,6 +67,9 @@ public static mxmodelreflection.proxies.MxObjectEnumValue initialize(com.mendix. /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static mxmodelreflection.proxies.MxObjectEnumValue initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -79,14 +84,16 @@ public static mxmodelreflection.proxies.MxObjectEnumValue load(com.mendix.system public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//MxModelReflection.MxObjectEnumValue" + xpathConstraint)) - result.add(mxmodelreflection.proxies.MxObjectEnumValue.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> mxmodelreflection.proxies.MxObjectEnumValue.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -95,6 +102,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -153,6 +161,7 @@ public final void setName(com.mendix.systemwideinterfaces.core.IContext context, } /** + * @throws com.mendix.core.CoreException * @return value of Captions */ public final java.util.List getCaptions() throws com.mendix.core.CoreException @@ -163,16 +172,19 @@ public final java.util.List getC /** * @param context * @return value of Captions + * @throws com.mendix.core.CoreException */ @SuppressWarnings("unchecked") public final java.util.List getCaptions(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); + java.util.List result = new java.util.ArrayList<>(); Object valueObject = getMendixObject().getValue(context, MemberNames.Captions.toString()); - if (valueObject == null) + if (valueObject == null) { return result; - for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) + } + for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) { result.add(mxmodelreflection.proxies.MxObjectEnumCaptions.initialize(context, mendixObject)); + } return result; } @@ -192,9 +204,11 @@ public final void setCaptions(java.util.List captions) { - java.util.List identifiers = new java.util.ArrayList(); - for (mxmodelreflection.proxies.MxObjectEnumCaptions proxyObject : captions) - identifiers.add(proxyObject.getMendixObject().getId()); + var identifiers = captions + .stream() + .map(proxyObject -> proxyObject.getMendixObject().getId()) + .collect(java.util.stream.Collectors.toList()); + getMendixObject().setValue(context, MemberNames.Captions.toString(), identifiers); } @@ -217,9 +231,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final mxmodelreflection.proxies.MxObjectEnumValue that = (mxmodelreflection.proxies.MxObjectEnumValue) obj; @@ -239,7 +253,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "MxModelReflection.MxObjectEnumValue"; + return entityName; } /** diff --git a/javasource/mxmodelreflection/proxies/MxObjectMember.java b/javasource/mxmodelreflection/proxies/MxObjectMember.java index 971521e..d5fe470 100644 --- a/javasource/mxmodelreflection/proxies/MxObjectMember.java +++ b/javasource/mxmodelreflection/proxies/MxObjectMember.java @@ -30,7 +30,7 @@ public enum MemberNames MxObjectMember_MxObjectType("MxModelReflection.MxObjectMember_MxObjectType"), MxObjectMember_Type("MxModelReflection.MxObjectMember_Type"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -46,15 +46,17 @@ public java.lang.String toString() public MxObjectMember(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "MxModelReflection.MxObjectMember")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected MxObjectMember(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mxObjectMemberMendixObject) { - if (mxObjectMemberMendixObject == null) + if (mxObjectMemberMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("MxModelReflection.MxObjectMember", mxObjectMemberMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a MxModelReflection.MxObjectMember"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, mxObjectMemberMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.mxObjectMemberMendixObject = mxObjectMemberMendixObject; this.context = context; @@ -72,12 +74,15 @@ public static mxmodelreflection.proxies.MxObjectMember initialize(com.mendix.sys /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static mxmodelreflection.proxies.MxObjectMember initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { - if (com.mendix.core.Core.isSubClassOf("MxModelReflection.MxObjectEnum", mendixObject.getType())) + if (com.mendix.core.Core.isSubClassOf("MxModelReflection.MxObjectEnum", mendixObject.getType())) { return mxmodelreflection.proxies.MxObjectEnum.initialize(context, mendixObject); - + } return new mxmodelreflection.proxies.MxObjectMember(context, mendixObject); } @@ -89,14 +94,16 @@ public static mxmodelreflection.proxies.MxObjectMember load(com.mendix.systemwid public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//MxModelReflection.MxObjectMember" + xpathConstraint)) - result.add(mxmodelreflection.proxies.MxObjectMember.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> mxmodelreflection.proxies.MxObjectMember.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -105,6 +112,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -214,9 +222,9 @@ public final mxmodelreflection.proxies.PrimitiveTypes getAttributeTypeEnum() public final mxmodelreflection.proxies.PrimitiveTypes getAttributeTypeEnum(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.AttributeTypeEnum.toString()); - if (obj == null) + if (obj == null) { return null; - + } return mxmodelreflection.proxies.PrimitiveTypes.valueOf((java.lang.String) obj); } @@ -236,10 +244,11 @@ public final void setAttributeTypeEnum(mxmodelreflection.proxies.PrimitiveTypes */ public final void setAttributeTypeEnum(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.PrimitiveTypes attributetypeenum) { - if (attributetypeenum != null) + if (attributetypeenum != null) { getMendixObject().setValue(context, MemberNames.AttributeTypeEnum.toString(), attributetypeenum.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.AttributeTypeEnum.toString(), null); + } } /** @@ -387,6 +396,7 @@ public final void setIsVirtual(com.mendix.systemwideinterfaces.core.IContext con } /** + * @throws com.mendix.core.CoreException * @return value of MxObjectMember_MxObjectType */ public final mxmodelreflection.proxies.MxObjectType getMxObjectMember_MxObjectType() throws com.mendix.core.CoreException @@ -397,13 +407,15 @@ public final mxmodelreflection.proxies.MxObjectType getMxObjectMember_MxObjectTy /** * @param context * @return value of MxObjectMember_MxObjectType + * @throws com.mendix.core.CoreException */ public final mxmodelreflection.proxies.MxObjectType getMxObjectMember_MxObjectType(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { mxmodelreflection.proxies.MxObjectType result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.MxObjectMember_MxObjectType.toString()); - if (identifier != null) + if (identifier != null) { result = mxmodelreflection.proxies.MxObjectType.load(context, identifier); + } return result; } @@ -423,13 +435,15 @@ public final void setMxObjectMember_MxObjectType(mxmodelreflection.proxies.MxObj */ public final void setMxObjectMember_MxObjectType(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.MxObjectType mxobjectmember_mxobjecttype) { - if (mxobjectmember_mxobjecttype == null) + if (mxobjectmember_mxobjecttype == null) { getMendixObject().setValue(context, MemberNames.MxObjectMember_MxObjectType.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.MxObjectMember_MxObjectType.toString(), mxobjectmember_mxobjecttype.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of MxObjectMember_Type */ public final mxmodelreflection.proxies.ValueType getMxObjectMember_Type() throws com.mendix.core.CoreException @@ -440,13 +454,15 @@ public final mxmodelreflection.proxies.ValueType getMxObjectMember_Type() throws /** * @param context * @return value of MxObjectMember_Type + * @throws com.mendix.core.CoreException */ public final mxmodelreflection.proxies.ValueType getMxObjectMember_Type(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { mxmodelreflection.proxies.ValueType result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.MxObjectMember_Type.toString()); - if (identifier != null) + if (identifier != null) { result = mxmodelreflection.proxies.ValueType.load(context, identifier); + } return result; } @@ -466,10 +482,11 @@ public final void setMxObjectMember_Type(mxmodelreflection.proxies.ValueType mxo */ public final void setMxObjectMember_Type(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.ValueType mxobjectmember_type) { - if (mxobjectmember_type == null) + if (mxobjectmember_type == null) { getMendixObject().setValue(context, MemberNames.MxObjectMember_Type.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.MxObjectMember_Type.toString(), mxobjectmember_type.getMendixObject().getId()); + } } /** @@ -491,9 +508,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final mxmodelreflection.proxies.MxObjectMember that = (mxmodelreflection.proxies.MxObjectMember) obj; @@ -513,7 +530,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "MxModelReflection.MxObjectMember"; + return entityName; } /** diff --git a/javasource/mxmodelreflection/proxies/MxObjectReference.java b/javasource/mxmodelreflection/proxies/MxObjectReference.java index 333a34c..b9ea7f7 100644 --- a/javasource/mxmodelreflection/proxies/MxObjectReference.java +++ b/javasource/mxmodelreflection/proxies/MxObjectReference.java @@ -32,7 +32,7 @@ public enum MemberNames MxObjectReference_MxObjectType_Parent("MxModelReflection.MxObjectReference_MxObjectType_Parent"), MxObjectReference_Module("MxModelReflection.MxObjectReference_Module"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -48,15 +48,17 @@ public java.lang.String toString() public MxObjectReference(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "MxModelReflection.MxObjectReference")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected MxObjectReference(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mxObjectReferenceMendixObject) { - if (mxObjectReferenceMendixObject == null) + if (mxObjectReferenceMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("MxModelReflection.MxObjectReference", mxObjectReferenceMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a MxModelReflection.MxObjectReference"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, mxObjectReferenceMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.mxObjectReferenceMendixObject = mxObjectReferenceMendixObject; this.context = context; @@ -74,6 +76,9 @@ public static mxmodelreflection.proxies.MxObjectReference initialize(com.mendix. /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static mxmodelreflection.proxies.MxObjectReference initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -88,14 +93,16 @@ public static mxmodelreflection.proxies.MxObjectReference load(com.mendix.system public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//MxModelReflection.MxObjectReference" + xpathConstraint)) - result.add(mxmodelreflection.proxies.MxObjectReference.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> mxmodelreflection.proxies.MxObjectReference.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -104,6 +111,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -285,9 +293,9 @@ public final mxmodelreflection.proxies.ReferenceType getReferenceType() public final mxmodelreflection.proxies.ReferenceType getReferenceType(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.ReferenceType.toString()); - if (obj == null) + if (obj == null) { return null; - + } return mxmodelreflection.proxies.ReferenceType.valueOf((java.lang.String) obj); } @@ -307,10 +315,11 @@ public final void setReferenceType(mxmodelreflection.proxies.ReferenceType refer */ public final void setReferenceType(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.ReferenceType referencetype) { - if (referencetype != null) + if (referencetype != null) { getMendixObject().setValue(context, MemberNames.ReferenceType.toString(), referencetype.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.ReferenceType.toString(), null); + } } /** @@ -329,9 +338,9 @@ public final mxmodelreflection.proxies.AssociationOwner getAssociationOwner() public final mxmodelreflection.proxies.AssociationOwner getAssociationOwner(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.AssociationOwner.toString()); - if (obj == null) + if (obj == null) { return null; - + } return mxmodelreflection.proxies.AssociationOwner.valueOf((java.lang.String) obj); } @@ -351,10 +360,11 @@ public final void setAssociationOwner(mxmodelreflection.proxies.AssociationOwner */ public final void setAssociationOwner(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.AssociationOwner associationowner) { - if (associationowner != null) + if (associationowner != null) { getMendixObject().setValue(context, MemberNames.AssociationOwner.toString(), associationowner.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.AssociationOwner.toString(), null); + } } /** @@ -394,6 +404,7 @@ public final void setParentEntity(com.mendix.systemwideinterfaces.core.IContext } /** + * @throws com.mendix.core.CoreException * @return value of MxObjectReference_MxObjectType */ public final java.util.List getMxObjectReference_MxObjectType() throws com.mendix.core.CoreException @@ -404,16 +415,19 @@ public final java.util.List getMxObjectR /** * @param context * @return value of MxObjectReference_MxObjectType + * @throws com.mendix.core.CoreException */ @SuppressWarnings("unchecked") public final java.util.List getMxObjectReference_MxObjectType(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); + java.util.List result = new java.util.ArrayList<>(); Object valueObject = getMendixObject().getValue(context, MemberNames.MxObjectReference_MxObjectType.toString()); - if (valueObject == null) + if (valueObject == null) { return result; - for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) + } + for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) { result.add(mxmodelreflection.proxies.MxObjectType.initialize(context, mendixObject)); + } return result; } @@ -433,13 +447,16 @@ public final void setMxObjectReference_MxObjectType(java.util.List mxobjectreference_mxobjecttype) { - java.util.List identifiers = new java.util.ArrayList(); - for (mxmodelreflection.proxies.MxObjectType proxyObject : mxobjectreference_mxobjecttype) - identifiers.add(proxyObject.getMendixObject().getId()); + var identifiers = mxobjectreference_mxobjecttype + .stream() + .map(proxyObject -> proxyObject.getMendixObject().getId()) + .collect(java.util.stream.Collectors.toList()); + getMendixObject().setValue(context, MemberNames.MxObjectReference_MxObjectType.toString(), identifiers); } /** + * @throws com.mendix.core.CoreException * @return value of MxObjectReference_MxObjectType_Child */ public final java.util.List getMxObjectReference_MxObjectType_Child() throws com.mendix.core.CoreException @@ -450,16 +467,19 @@ public final java.util.List getMxObjectR /** * @param context * @return value of MxObjectReference_MxObjectType_Child + * @throws com.mendix.core.CoreException */ @SuppressWarnings("unchecked") public final java.util.List getMxObjectReference_MxObjectType_Child(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); + java.util.List result = new java.util.ArrayList<>(); Object valueObject = getMendixObject().getValue(context, MemberNames.MxObjectReference_MxObjectType_Child.toString()); - if (valueObject == null) + if (valueObject == null) { return result; - for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) + } + for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) { result.add(mxmodelreflection.proxies.MxObjectType.initialize(context, mendixObject)); + } return result; } @@ -479,13 +499,16 @@ public final void setMxObjectReference_MxObjectType_Child(java.util.List mxobjectreference_mxobjecttype_child) { - java.util.List identifiers = new java.util.ArrayList(); - for (mxmodelreflection.proxies.MxObjectType proxyObject : mxobjectreference_mxobjecttype_child) - identifiers.add(proxyObject.getMendixObject().getId()); + var identifiers = mxobjectreference_mxobjecttype_child + .stream() + .map(proxyObject -> proxyObject.getMendixObject().getId()) + .collect(java.util.stream.Collectors.toList()); + getMendixObject().setValue(context, MemberNames.MxObjectReference_MxObjectType_Child.toString(), identifiers); } /** + * @throws com.mendix.core.CoreException * @return value of MxObjectReference_MxObjectType_Parent */ public final java.util.List getMxObjectReference_MxObjectType_Parent() throws com.mendix.core.CoreException @@ -496,16 +519,19 @@ public final java.util.List getMxObjectR /** * @param context * @return value of MxObjectReference_MxObjectType_Parent + * @throws com.mendix.core.CoreException */ @SuppressWarnings("unchecked") public final java.util.List getMxObjectReference_MxObjectType_Parent(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); + java.util.List result = new java.util.ArrayList<>(); Object valueObject = getMendixObject().getValue(context, MemberNames.MxObjectReference_MxObjectType_Parent.toString()); - if (valueObject == null) + if (valueObject == null) { return result; - for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) + } + for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) { result.add(mxmodelreflection.proxies.MxObjectType.initialize(context, mendixObject)); + } return result; } @@ -525,13 +551,16 @@ public final void setMxObjectReference_MxObjectType_Parent(java.util.List mxobjectreference_mxobjecttype_parent) { - java.util.List identifiers = new java.util.ArrayList(); - for (mxmodelreflection.proxies.MxObjectType proxyObject : mxobjectreference_mxobjecttype_parent) - identifiers.add(proxyObject.getMendixObject().getId()); + var identifiers = mxobjectreference_mxobjecttype_parent + .stream() + .map(proxyObject -> proxyObject.getMendixObject().getId()) + .collect(java.util.stream.Collectors.toList()); + getMendixObject().setValue(context, MemberNames.MxObjectReference_MxObjectType_Parent.toString(), identifiers); } /** + * @throws com.mendix.core.CoreException * @return value of MxObjectReference_Module */ public final mxmodelreflection.proxies.Module getMxObjectReference_Module() throws com.mendix.core.CoreException @@ -542,13 +571,15 @@ public final mxmodelreflection.proxies.Module getMxObjectReference_Module() thro /** * @param context * @return value of MxObjectReference_Module + * @throws com.mendix.core.CoreException */ public final mxmodelreflection.proxies.Module getMxObjectReference_Module(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { mxmodelreflection.proxies.Module result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.MxObjectReference_Module.toString()); - if (identifier != null) + if (identifier != null) { result = mxmodelreflection.proxies.Module.load(context, identifier); + } return result; } @@ -568,10 +599,11 @@ public final void setMxObjectReference_Module(mxmodelreflection.proxies.Module m */ public final void setMxObjectReference_Module(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.Module mxobjectreference_module) { - if (mxobjectreference_module == null) + if (mxobjectreference_module == null) { getMendixObject().setValue(context, MemberNames.MxObjectReference_Module.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.MxObjectReference_Module.toString(), mxobjectreference_module.getMendixObject().getId()); + } } /** @@ -593,9 +625,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final mxmodelreflection.proxies.MxObjectReference that = (mxmodelreflection.proxies.MxObjectReference) obj; @@ -615,7 +647,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "MxModelReflection.MxObjectReference"; + return entityName; } /** diff --git a/javasource/mxmodelreflection/proxies/MxObjectType.java b/javasource/mxmodelreflection/proxies/MxObjectType.java index b365c4d..32ea71e 100644 --- a/javasource/mxmodelreflection/proxies/MxObjectType.java +++ b/javasource/mxmodelreflection/proxies/MxObjectType.java @@ -28,7 +28,7 @@ public enum MemberNames MxObjectType_SubClassOf_MxObjectType("MxModelReflection.MxObjectType_SubClassOf_MxObjectType"), MxObjectType_Module("MxModelReflection.MxObjectType_Module"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -44,15 +44,17 @@ public java.lang.String toString() public MxObjectType(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "MxModelReflection.MxObjectType")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected MxObjectType(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mxObjectTypeMendixObject) { - if (mxObjectTypeMendixObject == null) + if (mxObjectTypeMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("MxModelReflection.MxObjectType", mxObjectTypeMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a MxModelReflection.MxObjectType"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, mxObjectTypeMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.mxObjectTypeMendixObject = mxObjectTypeMendixObject; this.context = context; @@ -70,6 +72,9 @@ public static mxmodelreflection.proxies.MxObjectType initialize(com.mendix.syste /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static mxmodelreflection.proxies.MxObjectType initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -84,14 +89,16 @@ public static mxmodelreflection.proxies.MxObjectType load(com.mendix.systemwidei public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//MxModelReflection.MxObjectType" + xpathConstraint)) - result.add(mxmodelreflection.proxies.MxObjectType.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> mxmodelreflection.proxies.MxObjectType.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -100,6 +107,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -281,9 +289,9 @@ public final mxmodelreflection.proxies.PersistenceType getPersistenceType() public final mxmodelreflection.proxies.PersistenceType getPersistenceType(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.PersistenceType.toString()); - if (obj == null) + if (obj == null) { return null; - + } return mxmodelreflection.proxies.PersistenceType.valueOf((java.lang.String) obj); } @@ -303,13 +311,15 @@ public final void setPersistenceType(mxmodelreflection.proxies.PersistenceType p */ public final void setPersistenceType(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.PersistenceType persistencetype) { - if (persistencetype != null) + if (persistencetype != null) { getMendixObject().setValue(context, MemberNames.PersistenceType.toString(), persistencetype.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.PersistenceType.toString(), null); + } } /** + * @throws com.mendix.core.CoreException * @return value of MxObjectType_SubClassOf_MxObjectType */ public final java.util.List getMxObjectType_SubClassOf_MxObjectType() throws com.mendix.core.CoreException @@ -320,16 +330,19 @@ public final java.util.List getMxObjectT /** * @param context * @return value of MxObjectType_SubClassOf_MxObjectType + * @throws com.mendix.core.CoreException */ @SuppressWarnings("unchecked") public final java.util.List getMxObjectType_SubClassOf_MxObjectType(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); + java.util.List result = new java.util.ArrayList<>(); Object valueObject = getMendixObject().getValue(context, MemberNames.MxObjectType_SubClassOf_MxObjectType.toString()); - if (valueObject == null) + if (valueObject == null) { return result; - for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) + } + for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) { result.add(mxmodelreflection.proxies.MxObjectType.initialize(context, mendixObject)); + } return result; } @@ -349,13 +362,16 @@ public final void setMxObjectType_SubClassOf_MxObjectType(java.util.List mxobjecttype_subclassof_mxobjecttype) { - java.util.List identifiers = new java.util.ArrayList(); - for (mxmodelreflection.proxies.MxObjectType proxyObject : mxobjecttype_subclassof_mxobjecttype) - identifiers.add(proxyObject.getMendixObject().getId()); + var identifiers = mxobjecttype_subclassof_mxobjecttype + .stream() + .map(proxyObject -> proxyObject.getMendixObject().getId()) + .collect(java.util.stream.Collectors.toList()); + getMendixObject().setValue(context, MemberNames.MxObjectType_SubClassOf_MxObjectType.toString(), identifiers); } /** + * @throws com.mendix.core.CoreException * @return value of MxObjectType_Module */ public final mxmodelreflection.proxies.Module getMxObjectType_Module() throws com.mendix.core.CoreException @@ -366,13 +382,15 @@ public final mxmodelreflection.proxies.Module getMxObjectType_Module() throws co /** * @param context * @return value of MxObjectType_Module + * @throws com.mendix.core.CoreException */ public final mxmodelreflection.proxies.Module getMxObjectType_Module(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { mxmodelreflection.proxies.Module result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.MxObjectType_Module.toString()); - if (identifier != null) + if (identifier != null) { result = mxmodelreflection.proxies.Module.load(context, identifier); + } return result; } @@ -392,10 +410,11 @@ public final void setMxObjectType_Module(mxmodelreflection.proxies.Module mxobje */ public final void setMxObjectType_Module(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.Module mxobjecttype_module) { - if (mxobjecttype_module == null) + if (mxobjecttype_module == null) { getMendixObject().setValue(context, MemberNames.MxObjectType_Module.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.MxObjectType_Module.toString(), mxobjecttype_module.getMendixObject().getId()); + } } /** @@ -417,9 +436,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final mxmodelreflection.proxies.MxObjectType that = (mxmodelreflection.proxies.MxObjectType) obj; @@ -439,7 +458,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "MxModelReflection.MxObjectType"; + return entityName; } /** diff --git a/javasource/mxmodelreflection/proxies/Parameter.java b/javasource/mxmodelreflection/proxies/Parameter.java index 3766797..4c47fc7 100644 --- a/javasource/mxmodelreflection/proxies/Parameter.java +++ b/javasource/mxmodelreflection/proxies/Parameter.java @@ -24,7 +24,7 @@ public enum MemberNames Parameter_ValueType("MxModelReflection.Parameter_ValueType"), Parameter_MxObjectType("MxModelReflection.Parameter_MxObjectType"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -40,15 +40,17 @@ public java.lang.String toString() public Parameter(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "MxModelReflection.Parameter")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected Parameter(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject parameterMendixObject) { - if (parameterMendixObject == null) + if (parameterMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("MxModelReflection.Parameter", parameterMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a MxModelReflection.Parameter"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, parameterMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.parameterMendixObject = parameterMendixObject; this.context = context; @@ -66,6 +68,9 @@ public static mxmodelreflection.proxies.Parameter initialize(com.mendix.systemwi /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static mxmodelreflection.proxies.Parameter initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -80,14 +85,16 @@ public static mxmodelreflection.proxies.Parameter load(com.mendix.systemwideinte public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//MxModelReflection.Parameter" + xpathConstraint)) - result.add(mxmodelreflection.proxies.Parameter.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> mxmodelreflection.proxies.Parameter.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -96,6 +103,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -154,6 +162,7 @@ public final void setName(com.mendix.systemwideinterfaces.core.IContext context, } /** + * @throws com.mendix.core.CoreException * @return value of Parameter_ValueType */ public final mxmodelreflection.proxies.ValueType getParameter_ValueType() throws com.mendix.core.CoreException @@ -164,13 +173,15 @@ public final mxmodelreflection.proxies.ValueType getParameter_ValueType() throws /** * @param context * @return value of Parameter_ValueType + * @throws com.mendix.core.CoreException */ public final mxmodelreflection.proxies.ValueType getParameter_ValueType(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { mxmodelreflection.proxies.ValueType result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.Parameter_ValueType.toString()); - if (identifier != null) + if (identifier != null) { result = mxmodelreflection.proxies.ValueType.load(context, identifier); + } return result; } @@ -190,13 +201,15 @@ public final void setParameter_ValueType(mxmodelreflection.proxies.ValueType par */ public final void setParameter_ValueType(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.ValueType parameter_valuetype) { - if (parameter_valuetype == null) + if (parameter_valuetype == null) { getMendixObject().setValue(context, MemberNames.Parameter_ValueType.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.Parameter_ValueType.toString(), parameter_valuetype.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of Parameter_MxObjectType */ public final mxmodelreflection.proxies.MxObjectType getParameter_MxObjectType() throws com.mendix.core.CoreException @@ -207,13 +220,15 @@ public final mxmodelreflection.proxies.MxObjectType getParameter_MxObjectType() /** * @param context * @return value of Parameter_MxObjectType + * @throws com.mendix.core.CoreException */ public final mxmodelreflection.proxies.MxObjectType getParameter_MxObjectType(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { mxmodelreflection.proxies.MxObjectType result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.Parameter_MxObjectType.toString()); - if (identifier != null) + if (identifier != null) { result = mxmodelreflection.proxies.MxObjectType.load(context, identifier); + } return result; } @@ -233,10 +248,11 @@ public final void setParameter_MxObjectType(mxmodelreflection.proxies.MxObjectTy */ public final void setParameter_MxObjectType(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.MxObjectType parameter_mxobjecttype) { - if (parameter_mxobjecttype == null) + if (parameter_mxobjecttype == null) { getMendixObject().setValue(context, MemberNames.Parameter_MxObjectType.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.Parameter_MxObjectType.toString(), parameter_mxobjecttype.getMendixObject().getId()); + } } /** @@ -258,9 +274,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final mxmodelreflection.proxies.Parameter that = (mxmodelreflection.proxies.Parameter) obj; @@ -280,7 +296,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "MxModelReflection.Parameter"; + return entityName; } /** diff --git a/javasource/mxmodelreflection/proxies/PersistenceType.java b/javasource/mxmodelreflection/proxies/PersistenceType.java index c97a52c..21adc3e 100644 --- a/javasource/mxmodelreflection/proxies/PersistenceType.java +++ b/javasource/mxmodelreflection/proxies/PersistenceType.java @@ -9,20 +9,19 @@ public enum PersistenceType Persistable(new java.lang.String[][] { new java.lang.String[] { "en_US", "Persistable" }, new java.lang.String[] { "nl_NL", "Persistent" }, new java.lang.String[] { "en_GB", "Persistable" }, new java.lang.String[] { "en_ZA", "Persistable" } }), Non_persistent(new java.lang.String[][] { new java.lang.String[] { "en_US", "Non-persistent" }, new java.lang.String[] { "nl_NL", "Niet peristent" }, new java.lang.String[] { "en_GB", "Non-persistent" }, new java.lang.String[] { "en_ZA", "Non-persistent" } }); - private java.util.Map captions; + private final java.util.Map captions; private PersistenceType(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/mxmodelreflection/proxies/PrimitiveTypes.java b/javasource/mxmodelreflection/proxies/PrimitiveTypes.java index 1132fbe..f60e80b 100644 --- a/javasource/mxmodelreflection/proxies/PrimitiveTypes.java +++ b/javasource/mxmodelreflection/proxies/PrimitiveTypes.java @@ -20,20 +20,19 @@ public enum PrimitiveTypes ObjectList(new java.lang.String[][] { new java.lang.String[] { "en_US", "Object List" }, new java.lang.String[] { "en_GB", "Object List" }, new java.lang.String[] { "en_ZA", "Object List" }, new java.lang.String[] { "nl_NL", "Object Lijst" } }), Decimal(new java.lang.String[][] { new java.lang.String[] { "en_US", "Decimal" }, new java.lang.String[] { "nl_NL", "Decimal" }, new java.lang.String[] { "en_GB", "Decimal" }, new java.lang.String[] { "en_ZA", "Decimal" } }); - private java.util.Map captions; + private final java.util.Map captions; private PrimitiveTypes(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/mxmodelreflection/proxies/ReferenceType.java b/javasource/mxmodelreflection/proxies/ReferenceType.java index 7112c45..72cde3a 100644 --- a/javasource/mxmodelreflection/proxies/ReferenceType.java +++ b/javasource/mxmodelreflection/proxies/ReferenceType.java @@ -9,20 +9,19 @@ public enum ReferenceType Reference(new java.lang.String[][] { new java.lang.String[] { "en_US", "Reference" }, new java.lang.String[] { "nl_NL", "Referentie" }, new java.lang.String[] { "en_GB", "Reference" }, new java.lang.String[] { "en_ZA", "Reference" } }), ReferenceSet(new java.lang.String[][] { new java.lang.String[] { "en_US", "Reference set" }, new java.lang.String[] { "nl_NL", "Reference set" }, new java.lang.String[] { "en_GB", "Reference set" }, new java.lang.String[] { "en_ZA", "Reference set" } }); - private java.util.Map captions; + private final java.util.Map captions; private ReferenceType(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/mxmodelreflection/proxies/Status.java b/javasource/mxmodelreflection/proxies/Status.java index d0c5775..2e985f9 100644 --- a/javasource/mxmodelreflection/proxies/Status.java +++ b/javasource/mxmodelreflection/proxies/Status.java @@ -9,20 +9,19 @@ public enum Status Valid(new java.lang.String[][] { new java.lang.String[] { "en_US", "Valid" }, new java.lang.String[] { "nl_NL", "Geldig" }, new java.lang.String[] { "en_GB", "Valid" }, new java.lang.String[] { "en_ZA", "Valid" } }), Invalid(new java.lang.String[][] { new java.lang.String[] { "en_US", "Invalid" }, new java.lang.String[] { "nl_NL", "Ongeldig" }, new java.lang.String[] { "en_GB", "Invalid" }, new java.lang.String[] { "en_ZA", "Invalid" } }); - private java.util.Map captions; + private final java.util.Map captions; private Status(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/mxmodelreflection/proxies/TestPattern.java b/javasource/mxmodelreflection/proxies/TestPattern.java index b0f1b2e..9af3d6b 100644 --- a/javasource/mxmodelreflection/proxies/TestPattern.java +++ b/javasource/mxmodelreflection/proxies/TestPattern.java @@ -30,7 +30,7 @@ public enum MemberNames StringAttribute("StringAttribute"), Result("Result"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -46,15 +46,17 @@ public java.lang.String toString() public TestPattern(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "MxModelReflection.TestPattern")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected TestPattern(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject testPatternMendixObject) { - if (testPatternMendixObject == null) + if (testPatternMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("MxModelReflection.TestPattern", testPatternMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a MxModelReflection.TestPattern"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, testPatternMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.testPatternMendixObject = testPatternMendixObject; this.context = context; @@ -72,6 +74,9 @@ public static mxmodelreflection.proxies.TestPattern initialize(com.mendix.system /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static mxmodelreflection.proxies.TestPattern initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -86,6 +91,7 @@ public static mxmodelreflection.proxies.TestPattern load(com.mendix.systemwidein /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -94,6 +100,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -167,9 +174,9 @@ public final mxmodelreflection.proxies.AttributeTypes getAttributeTypeEnum() public final mxmodelreflection.proxies.AttributeTypes getAttributeTypeEnum(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.AttributeTypeEnum.toString()); - if (obj == null) + if (obj == null) { return null; - + } return mxmodelreflection.proxies.AttributeTypes.valueOf((java.lang.String) obj); } @@ -189,10 +196,11 @@ public final void setAttributeTypeEnum(mxmodelreflection.proxies.AttributeTypes */ public final void setAttributeTypeEnum(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.AttributeTypes attributetypeenum) { - if (attributetypeenum != null) + if (attributetypeenum != null) { getMendixObject().setValue(context, MemberNames.AttributeTypeEnum.toString(), attributetypeenum.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.AttributeTypeEnum.toString(), null); + } } /** @@ -466,9 +474,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final mxmodelreflection.proxies.TestPattern that = (mxmodelreflection.proxies.TestPattern) obj; @@ -488,7 +496,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "MxModelReflection.TestPattern"; + return entityName; } /** diff --git a/javasource/mxmodelreflection/proxies/Token.java b/javasource/mxmodelreflection/proxies/Token.java index 557d180..be112b0 100644 --- a/javasource/mxmodelreflection/proxies/Token.java +++ b/javasource/mxmodelreflection/proxies/Token.java @@ -40,7 +40,7 @@ public enum MemberNames Token_MxObjectType_Referenced("MxModelReflection.Token_MxObjectType_Referenced"), Token_MxObjectReference("MxModelReflection.Token_MxObjectReference"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -56,15 +56,17 @@ public java.lang.String toString() public Token(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "MxModelReflection.Token")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected Token(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject tokenMendixObject) { - if (tokenMendixObject == null) + if (tokenMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("MxModelReflection.Token", tokenMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a MxModelReflection.Token"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, tokenMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.tokenMendixObject = tokenMendixObject; this.context = context; @@ -82,6 +84,9 @@ public static mxmodelreflection.proxies.Token initialize(com.mendix.systemwidein /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static mxmodelreflection.proxies.Token initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -96,14 +101,16 @@ public static mxmodelreflection.proxies.Token load(com.mendix.systemwideinterfac public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//MxModelReflection.Token" + xpathConstraint)) - result.add(mxmodelreflection.proxies.Token.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> mxmodelreflection.proxies.Token.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -112,6 +119,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -365,9 +373,9 @@ public final mxmodelreflection.proxies.TokenType getTokenType() public final mxmodelreflection.proxies.TokenType getTokenType(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.TokenType.toString()); - if (obj == null) + if (obj == null) { return null; - + } return mxmodelreflection.proxies.TokenType.valueOf((java.lang.String) obj); } @@ -387,10 +395,11 @@ public final void setTokenType(mxmodelreflection.proxies.TokenType tokentype) */ public final void setTokenType(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.TokenType tokentype) { - if (tokentype != null) + if (tokentype != null) { getMendixObject().setValue(context, MemberNames.TokenType.toString(), tokentype.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.TokenType.toString(), null); + } } /** @@ -409,9 +418,9 @@ public final mxmodelreflection.proxies.Status getStatus() public final mxmodelreflection.proxies.Status getStatus(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.Status.toString()); - if (obj == null) + if (obj == null) { return null; - + } return mxmodelreflection.proxies.Status.valueOf((java.lang.String) obj); } @@ -431,10 +440,11 @@ public final void setStatus(mxmodelreflection.proxies.Status status) */ public final void setStatus(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.Status status) { - if (status != null) + if (status != null) { getMendixObject().setValue(context, MemberNames.Status.toString(), status.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.Status.toString(), null); + } } /** @@ -690,6 +700,7 @@ public final void setDisplayPattern(com.mendix.systemwideinterfaces.core.IContex } /** + * @throws com.mendix.core.CoreException * @return value of Token_MxObjectMember */ public final mxmodelreflection.proxies.MxObjectMember getToken_MxObjectMember() throws com.mendix.core.CoreException @@ -700,13 +711,15 @@ public final mxmodelreflection.proxies.MxObjectMember getToken_MxObjectMember() /** * @param context * @return value of Token_MxObjectMember + * @throws com.mendix.core.CoreException */ public final mxmodelreflection.proxies.MxObjectMember getToken_MxObjectMember(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { mxmodelreflection.proxies.MxObjectMember result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.Token_MxObjectMember.toString()); - if (identifier != null) + if (identifier != null) { result = mxmodelreflection.proxies.MxObjectMember.load(context, identifier); + } return result; } @@ -726,13 +739,15 @@ public final void setToken_MxObjectMember(mxmodelreflection.proxies.MxObjectMemb */ public final void setToken_MxObjectMember(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.MxObjectMember token_mxobjectmember) { - if (token_mxobjectmember == null) + if (token_mxobjectmember == null) { getMendixObject().setValue(context, MemberNames.Token_MxObjectMember.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.Token_MxObjectMember.toString(), token_mxobjectmember.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of Token_MxObjectType_Start */ public final mxmodelreflection.proxies.MxObjectType getToken_MxObjectType_Start() throws com.mendix.core.CoreException @@ -743,13 +758,15 @@ public final mxmodelreflection.proxies.MxObjectType getToken_MxObjectType_Start( /** * @param context * @return value of Token_MxObjectType_Start + * @throws com.mendix.core.CoreException */ public final mxmodelreflection.proxies.MxObjectType getToken_MxObjectType_Start(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { mxmodelreflection.proxies.MxObjectType result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.Token_MxObjectType_Start.toString()); - if (identifier != null) + if (identifier != null) { result = mxmodelreflection.proxies.MxObjectType.load(context, identifier); + } return result; } @@ -769,13 +786,15 @@ public final void setToken_MxObjectType_Start(mxmodelreflection.proxies.MxObject */ public final void setToken_MxObjectType_Start(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.MxObjectType token_mxobjecttype_start) { - if (token_mxobjecttype_start == null) + if (token_mxobjecttype_start == null) { getMendixObject().setValue(context, MemberNames.Token_MxObjectType_Start.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.Token_MxObjectType_Start.toString(), token_mxobjecttype_start.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of Token_MxObjectType_Referenced */ public final mxmodelreflection.proxies.MxObjectType getToken_MxObjectType_Referenced() throws com.mendix.core.CoreException @@ -786,13 +805,15 @@ public final mxmodelreflection.proxies.MxObjectType getToken_MxObjectType_Refere /** * @param context * @return value of Token_MxObjectType_Referenced + * @throws com.mendix.core.CoreException */ public final mxmodelreflection.proxies.MxObjectType getToken_MxObjectType_Referenced(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { mxmodelreflection.proxies.MxObjectType result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.Token_MxObjectType_Referenced.toString()); - if (identifier != null) + if (identifier != null) { result = mxmodelreflection.proxies.MxObjectType.load(context, identifier); + } return result; } @@ -812,13 +833,15 @@ public final void setToken_MxObjectType_Referenced(mxmodelreflection.proxies.MxO */ public final void setToken_MxObjectType_Referenced(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.MxObjectType token_mxobjecttype_referenced) { - if (token_mxobjecttype_referenced == null) + if (token_mxobjecttype_referenced == null) { getMendixObject().setValue(context, MemberNames.Token_MxObjectType_Referenced.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.Token_MxObjectType_Referenced.toString(), token_mxobjecttype_referenced.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of Token_MxObjectReference */ public final mxmodelreflection.proxies.MxObjectReference getToken_MxObjectReference() throws com.mendix.core.CoreException @@ -829,13 +852,15 @@ public final mxmodelreflection.proxies.MxObjectReference getToken_MxObjectRefere /** * @param context * @return value of Token_MxObjectReference + * @throws com.mendix.core.CoreException */ public final mxmodelreflection.proxies.MxObjectReference getToken_MxObjectReference(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { mxmodelreflection.proxies.MxObjectReference result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.Token_MxObjectReference.toString()); - if (identifier != null) + if (identifier != null) { result = mxmodelreflection.proxies.MxObjectReference.load(context, identifier); + } return result; } @@ -855,10 +880,11 @@ public final void setToken_MxObjectReference(mxmodelreflection.proxies.MxObjectR */ public final void setToken_MxObjectReference(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.MxObjectReference token_mxobjectreference) { - if (token_mxobjectreference == null) + if (token_mxobjectreference == null) { getMendixObject().setValue(context, MemberNames.Token_MxObjectReference.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.Token_MxObjectReference.toString(), token_mxobjectreference.getMendixObject().getId()); + } } /** @@ -880,9 +906,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final mxmodelreflection.proxies.Token that = (mxmodelreflection.proxies.Token) obj; @@ -902,7 +928,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "MxModelReflection.Token"; + return entityName; } /** diff --git a/javasource/mxmodelreflection/proxies/TokenType.java b/javasource/mxmodelreflection/proxies/TokenType.java index 26467ab..470ea2a 100644 --- a/javasource/mxmodelreflection/proxies/TokenType.java +++ b/javasource/mxmodelreflection/proxies/TokenType.java @@ -9,20 +9,19 @@ public enum TokenType Attribute(new java.lang.String[][] { new java.lang.String[] { "en_US", "Attribute" }, new java.lang.String[] { "nl_NL", "Attribuut" }, new java.lang.String[] { "en_GB", "Attribute" }, new java.lang.String[] { "en_ZA", "Attribute" } }), Reference(new java.lang.String[][] { new java.lang.String[] { "en_US", "Reference" }, new java.lang.String[] { "nl_NL", "Referentie" }, new java.lang.String[] { "en_GB", "Reference" }, new java.lang.String[] { "en_ZA", "Reference" } }); - private java.util.Map captions; + private final java.util.Map captions; private TokenType(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/mxmodelreflection/proxies/ValueType.java b/javasource/mxmodelreflection/proxies/ValueType.java index b2410e4..473f83e 100644 --- a/javasource/mxmodelreflection/proxies/ValueType.java +++ b/javasource/mxmodelreflection/proxies/ValueType.java @@ -24,7 +24,7 @@ public enum MemberNames TypeEnum("TypeEnum"), ValueType_MxObjectType("MxModelReflection.ValueType_MxObjectType"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -40,15 +40,17 @@ public java.lang.String toString() public ValueType(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "MxModelReflection.ValueType")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected ValueType(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject valueTypeMendixObject) { - if (valueTypeMendixObject == null) + if (valueTypeMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("MxModelReflection.ValueType", valueTypeMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a MxModelReflection.ValueType"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, valueTypeMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.valueTypeMendixObject = valueTypeMendixObject; this.context = context; @@ -66,6 +68,9 @@ public static mxmodelreflection.proxies.ValueType initialize(com.mendix.systemwi /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static mxmodelreflection.proxies.ValueType initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -80,14 +85,16 @@ public static mxmodelreflection.proxies.ValueType load(com.mendix.systemwideinte public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//MxModelReflection.ValueType" + xpathConstraint)) - result.add(mxmodelreflection.proxies.ValueType.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> mxmodelreflection.proxies.ValueType.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -96,6 +103,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -169,9 +177,9 @@ public final mxmodelreflection.proxies.PrimitiveTypes getTypeEnum() public final mxmodelreflection.proxies.PrimitiveTypes getTypeEnum(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.TypeEnum.toString()); - if (obj == null) + if (obj == null) { return null; - + } return mxmodelreflection.proxies.PrimitiveTypes.valueOf((java.lang.String) obj); } @@ -191,13 +199,15 @@ public final void setTypeEnum(mxmodelreflection.proxies.PrimitiveTypes typeenum) */ public final void setTypeEnum(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.PrimitiveTypes typeenum) { - if (typeenum != null) + if (typeenum != null) { getMendixObject().setValue(context, MemberNames.TypeEnum.toString(), typeenum.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.TypeEnum.toString(), null); + } } /** + * @throws com.mendix.core.CoreException * @return value of ValueType_MxObjectType */ public final mxmodelreflection.proxies.MxObjectType getValueType_MxObjectType() throws com.mendix.core.CoreException @@ -208,13 +218,15 @@ public final mxmodelreflection.proxies.MxObjectType getValueType_MxObjectType() /** * @param context * @return value of ValueType_MxObjectType + * @throws com.mendix.core.CoreException */ public final mxmodelreflection.proxies.MxObjectType getValueType_MxObjectType(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { mxmodelreflection.proxies.MxObjectType result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.ValueType_MxObjectType.toString()); - if (identifier != null) + if (identifier != null) { result = mxmodelreflection.proxies.MxObjectType.load(context, identifier); + } return result; } @@ -234,10 +246,11 @@ public final void setValueType_MxObjectType(mxmodelreflection.proxies.MxObjectTy */ public final void setValueType_MxObjectType(com.mendix.systemwideinterfaces.core.IContext context, mxmodelreflection.proxies.MxObjectType valuetype_mxobjecttype) { - if (valuetype_mxobjecttype == null) + if (valuetype_mxobjecttype == null) { getMendixObject().setValue(context, MemberNames.ValueType_MxObjectType.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.ValueType_MxObjectType.toString(), valuetype_mxobjecttype.getMendixObject().getId()); + } } /** @@ -259,9 +272,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final mxmodelreflection.proxies.ValueType that = (mxmodelreflection.proxies.ValueType) obj; @@ -281,7 +294,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "MxModelReflection.ValueType"; + return entityName; } /** diff --git a/javasource/mxmodelreflection/proxies/microflows/Microflows.java b/javasource/mxmodelreflection/proxies/microflows/Microflows.java index b4c377e..fa398d7 100644 --- a/javasource/mxmodelreflection/proxies/microflows/Microflows.java +++ b/javasource/mxmodelreflection/proxies/microflows/Microflows.java @@ -7,14 +7,26 @@ import java.util.HashMap; import java.util.Map; import com.mendix.core.Core; -import com.mendix.core.CoreException; -import com.mendix.systemwideinterfaces.MendixRuntimeException; import com.mendix.systemwideinterfaces.core.IContext; import com.mendix.systemwideinterfaces.core.IMendixObject; public class Microflows { + /** + * @deprecated + * The default constructor of the Microflows class should not be used. + * Use the static microflow invocation methods instead. + */ + @java.lang.Deprecated(since = "9.12", forRemoval = true) + public Microflows() {} + // These are the microflows for the MxModelReflection module + public static void aCT_ShowMemberPage(IContext context, mxmodelreflection.proxies.MxObjectMember _mxObjectMember) + { + Map params = new HashMap<>(); + params.put("MxObjectMember", _mxObjectMember == null ? null : _mxObjectMember.getMendixObject()); + Core.microflowCall("MxModelReflection.ACT_ShowMemberPage").withParams(params).execute(context); + } public static boolean aSu_CheckMetamodel(IContext context) { Map params = new HashMap<>(); @@ -50,30 +62,6 @@ public static boolean bDe_MxObjectType(IContext context, mxmodelreflection.proxi params.put("MxObjectType", _mxObjectType == null ? null : _mxObjectType.getMendixObject()); return (java.lang.Boolean) Core.microflowCall("MxModelReflection.BDe_MxObjectType").withParams(params).execute(context); } - public static void ch_FindMember(IContext context, mxmodelreflection.proxies.Token _token) - { - Map params = new HashMap<>(); - params.put("Token", _token == null ? null : _token.getMendixObject()); - Core.microflowCall("MxModelReflection.Ch_FindMember").withParams(params).execute(context); - } - public static void ch_FindMemberReference(IContext context, mxmodelreflection.proxies.Token _token) - { - Map params = new HashMap<>(); - params.put("Token", _token == null ? null : _token.getMendixObject()); - Core.microflowCall("MxModelReflection.Ch_FindMemberReference").withParams(params).execute(context); - } - public static void ch_FindObjectTypeReference(IContext context, mxmodelreflection.proxies.Token _token) - { - Map params = new HashMap<>(); - params.put("Token", _token == null ? null : _token.getMendixObject()); - Core.microflowCall("MxModelReflection.Ch_FindObjectTypeReference").withParams(params).execute(context); - } - public static void ch_FindReference(IContext context, mxmodelreflection.proxies.Token _token) - { - Map params = new HashMap<>(); - params.put("Token", _token == null ? null : _token.getMendixObject()); - Core.microflowCall("MxModelReflection.Ch_FindReference").withParams(params).execute(context); - } public static void ch_Member(IContext context, mxmodelreflection.proxies.Token _token) { Map params = new HashMap<>(); @@ -98,18 +86,29 @@ public static void ch_Reference(IContext context, mxmodelreflection.proxies.Toke params.put("Token", _token == null ? null : _token.getMendixObject()); Core.microflowCall("MxModelReflection.Ch_Reference").withParams(params).execute(context); } + public static void deleteDbSizeEstimate(IContext context, mxmodelreflection.proxies.DbSizeEstimate _dbSizeEstimate) + { + Map params = new HashMap<>(); + params.put("DbSizeEstimate", _dbSizeEstimate == null ? null : _dbSizeEstimate.getMendixObject()); + Core.microflowCall("MxModelReflection.DeleteDbSizeEstimate").withParams(params).execute(context); + } + public static void deleteToken(IContext context, mxmodelreflection.proxies.Token _token) + { + Map params = new HashMap<>(); + params.put("Token", _token == null ? null : _token.getMendixObject()); + Core.microflowCall("MxModelReflection.DeleteToken").withParams(params).execute(context); + } public static java.util.List dSL_Modules(IContext context) { Map params = new HashMap<>(); java.util.List objs = Core.microflowCall("MxModelReflection.DSL_Modules").withParams(params).execute(context); - java.util.List result = null; - if (objs != null) - { - result = new java.util.ArrayList<>(); - for (IMendixObject obj : objs) - result.add(mxmodelreflection.proxies.Module.initialize(context, obj)); + if (objs == null) { + return null; + } else { + return objs.stream() + .map(obj -> mxmodelreflection.proxies.Module.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } - return result; } public static mxmodelreflection.proxies.InheritsFromContainer dSO_InheritsFromContainer(IContext context, mxmodelreflection.proxies.MxObjectType _mxObjectType) { @@ -118,6 +117,20 @@ public static mxmodelreflection.proxies.InheritsFromContainer dSO_InheritsFromCo IMendixObject result = (IMendixObject)Core.microflowCall("MxModelReflection.DSO_InheritsFromContainer").withParams(params).execute(context); return result == null ? null : mxmodelreflection.proxies.InheritsFromContainer.initialize(context, result); } + public static mxmodelreflection.proxies.StringValue enumValueCaptions(IContext context, mxmodelreflection.proxies.MxObjectEnumValue _mxObjectEnumValue) + { + Map params = new HashMap<>(); + params.put("MxObjectEnumValue", _mxObjectEnumValue == null ? null : _mxObjectEnumValue.getMendixObject()); + IMendixObject result = (IMendixObject)Core.microflowCall("MxModelReflection.EnumValueCaptions").withParams(params).execute(context); + return result == null ? null : mxmodelreflection.proxies.StringValue.initialize(context, result); + } + public static mxmodelreflection.proxies.StringValue enumValueLanguages(IContext context, mxmodelreflection.proxies.MxObjectEnumValue _mxObjectEnumValue) + { + Map params = new HashMap<>(); + params.put("MxObjectEnumValue", _mxObjectEnumValue == null ? null : _mxObjectEnumValue.getMendixObject()); + IMendixObject result = (IMendixObject)Core.microflowCall("MxModelReflection.EnumValueLanguages").withParams(params).execute(context); + return result == null ? null : mxmodelreflection.proxies.StringValue.initialize(context, result); + } public static mxmodelreflection.proxies.MxObjectMember findMember(IContext context, java.lang.String _memberSearchString, mxmodelreflection.proxies.MxObjectType _mxObjectType) { Map params = new HashMap<>(); @@ -203,4 +216,11 @@ public static void oC_FindObjectType(IContext context, mxmodelreflection.proxies params.put("DbSizeEstimate", _dbSizeEstimate == null ? null : _dbSizeEstimate.getMendixObject()); Core.microflowCall("MxModelReflection.OC_FindObjectType").withParams(params).execute(context); } -} \ No newline at end of file + public static mxmodelreflection.proxies.StringValue referenceObjects(IContext context, mxmodelreflection.proxies.MxObjectReference _mxObjectReference) + { + Map params = new HashMap<>(); + params.put("MxObjectReference", _mxObjectReference == null ? null : _mxObjectReference.getMendixObject()); + IMendixObject result = (IMendixObject)Core.microflowCall("MxModelReflection.ReferenceObjects").withParams(params).execute(context); + return result == null ? null : mxmodelreflection.proxies.StringValue.initialize(context, result); + } +} diff --git a/javasource/system/UserActionsRegistrar.java b/javasource/system/UserActionsRegistrar.java index bba269c..b14318a 100644 --- a/javasource/system/UserActionsRegistrar.java +++ b/javasource/system/UserActionsRegistrar.java @@ -13,6 +13,7 @@ public void registerActions(IActionRegistrator registrator) registrator.registerUserAction(email_connector.actions.ConvertHTMLBodyToPlainText.class); registrator.registerUserAction(email_connector.actions.CopyAttachmentContent.class); registrator.registerUserAction(email_connector.actions.CreateEmailFromTemplate.class); + registrator.registerUserAction(email_connector.actions.DeleteDuplicateMxReflectionObject.class); registrator.registerUserAction(email_connector.actions.EndTransaction.class); registrator.registerUserAction(email_connector.actions.GenerateOAuthNonce.class); registrator.registerUserAction(email_connector.actions.GetAppRootURL.class); @@ -39,6 +40,11 @@ public void registerActions(IActionRegistrator registrator) registrator.registerUserAction(encryption.actions.PGPDecryptDocument.class); registrator.registerUserAction(encryption.actions.PGPEncryptDocument.class); registrator.registerUserAction(encryption.actions.ValidatePrivateKeyRing.class); + registrator.registerUserAction(feedbackmodule.actions.ValidateEmail.class); + registrator.registerUserAction(feedbackmodule.actions.XSS_Sanitizer.class); + registrator.registerUserAction(mxmodelreflection.actions.JA_EnumValueCaptions.class); + registrator.registerUserAction(mxmodelreflection.actions.JA_EnumValueLanguages.class); + registrator.registerUserAction(mxmodelreflection.actions.JA_ReferenceObjects.class); registrator.registerUserAction(mxmodelreflection.actions.ReplaceToken.class); registrator.registerUserAction(mxmodelreflection.actions.SyncObjects.class); registrator.registerUserAction(mxmodelreflection.actions.TestThePattern.class); diff --git a/javasource/system/actions/VerifyPassword.java b/javasource/system/actions/VerifyPassword.java index c0e3d51..971e035 100644 --- a/javasource/system/actions/VerifyPassword.java +++ b/javasource/system/actions/VerifyPassword.java @@ -40,6 +40,7 @@ public java.lang.Boolean executeAction() throws Exception /** * Returns a string representation of this action + * @return a string representation of this action */ @java.lang.Override public java.lang.String toString() diff --git a/javasource/system/proxies/DeviceType.java b/javasource/system/proxies/DeviceType.java index 9fe5636..a06da56 100644 --- a/javasource/system/proxies/DeviceType.java +++ b/javasource/system/proxies/DeviceType.java @@ -10,20 +10,19 @@ public enum DeviceType Tablet(new java.lang.String[][] { new java.lang.String[] { "en_US", "Tablet" }, new java.lang.String[] { "nl_NL", "Tablet" } }), Desktop(new java.lang.String[][] { new java.lang.String[] { "en_US", "Desktop" }, new java.lang.String[] { "nl_NL", "Desktop" } }); - private java.util.Map captions; + private final java.util.Map captions; private DeviceType(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/system/proxies/Error.java b/javasource/system/proxies/Error.java index 655acb5..b5e0b78 100644 --- a/javasource/system/proxies/Error.java +++ b/javasource/system/proxies/Error.java @@ -24,7 +24,7 @@ public enum MemberNames Message("Message"), Stacktrace("Stacktrace"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -40,15 +40,17 @@ public java.lang.String toString() public Error(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.Error")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected Error(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject errorMendixObject) { - if (errorMendixObject == null) + if (errorMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("System.Error", errorMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.Error"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, errorMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.errorMendixObject = errorMendixObject; this.context = context; @@ -66,12 +68,15 @@ public static system.proxies.Error initialize(com.mendix.systemwideinterfaces.co /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.Error initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { - if (com.mendix.core.Core.isSubClassOf("System.SoapFault", mendixObject.getType())) + if (com.mendix.core.Core.isSubClassOf("System.SoapFault", mendixObject.getType())) { return system.proxies.SoapFault.initialize(context, mendixObject); - + } return new system.proxies.Error(context, mendixObject); } @@ -83,6 +88,7 @@ public static system.proxies.Error load(com.mendix.systemwideinterfaces.core.ICo /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -91,6 +97,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -239,9 +246,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.Error that = (system.proxies.Error) obj; @@ -261,7 +268,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.Error"; + return entityName; } /** diff --git a/javasource/system/proxies/EventStatus.java b/javasource/system/proxies/EventStatus.java index 508e043..8edbf8e 100644 --- a/javasource/system/proxies/EventStatus.java +++ b/javasource/system/proxies/EventStatus.java @@ -11,20 +11,19 @@ public enum EventStatus Error(new java.lang.String[][] { new java.lang.String[] { "en_US", "Error" }, new java.lang.String[] { "nl_NL", "Fout" } }), Stopped(new java.lang.String[][] { new java.lang.String[] { "en_US", "Stopped" } }); - private java.util.Map captions; + private final java.util.Map captions; private EventStatus(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/system/proxies/FileDocument.java b/javasource/system/proxies/FileDocument.java index ae477a6..2ceb871 100644 --- a/javasource/system/proxies/FileDocument.java +++ b/javasource/system/proxies/FileDocument.java @@ -4,6 +4,10 @@ package system.proxies; +/** + * A built-in entity type that represents a file. Its attributes contain the metadata of a file. + * The underlying file may be stored in various ways, for example, on disk or in the cloud. + */ public class FileDocument { private final com.mendix.systemwideinterfaces.core.IMendixObject fileDocumentMendixObject; @@ -27,7 +31,7 @@ public enum MemberNames HasContents("HasContents"), Size("Size"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -43,15 +47,17 @@ public java.lang.String toString() public FileDocument(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.FileDocument")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected FileDocument(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject fileDocumentMendixObject) { - if (fileDocumentMendixObject == null) + if (fileDocumentMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("System.FileDocument", fileDocumentMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.FileDocument"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, fileDocumentMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.fileDocumentMendixObject = fileDocumentMendixObject; this.context = context; @@ -69,27 +75,33 @@ public static system.proxies.FileDocument initialize(com.mendix.systemwideinterf /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.FileDocument initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { - if (com.mendix.core.Core.isSubClassOf("Email_Connector.Attachment", mendixObject.getType())) - return email_connector.proxies.Attachment.initialize(context, mendixObject); - - if (com.mendix.core.Core.isSubClassOf("EmailTemplate.Attachment", mendixObject.getType())) + if (com.mendix.core.Core.isSubClassOf("EmailTemplate.Attachment", mendixObject.getType())) { return emailtemplate.proxies.Attachment.initialize(context, mendixObject); - - if (com.mendix.core.Core.isSubClassOf("System.Image", mendixObject.getType())) + } + if (com.mendix.core.Core.isSubClassOf("Email_Connector.Attachment", mendixObject.getType())) { + return email_connector.proxies.Attachment.initialize(context, mendixObject); + } + if (com.mendix.core.Core.isSubClassOf("Email_Connector.EmailTemplateExportFile", mendixObject.getType())) { + return email_connector.proxies.EmailTemplateExportFile.initialize(context, mendixObject); + } + if (com.mendix.core.Core.isSubClassOf("System.Image", mendixObject.getType())) { return system.proxies.Image.initialize(context, mendixObject); - - if (com.mendix.core.Core.isSubClassOf("Encryption.PGPCertificate", mendixObject.getType())) + } + if (com.mendix.core.Core.isSubClassOf("Encryption.PGPCertificate", mendixObject.getType())) { return encryption.proxies.PGPCertificate.initialize(context, mendixObject); - - if (com.mendix.core.Core.isSubClassOf("Email_Connector.Pk12Certificate", mendixObject.getType())) + } + if (com.mendix.core.Core.isSubClassOf("Email_Connector.Pk12Certificate", mendixObject.getType())) { return email_connector.proxies.Pk12Certificate.initialize(context, mendixObject); - - if (com.mendix.core.Core.isSubClassOf("System.SynchronizationErrorFile", mendixObject.getType())) + } + if (com.mendix.core.Core.isSubClassOf("System.SynchronizationErrorFile", mendixObject.getType())) { return system.proxies.SynchronizationErrorFile.initialize(context, mendixObject); - + } return new system.proxies.FileDocument(context, mendixObject); } @@ -101,14 +113,16 @@ public static system.proxies.FileDocument load(com.mendix.systemwideinterfaces.c public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//System.FileDocument" + xpathConstraint)) - result.add(system.proxies.FileDocument.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> system.proxies.FileDocument.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -117,6 +131,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -271,8 +286,9 @@ public final void getContents(com.mendix.systemwideinterfaces.core.IContext cont */ public final void setContents(com.mendix.systemwideinterfaces.core.IContext context, java.io.InputStream inputStream, long length) { - if (getMendixObject().getState() == com.mendix.systemwideinterfaces.core.IMendixObject.ObjectState.INSTANTIATED) + if (getMendixObject().getState() == com.mendix.systemwideinterfaces.core.IMendixObject.ObjectState.INSTANTIATED) { try { commit(); } catch (com.mendix.core.CoreException ex) { } + } com.mendix.core.objectmanagement.member.MendixBinary binary = (com.mendix.core.objectmanagement.member.MendixBinary) getMendixObject().getMember(context, MemberNames.Contents.toString()); binary.storeValue(context, inputStream, length); } @@ -368,9 +384,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.FileDocument that = (system.proxies.FileDocument) obj; @@ -390,7 +406,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.FileDocument"; + return entityName; } /** diff --git a/javasource/system/proxies/HttpHeader.java b/javasource/system/proxies/HttpHeader.java index 35658d9..0b2ee21 100644 --- a/javasource/system/proxies/HttpHeader.java +++ b/javasource/system/proxies/HttpHeader.java @@ -24,7 +24,7 @@ public enum MemberNames Value("Value"), HttpHeaders("System.HttpHeaders"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -40,15 +40,17 @@ public java.lang.String toString() public HttpHeader(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.HttpHeader")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected HttpHeader(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject httpHeaderMendixObject) { - if (httpHeaderMendixObject == null) + if (httpHeaderMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("System.HttpHeader", httpHeaderMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.HttpHeader"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, httpHeaderMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.httpHeaderMendixObject = httpHeaderMendixObject; this.context = context; @@ -66,6 +68,9 @@ public static system.proxies.HttpHeader initialize(com.mendix.systemwideinterfac /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.HttpHeader initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -80,6 +85,7 @@ public static system.proxies.HttpHeader load(com.mendix.systemwideinterfaces.cor /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -88,6 +94,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -182,6 +189,7 @@ public final void setValue(com.mendix.systemwideinterfaces.core.IContext context } /** + * @throws com.mendix.core.CoreException * @return value of HttpHeaders */ public final system.proxies.HttpMessage getHttpHeaders() throws com.mendix.core.CoreException @@ -192,13 +200,15 @@ public final system.proxies.HttpMessage getHttpHeaders() throws com.mendix.core. /** * @param context * @return value of HttpHeaders + * @throws com.mendix.core.CoreException */ public final system.proxies.HttpMessage getHttpHeaders(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { system.proxies.HttpMessage result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.HttpHeaders.toString()); - if (identifier != null) + if (identifier != null) { result = system.proxies.HttpMessage.load(context, identifier); + } return result; } @@ -218,10 +228,11 @@ public final void setHttpHeaders(system.proxies.HttpMessage httpheaders) */ public final void setHttpHeaders(com.mendix.systemwideinterfaces.core.IContext context, system.proxies.HttpMessage httpheaders) { - if (httpheaders == null) + if (httpheaders == null) { getMendixObject().setValue(context, MemberNames.HttpHeaders.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.HttpHeaders.toString(), httpheaders.getMendixObject().getId()); + } } /** @@ -243,9 +254,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.HttpHeader that = (system.proxies.HttpHeader) obj; @@ -265,7 +276,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.HttpHeader"; + return entityName; } /** diff --git a/javasource/system/proxies/HttpMessage.java b/javasource/system/proxies/HttpMessage.java index 7e1f255..4f43af7 100644 --- a/javasource/system/proxies/HttpMessage.java +++ b/javasource/system/proxies/HttpMessage.java @@ -23,7 +23,7 @@ public enum MemberNames HttpVersion("HttpVersion"), Content("Content"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -39,15 +39,17 @@ public java.lang.String toString() public HttpMessage(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.HttpMessage")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected HttpMessage(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject httpMessageMendixObject) { - if (httpMessageMendixObject == null) + if (httpMessageMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("System.HttpMessage", httpMessageMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.HttpMessage"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, httpMessageMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.httpMessageMendixObject = httpMessageMendixObject; this.context = context; @@ -65,15 +67,18 @@ public static system.proxies.HttpMessage initialize(com.mendix.systemwideinterfa /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.HttpMessage initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { - if (com.mendix.core.Core.isSubClassOf("System.HttpRequest", mendixObject.getType())) + if (com.mendix.core.Core.isSubClassOf("System.HttpRequest", mendixObject.getType())) { return system.proxies.HttpRequest.initialize(context, mendixObject); - - if (com.mendix.core.Core.isSubClassOf("System.HttpResponse", mendixObject.getType())) + } + if (com.mendix.core.Core.isSubClassOf("System.HttpResponse", mendixObject.getType())) { return system.proxies.HttpResponse.initialize(context, mendixObject); - + } return new system.proxies.HttpMessage(context, mendixObject); } @@ -85,6 +90,7 @@ public static system.proxies.HttpMessage load(com.mendix.systemwideinterfaces.co /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -93,6 +99,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -205,9 +212,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.HttpMessage that = (system.proxies.HttpMessage) obj; @@ -227,7 +234,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.HttpMessage"; + return entityName; } /** diff --git a/javasource/system/proxies/HttpRequest.java b/javasource/system/proxies/HttpRequest.java index b378c69..1952ecb 100644 --- a/javasource/system/proxies/HttpRequest.java +++ b/javasource/system/proxies/HttpRequest.java @@ -20,7 +20,7 @@ public enum MemberNames HttpVersion("HttpVersion"), Content("Content"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -36,14 +36,15 @@ public java.lang.String toString() public HttpRequest(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.HttpRequest")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected HttpRequest(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject httpRequestMendixObject) { super(context, httpRequestMendixObject); - if (!com.mendix.core.Core.isSubClassOf("System.HttpRequest", httpRequestMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.HttpRequest"); + if (!com.mendix.core.Core.isSubClassOf(entityName, httpRequestMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } } /** @@ -58,6 +59,9 @@ public static system.proxies.HttpRequest initialize(com.mendix.systemwideinterfa /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.HttpRequest initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -109,9 +113,9 @@ public final void setUri(com.mendix.systemwideinterfaces.core.IContext context, @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.HttpRequest that = (system.proxies.HttpRequest) obj; @@ -131,7 +135,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.HttpRequest"; + return entityName; } /** diff --git a/javasource/system/proxies/HttpResponse.java b/javasource/system/proxies/HttpResponse.java index 5b8de9c..3ce9496 100644 --- a/javasource/system/proxies/HttpResponse.java +++ b/javasource/system/proxies/HttpResponse.java @@ -21,7 +21,7 @@ public enum MemberNames HttpVersion("HttpVersion"), Content("Content"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -37,14 +37,15 @@ public java.lang.String toString() public HttpResponse(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.HttpResponse")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected HttpResponse(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject httpResponseMendixObject) { super(context, httpResponseMendixObject); - if (!com.mendix.core.Core.isSubClassOf("System.HttpResponse", httpResponseMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.HttpResponse"); + if (!com.mendix.core.Core.isSubClassOf(entityName, httpResponseMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } } /** @@ -59,6 +60,9 @@ public static system.proxies.HttpResponse initialize(com.mendix.systemwideinterf /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.HttpResponse initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -146,9 +150,9 @@ public final void setReasonPhrase(com.mendix.systemwideinterfaces.core.IContext @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.HttpResponse that = (system.proxies.HttpResponse) obj; @@ -168,7 +172,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.HttpResponse"; + return entityName; } /** diff --git a/javasource/system/proxies/Image.java b/javasource/system/proxies/Image.java index 210f355..e28c6f3 100644 --- a/javasource/system/proxies/Image.java +++ b/javasource/system/proxies/Image.java @@ -4,6 +4,9 @@ package system.proxies; +/** + * An entity that inherits from the System.FileDocument entity. Used to store images. The content of the file is verified to be an image. In some places, thumbnails are generated. + */ public class Image extends system.proxies.FileDocument { /** @@ -24,7 +27,7 @@ public enum MemberNames HasContents("HasContents"), Size("Size"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -40,14 +43,15 @@ public java.lang.String toString() public Image(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.Image")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected Image(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject imageMendixObject) { super(context, imageMendixObject); - if (!com.mendix.core.Core.isSubClassOf("System.Image", imageMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.Image"); + if (!com.mendix.core.Core.isSubClassOf(entityName, imageMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } } /** @@ -62,6 +66,9 @@ public static system.proxies.Image initialize(com.mendix.systemwideinterfaces.co /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.Image initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -76,10 +83,11 @@ public static system.proxies.Image load(com.mendix.systemwideinterfaces.core.ICo public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//System.Image" + xpathConstraint)) - result.add(system.proxies.Image.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> system.proxies.Image.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** @@ -121,9 +129,9 @@ public final void setPublicThumbnailPath(com.mendix.systemwideinterfaces.core.IC @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.Image that = (system.proxies.Image) obj; @@ -143,7 +151,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.Image"; + return entityName; } /** diff --git a/javasource/system/proxies/Language.java b/javasource/system/proxies/Language.java index d66f748..555a5d8 100644 --- a/javasource/system/proxies/Language.java +++ b/javasource/system/proxies/Language.java @@ -23,7 +23,7 @@ public enum MemberNames Code("Code"), Description("Description"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -39,15 +39,17 @@ public java.lang.String toString() public Language(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.Language")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected Language(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject languageMendixObject) { - if (languageMendixObject == null) + if (languageMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("System.Language", languageMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.Language"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, languageMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.languageMendixObject = languageMendixObject; this.context = context; @@ -65,6 +67,9 @@ public static system.proxies.Language initialize(com.mendix.systemwideinterfaces /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.Language initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -79,14 +84,16 @@ public static system.proxies.Language load(com.mendix.systemwideinterfaces.core. public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//System.Language" + xpathConstraint)) - result.add(system.proxies.Language.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> system.proxies.Language.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -95,6 +102,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -207,9 +215,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.Language that = (system.proxies.Language) obj; @@ -229,7 +237,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.Language"; + return entityName; } /** diff --git a/javasource/system/proxies/Paging.java b/javasource/system/proxies/Paging.java index a3d2e6b..0bcd85c 100644 --- a/javasource/system/proxies/Paging.java +++ b/javasource/system/proxies/Paging.java @@ -26,7 +26,7 @@ public enum MemberNames SortAscending("SortAscending"), HasMoreData("HasMoreData"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -42,15 +42,17 @@ public java.lang.String toString() public Paging(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.Paging")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected Paging(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject pagingMendixObject) { - if (pagingMendixObject == null) + if (pagingMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("System.Paging", pagingMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.Paging"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, pagingMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.pagingMendixObject = pagingMendixObject; this.context = context; @@ -68,6 +70,9 @@ public static system.proxies.Paging initialize(com.mendix.systemwideinterfaces.c /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.Paging initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -82,6 +87,7 @@ public static system.proxies.Paging load(com.mendix.systemwideinterfaces.core.IC /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -90,6 +96,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -310,9 +317,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.Paging that = (system.proxies.Paging) obj; @@ -332,7 +339,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.Paging"; + return entityName; } /** diff --git a/javasource/system/proxies/ScheduledEventInformation.java b/javasource/system/proxies/ScheduledEventInformation.java index 639c1ab..17c1eec 100644 --- a/javasource/system/proxies/ScheduledEventInformation.java +++ b/javasource/system/proxies/ScheduledEventInformation.java @@ -27,7 +27,7 @@ public enum MemberNames Status("Status"), ScheduledEventInformation_XASInstance("System.ScheduledEventInformation_XASInstance"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -43,15 +43,17 @@ public java.lang.String toString() public ScheduledEventInformation(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.ScheduledEventInformation")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected ScheduledEventInformation(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject scheduledEventInformationMendixObject) { - if (scheduledEventInformationMendixObject == null) + if (scheduledEventInformationMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("System.ScheduledEventInformation", scheduledEventInformationMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.ScheduledEventInformation"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, scheduledEventInformationMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.scheduledEventInformationMendixObject = scheduledEventInformationMendixObject; this.context = context; @@ -69,6 +71,9 @@ public static system.proxies.ScheduledEventInformation initialize(com.mendix.sys /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.ScheduledEventInformation initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -83,14 +88,16 @@ public static system.proxies.ScheduledEventInformation load(com.mendix.systemwid public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//System.ScheduledEventInformation" + xpathConstraint)) - result.add(system.proxies.ScheduledEventInformation.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> system.proxies.ScheduledEventInformation.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -99,6 +106,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -280,9 +288,9 @@ public final system.proxies.EventStatus getStatus() public final system.proxies.EventStatus getStatus(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.Status.toString()); - if (obj == null) + if (obj == null) { return null; - + } return system.proxies.EventStatus.valueOf((java.lang.String) obj); } @@ -302,13 +310,15 @@ public final void setStatus(system.proxies.EventStatus status) */ public final void setStatus(com.mendix.systemwideinterfaces.core.IContext context, system.proxies.EventStatus status) { - if (status != null) + if (status != null) { getMendixObject().setValue(context, MemberNames.Status.toString(), status.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.Status.toString(), null); + } } /** + * @throws com.mendix.core.CoreException * @return value of ScheduledEventInformation_XASInstance */ public final system.proxies.XASInstance getScheduledEventInformation_XASInstance() throws com.mendix.core.CoreException @@ -319,13 +329,15 @@ public final system.proxies.XASInstance getScheduledEventInformation_XASInstance /** * @param context * @return value of ScheduledEventInformation_XASInstance + * @throws com.mendix.core.CoreException */ public final system.proxies.XASInstance getScheduledEventInformation_XASInstance(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { system.proxies.XASInstance result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.ScheduledEventInformation_XASInstance.toString()); - if (identifier != null) + if (identifier != null) { result = system.proxies.XASInstance.load(context, identifier); + } return result; } @@ -345,10 +357,11 @@ public final void setScheduledEventInformation_XASInstance(system.proxies.XASIns */ public final void setScheduledEventInformation_XASInstance(com.mendix.systemwideinterfaces.core.IContext context, system.proxies.XASInstance scheduledeventinformation_xasinstance) { - if (scheduledeventinformation_xasinstance == null) + if (scheduledeventinformation_xasinstance == null) { getMendixObject().setValue(context, MemberNames.ScheduledEventInformation_XASInstance.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.ScheduledEventInformation_XASInstance.toString(), scheduledeventinformation_xasinstance.getMendixObject().getId()); + } } /** @@ -370,9 +383,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.ScheduledEventInformation that = (system.proxies.ScheduledEventInformation) obj; @@ -392,7 +405,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.ScheduledEventInformation"; + return entityName; } /** diff --git a/javasource/system/proxies/Session.java b/javasource/system/proxies/Session.java index b63bcbc..150208d 100644 --- a/javasource/system/proxies/Session.java +++ b/javasource/system/proxies/Session.java @@ -25,7 +25,7 @@ public enum MemberNames LastActive("LastActive"), Session_User("System.Session_User"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -41,15 +41,17 @@ public java.lang.String toString() public Session(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.Session")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected Session(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject sessionMendixObject) { - if (sessionMendixObject == null) + if (sessionMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("System.Session", sessionMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.Session"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, sessionMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.sessionMendixObject = sessionMendixObject; this.context = context; @@ -67,6 +69,9 @@ public static system.proxies.Session initialize(com.mendix.systemwideinterfaces. /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.Session initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -81,14 +86,16 @@ public static system.proxies.Session load(com.mendix.systemwideinterfaces.core.I public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//System.Session" + xpathConstraint)) - result.add(system.proxies.Session.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> system.proxies.Session.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -97,6 +104,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -227,6 +235,7 @@ public final void setLastActive(com.mendix.systemwideinterfaces.core.IContext co } /** + * @throws com.mendix.core.CoreException * @return value of Session_User */ public final system.proxies.User getSession_User() throws com.mendix.core.CoreException @@ -237,13 +246,15 @@ public final system.proxies.User getSession_User() throws com.mendix.core.CoreEx /** * @param context * @return value of Session_User + * @throws com.mendix.core.CoreException */ public final system.proxies.User getSession_User(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { system.proxies.User result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.Session_User.toString()); - if (identifier != null) + if (identifier != null) { result = system.proxies.User.load(context, identifier); + } return result; } @@ -263,10 +274,11 @@ public final void setSession_User(system.proxies.User session_user) */ public final void setSession_User(com.mendix.systemwideinterfaces.core.IContext context, system.proxies.User session_user) { - if (session_user == null) + if (session_user == null) { getMendixObject().setValue(context, MemberNames.Session_User.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.Session_User.toString(), session_user.getMendixObject().getId()); + } } /** @@ -288,9 +300,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.Session that = (system.proxies.Session) obj; @@ -310,7 +322,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.Session"; + return entityName; } /** diff --git a/javasource/system/proxies/SoapFault.java b/javasource/system/proxies/SoapFault.java index 270ac7b..ccf8f17 100644 --- a/javasource/system/proxies/SoapFault.java +++ b/javasource/system/proxies/SoapFault.java @@ -25,7 +25,7 @@ public enum MemberNames Message("Message"), Stacktrace("Stacktrace"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -41,14 +41,15 @@ public java.lang.String toString() public SoapFault(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.SoapFault")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected SoapFault(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject soapFaultMendixObject) { super(context, soapFaultMendixObject); - if (!com.mendix.core.Core.isSubClassOf("System.SoapFault", soapFaultMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.SoapFault"); + if (!com.mendix.core.Core.isSubClassOf(entityName, soapFaultMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } } /** @@ -63,6 +64,9 @@ public static system.proxies.SoapFault initialize(com.mendix.systemwideinterface /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.SoapFault initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -258,9 +262,9 @@ public final void setDetail(com.mendix.systemwideinterfaces.core.IContext contex @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.SoapFault that = (system.proxies.SoapFault) obj; @@ -280,7 +284,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.SoapFault"; + return entityName; } /** diff --git a/javasource/system/proxies/SynchronizationError.java b/javasource/system/proxies/SynchronizationError.java index 24ea5d3..15bcdfa 100644 --- a/javasource/system/proxies/SynchronizationError.java +++ b/javasource/system/proxies/SynchronizationError.java @@ -25,7 +25,7 @@ public enum MemberNames ObjectType("ObjectType"), ObjectContent("ObjectContent"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -41,15 +41,17 @@ public java.lang.String toString() public SynchronizationError(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.SynchronizationError")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected SynchronizationError(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject synchronizationErrorMendixObject) { - if (synchronizationErrorMendixObject == null) + if (synchronizationErrorMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("System.SynchronizationError", synchronizationErrorMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.SynchronizationError"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, synchronizationErrorMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.synchronizationErrorMendixObject = synchronizationErrorMendixObject; this.context = context; @@ -67,6 +69,9 @@ public static system.proxies.SynchronizationError initialize(com.mendix.systemwi /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.SynchronizationError initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -81,14 +86,16 @@ public static system.proxies.SynchronizationError load(com.mendix.systemwideinte public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//System.SynchronizationError" + xpathConstraint)) - result.add(system.proxies.SynchronizationError.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> system.proxies.SynchronizationError.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -97,6 +104,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -281,9 +289,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.SynchronizationError that = (system.proxies.SynchronizationError) obj; @@ -303,7 +311,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.SynchronizationError"; + return entityName; } /** diff --git a/javasource/system/proxies/SynchronizationErrorFile.java b/javasource/system/proxies/SynchronizationErrorFile.java index bc1f74f..afc9b23 100644 --- a/javasource/system/proxies/SynchronizationErrorFile.java +++ b/javasource/system/proxies/SynchronizationErrorFile.java @@ -24,7 +24,7 @@ public enum MemberNames Size("Size"), SynchronizationErrorFile_SynchronizationError("System.SynchronizationErrorFile_SynchronizationError"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -40,14 +40,15 @@ public java.lang.String toString() public SynchronizationErrorFile(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.SynchronizationErrorFile")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected SynchronizationErrorFile(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject synchronizationErrorFileMendixObject) { super(context, synchronizationErrorFileMendixObject); - if (!com.mendix.core.Core.isSubClassOf("System.SynchronizationErrorFile", synchronizationErrorFileMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.SynchronizationErrorFile"); + if (!com.mendix.core.Core.isSubClassOf(entityName, synchronizationErrorFileMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } } /** @@ -62,6 +63,9 @@ public static system.proxies.SynchronizationErrorFile initialize(com.mendix.syst /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.SynchronizationErrorFile initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -76,13 +80,15 @@ public static system.proxies.SynchronizationErrorFile load(com.mendix.systemwide public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//System.SynchronizationErrorFile" + xpathConstraint)) - result.add(system.proxies.SynchronizationErrorFile.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> system.proxies.SynchronizationErrorFile.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** + * @throws com.mendix.core.CoreException * @return value of SynchronizationErrorFile_SynchronizationError */ public final system.proxies.SynchronizationError getSynchronizationErrorFile_SynchronizationError() throws com.mendix.core.CoreException @@ -93,13 +99,15 @@ public final system.proxies.SynchronizationError getSynchronizationErrorFile_Syn /** * @param context * @return value of SynchronizationErrorFile_SynchronizationError + * @throws com.mendix.core.CoreException */ public final system.proxies.SynchronizationError getSynchronizationErrorFile_SynchronizationError(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { system.proxies.SynchronizationError result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.SynchronizationErrorFile_SynchronizationError.toString()); - if (identifier != null) + if (identifier != null) { result = system.proxies.SynchronizationError.load(context, identifier); + } return result; } @@ -119,18 +127,19 @@ public final void setSynchronizationErrorFile_SynchronizationError(system.proxie */ public final void setSynchronizationErrorFile_SynchronizationError(com.mendix.systemwideinterfaces.core.IContext context, system.proxies.SynchronizationError synchronizationerrorfile_synchronizationerror) { - if (synchronizationerrorfile_synchronizationerror == null) + if (synchronizationerrorfile_synchronizationerror == null) { getMendixObject().setValue(context, MemberNames.SynchronizationErrorFile_SynchronizationError.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.SynchronizationErrorFile_SynchronizationError.toString(), synchronizationerrorfile_synchronizationerror.getMendixObject().getId()); + } } @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.SynchronizationErrorFile that = (system.proxies.SynchronizationErrorFile) obj; @@ -150,7 +159,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.SynchronizationErrorFile"; + return entityName; } /** diff --git a/javasource/system/proxies/TimeZone.java b/javasource/system/proxies/TimeZone.java index e32e1e8..532112e 100644 --- a/javasource/system/proxies/TimeZone.java +++ b/javasource/system/proxies/TimeZone.java @@ -24,7 +24,7 @@ public enum MemberNames Description("Description"), RawOffset("RawOffset"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -40,15 +40,17 @@ public java.lang.String toString() public TimeZone(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.TimeZone")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected TimeZone(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject timeZoneMendixObject) { - if (timeZoneMendixObject == null) + if (timeZoneMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("System.TimeZone", timeZoneMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.TimeZone"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, timeZoneMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.timeZoneMendixObject = timeZoneMendixObject; this.context = context; @@ -66,6 +68,9 @@ public static system.proxies.TimeZone initialize(com.mendix.systemwideinterfaces /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.TimeZone initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -80,14 +85,16 @@ public static system.proxies.TimeZone load(com.mendix.systemwideinterfaces.core. public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//System.TimeZone" + xpathConstraint)) - result.add(system.proxies.TimeZone.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> system.proxies.TimeZone.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -96,6 +103,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -244,9 +252,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.TimeZone that = (system.proxies.TimeZone) obj; @@ -266,7 +274,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.TimeZone"; + return entityName; } /** diff --git a/javasource/system/proxies/TokenInformation.java b/javasource/system/proxies/TokenInformation.java index 613da29..275dd9d 100644 --- a/javasource/system/proxies/TokenInformation.java +++ b/javasource/system/proxies/TokenInformation.java @@ -25,7 +25,7 @@ public enum MemberNames UserAgent("UserAgent"), TokenInformation_User("System.TokenInformation_User"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -41,15 +41,17 @@ public java.lang.String toString() public TokenInformation(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.TokenInformation")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected TokenInformation(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject tokenInformationMendixObject) { - if (tokenInformationMendixObject == null) + if (tokenInformationMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("System.TokenInformation", tokenInformationMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.TokenInformation"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, tokenInformationMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.tokenInformationMendixObject = tokenInformationMendixObject; this.context = context; @@ -67,6 +69,9 @@ public static system.proxies.TokenInformation initialize(com.mendix.systemwidein /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.TokenInformation initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -81,14 +86,16 @@ public static system.proxies.TokenInformation load(com.mendix.systemwideinterfac public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//System.TokenInformation" + xpathConstraint)) - result.add(system.proxies.TokenInformation.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> system.proxies.TokenInformation.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -97,6 +104,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -210,6 +218,7 @@ public final void setUserAgent(com.mendix.systemwideinterfaces.core.IContext con } /** + * @throws com.mendix.core.CoreException * @return value of TokenInformation_User */ public final system.proxies.User getTokenInformation_User() throws com.mendix.core.CoreException @@ -220,13 +229,15 @@ public final system.proxies.User getTokenInformation_User() throws com.mendix.co /** * @param context * @return value of TokenInformation_User + * @throws com.mendix.core.CoreException */ public final system.proxies.User getTokenInformation_User(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { system.proxies.User result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.TokenInformation_User.toString()); - if (identifier != null) + if (identifier != null) { result = system.proxies.User.load(context, identifier); + } return result; } @@ -246,10 +257,11 @@ public final void setTokenInformation_User(system.proxies.User tokeninformation_ */ public final void setTokenInformation_User(com.mendix.systemwideinterfaces.core.IContext context, system.proxies.User tokeninformation_user) { - if (tokeninformation_user == null) + if (tokeninformation_user == null) { getMendixObject().setValue(context, MemberNames.TokenInformation_User.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.TokenInformation_User.toString(), tokeninformation_user.getMendixObject().getId()); + } } /** @@ -271,9 +283,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.TokenInformation that = (system.proxies.TokenInformation) obj; @@ -293,7 +305,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.TokenInformation"; + return entityName; } /** diff --git a/javasource/system/proxies/User.java b/javasource/system/proxies/User.java index 7ec4bdf..63bb144 100644 --- a/javasource/system/proxies/User.java +++ b/javasource/system/proxies/User.java @@ -4,6 +4,9 @@ package system.proxies; +/** + * Represents a user of the Mendix platform. + */ public class User { private final com.mendix.systemwideinterfaces.core.IMendixObject userMendixObject; @@ -24,6 +27,7 @@ public enum MemberNames Password("Password"), LastLogin("LastLogin"), Blocked("Blocked"), + BlockedSince("BlockedSince"), Active("Active"), FailedLogins("FailedLogins"), WebServiceUser("WebServiceUser"), @@ -32,7 +36,7 @@ public enum MemberNames User_Language("System.User_Language"), User_TimeZone("System.User_TimeZone"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -48,15 +52,17 @@ public java.lang.String toString() public User(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.User")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected User(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject userMendixObject) { - if (userMendixObject == null) + if (userMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("System.User", userMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.User"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, userMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.userMendixObject = userMendixObject; this.context = context; @@ -74,12 +80,15 @@ public static system.proxies.User initialize(com.mendix.systemwideinterfaces.cor /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.User initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { - if (com.mendix.core.Core.isSubClassOf("Administration.Account", mendixObject.getType())) + if (com.mendix.core.Core.isSubClassOf("Administration.Account", mendixObject.getType())) { return administration.proxies.Account.initialize(context, mendixObject); - + } return new system.proxies.User(context, mendixObject); } @@ -91,14 +100,16 @@ public static system.proxies.User load(com.mendix.systemwideinterfaces.core.ICon public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//System.User" + xpathConstraint)) - result.add(system.proxies.User.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> system.proxies.User.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -107,6 +118,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -255,6 +267,42 @@ public final void setBlocked(com.mendix.systemwideinterfaces.core.IContext conte getMendixObject().setValue(context, MemberNames.Blocked.toString(), blocked); } + /** + * @return value of BlockedSince + */ + public final java.util.Date getBlockedSince() + { + return getBlockedSince(getContext()); + } + + /** + * @param context + * @return value of BlockedSince + */ + public final java.util.Date getBlockedSince(com.mendix.systemwideinterfaces.core.IContext context) + { + return (java.util.Date) getMendixObject().getValue(context, MemberNames.BlockedSince.toString()); + } + + /** + * Set value of BlockedSince + * @param blockedsince + */ + public final void setBlockedSince(java.util.Date blockedsince) + { + setBlockedSince(getContext(), blockedsince); + } + + /** + * Set value of BlockedSince + * @param context + * @param blockedsince + */ + public final void setBlockedSince(com.mendix.systemwideinterfaces.core.IContext context, java.util.Date blockedsince) + { + getMendixObject().setValue(context, MemberNames.BlockedSince.toString(), blockedsince); + } + /** * @return value of Active */ @@ -400,6 +448,7 @@ public final void setIsAnonymous(com.mendix.systemwideinterfaces.core.IContext c } /** + * @throws com.mendix.core.CoreException * @return value of UserRoles */ public final java.util.List getUserRoles() throws com.mendix.core.CoreException @@ -410,16 +459,19 @@ public final java.util.List getUserRoles() throws com.m /** * @param context * @return value of UserRoles + * @throws com.mendix.core.CoreException */ @SuppressWarnings("unchecked") public final java.util.List getUserRoles(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); + java.util.List result = new java.util.ArrayList<>(); Object valueObject = getMendixObject().getValue(context, MemberNames.UserRoles.toString()); - if (valueObject == null) + if (valueObject == null) { return result; - for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) + } + for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) { result.add(system.proxies.UserRole.initialize(context, mendixObject)); + } return result; } @@ -439,13 +491,16 @@ public final void setUserRoles(java.util.List userroles */ public final void setUserRoles(com.mendix.systemwideinterfaces.core.IContext context, java.util.List userroles) { - java.util.List identifiers = new java.util.ArrayList(); - for (system.proxies.UserRole proxyObject : userroles) - identifiers.add(proxyObject.getMendixObject().getId()); + var identifiers = userroles + .stream() + .map(proxyObject -> proxyObject.getMendixObject().getId()) + .collect(java.util.stream.Collectors.toList()); + getMendixObject().setValue(context, MemberNames.UserRoles.toString(), identifiers); } /** + * @throws com.mendix.core.CoreException * @return value of User_Language */ public final system.proxies.Language getUser_Language() throws com.mendix.core.CoreException @@ -456,13 +511,15 @@ public final system.proxies.Language getUser_Language() throws com.mendix.core.C /** * @param context * @return value of User_Language + * @throws com.mendix.core.CoreException */ public final system.proxies.Language getUser_Language(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { system.proxies.Language result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.User_Language.toString()); - if (identifier != null) + if (identifier != null) { result = system.proxies.Language.load(context, identifier); + } return result; } @@ -482,13 +539,15 @@ public final void setUser_Language(system.proxies.Language user_language) */ public final void setUser_Language(com.mendix.systemwideinterfaces.core.IContext context, system.proxies.Language user_language) { - if (user_language == null) + if (user_language == null) { getMendixObject().setValue(context, MemberNames.User_Language.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.User_Language.toString(), user_language.getMendixObject().getId()); + } } /** + * @throws com.mendix.core.CoreException * @return value of User_TimeZone */ public final system.proxies.TimeZone getUser_TimeZone() throws com.mendix.core.CoreException @@ -499,13 +558,15 @@ public final system.proxies.TimeZone getUser_TimeZone() throws com.mendix.core.C /** * @param context * @return value of User_TimeZone + * @throws com.mendix.core.CoreException */ public final system.proxies.TimeZone getUser_TimeZone(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { system.proxies.TimeZone result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.User_TimeZone.toString()); - if (identifier != null) + if (identifier != null) { result = system.proxies.TimeZone.load(context, identifier); + } return result; } @@ -525,10 +586,11 @@ public final void setUser_TimeZone(system.proxies.TimeZone user_timezone) */ public final void setUser_TimeZone(com.mendix.systemwideinterfaces.core.IContext context, system.proxies.TimeZone user_timezone) { - if (user_timezone == null) + if (user_timezone == null) { getMendixObject().setValue(context, MemberNames.User_TimeZone.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.User_TimeZone.toString(), user_timezone.getMendixObject().getId()); + } } /** @@ -550,9 +612,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.User that = (system.proxies.User) obj; @@ -572,7 +634,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.User"; + return entityName; } /** diff --git a/javasource/system/proxies/UserReportInfo.java b/javasource/system/proxies/UserReportInfo.java index d0e9447..41e0b90 100644 --- a/javasource/system/proxies/UserReportInfo.java +++ b/javasource/system/proxies/UserReportInfo.java @@ -24,7 +24,7 @@ public enum MemberNames Hash("Hash"), UserReportInfo_User("System.UserReportInfo_User"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -40,15 +40,17 @@ public java.lang.String toString() public UserReportInfo(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.UserReportInfo")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected UserReportInfo(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject userReportInfoMendixObject) { - if (userReportInfoMendixObject == null) + if (userReportInfoMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("System.UserReportInfo", userReportInfoMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.UserReportInfo"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, userReportInfoMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.userReportInfoMendixObject = userReportInfoMendixObject; this.context = context; @@ -66,6 +68,9 @@ public static system.proxies.UserReportInfo initialize(com.mendix.systemwideinte /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.UserReportInfo initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -80,14 +85,16 @@ public static system.proxies.UserReportInfo load(com.mendix.systemwideinterfaces public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//System.UserReportInfo" + xpathConstraint)) - result.add(system.proxies.UserReportInfo.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> system.proxies.UserReportInfo.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -96,6 +103,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -133,9 +141,9 @@ public final system.proxies.UserType getUserType() public final system.proxies.UserType getUserType(com.mendix.systemwideinterfaces.core.IContext context) { Object obj = getMendixObject().getValue(context, MemberNames.UserType.toString()); - if (obj == null) + if (obj == null) { return null; - + } return system.proxies.UserType.valueOf((java.lang.String) obj); } @@ -155,10 +163,11 @@ public final void setUserType(system.proxies.UserType usertype) */ public final void setUserType(com.mendix.systemwideinterfaces.core.IContext context, system.proxies.UserType usertype) { - if (usertype != null) + if (usertype != null) { getMendixObject().setValue(context, MemberNames.UserType.toString(), usertype.toString()); - else + } else { getMendixObject().setValue(context, MemberNames.UserType.toString(), null); + } } /** @@ -198,6 +207,7 @@ public final void setHash(com.mendix.systemwideinterfaces.core.IContext context, } /** + * @throws com.mendix.core.CoreException * @return value of UserReportInfo_User */ public final system.proxies.User getUserReportInfo_User() throws com.mendix.core.CoreException @@ -208,13 +218,15 @@ public final system.proxies.User getUserReportInfo_User() throws com.mendix.core /** * @param context * @return value of UserReportInfo_User + * @throws com.mendix.core.CoreException */ public final system.proxies.User getUserReportInfo_User(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { system.proxies.User result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.UserReportInfo_User.toString()); - if (identifier != null) + if (identifier != null) { result = system.proxies.User.load(context, identifier); + } return result; } @@ -234,10 +246,11 @@ public final void setUserReportInfo_User(system.proxies.User userreportinfo_user */ public final void setUserReportInfo_User(com.mendix.systemwideinterfaces.core.IContext context, system.proxies.User userreportinfo_user) { - if (userreportinfo_user == null) + if (userreportinfo_user == null) { getMendixObject().setValue(context, MemberNames.UserReportInfo_User.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.UserReportInfo_User.toString(), userreportinfo_user.getMendixObject().getId()); + } } /** @@ -259,9 +272,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.UserReportInfo that = (system.proxies.UserReportInfo) obj; @@ -281,7 +294,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.UserReportInfo"; + return entityName; } /** diff --git a/javasource/system/proxies/UserRole.java b/javasource/system/proxies/UserRole.java index 3ee3dc0..281c334 100644 --- a/javasource/system/proxies/UserRole.java +++ b/javasource/system/proxies/UserRole.java @@ -25,7 +25,7 @@ public enum MemberNames Description("Description"), grantableRoles("System.grantableRoles"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -41,15 +41,17 @@ public java.lang.String toString() public UserRole(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.UserRole")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected UserRole(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject userRoleMendixObject) { - if (userRoleMendixObject == null) + if (userRoleMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("System.UserRole", userRoleMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.UserRole"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, userRoleMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.userRoleMendixObject = userRoleMendixObject; this.context = context; @@ -67,6 +69,9 @@ public static system.proxies.UserRole initialize(com.mendix.systemwideinterfaces /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.UserRole initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -81,14 +86,16 @@ public static system.proxies.UserRole load(com.mendix.systemwideinterfaces.core. public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//System.UserRole" + xpathConstraint)) - result.add(system.proxies.UserRole.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> system.proxies.UserRole.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -97,6 +104,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -227,6 +235,7 @@ public final void setDescription(com.mendix.systemwideinterfaces.core.IContext c } /** + * @throws com.mendix.core.CoreException * @return value of grantableRoles */ public final java.util.List getgrantableRoles() throws com.mendix.core.CoreException @@ -237,16 +246,19 @@ public final java.util.List getgrantableRoles() throws /** * @param context * @return value of grantableRoles + * @throws com.mendix.core.CoreException */ @SuppressWarnings("unchecked") public final java.util.List getgrantableRoles(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); + java.util.List result = new java.util.ArrayList<>(); Object valueObject = getMendixObject().getValue(context, MemberNames.grantableRoles.toString()); - if (valueObject == null) + if (valueObject == null) { return result; - for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) + } + for (com.mendix.systemwideinterfaces.core.IMendixObject mendixObject : com.mendix.core.Core.retrieveIdList(context, (java.util.List) valueObject)) { result.add(system.proxies.UserRole.initialize(context, mendixObject)); + } return result; } @@ -266,9 +278,11 @@ public final void setgrantableRoles(java.util.List gran */ public final void setgrantableRoles(com.mendix.systemwideinterfaces.core.IContext context, java.util.List grantableroles) { - java.util.List identifiers = new java.util.ArrayList(); - for (system.proxies.UserRole proxyObject : grantableroles) - identifiers.add(proxyObject.getMendixObject().getId()); + var identifiers = grantableroles + .stream() + .map(proxyObject -> proxyObject.getMendixObject().getId()) + .collect(java.util.stream.Collectors.toList()); + getMendixObject().setValue(context, MemberNames.grantableRoles.toString(), identifiers); } @@ -291,9 +305,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.UserRole that = (system.proxies.UserRole) obj; @@ -313,7 +327,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.UserRole"; + return entityName; } /** diff --git a/javasource/system/proxies/UserType.java b/javasource/system/proxies/UserType.java index ceb3342..795d940 100644 --- a/javasource/system/proxies/UserType.java +++ b/javasource/system/proxies/UserType.java @@ -9,20 +9,19 @@ public enum UserType Internal(new java.lang.String[][] { new java.lang.String[] { "en_US", "Internal" }, new java.lang.String[] { "nl_NL", "Intern" } }), External(new java.lang.String[][] { new java.lang.String[] { "en_US", "External" }, new java.lang.String[] { "nl_NL", "Extern" } }); - private java.util.Map captions; + private final java.util.Map captions; private UserType(java.lang.String[][] captionStrings) { - this.captions = new java.util.HashMap(); - for (java.lang.String[] captionString : captionStrings) + this.captions = new java.util.HashMap<>(); + for (java.lang.String[] captionString : captionStrings) { captions.put(captionString[0], captionString[1]); + } } public java.lang.String getCaption(java.lang.String languageCode) { - if (captions.containsKey(languageCode)) - return captions.get(languageCode); - return captions.get("en_US"); + return captions.getOrDefault(languageCode, "en_US"); } public java.lang.String getCaption() diff --git a/javasource/system/proxies/XASInstance.java b/javasource/system/proxies/XASInstance.java index 21dd57b..410afb6 100644 --- a/javasource/system/proxies/XASInstance.java +++ b/javasource/system/proxies/XASInstance.java @@ -26,7 +26,7 @@ public enum MemberNames PartnerName("PartnerName"), CustomerName("CustomerName"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -42,15 +42,17 @@ public java.lang.String toString() public XASInstance(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "System.XASInstance")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected XASInstance(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject xASInstanceMendixObject) { - if (xASInstanceMendixObject == null) + if (xASInstanceMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("System.XASInstance", xASInstanceMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a System.XASInstance"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, xASInstanceMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.xASInstanceMendixObject = xASInstanceMendixObject; this.context = context; @@ -68,6 +70,9 @@ public static system.proxies.XASInstance initialize(com.mendix.systemwideinterfa /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static system.proxies.XASInstance initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -82,14 +87,16 @@ public static system.proxies.XASInstance load(com.mendix.systemwideinterfaces.co public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//System.XASInstance" + xpathConstraint)) - result.add(system.proxies.XASInstance.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> system.proxies.XASInstance.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -98,6 +105,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -318,9 +326,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final system.proxies.XASInstance that = (system.proxies.XASInstance) obj; @@ -340,7 +348,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "System.XASInstance"; + return entityName; } /** diff --git a/javasource/system/proxies/microflows/Microflows.java b/javasource/system/proxies/microflows/Microflows.java index 75804c9..5517f6b 100644 --- a/javasource/system/proxies/microflows/Microflows.java +++ b/javasource/system/proxies/microflows/Microflows.java @@ -7,16 +7,22 @@ import java.util.HashMap; import java.util.Map; import com.mendix.core.Core; -import com.mendix.core.CoreException; -import com.mendix.systemwideinterfaces.MendixRuntimeException; import com.mendix.systemwideinterfaces.core.IContext; public class Microflows { + /** + * @deprecated + * The default constructor of the Microflows class should not be used. + * Use the static microflow invocation methods instead. + */ + @java.lang.Deprecated(since = "9.12", forRemoval = true) + public Microflows() {} + // These are the microflows for the System module public static void showHomePage(IContext context) { Map params = new HashMap<>(); Core.microflowCall("System.ShowHomePage").withParams(params).execute(context); } -} \ No newline at end of file +} diff --git a/javasource/testmodule/proxies/Asso_DataObject.java b/javasource/testmodule/proxies/Asso_DataObject.java index b48d20e..cc376db 100644 --- a/javasource/testmodule/proxies/Asso_DataObject.java +++ b/javasource/testmodule/proxies/Asso_DataObject.java @@ -22,7 +22,7 @@ public enum MemberNames { orgNm("orgNm"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -38,15 +38,17 @@ public java.lang.String toString() public Asso_DataObject(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "TestModule.Asso_DataObject")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected Asso_DataObject(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject asso_DataObjectMendixObject) { - if (asso_DataObjectMendixObject == null) + if (asso_DataObjectMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("TestModule.Asso_DataObject", asso_DataObjectMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a TestModule.Asso_DataObject"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, asso_DataObjectMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.asso_DataObjectMendixObject = asso_DataObjectMendixObject; this.context = context; @@ -64,6 +66,9 @@ public static testmodule.proxies.Asso_DataObject initialize(com.mendix.systemwid /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static testmodule.proxies.Asso_DataObject initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -78,14 +83,16 @@ public static testmodule.proxies.Asso_DataObject load(com.mendix.systemwideinter public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//TestModule.Asso_DataObject" + xpathConstraint)) - result.add(testmodule.proxies.Asso_DataObject.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> testmodule.proxies.Asso_DataObject.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -94,6 +101,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -170,9 +178,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final testmodule.proxies.Asso_DataObject that = (testmodule.proxies.Asso_DataObject) obj; @@ -192,7 +200,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "TestModule.Asso_DataObject"; + return entityName; } /** diff --git a/javasource/testmodule/proxies/DataObject.java b/javasource/testmodule/proxies/DataObject.java index 3026886..1c6ffd4 100644 --- a/javasource/testmodule/proxies/DataObject.java +++ b/javasource/testmodule/proxies/DataObject.java @@ -25,7 +25,7 @@ public enum MemberNames sal("sal"), DataObject_Asso_DataObject("TestModule.DataObject_Asso_DataObject"); - private java.lang.String metaName; + private final java.lang.String metaName; MemberNames(java.lang.String s) { @@ -41,15 +41,17 @@ public java.lang.String toString() public DataObject(com.mendix.systemwideinterfaces.core.IContext context) { - this(context, com.mendix.core.Core.instantiate(context, "TestModule.DataObject")); + this(context, com.mendix.core.Core.instantiate(context, entityName)); } protected DataObject(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject dataObjectMendixObject) { - if (dataObjectMendixObject == null) + if (dataObjectMendixObject == null) { throw new java.lang.IllegalArgumentException("The given object cannot be null."); - if (!com.mendix.core.Core.isSubClassOf("TestModule.DataObject", dataObjectMendixObject.getType())) - throw new java.lang.IllegalArgumentException("The given object is not a TestModule.DataObject"); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, dataObjectMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } this.dataObjectMendixObject = dataObjectMendixObject; this.context = context; @@ -67,6 +69,9 @@ public static testmodule.proxies.DataObject initialize(com.mendix.systemwideinte /** * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class */ public static testmodule.proxies.DataObject initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) { @@ -81,14 +86,16 @@ public static testmodule.proxies.DataObject load(com.mendix.systemwideinterfaces public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException { - java.util.List result = new java.util.ArrayList(); - for (com.mendix.systemwideinterfaces.core.IMendixObject obj : com.mendix.core.Core.retrieveXPathQuery(context, "//TestModule.DataObject" + xpathConstraint)) - result.add(testmodule.proxies.DataObject.initialize(context, obj)); - return result; + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> testmodule.proxies.DataObject.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); } /** * Commit the changes made on this proxy object. + * @throws com.mendix.core.CoreException */ public final void commit() throws com.mendix.core.CoreException { @@ -97,6 +104,7 @@ public final void commit() throws com.mendix.core.CoreException /** * Commit the changes made on this proxy object using the specified context. + * @throws com.mendix.core.CoreException */ public final void commit(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { @@ -227,6 +235,7 @@ public final void setsal(com.mendix.systemwideinterfaces.core.IContext context, } /** + * @throws com.mendix.core.CoreException * @return value of DataObject_Asso_DataObject */ public final testmodule.proxies.Asso_DataObject getDataObject_Asso_DataObject() throws com.mendix.core.CoreException @@ -237,13 +246,15 @@ public final testmodule.proxies.Asso_DataObject getDataObject_Asso_DataObject() /** * @param context * @return value of DataObject_Asso_DataObject + * @throws com.mendix.core.CoreException */ public final testmodule.proxies.Asso_DataObject getDataObject_Asso_DataObject(com.mendix.systemwideinterfaces.core.IContext context) throws com.mendix.core.CoreException { testmodule.proxies.Asso_DataObject result = null; com.mendix.systemwideinterfaces.core.IMendixIdentifier identifier = getMendixObject().getValue(context, MemberNames.DataObject_Asso_DataObject.toString()); - if (identifier != null) + if (identifier != null) { result = testmodule.proxies.Asso_DataObject.load(context, identifier); + } return result; } @@ -263,10 +274,11 @@ public final void setDataObject_Asso_DataObject(testmodule.proxies.Asso_DataObje */ public final void setDataObject_Asso_DataObject(com.mendix.systemwideinterfaces.core.IContext context, testmodule.proxies.Asso_DataObject dataobject_asso_dataobject) { - if (dataobject_asso_dataobject == null) + if (dataobject_asso_dataobject == null) { getMendixObject().setValue(context, MemberNames.DataObject_Asso_DataObject.toString(), null); - else + } else { getMendixObject().setValue(context, MemberNames.DataObject_Asso_DataObject.toString(), dataobject_asso_dataobject.getMendixObject().getId()); + } } /** @@ -288,9 +300,9 @@ public final com.mendix.systemwideinterfaces.core.IContext getContext() @java.lang.Override public boolean equals(Object obj) { - if (obj == this) + if (obj == this) { return true; - + } if (obj != null && getClass().equals(obj.getClass())) { final testmodule.proxies.DataObject that = (testmodule.proxies.DataObject) obj; @@ -310,7 +322,7 @@ public int hashCode() */ public static java.lang.String getType() { - return "TestModule.DataObject"; + return entityName; } /** diff --git a/javasource/testmodule/proxies/microflows/Microflows.java b/javasource/testmodule/proxies/microflows/Microflows.java index 32d4cab..16af7ee 100644 --- a/javasource/testmodule/proxies/microflows/Microflows.java +++ b/javasource/testmodule/proxies/microflows/Microflows.java @@ -7,12 +7,18 @@ import java.util.HashMap; import java.util.Map; import com.mendix.core.Core; -import com.mendix.core.CoreException; -import com.mendix.systemwideinterfaces.MendixRuntimeException; import com.mendix.systemwideinterfaces.core.IContext; public class Microflows { + /** + * @deprecated + * The default constructor of the Microflows class should not be used. + * Use the static microflow invocation methods instead. + */ + @java.lang.Deprecated(since = "9.12", forRemoval = true) + public Microflows() {} + // These are the microflows for the TestModule module public static void sub_CreateEmail(IContext context, emailtemplate.proxies.EmailTemplate _emailTemplate) { @@ -25,4 +31,4 @@ public static void tEST_CreateTestData(IContext context) Map params = new HashMap<>(); Core.microflowCall("TestModule.TEST_CreateTestData").withParams(params).execute(context); } -} \ No newline at end of file +} diff --git a/theme/.prettierrc b/theme/.prettierrc deleted file mode 100644 index a46f75f..0000000 --- a/theme/.prettierrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "singleQuote": false, - "printWidth": 120, - "proseWrap": "always", - "tabWidth": 4, - "useTabs": false, - "trailingComma": "all", - "bracketSpacing": true, - "semi": true, - "arrowParens": "avoid" -} diff --git a/theme/.stylelintrc b/theme/.stylelintrc deleted file mode 100644 index 62c30a6..0000000 --- a/theme/.stylelintrc +++ /dev/null @@ -1,32 +0,0 @@ -{ - "extends": "stylelint-config-standard", - "rules": { - "indentation": 4, - "string-quotes": "double", - "no-duplicate-selectors": true, - "color-hex-case": "upper", - "color-hex-length": "short", - "selector-combinator-space-after": "always", - "selector-attribute-operator-space-before": "always", - "selector-attribute-operator-space-after": "always", - "selector-attribute-brackets-space-inside": "always", - "declaration-block-trailing-semicolon": "always", - "declaration-colon-space-before": "never", - "declaration-colon-space-after": "always", - "number-leading-zero": "never", - "function-url-quotes": "always", - "font-family-name-quotes": "always-unless-keyword", - "comment-whitespace-inside": "always", - "comment-empty-line-before": "always", - "rule-empty-line-before": "always-multi-line", - "selector-pseudo-element-colon-notation": "single", - "media-feature-range-operator-space-after": "always", - "media-feature-colon-space-after": "always", - "no-descending-specificity": null, - "declaration-colon-newline-after": null, - "value-list-comma-newline-after": null, - "at-rule-no-unknown": [true, { - "ignoreAtRules": ["function", "if", "each", "include", "mixin"] - }] - } -} diff --git a/theme/LICENSE b/theme/LICENSE deleted file mode 100644 index 476061e..0000000 --- a/theme/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 Mendix - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/theme/README.md b/theme/README.md deleted file mode 100644 index 91312ab..0000000 --- a/theme/README.md +++ /dev/null @@ -1,96 +0,0 @@ -# For Atlas 3 UI go [here](https://github.com/mendix/widgets-resources/tree/master/packages/theming/atlas) - -We are always improving our code base with new technologies. Thus we moved our new atlas 3 theme package to our [monorepo](https://github.com/mendix/widgets-resources) - -## Mendix Atlas 2 UI - -Mendix Atlas UI is the foundation of making beautiful apps with Mendix. For more information about the framework go to -[here](https://atlas.mendix.com/). - -### Useful tools -- [Compile SCSS to CSS with Calypso](https://docs.mendix.com/howto/front-end/calypso) -- [Visually update the design properties for web and native](https://jeltemx.github.io/mendix-dpt/) -- [Inspect and update styles in the Make it Native app with the React Native Debugger](https://docs.mendix.com/howto/mobile/native-debug) - -#### Structure - -Mendix is capable of creating beautiful and user-friendly UI. Our Atlas UI framework demonstrates some of its -possibilities. Here you will find a basic overview of our framework. - -``` -theme/ -├── styles/ -| ├── native/ -| | ├── ts/ // Will not be in the Atlas UI Resources module -| | ├── js/ -| | ├── app/ -| | | ├── _custom-variables.js -| | | └── _custom.js -| | ├── core/ -| |     |   ├── base/ -| |     |   ├── helpers/ -| | | ├── widgets/ -| |    |  | _variables.js -| |    |  └── manifest.json -| | ├── ui_resources/ -| |     |   └── atlas_ui_resources/ -| |     |   ├── buildingblocks/ -| |     |   └── layouts/ -| | └── main.js -| └── web/ -| ├── css/ -| │ ├── * all output files -| └── sass/ -| ├── app/ -| | ├── _custom-variables.scss -| | └── _custom.scss -| ├── core/ -|       |   ├── _legacy/ -|       |   ├── base/ -|       |   ├── helpers/ -| | ├── widgets/ -| | ├── widgetscustom/ -|      |   | _variables.scss -|      |  └── manifest.json -| ├── ui_resources/ -|       |   └── atlas_ui_resources/ -|       |   ├── buildingblocks/ -|       |   └── layouts/ -| └── main.scss -├── * index files -├── * assets -├── * settings*.json (Design Properties) -└── styles.js -``` - -#### App - -The app folder contains all custom styling. We recommend users to only use this directory for any custom styling. - -When you want to customize something, you should first check if you can accomplish your goal by changing variables. -These variables can be found in _styles/web/sass/core/variables.scss_ or _styles/native/core/variables.js_. If you want -to change any core variable, copy it to _../app/\_custom-variables.(scss|js)_ and change it there. It will then -overwrite the core variable. This will make updating Atlas UI much easier in the future. - -#### Core - -The core folder is the heart of Atlas UI. This folder includes base styling, widget styling & additional helper classes. -The core widget styling is split in to two parts. The widget folder includes the default widget styling, as it will look -out of the box. The helpers folder will include design properties and extra classes to change that default styling. - -#### UI Resources - -THe UI Resources folder will contain any styling related to Building Blocks, Page Templates and Layouts. - -Building blocks are created with Widgets. For example _cards_ or _headers_ are building blocks. A building block could -be an image, a title, and a button, assembled together into one UI block. - -Page Templates are created with Building Blocks and Widgets. Page Templates are an example of how a page could look -like. - -Layouts are created with widgets. They are mainly used for navigation or user experiences which need to be consistent -between pages. - -## License - -MIT diff --git a/theme/components.json b/theme/components.json deleted file mode 100644 index df42ffa..0000000 --- a/theme/components.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "files": { - "css": ["styles/web/css/main.css"], - "js": ["mxclientsystem/mxui/mxui.js"] - }, - "cachebust": "{{cachebust}}" -} diff --git a/theme/index-rtl.html b/theme/index-rtl.html deleted file mode 100644 index fa89bca..0000000 --- a/theme/index-rtl.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - Mendix - - - - {{themecss}} - {{appicons}} - {{manifest}} - {{startupimages}} - - - -

- - - - diff --git a/theme/index.html b/theme/index.html deleted file mode 100644 index ce29e6b..0000000 --- a/theme/index.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - Mendix - - - - {{themecss}} - {{appicons}} - {{manifest}} - {{startupimages}} - - - - -
- - - - - diff --git a/theme/login-with-sso.html b/theme/login-with-sso.html deleted file mode 100644 index 46c961c..0000000 --- a/theme/login-with-sso.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - Login - - - - {{themecss}} - {{appicons}} - {{manifest}} - {{startupimages}} - - - - -
-
-
-
-
-
-

Sign in

-
-
-
-
- -
- - -
-
-
- -
- - -
-
- -
- -
-
Or sign in with
-
-
- - - - - -
-
-
- -
- - - - - - diff --git a/theme/login.html b/theme/login.html deleted file mode 100644 index aed07bc..0000000 --- a/theme/login.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Login - - - - {{themecss}} - {{appicons}} - {{manifest}} - {{startupimages}} - - - - -
-
-
-
-
-
-

Sign in

-
-
-
-
- -
- - -
-
-
- -
- - -
-
- -
-
-
-
- -
- - - - - - diff --git a/theme/native/custom-variables.js b/theme/native/custom-variables.js new file mode 100644 index 0000000..e21e6af --- /dev/null +++ b/theme/native/custom-variables.js @@ -0,0 +1,792 @@ +import { Appearance, Platform } from "react-native"; +import { adjustFont, anyColorToRgbString, setContrastScale } from "../../themesource/atlas_core/native/api"; +import "./exclusion-variables"; +/* + +==> You can find a copy of the core variables below. (From styles/native/core/variables.js) +==> You can freely change any value in this file. +==> DO NOT change the core variable file (or any other file in core), as that makes updating Atlas a lot harder in the future. + +*/ +// == Global variables +// ## Variables to be used during styling +// -------------------------------------------------------------------------------------------------------------------// +// Brand Styles +export const brand = { + primary: "#264AE5", + success: "#3CB33D", + warning: "#ECA51C", + danger: "#E33F4E", + info: "#0086D9", + primaryLight: "#F3F5FF", + successLight: "#F1FCF1", + warningLight: "#FFF9E6", + dangerLight: "#FFEEF0", + infoLight: "#ECF9FF" +}; +// +// Dark Mode - Inherits OS theme if possible +export const darkMode = Appearance.getColorScheme() === "dark"; +// +// Background Colors +export const backgroundDefaults = { + primaryLight: "#FFF", + primaryDark: "#0A1325", + secondaryLight: "#F8F8F8", + secondaryDark: "#161F30" +}; +export const background = { + primary: darkMode ? backgroundDefaults.primaryDark : backgroundDefaults.primaryLight, + secondary: darkMode ? backgroundDefaults.secondaryDark : backgroundDefaults.secondaryLight, + brandPrimary: brand.primary, + brandSuccess: brand.success, + brandWarning: brand.warning, + brandDanger: brand.danger, + brandInfo: brand.info +}; +// +// Contrast (Gray) colors based on background.primary +export const contrast = { + highest: setContrastScale(0.95, background.primary), + higher: setContrastScale(0.8, background.primary), + high: setContrastScale(0.65, background.primary), + regular: setContrastScale(0.5, background.primary), + low: setContrastScale(0.35, background.primary), + lower: setContrastScale(0.2, background.primary), + lowest: setContrastScale(0.05, background.primary) +}; +// +// Border Style +export const border = { + color: darkMode ? "#3B4251" : "#CED0D3", + width: 1, + radiusSmall: 4, + radiusLarge: 8, + radiusLargest: 9999 +}; +// +// Font Styles +export const fontDefaults = { + colorTitleDark: "#0A1326", + colorTitleLight: "#FDFDFD", + colorParagraphDark: "#6C717E", + colorParagraphLight: "#E7E7E9", + colorDisabledDark: "#9DA1A8", + colorDisabledLight: "#9DA1A8" +}; +export const font = { + size: adjustFont(14), + sizeSmallest: adjustFont(10), + sizeSmall: adjustFont(12), + sizeLarge: adjustFont(16), + sizeLargest: adjustFont(18), + sizeH1: adjustFont(40), + sizeH2: adjustFont(34), + sizeH3: adjustFont(28), + sizeH4: adjustFont(24), + sizeH5: adjustFont(20), + sizeH6: adjustFont(16), + lineHeight: adjustFont(14) * 1.5, + lineHeightSmallest: adjustFont(10) * 1.5, + lineHeightSmall: adjustFont(12) * 1.5, + lineHeightLarge: adjustFont(16) * 1.5, + lineHeightLargest: adjustFont(18) * 1.5, + lineHeightH1: adjustFont(40) * 1.5, + lineHeightH2: adjustFont(34) * 1.5, + lineHeightH3: adjustFont(28) * 1.5, + lineHeightH4: adjustFont(24) * 1.5, + lineHeightH5: adjustFont(20) * 1.5, + lineHeightH6: adjustFont(16) * 1.5, + colorTitle: darkMode ? fontDefaults.colorTitleLight : fontDefaults.colorTitleDark, + colorParagraph: darkMode ? fontDefaults.colorParagraphLight : fontDefaults.colorParagraphDark, + colorDisabled: darkMode ? fontDefaults.colorDisabledLight : fontDefaults.colorDisabledDark, + weightLight: "100", + weightNormal: "normal", + weightSemiBold: "600", + weightBold: "bold", + family: Platform.select({ ios: "System", android: "normal" }) +}; +// +// Spacing +export const spacing = { + smallest: 2, + smaller: 4, + small: 8, + regular: 16, + large: 24, + larger: 32, + largest: 40 +}; +// +// Button Styles +export const button = { + // Start default styles + container: { + rippleColor: contrast.lowest, + borderRadius: border.radiusLarge, + minWidth: 48, + minHeight: 48, + paddingVertical: spacing.small, + paddingHorizontal: spacing.small + }, + containerDisabled: { + borderColor: border.color, + backgroundColor: border.color + }, + icon: { + size: font.sizeSmall + }, + iconDisabled: { + color: font.colorDisabled + }, + caption: { + fontSize: font.sizeSmall, + fontWeight: font.weightBold + }, + captionDisabled: { + color: font.colorDisabled + }, + // End default styles + header: { + color: contrast.highest, + borderColor: "transparent", + backgroundColor: "transparent", + fontSize: font.sizeSmall, + fontSizeIcon: font.sizeSmall, + paddingLeft: 0, + paddingRight: 10 + }, + primary: { + color: "#FFF", + borderColor: brand.primary, + backgroundColor: brand.primary + }, + secondary: { + color: brand.primary, + borderColor: brand.primary, + backgroundColor: "transparent", + inversedColor: "#FFF" + }, + success: { + color: "#FFF", + borderColor: brand.success, + backgroundColor: brand.success + }, + warning: { + color: "#FFF", + borderColor: brand.warning, + backgroundColor: brand.warning + }, + danger: { + color: "#FFF", + borderColor: brand.danger, + backgroundColor: brand.danger + } +}; +// +// Input Styles +export const input = { + label: { + numberOfLines: 1, + color: font.colorTitle, + fontSize: font.sizeSmall, + textAlign: "left" + }, + labelDisabled: { + color: font.colorTitle + }, + input: { + color: font.colorTitle, + borderColor: contrast.lower, + backgroundColor: background.primary, + selectionColor: contrast.lower, + placeholderTextColor: contrast.low, + fontSize: font.size, + lineHeight: font.lineHeight, + borderWidth: border.width, + borderRadius: border.radiusLarge, + minWidth: 48, + minHeight: 48, + paddingVertical: spacing.small, + paddingHorizontal: spacing.small + }, + inputContainer: { + underlayColor: `rgba(${anyColorToRgbString(contrast.low)},0.4)` + }, + inputDisabled: { + color: font.colorDisabled, + borderColor: border.color, + backgroundColor: background.secondary + }, + inputError: { + color: brand.danger, + borderColor: brand.danger, + placeholderTextColor: brand.danger, + backgroundColor: brand.dangerLight + }, + validationMessage: { + color: brand.danger, + fontSize: font.size + }, + // Only used for the DropDown & ReferenceSelector + valueContainer: { + rippleColor: contrast.lowest + }, + itemContainer: { + paddingVertical: 12, + paddingHorizontal: spacing.regular, + backgroundColor: background.primary + }, + item: { + color: font.colorTitle, + fontSize: font.size + }, + selectedItemContainer: { + borderWidth: border.width, + borderRadius: border.radiusLarge, + borderColor: brand.primary, + backgroundColor: "transparent" + }, + selectedItem: { + color: font.colorTitle, + fontSize: font.size + } +}; +export const image = { + image: { + small: 24, + medium: 40, + large: 56, + larger: 72 + }, + imageDisabled: { + opacity: 0.6 + }, + icon: 16 +}; +// +// Navigation Styles +export const navigation = { + statusBar: { + backgroundColor: background.primary, + barStyle: darkMode ? "light-content" : "dark-content" + }, + topBar: { + backgroundColor: brand.primary, + backButtonColor: "#FFF", + titleColor: "#FFF", + titleFontSize: font.sizeH6 + }, + bottomBar: { + color: contrast.high, + selectedTextColor: brand.primary, + selectedIconColor: brand.primary, + backgroundColor: background.primary, + fontSize: font.sizeSmall, + iconSize: font.sizeSmall + }, + progressOverlay: { + color: font.colorTitle, + activityIndicatorColor: font.colorTitle, + backgroundColor: "rgba(0, 0, 0, 0.5)", + containerBackgroundColor: background.secondary, + fontSize: font.size, + borderRadius: border.radiusSmall, + elevation: 1.5, + shadowColor: "#000", + shadowOpacity: 0.1, + shadowRadius: 10 // Only for iOS + } +}; +// +// Checkbox styles +export const checkbox = { + checkboxInput: { + color: brand.primary, + size: 20, + backgroundColor: background.primary, + borderColor: border.color, + borderWidth: border.width, + borderRadius: border.radiusSmall, + width: 40, + height: 40 + }, + checkboxInputDisabled: { + color: brand.primaryLight, + backgroundColor: background.secondary + }, + checkboxInputError: { + color: brand.danger, + borderColor: brand.danger + } +}; +// +// Container Styles +export const container = { + containerDisabled: { + opacity: 0.6 + } +}; +// +// Accordion Styles +export const accordion = { + container: { + backgroundColor: background.primary, + borderColor: border.color + }, + groupHeader: { + container: { + paddingVertical: spacing.regular, + paddingHorizontal: spacing.regular + }, + heading: { + color: font.colorTitle + }, + icon: { + size: font.sizeLarge, + color: font.colorTitle + } + }, + groupContent: { + paddingTop: spacing.small, + paddingBottom: spacing.large, + paddingHorizontal: spacing.regular + } +}; +// +// Badge Styles +export const badge = { + fontWeight: font.weightNormal, + borderRadius: border.radiusLarge, + paddingVertical: spacing.smaller, + paddingHorizontal: spacing.small, + default: { + color: contrast.higher, + backgroundColor: contrast.lowest + }, + primary: { + color: brand.primary, + backgroundColor: brand.primaryLight + }, + success: { + color: brand.success, + backgroundColor: brand.successLight + }, + warning: { + color: brand.warning, + backgroundColor: brand.warningLight + }, + danger: { + color: brand.danger, + backgroundColor: brand.dangerLight + } +}; +// +// Tabcontainer Styles +export const tabContainer = { + tabBar: { + pressColor: contrast.lower, + backgroundColor: brand.primary + }, + tab: { + paddingVertical: 12 + }, + indicator: { + backgroundColor: fontDefaults.colorTitleLight, + height: Platform.select({ ios: 2, android: 2 }) + }, + label: { + color: fontDefaults.colorTitleLight, + fontSize: font.size, + fontWeight: font.weightSemiBold, + textTransform: "capitalize" + }, + activeLabel: { + color: fontDefaults.colorTitleLight, + fontSize: font.size, + fontWeight: font.weightSemiBold, + textTransform: "capitalize" + }, + badgeContainer: { + borderRadius: border.radiusLargest, + backgroundColor: badge.default.backgroundColor, + paddingVertical: spacing.smallest, + paddingHorizontal: spacing.small, + marginLeft: 8 + }, + badgeCaption: { + fontSize: font.size, + color: badge.default.color, + fontWeight: badge.fontWeight + } +}; +// +// ListView Styles +export const listView = { + listItemDisabled: { + opacity: 0.6 + }, + border: { + color: border.color, + width: border.width + } +}; +// +// Layoutgrid Styles +export const layoutGrid = { + gutterSize: 16 +}; +// +// +// Floating Action Button Styles +export const floatingActionButton = { + container: { + margin: 30 + }, + button: { + size: 50, + rippleColor: contrast.lowest, + borderColor: brand.primary, + backgroundColor: brand.primary + }, + buttonIcon: { + size: font.sizeLarge, + color: contrast.lowest + }, + secondaryButton: { + size: 30, + backgroundColor: background.secondary + }, + secondaryButtonIcon: { + size: font.sizeSmall, + color: contrast.high + }, + secondaryButtonCaption: { + color: contrast.high, + fontSize: font.sizeSmall + }, + secondaryButtonCaptionContainer: { + backgroundColor: background.primary, + borderColor: background.primary + } +}; +// +// Intro Screen Styles +export const introScreen = { + fullscreenContainer: { + backgroundColor: background.primary + }, + popupContainer: { + paddingVertical: 150, + paddingHorizontal: 50, + backgroundColor: "rgba(0, 0, 0, 0.5)" + }, + pagination: { + text: { + color: font.colorTitle, + fontSize: font.size + }, + dotStyle: { + size: spacing.small, + backgroundColor: contrast.lower + }, + activeDotStyle: { + size: spacing.small, + backgroundColor: font.colorTitle + } + }, + button: { + icon: { + color: font.colorTitle, + size: button.icon.size + }, + caption: { + color: font.colorTitle, + fontSize: button.caption.fontSize, + fontWeight: font.weightBold, + textTransform: "uppercase", + paddingHorizontal: spacing.smallest + } + }, + buttonPaginationAbove: { + container: { + paddingVertical: spacing.regular, + backgroundColor: button.primary.backgroundColor + } + } +}; +// +// List View Swipe Styles +export const listViewSwipe = { + leftAction: { + panelSize: 160, + panelSizeSmall: 80, + panelSizeLarge: 240, + backgroundColor: background.primary + }, + rightAction: { + panelSize: 160, + panelSizeSmall: 80, + panelSizeLarge: 240, + backgroundColor: background.primary + } +}; +// +// Progress Bar Styles +export const progressBar = { + bar: { + height: 8, + heightSmall: 4, + heightLarge: 12, + backgroundColor: contrast.lowest + }, + fill: { + backgroundColor: brand.primary + } +}; +// +// Progress Circle Styles +export const progressCircle = { + circle: { + size: 64 + }, + fill: { + width: 4, + lineCapRounded: true, + backgroundColor: brand.primary + }, + text: { + color: contrast.regular, + fontSize: font.size, + fontWeight: font.weightSemiBold + } +}; +// +// Rating Styles +export const rating = { + containerDisabled: { + opacity: 0.5 + }, + icon: { + size: 24, + color: contrast.lower, + selectedColor: brand.warning + } +}; +// +// (Range)Slider styles +export const slider = { + track: { + height: 4, + backgroundColor: contrast.lowest + }, + trackDisabled: { + backgroundColor: contrast.lower, + opacity: 0.4 + }, + highlight: { + backgroundColor: brand.primary + }, + highlightDisabled: { + backgroundColor: brand.primary + }, + marker: { + size: 24, + borderColor: contrast.lowest, + backgroundColor: background.secondary + }, + markerActive: { + size: 32 + }, + markerDisabled: { + size: 24, + borderColor: contrast.lowest, + backgroundColor: background.secondary + } +}; +// Radio buttons styles +export const radioButtons = { + labelTextStyle: { + color: font.colorTitle, + fontSize: font.sizeSmall, + lineHeight: font.lineHeightSmall, + marginBottom: spacing.small + }, + radioButtonItemContainerStyle: { + marginBottom: spacing.small + }, + radioButtonItemContainerDisabledStyle: { + opacity: 0.5 + }, + radioButtonItemContainerHorizontalStyle: { + marginEnd: spacing.small + }, + circularButtonStyle: { + width: 16, + height: 16, + borderRadius: 8, + borderColor: border.color, + marginEnd: spacing.smaller + }, + activeButtonStyle: { + width: 8, + height: 8, + borderRadius: 4, + backgroundColor: brand.primary + }, + radioButtonItemTitleStyle: { + color: font.colorTitle, + fontSize: font.sizeSmall, + lineHeight: font.lineHeightSmall + }, + validationMessage: { + color: brand.danger, + fontSize: font.sizeSmall + } +}; +// +// Background gradient style +export const backgroundGradient = { + container: {}, + angle: 0, + opacity: 100 +}; +// column chart styles +export const columnChart = { + container: {}, + errorMessage: { + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal + }, + chart: {}, + grid: { + lineColor: border.color + }, + xAxis: { + color: font.colorTitle, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal, + label: { + color: font.colorParagraph, + alignSelf: "center", + marginHorizontal: 0, + marginVertical: 8, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal + }, + lineColor: border.color + }, + yAxis: { + color: font.colorTitle, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal, + label: { + color: font.colorParagraph, + marginHorizontal: 0, + marginVertical: 8, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal + }, + lineColor: border.color + }, + columns: { + columnColorPalette: Object.entries(brand) + .reduce((accumulator, [key, value]) => (key.endsWith("Light") ? accumulator : [...accumulator, value]), []) + .join(";"), + columnsOffset: 20, + customColumnStyles: { + your_static_or_dynamic_attribute_value: { + column: {}, + label: {} + } + } + }, + legend: { + container: { + justifyContent: "flex-start", + marginHorizontal: 0, + marginVertical: spacing.small + }, + item: { + padding: 0, + paddingRight: spacing.regular + }, + indicator: { + marginRight: spacing.small + }, + label: { + color: font.colorTitle, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal + } + } +}; +// TODO add bar chart styles +// Gallery style +export const gallery = { + container: {}, + emptyPlaceholder: {}, + firstItem: {}, + lastItem: {}, + list: {}, + listItem: { flexGrow: 1 }, + loadMoreButtonContainer: { + alignSelf: "stretch" + }, + loadMoreButtonPressableContainer: { + // Ripplecolor and all ViewStyle properties are allowed + borderWidth: 1, + borderStyle: "solid", + rippleColor: button.container.rippleColor, + borderColor: button.primary.borderColor, + backgroundColor: button.primary.backgroundColor, + alignItems: "center", + justifyContent: "center", + borderRadius: button.container.borderRadius, + minWidth: button.container.minWidth, + minHeight: button.container.minHeight, + paddingVertical: button.container.paddingVertical, + paddingHorizontal: button.container.paddingHorizontal + }, + loadMoreButtonCaption: { + // All TextStyle properties are allowed + color: button.primary.color, + fontSize: button.caption.fontSize, + fontFamily: font.family, + fontWeight: button.caption.fontWeight, + lineHeight: font.lineHeight + } +}; +// Gallery text filter style +export const galleryTextFilter = { + textInputContainer: { + flexDirection: "row", + justifyContent: "space-between", + borderWidth: input.input.borderWidth, + borderColor: input.input.borderColor, + borderRadius: input.input.borderRadius, + paddingEnd: 8 + }, + textInputContainerFocused: { + borderColor: brand.primary + }, + textInput: { + height: 40, + marginStart: spacing.regular, + width: "90%", + color: input.input.color, + backgroundColor: input.input.backgroundColor, + selectionColor: input.input.selectionColor, + placeholderTextColor: input.input.placeholderTextColor + }, + textInputClearIcon: { + justifyContent: "center", + alignContent: "center" + } +}; diff --git a/theme/native/exclusion-variables.js b/theme/native/exclusion-variables.js new file mode 100644 index 0000000..dcb0cdd --- /dev/null +++ b/theme/native/exclusion-variables.js @@ -0,0 +1,124 @@ +// == Variables to exclude files +// ## Reduce the amount of files imported from the Atlas_Core module +// -------------------------------------------------------------------------------------------------------------------// +// Accordion +export const excludeAccordion = false; +export const excludeAccordionHelpers = false; +// Activity Indicator +export const excludeActivityIndicator = false; +export const excludeActivityIndicatorHelpers = false; +// Animation +export const excludeAnimation = false; +// Background Image +export const excludeBackgroundImage = false; +// Badge +export const excludeBadge = false; +export const excludeBadgeHelpers = false; +// Bottom Sheet +export const excludeBottomSheet = false; +// Buttons +export const excludeButtons = false; +export const excludeButtonsHelpers = false; +// Carousel +export const excludeCarousel = false; +// CheckBox +export const excludeCheckBox = false; +// Color Picker +export const excludeColorPicker = false; +// Container +export const excludeContainer = false; +// Date Picker +export const excludeDatePicker = false; +// Drop Down +export const excludeDropDown = false; +// Feedback +export const excludeFeedback = false; +// Floating Action Button +export const excludeFAB = false; +export const excludeFABHelpers = false; +// Image +export const excludeImage = false; +export const excludeImageHelpers = false; +// Intro Screen +export const excludeIntroScreen = false; +export const excludeIntroScreenHelpers = false; +// Layout Grid +export const excludeLayoutGrid = false; +// Line Chart +export const excludeLineChart = false; +export const excludeLineChartHelpers = false; +// Bar Chart +export const excludeBarChart = false; +export const excludeBarChartHelpers = false; +// List View +export const excludeListView = false; +export const excludeListViewHelpers = false; +// List View Swipe +export const excludeListViewSwipe = false; +export const excludeListViewSwipeHelpers = false; +// Maps +export const excludeMaps = false; +export const excludeMapsHelpers = false; +// Page Title +export const excludePageTitle = false; +// Pie Doughnut Chart +export const excludePieDoughnutChart = false; +// Progress Bar +export const excludeProgressBar = false; +export const excludeProgressBarHelpers = false; +// Progress Circle +export const excludeProgressCircle = false; +export const excludeProgressCircleHelpers = false; +// Pop Up Menu +export const excludePopUpMenu = false; +// QR Code +export const excludeQRCode = false; +// Range Slider +export const excludeRangeSlider = false; +export const excludeRangeSliderHelpers = false; +// Rating +export const excludeRating = false; +// Reference Selector +export const excludeReferenceSelector = false; +// Safe Area View +export const excludeSafeAreaView = false; +// Slider +export const excludeSlider = false; +export const excludeSliderHelpers = false; +// Switch +export const excludeSwitch = false; +export const excludeSwitchHelpers = false; +// Tab Container +export const excludeTabContainer = false; +export const excludeTabContainerHelpers = false; +// Text Area +export const excludeTextArea = false; +// Text Box +export const excludeTextBox = false; +export const excludeTextBoxHelpers = false; +// Toggle Buttons +export const excludeToggleButtons = false; +// Typography +export const excludeTypography = false; +export const excludeTypographyHelpers = false; +// VideoPlayer +export const excludeVideoPlayer = false; +// Web View +export const excludeWebView = false; +// Helper Classes +export const excludeHelpers = false; +// Radio Buttons +export const excludeRadioButtons = false; +export const excludeRadioButtonsHelper = false; +// Background Gradient +export const excludeBackgroundGradient = false; +export const excludeBackgroundGradientHelper = false; +// Column Chart +export const excludeColumnChart = false; +export const excludeColumnChartHelper = false; +// Gallery +export const excludeGallery = false; +export const excludeGalleryHelper = false; +// Gallery Text Filter +export const excludeGalleryTextFilter = false; +export const excludeGalleryTextFilterHelper = false; diff --git a/theme/native/main.js b/theme/native/main.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/theme/native/main.js @@ -0,0 +1 @@ +export {}; diff --git a/theme/scripts/bump-major.js b/theme/scripts/bump-major.js deleted file mode 100644 index 2bb584e..0000000 --- a/theme/scripts/bump-major.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getVersionFilePaths, readVersionFiles } = require("./lib/readFile.js"); -const { writeVersionFiles } = require("./lib/writeFile.js"); - -(() => { - const paths = getVersionFilePaths(); - const files = readVersionFiles(paths); - const versionNumbers = files.pkg.version.split("."); - const majorNumber = Number(versionNumbers[1]) + 1; - const majorVersion = majorNumber + "." + 0 + "." + 0; - files.pkg.version = files.manifest.ts.version = files.manifest.js.version = files.manifest.sass.version = majorVersion; - writeVersionFiles(files, paths); -})(); diff --git a/theme/scripts/bump-minor.js b/theme/scripts/bump-minor.js deleted file mode 100644 index e4e9ac3..0000000 --- a/theme/scripts/bump-minor.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getVersionFilePaths, readVersionFiles } = require("./lib/readFile.js"); -const { writeVersionFiles } = require("./lib/writeFile.js"); - -(() => { - const paths = getVersionFilePaths(); - const files = readVersionFiles(paths); - const versionNumbers = files.pkg.version.split("."); - const minorNumber = Number(versionNumbers[1]) + 1; - const minorVersion = versionNumbers[0] + "." + minorNumber + "." + 0; - files.pkg.version = files.manifest.ts.version = files.manifest.js.version = files.manifest.sass.version = minorVersion; - writeVersionFiles(files, paths); -})(); diff --git a/theme/scripts/bump-patch.js b/theme/scripts/bump-patch.js deleted file mode 100644 index 52e7baa..0000000 --- a/theme/scripts/bump-patch.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getVersionFilePaths, readVersionFiles } = require("./lib/readFile.js"); -const { writeVersionFiles } = require("./lib/writeFile.js"); - -(() => { - const paths = getVersionFilePaths(); - const files = readVersionFiles(paths); - const versionNumbers = files.pkg.version.split("."); - const patchedNumber = Number(versionNumbers[2]) + 1; - const patchedVersion = versionNumbers[0] + "." + versionNumbers[1] + "." + patchedNumber; - files.pkg.version = files.manifest.ts.version = files.manifest.js.version = files.manifest.sass.version = patchedVersion; - writeVersionFiles(files, paths); -})(); diff --git a/theme/scripts/lib/readFile.js b/theme/scripts/lib/readFile.js deleted file mode 100644 index 50f0a8c..0000000 --- a/theme/scripts/lib/readFile.js +++ /dev/null @@ -1,20 +0,0 @@ -const path = require("path"); - -module.exports.getVersionFilePaths = () => ({ - pkg: path.join(process.cwd(), "package.json"), - manifest: { - ts: path.join(process.cwd(), "styles", "native", "ts", "core", "manifest.json"), - js: path.join(process.cwd(), "styles", "native", "js", "core", "manifest.json"), - sass: path.join(process.cwd(), "styles", "web", "sass", "core", "manifest.json"), - }, -}); - -module.exports.readVersionFiles = paths => ({ - pkg: require(paths.pkg), - manifest: { - ts: require(paths.manifest.ts), - js: require(paths.manifest.js), - sass: require(paths.manifest.sass), - }, -}); - diff --git a/theme/scripts/lib/writeFile.js b/theme/scripts/lib/writeFile.js deleted file mode 100644 index fb35779..0000000 --- a/theme/scripts/lib/writeFile.js +++ /dev/null @@ -1,8 +0,0 @@ -const fs = require("fs"); - -module.exports.writeVersionFiles = (files, paths) => { - fs.writeFileSync(paths.pkg, JSON.stringify(files.pkg, null, 4)); - fs.writeFileSync(paths.manifest.js, JSON.stringify(files.manifest.js, null, 4)); - fs.writeFileSync(paths.manifest.ts, JSON.stringify(files.manifest.ts, null, 4)); - fs.writeFileSync(paths.manifest.sass, JSON.stringify(files.manifest.sass, null, 4)); -}; diff --git a/theme/settings-native.json b/theme/settings-native.json deleted file mode 100644 index d31c9b1..0000000 --- a/theme/settings-native.json +++ /dev/null @@ -1,1764 +0,0 @@ -{ - "designProperties": { - "Document": [ - { - "name": "Spacing top", - "type": "Dropdown", - "description": "The spacing above this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerTopSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerTopMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerTopLarger" - } - ] - }, - { - "name": "Spacing bottom", - "type": "Dropdown", - "description": "The spacing below this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerBottomSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerBottomMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerBottomLarger" - } - ] - }, - { - "name": "Spacing left", - "type": "Dropdown", - "description": "The spacing to the left of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerLeftSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerLeftMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerLeftLarger" - } - ] - }, - { - "name": "Spacing right", - "type": "Dropdown", - "description": "The spacing to the right of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerRightSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerRightMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerRightLarger" - } - ] - }, - { - "name": "Background color", - "type": "Dropdown", - "description": "Change the background color of the container.", - "options": [ - { - "name": "Primary", - "class": "backgroundPrimary" - }, - { - "name": "Secondary", - "class": "backgroundSecondary" - }, - { - "name": "Brand Primary", - "class": "backgroundBrandPrimary" - }, - { - "name": "Brand Success", - "class": "backgroundBrandSuccess" - }, - { - "name": "Brand Warning", - "class": "backgroundBrandWarning" - }, - { - "name": "Brand Danger", - "class": "backgroundBrandDanger" - } - ] - }, - { - "name": "Render children horizontal", - "type": "Toggle", - "description": "Determines the direction in which children are rendered.", - "class": "flexRow" - }, - { - "name": "Wrap children", - "type": "Toggle", - "description": "Determines if children can flow into multiple lines if they hit the end of the container.", - "class": "flexWrap" - }, - { - "name": "Align children", - "type": "Dropdown", - "description": "Align children in the opposite direction.", - "options": [ - { - "name": "Start", - "class": "alignChildrenStart" - }, - { - "name": "Center", - "class": "alignChildrenCenter" - }, - { - "name": "End", - "class": "alignChildrenEnd" - }, - { - "name": "Stretch", - "class": "alignChildrenStretch" - }, - { - "name": "Baseline", - "class": "alignChildrenBaseline" - } - ] - }, - { - "name": "Justify content", - "type": "Dropdown", - "description": "Justify content in the active direction.", - "options": [ - { - "name": "Start", - "class": "justifyContentStart" - }, - { - "name": "Center", - "class": "justifyContentCenter" - }, - { - "name": "End", - "class": "justifyContentEnd" - }, - { - "name": "Space between", - "class": "justifyContentSpaceBetween" - }, - { - "name": "Space around", - "class": "justifyContentSpaceAround" - }, - { - "name": "Space evenly", - "class": "justifyContentSpaceEvenly" - } - ] - } - ], - "Page": [ - { - "name": "Hide header bottom border", - "type": "Toggle", - "description": "Hide the bottom border (iOS) and elevation (Android) of the header.", - "class": "pageHeaderBorderNone" - } - ], - "Widget": [ - { - "name": "Spacing top", - "type": "Dropdown", - "description": "The spacing above this element.", - "options": [ - { - "name": "Smallest", - "class": "spacingOuterTopSmallest" - }, - { - "name": "Small", - "class": "spacingOuterTopSmaller" - }, - { - "name": "Medium", - "class": "spacingOuterTopMedium" - }, - { - "name": "Large", - "class": "spacingOuterTopLarger" - }, - { - "name": "Largest", - "class": "spacingOuterTopLargest" - } - ] - }, - { - "name": "Spacing bottom", - "type": "Dropdown", - "description": "The spacing below this element.", - "options": [ - { - "name": "Smallest", - "class": "spacingOuterBottomSmallest" - }, - { - "name": "Small", - "class": "spacingOuterBottomSmaller" - }, - { - "name": "Medium", - "class": "spacingOuterBottomMedium" - }, - { - "name": "Large", - "class": "spacingOuterBottomLarger" - }, - { - "name": "Largest", - "class": "spacingOuterBottomLargest" - } - ] - }, - { - "name": "Spacing left", - "type": "Dropdown", - "description": "The spacing to the left of this element.", - "options": [ - { - "name": "Smallest", - "class": "spacingOuterLeftSmallest" - }, - { - "name": "Small", - "class": "spacingOuterLeftSmaller" - }, - { - "name": "Medium", - "class": "spacingOuterLeftMedium" - }, - { - "name": "Large", - "class": "spacingOuterLeftLarger" - }, - { - "name": "Largest", - "class": "spacingOuterLeftLargest" - } - ] - }, - { - "name": "Spacing right", - "type": "Dropdown", - "description": "The spacing to the right of this element.", - "options": [ - { - "name": "Smallest", - "class": "spacingOuterRightSmallest" - }, - { - "name": "Small", - "class": "spacingOuterRightSmaller" - }, - { - "name": "Medium", - "class": "spacingOuterRightMedium" - }, - { - "name": "Large", - "class": "spacingOuterRightLarger" - }, - { - "name": "Largest", - "class": "spacingOuterRightLargest" - } - ] - } - ], - "DivContainer": [ - { - "name": "Spacing top", - "type": "Dropdown", - "description": "The spacing above this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerTopSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerTopMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerTopLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterTopSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterTopMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterTopLarger" - } - ] - }, - { - "name": "Spacing bottom", - "type": "Dropdown", - "description": "The spacing below this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerBottomSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerBottomMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerBottomLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterBottomSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterBottomMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterBottomLarger" - } - ] - }, - { - "name": "Spacing left", - "type": "Dropdown", - "description": "The spacing to the left of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerLeftSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerLeftMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerLeftLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterLeftSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterLeftMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterLeftLarger" - } - ] - }, - { - "name": "Spacing right", - "type": "Dropdown", - "description": "The spacing to the right of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerRightSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerRightMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerRightLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterRightSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterRightMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterRightLarger" - } - ] - }, - { - "name": "Size", - "type": "Dropdown", - "description": "Change the size of the widget relative to its sibling(s).", - "options": [ - { - "name": "Maximum space", - "class": "flexMain" - }, - { - "name": "Minimum space", - "class": "flexItem" - } - ] - }, - { - "name": "Background color", - "type": "Dropdown", - "description": "Change the background color of the container.", - "options": [ - { - "name": "Primary", - "class": "backgroundPrimary" - }, - { - "name": "Secondary", - "class": "backgroundSecondary" - }, - { - "name": "Brand Primary", - "class": "backgroundBrandPrimary" - }, - { - "name": "Brand Success", - "class": "backgroundBrandSuccess" - }, - { - "name": "Brand Warning", - "class": "backgroundBrandWarning" - }, - { - "name": "Brand Danger", - "class": "backgroundBrandDanger" - } - ] - }, - { - "name": "Align", - "type": "Dropdown", - "description": "Aligns the element. This overrides 'Align children' of the parent.", - "options": [ - { - "name": "Start", - "class": "alignSelfStart" - }, - { - "name": "Center", - "class": "alignSelfCenter" - }, - { - "name": "End", - "class": "alignSelfEnd" - }, - { - "name": "Stretch", - "class": "alignSelfStretch" - }, - { - "name": "Baseline", - "class": "alignSelfBaseline" - } - ] - }, - { - "name": "Render children horizontal", - "type": "Toggle", - "description": "Determines the direction in which children are rendered.", - "class": "flexRow" - }, - { - "name": "Wrap children", - "type": "Toggle", - "description": "Determines if children can flow into multiple lines if they hit the end of the container.", - "class": "flexWrap" - }, - { - "name": "Align children", - "type": "Dropdown", - "description": "Align children in the opposite direction.", - "options": [ - { - "name": "Start", - "class": "alignChildrenStart" - }, - { - "name": "Center", - "class": "alignChildrenCenter" - }, - { - "name": "End", - "class": "alignChildrenEnd" - }, - { - "name": "Stretch", - "class": "alignChildrenStretch" - }, - { - "name": "Baseline", - "class": "alignChildrenBaseline" - } - ] - }, - { - "name": "Justify content", - "type": "Dropdown", - "description": "Justify content in the active direction.", - "options": [ - { - "name": "Start", - "class": "justifyContentStart" - }, - { - "name": "Center", - "class": "justifyContentCenter" - }, - { - "name": "End", - "class": "justifyContentEnd" - }, - { - "name": "Space between", - "class": "justifyContentSpaceBetween" - }, - { - "name": "Space around", - "class": "justifyContentSpaceAround" - }, - { - "name": "Space evenly", - "class": "justifyContentSpaceEvenly" - } - ] - } - ], - "ScrollContainer": [ - { - "name": "Spacing top", - "type": "Dropdown", - "description": "The spacing above this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerTopSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerTopMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerTopLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterTopSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterTopMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterTopLarger" - } - ] - }, - { - "name": "Spacing bottom", - "type": "Dropdown", - "description": "The spacing below this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerBottomSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerBottomMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerBottomLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterBottomSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterBottomMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterBottomLarger" - } - ] - }, - { - "name": "Spacing left", - "type": "Dropdown", - "description": "The spacing to the left of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerLeftSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerLeftMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerLeftLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterLeftSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterLeftMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterLeftLarger" - } - ] - }, - { - "name": "Spacing right", - "type": "Dropdown", - "description": "The spacing to the right of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerRightSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerRightMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerRightLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterRightSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterRightMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterRightLarger" - } - ] - }, - { - "name": "Size", - "type": "Dropdown", - "description": "Change the size of the widget relative to its sibling(s).", - "options": [ - { - "name": "Maximum space", - "class": "flexMain" - }, - { - "name": "Minimum space", - "class": "flexItem" - } - ] - }, - { - "name": "Background color", - "type": "Dropdown", - "description": "Change the background color of the container.", - "options": [ - { - "name": "Primary", - "class": "backgroundPrimary" - }, - { - "name": "Secondary", - "class": "backgroundSecondary" - }, - { - "name": "Brand Primary", - "class": "backgroundBrandPrimary" - }, - { - "name": "Brand Success", - "class": "backgroundBrandSuccess" - }, - { - "name": "Brand Warning", - "class": "backgroundBrandWarning" - }, - { - "name": "Brand Danger", - "class": "backgroundBrandDanger" - } - ] - }, - { - "name": "Align", - "type": "Dropdown", - "description": "Aligns the element. This overrides 'Align children' of the parent.", - "options": [ - { - "name": "Start", - "class": "alignSelfStart" - }, - { - "name": "Center", - "class": "alignSelfCenter" - }, - { - "name": "End", - "class": "alignSelfEnd" - }, - { - "name": "Stretch", - "class": "alignSelfStretch" - }, - { - "name": "Baseline", - "class": "alignSelfBaseline" - } - ] - }, - { - "name": "Render children horizontal", - "type": "Toggle", - "description": "Determines the direction in which children are rendered.", - "class": "flexRow" - }, - { - "name": "Wrap children", - "type": "Toggle", - "description": "Determines if children can flow into multiple lines if they hit the end of the container.", - "class": "flexWrap" - }, - { - "name": "Align children", - "type": "Dropdown", - "description": "Align children in the opposite direction.", - "options": [ - { - "name": "Start", - "class": "alignChildrenStart" - }, - { - "name": "Center", - "class": "alignChildrenCenter" - }, - { - "name": "End", - "class": "alignChildrenEnd" - }, - { - "name": "Stretch", - "class": "alignChildrenStretch" - }, - { - "name": "Baseline", - "class": "alignChildrenBaseline" - } - ] - }, - { - "name": "Justify content", - "type": "Dropdown", - "description": "Justify content in the active direction.", - "options": [ - { - "name": "Start", - "class": "justifyContentStart" - }, - { - "name": "Center", - "class": "justifyContentCenter" - }, - { - "name": "End", - "class": "justifyContentEnd" - }, - { - "name": "Space between", - "class": "justifyContentSpaceBetween" - }, - { - "name": "Space around", - "class": "justifyContentSpaceAround" - } - ] - } - ], - "ActionButton": [ - { - "name": "Button style", - "type": "Dropdown", - "description": "Style of the button", - "options": [ - { - "name": "Secondary", - "class": "btnSecondary" - }, - { - "name": "Success", - "class": "btnSuccess" - }, - { - "name": "Warning", - "class": "btnWarning" - }, - { - "name": "Danger", - "class": "btnDanger" - }, - { - "name": "Inversed", - "class": "btnPrimaryInversed" - } - ] - }, - { - "name": "Align", - "type": "Dropdown", - "description": "Aligns the element. This overrides 'Align children' of the parent.", - "options": [ - { - "name": "Start", - "class": "alignSelfStart" - }, - { - "name": "Center", - "class": "alignSelfCenter" - }, - { - "name": "End", - "class": "alignSelfEnd" - }, - { - "name": "Stretch", - "class": "alignSelfStretch" - }, - { - "name": "Baseline", - "class": "alignSelfBaseline" - } - ] - } - ], - "Image": [ - { - "name": "Avatar", - "type": "Toggle", - "description": "Create an avatar image.", - "class": "avatar" - } - ], - "DynamicImage": [ - { - "name": "Avatar", - "type": "Toggle", - "description": "Create an avatar image.", - "class": "avatar" - } - ], - "DynamicText": [ - { - "name": "Color", - "type": "Dropdown", - "description": "Change the color of text.", - "options": [ - { - "name": "Brand primary", - "class": "textPrimary" - }, - { - "name": "Brand success", - "class": "textSuccess" - }, - { - "name": "Brand warning", - "class": "textWarning" - }, - { - "name": "Brand danger", - "class": "textDanger" - }, - { - "name": "White", - "class": "textWhite" - }, - { - "name": "Contrast lowest", - "class": "textContrastLowest" - }, - { - "name": "Contrast lower", - "class": "textContrastLower" - }, - { - "name": "Contrast low", - "class": "textContrastLow" - }, - { - "name": "Contrast default", - "class": "textContrastDefault" - }, - { - "name": "Contrast high", - "class": "textContrastHigh" - }, - { - "name": "Contrast higher", - "class": "textContrastHigher" - }, - { - "name": "Contrast highest", - "class": "textContrastHighest" - } - ] - }, - { - "name": "Size", - "type": "Dropdown", - "description": "Make the text smaller or larger.", - "options": [ - { - "name": "Small", - "class": "textSmall" - }, - { - "name": "Large", - "class": "textLarge" - } - ] - }, - { - "name": "Weight", - "type": "Dropdown", - "description": "Emphasize the text with a heavier or lighter font weight", - "options": [ - { - "name": "Light", - "class": "textLight" - }, - { - "name": "Default", - "class": "textNormal" - }, - { - "name": "Semibold", - "class": "textSemiBold" - }, - { - "name": "Bold", - "class": "textBold" - } - ] - }, - { - "name": "Alignment", - "type": "Dropdown", - "description": "Align the text.", - "options": [ - { - "name": "Left", - "class": "textLeft" - }, - { - "name": "Center", - "class": "textCenter" - }, - { - "name": "Right", - "class": "textRight" - } - ] - } - ], - "ListView": [ - { - "name": "List item divider", - "type": "Dropdown", - "description": "Give each list item a border.", - "options": [ - { - "name": "Vertical", - "class": "listItemBorderBottom" - }, - { - "name": "Horizontal", - "class": "listItemBorderRight" - } - ] - } - ], - "TabContainer": [ - { - "name": "Tab bar scroll", - "type": "Toggle", - "description": "Enable horizontal scroll for the tab bar.", - "class": "tabContainerScroll" - } - ], - "TextBox": [ - { - "name": "Capitalize", - "type": "Dropdown", - "description": "Change the capitalization of the input.", - "options": [ - { - "name": "None", - "class": "textInputCapitalizeNone" - }, - { - "name": "Characters", - "class": "textInputCapitalizeCharacters" - }, - { - "name": "Words", - "class": "textInputCapitalizeWords" - }, - { - "name": "Sentences", - "class": "textInputCapitalizeSentences" - } - ] - } - ], - "TextArea": [ - { - "name": "Capitalize", - "type": "Dropdown", - "description": "Change the capitalization of the input.", - "options": [ - { - "name": "None", - "class": "textInputCapitalizeNone" - }, - { - "name": "Characters", - "class": "textInputCapitalizeCharacters" - }, - { - "name": "Words", - "class": "textInputCapitalizeWords" - }, - { - "name": "Sentences", - "class": "textInputCapitalizeSentences" - } - ] - } - ], - "com.mendix.widget.native.activityindicator.ActivityIndicator": [ - { - "name": "Activity indicator style", - "type": "Dropdown", - "description": "Style of the Activity indicator.", - "options": [ - { - "name": "Success", - "class": "activityIndicatorSuccess" - }, - { - "name": "Warning", - "class": "activityIndicatorWarning" - }, - { - "name": "Danger", - "class": "activityIndicatorDanger" - } - ] - } - ], - "com.mendix.widget.native.animation.Animation": [ - { - "name": "Spacing top", - "type": "Dropdown", - "description": "The spacing above this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerTopSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerTopMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerTopLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterTopSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterTopMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterTopLarger" - } - ] - }, - { - "name": "Spacing bottom", - "type": "Dropdown", - "description": "The spacing below this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerBottomSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerBottomMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerBottomLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterBottomSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterBottomMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterBottomLarger" - } - ] - }, - { - "name": "Spacing left", - "type": "Dropdown", - "description": "The spacing to the left of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerLeftSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerLeftMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerLeftLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterLeftSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterLeftMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterLeftLarger" - } - ] - }, - { - "name": "Spacing right", - "type": "Dropdown", - "description": "The spacing to the right of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerRightSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerRightMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerRightLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterRightSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterRightMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterRightLarger" - } - ] - }, - { - "name": "Size", - "type": "Dropdown", - "description": "Change the size of the widget relative to its sibling(s).", - "options": [ - { - "name": "Maximum space", - "class": "flexMain" - }, - { - "name": "Minimum space", - "class": "flexItem" - } - ] - }, - { - "name": "Background color", - "type": "Dropdown", - "description": "Change the background color of the container.", - "options": [ - { - "name": "Primary", - "class": "backgroundPrimary" - }, - { - "name": "Secondary", - "class": "backgroundSecondary" - }, - { - "name": "Brand Primary", - "class": "backgroundBrandPrimary" - }, - { - "name": "Brand Success", - "class": "backgroundBrandSuccess" - }, - { - "name": "Brand Warning", - "class": "backgroundBrandWarning" - }, - { - "name": "Brand Danger", - "class": "backgroundBrandDanger" - } - ] - }, - { - "name": "Align", - "type": "Dropdown", - "description": "Aligns the element. This overrides 'Align children' of the parent.", - "options": [ - { - "name": "Stretch", - "class": "alignSelfStretch" - }, - { - "name": "Start", - "class": "alignSelfStart" - }, - { - "name": "Center", - "class": "alignSelfCenter" - }, - { - "name": "End", - "class": "alignSelfEnd" - } - ] - }, - { - "name": "Render children horizontal", - "type": "Toggle", - "description": "Determines the direction in which children are rendered.", - "class": "flexRow" - }, - { - "name": "Wrap children", - "type": "Toggle", - "description": "Determines if children can flow into multiple lines if they hit the end of the container.", - "class": "flexWrap" - }, - { - "name": "Align children", - "type": "Dropdown", - "description": "Align children in the opposite direction.", - "options": [ - { - "name": "Start", - "class": "alignChildrenStart" - }, - { - "name": "Center", - "class": "alignChildrenCenter" - }, - { - "name": "End", - "class": "alignChildrenEnd" - }, - { - "name": "Stretch", - "class": "alignChildrenStretch" - } - ] - }, - { - "name": "Justify children", - "type": "Dropdown", - "description": "Justify children in the active direction.", - "options": [ - { - "name": "Center", - "class": "justifyChildrenCenter" - }, - { - "name": "End", - "class": "justifyChildrenEnd" - }, - { - "name": "Space between", - "class": "justifyChildrenSpaceBetween" - }, - { - "name": "Space around", - "class": "justifyChildrenSpaceAround" - } - ] - } - ], - "com.mendix.widget.native.badge.Badge": [ - { - "name": "Badge style", - "type": "Dropdown", - "description": "Style of the Badge.", - "options": [ - { - "name": "Primary", - "class": "badgePrimary" - }, - { - "name": "Success", - "class": "badgeSuccess" - }, - { - "name": "Warning", - "class": "badgeWarning" - }, - { - "name": "Danger", - "class": "badgeDanger" - } - ] - } - ], - "com.mendix.widget.native.floatingactionbutton.FloatingActionButton": [ - { - "name": "Style", - "type": "Dropdown", - "description": "Style of the Floating Action Button.", - "options": [ - { - "name": "Success", - "class": "floatingActionButtonSuccess" - }, - { - "name": "Warning", - "class": "floatingActionButtonWarning" - }, - { - "name": "Danger", - "class": "floatingActionButtonDanger" - } - ] - } - ], - "com.mendix.widget.native.linechart.LineChart": [ - { - "name": "Chart size", - "type": "Dropdown", - "description": "Size of the chart.", - "options": [ - { - "name": "Square", - "class": "lineChartSquare" - }, - { - "name": "Maximum space", - "class": "lineChartMaxSpace" - } - ] - } - ], - "com.mendix.widget.native.listviewswipe.ListViewSwipe": [ - { - "name": "Panel size", - "type": "Dropdown", - "description": "Size of the left and right panel.", - "options": [ - { - "name": "Small", - "class": "listViewSwipeSmallPanels" - }, - { - "name": "Large", - "class": "listViewSwipeLargePanels" - } - ] - } - ], - "com.mendix.widget.native.maps.Maps": [ - { - "name": "Maps size", - "type": "Dropdown", - "description": "Size of the maps.", - "options": [ - { - "name": "Square", - "class": "mapsSquare" - }, - { - "name": "Maximum space", - "class": "mapsMaxSpace" - } - ] - }, - { - "name": "Maps marker style", - "type": "Dropdown", - "description": "Style of the marker.", - "options": [ - { - "name": "Success", - "class": "mapsSuccess" - }, - { - "name": "Warning", - "class": "mapsWarning" - }, - { - "name": "Danger", - "class": "mapsDanger" - } - ] - } - ], - "com.mendix.widget.native.progressbar.ProgressBar": [ - { - "name": "Progress bar style", - "type": "Dropdown", - "description": "Style of the progress bar.", - "options": [ - { - "name": "Success", - "class": "progressBarSuccess" - }, - { - "name": "Warning", - "class": "progressBarWarning" - }, - { - "name": "Danger", - "class": "progressBarDanger" - } - ] - }, - { - "name": "Progress bar size", - "type": "Dropdown", - "description": "Size of the progress bar.", - "options": [ - { - "name": "Small", - "class": "progressBarSmall" - }, - { - "name": "Large", - "class": "progressBarLarge" - } - ] - } - ], - "com.mendix.widget.native.progresscircle.ProgressCircle": [ - { - "name": "Progress circle style", - "type": "Dropdown", - "description": "Style of the progress circle.", - "options": [ - { - "name": "Success", - "class": "progressCircleSuccess" - }, - { - "name": "Warning", - "class": "progressCircleWarning" - }, - { - "name": "Danger", - "class": "progressCircleDanger" - } - ] - } - ], - "com.mendix.widget.native.rangeslider.RangeSlider": [ - { - "name": "Range Slider style", - "type": "Dropdown", - "description": "Style of the range slider.", - "options": [ - { - "name": "Success", - "class": "rangeSliderSuccess" - }, - { - "name": "Warning", - "class": "rangeSliderWarning" - }, - { - "name": "Danger", - "class": "rangeSliderDanger" - } - ] - } - ], - "com.mendix.widget.native.safeareaview.SafeAreaView": [ - { - "name": "Spacing top", - "type": "Dropdown", - "description": "The spacing above this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerTopSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerTopMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerTopLarger" - } - ] - }, - { - "name": "Spacing bottom", - "type": "Dropdown", - "description": "The spacing below this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerBottomSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerBottomMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerBottomLarger" - } - ] - }, - { - "name": "Spacing left", - "type": "Dropdown", - "description": "The spacing to the left of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerLeftSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerLeftMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerLeftLarger" - } - ] - }, - { - "name": "Spacing right", - "type": "Dropdown", - "description": "The spacing to the right of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerRightSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerRightMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerRightLarger" - } - ] - }, - { - "name": "Background color", - "type": "Dropdown", - "description": "Change the background color of the container.", - "options": [ - { - "name": "Primary", - "class": "backgroundPrimary" - }, - { - "name": "Secondary", - "class": "backgroundSecondary" - }, - { - "name": "Brand Primary", - "class": "backgroundBrandPrimary" - }, - { - "name": "Brand Success", - "class": "backgroundBrandSuccess" - }, - { - "name": "Brand Warning", - "class": "backgroundBrandWarning" - }, - { - "name": "Brand Danger", - "class": "backgroundBrandDanger" - } - ] - }, - { - "name": "Render children horizontal", - "type": "Toggle", - "description": "Determines the direction in which children are rendered.", - "class": "flexRow" - }, - { - "name": "Wrap children", - "type": "Toggle", - "description": "Determines if children can flow into multiple lines if they hit the end of the container.", - "class": "flexWrap" - }, - { - "name": "Align children", - "type": "Dropdown", - "description": "Align children in the opposite direction.", - "options": [ - { - "name": "Start", - "class": "alignChildrenStart" - }, - { - "name": "Center", - "class": "alignChildrenCenter" - }, - { - "name": "End", - "class": "alignChildrenEnd" - }, - { - "name": "Stretch", - "class": "alignChildrenStretch" - }, - { - "name": "Baseline", - "class": "alignChildrenBaseline" - } - ] - }, - { - "name": "Justify content", - "type": "Dropdown", - "description": "Justify content in the active direction.", - "options": [ - { - "name": "Start", - "class": "justifyContentStart" - }, - { - "name": "Center", - "class": "justifyContentCenter" - }, - { - "name": "End", - "class": "justifyContentEnd" - }, - { - "name": "Space between", - "class": "justifyContentSpaceBetween" - }, - { - "name": "Space around", - "class": "justifyContentSpaceAround" - }, - { - "name": "Space evenly", - "class": "justifyContentSpaceEvenly" - } - ] - } - ], - "com.mendix.widget.native.slider.Slider": [ - { - "name": "Slider style", - "type": "Dropdown", - "description": "Style of the slider.", - "options": [ - { - "name": "Success", - "class": "sliderSuccess" - }, - { - "name": "Warning", - "class": "sliderWarning" - }, - { - "name": "Danger", - "class": "sliderDanger" - } - ] - } - ] - } -} diff --git a/theme/settings.json b/theme/settings.json deleted file mode 100644 index f616bed..0000000 --- a/theme/settings.json +++ /dev/null @@ -1,753 +0,0 @@ -{ - "pageTemplates": "WebModeler", - "cssFiles": [ - "styles/web/css/main.css" - ], - "designProperties": { - "Widget": [ - { - "name": "Spacing top", - "type": "Dropdown", - "description": "The spacing above this element.", - "options": [ - { - "name": "None", - "class": "spacing-outer-top-none" - }, - { - "name": "Small", - "class": "spacing-outer-top" - }, - { - "name": "Medium", - "class": "spacing-outer-top-medium" - }, - { - "name": "Large", - "class": "spacing-outer-top-large" - } - ] - }, - { - "name": "Spacing bottom", - "type": "Dropdown", - "description": "The spacing below this element.", - "options": [ - { - "name": "None", - "class": "spacing-outer-bottom-none" - }, - { - "name": "Small", - "class": "spacing-outer-bottom" - }, - { - "name": "Medium", - "class": "spacing-outer-bottom-medium" - }, - { - "name": "Large", - "class": "spacing-outer-bottom-large" - } - ] - }, - { - "name": "Spacing left", - "type": "Dropdown", - "description": "The spacing to the left of this element.", - "options": [ - { - "name": "None", - "class": "spacing-outer-left-none" - }, - { - "name": "Small", - "class": "spacing-outer-left" - }, - { - "name": "Medium", - "class": "spacing-outer-left-medium" - }, - { - "name": "Large", - "class": "spacing-outer-left-large" - } - ] - }, - { - "name": "Spacing right", - "type": "Dropdown", - "description": "The spacing to the right of this element.", - "options": [ - { - "name": "None", - "class": "spacing-outer-right-none" - }, - { - "name": "Small", - "class": "spacing-outer-right" - }, - { - "name": "Medium", - "class": "spacing-outer-right-medium" - }, - { - "name": "Large", - "class": "spacing-outer-right-large" - } - ] - }, - { - "name": "Align self", - "oldNames": [ - "Align Self" - ], - "type": "Dropdown", - "description": "Float the element to the left or to the right.", - "options": [ - { - "name": "Left", - "class": "pull-left" - }, - { - "name": "Right", - "class": "pull-right" - } - ] - }, - { - "name": "Hide on phone", - "oldNames": [ - "Hide On Phone" - ], - "type": "Toggle", - "description": "Hide element on phone.", - "class": "hide-phone" - }, - { - "name": "Hide on tablet", - "oldNames": [ - "Hide On Tablet" - ], - "type": "Toggle", - "description": "Hide element on tablet.", - "class": "hide-tablet" - }, - { - "name": "Hide on desktop", - "oldNames": [ - "Hide On Desktop" - ], - "type": "Toggle", - "description": "Hide element on desktop.", - "class": "hide-desktop" - } - ], - "DivContainer": [ - { - "name": "Align content", - "type": "Dropdown", - "description": "Align content of this element left, right or center it. Align elements inside the container as a row or as a column.", - "options": [ - { - "name": "Left align as a row", - "oldNames": [ - "Left align as row" - ], - "class": "row-left" - }, - { - "name": "Center align as a row", - "oldNames": [ - "Center align as row" - ], - "class": "row-center" - }, - { - "name": "Right align as a row", - "oldNames": [ - "Right align as row" - ], - "class": "row-right" - }, - { - "name": "Left align as a column", - "oldNames": [ - "Left align as column" - ], - "class": "col-left" - }, - { - "name": "Center align as a column", - "oldNames": [ - "Center align as column" - ], - "class": "col-center" - }, - { - "name": "Right align as a column", - "oldNames": [ - "Right align as column" - ], - "class": "col-right" - } - ] - }, - { - "name": "Background color", - "type": "Dropdown", - "description": "Change the background color of the container.", - "options": [ - { - "name": "Brand Default", - "oldNames": [ - "Default" - ], - "class": "background-default" - }, - { - "name": "Brand Primary", - "oldNames": [ - "Primary" - ], - "class": "background-primary" - }, - { - "name": "Brand Inverse", - "oldNames": [ - "Inverse" - ], - "class": "background-inverse" - }, - { - "name": "Brand Info", - "oldNames": [ - "Info" - ], - "class": "background-info" - }, - { - "name": "Brand Success", - "oldNames": [ - "Success" - ], - "class": "background-success" - }, - { - "name": "Brand Warning", - "oldNames": [ - "Warning" - ], - "class": "background-warning" - }, - { - "name": "Brand Danger", - "oldNames": [ - "Danger" - ], - "class": "background-danger" - }, - { - "name": "Background Default", - "class": "background-main" - }, - { - "name": "Background Dashboard", - "class": "background-secondary" - } - ] - } - ], - "Button": [ - { - "name": "Size", - "type": "Dropdown", - "description": "Size of the buttons", - "options": [ - { - "name": "Small", - "class": "btn-sm" - }, - { - "name": "Large", - "class": "btn-lg" - } - ] - }, - { - "name": "Full width", - "type": "Toggle", - "description": "Extend the button to the full width of the container it is placed in.", - "class": "btn-block" - }, - { - "name": "Border", - "oldNames": [ - "Bordered" - ], - "type": "Toggle", - "description": "Style the button with a transparent background, a colored border, and colored text.", - "class": "btn-bordered" - }, - { - "name": "Align icon", - "type": "Dropdown", - "description": "Place the icon to the right or on top of the button.", - "options": [ - { - "name": "Right", - "class": "btn-icon-right" - }, - { - "name": "Top", - "class": "btn-icon-top" - } - ] - } - ], - "ListView": [ - { - "name": "Style", - "type": "Dropdown", - "description": "Change the appearance of rows in the list view.", - "options": [ - { - "name": "Striped", - "class": "listview-striped" - }, - { - "name": "Bordered", - "class": "listview-bordered" - }, - { - "name": "Lined", - "class": "listview-lined" - }, - { - "name": "No Styling", - "class": "listview-stylingless" - } - ] - }, - { - "name": "Hover style", - "type": "Toggle", - "description": "Highlight a row when hovering over it. Only useful when the row is clickable.", - "class": "listview-hover" - }, - { - "name": "Row Size", - "type": "Dropdown", - "description": "Change the row spacing of the list view.", - "options": [ - { - "name": "Small", - "class": "listview-sm" - }, - { - "name": "Large", - "class": "listview-lg" - } - ] - } - ], - "DataGrid": [ - { - "name": "Style", - "type": "Dropdown", - "description": "Choose one of the following styles to change the appearance of the data grid.", - "options": [ - { - "name": "Striped", - "class": "datagrid-striped" - }, - { - "name": "Bordered", - "class": "datagrid-bordered" - }, - { - "name": "Lined", - "class": "datagrid-lined" - } - ] - }, - { - "name": "Hover style", - "type": "Toggle", - "description": "Enable data grid hover to make the rows hoverable.", - "class": "datagrid-hover" - }, - { - "name": "Row size", - "type": "Dropdown", - "description": "Increase or decrease the row spacing of the data grid row.", - "options": [ - { - "name": "Small", - "class": "datagrid-sm" - }, - { - "name": "Large", - "class": "datagrid-lg" - } - ] - } - ], - "TemplateGrid": [ - { - "name": "Style", - "type": "Dropdown", - "description": "Choose one of the following styles to change the appearance of the template grid.", - "options": [ - { - "name": "Striped", - "class": "templategrid-striped" - }, - { - "name": "Bordered", - "class": "templategrid-bordered" - }, - { - "name": "Lined", - "class": "templategrid-lined" - }, - { - "name": "No styling", - "class": "templategrid-stylingless" - } - ] - }, - { - "name": "Hover style", - "type": "Toggle", - "description": "Enable template grid hover to make the rows hoverable.", - "class": "templategrid-hover" - } - ], - "GroupBox": [ - { - "name": "Style", - "type": "Dropdown", - "description": "Choose one of the following styles to change the appearance of the groupbox.", - "options": [ - { - "name": "Brand Default", - "oldNames": [ - "Default" - ], - "class": "groupbox-default" - }, - { - "name": "Brand Primary", - "oldNames": [ - "Primary" - ], - "class": "groupbox-primary" - }, - { - "name": "Brand Inverse", - "oldNames": [ - "Inverse" - ], - "class": "groupbox-inverse" - }, - { - "name": "Brand Info", - "oldNames": [ - "Info" - ], - "class": "groupbox-info" - }, - { - "name": "Brand Success", - "oldNames": [ - "Success" - ], - "class": "groupbox-success" - }, - { - "name": "Brand Warning", - "oldNames": [ - "Warning" - ], - "class": "groupbox-warning" - }, - { - "name": "Brand Danger", - "oldNames": [ - "Danger" - ], - "class": "groupbox-danger" - }, - { - "name": "Transparent", - "class": "groupbox-transparent" - } - ] - }, - { - "name": "Callout style", - "type": "Toggle", - "description": "Enable the groupbox callout functionality to highlight the importance of the groupbox.", - "class": "groupbox-callout" - } - ], - "StaticImageViewer": [ - { - "name": "Style", - "type": "Dropdown", - "description": "Choose the style of your image.", - "options": [ - { - "name": "Rounded", - "class": "img-rounded" - }, - { - "name": "Thumbnail", - "class": "img-thumbnail" - }, - { - "name": "Circle", - "class": "img-circle" - } - ] - }, - { - "name": "Center", - "type": "Toggle", - "description": "Align the image in the center of an element.", - "class": "img-center" - } - ], - "DynamicImageViewer": [ - { - "name": "Style", - "type": "Dropdown", - "description": "Choose the style of your image.", - "options": [ - { - "name": "Rounded", - "class": "img-rounded" - }, - { - "name": "Thumbnail", - "class": "img-thumbnail" - }, - { - "name": "Circle", - "class": "img-circle" - } - ] - }, - { - "name": "Center", - "type": "Toggle", - "description": "Align the image in the center of an element.", - "class": "img-center" - } - ], - "Label": [ - { - "name": "Style", - "type": "Dropdown", - "description": "Change the appearance of a label.", - "options": [ - { - "name": "Brand Default", - "oldNames": [ - "Default" - ], - "class": "label-default" - }, - { - "name": "Brand Primary", - "oldNames": [ - "Primary" - ], - "class": "label-primary" - }, - { - "name": "Brand Inverse", - "oldNames": [ - "Inverse" - ], - "class": "label-inverse" - }, - { - "name": "Brand Info", - "oldNames": [ - "Info" - ], - "class": "label-info" - }, - { - "name": "Brand Success", - "oldNames": [ - "Success" - ], - "class": "label-success" - }, - { - "name": "Brand Warning", - "oldNames": [ - "Warning" - ], - "class": "label-warning" - }, - { - "name": "Brand Danger", - "oldNames": [ - "Danger" - ], - "class": "label-danger" - } - ] - } - ], - "DynamicText": [ - { - "name": "Font Weight", - "oldNames": [ - "Weight" - ], - "type": "Dropdown", - "description": "Emphasize the text with a heavier or lighter font weight", - "options": [ - { - "name": "Light", - "class": "text-light" - }, - { - "name": "Normal", - "class": "text-normal" - }, - { - "name": "Semibold", - "class": "text-semibold" - }, - { - "name": "Bold", - "class": "text-bold" - } - ] - }, - { - "name": "Color", - "type": "Dropdown", - "description": "Change the color of text.", - "options": [ - { - "name": "Header color", - "class": "text-header" - }, - { - "name": "Detail color", - "class": "text-detail" - }, - { - "name": "Brand Default", - "oldNames": [ - "Default" - ], - "class": "text-default" - }, - { - "name": "Brand Primary", - "oldNames": [ - "Primary" - ], - "class": "text-primary" - }, - { - "name": "Brand Inverse", - "oldNames": [ - "Inverse" - ], - "class": "text-inverse" - }, - { - "name": "Brand Info", - "oldNames": [ - "Info" - ], - "class": "text-info" - }, - { - "name": "Brand Success", - "oldNames": [ - "Success" - ], - "class": "text-success" - }, - { - "name": "Brand Warning", - "oldNames": [ - "Warning" - ], - "class": "text-warning" - }, - { - "name": "Brand Danger", - "oldNames": [ - "Danger" - ], - "class": "text-danger" - } - ] - }, - { - "name": "Alignment", - "type": "Dropdown", - "description": "Align the text.", - "options": [ - { - "name": "Left", - "class": "text-left d-block" - }, - { - "name": "Center", - "class": "text-center d-block" - }, - { - "name": "Right", - "class": "text-right d-block" - } - ] - }, - { - "name": "Transform", - "type": "Dropdown", - "description": "Change the letter case of the text.", - "options": [ - { - "name": "Lowercase", - "class": "text-lowercase" - }, - { - "name": "Uppercase", - "class": "text-uppercase" - }, - { - "name": "Capitalize", - "class": "text-capitalize" - } - ] - }, - { - "name": "Wrap options", - "type": "Dropdown", - "description": "Break long words and sentences into multiple lines.", - "options": [ - { - "name": "Wrap", - "class": "text-break" - }, - { - "name": "No Wrap", - "class": "text-nowrap" - } - ] - } - ] - } -} diff --git a/theme/styles.js b/theme/styles.js deleted file mode 100644 index 5836d58..0000000 --- a/theme/styles.js +++ /dev/null @@ -1,12 +0,0 @@ -import * as custom from "./styles/native/app/custom"; -import mergeobjects from "./styles/native/core/helpers/_functions/mergeobjects"; -import * as main from "./styles/native/main"; - -Object.keys(custom).forEach(key => { - if (main[key]) { - Object.assign(main[key], mergeobjects(main[key], custom[key])); - delete custom[key]; - } -}); - -module.exports = { ...main, ...custom }; diff --git a/theme/styles/native/app/custom-variables.js b/theme/styles/native/app/custom-variables.js deleted file mode 100644 index 80db3a2..0000000 --- a/theme/styles/native/app/custom-variables.js +++ /dev/null @@ -1,279 +0,0 @@ -import { NativeModules, Platform } from "react-native"; -import adjustFont from "../core/helpers/_functions/adjustfont"; -import { anyColorToRgbString, setColorBasedOnBackground, setContrastScale, } from "../core/helpers/_functions/convertcolors"; -/* - -==> You can find a copy of the core variables below. (From styles/native/core/variables.js) -==> You can freely change any value in this file. -==> DO NOT change the core variable file (or any other file in core), as that makes updating Atlas a lot harder in the future. - -*/ -//== Global variables -//## Variables to be used during styling -//-------------------------------------------------------------------------------------------------------------------// -// Brand Style -export const brand = { - primary: "#0595DB", - success: "#76CA02", - warning: "#f99b1d", - danger: "#ed1c24", - primaryLight: `rgba(${anyColorToRgbString("#0595DB")}, 0.14)`, - successLight: `rgba(${anyColorToRgbString("#76CA02")}, 0.14)`, - warningLight: `rgba(${anyColorToRgbString("#f99b1d")}, 0.14)`, - dangerLight: `rgba(${anyColorToRgbString("#ed1c24")}, 0.14)`, -}; -// -// Dark Mode - Inherits OS theme if possible -export const darkMode = NativeModules && NativeModules.RNDarkMode && NativeModules.RNDarkMode.initialMode - ? NativeModules.RNDarkMode.initialMode === "dark" - : false; -// -// Background Colors -const backgroundColor = darkMode ? "#000" : "#FFF"; -const backgroundSecondaryContrast = darkMode ? 0.11 : 0.03; -// -export const background = { - primary: backgroundColor, - secondary: setContrastScale(backgroundSecondaryContrast, backgroundColor), - gray: "#c6c6cc", - brandPrimary: brand.primary, - brandSuccess: brand.success, - brandWarning: brand.warning, - brandDanger: brand.danger, -}; -// -// Contrast (Gray) colors based on background.primary -export const contrast = { - highest: setContrastScale(0.95, background.primary), - higher: setContrastScale(0.8, background.primary), - high: setContrastScale(0.65, background.primary), - regular: setContrastScale(0.5, background.primary), - low: setContrastScale(0.35, background.primary), - lower: setContrastScale(0.2, background.primary), - lowest: setContrastScale(0.05, background.primary), -}; -// -// Border Style -export const border = { - color: setContrastScale(0.17, background.primary), - width: 1, - radius: 5, -}; -// -// Font Styles -export const font = { - size: adjustFont(14), - sizeSmall: adjustFont(12), - sizeLarge: adjustFont(18), - sizeH1: adjustFont(31), - sizeH2: adjustFont(26), - sizeH3: adjustFont(24), - sizeH4: adjustFont(18), - sizeH5: adjustFont(14), - sizeH6: adjustFont(12), - color: setColorBasedOnBackground(background.primary), - colorDisabled: "#9DA1A8", - labelColorDisabled: "#474E5C", - weightLight: "100", - weightNormal: "normal", - weightSemiBold: "600", - weightBold: "bold", - family: Platform.select({ ios: "System", android: "normal" }), -}; -// -// Spacing -export const spacing = { - smallest: 5, - smaller: 10, - small: 15, - regular: 20, - large: 25, - larger: 30, - largest: 40, -}; -// -// Button Styles -export const button = { - fontSize: font.sizeSmall, - fontSizeLarge: font.size, - fontWeight: font.weightBold, - fontSizeIcon: font.sizeSmall, - fontSizeIconLarge: font.size, - borderRadius: border.radius, - paddingVertical: spacing.smaller, - paddingHorizontal: spacing.regular, - header: { - color: contrast.highest, - borderColor: "transparent", - backgroundColor: "transparent", - fontSize: font.sizeSmall, - fontSizeIcon: font.sizeSmall, - paddingLeft: 0, - paddingRight: 10, - }, - primary: { - color: "#FFF", - colorDisabled: font.colorDisabled, - borderColor: brand.primary, - borderColorDisabled: border.color, - backgroundColor: brand.primary, - backgroundColorDisabled: border.color, - }, - secondary: { - color: brand.primary, - borderColor: brand.primary, - backgroundColor: "transparent", - inversedColor: "#FFF", - }, - success: { - color: "#FFF", - borderColor: brand.success, - backgroundColor: brand.success, - }, - warning: { - color: "#FFF", - borderColor: brand.warning, - backgroundColor: brand.warning, - }, - danger: { - color: "#FFF", - borderColor: brand.danger, - backgroundColor: brand.danger, - }, -}; -// -// Input Styles -export const input = { - // Colors - color: font.color, - colorDisabled: font.colorDisabled, - errorColor: brand.danger, - labelColor: font.color, - labelColorDisabled: font.labelColorDisabled, - borderColor: contrast.lower, - borderColorFocused: "", - backgroundColor: background.primary, - backgroundColorDisabled: contrast.lowest, - selectionColor: contrast.lower, - placeholderTextColor: contrast.regular, - underlineColorAndroid: "transparent", - inputContainerUnderlayColor: `rgba(${anyColorToRgbString(contrast.low)},0.4)`, - // Sizes - fontSize: font.size, - fontFamily: font.family, - borderWidth: border.width, - borderRadius: border.radius, - // Alignment - textAlign: "left", - paddingHorizontal: spacing.smaller, - paddingVertical: spacing.small, -}; -// -// Navigation Styles -export const navigation = { - statusBar: { - backgroundColor: background.primary, - barStyle: darkMode ? "light-content" : "dark-content", - }, - topBar: { - backgroundColor: background.primary, - backButtonColor: contrast.highest, - titleColor: contrast.highest, - titleFontSize: Platform.select({ android: font.sizeH4, ios: font.sizeH5 }), - }, - bottomBar: { - color: contrast.high, - selectedTextColor: contrast.high, - selectedIconColor: brand.primary, - backgroundColor: background.primary, - fontSize: font.sizeSmall, - iconSize: font.sizeSmall, - }, - progressOverlay: { - color: font.color, - activityIndicatorColor: font.color, - backgroundColor: `rgba(0, 0, 0, 0.5)`, - containerBackgroundColor: background.secondary, - fontSize: font.size, - borderRadius: border.radius, - elevation: 1.5, - shadowColor: "#000", - shadowOpacity: 0.1, - shadowRadius: 10, - }, -}; -// -// Badge Styles -export const badge = { - fontWeight: font.weightBold, - borderRadius: 30, - paddingVertical: 3, - paddingHorizontal: spacing.smaller, - default: { - color: contrast.higher, - backgroundColor: contrast.lower, - }, - primary: { - color: brand.primary, - backgroundColor: brand.primaryLight, - }, - success: { - color: brand.success, - backgroundColor: brand.successLight, - }, - warning: { - color: brand.warning, - backgroundColor: brand.warningLight, - }, - danger: { - color: brand.danger, - backgroundColor: brand.dangerLight, - }, -}; -// -// Tabcontainer Styles -export const tabContainer = { - tabBar: { - pressColor: contrast.lower, - backgroundColor: background.primary, - }, - indicator: { - backgroundColor: brand.primary, - height: Platform.select({ ios: 2, android: 2 }), - }, - label: { - color: contrast.highest, - fontWeight: font.weightBold, - textTransform: "uppercase", - }, - activeLabel: { - color: brand.primary, - fontWeight: font.weightBold, - textTransform: "uppercase", - }, - badgeContainer: { - borderRadius: badge.borderRadius, - backgroundColor: badge.default.backgroundColor, - paddingVertical: badge.paddingVertical, - paddingHorizontal: badge.paddingHorizontal, - marginLeft: 8, - }, - badgeCaption: { - fontSize: font.size, - color: badge.default.color, - fontWeight: badge.fontWeight, - }, -}; -// -// ListView Styles -export const listView = { - border: { - color: border.color, - width: border.width, - }, -}; -// -// Layoutgrid Styles -export const layoutGrid = { - gutterSize: 15, -}; diff --git a/theme/styles/native/core/base/flex.js b/theme/styles/native/core/base/flex.js deleted file mode 100644 index dd1edff..0000000 --- a/theme/styles/native/core/base/flex.js +++ /dev/null @@ -1,203 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -*/ -//== Flex layout -export const flexMain = { - container: { - // flex 1 will take all available space not taken by flexItems. - flex: 1, - }, -}; -export const flexItem = { - container: { - // When flex is -1, the component is normally sized according width and height. - // However, if there's not enough space, the component will shrink to its minWidth and minHeight - flex: -1, - }, -}; -export const flexRow = { - container: { - flexDirection: "row", - }, -}; -export const flexColumn = { - container: { - flexDirection: "column", - }, -}; -export const flexRowReverse = { - container: { - flexDirection: "row-reverse", - }, -}; -export const flexColumnReverse = { - container: { - flexDirection: "column-reverse", - }, -}; -export const flexWrap = { - container: { - // flexWrap controls whether children can wrap around after they hit the end of a flex container. - flexWrap: "wrap", - }, -}; -export const justifyContentStart = { - container: { - // justifyContent aligns children in the main direction. - // For example, if children are flowing vertically, justifyContent controls how they align vertically. - justifyContent: "flex-start", - }, -}; -export const justifyContentCenter = { - container: { - // justifyContent aligns children in the main direction. - // For example, if children are flowing vertically, justifyContent controls how they align vertically. - justifyContent: "center", - }, -}; -export const justifyContentEnd = { - container: { - // justifyContent aligns children in the main direction. - // For example, if children are flowing vertically, justifyContent controls how they align vertically. - justifyContent: "flex-end", - }, -}; -export const justifyContentSpaceBetween = { - container: { - // justifyContent aligns children in the main direction. - // For example, if children are flowing vertically, justifyContent controls how they align vertically. - justifyContent: "space-between", - }, -}; -export const justifyContentSpaceAround = { - container: { - // justifyContent aligns children in the main direction. - // For example, if children are flowing vertically, justifyContent controls how they align vertically. - justifyContent: "space-around", - }, -}; -export const justifyContentSpaceEvenly = { - container: { - // justifyContent aligns children in the main direction. - // For example, if children are flowing vertically, justifyContent controls how they align vertically. - justifyContent: "space-evenly", - }, -}; -export const alignChildrenStart = { - container: { - // alignItems aligns children in the cross direction. - // For example, if children are flowing vertically, alignItems controls how they align horizontally. - alignItems: "flex-start", - }, -}; -export const alignChildrenCenter = { - container: { - // alignItems aligns children in the cross direction. - // For example, if children are flowing vertically, alignItems controls how they align horizontally. - alignItems: "center", - }, -}; -export const alignChildrenEnd = { - container: { - // alignItems aligns children in the cross direction. - // For example, if children are flowing vertically, alignItems controls how they align horizontally. - alignItems: "flex-end", - }, -}; -export const alignChildrenStretch = { - container: { - // alignItems aligns children in the cross direction. - // For example, if children are flowing vertically, alignItems controls how they align horizontally. - alignItems: "stretch", - }, -}; -export const alignChildrenBaseline = { - container: { - // alignContent aligns children in the cross direction. - // For example, if children are flowing vertically, alignContent controls how they align horizontally. - alignItems: "baseline", - }, -}; -export const childrenCenter = { - container: { - ...justifyContentCenter.container, - ...alignChildrenCenter.container, - }, -}; -export const alignContentStart = { - container: { - // alignContent aligns rows of children in the cross direction. - // For example, if children are flowing vertically, alignContent controls how they align horizontally. - alignContent: "flex-start", - }, -}; -export const alignContentCenter = { - container: { - // alignContent aligns rows of children in the cross direction. - // For example, if children are flowing vertically, alignContent controls how they align horizontally. - alignContent: "center", - }, -}; -export const alignContentEnd = { - container: { - // alignContent aligns rows of children in the cross direction. - // For example, if children are flowing vertically, alignContent controls how they align horizontally. - alignContent: "flex-end", - }, -}; -export const alignContentStretch = { - container: { - // alignContent aligns rows of children in the cross direction. - // For example, if children are flowing vertically, alignContent controls how they align horizontally. - alignContent: "stretch", - }, -}; -export const alignContentSpaceAround = { - container: { - // alignContent aligns rows of children in the cross direction. - // For example, if children are flowing vertically, alignContent controls how they align horizontally. - alignContent: "space-around", - }, -}; -export const alignContentSpaceBetween = { - container: { - // alignContent aligns rows of children in the cross direction. - // For example, if children are flowing vertically, alignContent controls how they align horizontally. - alignContent: "space-between", - }, -}; -export const alignSelfStart = { - container: { - // controls how a child aligns in the cross direction, overriding the alignItems of the parent. - alignSelf: "flex-start", - }, -}; -export const alignSelfCenter = { - container: { - // controls how a child aligns in the cross direction, overriding the alignItems of the parent. - alignSelf: "center", - }, -}; -export const alignSelfEnd = { - container: { - // controls how a child aligns in the cross direction, overriding the alignItems of the parent. - alignSelf: "flex-end", - }, -}; -export const alignSelfStretch = { - container: { - // controls how a child aligns in the cross direction, overriding the alignItems of the parent. - alignSelf: "stretch", - }, -}; -export const alignSelfBaseline = { - container: { - // controls how a child aligns in the cross direction, overriding the alignItems of the parent. - alignSelf: "baseline", - }, -}; diff --git a/theme/styles/native/core/base/spacing.js b/theme/styles/native/core/base/spacing.js deleted file mode 100644 index 13a72e2..0000000 --- a/theme/styles/native/core/base/spacing.js +++ /dev/null @@ -1,503 +0,0 @@ -import { spacing } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -*/ -//== Inner Spacing -export const spacingInnerSmallest = { - container: { - padding: spacing.smallest, - }, -}; -export const spacingInnerVerticalSmallest = { - container: { - paddingVertical: spacing.smallest, - }, -}; -export const spacingInnerHorizontalSmallest = { - container: { - paddingHorizontal: spacing.smallest, - }, -}; -export const spacingInnerTopSmallest = { - container: { - paddingTop: spacing.smallest, - }, -}; -export const spacingInnerRightSmallest = { - container: { - paddingRight: spacing.smallest, - }, -}; -export const spacingInnerLeftSmallest = { - container: { - paddingLeft: spacing.smallest, - }, -}; -export const spacingInnerBottomSmallest = { - container: { - paddingBottom: spacing.smallest, - }, -}; -export const spacingInnerSmaller = { - container: { - padding: spacing.smaller, - }, -}; -export const spacingInnerVerticalSmaller = { - container: { - paddingVertical: spacing.smaller, - }, -}; -export const spacingInnerHorizontalSmaller = { - container: { - paddingHorizontal: spacing.smaller, - }, -}; -export const spacingInnerTopSmaller = { - container: { - paddingTop: spacing.smaller, - }, -}; -export const spacingInnerRightSmaller = { - container: { - paddingRight: spacing.smaller, - }, -}; -export const spacingInnerLeftSmaller = { - container: { - paddingLeft: spacing.smaller, - }, -}; -export const spacingInnerBottomSmaller = { - container: { - paddingBottom: spacing.smaller, - }, -}; -export const spacingInnerSmall = { - container: { - padding: spacing.small, - }, -}; -export const spacingInnerVerticalSmall = { - container: { - paddingVertical: spacing.small, - }, -}; -export const spacingInnerHorizontalSmall = { - container: { - paddingHorizontal: spacing.small, - }, -}; -export const spacingInnerTopSmall = { - container: { - paddingTop: spacing.small, - }, -}; -export const spacingInnerRightSmall = { - container: { - paddingRight: spacing.small, - }, -}; -export const spacingInnerLeftSmall = { - container: { - paddingLeft: spacing.small, - }, -}; -export const spacingInnerBottomSmall = { - container: { - paddingBottom: spacing.small, - }, -}; -export const spacingInnerMedium = { - container: { - padding: spacing.regular, - }, -}; -export const spacingInnerVerticalMedium = { - container: { - paddingVertical: spacing.regular, - }, -}; -export const spacingInnerHorizontalMedium = { - container: { - paddingHorizontal: spacing.regular, - }, -}; -export const spacingInnerTopMedium = { - container: { - paddingTop: spacing.regular, - }, -}; -export const spacingInnerRightMedium = { - container: { - paddingRight: spacing.regular, - }, -}; -export const spacingInnerLeftMedium = { - container: { - paddingLeft: spacing.regular, - }, -}; -export const spacingInnerBottomMedium = { - container: { - paddingBottom: spacing.regular, - }, -}; -export const spacingInnerLarge = { - container: { - padding: spacing.large, - }, -}; -export const spacingInnerVerticalLarge = { - container: { - paddingVertical: spacing.large, - }, -}; -export const spacingInnerHorizontalLarge = { - container: { - paddingHorizontal: spacing.large, - }, -}; -export const spacingInnerTopLarge = { - container: { - paddingTop: spacing.large, - }, -}; -export const spacingInnerRightLarge = { - container: { - paddingRight: spacing.large, - }, -}; -export const spacingInnerLeftLarge = { - container: { - paddingLeft: spacing.large, - }, -}; -export const spacingInnerBottomLarge = { - container: { - paddingBottom: spacing.large, - }, -}; -export const spacingInnerLarger = { - container: { - padding: spacing.larger, - }, -}; -export const spacingInnerVerticalLarger = { - container: { - paddingVertical: spacing.larger, - }, -}; -export const spacingInnerHorizontalLarger = { - container: { - paddingHorizontal: spacing.larger, - }, -}; -export const spacingInnerTopLarger = { - container: { - paddingTop: spacing.larger, - }, -}; -export const spacingInnerRightLarger = { - container: { - paddingRight: spacing.larger, - }, -}; -export const spacingInnerLeftLarger = { - container: { - paddingLeft: spacing.larger, - }, -}; -export const spacingInnerBottomLarger = { - container: { - paddingBottom: spacing.larger, - }, -}; -export const spacingInnerLargest = { - container: { - padding: spacing.largest, - }, -}; -export const spacingInnerVerticalLargest = { - container: { - paddingVertical: spacing.largest, - }, -}; -export const spacingInnerHorizontalLargest = { - container: { - paddingHorizontal: spacing.largest, - }, -}; -export const spacingInnerTopLargest = { - container: { - paddingTop: spacing.largest, - }, -}; -export const spacingInnerRightLargest = { - container: { - paddingRight: spacing.largest, - }, -}; -export const spacingInnerLeftLargest = { - container: { - paddingLeft: spacing.largest, - }, -}; -export const spacingInnerBottomLargest = { - container: { - paddingBottom: spacing.largest, - }, -}; -// -// -//== Outer Spacing -export const spacingOuterSmallest = { - container: { - margin: spacing.smallest, - }, -}; -export const spacingOuterVerticalSmallest = { - container: { - marginVertical: spacing.smallest, - }, -}; -export const spacingOuterHorizontalSmallest = { - container: { - marginHorizontal: spacing.smallest, - }, -}; -export const spacingOuterTopSmallest = { - container: { - marginTop: spacing.smallest, - }, -}; -export const spacingOuterRightSmallest = { - container: { - marginRight: spacing.smallest, - }, -}; -export const spacingOuterLeftSmallest = { - container: { - marginLeft: spacing.smallest, - }, -}; -export const spacingOuterBottomSmallest = { - container: { - marginBottom: spacing.smallest, - }, -}; -export const spacingOuterSmaller = { - container: { - margin: spacing.smaller, - }, -}; -export const spacingOuterVerticalSmaller = { - container: { - marginVertical: spacing.smaller, - }, -}; -export const spacingOuterHorizontalSmaller = { - container: { - marginHorizontal: spacing.smaller, - }, -}; -export const spacingOuterTopSmaller = { - container: { - marginTop: spacing.smaller, - }, -}; -export const spacingOuterRightSmaller = { - container: { - marginRight: spacing.smaller, - }, -}; -export const spacingOuterLeftSmaller = { - container: { - marginLeft: spacing.smaller, - }, -}; -export const spacingOuterBottomSmaller = { - container: { - marginBottom: spacing.smaller, - }, -}; -export const spacingOuterSmall = { - container: { - margin: spacing.small, - }, -}; -export const spacingOuterVerticalSmall = { - container: { - marginVertical: spacing.small, - }, -}; -export const spacingOuterHorizontalSmall = { - container: { - marginHorizontal: spacing.small, - }, -}; -export const spacingOuterTopSmall = { - container: { - marginTop: spacing.small, - }, -}; -export const spacingOuterRightSmall = { - container: { - marginRight: spacing.small, - }, -}; -export const spacingOuterLeftSmall = { - container: { - marginLeft: spacing.small, - }, -}; -export const spacingOuterBottomSmall = { - container: { - marginBottom: spacing.small, - }, -}; -export const spacingOuterMedium = { - container: { - margin: spacing.regular, - }, -}; -export const spacingOuterVerticalMedium = { - container: { - marginVertical: spacing.regular, - }, -}; -export const spacingOuterHorizontalMedium = { - container: { - marginHorizontal: spacing.regular, - }, -}; -export const spacingOuterTopMedium = { - container: { - marginTop: spacing.regular, - }, -}; -export const spacingOuterRightMedium = { - container: { - marginRight: spacing.regular, - }, -}; -export const spacingOuterLeftMedium = { - container: { - marginLeft: spacing.regular, - }, -}; -export const spacingOuterBottomMedium = { - container: { - marginBottom: spacing.regular, - }, -}; -export const spacingOuterLarge = { - container: { - margin: spacing.large, - }, -}; -export const spacingOuterVerticalLarge = { - container: { - marginVertical: spacing.large, - }, -}; -export const spacingOuterHorizontalLarge = { - container: { - marginHorizontal: spacing.large, - }, -}; -export const spacingOuterTopLarge = { - container: { - marginTop: spacing.large, - }, -}; -export const spacingOuterRightLarge = { - container: { - marginRight: spacing.large, - }, -}; -export const spacingOuterLeftLarge = { - container: { - marginLeft: spacing.large, - }, -}; -export const spacingOuterBottomLarge = { - container: { - marginBottom: spacing.large, - }, -}; -export const spacingOuterLarger = { - container: { - margin: spacing.larger, - }, -}; -export const spacingOuterVerticalLarger = { - container: { - marginVertical: spacing.larger, - }, -}; -export const spacingOuterHorizontalLarger = { - container: { - marginHorizontal: spacing.larger, - }, -}; -export const spacingOuterTopLarger = { - container: { - marginTop: spacing.larger, - }, -}; -export const spacingOuterRightLarger = { - container: { - marginRight: spacing.larger, - }, -}; -export const spacingOuterLeftLarger = { - container: { - marginLeft: spacing.larger, - }, -}; -export const spacingOuterBottomLarger = { - container: { - marginBottom: spacing.larger, - }, -}; -export const spacingOuterLargest = { - container: { - margin: spacing.largest, - }, -}; -export const spacingOuterVerticalLargest = { - container: { - marginVertical: spacing.largest, - }, -}; -export const spacingOuterHorizontalLargest = { - container: { - marginHorizontal: spacing.largest, - }, -}; -export const spacingOuterTopLargest = { - container: { - marginTop: spacing.largest, - }, -}; -export const spacingOuterRightLargest = { - container: { - marginRight: spacing.largest, - }, -}; -export const spacingOuterLeftLargest = { - container: { - marginLeft: spacing.largest, - }, -}; -export const spacingOuterBottomLargest = { - container: { - marginBottom: spacing.largest, - }, -}; diff --git a/theme/styles/native/core/helpers/_functions/adjustfont.js b/theme/styles/native/core/helpers/_functions/adjustfont.js deleted file mode 100644 index 7c8efe1..0000000 --- a/theme/styles/native/core/helpers/_functions/adjustfont.js +++ /dev/null @@ -1,59 +0,0 @@ -import { Dimensions, PixelRatio } from "react-native"; -const { height, width } = Dimensions.get("window"); -const pixelRatio = PixelRatio.get(); -/** - * - * Adjust the font size based on the screen size - * - * @param {number} size Font size - * - * @return {number} Returns adjusted font size - */ -function adjustFont(size) { - if (pixelRatio === 2) { - // iphone 5s and older Androids - if (width < 360) - return size * 0.95; - // iphone 5 - if (height < 667) - return size; - // iphone 6-6s - else if (height >= 667 && height <= 735) - return size * 1.15; - // older phablets - return size * 1.25; - } - if (pixelRatio === 3) { - // catch Android font scaling on small machines - // where pixel ratio / font scale ratio => 3:3 - if (width <= 360) - return size; - // Catch other weird android width sizings - if (height < 667) - return size * 1.15; - // catch in-between size Androids and scale font up - if (height >= 667 && height <= 735) - return size * 1.2; - // catch larger devices - // ie iphone 6s plus / 7 plus / mi note - return size * 1.27; - } - if (pixelRatio === 3.5) { - // catch Android font scaling on small machines - // where pixel ratio / font scale ratio => 3:3 - if (width <= 360) - return size; - // Catch other smaller android height sizings - if (height < 667) - return size * 1.2; - // catch in-between size Androids and scale font up - if (height >= 667 && height <= 735) - return size * 1.25; - // catch larger phablet devices - return size * 1.4; - } - // if older device ie pixelRatio !== 2 || 3 || 3.5 - return size; -} -// -export { adjustFont as default, height, width }; diff --git a/theme/styles/native/core/helpers/_functions/colorwords.js b/theme/styles/native/core/helpers/_functions/colorwords.js deleted file mode 100644 index 3c4cb0f..0000000 --- a/theme/styles/native/core/helpers/_functions/colorwords.js +++ /dev/null @@ -1,153 +0,0 @@ -// -const colors = { - aliceblue: { r: 240, g: 248, b: 255 }, - antiquewhite: { r: 250, g: 235, b: 215 }, - aqua: { r: 0, g: 255, b: 255 }, - aquamarine: { r: 127, g: 255, b: 212 }, - azure: { r: 240, g: 255, b: 255 }, - beige: { r: 245, g: 245, b: 220 }, - bisque: { r: 255, g: 228, b: 196 }, - black: { r: 0, g: 0, b: 0 }, - blanchedalmond: { r: 255, g: 235, b: 205 }, - blue: { r: 0, g: 0, b: 255 }, - blueviolet: { r: 138, g: 43, b: 226 }, - brown: { r: 165, g: 42, b: 42 }, - burlywood: { r: 222, g: 184, b: 135 }, - cadetblue: { r: 95, g: 158, b: 160 }, - chartreuse: { r: 127, g: 255, b: 0 }, - chocolate: { r: 210, g: 105, b: 30 }, - coral: { r: 255, g: 127, b: 80 }, - cornflowerblue: { r: 100, g: 149, b: 237 }, - cornsilk: { r: 255, g: 248, b: 220 }, - crimson: { r: 220, g: 20, b: 60 }, - cyan: { r: 0, g: 255, b: 255 }, - darkblue: { r: 0, g: 0, b: 139 }, - darkcyan: { r: 0, g: 139, b: 139 }, - darkgoldenrod: { r: 184, g: 134, b: 11 }, - darkgray: { r: 169, g: 169, b: 169 }, - darkgreen: { r: 0, g: 100, b: 0 }, - darkgrey: { r: 169, g: 169, b: 169 }, - darkkhaki: { r: 189, g: 183, b: 107 }, - darkmagenta: { r: 139, g: 0, b: 139 }, - darkolivegreen: { r: 85, g: 107, b: 47 }, - darkorange: { r: 255, g: 140, b: 0 }, - darkorchid: { r: 153, g: 50, b: 204 }, - darkred: { r: 139, g: 0, b: 0 }, - darksalmon: { r: 233, g: 150, b: 122 }, - darkseagreen: { r: 143, g: 188, b: 143 }, - darkslateblue: { r: 72, g: 61, b: 139 }, - darkslategray: { r: 47, g: 79, b: 79 }, - darkslategrey: { r: 47, g: 79, b: 79 }, - darkturquoise: { r: 0, g: 206, b: 209 }, - darkviolet: { r: 148, g: 0, b: 211 }, - deeppink: { r: 255, g: 20, b: 147 }, - deepskyblue: { r: 0, g: 191, b: 255 }, - dimgray: { r: 105, g: 105, b: 105 }, - dimgrey: { r: 105, g: 105, b: 105 }, - dodgerblue: { r: 30, g: 144, b: 255 }, - firebrick: { r: 178, g: 34, b: 34 }, - floralwhite: { r: 255, g: 250, b: 240 }, - forestgreen: { r: 34, g: 139, b: 34 }, - fuchsia: { r: 255, g: 0, b: 255 }, - gainsboro: { r: 220, g: 220, b: 220 }, - ghostwhite: { r: 248, g: 248, b: 255 }, - gold: { r: 255, g: 215, b: 0 }, - goldenrod: { r: 218, g: 165, b: 32 }, - gray: { r: 128, g: 128, b: 128 }, - green: { r: 0, g: 128, b: 0 }, - greenyellow: { r: 173, g: 255, b: 47 }, - grey: { r: 128, g: 128, b: 128 }, - honeydew: { r: 240, g: 255, b: 240 }, - hotpink: { r: 255, g: 105, b: 180 }, - indianred: { r: 205, g: 92, b: 92 }, - indigo: { r: 75, g: 0, b: 130 }, - ivory: { r: 255, g: 255, b: 240 }, - khaki: { r: 240, g: 230, b: 140 }, - lavender: { r: 230, g: 230, b: 250 }, - lavenderblush: { r: 255, g: 240, b: 245 }, - lawngreen: { r: 124, g: 252, b: 0 }, - lemonchiffon: { r: 255, g: 250, b: 205 }, - lightblue: { r: 173, g: 216, b: 230 }, - lightcoral: { r: 240, g: 128, b: 128 }, - lightcyan: { r: 224, g: 255, b: 255 }, - lightgoldenrodyellow: { r: 250, g: 250, b: 210 }, - lightgray: { r: 211, g: 211, b: 211 }, - lightgreen: { r: 144, g: 238, b: 144 }, - lightgrey: { r: 211, g: 211, b: 211 }, - lightpink: { r: 255, g: 182, b: 193 }, - lightsalmon: { r: 255, g: 160, b: 122 }, - lightseagreen: { r: 32, g: 178, b: 170 }, - lightskyblue: { r: 135, g: 206, b: 250 }, - lightslategray: { r: 119, g: 136, b: 153 }, - lightslategrey: { r: 119, g: 136, b: 153 }, - lightsteelblue: { r: 176, g: 196, b: 222 }, - lightyellow: { r: 255, g: 255, b: 224 }, - lime: { r: 0, g: 255, b: 0 }, - limegreen: { r: 50, g: 205, b: 50 }, - linen: { r: 250, g: 240, b: 230 }, - magenta: { r: 255, g: 0, b: 255 }, - maroon: { r: 128, g: 0, b: 0 }, - mediumaquamarine: { r: 102, g: 205, b: 170 }, - mediumblue: { r: 0, g: 0, b: 205 }, - mediumorchid: { r: 186, g: 85, b: 211 }, - mediumpurple: { r: 147, g: 112, b: 219 }, - mediumseagreen: { r: 60, g: 179, b: 113 }, - mediumslateblue: { r: 123, g: 104, b: 238 }, - mediumspringgreen: { r: 0, g: 250, b: 154 }, - mediumturquoise: { r: 72, g: 209, b: 204 }, - mediumvioletred: { r: 199, g: 21, b: 133 }, - midnightblue: { r: 25, g: 25, b: 112 }, - mintcream: { r: 245, g: 255, b: 250 }, - mistyrose: { r: 255, g: 228, b: 225 }, - moccasin: { r: 255, g: 228, b: 181 }, - navajowhite: { r: 255, g: 222, b: 173 }, - navy: { r: 0, g: 0, b: 128 }, - oldlace: { r: 253, g: 245, b: 230 }, - olive: { r: 128, g: 128, b: 0 }, - olivedrab: { r: 107, g: 142, b: 35 }, - orange: { r: 255, g: 165, b: 0 }, - orangered: { r: 255, g: 69, b: 0 }, - orchid: { r: 218, g: 112, b: 214 }, - palegoldenrod: { r: 238, g: 232, b: 170 }, - palegreen: { r: 152, g: 251, b: 152 }, - paleturquoise: { r: 175, g: 238, b: 238 }, - palevioletred: { r: 219, g: 112, b: 147 }, - papayawhip: { r: 255, g: 239, b: 213 }, - peachpuff: { r: 255, g: 218, b: 185 }, - peru: { r: 205, g: 133, b: 63 }, - pink: { r: 255, g: 192, b: 203 }, - plum: { r: 221, g: 160, b: 221 }, - powderblue: { r: 176, g: 224, b: 230 }, - purple: { r: 128, g: 0, b: 128 }, - rebeccapurple: { r: 102, g: 51, b: 153 }, - red: { r: 255, g: 0, b: 0 }, - rosybrown: { r: 188, g: 143, b: 143 }, - royalblue: { r: 65, g: 105, b: 225 }, - saddlebrown: { r: 139, g: 69, b: 19 }, - salmon: { r: 250, g: 128, b: 114 }, - sandybrown: { r: 244, g: 164, b: 96 }, - seagreen: { r: 46, g: 139, b: 87 }, - seashell: { r: 255, g: 245, b: 238 }, - sienna: { r: 160, g: 82, b: 45 }, - silver: { r: 192, g: 192, b: 192 }, - skyblue: { r: 135, g: 206, b: 235 }, - slateblue: { r: 106, g: 90, b: 205 }, - slategray: { r: 112, g: 128, b: 144 }, - slategrey: { r: 112, g: 128, b: 144 }, - snow: { r: 255, g: 250, b: 250 }, - springgreen: { r: 0, g: 255, b: 127 }, - steelblue: { r: 70, g: 130, b: 180 }, - tan: { r: 210, g: 180, b: 140 }, - teal: { r: 0, g: 128, b: 128 }, - thistle: { r: 216, g: 191, b: 216 }, - tomato: { r: 255, g: 99, b: 71 }, - turquoise: { r: 64, g: 224, b: 208 }, - violet: { r: 238, g: 130, b: 238 }, - wheat: { r: 245, g: 222, b: 179 }, - white: { r: 255, g: 255, b: 255 }, - whitesmoke: { r: 245, g: 245, b: 245 }, - yellow: { r: 255, g: 255, b: 0 }, - yellowgreen: { r: 154, g: 205, b: 50 }, -}; -// -export default colors; diff --git a/theme/styles/native/core/helpers/_functions/convertcolors.js b/theme/styles/native/core/helpers/_functions/convertcolors.js deleted file mode 100644 index d24f483..0000000 --- a/theme/styles/native/core/helpers/_functions/convertcolors.js +++ /dev/null @@ -1,228 +0,0 @@ -import colors from "./colorwords.js"; -/** - * - * Converts RGB color to HEX - * - * @param {number || string} r Accepts RGB as string || Accepts R as string or number - * @param {number || string} g Accepts G as string or number - * @param {number || string} b Accepts B as string or number - * - * @return {string} Returns HEX color - */ -function RgbToHex(r, g, b) { - if (typeof r === "string" && !g && !b) { - const color = r.replace(/rgb[(]|[)]/gm, ""); - [r, g, b] = color.split(","); - } - return "#" + ((1 << 24) + (Number(r) << 16) + (Number(g) << 8) + Number(b)).toString(16).slice(1); -} -/** - * - * Converts HEX or HEX Alpha to RGB - * - * @param {string} hex Accepts HEX color - * - * @return {object} Returns RGB color; {r,g,b} - */ -function hexToRgb(hex) { - hex = hex.substring(1); - hex = hex.length === 3 || hex.length === 4 ? [...hex].map(x => x + x).join("") : hex; - return rgbaToRgb({ - r: parseInt("0x" + hex[0] + hex[1], 16), - g: parseInt("0x" + hex[2] + hex[3], 16), - b: parseInt("0x" + hex[4] + hex[5], 16), - a: parseInt("0x" + hex[6] + hex[7], 16) / 255 || 1, - }); -} -/** - * - * Converts any color format to RGB string - * - * @param {string} anyColor Accepts any color format - * - * @return {string} Returns RGB color; `r,g,b` - */ -export function anyColorToRgbString(anyColor) { - const { r, g, b } = checkColor(anyColor); - return [r, g, b].join(","); -} -/** - * - * Converts HSL to RGB color - * - * @param {string} hsl Accepts HSL color - * - * @return {object} Returns RGB color; {r,g,b} - */ -function hslToRgb(hsl) { - let hslArray = hsl.replace(/hsla?[(]|[%]|[)]/gm, "").split(",").map(x => x.trim()); - let h = hslArray[0], s = Number(hslArray[1]) / 100, l = Number(hslArray[2]) / 100, a = 1; - // Strip label and convert to degrees (if necessary) - if (~h.indexOf("deg")) - h = h.substr(0, h.length - 3); - else if (~h.indexOf("rad")) - h = Math.round(Number(h.substr(0, h.length - 3)) * (180 / Math.PI)); - else if (~h.indexOf("turn")) - h = Math.round(Number(h.substr(0, h.length - 4)) * 360); - h = Number(h); - if (h >= 360) - h %= 360; // Keep hue fraction of 360 if h is higher than 360 - let r = 255, g = 255, b = 255; - const c = (1 - Math.abs(2 * l - 1)) * s; // chroma -> color intensity - const x = c * (1 - Math.abs(((h / 60) % 2) - 1)); // Second largest component (first being chroma) - const m = l - c / 2; // Amount to add to each channel to match lightness - if (0 <= h && h < 60) { - r = c; - g = x; - b = 0; - } - else if (60 <= h && h < 120) { - r = x; - g = c; - b = 0; - } - else if (120 <= h && h < 180) { - r = 0; - g = c; - b = x; - } - else if (180 <= h && h < 240) { - r = 0; - g = x; - b = c; - } - else if (240 <= h && h < 300) { - r = x; - g = 0; - b = c; - } - else if (300 <= h && h < 360) { - r = c; - g = 0; - b = x; - } - return rgbaToRgb({ - r: Math.round((r + m) * 255), - g: Math.round((g + m) * 255), - b: Math.round((b + m) * 255), - a, - }); -} -/** - * - * Convert RGB string with HEX or Word inside to RGB object - * - * @param {string} rgb Accepts RGB color as string - * - * @return {object} Returns RGB color; {r,g,b} - */ -function rgbStringToRgb(rgb) { - const color = rgb.replace(/rgb[(]|[)]/gm, ""); - // if RGB has hex color definition - if (~rgb.indexOf("#")) - return hexToRgb(color); - // if RGB has word color definition - else if (!(/\d/).test(rgb)) - return colors[color.toLowerCase()]; - // if RGB has RGB color definition - else { - const [r, g, b] = color.split(","); - [r, g, b].forEach(x => x.trim()); - return { r: Number(r), g: Number(g), b: Number(b) }; - } -} -/** - * - * Converts RGB Alpha to RGB object - * - * @param {string} rgba Accepts RGB Alpha color - * - * @return {object} Returns RGB color; {r,g,b} - */ -function rgbaToRgb(rgba) { - let newAlpha = 1; - let RGB = typeof rgba === "object" ? rgba : { r: 255, g: 255, b: 255 }; - const calc = (val) => Math.round(newAlpha * (val / 255) * 255); // Calc best color contrast values - // const calc = val => Math.round((RGB.a * (val / 255) + (RGB.a * ( 0 / 255))) * 255); // Calc best color contrast values - if (typeof rgba === "string") { - const val = rgba.replace(/rgba[(]|[)]/gm, ""); - const color = val.slice(0, val.lastIndexOf(",")).trim(); - const alpha = Number(val.slice(val.lastIndexOf(",") + 1).trim()); - // if RGBA has HEX color definition - if (color[0] === "#") - RGB = hexToRgb(color); - // if RGBA has word color definition - else if (!(/\d/).test(color)) - RGB = colors[color.toLowerCase()]; - // if RGBA has RGB color definition - else { - const [r, g, b] = color.split(","); - [r, g, b].forEach(x => Number(x.trim())); - RGB = { r: Number(r), g: Number(g), b: Number(b) }; - } - // RGB.a = alpha; - newAlpha = alpha === 1 ? 1 : Number((1 - alpha).toPrecision(2)); - } - return { r: calc(RGB.r), g: calc(RGB.g), b: calc(RGB.b) }; -} -/** - * - * Check what color format is being used. - * - * @param {string} color Accepts any color format - * - * @return {object} Returns RGB color; {r,g,b} - */ -function checkColor(color) { - if (color in colors) - return colors[color.toLowerCase()]; - else if (color[0] === "#") - return hexToRgb(color); - else if (~color.indexOf("hsl")) - return hslToRgb(color); - else if (~color.indexOf("rgba")) - return rgbaToRgb(color); - else if (~color.indexOf("rgb")) - return rgbStringToRgb(color); - return { r: 255, g: 255, b: 255 }; -} -/** - * - * Set best contrast color based on a (background) color - * - * @param {string} color Accepts any color format - * - * @return {string} Returns RGB Alpha color - */ -export function setColorBasedOnBackground(color) { - const c = checkColor(color); - const RGB = typeof c === "object" ? c : { r: 255, g: 255, b: 255 }; - // https://www.w3.org/TR/AERT/#color-contrast - const o = Math.round((RGB.r * 299 + RGB.g * 587 + RGB.b * 114) / 1000); - return o > 125 ? "rgba(0,0,0,.87)" : "rgba(255,255,255,.87)"; -} -/** - * - * Expects a color and a contrast value between 0 and 1.' - * It will look at the supplied color's brightness and will start the contrast scale either from #000 (black) or #FFF (white). - * This function will work best when you supply a very dark or very bright color. - * It will return a gray color with the desired contrast which is based on the specified color. - * - * @param {string} color Accepts any color format - * @param {number} contrast Accepts a value between 0 and 1 - * - * @return {string} Returns HEX color - */ -export function setContrastScale(contrast, color) { - if (contrast > 1) - contrast = 1; - if (contrast < 0) - contrast = 0; - const max = 256; - const c = checkColor(color); - const { r, g, b } = typeof c === "object" ? c : { r: 255, g: 255, b: 255 }; - // https://www.w3.org/TR/AERT/#color-contrast - const brightness = Math.round((r * 299 + g * 587 + b * 114) / 1000); - const value = Math.round(brightness > max / 2 ? max - max * contrast : max * contrast); - return RgbToHex(value, value, value); -} diff --git a/theme/styles/native/core/helpers/_functions/mergeobjects.js b/theme/styles/native/core/helpers/_functions/mergeobjects.js deleted file mode 100644 index 0590b3e..0000000 --- a/theme/styles/native/core/helpers/_functions/mergeobjects.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Merge 2 objects - * This function will look at every object property of the second object and will override the matching property in the first object - * - * @param {object[]} sources Array of 2 objects - * - * @return {object} Returns merged object - * - */ -export default function (...sources) { - function mergeDeep(target, ...sources) { - function isObject(item) { - return item && typeof item === "object" && !Array.isArray(item); - } - if (!sources.length) - return target; - const source = sources.shift(); - if (isObject(target) && isObject(source)) { - Object.keys(source).forEach((key) => { - if (isObject(source[key])) { - if (!target[key]) - Object.assign(target, { [key]: {} }); - mergeDeep(target[key], source[key]); - } - else { - Object.assign(target, { [key]: source[key] }); - } - }); - } - return mergeDeep(target, ...sources); - } - return mergeDeep({}, ...sources); -} diff --git a/theme/styles/native/core/helpers/_functions/shadeblendconvert.js b/theme/styles/native/core/helpers/_functions/shadeblendconvert.js deleted file mode 100644 index aeb99be..0000000 --- a/theme/styles/native/core/helpers/_functions/shadeblendconvert.js +++ /dev/null @@ -1,94 +0,0 @@ -/** - * Blend two colors or add a shade to color - * Colors can be: - * HEX => (#FFFFFF / #FFF) - * RGB => rgb(255,255,255) - * RGBA => rgba(255,255,255, 0.8) - * - * Usage: - * shade => shadeBlendConvert(-0.5, "#FFF") // Makes #FFF 50% darker - * shade => shadeBlendConvert(0.5, "#000") // Makes #000 50% lighter - * shade => shadeBlendConvert(0.5, "#000", "c") // Makes #000 50% lighter and converts HEX to RGB - * blend => shadeBlendConvert(0.2, "rgb(0,0,0)", "rgb(0,200,0)") // rgb(0,0,0) + rgb(0,200,0) + 20% Blend will become rgb(0,40,0) - * blend => shadeBlendConvert(-0.2, "rgb(0,0,0)", "rgb(0,200,0)") // rgb(0,0,0) + rgb(0,200,0) + -20% Blend will become rgb(0,160,0) - * blend => shadeBlendConvert(0.75, "rgb(200,60,20)", "#67DAF0") // rgb(200,60,20) + #67DAF0 + 75% Blend will become #7fb3b9 - * - * - * @param {number} c Amount of change. Value between -1 and 1 - * @param {string} fromValue HEX / RGB / RGBA Color - * @param {string} toValue HEX / RGB / RGBA Color to blend with. If (to === 'c') return value will be RGB Color - * - * @return {string} Returns HEX color or RGB color if parameter to === 'c' - * - */ -export function shadeBlendConvert(c, fromValue, toValue = undefined) { - if (typeof c != "number" || - c < -1 || - c > 1 || - typeof fromValue != "string" || - (fromValue[0] != "r" && fromValue[0] != "#") || - (toValue && typeof toValue != "string")) - return "red"; //ErrorCheck - const sbcRip = (value) => { - const l = value.length, RGB = []; - if (l > 9) { - const d = value.split(","); - if (d.length < 3 || d.length > 4) - return null; //ErrorCheck - (RGB[0] = i(d[0].split("(")[1])), - (RGB[1] = i(d[1])), - (RGB[2] = i(d[2])), - (RGB[3] = d[3] ? parseFloat(d[3]) : -1); - } - else { - let hex = ""; - if (l == 8 || l == 6 || l < 4) - return null; //ErrorCheck - if (l == 4 || l == 5) - hex = "#" + value[1] + value[1] + value[2] + value[2] + value[3] + value[3] + (l > 4 ? value[4] + "" + value[4] : ""); //3 or 4 digit - let d = i(hex.slice(1), 16); - RGB[0] = (d >> 16) & 255; - RGB[1] = (d >> 8) & 255; - RGB[2] = d & 255; - RGB[3] = -1; - if (l == 9 || l == 5) { - RGB[3] = r((RGB[2] / 255) * 10000) / 10000; - RGB[2] = RGB[1]; - RGB[1] = RGB[0]; - RGB[0] = (d >> 24) & 255; - } - } - return RGB; - }; - let i = parseInt, r = Math.round, th = fromValue.length > 9, h = typeof toValue == "string" ? (toValue.length > 9 ? true : toValue == "c" ? !th : false) : th, b = c < 0, p = b ? c * -1 : c, to = toValue && toValue != "c" ? toValue : b ? "#000000" : "#FFFFFF", f = sbcRip(fromValue), t = sbcRip(to); - if (!f || !t) - return "red"; //ErrorCheck - if (h) - return ("rgb" + - (f[3] > -1 || t[3] > -1 ? "a(" : "(") + - r((t[0] - f[0]) * p + f[0]) + - "," + - r((t[1] - f[1]) * p + f[1]) + - "," + - r((t[2] - f[2]) * p + f[2]) + - (f[3] < 0 && t[3] < 0 - ? ")" - : "," + - (f[3] > -1 && t[3] > -1 ? r(((t[3] - f[3]) * p + f[3]) * 10000) / 10000 : t[3] < 0 ? f[3] : t[3]) + - ")")); - else - return ("#" + - (0x100000000 + - r((t[0] - f[0]) * p + f[0]) * 0x1000000 + - r((t[1] - f[1]) * p + f[1]) * 0x10000 + - r((t[2] - f[2]) * p + f[2]) * 0x100 + - (f[3] > -1 && t[3] > -1 - ? r(((t[3] - f[3]) * p + f[3]) * 255) - : t[3] > -1 - ? r(t[3] * 255) - : f[3] > -1 - ? r(f[3] * 255) - : 255)) - .toString(16) - .slice(1, f[3] > -1 || t[3] > -1 ? undefined : -2)); -} diff --git a/theme/styles/native/core/helpers/activityindicator.js b/theme/styles/native/core/helpers/activityindicator.js deleted file mode 100644 index 97ac202..0000000 --- a/theme/styles/native/core/helpers/activityindicator.js +++ /dev/null @@ -1,30 +0,0 @@ -import { brand } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Activity Indicator - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Activity indicator Colors -export const activityIndicatorSuccess = { - indicator: { - color: brand.success, - }, -}; -export const activityIndicatorWarning = { - indicator: { - color: brand.warning, - }, -}; -export const activityIndicatorDanger = { - indicator: { - color: brand.danger, - }, -}; diff --git a/theme/styles/native/core/helpers/badge.js b/theme/styles/native/core/helpers/badge.js deleted file mode 100644 index d224531..0000000 --- a/theme/styles/native/core/helpers/badge.js +++ /dev/null @@ -1,47 +0,0 @@ -import { badge } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Badge - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Badge Colors -export const badgePrimary = { - container: { - backgroundColor: badge.primary.backgroundColor, - }, - caption: { - color: badge.primary.color, - }, -}; -export const badgeSuccess = { - container: { - backgroundColor: badge.success.backgroundColor, - }, - caption: { - color: badge.success.color, - }, -}; -export const badgeWarning = { - container: { - backgroundColor: badge.warning.backgroundColor, - }, - caption: { - color: badge.warning.color, - }, -}; -export const badgeDanger = { - container: { - backgroundColor: badge.danger.backgroundColor, - }, - caption: { - color: badge.danger.color, - }, -}; diff --git a/theme/styles/native/core/helpers/buttons.js b/theme/styles/native/core/helpers/buttons.js deleted file mode 100644 index 80e7c6b..0000000 --- a/theme/styles/native/core/helpers/buttons.js +++ /dev/null @@ -1,208 +0,0 @@ -import { brand, button, contrast, font } from "../variables"; -import merge from "./_functions/mergeobjects"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Button - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Button Colors -export const btnSecondary = { - container: { - borderColor: button.secondary.borderColor, - backgroundColor: button.secondary.backgroundColor, - }, - icon: { - color: button.secondary.color, - }, - caption: { - color: button.secondary.color, - }, -}; -export const btnSuccess = { - container: { - borderColor: button.success.borderColor, - backgroundColor: button.success.backgroundColor, - }, - icon: { - color: button.success.color, - }, - caption: { - color: button.success.color, - }, -}; -export const btnWarning = { - container: { - borderColor: button.warning.borderColor, - backgroundColor: button.warning.backgroundColor, - }, - icon: { - color: button.warning.color, - }, - caption: { - color: button.warning.color, - }, -}; -export const btnDanger = { - container: { - borderColor: button.danger.borderColor, - backgroundColor: button.danger.backgroundColor, - }, - icon: { - color: button.danger.color, - }, - caption: { - color: button.danger.color, - }, -}; -export const btnPrimaryInversed = { - container: { - borderColor: button.primary.color, - backgroundColor: button.primary.color, - }, - icon: { - color: button.primary.backgroundColor, - }, - caption: { - color: button.primary.backgroundColor, - }, -}; -// -//== Extra Classes -//## Helper classes to change the look and feel of the widget -//-------------------------------------------------------------------------------------------------------------------// -export const btnSecondaryInversed = { - container: { - borderColor: button.secondary.inversedColor, - backgroundColor: button.secondary.backgroundColor, - }, - icon: { - color: button.secondary.inversedColor, - }, - caption: { - color: button.secondary.inversedColor, - }, -}; -// -// Button Icon Only -export const btnIcon = { - container: { - borderWidth: 0, - backgroundColor: "transparent", - paddingVertical: 0, - paddingHorizontal: 0, - }, - icon: { - color: font.color, - }, - caption: { - fontSize: 0, - }, -}; -export const btnIconPrimary = merge(btnIcon, { - icon: { - color: button.primary.backgroundColor, - }, -}); -export const btnIconSecondary = merge(btnIcon, { - icon: { - color: contrast.low, - }, -}); -export const btnIconSuccess = merge(btnIcon, { - icon: { - color: button.success.backgroundColor, - }, -}); -export const btnIconWarning = merge(btnIcon, { - icon: { - color: button.warning.backgroundColor, - }, -}); -export const btnIconDanger = merge(btnIcon, { - icon: { - color: button.danger.backgroundColor, - }, -}); -export const btnIconWhite = merge(btnIcon, { - icon: { - color: "#FFF", - }, -}); -// -export const btnIconGrayRounded = { - container: { - height: 80, - width: 80, - padding: 10, - borderRadius: 20, - borderWidth: 0, - backgroundColor: contrast.lowest, - }, - icon: { - size: 30, - color: contrast.high, - }, - caption: { - fontSize: 0, - }, -}; -// -// Round Button Icon With Background -export const btnIconPrimaryBackground = { - container: { - width: 40, - height: 40, - borderRadius: 20, - paddingVertical: 0, - paddingHorizontal: 0, - }, - icon: { - width: "100%", - height: "100%", - alignItems: "center", - justifyContent: "center", - size: button.fontSizeIconLarge, - color: button.primary.color, - }, -}; -// -// -// Text only -export const btnAsText = { - container: { - maxHeight: 22, - borderWidth: 0, - borderRadius: 0, - rippleColor: contrast.lowest, - backgroundColor: "transparent", - paddingVertical: 0, - paddingHorizontal: 0, - }, - icon: { - color: brand.primary, - size: button.fontSizeIcon, - }, - caption: { - color: brand.primary, - fontWeight: font.weightSemiBold, - fontSize: button.fontSize, - }, -}; -// -// Button sizes -export const btnLarge = { - icon: { - size: button.fontSizeIconLarge, - }, - caption: { - fontSize: button.fontSizeLarge, - }, -}; diff --git a/theme/styles/native/core/helpers/floatingactionbutton.js b/theme/styles/native/core/helpers/floatingactionbutton.js deleted file mode 100644 index 5d37bed..0000000 --- a/theme/styles/native/core/helpers/floatingactionbutton.js +++ /dev/null @@ -1,30 +0,0 @@ -import { brand } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Floating Action Button - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Floating Action Button Colors -export const floatingActionButtonSuccess = { - button: { - backgroundColor: brand.success, - }, -}; -export const floatingActionButtonWarning = { - button: { - backgroundColor: brand.warning, - }, -}; -export const floatingActionButtonDanger = { - button: { - backgroundColor: brand.danger, - }, -}; diff --git a/theme/styles/native/core/helpers/helperclasses.js b/theme/styles/native/core/helpers/helperclasses.js deleted file mode 100644 index 50ba7fb..0000000 --- a/theme/styles/native/core/helpers/helperclasses.js +++ /dev/null @@ -1,73 +0,0 @@ -import { Platform } from "react-native"; -import { background, border } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -*/ -// Hide on Android -export const hideOnAndroid = { - container: { - display: Platform.select({ ios: "flex", android: "none" }), - }, -}; -// Hide on iOS -export const hideOnIos = { - container: { - display: Platform.select({ ios: "none", android: "flex" }), - }, -}; -// -//== Background Colors -export const backgroundPrimary = { - container: { - backgroundColor: background.primary, - }, -}; -export const backgroundSecondary = { - container: { - backgroundColor: background.secondary, - }, -}; -export const backgroundBrandPrimary = { - container: { - backgroundColor: background.brandPrimary, - }, -}; -export const backgroundBrandSuccess = { - container: { - backgroundColor: background.brandSuccess, - }, -}; -export const backgroundBrandWarning = { - container: { - backgroundColor: background.brandWarning, - }, -}; -export const backgroundBrandDanger = { - container: { - backgroundColor: background.brandDanger, - }, -}; -export const backgroundGray = { - container: { - backgroundColor: background.gray, - }, -}; -// -// borders -export const borderTop = { - container: { - borderColor: border.color, - borderTopWidth: border.width, - }, -}; -export const borderBottom = { - container: { - borderColor: border.color, - borderBottomWidth: border.width, - }, -}; diff --git a/theme/styles/native/core/helpers/images.js b/theme/styles/native/core/helpers/images.js deleted file mode 100644 index cdfaaa2..0000000 --- a/theme/styles/native/core/helpers/images.js +++ /dev/null @@ -1,55 +0,0 @@ -import { border } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Image - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// -// -//== Extra Classes -//## Helper classes to change the look and feel of the widget -//-------------------------------------------------------------------------------------------------------------------// -// Image Sizes -export const thumbnail = { - image: { - width: "100%", - height: "auto", - aspectRatio: 1, - borderRadius: border.radius, - }, -}; -export const avatarSmall = { - image: { - width: 60, - height: 60, - borderRadius: 30, - }, -}; -export const avatarMedium = { - image: { - width: 80, - height: 80, - borderRadius: 40, - }, -}; -export const avatarLarge = { - image: { - width: 120, - height: 120, - borderRadius: 60, - }, -}; -export const inputIcon = { - image: { - width: 30, - height: 30, - }, -}; diff --git a/theme/styles/native/core/helpers/listviews.js b/theme/styles/native/core/helpers/listviews.js deleted file mode 100644 index 8d98e1f..0000000 --- a/theme/styles/native/core/helpers/listviews.js +++ /dev/null @@ -1,41 +0,0 @@ -import { listView } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - List View - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// List item dividers -export const listItemBorderBottom = { - listItem: { - borderColor: listView.border.color, - borderBottomWidth: listView.border.width, - }, -}; -export const listItemBorderRight = { - listItem: { - borderColor: listView.border.color, - borderRightWidth: listView.border.width, - }, -}; -// -//== Extra Classes -//## Helper classes to change the look and feel of the widget -//-------------------------------------------------------------------------------------------------------------------// -export const listItemIconSmall = { - icon: { - size: 16, - }, -}; -export const listItemIconLarge = { - icon: { - size: 24, - }, -}; diff --git a/theme/styles/native/core/helpers/listviewswipe.js b/theme/styles/native/core/helpers/listviewswipe.js deleted file mode 100644 index 5f09712..0000000 --- a/theme/styles/native/core/helpers/listviewswipe.js +++ /dev/null @@ -1,37 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - List View Swipe - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -export const listViewSwipeSmallPanels = { - leftAction: { - // PanelSize & All ViewStyle properties are allowed - panelSize: 150, - }, - rightAction: { - // PanelSize & All ViewStyle properties are allowed - panelSize: 150, - }, -}; -export const listViewSwipeLargePanels = { - leftAction: { - // PanelSize & All ViewStyle properties are allowed - panelSize: 250, - }, - rightAction: { - // PanelSize & All ViewStyle properties are allowed - panelSize: 250, - }, -}; -// -//== Extra Classes -//## Helper classes to change the look and feel of the widget -//-------------------------------------------------------------------------------------------------------------------// diff --git a/theme/styles/native/core/helpers/maps.js b/theme/styles/native/core/helpers/maps.js deleted file mode 100644 index 20d3491..0000000 --- a/theme/styles/native/core/helpers/maps.js +++ /dev/null @@ -1,54 +0,0 @@ -import { border, brand } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Maps - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Maps Colors -export const mapsSuccess = { - marker: { - color: brand.success, - }, -}; -export const mapsWarning = { - marker: { - color: brand.warning, - }, -}; -export const mapsDanger = { - marker: { - color: brand.danger, - }, -}; -// -// Maps Size -export const mapsSquare = { - container: { - aspectRatio: 1 / 1, - }, -}; -export const mapsMaxSpace = { - container: { - flex: 1, - aspectRatio: undefined, - }, -}; -// -//== Extra Classes -//## Helper classes to change the look and feel of the widget -//-------------------------------------------------------------------------------------------------------------------// -// Maps Shape -export const mapsRounded = { - container: { - borderRadius: border.radius, - overflow: "hidden", - }, -}; diff --git a/theme/styles/native/core/helpers/progressbar.js b/theme/styles/native/core/helpers/progressbar.js deleted file mode 100644 index 92298fc..0000000 --- a/theme/styles/native/core/helpers/progressbar.js +++ /dev/null @@ -1,58 +0,0 @@ -import { Platform } from "react-native"; -import { anyColorToRgbString } from "./_functions/convertcolors"; -import { brand } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Progress Bar - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Progress Bar Color -export const progressBarSuccess = { - bar: { - borderColor: Platform.select({ ios: brand.success }), - backgroundColor: Platform.select({ android: `rgba(${anyColorToRgbString(brand.success)},0.2)` }), - }, - fill: { - backgroundColor: brand.success, - }, -}; -export const progressBarWarning = { - bar: { - borderColor: Platform.select({ ios: brand.warning }), - backgroundColor: Platform.select({ android: `rgba(${anyColorToRgbString(brand.warning)},0.2)` }), - }, - fill: { - backgroundColor: brand.warning, - }, -}; -export const progressBarDanger = { - bar: { - borderColor: Platform.select({ ios: brand.danger }), - backgroundColor: Platform.select({ android: `rgba(${anyColorToRgbString(brand.danger)},0.2)` }), - }, - fill: { - backgroundColor: brand.danger, - }, -}; -// -// Progress Bar Size -export const progressBarSmall = { - bar: { - height: 3, - borderRadius: Platform.select({ ios: 2 }), - }, -}; -export const progressBarLarge = { - bar: { - height: 10, - borderRadius: Platform.select({ ios: 8 }), - }, -}; diff --git a/theme/styles/native/core/helpers/progresscircle.js b/theme/styles/native/core/helpers/progresscircle.js deleted file mode 100644 index 393f0d7..0000000 --- a/theme/styles/native/core/helpers/progresscircle.js +++ /dev/null @@ -1,60 +0,0 @@ -import { brand, contrast, font } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Progress Circle - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Progress Circle Color -export const progressCircleSuccess = { - fill: { - backgroundColor: brand.success, - }, - text: { - color: contrast.regular, - }, -}; -export const progressCircleWarning = { - fill: { - backgroundColor: brand.warning, - }, - text: { - color: contrast.regular, - }, -}; -export const progressCircleDanger = { - fill: { - backgroundColor: brand.danger, - }, - text: { - color: contrast.regular, - }, -}; -export const progressCircleGray = { - fill: { - backgroundColor: contrast.regular, - }, - text: { - color: contrast.regular, - }, -}; -// -// Sizes -export const progressCircleSmall = { - circle: { - size: 50, - }, - fill: { - width: 3, - }, - text: { - fontSize: font.sizeSmall, - }, -}; diff --git a/theme/styles/native/core/helpers/slider.js b/theme/styles/native/core/helpers/slider.js deleted file mode 100644 index e1f9443..0000000 --- a/theme/styles/native/core/helpers/slider.js +++ /dev/null @@ -1,40 +0,0 @@ -import { Platform } from "react-native"; -import { brand, contrast } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Slider - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Slider Color -export const sliderSuccess = { - highlight: { - backgroundColor: brand.success, - }, - highlightDisabled: { - backgroundColor: Platform.select({ ios: brand.success, android: contrast.low }), - }, -}; -export const sliderWarning = { - highlight: { - backgroundColor: brand.warning, - }, - highlightDisabled: { - backgroundColor: Platform.select({ ios: brand.warning, android: contrast.low }), - }, -}; -export const sliderDanger = { - highlight: { - backgroundColor: brand.danger, - }, - highlightDisabled: { - backgroundColor: Platform.select({ ios: brand.danger, android: contrast.low }), - }, -}; diff --git a/theme/styles/native/core/helpers/tabcontainer.js b/theme/styles/native/core/helpers/tabcontainer.js deleted file mode 100644 index 2d64f41..0000000 --- a/theme/styles/native/core/helpers/tabcontainer.js +++ /dev/null @@ -1,33 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Tab Container - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Enable scroll for the tab bar -export const tabContainerScroll = { - tabBar: { - scrollEnabled: true, - }, -}; -// -//== Extra Classes -//## Helper classes to change the look and feel of the widget -//-------------------------------------------------------------------------------------------------------------------// -// Tab container as content of page -export const tabContainerMinimal = { - container: { - backgroundColor: "transparent", - }, - tabBar: { - backgroundColor: "transparent", - elevation: 0, - }, -}; diff --git a/theme/styles/native/core/helpers/textbox.js b/theme/styles/native/core/helpers/textbox.js deleted file mode 100644 index ad07594..0000000 --- a/theme/styles/native/core/helpers/textbox.js +++ /dev/null @@ -1,34 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Text Box - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Text Box Color -export const textInputCapitalizeNone = { - input: { - autoCapitalize: "none", - }, -}; -export const textInputCapitalizeCharacters = { - input: { - autoCapitalize: "characters", - }, -}; -export const textInputCapitalizeWords = { - input: { - autoCapitalize: "words", - }, -}; -export const textInputCapitalizeSentences = { - input: { - autoCapitalize: "sentences", - }, -}; diff --git a/theme/styles/native/core/helpers/typography.js b/theme/styles/native/core/helpers/typography.js deleted file mode 100644 index b960e00..0000000 --- a/theme/styles/native/core/helpers/typography.js +++ /dev/null @@ -1,150 +0,0 @@ -import { brand, contrast, font } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Text - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Text Colors -export const textPrimary = { - text: { - color: brand.primary, - }, -}; -export const textSuccess = { - text: { - color: brand.success, - }, -}; -export const textWarning = { - text: { - color: brand.warning, - }, -}; -export const textDanger = { - text: { - color: brand.danger, - }, -}; -export const textWhite = { - text: { - color: "#FFF", - }, -}; -// -export const textContrastLowest = { - text: { - color: contrast.lowest, - }, -}; -export const textContrastLower = { - text: { - color: contrast.lower, - }, -}; -export const textContrastLow = { - text: { - color: contrast.low, - }, -}; -export const textContrastDefault = { - text: { - color: contrast.regular, - }, -}; -export const textContrastHigh = { - text: { - color: contrast.high, - }, -}; -export const textContrastHigher = { - text: { - color: contrast.higher, - }, -}; -export const textContrastHighest = { - text: { - color: contrast.highest, - }, -}; -// -// Text Alignment -export const textLeft = { - text: { - textAlign: "left", - }, -}; -export const textCenter = { - text: { - textAlign: "center", - }, -}; -export const textRight = { - text: { - textAlign: "right", - }, -}; -// -// Text Weights -export const textLight = { - text: { - fontWeight: font.weightLight, - }, -}; -export const textNormal = { - text: { - fontWeight: font.weightNormal, - }, -}; -export const textSemiBold = { - text: { - fontWeight: font.weightSemiBold, - }, -}; -export const textBold = { - text: { - fontWeight: font.weightBold, - }, -}; -// -// Text Sizes -export const textSmall = { - text: { - fontSize: font.sizeSmall, - lineHeight: font.sizeSmall + 2, - }, -}; -export const textLarge = { - text: { - fontSize: font.sizeLarge, - lineHeight: font.sizeLarge + 2, - }, -}; -// -//== Extra Classes -//## Helper classes to change the look and feel of the widget -//-------------------------------------------------------------------------------------------------------------------// -// -// Text Transformations -export const textLowercase = { - text: { - textTransform: "lowercase", - }, -}; -export const textUppercase = { - text: { - textTransform: "uppercase", - }, -}; -export const textCapitalize = { - text: { - textTransform: "capitalize", - }, -}; diff --git a/theme/styles/native/core/manifest.json b/theme/styles/native/core/manifest.json deleted file mode 100644 index cddd493..0000000 --- a/theme/styles/native/core/manifest.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "Atlas-UI-Framework", - "version": "2.6.7" -} \ No newline at end of file diff --git a/theme/styles/native/core/variables.js b/theme/styles/native/core/variables.js deleted file mode 100644 index 7d8a092..0000000 --- a/theme/styles/native/core/variables.js +++ /dev/null @@ -1,287 +0,0 @@ -import { Platform } from "react-native"; -import * as custom from "../app/custom-variables"; -import adjustFont, { height, width } from "./helpers/_functions/adjustfont"; -import { anyColorToRgbString, setColorBasedOnBackground, setContrastScale } from "./helpers/_functions/convertcolors"; -import merge from "./helpers/_functions/mergeobjects"; -// -// -//== Global variables -//## Variables to be used during styling -//-------------------------------------------------------------------------------------------------------------------// -// System defined read-only values -export const deviceHeight = height; -export const deviceWidth = width; -// -// Brand Style -let brand = { - primary: "#0595DB", - success: "#76CA02", - warning: "#f99b1d", - danger: "#ed1c24", - primaryLight: `rgba(${anyColorToRgbString("#0595DB")}, 0.14)`, - successLight: `rgba(${anyColorToRgbString("#76CA02")}, 0.14)`, - warningLight: `rgba(${anyColorToRgbString("#f99b1d")}, 0.14)`, - dangerLight: `rgba(${anyColorToRgbString("#ed1c24")}, 0.14)`, -}; -brand = merge(brand, custom.brand || {}); -// -// Background colors -let background = { - primary: "#FFF", - secondary: setContrastScale(0.03, "#FFF"), - gray: "#c6c6cc", - brandPrimary: brand.primary, - brandSuccess: brand.success, - brandWarning: brand.warning, - brandDanger: brand.danger, -}; -background = merge(background, custom.background || {}); -// -// Contrast (Gray) colors based on background.primary -let contrast = { - highest: setContrastScale(0.95, background.primary), - higher: setContrastScale(0.8, background.primary), - high: setContrastScale(0.65, background.primary), - regular: setContrastScale(0.5, background.primary), - low: setContrastScale(0.35, background.primary), - lower: setContrastScale(0.2, background.primary), - lowest: setContrastScale(0.05, background.primary), -}; -contrast = merge(contrast, custom.contrast || {}); -// -// Border Style -let border = { - color: setContrastScale(0.17, background.primary), - width: 1, - radius: 5, -}; -border = merge(border, custom.border || {}); -// -// Font Styles -let font = { - size: adjustFont(14), - sizeSmall: adjustFont(12), - sizeLarge: adjustFont(18), - sizeH1: adjustFont(31), - sizeH2: adjustFont(26), - sizeH3: adjustFont(24), - sizeH4: adjustFont(18), - sizeH5: adjustFont(14), - sizeH6: adjustFont(12), - color: setColorBasedOnBackground(background.primary), - colorDisabled: "#9DA1A8", - labelColorDisabled: "#474E5C", - weightLight: "100", - weightNormal: "normal", - weightSemiBold: "600", - weightBold: "bold", - family: Platform.select({ ios: "System", android: "normal" }), -}; -font = merge(font, custom.font || {}); -// -// Spacing -let spacing = { - smallest: 5, - smaller: 10, - small: 15, - regular: 20, - large: 25, - larger: 30, - largest: 40, -}; -spacing = merge(spacing, custom.spacing || {}); -// -// Button Styles -let button = { - fontSize: font.sizeSmall, - fontSizeLarge: font.size, - fontWeight: font.weightBold, - fontSizeIcon: font.sizeSmall, - fontSizeIconLarge: font.size, - borderRadius: border.radius, - paddingVertical: spacing.smaller, - paddingHorizontal: spacing.regular, - header: { - color: contrast.highest, - borderColor: "transparent", - backgroundColor: "transparent", - fontSize: font.sizeSmall, - fontSizeIcon: font.sizeSmall, - paddingLeft: 0, - paddingRight: 10, - }, - primary: { - color: "#FFF", - colorDisabled: font.colorDisabled, - borderColor: brand.primary, - borderColorDisabled: border.color, - backgroundColor: brand.primary, - backgroundColorDisabled: border.color, - }, - secondary: { - color: brand.primary, - borderColor: brand.primary, - backgroundColor: "transparent", - inversedColor: "#FFF", - }, - success: { - color: "#FFF", - borderColor: brand.success, - backgroundColor: brand.success, - }, - warning: { - color: "#FFF", - borderColor: brand.warning, - backgroundColor: brand.warning, - }, - danger: { - color: "#FFF", - borderColor: brand.danger, - backgroundColor: brand.danger, - }, -}; -button = merge(button, custom.button || {}); -// -//Input Styles -let input = { - // Colors - color: font.color, - colorDisabled: font.colorDisabled, - errorColor: brand.danger, - labelColor: font.color, - labelColorDisabled: font.labelColorDisabled, - borderColor: contrast.lower, - borderColorFocused: brand.primary, - backgroundColor: background.primary, - backgroundColorDisabled: background.secondary, - selectionColor: contrast.lower, - placeholderTextColor: contrast.regular, - underlineColorAndroid: "transparent", - inputContainerUnderlayColor: `rgba(${anyColorToRgbString(contrast.low)},0.4)`, - // Sizes - fontSize: font.size, - fontFamily: font.family, - borderWidth: border.width, - borderRadius: border.radius, - // Alignment - textAlign: "left", - paddingHorizontal: spacing.smaller, - paddingVertical: spacing.small, -}; -input = merge(input, custom.input || {}); -// -// Navigation Styles -let navigation = { - statusBar: { - backgroundColor: background.primary, - barStyle: custom.darkMode ? "light-content" : "dark-content", - }, - topBar: { - backgroundColor: background.primary, - backButtonColor: contrast.highest, - titleColor: contrast.highest, - titleFontSize: Platform.select({ android: font.sizeH4, ios: font.sizeH5 }), - }, - bottomBar: { - color: contrast.high, - selectedTextColor: contrast.high, - selectedIconColor: brand.primary, - backgroundColor: background.primary, - fontSize: font.sizeSmall, - iconSize: font.sizeSmall, - }, - progressOverlay: { - color: font.color, - activityIndicatorColor: font.color, - backgroundColor: `rgba(0, 0, 0, 0.5)`, - containerBackgroundColor: background.secondary, - fontSize: font.size, - borderRadius: border.radius, - elevation: 1.5, - shadowColor: "#000", - shadowOpacity: 0.1, - shadowRadius: 10, - }, -}; -navigation = merge(navigation, custom.navigation || {}); -// -// Badge Styles -let badge = { - fontWeight: font.weightBold, - borderRadius: 30, - paddingVertical: 3, - paddingHorizontal: spacing.smaller, - default: { - color: contrast.higher, - backgroundColor: contrast.lower, - }, - primary: { - color: brand.primary, - backgroundColor: brand.primaryLight, - }, - success: { - color: brand.success, - backgroundColor: brand.successLight, - }, - warning: { - color: brand.warning, - backgroundColor: brand.warningLight, - }, - danger: { - color: brand.danger, - backgroundColor: brand.dangerLight, - }, -}; -badge = merge(badge, custom.badge || {}); -// -// Tabcontainer Styles -let tabContainer = { - tabBar: { - pressColor: contrast.lower, - backgroundColor: background.primary, - }, - indicator: { - backgroundColor: brand.primary, - height: Platform.select({ ios: 2, android: 2 }), - }, - label: { - color: contrast.highest, - fontWeight: font.weightBold, - textTransform: "uppercase", - }, - activeLabel: { - color: brand.primary, - fontWeight: font.weightBold, - textTransform: "uppercase", - }, - badgeContainer: { - borderRadius: badge.borderRadius, - backgroundColor: badge.default.backgroundColor, - paddingVertical: badge.paddingVertical, - paddingHorizontal: badge.paddingHorizontal, - marginLeft: 8 - }, - badgeCaption: { - fontSize: font.size, - color: badge.default.color, - fontWeight: badge.fontWeight, - } -}; -tabContainer = merge(tabContainer, custom.tabContainer || {}); -// -// Listview Styles -let listView = { - border: { - color: border.color, - width: border.width, - }, -}; -listView = merge(listView, custom.listView || {}); -// -// Layoutgrid Styles -let layoutGrid = { - gutterSize: 15, -}; -layoutGrid = merge(layoutGrid, custom.layoutGrid || {}); -// -export { brand, background, border, contrast, font, spacing, button, input, navigation, tabContainer, listView, layoutGrid, badge, }; diff --git a/theme/styles/native/core/widgets/activityindicator.js b/theme/styles/native/core/widgets/activityindicator.js deleted file mode 100644 index 088542b..0000000 --- a/theme/styles/native/core/widgets/activityindicator.js +++ /dev/null @@ -1,23 +0,0 @@ -import { brand } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Activity Indicator - - Default Class For Mendix Activity Indicator Widget -========================================================================== */ -export const com_mendix_widget_native_activityindicator_ActivityIndicator = { - container: { - // All ViewStyle properties are allowed - }, - indicator: { - // Color and size are allowed - color: brand.primary, - size: "large", - }, -}; diff --git a/theme/styles/native/core/widgets/animation.js b/theme/styles/native/core/widgets/animation.js deleted file mode 100644 index bfef391..0000000 --- a/theme/styles/native/core/widgets/animation.js +++ /dev/null @@ -1,15 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Animation - - Default Class For Mendix Animation Widget -========================================================================== */ -export const com_mendix_widget_native_animation_Animation = { - container: {}, -}; diff --git a/theme/styles/native/core/widgets/backgroundimage.js b/theme/styles/native/core/widgets/backgroundimage.js deleted file mode 100644 index bd79f14..0000000 --- a/theme/styles/native/core/widgets/backgroundimage.js +++ /dev/null @@ -1,19 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. -// -/* ========================================================================== - Background Image - - Default Class For Mendix Background Image Widget -========================================================================== */ -export const com_mendix_widget_native_backgroundimage_BackgroundImage = { - container: { - // All ViewStyle properties are allowed - }, - image: { - // svgColor and all ImageStyle properties are allowed - }, -}; diff --git a/theme/styles/native/core/widgets/badge.js b/theme/styles/native/core/widgets/badge.js deleted file mode 100644 index d34de33..0000000 --- a/theme/styles/native/core/widgets/badge.js +++ /dev/null @@ -1,29 +0,0 @@ -import { badge, font } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Badge - - Default Class For Mendix Badge Widget -========================================================================== */ -export const com_mendix_widget_native_badge_Badge = { - container: { - // All ViewStyle properties are allowed - borderRadius: badge.borderRadius, - backgroundColor: badge.default.backgroundColor, - paddingVertical: badge.paddingVertical, - paddingHorizontal: badge.paddingHorizontal, - }, - caption: { - // All TextStyle properties are allowed - color: badge.default.color, - fontFamily: font.family, - fontWeight: badge.fontWeight, - marginTop: -1, - }, -}; diff --git a/theme/styles/native/core/widgets/barchart.js b/theme/styles/native/core/widgets/barchart.js deleted file mode 100644 index cfcf64d..0000000 --- a/theme/styles/native/core/widgets/barchart.js +++ /dev/null @@ -1,169 +0,0 @@ -import { border, brand, font, spacing } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Line Chart - - Default Class For Mendix Line Chart Widget -========================================================================== */ -// eslint-disable-next-line @typescript-eslint/camelcase -export const com_mendix_widget_native_barchart_BarChart = { - container: { - // All ViewStyle properties are allowed - }, - errorMessage: { - // All TextStyle properties are allowed - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal - }, - chart: { - // All ViewStyle properties are allowed - }, - grid: { - /* - Allowed properties: - - backgroundColor (string) - - dashArray (string) - - lineColor (string) - - padding (number) - - paddingBottom (number) - - paddingHorizontal (number) - - paddingLeft (number) - - paddingRight (number) - - paddingTop (number) - - paddingVertical (number) - - width (number) - */ - lineColor: border.color, - paddingBottom: 32, - paddingLeft: 32, - paddingRight: 8, - paddingTop: 8 - }, - xAxis: { - /* - Allowed properties: - - color (string) - - dashArray (string) - - fontFamily (string) - - fontSize (number) - - fontStyle ("normal" or "italic") - - fontWeight ("normal" or "bold" or "100" or "200" or "300" or "400" or "500" or "600" or "700" or "800" or "900") - - lineColor (string) - - width (number) - */ - color: font.color, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - lineColor: border.color, - label: { - /* - All TextStyle properties are allowed and: - - relativePositionGrid ("bottom" or "right") - */ - color: font.color, - alignSelf: "center", - marginHorizontal: 0, - marginVertical: spacing.smallest, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - relativePositionGrid: "bottom" - }, - }, - yAxis: { - /* - Allowed properties: - - color (string) - - dashArray (string) - - fontFamily (string) - - fontSize (number) - - fontStyle ("normal" or "italic") - - fontWeight ("normal" or "bold" or "100" or "200" or "300" or "400" or "500" or "600" or "700" or "800" or "900") - - lineColor (string) - - width (number) - */ - color: font.color, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - lineColor: border.color, - label: { - /* - All TextStyle properties are allowed and: - - relativePositionGrid ("top" or "left") - */ - color: font.color, - marginHorizontal: 0, - marginVertical: spacing.smallest, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - relativePositionGrid: "top" - }, - }, - bars: { - /* - Allowed properties: - - barColorPalette (string with array of colors separated by ';') - - barsOffset (number) - - */ - barColorPalette: Object.values(brand) - .map((color, index, brandColors) => (index === brandColors.length - 1 ? color : `${color};`)) - .join(""), - barsOffset: 20, - customBarStyles: { - your_static_or_dynamic_attribute_value: { - bar: { - /* - Allowed properties: - - ending (number) - - barColor (string) - - width (number) - */ - }, - label: { - /* - Allowed properties: - - fontFamily (string) - - fontSize (number) - - fontStyle ("normal" or "italic") - - fontWeight ("normal" or "bold" or "100" or "200" or "300" or "400" or "500" or "600" or "700" or "800" or "900") - */ - } - } - } - }, - legend: { - container: { - // All ViewStyle properties are allowed - justifyContent: "flex-start", - marginHorizontal: 0, - marginVertical: spacing.smallest - }, - item: { - // All ViewStyle properties are allowed - padding: 0, - paddingRight: spacing.smaller - }, - indicator: { - // All ViewStyle properties are allowed - marginRight: spacing.smallest - }, - label: { - // All TextStyle properties are allowed - color: font.color, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal - } - } -}; diff --git a/theme/styles/native/core/widgets/bottomsheet.js b/theme/styles/native/core/widgets/bottomsheet.js deleted file mode 100644 index f4e3177..0000000 --- a/theme/styles/native/core/widgets/bottomsheet.js +++ /dev/null @@ -1,67 +0,0 @@ -import { background, border, brand, contrast, font } from "../variables"; -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. -// -/* ========================================================================== - Bottom Sheet - - Default Class For Mendix Bottom Sheet Widget -========================================================================== */ -export const com_mendix_widget_native_bottomsheet_BottomSheet = { - container: { - // All ViewStyle properties are allowed - backgroundColor: background.primary, - borderRadius: border.radius, - elevation: 20, - shadowColor: "#000", - shadowOpacity: 0.1, - shadowRadius: 6, - shadowOffset: { - width: 0, - height: -4, - }, - }, - containerWhenExpandedFullscreen: { - // All ViewStyle properties are allowed - height: "100%", - alignSelf: "stretch", - backgroundColor: background.primary, - }, - modal: { - // All ViewStyle properties are allowed - margin: 0, - justifyContent: "flex-end", - }, - modalItems: { - container: { - // rippleColor & All TextStyle properties are allowed - height: 50, - marginTop: 0, - rippleColor: contrast.lower, - backgroundColor: background.primary, - }, - defaultStyle: { - // All TextStyle properties are allowed - fontSize: 16, - color: font.color, - }, - primaryStyle: { - // All TextStyle properties are allowed - fontSize: 16, - color: brand.primary, - }, - dangerStyle: { - // All TextStyle properties are allowed - fontSize: 16, - color: brand.danger, - }, - customStyle: { - // All TextStyle properties are allowed - fontSize: 16, - color: font.color, - }, - }, -}; diff --git a/theme/styles/native/core/widgets/buttons.js b/theme/styles/native/core/widgets/buttons.js deleted file mode 100644 index 7813ea6..0000000 --- a/theme/styles/native/core/widgets/buttons.js +++ /dev/null @@ -1,72 +0,0 @@ -import { button, contrast, font } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Button - - Default Class For Mendix Button Widget -========================================================================== */ -export const ActionButton = { - container: { - // Ripplecolor and all ViewStyle properties are allowed - borderWidth: 1, - borderStyle: "solid", - rippleColor: contrast.lowest, - borderColor: button.primary.borderColor, - backgroundColor: button.primary.backgroundColor, - alignItems: "center", - justifyContent: "center", - borderRadius: button.borderRadius, - paddingVertical: button.paddingVertical, - paddingHorizontal: button.paddingHorizontal, - }, - containerDisabled: { - // All ViewStyle properties are allowed - borderColor: button.primary.borderColorDisabled, - backgroundColor: button.primary.backgroundColorDisabled, - }, - icon: { - // size and color are allowed - color: button.primary.color, - size: button.fontSizeIcon, - }, - iconDisabled: { - // size and color are allowed - color: button.primary.colorDisabled, - }, - caption: { - // All TextStyle properties are allowed - color: button.primary.color, - fontSize: button.fontSize, - fontFamily: font.family, - fontWeight: button.fontWeight, - }, - captionDisabled: { - // All TextStyle properties are allowed - color: button.primary.colorDisabled, - }, -}; -// -// Default style for button inside a header -export const ActionButtonHeader = { - container: { - borderColor: button.header.borderColor, - backgroundColor: button.header.backgroundColor, - paddingLeft: button.header.paddingLeft, - paddingRight: button.header.paddingRight, - }, - icon: { - color: button.header.color, - size: button.header.fontSizeIcon, - }, - caption: { - color: button.header.color, - fontSize: button.header.fontSize, - fontFamily: font.family, - }, -}; diff --git a/theme/styles/native/core/widgets/carousel.js b/theme/styles/native/core/widgets/carousel.js deleted file mode 100644 index 09b071e..0000000 --- a/theme/styles/native/core/widgets/carousel.js +++ /dev/null @@ -1,119 +0,0 @@ -import { brand, contrast, font, spacing } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Button - - Default Class For Mendix Carousel Widget -========================================================================== */ -// Card -const carouselFullWidthLayout = { - slideItem: { - // All ViewStyle properties are allowed - height: 250, - }, - inactiveSlideItem: { - // Only opacity and scale are allowed - }, - pagination: { - container: { - // All ViewStyle properties are allowed - position: "absolute", - bottom: 0, - width: "100%", - justifyContent: "center", - paddingHorizontal: spacing.regular, - paddingBottom: spacing.regular, - }, - text: { - // All TextStyle properties are allowed - color: "#FFF", - fontSize: font.size, - fontFamily: font.family, - textAlign: "center", - textShadowColor: "#888", - textShadowRadius: 3, - textShadowOffset: { - width: 0, - height: 1, - }, - }, - dotContainerStyle: { - // All ViewStyle properties are allowed - marginHorizontal: 3, - }, - dotStyle: { - // Color and all ViewStyle properties are allowed - color: "#FFF", - }, - inactiveDotStyle: { - // Only opacity, scale and color are allowed - color: "rgba(255, 255, 255, 0.45)", - scale: 1, - }, - }, -}; -const carouselCardLayout = { - slideItem: { - // All ViewStyle properties are allowed - width: "70%", - height: 250, - padding: 8, - paddingBottom: spacing.regular, - elevation: 1.5, - shadowColor: "#000", - shadowOpacity: 0.5, - shadowRadius: 6, - shadowOffset: { - width: 0, - height: 4, - }, - }, - inactiveSlideItem: { - // Only opacity and scale are allowed - opacity: .8, - }, - pagination: { - container: { - // All ViewStyle properties are allowed - paddingHorizontal: spacing.regular, - paddingBottom: spacing.smaller, - }, - text: { - // All TextStyle properties are allowed - color: font.color, - fontSize: font.size, - fontFamily: font.family, - textAlign: "center", - }, - dotContainerStyle: { - // All ViewStyle properties are allowed - marginHorizontal: 3, - }, - dotStyle: { - // Color and all ViewStyle properties are allowed - color: brand.primary, - }, - inactiveDotStyle: { - // Only opacity, scale and color are allowed - color: contrast.lower, - scale: 1, - }, - }, -}; -export const com_mendix_widget_native_carousel_Carousel = { - container: { - // All ViewStyle properties are allowed - }, - fullWidthLayout: carouselFullWidthLayout, - cardLayout: carouselCardLayout, - activityIndicator: { - // Only color is allowed - color: font.color, - }, -}; diff --git a/theme/styles/native/core/widgets/checkbox.js b/theme/styles/native/core/widgets/checkbox.js deleted file mode 100644 index bcfa729..0000000 --- a/theme/styles/native/core/widgets/checkbox.js +++ /dev/null @@ -1,86 +0,0 @@ -import { Platform } from "react-native"; -import { background, border, brand, contrast, font, spacing } from "../variables"; -import { TextBox, TextBoxVertical } from "./textbox"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - CheckBox - - Default Class For Mendix CheckBox Widget -========================================================================== */ -export const CheckBox = { - container: { - // All ViewStyle properties are allowed - ...TextBox.container, - paddingVertical: spacing.smallest, - justifyContent: "center", - }, - containerDisabled: { - // All ViewStyle properties are allowed - ...TextBox.containerDisabled - }, - label: { - // numberOfLines and all TextStyle properties are allowed - ...TextBox.label, - }, - labelDisabled: { - // All TextStyle properties are allowed - ...TextBox.labelDisabled - }, - input: { - // thumbColorOn, thumbColorOff, trackColorOn, trackColorOff and all TextStyle properties are allowed - backgroundColor: "transparent", - marginRight: Platform.select({ android: -3 }), - thumbColorOn: background.primary, - trackColorOn: brand.success, - thumbColorOff: contrast.regular, - trackColorOff: contrast.lower, - }, - inputDisabled: { - // thumbColorOn, thumbColorOff, trackColorOn, trackColorOff and all TextStyle properties are allowed - thumbColorOn: background.secondary, - trackColorOn: font.colorDisabled, - thumbColorOff: background.secondary, - trackColorOff: border.color, - }, - inputError: { - // thumbColorOn, thumbColorOff, trackColorOn, trackColorOff and all TextStyle properties are allowed - ...TextBox.inputError, - thumbColorOn: background.primary, - trackColorOn: brand.danger, - thumbColorOff: contrast.regular, - trackColorOff: brand.danger, - }, - validationMessage: { - // All TextStyle properties are allowed - ...TextBox.validationMessage, - alignSelf: "stretch", - }, -}; -export const CheckBoxVertical = { - container: TextBoxVertical.container, - containerDisabled: TextBoxVertical.containerDisabled, - label: TextBoxVertical.label, - labelDisabled: TextBoxVertical.labelDisabled, - input: { - ...CheckBox.input, - alignSelf: "flex-start", - }, - inputDisabled: CheckBox.inputDisabled, - inputError: { - ...TextBoxVertical.inputError, - thumbColorOn: background.primary, - trackColorOn: brand.danger, - thumbColorOff: contrast.regular, - trackColorOff: brand.danger, - }, - validationMessage: { - ...TextBoxVertical.validationMessage, - alignSelf: "stretch", - }, -}; diff --git a/theme/styles/native/core/widgets/colorpicker.js b/theme/styles/native/core/widgets/colorpicker.js deleted file mode 100644 index 020e2e3..0000000 --- a/theme/styles/native/core/widgets/colorpicker.js +++ /dev/null @@ -1,20 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Color Picker - - Default Class For Mendix Color Picker Widget -========================================================================== */ -export const com_mendix_widget_native_colorpicker_ColorPicker = { - container: { - // All ViewStyle properties are allowed - }, - thumbnail: { - // All ViewStyle properties are allowed - }, -}; diff --git a/theme/styles/native/core/widgets/container.js b/theme/styles/native/core/widgets/container.js deleted file mode 100644 index ed3553a..0000000 --- a/theme/styles/native/core/widgets/container.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Container - - Default Class For Mendix Container Widget -========================================================================== */ -export const Container = { - container: { - // rippleColor & all ViewStyle properties are allowed - }, - containerDisabled: { - // All ViewStyle properties are allowed - opacity: 0.6 - } -}; -export const ScrollContainer = { - container: { - // All ViewStyle properties are allowed - }, -}; diff --git a/theme/styles/native/core/widgets/datepicker.js b/theme/styles/native/core/widgets/datepicker.js deleted file mode 100644 index a30e2d3..0000000 --- a/theme/styles/native/core/widgets/datepicker.js +++ /dev/null @@ -1,84 +0,0 @@ -import { background, font, input } from "../variables"; -import { TextBox, TextBoxVertical } from "./textbox"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Date Picker - - Default Class For Mendix Date Picker Widget -========================================================================== */ -export const DatePicker = { - container: { - // All ViewStyle properties are allowed - ...TextBox.container, - }, - containerDisabled: { - // All ViewStyle properties are allowed - ...TextBox.containerDisabled - }, - label: { - // numberOfLines and all TextStyle properties are allowed - ...TextBox.label, - }, - labelDisabled: { - // All TextStyle properties are allowed - ...TextBox.labelDisabled - }, - pickerIOS: { - // All ViewStyle properties & "color" (type: string) are allowed - backgroundColor: background.primary, - color: font.color, - }, - pickerBackdropIOS: { - // All ViewStyle properties are allowed - }, - pickerTopIOS: { - // All ViewStyle properties are allowed - backgroundColor: background.primary, - }, - value: { - // All TextStyle properties are allowed - color: input.color, - borderColor: input.borderColor, - backgroundColor: input.backgroundColor, - fontSize: input.fontSize, - fontFamily: font.family, - borderWidth: input.borderWidth, - borderRadius: input.borderRadius, - paddingHorizontal: input.paddingHorizontal, - paddingVertical: input.paddingVertical, - }, - valueDisabled: { - // All TextStyle properties are allowed - backgroundColor: input.backgroundColorDisabled, - color: input.colorDisabled - }, - placeholder: { - // All TextStyle properties are allowed - color: input.placeholderTextColor, - }, - placeholderDisabled: { - // All TextStyle properties are allowed - color: input.colorDisabled - }, - validationMessage: { - // All TextStyle properties are allowed - ...TextBox.validationMessage, - }, -}; -export const DatePickerVertical = { - container: TextBoxVertical.container, - containerDisabled: TextBoxVertical.containerDisabled, - label: TextBoxVertical.label, - labelDisabled: TextBoxVertical.labelDisabled, - value: DatePicker.value, - valueDisabled: DatePicker.valueDisabled, - placeholder: DatePicker.placeholder, - placeholderDisabled: DatePicker.placeholderDisabled, - validationMessage: TextBoxVertical.validationMessage, -}; diff --git a/theme/styles/native/core/widgets/dropdown.js b/theme/styles/native/core/widgets/dropdown.js deleted file mode 100644 index bd7faa8..0000000 --- a/theme/styles/native/core/widgets/dropdown.js +++ /dev/null @@ -1,144 +0,0 @@ -import { border, contrast, font, input } from "../variables"; -import { TextBox, TextBoxVertical } from "./textbox"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Drop Down - - Default Class For Mendix Drop Down Widget -========================================================================== */ -export const DropDown = { - container: { - // All ViewStyle properties are allowed - ...TextBox.container, - }, - containerDisabled: { - // All ViewStyle properties are allowed - ...TextBox.containerDisabled - }, - label: { - // numberOfLines and all TextStyle properties are allowed - ...TextBox.label, - }, - labelDisabled: { - // All TextStyle properties are allowed - ...TextBox.labelDisabled - }, - value: { - // All TextStyle properties & placeholderTextColor are allowed - color: input.color, - fontSize: input.fontSize, - fontFamily: input.fontFamily, - placeholderTextColor: input.placeholderTextColor, - }, - validationMessage: { - // All TextStyle properties are allowed - ...TextBox.validationMessage, - }, - /* New dropdown styles start */ - valueFocused: { - // All TextStyle properties are allowed - }, - valueDisabled: { - // All TextStyle properties are allowed - ...TextBox.inputDisabled - }, - valueContainer: { - // All ViewStyle properties & rippleColor are allowed - flexDirection: "row", - justifyContent: "space-between", - alignItems: "center", - borderWidth: input.borderWidth, - borderRadius: input.borderRadius, - borderColor: input.borderColor, - paddingHorizontal: input.paddingHorizontal, - paddingVertical: input.paddingVertical, - backgroundColor: input.backgroundColor, - }, - valueContainerFocused: { - // All ViewStyle properties are allowed - ...TextBox.inputFocused - }, - valueContainerDisabled: { - // All ViewStyle properties are allowed - }, - menuWrapper: { - // All ViewStyle properties are allowed - borderRadius: border.radius, - shadowColor: "#000", - shadowOpacity: 0.2, - shadowRadius: 10, - elevation: 16, - backgroundColor: input.backgroundColor, - }, - itemContainer: { - // All ViewStyle properties & rippleColor & activeOpacity & underlayColor are allowed - width: "100%", - maxWidth: undefined, - paddingVertical: 6, - paddingHorizontal: 16, - backgroundColor: input.backgroundColor, - underlayColor: input.inputContainerUnderlayColor, - }, - iconStyle: { - // All TextStyle properties are allowed - color: input.color - }, - item: { - // All TextStlye properties are allowed - color: input.color, - }, - selectedItem: { - // All TextStlye properties are allowed - fontWeight: font.weightBold, - }, - selectedItemContainer: { - // All ViewStyle properties are allowed - width: "100%", - maxWidth: undefined, - backgroundColor: contrast.lowest, - }, - /* New dropdown styles end */ - useUniformDesign: true, - /* Old dropdown styles start */ - pickerIOS: { - // All ViewStyle properties are allowed - backgroundColor: input.backgroundColor, - }, - pickerItemIOS: { - // All TextStyle properties are allowed - }, - pickerBackdropIOS: { - // All ViewStyle properties are allowed - }, - pickerTopIOS: { - // All ViewStyle properties are allowed - backgroundColor: input.backgroundColor, - }, -}; -export const DropDownVertical = { - container: TextBoxVertical.container, - containerDisabled: TextBoxVertical.containerDisabled, - label: TextBoxVertical.label, - labelDisabled: TextBoxVertical.labelDisabled, - value: DropDown.value, - valueFocused: DropDown.valueFocused, - validationMessage: TextBoxVertical.validationMessage, - valueContainer: DropDown.valueContainer, - valueContainerFocused: DropDown.valueContainerFocused, - valueContainerDisabled: DropDown.valueContainerDisabled, - menuWrapper: DropDown.menuWrapper, - itemContainer: DropDown.itemContainer, - item: DropDown.item, - iconStyle: DropDown.iconStyle, - useUniformDesign: DropDown.useUniformDesign, - pickerIOS: DropDown.pickerIOS, - pickerItemIOS: DropDown.pickerItemIOS, - pickerBackdropIOS: DropDown.pickerBackdropIOS, - pickerTopIOS: DropDown.pickerTopIOS, -}; diff --git a/theme/styles/native/core/widgets/feedback.js b/theme/styles/native/core/widgets/feedback.js deleted file mode 100644 index f1c2d82..0000000 --- a/theme/styles/native/core/widgets/feedback.js +++ /dev/null @@ -1,85 +0,0 @@ -import { Platform } from "react-native"; -import { background, border, brand, button, contrast, font, input } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Feedback - - Default Class For Mendix Feedback Widget -========================================================================== */ -export const com_mendix_widget_native_feedback_Feedback = { - floatingButton: { - // All ViewStyle properties are allowed - borderRadius: 0, - backgroundColor: background.secondary, - borderTopLeftRadius: button.borderRadius, - borderBottomLeftRadius: button.borderRadius, - elevation: 1.5, - shadowColor: "#000", - shadowOpacity: 0.2, - shadowRadius: 10, - shadowOffset: { - width: 0, - height: 2, - }, - }, - dialog: { - // All ViewStyle properties are allowed - backgroundColor: background.primary, - }, - title: { - // All TextStyle properties are allowed - color: font.color, - fontFamily: font.family, - }, - textAreaInput: { - // All TextStyle properties are allowed - color: input.color, - borderColor: input.borderColor, - backgroundColor: input.backgroundColor, - selectionColor: input.selectionColor, - placeholderTextColor: input.placeholderTextColor, - underlineColorAndroid: input.underlineColorAndroid, - height: 100, - fontSize: input.fontSize, - fontFamily: input.fontFamily, - borderRadius: input.borderRadius, - borderTopWidth: input.borderWidth, - borderBottomWidth: input.borderWidth, - borderWidth: Platform.select({ android: border.width }), - textAlignVertical: "top", - paddingVertical: input.paddingVertical, - paddingHorizontal: input.paddingHorizontal, - }, - switchLabel: { - // All TextStyle properties are allowed - color: input.color, - fontSize: input.fontSize, - fontFamily: input.fontFamily, - }, - switchInput: { - // thumbColorOn, thumbColorOff, trackColorOn, trackColorOff and all TextStyle properties are allowed - margin: 0, - padding: 0, - marginRight: Platform.select({ ios: 0, android: -5 }), - thumbColorOn: background.primary, - trackColorOn: brand.success, - thumbColorOff: contrast.regular, - trackColorOff: contrast.lower, - }, - button: { - // Just these 3 properties are allowed - color: brand.primary, - borderColor: border.color, - borderWidth: border.width, - }, - activityIndicator: { - // Only color is allowed - color: font.color, - }, -}; diff --git a/theme/styles/native/core/widgets/floatingactionbutton.js b/theme/styles/native/core/widgets/floatingactionbutton.js deleted file mode 100644 index fa553aa..0000000 --- a/theme/styles/native/core/widgets/floatingactionbutton.js +++ /dev/null @@ -1,79 +0,0 @@ -import { background, brand, contrast, font } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Floating Action Button - - Default Class For Mendix Floating Action Button Widget -========================================================================== */ -export const com_mendix_widget_native_floatingactionbutton_FloatingActionButton = { - container: { - // All ViewStyle properties are allowed - margin: 30, - }, - button: { - // Size, ripplecolor and all ViewStyle properties are allowed - size: 50, - height: 50, - width: 50, - rippleColor: contrast.lowest, - backgroundColor: brand.primary, - borderRadius: 25, - elevation: 2, - shadowColor: "#000", - shadowOpacity: 0.3, - shadowRadius: 4, - shadowOffset: { - width: 0, - height: 2, - }, - }, - buttonIcon: { - // Size and color are allowed - size: font.sizeLarge, - color: contrast.lowest, - }, - secondaryButton: { - // Size and all ViewStyle properties are allowed - size: 30, - backgroundColor: background.secondary, - elevation: 2, - shadowColor: "#000", - shadowOpacity: 0.3, - shadowRadius: 4, - shadowOffset: { - width: 0, - height: 2, - }, - }, - secondaryButtonIcon: { - // Size and color are allowed - size: font.sizeSmall, - color: contrast.high, - }, - secondaryButtonCaption: { - // All TextStyle properties are allowed - color: font.color, - fontSize: font.size, - lineHeight: font.size, - fontFamily: font.family, - }, - secondaryButtonCaptionContainer: { - // All ViewStyle properties are allowed - backgroundColor: background.secondary, - borderColor: background.secondary, - marginHorizontal: 5, - elevation: 2, - shadowOpacity: 0.3, - shadowRadius: 4, - shadowOffset: { - width: 0, - height: 2, - }, - }, -}; diff --git a/theme/styles/native/core/widgets/images.js b/theme/styles/native/core/widgets/images.js deleted file mode 100644 index ff418a2..0000000 --- a/theme/styles/native/core/widgets/images.js +++ /dev/null @@ -1,51 +0,0 @@ -import { contrast } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Image - - Default Class For Mendix Image Widgets -========================================================================== */ -export const Image = { - container: { - // rippleColor & all ViewStyle properties are allowed - rippleColor: contrast.lowest, - }, - containerDisabled: { - // All ViewStyle properties are allowed - }, - image: { - // All ImageStyle properties are allowed - maxWidth: "100%", - maxHeight: "100%", - resizeMode: "cover", - }, - imageDisabled: { - // All ImageStyle properties are allowed - opacity: 0.6 - } -}; -export const ImageViewer = { - container: { - // RippleColor & All ViewStyle properties are allowed - rippleColor: contrast.lowest, - }, - containerDisabled: { - // All ViewStyle properties are allowed - }, - image: { - // All ImageStyle properties are allowed - maxWidth: "100%", - maxHeight: "100%", - resizeMode: "cover", - }, - imageDisabled: { - // All ImageStyle properties are allowed - opacity: 0.6 - } -}; diff --git a/theme/styles/native/core/widgets/introscreen.js b/theme/styles/native/core/widgets/introscreen.js deleted file mode 100644 index 86db1d5..0000000 --- a/theme/styles/native/core/widgets/introscreen.js +++ /dev/null @@ -1,122 +0,0 @@ -import { isIphoneWithNotch } from "../helpers/_functions/device"; -import { background, button, contrast, font, spacing } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Intro Screen - - Default Class For Mendix Intro Screen Widget -========================================================================== */ -// Button styles when the chose to show the indicator above the buttons -export const introScreenButtonPaginationAbove = { - container: { - // Ripplecolor and all ViewStyle properties are allowed - flexDirection: "row", - alignSelf: "stretch", - alignItems: "center", - justifyContent: "center", - paddingVertical: spacing.regular, - backgroundColor: button.primary.backgroundColor, - }, - icon: { - // Size and color are allowed - color: button.primary.color, - size: button.fontSizeIcon, - }, - caption: { - // All TextStyle properties are allowed - color: button.primary.color, - fontSize: button.fontSize, - fontFamily: font.family, - fontWeight: font.weightBold, - textTransform: "uppercase", - paddingHorizontal: spacing.smallest, - }, -}; -// Button styles when the chose to show the indicator between the buttons -export const introScreenButtonPaginationBetween = { - container: { - // Ripplecolor and all ViewStyle properties are allowed - flexDirection: "row", - alignItems: "center", - justifyContent: "center", - }, - icon: { - // Size and color are allowed - color: font.color, - size: button.fontSizeIcon, - }, - caption: { - // All TextStyle properties are allowed - color: font.color, - fontSize: button.fontSize, - fontFamily: font.family, - fontWeight: font.weightBold, - textTransform: "uppercase", - paddingHorizontal: spacing.smallest, - }, -}; -// Default styles -export const com_mendix_widget_native_introscreen_IntroScreen = { - fullscreenContainer: { - // All ViewStyle properties are allowed - backgroundColor: background.primary, - }, - popupContainer: { - // All ViewStyle properties are allowed - paddingVertical: 150, - paddingHorizontal: 50, - backgroundColor: `rgba(0, 0, 0, 0.5)`, - }, - // Pagination styles - paginationContainer: { - // All ViewStyle properties are allowed - position: "absolute", - left: 0, - right: 0, - bottom: isIphoneWithNotch ? 22 : 0, - justifyContent: "space-between", - alignItems: "center", - }, - paginationText: { - // All TextStyle properties are allowed - color: font.color, - fontSize: font.size, - fontFamily: font.family, - }, - dotStyle: { - // All ViewStyle properties are allowed - backgroundColor: contrast.lower, - transform: [{ scale: 0.5 }], - }, - activeDotStyle: { - // All ViewStyle properties are allowed - backgroundColor: background.brandPrimary, - }, - // Button styles - paginationAbove: { - buttonsContainer: { - // All ViewStyle properties are allowed - flex: 1, - marginTop: 30, - flexDirection: "row", - justifyContent: "center", - width: "100%", - }, - buttonSkip: introScreenButtonPaginationAbove, - buttonPrevious: introScreenButtonPaginationAbove, - buttonNext: introScreenButtonPaginationAbove, - buttonDone: introScreenButtonPaginationAbove, - }, - paginationBetween: { - buttonSkip: introScreenButtonPaginationBetween, - buttonPrevious: introScreenButtonPaginationBetween, - buttonNext: introScreenButtonPaginationBetween, - buttonDone: introScreenButtonPaginationBetween, - }, -}; diff --git a/theme/styles/native/core/widgets/layoutgrid.js b/theme/styles/native/core/widgets/layoutgrid.js deleted file mode 100644 index 3a73aca..0000000 --- a/theme/styles/native/core/widgets/layoutgrid.js +++ /dev/null @@ -1,121 +0,0 @@ -import { layoutGrid } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Intro Screen - - Default Class For Mendix Layoutgrid Widget -========================================================================== */ -export const LayoutGrid = { - container: {}, -}; -export const row = { - container: { - flexDirection: "row", - flexWrap: "wrap", - marginHorizontal: -layoutGrid.gutterSize, - }, -}; -export const col = { - container: { - flex: 1, - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const colFitToContent = { - container: { - flex: -1, - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col1 = { - container: { - flexBasis: "8.333%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col2 = { - container: { - flexBasis: "16.666%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col3 = { - container: { - flexBasis: "25%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col4 = { - container: { - flexBasis: "33.333%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col5 = { - container: { - flexBasis: "41.666%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col6 = { - container: { - flexBasis: "50%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col7 = { - container: { - flexBasis: "58.333%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col8 = { - container: { - flexBasis: "66.666%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col9 = { - container: { - flexBasis: "75%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col10 = { - container: { - flexBasis: "83.333%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col11 = { - container: { - flexBasis: "91.666%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col12 = { - container: { - flexBasis: "100%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const noGutters = { - container: { - paddingLeft: 0, - paddingRight: 0, - paddingHorizontal: 0, - }, -}; -export const noGuttersRow = { - container: { - marginLeft: 0, - marginRight: 0, - marginHorizontal: 0, - }, -}; diff --git a/theme/styles/native/core/widgets/linechart.js b/theme/styles/native/core/widgets/linechart.js deleted file mode 100644 index b26ccfa..0000000 --- a/theme/styles/native/core/widgets/linechart.js +++ /dev/null @@ -1,169 +0,0 @@ -import { border, brand, font, spacing } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Line Chart - - Default Class For Mendix Line Chart Widget -========================================================================== */ -// eslint-disable-next-line @typescript-eslint/camelcase -export const com_mendix_widget_native_linechart_LineChart = { - container: { - // All ViewStyle properties are allowed - }, - errorMessage: { - // All TextStyle properties are allowed - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - }, - chart: { - // All ViewStyle properties are allowed - }, - grid: { - /* - Allowed properties: - - backgroundColor (string) - - dashArray (string) - - lineColor (string) - - lineWidth (number) - - padding (number) - - paddingBottom (number) - - paddingHorizontal (number) - - paddingLeft (number) - - paddingRight (number) - - paddingTop (number) - - paddingVertical (number) - */ - lineColor: border.color, - paddingBottom: 32, - paddingLeft: 32, - paddingRight: 8, - paddingTop: 8, - }, - xAxis: { - /* - Allowed properties: - - color (string) - - dashArray (string) - - fontFamily (string) - - fontSize (number) - - fontStyle ("normal" or "italic") - - fontWeight ("normal" or "bold" or "100" or "200" or "300" or "400" or "500" or "600" or "700" or "800" or "900") - - lineColor (string) - - lineWidth (number) - */ - color: font.color, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - lineColor: border.color, - label: { - /* - All TextStyle properties are allowed and: - - relativePositionGrid ("bottom" or "right") - */ - color: font.color, - alignSelf: "center", - marginHorizontal: 0, - marginVertical: spacing.smallest, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - relativePositionGrid: "bottom" - }, - }, - yAxis: { - /* - Allowed properties: - - color (string) - - dashArray (string) - - fontFamily (string) - - fontSize (number) - - fontStyle ("normal" or "italic") - - fontWeight ("normal" or "bold" or "100" or "200" or "300" or "400" or "500" or "600" or "700" or "800" or "900") - - lineColor (string) - - lineWidth (number) - */ - color: font.color, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - lineColor: border.color, - label: { - /* - All TextStyle properties are allowed and: - - relativePositionGrid ("top" or "left") - */ - color: font.color, - marginHorizontal: 0, - marginVertical: spacing.smallest, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - relativePositionGrid: "top" - }, - }, - lines: { - /* - Allowed properties: - - lineColorPalette (string with array of colors separated by ';') - */ - lineColorPalette: Object.values(brand) - .map((color, index, brandColors) => (index === brandColors.length - 1 ? color : `${color};`)) - .join(""), - customLineStyles: { - any_custom_line_style_name: { - line: { - /* - Allowed properties: - - dashArray (string) - - ending ("flat" or "round") - - lineColor (string) - - lineWidth (number) - */ - }, - markers: { - /* - Allowed properties: - - backgroundColor (string) - - borderColor (string) - - borderWidth (number) - - display ("false" or "underneath" or "onTop") - - size (number) - - symbol ("circle" or "diamond" or "plus" or "minus" or "square" or "star" or "triangleDown" or "triangleUp") - */ - } - } - } - }, - legend: { - container: { - // All ViewStyle properties are allowed - justifyContent: "flex-start", - marginHorizontal: 0, - marginVertical: spacing.smallest, - }, - item: { - // All ViewStyle properties are allowed - padding: 0, - paddingRight: spacing.smaller, - }, - indicator: { - // All ViewStyle properties are allowed - marginRight: spacing.smallest, - }, - label: { - // All TextStyle properties are allowed - color: font.color, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - }, - } -}; diff --git a/theme/styles/native/core/widgets/listviews.js b/theme/styles/native/core/widgets/listviews.js deleted file mode 100644 index fc45243..0000000 --- a/theme/styles/native/core/widgets/listviews.js +++ /dev/null @@ -1,24 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - List View - - Default Class For Mendix List View Widget -========================================================================== */ -export const ListView = { - container: { - // numColumns & all ViewStyle properties are allowed - }, - listItem: { - // All ViewStyle properties are allowed - }, - listItemDisabled: { - // All ViewStyle properties are allowed - opacity: 0.6 - }, -}; diff --git a/theme/styles/native/core/widgets/listviewswipe.js b/theme/styles/native/core/widgets/listviewswipe.js deleted file mode 100644 index 7adec6e..0000000 --- a/theme/styles/native/core/widgets/listviewswipe.js +++ /dev/null @@ -1,38 +0,0 @@ -import { background } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - List View Swipe - - Default Class For Mendix List View Swipe Widget -========================================================================== */ -export const com_mendix_widget_native_listviewswipe_ListViewSwipe = { - container: { - // All ViewStyle properties are allowed - flex: 1, - alignItems: "stretch", - justifyContent: "space-between", - backgroundColor: background.primary, - }, - leftAction: { - // PanelSize & All ViewStyle properties are allowed - panelSize: 200, - flex: 1, - flexDirection: "row", - alignItems: "stretch", - backgroundColor: background.primary, - }, - rightAction: { - // PanelSize & All ViewStyle properties are allowed - panelSize: 200, - flex: 1, - flexDirection: "row", - alignItems: "stretch", - backgroundColor: background.primary, - }, -}; diff --git a/theme/styles/native/core/widgets/maps.js b/theme/styles/native/core/widgets/maps.js deleted file mode 100644 index 3036260..0000000 --- a/theme/styles/native/core/widgets/maps.js +++ /dev/null @@ -1,33 +0,0 @@ -import { brand } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Maps - - Default Class For Mendix Maps Widget -========================================================================== */ -export const com_mendix_widget_native_maps_Maps = { - container: { - // All ViewStyle properties are allowed - flex: 1, - maxWidth: "100%", - aspectRatio: 4 / 2, - }, - loadingOverlay: { - // All ViewStyle properties are allowed - }, - loadingIndicator: { - // Only color is allowed - color: brand.primary, - }, - marker: { - // Only color & opacity are allowed - color: brand.primary, - opacity: 1, - }, -}; diff --git a/theme/styles/native/core/widgets/navigation.js b/theme/styles/native/core/widgets/navigation.js deleted file mode 100644 index 276ab40..0000000 --- a/theme/styles/native/core/widgets/navigation.js +++ /dev/null @@ -1,75 +0,0 @@ -import { font, navigation, spacing } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - BottomBar / ProgressOverlay - - Default Class For Mendix BottomBar and ProgressOverlay -========================================================================== */ -export const navigationStyle = { - bottomBar: { - container: { - // All ViewStyle properties are allowed - backgroundColor: navigation.bottomBar.backgroundColor, - }, - label: { - // All TextStyle properties are allowed - color: navigation.bottomBar.color, - fontFamily: font.family, - fontSize: navigation.bottomBar.fontSize, - }, - selectedLabel: { - // All TextStyle properties are allowed - color: navigation.bottomBar.selectedTextColor, - fontFamily: font.family, - fontSize: navigation.bottomBar.fontSize, - }, - icon: { - // All TextStyle properties are allowed - color: navigation.bottomBar.color, - fontSize: navigation.bottomBar.iconSize, - }, - selectedIcon: { - // All TextStyle properties are allowed - color: navigation.bottomBar.selectedIconColor, - fontSize: navigation.bottomBar.iconSize, - }, - }, - progressOverlay: { - background: { - // All ViewStyle properties are allowed - backgroundColor: navigation.progressOverlay.backgroundColor, - }, - container: { - // All ViewStyle properties are allowed - backgroundColor: navigation.progressOverlay.containerBackgroundColor, - paddingHorizontal: spacing.largest, - paddingVertical: spacing.large, - borderRadius: navigation.progressOverlay.borderRadius, - elevation: navigation.progressOverlay.elevation, - shadowColor: navigation.progressOverlay.shadowColor, - shadowOpacity: navigation.progressOverlay.shadowOpacity, - shadowRadius: navigation.progressOverlay.shadowRadius, - shadowOffset: { - width: 0, - height: 2, - }, - }, - activityIndicator: { - // Color, Size & All ViewStyle properties are allowed - color: navigation.progressOverlay.activityIndicatorColor, - }, - text: { - // All TextStyle properties are allowed - color: navigation.progressOverlay.color, - marginTop: spacing.small, - fontFamily: font.family, - fontSize: navigation.progressOverlay.fontSize, - }, - }, -}; diff --git a/theme/styles/native/core/widgets/pagetitle.js b/theme/styles/native/core/widgets/pagetitle.js deleted file mode 100644 index bdc4c87..0000000 --- a/theme/styles/native/core/widgets/pagetitle.js +++ /dev/null @@ -1,24 +0,0 @@ -import { font } from "../variables"; -import { TextHeading1 } from "./typography"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Page Title - - Default Class For Mendix Page Title Widget -========================================================================== */ -export const PageTitle = { - container: { - // All ViewStyle properties are allowed - }, - text: { - // All TextStyle properties are allowed - ...TextHeading1.text, - color: font.color, - }, -}; diff --git a/theme/styles/native/core/widgets/popupmenu.js b/theme/styles/native/core/widgets/popupmenu.js deleted file mode 100644 index dc0cd18..0000000 --- a/theme/styles/native/core/widgets/popupmenu.js +++ /dev/null @@ -1,58 +0,0 @@ -import { background, brand, contrast, font } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Popup Menu - - Default Class For Mendix Popup Menu Widget -========================================================================== */ -export const com_mendix_widget_native_popupmenu_PopupMenu = { - container: { - // All ViewStyle properties are allowed - borderRadius: 10, - shadowColor: "#000", - shadowOpacity: 0.2, - shadowRadius: 10, - elevation: 16, - backgroundColor: background.primary, - }, - custom: { - container: { - // All ViewStyle properties are allowed - }, - itemStyle: { - rippleColor: contrast.lower, - }, - }, - basic: { - dividerColor: font.color, - container: { - // All ViewStyle properties are allowed - height: 40, - }, - itemStyle: { - ellipsizeMode: "tail", - rippleColor: contrast.lower, - defaultStyle: { - // All TextStyle properties are allowed - color: font.color, - }, - primaryStyle: { - // All TextStyle properties are allowed - color: brand.primary, - }, - dangerStyle: { - // All TextStyle properties are allowed - color: brand.danger, - }, - customStyle: { - // All TextStyle properties are allowed - }, - }, - }, -}; diff --git a/theme/styles/native/core/widgets/progressbar.js b/theme/styles/native/core/widgets/progressbar.js deleted file mode 100644 index 0725d94..0000000 --- a/theme/styles/native/core/widgets/progressbar.js +++ /dev/null @@ -1,44 +0,0 @@ -import { Platform } from "react-native"; -import { anyColorToRgbString } from "../helpers/_functions/convertcolors"; -import { brand, font, input } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Progress Bar - - Default Class For Mendix Progress Bar Widget -========================================================================== */ -export const com_mendix_widget_native_progressbar_ProgressBar = { - container: { - // All ViewStyle properties are allowed - alignSelf: "stretch", - }, - bar: { - // All ViewStyle properties are allowed - ...Platform.select({ - ios: { - borderColor: brand.primary, - }, - android: { - borderRadius: 0, - borderWidth: 0, - backgroundColor: `rgba(${anyColorToRgbString(brand.primary)},0.2)`, - }, - }), - }, - fill: { - //Only the backgroundColor property is allowed - backgroundColor: brand.primary, - }, - validationMessage: { - // All TextStyle properties are allowed - color: input.errorColor, - fontSize: font.size, - fontFamily: font.family, - }, -}; diff --git a/theme/styles/native/core/widgets/progresscircle.js b/theme/styles/native/core/widgets/progresscircle.js deleted file mode 100644 index 522a5eb..0000000 --- a/theme/styles/native/core/widgets/progresscircle.js +++ /dev/null @@ -1,42 +0,0 @@ -import { brand, contrast, font, input } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Progress Circle - - Default Class For Mendix Progress Circle Widget -========================================================================== */ -export const com_mendix_widget_native_progresscircle_ProgressCircle = { - container: { - // All ViewStyle properties are allowed - }, - circle: { - // Only the size & borderWidth & borderColor properties are allowed - size: 80, - borderWidth: 0, - }, - fill: { - // Only the width & backgroundColor & lineCapRounded properties are allowed - backgroundColor: brand.primary, - width: 5, - lineCapRounded: true, - }, - text: { - // All TextStyle properties are allowed - color: contrast.regular, - fontSize: font.size, - fontWeight: font.weightSemiBold, - fontFamily: font.family, - }, - validationMessage: { - // All TextStyle properties are allowed - color: input.errorColor, - fontSize: font.size, - fontFamily: font.family, - }, -}; diff --git a/theme/styles/native/core/widgets/qrcode.js b/theme/styles/native/core/widgets/qrcode.js deleted file mode 100644 index c7f8113..0000000 --- a/theme/styles/native/core/widgets/qrcode.js +++ /dev/null @@ -1,24 +0,0 @@ -import { background, contrast } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - QR Code - - Default Class For Mendix QR Code Widget -========================================================================== */ -export const com_mendix_widget_native_qrcode_QRCode = { - container: { - // All ViewStyle properties are allowed - }, - qrcode: { - // Only size, color and backgroundColor are allowed - size: 100, - color: contrast.highest, - backgroundColor: background.primary, - }, -}; diff --git a/theme/styles/native/core/widgets/rating.js b/theme/styles/native/core/widgets/rating.js deleted file mode 100644 index 7ab06d9..0000000 --- a/theme/styles/native/core/widgets/rating.js +++ /dev/null @@ -1,27 +0,0 @@ -import { spacing } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Rating - - Default Class For Mendix Rating Widget -========================================================================== */ -export const com_mendix_widget_native_rating_Rating = { - container: { - // All ViewStyle properties are allowed - }, - containerDisabled: { - // All ViewStyle properties are allowed - opacity: 0.5, - }, - icon: { - // Size, color, selectedColor & all ViewStyle properties are allowed - size: 30, - marginRight: spacing.smaller, - }, -}; diff --git a/theme/styles/native/core/widgets/referenceselector.js b/theme/styles/native/core/widgets/referenceselector.js deleted file mode 100644 index 00dca5c..0000000 --- a/theme/styles/native/core/widgets/referenceselector.js +++ /dev/null @@ -1,146 +0,0 @@ -import { border, contrast, font, input } from "../variables"; -import { DropDownVertical } from "./dropdown"; -import { TextBox, TextBoxVertical } from "./textbox"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Reference Selector - - Default Class For Mendix Reference Selector Widget -========================================================================== */ -export const ReferenceSelector = { - container: { - // All ViewStyle properties are allowed - ...TextBox.container, - }, - containerDisabled: { - // All ViewStyle properties are allowed - ...TextBox.containerDisabled, - }, - label: { - // numberOfLines and all TextStyle properties are allowed - ...TextBox.label, - }, - labelDisabled: { - // All TextStyle properties are allowed - ...TextBox.labelDisabled, - }, - value: { - // All TextStyle properties & placeholderTextColor are allowed - color: input.color, - fontSize: input.fontSize, - fontFamily: input.fontFamily, - overflow: "hidden", - placeholderTextColor: input.placeholderTextColor, - }, - validationMessage: { - // All TextStyle properties are allowed - ...TextBox.validationMessage, - }, - /* New dropdown styles start */ - valueFocused: { - // All TextStyle properties are allowed - }, - valueDisabled: { - // All TextStyle properties are allowed - ...TextBox.inputDisabled, - }, - valueContainer: { - // All ViewStyle properties & rippleColor are allowed - flexDirection: "row", - justifyContent: "space-between", - alignItems: "center", - borderWidth: input.borderWidth, - borderRadius: input.borderRadius, - borderColor: input.borderColor, - paddingHorizontal: input.paddingHorizontal, - paddingVertical: input.paddingVertical, - backgroundColor: input.backgroundColor, - }, - valueContainerFocused: { - // All ViewStyle properties are allowed - ...TextBox.inputFocused, - }, - valueContainerDisabled: { - // All ViewStyle properties are allowed - }, - menuWrapper: { - // All ViewStyle properties are allowed - borderRadius: border.radius, - shadowColor: "#000", - shadowOpacity: 0.2, - shadowRadius: 10, - elevation: 16, - backgroundColor: input.backgroundColor, - }, - itemContainer: { - // All ViewStyle properties & rippleColor & activeOpacity & underlayColor are allowed - width: "100%", - maxWidth: undefined, - paddingVertical: 6, - paddingHorizontal: 16, - backgroundColor: input.backgroundColor, - underlayColor: input.inputContainerUnderlayColor, - }, - iconStyle: { - // All TextStyle properties are allowed - color: input.color, - }, - item: { - // All TextStyle properties are allowed - color: input.color, - }, - selectedItem: { - // All TextStyle properties are allowed - fontWeight: font.weightBold, - }, - selectedItemContainer: { - // All ViewStyle properties are allowed - width: "100%", - maxWidth: undefined, - backgroundColor: contrast.lowest, - }, - /* New dropdown styles end */ - useUniformDesign: true, - /* Old dropdown styles start */ - pickerIOS: { - // All ViewStyle properties are allowed - backgroundColor: input.backgroundColor, - }, - pickerItemIOS: { - // All TextStyle properties are allowed - }, - pickerBackdropIOS: { - // All ViewStyle properties are allowed - }, - pickerTopIOS: { - // All ViewStyle properties are allowed - backgroundColor: input.backgroundColor, - }, -}; -export const ReferenceSelectorVertical = { - container: TextBoxVertical.container, - containerDisabled: TextBoxVertical.containerDisabled, - label: TextBoxVertical.label, - labelDisabled: TextBoxVertical.labelDisabled, - value: DropDownVertical.value, - valueFocused: DropDownVertical.valueFocused, - validationMessage: TextBoxVertical.validationMessage, - valueContainer: DropDownVertical.valueContainer, - valueContainerFocused: DropDownVertical.valueContainerFocused, - valueContainerDisabled: DropDownVertical.valueContainerDisabled, - menuWrapper: DropDownVertical.menuWrapper, - itemContainer: DropDownVertical.itemContainer, - item: DropDownVertical.item, - iconStyle: DropDownVertical.iconStyle, - useUniformDesign: DropDownVertical.useUniformDesign, - pickerIOS: DropDownVertical.pickerIOS, - pickerItemIOS: DropDownVertical.pickerItemIOS, - pickerBackdropIOS: DropDownVertical.pickerBackdropIOS, - pickerTopIOS: DropDownVertical.pickerTopIOS, -}; diff --git a/theme/styles/native/core/widgets/safeareaview.js b/theme/styles/native/core/widgets/safeareaview.js deleted file mode 100644 index dd81a25..0000000 --- a/theme/styles/native/core/widgets/safeareaview.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Container - - Default Class For Mendix Safe Area View Widget -========================================================================== */ -export const com_mendix_widget_native_safeareaview_SafeAreaView = { - container: { - // All ViewStyle properties are allowed - }, -}; diff --git a/theme/styles/native/core/widgets/slider.js b/theme/styles/native/core/widgets/slider.js deleted file mode 100644 index 65e3df4..0000000 --- a/theme/styles/native/core/widgets/slider.js +++ /dev/null @@ -1,96 +0,0 @@ -import { Platform } from "react-native"; -import { background, border, brand, contrast, font, input } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Slider - - Default Class For Mendix Slider Widget -========================================================================== */ -export const com_mendix_widget_native_slider_Slider = { - container: { - // All ViewStyle properties are allowed - alignSelf: "stretch", - }, - track: { - // All ViewStyle properties are allowed - backgroundColor: contrast.lower, - }, - trackDisabled: { - // All ViewStyle properties are allowed - backgroundColor: contrast.lower, - opacity: Platform.select({ ios: 0.4 }), - }, - highlight: { - // All ViewStyle properties are allowed - backgroundColor: brand.primary, - }, - highlightDisabled: { - // All ViewStyle properties are allowed - backgroundColor: Platform.select({ ios: brand.primary, android: contrast.low }), - }, - marker: { - // All ViewStyle properties are allowed - backgroundColor: background.secondary, - ...Platform.select({ - ios: { - width: 30, - height: 30, - shadowColor: "#000", - shadowOpacity: 0.2, - borderColor: contrast.lowest, - shadowOffset: { width: 0, height: 1 }, - }, - android: { - width: 20, - height: 20, - borderRadius: 10, - elevation: 3, - borderColor: border.color, - }, - }), - }, - markerActive: { - // All ViewStyle properties are allowed - ...Platform.select({ - android: { - borderWidth: 0, - width: 34, - height: 34, - borderRadius: 17, - }, - }), - }, - markerDisabled: { - // All ViewStyle properties are allowed - ...Platform.select({ - ios: { - borderColor: contrast.lowest, - backgroundColor: background.secondary, - shadowColor: "#000", - shadowOpacity: 0.2, - shadowOffset: { width: 0, height: 1 }, - }, - android: { - marginTop: 1, - borderColor: background.primary, - backgroundColor: contrast.low, - borderWidth: 3, - width: 14, - height: 14, - borderRadius: 7, - }, - }), - }, - validationMessage: { - // All TextStyle properties are allowed - color: input.errorColor, - fontSize: font.size, - fontFamily: font.family, - }, -}; diff --git a/theme/styles/native/core/widgets/tabcontainer.js b/theme/styles/native/core/widgets/tabcontainer.js deleted file mode 100644 index ec0f8f0..0000000 --- a/theme/styles/native/core/widgets/tabcontainer.js +++ /dev/null @@ -1,67 +0,0 @@ -import { font, spacing, tabContainer } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Tab Container - - Default Class For Mendix Tab Container Widget -========================================================================== */ -export const TabContainer = { - container: { - // All ViewStyle properties are allowed - flex: 1, - }, - tabBar: { - // bounces, pressColor, pressOpacity, scrollEnabled and all ViewStyle properties are allowed - bounces: true, - pressColor: tabContainer.tabBar.pressColor, - pressOpacity: 0.8, - backgroundColor: tabContainer.tabBar.backgroundColor, - scrollEnabled: false, - paddingVertical: spacing.smaller, - }, - indicator: { - // All ViewStyle properties are allowed - backgroundColor: tabContainer.indicator.backgroundColor, - height: tabContainer.indicator.height, - }, - tab: { - // All ViewStyle properties are allowed - paddingVertical: spacing.smaller, - }, - label: { - // All TextStyle properties are allowed - color: tabContainer.label.color, - fontFamily: font.family, - fontWeight: tabContainer.label.fontWeight, - textTransform: tabContainer.label.textTransform, - }, - activeLabel: { - // All TextStyle properties are allowed - color: tabContainer.activeLabel.color, - fontFamily: font.family, - fontWeight: tabContainer.activeLabel.fontWeight, - textTransform: tabContainer.activeLabel.textTransform, - }, - badgeContainer: { - // All ViewStyle properties are allowed - borderRadius: tabContainer.badgeContainer.borderRadius, - backgroundColor: tabContainer.badgeContainer.backgroundColor, - paddingVertical: tabContainer.badgeContainer.paddingVertical, - paddingHorizontal: tabContainer.badgeContainer.paddingHorizontal, - marginLeft: tabContainer.badgeContainer.marginLeft - }, - badgeCaption: { - // All TextStyle properties are allowed - fontSize: tabContainer.badgeCaption.fontSize, - color: tabContainer.badgeCaption.color, - fontFamily: font.family, - fontWeight: tabContainer.badgeCaption.fontWeight, - marginTop: -1, - } -}; diff --git a/theme/styles/native/core/widgets/textarea.js b/theme/styles/native/core/widgets/textarea.js deleted file mode 100644 index 452d63b..0000000 --- a/theme/styles/native/core/widgets/textarea.js +++ /dev/null @@ -1,73 +0,0 @@ -import { input } from "../variables"; -import { TextBox, TextBoxVertical } from "./textbox"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Text Area - - Default Class For Mendix Text Area Widget -========================================================================== */ -export const TextArea = { - container: { - // All ViewStyle properties are allowed - ...TextBox.container, - }, - containerDisabled: { - // All ViewStyle properties are allowed - ...TextBox.containerDisabled, - }, - label: { - // numberOfLines and all TextStyle properties are allowed - ...TextBox.label, - height: "100%", - textAlignVertical: "top", - paddingVertical: input.paddingVertical, - }, - labelDisabled: { - // All ViewStyle properties are allowed - ...TextBox.labelDisabled - }, - input: { - // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed - ...TextBox.input, - textAlignVertical: "top", - paddingTop: input.paddingVertical, - }, - inputDisabled: { - // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed - ...TextBox.inputDisabled - }, - inputError: { - // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed - ...TextBox.inputError, - }, - inputFocused: { - // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed - ...TextBox.inputFocused, - }, - validationMessage: { - // All TextStyle properties are allowed - ...TextBox.validationMessage, - }, -}; -export const TextAreaVertical = { - container: TextBoxVertical.container, - containerDisabled: TextBoxVertical.containerDisabled, - label: { - ...TextBoxVertical.label, - height: undefined, - paddingVertical: undefined, - textAlignVertical: undefined, - }, - labelDisabled: TextBoxVertical.labelDisabled, - input: TextBoxVertical.input, - inputDisabled: TextBoxVertical.inputDisabled, - inputError: TextBoxVertical.inputError, - inputFocused: TextBoxVertical.inputFocused, - validationMessage: TextBoxVertical.validationMessage, -}; diff --git a/theme/styles/native/core/widgets/textbox.js b/theme/styles/native/core/widgets/textbox.js deleted file mode 100644 index e410c62..0000000 --- a/theme/styles/native/core/widgets/textbox.js +++ /dev/null @@ -1,100 +0,0 @@ -import { font, input, spacing } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Text Box - - Default Class For Mendix Text Box Widget -========================================================================== */ -export const TextBox = { - container: { - // All ViewStyle properties are allowed - }, - containerDisabled: { - // All ViewStyle properties are allowed - }, - label: { - // numberOfLines and all TextStyle properties are allowed - numberOfLines: 1, - color: input.labelColor, - fontSize: input.fontSize, - fontFamily: font.family, - textAlign: input.textAlign, - marginRight: spacing.small, - }, - labelDisabled: { - // TextStyle properties are allowed - color: input.labelColorDisabled, - }, - input: { - // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed - color: input.color, - borderColor: input.borderColor, - backgroundColor: input.backgroundColor, - selectionColor: input.selectionColor, - placeholderTextColor: input.placeholderTextColor, - fontSize: input.fontSize, - fontFamily: input.fontFamily, - borderWidth: input.borderWidth, - borderRadius: input.borderRadius, - paddingHorizontal: input.paddingHorizontal, - paddingVertical: input.paddingVertical, - }, - inputDisabled: { - // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed - backgroundColor: input.backgroundColorDisabled, - color: input.colorDisabled, - }, - inputError: { - // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed - color: input.errorColor, - borderColor: input.errorColor, - placeholderTextColor: input.errorColor, - underlineColorAndroid: input.underlineColorAndroid, - }, - inputFocused: { - // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed - borderColor: input.borderColorFocused - }, - validationMessage: { - // All TextStyle properties are allowed - color: input.errorColor, - fontSize: font.size, - fontFamily: font.family, - }, -}; -export const TextBoxVertical = { - container: {}, - containerDisabled: TextBox.containerDisabled, - label: { - numberOfLines: 1, - color: input.labelColor, - fontSize: input.fontSize, - fontFamily: font.family, - textAlign: input.textAlign, - marginBottom: spacing.smallest, - }, - labelDisabled: TextBox.labelDisabled, - input: { - color: input.color, - borderColor: input.borderColor, - backgroundColor: input.backgroundColor, - selectionColor: input.selectionColor, - placeholderTextColor: input.placeholderTextColor, - fontSize: input.fontSize, - fontFamily: input.fontFamily, - borderRadius: input.borderRadius, - borderWidth: input.borderWidth, - paddingHorizontal: input.paddingHorizontal, - paddingVertical: input.paddingVertical, - }, - inputFocused: TextBox.inputFocused, - inputDisabled: TextBox.inputDisabled, - inputError: TextBox.inputError, - validationMessage: TextBox.validationMessage, -}; diff --git a/theme/styles/native/core/widgets/togglebuttons.js b/theme/styles/native/core/widgets/togglebuttons.js deleted file mode 100644 index 1a618e2..0000000 --- a/theme/styles/native/core/widgets/togglebuttons.js +++ /dev/null @@ -1,59 +0,0 @@ -import { Platform } from "react-native"; -import { background, brand, contrast, font, input } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Segmented Controls - - Default Class For Mendix Segmented Controls Widget -========================================================================== */ -export const com_mendix_widget_native_togglebuttons_ToggleButtons = { - container: { - // All ViewStyle properties are allowed - alignSelf: "stretch", - }, - containerDisabled: { - opacity: 0.6, - alignSelf: "stretch", - }, - button: { - // All ViewStyle properties are allowed - backgroundColor: background.primary, - borderColor: Platform.select({ ios: brand.primary, android: contrast.lower }), - }, - text: { - // All TextStyle properties are allowed - color: Platform.select({ ios: brand.primary, android: contrast.high }), - fontSize: font.size, - fontFamily: font.family, - }, - activeButton: { - // All ViewStyle properties are allowed - ...Platform.select({ - ios: { - backgroundColor: brand.primary, - borderColor: brand.primary, - }, - android: { - backgroundColor: brand.primary, - borderColor: brand.primary, - }, - }), - }, - activeButtonText: { - // All TextStyle properties are allowed - fontSize: font.size, - fontFamily: font.family, - }, - validationMessage: { - // All TextStyle properties are allowed - color: input.errorColor, - fontSize: font.size, - fontFamily: font.family, - }, -}; diff --git a/theme/styles/native/core/widgets/typography.js b/theme/styles/native/core/widgets/typography.js deleted file mode 100644 index 5dd872a..0000000 --- a/theme/styles/native/core/widgets/typography.js +++ /dev/null @@ -1,79 +0,0 @@ -import { font } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Text - - Default Class For Mendix Text Widget -========================================================================== */ -export const Text = { - container: { - // All ViewStyle properties are allowed - }, - text: { - // numberOfLines & All TextStyle properties are allowed - color: font.color, - fontSize: font.size, - fontFamily: font.family, - lineHeight: font.size + 2, - }, -}; -export const TextHeading1 = { - container: {}, - text: { - fontWeight: font.weightSemiBold, - fontSize: font.sizeH1, - fontFamily: font.family, - lineHeight: font.sizeH1, - }, -}; -export const TextHeading2 = { - container: {}, - text: { - fontWeight: font.weightSemiBold, - fontSize: font.sizeH2, - fontFamily: font.family, - lineHeight: font.sizeH2, - }, -}; -export const TextHeading3 = { - container: {}, - text: { - fontWeight: font.weightSemiBold, - fontSize: font.sizeH3, - fontFamily: font.family, - lineHeight: font.sizeH3, - }, -}; -export const TextHeading4 = { - container: {}, - text: { - fontWeight: font.weightSemiBold, - fontSize: font.sizeH4, - fontFamily: font.family, - lineHeight: font.sizeH4, - }, -}; -export const TextHeading5 = { - container: {}, - text: { - fontWeight: font.weightSemiBold, - fontSize: font.sizeH5, - fontFamily: font.family, - lineHeight: font.sizeH5, - }, -}; -export const TextHeading6 = { - container: {}, - text: { - fontWeight: font.weightSemiBold, - fontSize: font.sizeH6, - fontFamily: font.family, - lineHeight: font.sizeH6, - }, -}; diff --git a/theme/styles/native/core/widgets/videoplayer.js b/theme/styles/native/core/widgets/videoplayer.js deleted file mode 100644 index 3e47b5e..0000000 --- a/theme/styles/native/core/widgets/videoplayer.js +++ /dev/null @@ -1,23 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Video Player - - Default Class For Mendix Video Player Widget -========================================================================== */ -export const com_mendix_widget_native_videoplayer_VideoPlayer = { - container: { - // All ViewStyle properties are allowed - }, - indicator: { - // Only the backgroundColor property is allowed - }, - video: { - // All ViewStyle properties are allowed - }, -}; diff --git a/theme/styles/native/core/widgets/webview.js b/theme/styles/native/core/widgets/webview.js deleted file mode 100644 index a8078f0..0000000 --- a/theme/styles/native/core/widgets/webview.js +++ /dev/null @@ -1,26 +0,0 @@ -import { font } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Web View - - Default Class For Mendix Web View Widget -========================================================================== */ -export const com_mendix_widget_native_webview_WebView = { - container: { - // All ViewStyle properties are allowed - }, - errorContainer: { - // All ViewStyle properties are allowed - }, - errorText: { - // All TextStyle properties are allowed - fontSize: font.size, - fontFamily: font.family, - }, -}; diff --git a/theme/styles/native/main.js b/theme/styles/native/main.js deleted file mode 100644 index 9cbc8fd..0000000 --- a/theme/styles/native/main.js +++ /dev/null @@ -1,84 +0,0 @@ -//================================== CORE ==================================\\ -// -// -// Base -export * from "./core/base/flex"; -export * from "./core/base/spacing"; -// -// -// Components -export * from "./core/widgets/activityindicator"; -export * from "./core/helpers/activityindicator"; -export * from "./core/widgets/animation"; -export * from "./core/widgets/backgroundimage"; -export * from "./core/widgets/badge"; -export * from "./core/helpers/badge"; -export * from "./core/widgets/bottomsheet"; -export * from "./core/widgets/buttons"; -export * from "./core/helpers/buttons"; -export * from "./core/widgets/carousel"; -export * from "./core/widgets/checkbox"; -export * from "./core/widgets/colorpicker"; -export * from "./core/widgets/container"; -export * from "./core/widgets/datepicker"; -export * from "./core/widgets/dropdown"; -export * from "./core/widgets/feedback"; -export * from "./core/widgets/floatingactionbutton"; -export * from "./core/helpers/floatingactionbutton"; -export * from "./core/widgets/images"; -export * from "./core/helpers/images"; -export * from "./core/widgets/introscreen"; -export * from "./core/widgets/layoutgrid"; -export * from "./core/widgets/linechart"; -export * from "./core/helpers/linechart"; -export * from "./core/widgets/barchart"; -export * from "./core/helpers/barchart"; -export * from "./core/widgets/listviews"; -export * from "./core/helpers/listviews"; -export * from "./core/widgets/listviewswipe"; -export * from "./core/helpers/listviewswipe"; -export * from "./core/widgets/maps"; -export * from "./core/helpers/maps"; -export * from "./core/widgets/navigation"; -export * from "./core/widgets/pagetitle"; -export * from "./core/widgets/progressbar"; -export * from "./core/helpers/progressbar"; -export * from "./core/widgets/progresscircle"; -export * from "./core/helpers/progresscircle"; -export * from "./core/widgets/popupmenu"; -export * from "./core/widgets/qrcode"; -export * from "./core/widgets/rangeslider"; -export * from "./core/helpers/rangeslider"; -export * from "./core/widgets/rating"; -export * from "./core/widgets/referenceselector"; -export * from "./core/widgets/safeareaview"; -export * from "./core/widgets/slider"; -export * from "./core/helpers/slider"; -export * from "./core/widgets/tabcontainer"; -export * from "./core/helpers/tabcontainer"; -export * from "./core/widgets/textarea"; -export * from "./core/widgets/textbox"; -export * from "./core/helpers/textbox"; -export * from "./core/widgets/togglebuttons"; -export * from "./core/widgets/typography"; -export * from "./core/helpers/typography"; -export * from "./core/widgets/videoplayer"; -export * from "./core/widgets/webview"; -export * from "./core/helpers/helperclasses"; -// -// -//================================= CUSTOM =================================\\ -// -// Layouts -export * from "./ui_resources/atlas_ui_resources/layouts/layout"; -// -// -// Page Templates -export * from "./ui_resources/atlas_ui_resources/pagetemplates/page"; -export * from "./ui_resources/atlas_ui_resources/pagetemplates/maps"; -export * from "./ui_resources/atlas_ui_resources/pagetemplates/inspectiondetails"; -// -// -// Building blocks -export * from "./ui_resources/atlas_ui_resources/buildingblocks/card"; -export * from "./ui_resources/atlas_ui_resources/buildingblocks/header"; diff --git a/theme/styles/native/ui_resources/atlas_ui_resources/buildingblocks/card.js b/theme/styles/native/ui_resources/atlas_ui_resources/buildingblocks/card.js deleted file mode 100644 index d025639..0000000 --- a/theme/styles/native/ui_resources/atlas_ui_resources/buildingblocks/card.js +++ /dev/null @@ -1,100 +0,0 @@ -import { Platform } from "react-native"; -import { background, border, contrast, spacing } from "../../../core/variables"; -/* -========================================================================== - Cards - -========================================================================== -*/ -export const card = { - container: { - borderRadius: border.radius, - backgroundColor: background.primary, - marginBottom: spacing.regular, - ...Platform.select({ - android: { - borderWidth: 1, - borderColor: contrast.lowest, - }, - }), - elevation: 1.5, - shadowColor: "#000", - shadowOpacity: 0.1, - shadowRadius: 10, - shadowOffset: { - width: 0, - height: 2, - }, - }, -}; -// -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -export const cardImage = { - container: { - overflow: "hidden", - borderTopLeftRadius: border.radius, - borderTopRightRadius: border.radius, - }, - image: { - width: "100%", - height: 200, - resizeMode: "cover", - }, -}; -export const cardImageFull = { - container: { - ...cardImage.container, - borderBottomLeftRadius: border.radius, - borderBottomRightRadius: border.radius, - }, - image: { - width: "100%", - height: 300, - resizeMode: "cover", - }, -}; -export const cardBody = { - container: { - position: "absolute", - end: 0, - start: 0, - bottom: 0, - backgroundColor: "transparent", - }, -}; -// -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -// Card Action -export const cardAction = { - container: { - maxWidth: "100%", - aspectRatio: 1, - borderWidth: 1, - borderColor: border.color, - borderRadius: border.radius, - padding: spacing.regular, - alignItems: "center", - }, -}; -export const cardActionImage = { - image: { - maxHeight: 70, - resizeMode: "contain", - }, -}; -// -//-------------------------------------------------------------------------------------------------------------------// -// Card Payment -export const cardPaymentImage = { - container: { - flex: -1, - maxHeight: 250, - }, - image: { - width: "100%", - maxHeight: 250, - resizeMode: "contain", - }, -}; diff --git a/theme/styles/native/ui_resources/atlas_ui_resources/buildingblocks/header.js b/theme/styles/native/ui_resources/atlas_ui_resources/buildingblocks/header.js deleted file mode 100644 index 8df718e..0000000 --- a/theme/styles/native/ui_resources/atlas_ui_resources/buildingblocks/header.js +++ /dev/null @@ -1,55 +0,0 @@ -import { Platform } from "react-native"; -import { background, border, contrast, spacing } from "../../../core/variables"; -/* -========================================================================== - Cards - -========================================================================== -*/ -export const header = { - container: { - borderRadius: border.radius, - backgroundColor: background.primary, - marginBottom: spacing.regular, - ...Platform.select({ - android: { - borderWidth: 1, - borderColor: contrast.lowest, - }, - }), - }, -}; -// -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -export const headerImageFull = { - container: { - overflow: "hidden", - }, - image: { - width: "100%", - height: 250, - resizeMode: "cover", - }, -}; -export const headerImageOverlay = { - container: { - zIndex: 10, - width: "100%", - height: "100%", - position: "absolute", - backgroundColor: "rgba(0,0,0,0.4)", - }, -}; -export const headerBody = { - container: { - bottom: 0, - zIndex: 11, - width: "100%", - position: "absolute", - backgroundColor: "transparent", - }, -}; -// -//== Variations -//-------------------------------------------------------------------------------------------------------------------// diff --git a/theme/styles/native/ui_resources/atlas_ui_resources/layouts/layout.js b/theme/styles/native/ui_resources/atlas_ui_resources/layouts/layout.js deleted file mode 100644 index 1b53995..0000000 --- a/theme/styles/native/ui_resources/atlas_ui_resources/layouts/layout.js +++ /dev/null @@ -1,56 +0,0 @@ -import { NativeModules } from "react-native"; -import { darkMode } from "../../../app/custom-variables.js"; -import { background, font, navigation } from "../../../core/variables"; -/* -========================================================================== - TopBar / BottomBar / ProgressOverlay - - Default Class For Mendix TopBar, BottomBar and ProgressOverlay -========================================================================== -*/ -// backgroundColor of the native iOS statusbar can not be changed. -// To fix this we change the barStyle of the statusbar if OS theme is dark and app theme is light (And the other way around). -const isOSDarkMode = NativeModules && NativeModules.RNDarkMode && NativeModules.RNDarkMode.initialMode && NativeModules.RNDarkMode.initialMode === "dark"; -const statusBarStyle = !darkMode && isOSDarkMode ? - "dark-content" : - darkMode && !isOSDarkMode ? "light-content" : navigation.statusBar.barStyle; -// -export const Layout = { - sidebar: { - // All ViewStyle properties are allowed - }, - statusBar: { - // Only backgroundColor and barStyle are allowed - backgroundColor: navigation.statusBar.backgroundColor, - barStyle: statusBarStyle, - }, - header: { - container: { - // All ViewStyle properties are allowed - backgroundColor: navigation.topBar.backgroundColor, - borderBottomWidth: undefined, - }, - title: { - // All TextStyle properties are allowed - color: navigation.topBar.titleColor, - fontSize: navigation.topBar.titleFontSize, - fontFamily: font.family, - fontWeight: font.weightBold, - }, - backButtonText: { - // All TextStyle properties are allowed - color: navigation.topBar.backButtonColor, - fontFamily: font.family, - }, - backButtonIcon: { - // All ImageStyle properties are allowed - tintColor: navigation.topBar.backButtonColor, - }, - }, - container: { - // All ViewStyle properties are allowed - backgroundColor: background.primary, - }, -}; -// -export const Page = Layout; diff --git a/theme/styles/native/ui_resources/atlas_ui_resources/pagetemplates/inspectiondetails.js b/theme/styles/native/ui_resources/atlas_ui_resources/pagetemplates/inspectiondetails.js deleted file mode 100644 index 7878669..0000000 --- a/theme/styles/native/ui_resources/atlas_ui_resources/pagetemplates/inspectiondetails.js +++ /dev/null @@ -1,29 +0,0 @@ -/* -========================================================================== - Inspection details - -========================================================================== -*/ -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -export const carouselCardImage = { - container: { - borderRadius: 10, - overflow: "hidden", - }, - image: { - width: "100%", - height: "100%", - }, -}; -export const carouselFullWidthImage = { - container: {}, - image: { - width: "100%", - height: "100%", - }, -}; -// -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -// diff --git a/theme/styles/native/ui_resources/atlas_ui_resources/pagetemplates/maps.js b/theme/styles/native/ui_resources/atlas_ui_resources/pagetemplates/maps.js deleted file mode 100644 index c861db7..0000000 --- a/theme/styles/native/ui_resources/atlas_ui_resources/pagetemplates/maps.js +++ /dev/null @@ -1,71 +0,0 @@ -import { background, border, contrast, spacing } from "../../../core/variables.js"; -/* -========================================================================== - Maps - -========================================================================== -*/ -// -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -export const mapsBackground = { - container: { - position: "absolute", - height: "100%", - width: "100%", - zIndex: 0, - }, -}; -export const mapsFooter = { - container: { - bottom: 0, - position: "absolute", - }, -}; -export const mapsFooterSendLocation = { - container: { - flex: 1, - alignSelf: "flex-end", - backgroundColor: background.primary, - padding: spacing.regular, - margin: spacing.regular, - borderRadius: border.radius, - elevation: 4, - shadowColor: contrast.lower, - shadowOpacity: 0.8, - shadowRadius: 8, - shadowOffset: { - width: 0, - height: 2, - }, - }, -}; -export const mapsList = { - container: { - paddingHorizontal: spacing.regular, - }, -}; -export const mapsListItemImage = { - container: { - backgroundColor: background.primary, - borderRadius: border.radius, - marginVertical: spacing.regular, - marginLeft: spacing.smallest, - marginRight: spacing.regular, - elevation: 4, - shadowColor: contrast.lower, - shadowOpacity: 0.8, - shadowRadius: 8, - shadowOffset: { - width: 0, - height: 2, - }, - }, - image: { - borderRadius: border.radius, - }, -}; -// -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -// diff --git a/theme/styles/native/ui_resources/atlas_ui_resources/pagetemplates/page.js b/theme/styles/native/ui_resources/atlas_ui_resources/pagetemplates/page.js deleted file mode 100644 index 0e3bcc2..0000000 --- a/theme/styles/native/ui_resources/atlas_ui_resources/pagetemplates/page.js +++ /dev/null @@ -1,39 +0,0 @@ -/* -========================================================================== - Page - -========================================================================== -*/ -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -// -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -// -export const pageHeaderBorderNone = { - sidebar: { - // All ViewStyle properties are allowed - }, - statusBar: { - // Only backgroundColor and barStyle are allowed - }, - header: { - container: { - // All ViewStyle properties are allowed - elevation: 0, - borderBottomWidth: undefined, - }, - title: { - // All TextStyle properties are allowed - }, - backButtonText: { - // All TextStyle properties are allowed - }, - backButtonIcon: { - // All ImageStyle properties are allowed - }, - }, - container: { - // All ViewStyle properties are allowed - }, -}; diff --git a/theme/styles/web/css/main.css b/theme/styles/web/css/main.css deleted file mode 100644 index 66189f4..0000000 --- a/theme/styles/web/css/main.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v3.3.4 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700");@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700");@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700");html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{margin:0.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type='button'],input[type='reset'],input[type='submit']{-webkit-appearance:button;cursor:pointer}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type='checkbox'],input[type='radio']{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type='number']::-webkit-inner-spin-button,input[type='number']::-webkit-outer-spin-button{height:auto}input[type='search']{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type='search']::-webkit-search-cancel-button,input[type='search']::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:0.35em 0.625em 0.75em;margin:0 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{color:#000 !important;text-shadow:none !important;background:transparent !important;-webkit-box-shadow:none !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^='#']:after,a[href^='javascript:']:after{content:''}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url("./fonts/glyphicons-halflings-regular.woff2") format("woff2"),url("./fonts/glyphicons-halflings-regular.woff") format("woff")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:'\2a'}.glyphicon-plus:before{content:'\2b'}.glyphicon-euro:before,.glyphicon-eur:before{content:'\20ac'}.glyphicon-minus:before{content:'\2212'}.glyphicon-cloud:before{content:'\2601'}.glyphicon-envelope:before{content:'\2709'}.glyphicon-pencil:before{content:'\270f'}.glyphicon-glass:before{content:'\e001'}.glyphicon-music:before{content:'\e002'}.glyphicon-search:before{content:'\e003'}.glyphicon-heart:before{content:'\e005'}.glyphicon-star:before{content:'\e006'}.glyphicon-star-empty:before{content:'\e007'}.glyphicon-user:before{content:'\e008'}.glyphicon-film:before{content:'\e009'}.glyphicon-th-large:before{content:'\e010'}.glyphicon-th:before{content:'\e011'}.glyphicon-th-list:before{content:'\e012'}.glyphicon-ok:before{content:'\e013'}.glyphicon-remove:before{content:'\e014'}.glyphicon-zoom-in:before{content:'\e015'}.glyphicon-zoom-out:before{content:'\e016'}.glyphicon-off:before{content:'\e017'}.glyphicon-signal:before{content:'\e018'}.glyphicon-cog:before{content:'\e019'}.glyphicon-trash:before{content:'\e020'}.glyphicon-home:before{content:'\e021'}.glyphicon-file:before{content:'\e022'}.glyphicon-time:before{content:'\e023'}.glyphicon-road:before{content:'\e024'}.glyphicon-download-alt:before{content:'\e025'}.glyphicon-download:before{content:'\e026'}.glyphicon-upload:before{content:'\e027'}.glyphicon-inbox:before{content:'\e028'}.glyphicon-play-circle:before{content:'\e029'}.glyphicon-repeat:before{content:'\e030'}.glyphicon-refresh:before{content:'\e031'}.glyphicon-list-alt:before{content:'\e032'}.glyphicon-lock:before{content:'\e033'}.glyphicon-flag:before{content:'\e034'}.glyphicon-headphones:before{content:'\e035'}.glyphicon-volume-off:before{content:'\e036'}.glyphicon-volume-down:before{content:'\e037'}.glyphicon-volume-up:before{content:'\e038'}.glyphicon-qrcode:before{content:'\e039'}.glyphicon-barcode:before{content:'\e040'}.glyphicon-tag:before{content:'\e041'}.glyphicon-tags:before{content:'\e042'}.glyphicon-book:before{content:'\e043'}.glyphicon-bookmark:before{content:'\e044'}.glyphicon-print:before{content:'\e045'}.glyphicon-camera:before{content:'\e046'}.glyphicon-font:before{content:'\e047'}.glyphicon-bold:before{content:'\e048'}.glyphicon-italic:before{content:'\e049'}.glyphicon-text-height:before{content:'\e050'}.glyphicon-text-width:before{content:'\e051'}.glyphicon-align-left:before{content:'\e052'}.glyphicon-align-center:before{content:'\e053'}.glyphicon-align-right:before{content:'\e054'}.glyphicon-align-justify:before{content:'\e055'}.glyphicon-list:before{content:'\e056'}.glyphicon-indent-left:before{content:'\e057'}.glyphicon-indent-right:before{content:'\e058'}.glyphicon-facetime-video:before{content:'\e059'}.glyphicon-picture:before{content:'\e060'}.glyphicon-map-marker:before{content:'\e062'}.glyphicon-adjust:before{content:'\e063'}.glyphicon-tint:before{content:'\e064'}.glyphicon-edit:before{content:'\e065'}.glyphicon-share:before{content:'\e066'}.glyphicon-check:before{content:'\e067'}.glyphicon-move:before{content:'\e068'}.glyphicon-step-backward:before{content:'\e069'}.glyphicon-fast-backward:before{content:'\e070'}.glyphicon-backward:before{content:'\e071'}.glyphicon-play:before{content:'\e072'}.glyphicon-pause:before{content:'\e073'}.glyphicon-stop:before{content:'\e074'}.glyphicon-forward:before{content:'\e075'}.glyphicon-fast-forward:before{content:'\e076'}.glyphicon-step-forward:before{content:'\e077'}.glyphicon-eject:before{content:'\e078'}.glyphicon-chevron-left:before{content:'\e079'}.glyphicon-chevron-right:before{content:'\e080'}.glyphicon-plus-sign:before{content:'\e081'}.glyphicon-minus-sign:before{content:'\e082'}.glyphicon-remove-sign:before{content:'\e083'}.glyphicon-ok-sign:before{content:'\e084'}.glyphicon-question-sign:before{content:'\e085'}.glyphicon-info-sign:before{content:'\e086'}.glyphicon-screenshot:before{content:'\e087'}.glyphicon-remove-circle:before{content:'\e088'}.glyphicon-ok-circle:before{content:'\e089'}.glyphicon-ban-circle:before{content:'\e090'}.glyphicon-arrow-left:before{content:'\e091'}.glyphicon-arrow-right:before{content:'\e092'}.glyphicon-arrow-up:before{content:'\e093'}.glyphicon-arrow-down:before{content:'\e094'}.glyphicon-share-alt:before{content:'\e095'}.glyphicon-resize-full:before{content:'\e096'}.glyphicon-resize-small:before{content:'\e097'}.glyphicon-exclamation-sign:before{content:'\e101'}.glyphicon-gift:before{content:'\e102'}.glyphicon-leaf:before{content:'\e103'}.glyphicon-fire:before{content:'\e104'}.glyphicon-eye-open:before{content:'\e105'}.glyphicon-eye-close:before{content:'\e106'}.glyphicon-warning-sign:before{content:'\e107'}.glyphicon-plane:before{content:'\e108'}.glyphicon-calendar:before{content:'\e109'}.glyphicon-random:before{content:'\e110'}.glyphicon-comment:before{content:'\e111'}.glyphicon-magnet:before{content:'\e112'}.glyphicon-chevron-up:before{content:'\e113'}.glyphicon-chevron-down:before{content:'\e114'}.glyphicon-retweet:before{content:'\e115'}.glyphicon-shopping-cart:before{content:'\e116'}.glyphicon-folder-close:before{content:'\e117'}.glyphicon-folder-open:before{content:'\e118'}.glyphicon-resize-vertical:before{content:'\e119'}.glyphicon-resize-horizontal:before{content:'\e120'}.glyphicon-hdd:before{content:'\e121'}.glyphicon-bullhorn:before{content:'\e122'}.glyphicon-bell:before{content:'\e123'}.glyphicon-certificate:before{content:'\e124'}.glyphicon-thumbs-up:before{content:'\e125'}.glyphicon-thumbs-down:before{content:'\e126'}.glyphicon-hand-right:before{content:'\e127'}.glyphicon-hand-left:before{content:'\e128'}.glyphicon-hand-up:before{content:'\e129'}.glyphicon-hand-down:before{content:'\e130'}.glyphicon-circle-arrow-right:before{content:'\e131'}.glyphicon-circle-arrow-left:before{content:'\e132'}.glyphicon-circle-arrow-up:before{content:'\e133'}.glyphicon-circle-arrow-down:before{content:'\e134'}.glyphicon-globe:before{content:'\e135'}.glyphicon-wrench:before{content:'\e136'}.glyphicon-tasks:before{content:'\e137'}.glyphicon-filter:before{content:'\e138'}.glyphicon-briefcase:before{content:'\e139'}.glyphicon-fullscreen:before{content:'\e140'}.glyphicon-dashboard:before{content:'\e141'}.glyphicon-paperclip:before{content:'\e142'}.glyphicon-heart-empty:before{content:'\e143'}.glyphicon-link:before{content:'\e144'}.glyphicon-phone:before{content:'\e145'}.glyphicon-pushpin:before{content:'\e146'}.glyphicon-usd:before{content:'\e148'}.glyphicon-gbp:before{content:'\e149'}.glyphicon-sort:before{content:'\e150'}.glyphicon-sort-by-alphabet:before{content:'\e151'}.glyphicon-sort-by-alphabet-alt:before{content:'\e152'}.glyphicon-sort-by-order:before{content:'\e153'}.glyphicon-sort-by-order-alt:before{content:'\e154'}.glyphicon-sort-by-attributes:before{content:'\e155'}.glyphicon-sort-by-attributes-alt:before{content:'\e156'}.glyphicon-unchecked:before{content:'\e157'}.glyphicon-expand:before{content:'\e158'}.glyphicon-collapse-down:before{content:'\e159'}.glyphicon-collapse-up:before{content:'\e160'}.glyphicon-log-in:before{content:'\e161'}.glyphicon-flash:before{content:'\e162'}.glyphicon-log-out:before{content:'\e163'}.glyphicon-new-window:before{content:'\e164'}.glyphicon-record:before{content:'\e165'}.glyphicon-save:before{content:'\e166'}.glyphicon-open:before{content:'\e167'}.glyphicon-saved:before{content:'\e168'}.glyphicon-import:before{content:'\e169'}.glyphicon-export:before{content:'\e170'}.glyphicon-send:before{content:'\e171'}.glyphicon-floppy-disk:before{content:'\e172'}.glyphicon-floppy-saved:before{content:'\e173'}.glyphicon-floppy-remove:before{content:'\e174'}.glyphicon-floppy-save:before{content:'\e175'}.glyphicon-floppy-open:before{content:'\e176'}.glyphicon-credit-card:before{content:'\e177'}.glyphicon-transfer:before{content:'\e178'}.glyphicon-cutlery:before{content:'\e179'}.glyphicon-header:before{content:'\e180'}.glyphicon-compressed:before{content:'\e181'}.glyphicon-earphone:before{content:'\e182'}.glyphicon-phone-alt:before{content:'\e183'}.glyphicon-tower:before{content:'\e184'}.glyphicon-stats:before{content:'\e185'}.glyphicon-sd-video:before{content:'\e186'}.glyphicon-hd-video:before{content:'\e187'}.glyphicon-subtitles:before{content:'\e188'}.glyphicon-sound-stereo:before{content:'\e189'}.glyphicon-sound-dolby:before{content:'\e190'}.glyphicon-sound-5-1:before{content:'\e191'}.glyphicon-sound-6-1:before{content:'\e192'}.glyphicon-sound-7-1:before{content:'\e193'}.glyphicon-copyright-mark:before{content:'\e194'}.glyphicon-registration-mark:before{content:'\e195'}.glyphicon-cloud-download:before{content:'\e197'}.glyphicon-cloud-upload:before{content:'\e198'}.glyphicon-tree-conifer:before{content:'\e199'}.glyphicon-tree-deciduous:before{content:'\e200'}.glyphicon-cd:before{content:'\e201'}.glyphicon-save-file:before{content:'\e202'}.glyphicon-open-file:before{content:'\e203'}.glyphicon-level-up:before{content:'\e204'}.glyphicon-copy:before{content:'\e205'}.glyphicon-paste:before{content:'\e206'}.glyphicon-alert:before{content:'\e209'}.glyphicon-equalizer:before{content:'\e210'}.glyphicon-king:before{content:'\e211'}.glyphicon-queen:before{content:'\e212'}.glyphicon-pawn:before{content:'\e213'}.glyphicon-bishop:before{content:'\e214'}.glyphicon-knight:before{content:'\e215'}.glyphicon-baby-formula:before{content:'\e216'}.glyphicon-tent:before{content:'\26fa'}.glyphicon-blackboard:before{content:'\e218'}.glyphicon-bed:before{content:'\e219'}.glyphicon-apple:before{content:'\f8ff'}.glyphicon-erase:before{content:'\e221'}.glyphicon-hourglass:before{content:'\231b'}.glyphicon-lamp:before{content:'\e223'}.glyphicon-duplicate:before{content:'\e224'}.glyphicon-piggy-bank:before{content:'\e225'}.glyphicon-scissors:before{content:'\e226'}.glyphicon-bitcoin:before{content:'\e227'}.glyphicon-btc:before{content:'\e227'}.glyphicon-xbt:before{content:'\e227'}.glyphicon-yen:before{content:'\00a5'}.glyphicon-jpy:before{content:'\00a5'}.glyphicon-ruble:before{content:'\20bd'}.glyphicon-rub:before{content:'\20bd'}.glyphicon-scale:before{content:'\e230'}.glyphicon-ice-lolly:before{content:'\e231'}.glyphicon-ice-lolly-tasted:before{content:'\e232'}.glyphicon-education:before{content:'\e233'}.glyphicon-option-horizontal:before{content:'\e234'}.glyphicon-option-vertical:before{content:'\e235'}.glyphicon-menu-hamburger:before{content:'\e236'}.glyphicon-modal-window:before{content:'\e237'}.glyphicon-oil:before{content:'\e238'}.glyphicon-grain:before{content:'\e239'}.glyphicon-sunglasses:before{content:'\e240'}.glyphicon-text-size:before{content:'\e241'}.glyphicon-text-color:before{content:'\e242'}.glyphicon-text-background:before{content:'\e243'}.glyphicon-object-align-top:before{content:'\e244'}.glyphicon-object-align-bottom:before{content:'\e245'}.glyphicon-object-align-horizontal:before{content:'\e246'}.glyphicon-object-align-left:before{content:'\e247'}.glyphicon-object-align-vertical:before{content:'\e248'}.glyphicon-object-align-right:before{content:'\e249'}.glyphicon-triangle-right:before{content:'\e250'}.glyphicon-triangle-left:before{content:'\e251'}.glyphicon-triangle-bottom:before{content:'\e252'}.glyphicon-triangle-top:before{content:'\e253'}.glyphicon-console:before{content:'\e254'}.glyphicon-superscript:before{content:'\e255'}.glyphicon-subscript:before{content:'\e256'}.glyphicon-menu-left:before{content:'\e257'}.glyphicon-menu-right:before{content:'\e258'}.glyphicon-menu-down:before{content:'\e259'}.glyphicon-menu-up:before{content:'\e260'}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role='button']{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{padding:0.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo, Monaco, Consolas, 'Courier New', monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*='col-']{position:static;display:table-column;float:none}table td[class*='col-'],table th[class*='col-']{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{min-height:0.01%;overflow-x:auto}@media screen and (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type='search']{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type='radio'],input[type='checkbox']{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type='file']{display:block}input[type='range']{display:block;width:100%}select[multiple],select[size]{height:auto}input[type='file']:focus,input[type='radio']:focus,input[type='checkbox']:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type='radio'],.radio-inline input[type='radio'],.checkbox input[type='checkbox'],.checkbox-inline input[type='checkbox']{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:normal;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type='radio'][disabled],input[type='checkbox'][disabled],input[type='radio'].disabled,input[type='checkbox'].disabled,fieldset[disabled] input[type='radio'],fieldset[disabled] input[type='checkbox']{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static,.form-group div[class*='textBox']>.control-label,.form-group div[class*='textArea']>.control-label,.form-group div[class*='datePicker']>.control-label{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-group div[class*='textBox']>.input-lg.control-label,.form-group div[class*='textArea']>.input-lg.control-label,.form-group div[class*='datePicker']>.input-lg.control-label,.form-control-static.input-sm,.form-group div[class*='textBox']>.input-sm.control-label,.form-group div[class*='textArea']>.input-sm.control-label,.form-group div[class*='datePicker']>.input-sm.control-label{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.form-group-sm .form-control{height:30px;line-height:30px}textarea.form-group-sm .form-control,select[multiple].form-group-sm .form-control{height:auto}.form-group-sm .form-control-static,.form-group-sm .form-group div[class*='textBox']>.control-label,.form-group .form-group-sm div[class*='textBox']>.control-label,.form-group-sm .form-group div[class*='textArea']>.control-label,.form-group .form-group-sm div[class*='textArea']>.control-label,.form-group-sm .form-group div[class*='datePicker']>.control-label,.form-group .form-group-sm div[class*='datePicker']>.control-label{height:30px;min-height:32px;padding:5px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.form-group-lg .form-control{height:46px;line-height:46px}textarea.form-group-lg .form-control,select[multiple].form-group-lg .form-control{height:auto}.form-group-lg .form-control-static,.form-group-lg .form-group div[class*='textBox']>.control-label,.form-group .form-group-lg div[class*='textBox']>.control-label,.form-group-lg .form-group div[class*='textArea']>.control-label,.form-group .form-group-lg div[class*='textArea']>.control-label,.form-group-lg .form-group div[class*='datePicker']>.control-label,.form-group .form-group-lg div[class*='datePicker']>.control-label{height:46px;min-height:38px;padding:10px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width: 768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static,.form-inline .form-group div[class*='textBox']>.control-label,.form-group .form-inline div[class*='textBox']>.control-label,.form-inline .form-group div[class*='textArea']>.control-label,.form-group .form-inline div[class*='textArea']>.control-label,.form-inline .form-group div[class*='datePicker']>.control-label,.form-group .form-inline div[class*='datePicker']>.control-label{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type='radio'],.form-inline .checkbox input[type='checkbox']{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:14.333333px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:0.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary,.datagrid-fullsearch.mx-grid .mx-grid-search-button{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.datagrid-fullsearch.mx-grid .mx-grid-search-button:hover,.btn-primary:focus,.datagrid-fullsearch.mx-grid .mx-grid-search-button:focus,.btn-primary.focus,.datagrid-fullsearch.mx-grid .focus.mx-grid-search-button,.btn-primary:active,.datagrid-fullsearch.mx-grid .mx-grid-search-button:active,.btn-primary.active,.datagrid-fullsearch.mx-grid .active.mx-grid-search-button,.open>.dropdown-toggle.btn-primary,.datagrid-fullsearch.mx-grid .open>.dropdown-toggle.mx-grid-search-button{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.datagrid-fullsearch.mx-grid .mx-grid-search-button:active,.btn-primary.active,.datagrid-fullsearch.mx-grid .active.mx-grid-search-button,.open>.dropdown-toggle.btn-primary,.datagrid-fullsearch.mx-grid .open>.dropdown-toggle.mx-grid-search-button{background-image:none}.btn-primary.disabled,.datagrid-fullsearch.mx-grid .disabled.mx-grid-search-button,.btn-primary[disabled],.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled],fieldset[disabled] .btn-primary,fieldset[disabled] .datagrid-fullsearch.mx-grid .mx-grid-search-button,.datagrid-fullsearch.mx-grid fieldset[disabled] .mx-grid-search-button,.btn-primary.disabled:hover,.datagrid-fullsearch.mx-grid .disabled.mx-grid-search-button:hover,.btn-primary[disabled]:hover,.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled]:hover,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .datagrid-fullsearch.mx-grid .mx-grid-search-button:hover,.datagrid-fullsearch.mx-grid fieldset[disabled] .mx-grid-search-button:hover,.btn-primary.disabled:focus,.datagrid-fullsearch.mx-grid .disabled.mx-grid-search-button:focus,.btn-primary[disabled]:focus,.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled]:focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .datagrid-fullsearch.mx-grid .mx-grid-search-button:focus,.datagrid-fullsearch.mx-grid fieldset[disabled] .mx-grid-search-button:focus,.btn-primary.disabled.focus,.datagrid-fullsearch.mx-grid .disabled.focus.mx-grid-search-button,.btn-primary[disabled].focus,.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled].focus,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .datagrid-fullsearch.mx-grid .focus.mx-grid-search-button,.datagrid-fullsearch.mx-grid fieldset[disabled] .focus.mx-grid-search-button,.btn-primary.disabled:active,.datagrid-fullsearch.mx-grid .disabled.mx-grid-search-button:active,.btn-primary[disabled]:active,.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled]:active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .datagrid-fullsearch.mx-grid .mx-grid-search-button:active,.datagrid-fullsearch.mx-grid fieldset[disabled] .mx-grid-search-button:active,.btn-primary.disabled.active,.datagrid-fullsearch.mx-grid .disabled.active.mx-grid-search-button,.btn-primary[disabled].active,.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled].active,fieldset[disabled] .btn-primary.active,fieldset[disabled] .datagrid-fullsearch.mx-grid .active.mx-grid-search-button,.datagrid-fullsearch.mx-grid fieldset[disabled] .active.mx-grid-search-button{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge,.datagrid-fullsearch.mx-grid .mx-grid-search-button .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:normal;color:#337ab7;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type='submit'].btn-block,input[type='reset'].btn-block,input[type='button'].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:'';border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle='buttons']>.btn input[type='radio'],[data-toggle='buttons']>.btn-group>.btn input[type='radio'],[data-toggle='buttons']>.btn input[type='checkbox'],[data-toggle='buttons']>.btn-group>.btn input[type='checkbox']{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*='col-']{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type='radio'],.input-group-addon input[type='checkbox']{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width: 768px){.navbar{border-radius:4px}}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static,.navbar-form .form-group div[class*='textBox']>.control-label,.form-group .navbar-form div[class*='textBox']>.control-label,.navbar-form .form-group div[class*='textArea']>.control-label,.form-group .navbar-form div[class*='textArea']>.control-label,.navbar-form .form-group div[class*='datePicker']>.control-label,.form-group .navbar-form div[class*='datePicker']>.control-label{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type='radio'],.navbar-form .checkbox input[type='checkbox']{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:'/\00a0'}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:0.2em 0.6em 0.3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:0.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:0.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:0.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:transparent;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out;-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%)}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:0.5}.modal-header{min-height:16.42857143px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:12px;font-weight:normal;line-height:1.4;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:0.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:14px;font-weight:normal;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:'';border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:' ';border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:' ';border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:' ';border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:' ';border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d), (-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform 0.6s ease-in-out;-o-transition:-o-transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.next,.carousel-inner>.item.active.right{left:0;-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{left:0;-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{left:0;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);filter:alpha(opacity=50);opacity:0.5}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:0.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width: 768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:' '}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width: 767px){.visible-xs-block{display:block !important}}@media (max-width: 767px){.visible-xs-inline{display:inline !important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width: 1200px){.visible-lg-block{display:block !important}}@media (min-width: 1200px){.visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}[dir='rtl'] .flip.text-left{text-align:right}[dir='rtl'] .flip.text-right{text-align:left}[dir='rtl'] .list-unstyled{padding-right:0;padding-left:initial}[dir='rtl'] .list-inline{padding-right:0;padding-left:initial;margin-right:-5px;margin-left:0}[dir='rtl'] dd{margin-right:0;margin-left:initial}@media (min-width: 768px){[dir='rtl'] .dl-horizontal dt{float:right;clear:right;text-align:left}[dir='rtl'] .dl-horizontal dd{margin-right:180px;margin-left:0}}[dir='rtl'] blockquote{border-right:5px solid #eeeeee;border-left:0}[dir='rtl'] .blockquote-reverse,[dir='rtl'] blockquote.pull-left{padding-left:15px;padding-right:0;border-left:5px solid #eeeeee;border-right:0;text-align:left}[dir='rtl'] .col-xs-1,[dir='rtl'] .col-sm-1,[dir='rtl'] .col-md-1,[dir='rtl'] .col-lg-1,[dir='rtl'] .col-xs-2,[dir='rtl'] .col-sm-2,[dir='rtl'] .col-md-2,[dir='rtl'] .col-lg-2,[dir='rtl'] .col-xs-3,[dir='rtl'] .col-sm-3,[dir='rtl'] .col-md-3,[dir='rtl'] .col-lg-3,[dir='rtl'] .col-xs-4,[dir='rtl'] .col-sm-4,[dir='rtl'] .col-md-4,[dir='rtl'] .col-lg-4,[dir='rtl'] .col-xs-5,[dir='rtl'] .col-sm-5,[dir='rtl'] .col-md-5,[dir='rtl'] .col-lg-5,[dir='rtl'] .col-xs-6,[dir='rtl'] .col-sm-6,[dir='rtl'] .col-md-6,[dir='rtl'] .col-lg-6,[dir='rtl'] .col-xs-7,[dir='rtl'] .col-sm-7,[dir='rtl'] .col-md-7,[dir='rtl'] .col-lg-7,[dir='rtl'] .col-xs-8,[dir='rtl'] .col-sm-8,[dir='rtl'] .col-md-8,[dir='rtl'] .col-lg-8,[dir='rtl'] .col-xs-9,[dir='rtl'] .col-sm-9,[dir='rtl'] .col-md-9,[dir='rtl'] .col-lg-9,[dir='rtl'] .col-xs-10,[dir='rtl'] .col-sm-10,[dir='rtl'] .col-md-10,[dir='rtl'] .col-lg-10,[dir='rtl'] .col-xs-11,[dir='rtl'] .col-sm-11,[dir='rtl'] .col-md-11,[dir='rtl'] .col-lg-11,[dir='rtl'] .col-xs-12,[dir='rtl'] .col-sm-12,[dir='rtl'] .col-md-12,[dir='rtl'] .col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}[dir='rtl'] .col-xs-1,[dir='rtl'] .col-xs-2,[dir='rtl'] .col-xs-3,[dir='rtl'] .col-xs-4,[dir='rtl'] .col-xs-5,[dir='rtl'] .col-xs-6,[dir='rtl'] .col-xs-7,[dir='rtl'] .col-xs-8,[dir='rtl'] .col-xs-9,[dir='rtl'] .col-xs-10,[dir='rtl'] .col-xs-11,[dir='rtl'] .col-xs-12{float:right}[dir='rtl'] .col-xs-12{width:100%}[dir='rtl'] .col-xs-11{width:91.66666667%}[dir='rtl'] .col-xs-10{width:83.33333333%}[dir='rtl'] .col-xs-9{width:75%}[dir='rtl'] .col-xs-8{width:66.66666667%}[dir='rtl'] .col-xs-7{width:58.33333333%}[dir='rtl'] .col-xs-6{width:50%}[dir='rtl'] .col-xs-5{width:41.66666667%}[dir='rtl'] .col-xs-4{width:33.33333333%}[dir='rtl'] .col-xs-3{width:25%}[dir='rtl'] .col-xs-2{width:16.66666667%}[dir='rtl'] .col-xs-1{width:8.33333333%}[dir='rtl'] .col-xs-pull-12{left:100%;right:auto}[dir='rtl'] .col-xs-pull-11{left:91.66666667%;right:auto}[dir='rtl'] .col-xs-pull-10{left:83.33333333%;right:auto}[dir='rtl'] .col-xs-pull-9{left:75%;right:auto}[dir='rtl'] .col-xs-pull-8{left:66.66666667%;right:auto}[dir='rtl'] .col-xs-pull-7{left:58.33333333%;right:auto}[dir='rtl'] .col-xs-pull-6{left:50%;right:auto}[dir='rtl'] .col-xs-pull-5{left:41.66666667%;right:auto}[dir='rtl'] .col-xs-pull-4{left:33.33333333%;right:auto}[dir='rtl'] .col-xs-pull-3{left:25%;right:auto}[dir='rtl'] .col-xs-pull-2{left:16.66666667%;right:auto}[dir='rtl'] .col-xs-pull-1{left:8.33333333%;right:auto}[dir='rtl'] .col-xs-pull-0{left:auto;right:auto}[dir='rtl'] .col-xs-push-12{right:100%;left:0}[dir='rtl'] .col-xs-push-11{right:91.66666667%;left:0}[dir='rtl'] .col-xs-push-10{right:83.33333333%;left:0}[dir='rtl'] .col-xs-push-9{right:75%;left:0}[dir='rtl'] .col-xs-push-8{right:66.66666667%;left:0}[dir='rtl'] .col-xs-push-7{right:58.33333333%;left:0}[dir='rtl'] .col-xs-push-6{right:50%;left:0}[dir='rtl'] .col-xs-push-5{right:41.66666667%;left:0}[dir='rtl'] .col-xs-push-4{right:33.33333333%;left:0}[dir='rtl'] .col-xs-push-3{right:25%;left:0}[dir='rtl'] .col-xs-push-2{right:16.66666667%;left:0}[dir='rtl'] .col-xs-push-1{right:8.33333333%;left:0}[dir='rtl'] .col-xs-push-0{right:auto;left:0}[dir='rtl'] .col-xs-offset-12{margin-right:100%;margin-left:0}[dir='rtl'] .col-xs-offset-11{margin-right:91.66666667%;margin-left:0}[dir='rtl'] .col-xs-offset-10{margin-right:83.33333333%;margin-left:0}[dir='rtl'] .col-xs-offset-9{margin-right:75%;margin-left:0}[dir='rtl'] .col-xs-offset-8{margin-right:66.66666667%;margin-left:0}[dir='rtl'] .col-xs-offset-7{margin-right:58.33333333%;margin-left:0}[dir='rtl'] .col-xs-offset-6{margin-right:50%;margin-left:0}[dir='rtl'] .col-xs-offset-5{margin-right:41.66666667%;margin-left:0}[dir='rtl'] .col-xs-offset-4{margin-right:33.33333333%;margin-left:0}[dir='rtl'] .col-xs-offset-3{margin-right:25%;margin-left:0}[dir='rtl'] .col-xs-offset-2{margin-right:16.66666667%;margin-left:0}[dir='rtl'] .col-xs-offset-1{margin-right:8.33333333%;margin-left:0}[dir='rtl'] .col-xs-offset-0{margin-right:0%;margin-left:0}@media (min-width: 768px){[dir='rtl'] .col-sm-1,[dir='rtl'] .col-sm-2,[dir='rtl'] .col-sm-3,[dir='rtl'] .col-sm-4,[dir='rtl'] .col-sm-5,[dir='rtl'] .col-sm-6,[dir='rtl'] .col-sm-7,[dir='rtl'] .col-sm-8,[dir='rtl'] .col-sm-9,[dir='rtl'] .col-sm-10,[dir='rtl'] .col-sm-11,[dir='rtl'] .col-sm-12{float:right}[dir='rtl'] .col-sm-12{width:100%}[dir='rtl'] .col-sm-11{width:91.66666667%}[dir='rtl'] .col-sm-10{width:83.33333333%}[dir='rtl'] .col-sm-9{width:75%}[dir='rtl'] .col-sm-8{width:66.66666667%}[dir='rtl'] .col-sm-7{width:58.33333333%}[dir='rtl'] .col-sm-6{width:50%}[dir='rtl'] .col-sm-5{width:41.66666667%}[dir='rtl'] .col-sm-4{width:33.33333333%}[dir='rtl'] .col-sm-3{width:25%}[dir='rtl'] .col-sm-2{width:16.66666667%}[dir='rtl'] .col-sm-1{width:8.33333333%}[dir='rtl'] .col-sm-pull-12{left:100%;right:auto}[dir='rtl'] .col-sm-pull-11{left:91.66666667%;right:auto}[dir='rtl'] .col-sm-pull-10{left:83.33333333%;right:auto}[dir='rtl'] .col-sm-pull-9{left:75%;right:auto}[dir='rtl'] .col-sm-pull-8{left:66.66666667%;right:auto}[dir='rtl'] .col-sm-pull-7{left:58.33333333%;right:auto}[dir='rtl'] .col-sm-pull-6{left:50%;right:auto}[dir='rtl'] .col-sm-pull-5{left:41.66666667%;right:auto}[dir='rtl'] .col-sm-pull-4{left:33.33333333%;right:auto}[dir='rtl'] .col-sm-pull-3{left:25%;right:auto}[dir='rtl'] .col-sm-pull-2{left:16.66666667%;right:auto}[dir='rtl'] .col-sm-pull-1{left:8.33333333%;right:auto}[dir='rtl'] .col-sm-pull-0{left:auto;right:auto}[dir='rtl'] .col-sm-push-12{right:100%;left:0}[dir='rtl'] .col-sm-push-11{right:91.66666667%;left:0}[dir='rtl'] .col-sm-push-10{right:83.33333333%;left:0}[dir='rtl'] .col-sm-push-9{right:75%;left:0}[dir='rtl'] .col-sm-push-8{right:66.66666667%;left:0}[dir='rtl'] .col-sm-push-7{right:58.33333333%;left:0}[dir='rtl'] .col-sm-push-6{right:50%;left:0}[dir='rtl'] .col-sm-push-5{right:41.66666667%;left:0}[dir='rtl'] .col-sm-push-4{right:33.33333333%;left:0}[dir='rtl'] .col-sm-push-3{right:25%;left:0}[dir='rtl'] .col-sm-push-2{right:16.66666667%;left:0}[dir='rtl'] .col-sm-push-1{right:8.33333333%;left:0}[dir='rtl'] .col-sm-push-0{right:auto;left:0}[dir='rtl'] .col-sm-offset-12{margin-right:100%;margin-left:0}[dir='rtl'] .col-sm-offset-11{margin-right:91.66666667%;margin-left:0}[dir='rtl'] .col-sm-offset-10{margin-right:83.33333333%;margin-left:0}[dir='rtl'] .col-sm-offset-9{margin-right:75%;margin-left:0}[dir='rtl'] .col-sm-offset-8{margin-right:66.66666667%;margin-left:0}[dir='rtl'] .col-sm-offset-7{margin-right:58.33333333%;margin-left:0}[dir='rtl'] .col-sm-offset-6{margin-right:50%;margin-left:0}[dir='rtl'] .col-sm-offset-5{margin-right:41.66666667%;margin-left:0}[dir='rtl'] .col-sm-offset-4{margin-right:33.33333333%;margin-left:0}[dir='rtl'] .col-sm-offset-3{margin-right:25%;margin-left:0}[dir='rtl'] .col-sm-offset-2{margin-right:16.66666667%;margin-left:0}[dir='rtl'] .col-sm-offset-1{margin-right:8.33333333%;margin-left:0}[dir='rtl'] .col-sm-offset-0{margin-right:0%;margin-left:0}}@media (min-width: 992px){[dir='rtl'] .col-md-1,[dir='rtl'] .col-md-2,[dir='rtl'] .col-md-3,[dir='rtl'] .col-md-4,[dir='rtl'] .col-md-5,[dir='rtl'] .col-md-6,[dir='rtl'] .col-md-7,[dir='rtl'] .col-md-8,[dir='rtl'] .col-md-9,[dir='rtl'] .col-md-10,[dir='rtl'] .col-md-11,[dir='rtl'] .col-md-12{float:right}[dir='rtl'] .col-md-12{width:100%}[dir='rtl'] .col-md-11{width:91.66666667%}[dir='rtl'] .col-md-10{width:83.33333333%}[dir='rtl'] .col-md-9{width:75%}[dir='rtl'] .col-md-8{width:66.66666667%}[dir='rtl'] .col-md-7{width:58.33333333%}[dir='rtl'] .col-md-6{width:50%}[dir='rtl'] .col-md-5{width:41.66666667%}[dir='rtl'] .col-md-4{width:33.33333333%}[dir='rtl'] .col-md-3{width:25%}[dir='rtl'] .col-md-2{width:16.66666667%}[dir='rtl'] .col-md-1{width:8.33333333%}[dir='rtl'] .col-md-pull-12{left:100%;right:auto}[dir='rtl'] .col-md-pull-11{left:91.66666667%;right:auto}[dir='rtl'] .col-md-pull-10{left:83.33333333%;right:auto}[dir='rtl'] .col-md-pull-9{left:75%;right:auto}[dir='rtl'] .col-md-pull-8{left:66.66666667%;right:auto}[dir='rtl'] .col-md-pull-7{left:58.33333333%;right:auto}[dir='rtl'] .col-md-pull-6{left:50%;right:auto}[dir='rtl'] .col-md-pull-5{left:41.66666667%;right:auto}[dir='rtl'] .col-md-pull-4{left:33.33333333%;right:auto}[dir='rtl'] .col-md-pull-3{left:25%;right:auto}[dir='rtl'] .col-md-pull-2{left:16.66666667%;right:auto}[dir='rtl'] .col-md-pull-1{left:8.33333333%;right:auto}[dir='rtl'] .col-md-pull-0{left:auto;right:auto}[dir='rtl'] .col-md-push-12{right:100%;left:0}[dir='rtl'] .col-md-push-11{right:91.66666667%;left:0}[dir='rtl'] .col-md-push-10{right:83.33333333%;left:0}[dir='rtl'] .col-md-push-9{right:75%;left:0}[dir='rtl'] .col-md-push-8{right:66.66666667%;left:0}[dir='rtl'] .col-md-push-7{right:58.33333333%;left:0}[dir='rtl'] .col-md-push-6{right:50%;left:0}[dir='rtl'] .col-md-push-5{right:41.66666667%;left:0}[dir='rtl'] .col-md-push-4{right:33.33333333%;left:0}[dir='rtl'] .col-md-push-3{right:25%;left:0}[dir='rtl'] .col-md-push-2{right:16.66666667%;left:0}[dir='rtl'] .col-md-push-1{right:8.33333333%;left:0}[dir='rtl'] .col-md-push-0{right:auto;left:0}[dir='rtl'] .col-md-offset-12{margin-right:100%;margin-left:0}[dir='rtl'] .col-md-offset-11{margin-right:91.66666667%;margin-left:0}[dir='rtl'] .col-md-offset-10{margin-right:83.33333333%;margin-left:0}[dir='rtl'] .col-md-offset-9{margin-right:75%;margin-left:0}[dir='rtl'] .col-md-offset-8{margin-right:66.66666667%;margin-left:0}[dir='rtl'] .col-md-offset-7{margin-right:58.33333333%;margin-left:0}[dir='rtl'] .col-md-offset-6{margin-right:50%;margin-left:0}[dir='rtl'] .col-md-offset-5{margin-right:41.66666667%;margin-left:0}[dir='rtl'] .col-md-offset-4{margin-right:33.33333333%;margin-left:0}[dir='rtl'] .col-md-offset-3{margin-right:25%;margin-left:0}[dir='rtl'] .col-md-offset-2{margin-right:16.66666667%;margin-left:0}[dir='rtl'] .col-md-offset-1{margin-right:8.33333333%;margin-left:0}[dir='rtl'] .col-md-offset-0{margin-right:0%;margin-left:0}}@media (min-width: 1200px){[dir='rtl'] .col-lg-1,[dir='rtl'] .col-lg-2,[dir='rtl'] .col-lg-3,[dir='rtl'] .col-lg-4,[dir='rtl'] .col-lg-5,[dir='rtl'] .col-lg-6,[dir='rtl'] .col-lg-7,[dir='rtl'] .col-lg-8,[dir='rtl'] .col-lg-9,[dir='rtl'] .col-lg-10,[dir='rtl'] .col-lg-11,[dir='rtl'] .col-lg-12{float:right}[dir='rtl'] .col-lg-12{width:100%}[dir='rtl'] .col-lg-11{width:91.66666667%}[dir='rtl'] .col-lg-10{width:83.33333333%}[dir='rtl'] .col-lg-9{width:75%}[dir='rtl'] .col-lg-8{width:66.66666667%}[dir='rtl'] .col-lg-7{width:58.33333333%}[dir='rtl'] .col-lg-6{width:50%}[dir='rtl'] .col-lg-5{width:41.66666667%}[dir='rtl'] .col-lg-4{width:33.33333333%}[dir='rtl'] .col-lg-3{width:25%}[dir='rtl'] .col-lg-2{width:16.66666667%}[dir='rtl'] .col-lg-1{width:8.33333333%}[dir='rtl'] .col-lg-pull-12{left:100%;right:auto}[dir='rtl'] .col-lg-pull-11{left:91.66666667%;right:auto}[dir='rtl'] .col-lg-pull-10{left:83.33333333%;right:auto}[dir='rtl'] .col-lg-pull-9{left:75%;right:auto}[dir='rtl'] .col-lg-pull-8{left:66.66666667%;right:auto}[dir='rtl'] .col-lg-pull-7{left:58.33333333%;right:auto}[dir='rtl'] .col-lg-pull-6{left:50%;right:auto}[dir='rtl'] .col-lg-pull-5{left:41.66666667%;right:auto}[dir='rtl'] .col-lg-pull-4{left:33.33333333%;right:auto}[dir='rtl'] .col-lg-pull-3{left:25%;right:auto}[dir='rtl'] .col-lg-pull-2{left:16.66666667%;right:auto}[dir='rtl'] .col-lg-pull-1{left:8.33333333%;right:auto}[dir='rtl'] .col-lg-pull-0{left:auto;right:auto}[dir='rtl'] .col-lg-push-12{right:100%;left:0}[dir='rtl'] .col-lg-push-11{right:91.66666667%;left:0}[dir='rtl'] .col-lg-push-10{right:83.33333333%;left:0}[dir='rtl'] .col-lg-push-9{right:75%;left:0}[dir='rtl'] .col-lg-push-8{right:66.66666667%;left:0}[dir='rtl'] .col-lg-push-7{right:58.33333333%;left:0}[dir='rtl'] .col-lg-push-6{right:50%;left:0}[dir='rtl'] .col-lg-push-5{right:41.66666667%;left:0}[dir='rtl'] .col-lg-push-4{right:33.33333333%;left:0}[dir='rtl'] .col-lg-push-3{right:25%;left:0}[dir='rtl'] .col-lg-push-2{right:16.66666667%;left:0}[dir='rtl'] .col-lg-push-1{right:8.33333333%;left:0}[dir='rtl'] .col-lg-push-0{right:auto;left:0}[dir='rtl'] .col-lg-offset-12{margin-right:100%;margin-left:0}[dir='rtl'] .col-lg-offset-11{margin-right:91.66666667%;margin-left:0}[dir='rtl'] .col-lg-offset-10{margin-right:83.33333333%;margin-left:0}[dir='rtl'] .col-lg-offset-9{margin-right:75%;margin-left:0}[dir='rtl'] .col-lg-offset-8{margin-right:66.66666667%;margin-left:0}[dir='rtl'] .col-lg-offset-7{margin-right:58.33333333%;margin-left:0}[dir='rtl'] .col-lg-offset-6{margin-right:50%;margin-left:0}[dir='rtl'] .col-lg-offset-5{margin-right:41.66666667%;margin-left:0}[dir='rtl'] .col-lg-offset-4{margin-right:33.33333333%;margin-left:0}[dir='rtl'] .col-lg-offset-3{margin-right:25%;margin-left:0}[dir='rtl'] .col-lg-offset-2{margin-right:16.66666667%;margin-left:0}[dir='rtl'] .col-lg-offset-1{margin-right:8.33333333%;margin-left:0}[dir='rtl'] .col-lg-offset-0{margin-right:0%;margin-left:0}}[dir='rtl'] caption{text-align:right}[dir='rtl'] th:not(.mx-left-aligned){text-align:right}@media screen and (max-width: 767px){[dir='rtl'] .table-responsive>.table-bordered{border:0}[dir='rtl'] .table-responsive>.table-bordered>thead>tr>th:first-child,[dir='rtl'] .table-responsive>.table-bordered>tbody>tr>th:first-child,[dir='rtl'] .table-responsive>.table-bordered>tfoot>tr>th:first-child,[dir='rtl'] .table-responsive>.table-bordered>thead>tr>td:first-child,[dir='rtl'] .table-responsive>.table-bordered>tbody>tr>td:first-child,[dir='rtl'] .table-responsive>.table-bordered>tfoot>tr>td:first-child{border-right:0;border-left:initial}[dir='rtl'] .table-responsive>.table-bordered>thead>tr>th:last-child,[dir='rtl'] .table-responsive>.table-bordered>tbody>tr>th:last-child,[dir='rtl'] .table-responsive>.table-bordered>tfoot>tr>th:last-child,[dir='rtl'] .table-responsive>.table-bordered>thead>tr>td:last-child,[dir='rtl'] .table-responsive>.table-bordered>tbody>tr>td:last-child,[dir='rtl'] .table-responsive>.table-bordered>tfoot>tr>td:last-child{border-left:0;border-right:initial}}[dir='rtl'] .radio label,[dir='rtl'] .checkbox label{padding-right:20px;padding-left:initial}[dir='rtl'] .radio input[type='radio'],[dir='rtl'] .radio-inline input[type='radio'],[dir='rtl'] .checkbox input[type='checkbox'],[dir='rtl'] .checkbox-inline input[type='checkbox']{margin-right:-20px;margin-left:auto}[dir='rtl'] .radio-inline,[dir='rtl'] .checkbox-inline{padding-right:20px;padding-left:0}[dir='rtl'] .radio-inline+.radio-inline,[dir='rtl'] .checkbox-inline+.checkbox-inline{margin-right:10px;margin-left:0}[dir='rtl'] .has-feedback .form-control{padding-left:42.5px;padding-right:12px}[dir='rtl'] .form-control-feedback{left:0;right:auto}@media (min-width: 768px){[dir='rtl'] .form-inline label{padding-right:0;padding-left:initial}[dir='rtl'] .form-inline .radio input[type='radio'],[dir='rtl'] .form-inline .checkbox input[type='checkbox']{margin-right:0;margin-left:auto}}@media (min-width: 768px){[dir='rtl'] .form-horizontal .control-label{text-align:left}}[dir='rtl'] .form-horizontal .has-feedback .form-control-feedback{left:15px;right:auto}[dir='rtl'] .caret{margin-right:2px;margin-left:0}[dir='rtl'] .dropdown-menu{right:0;left:auto;float:left;text-align:right}[dir='rtl'] .dropdown-menu.pull-right{left:0;right:auto;float:right}[dir='rtl'] .dropdown-menu-right{left:auto;right:0}[dir='rtl'] .dropdown-menu-left{left:0;right:auto}@media (min-width: 768px){[dir='rtl'] .navbar-right .dropdown-menu{left:auto;right:0}[dir='rtl'] .navbar-right .dropdown-menu-left{left:0;right:auto}}[dir='rtl'] .btn-group>.btn,[dir='rtl'] .btn-group-vertical>.btn{float:right}[dir='rtl'] .btn-group .btn+.btn,[dir='rtl'] .btn-group .btn+.btn-group,[dir='rtl'] .btn-group .btn-group+.btn,[dir='rtl'] .btn-group .btn-group+.btn-group{margin-right:-1px;margin-left:0px}[dir='rtl'] .btn-toolbar{margin-right:-5px;margin-left:0px}[dir='rtl'] .btn-toolbar .btn-group,[dir='rtl'] .btn-toolbar .input-group{float:right}[dir='rtl'] .btn-toolbar>.btn,[dir='rtl'] .btn-toolbar>.btn-group,[dir='rtl'] .btn-toolbar>.input-group{margin-right:5px;margin-left:0px}[dir='rtl'] .btn-group>.btn:first-child{margin-right:0}[dir='rtl'] .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:0;border-top-left-radius:0}[dir='rtl'] .btn-group>.btn:last-child:not(:first-child),[dir='rtl'] .btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:4px;border-bottom-left-radius:4px;border-bottom-right-radius:0;border-top-right-radius:0}[dir='rtl'] .btn-group>.btn-group{float:right}[dir='rtl'] .btn-group.btn-group-justified>.btn,[dir='rtl'] .btn-group.btn-group-justified>.btn-group{float:none}[dir='rtl'] .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}[dir='rtl'] .btn-group>.btn-group:first-child>.btn:last-child,[dir='rtl'] .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:0;border-top-left-radius:0}[dir='rtl'] .btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px;border-bottom-right-radius:0;border-top-right-radius:0}[dir='rtl'] .btn .caret{margin-right:0}[dir='rtl'] .btn-group-vertical>.btn+.btn,[dir='rtl'] .btn-group-vertical>.btn+.btn-group,[dir='rtl'] .btn-group-vertical>.btn-group+.btn,[dir='rtl'] .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-right:0}[dir='rtl'] .input-group .form-control{float:right}[dir='rtl'] .input-group .form-control:first-child,[dir='rtl'] .input-group-addon:first-child,[dir='rtl'] .input-group-btn:first-child>.btn,[dir='rtl'] .input-group-btn:first-child>.btn-group>.btn,[dir='rtl'] .input-group-btn:first-child>.dropdown-toggle,[dir='rtl'] .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),[dir='rtl'] .input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:4px;border-top-right-radius:4px;border-bottom-left-radius:0;border-top-left-radius:0}[dir='rtl'] .input-group-addon:first-child{border-left:0px;border-right:1px solid}[dir='rtl'] .input-group .form-control:last-child,[dir='rtl'] .input-group-addon:last-child,[dir='rtl'] .input-group-btn:last-child>.btn,[dir='rtl'] .input-group-btn:last-child>.btn-group>.btn,[dir='rtl'] .input-group-btn:last-child>.dropdown-toggle,[dir='rtl'] .input-group-btn:first-child>.btn:not(:first-child),[dir='rtl'] .input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-top-right-radius:0}[dir='rtl'] .input-group-addon:last-child{border-left-width:1px;border-left-style:solid;border-right:0px}[dir='rtl'] .input-group-btn>.btn+.btn{margin-right:-1px;margin-left:auto}[dir='rtl'] .input-group-btn:first-child>.btn,[dir='rtl'] .input-group-btn:first-child>.btn-group{margin-left:-1px;margin-right:auto}[dir='rtl'] .input-group-btn:last-child>.btn,[dir='rtl'] .input-group-btn:last-child>.btn-group{margin-right:-1px;margin-left:auto}[dir='rtl'] .nav{padding-right:0;padding-left:initial}[dir='rtl'] .nav-tabs>li{float:right}[dir='rtl'] .nav-tabs>li>a{margin-left:auto;margin-right:-2px;border-radius:4px 4px 0 0}[dir='rtl'] .nav-pills>li{float:right}[dir='rtl'] .nav-pills>li>a{border-radius:4px}[dir='rtl'] .nav-pills>li+li{margin-right:2px;margin-left:auto}[dir='rtl'] .nav-stacked>li{float:none}[dir='rtl'] .nav-stacked>li+li{margin-right:0;margin-left:auto}[dir='rtl'] .nav-justified>.dropdown .dropdown-menu{right:auto}[dir='rtl'] .nav-tabs-justified>li>a{margin-left:0;margin-right:auto}@media (min-width: 768px){[dir='rtl'] .nav-tabs-justified>li>a{border-radius:4px 4px 0 0}}@media (min-width: 768px){[dir='rtl'] .navbar-header{float:right}}[dir='rtl'] .navbar-collapse{padding-right:15px;padding-left:15px}[dir='rtl'] .navbar-brand{float:right}@media (min-width: 768px){[dir='rtl'] .navbar>.container .navbar-brand,[dir='rtl'] .navbar>.container-fluid .navbar-brand{margin-right:-15px;margin-left:auto}}[dir='rtl'] .navbar-toggle{float:left;margin-left:15px;margin-right:auto}@media (max-width: 767px){[dir='rtl'] .navbar-nav .open .dropdown-menu>li>a,[dir='rtl'] .navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 25px 5px 15px}}@media (min-width: 768px){[dir='rtl'] .navbar-nav{float:right}[dir='rtl'] .navbar-nav>li{float:right}}@media (min-width: 768px){[dir='rtl'] .navbar-left.flip{float:right !important}[dir='rtl'] .navbar-right:last-child{margin-left:-15px;margin-right:auto}[dir='rtl'] .navbar-right.flip{float:left !important;margin-left:-15px;margin-right:auto}[dir='rtl'] .navbar-right .dropdown-menu{left:0;right:auto}}@media (min-width: 768px){[dir='rtl'] .navbar-text{float:right}[dir='rtl'] .navbar-text.navbar-right:last-child{margin-left:0;margin-right:auto}}[dir='rtl'] .pagination{padding-right:0}[dir='rtl'] .pagination>li>a,[dir='rtl'] .pagination>li>span{float:right;margin-right:-1px;margin-left:0px}[dir='rtl'] .pagination>li:first-child>a,[dir='rtl'] .pagination>li:first-child>span{margin-left:0;border-bottom-right-radius:4px;border-top-right-radius:4px;border-bottom-left-radius:0;border-top-left-radius:0}[dir='rtl'] .pagination>li:last-child>a,[dir='rtl'] .pagination>li:last-child>span{margin-right:-1px;border-bottom-left-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-top-right-radius:0}[dir='rtl'] .pager{padding-right:0;padding-left:initial}[dir='rtl'] .pager .next>a,[dir='rtl'] .pager .next>span{float:left}[dir='rtl'] .pager .previous>a,[dir='rtl'] .pager .previous>span{float:right}[dir='rtl'] .nav-pills>li>a>.badge{margin-left:0px;margin-right:3px}[dir='rtl'] .list-group-item>.badge{float:left}[dir='rtl'] .list-group-item>.badge+.badge{margin-left:5px;margin-right:auto}[dir='rtl'] .alert-dismissable,[dir='rtl'] .alert-dismissible{padding-left:35px;padding-right:15px}[dir='rtl'] .alert-dismissable .close,[dir='rtl'] .alert-dismissible .close{right:auto;left:-21px}[dir='rtl'] .progress-bar{float:right}[dir='rtl'] .media>.pull-left{margin-right:10px}[dir='rtl'] .media>.pull-left.flip{margin-right:0;margin-left:10px}[dir='rtl'] .media>.pull-right{margin-left:10px}[dir='rtl'] .media>.pull-right.flip{margin-left:0;margin-right:10px}[dir='rtl'] .media-right,[dir='rtl'] .media>.pull-right{padding-right:10px;padding-left:initial}[dir='rtl'] .media-left,[dir='rtl'] .media>.pull-left{padding-left:10px;padding-right:initial}[dir='rtl'] .media-list{padding-right:0;padding-left:initial;list-style:none}[dir='rtl'] .list-group{padding-right:0;padding-left:initial}[dir='rtl'] .panel>.table:first-child>thead:first-child>tr:first-child td:first-child,[dir='rtl'] .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,[dir='rtl'] .panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,[dir='rtl'] .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,[dir='rtl'] .panel>.table:first-child>thead:first-child>tr:first-child th:first-child,[dir='rtl'] .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,[dir='rtl'] .panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,[dir='rtl'] .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-right-radius:3px;border-top-left-radius:0}[dir='rtl'] .panel>.table:first-child>thead:first-child>tr:first-child td:last-child,[dir='rtl'] .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,[dir='rtl'] .panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,[dir='rtl'] .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,[dir='rtl'] .panel>.table:first-child>thead:first-child>tr:first-child th:last-child,[dir='rtl'] .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,[dir='rtl'] .panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,[dir='rtl'] .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-left-radius:3px;border-top-right-radius:0}[dir='rtl'] .panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,[dir='rtl'] .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,[dir='rtl'] .panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,[dir='rtl'] .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,[dir='rtl'] .panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,[dir='rtl'] .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,[dir='rtl'] .panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,[dir='rtl'] .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px;border-top-right-radius:0}[dir='rtl'] .panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,[dir='rtl'] .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,[dir='rtl'] .panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,[dir='rtl'] .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,[dir='rtl'] .panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,[dir='rtl'] .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,[dir='rtl'] .panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,[dir='rtl'] .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px;border-top-left-radius:0}[dir='rtl'] .panel>.table-bordered>thead>tr>th:first-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>thead>tr>th:first-child,[dir='rtl'] .panel>.table-bordered>tbody>tr>th:first-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,[dir='rtl'] .panel>.table-bordered>tfoot>tr>th:first-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,[dir='rtl'] .panel>.table-bordered>thead>tr>td:first-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,[dir='rtl'] .panel>.table-bordered>tbody>tr>td:first-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,[dir='rtl'] .panel>.table-bordered>tfoot>tr>td:first-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-right:0;border-left:none}[dir='rtl'] .panel>.table-bordered>thead>tr>th:last-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>thead>tr>th:last-child,[dir='rtl'] .panel>.table-bordered>tbody>tr>th:last-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,[dir='rtl'] .panel>.table-bordered>tfoot>tr>th:last-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,[dir='rtl'] .panel>.table-bordered>thead>tr>td:last-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,[dir='rtl'] .panel>.table-bordered>tbody>tr>td:last-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,[dir='rtl'] .panel>.table-bordered>tfoot>tr>td:last-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:none;border-left:0}[dir='rtl'] .embed-responsive .embed-responsive-item,[dir='rtl'] .embed-responsive iframe,[dir='rtl'] .embed-responsive embed,[dir='rtl'] .embed-responsive object{right:0;left:auto}[dir='rtl'] .close{float:left}[dir='rtl'] .modal-footer{text-align:left}[dir='rtl'] .modal-footer.flip{text-align:right}[dir='rtl'] .modal-footer .btn+.btn{margin-left:auto;margin-right:5px}[dir='rtl'] .modal-footer .btn-group .btn+.btn{margin-right:-1px;margin-left:auto}[dir='rtl'] .modal-footer .btn-block+.btn-block{margin-right:0;margin-left:auto}[dir='rtl'] .popover{left:auto;text-align:right}[dir='rtl'] .popover.top>.arrow{right:50%;left:auto;margin-right:-11px;margin-left:auto}[dir='rtl'] .popover.top>.arrow:after{margin-right:-10px;margin-left:auto}[dir='rtl'] .popover.bottom>.arrow{right:50%;left:auto;margin-right:-11px;margin-left:auto}[dir='rtl'] .popover.bottom>.arrow:after{margin-right:-10px;margin-left:auto}[dir='rtl'] .carousel-control{right:0;bottom:0}[dir='rtl'] .carousel-control.left{right:auto;left:0;background-image:-webkit-linear-gradient(left, color-stop(rgba(0,0,0,0.5) 0%), color-stop(rgba(0,0,0,0.0001) 100%));background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}[dir='rtl'] .carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, color-stop(rgba(0,0,0,0.0001) 0%), color-stop(rgba(0,0,0,0.5) 100%));background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}[dir='rtl'] .carousel-control .icon-prev,[dir='rtl'] .carousel-control .glyphicon-chevron-left{left:50%;right:auto;margin-right:-10px}[dir='rtl'] .carousel-control .icon-next,[dir='rtl'] .carousel-control .glyphicon-chevron-right{right:50%;left:auto;margin-left:-10px}[dir='rtl'] .carousel-indicators{right:50%;left:0;margin-right:-30%;margin-left:0;padding-left:0}@media screen and (min-width: 768px){[dir='rtl'] .carousel-control .glyphicon-chevron-left,[dir='rtl'] .carousel-control .icon-prev{margin-left:0;margin-right:-15px}[dir='rtl'] .carousel-control .glyphicon-chevron-right,[dir='rtl'] .carousel-control .icon-next{margin-left:0;margin-right:-15px}[dir='rtl'] .carousel-caption{left:20%;right:20%;padding-bottom:30px}}[dir='rtl'] .pull-right.flip{float:left !important}[dir='rtl'] .pull-left.flip{float:right !important}.dijitReset{margin:0;border:0;padding:0;font:inherit;line-height:normal;color:inherit}.dj_a11y .dijitReset{-moz-appearance:none}.dijitInline{display:inline-block;border:0;padding:0;vertical-align:middle}table.dijitInline{display:inline-table;box-sizing:content-box;-moz-box-sizing:content-box}.dijitHidden{position:absolute;visibility:hidden}.dijitHidden *{visibility:hidden !important}.dijitVisible{display:block !important;position:relative;visibility:visible}.dj_ie6 .dijitComboBox .dijitInputContainer,.dijitInputContainer{overflow:hidden;float:none !important;position:relative}.dj_ie7 .dijitInputContainer{float:left !important;clear:left;display:inline-block !important}.dj_ie .dijitSelect input,.dj_ie input.dijitTextBox,.dj_ie .dijitTextBox input{font-size:100%}.dijitSelect .dijitButtonText{float:left;vertical-align:top}TABLE.dijitSelect{padding:0 !important;border-collapse:separate}.dijitTextBox .dijitSpinnerButtonContainer,.dijitTextBox .dijitArrowButtonContainer,.dijitValidationTextBox .dijitValidationContainer{float:right;text-align:center}.dijitSelect input.dijitInputField,.dijitTextBox input.dijitInputField{padding-left:0 !important;padding-right:0 !important}.dijitValidationTextBox .dijitValidationContainer{display:none}.dijitTeeny{font-size:1px;line-height:1px}.dijitOffScreen{position:absolute !important;left:-10000px !important;top:-10000px !important}.dijitPopup{position:absolute;background-color:transparent;margin:0;border:0;padding:0;-webkit-overflow-scrolling:touch}.dijitPositionOnly{padding:0 !important;border:0 !important;background-color:transparent !important;background-image:none !important;height:auto !important;width:auto !important}.dijitNonPositionOnly{float:none !important;position:static !important;margin:0 0 0 0 !important;vertical-align:middle !important}.dijitBackgroundIframe{position:absolute;left:0;top:0;width:100%;height:100%;z-index:-1;border:0;padding:0;margin:0}.dijitDisplayNone{display:none !important}.dijitContainer{overflow:hidden}.dj_a11y .dijitIcon,.dj_a11y div.dijitArrowButtonInner,.dj_a11y span.dijitArrowButtonInner,.dj_a11y img.dijitArrowButtonInner,.dj_a11y .dijitCalendarIncrementControl,.dj_a11y .dijitTreeExpando{display:none}.dijitSpinner div.dijitArrowButtonInner{display:block}.dj_a11y .dijitA11ySideArrow{display:inline !important;cursor:pointer}.dj_a11y .dijitCalendarDateLabel{padding:1px;border:0px !important}.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel{border-style:solid !important;border-width:1px !important;padding:0}.dj_a11y .dijitCalendarDateTemplate{padding-bottom:0.1em !important;border:0px !important}.dj_a11y .dijitButtonNode{border:black outset medium !important;padding:0 !important}.dj_a11y .dijitArrowButton{padding:0 !important}.dj_a11y .dijitButtonContents{margin:0.15em}.dj_a11y .dijitTextBoxReadOnly .dijitInputField,.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode{border-style:outset !important;border-width:medium !important;border-color:#999 !important;color:#999 !important}.dijitButtonNode *{vertical-align:middle}.dijitSelect .dijitArrowButtonInner,.dijitButtonNode .dijitArrowButtonInner{background:no-repeat center;width:12px;height:12px;direction:ltr}.dijitLeft{background-position:left top;background-repeat:no-repeat}.dijitStretch{white-space:nowrap;background-repeat:repeat-x}.dijitRight{background-position:right top;background-repeat:no-repeat}.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode{opacity:0.5}.dijitToggleButton,.dijitButton,.dijitDropDownButton,.dijitComboButton{margin:0.2em;vertical-align:middle}.dijitButtonContents{display:block}td.dijitButtonContents{display:table-cell}.dijitButtonNode img{vertical-align:middle}.dijitToolbar .dijitComboButton{border-collapse:separate}.dijitToolbar .dijitToggleButton,.dijitToolbar .dijitButton,.dijitToolbar .dijitDropDownButton,.dijitToolbar .dijitComboButton{margin:0}.dijitToolbar .dijitButtonContents{padding:1px 2px}.dj_webkit .dijitToolbar .dijitDropDownButton{padding-left:0.3em}.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner{padding:0}.dijitSelect{border:1px solid gray}.dijitButtonNode{border:1px solid gray;margin:0;line-height:normal;vertical-align:middle;text-align:center;white-space:nowrap}.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer{line-height:inherit}.dijitTextBox .dijitButtonNode{border-width:0}.dijitSelect,.dijitSelect *,.dijitButtonNode,.dijitButtonNode *{cursor:pointer;-webkit-tap-highlight-color:transparent}.dj_ie .dijitButtonNode{zoom:1}.dj_ie .dijitButtonNode button{overflow:visible}div.dijitArrowButton{float:right}.dijitTextBox{border:solid black 1px;width:15em;vertical-align:middle}.dijitTextBoxReadOnly,.dijitTextBoxDisabled{color:gray}.dj_safari .dijitTextBoxDisabled input{color:#B0B0B0}.dj_safari textarea.dijitTextAreaDisabled{color:#333}.dj_gecko .dijitTextBoxReadOnly input.dijitInputField,.dj_gecko .dijitTextBoxDisabled input{-moz-user-input:none}.dijitPlaceHolder{color:#AAAAAA;font-style:italic;position:absolute;top:0;left:0;white-space:nowrap;pointer-events:none}.dijitTimeTextBox{width:8em}.dijitTextBox input:focus{outline:none}.dijitTextBoxFocused{outline:5px -webkit-focus-ring-color}.dijitSelect input,.dijitTextBox input{float:left}.dj_ie6 input.dijitTextBox,.dj_ie6 .dijitTextBox input{float:none}.dijitInputInner{border:0 !important;background-color:transparent !important;width:100% !important;padding-left:0 !important;padding-right:0 !important;margin-left:0 !important;margin-right:0 !important}.dj_a11y .dijitTextBox input{margin:0 !important}.dijitValidationTextBoxError input.dijitValidationInner,.dijitSelect input,.dijitTextBox input.dijitArrowButtonInner{text-indent:-2em !important;direction:ltr !important;text-align:left !important;height:auto !important}.dj_ie .dijitSelect input,.dj_ie .dijitTextBox input,.dj_ie input.dijitTextBox{overflow-y:visible;line-height:normal}.dijitSelect .dijitSelectLabel span{line-height:100%}.dj_ie .dijitSelect .dijitSelectLabel{line-height:normal}.dj_ie6 .dijitSelect .dijitSelectLabel,.dj_ie7 .dijitSelect .dijitSelectLabel,.dj_ie8 .dijitSelect .dijitSelectLabel,.dj_iequirks .dijitSelect .dijitSelectLabel,.dijitSelect td,.dj_ie6 .dijitSelect input,.dj_iequirks .dijitSelect input,.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie6 .dijitTextBox input,.dj_ie6 input.dijitTextBox,.dj_iequirks .dijitTextBox input.dijitValidationInner,.dj_iequirks .dijitTextBox input.dijitArrowButtonInner,.dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner,.dj_iequirks .dijitTextBox input.dijitInputInner,.dj_iequirks input.dijitTextBox{line-height:100%}.dj_a11y input.dijitValidationInner,.dj_a11y input.dijitArrowButtonInner{text-indent:0 !important;width:1em !important;color:black !important}.dijitValidationTextBoxError .dijitValidationContainer{display:inline;cursor:default}.dijitSpinner .dijitSpinnerButtonContainer,.dijitComboBox .dijitArrowButtonContainer{border-width:0 0 0 1px !important}.dj_a11y .dijitSelect .dijitArrowButtonContainer,.dijitToolbar .dijitComboBox .dijitArrowButtonContainer{border-width:0 !important}.dijitComboBoxMenu{list-style-type:none}.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode{border-width:0}.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode{clear:both}.dj_ie .dijitToolbar .dijitComboBox{vertical-align:middle}.dijitTextBox .dijitSpinnerButtonContainer{width:1em;position:relative !important;overflow:hidden}.dijitSpinner .dijitSpinnerButtonInner{width:1em;visibility:hidden !important;overflow-x:hidden}.dijitComboBox .dijitButtonNode,.dijitSpinnerButtonContainer .dijitButtonNode{border-width:0}.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode{border-width:0px !important;border-style:solid !important}.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,.dj_a11y .dijitSpinner .dijitArrowButtonInner,.dj_a11y .dijitSpinnerButtonContainer input{width:1em !important}.dj_a11y .dijitSpinner .dijitArrowButtonInner{margin:0 auto !important}.dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField{padding-left:0.3em !important;padding-right:0.3em !important;margin-left:0.3em !important;margin-right:0.3em !important;width:1.4em !important}.dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField{padding-left:0 !important;padding-right:0 !important;width:1em !important}.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField{margin-left:0.1em !important;margin-right:0.1em !important;width:1em !important}.dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField{margin-left:0 !important;margin-right:0 !important;width:2em !important}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton{padding:0;position:absolute !important;right:0;float:none;height:50%;width:100%;bottom:auto;left:0;right:auto}.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton{width:auto}.dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton{overflow:visible !important}.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton{top:50%;border-top-width:1px !important}.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton{top:0}.dijitSpinner .dijitArrowButtonInner{margin:auto;overflow-x:hidden;height:100% !important}.dj_iequirks .dijitSpinner .dijitArrowButtonInner{height:auto !important}.dijitSpinner .dijitArrowButtonInner .dijitInputField{-moz-transform:scale(0.5);-moz-transform-origin:center top;-webkit-transform:scale(0.5);-webkit-transform-origin:center top;-o-transform:scale(0.5);-o-transform-origin:center top;transform:scale(0.5);transform-origin:left top;padding-top:0;padding-bottom:0;padding-left:0 !important;padding-right:0 !important;width:100%;visibility:hidden}.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField{zoom:50%}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner{overflow:hidden}.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton{width:100%}.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton{width:1em}.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField{vertical-align:top;visibility:visible}.dj_a11y .dijitSpinnerButtonContainer{width:1em}.dijitCheckBox,.dijitRadio,.dijitCheckBoxInput{padding:0;border:0;width:16px;height:16px;background-position:center center;background-repeat:no-repeat;overflow:hidden}.dijitCheckBox input,.dijitRadio input{margin:0;padding:0;display:block}.dijitCheckBoxInput{opacity:0}.dj_ie .dijitCheckBoxInput{filter:alpha(opacity=0)}.dj_a11y .dijitCheckBox,.dj_a11y .dijitRadio{width:auto !important;height:auto !important}.dj_a11y .dijitCheckBoxInput{opacity:1;filter:none;width:auto;height:auto}.dj_a11y .dijitFocusedLabel{border:1px dotted;outline:0px !important}.dijitProgressBar{z-index:0}.dijitProgressBarEmpty{position:relative;overflow:hidden;border:1px solid black;z-index:0}.dijitProgressBarFull{position:absolute;overflow:hidden;z-index:-1;top:0;width:100%}.dj_ie6 .dijitProgressBarFull{height:1.6em}.dijitProgressBarTile{position:absolute;overflow:hidden;top:0;left:0;bottom:0;right:0;margin:0;padding:0;width:100%;height:auto;background-color:#aaa;background-attachment:fixed}.dj_a11y .dijitProgressBarTile{border-width:2px;border-style:solid;background-color:transparent !important}.dj_ie6 .dijitProgressBarTile{position:static;height:1.6em}.dijitProgressBarIndeterminateHighContrastImage{display:none}.dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage{display:block;position:absolute;top:0;bottom:0;margin:0;padding:0;width:100%;height:auto}.dijitProgressBarLabel{display:block;position:static;width:100%;text-align:center;background-color:transparent !important}.dijitTooltip{position:absolute;z-index:2000;display:block;left:0;top:-10000px;overflow:visible}.dijitTooltipContainer{border:solid black 2px;background:#b8b5b5;color:black;font-size:small}.dijitTooltipFocusNode{padding:2px 2px 2px 2px}.dijitTooltipConnector{position:absolute}.dj_a11y .dijitTooltipConnector{display:none}.dijitTooltipData{display:none}.dijitLayoutContainer{position:relative;display:block;overflow:hidden}.dijitAlignTop,.dijitAlignBottom,.dijitAlignLeft,.dijitAlignRight{position:absolute;overflow:hidden}body .dijitAlignClient{position:absolute}.dijitBorderContainer,.dijitBorderContainerNoGutter{position:relative;overflow:hidden;z-index:0}.dijitBorderContainerPane,.dijitBorderContainerNoGutterPane{position:absolute !important;z-index:2}.dijitBorderContainer>.dijitTextArea{resize:none}.dijitGutter{position:absolute;font-size:1px}.dijitSplitter{position:absolute;overflow:hidden;z-index:10;background-color:#fff;border-color:gray;border-style:solid;border-width:0}.dj_ie .dijitSplitter{z-index:1}.dijitSplitterActive{z-index:11 !important}.dijitSplitterCover{position:absolute;z-index:-1;top:0;left:0;width:100%;height:100%}.dijitSplitterCoverActive{z-index:3 !important}.dj_ie .dijitSplitterCover{background:white;opacity:0}.dj_ie6 .dijitSplitterCover,.dj_ie7 .dijitSplitterCover,.dj_ie8 .dijitSplitterCover{filter:alpha(opacity=0)}.dijitSplitterH{height:7px;border-top:1px;border-bottom:1px;cursor:row-resize;-webkit-tap-highlight-color:transparent}.dijitSplitterV{width:7px;border-left:1px;border-right:1px;cursor:col-resize;-webkit-tap-highlight-color:transparent}.dijitSplitContainer{position:relative;overflow:hidden;display:block}.dijitSplitPane{position:absolute}.dijitSplitContainerSizerH,.dijitSplitContainerSizerV{position:absolute;font-size:1px;background-color:ThreeDFace;border:1px solid;border-color:ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;margin:0}.dijitSplitContainerSizerH .thumb,.dijitSplitterV .dijitSplitterThumb{overflow:hidden;position:absolute;top:49%}.dijitSplitContainerSizerV .thumb,.dijitSplitterH .dijitSplitterThumb{position:absolute;left:49%}.dijitSplitterShadow,.dijitSplitContainerVirtualSizerH,.dijitSplitContainerVirtualSizerV{font-size:1px;background-color:ThreeDShadow;-moz-opacity:0.5;opacity:0.5;filter:Alpha(Opacity=50);margin:0}.dijitSplitContainerSizerH,.dijitSplitContainerVirtualSizerH{cursor:col-resize}.dijitSplitContainerSizerV,.dijitSplitContainerVirtualSizerV{cursor:row-resize}.dj_a11y .dijitSplitterH{border-top:1px solid #d3d3d3 !important;border-bottom:1px solid #d3d3d3 !important}.dj_a11y .dijitSplitterV{border-left:1px solid #d3d3d3 !important;border-right:1px solid #d3d3d3 !important}.dijitContentPane{display:block;overflow:auto;-webkit-overflow-scrolling:touch}.dijitContentPaneSingleChild{overflow:hidden}.dijitContentPaneLoading .dijitIconLoading,.dijitContentPaneError .dijitIconError{margin-right:9px}.dijitTitlePane{display:block;overflow:hidden}.dijitFieldset{border:1px solid gray}.dijitTitlePaneTitle,.dijitFieldsetTitle{cursor:pointer;-webkit-tap-highlight-color:transparent}.dijitTitlePaneTitleFixedOpen,.dijitTitlePaneTitleFixedClosed,.dijitFieldsetTitleFixedOpen,.dijitFieldsetTitleFixedClosed{cursor:default}.dijitTitlePaneTitle *{vertical-align:middle}.dijitTitlePane .dijitArrowNodeInner,.dijitFieldset .dijitArrowNodeInner{display:none}.dj_a11y .dijitTitlePane .dijitArrowNodeInner,.dj_a11y .dijitFieldset .dijitArrowNodeInner{display:inline;font-family:monospace}.dj_a11y .dijitTitlePane .dijitArrowNode,.dj_a11y .dijitFieldset .dijitArrowNode{display:none}.dijitTitlePaneTitleFixedOpen .dijitArrowNode,.dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner,.dijitTitlePaneTitleFixedClosed .dijitArrowNode,.dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner,.dijitFieldsetTitleFixedOpen .dijitArrowNode,.dijitFieldsetTitleFixedOpen .dijitArrowNodeInner,.dijitFieldsetTitleFixedClosed .dijitArrowNode,.dijitFieldsetTitleFixedClosed .dijitArrowNodeInner{display:none !important}.dj_ie6 .dijitTitlePaneContentOuter,.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle{zoom:1}.dijitColorPalette{border:1px solid #999;background:#fff;position:relative}.dijitColorPalette .dijitPaletteTable{padding:2px 3px 3px 3px;position:relative;overflow:hidden;outline:0;border-collapse:separate}.dj_ie6 .dijitColorPalette .dijitPaletteTable,.dj_ie7 .dijitColorPalette .dijitPaletteTable,.dj_iequirks .dijitColorPalette .dijitPaletteTable{padding:0;margin:2px 3px 3px 3px}.dijitColorPalette .dijitPaletteCell{font-size:1px;vertical-align:middle;text-align:center;background:none}.dijitColorPalette .dijitPaletteImg{padding:1px;border:1px solid #999;margin:2px 1px;cursor:default;font-size:1px}.dj_gecko .dijitColorPalette .dijitPaletteImg{padding-bottom:0}.dijitColorPalette .dijitColorPaletteSwatch{width:14px;height:12px}.dijitPaletteTable td{padding:0}.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg{border:1px solid #000}.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg{border:2px solid #000;margin:1px 0}.dj_a11y .dijitColorPalette .dijitPaletteTable,.dj_a11y .dijitColorPalette .dijitPaletteTable *{background-color:transparent !important}.dijitAccordionContainer{border:1px solid #b7b7b7;border-top:0 !important}.dijitAccordionTitle{cursor:pointer;-webkit-tap-highlight-color:transparent}.dijitAccordionTitleSelected{cursor:default}.dijitAccordionTitle .arrowTextUp,.dijitAccordionTitle .arrowTextDown{display:none;font-size:0.65em;font-weight:normal !important}.dj_a11y .dijitAccordionTitle .arrowTextUp,.dj_a11y .dijitAccordionTitleSelected .arrowTextDown{display:inline}.dj_a11y .dijitAccordionTitleSelected .arrowTextUp{display:none}.dijitAccordionChildWrapper{overflow:hidden}.dijitCalendarContainer table{width:auto;clear:both}.dijitCalendarContainer th,.dijitCalendarContainer td{padding:0;vertical-align:middle}.dijitCalendarMonthContainer{text-align:center}.dijitCalendarDecrementArrow{float:left}.dijitCalendarIncrementArrow{float:right}.dijitCalendarYearLabel{white-space:nowrap}.dijitCalendarNextYear{margin:0 0 0 0.55em}.dijitCalendarPreviousYear{margin:0 0.55em 0 0}.dijitCalendarIncrementControl{vertical-align:middle}.dijitCalendarIncrementControl,.dijitCalendarDateTemplate,.dijitCalendarMonthLabel,.dijitCalendarPreviousYear,.dijitCalendarNextYear{cursor:pointer;-webkit-tap-highlight-color:transparent}.dijitCalendarDisabledDate{color:gray;text-decoration:line-through;cursor:default}.dijitSpacer{position:relative;height:1px;overflow:hidden;visibility:hidden}.dijitCalendarMonthMenu .dijitCalendarMonthLabel{text-align:center}.dijitMenu{border:1px solid black;background-color:white}.dijitMenuTable{border-collapse:collapse;border-width:0;background-color:white}.dj_webkit .dijitMenuTable td[colspan="2"]{border-right:hidden}.dijitMenuItem{text-align:left;white-space:nowrap;padding:.1em .2em;cursor:pointer;-webkit-tap-highlight-color:transparent}.dijitMenuItem:focus{outline:none}.dijitMenuPassive .dijitMenuItemHover,.dijitMenuItemSelected{background-color:black;color:white}.dijitMenuItemIcon,.dijitMenuExpand{background-repeat:no-repeat}.dijitMenuItemDisabled *{opacity:0.5;cursor:default}.dj_ie .dj_a11y .dijitMenuItemDisabled,.dj_ie .dj_a11y .dijitMenuItemDisabled *,.dj_ie .dijitMenuItemDisabled *{color:gray;filter:alpha(opacity=35)}.dijitMenuItemLabel{vertical-align:middle}.dj_a11y .dijitMenuItemSelected{border:1px dotted black !important}.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel{border-width:1px;border-style:solid}.dj_ie8 .dj_a11y .dijitMenuItemLabel{position:static}.dijitMenuExpandA11y{display:none}.dj_a11y .dijitMenuExpandA11y{display:inline}.dijitMenuSeparator td{border:0;padding:0}.dijitMenuSeparatorTop{height:50%;margin:0;margin-top:3px;font-size:1px}.dijitMenuSeparatorBottom{height:50%;margin:0;margin-bottom:3px;font-size:1px}.dijitMenuItemIconChar{display:none;visibility:hidden}.dj_a11y .dijitMenuItemIconChar{display:inline}.dijitCheckedMenuItemChecked .dijitMenuItemIconChar,.dijitRadioMenuItemChecked .dijitMenuItemIconChar{visibility:visible}.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem{margin:0}.dijitStackController .dijitToggleButtonChecked *{cursor:default}.dijitTabContainer{z-index:0;overflow:visible}.dj_ie6 .dijitTabContainer{overflow:hidden}.dijitTabContainerNoLayout{width:100%}.dijitTabContainerBottom-tabs,.dijitTabContainerTop-tabs,.dijitTabContainerLeft-tabs,.dijitTabContainerRight-tabs{z-index:1;overflow:visible !important}.dijitTabController{z-index:1}.dijitTabContainerBottom-container,.dijitTabContainerTop-container,.dijitTabContainerLeft-container,.dijitTabContainerRight-container{z-index:0;overflow:hidden;border:1px solid black}.nowrapTabStrip{width:50000px;display:block;position:relative;text-align:left;z-index:1}.dijitTabListWrapper{overflow:hidden;z-index:1}.dj_a11y .tabStripButton img{display:none}.dijitTabContainerTop-tabs{border-bottom:1px solid black}.dijitTabContainerTop-container{border-top:0}.dijitTabContainerLeft-tabs{border-right:1px solid black;float:left}.dijitTabContainerLeft-container{border-left:0}.dijitTabContainerBottom-tabs{border-top:1px solid black}.dijitTabContainerBottom-container{border-bottom:0}.dijitTabContainerRight-tabs{border-left:1px solid black;float:left}.dijitTabContainerRight-container{border-right:0}div.dijitTabDisabled,.dj_ie div.dijitTabDisabled{cursor:auto}.dijitTab{position:relative;cursor:pointer;-webkit-tap-highlight-color:transparent;white-space:nowrap;z-index:3}.dijitTab *{vertical-align:middle}.dijitTabChecked{cursor:default}.dijitTabContainerTop-tabs .dijitTab{top:1px}.dijitTabContainerBottom-tabs .dijitTab{top:-1px}.dijitTabContainerLeft-tabs .dijitTab{left:1px}.dijitTabContainerRight-tabs .dijitTab{left:-1px}.dijitTabContainerTop-tabs .dijitTab,.dijitTabContainerBottom-tabs .dijitTab{display:inline-block}.tabStripButton{z-index:12}.dijitTabButtonDisabled .tabStripButton{display:none}.dijitTabCloseButton{margin-left:1em}.dijitTabCloseText{display:none}.dijitTab .tabLabel{min-height:15px;display:inline-block}.dijitNoIcon{display:none}.dj_ie6 .dijitTab .dijitNoIcon{display:inline;height:15px;width:1px}.dj_a11y .dijitTabCloseButton{background-image:none !important;width:auto !important;height:auto !important}.dj_a11y .dijitTabCloseText{display:inline}.dijitTabPane,.dijitStackContainer-child,.dijitAccordionContainer-child{border:none !important}.dijitInlineEditBoxDisplayMode{border:1px solid transparent;cursor:text}.dj_a11y .dijitInlineEditBoxDisplayMode,.dj_ie6 .dijitInlineEditBoxDisplayMode{border:none}.dijitInlineEditBoxDisplayModeHover,.dj_a11y .dijitInlineEditBoxDisplayModeHover,.dj_ie6 .dijitInlineEditBoxDisplayModeHover{background-color:#e2ebf2;border:solid 1px black}.dijitInlineEditBoxDisplayModeDisabled{cursor:default}.dijitTree{overflow:auto;-webkit-tap-highlight-color:transparent}.dijitTreeContainer{float:left}.dijitTreeIndent{width:19px}.dijitTreeRow,.dijitTreeContent{white-space:nowrap}.dj_ie .dijitTreeLabel:focus{outline:1px dotted black}.dijitTreeRow img{vertical-align:middle}.dijitTreeContent{cursor:default}.dijitExpandoText{display:none}.dj_a11y .dijitExpandoText{display:inline;padding-left:10px;padding-right:10px;font-family:monospace;border-style:solid;border-width:thin;cursor:pointer}.dijitTreeLabel{margin:0 4px}.dijitDialog{position:absolute;z-index:999;overflow:hidden}.dijitDialogTitleBar{cursor:move}.dijitDialogFixed .dijitDialogTitleBar{cursor:default}.dijitDialogCloseIcon{cursor:pointer;-webkit-tap-highlight-color:transparent}.dijitDialogPaneContent{-webkit-overflow-scrolling:touch}.dijitDialogUnderlayWrapper{position:absolute;left:0;top:0;z-index:998;display:none;background:transparent !important}.dijitDialogUnderlay{background:#eee;opacity:0.5}.dj_ie .dijitDialogUnderlay{filter:alpha(opacity=50)}.dj_a11y .dijitSpinnerButtonContainer,.dj_a11y .dijitDialog{opacity:1 !important;background-color:white !important}.dijitDialog .closeText{display:none;position:absolute}.dj_a11y .dijitDialog .closeText{display:inline}.dijitSliderMoveable{z-index:99;position:absolute !important;display:block;vertical-align:middle}.dijitSliderMoveableH{right:0}.dijitSliderMoveableV{right:50%}.dj_a11y div.dijitSliderImageHandle,.dijitSliderImageHandle{margin:0;padding:0;position:relative !important;border:8px solid gray;width:0;height:0;cursor:pointer;-webkit-tap-highlight-color:transparent}.dj_iequirks .dj_a11y .dijitSliderImageHandle{font-size:0}.dj_ie7 .dijitSliderImageHandle{overflow:hidden}.dj_ie7 .dj_a11y .dijitSliderImageHandle{overflow:visible}.dj_a11y .dijitSliderFocused .dijitSliderImageHandle{border:4px solid #000;height:8px;width:8px}.dijitSliderImageHandleV{top:-8px;right:-50%}.dijitSliderImageHandleH{left:50%;top:-5px;vertical-align:top}.dijitSliderBar{border-style:solid;border-color:black;cursor:pointer;-webkit-tap-highlight-color:transparent}.dijitSliderBarContainerV{position:relative;height:100%;z-index:1}.dijitSliderBarContainerH{position:relative;z-index:1}.dijitSliderBarH{height:4px;border-width:1px 0}.dijitSliderBarV{width:4px;border-width:0 1px}.dijitSliderProgressBar{background-color:red;z-index:1}.dijitSliderProgressBarV{position:static !important;height:0;vertical-align:top;text-align:left}.dijitSliderProgressBarH{position:absolute !important;width:0;vertical-align:middle;overflow:visible}.dijitSliderRemainingBar{overflow:hidden;background-color:transparent;z-index:1}.dijitSliderRemainingBarV{height:100%;text-align:left}.dijitSliderRemainingBarH{width:100% !important}.dijitSliderBumper{overflow:hidden;z-index:1}.dijitSliderBumperV{width:4px;height:8px;border-width:0 1px}.dijitSliderBumperH{width:8px;height:4px;border-width:1px 0}.dijitSliderBottomBumper,.dijitSliderLeftBumper{background-color:red}.dijitSliderTopBumper,.dijitSliderRightBumper{background-color:transparent}.dijitSliderDecoration{text-align:center}.dijitSliderDecorationC,.dijitSliderDecorationV{position:relative}.dijitSliderDecorationH{width:100%}.dijitSliderDecorationV{height:100%;white-space:nowrap}.dijitSliderButton{font-family:monospace;margin:0;padding:0;display:block}.dj_a11y .dijitSliderButtonInner{visibility:visible !important}.dijitSliderButtonContainer{text-align:center;height:0}.dijitSliderButtonContainer *{cursor:pointer;-webkit-tap-highlight-color:transparent}.dijitSlider .dijitButtonNode{padding:0;display:block}.dijitRuleContainer{position:relative;overflow:visible}.dijitRuleContainerV{height:100%;line-height:0;float:left;text-align:left}.dj_opera .dijitRuleContainerV{line-height:2%}.dj_ie .dijitRuleContainerV{line-height:normal}.dj_gecko .dijitRuleContainerV{margin:0 0 1px 0}.dijitRuleMark{position:absolute;border:1px solid black;line-height:0;height:100%}.dijitRuleMarkH{width:0;border-top-width:0 !important;border-bottom-width:0 !important;border-left-width:0 !important}.dijitRuleLabelContainer{position:absolute}.dijitRuleLabelContainerH{text-align:center;display:inline-block}.dijitRuleLabelH{position:relative;left:-50%}.dijitRuleLabelV{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dijitRuleMarkV{height:0;border-right-width:0 !important;border-bottom-width:0 !important;border-left-width:0 !important;width:100%;left:0}.dj_ie .dijitRuleLabelContainerV{margin-top:-.55em}.dj_a11y .dijitSliderReadOnly,.dj_a11y .dijitSliderDisabled{opacity:0.6}.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar{filter:alpha(opacity=40)}.dj_a11y .dijitSlider .dijitSliderButtonContainer div{font-family:monospace;font-size:1em;line-height:1em;height:auto;width:auto;margin:0 4px}.dj_a11y .dijitButtonContents .dijitButtonText,.dj_a11y .dijitTab .tabLabel{display:inline !important}.dj_a11y .dijitSelect .dijitButtonText{display:inline-block !important}.dijitTextArea{width:100%;overflow-y:auto}.dijitTextArea[cols]{width:auto}.dj_ie .dijitTextAreaCols{width:auto}.dijitExpandingTextArea{resize:none}.dijitToolbarSeparator{height:18px;width:5px;padding:0 1px;margin:0}.dijitIEFixedToolbar{position:absolute;top:expression(eval((document.documentElement||document.body).scrollTop))}.dijitEditor{display:block}.dijitEditorDisabled,.dijitEditorReadOnly{color:gray}.dijitTimePicker{background-color:white}.dijitTimePickerItem{cursor:pointer;-webkit-tap-highlight-color:transparent}.dijitTimePickerItemHover{background-color:gray;color:white}.dijitTimePickerItemSelected{font-weight:bold;color:#333;background-color:#b7cdee}.dijitTimePickerItemDisabled{color:gray;text-decoration:line-through}.dijitTimePickerItemInner{text-align:center;border:0;padding:2px 8px 2px 8px}.dijitTimePickerTick,.dijitTimePickerMarker{border-bottom:1px solid gray}.dijitTimePicker .dijitDownArrowButton{border-top:none !important}.dijitTimePickerTick{color:#CCC}.dijitTimePickerMarker{color:black;background-color:#CCC}.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner{border:solid 4px black}.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner{border:dashed 4px black}.dijitToggleButtonIconChar{display:none !important}.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar{display:inline !important;visibility:hidden}.dj_ie6 .dijitToggleButtonIconChar,.dj_ie6 .tabStripButton .dijitButtonText{font-family:"Arial Unicode MS"}.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar{display:inline !important;visibility:visible !important}.dijitArrowButtonChar{display:none !important}.dj_a11y .dijitArrowButtonChar{display:inline !important}.dj_a11y .dijitDropDownButton .dijitArrowButtonInner,.dj_a11y .dijitComboButton .dijitArrowButtonInner{display:none !important}.dj_a11y .dijitSelect{border-collapse:separate !important;border-width:1px;border-style:solid}.dj_ie .dijitSelect{vertical-align:middle}.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie8 .dijitSelect .dijitButtonText{vertical-align:top}.dj_ie6 .dijitTextBox .dijitInputContainer,.dj_iequirks .dijitTextBox .dijitInputContainer,.dj_ie6 .dijitTextBox .dijitArrowButtonInner,.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,.dijitSelect .dijitSelectLabel{vertical-align:baseline}.dijitNumberTextBox{text-align:left;direction:ltr}.dijitNumberTextBox .dijitInputInner{text-align:inherit}.dijitNumberTextBox input.dijitInputInner,.dijitCurrencyTextBox input.dijitInputInner,.dijitSpinner input.dijitInputInner{text-align:right}.dj_ie8 .dijitNumberTextBox input.dijitInputInner,.dj_ie9 .dijitNumberTextBox input.dijitInputInner,.dj_ie8 .dijitCurrencyTextBox input.dijitInputInner,.dj_ie9 .dijitCurrencyTextBox input.dijitInputInner,.dj_ie8 .dijitSpinner input.dijitInputInner,.dj_ie9 .dijitSpinner input.dijitInputInner{padding-right:1px !important}.dijitToolbar .dijitSelect{margin:0}.dj_webkit .dijitToolbar .dijitSelect{padding-left:0.3em}.dijitSelect .dijitButtonContents{padding:0;white-space:nowrap;text-align:left;border-style:none solid none none;border-width:1px}.dijitSelectFixedWidth .dijitButtonContents{width:100%}.dijitSelectMenu .dijitMenuItemIcon{display:none}.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel{position:static}.dijitSelectLabel *{vertical-align:baseline}.dijitSelectSelectedOption *{font-weight:bold}.dijitSelectMenu{border-width:1px}.dijitForceStatic{position:static !important}.dijitReadOnly *,.dijitDisabled *,.dijitReadOnly,.dijitDisabled{cursor:default}.dojoDndItem{padding:2px;-webkit-touch-callout:none;-webkit-user-select:none}.dojoDndHorizontal .dojoDndItem{display:inline-block}.dojoDndItemBefore,.dojoDndItemAfter{border:0px solid #369}.dojoDndItemBefore{border-width:2px 0 0 0;padding:0 2px 2px 2px}.dojoDndItemAfter{border-width:0 0 2px 0;padding:2px 2px 0 2px}.dojoDndHorizontal .dojoDndItemBefore{border-width:0 0 0 2px;padding:2px 2px 2px 0}.dojoDndHorizontal .dojoDndItemAfter{border-width:0 2px 0 0;padding:2px 0 2px 2px}.dojoDndItemOver{cursor:pointer}.dj_gecko .dijitArrowButtonInner INPUT,.dj_gecko INPUT.dijitArrowButtonInner{-moz-user-focus:ignore}.dijitFocused .dijitMenuItemShortcutKey{text-decoration:underline}.dijitBorderContainer{height:350px}.dijitTooltipContainer{background:#fff;border:1px solid #ccc;border-radius:6px}.dijitContentPane{box-sizing:content-box;overflow:auto !important}.mx-dataview-content,.mx-scrollcontainer-wrapper:not(.mx-scrollcontainer-nested),.mx-tabcontainer-content,.mx-grid-content{-webkit-overflow-scrolling:touch}html,body,#content{height:100%}#content>.mx-page{width:100%;min-height:100%}.mx-left-aligned{text-align:left}.mx-right-aligned{text-align:right}.mx-center-aligned{text-align:center}.mx-table{width:100%}.mx-table th,.mx-table td{padding:8px;vertical-align:top}.mx-table th.nopadding,.mx-table td.nopadding{padding:0}.mx-offscreen{position:relative;height:0;overflow:hidden}.mx-ie-event-shield{position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1}.mx-swipe-navigation-progress{position:absolute;height:54px;width:54px;top:calc(50% - 27px);left:calc(50% - 27px);background:url(data:image/gif;base64,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)}input[type="checkbox"]{margin:9px 0}.mx-checkbox input[type="checkbox"]{margin-left:0;margin-right:8px;position:static}.form-vertical .form-group.mx-checkbox input[type="checkbox"]{display:block}.form-vertical .form-group.mx-checkbox.label-after input[type="checkbox"]{display:inline-block}.form-horizontal .form-group.no-columns{padding-left:15px;padding-right:15px}.mx-radiobuttons.inline .radio{display:inline-block;margin-right:20px}.mx-radiobuttons .radio input[type="radio"]{position:static;margin-right:8px;margin-left:0}.mx-radiobuttons .radio label{padding-left:0}.alert{margin-top:8px;margin-bottom:10px;white-space:pre-line}.mx-compound-control{display:flex}.mx-compound-control button{margin-left:5px}[dir="rtl"] .mx-compound-control button{margin-left:0;margin-right:5px}.mx-tooltip{margin:10px}.mx-tooltip-content{width:400px;overflow-y:auto}.mx-tooltip-prepare{height:24px;padding:8px;background:transparent url(data:image/gif;base64,R0lGODlhGAAYAMQdAKXZ8nfF64TL7QuX3Fe45zaq4hOb3fL6/fr9/rri9dXt+ZrU8Cym4Umy5cHl9uPz+2K86Oj1/Nzw+rDd9M3q+JDQ72rA6iOi3+34/ECu48jo9x2f3gWV2////wAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUJFNkU4NEZCNEVDMTFFODk3MDBBNUU1RUM4Qjg3QTUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RUJFNkU4NTBCNEVDMTFFODk3MDBBNUU1RUM4Qjg3QTUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFQkU2RTg0REI0RUMxMUU4OTcwMEE1RTVFQzhCODdBNSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFQkU2RTg0RUI0RUMxMUU4OTcwMEE1RTVFQzhCODdBNSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6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) no-repeat scroll center center}.mx-tooltip-content .table th,.mx-tooltip-content .table td{padding:2px 8px}.mx-tabcontainer-pane{height:100%}.mx-tabcontainer-content.loading{min-height:48px;background:url(data:image/gif;base64,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) no-repeat center center;background-size:32px 32px}.mx-tabcontainer-tabs{margin-bottom:8px}.mx-tabcontainer-tabs li{position:relative}.mx-tabcontainer-indicator{position:absolute;background:#f2dede;border-radius:8px;color:#b94a48;top:0px;right:-5px;width:16px;height:16px;line-height:16px;text-align:center;vertical-align:middle;font-size:10px;font-weight:600;z-index:1}.mx-grid{padding:8px;overflow:hidden}.mx-grid-controlbar,.mx-grid-searchbar{display:flex;justify-content:space-between;flex-wrap:wrap}.mx-grid-controlbar .mx-button,.mx-grid-search-controls .mx-button{margin-bottom:8px}.mx-grid-search-controls .mx-button+.mx-button,.mx-grid-controlbar .mx-button+.mx-button{margin-left:0.3em}[dir="rtl"] .mx-grid-search-controls .mx-button+.mx-button,[dir="rtl"] .mx-grid-controlbar .mx-button+.mx-button{margin-left:0;margin-right:0.3em}.mx-grid-pagingbar,.mx-grid-search-controls{display:flex;white-space:nowrap;align-items:baseline;margin-left:auto}.mx-grid-toolbar,.mx-grid-search-inputs{margin-right:5px;flex:1}[dir="rtl"] .mx-grid-toolbar,[dir="rtl"] .mx-grid-search-inputs{margin-left:5px;margin-right:0px}[dir="rtl"] .mx-grid-pagingbar,[dir="rtl"] .mx-grid-search-controls{margin-left:0px;margin-right:auto}.mx-grid-paging-status{padding:0 8px 5px}.mx-grid-search-item{display:inline-block;vertical-align:top;margin-bottom:8px}.mx-grid-search-label{width:110px;padding:0 5px;text-align:right;display:inline-block;vertical-align:top;overflow:hidden}[dir="rtl"] .mx-grid-search-label{text-align:left}.mx-grid-search-input{width:150px;padding:0 5px;display:inline-block;vertical-align:top}.mx-grid-search-message{flex-basis:100%}.mx-dataview .mx-grid{border:1px solid #ddd;border-radius:3px}.mx-calendar{z-index:1000}.mx-calendar-month-dropdown-options{position:absolute}.mx-calendar,.mx-calendar-month-dropdown{user-select:none}.mx-calendar-month-current{display:inline-block}.mx-calendar-month-spacer{position:relative;height:0px;overflow:hidden;visibility:hidden}.mx-calendar,.mx-calendar-month-dropdown-options{border:1px solid lightgrey;background-color:white}.mx-datagrid tr{cursor:pointer}.mx-datagrid tr.mx-datagrid-row-empty{cursor:default}.mx-datagrid table{width:100%;max-width:100%;table-layout:fixed;margin-bottom:0}.mx-datagrid th,.mx-datagrid td{padding:8px;line-height:1.42857143;vertical-align:bottom;border:1px solid #ddd}.mx-datagrid th{position:relative;border-bottom-width:2px}.mx-datagrid-head-caption{overflow:hidden;white-space:nowrap}.mx-datagrid-sort-icon{float:right;padding-left:5px}[dir="rtl"] .mx-datagrid-sort-icon{float:left;padding:0 5px 0 0}.mx-datagrid-column-resizer{position:absolute;top:0;left:-6px;width:10px;height:100%;cursor:col-resize}[dir="rtl"] .mx-datagrid-column-resizer{left:auto;right:-6px}.mx-datagrid tbody tr:first-child td{border-top:none}.mx-datagrid tbody .selected td{background-color:#eee}.mx-datagrid-data-wrapper{overflow:hidden;white-space:nowrap}.mx-datagrid tbody img{max-width:16px;max-height:16px}.mx-datagrid input,.mx-datagrid select,.mx-datagrid textarea{cursor:auto}.mx-datagrid tfoot th,.mx-datagrid tfoot td{padding:3px 8px}.mx-datagrid tfoot th{border-top:1px solid #ddd}.mx-datagrid.mx-content-loading .mx-content-loader{display:inline-block;width:90%;animation:placeholderGradient 1s linear infinite;border-radius:4px;background:#F5F5F5;background:repeating-linear-gradient(to right, #f5f5f5 0%, #f5f5f5 5%, #F9F9F9 50%, #f5f5f5 95%, #f5f5f5 100%);background-size:200px 100px;animation-fill-mode:both}@keyframes placeholderGradient{0%{background-position:100px 0}100%{background-position:-100px 0}}.mx-datagrid-table-resizing th,.mx-datagrid-table-resizing td{cursor:col-resize !important}.mx-templategrid-content-wrapper{display:table;width:100%;border-collapse:collapse;box-sizing:border-box}.mx-templategrid-row{display:table-row}.mx-templategrid-item{padding:5px;display:table-cell;border:1px solid #ddd;cursor:pointer;box-sizing:border-box}.mx-templategrid-empty{display:table-cell}.mx-templategrid-item.selected{background-color:#f5f5f5}.mx-templategrid-item .mx-table th,.mx-templategrid-item .mx-table td{padding:2px 8px}.mx-scrollcontainer-horizontal{width:100%;display:table;table-layout:fixed}.mx-scrollcontainer-horizontal>div{display:table-cell;vertical-align:top}.mx-scrollcontainer-nested{padding:0}.mx-scrollcontainer-fixed>.mx-scrollcontainer-middle>.mx-scrollcontainer-wrapper,.mx-scrollcontainer-fixed>.mx-scrollcontainer-left>.mx-scrollcontainer-wrapper,.mx-scrollcontainer-fixed>.mx-scrollcontainer-center>.mx-scrollcontainer-wrapper,.mx-scrollcontainer-fixed>.mx-scrollcontainer-right>.mx-scrollcontainer-wrapper{overflow:auto}.mx-scrollcontainer-move-in{transition:left 250ms ease-out}.mx-scrollcontainer-move-out{transition:left 250ms ease-in}.mx-scrollcontainer-shrink .mx-scrollcontainer-toggleable{transition-property:width}.mx-scrollcontainer-toggleable{background-color:#fff}.mx-scrollcontainer-push{position:relative}.mx-scrollcontainer-shrink>.mx-scrollcontainer-toggleable{overflow:hidden}.mx-scrollcontainer-push.mx-scrollcontainer-open>div,.mx-scrollcontainer-slide.mx-scrollcontainer-open>div{pointer-events:none}.mx-scrollcontainer-push.mx-scrollcontainer-open>.mx-scrollcontainer-toggleable,.mx-scrollcontainer-slide.mx-scrollcontainer-open>.mx-scrollcontainer-toggleable{pointer-events:auto}.mx-navbar-item img,.mx-navbar-subitem img{height:16px}.mx-navigationtree .navbar-inner{padding-left:0;padding-right:0}.mx-navigationtree ul{list-style:none}.mx-navigationtree ul li{border-bottom:1px solid #dfe6ea}.mx-navigationtree li:last-child{border-style:none}.mx-navigationtree a{display:block;padding:5px 10px;color:#777;text-shadow:0 1px 0 #fff;text-decoration:none}.mx-navigationtree a.active{color:#FFF;text-shadow:none;background:#3498DB;border-radius:3px}.mx-navigationtree .mx-navigationtree-collapsed ul{display:none}.mx-navigationtree ul{margin:0;padding:0}.mx-navigationtree ul li{padding:5px 0}.mx-navigationtree ul li ul{padding:0;margin-left:10px}.mx-navigationtree ul li ul li{margin-left:8px;padding:5px 0}[dir="rtl"] .mx-navigationtree ul li ul li{margin-left:auto;margin-right:8px}.mx-navigationtree ul li ul li ul li{font-size:10px;padding-top:3px;padding-bottom:3px}.mx-navigationtree ul li ul li ul li img{vertical-align:top}.mx-link img,.mx-button img{height:16px}.mx-link{padding:6px 12px;display:inline-block}.mx-groupbox{margin-bottom:10px}.mx-groupbox-header{margin:0;padding:10px 15px;color:#eee;background:#333;font-size:inherit;line-height:inherit;border-radius:4px 4px 0 0}.mx-groupbox-collapsible>.mx-groupbox-header{cursor:pointer}.mx-groupbox.collapsed>.mx-groupbox-header{border-radius:4px}.mx-groupbox-body{padding:8px;border:1px solid #ddd;border-radius:4px}.mx-groupbox.collapsed>.mx-groupbox-body{display:none}.mx-groupbox-header+.mx-groupbox-body{border-top:none;border-radius:0 0 4px 4px}.mx-groupbox-collapse-icon{float:right}[dir="rtl"] .mx-groupbox-collapse-icon{float:left}.mx-dataview{position:relative}.mx-dataview-controls{padding:19px 20px 12px;background-color:#f5f5f5;border-top:1px solid #eee}.mx-dataview-controls .mx-button{margin-bottom:8px}.mx-dataview-controls .mx-button+.mx-button{margin-left:0.3em}.mx-dataview-message{background:#fff;position:absolute;top:0;right:0;bottom:0;left:0}.mx-dataview-message>div{display:table;width:100%;height:100%}.mx-dataview-message>div>p{display:table-cell;text-align:center;vertical-align:middle}.mx-window-view .mx-window-body{padding:0}.mx-window-view .mx-window-body>.mx-dataview>.mx-dataview-content,.mx-window-view .mx-window-body>.mx-placeholder>.mx-dataview>.mx-dataview-content{padding:15px}.mx-window-view .mx-window-body>.mx-dataview>.mx-dataview-controls,.mx-window-view .mx-window-body>.mx-placeholder>.mx-dataview>.mx-dataview-controls{border-radius:0px 0px 6px 6px}.mx-dialog{position:fixed;left:auto;right:auto;padding:0;width:500px;margin:0}.mx-dialog-header{cursor:move}.mx-dialog-body{overflow:auto}.mx-window{position:fixed;left:auto;right:auto;padding:0;width:600px;margin:0}.mx-window-content{height:100%;overflow:hidden}.mx-window-active .mx-window-header{background-color:#f5f5f5;border-radius:6px 6px 0 0}.mx-window-header{cursor:move}.mx-window-body{overflow:auto}.mx-dropdown-list *{cursor:pointer}.mx-dropdown-list img{width:35px;vertical-align:middle;margin-right:10px}[dir="rtl"] .mx-dropdown-list img{margin-left:10px;margin-right:auto}.mx-dropdown-list{padding:0;list-style:none}.mx-dropdown-list>li{padding:5px 10px 10px;border:1px #ddd;border-style:solid solid none;background-color:#fff}.mx-dropdown-list>li:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.mx-dropdown-list>li:last-child{border-bottom-style:solid;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.mx-dropdown-list-striped>li:nth-child(2n+1){background:#f9f9f9}.mx-dropdown-list>li:hover{background:#f5f5f5}.mx-header{position:relative;padding:9px;background:#333;text-align:center}.mx-header-center{display:inline-block;color:#eee;line-height:30px}body[dir="ltr"] .mx-header-left,body[dir="rtl"] .mx-header-right{position:absolute;top:9px;left:9px}body[dir="ltr"] .mx-header-right,body[dir="rtl"] .mx-header-left{position:absolute;top:9px;right:9px}.mx-title{margin-bottom:0px;margin-top:0px}.mx-listview{padding:8px}.mx-listview>ul{padding:0px;list-style:none}.mx-listview-clickable>ul>li{cursor:pointer}.mx-listview-empty{color:#999;text-align:center}.mx-listview .mx-listview-loading{padding:10px;line-height:0;text-align:center}.mx-listview-searchbar{display:flex;margin-bottom:10px}.mx-listview-searchbar>input{width:100%}.mx-listview-searchbar>button{margin-left:5px}[dir="rtl"] .mx-listview-searchbar>button{margin-left:0;margin-right:5px}.mx-listview-selection{display:table-cell;vertical-align:middle;padding:0 15px 0 5px}[dir="rtl"] .mx-listview-selection{padding:0 5px 0 15px}.mx-listview-selectable .mx-listview-content{display:table-cell;vertical-align:middle;width:100%}.mx-listview .selected{background:#def}.mx-listview .mx-table th,.mx-listview .mx-table td{padding:2px}.mx-login .form-control{margin-top:10px}.mx-menubar{padding:8px}.mx-menubar-icon{height:16px}.mx-menubar-more-icon{display:inline-block;width:16px;height:16px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKNJREFUeNpi/P//P8NgAUwMgwiMOmbUMaOOGXXMqGNGHTPYHMOCTfDs2bMeQKoOiI1BXCBuMjY23kFrdYzoTQigRm8gtQWLG0OBBqyhlTpc0dSOIxTraKwOq2PUcWhWp7E6rI65iUPzTRqrw+qYGhyam2isDtMxwES1CUgFAfFxqBCIDkJPbNRWhzU3jRZ6o44ZdcyoY0YdM+qYUccMUscABBgAUXpEjE/Bs/IAAAAASUVORK5CYII=) no-repeat center center;background-size:16px 16px;vertical-align:middle}.mx-navigationlist{padding:8px}.mx-navigationlist li:hover,.mx-navigationlist li:focus,.mx-navigationlist li.active{color:#FFF;background-color:#3498DB}.mx-navigationlist *{cursor:pointer}.mx-navigationlist .table th,.mx-navigationlist .table td{padding:2px}.mx-progress{position:fixed;top:30%;left:0;right:0;margin:auto;width:250px;max-width:90%;background:#333;opacity:0.8;z-index:5000;border-radius:4px;padding:20px 15px;transition:opacity 0.4s ease-in-out}.mx-progress-hidden{opacity:0}.mx-progress-message{color:#fff;text-align:center;margin-bottom:15px}.mx-progress-empty .mx-progress-message{display:none}.mx-progress-indicator{width:70px;height:10px;margin:auto;background:url(data:image/gif;base64,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)}.mx-reload-notification{position:fixed;z-index:1001;top:0;width:100%;padding:1rem;border:1px solid #048acd;background-color:#0494dc;box-shadow:0 5px 20px rgba(1,37,55,0.16);color:white;text-align:center;font-size:14px}.mx-resizer-n,.mx-resizer-s{position:absolute;left:0;width:100%;height:10px}.mx-resizer-n{top:-5px;cursor:n-resize}.mx-resizer-s{bottom:-5px;cursor:s-resize}.mx-resizer-e,.mx-resizer-w{position:absolute;top:0;width:10px;height:100%}.mx-resizer-e{right:-5px;cursor:e-resize}.mx-resizer-w{left:-5px;cursor:w-resize}.mx-resizer-nw,.mx-resizer-ne,.mx-resizer-sw,.mx-resizer-se{position:absolute;width:20px;height:20px}.mx-resizer-nw,.mx-resizer-ne{top:-5px}.mx-resizer-sw,.mx-resizer-se{bottom:-5px}.mx-resizer-nw,.mx-resizer-sw{left:-5px}.mx-resizer-ne,.mx-resizer-se{right:-5px}.mx-resizer-nw{cursor:nw-resize}.mx-resizer-ne{cursor:ne-resize}.mx-resizer-sw{cursor:sw-resize}.mx-resizer-se{cursor:se-resize}.mx-text{white-space:pre-line}.mx-textarea textarea{resize:none;overflow-y:hidden}.mx-textarea .mx-textarea-noresize{height:auto;resize:vertical;overflow-y:auto}.mx-textarea .mx-textarea-counter{font-size:smaller}.mx-textarea .form-control-static,.mx-textarea .form-group div[class*='textBox']>.control-label,.form-group .mx-textarea div[class*='textBox']>.control-label,.mx-textarea .form-group div[class*='textArea']>.control-label,.form-group .mx-textarea div[class*='textArea']>.control-label,.mx-textarea .form-group div[class*='datePicker']>.control-label,.form-group .mx-textarea div[class*='datePicker']>.control-label{white-space:pre-line}.mx-underlay{position:fixed;top:0;width:100%;height:100%;z-index:1000;opacity:0.5;background-color:#333}.mx-imagezoom{position:absolute;display:table;width:100%;height:100%;background-color:#999}.mx-imagezoom-wrapper{display:table-cell;text-align:center;vertical-align:middle}.mx-imagezoom-image{max-width:none}.mx-dropdown li{padding:3px 20px;cursor:pointer}.mx-dropdown label{padding:0;color:#333;white-space:nowrap;cursor:pointer}.mx-dropdown input{margin:0;vertical-align:middle;cursor:pointer}.mx-dropdown .selected{background:#f8f8f8}.mx-demouserswitcher{position:fixed;top:0;right:0;width:360px;height:100%;z-index:20000;box-shadow:-1px 0 5px rgba(28,59,86,0.2)}.mx-demouserswitcher-content{padding:80px 40px 20px;height:100%;color:#387ea2;font-size:14px;overflow:auto;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOgAAABgCAYAAAAXSj7NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MzkwOTREMDQ2NEYxMUU0QTQ4MUI5NTNGMUQ3QzE5NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0MzkwOTREMTQ2NEYxMUU0QTQ4MUI5NTNGMUQ3QzE5NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0REMyMUZGNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0REMyMjAwNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+g1tRlwAAEFFJREFUeNrsnYl3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) top right no-repeat #1b3149;background-attachment:local}.mx-demouserswitcher ul{padding:0;margin-top:25px;list-style-type:none;border-top:1px solid #496076}.mx-demouserswitcher a{display:block;padding:10px 0;color:#387ea2;border-bottom:1px solid #496076}.mx-demouserswitcher h2{margin:20px 0 5px;color:#5bc4fe;font-size:28px}.mx-demouserswitcher h3{margin:0 0 2px;color:#5bc4fe;font-size:18px;font-weight:normal;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mx-demouserswitcher .active h3{color:#11efdb}.mx-demouserswitcher p{margin-bottom:0}.mx-demouserswitcher-toggle{position:absolute;top:25%;left:-35px;width:35px;height:38px;margin-top:-40px;cursor:pointer;border-top-left-radius:3px;border-bottom-left-radius:3px;box-shadow:-1px 0 5px rgba(28,59,86,0.2);background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NERDMjFGRDQ2NEMxMUU0QTQ4MUI5NTNGMUQ3QzE5NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NERDMjFGRTQ2NEMxMUU0QTQ4MUI5NTNGMUQ3QzE5NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0REMyMUZCNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0REMyMUZDNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+1ZovNAAAAWdJREFUeNqM1M0rRFEYx/E7Y5qIQpOUbIiymQWysBgvJVJK2VgryZQtKSULZelPsB0LZaNZjJUNK1FskJqUvCS3NAsZc3zP9NziOOfeeepTc8/c8+vc8xZTSnmOakEGKdzgDBXXy54OMsSwjpL6W9cYsrxfZWvcUu7y0VdLUCc+VXgd2oLixpfOIOmF17TtHTOozYuupCxAaNB9DUEfeDUbE8bzEXxZerP00l8hh3LUiHTIMr6N9j2ksYoihv/1deyLSVzKKm1jEW+WfZV2Lf8gskjIcwcWpOM++pHCFPLosgWtoCyd7jCPOjzhGHHLyDPY1achaJhDxRj6rBwJXUuoN0IG8IIv7OiGBjxadvAITuT3rex6c0SbKASflnUcBT3JTThAjyWkGUVsBEEFR5CerzXpNIacrFIrJnCBB3muBvkhB1TP27hM/Lvx3zl6gxHqu6c74kiU8IxGjKJdLrrT3xfdjwADAJaMxP2bvD2BAAAAAElFTkSuQmCC) center center no-repeat #1b3149}.mx-master-detail-screen{top:0;left:0;overflow:auto;width:100%;height:100%;position:absolute;background-color:white;will-change:transform}.mx-master-detail-screen .mx-master-detail-details{padding:15px}.mx-master-detail-screen-header{position:relative;overflow:auto;border-bottom:1px solid #ccc;background-color:#f7f7f7}.mx-master-detail-screen-header-caption{text-align:center;font-size:17px;line-height:24px;font-weight:600}.mx-master-detail-screen-header-close{position:absolute;left:0;top:0;height:100%;width:50px;border:none;background:transparent;color:#007aff}body[dir="rtl"] .mx-master-detail-screen-header-close{right:0;left:auto}.mx-master-detail-screen-header-close::before{content:"\2039";font-size:52px;line-height:24px}.mx-master-detail-content-fix{height:100vh;overflow:hidden}.mx-master-detail-content-hidden{transform:translateX(-200%)}body[dir="rtl"] .mx-master-detail-content-hidden{transform:translateX(200%)}.reportingReport{padding:5px;border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.reportingReportParameter th{text-align:right}.reportingDateRange table{width:100%;table-layout:fixed}.reportingDateRange th{padding:5px;text-align:right;background-color:#eee}.reportingDateRange td{padding:5px}.mx-reportmatrix table{width:100%;max-width:100%;table-layout:fixed;margin-bottom:0}.mx-reportmatrix th,.mx-reportmatrix td{padding:8px;line-height:1.42857143;vertical-align:bottom;border:1px solid #ddd}.mx-reportmatrix tbody tr:first-child td{border-top:none}.mx-reportmatrix tbody tr:nth-child(2n+1) td{background-color:#f9f9f9}.mx-reportmatrix tbody img{max-width:16px;max-height:16px}@media all and (-ms-high-contrast: none), (-ms-high-contrast: active){.dijitInline{zoom:1;display:inline;vertical-align:auto}.dj_ie6 .dijitComboBox .dijitInputContainer,.dijitInputContainer{zoom:1}.dijitRight{display:inline}.dijitButtonNode{vertical-align:auto}.dijitTextBox{overflow:hidden}.dijitPlaceHolder{filter:""}.dijitValidationTextBoxError input.dijitValidationInner,.dijitSelect input,.dijitTextBox input.dijitArrowButtonInner{text-indent:0 !important;letter-spacing:-5em !important;text-align:right !important}.dj_a11y input.dijitValidationInner,.dj_a11y input.dijitArrowButtonInner{text-align:left !important}.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton{bottom:50%}.dijitTabContainerTop-tabs .dijitTab,.dijitTabContainerBottom-tabs .dijitTab{zoom:1;display:inline}.dojoDndHorizontal .dojoDndItem{display:inline}}@keyframes slideInUp{from{visibility:visible;transform:translate3d(0, 100%, 0)}to{transform:translate3d(0, 0, 0)}}.animated{animation-duration:0.4s;animation-fill-mode:both}.slideInUp{animation-name:slideInUp}@keyframes slideInDown{from{visibility:visible;transform:translate3d(0, -100%, 0)}to{transform:translate3d(0, 0, 0)}}.slideInDown{animation-name:slideInDown}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.fadeIn{animation-name:fadeIn}.flexcontainer{display:flex;overflow:hidden;flex:1;flex-direction:row}.flexcontainer .flexitem{margin-right:15px}.flexcontainer .flexitem:last-child{margin-right:0}.flexcontainer .flexitem-main{overflow:hidden;flex:1}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-center{align-items:center !important;justify-content:center !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.justify-content-stretch{justify-content:stretch !important}.align-children-start{align-items:flex-start !important}.align-children-end{align-items:flex-end !important}.align-children-center{align-items:center !important}.align-children-baseline{align-items:baseline !important}.align-children-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.flexitem-1{flex:1 1 1%}.flexitem-2{flex:2 2 1%}.flexitem-3{flex:3 3 1%}.flexitem-4{flex:4 4 1%}.flexitem-5{flex:5 5 1%}.flexitem-6{flex:6 6 1%}.flexitem-7{flex:7 7 1%}.flexitem-8{flex:8 8 1%}.flexitem-9{flex:9 9 1%}.flexitem-10{flex:10 10 1%}.flexitem-11{flex:11 11 1%}.flexitem-12{flex:12 12 1%}.spacing-inner-none{padding:0 !important}.spacing-inner-top-none{padding-top:0 !important}.spacing-inner-right-none{padding-right:0 !important}.spacing-inner-bottom-none{padding-bottom:0 !important}.spacing-inner-left-none{padding-left:0 !important}.spacing-outer-none{margin:0 !important}.spacing-outer-top-none{margin-top:0 !important}.spacing-outer-right-none{margin-right:0 !important}.spacing-outer-bottom-none{margin-bottom:0 !important}.spacing-outer-left-none{margin-left:0 !important}.spacing-inner{padding:5px !important}.spacing-inner-top{padding-top:5px !important}.spacing-inner-right{padding-right:5px !important}.spacing-inner-bottom{padding-bottom:5px !important}.spacing-inner-left{padding-left:5px !important}.spacing-outer{margin:5px !important}.spacing-outer-top{margin-top:5px !important}.spacing-outer-right{margin-right:5px !important}.spacing-outer-bottom{margin-bottom:5px !important}.spacing-outer-left{margin-left:5px !important}@media (max-width: 767px){.spacing-inner-medium{padding:15px !important}}@media (min-width: 768px){.spacing-inner-medium{padding:15px !important}}@media (min-width: 992px){.spacing-inner-medium{padding:15px !important}}@media (max-width: 767px){.spacing-inner-top-medium{padding-top:15px !important}}@media (min-width: 768px){.spacing-inner-top-medium{padding-top:15px !important}}@media (min-width: 992px){.spacing-inner-top-medium{padding-top:15px !important}}@media (max-width: 767px){.spacing-inner-right-medium{padding-right:15px !important}}@media (min-width: 768px){.spacing-inner-right-medium{padding-right:15px !important}}@media (min-width: 992px){.spacing-inner-right-medium{padding-right:15px !important}}@media (max-width: 767px){.spacing-inner-bottom-medium{padding-bottom:15px !important}}@media (min-width: 768px){.spacing-inner-bottom-medium{padding-bottom:15px !important}}@media (min-width: 992px){.spacing-inner-bottom-medium{padding-bottom:15px !important}}@media (max-width: 767px){.spacing-inner-left-medium{padding-left:15px !important}}@media (min-width: 768px){.spacing-inner-left-medium{padding-left:15px !important}}@media (min-width: 992px){.spacing-inner-left-medium{padding-left:15px !important}}@media (max-width: 767px){.spacing-outer-medium{margin:15px !important}}@media (min-width: 768px){.spacing-outer-medium{margin:15px !important}}@media (min-width: 992px){.spacing-outer-medium{margin:15px !important}}@media (max-width: 767px){.spacing-outer-top-medium{margin-top:15px !important}}@media (min-width: 768px){.spacing-outer-top-medium{margin-top:15px !important}}@media (min-width: 992px){.spacing-outer-top-medium{margin-top:15px !important}}@media (max-width: 767px){.spacing-outer-right-medium{margin-right:15px !important}}@media (min-width: 768px){.spacing-outer-right-medium{margin-right:15px !important}}@media (min-width: 992px){.spacing-outer-right-medium{margin-right:15px !important}}@media (max-width: 767px){.spacing-outer-bottom-medium{margin-bottom:15px !important}}@media (min-width: 768px){.spacing-outer-bottom-medium{margin-bottom:15px !important}}@media (min-width: 992px){.spacing-outer-bottom-medium{margin-bottom:15px !important}}@media (max-width: 767px){.spacing-outer-left-medium{margin-left:15px !important}}@media (min-width: 768px){.spacing-outer-left-medium{margin-left:15px !important}}@media (min-width: 992px){.spacing-outer-left-medium{margin-left:15px !important}}@media (max-width: 767px){.spacing-inner-large{padding:15px !important}}@media (min-width: 768px){.spacing-inner-large{padding:30px !important}}@media (min-width: 992px){.spacing-inner-large{padding:30px !important}}@media (max-width: 767px){.spacing-inner-top-large{padding-top:15px !important}}@media (min-width: 768px){.spacing-inner-top-large{padding-top:30px !important}}@media (min-width: 992px){.spacing-inner-top-large{padding-top:30px !important}}@media (max-width: 767px){.spacing-inner-right-large{padding-right:15px !important}}@media (min-width: 768px){.spacing-inner-right-large{padding-right:30px !important}}@media (min-width: 992px){.spacing-inner-right-large{padding-right:30px !important}}@media (max-width: 767px){.spacing-inner-bottom-large{padding-bottom:15px !important}}@media (min-width: 768px){.spacing-inner-bottom-large{padding-bottom:30px !important}}@media (min-width: 992px){.spacing-inner-bottom-large{padding-bottom:30px !important}}@media (max-width: 767px){.spacing-inner-left-large{padding-left:15px !important}}@media (min-width: 768px){.spacing-inner-left-large{padding-left:30px !important}}@media (min-width: 992px){.spacing-inner-left-large{padding-left:30px !important}}@media (max-width: 767px){.spacing-outer-large{margin:15px !important}}@media (min-width: 768px){.spacing-outer-large{margin:30px !important}}@media (min-width: 992px){.spacing-outer-large{margin:30px !important}}@media (max-width: 767px){.spacing-outer-top-large{margin-top:15px !important}}@media (min-width: 768px){.spacing-outer-top-large{margin-top:30px !important}}@media (min-width: 992px){.spacing-outer-top-large{margin-top:30px !important}}@media (max-width: 767px){.spacing-outer-right-large{margin-right:15px !important}}@media (min-width: 768px){.spacing-outer-right-large{margin-right:30px !important}}@media (min-width: 992px){.spacing-outer-right-large{margin-right:30px !important}}@media (max-width: 767px){.spacing-outer-bottom-large{margin-bottom:15px !important}}@media (min-width: 768px){.spacing-outer-bottom-large{margin-bottom:30px !important}}@media (min-width: 992px){.spacing-outer-bottom-large{margin-bottom:30px !important}}@media (max-width: 767px){.spacing-outer-left-large{margin-left:15px !important}}@media (min-width: 768px){.spacing-outer-left-large{margin-left:30px !important}}@media (min-width: 992px){.spacing-outer-left-large{margin-left:30px !important}}@media (max-width: 767px){.spacing-inner-layout{padding:15px 15px 15px 15px !important}}@media (min-width: 768px){.spacing-inner-layout{padding:30px 30px 30px 30px !important}}@media (min-width: 992px){.spacing-inner-layout{padding:30px 30px 30px 30px !important}}@media (max-width: 767px){.spacing-inner-top-layout{padding-top:15px !important}}@media (min-width: 768px){.spacing-inner-top-layout{padding-top:30px !important}}@media (min-width: 992px){.spacing-inner-top-layout{padding-top:30px !important}}@media (max-width: 767px){.spacing-inner-right-layout{padding-right:15px !important}}@media (min-width: 768px){.spacing-inner-right-layout{padding-right:30px !important}}@media (min-width: 992px){.spacing-inner-right-layout{padding-right:30px !important}}@media (max-width: 767px){.spacing-inner-bottom-layout{padding-bottom:15px !important}}@media (min-width: 768px){.spacing-inner-bottom-layout{padding-bottom:30px !important}}@media (min-width: 992px){.spacing-inner-bottom-layout{padding-bottom:30px !important}}@media (max-width: 767px){.spacing-inner-left-layout{padding-left:15px !important}}@media (min-width: 768px){.spacing-inner-left-layout{padding-left:30px !important}}@media (min-width: 992px){.spacing-inner-left-layout{padding-left:30px !important}}@media (max-width: 767px){.spacing-outer-layout{margin:15px 15px 15px 15px !important}}@media (min-width: 768px){.spacing-outer-layout{margin:30px 30px 30px 30px !important}}@media (min-width: 992px){.spacing-outer-layout{margin:30px 30px 30px 30px !important}}@media (max-width: 767px){.spacing-outer-top-layout{margin-top:15px !important}}@media (min-width: 768px){.spacing-outer-top-layout{margin-top:30px !important}}@media (min-width: 992px){.spacing-outer-top-layout{margin-top:30px !important}}@media (max-width: 767px){.spacing-outer-right-layout{margin-right:15px !important}}@media (min-width: 768px){.spacing-outer-right-layout{margin-right:30px !important}}@media (min-width: 992px){.spacing-outer-right-layout{margin-right:30px !important}}@media (max-width: 767px){.spacing-outer-bottom-layout{margin-bottom:15px !important}}@media (min-width: 768px){.spacing-outer-bottom-layout{margin-bottom:30px !important}}@media (min-width: 992px){.spacing-outer-bottom-layout{margin-bottom:30px !important}}@media (max-width: 767px){.spacing-outer-left-layout{margin-left:15px !important}}@media (min-width: 768px){.spacing-outer-left-layout{margin-left:30px !important}}@media (min-width: 992px){.spacing-outer-left-layout{margin-left:30px !important}}.mx-scrollcontainer .mx-placeholder{width:100%;height:100%}@media (max-width: 767px){.mx-scrollcontainer .mx-placeholder .mx-layoutgrid,.mx-scrollcontainer .mx-placeholder .mx-layoutgrid-fluid{padding:15px 15px 15px 15px}}@media (min-width: 768px){.mx-scrollcontainer .mx-placeholder .mx-layoutgrid,.mx-scrollcontainer .mx-placeholder .mx-layoutgrid-fluid{padding:30px 30px 30px 30px}}@media (min-width: 992px){.mx-scrollcontainer .mx-placeholder .mx-layoutgrid,.mx-scrollcontainer .mx-placeholder .mx-layoutgrid-fluid{padding:30px 30px 30px 30px}}.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .mx-layoutgrid,.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .mx-layoutgrid-fluid,.mx-scrollcontainer .mx-placeholder .mx-layoutgrid-fluid .mx-layoutgrid,.mx-scrollcontainer .mx-placeholder .mx-layoutgrid-fluid .mx-layoutgrid-fluid{padding:0}html{height:100%}body{min-height:100%;color:#555;background-color:#fff;font-family:"Open Sans",sans-serif;font-size:14px;font-weight:normal;line-height:1.42857}a{-moz-transition:0.25s;-o-transition:0.25s;-webkit-transition:0.25s;transition:0.25s;color:#0595DB;-webkit-backface-visibility:hidden}a:hover{text-decoration:underline;color:#036290}a:focus{outline:thin dotted}a:active,a:hover{outline:0}input:focus,button:focus,.mx-link:focus{outline:0}div[tabindex]{outline:0}.disabled,[disabled]{cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none;filter:alpha(opacity=65)}body{height:100%}.loginpage{display:flex;height:100%}.loginpage-logo{position:absolute;top:30px;right:30px;width:120px}.loginpage-left{display:none}.loginpage-right{display:flex;flex:1;flex-direction:column;justify-content:space-around}.loginpage-formwrapper{width:400px;margin:0 auto}.loginpage-form .alert{display:none}.loginpage-form .btn{border-radius:40px}.loginpage-form .form-group{width:100%;align-items:center}.loginpage-form .form-group .control-label{flex:4;margin-bottom:0;font-size:14px;font-weight:500}.loginpage-form .form-group .inputwrapper{flex:8;position:relative;width:100%}.loginpage-form .form-group .inputwrapper .glyphicon{position:absolute;top:50%;left:10px;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}.loginpage-form .form-group .inputwrapper .glyphicon:before{-webkit-transition:color 0.4s;-moz-transition:color 0.4s;-o-transition:color 0.4s;transition:color 0.4s}.loginpage-form .form-group .inputwrapper .glyphicon-eye-open:hover,.loginpage-form .form-group .inputwrapper .glyphicon-eye-close:hover{cursor:pointer;color:#0595DB}.loginpage-form .form-group .inputwrapper .form-control{padding:8px 10px 8px 45px}.loginpage-form .form-group .inputwrapper .form-control:focus ~ .glyphicon:before{color:#0595DB}.loginpage-alternativelabel{display:flex;align-items:center;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;margin:25px 0px}.loginpage-alternativelabel hr{flex:1;margin:20px 0 20px 10px;border:0;border-color:#d8d8d8;border-top:1px solid #eeeeee}.loginpage-signin{color:#555555}@media screen and (min-width: 1200px){.loginpage-logo{width:150px}.loginpage-left{position:relative;display:block;flex:1;width:100%;height:100%}.loginpage-image{height:100%;animation:makePointer 1s ease-out both;background:left/cover no-repeat url("../../../resources/work-do-more.jpeg");background:left/cover no-repeat linear-gradient(to right, rgba(5,149,219,0.9) 0%, rgba(5,149,219,0.6) 100%),left/cover no-repeat url("../../../resources/work-do-more.jpeg");background:left/cover no-repeat -moz-linear-gradient(left, rgba(5,149,219,0.9) 0%, rgba(5,149,219,0.6) 100%),left/cover no-repeat url("../../../resources/work-do-more.jpeg");background:left/cover no-repeat -webkit-gradient(linear, left bottom, right bottom, color-stop(0%, rgba(5,149,219,0.9)), color-stop(100%, rgba(5,149,219,0.6))),left/cover no-repeat url("../../../resources/work-do-more.jpeg");background:left/cover no-repeat -webkit-linear-gradient(left, rgba(5,149,219,0.9) 0%, rgba(5,149,219,0.6) 100%),left/cover no-repeat url("../../../resources/work-do-more.jpeg");background:left/cover no-repeat -o-linear-gradient(left, rgba(5,149,219,0.9) 0%, rgba(5,149,219,0.6) 100%),left/cover no-repeat url("../../../resources/work-do-more.jpeg");background:left/cover no-repeat -ms-linear-gradient(left, rgba(5,149,219,0.9) 0%, rgba(5,149,219,0.6) 100%),left/cover no-repeat url("../../../resources/work-do-more.jpeg");-webkit-clip-path:polygon(0% 0%, 100% 0, 100% 50%, 100% 100%, 0% 100%);clip-path:polygon(0% 0%, 100% 0, 100% 50%, 100% 100%, 0% 100%)}.loginpage-formwrapper{width:400px}}@keyframes makePointer{100%{-webkit-clip-path:polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);clip-path:polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%)}}@-webkit-keyframes makePointer{100%{-webkit-clip-path:polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);clip-path:polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%)}}.form-control{display:flex;flex:1;min-width:50px;height:auto;padding:8px 10px;transition:border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;color:#555;border:1px solid #D7D7D7;border-radius:4px;background-color:#fff;background-image:none;box-shadow:none;font-size:14px;line-height:1.42857;appearance:none;-moz-appearance:none;-webkit-appearance:none}.form-control:not([readonly]):focus{border-color:#0595DB;outline:0;background-color:#fff;box-shadow:none}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{opacity:1;background-color:#EEEEEE}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}.form-control-lined{border:0;border-bottom:1px solid #D7D7D7;border-radius:0;background-color:transparent}.form-control-lined:focus{background-color:transparent}.form-control-static,.form-group div[class*='textBox']>.control-label,.form-group div[class*='textArea']>.control-label,.form-group div[class*='datePicker']>.control-label{overflow:hidden;flex:1;min-height:auto;padding:8px 10px;border-bottom:1px solid #F0F0EE;font-size:14px;line-height:1.42857}.form-control-static+.control-label,.form-group div[class*='textBox']>.control-label+.control-label,.form-group div[class*='textArea']>.control-label+.control-label,.form-group div[class*='datePicker']>.control-label+.control-label{margin-left:8px}select.form-control{padding-right:30px;background-image:url("data:image/svg+xml;utf8,");background-repeat:no-repeat;background-position:calc(100% - 10px) center;appearance:none;-moz-appearance:none;-webkit-appearance:none}.form-control.mx-selectbox{align-items:center;flex-direction:row-reverse;justify-content:space-between}.mx-textarea .control-label{height:auto}textarea.form-control{flex-basis:auto}.mx-compound-control{display:flex;flex:1;flex-wrap:wrap;max-width:100%}.mx-compound-control .mx-validation-message{flex-basis:100%;margin-top:5px}.form-group{display:flex;flex-direction:row;margin-bottom:15px}.form-group>div[class*='col-']{display:flex;align-items:center;flex-wrap:wrap}.form-group>[class*='col-']{padding-right:15px;padding-left:15px}.form-group .control-label{overflow:hidden;margin-bottom:5px;text-overflow:ellipsis;color:#666;font-size:14px;font-weight:600}.form-group .mx-validation-message{flex-basis:100%}.form-group.no-columns:not(.label-after){flex-direction:column}.form-group.label-after .form-control-static,.form-group.label-after div[class*='textBox']>.control-label,.form-group.label-after div[class*='textArea']>.control-label,.form-group.label-after div[class*='datePicker']>.control-label{flex:unset}.form-group.label-after .control-label{margin-bottom:0}.mx-dateinput,.mx-referenceselector,.mx-referencesetselector{flex:1}.dj_webkit.dj_ios .form-control{transform:translateZ(0)}@media only screen and (min-width: 768px){.form-horizontal .control-label{margin-bottom:0;padding-top:8px;padding-bottom:8px;line-height:1.42857}}@media only screen and (max-width: 767px){.form-group{flex-direction:column}}@media only screen and (max-device-width: 1024px) and (-webkit-min-device-pixel-ratio: 0){input[type='date'],input[type='time'],input[type='datetime-local'],input[type='month']{line-height:1}input[type='time']:not(.has-value):before,input[type='date']:not(.has-value):before,input[type='month']:not(.has-value):before,input[type='datetime-local']:not(.has-value):before{margin-right:0.5em;content:attr(placeholder) !important;color:#AAAAAA}input[type='time'].has-value:before,input[type='date'].has-value:before,input[type='month'].has-value:before,input[type='datetime-local'].has-value:before{content:'' !important}}@media (-ms-high-contrast: none), (-ms-high-contrast: active){.form-group{display:block}}[dir='rtl'] select.form-control{padding-right:30px;padding-left:0;background-position:10px center}.alert{margin-top:0;padding:15px;border:0;border-radius:4px}.alert-bordered{border:1px solid}.alert-success{color:#477901;border-color:#538d01;background-color:#e4f4cc}.alert-info{color:#2b6a94;border-color:#327bad;background-color:#daeffd}.alert-warning{color:#955d11;border-color:#ae6d14;background-color:#feebd2}.alert-danger{color:#8e1116;border-color:#a61419;background-color:#fbd2d3}.has-error .alert{margin-top:8px;margin-bottom:0}.background-main{background-color:#fff !important}.background-secondary{background-color:#F5F8FD !important}.background-default{background-color:#ddd !important}.background-default-darker{background-color:#858585 !important}.background-default-dark{background-color:#9b9b9b !important}.background-default-light{background-color:#ebebeb !important}.background-default-lighter{background-color:#f8f8f8 !important}.background-inverse{background-color:#252C36 !important}.background-inverse-darker{background-color:#161a20 !important}.background-inverse-dark{background-color:#1a1f26 !important}.background-inverse-light{background-color:#7c8086 !important}.background-inverse-lighter{background-color:#d3d5d7 !important}.background-primary{background-color:#0595DB !important}.background-primary-darker{background-color:#035983 !important}.background-primary-dark{background-color:#046899 !important}.background-primary-light{background-color:#69bfe9 !important}.background-primary-lighter{background-color:#cdeaf8 !important}.background-info{background-color:#48B0F7 !important}.background-info-darker{background-color:#2b6a94 !important}.background-info-dark{background-color:#327bad !important}.background-info-light{background-color:#91d0fa !important}.background-info-lighter{background-color:#daeffd !important}.background-success{background-color:#76CA02 !important}.background-success-darker{background-color:#477901 !important}.background-success-dark{background-color:#538d01 !important}.background-success-light{background-color:#addf67 !important}.background-success-lighter{background-color:#e4f4cc !important}.background-warning{background-color:#F99B1D !important}.background-warning-darker{background-color:#955d11 !important}.background-warning-dark{background-color:#ae6d14 !important}.background-warning-light{background-color:#fbc377 !important}.background-warning-lighter{background-color:#feebd2 !important}.background-danger{background-color:#ED1C24 !important}.background-danger-darker{background-color:#8e1116 !important}.background-danger-dark{background-color:#a61419 !important}.background-danger-light{background-color:#f4777c !important}.background-danger-lighter{background-color:#fbd2d3 !important}.background-brand-gradient{background-image:linear-gradient(152deg, #0CC7F0 0%, #087ECC 51%, #077AC9 55%, #0659B9 78%) !important}.btn,.mx-button{display:inline-block;margin-bottom:0;padding:0.6em 1em;cursor:pointer;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;text-align:center;vertical-align:middle;white-space:nowrap;color:#0595DB;border:1px solid #ddd;border-radius:4px;background-color:#fff;background-image:none;box-shadow:none;text-shadow:none;font-size:14px;line-height:1.42857}.btn:hover,.btn:focus,.btn:active,.btn:active:focus,.mx-button:hover,.mx-button:focus,.mx-button:active,.mx-button:active:focus{outline:none;box-shadow:none}.btn[aria-disabled],.mx-button[aria-disabled]{cursor:not-allowed;pointer-events:none;opacity:0.65;filter:alpha(opacity=65)}.mx-link{padding:0;color:#0595DB}.mx-link[aria-disabled='true']{cursor:not-allowed;pointer-events:none;opacity:0.65;filter:alpha(opacity=65)}.btn img,.mx-button img,.mx-link img{height:18px;margin-right:5px;vertical-align:text-top}.profile-phone .btn:active,.profile-phone .mx-link:active{-webkit-transform:translateY(1px);transform:translateY(1px)}.btn,.btn-default{color:#0595DB;border-color:#ddd;background-color:#fff}.btn:hover,.btn:focus,.btn:active,.btn.active,.open>.btn.dropdown-toggle,.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#0595DB;border-color:#ddd;background-color:#ddd}.btn:active,.btn.active,.open>.btn.dropdown-toggle,.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{background-image:none}.btn.disabled,.btn.disabled:hover,.btn.disabled:focus,.btn.disabled:active,.btn.disabled.active,.btn[disabled],.btn[disabled]:hover,.btn[disabled]:focus,.btn[disabled]:active,.btn[disabled].active,.btn[aria-disabled],.btn[aria-disabled]:hover,.btn[aria-disabled]:focus,.btn[aria-disabled]:active,.btn[aria-disabled].active,.btn fieldset[disabled],.btn fieldset[disabled]:hover,.btn fieldset[disabled]:focus,.btn fieldset[disabled]:active,.btn fieldset[disabled].active,.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,.btn-default[aria-disabled],.btn-default[aria-disabled]:hover,.btn-default[aria-disabled]:focus,.btn-default[aria-disabled]:active,.btn-default[aria-disabled].active,.btn-default fieldset[disabled],.btn-default fieldset[disabled]:hover,.btn-default fieldset[disabled]:focus,.btn-default fieldset[disabled]:active,.btn-default fieldset[disabled].active{border-color:#ddd;background-color:#fff}.btn.btn-bordered,.btn-default.btn-bordered{background-color:transparent}.btn.btn-bordered:hover,.btn.btn-bordered:focus,.btn.btn-bordered:active,.btn.btn-bordered.active,.open>.btn.btn-bordered.dropdown-toggle,.btn-default.btn-bordered:hover,.btn-default.btn-bordered:focus,.btn-default.btn-bordered:active,.btn-default.btn-bordered.active,.open>.btn-default.btn-bordered.dropdown-toggle{color:#0595DB;border-color:#ddd;background-color:#ddd}.btn.btn-link,.btn-default.btn-link{text-decoration:none;border-color:transparent;background-color:transparent}.btn.btn-link:hover,.btn-default.btn-link:hover{border-color:#eee;background-color:#eee}.btn-primary,.datagrid-fullsearch.mx-grid .mx-grid-search-button{color:#fff;border-color:#0595DB;background-color:#0595DB}.btn-primary:hover,.datagrid-fullsearch.mx-grid .mx-grid-search-button:hover,.btn-primary:focus,.datagrid-fullsearch.mx-grid .mx-grid-search-button:focus,.btn-primary:active,.datagrid-fullsearch.mx-grid .mx-grid-search-button:active,.btn-primary.active,.datagrid-fullsearch.mx-grid .active.mx-grid-search-button,.open>.btn-primary.dropdown-toggle,.datagrid-fullsearch.mx-grid .open>.dropdown-toggle.mx-grid-search-button{color:#fff;border-color:#0477af;background-color:#0477af}.btn-primary:active,.datagrid-fullsearch.mx-grid .mx-grid-search-button:active,.btn-primary.active,.datagrid-fullsearch.mx-grid .active.mx-grid-search-button,.open>.btn-primary.dropdown-toggle,.datagrid-fullsearch.mx-grid .open>.dropdown-toggle.mx-grid-search-button{background-image:none}.btn-primary.disabled,.datagrid-fullsearch.mx-grid .disabled.mx-grid-search-button,.btn-primary.disabled:hover,.datagrid-fullsearch.mx-grid .disabled.mx-grid-search-button:hover,.btn-primary.disabled:focus,.datagrid-fullsearch.mx-grid .disabled.mx-grid-search-button:focus,.btn-primary.disabled:active,.datagrid-fullsearch.mx-grid .disabled.mx-grid-search-button:active,.btn-primary.disabled.active,.datagrid-fullsearch.mx-grid .disabled.active.mx-grid-search-button,.btn-primary[disabled],.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled],.btn-primary[disabled]:hover,.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled]:hover,.btn-primary[disabled]:focus,.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled]:focus,.btn-primary[disabled]:active,.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled]:active,.btn-primary[disabled].active,.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled].active,.btn-primary[aria-disabled],.datagrid-fullsearch.mx-grid .mx-grid-search-button[aria-disabled],.btn-primary[aria-disabled]:hover,.datagrid-fullsearch.mx-grid .mx-grid-search-button[aria-disabled]:hover,.btn-primary[aria-disabled]:focus,.datagrid-fullsearch.mx-grid .mx-grid-search-button[aria-disabled]:focus,.btn-primary[aria-disabled]:active,.datagrid-fullsearch.mx-grid .mx-grid-search-button[aria-disabled]:active,.btn-primary[aria-disabled].active,.datagrid-fullsearch.mx-grid .mx-grid-search-button[aria-disabled].active,.btn-primary fieldset[disabled],.datagrid-fullsearch.mx-grid .mx-grid-search-button fieldset[disabled],.btn-primary fieldset[disabled]:hover,.datagrid-fullsearch.mx-grid .mx-grid-search-button fieldset[disabled]:hover,.btn-primary fieldset[disabled]:focus,.datagrid-fullsearch.mx-grid .mx-grid-search-button fieldset[disabled]:focus,.btn-primary fieldset[disabled]:active,.datagrid-fullsearch.mx-grid .mx-grid-search-button fieldset[disabled]:active,.btn-primary fieldset[disabled].active,.datagrid-fullsearch.mx-grid .mx-grid-search-button fieldset[disabled].active{border-color:#0595DB;background-color:#0595DB}.btn-primary.btn-bordered,.datagrid-fullsearch.mx-grid .btn-bordered.mx-grid-search-button{background-color:transparent;color:#0595DB}.btn-primary.btn-bordered:hover,.datagrid-fullsearch.mx-grid .btn-bordered.mx-grid-search-button:hover,.btn-primary.btn-bordered:focus,.datagrid-fullsearch.mx-grid .btn-bordered.mx-grid-search-button:focus,.btn-primary.btn-bordered:active,.datagrid-fullsearch.mx-grid .btn-bordered.mx-grid-search-button:active,.btn-primary.btn-bordered.active,.datagrid-fullsearch.mx-grid .btn-bordered.active.mx-grid-search-button,.open>.btn-primary.btn-bordered.dropdown-toggle,.datagrid-fullsearch.mx-grid .open>.btn-bordered.dropdown-toggle.mx-grid-search-button{color:#fff;border-color:#0595DB;background-color:#0595DB}.btn-primary.btn-link,.datagrid-fullsearch.mx-grid .btn-link.mx-grid-search-button{text-decoration:none;border-color:transparent;background-color:transparent;color:#0595DB}.btn-primary.btn-link:hover,.datagrid-fullsearch.mx-grid .btn-link.mx-grid-search-button:hover{border-color:#eee;background-color:#eee}.btn-inverse{color:#fff;border-color:#252C36;background-color:#252C36}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.open>.btn-inverse.dropdown-toggle{color:#fff;border-color:#51565e;background-color:#51565e}.btn-inverse:active,.btn-inverse.active,.open>.btn-inverse.dropdown-toggle{background-image:none}.btn-inverse.disabled,.btn-inverse.disabled:hover,.btn-inverse.disabled:focus,.btn-inverse.disabled:active,.btn-inverse.disabled.active,.btn-inverse[disabled],.btn-inverse[disabled]:hover,.btn-inverse[disabled]:focus,.btn-inverse[disabled]:active,.btn-inverse[disabled].active,.btn-inverse[aria-disabled],.btn-inverse[aria-disabled]:hover,.btn-inverse[aria-disabled]:focus,.btn-inverse[aria-disabled]:active,.btn-inverse[aria-disabled].active,.btn-inverse fieldset[disabled],.btn-inverse fieldset[disabled]:hover,.btn-inverse fieldset[disabled]:focus,.btn-inverse fieldset[disabled]:active,.btn-inverse fieldset[disabled].active{border-color:#252C36;background-color:#252C36}.btn-inverse.btn-bordered{background-color:transparent;color:#252C36}.btn-inverse.btn-bordered:hover,.btn-inverse.btn-bordered:focus,.btn-inverse.btn-bordered:active,.btn-inverse.btn-bordered.active,.open>.btn-inverse.btn-bordered.dropdown-toggle{color:#fff;border-color:#252C36;background-color:#252C36}.btn-inverse.btn-link{text-decoration:none;border-color:transparent;background-color:transparent;color:#252C36}.btn-inverse.btn-link:hover{border-color:#eee;background-color:#eee}.btn-success{color:#fff;border-color:#76CA02;background-color:#76CA02}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;border-color:#5ea202;background-color:#5ea202}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled]:active,.btn-success[disabled].active,.btn-success[aria-disabled],.btn-success[aria-disabled]:hover,.btn-success[aria-disabled]:focus,.btn-success[aria-disabled]:active,.btn-success[aria-disabled].active,.btn-success fieldset[disabled],.btn-success fieldset[disabled]:hover,.btn-success fieldset[disabled]:focus,.btn-success fieldset[disabled]:active,.btn-success fieldset[disabled].active{border-color:#76CA02;background-color:#76CA02}.btn-success.btn-bordered{background-color:transparent;color:#76CA02}.btn-success.btn-bordered:hover,.btn-success.btn-bordered:focus,.btn-success.btn-bordered:active,.btn-success.btn-bordered.active,.open>.btn-success.btn-bordered.dropdown-toggle{color:#fff;border-color:#76CA02;background-color:#76CA02}.btn-success.btn-link{text-decoration:none;border-color:transparent;background-color:transparent;color:#76CA02}.btn-success.btn-link:hover{border-color:#eee;background-color:#eee}.btn-info{color:#fff;border-color:#48B0F7;background-color:#48B0F7}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;border-color:#3a8dc6;background-color:#3a8dc6}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled]:active,.btn-info[disabled].active,.btn-info[aria-disabled],.btn-info[aria-disabled]:hover,.btn-info[aria-disabled]:focus,.btn-info[aria-disabled]:active,.btn-info[aria-disabled].active,.btn-info fieldset[disabled],.btn-info fieldset[disabled]:hover,.btn-info fieldset[disabled]:focus,.btn-info fieldset[disabled]:active,.btn-info fieldset[disabled].active{border-color:#48B0F7;background-color:#48B0F7}.btn-info.btn-bordered{background-color:transparent;color:#48B0F7}.btn-info.btn-bordered:hover,.btn-info.btn-bordered:focus,.btn-info.btn-bordered:active,.btn-info.btn-bordered.active,.open>.btn-info.btn-bordered.dropdown-toggle{color:#fff;border-color:#48B0F7;background-color:#48B0F7}.btn-info.btn-link{text-decoration:none;border-color:transparent;background-color:transparent;color:#48B0F7}.btn-info.btn-link:hover{border-color:#eee;background-color:#eee}.btn-warning{color:#fff;border-color:#F99B1D;background-color:#F99B1D}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;border-color:#c77c17;background-color:#c77c17}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled]:active,.btn-warning[disabled].active,.btn-warning[aria-disabled],.btn-warning[aria-disabled]:hover,.btn-warning[aria-disabled]:focus,.btn-warning[aria-disabled]:active,.btn-warning[aria-disabled].active,.btn-warning fieldset[disabled],.btn-warning fieldset[disabled]:hover,.btn-warning fieldset[disabled]:focus,.btn-warning fieldset[disabled]:active,.btn-warning fieldset[disabled].active{border-color:#F99B1D;background-color:#F99B1D}.btn-warning.btn-bordered{background-color:transparent;color:#F99B1D}.btn-warning.btn-bordered:hover,.btn-warning.btn-bordered:focus,.btn-warning.btn-bordered:active,.btn-warning.btn-bordered.active,.open>.btn-warning.btn-bordered.dropdown-toggle{color:#fff;border-color:#F99B1D;background-color:#F99B1D}.btn-warning.btn-link{text-decoration:none;border-color:transparent;background-color:transparent;color:#F99B1D}.btn-warning.btn-link:hover{border-color:#eee;background-color:#eee}.btn-danger{color:#fff;border-color:#ED1C24;background-color:#ED1C24}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;border-color:#be161d;background-color:#be161d}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled]:active,.btn-danger[disabled].active,.btn-danger[aria-disabled],.btn-danger[aria-disabled]:hover,.btn-danger[aria-disabled]:focus,.btn-danger[aria-disabled]:active,.btn-danger[aria-disabled].active,.btn-danger fieldset[disabled],.btn-danger fieldset[disabled]:hover,.btn-danger fieldset[disabled]:focus,.btn-danger fieldset[disabled]:active,.btn-danger fieldset[disabled].active{border-color:#ED1C24;background-color:#ED1C24}.btn-danger.btn-bordered{background-color:transparent;color:#ED1C24}.btn-danger.btn-bordered:hover,.btn-danger.btn-bordered:focus,.btn-danger.btn-bordered:active,.btn-danger.btn-bordered.active,.open>.btn-danger.btn-bordered.dropdown-toggle{color:#fff;border-color:#ED1C24;background-color:#ED1C24}.btn-danger.btn-link{text-decoration:none;border-color:transparent;background-color:transparent;color:#ED1C24}.btn-danger.btn-link:hover{border-color:#eee;background-color:#eee}.btn-lg{font-size:16px}.btn-lg img{height:calc(12px + 4px)}.btn-sm{font-size:12px}.btn-sm img{height:calc(12px + 4px)}.btn-image{padding:0;vertical-align:middle;border-style:none;background-color:transparent}.btn-image img{display:block;height:auto}.btn-image:hover,.btn-image:focus{background-color:transparent}.btn-icon>img,.btn-icon>.glyphicon{margin:0}.btn-icon-right>img,.btn-icon-right>.glyphicon{float:right;margin-left:5px}.btn-icon-top{padding-right:0;padding-left:0}.btn-icon-top>img,.btn-icon-top>.glyphicon{display:block;margin:0 0 5px 0}.mx-checkbox.label-after{flex-wrap:wrap}.mx-checkbox.label-after .control-label{padding:0}input[type="checkbox"]{position:relative !important;width:16px;height:16px;margin:0 !important;cursor:pointer;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;-webkit-user-select:none;user-select:none;appearance:none;-moz-appearance:none;-webkit-appearance:none}input[type='checkbox']::-ms-check{color:#D7D7D7;border-color:#D7D7D7;border-radius:4px;background-color:#fff}input[type='checkbox']:focus::-ms-check,input[type='checkbox']:checked::-ms-check{color:#0595DB;border-color:#0595DB;background-color:#fff}input[type='checkbox']:before,input[type='checkbox']:after{position:absolute;display:block;transition:all 0.3s ease}input[type='checkbox']:before{width:100%;height:100%;content:'';border:1px solid #D7D7D7;border-radius:4px;background-color:transparent}input[type='checkbox']:after{width:8px;height:4px;margin:5px 4px;transform:rotate(-45deg);pointer-events:none;border:2px solid #FFFFFF;border-top:0;border-right:0}input[type='checkbox']:not(:disabled):not(:checked):hover:after{content:'';border-color:#D7D7D7}input[type='checkbox']:checked:before{border-color:#0595DB;background-color:#0595DB}input[type='checkbox']:checked:after{content:''}input[type='checkbox']:disabled:before{background-color:#eee}input[type='checkbox']:checked:disabled:before{border-color:transparent;background-color:rgba(5,149,219,0.4)}input[type='checkbox']:disabled:after,input[type='checkbox']:checked:disabled:after{border-color:#eee}input[type='checkbox']+.control-label{margin-left:8px}.mx-grid{padding:0px;border:0;border-radius:0}.mx-grid .mx-grid-controlbar{margin:10px 0}.mx-grid .mx-grid-controlbar .mx-grid-pagingbar .mx-button{padding:6px;color:#888;border-color:rgba(0,0,0,0);background-color:rgba(0,0,0,0)}.mx-grid .mx-grid-controlbar .mx-grid-pagingbar .mx-button:hover{color:#0595DB;border-color:rgba(0,0,0,0);background-color:rgba(0,0,0,0)}.mx-grid .mx-grid-controlbar .mx-grid-pagingbar .mx-grid-paging-status{padding:0 8px 8px}.mx-grid .mx-grid-searchbar{margin:10px 0}.mx-grid .mx-grid-searchbar .mx-grid-search-item .mx-grid-search-label{vertical-align:middle}.mx-grid .mx-grid-searchbar .mx-grid-search-item .mx-grid-search-label label{padding-top:5px}.mx-grid .mx-grid-searchbar .mx-grid-search-item .mx-grid-search-input{display:inline-flex}.mx-grid .mx-grid-searchbar .mx-grid-search-item .mx-grid-search-input .form-control{height:28px;font-size:11px}.mx-grid .mx-grid-searchbar .mx-grid-search-item .mx-grid-search-input select.form-control{padding:3px;vertical-align:middle}.mx-grid .mx-grid-searchbar .mx-grid-search-item .mx-grid-search-input .mx-button{height:28px;padding-top:2px;padding-bottom:2px}.mx-dataview .mx-grid{border:0}.mx-datagrid table{border-width:0;background-color:transparent}.mx-datagrid table th{border-style:solid;border-color:#D7D7D7;border-top-width:0;border-right:0;border-bottom-width:1px;border-left:0;background-color:rgba(0,0,0,0);padding:15px 15px 15px 15px;vertical-align:middle}.mx-datagrid table th .mx-datagrid-head-caption{white-space:normal}.mx-datagrid table tbody tr td{-webkit-transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);-moz-transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);-o-transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);transform-style:initial;padding:15px 15px 15px 15px;vertical-align:middle;border-width:0;border-color:#D7D7D7;border-bottom-width:1px;border-bottom-style:solid;background-color:#fff}.mx-datagrid table tbody tr td:focus{outline:none}.mx-datagrid table tbody tr td .mx-datagrid-data-wrapper{text-overflow:ellipsis}.mx-datagrid table tbody tr.selected td,.mx-datagrid table tbody tr.selected:hover td{color:#555;background-color:#f3f3f3 !important}.mx-datagrid table tfoot>tr>th{padding:15px 15px 15px 15px;border-width:0;background-color:#D7D7D7}.mx-datagrid table tfoot>tr>td{padding:15px 15px 15px 15px;border-width:0;background-color:#fff;font-weight:bold}.mx-datagrid table *:focus{outline:0}.datagrid-striped.mx-datagrid table th{border-width:0}.datagrid-striped.mx-datagrid table tbody tr td{border-top-width:0}.datagrid-striped.mx-datagrid table tbody tr:nth-child(odd) td{background-color:#fbfbfb}.datagrid-bordered.mx-datagrid table{border:1px solid}.datagrid-bordered.mx-datagrid table th{border:1px solid #D7D7D7}.datagrid-bordered.mx-datagrid table tbody tr td{border:1px solid #D7D7D7}.datagrid-bordered.mx-datagrid tfoot>tr>th{border-width:0;background-color:#D7D7D7}.datagrid-bordered.mx-datagrid tfoot>tr>td{border-width:1px}.datagrid-transparent.mx-datagrid table{background-color:transparent}.datagrid-transparent.mx-datagrid table tbody tr:nth-of-type(odd){background-color:transparent}.datagrid-transparent.mx-datagrid table tbody tr td{background-color:transparent}.datagrid-hover.mx-datagrid table tbody tr:hover td{background-color:#f7f7f7 !important}.datagrid-hover.mx-datagrid table tbody tr.selected:hover td{background-color:#ebebeb !important}.datagrid-lg.mx-datagrid table th{padding:30px 30px 30px 30px}.datagrid-lg.mx-datagrid table tbody tr td{padding:30px 30px 30px 30px}.datagrid-sm.mx-datagrid table th{padding:7.5px 7.5px 7.5px 7.5px}.datagrid-sm.mx-datagrid table tbody tr td{padding:7.5px 7.5px 7.5px 7.5px}.datagrid-fullsearch.mx-grid .mx-grid-reset-button{display:none}.datagrid-fullsearch.mx-grid .mx-grid-search-item{display:block}.datagrid-fullsearch.mx-grid .mx-grid-search-label{display:none}.datagrid-fullsearch.mx-grid .mx-grid-searchbar .mx-grid-search-controls{position:absolute;right:0}.datagrid-fullsearch.mx-grid .mx-grid-searchbar .mx-grid-search-input{width:80%;padding-left:0}.datagrid-fullsearch.mx-grid .mx-grid-searchbar .mx-grid-search-input .btn,.datagrid-fullsearch.mx-grid .mx-grid-searchbar .mx-grid-search-input .form-control{height:35px;font-size:12px}.mx-dataview .mx-dataview-controls{clear:both;margin-top:10px;padding:8px 0;border-top:1px solid #D7D7D7;border-radius:0;background-color:rgba(0,0,0,0)}.mx-dataview .mx-dataview-controls .mx-button{margin-right:0.3em;margin-bottom:0}.mx-dataview .mx-dataview-controls .mx-button:last-child{margin-right:0}.mx-dataview>.mx-dataview-content>.mx-container-nested>.row{margin-right:0;margin-left:0}.mx-dataview .mx-dataview-message{color:#555;background:#fff}.mx-calendar{z-index:10010 !important;padding:10px;font-size:12px;background:#fff;border-radius:4px;border:1px solid #D7D7D7;box-shadow:0 2px 10px 0 rgba(0,0,0,0.06)}.mx-calendar .mx-calendar-month-header{display:flex;flex-direction:row;justify-content:space-between;margin:0 3px 10px 3px}.mx-calendar .mx-calendar-month-next,.mx-calendar .mx-calendar-month-previous,.mx-calendar .mx-calendar-month-dropdown{border:0;cursor:pointer;background:transparent}.mx-calendar .mx-calendar-month-next:hover,.mx-calendar .mx-calendar-month-previous:hover{color:#0595DB}.mx-calendar .mx-calendar-month-dropdown{display:flex;align-items:center;justify-content:center;position:relative}.mx-calendar .mx-calendar-month-dropdown .mx-calendar-month-current:first-child{margin-right:10px}.mx-calendar th{color:#0595DB}.mx-calendar th,.mx-calendar td{width:35px;height:35px;text-align:center}.mx-calendar td{color:#555}.mx-calendar td:hover{cursor:pointer;border-radius:50%;color:#0595DB;background-color:#ddd}.mx-calendar .mx-calendar-day-month-next,.mx-calendar .mx-calendar-day-month-previous{color:#c8c8c8}.mx-calendar .mx-calendar-day-selected,.mx-calendar .mx-calendar-day-selected:hover{color:#fff;border-radius:50%;background:#0595DB}.mx-calendar .mx-calendar-year-switcher{text-align:center;margin-top:10px;color:#7dd2fc}.mx-calendar .mx-calendar-year-switcher span.mx-calendar-year-selected{color:#0595DB;margin-left:10px;margin-right:10px}.mx-calendar .mx-calendar-year-switcher span:hover{cursor:pointer;text-decoration:underline;background-color:transparent}.mx-calendar-month-dropdown-options{z-index:10020 !important;position:absolute;top:25px;padding:2px 10px;border-radius:4px;background-color:#fff}.mx-calendar-month-dropdown-options div{cursor:pointer;font-size:12px;padding:2px 0}.mx-calendar-month-dropdown-options div:hover,.mx-calendar-month-dropdown-options div:focus{color:#0595DB}.mx-header{z-index:100;display:flex;width:100%;height:45px;padding:0;text-align:initial;color:#555;border-bottom:1px solid #D7D7D7;background-color:#fff;box-shadow:0 1px 4px 0 rgba(0,0,0,0.14)}.mx-header div.mx-header-left,.mx-header div.mx-header-right{position:relative;top:initial;right:initial;left:initial;display:flex;align-items:center;width:25%;height:100%}.mx-header div.mx-header-left .mx-placeholder,.mx-header div.mx-header-right .mx-placeholder{display:flex;align-items:center;height:100%}.mx-header div.mx-header-left .mx-placeholder{order:1}.mx-header div.mx-header-left .mx-placeholder .mx-placeholder{justify-content:flex-start}.mx-header div.mx-header-center{overflow:hidden;flex:1;order:2;text-align:center}.mx-header div.mx-header-center .mx-title{overflow:hidden;width:100%;margin:0;text-overflow:ellipsis;color:#555;font-size:17px;line-height:45px}.mx-header div.mx-header-right{order:3}.mx-header div.mx-header-right .mx-placeholder{justify-content:flex-end}.mx-header .mx-link{display:flex;align-items:center;height:100%;-webkit-transition:all 0.2s;-moz-transition:all 0.2s;transition:all 0.2s;text-decoration:none}.mx-header .mx-link .glyphicon{top:0;font-size:23px}.mx-header .mx-link:active{-webkit-transform:translateY(1px);transform:translateY(1px);color:#036290}.mx-header .mx-link,.mx-header .btn,.mx-header img{padding:0 8px}.mx-header .mx-sidebartoggle{font-size:24px;line-height:45px}.mx-header .mx-sidebartoggle img{height:20px}body[dir='rtl'] .mx-header-left{order:3}body[dir='rtl'] .mx-header-right{order:1}.mx-glyphicon:before{display:inline-block;margin-top:-0.2em;margin-right:0.4555555em;vertical-align:middle;font-family:"Glyphicons Halflings";font-weight:normal;font-style:normal;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.mx-groupbox{margin:0}.mx-groupbox>.mx-groupbox-header{margin:0;color:#555;border-width:1px 1px 0 1px;border-style:solid;border-color:#ddd;background:#ddd;font-size:14px}.mx-groupbox>.mx-groupbox-header .mx-groupbox-collapse-icon{margin-top:0.1em}.mx-groupbox>.mx-groupbox-body{padding:10px 15px;border-width:1px;border-style:solid;border-color:#ddd;background-color:#FFFFFF}.mx-groupbox .mx-groupbox-header+.mx-groupbox-body{border-top:none}.groupbox-default>.mx-groupbox-header{color:#555;border-color:#ddd;background:#ddd}.groupbox-default>.mx-groupbox-body{border-color:#ddd}.groupbox-primary>.mx-groupbox-header{color:#fff;border-color:#0595DB;background:#0595DB}.groupbox-primary>.mx-groupbox-body{border-color:#0595DB}.groupbox-inverse>.mx-groupbox-header{color:#fff;border-color:#252C36;background:#252C36}.groupbox-inverse>.mx-groupbox-body{border-color:#252C36}.groupbox-success>.mx-groupbox-header{color:#fff;border-color:#76CA02;background:#76CA02}.groupbox-success>.mx-groupbox-body{border-color:#76CA02}.groupbox-info>.mx-groupbox-header{color:#fff;border-color:#48B0F7;background:#48B0F7}.groupbox-info>.mx-groupbox-body{border-color:#48B0F7}.groupbox-warning>.mx-groupbox-header{color:#fff;border-color:#F99B1D;background:#F99B1D}.groupbox-warning>.mx-groupbox-body{border-color:#F99B1D}.groupbox-danger>.mx-groupbox-header{color:#fff;border-color:#ED1C24;background:#ED1C24}.groupbox-danger>.mx-groupbox-body{border-color:#ED1C24}.groupbox-white>.mx-groupbox-header{color:#555;border-color:#fff;background:#fff}.groupbox-white>.mx-groupbox-body{border-color:#fff}.groupbox-transparent{border-bottom:1px solid #D7D7D7}.groupbox-transparent>.mx-groupbox-header{padding:15px 0;color:#222;border-style:none;background:transparent;font-size:16px;font-weight:600}.groupbox-transparent .mx-groupbox-body{padding:15px 0;border-style:none;background-color:transparent}.groupbox-transparent .mx-groupbox-collapse-icon{color:#0595DB}.groupbox-h1>.mx-groupbox-header{font-size:31px}.groupbox-h2>.mx-groupbox-header{font-size:26px}.groupbox-h3>.mx-groupbox-header{font-size:24px}.groupbox-h4>.mx-groupbox-header{font-size:18px}.groupbox-h5>.mx-groupbox-header{font-size:14px}.groupbox-h6>.mx-groupbox-header{font-size:12px}.groupbox-callout>.mx-groupbox-header,.groupbox-callout>.mx-groupbox-body{border:0;background-color:#daeffd}.groupbox-callout .mx-groupbox-header+.mx-groupbox-body{padding-top:0}.groupbox-info.groupbox-callout>.mx-groupbox-header,.groupbox-info.groupbox-callout>.mx-groupbox-body{background-color:#daeffd}.groupbox-info.groupbox-callout>.mx-groupbox-header{color:#48B0F7}.groupbox-success.groupbox-callout>.mx-groupbox-header,.groupbox-success.groupbox-callout>.mx-groupbox-body{background-color:#e4f4cc}.groupbox-success.groupbox-callout>.mx-groupbox-header{color:#76CA02}.groupbox-warning.groupbox-callout>.mx-groupbox-header,.groupbox-warning.groupbox-callout>.mx-groupbox-body{background-color:#feebd2}.groupbox-warning.groupbox-callout>.mx-groupbox-header{color:#F99B1D}.groupbox-danger.groupbox-callout>.mx-groupbox-header,.groupbox-danger.groupbox-callout>.mx-groupbox-body{background-color:#fbd2d3}.groupbox-danger.groupbox-callout>.mx-groupbox-header{color:#ED1C24}img.img-rounded,.img-rounded img{border-radius:6px}img.img-thumbnail,.img-thumbnail img{display:inline-block;max-width:100%;height:auto;padding:4px;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;border:1px solid #ddd;border-radius:4px;background-color:#FFFFFF;line-height:1.42857}img.img-circle,.img-circle img{border-radius:50%}img.img-auto,.img-auto img{width:auto !important;max-width:100% !important;height:auto !important;max-height:100% !important}img.img-center,.img-center img{margin-right:auto !important;margin-left:auto !important}.label{display:inline-block;padding:0.2em 0.6em 0.3em;text-align:center;vertical-align:baseline;white-space:nowrap;color:#ffffff;border-radius:0.25em;font-size:100%;line-height:1;margin:0}.label .form-control-static,.label .form-group div[class*='textBox']>.control-label,.form-group .label div[class*='textBox']>.control-label,.label .form-group div[class*='textArea']>.control-label,.form-group .label div[class*='textArea']>.control-label,.label .form-group div[class*='datePicker']>.control-label,.form-group .label div[class*='datePicker']>.control-label{all:unset;font-weight:normal}.label-default{color:#555;background-color:#ddd}.label-primary{color:#fff;background-color:#0595DB}.label-success{color:#fff;background-color:#76CA02}.label-inverse{color:#fff;background-color:#252C36}.label-info{color:#fff;background-color:#48B0F7}.label-warning{color:#fff;background-color:#F99B1D}.label-danger{color:#fff;background-color:#ED1C24}.mx-listview{padding:0}.mx-listview .mx-listview-searchbar{margin-bottom:15px}.mx-listview .mx-listview-searchbar .btn{width:auto}.mx-listview>.btn{width:100%;margin:10px auto}.mx-listview>ul{margin:0}.mx-listview>ul .mx-listview-empty{border-style:none;background-color:transparent}.mx-listview>ul>li{-webkit-transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);-moz-transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);-o-transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);transform-style:initial;padding:15px 15px 15px 15px;border-width:1px 0 0 0;border-style:solid;border-color:#D7D7D7;background-color:#fff}.mx-listview>ul>li:first-child{border-radius:0}.mx-listview>ul>li:last-child{border-bottom:1px solid #D7D7D7;border-radius:0}.mx-listview>ul>li:focus,.mx-listview>ul>li:active{outline:0;background-color:#f7f7f7}.mx-listview>ul>li.selected{background-color:#f3f3f3}.mx-listview .mx-layoutgrid{padding-top:0 !important;padding-bottom:0 !important}.profile-phone .mx-listview .mx-listview-searchbar{margin-bottom:3px;background:#FFFFFF;box-shadow:0 1px 4px 0 rgba(0,0,0,0.14)}.profile-phone .mx-listview .mx-listview-searchbar input{padding:14px 15px;color:#555555;border-style:none;border-radius:0;box-shadow:none}.profile-phone .mx-listview .mx-listview-searchbar .btn{padding:14px 15px;color:inherit;border-style:none}.profile-phone .mx-listview>ul>li:first-child{border-top:none}.listview-bordered.mx-listview>ul>li{border:1px solid #D7D7D7;border-top:0}.listview-bordered.mx-listview>ul>li:first-child{border-top:1px solid #D7D7D7;border-radius:0}.listview-bordered.mx-listview>ul>li:last-child{border-radius:0}.listview-striped.mx-listview>ul>li:nth-child(2n+1){background-color:#fbfbfb}.listview-seperated.mx-listview>ul>li{margin-bottom:15px;border-width:1px;border-style:solid;border-radius:4px}.listview-stylingless.mx-listview>ul>li{padding:0;cursor:default;border:0;background-color:transparent}.listview-stylingless.mx-listview>ul>li:hover,.listview-stylingless.mx-listview>ul>li:focus,.listview-stylingless.mx-listview>ul>li:active{background-color:transparent}.listview-stylingless.mx-listview>ul>li.selected{background-color:transparent !important}.listview-stylingless.mx-listview>ul>li.selected:hover,.listview-stylingless.mx-listview>ul>li.selected:focus,.listview-stylingless.mx-listview>ul>li.selected:active{background-color:transparent !important}.listview-hover.mx-listview>ul>li:hover,.listview-hover.mx-listview>ul>li:focus,.listview-hover.mx-listview>ul>li:active{background-color:#f7f7f7 !important}.listview-hover.mx-listview>ul>li.selected:hover,.listview-hover.mx-listview>ul>li.selected:focus,.listview-hover.mx-listview>ul>li.selected:active{background-color:#ebebeb !important}.listview-lg.mx-listview>ul>li{padding:30px 30px 30px 30px}.listview-sm.mx-listview>ul>li{padding:7.5px 7.5px 7.5px 7.5px}.mx-listview[class*='lv-col']{overflow:hidden}.mx-listview[class*='lv-col']>ul{display:block;margin-right:-15px;margin-left:-15px}.mx-listview[class*='lv-col']>ul::before,.mx-listview[class*='lv-col']>ul::after{display:table;clear:both;content:' '}.mx-listview[class*='lv-col']>ul>li{position:relative;display:block;float:left;min-height:1px;padding-right:15px;padding-left:15px;border:0}@media (max-width: 991px){.mx-listview[class*='lv-col']>ul>li{width:100% !important}}.mx-listview[class*='lv-col']>ul>li>.mx-dataview{overflow:hidden}.mx-listview[class*='lv-col'].lv-col-xs-12>ul>li{width:100% !important}.mx-listview[class*='lv-col'].lv-col-xs-11>ul>li{width:91.66666667% !important}.mx-listview[class*='lv-col'].lv-col-xs-10>ul>li{width:83.33333333% !important}.mx-listview[class*='lv-col'].lv-col-xs-9>ul>li{width:75% !important}.mx-listview[class*='lv-col'].lv-col-xs-8>ul>li{width:66.66666667% !important}.mx-listview[class*='lv-col'].lv-col-xs-7>ul>li{width:58.33333333% !important}.mx-listview[class*='lv-col'].lv-col-xs-6>ul>li{width:50% !important}.mx-listview[class*='lv-col'].lv-col-xs-5>ul>li{width:41.66666667% !important}.mx-listview[class*='lv-col'].lv-col-xs-4>ul>li{width:33.33333333% !important}.mx-listview[class*='lv-col'].lv-col-xs-3>ul>li{width:25% !important}.mx-listview[class*='lv-col'].lv-col-xs-2>ul>li{width:16.66666667% !important}.mx-listview[class*='lv-col'].lv-col-xs-1>ul>li{width:8.33333333% !important}@media (min-width: 768px){.mx-listview[class*='lv-col'].lv-col-sm-12>ul>li{width:100% !important}.mx-listview[class*='lv-col'].lv-col-sm-11>ul>li{width:91.66666667% !important}.mx-listview[class*='lv-col'].lv-col-sm-10>ul>li{width:83.33333333% !important}.mx-listview[class*='lv-col'].lv-col-sm-9>ul>li{width:75% !important}.mx-listview[class*='lv-col'].lv-col-sm-8>ul>li{width:66.66666667% !important}.mx-listview[class*='lv-col'].lv-col-sm-7>ul>li{width:58.33333333% !important}.mx-listview[class*='lv-col'].lv-col-sm-6>ul>li{width:50% !important}.mx-listview[class*='lv-col'].lv-col-sm-5>ul>li{width:41.66666667% !important}.mx-listview[class*='lv-col'].lv-col-sm-4>ul>li{width:33.33333333% !important}.mx-listview[class*='lv-col'].lv-col-sm-3>ul>li{width:25% !important}.mx-listview[class*='lv-col'].lv-col-sm-2>ul>li{width:16.66666667% !important}.mx-listview[class*='lv-col'].lv-col-sm-1>ul>li{width:8.33333333% !important}}@media (min-width: 992px){.mx-listview[class*='lv-col'].lv-col-md-12>ul>li{width:100% !important}.mx-listview[class*='lv-col'].lv-col-md-11>ul>li{width:91.66666667% !important}.mx-listview[class*='lv-col'].lv-col-md-10>ul>li{width:83.33333333% !important}.mx-listview[class*='lv-col'].lv-col-md-9>ul>li{width:75% !important}.mx-listview[class*='lv-col'].lv-col-md-8>ul>li{width:66.66666667% !important}.mx-listview[class*='lv-col'].lv-col-md-7>ul>li{width:58.33333333% !important}.mx-listview[class*='lv-col'].lv-col-md-6>ul>li{width:50% !important}.mx-listview[class*='lv-col'].lv-col-md-5>ul>li{width:41.66666667% !important}.mx-listview[class*='lv-col'].lv-col-md-4>ul>li{width:33.33333333% !important}.mx-listview[class*='lv-col'].lv-col-md-3>ul>li{width:25% !important}.mx-listview[class*='lv-col'].lv-col-md-2>ul>li{width:16.66666667% !important}.mx-listview[class*='lv-col'].lv-col-md-1>ul>li{width:16.66666667% !important}}@media (min-width: 1200px){.mx-listview[class*='lv-col'].lv-col-lg-12>ul>li{width:100% !important}.mx-listview[class*='lv-col'].lv-col-lg-11>ul>li{width:91.66666667% !important}.mx-listview[class*='lv-col'].lv-col-lg-10>ul>li{width:83.33333333% !important}.mx-listview[class*='lv-col'].lv-col-lg-9>ul>li{width:75% !important}.mx-listview[class*='lv-col'].lv-col-lg-8>ul>li{width:66.66666667% !important}.mx-listview[class*='lv-col'].lv-col-lg-7>ul>li{width:58.33333333% !important}.mx-listview[class*='lv-col'].lv-col-lg-6>ul>li{width:50% !important}.mx-listview[class*='lv-col'].lv-col-lg-5>ul>li{width:41.66666667% !important}.mx-listview[class*='lv-col'].lv-col-lg-4>ul>li{width:33.33333333% !important}.mx-listview[class*='lv-col'].lv-col-lg-3>ul>li{width:25% !important}.mx-listview[class*='lv-col'].lv-col-lg-2>ul>li{width:16.66666667% !important}.mx-listview[class*='lv-col'].lv-col-lg-1>ul>li{width:8.33333333% !important}}.modal-dialog .modal-content{border:1px solid #D7D7D7;border-radius:4px;box-shadow:0 2px 4px rgba(0,0,0,0.2)}.modal-dialog .modal-content .modal-header{padding:15px 20px;border-bottom-color:#D7D7D7;border-radius:0;background-color:rgba(0,0,0,0)}.modal-dialog .modal-content .modal-header h4{margin:0;color:#555;font-size:16px;font-weight:bold}.modal-dialog .modal-content .modal-header .close{margin-top:-3px;opacity:1;color:#555;text-shadow:none;filter:alpha(opacity=100)}.modal-dialog .modal-content .modal-body{padding:20px}.modal-dialog .modal-content .modal-footer{display:flex;justify-content:flex-end;margin-top:0;padding:20px;border-style:none}.mx-window.mx-window-view .mx-window-body{overflow:hidden;padding:0}.mx-window.mx-window-view .mx-window-body>.mx-dataview>.mx-dataview-content,.mx-window.mx-window-view .mx-window-body>.mx-placeholder>.mx-dataview>.mx-dataview-content{padding:20px}.mx-window.mx-window-view .mx-window-body>.mx-dataview>.mx-dataview-controls,.mx-window.mx-window-view .mx-window-body>.mx-placeholder>.mx-dataview>.mx-dataview-controls{display:flex;justify-content:flex-end;margin:0;padding:20px;text-align:left;border-top:1px solid #D7D7D7}.mx-window .mx-dataview-controls{padding-bottom:0}.mx-window .mx-layoutgrid{padding-right:0;padding-left:0}.mx-login .modal-body{padding:0 15px}.mx-login .modal-content input{height:56px;padding:12px 12px;border:1px solid #EEEEEE;background:#EEEEEE;box-shadow:none;font-size:16px}.mx-login .modal-content input:focus{border-color:#66AFE9}.mx-login .modal-header,.mx-login .modal-footer{border:0}.mx-login button{font-size:16px}.mx-login h4{color:#AAAAAA;font-size:20px;font-weight:bold}.mx-navbar{margin:0;border-style:none;border-radius:0;background-color:#252C36}.mx-navbar ul.nav{margin:0}.mx-navbar ul.nav>li.mx-navbar-item>a{display:flex;align-items:center;min-height:60px;padding:5px 15px;vertical-align:middle;color:#fff;border-radius:0;font-size:14px;font-weight:normal}.mx-navbar ul.nav>li.mx-navbar-item>a .caret{border-top-color:#fff;border-bottom-color:#fff}.mx-navbar ul.nav>li.mx-navbar-item>a:hover,.mx-navbar ul.nav>li.mx-navbar-item>a:focus,.mx-navbar ul.nav>li.mx-navbar-item>a.active{text-decoration:none;color:#fff;background-color:#2d3642}.mx-navbar ul.nav>li.mx-navbar-item>a:hover .caret,.mx-navbar ul.nav>li.mx-navbar-item>a:focus .caret,.mx-navbar ul.nav>li.mx-navbar-item>a.active .caret{border-top-color:#fff;border-bottom-color:#fff}.mx-navbar ul.nav>li.mx-navbar-item>a.active{color:#fff;background-color:#36404e}.mx-navbar ul.nav>li.mx-navbar-item>a .mx-navbar-submenu::before{position:absolute;top:-9px;left:15px;width:0;height:0;content:'';-webkit-transform:rotate(360deg);transform:rotate(360deg);border-width:0 9px 9px 9px;border-style:solid;border-color:transparent transparent #2d3642 transparent}.mx-navbar ul.nav>li.mx-navbar-item>a img{width:20px;height:auto;margin-right:0.5em}.mx-navbar ul.nav>li.mx-navbar-item>a .glyphicon{top:0;margin-right:0.5em;vertical-align:middle;font-size:20px}.mx-navbar ul.nav>.mx-navbar-item.active a{color:#fff}.mx-navbar ul.nav>.mx-navbar-item>a:hover,.mx-navbar ul.nav>.mx-navbar-item>a:focus,.mx-navbar ul.nav>.mx-navbar-item.open>a,.mx-navbar ul.nav>.mx-navbar-item.open>a:hover,.mx-navbar ul.nav>.mx-navbar-item.open>a:focus{text-decoration:none;color:#fff;background-color:#2d3642}.mx-navbar ul.nav>.mx-navbar-item>a:hover .caret,.mx-navbar ul.nav>.mx-navbar-item>a:focus .caret,.mx-navbar ul.nav>.mx-navbar-item.open>a .caret,.mx-navbar ul.nav>.mx-navbar-item.open>a:hover .caret,.mx-navbar ul.nav>.mx-navbar-item.open>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.mx-navbar ul.nav>.mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem.active a{color:#0595DB;background-color:#1d222a}.mx-navbar ul.nav>.mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem.active a .caret{border-top-color:#0595DB;border-bottom-color:#0595DB}@media (max-width: 768px){.mx-navbar ul.nav>li.mx-navbar-item>a{padding:10px 20px}.mx-navbar .mx-navbar-item.open .dropdown-menu{padding:0;border-radius:0;background-color:#1d222a}.mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a{padding:10px 20px;color:#AAA;border-radius:0;font-size:12px;font-weight:normal}.mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a:hover,.mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a:focus{color:#0595DB;background-color:#1d222a}.mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a.active{color:#0595DB;background-color:#1d222a}}.mx-navbar:focus{outline:0}.region-topbar .mx-navbar{background-color:#fff}.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a{color:#555;font-size:14px}.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a .caret{border-top-color:#555;border-bottom-color:#555}.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a:hover,.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a:focus,.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a.active{color:#555;background-color:#f5f5f5}.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a:hover .caret,.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a:focus .caret,.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a.active .caret{border-top-color:#555;border-bottom-color:#555}.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a.active{color:#555;background-color:#ebebeb}.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a .mx-navbar-submenu::before{border-color:transparent transparent #D7D7D7 transparent}.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a .glyphicon{font-size:1.2em}.region-topbar .mx-navbar ul.nav>.mx-navbar-item>a:hover,.region-topbar .mx-navbar ul.nav>.mx-navbar-item>a:focus,.region-topbar .mx-navbar ul.nav>.mx-navbar-item.active a,.region-topbar .mx-navbar ul.nav>.mx-navbar-item.open>a,.region-topbar .mx-navbar ul.nav>.mx-navbar-item.open>a:hover,.region-topbar .mx-navbar ul.nav>.mx-navbar-item.open>a:focus{color:#555;background-color:#f5f5f5}.region-topbar .mx-navbar ul.nav>.mx-navbar-item>a:hover .caret,.region-topbar .mx-navbar ul.nav>.mx-navbar-item>a:focus .caret,.region-topbar .mx-navbar ul.nav>.mx-navbar-item.active a .caret,.region-topbar .mx-navbar ul.nav>.mx-navbar-item.open>a .caret,.region-topbar .mx-navbar ul.nav>.mx-navbar-item.open>a:hover .caret,.region-topbar .mx-navbar ul.nav>.mx-navbar-item.open>a:focus .caret{border-top-color:#555;border-bottom-color:#555}.region-topbar .mx-navbar ul.nav>.mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem.active a{color:#0595DB;background-color:#fff}.region-topbar .mx-navbar ul.nav>.mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem.active a .caret{border-top-color:#0595DB;border-bottom-color:#0595DB}@media (max-width: 768px){.region-topbar .mx-navbar .mx-navbar-item.open .dropdown-menu{background-color:#fff}.region-topbar .mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a{color:#AAA;font-size:12px}.region-topbar .mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a:hover,.region-topbar .mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a:focus{color:#0595DB;background-color:#fff}.region-topbar .mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a.active{color:#0595DB;background-color:#fff}}.region-sidebar .mx-navbar{background-color:#252C36}.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a{color:#fff;font-size:14px}.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a .caret{border-top-color:#fff;border-bottom-color:#fff}.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a:hover,.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a:focus,.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a.active{color:#fff;background-color:#2d3642}.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a:hover .caret,.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a:focus .caret,.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a.active .caret{border-top-color:#fff;border-bottom-color:#fff}.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a.active{color:#fff;background-color:#36404e}.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a .mx-navbar-submenu::before{border-color:transparent transparent #2d3642 transparent}.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a .glyphicon{font-size:20px}.region-sidebar .mx-navbar ul.nav>.mx-navbar-item>a:hover,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item>a:focus,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.active a,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.open>a,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.open>a:hover,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.open>a:focus{color:#fff;background-color:#2d3642}.region-sidebar .mx-navbar ul.nav>.mx-navbar-item>a:hover .caret,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item>a:focus .caret,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.active a .caret,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.open>a .caret,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.open>a:hover .caret,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.open>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem.active a{color:#0595DB;background-color:#1d222a}.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem.active a .caret{border-top-color:#0595DB;border-bottom-color:#0595DB}@media (max-width: 768px){.region-sidebar .mx-navbar .mx-navbar-item.open .dropdown-menu{background-color:#fff}.region-sidebar .mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a{color:#AAA;font-size:12px}.region-sidebar .mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a:hover,.region-sidebar .mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a:focus{color:#0595DB;background-color:#1d222a}.region-sidebar .mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a.active{color:#0595DB;background-color:#1d222a}}.mx-navigationlist{margin:0;padding:0;list-style:none}.mx-navigationlist li.mx-navigationlist-item{-webkit-transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);-moz-transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);-o-transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);transform-style:initial;padding:15px 15px 15px 15px;border-width:1px;border-style:none none solid none;border-color:#D7D7D7;border-radius:0;background-color:#fff}.mx-navigationlist li.mx-navigationlist-item:hover,.mx-navigationlist li.mx-navigationlist-item:focus{color:inherit;background-color:#f7f7f7}.mx-navigationlist li.mx-navigationlist-item.active{color:inherit;background-color:#f3f3f3}.mx-navigationtree{background-color:#252C36}.mx-navigationtree .navbar-inner>ul{margin:0;padding-left:0}.mx-navigationtree .navbar-inner>ul>li{padding:0;border-style:none}.mx-navigationtree .navbar-inner>ul>li>a{display:flex;align-items:center;height:60px;padding:5px 15px;color:#fff;border-bottom:1px solid #2d3642;border-radius:0;background-color:#252C36;text-shadow:none;font-size:14px;font-weight:normal}.mx-navigationtree .navbar-inner>ul>li>a .caret{border-top-color:#fff;border-bottom-color:#fff}.mx-navigationtree .navbar-inner>ul>li>a img{width:20px;height:auto;margin-right:0.5em}.mx-navigationtree .navbar-inner>ul>li>a .glyphicon{top:0;margin-right:0.5em;vertical-align:middle;font-size:20px}.mx-navigationtree .navbar-inner>ul>li a:hover,.mx-navigationtree .navbar-inner>ul>li a:focus,.mx-navigationtree .navbar-inner>ul>li a.active{text-decoration:none;color:#fff;background-color:#2d3642}.mx-navigationtree .navbar-inner>ul>li a:hover .caret,.mx-navigationtree .navbar-inner>ul>li a:focus .caret,.mx-navigationtree .navbar-inner>ul>li a.active .caret{border-top-color:#fff;border-bottom-color:#fff}.mx-navigationtree .navbar-inner>ul>li a.active{color:#fff;border-left-color:#fff;background-color:#36404e}.mx-navigationtree li.mx-navigationtree-has-items>ul{margin:0;padding-left:0;background-color:#1d222a}.mx-navigationtree li.mx-navigationtree-has-items>ul li{margin:0;padding:0;border:0}.mx-navigationtree li.mx-navigationtree-has-items>ul li a{padding:12px 20px 12px 25px;text-decoration:none;color:#AAA;border:0;background-color:#1d222a;text-shadow:none;font-size:12px;font-weight:normal}.mx-navigationtree li.mx-navigationtree-has-items>ul li a:hover,.mx-navigationtree li.mx-navigationtree-has-items>ul li a:focus,.mx-navigationtree li.mx-navigationtree-has-items>ul li a.active{color:#0595DB;outline:0;background-color:#1d222a}.mx-navigationtree li.mx-navigationtree-has-items>ul li a.active{color:#0595DB;border:0;background-color:#1d222a}.mx-navigationtree:focus{outline:0}.region-topbar .mx-navigationtree{background-color:#fff}.region-topbar .mx-navigationtree .navbar-inner>ul>li>a{color:#555;border-color:#D7D7D7;background-color:#fff;font-size:14px}.region-topbar .mx-navigationtree .navbar-inner>ul>li>a .caret{border-top-color:#555;border-bottom-color:#555}.region-topbar .mx-navigationtree .navbar-inner>ul>li>a .glyphicon{font-size:1.2em}.region-topbar .mx-navigationtree .navbar-inner>ul>li a:hover,.region-topbar .mx-navigationtree .navbar-inner>ul>li a:focus,.region-topbar .mx-navigationtree .navbar-inner>ul>li a.active{color:#555;background-color:#f5f5f5}.region-topbar .mx-navigationtree .navbar-inner>ul>li a:hover .caret,.region-topbar .mx-navigationtree .navbar-inner>ul>li a:focus .caret,.region-topbar .mx-navigationtree .navbar-inner>ul>li a.active .caret{border-top-color:#555;border-bottom-color:#555}.region-topbar .mx-navigationtree .navbar-inner>ul>li a.active{color:#555;border-left-color:#555;background-color:#ebebeb}.region-topbar .mx-navigationtree li.mx-navigationtree-has-items>ul{background-color:#fff}.region-topbar .mx-navigationtree li.mx-navigationtree-has-items>ul li a{color:#AAA;background-color:#fff;font-size:12px}.region-topbar .mx-navigationtree li.mx-navigationtree-has-items>ul li a:hover,.region-topbar .mx-navigationtree li.mx-navigationtree-has-items>ul li a:focus,.region-topbar .mx-navigationtree li.mx-navigationtree-has-items>ul li a.active{color:#0595DB;background-color:#fff}.region-topbar .mx-navigationtree li.mx-navigationtree-has-items>ul li a.active{color:#0595DB;background-color:#fff}.region-sidebar .mx-navigationtree{background-color:#252C36}.region-sidebar .mx-navigationtree .navbar-inner>ul>li>a{color:#fff;border-color:#2d3642;background-color:#252C36;font-size:14px}.region-sidebar .mx-navigationtree .navbar-inner>ul>li>a .caret{border-top-color:#fff;border-bottom-color:#fff}.region-sidebar .mx-navigationtree .navbar-inner>ul>li>a .glyphicon{font-size:20px}.region-sidebar .mx-navigationtree .navbar-inner>ul>li a:hover,.region-sidebar .mx-navigationtree .navbar-inner>ul>li a:focus,.region-sidebar .mx-navigationtree .navbar-inner>ul>li a.active{color:#fff;background-color:#2d3642}.region-sidebar .mx-navigationtree .navbar-inner>ul>li a:hover .caret,.region-sidebar .mx-navigationtree .navbar-inner>ul>li a:focus .caret,.region-sidebar .mx-navigationtree .navbar-inner>ul>li a.active .caret{border-top-color:#fff;border-bottom-color:#fff}.region-sidebar .mx-navigationtree .navbar-inner>ul>li a.active{color:#fff;border-left-color:#fff;background-color:#36404e}.region-sidebar .mx-navigationtree li.mx-navigationtree-has-items>ul{background-color:#1d222a}.region-sidebar .mx-navigationtree li.mx-navigationtree-has-items>ul li a{color:#AAA;background-color:#1d222a;font-size:12px}.region-sidebar .mx-navigationtree li.mx-navigationtree-has-items>ul li a:hover,.region-sidebar .mx-navigationtree li.mx-navigationtree-has-items>ul li a:focus,.region-sidebar .mx-navigationtree li.mx-navigationtree-has-items>ul li a.active{color:#0595DB;background-color:#1d222a}.region-sidebar .mx-navigationtree li.mx-navigationtree-has-items>ul li a.active{color:#0595DB;background-color:#1d222a}.nav-content-center-text-icons.mx-navigationtree .navbar-inner ul a{flex-direction:column;justify-content:center}.nav-content-center-text-icons.mx-navigationtree .navbar-inner ul a .glyphicon{margin:0 0 5px 0}.nav-content-center.mx-navigationtree .navbar-inner ul a{justify-content:center}.popupmenu{position:relative;display:inline-flex}.popupmenu-trigger{cursor:pointer}.popupmenu-menu{position:absolute;z-index:999;display:none;flex-direction:column;width:max-content;border-radius:8px;background-color:#fff;box-shadow:0 2px 20px 1px rgba(5,15,129,0.05),0 2px 16px 0 rgba(33,43,54,0.08)}.popupmenu-menu.popupmenu-position-left{top:0;left:0;transform:translateX(-100%)}.popupmenu-menu.popupmenu-position-right{top:0;right:0;transform:translateX(100%)}.popupmenu-menu.popupmenu-position-top{top:0;transform:translateY(-100%)}.popupmenu-menu.popupmenu-position-bottom{bottom:0;transform:translateY(100%)}.popupmenu-menu .popupmenu-basic-item:first-child,.popupmenu-menu .popupmenu-custom-item:first-child{border-top-left-radius:8px;border-top-right-radius:8px}.popupmenu-menu .popupmenu-basic-item:last-child,.popupmenu-menu .popupmenu-custom-item:last-child{border-bottom-right-radius:8px;border-bottom-left-radius:8px}.popupmenu-basic-divider{width:100%;height:1px;background-color:#ddd}.popupmenu-basic-item{padding:12px 16px;color:#555;font-size:14px}.popupmenu-basic-item:hover,.popupmenu-basic-item:focus,.popupmenu-basic-item:active{cursor:pointer;border-color:#F5F8FD;background-color:#F5F8FD}.popupmenu-basic-item-inverse{color:#252C36}.popupmenu-basic-item-primary{color:#0595DB}.popupmenu-basic-item-info{color:#48B0F7}.popupmenu-basic-item-success{color:#76CA02}.popupmenu-basic-item-warning{color:#F99B1D}.popupmenu-basic-item-danger{color:#ED1C24}.popupmenu-custom-item:hover,.popupmenu-custom-item:focus,.popupmenu-custom-item:active{cursor:pointer;border-color:#F5F8FD;background-color:#F5F8FD}.mx-menubar{padding:0;background-color:#252C36}.mx-menubar ul.mx-menubar-list{display:flex;width:100%;min-height:50px}.mx-menubar ul.mx-menubar-list li.mx-menubar-item{margin:0}.mx-menubar ul.mx-menubar-list li.mx-menubar-item>a{display:flex;overflow:hidden;align-items:center;justify-content:center;height:100%;padding:5px 15px;white-space:nowrap;color:#fff;border-radius:0;font-size:14px;font-weight:normal}.mx-menubar ul.mx-menubar-list li.mx-menubar-item>a img{margin-right:0.5em}.mx-menubar ul.mx-menubar-list li.mx-menubar-item>a .glyphicon{top:-1px;margin-right:0.5em;vertical-align:middle;font-size:20px}.mx-menubar ul.mx-menubar-list li.mx-menubar-item a:hover,.mx-menubar ul.mx-menubar-list li.mx-menubar-item a:focus,.mx-menubar ul.mx-menubar-list li.mx-menubar-item:hover a,.mx-menubar ul.mx-menubar-list li.mx-menubar-item:focus a,.mx-menubar ul.mx-menubar-list li.mx-menubar-item.active a{text-decoration:none;color:#fff;background-color:#2d3642}.mx-menubar ul.mx-menubar-list li.mx-menubar-item.active a{color:#fff;background-color:#36404e}.mx-menubar:focus{outline:0}.mx-menubar-vertical{background-color:#252C36}.mx-menubar-vertical ul.mx-menubar-list{display:flex}.mx-menubar-vertical ul.mx-menubar-list li.mx-menubar-item{display:block}.mx-menubar-vertical ul.mx-menubar-list li.mx-menubar-item a{border-bottom:1px solid #2d3642}.mx-menubar-horizontal{box-shadow:2px 0 4px 0 rgba(0,0,0,0.14)}.mx-menubar-horizontal ul.mx-menubar-list li.mx-menubar-item{width:auto}.mx-menubar-horizontal ul.mx-menubar-list li.mx-menubar-item a{width:100%}.mx-menubar-horizontal.menubar-col-6 ul.mx-menubar-list li.mx-menubar-item{width:50%}.mx-menubar-horizontal.menubar-col-4 ul.mx-menubar-list li.mx-menubar-item{width:33.33333333%}.mx-menubar-horizontal.menubar-col-3 ul.mx-menubar-list li.mx-menubar-item{width:25%}.mx-menubar-horizontal.menubar-col-2 ul.mx-menubar-list li.mx-menubar-item{width:20%}.region-topbar .mx-menubar{background-color:#fff}.region-topbar .mx-menubar ul.mx-menubar-list li.mx-menubar-item a{color:#555;font-size:14px}.region-topbar .mx-menubar ul.mx-menubar-list li.mx-menubar-item a .glyphicon{font-size:1.2em}.region-topbar .mx-menubar ul.mx-menubar-list li.mx-menubar-item a:hover,.region-topbar .mx-menubar ul.mx-menubar-list li.mx-menubar-item a:focus,.region-topbar .mx-menubar ul.mx-menubar-list li.mx-menubar-item:hover a,.region-topbar .mx-menubar ul.mx-menubar-list li.mx-menubar-item:focus a,.region-topbar .mx-menubar ul.mx-menubar-list li.mx-menubar-item.active a{color:#555;background-color:#f5f5f5}.region-topbar .mx-menubar ul.mx-menubar-list li.mx-menubar-item.active a{color:#555;background-color:#ebebeb}.region-topbar .mx-menubar-vertical{background-color:#fff}.region-topbar .mx-menubar-vertical ul.mx-menubar-list li.mx-menubar-item a{height:60px;border-color:#D7D7D7}.region-sidebar .mx-menubar{background-color:#252C36}.region-sidebar .mx-menubar ul.mx-menubar-list li.mx-menubar-item a{color:#fff;font-size:14px}.region-sidebar .mx-menubar ul.mx-menubar-list li.mx-menubar-item a .glyphicon{font-size:20px}.region-sidebar .mx-menubar ul.mx-menubar-list li.mx-menubar-item a:hover,.region-sidebar .mx-menubar ul.mx-menubar-list li.mx-menubar-item a:focus,.region-sidebar .mx-menubar ul.mx-menubar-list li.mx-menubar-item:hover a,.region-sidebar .mx-menubar ul.mx-menubar-list li.mx-menubar-item:focus a,.region-sidebar .mx-menubar ul.mx-menubar-list li.mx-menubar-item.active a{color:#fff;background-color:#2d3642}.region-sidebar .mx-menubar ul.mx-menubar-list li.mx-menubar-item.active a{color:#fff;background-color:#36404e}.region-sidebar .mx-menubar-vertical{background-color:#252C36}.region-sidebar .mx-menubar-vertical ul.mx-menubar-list li.mx-menubar-item a{border-color:#2d3642}@supports (padding-bottom: env(safe-area-inset-bottom)){.mx-menubar{padding-bottom:env(safe-area-inset-bottom)}}.bottom-nav-text-icons.mx-menubar ul.mx-menubar-list li.mx-menubar-item a{flex-direction:column;padding:8px 8px 6px 8px;line-height:normal;font-size:11px}.bottom-nav-text-icons.mx-menubar ul.mx-menubar-list li.mx-menubar-item a .glyphicon{display:block;margin:0 0 5px 0;font-size:18px}.bottom-nav-text-icons.mx-menubar ul.mx-menubar-list li.mx-menubar-item a img{display:block;height:18px;margin:0 0 5px 0}.mx-radiobuttons.inline .mx-radiogroup{display:flex;flex-direction:row}.mx-radiobuttons.inline .mx-radiogroup .radio{margin:0 20px 0 0}.mx-radiobuttons .radio:last-child{margin-bottom:0}.radio{display:flex !important;align-items:center;margin-top:0}input[type='radio']{position:relative !important;width:16px;height:16px;margin:0;cursor:pointer;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;-webkit-user-select:none;user-select:none;appearance:none;-moz-appearance:none;-webkit-appearance:none}input[type='radio']::-ms-check{color:#D7D7D7;border-color:#D7D7D7;background-color:#fff}input[type='radio']:focus::-ms-check,input[type='radio']:checked::-ms-check{color:#0595DB;border-color:#0595DB;background-color:#fff}input[type='radio']:before,input[type='radio']:after{position:absolute;display:block;transition:all 0.3s ease-in-out;border-radius:50%}input[type='radio']:before{width:100%;height:100%;content:'';border:1px solid #D7D7D7;background-color:transparent}input[type='radio']:after{top:50%;left:50%;width:50%;height:50%;transform:translate(-50%, -50%);pointer-events:none;background-color:#0595DB}input[type='radio']:not(:checked):after{transform:translate(-50%, -50%) scale(0);opacity:0}input[type='radio']:not(:disabled):not(:checked):hover:after{background-color:#D7D7D7}input[type='radio']:checked:after,input[type='radio']:not(:disabled):not(:checked):hover:after{content:'';transform:translate(-50%, -50%) scale(1);opacity:1}input[type='radio']:checked:before{border-color:#0595DB;background-color:#fff}input[type='radio']:disabled:before{background-color:#eee}input[type='radio']:checked:disabled:before{border-color:rgba(5,149,219,0.4)}input[type='radio']:checked:disabled:after{background-color:rgba(5,149,219,0.4)}input[type='radio']+label{margin-left:8px}.mx-tabcontainer .mx-tabcontainer-tabs{margin-bottom:20px;border-color:#D7D7D7}.mx-tabcontainer .mx-tabcontainer-tabs>li>a{margin-right:0;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;color:#888;font-weight:normal}.mx-tabcontainer .mx-tabcontainer-tabs>li>a:hover,.mx-tabcontainer .mx-tabcontainer-tabs>li>a:focus{background-color:#e4e4e4}.mx-tabcontainer .mx-tabcontainer-tabs>li.active>a,.mx-tabcontainer .mx-tabcontainer-tabs>li.active>a:hover,.mx-tabcontainer .mx-tabcontainer-tabs>li.active>a:focus{color:#555;border:1px solid #D7D7D7;border-bottom-color:transparent;background-color:#fff}.tab-mobile.mx-tabcontainer>.mx-tabcontainer-tabs{margin:0;text-align:center;border-style:none;background-color:#0595DB}.tab-mobile.mx-tabcontainer>.mx-tabcontainer-tabs li{display:table-cell;float:none;width:1%;margin:0;text-align:center;border-style:none;border-radius:0}.tab-mobile.mx-tabcontainer>.mx-tabcontainer-tabs li a{padding:15px;text-transform:uppercase;color:#FFFFFF;border-width:0 1px 0 0;border-style:solid;border-color:rgba(255,255,255,0.3);border-radius:0;font-size:12px;font-weight:normal}.tab-mobile.mx-tabcontainer>.mx-tabcontainer-tabs li a:hover,.tab-mobile.mx-tabcontainer>.mx-tabcontainer-tabs li a:focus{background-color:inherit}.tab-mobile.mx-tabcontainer>.mx-tabcontainer-tabs li:last-child a{border-right:none}.tab-mobile.mx-tabcontainer>.mx-tabcontainer-tabs li.active>a,.tab-mobile.mx-tabcontainer>.mx-tabcontainer-tabs li.active>a:hover,.tab-mobile.mx-tabcontainer>.mx-tabcontainer-tabs li.active>a:focus{color:#FFFFFF;border-style:none;border-radius:0;background-color:#0477af}.mx-tabcontainer-badge{margin-left:8px;border-radius:12px;background-color:#0595DB;color:#fff;font-size:12px;font-weight:bold;line-height:1;padding:3px 7px}.tab-pills.mx-tabcontainer>.mx-tabcontainer-tabs{border:0}.tab-pills.mx-tabcontainer>.mx-tabcontainer-tabs>li>a{margin-right:2px;color:#888;border:1px solid #D7D7D7;border-radius:4px}.tab-pills.mx-tabcontainer>.mx-tabcontainer-tabs>li>a:hover,.tab-pills.mx-tabcontainer>.mx-tabcontainer-tabs>li>a:focus{background-color:#e4e4e4}.tab-pills.mx-tabcontainer>.mx-tabcontainer-tabs>li.active>a,.tab-pills.mx-tabcontainer>.mx-tabcontainer-tabs>li.active>a:hover,.tab-pills.mx-tabcontainer>.mx-tabcontainer-tabs>li.active>a:focus{color:#FFFFFF;border-color:#0595DB;background-color:#0595DB}.tab-lined.mx-tabcontainer>.mx-tabcontainer-tabs{border-width:3px}.tab-lined.mx-tabcontainer>.mx-tabcontainer-tabs li{margin-right:30px;margin-bottom:-3px}.tab-lined.mx-tabcontainer>.mx-tabcontainer-tabs li>a{padding:10px 0;color:#888;border:0;border-style:solid;border-color:transparent;border-bottom-width:3px;border-radius:0}.tab-lined.mx-tabcontainer>.mx-tabcontainer-tabs li>a:hover,.tab-lined.mx-tabcontainer>.mx-tabcontainer-tabs li>a:focus{color:#888;border:0;border-color:transparent;background:transparent}.tab-lined.mx-tabcontainer>.mx-tabcontainer-tabs li.active>a,.tab-lined.mx-tabcontainer>.mx-tabcontainer-tabs li.active>a:hover,.tab-lined.mx-tabcontainer>.mx-tabcontainer-tabs li.active>a:focus{color:#0595DB;border:0;border-bottom:3px solid #0595DB;background-color:transparent}.tab-justified.mx-tabcontainer>.mx-tabcontainer-tabs{width:100%;border-bottom:0}.tab-justified.mx-tabcontainer>.mx-tabcontainer-tabs>li{display:table-cell;float:none;width:1%;margin:0}@media (max-width: 767px){.tab-justified.mx-tabcontainer>.mx-tabcontainer-tabs>li{display:block;width:100%}}.tab-justified.mx-tabcontainer>.mx-tabcontainer-tabs>li>a{text-align:center;border-bottom:1px solid #D7D7D7}.tab-justified.mx-tabcontainer>.mx-tabcontainer-tabs>li.active>a{border-bottom-color:transparent;border-radius:4px}@media (max-width: 767px){.tab-justified.mx-tabcontainer>.mx-tabcontainer-tabs>li.active>a{border-bottom-color:#D7D7D7}}.tab-bordered.mx-tabcontainer>.mx-tabcontainer-tabs{margin:0}.tab-bordered.mx-tabcontainer>.mx-tabcontainer-content{padding:10px;border-width:0 1px 1px 1px;border-style:solid;border-color:#D7D7D7;background-color:#FFFFFF}.tab-wizard.mx-tabcontainer>.mx-tabcontainer-tabs{position:relative;display:flex;justify-content:space-between;border-style:none}.tab-wizard.mx-tabcontainer>.mx-tabcontainer-tabs::before{position:absolute;top:16px;display:block;width:100%;height:1px;content:"";background-color:#D7D7D7}.tab-wizard.mx-tabcontainer>.mx-tabcontainer-tabs>li{position:relative;float:none;width:100%;text-align:center}.tab-wizard.mx-tabcontainer>.mx-tabcontainer-tabs>li>a{width:33px;height:33px;margin:auto;padding:0;text-align:center;color:#ddd;border:1px solid #D7D7D7;border-radius:100%;background-color:#FFFFFF;font-size:18px;font-weight:bold;line-height:33px}.tab-wizard.mx-tabcontainer>.mx-tabcontainer-tabs>li.active>a,.tab-wizard.mx-tabcontainer>.mx-tabcontainer-tabs>li.active>a:hover,.tab-wizard.mx-tabcontainer>.mx-tabcontainer-tabs>li.active>a:focus{color:#FFFFFF;border-color:#0595DB;background-color:#0595DB}th{font-weight:bold}html body .mx-page table.mx-table th.nopadding,html body .mx-page table.mx-table td.nopadding{padding:0}table.mx-table>tbody>tr>th{padding:8px 8px 8px 8px}table.mx-table>tbody>tr>th s *{color:#666;font-weight:bold;font-weight:600}table.mx-table>tbody>tr>th>label{padding-top:7px;padding-bottom:6px}table.mx-table>tbody>tr>td{padding:8px 8px 8px 8px}table.mx-table>tbody>tr>td>div>label,table.mx-table>tbody>tr>td .mx-referenceselector-input-wrapper label{padding-top:7px;padding-bottom:6px}.mx-templategrid table.mx-table>tbody>tr>th,.mx-templategrid table.mx-table>tbody>tr>td{padding:8px 8px 8px 8px}.mx-list table.mx-table>tbody>tr>th,.mx-list table.mx-table>tbody>tr>td{padding:8px 8px 8px 8px}table.table-lined.mx-table>tbody>tr>td{border-width:1px 0;border-style:solid;border-color:#D7D7D7}table.table-bordered.mx-table>tbody>tr>th,table.table-bordered.mx-table>tbody>tr>td{border-width:1px;border-style:solid;border-color:#D7D7D7}table.table-compact.mx-table>tbody>tr>th,table.table-compact.mx-table>tbody>tr>td{padding-top:2px;padding-bottom:2px}table.table-sideless.mx-table>tbody>tr>td,table.table-sideless.mx-table>tbody>tr>th{padding-right:0}table.table-sideless.mx-table>tbody>tr>th:first-child,table.table-sideless.mx-table>tbody>tr>td:first-child{padding-left:0}table.table-spaceless.mx-table>tbody>tr>th,table.table-spaceless.mx-table>tbody>tr>td{padding:0}table.table-vertical.mx-table>tbody>tr>th{padding-bottom:0}table.table-vertical.mx-table>tbody>tr>th>label{padding:0}table.table-vertical.mx-table>tbody>tr>th>div>label{padding:0}table.table-align-vertical-middle.mx-table>tbody>tr>th,table.table-align-vertical-middle.mx-table>tbody>tr>td{vertical-align:middle}table.table-label-compact.mx-table>tbody>tr>th>label,table.table-label-compact.mx-table>tbody>tr>td>label{margin:0;padding:0}table.table-label-compact.mx-table>tbody>tr>th>div>label,table.table-label-compact.mx-table>tbody>tr>th .mx-referenceselector-input-wrapper label,table.table-label-compact.mx-table>tbody>tr>td>div>label,table.table-label-compact.mx-table>tbody>tr>td .mx-referenceselector-input-wrapper label{margin:0;padding:0}table.table-row-s.mx-table>tbody>tr>th,table.table-row-s.mx-table>tbody>tr>td{height:55px}table.table-row-m.mx-table>tbody>tr>th,table.table-row-m.mx-table>tbody>tr>td{height:70px}table.table-row-l.mx-table>tbody>tr>th,table.table-row-l.mx-table>tbody>tr>td{height:120px}table.table-fixed{table-layout:fixed}.mx-templategrid .mx-templategrid-content-wrapper{table-layout:fixed}.mx-templategrid .mx-templategrid-item{padding:15px 15px 15px 15px;cursor:default;background-color:#fff}.mx-templategrid .mx-templategrid-item:hover{background-color:transparent}.mx-templategrid .mx-templategrid-item.selected{background-color:#f3f3f3 !important}.mx-templategrid .mx-layoutgrid{padding-top:0 !important;padding-bottom:0 !important}.templategrid-selectable.mx-templategrid .mx-templategrid-item{cursor:pointer}.templategrid-lined.mx-templategrid .mx-grid-content{border-top-width:2px;border-top-style:solid;border-top-color:#D7D7D7}.templategrid-lined.mx-templategrid .mx-templategrid-item{border-top:1px solid #D7D7D7;border-right:none;border-bottom:1px solid #D7D7D7;border-left:none}.templategrid-striped.mx-templategrid .mx-templategrid-row:nth-child(odd) .mx-templategrid-item{background-color:#F9F9F9}.templategrid-stylingless.mx-templategrid .mx-templategrid-item{padding:0;cursor:default;border:0;background-color:transparent}.templategrid-stylingless.mx-templategrid .mx-templategrid-item:hover{background-color:transparent}.templategrid-stylingless.mx-templategrid .mx-templategrid-item.selected{background-color:transparent !important}.templategrid-stylingless.mx-templategrid .mx-templategrid-item.selected:hover{background-color:transparent !important}.templategrid-transparent.mx-templategrid .mx-templategrid-item{border:0;background-color:transparent}.templategrid-hover.mx-templategrid .mx-templategrid-item:hover{background-color:#f7f7f7 !important}.templategrid-hover.mx-templategrid .mx-templategrid-item.selected{background-color:#f3f3f3 !important}.templategrid-hover.mx-templategrid .mx-templategrid-item.selected:hover{background-color:#ebebeb !important}.templategrid-lg.mx-templategrid .mx-templategrid-item{padding:30px 30px 30px 30px}.templategrid-sm.mx-templategrid .mx-templategrid-item{padding:7.5px 7.5px 7.5px 7.5px}.mx-templategrid[class*="tg-col"]{overflow:hidden}.mx-templategrid[class*="tg-col"] .mx-templategrid-content-wrapper{display:block}.mx-templategrid[class*="tg-col"] .mx-templategrid-row{display:block;margin-right:-15px;margin-left:-15px}.mx-templategrid[class*="tg-col"] .mx-templategrid-row::before,.mx-templategrid[class*="tg-col"] .mx-templategrid-row::after{display:table;clear:both;content:" "}.mx-templategrid[class*="tg-col"] .mx-templategrid-item{position:relative;display:block;float:left;min-height:1px;padding-right:15px;padding-left:15px;border:0}@media (max-width: 992px){.mx-templategrid[class*="tg-col"] .mx-templategrid-item{width:100% !important}}.mx-templategrid[class*="tg-col"] .mx-templategrid-item .mx-dataview{overflow:hidden}.mx-templategrid[class*="tg-col"].tg-col-xs-12 .mx-templategrid-item{width:100% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-11 .mx-templategrid-item{width:91.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-10 .mx-templategrid-item{width:83.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-9 .mx-templategrid-item{width:75% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-8 .mx-templategrid-item{width:66.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-7 .mx-templategrid-item{width:58.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-6 .mx-templategrid-item{width:50% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-5 .mx-templategrid-item{width:41.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-4 .mx-templategrid-item{width:33.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-3 .mx-templategrid-item{width:25% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-2 .mx-templategrid-item{width:16.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-1 .mx-templategrid-item{width:8.33333333% !important}@media (min-width: 768px){.mx-templategrid[class*="tg-col"].tg-col-sm-12 .mx-templategrid-item{width:100% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-11 .mx-templategrid-item{width:91.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-10 .mx-templategrid-item{width:83.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-9 .mx-templategrid-item{width:75% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-8 .mx-templategrid-item{width:66.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-7 .mx-templategrid-item{width:58.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-6 .mx-templategrid-item{width:50% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-5 .mx-templategrid-item{width:41.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-4 .mx-templategrid-item{width:33.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-3 .mx-templategrid-item{width:25% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-2 .mx-templategrid-item{width:16.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-1 .mx-templategrid-item{width:8.33333333% !important}}@media (min-width: 992px){.mx-templategrid[class*="tg-col"].tg-col-md-12 .mx-templategrid-item{width:100% !important}.mx-templategrid[class*="tg-col"].tg-col-md-11 .mx-templategrid-item{width:91.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-md-10 .mx-templategrid-item{width:83.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-md-9 .mx-templategrid-item{width:75% !important}.mx-templategrid[class*="tg-col"].tg-col-md-8 .mx-templategrid-item{width:66.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-md-7 .mx-templategrid-item{width:58.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-md-6 .mx-templategrid-item{width:50% !important}.mx-templategrid[class*="tg-col"].tg-col-md-5 .mx-templategrid-item{width:41.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-md-4 .mx-templategrid-item{width:33.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-md-3 .mx-templategrid-item{width:25% !important}.mx-templategrid[class*="tg-col"].tg-col-md-2 .mx-templategrid-item{width:16.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-md-1 .mx-templategrid-item{width:8.33333333% !important}}@media (min-width: 1200px){.mx-templategrid[class*="tg-col"].tg-col-lg-12 .mx-templategrid-item{width:100% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-11 .mx-templategrid-item{width:91.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-10 .mx-templategrid-item{width:83.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-9 .mx-templategrid-item{width:75% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-8 .mx-templategrid-item{width:66.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-7 .mx-templategrid-item{width:58.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-6 .mx-templategrid-item{width:50% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-5 .mx-templategrid-item{width:41.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-4 .mx-templategrid-item{width:33.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-3 .mx-templategrid-item{width:25% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-2 .mx-templategrid-item{width:16.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-1 .mx-templategrid-item{width:8.33333333% !important}}p{line-height:1.78571}label{padding-top:0}.mx-title{margin:15px 0 30px 0;color:#17347B;font-size:31px;font-weight:normal}h1,.h1,.h1>*{font-size:31px}h2,.h2,.h2>*{font-size:26px}h3,.h3,.h3>*{font-size:24px}h4,.h4,.h4>*{font-size:18px}h5,.h5,.h5>*{font-size:14px}h6,.h6,.h6>*{font-size:12px}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin:15px 0 30px 0;color:#17347B;font-weight:normal;line-height:1.3}.text-small{font-size:12px !important}.text-large{font-size:16px !important}.text-light,.text-light>*,.text-light label{font-weight:100 !important}.text-normal,.text-normal>*,.text-normal label{font-weight:normal !important}.text-semibold,.text-semibold>*,.text-semibold label{font-weight:600 !important}.text-bold,.text-bold>*,.text-bold label{font-weight:bold !important}.text-default,.text-default:hover{color:#555 !important}.text-primary,.text-primary:hover{color:#0595DB !important}.text-info,.text-info:hover{color:#48B0F7 !important}.text-success,.text-success:hover{color:#76CA02 !important}.text-warning,.text-warning:hover{color:#F99B1D !important}.text-danger,.text-danger:hover{color:#ED1C24 !important}.text-header{color:#17347B !important}.text-detail{color:#888 !important}.text-white{color:#ffffff}.text-left{text-align:left !important}.text-center{text-align:center !important}.text-right{text-align:right !important}.text-justify{text-align:justify !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-break{word-break:break-all !important;word-break:break-word !important;-ms-word-break:break-all !important;-webkit-hyphens:auto !important;-moz-hyphens:auto !important;hyphens:auto !important}.text-nowrap{white-space:nowrap !important}.text-nowrap{overflow:hidden !important;max-width:100% !important;white-space:nowrap !important;text-overflow:ellipsis !important}.mx-layoutgrid{width:100%;margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.row::before,.row::after{content:normal}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm,.col-sm-auto,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md,.col-md-auto,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg,.col-lg-auto,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.333333%;max-width:8.333333%}.col-2{flex:0 0 16.666667%;max-width:16.666667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.333333%;max-width:33.333333%}.col-5{flex:0 0 41.666667%;max-width:41.666667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.333333%;max-width:58.333333%}.col-8{flex:0 0 66.666667%;max-width:66.666667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.333333%;max-width:83.333333%}.col-11{flex:0 0 91.666667%;max-width:91.666667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1,.col-offset-1{margin-left:8.333333%}.offset-2,.col-offset-2{margin-left:16.666667%}.offset-3,.col-offset-3{margin-left:25%}.offset-4,.col-offset-4{margin-left:33.333333%}.offset-5,.col-offset-5{margin-left:41.666667%}.offset-6,.col-offset-6{margin-left:50%}.offset-7,.col-offset-7{margin-left:58.333333%}.offset-8,.col-offset-8{margin-left:66.666667%}.offset-9,.col-offset-9{margin-left:75%}.offset-10,.col-offset-10{margin-left:83.333333%}.offset-11,.col-offset-11{margin-left:91.666667%}@media (min-width: 576px){.mx-layoutgrid-fixed{max-width:540px}}@media (min-width: 768px){.mx-layoutgrid-fixed{max-width:720px}}@media (min-width: 992px){.mx-layoutgrid-fixed{max-width:960px}}@media (min-width: 1200px){.mx-layoutgrid-fixed{max-width:1140px}}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0,.col-sm-offset-0{margin-left:0}.offset-sm-1,.col-sm-offset-1{margin-left:8.333333%}.offset-sm-2,.col-sm-offset-2{margin-left:16.666667%}.offset-sm-3,.col-sm-offset-3{margin-left:25%}.offset-sm-4,.col-sm-offset-4{margin-left:33.333333%}.offset-sm-5,.col-sm-offset-5{margin-left:41.666667%}.offset-sm-6,.col-sm-offset-6{margin-left:50%}.offset-sm-7,.col-sm-offset-7{margin-left:58.333333%}.offset-sm-8,.col-sm-offset-8{margin-left:66.666667%}.offset-sm-9,.col-sm-offset-9{margin-left:75%}.offset-sm-10,.col-sm-offset-10{margin-left:83.333333%}.offset-sm-11,.col-sm-offset-11{margin-left:91.666667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0,.col-md-offset-0{margin-left:0}.offset-md-1,.col-md-offset-1{margin-left:8.333333%}.offset-md-2,.col-md-offset-2{margin-left:16.666667%}.offset-md-3,.col-md-offset-3{margin-left:25%}.offset-md-4,.col-md-offset-4{margin-left:33.333333%}.offset-md-5,.col-md-offset-5{margin-left:41.666667%}.offset-md-6,.col-md-offset-6{margin-left:50%}.offset-md-7,.col-md-offset-7{margin-left:58.333333%}.offset-md-8,.col-md-offset-8{margin-left:66.666667%}.offset-md-9,.col-md-offset-9{margin-left:75%}.offset-md-10,.col-md-offset-10{margin-left:83.333333%}.offset-md-11,.col-md-offset-11{margin-left:91.666667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0,.col-lg-offset-0{margin-left:0}.offset-lg-1,.col-lg-offset-1{margin-left:8.333333%}.offset-lg-2,.col-lg-offset-2{margin-left:16.666667%}.offset-lg-3,.col-lg-offset-3{margin-left:25%}.offset-lg-4,.col-lg-offset-4{margin-left:33.333333%}.offset-lg-5,.col-lg-offset-5{margin-left:41.666667%}.offset-lg-6,.col-lg-offset-6{margin-left:50%}.offset-lg-7,.col-lg-offset-7{margin-left:58.333333%}.offset-lg-8,.col-lg-offset-8{margin-left:66.666667%}.offset-lg-9,.col-lg-offset-9{margin-left:75%}.offset-lg-10,.col-lg-offset-10{margin-left:83.333333%}.offset-lg-11,.col-lg-offset-11{margin-left:91.666667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0,.col-xl-offset-0{margin-left:0}.offset-xl-1,.col-xl-offset-1{margin-left:8.333333%}.offset-xl-2,.col-xl-offset-2{margin-left:16.666667%}.offset-xl-3,.col-xl-offset-3{margin-left:25%}.offset-xl-4,.col-xl-offset-4{margin-left:33.333333%}.offset-xl-5,.col-xl-offset-5{margin-left:41.666667%}.offset-xl-6,.col-xl-offset-6{margin-left:50%}.offset-xl-7,.col-xl-offset-7{margin-left:58.333333%}.offset-xl-8,.col-xl-offset-8{margin-left:66.666667%}.offset-xl-9,.col-xl-offset-9{margin-left:75%}.offset-xl-10,.col-xl-offset-10{margin-left:83.333333%}.offset-xl-11,.col-xl-offset-11{margin-left:91.666667%}}.mx-progress{color:#555;background:#F5F8FD}.mx-progress .mx-progress-message{color:#555}.mx-progress .mx-progress-indicator{position:relative;overflow:hidden;width:100%;max-width:100%;height:2px;margin:auto;padding:0;border-radius:0;background:#eee}.mx-progress .mx-progress-indicator:before,.mx-progress .mx-progress-indicator:after{position:absolute;top:0;left:0;display:block;width:50%;height:2px;content:"";transform:translate3d(-100%, 0, 0);background:#0595DB}.mx-progress .mx-progress-indicator::before{animation:loader 2s infinite}.mx-progress .mx-progress-indicator::after{animation:loader 2s -2s infinite}@keyframes loader{0%{transform:translate3d(-100%, 0, 0)}100%{transform:translate3d(200%, 0, 0)}}.widget-timeline-date-header{display:inline-block;width:110px;overflow-wrap:break-word;padding:8px;text-align:center;border:1px solid #D7D7D7;border-radius:30px}.widget-timeline-events-wrapper{display:flex;flex:1;margin-left:55px;padding-top:35px}.widget-timeline-events-wrapper ul{padding:0;list-style:none;margin-bottom:0}.widget-timeline-title{color:#17347B;font-weight:600;margin:0 0 10px 0}.widget-timeline-description{color:#888}.widget-timeline-event{position:relative;margin-left:9px;padding-left:30px;padding-bottom:20px}.widget-timeline-event:not(:last-of-type){border-left:1px solid #D7D7D7}.widget-timeline-event.clickable{cursor:pointer;transition:background 0.8s}.widget-timeline-event.clickable:hover .widget-timeline-title{color:#dadcde}.widget-timeline-icon-wrapper{position:absolute;top:0;left:0;display:flex;justify-content:center;align-items:center;width:18px;height:18px;transform:translateX(-50%)}.widget-timeline-icon-wrapper .glyphicon{font-size:18px}.widget-timeline-icon-wrapper img{max-width:18px;max-height:18px}.widget-timeline-content-wrapper .widget-timeline-date-time-wrapper{margin-right:15px}.widget-timeline-content-wrapper .widget-timeline-info-wrapper{flex-direction:column}.widget-timeline-icon-circle{width:18px;height:18px;border-radius:50%;background-color:#0595DB}.widget-timeline-no-divider{padding-bottom:0;padding-top:0;margin-left:0}.widget-timeline-flex-container{display:flex}.d-none{display:none !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.show,.d-block{display:block !important}.table,.d-table{display:table !important}.table-row,.d-table-row{display:table-row !important}.table-cell,.d-table-cell{display:table-cell !important}.hide,.hidden{display:none !important;visibility:hidden !important}.invisible{visibility:hidden !important}.display-ie8-only:not([attr*=""]){display:none !important;padding:0 !important}.list-nostyle ul{margin:0 !important;padding:0 !important}.list-nostyle ul li{list-style-type:none !important}.nowrap,.nowrap *{overflow:hidden !important;white-space:nowrap !important;text-overflow:ellipsis !important}.table{display:table !important}.table-row{display:table-row !important}.table-cell{display:table-cell !important}.pull-left{float:left !important}.pull-right{float:right !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.row-left{display:flex !important;align-items:center !important;flex-flow:row !important;justify-content:flex-start !important}.row-center{display:flex !important;align-items:center !important;flex-flow:row !important;justify-content:center !important}.row-right{display:flex !important;align-items:center !important;flex-flow:row !important;justify-content:flex-end !important}.col-left{display:flex !important;align-items:flex-start !important;flex-direction:column !important;justify-content:center !important}.col-center{display:flex !important;align-items:center !important;flex-direction:column !important;justify-content:center !important}.col-right{display:flex !important;align-items:flex-end !important;flex-direction:column !important;justify-content:center !important}@media (max-width: 767px){.hide-phone{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hide-tablet{display:none !important}}@media (min-width: 992px){.hide-desktop{display:none !important}}@media (max-width: 575px){.hide-xs,.hidden-xs,.d-xs-none{display:none !important}.d-xs-flex{display:flex !important}.d-xs-inline-flex{display:inline-flex !important}.d-xs-inline{display:inline !important}.d-xs-inline-block{display:inline-block !important}.d-xs-block{display:block !important}.d-xs-table{display:table !important}.d-xs-table-row{display:table-row !important}.d-xs-table-cell{display:table-cell !important}}@media (min-width: 576px) and (max-width: 767px){.hide-sm,.hidden-sm,.d-sm-none{display:none !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.hide-md,.hidden-md,.d-md-none{display:none !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1200px){.hide-lg,.hidden-lg,.d-lg-none{display:none !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}}@media (min-width: 1200px){.hide-xl,.hidden-xl,.d-xl-none{display:none !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}}.mx-tooltip .dijitTooltipContainer{border-width:1px;border-color:#888;border-radius:4px;background:#ffffff;box-shadow:0 6px 12px rgba(0,0,0,0.175)}.mx-tooltip .dijitTooltipContainer .mx-tooltip-content{padding:10px}.mx-tooltip .dijitTooltipContainer .form-group{margin-bottom:5px}.mx-tooltip .dijitTooltipConnector{width:0;height:0;margin-left:-10px;border-width:10px 10px 10px 0;border-style:solid;border-color:transparent;border-right-color:#888}.dijitBorderContainer{padding:5px;background-color:#fcfcfc}.dijitBorderContainer .dijitSplitterV,.dijitBorderContainer .dijitGutterV{width:5px;border:0;background:#fcfcfc}.dijitBorderContainer .dijitSplitterH,.dijitBorderContainer .dijitGutterH{height:5px;border:0;background:#fcfcfc}.dijitBorderContainer .dijitSplitterH .dijitSplitterThumb{top:2px;width:19px;height:1px;background:#b0b0b0}.dijitBorderContainer .dijitSplitterV .dijitSplitterThumb{left:2px;width:1px;height:19px;background:#b0b0b0}.dijitBorderContainer .dijitSplitContainer-child,.dijitBorderContainer .dijitBorderContainer-child{border:1px solid #cccccc}.dijitBorderContainer .dijitBorderContainer-dijitTabContainerTop,.dijitBorderContainer .dijitBorderContainer-dijitTabContainerBottom,.dijitBorderContainer .dijitBorderContainer-dijitTabContainerLeft,.dijitBorderContainer .dijitBorderContainer-dijitTabContainerRight{border:none}.dijitBorderContainer .dijitBorderContainer-dijitBorderContainer{padding:0;border:none}.dijitBorderContainer .dijitSplitterActive{margin:0;opacity:0.6;background-color:#aaaaaa;background-image:none;font-size:1px;filter:alpha(opacity=60)}.dijitBorderContainer .dijitSplitContainer-dijitContentPane,.dijitBorderContainer .dijitBorderContainer-dijitContentPane{padding:5px;background-color:#ffffff}.dijitMenuPopup{margin-top:10px}.dijitMenuPopup .dijitMenu{display:block;width:200px !important;margin-top:0;padding:12px 10px;border-radius:3px;background:#252C36}.dijitMenuPopup .dijitMenu:after{position:absolute;bottom:100%;left:20px;width:0;height:0;margin-left:-10px;content:' ';pointer-events:none;border:medium solid transparent;border-width:10px;border-bottom-color:#252C36}.dijitMenuPopup .dijitMenu .dijitMenuItem{background:transparent}.dijitMenuPopup .dijitMenu .dijitMenuItem .dijitMenuItemLabel{display:block;overflow:hidden;width:180px !important;padding:10px;text-overflow:ellipsis;color:#ffffff;border-radius:3px}.dijitMenuPopup .dijitMenu .dijitMenuItem.dijitMenuItemHover{background:none}.dijitMenuPopup .dijitMenu .dijitMenuItem.dijitMenuItemHover .dijitMenuItemLabel{background:#0595DB}.dijitMenuPopup .dijitMenu .tg_newlabelmenuitem .dijitMenuItemLabel{font-weight:bold}.dijitMenuPopup .dijitMenu .dijitMenuSeparator td{padding:0;border-bottom-width:3px}.dijitMenuPopup .dijitMenu .dijitMenuSeparator .dijitMenuSeparatorIconCell>div{margin:0}div.widget-progress-bar .progress-bar-default{background-color:#ddd}div.widget-progress-bar .progress-bar-primary{background-color:#0595DB}div.widget-progress-bar .progress-bar-success{background-color:#76CA02}div.widget-progress-bar .progress-bar-info{background-color:#48B0F7}div.widget-progress-bar .progress-bar-warning{background-color:#F99B1D}div.widget-progress-bar .progress-bar-danger{background-color:#ED1C24}div.widget-progress-bar .progress-bar-inverse{background-color:#252C36}div.widget-progress-bar-alert.widget-progress-bar-text-contrast .progress-bar{color:#8e1116}div.widget-progress-bar-text-contrast .progress-bar{color:#555}path.widget-progress-circle-path{stroke:#0595DB}.widget-progress-circle-primary path.widget-progress-circle-path{stroke:#0595DB}.widget-progress-circle-primary .progressbar-text{color:#0595DB !important}.widget-progress-circle-info path.widget-progress-circle-path{stroke:#48B0F7}.widget-progress-circle-info .progressbar-text{color:#48B0F7 !important}.widget-progress-circle-success path.widget-progress-circle-path{stroke:#76CA02}.widget-progress-circle-success .progressbar-text{color:#76CA02 !important}.widget-progress-circle-warning path.widget-progress-circle-path{stroke:#F99B1D}.widget-progress-circle-warning .progressbar-text{color:#F99B1D !important}.widget-progress-circle-danger path.widget-progress-circle-path{stroke:#ED1C24}.widget-progress-circle-danger .progressbar-text{color:#ED1C24 !important}.widget-progress-circle-inverse path.widget-progress-circle-path{stroke:#252C36}.widget-progress-circle-inverse .progressbar-text{color:#252C36 !important}div.widget-range-slider .rc-slider-handle,div.widget-range-slider .rc-slider-dot-active{border-color:#ddd}div.widget-range-slider .rc-slider-handle:active,div.widget-range-slider .rc-slider-dot-active:active{border-color:#ddd;box-shadow:none}div.widget-range-slider .rc-slider-handle:hover,div.widget-range-slider .rc-slider-dot-active:hover{border-color:#ddd}div.widget-range-slider.has-error .rc-slider-track,div.widget-range-slider.has-error .rc-slider-rail{background-color:#ED1C24}div.widget-range-slider-primary .rc-slider-track{background-color:#0595DB}div.widget-range-slider-info .rc-slider-track{background-color:#48B0F7}div.widget-range-slider-success .rc-slider-track{background-color:#76CA02}div.widget-range-slider-warning .rc-slider-track{background-color:#F99B1D}div.widget-range-slider-danger .rc-slider-track{background-color:#ED1C24}div.widget-range-slider-inverse .rc-slider-track{background-color:#252C36}.rc-slider-tooltip{z-index:999}div.widget-slider .rc-slider-handle,div.widget-slider .rc-slider-dot-active{border-color:#ddd}div.widget-slider .rc-slider-handle:active,div.widget-slider .rc-slider-dot-active:active{border-color:#ddd}div.widget-slider .rc-slider-handle:hover,div.widget-slider .rc-slider-dot-active:hover{border-color:#ddd}div.widget-slider.has-error .rc-slider-track,div.widget-slider.has-error .rc-slider-rail{background-color:#ED1C24}div.widget-slider-primary .rc-slider-track{background-color:#0595DB}div.widget-slider-info .rc-slider-track{background-color:#48B0F7}div.widget-slider-success .rc-slider-track{background-color:#76CA02}div.widget-slider-warning .rc-slider-track{background-color:#F99B1D}div.widget-slider-danger .rc-slider-track{background-color:#ED1C24}div.widget-slider-inverse .rc-slider-track{background-color:#252C36}span.widget-star-rating-full-default{color:#ddd}span.widget-star-rating-full-primary{color:#0595DB}span.widget-star-rating-full-success{color:#76CA02}span.widget-star-rating-full-info{color:#48B0F7}span.widget-star-rating-full-warning{color:#F99B1D}span.widget-star-rating-full-danger{color:#ED1C24}span.widget-star-rating-full-inverse{color:#252C36}.widget-switch-btn-wrapper:focus{outline:1px solid #0595DB}div.widget-switch.iOS .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-default{border-color:#64bd63;background-color:#64bd63;box-shadow:#64bd63 0 0 0 16px inset}div.widget-switch.iOS .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-success{border-color:#76CA02;background-color:#76CA02;box-shadow:#76CA02 0 0 0 16px inset}div.widget-switch.iOS .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-info{border-color:#48B0F7;background-color:#48B0F7;box-shadow:#48B0F7 0 0 0 16px inset}div.widget-switch.iOS .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-primary{border-color:#0595DB;background-color:#0595DB;box-shadow:#0595DB 0 0 0 16px inset}div.widget-switch.iOS .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-warning{border-color:#F99B1D;background-color:#F99B1D;box-shadow:#F99B1D 0 0 0 16px inset}div.widget-switch.iOS .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-danger{border-color:#ED1C24;background-color:#ED1C24;box-shadow:#ED1C24 0 0 0 16px inset}div.widget-switch.iOS .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-inverse{border-color:#252C36;background-color:#252C36;box-shadow:#252C36 0 0 0 16px inset}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-default{background-color:#92cec7}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-default .widget-switch-btn{background:#6FBEB5}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-success{background-color:#94fd03}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-success .widget-switch-btn{background:#76CA02}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-info{background-color:#79c5f9}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-info .widget-switch-btn{background:#48B0F7}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-primary{background-color:#19b0fa}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-primary .widget-switch-btn{background:#0595DB}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-warning{background-color:#fab14f}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-warning .widget-switch-btn{background:#F99B1D}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-danger{background-color:#f14b52}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-danger .widget-switch-btn{background:#ED1C24}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-inverse{background-color:#3a4554}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-inverse .widget-switch-btn{background:#252C36}div.widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-default{border-color:#64bd63;background-color:#64bd63;box-shadow:#64bd63 0 0 0 16px inset}div.widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-success{border-color:#76CA02;background-color:#76CA02;box-shadow:#76CA02 0 0 0 16px inset}div.widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-info{border-color:#48B0F7;background-color:#48B0F7;box-shadow:#48B0F7 0 0 0 16px inset}div.widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-primary{border-color:#0595DB;background-color:#0595DB;box-shadow:#0595DB 0 0 0 16px inset}div.widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-warning{border-color:#F99B1D;background-color:#F99B1D;box-shadow:#F99B1D 0 0 0 16px inset}div.widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-danger{border-color:#ED1C24;background-color:#ED1C24;box-shadow:#ED1C24 0 0 0 16px inset}div.widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-inverse{border-color:#252C36;background-color:#252C36;box-shadow:#252C36 0 0 0 16px inset}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-default{background-color:#92cec7}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-default .widget-switch-btn{background:#6FBEB5}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-success{background-color:#94fd03}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-success .widget-switch-btn{background:#76CA02}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-info{background-color:#79c5f9}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-info .widget-switch-btn{background:#48B0F7}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-primary{background-color:#19b0fa}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-primary .widget-switch-btn{background:#0595DB}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-warning{background-color:#fab14f}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-warning .widget-switch-btn{background:#F99B1D}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-danger{background-color:#f14b52}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-danger .widget-switch-btn{background:#ED1C24}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-inverse{background-color:#3a4554}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-inverse .widget-switch-btn{background:#252C36}html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-default{border-color:#64bd63;background-color:#64bd63;box-shadow:#64bd63 0 0 0 16px inset}html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-success{border-color:#76CA02;background-color:#76CA02;box-shadow:#76CA02 0 0 0 16px inset}html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-info{border-color:#48B0F7;background-color:#48B0F7;box-shadow:#48B0F7 0 0 0 16px inset}html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-primary{border-color:#0595DB;background-color:#0595DB;box-shadow:#0595DB 0 0 0 16px inset}html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-warning{border-color:#F99B1D;background-color:#F99B1D;box-shadow:#F99B1D 0 0 0 16px inset}html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-danger{border-color:#ED1C24;background-color:#ED1C24;box-shadow:#ED1C24 0 0 0 16px inset}html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-inverse{border-color:#252C36;background-color:#252C36;box-shadow:#252C36 0 0 0 16px inset}.breadcrumb{margin:0;padding:0;border-radius:0;background-color:transparent;font-size:14px}.breadcrumb-item{display:inline-block;margin:0}.breadcrumb-item:last-child{color:#555}.breadcrumb-item:last-child a{text-decoration:none}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:10px;padding-left:10px;content:"/";color:#888}.breadcrumb-large{font-size:24px}.breadcrumb-underline{padding-bottom:15px;border-bottom:1px solid #D7D7D7}.card{padding:30px;border:1px solid #D7D7D7;border-radius:4px;background-color:#FFFFFF}.card-title{margin-top:0}.cardaction .card-image .glyphicon{font-size:58px}.cardmetrics .card-title{margin-bottom:0}.cardmetrics .card-image{width:100px;height:auto}.cardmetrics .card-image.btn{width:100px;height:100px;padding:0;cursor:default;pointer-events:none;font-size:40px}.cardmetrics .card-counter{margin:0;font-size:64px}.cardinfo .card-text{margin-bottom:30px}.textwithicon{overflow:hidden;max-width:100%;margin-bottom:15px;text-overflow:ellipsis}.textwithicon .textwithicon-icon,.textwithicon .textwithicon-text{display:inline-block;vertical-align:middle}.textwithicon .textwithicon-icon{margin-right:15px;padding:0;color:#0595DB;border:0;background:transparent;font-size:23px}.socialprofiles .socialprofiles-title{display:block;margin-bottom:10px;font-weight:bold}.socialprofiles .socialprofiles-button{width:24px;height:24px;margin-right:15px;padding:0;border-radius:24px}.socialprofiles .socialprofiles-button .glyphicon{margin:0}.cardtabs{padding:0}.cardtabs-tabs{margin:0}.cardtabs-tabs ul.mx-tabcontainer-tabs{display:flex;margin:0;background-color:#f7f7f7}.cardtabs-tabs ul.mx-tabcontainer-tabs li{flex:1 1 auto;text-align:center}.cardtabs-tabs ul.mx-tabcontainer-tabs li a,.cardtabs-tabs ul.mx-tabcontainer-tabs li a:hover,.cardtabs-tabs ul.mx-tabcontainer-tabs li a:focus{border-top-width:0;border-right-width:1px;border-left-width:0}.cardtabs-tabs ul.mx-tabcontainer-tabs li:first-child a{border-radius:4px 0 0 0}.cardtabs-tabs ul.mx-tabcontainer-tabs li:last-child a{border-radius:0 4px 0 0}@media (max-width: 767px){.cardtabs-tabs .mx-tabcontainer-pane{padding:15px}}@media (min-width: 768px){.cardtabs-tabs .mx-tabcontainer-pane{padding:30px}}@media (min-width: 992px){.cardtabs-tabs .mx-tabcontainer-pane{padding:30px}}.cardproduct,.cardproduct2,.cardproduct3{padding:0}.cardproduct-header{position:relative;overflow:hidden;height:200px}.cardproduct-header .card-image{position:absolute;top:0;left:0;width:100%;height:auto}.cardproduct-overlay{position:absolute;bottom:0;left:0;width:100%;padding:20px 30px;background:rgba(0,0,0,0.6)}.cardproduct-overlay-category,.cardproduct-overlay-title{margin:0;color:#FFFFFF}.cardproduct-footer .col{padding:20px 30px}.cardproduct-footer .col .widget-star-rating-font{font-size:20px}.cardproduct-name{margin:0}.cardproduct-btn{display:flex;align-items:center;height:100%;padding:30px;border-left:1px solid #D7D7D7}.cardproduct2 .cardproduct-header::after{position:absolute;bottom:0;left:0;display:block;width:100%;padding:20px 30px;content:"";background:rgba(0,0,0,0.6);background:-moz-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(250,250,250,0) 2%, rgba(0,0,0,0.99) 99%, #000 100%);background:-webkit-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(250,250,250,0) 2%, rgba(0,0,0,0.99) 99%, #000 100%);background:linear-gradient(to bottom, rgba(255,255,255,0) 0%, rgba(250,250,250,0) 2%, rgba(0,0,0,0.99) 99%, #000 100%)}.cardproduct3 .cardproduct-header{height:320px}.cardproduct3 .cardproduct-header img{width:100%;height:100%;object-fit:cover}.cardproduct3 .cardproduct-overlay{min-height:100px;padding:30px;background:-moz-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(250,250,250,0) 8%, rgba(0,0,0,0.99) 121%, #000 100%);background:-webkit-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(250,250,250,0) 8%, rgba(0,0,0,0.99) 121%, #000 100%);background:linear-gradient(to bottom, rgba(255,255,255,0) 0%, rgba(250,250,250,0) 8%, rgba(0,0,0,0.99) 121%, #000 100%);font-size:14px}.cardstatus{padding:20px}.cardstatus .card-linkicon{font-size:30px}.cardstatus .cardstatus-status{margin-bottom:5px}.cardprogress-state{width:80px;height:80px;padding:0;cursor:default;pointer-events:none;border-radius:100%;font-size:28px}.cardhighlight{border-top:4px solid #0595DB}.cardchat{overflow:hidden;padding:0}.cardchat .chat{height:400px}@media screen and (max-width: 991px){.widget-charts:not([height]),.widget-charts-line:not([height]){padding-bottom:80% !important}}@media screen and (max-width: 1199px){.cardprogress .cardprogress-state{width:60px;height:60px;font-size:24px}}.chat{display:flex;flex-direction:column;height:100%;background-color:#F5F8FD}.chat-content{display:flex;overflow:auto;flex:1;flex-direction:column;justify-content:flex-end}.chat-content .chat-list{position:relative;overflow:auto}.chat-content .chat-list ul{display:flex;flex-direction:column-reverse;margin-bottom:15px}.chat-content .chat-list li{padding:15px 30px;animation:fadeIn 0.2s;background-color:transparent;animation-fill-mode:both}.chat-content .chat-list li,.chat-content .chat-list li:last-child{border:0}.chat-content .chat-list .mx-listview-loadMore{position:absolute;top:0;right:0;left:0;display:block;width:50%;margin:15px auto;color:#FFFFFF;background-color:#0595DB;box-shadow:0 2px 20px 0 rgba(0,0,0,0.05)}.chat-message{display:flex}.chat-avatar{margin:0 20px 0 0;border-radius:50%}.chat-message-content{display:inline-flex;flex-direction:column}.chat-message-balloon{position:relative;display:flex;flex-direction:column;padding:10px 15px;border-radius:5px;background-color:#fff}.chat-message-balloon::after{position:absolute;top:10px;right:100%;width:0;height:0;content:'';border:10px solid transparent;border-top:0;border-right-color:#fff;border-left:0}.chat-message-time{padding-top:2px}.chat-message-time .form-control-static,.chat-message-time .form-group div[class*='textBox']>.control-label,.form-group .chat-message-time div[class*='textBox']>.control-label,.chat-message-time .form-group div[class*='textArea']>.control-label,.form-group .chat-message-time div[class*='textArea']>.control-label,.chat-message-time .form-group div[class*='datePicker']>.control-label,.form-group .chat-message-time div[class*='datePicker']>.control-label{border:0}.chat-footer{z-index:1;padding:15px;background-color:#fff;box-shadow:0 2px 20px 0 rgba(0,0,0,0.05)}.chat-input{display:flex}.chat-input .chat-textbox{flex:1;margin-right:30px;margin-bottom:0}.chat-input .chat-textbox .form-control{border:0}.chat-message-self{justify-content:flex-end}.chat-message-self .chat-avatar{margin:0 0 0 20px}.chat-message-self .chat-message-balloon{background-color:#cdeaf8}.chat-message-self .chat-message-balloon::after{left:100%;border:10px solid transparent;border-top:0;border-right:0;border-left-color:#cdeaf8}.chat-message-self .chat-message-time{text-align:right}.controlgroup .btn,.controlgroup .btn-group{margin-right:5px;margin-bottom:5px}.controlgroup .btn:last-child,.controlgroup .btn-group:last-child{margin-right:0}.controlgroup .btn .btn,.controlgroup .btn-group .btn{margin-right:0;margin-bottom:0}.controlgroup .btn-group .btn+.btn{margin-left:-1px}.fullpageblock{position:relative;height:100%;min-height:100%}.fullpageblock .fullheight{height:100% !important}.fullpageblock .fullheight>.mx-dataview-content{height:inherit !important}.fullpageblock .fullpage-overlay{position:absolute;z-index:10;bottom:0;left:0;width:100%}.pageheader{border-bottom:1px solid #D7D7D7;background:#F5F8FD}.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .pageheader{background:transparent}@media (max-width: 767px){.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .pageheader{margin-bottom:15px}}@media (min-width: 768px){.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .pageheader{margin-bottom:30px}}@media (min-width: 992px){.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .pageheader{margin-bottom:30px}}@media (max-width: 767px){.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .pageheader{padding-bottom:15px}}@media (min-width: 768px){.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .pageheader{padding-bottom:30px}}@media (min-width: 992px){.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .pageheader{padding-bottom:30px}}.pageheader-type{margin:0}.pageheader-title{margin:0}.pageheader-subtitle{margin:0}.pageheaderwithsearch .pageheader-title{margin-bottom:1em}.heroheader{border-bottom:1px solid #D7D7D7;background:#F5F8FD}.heroheader-title{margin:0 0 10px 0}.heroheader-subtitle{margin:0;padding:0 15px}.heroheader-subtitle::before{display:block;max-width:330px;height:1px;margin:auto auto 10px auto;content:"";background-color:#e1e1e1}.heroheader1{background-image:linear-gradient(152deg, #0CC7F0 0%, #087ECC 51%, #077AC9 55%, #0659B9 78%)}.heroheader1 .heroheader-title{margin-bottom:10px;color:#FFFFFF}.heroheader1 .heroheader-subtitle{padding:0;color:#FFFFFF}.heroheader1 .heroheader-subtitle::before{display:none}.heroheadermap{padding:0 !important}.heroheadermap-controls{padding:30px;background:#F5F8FD}.heroheaderproduct{position:relative;overflow:hidden;height:300px;background-color:#000000}.heroheaderproduct .heroheaderproduct-backgroundimage{position:absolute;z-index:0;top:0;width:100%;opacity:0.7;filter:blur(5px)}.heroheaderproduct .heroheaderproduct-overlay{position:absolute;z-index:1;top:50%;left:50%;transform:translate(-50%, -50%)}.heroheaderexpense .heroheaderexpense-title{font-size:72px}.heroheaderexpense .heroheaderexpense-type{align-items:center}.heroheaderexpense .heroheaderexpense-type::before{flex-grow:1;height:1px;margin-right:10px;content:"";background-color:#D2D2D2}.formblock-title{margin-bottom:15px;padding-bottom:15px;border-bottom:1px solid #D7D7D7}.masterdetail .masterdetail-master .controlgroup{margin-bottom:15px}@media (max-width: 992px) and (max-width: 767px){.masterdetail .masterdetail-master{margin-bottom:15px}}@media (max-width: 992px) and (min-width: 768px){.masterdetail .masterdetail-master{margin-bottom:30px}}@media (max-width: 992px) and (min-width: 992px){.masterdetail .masterdetail-master{margin-bottom:30px}}@media (min-width: 992px){.masterdetail .masterdetail-master{border-right:1px solid #D7D7D7}.masterdetail .masterdetail-master .mx-listview-searchbar{margin:15px}.masterdetail .masterdetail-master .controlgroup{padding:15px;border-bottom:1px solid #D7D7D7}}@media (min-width: 992px) and (max-width: 767px){.masterdetail .masterdetail-detail{padding:15px 15px 15px 15px}}@media (min-width: 992px) and (min-width: 768px){.masterdetail .masterdetail-detail{padding:30px 30px 30px 30px}}@media (min-width: 992px) and (min-width: 992px){.masterdetail .masterdetail-detail{padding:30px 30px 30px 30px}}@media (max-width: 767px){.masterdetailvertical .masterdetail-master{margin-bottom:15px}}@media (min-width: 768px){.masterdetailvertical .masterdetail-master{margin-bottom:30px}}@media (min-width: 992px){.masterdetailvertical .masterdetail-master{margin-bottom:30px}}@media (max-width: 767px){.masterdetailvertical .masterdetail-detail{padding-top:15px}}@media (min-width: 768px){.masterdetailvertical .masterdetail-detail{padding-top:30px}}@media (min-width: 992px){.masterdetailvertical .masterdetail-detail{padding-top:30px}}.wizard{display:flex;justify-content:space-between}.wizard .wizard-step{position:relative;width:100%;text-align:center}.wizard .wizard-step::before{position:absolute;z-index:-1;top:30px;display:block;width:100%;height:2px;content:"";background-color:#D7D7D7}.wizard .wizard-step .wizard-step-number{width:60px;height:60px;border-color:#D7D7D7;border-radius:50%;background-color:#FFFFFF;font-size:20px}.wizard .wizard-step .wizard-step-text{display:block;margin-top:15px}.wizard .wizard-step-active .wizard-step-number{color:#FFFFFF;border-color:#0595DB;background-color:#0595DB}.wizard .wizard-step-active .wizard-step-text{color:#0595DB}.wizard .wizard-step-visited .wizard-step-number{color:#FFFFFF;border-color:#76CA02;background-color:#76CA02}.wizardprogress{display:flex;justify-content:space-between}.wizardprogress .wizard-step-text{width:100%}.wizardprogress .wizard-step{position:relative;width:100%;height:50px;margin-left:-25px;padding-left:25px;border:1px solid #D7D7D7;background:#FFFFFF}.wizardprogress .wizard-step a{display:block;overflow:hidden;width:100%;height:100%;padding:14px;white-space:nowrap;text-decoration:none;text-overflow:ellipsis;color:#555}.wizardprogress .wizard-step::before,.wizardprogress .wizard-step::after{position:absolute;z-index:1;left:100%;margin-left:-25px;content:" ";border-style:solid;border-color:transparent}.wizardprogress .wizard-step::after{top:1px;border-width:24px;border-left-color:#FFFFFF}.wizardprogress .wizard-step::before{top:0;border-width:25px;border-left-color:#D7D7D7}.wizardprogress .wizard-step:first-child{margin-left:0;padding-left:0;border-radius:5px 0 0 5px}.wizardprogress .wizard-step:last-child{border-radius:0 5px 5px 0}.wizardprogress .wizard-step:last-child::before,.wizardprogress .wizard-step:last-child::after{display:none}.wizardprogress .wizard-step-active{background:#0595DB}.wizardprogress .wizard-step-active a{text-decoration:none;color:#FFFFFF}.wizardprogress .wizard-step-active::after{border-left-color:#0595DB}.wizardprogress .wizard-step-visited a{color:#0595DB}.timeline .timeline-header{display:inline-block;width:110px;padding:8px;text-align:center;border:1px solid #D7D7D7;border-radius:30px}.timeline-itemwrapper.mx-listview{margin-bottom:0;margin-left:55px;padding:30px 0;border-left:1px solid #D7D7D7}.timeline-itemwrapper.mx-listview>ul>li{position:relative;padding-left:30px}.timeline-itemwrapper.mx-listview>ul>li::before{position:absolute;top:5px;left:-5px;display:block;width:10px;height:10px;content:'';border-radius:50%;background-color:#0595DB}.timeline-itemwrapper.mx-listview li+li{margin-top:30px}.timeline2 .timeline-itemwrapper.mx-listview>ul>li{padding-left:15px}.layout-atlas .toggle-btn>.glyphicon{margin:0}.layout-atlas .region-sidebar{background-color:#252C36}.layout-atlas .region-sidebar .mx-navigationtree .navbar-inner>ul>li>a{padding:0 15px}.layout-atlas .region-sidebar .mx-navigationtree .navbar-inner>ul>li>a .glyphicon{margin-right:10px}.layout-atlas .region-sidebar .toggle-btn{border-color:transparent;border-radius:0;background:transparent}.layout-atlas .region-topbar{position:relative;z-index:1;min-height:60px;border-bottom:1px solid #D7D7D7;background-color:#fff;box-shadow:0 1px 4px 0 rgba(0,0,0,0.14)}.layout-atlas .region-topbar::before{z-index:1;display:block;width:100%;height:4px;content:"";background-color:#0595DB}.layout-atlas .region-topbar .topbar-content{display:flex;align-items:center;min-height:60px}.layout-atlas .region-topbar .toggle-btn{margin-right:15px;padding:5px}.layout-atlas .region-topbar .navbar-brand{display:inline-block;float:none;height:auto;padding:0;line-height:inherit}.layout-atlas .region-topbar .navbar-brand img{display:inline-block;width:auto;height:30px}.layout-atlas .region-topbar .navbar-brand a{margin-left:5px;color:#D7D7D7;font-size:20px}.layout-atlas .region-topbar .navbar-brand a:hover,.layout-atlas .region-topbar .navbar-brand a:focus{text-decoration:none}.layout-atlas .region-topbar .mx-navbar{display:inline-block;margin-left:15px;vertical-align:middle;background:transparent}.layout-atlas .region-topbar .mx-navbar>.mx-navbar-item>a{margin-top:5px;padding:0 20px}.layout-atlas-phone .region-topbar{min-height:45px;border-style:none;background-color:#fff}.layout-atlas-phone .region-topbar::before{display:none}@media (min-width: 768px){.layout-atlas-responsive-default .mx-scrollcontainer:not(.mx-scrollcontainer-open)>.region-sidebar{width:60px !important}.layout-atlas-responsive-default .mx-scrollcontainer:not(.mx-scrollcontainer-open)>.region-sidebar .mx-scrollcontainer-wrapper>.mx-navigationtree ul li.mx-navigationtree-has-items:hover a{background-color:#1d222a}.layout-atlas-responsive-default .mx-scrollcontainer:not(.mx-scrollcontainer-open)>.region-sidebar .mx-scrollcontainer-wrapper>.mx-navigationtree ul li.mx-navigationtree-has-items:hover ul{position:absolute;z-index:100;top:0;bottom:0;left:60px;display:block;overflow-y:auto;min-width:200px;padding-top:10px}.layout-atlas-responsive-default .mx-scrollcontainer:not(.mx-scrollcontainer-open)>.region-sidebar .mx-scrollcontainer-wrapper>.mx-navigationtree ul li.mx-navigationtree-collapsed ul,.layout-atlas-responsive-default .mx-scrollcontainer:not(.mx-scrollcontainer-open)>.region-sidebar .mx-scrollcontainer-wrapper>.mx-navigationtree ul li.mx-navigationtree-has-items ul{display:none}}.layout-atlas-responsive-default .mx-scrollcontainer-slide.mx-scrollcontainer-open>.region-sidebar{width:60px !important}@media (max-width: 767px){.layout-atlas-responsive-default .mx-scrollcontainer-open:not(.mx-scrollcontainer-slide){width:1100px}.layout-atlas-responsive-default .mx-scrollcontainer-slide .toggle-btn{display:inline-block !important}}.layout-atlas-responsive-default .region-sidebar .toggle-btn{width:60px;height:60px;border-color:transparent;border-radius:0;background:transparent}.layout-atlas-responsive-default .region-sidebar .mx-scrollcontainer-wrapper>.mx-navigationtree .navbar-inner>ul>li>a{height:60px}.layout-atlas-responsive-default .region-sidebar .mx-scrollcontainer-wrapper>.mx-navigationtree .navbar-inner>ul>li>a .glyphicon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;margin-left:-5px;padding:10px;border-radius:3px}.layout-atlas-responsive-default .region-sidebar .mx-scrollcontainer-wrapper>.mx-navigationtree .navbar-inner>ul>li>a.active .glyphicon{background:#0595DB}.layout-atlas-responsive-topbar .mx-scrollcontainer-slide:not(.mx-scrollcontainer-open)>.region-sidebar,.layout-atlas-responsive-topbar .mx-scrollcontainer-push:not(.mx-scrollcontainer-open)>.region-sidebar{visibility:hidden}.layout-atlas-responsive-default .region-topbar .toggle-btn,.layout-atlas-responsive-topbar .region-topbar .toggle-btn{display:none}@media (max-width: 767px){.layout-atlas-responsive-default .region-topbar .toggle-btn,.layout-atlas-responsive-topbar .region-topbar .toggle-btn{display:inline-block}}.layout-atlas-responsive-default .mx-scrollcontainer-slide:not(.mx-scrollcontainer-open)>.region-sidebar,.layout-atlas-responsive-topbar .mx-scrollcontainer-slide:not(.mx-scrollcontainer-open)>.region-sidebar{overflow:hidden}.layout-atlas-responsive-default .mx-scrollcontainer-slide.mx-scrollcontainer-open>.region-sidebar>.mx-scrollcontainer-wrapper,.layout-atlas-responsive-topbar .mx-scrollcontainer-slide.mx-scrollcontainer-open>.region-sidebar>.mx-scrollcontainer-wrapper{position:relative}.layout-atlas-responsive-default .mx-scrollcontainer-slide .region-sidebar>.mx-scrollcontainer-wrapper,.layout-atlas-responsive-topbar .mx-scrollcontainer-slide .region-sidebar>.mx-scrollcontainer-wrapper{z-index:2;background-color:inherit}.profile-tablet .mx-scrollcontainer:not(.mx-scrollcontainer-open)>.region-sidebar{overflow-y:hidden}.profile-tablet .mx-scrollcontainer:not(.mx-scrollcontainer-open)>.region-sidebar .mx-scrollcontainer-wrapper{overflow:visible} - -/*# sourceMappingURL=main.css.map */ diff --git a/theme/styles/web/css/main.css.map b/theme/styles/web/css/main.css.map deleted file mode 100644 index 2f6d31b..0000000 --- a/theme/styles/web/css/main.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"main.css","sources":["main.scss","core/_legacy/bootstrap/_bootstrap.scss","core/_legacy/bootstrap/_bootstrap-rtl.scss","core/_legacy/_mxui.scss","app/_custom-variables.scss","core/_variables.scss","core/base/mixins/_animations.scss","core/base/mixins/_spacing.scss","core/base/mixins/_layout-spacing.scss","core/base/mixins/_buttons.scss","core/base/mixins/_groupbox.scss","core/base/_animation.scss","core/base/_flex.scss","core/base/_spacing.scss","core/base/_reset.scss","core/base/_base.scss","core/base/_login.scss","core/widgets/_inputs.scss","core/widgets/_alerts.scss","core/helpers/_alerts.scss","core/helpers/_backgrounds.scss","core/widgets/_buttons.scss","core/helpers/_buttons.scss","core/widgets/_checkbox.scss","core/widgets/_grid.scss","core/widgets/_datagrids.scss","core/helpers/_datagrids.scss","core/widgets/_dataview.scss","core/widgets/_datepicker.scss","core/widgets/_header.scss","core/widgets/_glyphicons.scss","core/widgets/_groupbox.scss","core/helpers/_groupbox.scss","core/helpers/_images.scss","core/widgets/_labels.scss","core/helpers/_labels.scss","core/widgets/_listview.scss","core/helpers/_listview.scss","core/widgets/_modals.scss","core/widgets/_navigationbar.scss","core/helpers/_navigationbar.scss","core/widgets/_navigationlist.scss","core/widgets/_navigationtree.scss","core/helpers/_navigationtree.scss","core/widgets/_popupmenu.scss","core/widgets/_simplemenubar.scss","core/helpers/_simplemenubar.scss","core/widgets/_radiobuttons.scss","core/widgets/_tabcontainer.scss","core/helpers/_tabcontainer.scss","core/widgets/_tables.scss","core/helpers/_tables.scss","core/widgets/_templategrids.scss","core/helpers/_templategrids.scss","core/widgets/_typography.scss","core/helpers/_typography.scss","core/widgets/_layoutgrid.scss","core/widgets/_progress.scss","core/widgets/_timeline.scss","core/helpers/_helperclasses.scss","core/widgetscustom/_dijit-widgets.scss","core/widgetscustom/_progress-bar-theme.scss","core/widgetscustom/_progress-circle-theme.scss","core/widgetscustom/_range-slider-theme.scss","core/widgetscustom/_slider-theme.scss","core/widgetscustom/_star-rating-theme.scss","core/widgetscustom/_switchwidget.scss","ui_resources/atlas_ui_resources/buildingblocks/_breadcrumb.scss","ui_resources/atlas_ui_resources/buildingblocks/_card.scss","ui_resources/atlas_ui_resources/buildingblocks/_chat.scss","ui_resources/atlas_ui_resources/buildingblocks/_controlgroup.scss","ui_resources/atlas_ui_resources/buildingblocks/_pageblocks.scss","ui_resources/atlas_ui_resources/buildingblocks/_pageheader.scss","ui_resources/atlas_ui_resources/buildingblocks/_heroheader.scss","ui_resources/atlas_ui_resources/buildingblocks/_formblock.scss","ui_resources/atlas_ui_resources/buildingblocks/_master-detail.scss","ui_resources/atlas_ui_resources/buildingblocks/_userprofile.scss","ui_resources/atlas_ui_resources/buildingblocks/_wizard.scss","ui_resources/atlas_ui_resources/buildingblocks/_timeline.scss","ui_resources/atlas_ui_resources/layouts/_layout-atlas.scss","ui_resources/atlas_ui_resources/layouts/_layout-atlas-phone.scss","ui_resources/atlas_ui_resources/layouts/_layout-atlas-responsive.scss","ui_resources/atlas_ui_resources/layouts/_layout-atlas-tablet.scss","app/_custom.scss"],"sourcesContent":["// Utilities\n@import 'core/_legacy/bootstrap/bootstrap';\n@import 'core/_legacy/bootstrap/bootstrap-rtl';\n@import 'core/_legacy/mxui';\n\n// Custom variables\n@import 'app/custom-variables';\n\n//================================== CORE ==================================\\\\\n\n// Default variables\n@import 'core/variables';\n\n// Base\n@import 'core/base/mixins/animations';\n@import 'core/base/mixins/spacing';\n@import 'core/base/mixins/layout-spacing';\n@import 'core/base/mixins/buttons';\n@import 'core/base/mixins/groupbox';\n@import 'core/base/animation';\n@import 'core/base/flex';\n@import 'core/base/spacing';\n@import 'core/base/reset';\n@import 'core/base/base';\n@import 'core/base/login';\n\n// Widgets\n@import 'core/widgets/inputs';\n@import 'core/widgets/alerts';\n@import 'core/helpers/alerts';\n@import 'core/helpers/backgrounds';\n@import 'core/widgets/buttons';\n@import 'core/helpers/buttons';\n@import 'core/widgets/checkbox';\n@import 'core/widgets/grid';\n@import 'core/widgets/datagrids';\n@import 'core/helpers/datagrids';\n@import 'core/widgets/dataview';\n@import 'core/widgets/datepicker';\n@import 'core/widgets/header';\n@import 'core/widgets/glyphicons';\n@import 'core/widgets/groupbox';\n@import 'core/helpers/groupbox';\n@import 'core/helpers/images';\n@import 'core/widgets/labels';\n@import 'core/helpers/labels';\n@import 'core/widgets/listview';\n@import 'core/helpers/listview';\n@import 'core/widgets/modals';\n@import 'core/widgets/navigationbar';\n@import 'core/helpers/navigationbar';\n@import 'core/widgets/navigationlist';\n@import 'core/widgets/navigationtree';\n@import 'core/helpers/navigationtree';\n@import 'core/widgets/popupmenu';\n@import 'core/widgets/simplemenubar';\n@import 'core/helpers/simplemenubar';\n@import 'core/widgets/radiobuttons';\n@import 'core/widgets/tabcontainer';\n@import 'core/helpers/tabcontainer';\n@import 'core/widgets/tables';\n@import 'core/helpers/tables';\n@import 'core/widgets/templategrids';\n@import 'core/helpers/templategrids';\n@import 'core/widgets/typography';\n@import 'core/helpers/typography';\n@import 'core/widgets/layoutgrid';\n@import 'core/widgets/progress';\n@import 'core/widgets/timeline';\n@import 'core/helpers/helperclasses';\n\n// Custom widgets\n@import 'core/widgetscustom/dijit-widgets';\n@import 'core/widgetscustom/progress-bar-theme';\n@import 'core/widgetscustom/progress-circle-theme';\n@import 'core/widgetscustom/range-slider-theme';\n@import 'core/widgetscustom/slider-theme';\n@import 'core/widgetscustom/star-rating-theme';\n@import 'core/widgetscustom/switchwidget';\n\n//================================= CUSTOM =================================\\\\\n\n// Building blocks\n@import 'ui_resources/atlas_ui_resources/buildingblocks/breadcrumb';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/card';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/chat';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/controlgroup';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/pageblocks';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/pageheader';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/heroheader';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/formblock';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/master-detail';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/userprofile';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/wizard';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/timeline';\n\n// Layouts\n@import 'ui_resources/atlas_ui_resources/layouts/layout-atlas';\n@import 'ui_resources/atlas_ui_resources/layouts/layout-atlas-phone';\n@import 'ui_resources/atlas_ui_resources/layouts/layout-atlas-responsive';\n@import 'ui_resources/atlas_ui_resources/layouts/layout-atlas-tablet';\n\n// Custom\n@import 'app/custom';\n","/*!\n * Bootstrap v3.3.4 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\nhtml {\n font-family: sans-serif;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n margin: 0.67em 0;\n font-size: 2em;\n}\nmark {\n color: #000;\n background: #ff0;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n height: 0;\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n margin: 0;\n font: inherit;\n color: inherit;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type='button'],\ninput[type='reset'],\ninput[type='submit'] {\n -webkit-appearance: button;\n cursor: pointer;\n}\n//button[disabled],\n//html input[disabled] {\n// cursor: default;\n//}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type='checkbox'],\ninput[type='radio'] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n padding: 0;\n}\ninput[type='number']::-webkit-inner-spin-button,\ninput[type='number']::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type='search'] {\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n -webkit-appearance: textfield;\n}\ninput[type='search']::-webkit-search-cancel-button,\ninput[type='search']::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n padding: 0.35em 0.625em 0.75em;\n margin: 0 2px;\n border: 1px solid #c0c0c0;\n}\nlegend {\n padding: 0;\n border: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-spacing: 0;\n border-collapse: collapse;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n color: #000 !important;\n text-shadow: none !important;\n background: transparent !important;\n -webkit-box-shadow: none !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: ' (' attr(href) ')';\n }\n abbr[title]:after {\n content: ' (' attr(title) ')';\n }\n a[href^='#']:after,\n a[href^='javascript:']:after {\n content: '';\n }\n pre,\n blockquote {\n border: 1px solid #999;\n\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n select {\n background: #fff !important;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('./fonts/glyphicons-halflings-regular.woff2') format('woff2'),\n url('./fonts/glyphicons-halflings-regular.woff') format('woff');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: '\\2a';\n}\n.glyphicon-plus:before {\n content: '\\2b';\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: '\\20ac';\n}\n.glyphicon-minus:before {\n content: '\\2212';\n}\n.glyphicon-cloud:before {\n content: '\\2601';\n}\n.glyphicon-envelope:before {\n content: '\\2709';\n}\n.glyphicon-pencil:before {\n content: '\\270f';\n}\n.glyphicon-glass:before {\n content: '\\e001';\n}\n.glyphicon-music:before {\n content: '\\e002';\n}\n.glyphicon-search:before {\n content: '\\e003';\n}\n.glyphicon-heart:before {\n content: '\\e005';\n}\n.glyphicon-star:before {\n content: '\\e006';\n}\n.glyphicon-star-empty:before {\n content: '\\e007';\n}\n.glyphicon-user:before {\n content: '\\e008';\n}\n.glyphicon-film:before {\n content: '\\e009';\n}\n.glyphicon-th-large:before {\n content: '\\e010';\n}\n.glyphicon-th:before {\n content: '\\e011';\n}\n.glyphicon-th-list:before {\n content: '\\e012';\n}\n.glyphicon-ok:before {\n content: '\\e013';\n}\n.glyphicon-remove:before {\n content: '\\e014';\n}\n.glyphicon-zoom-in:before {\n content: '\\e015';\n}\n.glyphicon-zoom-out:before {\n content: '\\e016';\n}\n.glyphicon-off:before {\n content: '\\e017';\n}\n.glyphicon-signal:before {\n content: '\\e018';\n}\n.glyphicon-cog:before {\n content: '\\e019';\n}\n.glyphicon-trash:before {\n content: '\\e020';\n}\n.glyphicon-home:before {\n content: '\\e021';\n}\n.glyphicon-file:before {\n content: '\\e022';\n}\n.glyphicon-time:before {\n content: '\\e023';\n}\n.glyphicon-road:before {\n content: '\\e024';\n}\n.glyphicon-download-alt:before {\n content: '\\e025';\n}\n.glyphicon-download:before {\n content: '\\e026';\n}\n.glyphicon-upload:before {\n content: '\\e027';\n}\n.glyphicon-inbox:before {\n content: '\\e028';\n}\n.glyphicon-play-circle:before {\n content: '\\e029';\n}\n.glyphicon-repeat:before {\n content: '\\e030';\n}\n.glyphicon-refresh:before {\n content: '\\e031';\n}\n.glyphicon-list-alt:before {\n content: '\\e032';\n}\n.glyphicon-lock:before {\n content: '\\e033';\n}\n.glyphicon-flag:before {\n content: '\\e034';\n}\n.glyphicon-headphones:before {\n content: '\\e035';\n}\n.glyphicon-volume-off:before {\n content: '\\e036';\n}\n.glyphicon-volume-down:before {\n content: '\\e037';\n}\n.glyphicon-volume-up:before {\n content: '\\e038';\n}\n.glyphicon-qrcode:before {\n content: '\\e039';\n}\n.glyphicon-barcode:before {\n content: '\\e040';\n}\n.glyphicon-tag:before {\n content: '\\e041';\n}\n.glyphicon-tags:before {\n content: '\\e042';\n}\n.glyphicon-book:before {\n content: '\\e043';\n}\n.glyphicon-bookmark:before {\n content: '\\e044';\n}\n.glyphicon-print:before {\n content: '\\e045';\n}\n.glyphicon-camera:before {\n content: '\\e046';\n}\n.glyphicon-font:before {\n content: '\\e047';\n}\n.glyphicon-bold:before {\n content: '\\e048';\n}\n.glyphicon-italic:before {\n content: '\\e049';\n}\n.glyphicon-text-height:before {\n content: '\\e050';\n}\n.glyphicon-text-width:before {\n content: '\\e051';\n}\n.glyphicon-align-left:before {\n content: '\\e052';\n}\n.glyphicon-align-center:before {\n content: '\\e053';\n}\n.glyphicon-align-right:before {\n content: '\\e054';\n}\n.glyphicon-align-justify:before {\n content: '\\e055';\n}\n.glyphicon-list:before {\n content: '\\e056';\n}\n.glyphicon-indent-left:before {\n content: '\\e057';\n}\n.glyphicon-indent-right:before {\n content: '\\e058';\n}\n.glyphicon-facetime-video:before {\n content: '\\e059';\n}\n.glyphicon-picture:before {\n content: '\\e060';\n}\n.glyphicon-map-marker:before {\n content: '\\e062';\n}\n.glyphicon-adjust:before {\n content: '\\e063';\n}\n.glyphicon-tint:before {\n content: '\\e064';\n}\n.glyphicon-edit:before {\n content: '\\e065';\n}\n.glyphicon-share:before {\n content: '\\e066';\n}\n.glyphicon-check:before {\n content: '\\e067';\n}\n.glyphicon-move:before {\n content: '\\e068';\n}\n.glyphicon-step-backward:before {\n content: '\\e069';\n}\n.glyphicon-fast-backward:before {\n content: '\\e070';\n}\n.glyphicon-backward:before {\n content: '\\e071';\n}\n.glyphicon-play:before {\n content: '\\e072';\n}\n.glyphicon-pause:before {\n content: '\\e073';\n}\n.glyphicon-stop:before {\n content: '\\e074';\n}\n.glyphicon-forward:before {\n content: '\\e075';\n}\n.glyphicon-fast-forward:before {\n content: '\\e076';\n}\n.glyphicon-step-forward:before {\n content: '\\e077';\n}\n.glyphicon-eject:before {\n content: '\\e078';\n}\n.glyphicon-chevron-left:before {\n content: '\\e079';\n}\n.glyphicon-chevron-right:before {\n content: '\\e080';\n}\n.glyphicon-plus-sign:before {\n content: '\\e081';\n}\n.glyphicon-minus-sign:before {\n content: '\\e082';\n}\n.glyphicon-remove-sign:before {\n content: '\\e083';\n}\n.glyphicon-ok-sign:before {\n content: '\\e084';\n}\n.glyphicon-question-sign:before {\n content: '\\e085';\n}\n.glyphicon-info-sign:before {\n content: '\\e086';\n}\n.glyphicon-screenshot:before {\n content: '\\e087';\n}\n.glyphicon-remove-circle:before {\n content: '\\e088';\n}\n.glyphicon-ok-circle:before {\n content: '\\e089';\n}\n.glyphicon-ban-circle:before {\n content: '\\e090';\n}\n.glyphicon-arrow-left:before {\n content: '\\e091';\n}\n.glyphicon-arrow-right:before {\n content: '\\e092';\n}\n.glyphicon-arrow-up:before {\n content: '\\e093';\n}\n.glyphicon-arrow-down:before {\n content: '\\e094';\n}\n.glyphicon-share-alt:before {\n content: '\\e095';\n}\n.glyphicon-resize-full:before {\n content: '\\e096';\n}\n.glyphicon-resize-small:before {\n content: '\\e097';\n}\n.glyphicon-exclamation-sign:before {\n content: '\\e101';\n}\n.glyphicon-gift:before {\n content: '\\e102';\n}\n.glyphicon-leaf:before {\n content: '\\e103';\n}\n.glyphicon-fire:before {\n content: '\\e104';\n}\n.glyphicon-eye-open:before {\n content: '\\e105';\n}\n.glyphicon-eye-close:before {\n content: '\\e106';\n}\n.glyphicon-warning-sign:before {\n content: '\\e107';\n}\n.glyphicon-plane:before {\n content: '\\e108';\n}\n.glyphicon-calendar:before {\n content: '\\e109';\n}\n.glyphicon-random:before {\n content: '\\e110';\n}\n.glyphicon-comment:before {\n content: '\\e111';\n}\n.glyphicon-magnet:before {\n content: '\\e112';\n}\n.glyphicon-chevron-up:before {\n content: '\\e113';\n}\n.glyphicon-chevron-down:before {\n content: '\\e114';\n}\n.glyphicon-retweet:before {\n content: '\\e115';\n}\n.glyphicon-shopping-cart:before {\n content: '\\e116';\n}\n.glyphicon-folder-close:before {\n content: '\\e117';\n}\n.glyphicon-folder-open:before {\n content: '\\e118';\n}\n.glyphicon-resize-vertical:before {\n content: '\\e119';\n}\n.glyphicon-resize-horizontal:before {\n content: '\\e120';\n}\n.glyphicon-hdd:before {\n content: '\\e121';\n}\n.glyphicon-bullhorn:before {\n content: '\\e122';\n}\n.glyphicon-bell:before {\n content: '\\e123';\n}\n.glyphicon-certificate:before {\n content: '\\e124';\n}\n.glyphicon-thumbs-up:before {\n content: '\\e125';\n}\n.glyphicon-thumbs-down:before {\n content: '\\e126';\n}\n.glyphicon-hand-right:before {\n content: '\\e127';\n}\n.glyphicon-hand-left:before {\n content: '\\e128';\n}\n.glyphicon-hand-up:before {\n content: '\\e129';\n}\n.glyphicon-hand-down:before {\n content: '\\e130';\n}\n.glyphicon-circle-arrow-right:before {\n content: '\\e131';\n}\n.glyphicon-circle-arrow-left:before {\n content: '\\e132';\n}\n.glyphicon-circle-arrow-up:before {\n content: '\\e133';\n}\n.glyphicon-circle-arrow-down:before {\n content: '\\e134';\n}\n.glyphicon-globe:before {\n content: '\\e135';\n}\n.glyphicon-wrench:before {\n content: '\\e136';\n}\n.glyphicon-tasks:before {\n content: '\\e137';\n}\n.glyphicon-filter:before {\n content: '\\e138';\n}\n.glyphicon-briefcase:before {\n content: '\\e139';\n}\n.glyphicon-fullscreen:before {\n content: '\\e140';\n}\n.glyphicon-dashboard:before {\n content: '\\e141';\n}\n.glyphicon-paperclip:before {\n content: '\\e142';\n}\n.glyphicon-heart-empty:before {\n content: '\\e143';\n}\n.glyphicon-link:before {\n content: '\\e144';\n}\n.glyphicon-phone:before {\n content: '\\e145';\n}\n.glyphicon-pushpin:before {\n content: '\\e146';\n}\n.glyphicon-usd:before {\n content: '\\e148';\n}\n.glyphicon-gbp:before {\n content: '\\e149';\n}\n.glyphicon-sort:before {\n content: '\\e150';\n}\n.glyphicon-sort-by-alphabet:before {\n content: '\\e151';\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: '\\e152';\n}\n.glyphicon-sort-by-order:before {\n content: '\\e153';\n}\n.glyphicon-sort-by-order-alt:before {\n content: '\\e154';\n}\n.glyphicon-sort-by-attributes:before {\n content: '\\e155';\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: '\\e156';\n}\n.glyphicon-unchecked:before {\n content: '\\e157';\n}\n.glyphicon-expand:before {\n content: '\\e158';\n}\n.glyphicon-collapse-down:before {\n content: '\\e159';\n}\n.glyphicon-collapse-up:before {\n content: '\\e160';\n}\n.glyphicon-log-in:before {\n content: '\\e161';\n}\n.glyphicon-flash:before {\n content: '\\e162';\n}\n.glyphicon-log-out:before {\n content: '\\e163';\n}\n.glyphicon-new-window:before {\n content: '\\e164';\n}\n.glyphicon-record:before {\n content: '\\e165';\n}\n.glyphicon-save:before {\n content: '\\e166';\n}\n.glyphicon-open:before {\n content: '\\e167';\n}\n.glyphicon-saved:before {\n content: '\\e168';\n}\n.glyphicon-import:before {\n content: '\\e169';\n}\n.glyphicon-export:before {\n content: '\\e170';\n}\n.glyphicon-send:before {\n content: '\\e171';\n}\n.glyphicon-floppy-disk:before {\n content: '\\e172';\n}\n.glyphicon-floppy-saved:before {\n content: '\\e173';\n}\n.glyphicon-floppy-remove:before {\n content: '\\e174';\n}\n.glyphicon-floppy-save:before {\n content: '\\e175';\n}\n.glyphicon-floppy-open:before {\n content: '\\e176';\n}\n.glyphicon-credit-card:before {\n content: '\\e177';\n}\n.glyphicon-transfer:before {\n content: '\\e178';\n}\n.glyphicon-cutlery:before {\n content: '\\e179';\n}\n.glyphicon-header:before {\n content: '\\e180';\n}\n.glyphicon-compressed:before {\n content: '\\e181';\n}\n.glyphicon-earphone:before {\n content: '\\e182';\n}\n.glyphicon-phone-alt:before {\n content: '\\e183';\n}\n.glyphicon-tower:before {\n content: '\\e184';\n}\n.glyphicon-stats:before {\n content: '\\e185';\n}\n.glyphicon-sd-video:before {\n content: '\\e186';\n}\n.glyphicon-hd-video:before {\n content: '\\e187';\n}\n.glyphicon-subtitles:before {\n content: '\\e188';\n}\n.glyphicon-sound-stereo:before {\n content: '\\e189';\n}\n.glyphicon-sound-dolby:before {\n content: '\\e190';\n}\n.glyphicon-sound-5-1:before {\n content: '\\e191';\n}\n.glyphicon-sound-6-1:before {\n content: '\\e192';\n}\n.glyphicon-sound-7-1:before {\n content: '\\e193';\n}\n.glyphicon-copyright-mark:before {\n content: '\\e194';\n}\n.glyphicon-registration-mark:before {\n content: '\\e195';\n}\n.glyphicon-cloud-download:before {\n content: '\\e197';\n}\n.glyphicon-cloud-upload:before {\n content: '\\e198';\n}\n.glyphicon-tree-conifer:before {\n content: '\\e199';\n}\n.glyphicon-tree-deciduous:before {\n content: '\\e200';\n}\n.glyphicon-cd:before {\n content: '\\e201';\n}\n.glyphicon-save-file:before {\n content: '\\e202';\n}\n.glyphicon-open-file:before {\n content: '\\e203';\n}\n.glyphicon-level-up:before {\n content: '\\e204';\n}\n.glyphicon-copy:before {\n content: '\\e205';\n}\n.glyphicon-paste:before {\n content: '\\e206';\n}\n.glyphicon-alert:before {\n content: '\\e209';\n}\n.glyphicon-equalizer:before {\n content: '\\e210';\n}\n.glyphicon-king:before {\n content: '\\e211';\n}\n.glyphicon-queen:before {\n content: '\\e212';\n}\n.glyphicon-pawn:before {\n content: '\\e213';\n}\n.glyphicon-bishop:before {\n content: '\\e214';\n}\n.glyphicon-knight:before {\n content: '\\e215';\n}\n.glyphicon-baby-formula:before {\n content: '\\e216';\n}\n.glyphicon-tent:before {\n content: '\\26fa';\n}\n.glyphicon-blackboard:before {\n content: '\\e218';\n}\n.glyphicon-bed:before {\n content: '\\e219';\n}\n.glyphicon-apple:before {\n content: '\\f8ff';\n}\n.glyphicon-erase:before {\n content: '\\e221';\n}\n.glyphicon-hourglass:before {\n content: '\\231b';\n}\n.glyphicon-lamp:before {\n content: '\\e223';\n}\n.glyphicon-duplicate:before {\n content: '\\e224';\n}\n.glyphicon-piggy-bank:before {\n content: '\\e225';\n}\n.glyphicon-scissors:before {\n content: '\\e226';\n}\n.glyphicon-bitcoin:before {\n content: '\\e227';\n}\n.glyphicon-btc:before {\n content: '\\e227';\n}\n.glyphicon-xbt:before {\n content: '\\e227';\n}\n.glyphicon-yen:before {\n content: '\\00a5';\n}\n.glyphicon-jpy:before {\n content: '\\00a5';\n}\n.glyphicon-ruble:before {\n content: '\\20bd';\n}\n.glyphicon-rub:before {\n content: '\\20bd';\n}\n.glyphicon-scale:before {\n content: '\\e230';\n}\n.glyphicon-ice-lolly:before {\n content: '\\e231';\n}\n.glyphicon-ice-lolly-tasted:before {\n content: '\\e232';\n}\n.glyphicon-education:before {\n content: '\\e233';\n}\n.glyphicon-option-horizontal:before {\n content: '\\e234';\n}\n.glyphicon-option-vertical:before {\n content: '\\e235';\n}\n.glyphicon-menu-hamburger:before {\n content: '\\e236';\n}\n.glyphicon-modal-window:before {\n content: '\\e237';\n}\n.glyphicon-oil:before {\n content: '\\e238';\n}\n.glyphicon-grain:before {\n content: '\\e239';\n}\n.glyphicon-sunglasses:before {\n content: '\\e240';\n}\n.glyphicon-text-size:before {\n content: '\\e241';\n}\n.glyphicon-text-color:before {\n content: '\\e242';\n}\n.glyphicon-text-background:before {\n content: '\\e243';\n}\n.glyphicon-object-align-top:before {\n content: '\\e244';\n}\n.glyphicon-object-align-bottom:before {\n content: '\\e245';\n}\n.glyphicon-object-align-horizontal:before {\n content: '\\e246';\n}\n.glyphicon-object-align-left:before {\n content: '\\e247';\n}\n.glyphicon-object-align-vertical:before {\n content: '\\e248';\n}\n.glyphicon-object-align-right:before {\n content: '\\e249';\n}\n.glyphicon-triangle-right:before {\n content: '\\e250';\n}\n.glyphicon-triangle-left:before {\n content: '\\e251';\n}\n.glyphicon-triangle-bottom:before {\n content: '\\e252';\n}\n.glyphicon-triangle-top:before {\n content: '\\e253';\n}\n.glyphicon-console:before {\n content: '\\e254';\n}\n.glyphicon-superscript:before {\n content: '\\e255';\n}\n.glyphicon-subscript:before {\n content: '\\e256';\n}\n.glyphicon-menu-left:before {\n content: '\\e257';\n}\n.glyphicon-menu-right:before {\n content: '\\e258';\n}\n.glyphicon-menu-down:before {\n content: '\\e259';\n}\n.glyphicon-menu-up:before {\n content: '\\e260';\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n display: inline-block;\n max-width: 100%;\n height: auto;\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role='button'] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n margin-left: -5px;\n list-style: none;\n}\n.list-inline > li {\n display: inline-block;\n padding-right: 5px;\n padding-left: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n overflow: hidden;\n clear: left;\n text-align: right;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n text-align: right;\n border-right: 5px solid #eee;\n border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n color: #333;\n word-break: break-all;\n word-wrap: break-word;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n.row {\n margin-right: -15px;\n margin-left: -15px;\n}\n//.col-xs-1,\n//.col-sm-1,\n//.col-md-1,\n//.col-lg-1,\n//.col-xs-2,\n//.col-sm-2,\n//.col-md-2,\n//.col-lg-2,\n//.col-xs-3,\n//.col-sm-3,\n//.col-md-3,\n//.col-lg-3,\n//.col-xs-4,\n//.col-sm-4,\n//.col-md-4,\n//.col-lg-4,\n//.col-xs-5,\n//.col-sm-5,\n//.col-md-5,\n//.col-lg-5,\n//.col-xs-6,\n//.col-sm-6,\n//.col-md-6,\n//.col-lg-6,\n//.col-xs-7,\n//.col-sm-7,\n//.col-md-7,\n//.col-lg-7,\n//.col-xs-8,\n//.col-sm-8,\n//.col-md-8,\n//.col-lg-8,\n//.col-xs-9,\n//.col-sm-9,\n//.col-md-9,\n//.col-lg-9,\n//.col-xs-10,\n//.col-sm-10,\n//.col-md-10,\n//.col-lg-10,\n//.col-xs-11,\n//.col-sm-11,\n//.col-md-11,\n//.col-lg-11,\n//.col-xs-12,\n//.col-sm-12,\n//.col-md-12,\n//.col-lg-12 {\n// position: relative;\n// min-height: 1px;\n// padding-right: 15px;\n// padding-left: 15px;\n//}\n//.col-xs-1,\n//.col-xs-2,\n//.col-xs-3,\n//.col-xs-4,\n//.col-xs-5,\n//.col-xs-6,\n//.col-xs-7,\n//.col-xs-8,\n//.col-xs-9,\n//.col-xs-10,\n//.col-xs-11,\n//.col-xs-12 {\n// float: left;\n//}\n//.col-xs-12 {\n// width: 100%;\n//}\n//.col-xs-11 {\n// width: 91.66666667%;\n//}\n//.col-xs-10 {\n// width: 83.33333333%;\n//}\n//.col-xs-9 {\n// width: 75%;\n//}\n//.col-xs-8 {\n// width: 66.66666667%;\n//}\n//.col-xs-7 {\n// width: 58.33333333%;\n//}\n//.col-xs-6 {\n// width: 50%;\n//}\n//.col-xs-5 {\n// width: 41.66666667%;\n//}\n//.col-xs-4 {\n// width: 33.33333333%;\n//}\n//.col-xs-3 {\n// width: 25%;\n//}\n//.col-xs-2 {\n// width: 16.66666667%;\n//}\n//.col-xs-1 {\n// width: 8.33333333%;\n//}\n//.col-xs-pull-12 {\n// right: 100%;\n//}\n//.col-xs-pull-11 {\n// right: 91.66666667%;\n//}\n//.col-xs-pull-10 {\n// right: 83.33333333%;\n//}\n//.col-xs-pull-9 {\n// right: 75%;\n//}\n//.col-xs-pull-8 {\n// right: 66.66666667%;\n//}\n//.col-xs-pull-7 {\n// right: 58.33333333%;\n//}\n//.col-xs-pull-6 {\n// right: 50%;\n//}\n//.col-xs-pull-5 {\n// right: 41.66666667%;\n//}\n//.col-xs-pull-4 {\n// right: 33.33333333%;\n//}\n//.col-xs-pull-3 {\n// right: 25%;\n//}\n//.col-xs-pull-2 {\n// right: 16.66666667%;\n//}\n//.col-xs-pull-1 {\n// right: 8.33333333%;\n//}\n//.col-xs-pull-0 {\n// right: auto;\n//}\n//.col-xs-push-12 {\n// left: 100%;\n//}\n//.col-xs-push-11 {\n// left: 91.66666667%;\n//}\n//.col-xs-push-10 {\n// left: 83.33333333%;\n//}\n//.col-xs-push-9 {\n// left: 75%;\n//}\n//.col-xs-push-8 {\n// left: 66.66666667%;\n//}\n//.col-xs-push-7 {\n// left: 58.33333333%;\n//}\n//.col-xs-push-6 {\n// left: 50%;\n//}\n//.col-xs-push-5 {\n// left: 41.66666667%;\n//}\n//.col-xs-push-4 {\n// left: 33.33333333%;\n//}\n//.col-xs-push-3 {\n// left: 25%;\n//}\n//.col-xs-push-2 {\n// left: 16.66666667%;\n//}\n//.col-xs-push-1 {\n// left: 8.33333333%;\n//}\n//.col-xs-push-0 {\n// left: auto;\n//}\n//.col-xs-offset-12 {\n// margin-left: 100%;\n//}\n//.col-xs-offset-11 {\n// margin-left: 91.66666667%;\n//}\n//.col-xs-offset-10 {\n// margin-left: 83.33333333%;\n//}\n//.col-xs-offset-9 {\n// margin-left: 75%;\n//}\n//.col-xs-offset-8 {\n// margin-left: 66.66666667%;\n//}\n//.col-xs-offset-7 {\n// margin-left: 58.33333333%;\n//}\n//.col-xs-offset-6 {\n// margin-left: 50%;\n//}\n//.col-xs-offset-5 {\n// margin-left: 41.66666667%;\n//}\n//.col-xs-offset-4 {\n// margin-left: 33.33333333%;\n//}\n//.col-xs-offset-3 {\n// margin-left: 25%;\n//}\n//.col-xs-offset-2 {\n// margin-left: 16.66666667%;\n//}\n//.col-xs-offset-1 {\n// margin-left: 8.33333333%;\n//}\n//.col-xs-offset-0 {\n// margin-left: 0;\n//}\n//@media (min-width: 768px) {\n// .col-sm-1,\n// .col-sm-2,\n// .col-sm-3,\n// .col-sm-4,\n// .col-sm-5,\n// .col-sm-6,\n// .col-sm-7,\n// .col-sm-8,\n// .col-sm-9,\n// .col-sm-10,\n// .col-sm-11,\n// .col-sm-12 {\n// float: left;\n// }\n// .col-sm-12 {\n// width: 100%;\n// }\n// .col-sm-11 {\n// width: 91.66666667%;\n// }\n// .col-sm-10 {\n// width: 83.33333333%;\n// }\n// .col-sm-9 {\n// width: 75%;\n// }\n// .col-sm-8 {\n// width: 66.66666667%;\n// }\n// .col-sm-7 {\n// width: 58.33333333%;\n// }\n// .col-sm-6 {\n// width: 50%;\n// }\n// .col-sm-5 {\n// width: 41.66666667%;\n// }\n// .col-sm-4 {\n// width: 33.33333333%;\n// }\n// .col-sm-3 {\n// width: 25%;\n// }\n// .col-sm-2 {\n// width: 16.66666667%;\n// }\n// .col-sm-1 {\n// width: 8.33333333%;\n// }\n// .col-sm-pull-12 {\n// right: 100%;\n// }\n// .col-sm-pull-11 {\n// right: 91.66666667%;\n// }\n// .col-sm-pull-10 {\n// right: 83.33333333%;\n// }\n// .col-sm-pull-9 {\n// right: 75%;\n// }\n// .col-sm-pull-8 {\n// right: 66.66666667%;\n// }\n// .col-sm-pull-7 {\n// right: 58.33333333%;\n// }\n// .col-sm-pull-6 {\n// right: 50%;\n// }\n// .col-sm-pull-5 {\n// right: 41.66666667%;\n// }\n// .col-sm-pull-4 {\n// right: 33.33333333%;\n// }\n// .col-sm-pull-3 {\n// right: 25%;\n// }\n// .col-sm-pull-2 {\n// right: 16.66666667%;\n// }\n// .col-sm-pull-1 {\n// right: 8.33333333%;\n// }\n// .col-sm-pull-0 {\n// right: auto;\n// }\n// .col-sm-push-12 {\n// left: 100%;\n// }\n// .col-sm-push-11 {\n// left: 91.66666667%;\n// }\n// .col-sm-push-10 {\n// left: 83.33333333%;\n// }\n// .col-sm-push-9 {\n// left: 75%;\n// }\n// .col-sm-push-8 {\n// left: 66.66666667%;\n// }\n// .col-sm-push-7 {\n// left: 58.33333333%;\n// }\n// .col-sm-push-6 {\n// left: 50%;\n// }\n// .col-sm-push-5 {\n// left: 41.66666667%;\n// }\n// .col-sm-push-4 {\n// left: 33.33333333%;\n// }\n// .col-sm-push-3 {\n// left: 25%;\n// }\n// .col-sm-push-2 {\n// left: 16.66666667%;\n// }\n// .col-sm-push-1 {\n// left: 8.33333333%;\n// }\n// .col-sm-push-0 {\n// left: auto;\n// }\n// .col-sm-offset-12 {\n// margin-left: 100%;\n// }\n// .col-sm-offset-11 {\n// margin-left: 91.66666667%;\n// }\n// .col-sm-offset-10 {\n// margin-left: 83.33333333%;\n// }\n// .col-sm-offset-9 {\n// margin-left: 75%;\n// }\n// .col-sm-offset-8 {\n// margin-left: 66.66666667%;\n// }\n// .col-sm-offset-7 {\n// margin-left: 58.33333333%;\n// }\n// .col-sm-offset-6 {\n// margin-left: 50%;\n// }\n// .col-sm-offset-5 {\n// margin-left: 41.66666667%;\n// }\n// .col-sm-offset-4 {\n// margin-left: 33.33333333%;\n// }\n// .col-sm-offset-3 {\n// margin-left: 25%;\n// }\n// .col-sm-offset-2 {\n// margin-left: 16.66666667%;\n// }\n// .col-sm-offset-1 {\n// margin-left: 8.33333333%;\n// }\n// .col-sm-offset-0 {\n// margin-left: 0;\n// }\n//}\n//@media (min-width: 992px) {\n// .col-md-1,\n// .col-md-2,\n// .col-md-3,\n// .col-md-4,\n// .col-md-5,\n// .col-md-6,\n// .col-md-7,\n// .col-md-8,\n// .col-md-9,\n// .col-md-10,\n// .col-md-11,\n// .col-md-12 {\n// float: left;\n// }\n// .col-md-12 {\n// width: 100%;\n// }\n// .col-md-11 {\n// width: 91.66666667%;\n// }\n// .col-md-10 {\n// width: 83.33333333%;\n// }\n// .col-md-9 {\n// width: 75%;\n// }\n// .col-md-8 {\n// width: 66.66666667%;\n// }\n// .col-md-7 {\n// width: 58.33333333%;\n// }\n// .col-md-6 {\n// width: 50%;\n// }\n// .col-md-5 {\n// width: 41.66666667%;\n// }\n// .col-md-4 {\n// width: 33.33333333%;\n// }\n// .col-md-3 {\n// width: 25%;\n// }\n// .col-md-2 {\n// width: 16.66666667%;\n// }\n// .col-md-1 {\n// width: 8.33333333%;\n// }\n// .col-md-pull-12 {\n// right: 100%;\n// }\n// .col-md-pull-11 {\n// right: 91.66666667%;\n// }\n// .col-md-pull-10 {\n// right: 83.33333333%;\n// }\n// .col-md-pull-9 {\n// right: 75%;\n// }\n// .col-md-pull-8 {\n// right: 66.66666667%;\n// }\n// .col-md-pull-7 {\n// right: 58.33333333%;\n// }\n// .col-md-pull-6 {\n// right: 50%;\n// }\n// .col-md-pull-5 {\n// right: 41.66666667%;\n// }\n// .col-md-pull-4 {\n// right: 33.33333333%;\n// }\n// .col-md-pull-3 {\n// right: 25%;\n// }\n// .col-md-pull-2 {\n// right: 16.66666667%;\n// }\n// .col-md-pull-1 {\n// right: 8.33333333%;\n// }\n// .col-md-pull-0 {\n// right: auto;\n// }\n// .col-md-push-12 {\n// left: 100%;\n// }\n// .col-md-push-11 {\n// left: 91.66666667%;\n// }\n// .col-md-push-10 {\n// left: 83.33333333%;\n// }\n// .col-md-push-9 {\n// left: 75%;\n// }\n// .col-md-push-8 {\n// left: 66.66666667%;\n// }\n// .col-md-push-7 {\n// left: 58.33333333%;\n// }\n// .col-md-push-6 {\n// left: 50%;\n// }\n// .col-md-push-5 {\n// left: 41.66666667%;\n// }\n// .col-md-push-4 {\n// left: 33.33333333%;\n// }\n// .col-md-push-3 {\n// left: 25%;\n// }\n// .col-md-push-2 {\n// left: 16.66666667%;\n// }\n// .col-md-push-1 {\n// left: 8.33333333%;\n// }\n// .col-md-push-0 {\n// left: auto;\n// }\n// .col-md-offset-12 {\n// margin-left: 100%;\n// }\n// .col-md-offset-11 {\n// margin-left: 91.66666667%;\n// }\n// .col-md-offset-10 {\n// margin-left: 83.33333333%;\n// }\n// .col-md-offset-9 {\n// margin-left: 75%;\n// }\n// .col-md-offset-8 {\n// margin-left: 66.66666667%;\n// }\n// .col-md-offset-7 {\n// margin-left: 58.33333333%;\n// }\n// .col-md-offset-6 {\n// margin-left: 50%;\n// }\n// .col-md-offset-5 {\n// margin-left: 41.66666667%;\n// }\n// .col-md-offset-4 {\n// margin-left: 33.33333333%;\n// }\n// .col-md-offset-3 {\n// margin-left: 25%;\n// }\n// .col-md-offset-2 {\n// margin-left: 16.66666667%;\n// }\n// .col-md-offset-1 {\n// margin-left: 8.33333333%;\n// }\n// .col-md-offset-0 {\n// margin-left: 0;\n// }\n//}\n//@media (min-width: 1200px) {\n// .col-lg-1,\n// .col-lg-2,\n// .col-lg-3,\n// .col-lg-4,\n// .col-lg-5,\n// .col-lg-6,\n// .col-lg-7,\n// .col-lg-8,\n// .col-lg-9,\n// .col-lg-10,\n// .col-lg-11,\n// .col-lg-12 {\n// float: left;\n// }\n// .col-lg-12 {\n// width: 100%;\n// }\n// .col-lg-11 {\n// width: 91.66666667%;\n// }\n// .col-lg-10 {\n// width: 83.33333333%;\n// }\n// .col-lg-9 {\n// width: 75%;\n// }\n// .col-lg-8 {\n// width: 66.66666667%;\n// }\n// .col-lg-7 {\n// width: 58.33333333%;\n// }\n// .col-lg-6 {\n// width: 50%;\n// }\n// .col-lg-5 {\n// width: 41.66666667%;\n// }\n// .col-lg-4 {\n// width: 33.33333333%;\n// }\n// .col-lg-3 {\n// width: 25%;\n// }\n// .col-lg-2 {\n// width: 16.66666667%;\n// }\n// .col-lg-1 {\n// width: 8.33333333%;\n// }\n// .col-lg-pull-12 {\n// right: 100%;\n// }\n// .col-lg-pull-11 {\n// right: 91.66666667%;\n// }\n// .col-lg-pull-10 {\n// right: 83.33333333%;\n// }\n// .col-lg-pull-9 {\n// right: 75%;\n// }\n// .col-lg-pull-8 {\n// right: 66.66666667%;\n// }\n// .col-lg-pull-7 {\n// right: 58.33333333%;\n// }\n// .col-lg-pull-6 {\n// right: 50%;\n// }\n// .col-lg-pull-5 {\n// right: 41.66666667%;\n// }\n// .col-lg-pull-4 {\n// right: 33.33333333%;\n// }\n// .col-lg-pull-3 {\n// right: 25%;\n// }\n// .col-lg-pull-2 {\n// right: 16.66666667%;\n// }\n// .col-lg-pull-1 {\n// right: 8.33333333%;\n// }\n// .col-lg-pull-0 {\n// right: auto;\n// }\n// .col-lg-push-12 {\n// left: 100%;\n// }\n// .col-lg-push-11 {\n// left: 91.66666667%;\n// }\n// .col-lg-push-10 {\n// left: 83.33333333%;\n// }\n// .col-lg-push-9 {\n// left: 75%;\n// }\n// .col-lg-push-8 {\n// left: 66.66666667%;\n// }\n// .col-lg-push-7 {\n// left: 58.33333333%;\n// }\n// .col-lg-push-6 {\n// left: 50%;\n// }\n// .col-lg-push-5 {\n// left: 41.66666667%;\n// }\n// .col-lg-push-4 {\n// left: 33.33333333%;\n// }\n// .col-lg-push-3 {\n// left: 25%;\n// }\n// .col-lg-push-2 {\n// left: 16.66666667%;\n// }\n// .col-lg-push-1 {\n// left: 8.33333333%;\n// }\n// .col-lg-push-0 {\n// left: auto;\n// }\n// .col-lg-offset-12 {\n// margin-left: 100%;\n// }\n// .col-lg-offset-11 {\n// margin-left: 91.66666667%;\n// }\n// .col-lg-offset-10 {\n// margin-left: 83.33333333%;\n// }\n// .col-lg-offset-9 {\n// margin-left: 75%;\n// }\n// .col-lg-offset-8 {\n// margin-left: 66.66666667%;\n// }\n// .col-lg-offset-7 {\n// margin-left: 58.33333333%;\n// }\n// .col-lg-offset-6 {\n// margin-left: 50%;\n// }\n// .col-lg-offset-5 {\n// margin-left: 41.66666667%;\n// }\n// .col-lg-offset-4 {\n// margin-left: 33.33333333%;\n// }\n// .col-lg-offset-3 {\n// margin-left: 25%;\n// }\n// .col-lg-offset-2 {\n// margin-left: 16.66666667%;\n// }\n// .col-lg-offset-1 {\n// margin-left: 8.33333333%;\n// }\n// .col-lg-offset-0 {\n// margin-left: 0;\n// }\n//}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*='col-'] {\n position: static;\n display: table-column;\n float: none;\n}\ntable td[class*='col-'],\ntable th[class*='col-'] {\n position: static;\n display: table-cell;\n float: none;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n min-height: 0.01%;\n overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type='search'] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type='radio'],\ninput[type='checkbox'] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type='file'] {\n display: block;\n}\ninput[type='range'] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type='file']:focus,\ninput[type='radio']:focus,\ninput[type='checkbox']:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555;\n}\n//.form-control {\n// display: block;\n// width: 100%;\n// height: 34px;\n// padding: 6px 12px;\n// font-size: 14px;\n// line-height: 1.42857143;\n// color: #555;\n// background-color: #fff;\n// background-image: none;\n// border: 1px solid #ccc;\n// border-radius: 4px;\n// -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n// box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n// -webkit-transition: border-color ease-in-out 0.15s, -webkit-box-shadow ease-in-out 0.15s;\n// -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n// transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n//}\n//.form-control:focus {\n// border-color: #66afe9;\n// outline: 0;\n// -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n// box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n//}\n//.form-control::-moz-placeholder {\n// color: #999;\n// opacity: 1;\n//}\n//.form-control:-ms-input-placeholder {\n// color: #999;\n//}\n//.form-control::-webkit-input-placeholder {\n// color: #999;\n//}\n//.form-control[disabled],\n//.form-control[readonly],\n//fieldset[disabled] .form-control {\n// background-color: #eee;\n// opacity: 1;\n//}\n//.form-control[disabled],\n//fieldset[disabled] .form-control {\n// cursor: not-allowed;\n//}\n//textarea.form-control {\n// height: auto;\n//}\n//input[type='search'] {\n// -webkit-appearance: none;\n//}\n// @media screen and (-webkit-min-device-pixel-ratio: 0) {\n// input[type='date'],\n// input[type='time'],\n// input[type='datetime-local'],\n// input[type='month'] {\n// line-height: 34px;\n// }\n// input[type='date'].input-sm,\n// input[type='time'].input-sm,\n// input[type='datetime-local'].input-sm,\n// input[type='month'].input-sm,\n// .input-group-sm input[type='date'],\n// .input-group-sm input[type='time'],\n// .input-group-sm input[type='datetime-local'],\n// .input-group-sm input[type='month'] {\n// line-height: 30px;\n// }\n// input[type='date'].input-lg,\n// input[type='time'].input-lg,\n// input[type='datetime-local'].input-lg,\n// input[type='month'].input-lg,\n// .input-group-lg input[type='date'],\n// .input-group-lg input[type='time'],\n// .input-group-lg input[type='datetime-local'],\n// .input-group-lg input[type='month'] {\n// line-height: 46px;\n// }\n// }\n//.form-group {\n// margin-bottom: 15px;\n//}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type='radio'],\n.radio-inline input[type='radio'],\n.checkbox input[type='checkbox'],\n.checkbox-inline input[type='checkbox'] {\n position: absolute;\n margin-top: 4px \\9;\n margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n vertical-align: middle;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type='radio'][disabled],\ninput[type='checkbox'][disabled],\ninput[type='radio'].disabled,\ninput[type='checkbox'].disabled,\nfieldset[disabled] input[type='radio'],\nfieldset[disabled] input[type='checkbox'] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n min-height: 34px;\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-right: 0;\n padding-left: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.form-group-sm .form-control {\n height: 30px;\n line-height: 30px;\n}\ntextarea.form-group-sm .form-control,\nselect[multiple].form-group-sm .form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.form-group-lg .form-control {\n height: 46px;\n line-height: 46px;\n}\ntextarea.form-group-lg .form-control,\nselect[multiple].form-group-lg .form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n background-color: #f2dede;\n border-color: #a94442;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type='radio'],\n .form-inline .checkbox input[type='checkbox'] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n padding-top: 7px;\n margin-top: 0;\n margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n padding-top: 7px;\n margin-bottom: 0;\n text-align: right;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 14.333333px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n }\n}\n.btn {\n display: inline-block;\n padding: 6px 12px;\n margin-bottom: 0;\n font-size: 14px;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n outline: 0;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n pointer-events: none;\n cursor: not-allowed;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n opacity: 0.65;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus,\n.btn-default.focus,\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:hover,\n.btn-primary:focus,\n.btn-primary.focus,\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:hover,\n.btn-success:focus,\n.btn-success.focus,\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:hover,\n.btn-info:focus,\n.btn-info.focus,\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:hover,\n.btn-warning:focus,\n.btn-warning.focus,\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:hover,\n.btn-danger:focus,\n.btn-danger.focus,\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n font-weight: normal;\n color: #337ab7;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type='submit'].btn-block,\ninput[type='reset'].btn-block,\ninput[type='button'].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-timing-function: ease;\n -o-transition-timing-function: ease;\n transition-timing-function: ease;\n -webkit-transition-duration: 0.35s;\n -o-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-property: height, visibility;\n -o-transition-property: height, visibility;\n transition-property: height, visibility;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n font-size: 14px;\n text-align: left;\n list-style: none;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n color: #262626;\n text-decoration: none;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n background-color: #337ab7;\n outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n content: '';\n border-top: 0;\n border-bottom: 4px solid;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n right: 0;\n left: auto;\n }\n .navbar-right .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-right: 8px;\n padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-right: 12px;\n padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n display: table-cell;\n float: none;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle='buttons'] > .btn input[type='radio'],\n[data-toggle='buttons'] > .btn-group > .btn input[type='radio'],\n[data-toggle='buttons'] > .btn input[type='checkbox'],\n[data-toggle='buttons'] > .btn-group > .btn input[type='checkbox'] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*='col-'] {\n float: none;\n padding-right: 0;\n padding-left: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555;\n text-align: center;\n background-color: #eee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type='radio'],\n.input-group-addon input[type='checkbox'] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n margin-left: -1px;\n}\n.nav {\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eee;\n}\n.nav > li.disabled > a {\n color: #777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777;\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eee #eee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555;\n cursor: default;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n padding-right: 15px;\n padding-left: 15px;\n overflow-x: visible;\n -webkit-overflow-scrolling: touch;\n border-top: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-right: 0;\n padding-left: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n height: 50px;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n padding: 9px 10px;\n margin-top: 8px;\n margin-right: 15px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n padding: 10px 15px;\n margin-top: 8px;\n margin-right: -15px;\n margin-bottom: 8px;\n margin-left: -15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type='radio'],\n .navbar-form .checkbox input[type='checkbox'] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n padding-top: 0;\n padding-bottom: 0;\n margin-right: 0;\n margin-left: 0;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-right: 15px;\n margin-left: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n color: #fff;\n background-color: #080808;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n padding: 0 5px;\n color: #ccc;\n content: '/\\00a0';\n}\n.breadcrumb > .active {\n color: #777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n margin-left: -1px;\n line-height: 1.42857143;\n color: #337ab7;\n text-decoration: none;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n color: #23527c;\n background-color: #eee;\n border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 2;\n color: #fff;\n cursor: default;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777;\n cursor: not-allowed;\n background-color: #fff;\n border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-top-left-radius: 6px;\n border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n text-align: center;\n list-style: none;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777;\n cursor: not-allowed;\n background-color: #fff;\n}\n.label {\n display: inline;\n padding: 0.2em 0.6em 0.3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n background-color: #777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding: 30px 15px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding: 48px 0;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-right: 60px;\n padding-left: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-right: auto;\n margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@-o-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n height: 20px;\n margin-bottom: 20px;\n overflow: hidden;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: -o-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n -webkit-background-size: 40px 40px;\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: -o-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: -o-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: -o-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: -o-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n overflow: hidden;\n zoom: 1;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n padding-left: 0;\n margin-bottom: 20px;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\na.list-group-item:focus {\n color: #555;\n text-decoration: none;\n background-color: #f5f5f5;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n color: #777;\n cursor: not-allowed;\n background-color: #eee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\na.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\na.list-group-item-success.active:hover,\na.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\na.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\na.list-group-item-info.active:hover,\na.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\na.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\na.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-right: 15px;\n padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n margin-bottom: 0;\n border: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n filter: alpha(opacity=20);\n opacity: 0.2;\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n filter: alpha(opacity=50);\n opacity: 0.5;\n}\nbutton.close {\n -webkit-appearance: none;\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n outline: 0;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n.modal-backdrop.fade {\n filter: alpha(opacity=0);\n opacity: 0;\n}\n.modal-backdrop.in {\n filter: alpha(opacity=50);\n opacity: 0.5;\n}\n.modal-header {\n min-height: 16.42857143px;\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-bottom: 0;\n margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n font-size: 12px;\n font-weight: normal;\n line-height: 1.4;\n filter: alpha(opacity=0);\n opacity: 0;\n}\n.tooltip.in {\n filter: alpha(opacity=90);\n opacity: 0.9;\n}\n.tooltip.top {\n padding: 5px 0;\n margin-top: -3px;\n}\n.tooltip.right {\n padding: 0 5px;\n margin-left: 3px;\n}\n.tooltip.bottom {\n padding: 5px 0;\n margin-top: 3px;\n}\n.tooltip.left {\n padding: 0 5px;\n margin-left: -3px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n text-decoration: none;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n right: 5px;\n bottom: 0;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n font-size: 14px;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: left;\n white-space: normal;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n padding: 8px 14px;\n margin: 0;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n content: '';\n border-width: 10px;\n}\n.popover.top > .arrow {\n bottom: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-color: #999;\n border-top-color: rgba(0, 0, 0, 0.25);\n border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n bottom: 1px;\n margin-left: -10px;\n content: ' ';\n border-top-color: #fff;\n border-bottom-width: 0;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-right-color: #999;\n border-right-color: rgba(0, 0, 0, 0.25);\n border-left-width: 0;\n}\n.popover.right > .arrow:after {\n bottom: -10px;\n left: 1px;\n content: ' ';\n border-right-color: #fff;\n border-left-width: 0;\n}\n.popover.bottom > .arrow {\n top: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.popover.bottom > .arrow:after {\n top: 1px;\n margin-left: -10px;\n content: ' ';\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n right: 1px;\n bottom: -10px;\n content: ' ';\n border-right-width: 0;\n border-left-color: #fff;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n.carousel-inner > .item {\n position: relative;\n display: none;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000;\n perspective: 1000;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n left: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n left: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n left: 0;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 15%;\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n filter: alpha(opacity=50);\n opacity: 0.5;\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -webkit-gradient(\n linear,\n left top,\n right top,\n from(rgba(0, 0, 0, 0.5)),\n to(rgba(0, 0, 0, 0.0001))\n );\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n background-repeat: repeat-x;\n}\n.carousel-control.right {\n right: 0;\n left: auto;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -webkit-gradient(\n linear,\n left top,\n right top,\n from(rgba(0, 0, 0, 0.0001)),\n to(rgba(0, 0, 0, 0.5))\n );\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n color: #fff;\n text-decoration: none;\n filter: alpha(opacity=90);\n outline: 0;\n opacity: 0.9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n margin-top: -10px;\n font-family: serif;\n line-height: 1;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n padding-left: 0;\n margin-left: -30%;\n text-align: center;\n list-style: none;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n border: 1px solid #fff;\n border-radius: 10px;\n}\n.carousel-indicators .active {\n width: 12px;\n height: 12px;\n margin: 0;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -15px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -15px;\n }\n .carousel-caption {\n right: 20%;\n left: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n display: table;\n content: ' ';\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-right: auto;\n margin-left: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n","/*******************************************************************************\n * bootstrap-rtl (version 3.3.4)\n * Author: Morteza Ansarinia (http://github.com/morteza)\n * Created on: August 13,2015\n * Project: bootstrap-rtl\n * Copyright: Unlicensed Public Domain\n *******************************************************************************/\n\n[dir='rtl'] {\n .flip.text-left {\n text-align: right;\n }\n .flip.text-right {\n text-align: left;\n }\n .list-unstyled {\n padding-right: 0;\n padding-left: initial;\n }\n .list-inline {\n padding-right: 0;\n padding-left: initial;\n margin-right: -5px;\n margin-left: 0;\n }\n dd {\n margin-right: 0;\n margin-left: initial;\n }\n @media (min-width: 768px) {\n .dl-horizontal dt {\n float: right;\n clear: right;\n text-align: left;\n }\n .dl-horizontal dd {\n margin-right: 180px;\n margin-left: 0;\n }\n }\n blockquote {\n border-right: 5px solid #eeeeee;\n border-left: 0;\n }\n .blockquote-reverse,\n blockquote.pull-left {\n padding-left: 15px;\n padding-right: 0;\n border-left: 5px solid #eeeeee;\n border-right: 0;\n text-align: left;\n }\n .col-xs-1,\n .col-sm-1,\n .col-md-1,\n .col-lg-1,\n .col-xs-2,\n .col-sm-2,\n .col-md-2,\n .col-lg-2,\n .col-xs-3,\n .col-sm-3,\n .col-md-3,\n .col-lg-3,\n .col-xs-4,\n .col-sm-4,\n .col-md-4,\n .col-lg-4,\n .col-xs-5,\n .col-sm-5,\n .col-md-5,\n .col-lg-5,\n .col-xs-6,\n .col-sm-6,\n .col-md-6,\n .col-lg-6,\n .col-xs-7,\n .col-sm-7,\n .col-md-7,\n .col-lg-7,\n .col-xs-8,\n .col-sm-8,\n .col-md-8,\n .col-lg-8,\n .col-xs-9,\n .col-sm-9,\n .col-md-9,\n .col-lg-9,\n .col-xs-10,\n .col-sm-10,\n .col-md-10,\n .col-lg-10,\n .col-xs-11,\n .col-sm-11,\n .col-md-11,\n .col-lg-11,\n .col-xs-12,\n .col-sm-12,\n .col-md-12,\n .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n }\n .col-xs-1,\n .col-xs-2,\n .col-xs-3,\n .col-xs-4,\n .col-xs-5,\n .col-xs-6,\n .col-xs-7,\n .col-xs-8,\n .col-xs-9,\n .col-xs-10,\n .col-xs-11,\n .col-xs-12 {\n float: right;\n }\n .col-xs-12 {\n width: 100%;\n }\n .col-xs-11 {\n width: 91.66666667%;\n }\n .col-xs-10 {\n width: 83.33333333%;\n }\n .col-xs-9 {\n width: 75%;\n }\n .col-xs-8 {\n width: 66.66666667%;\n }\n .col-xs-7 {\n width: 58.33333333%;\n }\n .col-xs-6 {\n width: 50%;\n }\n .col-xs-5 {\n width: 41.66666667%;\n }\n .col-xs-4 {\n width: 33.33333333%;\n }\n .col-xs-3 {\n width: 25%;\n }\n .col-xs-2 {\n width: 16.66666667%;\n }\n .col-xs-1 {\n width: 8.33333333%;\n }\n .col-xs-pull-12 {\n left: 100%;\n right: auto;\n }\n .col-xs-pull-11 {\n left: 91.66666667%;\n right: auto;\n }\n .col-xs-pull-10 {\n left: 83.33333333%;\n right: auto;\n }\n .col-xs-pull-9 {\n left: 75%;\n right: auto;\n }\n .col-xs-pull-8 {\n left: 66.66666667%;\n right: auto;\n }\n .col-xs-pull-7 {\n left: 58.33333333%;\n right: auto;\n }\n .col-xs-pull-6 {\n left: 50%;\n right: auto;\n }\n .col-xs-pull-5 {\n left: 41.66666667%;\n right: auto;\n }\n .col-xs-pull-4 {\n left: 33.33333333%;\n right: auto;\n }\n .col-xs-pull-3 {\n left: 25%;\n right: auto;\n }\n .col-xs-pull-2 {\n left: 16.66666667%;\n right: auto;\n }\n .col-xs-pull-1 {\n left: 8.33333333%;\n right: auto;\n }\n .col-xs-pull-0 {\n left: auto;\n right: auto;\n }\n .col-xs-push-12 {\n right: 100%;\n left: 0;\n }\n .col-xs-push-11 {\n right: 91.66666667%;\n left: 0;\n }\n .col-xs-push-10 {\n right: 83.33333333%;\n left: 0;\n }\n .col-xs-push-9 {\n right: 75%;\n left: 0;\n }\n .col-xs-push-8 {\n right: 66.66666667%;\n left: 0;\n }\n .col-xs-push-7 {\n right: 58.33333333%;\n left: 0;\n }\n .col-xs-push-6 {\n right: 50%;\n left: 0;\n }\n .col-xs-push-5 {\n right: 41.66666667%;\n left: 0;\n }\n .col-xs-push-4 {\n right: 33.33333333%;\n left: 0;\n }\n .col-xs-push-3 {\n right: 25%;\n left: 0;\n }\n .col-xs-push-2 {\n right: 16.66666667%;\n left: 0;\n }\n .col-xs-push-1 {\n right: 8.33333333%;\n left: 0;\n }\n .col-xs-push-0 {\n right: auto;\n left: 0;\n }\n .col-xs-offset-12 {\n margin-right: 100%;\n margin-left: 0;\n }\n .col-xs-offset-11 {\n margin-right: 91.66666667%;\n margin-left: 0;\n }\n .col-xs-offset-10 {\n margin-right: 83.33333333%;\n margin-left: 0;\n }\n .col-xs-offset-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .col-xs-offset-8 {\n margin-right: 66.66666667%;\n margin-left: 0;\n }\n .col-xs-offset-7 {\n margin-right: 58.33333333%;\n margin-left: 0;\n }\n .col-xs-offset-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .col-xs-offset-5 {\n margin-right: 41.66666667%;\n margin-left: 0;\n }\n .col-xs-offset-4 {\n margin-right: 33.33333333%;\n margin-left: 0;\n }\n .col-xs-offset-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .col-xs-offset-2 {\n margin-right: 16.66666667%;\n margin-left: 0;\n }\n .col-xs-offset-1 {\n margin-right: 8.33333333%;\n margin-left: 0;\n }\n .col-xs-offset-0 {\n margin-right: 0%;\n margin-left: 0;\n }\n @media (min-width: 768px) {\n .col-sm-1,\n .col-sm-2,\n .col-sm-3,\n .col-sm-4,\n .col-sm-5,\n .col-sm-6,\n .col-sm-7,\n .col-sm-8,\n .col-sm-9,\n .col-sm-10,\n .col-sm-11,\n .col-sm-12 {\n float: right;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n left: 100%;\n right: auto;\n }\n .col-sm-pull-11 {\n left: 91.66666667%;\n right: auto;\n }\n .col-sm-pull-10 {\n left: 83.33333333%;\n right: auto;\n }\n .col-sm-pull-9 {\n left: 75%;\n right: auto;\n }\n .col-sm-pull-8 {\n left: 66.66666667%;\n right: auto;\n }\n .col-sm-pull-7 {\n left: 58.33333333%;\n right: auto;\n }\n .col-sm-pull-6 {\n left: 50%;\n right: auto;\n }\n .col-sm-pull-5 {\n left: 41.66666667%;\n right: auto;\n }\n .col-sm-pull-4 {\n left: 33.33333333%;\n right: auto;\n }\n .col-sm-pull-3 {\n left: 25%;\n right: auto;\n }\n .col-sm-pull-2 {\n left: 16.66666667%;\n right: auto;\n }\n .col-sm-pull-1 {\n left: 8.33333333%;\n right: auto;\n }\n .col-sm-pull-0 {\n left: auto;\n right: auto;\n }\n .col-sm-push-12 {\n right: 100%;\n left: 0;\n }\n .col-sm-push-11 {\n right: 91.66666667%;\n left: 0;\n }\n .col-sm-push-10 {\n right: 83.33333333%;\n left: 0;\n }\n .col-sm-push-9 {\n right: 75%;\n left: 0;\n }\n .col-sm-push-8 {\n right: 66.66666667%;\n left: 0;\n }\n .col-sm-push-7 {\n right: 58.33333333%;\n left: 0;\n }\n .col-sm-push-6 {\n right: 50%;\n left: 0;\n }\n .col-sm-push-5 {\n right: 41.66666667%;\n left: 0;\n }\n .col-sm-push-4 {\n right: 33.33333333%;\n left: 0;\n }\n .col-sm-push-3 {\n right: 25%;\n left: 0;\n }\n .col-sm-push-2 {\n right: 16.66666667%;\n left: 0;\n }\n .col-sm-push-1 {\n right: 8.33333333%;\n left: 0;\n }\n .col-sm-push-0 {\n right: auto;\n left: 0;\n }\n .col-sm-offset-12 {\n margin-right: 100%;\n margin-left: 0;\n }\n .col-sm-offset-11 {\n margin-right: 91.66666667%;\n margin-left: 0;\n }\n .col-sm-offset-10 {\n margin-right: 83.33333333%;\n margin-left: 0;\n }\n .col-sm-offset-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .col-sm-offset-8 {\n margin-right: 66.66666667%;\n margin-left: 0;\n }\n .col-sm-offset-7 {\n margin-right: 58.33333333%;\n margin-left: 0;\n }\n .col-sm-offset-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .col-sm-offset-5 {\n margin-right: 41.66666667%;\n margin-left: 0;\n }\n .col-sm-offset-4 {\n margin-right: 33.33333333%;\n margin-left: 0;\n }\n .col-sm-offset-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .col-sm-offset-2 {\n margin-right: 16.66666667%;\n margin-left: 0;\n }\n .col-sm-offset-1 {\n margin-right: 8.33333333%;\n margin-left: 0;\n }\n .col-sm-offset-0 {\n margin-right: 0%;\n margin-left: 0;\n }\n }\n @media (min-width: 992px) {\n .col-md-1,\n .col-md-2,\n .col-md-3,\n .col-md-4,\n .col-md-5,\n .col-md-6,\n .col-md-7,\n .col-md-8,\n .col-md-9,\n .col-md-10,\n .col-md-11,\n .col-md-12 {\n float: right;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n left: 100%;\n right: auto;\n }\n .col-md-pull-11 {\n left: 91.66666667%;\n right: auto;\n }\n .col-md-pull-10 {\n left: 83.33333333%;\n right: auto;\n }\n .col-md-pull-9 {\n left: 75%;\n right: auto;\n }\n .col-md-pull-8 {\n left: 66.66666667%;\n right: auto;\n }\n .col-md-pull-7 {\n left: 58.33333333%;\n right: auto;\n }\n .col-md-pull-6 {\n left: 50%;\n right: auto;\n }\n .col-md-pull-5 {\n left: 41.66666667%;\n right: auto;\n }\n .col-md-pull-4 {\n left: 33.33333333%;\n right: auto;\n }\n .col-md-pull-3 {\n left: 25%;\n right: auto;\n }\n .col-md-pull-2 {\n left: 16.66666667%;\n right: auto;\n }\n .col-md-pull-1 {\n left: 8.33333333%;\n right: auto;\n }\n .col-md-pull-0 {\n left: auto;\n right: auto;\n }\n .col-md-push-12 {\n right: 100%;\n left: 0;\n }\n .col-md-push-11 {\n right: 91.66666667%;\n left: 0;\n }\n .col-md-push-10 {\n right: 83.33333333%;\n left: 0;\n }\n .col-md-push-9 {\n right: 75%;\n left: 0;\n }\n .col-md-push-8 {\n right: 66.66666667%;\n left: 0;\n }\n .col-md-push-7 {\n right: 58.33333333%;\n left: 0;\n }\n .col-md-push-6 {\n right: 50%;\n left: 0;\n }\n .col-md-push-5 {\n right: 41.66666667%;\n left: 0;\n }\n .col-md-push-4 {\n right: 33.33333333%;\n left: 0;\n }\n .col-md-push-3 {\n right: 25%;\n left: 0;\n }\n .col-md-push-2 {\n right: 16.66666667%;\n left: 0;\n }\n .col-md-push-1 {\n right: 8.33333333%;\n left: 0;\n }\n .col-md-push-0 {\n right: auto;\n left: 0;\n }\n .col-md-offset-12 {\n margin-right: 100%;\n margin-left: 0;\n }\n .col-md-offset-11 {\n margin-right: 91.66666667%;\n margin-left: 0;\n }\n .col-md-offset-10 {\n margin-right: 83.33333333%;\n margin-left: 0;\n }\n .col-md-offset-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .col-md-offset-8 {\n margin-right: 66.66666667%;\n margin-left: 0;\n }\n .col-md-offset-7 {\n margin-right: 58.33333333%;\n margin-left: 0;\n }\n .col-md-offset-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .col-md-offset-5 {\n margin-right: 41.66666667%;\n margin-left: 0;\n }\n .col-md-offset-4 {\n margin-right: 33.33333333%;\n margin-left: 0;\n }\n .col-md-offset-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .col-md-offset-2 {\n margin-right: 16.66666667%;\n margin-left: 0;\n }\n .col-md-offset-1 {\n margin-right: 8.33333333%;\n margin-left: 0;\n }\n .col-md-offset-0 {\n margin-right: 0%;\n margin-left: 0;\n }\n }\n @media (min-width: 1200px) {\n .col-lg-1,\n .col-lg-2,\n .col-lg-3,\n .col-lg-4,\n .col-lg-5,\n .col-lg-6,\n .col-lg-7,\n .col-lg-8,\n .col-lg-9,\n .col-lg-10,\n .col-lg-11,\n .col-lg-12 {\n float: right;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n left: 100%;\n right: auto;\n }\n .col-lg-pull-11 {\n left: 91.66666667%;\n right: auto;\n }\n .col-lg-pull-10 {\n left: 83.33333333%;\n right: auto;\n }\n .col-lg-pull-9 {\n left: 75%;\n right: auto;\n }\n .col-lg-pull-8 {\n left: 66.66666667%;\n right: auto;\n }\n .col-lg-pull-7 {\n left: 58.33333333%;\n right: auto;\n }\n .col-lg-pull-6 {\n left: 50%;\n right: auto;\n }\n .col-lg-pull-5 {\n left: 41.66666667%;\n right: auto;\n }\n .col-lg-pull-4 {\n left: 33.33333333%;\n right: auto;\n }\n .col-lg-pull-3 {\n left: 25%;\n right: auto;\n }\n .col-lg-pull-2 {\n left: 16.66666667%;\n right: auto;\n }\n .col-lg-pull-1 {\n left: 8.33333333%;\n right: auto;\n }\n .col-lg-pull-0 {\n left: auto;\n right: auto;\n }\n .col-lg-push-12 {\n right: 100%;\n left: 0;\n }\n .col-lg-push-11 {\n right: 91.66666667%;\n left: 0;\n }\n .col-lg-push-10 {\n right: 83.33333333%;\n left: 0;\n }\n .col-lg-push-9 {\n right: 75%;\n left: 0;\n }\n .col-lg-push-8 {\n right: 66.66666667%;\n left: 0;\n }\n .col-lg-push-7 {\n right: 58.33333333%;\n left: 0;\n }\n .col-lg-push-6 {\n right: 50%;\n left: 0;\n }\n .col-lg-push-5 {\n right: 41.66666667%;\n left: 0;\n }\n .col-lg-push-4 {\n right: 33.33333333%;\n left: 0;\n }\n .col-lg-push-3 {\n right: 25%;\n left: 0;\n }\n .col-lg-push-2 {\n right: 16.66666667%;\n left: 0;\n }\n .col-lg-push-1 {\n right: 8.33333333%;\n left: 0;\n }\n .col-lg-push-0 {\n right: auto;\n left: 0;\n }\n .col-lg-offset-12 {\n margin-right: 100%;\n margin-left: 0;\n }\n .col-lg-offset-11 {\n margin-right: 91.66666667%;\n margin-left: 0;\n }\n .col-lg-offset-10 {\n margin-right: 83.33333333%;\n margin-left: 0;\n }\n .col-lg-offset-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .col-lg-offset-8 {\n margin-right: 66.66666667%;\n margin-left: 0;\n }\n .col-lg-offset-7 {\n margin-right: 58.33333333%;\n margin-left: 0;\n }\n .col-lg-offset-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .col-lg-offset-5 {\n margin-right: 41.66666667%;\n margin-left: 0;\n }\n .col-lg-offset-4 {\n margin-right: 33.33333333%;\n margin-left: 0;\n }\n .col-lg-offset-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .col-lg-offset-2 {\n margin-right: 16.66666667%;\n margin-left: 0;\n }\n .col-lg-offset-1 {\n margin-right: 8.33333333%;\n margin-left: 0;\n }\n .col-lg-offset-0 {\n margin-right: 0%;\n margin-left: 0;\n }\n }\n caption {\n text-align: right;\n }\n th:not(.mx-left-aligned) {\n text-align: right;\n }\n @media screen and (max-width: 767px) {\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-right: 0;\n border-left: initial;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-left: 0;\n border-right: initial;\n }\n }\n .radio label,\n .checkbox label {\n padding-right: 20px;\n padding-left: initial;\n }\n .radio input[type='radio'],\n .radio-inline input[type='radio'],\n .checkbox input[type='checkbox'],\n .checkbox-inline input[type='checkbox'] {\n margin-right: -20px;\n margin-left: auto;\n }\n .radio-inline,\n .checkbox-inline {\n padding-right: 20px;\n padding-left: 0;\n }\n .radio-inline + .radio-inline,\n .checkbox-inline + .checkbox-inline {\n margin-right: 10px;\n margin-left: 0;\n }\n .has-feedback .form-control {\n padding-left: 42.5px;\n padding-right: 12px;\n }\n .form-control-feedback {\n left: 0;\n right: auto;\n }\n @media (min-width: 768px) {\n .form-inline label {\n padding-right: 0;\n padding-left: initial;\n }\n .form-inline .radio input[type='radio'],\n .form-inline .checkbox input[type='checkbox'] {\n margin-right: 0;\n margin-left: auto;\n }\n }\n @media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: left;\n }\n }\n .form-horizontal .has-feedback .form-control-feedback {\n left: 15px;\n right: auto;\n }\n .caret {\n margin-right: 2px;\n margin-left: 0;\n }\n .dropdown-menu {\n right: 0;\n left: auto;\n float: left;\n text-align: right;\n }\n .dropdown-menu.pull-right {\n left: 0;\n right: auto;\n float: right;\n }\n .dropdown-menu-right {\n left: auto;\n right: 0;\n }\n .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n @media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n }\n .btn-group > .btn,\n .btn-group-vertical > .btn {\n float: right;\n }\n .btn-group .btn + .btn,\n .btn-group .btn + .btn-group,\n .btn-group .btn-group + .btn,\n .btn-group .btn-group + .btn-group {\n margin-right: -1px;\n margin-left: 0px;\n }\n .btn-toolbar {\n margin-right: -5px;\n margin-left: 0px;\n }\n .btn-toolbar .btn-group,\n .btn-toolbar .input-group {\n float: right;\n }\n .btn-toolbar > .btn,\n .btn-toolbar > .btn-group,\n .btn-toolbar > .input-group {\n margin-right: 5px;\n margin-left: 0px;\n }\n .btn-group > .btn:first-child {\n margin-right: 0;\n }\n .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n .btn-group > .btn:last-child:not(:first-child),\n .btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n .btn-group > .btn-group {\n float: right;\n }\n .btn-group.btn-group-justified > .btn,\n .btn-group.btn-group-justified > .btn-group {\n float: none;\n }\n .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n }\n .btn-group > .btn-group:first-child > .btn:last-child,\n .btn-group > .btn-group:first-child > .dropdown-toggle {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n .btn-group > .btn-group:last-child > .btn:first-child {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n .btn .caret {\n margin-right: 0;\n }\n .btn-group-vertical > .btn + .btn,\n .btn-group-vertical > .btn + .btn-group,\n .btn-group-vertical > .btn-group + .btn,\n .btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-right: 0;\n }\n .input-group .form-control {\n float: right;\n }\n .input-group .form-control:first-child,\n .input-group-addon:first-child,\n .input-group-btn:first-child > .btn,\n .input-group-btn:first-child > .btn-group > .btn,\n .input-group-btn:first-child > .dropdown-toggle,\n .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n .input-group-addon:first-child {\n border-left: 0px;\n border-right: 1px solid;\n }\n .input-group .form-control:last-child,\n .input-group-addon:last-child,\n .input-group-btn:last-child > .btn,\n .input-group-btn:last-child > .btn-group > .btn,\n .input-group-btn:last-child > .dropdown-toggle,\n .input-group-btn:first-child > .btn:not(:first-child),\n .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n .input-group-addon:last-child {\n border-left-width: 1px;\n border-left-style: solid;\n border-right: 0px;\n }\n .input-group-btn > .btn + .btn {\n margin-right: -1px;\n margin-left: auto;\n }\n .input-group-btn:first-child > .btn,\n .input-group-btn:first-child > .btn-group {\n margin-left: -1px;\n margin-right: auto;\n }\n .input-group-btn:last-child > .btn,\n .input-group-btn:last-child > .btn-group {\n margin-right: -1px;\n margin-left: auto;\n }\n .nav {\n padding-right: 0;\n padding-left: initial;\n }\n .nav-tabs > li {\n float: right;\n }\n .nav-tabs > li > a {\n margin-left: auto;\n margin-right: -2px;\n border-radius: 4px 4px 0 0;\n }\n .nav-pills > li {\n float: right;\n }\n .nav-pills > li > a {\n border-radius: 4px;\n }\n .nav-pills > li + li {\n margin-right: 2px;\n margin-left: auto;\n }\n .nav-stacked > li {\n float: none;\n }\n .nav-stacked > li + li {\n margin-right: 0;\n margin-left: auto;\n }\n .nav-justified > .dropdown .dropdown-menu {\n right: auto;\n }\n .nav-tabs-justified > li > a {\n margin-left: 0;\n margin-right: auto;\n }\n @media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-radius: 4px 4px 0 0;\n }\n }\n @media (min-width: 768px) {\n .navbar-header {\n float: right;\n }\n }\n .navbar-collapse {\n padding-right: 15px;\n padding-left: 15px;\n }\n .navbar-brand {\n float: right;\n }\n @media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-right: -15px;\n margin-left: auto;\n }\n }\n .navbar-toggle {\n float: left;\n margin-left: 15px;\n margin-right: auto;\n }\n @media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 25px 5px 15px;\n }\n }\n @media (min-width: 768px) {\n .navbar-nav {\n float: right;\n }\n .navbar-nav > li {\n float: right;\n }\n }\n @media (min-width: 768px) {\n .navbar-left.flip {\n float: right !important;\n }\n .navbar-right:last-child {\n margin-left: -15px;\n margin-right: auto;\n }\n .navbar-right.flip {\n float: left !important;\n margin-left: -15px;\n margin-right: auto;\n }\n .navbar-right .dropdown-menu {\n left: 0;\n right: auto;\n }\n }\n @media (min-width: 768px) {\n .navbar-text {\n float: right;\n }\n .navbar-text.navbar-right:last-child {\n margin-left: 0;\n margin-right: auto;\n }\n }\n .pagination {\n padding-right: 0;\n }\n .pagination > li > a,\n .pagination > li > span {\n float: right;\n margin-right: -1px;\n margin-left: 0px;\n }\n .pagination > li:first-child > a,\n .pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n .pagination > li:last-child > a,\n .pagination > li:last-child > span {\n margin-right: -1px;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n .pager {\n padding-right: 0;\n padding-left: initial;\n }\n .pager .next > a,\n .pager .next > span {\n float: left;\n }\n .pager .previous > a,\n .pager .previous > span {\n float: right;\n }\n .nav-pills > li > a > .badge {\n margin-left: 0px;\n margin-right: 3px;\n }\n .list-group-item > .badge {\n float: left;\n }\n .list-group-item > .badge + .badge {\n margin-left: 5px;\n margin-right: auto;\n }\n .alert-dismissable,\n .alert-dismissible {\n padding-left: 35px;\n padding-right: 15px;\n }\n .alert-dismissable .close,\n .alert-dismissible .close {\n right: auto;\n left: -21px;\n }\n .progress-bar {\n float: right;\n }\n .media > .pull-left {\n margin-right: 10px;\n }\n .media > .pull-left.flip {\n margin-right: 0;\n margin-left: 10px;\n }\n .media > .pull-right {\n margin-left: 10px;\n }\n .media > .pull-right.flip {\n margin-left: 0;\n margin-right: 10px;\n }\n .media-right,\n .media > .pull-right {\n padding-right: 10px;\n padding-left: initial;\n }\n .media-left,\n .media > .pull-left {\n padding-left: 10px;\n padding-right: initial;\n }\n .media-list {\n padding-right: 0;\n padding-left: initial;\n list-style: none;\n }\n .list-group {\n padding-right: 0;\n padding-left: initial;\n }\n .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 0;\n }\n .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 0;\n }\n .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n border-top-right-radius: 0;\n }\n .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n border-top-left-radius: 0;\n }\n .panel > .table-bordered > thead > tr > th:first-child,\n .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n .panel > .table-bordered > tbody > tr > th:first-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .panel > .table-bordered > tfoot > tr > th:first-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .panel > .table-bordered > thead > tr > td:first-child,\n .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n .panel > .table-bordered > tbody > tr > td:first-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .panel > .table-bordered > tfoot > tr > td:first-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-right: 0;\n border-left: none;\n }\n .panel > .table-bordered > thead > tr > th:last-child,\n .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n .panel > .table-bordered > tbody > tr > th:last-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .panel > .table-bordered > tfoot > tr > th:last-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .panel > .table-bordered > thead > tr > td:last-child,\n .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n .panel > .table-bordered > tbody > tr > td:last-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .panel > .table-bordered > tfoot > tr > td:last-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: none;\n border-left: 0;\n }\n .embed-responsive .embed-responsive-item,\n .embed-responsive iframe,\n .embed-responsive embed,\n .embed-responsive object {\n right: 0;\n left: auto;\n }\n .close {\n float: left;\n }\n .modal-footer {\n text-align: left;\n }\n .modal-footer.flip {\n text-align: right;\n }\n .modal-footer .btn + .btn {\n margin-left: auto;\n margin-right: 5px;\n }\n .modal-footer .btn-group .btn + .btn {\n margin-right: -1px;\n margin-left: auto;\n }\n .modal-footer .btn-block + .btn-block {\n margin-right: 0;\n margin-left: auto;\n }\n .popover {\n left: auto;\n text-align: right;\n }\n .popover.top > .arrow {\n right: 50%;\n left: auto;\n margin-right: -11px;\n margin-left: auto;\n }\n .popover.top > .arrow:after {\n margin-right: -10px;\n margin-left: auto;\n }\n .popover.bottom > .arrow {\n right: 50%;\n left: auto;\n margin-right: -11px;\n margin-left: auto;\n }\n .popover.bottom > .arrow:after {\n margin-right: -10px;\n margin-left: auto;\n }\n .carousel-control {\n right: 0;\n bottom: 0;\n }\n .carousel-control.left {\n right: auto;\n left: 0;\n background-image: -webkit-linear-gradient(\n left,\n color-stop(rgba(0, 0, 0, 0.5) 0%),\n color-stop(rgba(0, 0, 0, 0.0001) 100%)\n );\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n }\n .carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(\n left,\n color-stop(rgba(0, 0, 0, 0.0001) 0%),\n color-stop(rgba(0, 0, 0, 0.5) 100%)\n );\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n }\n .carousel-control .icon-prev,\n .carousel-control .glyphicon-chevron-left {\n left: 50%;\n right: auto;\n margin-right: -10px;\n }\n .carousel-control .icon-next,\n .carousel-control .glyphicon-chevron-right {\n right: 50%;\n left: auto;\n margin-left: -10px;\n }\n .carousel-indicators {\n right: 50%;\n left: 0;\n margin-right: -30%;\n margin-left: 0;\n padding-left: 0;\n }\n @media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: 0;\n margin-right: -15px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-left: 0;\n margin-right: -15px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n }\n .pull-right.flip {\n float: left !important;\n }\n .pull-left.flip {\n float: right !important;\n }\n}\n","/* @preserve\n Copyright (c) 2005-2016, Mendix bv. All rights reserved.\n See mxclientsystem/licenses.txt for third party licenses that apply.\n*/\n\n\n/*\n\tEssential styles that themes can inherit.\n\tIn other words, works but doesn't look great.\n*/\n\n\n\n/****\n\t\tGENERIC PIECES\n ****/\n\n .dijitReset {\n\t/* Use this style to null out padding, margin, border in your template elements\n\t\tso that page specific styles don't break them.\n\t\t- Use in all TABLE, TR and TD tags.\n\t*/\n\tmargin:0;\n\tborder:0;\n\tpadding:0;\n\tfont: inherit;\n\tline-height:normal;\n\tcolor: inherit;\n}\n.dj_a11y .dijitReset {\n\t-moz-appearance: none; /* remove predefined high-contrast styling in Firefox */\n}\n\n.dijitInline {\n\t/* To inline block elements.\n\t\tSimilar to InlineBox below, but this has fewer side-effects in Moz.\n\t\tAlso, apparently works on a DIV as well as a FIELDSET.\n\t*/\n\tdisplay:inline-block;\t\t\t/* webkit and FF3 */\n\tborder:0;\n\tpadding:0;\n\tvertical-align:middle;\n}\n\ntable.dijitInline {\n\t/* To inline tables with a given width set */\n\tdisplay:inline-table;\n\tbox-sizing: content-box; -moz-box-sizing: content-box;\n}\n\n.dijitHidden {\n\t/* To hide unselected panes in StackContainer etc. */\n\tposition: absolute; /* remove from normal document flow to simulate display: none */\n\tvisibility: hidden; /* hide element from view, but don't break scrolling, see #18612 */\n}\n.dijitHidden * {\n\tvisibility: hidden !important; /* hide visibility:visible descendants of class=dijitHidden nodes, see #18799 */\n}\n\n.dijitVisible {\n\t/* To show selected pane in StackContainer etc. */\n\tdisplay: block !important;\t/* override user's display:none setting via style setting or indirectly via class */\n\tposition: relative;\t\t\t/* to support setting width/height, see #2033 */\n\tvisibility: visible;\n}\n\n.dj_ie6 .dijitComboBox .dijitInputContainer,\n.dijitInputContainer {\n\t/* for positioning of placeHolder */\n\toverflow: hidden;\n\tfloat: none !important; /* needed to squeeze the INPUT in */\n\tposition: relative;\n}\n.dj_ie7 .dijitInputContainer {\n\tfloat: left !important; /* needed by IE to squeeze the INPUT in */\n\tclear: left;\n\tdisplay: inline-block !important; /* to fix wrong text alignment in textdir=rtl text box */\n}\n\n.dj_ie .dijitSelect input,\n.dj_ie input.dijitTextBox,\n.dj_ie .dijitTextBox input {\n\tfont-size: 100%;\n}\n.dijitSelect .dijitButtonText {\n\tfloat: left;\n\tvertical-align: top;\n}\nTABLE.dijitSelect {\n\tpadding: 0 !important; /* messes up border alignment */\n\tborder-collapse: separate; /* so jsfiddle works with Normalized CSS checked */\n}\n.dijitTextBox .dijitSpinnerButtonContainer,\n.dijitTextBox .dijitArrowButtonContainer,\n.dijitValidationTextBox .dijitValidationContainer {\n\tfloat: right;\n\ttext-align: center;\n}\n.dijitSelect input.dijitInputField,\n.dijitTextBox input.dijitInputField {\n\t/* override unreasonable user styling of buttons and icons */\n\tpadding-left: 0 !important;\n\tpadding-right: 0 !important;\n}\n.dijitValidationTextBox .dijitValidationContainer {\n\tdisplay: none;\n}\n\n.dijitTeeny {\n\tfont-size:1px;\n\tline-height:1px;\n}\n\n.dijitOffScreen { /* these class attributes should supersede any inline positioning style */\n\tposition: absolute !important;\n\tleft: -10000px !important;\n\ttop: -10000px !important;\n}\n\n/*\n * Popup items have a wrapper div (dijitPopup)\n * with the real popup inside, and maybe an iframe too\n */\n.dijitPopup {\n\tposition: absolute;\n\tbackground-color: transparent;\n\tmargin: 0;\n\tborder: 0;\n\tpadding: 0;\n\t-webkit-overflow-scrolling: touch;\n}\n\n.dijitPositionOnly {\n\t/* Null out all position-related properties */\n\tpadding: 0 !important;\n\tborder: 0 !important;\n\tbackground-color: transparent !important;\n\tbackground-image: none !important;\n\theight: auto !important;\n\twidth: auto !important;\n}\n\n.dijitNonPositionOnly {\n\t/* Null position-related properties */\n\tfloat: none !important;\n\tposition: static !important;\n\tmargin: 0 0 0 0 !important;\n\tvertical-align: middle !important;\n}\n\n.dijitBackgroundIframe {\n\t/* iframe used to prevent problems with PDF or other applets overlaying menus etc */\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: -1;\n\tborder: 0;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.dijitDisplayNone {\n\t/* hide something. Use this as a class rather than element.style so another class can override */\n\tdisplay:none !important;\n}\n\n.dijitContainer {\n\t/* for all layout containers */\n\toverflow: hidden;\t/* need on IE so something can be reduced in size, and so scrollbars aren't temporarily displayed when resizing */\n}\n\n/****\n\t\tA11Y\n ****/\n.dj_a11y .dijitIcon,\n.dj_a11y div.dijitArrowButtonInner, /* is this only for Spinner? if so, it should be deleted */\n.dj_a11y span.dijitArrowButtonInner,\n.dj_a11y img.dijitArrowButtonInner,\n.dj_a11y .dijitCalendarIncrementControl,\n.dj_a11y .dijitTreeExpando {\n\t/* hide icon nodes in high contrast mode; when necessary they will be replaced by character equivalents\n\t * exception for input.dijitArrowButtonInner, because the icon and character are controlled by the same node */\n\tdisplay: none;\n}\n.dijitSpinner div.dijitArrowButtonInner {\n\tdisplay: block; /* override previous rule */\n}\n\n.dj_a11y .dijitA11ySideArrow {\n\tdisplay: inline !important; /* display text instead */\n\tcursor: pointer;\n}\n\n/*\n * Since we can't use shading in a11y mode, and since the underline indicates today's date,\n * use a border to show the selected date.\n * Avoid screen jitter when switching selected date by compensating for the selected node's\n * border w/padding on other nodes.\n */\n.dj_a11y .dijitCalendarDateLabel {\n\tpadding: 1px;\n\tborder: 0px !important;\n}\n.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {\n\tborder-style: solid !important;\n\tborder-width: 1px !important;\n\tpadding: 0;\n}\n.dj_a11y .dijitCalendarDateTemplate {\n\tpadding-bottom: 0.1em !important;\t/* otherwise bottom border doesn't appear on IE */\n\tborder: 0px !important;\n}\n.dj_a11y .dijitButtonNode {\n\tborder: black outset medium !important;\n\n\t/* In claro, hovering a toolbar button reduces padding and adds a border.\n\t * Not needed in a11y mode since Toolbar buttons always have a border.\n\t */\n\tpadding: 0 !important;\n}\n.dj_a11y .dijitArrowButton {\n\tpadding: 0 !important;\n}\n\n.dj_a11y .dijitButtonContents {\n\tmargin: 0.15em; /* Margin needed to make focus outline visible */\n}\n\n.dj_a11y .dijitTextBoxReadOnly .dijitInputField,\n.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode {\n\tborder-style: outset!important;\n\tborder-width: medium!important;\n\tborder-color: #999 !important;\n\tcolor:#999 !important;\n}\n\n/* button inner contents - labels, icons etc. */\n.dijitButtonNode * {\n\tvertical-align: middle;\n}\n.dijitSelect .dijitArrowButtonInner,\n.dijitButtonNode .dijitArrowButtonInner {\n\t/* the arrow icon node */\n\tbackground: no-repeat center;\n\twidth: 12px;\n\theight: 12px;\n\tdirection: ltr; /* needed by IE/RTL */\n}\n\n/****\n\t3-element borders: ( dijitLeft + dijitStretch + dijitRight )\n\tThese were added for rounded corners on dijit.form.*Button but never actually used.\n ****/\n\n.dijitLeft {\n\t/* Left part of a 3-element border */\n\tbackground-position:left top;\n\tbackground-repeat:no-repeat;\n}\n\n.dijitStretch {\n\t/* Middle (stretchy) part of a 3-element border */\n\twhite-space:nowrap;\t\t\t/* MOW: move somewhere else */\n\tbackground-repeat:repeat-x;\n}\n\n.dijitRight {\n\t/* Right part of a 3-element border */\n\tbackground-position:right top;\n\tbackground-repeat:no-repeat;\n}\n\n/* Buttons */\n.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode {\n\topacity: 0.5;\n}\n\n.dijitToggleButton,\n.dijitButton,\n.dijitDropDownButton,\n.dijitComboButton {\n\t/* outside of button */\n\tmargin: 0.2em;\n\tvertical-align: middle;\n}\n\n.dijitButtonContents {\n\tdisplay: block;\t\t/* to make focus border rectangular */\n}\ntd.dijitButtonContents {\n\tdisplay: table-cell;\t/* but don't affect Select, ComboButton */\n}\n\n.dijitButtonNode img {\n\t/* make text and images line up cleanly */\n\tvertical-align:middle;\n\t/*margin-bottom:.2em;*/\n}\n\n.dijitToolbar .dijitComboButton {\n\t/* because Toolbar only draws a border around the hovered thing */\n\tborder-collapse: separate;\n}\n\n.dijitToolbar .dijitToggleButton,\n.dijitToolbar .dijitButton,\n.dijitToolbar .dijitDropDownButton,\n.dijitToolbar .dijitComboButton {\n\tmargin: 0;\n}\n\n.dijitToolbar .dijitButtonContents {\n\t/* just because it used to be this way */\n\tpadding: 1px 2px;\n}\n\n\n.dj_webkit .dijitToolbar .dijitDropDownButton {\n\tpadding-left: 0.3em;\n}\n.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {\n\tpadding:0;\n}\n\n.dijitSelect {\n\tborder:1px solid gray;\n}\n.dijitButtonNode {\n\t/* Node that is acting as a button -- may or may not be a BUTTON element */\n\tborder:1px solid gray;\n\tmargin:0;\n\tline-height:normal;\n\tvertical-align: middle;\n\ttext-align:center;\n\twhite-space: nowrap;\n}\n.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {\n\t/* apparent WebKit bug where messing with the font coupled with line-height:normal X 2 (dijitReset & dijitButtonNode)\n\tcan be different than just a single line-height:normal, visible in InlineEditBox/Spinner */\n\tline-height:inherit;\n}\n.dijitTextBox .dijitButtonNode {\n\tborder-width: 0;\n}\n\n.dijitSelect,\n.dijitSelect *,\n.dijitButtonNode,\n.dijitButtonNode * {\n\tcursor: pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n\n.dj_ie .dijitButtonNode {\n\t/* ensure hasLayout */\n\tzoom: 1;\n}\n\n.dj_ie .dijitButtonNode button {\n\t/*\n\t\tdisgusting hack to get rid of spurious padding around button elements\n\t\ton IE. MSIE is truly the web's boat anchor.\n\t*/\n\toverflow: visible;\n}\n\ndiv.dijitArrowButton {\n\tfloat: right;\n}\n\n/******\n\tTextBox related.\n\tEverything that has an \n*******/\n\n.dijitTextBox {\n\tborder: solid black 1px;\n\twidth: 15em;\t/* need to set default size on outer node since inner nodes say and . user can override */\n\tvertical-align: middle;\n}\n\n.dijitTextBoxReadOnly,\n.dijitTextBoxDisabled {\n\tcolor: gray;\n}\n.dj_safari .dijitTextBoxDisabled input {\n\tcolor: #B0B0B0; /* because Safari lightens disabled input/textarea no matter what color you specify */\n}\n.dj_safari textarea.dijitTextAreaDisabled {\n\tcolor: #333; /* because Safari lightens disabled input/textarea no matter what color you specify */\n}\n.dj_gecko .dijitTextBoxReadOnly input.dijitInputField, /* disable arrow and validation presentation inputs but allow real input for text selection */\n.dj_gecko .dijitTextBoxDisabled input {\n\t-moz-user-input: none; /* prevent focus of disabled textbox buttons */\n}\n\n.dijitPlaceHolder {\n\t/* hint text that appears in a textbox until user starts typing */\n\tcolor: #AAAAAA;\n\tfont-style: italic;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twhite-space: nowrap;\n\tpointer-events: none; /* so cut/paste context menu shows up when right clicking */\n}\n\n.dijitTimeTextBox {\n\twidth: 8em;\n}\n\n/* rules for webkit to deal with fuzzy blue focus border */\n.dijitTextBox input:focus {\n\toutline: none;\t/* blue fuzzy line looks wrong on combobox or something w/validation icon showing */\n}\n.dijitTextBoxFocused {\n\toutline: 5px -webkit-focus-ring-color;\n}\n\n.dijitSelect input,\n.dijitTextBox input {\n\tfloat: left; /* needed by IE to remove secret margin */\n}\n.dj_ie6 input.dijitTextBox,\n.dj_ie6 .dijitTextBox input {\n\tfloat: none;\n}\n.dijitInputInner {\n\t/* for when an is embedded inside an inline-block
with a size and border */\n\tborder:0 !important;\n\tbackground-color:transparent !important;\n\twidth:100% !important;\n\t/* IE dislikes horizontal tweaking combined with width:100% so punish everyone for consistency */\n\tpadding-left: 0 !important;\n\tpadding-right: 0 !important;\n\tmargin-left: 0 !important;\n\tmargin-right: 0 !important;\n}\n.dj_a11y .dijitTextBox input {\n\tmargin: 0 !important;\n}\n.dijitValidationTextBoxError input.dijitValidationInner,\n.dijitSelect input,\n.dijitTextBox input.dijitArrowButtonInner {\n\t/* used to display arrow icon/validation icon, or in arrow character in high contrast mode.\n\t * The css below is a trick to hide the character in non-high-contrast mode\n\t */\n\ttext-indent: -2em !important;\n\tdirection: ltr !important;\n\ttext-align: left !important;\n\theight: auto !important;\n}\n.dj_ie .dijitSelect input,\n.dj_ie .dijitTextBox input,\n.dj_ie input.dijitTextBox {\n\toverflow-y: visible; /* inputs need help expanding when padding is added or line-height is adjusted */\n\tline-height: normal; /* strict mode */\n}\n.dijitSelect .dijitSelectLabel span {\n\tline-height: 100%;\n}\n.dj_ie .dijitSelect .dijitSelectLabel {\n\tline-height: normal;\n}\n.dj_ie6 .dijitSelect .dijitSelectLabel,\n.dj_ie7 .dijitSelect .dijitSelectLabel,\n.dj_ie8 .dijitSelect .dijitSelectLabel,\n.dj_iequirks .dijitSelect .dijitSelectLabel,\n.dijitSelect td,\n.dj_ie6 .dijitSelect input,\n.dj_iequirks .dijitSelect input,\n.dj_ie6 .dijitSelect .dijitValidationContainer,\n.dj_ie6 .dijitTextBox input,\n.dj_ie6 input.dijitTextBox,\n.dj_iequirks .dijitTextBox input.dijitValidationInner,\n.dj_iequirks .dijitTextBox input.dijitArrowButtonInner,\n.dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner,\n.dj_iequirks .dijitTextBox input.dijitInputInner,\n.dj_iequirks input.dijitTextBox {\n\tline-height: 100%; /* IE7 problem where the icon is vertically way too low w/o this */\n}\n.dj_a11y input.dijitValidationInner,\n.dj_a11y input.dijitArrowButtonInner {\n\t/* (in high contrast mode) revert rules from above so character displays */\n\ttext-indent: 0 !important;\n\twidth: 1em !important;\n\tcolor: black !important;\n}\n.dijitValidationTextBoxError .dijitValidationContainer {\n\tdisplay: inline;\n\tcursor: default;\n}\n\n/* ComboBox & Spinner */\n\n.dijitSpinner .dijitSpinnerButtonContainer,\n.dijitComboBox .dijitArrowButtonContainer {\n\t/* dividing line between input area and up/down button(s) for ComboBox and Spinner */\n\tborder-width: 0 0 0 1px !important; /* !important needed due to wayward \".theme .dijitButtonNode\" rules */\n}\n.dj_a11y .dijitSelect .dijitArrowButtonContainer,\n.dijitToolbar .dijitComboBox .dijitArrowButtonContainer {\n\t/* overrides above rule plus mirror-image rule in dijit_rtl.css to have no divider when ComboBox in Toolbar */\n\tborder-width: 0 !important;\n}\n\n.dijitComboBoxMenu {\n\t/* Drop down menu is implemented as
  • ... but we don't want circles before each item */\n\tlist-style-type: none;\n}\n.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {\n\t/* dividing line between input area and up/down button(s) for ComboBox and Spinner */\n\tborder-width: 0;\n}\n.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {\n\tclear: both; /* IE workaround */\n}\n\n.dj_ie .dijitToolbar .dijitComboBox {\n\t/* make combobox buttons align properly with other buttons in a toolbar */\n\tvertical-align: middle;\n}\n\n/* Spinner */\n\n.dijitTextBox .dijitSpinnerButtonContainer {\n\twidth: 1em;\n\tposition: relative !important;\n\toverflow: hidden;\n}\n.dijitSpinner .dijitSpinnerButtonInner {\n\twidth:1em;\n\tvisibility:hidden !important; /* just a sizing element */\n\toverflow-x:hidden;\n}\n.dijitComboBox .dijitButtonNode,\n.dijitSpinnerButtonContainer .dijitButtonNode {\n\tborder-width: 0;\n}\n.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode {\n\tborder-width: 0px !important;\n\tborder-style: solid !important;\n}\n.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,\n.dj_a11y .dijitSpinner .dijitArrowButtonInner,\n.dj_a11y .dijitSpinnerButtonContainer input {\n\twidth: 1em !important;\n}\n.dj_a11y .dijitSpinner .dijitArrowButtonInner {\n\tmargin: 0 auto !important; /* should auto-center */\n}\n.dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n\tpadding-left: 0.3em !important;\n\tpadding-right: 0.3em !important;\n\tmargin-left: 0.3em !important;\n\tmargin-right: 0.3em !important;\n\twidth: 1.4em !important;\n}\n.dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n\tpadding-left: 0 !important; /* manually center INPUT: character is .5em and total width = 1em */\n\tpadding-right: 0 !important;\n\twidth: 1em !important;\n}\n.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n\tmargin-left: 0.1em !important;\n\tmargin-right: 0.1em !important;\n\twidth: 1em !important;\n}\n.dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n\tmargin-left: 0 !important;\n\tmargin-right: 0 !important;\n\twidth: 2em !important;\n}\n.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {\n\t/* note: .dijitInputLayoutContainer makes this rule override .dijitArrowButton settings\n\t * for dijit.form.Button\n\t */\n\tpadding: 0;\n\tposition: absolute !important;\n\tright: 0;\n\tfloat: none;\n\theight: 50%;\n\twidth: 100%;\n\tbottom: auto;\n\tleft: 0;\n\tright: auto;\n}\n.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {\n\twidth: auto;\n}\n.dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton {\n\toverflow: visible !important;\n}\n.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {\n\ttop: 50%;\n\tborder-top-width: 1px !important;\n}\n.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {\n\ttop: 0;\n}\n.dijitSpinner .dijitArrowButtonInner {\n\tmargin: auto;\n\toverflow-x: hidden;\n\theight: 100% !important;\n}\n.dj_iequirks .dijitSpinner .dijitArrowButtonInner {\n\theight: auto !important;\n}\n.dijitSpinner .dijitArrowButtonInner .dijitInputField {\n\t-moz-transform: scale(0.5);\n\t-moz-transform-origin: center top;\n\t-webkit-transform: scale(0.5);\n\t-webkit-transform-origin: center top;\n\t-o-transform: scale(0.5);\n\t-o-transform-origin: center top;\n\ttransform: scale(0.5);\n\ttransform-origin: left top;\n\tpadding-top: 0;\n\tpadding-bottom: 0;\n\tpadding-left: 0 !important;\n\tpadding-right: 0 !important;\n\twidth: 100%;\n\tvisibility: hidden;\n}\n.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n\tzoom: 50%; /* emulate transform: scale(0.5) */\n}\n.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {\n\toverflow: hidden;\n}\n\n.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {\n\twidth: 100%;\n}\n.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {\n\twidth: 1em; /* matches .dj_a11y .dijitTextBox .dijitSpinnerButtonContainer rule - 100% is the whole screen width in quirks */\n}\n.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n\tvertical-align:top;\n\tvisibility: visible;\n}\n.dj_a11y .dijitSpinnerButtonContainer {\n\twidth: 1em;\n}\n\n/****\n\t\tdijit.form.CheckBox\n \t &\n \t\tdijit.form.RadioButton\n ****/\n\n.dijitCheckBox,\n.dijitRadio,\n.dijitCheckBoxInput {\n\tpadding: 0;\n\tborder: 0;\n\twidth: 16px;\n\theight: 16px;\n\tbackground-position:center center;\n\tbackground-repeat:no-repeat;\n\toverflow: hidden;\n}\n\n.dijitCheckBox input,\n.dijitRadio input {\n\tmargin: 0;\n\tpadding: 0;\n\tdisplay: block;\n}\n\n.dijitCheckBoxInput {\n\t/* place the actual input on top, but invisible */\n\topacity: 0;\n}\n\n.dj_ie .dijitCheckBoxInput {\n\tfilter: alpha(opacity=0);\n}\n\n.dj_a11y .dijitCheckBox,\n.dj_a11y .dijitRadio {\n\t/* in a11y mode we display the native checkbox (not the icon), so don't restrict the size */\n\twidth: auto !important;\n\theight: auto !important;\n}\n.dj_a11y .dijitCheckBoxInput {\n\topacity: 1;\n\tfilter: none;\n\twidth: auto;\n\theight: auto;\n}\n\n.dj_a11y .dijitFocusedLabel {\n\t/* for checkboxes or radio buttons in high contrast mode, use border rather than outline to indicate focus (outline does not work in FF)*/\n\tborder: 1px dotted;\n\toutline: 0px !important;\n}\n\n/****\n\t\tdijit.ProgressBar\n ****/\n\n.dijitProgressBar {\n z-index: 0; /* so z-index settings below have no effect outside of the ProgressBar */\n}\n.dijitProgressBarEmpty {\n\t/* outer container and background of the bar that's not finished yet*/\n\tposition:relative;overflow:hidden;\n\tborder:1px solid black; \t/* a11y: border necessary for high-contrast mode */\n\tz-index:0;\t\t\t/* establish a stacking context for this progress bar */\n}\n\n.dijitProgressBarFull {\n\t/* outer container for background of bar that is finished */\n\tposition:absolute;\n\toverflow:hidden;\n\tz-index:-1;\n\ttop:0;\n\twidth:100%;\n}\n.dj_ie6 .dijitProgressBarFull {\n\theight:1.6em;\n}\n\n.dijitProgressBarTile {\n\t/* inner container for finished portion */\n\tposition:absolute;\n\toverflow:hidden;\n\ttop:0;\n\tleft:0;\n\tbottom:0;\n\tright:0;\n\tmargin:0;\n\tpadding:0;\n\twidth: 100%; /* needed for IE/quirks */\n\theight:auto;\n\tbackground-color:#aaa;\n\tbackground-attachment: fixed;\n}\n\n.dj_a11y .dijitProgressBarTile {\n\t/* a11y: The border provides visibility in high-contrast mode */\n\tborder-width:2px;\n\tborder-style:solid;\n\tbackground-color:transparent !important;\n}\n\n.dj_ie6 .dijitProgressBarTile {\n\t/* width:auto works in IE6 with position:static but not position:absolute */\n\tposition:static;\n\t/* height:auto or 100% does not work in IE6 */\n\theight:1.6em;\n}\n\n.dijitProgressBarIndeterminate .dijitProgressBarTile {\n\t/* animated gif for 'indeterminate' mode */\n}\n\n.dijitProgressBarIndeterminateHighContrastImage {\n\tdisplay:none;\n}\n\n.dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {\n\tdisplay:block;\n\tposition:absolute;\n\ttop:0;\n\tbottom:0;\n\tmargin:0;\n\tpadding:0;\n\twidth:100%;\n\theight:auto;\n}\n\n.dijitProgressBarLabel {\n\tdisplay:block;\n\tposition:static;\n\twidth:100%;\n\ttext-align:center;\n\tbackground-color:transparent !important;\n}\n\n/****\n\t\tdijit.Tooltip\n ****/\n\n.dijitTooltip {\n\tposition: absolute;\n\tz-index: 2000;\n\tdisplay: block;\n\t/* make visible but off screen */\n\tleft: 0;\n\ttop: -10000px;\n\toverflow: visible;\n}\n\n.dijitTooltipContainer {\n\tborder: solid black 2px;\n\tbackground: #b8b5b5;\n\tcolor: black;\n\tfont-size: small;\n}\n\n.dijitTooltipFocusNode {\n\tpadding: 2px 2px 2px 2px;\n}\n\n.dijitTooltipConnector {\n\tposition: absolute;\n}\n.dj_a11y .dijitTooltipConnector {\n\tdisplay: none;\t/* won't show b/c it's background-image; hide to avoid border gap */\n}\n\n.dijitTooltipData {\n\tdisplay:none;\n}\n\n/* Layout widgets. This is essential CSS to make layout work (it isn't \"styling\" CSS)\n make sure that the position:absolute in dijitAlign* overrides other classes */\n\n.dijitLayoutContainer {\n\tposition: relative;\n\tdisplay: block;\n\toverflow: hidden;\n}\n\n.dijitAlignTop,\n.dijitAlignBottom,\n.dijitAlignLeft,\n.dijitAlignRight {\n\tposition: absolute;\n\toverflow: hidden;\n}\n\nbody .dijitAlignClient { position: absolute; }\n\n/*\n * BorderContainer\n *\n * .dijitBorderContainer is a stylized layout where panes have border and margin.\n * .dijitBorderContainerNoGutter is a raw layout.\n */\n.dijitBorderContainer, .dijitBorderContainerNoGutter {\n\tposition:relative;\n\toverflow: hidden;\n z-index: 0; /* so z-index settings below have no effect outside of the BorderContainer */\n}\n\n.dijitBorderContainerPane,\n.dijitBorderContainerNoGutterPane {\n\tposition: absolute !important;\t/* !important to override position:relative in dijitTabContainer etc. */\n\tz-index: 2;\t\t/* above the splitters so that off-by-one browser errors don't cover up border of pane */\n}\n\n.dijitBorderContainer > .dijitTextArea {\n\t/* On Safari, for SimpleTextArea inside a BorderContainer,\n\t\tdon't want to display the grip to resize */\n\tresize: none;\n}\n\n.dijitGutter {\n\t/* gutter is just a place holder for empty space between panes in BorderContainer */\n\tposition: absolute;\n\tfont-size: 1px;\t\t/* needed by IE6 even though div is empty, otherwise goes to 15px */\n}\n\n/* SplitContainer\n\n\t'V' == container that splits vertically (up/down)\n\t'H' = horizontal (left/right)\n*/\n\n.dijitSplitter {\n\tposition: absolute;\n\toverflow: hidden;\n\tz-index: 10;\t\t/* above the panes so that splitter focus is visible on FF, see #7583*/\n\tbackground-color: #fff;\n\tborder-color: gray;\n\tborder-style: solid;\n\tborder-width: 0;\n}\n.dj_ie .dijitSplitter {\n\tz-index: 1;\t/* behind the panes so that pane borders aren't obscured see test_Gui.html/[14392] */\n}\n\n.dijitSplitterActive {\n\tz-index: 11 !important;\n}\n\n.dijitSplitterCover {\n\tposition:absolute;\n\tz-index:-1;\n\ttop:0;\n\tleft:0;\n\twidth:100%;\n\theight:100%;\n}\n\n.dijitSplitterCoverActive {\n\tz-index:3 !important;\n}\n\n/* #6945: stop mouse events */\n.dj_ie .dijitSplitterCover {\n\tbackground: white;\n\topacity: 0;\n}\n.dj_ie6 .dijitSplitterCover,\n.dj_ie7 .dijitSplitterCover,\n.dj_ie8 .dijitSplitterCover {\n\tfilter: alpha(opacity=0);\n}\n\n.dijitSplitterH {\n\theight: 7px;\n\tborder-top:1px;\n\tborder-bottom:1px;\n\tcursor: row-resize;\n\t-webkit-tap-highlight-color: transparent;\n}\n.dijitSplitterV {\n\twidth: 7px;\n\tborder-left:1px;\n\tborder-right:1px;\n\tcursor: col-resize;\n\t-webkit-tap-highlight-color: transparent;\n}\n.dijitSplitContainer {\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: block;\n}\n\n.dijitSplitPane {\n\tposition: absolute;\n}\n\n.dijitSplitContainerSizerH,\n.dijitSplitContainerSizerV {\n\tposition:absolute;\n\tfont-size: 1px;\n\tbackground-color: ThreeDFace;\n\tborder: 1px solid;\n\tborder-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;\n\tmargin: 0;\n}\n\n.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb {\n\toverflow:hidden;\n\tposition:absolute;\n\ttop:49%;\n}\n\n.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb {\n\tposition:absolute;\n\tleft:49%;\n}\n\n.dijitSplitterShadow,\n.dijitSplitContainerVirtualSizerH,\n.dijitSplitContainerVirtualSizerV {\n\tfont-size: 1px;\n\tbackground-color: ThreeDShadow;\n\t-moz-opacity: 0.5;\n\topacity: 0.5;\n\tfilter: Alpha(Opacity=50);\n\tmargin: 0;\n}\n\n.dijitSplitContainerSizerH, .dijitSplitContainerVirtualSizerH {\n\tcursor: col-resize;\n}\n\n.dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {\n\tcursor: row-resize;\n}\n\n.dj_a11y .dijitSplitterH {\n\tborder-top:1px solid #d3d3d3 !important;\n\tborder-bottom:1px solid #d3d3d3 !important;\n}\n.dj_a11y .dijitSplitterV {\n\tborder-left:1px solid #d3d3d3 !important;\n\tborder-right:1px solid #d3d3d3 !important;\n}\n\n/* ContentPane */\n\n.dijitContentPane {\n\tdisplay: block;\n\toverflow: auto;\t/* if we don't have this (or overflow:hidden), then Widget.resizeTo() doesn't make sense for ContentPane */\n\t-webkit-overflow-scrolling: touch;\n}\n\n.dijitContentPaneSingleChild {\n\t/*\n\t * if the ContentPane holds a single layout widget child which is being sized to match the content pane,\n\t * then the ContentPane should never get a scrollbar (but it does due to browser bugs, see #9449\n\t */\n\toverflow: hidden;\n}\n\n.dijitContentPaneLoading .dijitIconLoading,\n.dijitContentPaneError .dijitIconError {\n\tmargin-right: 9px;\n}\n\n/* TitlePane and Fieldset */\n\n.dijitTitlePane {\n\tdisplay: block;\n\toverflow: hidden;\n}\n.dijitFieldset {\n\tborder: 1px solid gray;\n}\n.dijitTitlePaneTitle, .dijitFieldsetTitle {\n\tcursor: pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n.dijitTitlePaneTitleFixedOpen, .dijitTitlePaneTitleFixedClosed,\n.dijitFieldsetTitleFixedOpen, .dijitFieldsetTitleFixedClosed {\n\t/* TitlePane or Fieldset that cannot be toggled */\n\tcursor: default;\n}\n.dijitTitlePaneTitle * {\n\tvertical-align: middle;\n}\n.dijitTitlePane .dijitArrowNodeInner, .dijitFieldset .dijitArrowNodeInner {\n\t/* normally, hide arrow text in favor of icon */\n\tdisplay: none;\n}\n.dj_a11y .dijitTitlePane .dijitArrowNodeInner, .dj_a11y .dijitFieldset .dijitArrowNodeInner {\n\t/* ... except in a11y mode, then show text arrow */\n\tdisplay: inline;\n\tfont-family: monospace;\t\t/* because - and + are different widths */\n}\n.dj_a11y .dijitTitlePane .dijitArrowNode, .dj_a11y .dijitFieldset .dijitArrowNode {\n\t/* ... and hide icon (TODO: just point dijitIcon class on the icon, and it hides automatically) */\n\tdisplay: none;\n}\n.dijitTitlePaneTitleFixedOpen .dijitArrowNode, .dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner,\n.dijitTitlePaneTitleFixedClosed .dijitArrowNode, .dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner,\n.dijitFieldsetTitleFixedOpen .dijitArrowNode, .dijitFieldsetTitleFixedOpen .dijitArrowNodeInner,\n.dijitFieldsetTitleFixedClosed .dijitArrowNode, .dijitFieldsetTitleFixedClosed .dijitArrowNodeInner {\n\t/* don't show the open close icon or text arrow; it makes the user think the pane is closable */\n\tdisplay: none !important;\t/* !important to override above a11y rules to show text arrow */\n}\n\n.dj_ie6 .dijitTitlePaneContentOuter,\n.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {\n\t/* force hasLayout to ensure borders etc, show up */\n\tzoom: 1;\n}\n\n/* Color Palette\n * Sizes designed so that table cell positions match icons in underlying image,\n * which appear at 20x20 intervals.\n */\n\n.dijitColorPalette {\n\tborder: 1px solid #999;\n\tbackground: #fff;\n\tposition: relative;\n}\n\n.dijitColorPalette .dijitPaletteTable {\n\t/* Table that holds the palette cells, and overlays image file with color swatches.\n\t * padding/margin to align table with image.\n\t */\n\tpadding: 2px 3px 3px 3px;\n\tposition: relative;\n\toverflow: hidden;\n\toutline: 0;\n\tborder-collapse: separate;\n}\n.dj_ie6 .dijitColorPalette .dijitPaletteTable,\n.dj_ie7 .dijitColorPalette .dijitPaletteTable,\n.dj_iequirks .dijitColorPalette .dijitPaletteTable {\n\t/* using padding above so that focus border isn't cutoff on moz/webkit,\n\t * but using margin on IE because padding doesn't seem to work\n\t */\n\tpadding: 0;\n\tmargin: 2px 3px 3px 3px;\n}\n\n.dijitColorPalette .dijitPaletteCell {\n\t/* in the */\n\tfont-size: 1px;\n\tvertical-align: middle;\n\ttext-align: center;\n\tbackground: none;\n}\n.dijitColorPalette .dijitPaletteImg {\n\t/* Called dijitPaletteImg for back-compat, this actually wraps the color swatch with a border and padding */\n\tpadding: 1px;\t\t/* white area between gray border and color swatch */\n\tborder: 1px solid #999;\n\tmargin: 2px 1px;\n\tcursor: default;\n\tfont-size: 1px;\t\t/* prevent from getting bigger just to hold a character */\n}\n.dj_gecko .dijitColorPalette .dijitPaletteImg {\n\tpadding-bottom: 0;\t/* workaround rendering glitch on FF, it adds an extra pixel at the bottom */\n}\n.dijitColorPalette .dijitColorPaletteSwatch {\n\t/* the actual part where the color is */\n\twidth: 14px;\n\theight: 12px;\n}\n.dijitPaletteTable td {\n\t\tpadding: 0;\n}\n.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {\n\t/* hovered color swatch */\n\tborder: 1px solid #000;\n}\n\n.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,\n.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {\n\tborder: 2px solid #000;\n\tmargin: 1px 0;\t/* reduce margin to compensate for increased border */\n}\n\n\n.dj_a11y .dijitColorPalette .dijitPaletteTable,\n.dj_a11y .dijitColorPalette .dijitPaletteTable * {\n\t/* table cells are to catch events, but the swatches are in the PaletteImg behind the table */\n\tbackground-color: transparent !important;\n}\n\n/* AccordionContainer */\n\n.dijitAccordionContainer {\n\tborder:1px solid #b7b7b7;\n\tborder-top:0 !important;\n}\n.dijitAccordionTitle {\n\tcursor: pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n.dijitAccordionTitleSelected {\n\tcursor: default;\n}\n\n/* images off, high-contrast mode styles */\n.dijitAccordionTitle .arrowTextUp,\n.dijitAccordionTitle .arrowTextDown {\n\tdisplay: none;\n\tfont-size: 0.65em;\n\tfont-weight: normal !important;\n}\n\n.dj_a11y .dijitAccordionTitle .arrowTextUp,\n.dj_a11y .dijitAccordionTitleSelected .arrowTextDown {\n\tdisplay: inline;\n}\n\n.dj_a11y .dijitAccordionTitleSelected .arrowTextUp {\n\tdisplay: none;\n}\n\n.dijitAccordionChildWrapper {\n\t/* this is the node whose height is adjusted */\n\toverflow: hidden;\n}\n\n/* Calendar */\n\n.dijitCalendarContainer table {\n\twidth: auto;\t/* in case user has specified a width for the TABLE nodes, see #10553 */\n\tclear: both; /* clear margin created for left/right month arrows; needed on IE10 for CalendarLite */\n}\n.dijitCalendarContainer th, .dijitCalendarContainer td {\n\tpadding: 0;\n\tvertical-align: middle;\n}\n\n.dijitCalendarMonthContainer {\n\ttext-align: center;\n}\n.dijitCalendarDecrementArrow {\n\tfloat: left;\n}\n.dijitCalendarIncrementArrow {\n\tfloat: right;\n}\n\n.dijitCalendarYearLabel {\n white-space: nowrap; /* make sure previous, current, and next year appear on same row */\n}\n\n.dijitCalendarNextYear {\n\tmargin:0 0 0 0.55em;\n}\n\n.dijitCalendarPreviousYear {\n\tmargin:0 0.55em 0 0;\n}\n\n.dijitCalendarIncrementControl {\n\tvertical-align: middle;\n}\n\n.dijitCalendarIncrementControl,\n.dijitCalendarDateTemplate,\n.dijitCalendarMonthLabel,\n.dijitCalendarPreviousYear,\n.dijitCalendarNextYear {\n\tcursor: pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n\n.dijitCalendarDisabledDate {\n\tcolor: gray;\n\ttext-decoration: line-through;\n\tcursor: default;\n}\n\n.dijitSpacer {\n\t/* don't display it, but make it affect the width */\n \tposition: relative;\n \theight: 1px;\n \toverflow: hidden;\n \tvisibility: hidden;\n}\n\n/* Styling for month drop down list */\n\n.dijitCalendarMonthMenu .dijitCalendarMonthLabel {\n\ttext-align:center;\n}\n\n/* Menu */\n\n.dijitMenu {\n\tborder:1px solid black;\n\tbackground-color:white;\n}\n.dijitMenuTable {\n\tborder-collapse:collapse;\n\tborder-width:0;\n\tbackground-color:white;\n}\n\n/* workaround for webkit bug #8427, remove this when it is fixed upstream */\n.dj_webkit .dijitMenuTable td[colspan=\"2\"]{\n\tborder-right:hidden;\n}\n\n.dijitMenuItem {\n\ttext-align: left;\n\twhite-space: nowrap;\n\tpadding:.1em .2em;\n\tcursor:pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n\n/*\nNo need to show a focus border since it's obvious from the shading, and there's a .dj_a11y .dijitMenuItemSelected\nrule below that handles the high contrast case when there's no shading.\nHiding the focus border also works around webkit bug https://code.google.com/p/chromium/issues/detail?id=125779.\n*/\n.dijitMenuItem:focus {\n\toutline: none\n}\n\n.dijitMenuPassive .dijitMenuItemHover,\n.dijitMenuItemSelected {\n\t/*\n\t * dijitMenuItemHover refers to actual mouse over\n\t * dijitMenuItemSelected is used after a menu has been \"activated\" by\n\t * clicking it, tabbing into it, or being opened from a parent menu,\n\t * and denotes that the menu item has focus or that focus is on a child\n\t * menu\n\t */\n\tbackground-color:black;\n\tcolor:white;\n}\n\n.dijitMenuItemIcon, .dijitMenuExpand {\n\tbackground-repeat: no-repeat;\n}\n\n.dijitMenuItemDisabled * {\n\t/* for a disabled menu item, just set it to mostly transparent */\n\topacity:0.5;\n\tcursor:default;\n}\n.dj_ie .dj_a11y .dijitMenuItemDisabled,\n.dj_ie .dj_a11y .dijitMenuItemDisabled *,\n.dj_ie .dijitMenuItemDisabled * {\n\tcolor: gray;\n\tfilter: alpha(opacity=35);\n}\n\n.dijitMenuItemLabel {\n\tvertical-align: middle;\n}\n\n.dj_a11y .dijitMenuItemSelected {\n\tborder: 1px dotted black !important;\t/* for 2.0 use outline instead, to prevent jitter */\n}\n\n.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel {\n\tborder-width: 1px;\n\tborder-style: solid;\n}\n.dj_ie8 .dj_a11y .dijitMenuItemLabel {\n\tposition:static;\n}\n\n.dijitMenuExpandA11y {\n\tdisplay: none;\n}\n.dj_a11y .dijitMenuExpandA11y {\n\tdisplay: inline;\n}\n\n.dijitMenuSeparator td {\n\tborder: 0;\n\tpadding: 0;\n}\n\n/* separator can be two pixels -- set border of either one to 0 to have only one */\n.dijitMenuSeparatorTop {\n\theight: 50%;\n\tmargin: 0;\n\tmargin-top:3px;\n\tfont-size: 1px;\n}\n\n.dijitMenuSeparatorBottom {\n\theight: 50%;\n\tmargin: 0;\n\tmargin-bottom:3px;\n\tfont-size: 1px;\n}\n\n/* CheckedMenuItem and RadioMenuItem */\n.dijitMenuItemIconChar {\n\tdisplay: none;\t\t/* don't display except in high contrast mode */\n\tvisibility: hidden;\t/* for high contrast mode when menuitem is unchecked: leave space for when it is checked */\n}\n.dj_a11y .dijitMenuItemIconChar {\n\tdisplay: inline;\t/* display character in high contrast mode, since icon doesn't show */\n}\n.dijitCheckedMenuItemChecked .dijitMenuItemIconChar,\n.dijitRadioMenuItemChecked .dijitMenuItemIconChar {\n\tvisibility: visible; /* menuitem is checked */\n}\n.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem {\n\t/* so bottom border of MenuBar appears on IE7 in high-contrast mode */\n\tmargin: 0;\n}\n\n/* StackContainer */\n\n.dijitStackController .dijitToggleButtonChecked * {\n\tcursor: default;\t/* because pressing it has no effect */\n}\n\n/***\nTabContainer\n\nMain class hierarchy:\n\n.dijitTabContainer - the whole TabContainer\n .dijitTabController / .dijitTabListContainer-top - wrapper for tab buttons, scroll buttons\n\t .dijitTabListWrapper / .dijitTabContainerTopStrip - outer wrapper for tab buttons (normal width)\n\t\t.nowrapTabStrip / .dijitTabContainerTop-tabs - inner wrapper for tab buttons (50K width)\n .dijitTabPaneWrapper - wrapper for content panes, has all borders except the one between content and tabs\n***/\n\n.dijitTabContainer {\n z-index: 0; /* so z-index settings below have no effect outside of the TabContainer */\n overflow: visible; /* prevent off-by-one-pixel errors from hiding bottom border (opposite tab labels) */\n}\n.dj_ie6 .dijitTabContainer {\n /* workaround IE6 problem when tall content overflows TabContainer, see editor/test_FullScreen.html */\n overflow: hidden;\n\n}\n.dijitTabContainerNoLayout {\n\twidth: 100%;\t/* otherwise ScrollingTabController goes to 50K pixels wide */\n}\n\n.dijitTabContainerBottom-tabs,\n.dijitTabContainerTop-tabs,\n.dijitTabContainerLeft-tabs,\n.dijitTabContainerRight-tabs {\n z-index: 1;\n\toverflow: visible !important; /* so tabs can cover up border adjacent to container */\n}\n\n.dijitTabController {\n z-index: 1;\n}\n.dijitTabContainerBottom-container,\n.dijitTabContainerTop-container,\n.dijitTabContainerLeft-container,\n.dijitTabContainerRight-container {\n\tz-index:0;\n\toverflow: hidden;\n\tborder: 1px solid black;\n}\n.nowrapTabStrip {\n\twidth: 50000px;\n\tdisplay: block;\n\tposition: relative;\n text-align: left; /* just in case ancestor has non-standard setting */\n z-index: 1;\n}\n.dijitTabListWrapper {\n\toverflow: hidden;\n z-index: 1;\n}\n\n.dj_a11y .tabStripButton img {\n\t/* hide the icons (or rather the empty space where they normally appear) because text will appear instead */\n\tdisplay: none;\n}\n\n.dijitTabContainerTop-tabs {\n\tborder-bottom: 1px solid black;\n}\n.dijitTabContainerTop-container {\n\tborder-top: 0;\n}\n\n.dijitTabContainerLeft-tabs {\n\tborder-right: 1px solid black;\n\tfloat: left; /* needed for IE7 RTL mode */\n}\n.dijitTabContainerLeft-container {\n\tborder-left: 0;\n}\n\n.dijitTabContainerBottom-tabs {\n\tborder-top: 1px solid black;\n}\n.dijitTabContainerBottom-container {\n\tborder-bottom: 0;\n}\n\n.dijitTabContainerRight-tabs {\n\tborder-left: 1px solid black;\n\tfloat: left; /* needed for IE7 RTL mode */\n}\n.dijitTabContainerRight-container {\n\tborder-right: 0;\n}\n\ndiv.dijitTabDisabled, .dj_ie div.dijitTabDisabled {\n\tcursor: auto;\n}\n\n.dijitTab {\n\tposition:relative;\n\tcursor:pointer;\n\t-webkit-tap-highlight-color: transparent;\n\twhite-space:nowrap;\n\tz-index:3;\n}\n.dijitTab * {\n\t/* make tab icons and close icon line up w/text */\n\tvertical-align: middle;\n}\n.dijitTabChecked {\n\tcursor: default;\t/* because clicking will have no effect */\n}\n\n.dijitTabContainerTop-tabs .dijitTab {\n\ttop: 1px;\t/* to overlap border on .dijitTabContainerTop-tabs */\n}\n.dijitTabContainerBottom-tabs .dijitTab {\n\ttop: -1px;\t/* to overlap border on .dijitTabContainerBottom-tabs */\n}\n.dijitTabContainerLeft-tabs .dijitTab {\n\tleft: 1px;\t/* to overlap border on .dijitTabContainerLeft-tabs */\n}\n.dijitTabContainerRight-tabs .dijitTab {\n\tleft: -1px;\t/* to overlap border on .dijitTabContainerRight-tabs */\n}\n\n\n.dijitTabContainerTop-tabs .dijitTab,\n.dijitTabContainerBottom-tabs .dijitTab {\n\t/* Inline-block */\n\tdisplay:inline-block;\t\t\t/* webkit and FF3 */\n}\n\n.tabStripButton {\n\tz-index: 12;\n}\n\n.dijitTabButtonDisabled .tabStripButton {\n\tdisplay: none;\n}\n\n\n.dijitTabCloseButton {\n\tmargin-left: 1em;\n}\n\n.dijitTabCloseText {\n\tdisplay:none;\n}\n\n.dijitTab .tabLabel {\n\t/* make sure tabs w/close button and w/out close button are same height, even w/small (<15px) font.\n\t * assumes <=15px height for close button icon.\n\t */\n\tmin-height: 15px;\n\tdisplay: inline-block;\n}\n.dijitNoIcon {\n\t/* applied to / node when there is no icon specified */\n\tdisplay: none;\n}\n.dj_ie6 .dijitTab .dijitNoIcon {\n\t/* because min-height (on .tabLabel, above) doesn't work on IE6 */\n\tdisplay: inline;\n\theight: 15px;\n\twidth: 1px;\n}\n\n/* images off, high-contrast mode styles */\n\n.dj_a11y .dijitTabCloseButton {\n\tbackground-image: none !important;\n\twidth: auto !important;\n\theight: auto !important;\n}\n\n.dj_a11y .dijitTabCloseText {\n\tdisplay: inline;\n}\n\n.dijitTabPane,\n.dijitStackContainer-child,\n.dijitAccordionContainer-child {\n\t/* children of TabContainer, StackContainer, and AccordionContainer shouldn't have borders\n\t * b/c a border is already there from the TabContainer/StackContainer/AccordionContainer itself.\n\t */\n border: none !important;\n}\n\n/* InlineEditBox */\n.dijitInlineEditBoxDisplayMode {\n\tborder: 1px solid transparent;\t/* so keyline (border) on hover can appear without screen jump */\n\tcursor: text;\n}\n\n.dj_a11y .dijitInlineEditBoxDisplayMode,\n.dj_ie6 .dijitInlineEditBoxDisplayMode {\n\t/* except that IE6 doesn't support transparent borders, nor does high contrast mode */\n\tborder: none;\n}\n\n.dijitInlineEditBoxDisplayModeHover,\n.dj_a11y .dijitInlineEditBoxDisplayModeHover,\n.dj_ie6 .dijitInlineEditBoxDisplayModeHover {\n\t/* An InlineEditBox in view mode (click this to edit the text) */\n\tbackground-color: #e2ebf2;\n\tborder: solid 1px black;\n}\n\n.dijitInlineEditBoxDisplayModeDisabled {\n\tcursor: default;\n}\n\n/* Tree */\n.dijitTree {\n\toverflow: auto;\t/* for scrollbars when Tree has a height setting, and to prevent wrapping around float elements, see #11491 */\n\t-webkit-tap-highlight-color: transparent;\n}\n\n.dijitTreeContainer {\n\tfloat: left;\t/* for correct highlighting during horizontal scroll, see #16132 */\n}\n\n.dijitTreeIndent {\n\t/* amount to indent each tree node (relative to parent node) */\n\twidth: 19px;\n}\n\n.dijitTreeRow, .dijitTreeContent {\n\twhite-space: nowrap;\n}\n\n.dj_ie .dijitTreeLabel:focus {\n\t/* workaround IE9 behavior where down arrowing through TreeNodes doesn't show focus outline */\n\toutline: 1px dotted black;\n}\n\n.dijitTreeRow img {\n\t/* make the expando and folder icons line up with the label */\n\tvertical-align: middle;\n}\n\n.dijitTreeContent {\n cursor: default;\n}\n\n.dijitExpandoText {\n\tdisplay: none;\n}\n\n.dj_a11y .dijitExpandoText {\n\tdisplay: inline;\n\tpadding-left: 10px;\n\tpadding-right: 10px;\n\tfont-family: monospace;\n\tborder-style: solid;\n\tborder-width: thin;\n\tcursor: pointer;\n}\n\n.dijitTreeLabel {\n\tmargin: 0 4px;\n}\n\n/* Dialog */\n\n.dijitDialog {\n\tposition: absolute;\n\tz-index: 999;\n\toverflow: hidden;\t/* override overflow: auto; from ContentPane to make dragging smoother */\n}\n\n.dijitDialogTitleBar {\n\tcursor: move;\n}\n.dijitDialogFixed .dijitDialogTitleBar {\n\tcursor:default;\n}\n.dijitDialogCloseIcon {\n\tcursor: pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n.dijitDialogPaneContent {\n\t-webkit-overflow-scrolling: touch;\n}\n.dijitDialogUnderlayWrapper {\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tz-index: 998;\n\tdisplay: none;\n\tbackground: transparent !important;\n}\n\n.dijitDialogUnderlay {\n\tbackground: #eee;\n\topacity: 0.5;\n}\n\n.dj_ie .dijitDialogUnderlay {\n\tfilter: alpha(opacity=50);\n}\n\n/* images off, high-contrast mode styles */\n.dj_a11y .dijitSpinnerButtonContainer,\n.dj_a11y .dijitDialog {\n\topacity: 1 !important;\n\tbackground-color: white !important;\n}\n\n.dijitDialog .closeText {\n\tdisplay:none;\n\t/* for the onhover border in high contrast on IE: */\n\tposition:absolute;\n}\n\n.dj_a11y .dijitDialog .closeText {\n\tdisplay:inline;\n}\n\n/* Slider */\n\n.dijitSliderMoveable {\n\tz-index:99;\n\tposition:absolute !important;\n\tdisplay:block;\n\tvertical-align:middle;\n}\n\n.dijitSliderMoveableH {\n\tright:0;\n}\n.dijitSliderMoveableV {\n\tright:50%;\n}\n\n.dj_a11y div.dijitSliderImageHandle,\n.dijitSliderImageHandle {\n\tmargin:0;\n\tpadding:0;\n\tposition:relative !important;\n\tborder:8px solid gray;\n\twidth:0;\n\theight:0;\n\tcursor: pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n.dj_iequirks .dj_a11y .dijitSliderImageHandle {\n\tfont-size: 0;\n}\n.dj_ie7 .dijitSliderImageHandle {\n\toverflow: hidden; /* IE7 workaround to make slider handle VISIBLE in non-a11y mode */\n}\n.dj_ie7 .dj_a11y .dijitSliderImageHandle {\n\toverflow: visible; /* IE7 workaround to make slider handle VISIBLE in a11y mode */\n}\n.dj_a11y .dijitSliderFocused .dijitSliderImageHandle {\n\tborder:4px solid #000;\n\theight:8px;\n\twidth:8px;\n}\n\n.dijitSliderImageHandleV {\n\ttop:-8px;\n\tright: -50%;\n}\n\n.dijitSliderImageHandleH {\n\tleft:50%;\n\ttop:-5px;\n\tvertical-align:top;\n}\n\n.dijitSliderBar {\n\tborder-style:solid;\n\tborder-color:black;\n\tcursor: pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n\n.dijitSliderBarContainerV {\n\tposition:relative;\n\theight:100%;\n\tz-index:1;\n}\n\n.dijitSliderBarContainerH {\n\tposition:relative;\n\tz-index:1;\n}\n\n.dijitSliderBarH {\n\theight:4px;\n\tborder-width:1px 0;\n}\n\n.dijitSliderBarV {\n\twidth:4px;\n\tborder-width:0 1px;\n}\n\n.dijitSliderProgressBar {\n\tbackground-color:red;\n\tz-index:1;\n}\n\n.dijitSliderProgressBarV {\n\tposition:static !important;\n\theight:0;\n\tvertical-align:top;\n\ttext-align:left;\n}\n\n.dijitSliderProgressBarH {\n\tposition:absolute !important;\n\twidth:0;\n\tvertical-align:middle;\n\toverflow:visible;\n}\n\n.dijitSliderRemainingBar {\n\toverflow:hidden;\n\tbackground-color:transparent;\n\tz-index:1;\n}\n\n.dijitSliderRemainingBarV {\n\theight:100%;\n\ttext-align:left;\n}\n\n.dijitSliderRemainingBarH {\n\twidth:100% !important;\n}\n\n/* the slider bumper is the space consumed by the slider handle when it hangs over an edge */\n.dijitSliderBumper {\n\toverflow:hidden;\n\tz-index:1;\n}\n\n.dijitSliderBumperV {\n\twidth:4px;\n\theight:8px;\n\tborder-width:0 1px;\n}\n\n.dijitSliderBumperH {\n\twidth:8px;\n\theight:4px;\n\tborder-width:1px 0;\n}\n\n.dijitSliderBottomBumper,\n.dijitSliderLeftBumper {\n\tbackground-color:red;\n}\n\n.dijitSliderTopBumper,\n.dijitSliderRightBumper {\n\tbackground-color:transparent;\n}\n\n.dijitSliderDecoration {\n\ttext-align:center;\n}\n\n.dijitSliderDecorationC,\n.dijitSliderDecorationV {\n\tposition: relative; /* needed for IE+quirks+RTL+vertical (rendering bug) but add everywhere for custom styling consistency but this messes up IE horizontal sliders */\n}\n\n.dijitSliderDecorationH {\n\twidth: 100%;\n}\n\n.dijitSliderDecorationV {\n\theight: 100%;\n\twhite-space: nowrap;\n}\n\n.dijitSliderButton {\n\tfont-family:monospace;\n\tmargin:0;\n\tpadding:0;\n\tdisplay:block;\n}\n\n.dj_a11y .dijitSliderButtonInner {\n\tvisibility:visible !important;\n}\n\n.dijitSliderButtonContainer {\n\ttext-align:center;\n\theight:0;\t/* ??? */\n}\n.dijitSliderButtonContainer * {\n\tcursor: pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n\n.dijitSlider .dijitButtonNode {\n\tpadding:0;\n\tdisplay:block;\n}\n\n.dijitRuleContainer {\n\tposition:relative;\n\toverflow:visible;\n}\n\n.dijitRuleContainerV {\n\theight:100%;\n\tline-height:0;\n\tfloat:left;\n\ttext-align:left;\n}\n\n.dj_opera .dijitRuleContainerV {\n\tline-height:2%;\n}\n\n.dj_ie .dijitRuleContainerV {\n\tline-height:normal;\n}\n\n.dj_gecko .dijitRuleContainerV {\n\tmargin:0 0 1px 0; /* mozilla bug workaround for float:left,height:100% block elements */\n}\n\n.dijitRuleMark {\n\tposition:absolute;\n\tborder:1px solid black;\n\tline-height:0;\n\theight:100%;\n}\n\n.dijitRuleMarkH {\n\twidth:0;\n\tborder-top-width:0 !important;\n\tborder-bottom-width:0 !important;\n\tborder-left-width:0 !important;\n}\n\n.dijitRuleLabelContainer {\n\tposition:absolute;\n}\n\n.dijitRuleLabelContainerH {\n\ttext-align:center;\n\tdisplay:inline-block;\n}\n\n.dijitRuleLabelH {\n\tposition:relative;\n\tleft:-50%;\n}\n\n.dijitRuleLabelV {\n\t/* so that long labels don't overflow to multiple rows, or overwrite slider itself */\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\toverflow: hidden;\n}\n\n.dijitRuleMarkV {\n\theight:0;\n\tborder-right-width:0 !important;\n\tborder-bottom-width:0 !important;\n\tborder-left-width:0 !important;\n\twidth:100%;\n\tleft:0;\n}\n\n.dj_ie .dijitRuleLabelContainerV {\n\tmargin-top:-.55em;\n}\n\n.dj_a11y .dijitSliderReadOnly,\n.dj_a11y .dijitSliderDisabled {\n\topacity:0.6;\n}\n.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,\n.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar {\n\tfilter: alpha(opacity=40);\n}\n\n/* + and - Slider buttons: override theme settings to display icons */\n.dj_a11y .dijitSlider .dijitSliderButtonContainer div {\n\tfont-family: monospace; /* otherwise hyphen is larger and more vertically centered */\n\tfont-size: 1em;\n\tline-height: 1em;\n\theight: auto;\n\twidth: auto;\n\tmargin: 0 4px;\n}\n\n/* Icon-only buttons (often in toolbars) still display the text in high-contrast mode */\n.dj_a11y .dijitButtonContents .dijitButtonText,\n.dj_a11y .dijitTab .tabLabel {\n\tdisplay: inline !important;\n}\n.dj_a11y .dijitSelect .dijitButtonText {\n\tdisplay: inline-block !important;\n}\n\n/* TextArea, SimpleTextArea */\n.dijitTextArea {\n\twidth:100%;\n\toverflow-y: auto;\t/* w/out this IE's SimpleTextArea goes to overflow: scroll */\n}\n.dijitTextArea[cols] {\n\twidth:auto; /* SimpleTextArea cols */\n}\n.dj_ie .dijitTextAreaCols {\n\twidth:auto;\n}\n\n.dijitExpandingTextArea {\n\t/* for auto exanding textarea (called Textarea currently, rename for 2.0) don't want to display the grip to resize */\n\tresize: none;\n}\n\n\n/* Toolbar\n * Note that other toolbar rules (for objects in toolbars) are scattered throughout this file.\n */\n\n.dijitToolbarSeparator {\n\theight: 18px;\n\twidth: 5px;\n\tpadding: 0 1px;\n\tmargin: 0;\n}\n\n/* Editor */\n.dijitIEFixedToolbar {\n\tposition:absolute;\n\t/* top:0; */\n\ttop: expression(eval((document.documentElement||document.body).scrollTop));\n}\n\n.dijitEditor {\n\tdisplay: block;\t/* prevents glitch on FF with InlineEditBox, see #8404 */\n}\n\n.dijitEditorDisabled,\n.dijitEditorReadOnly {\n\tcolor: gray;\n}\n\n/* TimePicker */\n\n.dijitTimePicker {\n\tbackground-color: white;\n}\n.dijitTimePickerItem {\n\tcursor:pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n.dijitTimePickerItemHover {\n\tbackground-color:gray;\n\tcolor:white;\n}\n.dijitTimePickerItemSelected {\n\tfont-weight:bold;\n\tcolor:#333;\n\tbackground-color:#b7cdee;\n}\n.dijitTimePickerItemDisabled {\n\tcolor:gray;\n\ttext-decoration:line-through;\n}\n\n.dijitTimePickerItemInner {\n\ttext-align:center;\n\tborder:0;\n\tpadding:2px 8px 2px 8px;\n}\n\n.dijitTimePickerTick,\n.dijitTimePickerMarker {\n\tborder-bottom:1px solid gray;\n}\n\n.dijitTimePicker .dijitDownArrowButton {\n\tborder-top: none !important;\n}\n\n.dijitTimePickerTick {\n\tcolor:#CCC;\n}\n\n.dijitTimePickerMarker {\n\tcolor:black;\n\tbackground-color:#CCC;\n}\n\n.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {\n\tborder: solid 4px black;\n}\n.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {\n\tborder: dashed 4px black;\n}\n\n\n.dijitToggleButtonIconChar {\n\t/* character (instead of icon) to show that ToggleButton is checked */\n\tdisplay:none !important;\n}\n.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar {\n\tdisplay:inline !important;\n\tvisibility:hidden;\n}\n.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {\n\tfont-family: \"Arial Unicode MS\";\t/* otherwise the a11y character (checkmark, arrow, etc.) appears as a box */\n}\n.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {\n\tdisplay: inline !important; /* In high contrast mode, display the check symbol */\n\tvisibility:visible !important;\n}\n\n.dijitArrowButtonChar {\n\tdisplay:none !important;\n}\n.dj_a11y .dijitArrowButtonChar {\n\tdisplay:inline !important;\n}\n\n.dj_a11y .dijitDropDownButton .dijitArrowButtonInner,\n.dj_a11y .dijitComboButton .dijitArrowButtonInner {\n\tdisplay:none !important;\n}\n\n/* Select */\n.dj_a11y .dijitSelect {\n\tborder-collapse: separate !important;\n\tborder-width: 1px;\n\tborder-style: solid;\n}\n.dj_ie .dijitSelect {\n\tvertical-align: middle; /* Set this back for what we hack in dijit inline */\n}\n.dj_ie6 .dijitSelect .dijitValidationContainer,\n.dj_ie8 .dijitSelect .dijitButtonText {\n\tvertical-align: top;\n}\n.dj_ie6 .dijitTextBox .dijitInputContainer,\n.dj_iequirks .dijitTextBox .dijitInputContainer,\n.dj_ie6 .dijitTextBox .dijitArrowButtonInner,\n.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,\n.dijitSelect .dijitSelectLabel {\n\tvertical-align: baseline;\n}\n\n.dijitNumberTextBox {\n\ttext-align: left;\n\tdirection: ltr;\n}\n\n.dijitNumberTextBox .dijitInputInner {\n\ttext-align: inherit; /* input */\n}\n\n.dijitNumberTextBox input.dijitInputInner,\n.dijitCurrencyTextBox input.dijitInputInner,\n.dijitSpinner input.dijitInputInner {\n\ttext-align: right;\n}\n\n.dj_ie8 .dijitNumberTextBox input.dijitInputInner, .dj_ie9 .dijitNumberTextBox input.dijitInputInner,\n.dj_ie8 .dijitCurrencyTextBox input.dijitInputInner, .dj_ie9 .dijitCurrencyTextBox input.dijitInputInner,\n.dj_ie8 .dijitSpinner input.dijitInputInner, .dj_ie9 .dijitSpinner input.dijitInputInner {\n\t/* workaround bug where caret invisible in empty textboxes */\n\tpadding-right: 1px !important;\n}\n\n.dijitToolbar .dijitSelect {\n\tmargin: 0;\n}\n.dj_webkit .dijitToolbar .dijitSelect {\n\tpadding-left: 0.3em;\n}\n.dijitSelect .dijitButtonContents {\n\tpadding: 0;\n\twhite-space: nowrap;\n\ttext-align: left;\n\tborder-style: none solid none none;\n\tborder-width: 1px;\n}\n.dijitSelectFixedWidth .dijitButtonContents {\n\twidth: 100%;\n}\n\n.dijitSelectMenu .dijitMenuItemIcon {\n\t/* avoid blank area in left side of menu (since we have no icons) */\n\tdisplay:none;\n}\n.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,\n.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {\n\t/* Set back to static due to bug in ie6/ie7 - See Bug #9651 */\n\tposition: static;\n}\n\n/* Fix the baseline of our label (for multi-size font elements) */\n.dijitSelectLabel *\n{\n\tvertical-align: baseline;\n}\n\n/* Styling for the currently-selected option (rich text can mess this up) */\n.dijitSelectSelectedOption * {\n\tfont-weight: bold;\n}\n\n/* Fix the styling of the dropdown menu to be more combobox-like */\n.dijitSelectMenu {\n\tborder-width: 1px;\n}\n\n/* Used in cases, such as FullScreen plugin, when we need to force stuff to static positioning. */\n.dijitForceStatic {\n\tposition: static !important;\n}\n\n/**** Disabled cursor *****/\n.dijitReadOnly *,\n.dijitDisabled *,\n.dijitReadOnly,\n.dijitDisabled {\n\t/* a region the user would be able to click on, but it's disabled */\n\tcursor: default;\n}\n\n/* Drag and Drop */\n.dojoDndItem {\n padding: 2px; /* will be replaced by border during drag over (dojoDndItemBefore, dojoDndItemAfter) */\n\n\t/* Prevent magnifying-glass text selection icon to appear on mobile webkit as it causes a touchout event */\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none; /* Disable selection/Copy of UIWebView */\n}\n.dojoDndHorizontal .dojoDndItem {\n /* make contents of horizontal container be side by side, rather than vertical */\n display: inline-block;\n}\n\n.dojoDndItemBefore,\n.dojoDndItemAfter {\n\tborder: 0px solid #369;\n}\n.dojoDndItemBefore {\n border-width: 2px 0 0 0;\n padding: 0 2px 2px 2px;\n}\n.dojoDndItemAfter {\n border-width: 0 0 2px 0;\n padding: 2px 2px 0 2px;\n}\n.dojoDndHorizontal .dojoDndItemBefore {\n border-width: 0 0 0 2px;\n padding: 2px 2px 2px 0;\n}\n.dojoDndHorizontal .dojoDndItemAfter {\n border-width: 0 2px 0 0;\n padding: 2px 0 2px 2px;\n}\n\n.dojoDndItemOver {\n\tcursor:pointer;\n}\n.dj_gecko .dijitArrowButtonInner INPUT,\n.dj_gecko INPUT.dijitArrowButtonInner {\n\t-moz-user-focus:ignore;\n}\n.dijitFocused .dijitMenuItemShortcutKey {\n\ttext-decoration: underline;\n}\n\n/* Dijit custom styling */\n.dijitBorderContainer {\n height: 350px;\n}\n.dijitTooltipContainer {\n background: #fff;\n border: 1px solid #ccc;\n border-radius: 6px;\n}\n.dijitContentPane {\n box-sizing: content-box;\n overflow: auto !important; /* Widgets like the data grid pass their scroll\n offset to the parent if there is not enough room to display a scroll bar\n in the widget itself, so do not hide the overflow. */\n}\n\n/* Global Bootstrap changes */\n\n/* Client defaults and helpers */\n.mx-dataview-content, .mx-scrollcontainer-wrapper:not(.mx-scrollcontainer-nested), .mx-tabcontainer-content, .mx-grid-content {\n -webkit-overflow-scrolling: touch;\n}\nhtml, body, #content {\n height: 100%;\n}\n#content > .mx-page {\n width: 100%;\n min-height: 100%;\n}\n\n.mx-left-aligned {\n text-align: left;\n}\n.mx-right-aligned {\n text-align: right;\n}\n.mx-center-aligned {\n text-align: center;\n}\n\n.mx-table {\n width: 100%;\n}\n.mx-table th,\n.mx-table td {\n padding: 8px;\n vertical-align: top;\n}\n.mx-table th.nopadding,\n.mx-table td.nopadding {\n\tpadding: 0;\n}\n\n.mx-offscreen {\n /* When position relative is not set IE doesn't properly render when this class is removed\n * with the effect that elements are not displayed or are not clickable.\n */\n position: relative;\n height: 0;\n overflow: hidden;\n}\n\n.mx-ie-event-shield {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n}\n\n.mx-swipe-navigation-progress {\n position: absolute;\n height: 54px;\n width: 54px;\n top: calc(50% - 27px);\n left: calc(50% - 27px);\n background: url(data:image/gif;base64,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);\n}\n\n\n/* Bacause we use checkboxes without labels, align them with other widgets. */\ninput[type=\"checkbox\"] {\n margin: 9px 0;\n}\n\n.mx-checkbox input[type=\"checkbox\"] {\n margin-left: 0;\n margin-right: 8px;\n position: static;\n}\n\n.form-vertical .form-group.mx-checkbox input[type=\"checkbox\"] {\n display: block;\n}\n\n.form-vertical .form-group.mx-checkbox.label-after input[type=\"checkbox\"] {\n display: inline-block;\n}\n\n.form-horizontal .form-group.no-columns {\n padding-left: 15px;\n padding-right: 15px;\n}\n\n.mx-radiobuttons.inline .radio {\n display: inline-block;\n margin-right: 20px;\n}\n\n.mx-radiobuttons .radio input[type=\"radio\"] {\n /* Reset bootstrap rules */\n position: static;\n margin-right: 8px;\n margin-left: 0;\n}\n\n.mx-radiobuttons .radio label {\n /* Reset bootstrap rules */\n padding-left: 0;\n}\n\n.alert {\n margin-top: 8px;\n margin-bottom: 10px;\n white-space: pre-line;\n}\n\n.mx-compound-control {\n display: flex;\n}\n\n.mx-compound-control button {\n margin-left: 5px;\n}\n\n[dir=\"rtl\"] .mx-compound-control button {\n margin-left: 0;\n margin-right: 5px;\n}\n\n.mx-tooltip {\n margin: 10px;\n}\n.mx-tooltip-content {\n width: 400px;\n overflow-y: auto;\n}\n.mx-tooltip-prepare {\n height: 24px;\n padding: 8px;\n background: transparent url(data:image/gif;base64,R0lGODlhGAAYAMQdAKXZ8nfF64TL7QuX3Fe45zaq4hOb3fL6/fr9/rri9dXt+ZrU8Cym4Umy5cHl9uPz+2K86Oj1/Nzw+rDd9M3q+JDQ72rA6iOi3+34/ECu48jo9x2f3gWV2////wAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUJFNkU4NEZCNEVDMTFFODk3MDBBNUU1RUM4Qjg3QTUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RUJFNkU4NTBCNEVDMTFFODk3MDBBNUU1RUM4Qjg3QTUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFQkU2RTg0REI0RUMxMUU4OTcwMEE1RTVFQzhCODdBNSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFQkU2RTg0RUI0RUMxMUU4OTcwMEE1RTVFQzhCODdBNSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6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) no-repeat scroll center center;\n}\n.mx-tooltip-content .table th,\n.mx-tooltip-content .table td {\n padding: 2px 8px;\n}\n\n.mx-tabcontainer-pane {\n height: 100%;\n}\n.mx-tabcontainer-content.loading {\n min-height: 48px;\n background: url(data:image/gif;base64,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) no-repeat center center;\n background-size: 32px 32px;\n}\n.mx-tabcontainer-tabs {\n margin-bottom: 8px;\n}\n.mx-tabcontainer-tabs li {\n position: relative;\n}\n.mx-tabcontainer-indicator {\n position: absolute;\n background: #f2dede;\n border-radius: 8px;\n color: #b94a48;\n top: 0px;\n right: -5px;\n width: 16px;\n height: 16px;\n line-height: 16px;\n text-align: center;\n vertical-align: middle;\n font-size: 10px;\n font-weight: 600;\n z-index: 1; /* indicator should not hide behind other tab */\n}\n\n/* base structure */\n.mx-grid {\n padding: 8px;\n overflow: hidden; /* to prevent any margin from escaping grid and foobaring our size calculations */\n}\n.mx-grid-controlbar, .mx-grid-searchbar {\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n}\n.mx-grid-controlbar .mx-button,\n.mx-grid-search-controls .mx-button {\n margin-bottom: 8px;\n}\n\n.mx-grid-search-controls .mx-button + .mx-button,\n.mx-grid-controlbar .mx-button + .mx-button {\n margin-left: 0.3em;\n}\n\n[dir=\"rtl\"] .mx-grid-search-controls .mx-button + .mx-button,\n[dir=\"rtl\"] .mx-grid-controlbar .mx-button + .mx-button {\n margin-left: 0;\n margin-right: 0.3em;\n}\n\n.mx-grid-pagingbar,\n.mx-grid-search-controls {\n display: flex;\n white-space: nowrap;\n align-items: baseline;\n margin-left: auto;\n}\n\n.mx-grid-toolbar, .mx-grid-search-inputs {\n margin-right: 5px;\n flex: 1;\n}\n\n[dir=\"rtl\"] .mx-grid-toolbar,\n[dir=\"rtl\"] .mx-grid-search-inputs {\n margin-left: 5px;\n margin-right: 0px;\n}\n[dir=\"rtl\"] .mx-grid-pagingbar,\n[dir=\"rtl\"] .mx-grid-search-controls {\n margin-left: 0px;\n margin-right: auto;\n}\n\n.mx-grid-paging-status {\n padding: 0 8px 5px;\n}\n\n/* search fields */\n.mx-grid-search-item {\n display: inline-block;\n vertical-align: top;\n margin-bottom: 8px;\n}\n.mx-grid-search-label {\n width: 110px;\n padding: 0 5px;\n text-align: right;\n display: inline-block;\n vertical-align: top;\n overflow: hidden;\n}\n[dir=\"rtl\"] .mx-grid-search-label {\n text-align: left;\n}\n.mx-grid-search-input {\n width: 150px;\n padding: 0 5px;\n display: inline-block;\n vertical-align: top;\n}\n.mx-grid-search-message {\n flex-basis: 100%;\n}\n\n/* widget combinations */\n.mx-dataview .mx-grid {\n border: 1px solid #ddd;\n border-radius: 3px;\n}\n\n.mx-calendar {\n z-index: 1000;\n}\n\n.mx-calendar-month-dropdown-options {\n position: absolute;\n}\n\n.mx-calendar, .mx-calendar-month-dropdown {\n user-select: none;\n}\n\n.mx-calendar-month-current {\n display: inline-block;\n}\n\n.mx-calendar-month-spacer {\n position: relative;\n height: 0px;\n overflow: hidden;\n visibility: hidden;\n}\n\n.mx-calendar, .mx-calendar-month-dropdown-options {\n border: 1px solid lightgrey;\n background-color: white;\n}\n\n.mx-datagrid tr {\n cursor: pointer;\n}\n\n.mx-datagrid tr.mx-datagrid-row-empty {\n cursor: default;\n}\n\n.mx-datagrid table {\n width: 100%;\n max-width: 100%;\n table-layout: fixed;\n margin-bottom: 0;\n}\n\n.mx-datagrid th, .mx-datagrid td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: bottom;\n border: 1px solid #ddd;\n}\n\n/* head */\n.mx-datagrid th {\n position: relative; /* Required for the positioning of the column resizers */\n border-bottom-width: 2px;\n}\n.mx-datagrid-head-caption {\n overflow: hidden;\n white-space: nowrap;\n}\n.mx-datagrid-sort-icon {\n float: right;\n padding-left: 5px;\n}\n[dir=\"rtl\"] .mx-datagrid-sort-icon {\n float: left;\n padding: 0 5px 0 0;\n}\n.mx-datagrid-column-resizer {\n position: absolute;\n top: 0;\n left: -6px;\n width: 10px;\n height: 100%;\n cursor: col-resize;\n}\n[dir=\"rtl\"] .mx-datagrid-column-resizer {\n left: auto;\n right: -6px;\n}\n\n/* body */\n.mx-datagrid tbody tr:first-child td {\n border-top: none;\n}\n//.mx-datagrid tbody tr:nth-child(2n+1) td {\n// background-color: #f9f9f9;\n//}\n.mx-datagrid tbody .selected td {\n background-color: #eee;\n}\n.mx-datagrid-data-wrapper {\n overflow: hidden;\n white-space: nowrap;\n}\n.mx-datagrid tbody img {\n max-width: 16px;\n max-height: 16px;\n}\n.mx-datagrid input,\n.mx-datagrid select,\n.mx-datagrid textarea {\n cursor: auto;\n}\n\n/* foot */\n.mx-datagrid tfoot th,\n.mx-datagrid tfoot td {\n padding: 3px 8px;\n}\n.mx-datagrid tfoot th {\n border-top: 1px solid #ddd;\n}\n.mx-datagrid.mx-content-loading .mx-content-loader {\n display: inline-block;\n width: 90%;\n animation: placeholderGradient 1s linear infinite;\n border-radius: 4px;\n background: #F5F5F5;\n background: repeating-linear-gradient(to right, #F5F5F5 0%, #F5F5F5 5%, #F9F9F9 50%, #F5F5F5 95%, #F5F5F5 100%);\n background-size: 200px 100px;\n animation-fill-mode: both;\n}\n@keyframes placeholderGradient {\n 0% { background-position: 100px 0; }\n 100% { background-position: -100px 0; }\n}\n\n.mx-datagrid-table-resizing th,\n.mx-datagrid-table-resizing td {\n cursor: col-resize !important;\n}\n\n.mx-templategrid-content-wrapper {\n display: table;\n width: 100%;\n border-collapse: collapse;\n box-sizing: border-box;\n}\n.mx-templategrid-row {\n display: table-row;\n}\n.mx-templategrid-item {\n padding: 5px;\n display: table-cell;\n border: 1px solid #ddd;\n cursor: pointer;\n box-sizing: border-box;\n}\n.mx-templategrid-empty {\n display: table-cell;\n}\n.mx-templategrid-item.selected {\n background-color: #f5f5f5;\n}\n.mx-templategrid-item .mx-table th,\n.mx-templategrid-item .mx-table td {\n padding: 2px 8px;\n}\n\n.mx-scrollcontainer-horizontal {\n width: 100%;\n display: table;\n table-layout: fixed;\n}\n.mx-scrollcontainer-horizontal > div {\n display: table-cell;\n vertical-align: top;\n}\n//.mx-scrollcontainer-wrapper {\n// padding: 10px;\n//}\n.mx-scrollcontainer-nested {\n padding: 0;\n}\n.mx-scrollcontainer-fixed > .mx-scrollcontainer-middle > .mx-scrollcontainer-wrapper,\n.mx-scrollcontainer-fixed > .mx-scrollcontainer-left > .mx-scrollcontainer-wrapper,\n.mx-scrollcontainer-fixed > .mx-scrollcontainer-center > .mx-scrollcontainer-wrapper,\n.mx-scrollcontainer-fixed > .mx-scrollcontainer-right > .mx-scrollcontainer-wrapper {\n overflow: auto;\n}\n\n.mx-scrollcontainer-move-in {\n transition: left 250ms ease-out;\n}\n.mx-scrollcontainer-move-out {\n transition: left 250ms ease-in;\n}\n.mx-scrollcontainer-shrink .mx-scrollcontainer-toggleable {\n transition-property: width;\n}\n\n.mx-scrollcontainer-toggleable {\n background-color: #fff;\n}\n//.mx-scrollcontainer-slide > .mx-scrollcontainer-toggleable > .mx-scrollcontainer-wrapper {\n// position: relative;\n// z-index: 1;\n// background-color: inherit;\n//}\n.mx-scrollcontainer-push {\n position: relative;\n}\n.mx-scrollcontainer-shrink > .mx-scrollcontainer-toggleable {\n overflow: hidden;\n}\n.mx-scrollcontainer-push.mx-scrollcontainer-open > div,\n.mx-scrollcontainer-slide.mx-scrollcontainer-open > div {\n pointer-events: none;\n}\n.mx-scrollcontainer-push.mx-scrollcontainer-open > .mx-scrollcontainer-toggleable,\n.mx-scrollcontainer-slide.mx-scrollcontainer-open > .mx-scrollcontainer-toggleable {\n pointer-events: auto;\n}\n\n.mx-navbar-item img,\n.mx-navbar-subitem img {\n height: 16px;\n}\n\n\n.mx-navigationtree .navbar-inner {\n padding-left: 0;\n padding-right: 0;\n}\n.mx-navigationtree ul {\n list-style: none;\n}\n.mx-navigationtree ul li {\n border-bottom: 1px solid #dfe6ea;\n}\n.mx-navigationtree li:last-child {\n border-style: none;\n}\n.mx-navigationtree a {\n display: block;\n padding: 5px 10px;\n color: #777;\n text-shadow: 0 1px 0 #fff;\n text-decoration: none;\n}\n.mx-navigationtree a.active {\n color: #FFF;\n text-shadow: none;\n background: #3498DB;\n border-radius: 3px;\n}\n.mx-navigationtree .mx-navigationtree-collapsed ul {\n display: none;\n}\n.mx-navigationtree ul {\n margin: 0;\n padding: 0;\n}\n.mx-navigationtree ul li {\n padding: 5px 0;\n}\n.mx-navigationtree ul li ul {\n padding: 0;\n margin-left: 10px;\n}\n.mx-navigationtree ul li ul li {\n margin-left: 8px;\n padding: 5px 0;\n}\n[dir=\"rtl\"] .mx-navigationtree ul li ul li {\n margin-left: auto;\n margin-right: 8px;\n}\n.mx-navigationtree ul li ul li ul li {\n font-size: 10px;\n padding-top: 3px;\n padding-bottom: 3px;\n}\n.mx-navigationtree ul li ul li ul li img {\n vertical-align: top;\n}\n\n.mx-link img,\n.mx-button img {\n height: 16px;\n}\n.mx-link {\n padding: 6px 12px;\n display: inline-block;\n}\n\n.mx-groupbox {\n margin-bottom: 10px;\n}\n.mx-groupbox-header {\n margin: 0;\n padding: 10px 15px;\n color: #eee;\n background: #333;\n font-size: inherit;\n line-height: inherit;\n border-radius: 4px 4px 0 0;\n}\n.mx-groupbox-collapsible > .mx-groupbox-header {\n cursor: pointer;\n}\n.mx-groupbox.collapsed > .mx-groupbox-header {\n border-radius: 4px;\n}\n.mx-groupbox-body {\n padding: 8px;\n border: 1px solid #ddd;\n border-radius: 4px;\n}\n.mx-groupbox.collapsed > .mx-groupbox-body {\n display: none;\n}\n.mx-groupbox-header + .mx-groupbox-body {\n border-top: none;\n border-radius: 0 0 4px 4px;\n}\n.mx-groupbox-collapse-icon {\n float: right;\n}\n[dir=\"rtl\"] .mx-groupbox-collapse-icon {\n float: left;\n}\n\n.mx-dataview {\n position: relative;\n}\n.mx-dataview-controls {\n padding: 19px 20px 12px;\n background-color: #f5f5f5;\n border-top: 1px solid #eee;\n}\n\n.mx-dataview-controls .mx-button {\n margin-bottom: 8px;\n}\n\n.mx-dataview-controls .mx-button + .mx-button {\n margin-left: 0.3em;\n}\n\n.mx-dataview-message {\n background: #fff;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.mx-dataview-message > div {\n display: table;\n width: 100%;\n height: 100%;\n}\n.mx-dataview-message > div > p {\n display: table-cell;\n text-align: center;\n vertical-align: middle;\n}\n\n/* Top-level data view in window is a special case, handle it as such. */\n.mx-window-view .mx-window-body {\n padding: 0;\n}\n.mx-window-view .mx-window-body > .mx-dataview > .mx-dataview-content,\n.mx-window-view .mx-window-body > .mx-placeholder > .mx-dataview > .mx-dataview-content {\n padding: 15px;\n}\n.mx-window-view .mx-window-body > .mx-dataview > .mx-dataview-controls,\n.mx-window-view .mx-window-body > .mx-placeholder > .mx-dataview > .mx-dataview-controls {\n border-radius: 0px 0px 6px 6px;\n}\n\n.mx-dialog {\n position: fixed;\n left: auto;\n right: auto;\n padding: 0;\n width: 500px;\n /* If the margin is set to auto, IE9 reports the calculated value of the\n * margin as the actual value. Other browsers will just report 0. Eliminate\n * this difference by setting margin to 0 for every browser. */\n margin: 0;\n}\n.mx-dialog-header {\n cursor: move;\n}\n.mx-dialog-body {\n overflow: auto;\n}\n\n.mx-window {\n position: fixed;\n left: auto;\n right: auto;\n padding: 0;\n width: 600px;\n /* If the margin is set to auto, IE9 reports the calculated value of the\n * margin as the actual value. Other browsers will just report 0. Eliminate\n * this difference by setting margin to 0 for every browser. */\n margin: 0;\n}\n.mx-window-content {\n height: 100%;\n overflow: hidden;\n}\n.mx-window-active .mx-window-header {\n background-color: #f5f5f5;\n border-radius: 6px 6px 0 0;\n}\n.mx-window-header {\n cursor: move;\n}\n.mx-window-body {\n overflow: auto;\n}\n\n.mx-dropdown-list * {\n cursor: pointer;\n}\n.mx-dropdown-list img {\n width: 35px;\n vertical-align: middle;\n margin-right: 10px;\n}\n[dir=\"rtl\"] .mx-dropdown-list img {\n margin-left: 10px;\n margin-right: auto;\n}\n\n.mx-dropdown-list {\n padding: 0;\n list-style: none;\n}\n.mx-dropdown-list > li {\n padding: 5px 10px 10px;\n border: 1px #ddd;\n border-style: solid solid none;\n background-color: #fff;\n}\n.mx-dropdown-list > li:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n}\n.mx-dropdown-list > li:last-child {\n border-bottom-style: solid;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.mx-dropdown-list-striped > li:nth-child(2n+1) {\n background: #f9f9f9;\n}\n.mx-dropdown-list > li:hover {\n background: #f5f5f5;\n}\n\n.mx-header {\n position: relative;\n padding: 9px;\n background: #333;\n text-align: center;\n}\n.mx-header-center {\n display: inline-block;\n color: #eee;\n line-height: 30px; /* height of buttons */\n}\nbody[dir=\"ltr\"] .mx-header-left,\nbody[dir=\"rtl\"] .mx-header-right {\n position: absolute;\n top: 9px;\n left: 9px;\n}\nbody[dir=\"ltr\"] .mx-header-right,\nbody[dir=\"rtl\"] .mx-header-left {\n position: absolute;\n top: 9px;\n right: 9px;\n}\n\n.mx-title {\n margin-bottom: 0px;\n margin-top: 0px;\n}\n\n.mx-listview {\n padding: 8px;\n}\n.mx-listview > ul {\n padding: 0px;\n list-style: none;\n}\n// .mx-listview > ul > li {\n// padding: 5px 10px 10px;\n// border: 1px #ddd;\n// border-style: solid solid none;\n// background-color: #fff;\n// outline: none;\n// }\n// .mx-listview > ul > li:first-child {\n// border-top-left-radius: 4px;\n// border-top-right-radius: 4px;\n// }\n// .mx-listview > ul > li:last-child {\n// border-bottom-style: solid;\n// border-bottom-left-radius: 4px;\n// border-bottom-right-radius: 4px;\n// }\n//.mx-listview li:nth-child(2n+1) {\n// background: #f9f9f9;\n//}\n//.mx-listview li:nth-child(2n+1):hover {\n// background: #f5f5f5;\n//}\n.mx-listview > ul > li.selected {\n// background: #eee;\n}\n.mx-listview-clickable > ul > li {\n cursor: pointer;\n}\n.mx-listview-empty {\n color: #999;\n text-align: center;\n}\n.mx-listview .mx-listview-loading {\n padding: 10px;\n line-height: 0;\n text-align: center;\n}\n.mx-listview-searchbar {\n display: flex;\n margin-bottom: 10px;\n}\n.mx-listview-searchbar > input {\n width: 100%;\n}\n.mx-listview-searchbar > button {\n margin-left: 5px;\n}\n[dir=\"rtl\"] .mx-listview-searchbar > button {\n margin-left: 0;\n margin-right: 5px;\n}\n.mx-listview-selection {\n display: table-cell;\n vertical-align: middle;\n padding: 0 15px 0 5px;\n}\n[dir=\"rtl\"] .mx-listview-selection {\n padding: 0 5px 0 15px;\n}\n.mx-listview-selectable .mx-listview-content {\n display: table-cell;\n vertical-align: middle;\n width: 100%;\n}\n.mx-listview .selected {\n background: #def;\n}\n.mx-listview .mx-table th,\n.mx-listview .mx-table td {\n padding: 2px;\n}\n\n.mx-login .form-control {\n margin-top: 10px;\n}\n\n.mx-menubar {\n padding: 8px;\n}\n.mx-menubar-icon {\n height: 16px;\n}\n.mx-menubar-more-icon {\n display: inline-block;\n width: 16px;\n height: 16px;\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKNJREFUeNpi/P//P8NgAUwMgwiMOmbUMaOOGXXMqGNGHTPYHMOCTfDs2bMeQKoOiI1BXCBuMjY23kFrdYzoTQigRm8gtQWLG0OBBqyhlTpc0dSOIxTraKwOq2PUcWhWp7E6rI65iUPzTRqrw+qYGhyam2isDtMxwES1CUgFAfFxqBCIDkJPbNRWhzU3jRZ6o44ZdcyoY0YdM+qYUccMUscABBgAUXpEjE/Bs/IAAAAASUVORK5CYII=) no-repeat center center;\n background-size: 16px 16px;\n vertical-align: middle;\n}\n\n.mx-navigationlist {\n padding: 8px;\n}\n.mx-navigationlist li:hover,\n.mx-navigationlist li:focus,\n.mx-navigationlist li.active {\n color: #FFF;\n background-color: #3498DB;\n}\n.mx-navigationlist * {\n cursor: pointer;\n}\n.mx-navigationlist .table th,\n.mx-navigationlist .table td {\n padding: 2px;\n}\n\n.mx-progress {\n position: fixed;\n top: 30%;\n left: 0;\n right: 0;\n margin: auto;\n width: 250px;\n max-width: 90%;\n background: #333;\n opacity: 0.8;\n z-index: 5000;\n border-radius: 4px;\n padding: 20px 15px;\n transition: opacity 0.4s ease-in-out;\n}\n.mx-progress-hidden {\n opacity: 0;\n}\n.mx-progress-message {\n color: #fff;\n text-align: center;\n margin-bottom: 15px;\n}\n.mx-progress-empty .mx-progress-message {\n display: none;\n}\n.mx-progress-indicator {\n width: 70px;\n height: 10px;\n margin: auto;\n background: url(data:image/gif;base64,R0lGODlhRgAKAMQAADo6OoGBgVpaWnBwcI6OjqysrFJSUmRkZD8/P0xMTM7Ozqenp1hYWF1dXUhISHJycoeHh0tLS1dXV6ioqM/Pz2VlZT09PTc3N0BAQIWFhdbW1lxcXK2trUFBQTMzMwAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQEDAAAACwAAAAARgAKAAAFk6DnXRaGWZeorqSJrnB7prAqv7V40x7Q/UBAzgf8CWvE4hGWDA6LxhEUyNNNf1XpNXu5drhektcCs4zL55X5SlaPMV4MDH6Vr+hTuwoP1Yv4RSZxc4N3hXuHf3FrU20qjFCOIpBFkh6UQJaYPyhhMZ4soDaiVls9U0srTVFIqE9QqSqrHUs7OTolM7cjuTg5trfAIQAh+QQEDAAAACwAAAAACgAKAAAFJKDnHYWiFIfoQVrrQqMra+TslnZr5trJo7wUawYTVQoUCkoUAgAh+QQEDAAAACwAAAAAGQAKAAAFWaDnMcSyEJKorkehKMWhPlxtP6sKaXwPeRKbkMPIHXpIzYEwtBFyhWSvsGjWFjmFlKeoWrEr7VbBtD5X0W2BYSUat0oPbYjLeXbJn4g0mRCKdiIVBRQUMSIhACH5BAQMAAAALAAAAAAoAAoAAAWKoOclQxAMkaiuDLEshLTOR6EoxaE2We83M9GDQyw+gh6IZsmEeCK+aCYxkxSvHAaNydUcBlLfYEbAFgmzQpdZCIR7gdnCTFzMFOulwv2Or+Z0dit4eQpgb2MrZXRoK2p5BQlvUzMMdFlbeTo8UkBBQ1hHQUpdTiIkJgNUSB4tExMEWqwVBRQUOSIhACH5BAQMAAAALAAAAAA3AAoAAAW8oOchhiAYiKiuyRAEQ7TODLEshDSvR6EohYPKsSkaHTtPI8NsNpIPjnT6SEI02CxkZOxuUqtIc5xJzCTTNIcxO2TfmoPBazTMBuTmYEZQTwkzBXBZBQJ0RQIzAXlMATMLflILMwqDWAqGh4kri4yOK5CRkyuVlgpzh3YreIx7K32RgCuClgUIh18zCYxlNJFrbZZxHkReSDtLZE87UWpVO1dwWyIYJSdgSS0vA2ZJHjUTEwRs3hUFFBRBIiEAIfkEBAwAAAAsAAAAAEYACgAABfCg510WhlmXqK6IIQgGss7JEARDNK8MsSwEyU51KCgUhYMK0Gk6AUPHZkp1DBuZrLYxfHC+4McQoimbISOnupNiUd8b2SqirWcSMwl4z2HMDmaBGgcWa04WMwZwVAYzA3ZaAzMEfGAEMwWCZgUYhk0YMwKLUwIzAZBZATMLlV8LMwqaZQqdnqAroqOlK6eoqiusra8rsbIKhZ6IK4qjjSuPqJIrlK2XK5myBReebDMIo3E0qHczDK19f7KDHkxrUDtScFY7WHZcO158YjtkgmgiJEygGCICgwsYcobUuDEAD8EeEyYQ8EOwQgEKFJKICAEAIfkEBAwAAAAsDwAAADcACgAABbqg510WhlmXqK6IIQgGss7JEARDNK8MsSwEiQrQKRoBO49jw2w6ko2MdNpIPjjY7GNk7HZSrKZ4I1tFpuhMYibJujkMi9domRnGTcNskJ4OZgRvWQQYc0UYMwJ4TAIzAX1SATMLglgLhYaIK4qLjSuPkJIrlJULcoZ1K3eLeit8kH8rgZUEF4ZfMwiLZDSQajMMlXAeRF5IO0tjTztRaVU7V29bIiQmKEkiGC4wZUk1NwNr2D0TEwQMIiEAIfkEBAwAAAAsHgAAACgACgAABYeg510WhlmXqK6IIQgGss7JEARDpAJd7wMzkWNDLDqCnkZmyWyMfNBOilWsbmSrCHObSViiPsvMYC0aZgMuc4AB9zAzQZkomAXUy0DbDV/J53Urd3gBX25iK2RzZytpeAMXblIzCHNXNHhdHjxRQEFDVkdBSlxOIiQmKEgiGC4wWEg1NwMJIiEAIfkEBAwAAAAsLQAAABkACgAABVWg510WhlmXqK6IIQgGogJdbQOr6mx874y2YCfF6hk3CIvQZskZjj0DZlnD5ARQnmBKta6wWYGS2lw9s4YLdZhDZJEemhCX8+yOPxHJhKqrMC4wMh4hACH5BAQMAAAALDwAAAAKAAoAAAUioOddFoZZl+gBXesCoyt35OyWdmvm3cmjvBRrBhORTChRCAA7);\n}\n\n.mx-reload-notification {\n position: fixed;\n z-index: 1001;\n top: 0;\n width: 100%;\n padding: 1rem;\n\n border: 1px solid hsl(200, 96%, 41%);\n background-color: hsl(200, 96%, 44%);\n\n box-shadow: 0 5px 20px rgba(1, 37, 55, 0.16);\n color: white;\n\n text-align: center;\n font-size: 14px;\n}\n\n.mx-resizer-n,\n.mx-resizer-s {\n position: absolute;\n left: 0;\n width: 100%;\n height: 10px;\n}\n.mx-resizer-n {\n top: -5px;\n cursor: n-resize;\n}\n.mx-resizer-s {\n bottom: -5px;\n cursor: s-resize;\n}\n\n.mx-resizer-e,\n.mx-resizer-w {\n position: absolute;\n top: 0;\n width: 10px;\n height: 100%;\n}\n.mx-resizer-e {\n right: -5px;\n cursor: e-resize;\n}\n.mx-resizer-w {\n left: -5px;\n cursor: w-resize;\n}\n\n.mx-resizer-nw,\n.mx-resizer-ne,\n.mx-resizer-sw,\n.mx-resizer-se {\n position: absolute;\n width: 20px;\n height: 20px;\n}\n\n.mx-resizer-nw,\n.mx-resizer-ne {\n top: -5px;\n}\n.mx-resizer-sw,\n.mx-resizer-se {\n bottom: -5px;\n}\n.mx-resizer-nw,\n.mx-resizer-sw {\n left: -5px;\n}\n.mx-resizer-ne,\n.mx-resizer-se {\n right: -5px;\n}\n\n.mx-resizer-nw {\n cursor: nw-resize;\n}\n.mx-resizer-ne {\n cursor: ne-resize;\n}\n.mx-resizer-sw {\n cursor: sw-resize;\n}\n.mx-resizer-se {\n cursor: se-resize;\n}\n\n.mx-text {\n white-space: pre-line;\n}\n\n.mx-textarea textarea {\n resize: none;\n overflow-y: hidden;\n}\n.mx-textarea .mx-textarea-noresize {\n height: auto;\n resize: vertical;\n overflow-y: auto;\n}\n.mx-textarea .mx-textarea-counter {\n font-size: smaller;\n}\n.mx-textarea .form-control-static {\n white-space: pre-line;\n}\n\n.mx-underlay {\n position: fixed;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 1000;\n opacity: 0.5;\n background-color: #333;\n}\n\n.mx-imagezoom {\n position: absolute;\n display: table;\n width: 100%;\n height: 100%;\n background-color: #999;\n}\n.mx-imagezoom-wrapper {\n display: table-cell;\n text-align: center;\n vertical-align: middle;\n}\n.mx-imagezoom-image {\n max-width: none;\n}\n\n.mx-dropdown li {\n padding: 3px 20px;\n cursor: pointer;\n}\n.mx-dropdown label {\n padding: 0;\n color: #333;\n white-space: nowrap;\n cursor: pointer;\n}\n.mx-dropdown input {\n margin: 0;\n vertical-align: middle;\n cursor: pointer;\n}\n.mx-dropdown .selected {\n background: #f8f8f8;\n}\n//.mx-selectbox {\n// text-align: left;\n//}\n//.mx-selectbox-caret-wrapper {\n// float: right;\n// height: 100%;\n//}\n\n.mx-demouserswitcher {\n position: fixed;\n top: 0;\n right: 0;\n width: 360px;\n height: 100%;\n z-index: 20000;\n box-shadow: -1px 0 5px rgba(28,59,86,.2);\n}\n.mx-demouserswitcher-content {\n padding: 80px 40px 20px;\n height: 100%;\n color: #387ea2;\n font-size: 14px;\n overflow: auto;\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOgAAABgCAYAAAAXSj7NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MzkwOTREMDQ2NEYxMUU0QTQ4MUI5NTNGMUQ3QzE5NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0MzkwOTREMTQ2NEYxMUU0QTQ4MUI5NTNGMUQ3QzE5NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0REMyMUZGNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0REMyMjAwNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+g1tRlwAAEFFJREFUeNrsnYl3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) top right no-repeat #1b3149;\n /* background-attachement local is not supported on IE8\n * when this is part of background the complete background is ignored */\n background-attachment: local;\n}\n.mx-demouserswitcher ul {\n padding: 0;\n margin-top: 25px;\n list-style-type: none;\n border-top: 1px solid #496076;\n}\n.mx-demouserswitcher a {\n display: block;\n padding: 10px 0;\n color: #387ea2;\n border-bottom: 1px solid #496076;\n}\n.mx-demouserswitcher h2 {\n margin: 20px 0 5px;\n color: #5bc4fe;\n font-size: 28px;\n}\n.mx-demouserswitcher h3 {\n margin: 0 0 2px;\n color: #5bc4fe;\n font-size: 18px;\n font-weight: normal;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.mx-demouserswitcher .active h3 {\n color: #11efdb;\n}\n.mx-demouserswitcher p {\n margin-bottom: 0;\n}\n.mx-demouserswitcher-toggle {\n position: absolute;\n top: 25%;\n left: -35px;\n width: 35px;\n height: 38px;\n margin-top: -40px;\n cursor: pointer;\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n box-shadow: -1px 0 5px rgba(28,59,86,.2);\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NERDMjFGRDQ2NEMxMUU0QTQ4MUI5NTNGMUQ3QzE5NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NERDMjFGRTQ2NEMxMUU0QTQ4MUI5NTNGMUQ3QzE5NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0REMyMUZCNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0REMyMUZDNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+1ZovNAAAAWdJREFUeNqM1M0rRFEYx/E7Y5qIQpOUbIiymQWysBgvJVJK2VgryZQtKSULZelPsB0LZaNZjJUNK1FskJqUvCS3NAsZc3zP9NziOOfeeepTc8/c8+vc8xZTSnmOakEGKdzgDBXXy54OMsSwjpL6W9cYsrxfZWvcUu7y0VdLUCc+VXgd2oLixpfOIOmF17TtHTOozYuupCxAaNB9DUEfeDUbE8bzEXxZerP00l8hh3LUiHTIMr6N9j2ksYoihv/1deyLSVzKKm1jEW+WfZV2Lf8gskjIcwcWpOM++pHCFPLosgWtoCyd7jCPOjzhGHHLyDPY1achaJhDxRj6rBwJXUuoN0IG8IIv7OiGBjxadvAITuT3rex6c0SbKASflnUcBT3JTThAjyWkGUVsBEEFR5CerzXpNIacrFIrJnCBB3muBvkhB1TP27hM/Lvx3zl6gxHqu6c74kiU8IxGjKJdLrrT3xfdjwADAJaMxP2bvD2BAAAAAElFTkSuQmCC) center center no-repeat #1b3149;\n}\n\n/* master details screen for mobile */\n.mx-master-detail-screen {\n top: 0;\n left: 0;\n overflow: auto;\n width: 100%;\n height: 100%;\n position: absolute;\n background-color: white;\n will-change: transform;\n}\n\n.mx-master-detail-screen .mx-master-detail-details {\n padding: 15px;\n}\n\n.mx-master-detail-screen-header {\n position: relative;\n overflow: auto;\n border-bottom: 1px solid #ccc;\n background-color: #f7f7f7;\n}\n\n.mx-master-detail-screen-header-caption {\n text-align: center;\n font-size: 17px;\n line-height: 24px;\n font-weight: 600;\n}\n\n.mx-master-detail-screen-header-close {\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n width: 50px;\n border: none;\n background: transparent;\n color: #007aff;\n}\n\nbody[dir=\"rtl\"] .mx-master-detail-screen-header-close {\n right: 0;\n left: auto;\n}\n\n.mx-master-detail-screen-header-close::before {\n content: \"\\2039\";\n font-size: 52px;\n line-height: 24px;\n}\n\n/* classes for content page */\n.mx-master-detail-content-fix {\n height: 100vh;\n overflow: hidden;\n}\n\n.mx-master-detail-content-hidden {\n transform: translateX(-200%);\n}\n\nbody[dir=\"rtl\"] .mx-master-detail-content-hidden {\n transform: translateX(200%);\n}\n.reportingReport {\n padding: 5px;\n border: 1px solid #ddd;\n -webkit-border-radius: 3px;\n -moz-border-radius: 3px;\n border-radius: 3px;\n}\n\n.reportingReportParameter th {\n text-align: right;\n}\n\n.reportingDateRange table {\n width: 100%;\n table-layout: fixed;\n}\n.reportingDateRange th {\n padding: 5px;\n text-align: right;\n background-color: #eee;\n}\n.reportingDateRange td {\n padding: 5px;\n}\n\n.mx-reportmatrix table {\n width: 100%;\n max-width: 100%;\n table-layout: fixed;\n margin-bottom: 0;\n}\n\n.mx-reportmatrix th, .mx-reportmatrix td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: bottom;\n border: 1px solid #ddd;\n}\n\n.mx-reportmatrix tbody tr:first-child td {\n border-top: none;\n}\n\n.mx-reportmatrix tbody tr:nth-child(2n+1) td {\n background-color: #f9f9f9;\n}\n\n.mx-reportmatrix tbody img {\n max-width: 16px;\n max-height: 16px;\n}\n\n@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\n .dijitInline {\n zoom: 1; /* set hasLayout:true to mimic inline-block */\n display:inline; /* don't use .dj_ie since that increases the priority */\n vertical-align: auto;\t/* makes TextBox,Button line up w/native counterparts on IE6 */\n }\n\n .dj_ie6 .dijitComboBox .dijitInputContainer,\n .dijitInputContainer {\n zoom: 1;\n }\n\n .dijitRight {\n /* Right part of a 3-element border */\n display:inline;\t\t\t\t/* IE7 sizes to outer size w/o this */\n }\n\n .dijitButtonNode {\n vertical-align: auto;\n }\n\n .dijitTextBox {\n overflow: hidden; /* #6027, #6067 */\n }\n\n .dijitPlaceHolder {\n filter: \"\"; /* make this show up in IE6 after the rendering of the widget */\n }\n\n .dijitValidationTextBoxError input.dijitValidationInner,\n .dijitSelect input,\n .dijitTextBox input.dijitArrowButtonInner {\n text-indent: 0 !important;\n letter-spacing: -5em !important;\n text-align: right !important;\n }\n\n .dj_a11y input.dijitValidationInner,\n .dj_a11y input.dijitArrowButtonInner {\n text-align: left !important;\n }\n\n .dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {\n bottom: 50%;\t/* otherwise (on some machines) top arrow icon too close to splitter border (IE6/7) */\n }\n\n .dijitTabContainerTop-tabs .dijitTab,\n .dijitTabContainerBottom-tabs .dijitTab {\n zoom: 1; /* set hasLayout:true to mimic inline-block */\n display:inline; /* don't use .dj_ie since that increases the priority */\n }\n\n .dojoDndHorizontal .dojoDndItem {\n /* make contents of horizontal container be side by side, rather than vertical */\n display: inline;\n }\n}\n\n\n\n/* WARNING: IE9 limits nested imports to three levels deep: http://jorgealbaladejo.com/2011/05/28/internet-explorer-limits-nested-import-css-statements */\n\n/* dijit base */\n\n/* mendix base */\n\n/* widgets */\n\n/* reporting */\n\n\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9kb2pvL2Rpaml0L3RoZW1lcy9kaWppdC5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS9iYXNlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL2Zvcm1zLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9Ub29sdGlwLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9UYWJDb250YWluZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L19HcmlkLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9DYWxlbmRhci5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvRGF0YUdyaWQuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RlbXBsYXRlR3JpZC5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvU2Nyb2xsQ29udGFpbmVyLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9OYXZiYXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L05hdmlnYXRpb25UcmVlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9CdXR0b24uY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0dyb3VwQm94LmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9EYXRhVmlldy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvRGlhbG9nLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9XaW5kb3cuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0Ryb3BEb3duLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9IZWFkZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RpdGxlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9MaXN0Vmlldy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvTG9naW5EaWFsb2cuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L01lbnVCYXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L05hdmlnYXRpb25MaXN0LmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9Qcm9ncmVzcy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvUmVsb2FkTm90aWZpY2F0aW9uLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9SZXNpemFibGUuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RleHQuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RleHRBcmVhLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9VbmRlcmxheS5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvSW1hZ2Vab29tLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9TZWxlY3RCb3guY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0RlbW9Vc2VyU3dpdGNoZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L01hc3RlckRldGFpbC5jc3MiLCJ3ZWJwYWNrOi8vLy4vcmVwb3J0aW5nL3VpL3dpZGdldC9SZXBvcnQuY3NzIiwid2VicGFjazovLy8uL3JlcG9ydGluZy91aS93aWRnZXQvUmVwb3J0UGFyYW1ldGVyLmNzcyIsIndlYnBhY2s6Ly8vLi9yZXBvcnRpbmcvdWkvd2lkZ2V0L0RhdGVSYW5nZS5jc3MiLCJ3ZWJwYWNrOi8vLy4vcmVwb3J0aW5nL3VpL3dpZGdldC9SZXBvcnRNYXRyaXguY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvbXh1aS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7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QUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsd0JBQXdCO0FBQ3hCLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHlDQUF5QztBQUN4RDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixvQkFBb0I7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQsMEJBQTBCO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsYUFBYTtBQUNiLGFBQWEsd0RBQXdEO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQjtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdnNFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7O0FDOUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUN6REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOztBQzdCQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JGQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQzFCQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhCQUE4QjtBQUN0QyxVQUFVLCtCQUErQjtBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUN0R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyREE7QUFDQTtBQUNBO0FBQ0E7OztBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0VBO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DOztBQy9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JFQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7QUMvREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDO0FDaEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDekJBOztBQUVBOztBQUVBOztBQUVBOztBQUVBIiwiZmlsZSI6Im14dWkvdWkvbXh1aS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuXHRFc3NlbnRpYWwgc3R5bGVzIHRoYXQgdGhlbWVzIGNhbiBpbmhlcml0LlxuXHRJbiBvdGhlciB3b3Jkcywgd29ya3MgYnV0IGRvZXNuJ3QgbG9vayBncmVhdC5cbiovXG5cblxuXG4vKioqKlxuXHRcdEdFTkVSSUMgUElFQ0VTXG4gKioqKi9cblxuLmRpaml0UmVzZXQge1xuXHQvKiBVc2UgdGhpcyBzdHlsZSB0byBudWxsIG91dCBwYWRkaW5nLCBtYXJnaW4sIGJvcmRlciBpbiB5b3VyIHRlbXBsYXRlIGVsZW1lbnRzXG5cdFx0c28gdGhhdCBwYWdlIHNwZWNpZmljIHN0eWxlcyBkb24ndCBicmVhayB0aGVtLlxuXHRcdC0gVXNlIGluIGFsbCBUQUJMRSwgVFIgYW5kIFREIHRhZ3MuXG5cdCovXG5cdG1hcmdpbjowO1xuXHRib3JkZXI6MDtcblx0cGFkZGluZzowO1xuXHRmb250OiBpbmhlcml0O1xuXHRsaW5lLWhlaWdodDpub3JtYWw7XG5cdGNvbG9yOiBpbmhlcml0O1xufVxuLmRqX2ExMXkgLmRpaml0UmVzZXQge1xuXHQtbW96LWFwcGVhcmFuY2U6IG5vbmU7IC8qIHJlbW92ZSBwcmVkZWZpbmVkIGhpZ2gtY29udHJhc3Qgc3R5bGluZyBpbiBGaXJlZm94ICovXG59XG5cbi5kaWppdElubGluZSB7XG5cdC8qICBUbyBpbmxpbmUgYmxvY2sgZWxlbWVudHMuXG5cdFx0U2ltaWxhciB0byBJbmxpbmVCb3ggYmVsb3csIGJ1dCB0aGlzIGhhcyBmZXdlciBzaWRlLWVmZmVjdHMgaW4gTW96LlxuXHRcdEFsc28sIGFwcGFyZW50bHkgd29ya3Mgb24gYSBESVYgYXMgd2VsbCBhcyBhIEZJRUxEU0VULlxuXHQqL1xuXHRkaXNwbGF5OmlubGluZS1ibG9jaztcdFx0XHQvKiB3ZWJraXQgYW5kIEZGMyAqL1xuXHQjem9vbTogMTsgLyogc2V0IGhhc0xheW91dDp0cnVlIHRvIG1pbWljIGlubGluZS1ibG9jayAqL1xuXHQjZGlzcGxheTppbmxpbmU7IC8qIGRvbid0IHVzZSAuZGpfaWUgc2luY2UgdGhhdCBpbmNyZWFzZXMgdGhlIHByaW9yaXR5ICovXG5cdGJvcmRlcjowO1xuXHRwYWRkaW5nOjA7XG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0I3ZlcnRpY2FsLWFsaWduOiBhdXRvO1x0LyogbWFrZXMgVGV4dEJveCxCdXR0b24gbGluZSB1cCB3L25hdGl2ZSBjb3VudGVycGFydHMgb24gSUU2ICovXG59XG5cbnRhYmxlLmRpaml0SW5saW5lIHtcblx0LyogVG8gaW5saW5lIHRhYmxlcyB3aXRoIGEgZ2l2ZW4gd2lkdGggc2V0ICovXG5cdGRpc3BsYXk6aW5saW5lLXRhYmxlO1xuXHRib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbn1cblxuLmRpaml0SGlkZGVuIHtcblx0LyogVG8gaGlkZSB1bnNlbGVjdGVkIHBhbmVzIGluIFN0YWNrQ29udGFpbmVyIGV0Yy4gKi9cblx0cG9zaXRpb246IGFic29sdXRlOyAvKiByZW1vdmUgZnJvbSBub3JtYWwgZG9jdW1lbnQgZmxvdyB0byBzaW11bGF0ZSBkaXNwbGF5OiBub25lICovXG5cdHZpc2liaWxpdHk6IGhpZGRlbjsgLyogaGlkZSBlbGVtZW50IGZyb20gdmlldywgYnV0IGRvbid0IGJyZWFrIHNjcm9sbGluZywgc2VlICMxODYxMiAqL1xufVxuLmRpaml0SGlkZGVuICoge1xuXHR2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsgLyogaGlkZSB2aXNpYmlsaXR5OnZpc2libGUgZGVzY2VuZGFudHMgb2YgY2xhc3M9ZGlqaXRIaWRkZW4gbm9kZXMsIHNlZSAjMTg3OTkgKi9cbn1cblxuLmRpaml0VmlzaWJsZSB7XG5cdC8qIFRvIHNob3cgc2VsZWN0ZWQgcGFuZSBpbiBTdGFja0NvbnRhaW5lciBldGMuICovXG5cdGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XHQvKiBvdmVycmlkZSB1c2VyJ3MgZGlzcGxheTpub25lIHNldHRpbmcgdmlhIHN0eWxlIHNldHRpbmcgb3IgaW5kaXJlY3RseSB2aWEgY2xhc3MgKi9cblx0cG9zaXRpb246IHJlbGF0aXZlO1x0XHRcdC8qIHRvIHN1cHBvcnQgc2V0dGluZyB3aWR0aC9oZWlnaHQsIHNlZSAjMjAzMyAqL1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuXG4uZGpfaWU2IC5kaWppdENvbWJvQm94IC5kaWppdElucHV0Q29udGFpbmVyLFxuLmRpaml0SW5wdXRDb250YWluZXIge1xuXHQvKiBmb3IgcG9zaXRpb25pbmcgb2YgcGxhY2VIb2xkZXIgKi9cblx0I3pvb206IDE7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IC8qIG5lZWRlZCB0byBzcXVlZXplIHRoZSBJTlBVVCBpbiAqL1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uZGpfaWU3IC5kaWppdElucHV0Q29udGFpbmVyIHtcblx0ZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgLyogbmVlZGVkIGJ5IElFIHRvIHNxdWVlemUgdGhlIElOUFVUIGluICovXG5cdGNsZWFyOiBsZWZ0O1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgLyogdG8gZml4IHdyb25nIHRleHQgYWxpZ25tZW50IGluIHRleHRkaXI9cnRsIHRleHQgYm94ICovXG59XG5cbi5kal9pZSAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWUgaW5wdXQuZGlqaXRUZXh0Qm94LFxuLmRqX2llIC5kaWppdFRleHRCb3ggaW5wdXQge1xuXHRmb250LXNpemU6IDEwMCU7XG59XG4uZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uVGV4dCB7XG5cdGZsb2F0OiBsZWZ0O1xuXHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuVEFCTEUuZGlqaXRTZWxlY3Qge1xuXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IC8qIG1lc3NlcyB1cCBib3JkZXIgYWxpZ25tZW50ICovXG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IC8qIHNvIGpzZmlkZGxlIHdvcmtzIHdpdGggTm9ybWFsaXplZCBDU1MgY2hlY2tlZCAqL1xufVxuLmRpaml0VGV4dEJveCAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyLFxuLmRpaml0VGV4dEJveCAuZGlqaXRBcnJvd0J1dHRvbkNvbnRhaW5lcixcbi5kaWppdFZhbGlkYXRpb25UZXh0Qm94IC5kaWppdFZhbGlkYXRpb25Db250YWluZXIge1xuXHRmbG9hdDogcmlnaHQ7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5kaWppdFNlbGVjdCBpbnB1dC5kaWppdElucHV0RmllbGQsXG4uZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRGaWVsZCB7XG5cdC8qIG92ZXJyaWRlIHVucmVhc29uYWJsZSB1c2VyIHN0eWxpbmcgb2YgYnV0dG9ucyBhbmQgaWNvbnMgKi9cblx0cGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcbn1cbi5kaWppdFZhbGlkYXRpb25UZXh0Qm94IC5kaWppdFZhbGlkYXRpb25Db250YWluZXIge1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4uZGlqaXRUZWVueSB7XG5cdGZvbnQtc2l6ZToxcHg7XG5cdGxpbmUtaGVpZ2h0OjFweDtcbn1cblxuLmRpaml0T2ZmU2NyZWVuIHsgLyogdGhlc2UgY2xhc3MgYXR0cmlidXRlcyBzaG91bGQgc3VwZXJzZWRlIGFueSBpbmxpbmUgcG9zaXRpb25pbmcgc3R5bGUgKi9cblx0cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG5cdGxlZnQ6IC0xMDAwMHB4ICFpbXBvcnRhbnQ7XG5cdHRvcDogLTEwMDAwcHggIWltcG9ydGFudDtcbn1cblxuLypcbiAqIFBvcHVwIGl0ZW1zIGhhdmUgYSB3cmFwcGVyIGRpdiAoZGlqaXRQb3B1cClcbiAqIHdpdGggdGhlIHJlYWwgcG9wdXAgaW5zaWRlLCBhbmQgbWF5YmUgYW4gaWZyYW1lIHRvb1xuICovXG4uZGlqaXRQb3B1cCB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdG1hcmdpbjogMDtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xuXHQtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbi5kaWppdFBvc2l0aW9uT25seSB7XG5cdC8qIE51bGwgb3V0IGFsbCBwb3NpdGlvbi1yZWxhdGVkIHByb3BlcnRpZXMgKi9cblx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xuXHRib3JkZXI6IDAgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcblx0d2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmRpaml0Tm9uUG9zaXRpb25Pbmx5IHtcblx0LyogTnVsbCBwb3NpdGlvbi1yZWxhdGVkIHByb3BlcnRpZXMgKi9cblx0ZmxvYXQ6IG5vbmUgIWltcG9ydGFudDtcblx0cG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50O1xuXHRtYXJnaW46IDAgMCAwIDAgIWltcG9ydGFudDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50O1xufVxuXG4uZGlqaXRCYWNrZ3JvdW5kSWZyYW1lIHtcblx0LyogaWZyYW1lIHVzZWQgdG8gcHJldmVudCBwcm9ibGVtcyB3aXRoIFBERiBvciBvdGhlciBhcHBsZXRzIG92ZXJsYXlpbmcgbWVudXMgZXRjICovXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0bGVmdDogMDtcblx0dG9wOiAwO1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xuXHR6LWluZGV4OiAtMTtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdERpc3BsYXlOb25lIHtcblx0LyogaGlkZSBzb21ldGhpbmcuICBVc2UgdGhpcyBhcyBhIGNsYXNzIHJhdGhlciB0aGFuIGVsZW1lbnQuc3R5bGUgc28gYW5vdGhlciBjbGFzcyBjYW4gb3ZlcnJpZGUgKi9cblx0ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdENvbnRhaW5lciB7XG5cdC8qIGZvciBhbGwgbGF5b3V0IGNvbnRhaW5lcnMgKi9cblx0b3ZlcmZsb3c6IGhpZGRlbjtcdC8qIG5lZWQgb24gSUUgc28gc29tZXRoaW5nIGNhbiBiZSByZWR1Y2VkIGluIHNpemUsIGFuZCBzbyBzY3JvbGxiYXJzIGFyZW4ndCB0ZW1wb3JhcmlseSBkaXNwbGF5ZWQgd2hlbiByZXNpemluZyAqL1xufVxuXG4vKioqKlxuXHRcdEExMVlcbiAqKioqL1xuLmRqX2ExMXkgLmRpaml0SWNvbixcbi5kal9hMTF5IGRpdi5kaWppdEFycm93QnV0dG9uSW5uZXIsIC8qIGlzIHRoaXMgb25seSBmb3IgU3Bpbm5lcj8gIGlmIHNvLCBpdCBzaG91bGQgYmUgZGVsZXRlZCAqL1xuLmRqX2ExMXkgc3Bhbi5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGpfYTExeSBpbWcuZGlqaXRBcnJvd0J1dHRvbklubmVyLFxuLmRqX2ExMXkgLmRpaml0Q2FsZW5kYXJJbmNyZW1lbnRDb250cm9sLFxuLmRqX2ExMXkgLmRpaml0VHJlZUV4cGFuZG8ge1xuXHQvKiBoaWRlIGljb24gbm9kZXMgaW4gaGlnaCBjb250cmFzdCBtb2RlOyB3aGVuIG5lY2Vzc2FyeSB0aGV5IHdpbGwgYmUgcmVwbGFjZWQgYnkgY2hhcmFjdGVyIGVxdWl2YWxlbnRzXG5cdCAqIGV4Y2VwdGlvbiBmb3IgaW5wdXQuZGlqaXRBcnJvd0J1dHRvbklubmVyLCBiZWNhdXNlIHRoZSBpY29uIGFuZCBjaGFyYWN0ZXIgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIHNhbWUgbm9kZSAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRpaml0U3Bpbm5lciBkaXYuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0ZGlzcGxheTogYmxvY2s7IC8qIG92ZXJyaWRlIHByZXZpb3VzIHJ1bGUgKi9cbn1cblxuLmRqX2ExMXkgLmRpaml0QTExeVNpZGVBcnJvdyB7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyAvKiBkaXNwbGF5IHRleHQgaW5zdGVhZCAqL1xuXHRjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qXG4gKiBTaW5jZSB3ZSBjYW4ndCB1c2Ugc2hhZGluZyBpbiBhMTF5IG1vZGUsIGFuZCBzaW5jZSB0aGUgdW5kZXJsaW5lIGluZGljYXRlcyB0b2RheSdzIGRhdGUsXG4gKiB1c2UgYSBib3JkZXIgdG8gc2hvdyB0aGUgc2VsZWN0ZWQgZGF0ZS5cbiAqIEF2b2lkIHNjcmVlbiBqaXR0ZXIgd2hlbiBzd2l0Y2hpbmcgc2VsZWN0ZWQgZGF0ZSBieSBjb21wZW5zYXRpbmcgZm9yIHRoZSBzZWxlY3RlZCBub2RlJ3NcbiAqIGJvcmRlciB3L3BhZGRpbmcgb24gb3RoZXIgbm9kZXMuXG4gKi9cbi5kal9hMTF5IC5kaWppdENhbGVuZGFyRGF0ZUxhYmVsIHtcblx0cGFkZGluZzogMXB4O1xuXHRib3JkZXI6IDBweCAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0Q2FsZW5kYXJTZWxlY3RlZERhdGUgLmRpaml0Q2FsZW5kYXJEYXRlTGFiZWwge1xuXHRib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG5cdGJvcmRlci13aWR0aDogMXB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmc6IDA7XG59XG4uZGpfYTExeSAuZGlqaXRDYWxlbmRhckRhdGVUZW1wbGF0ZSB7XG5cdHBhZGRpbmctYm90dG9tOiAwLjFlbSAhaW1wb3J0YW50O1x0Lyogb3RoZXJ3aXNlIGJvdHRvbSBib3JkZXIgZG9lc24ndCBhcHBlYXIgb24gSUUgKi9cblx0Ym9yZGVyOiAwcHggIWltcG9ydGFudDtcbn1cbi5kal9hMTF5IC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXI6IGJsYWNrIG91dHNldCBtZWRpdW0gIWltcG9ydGFudDtcblxuXHQvKiBJbiBjbGFybywgaG92ZXJpbmcgYSB0b29sYmFyIGJ1dHRvbiByZWR1Y2VzIHBhZGRpbmcgYW5kIGFkZHMgYSBib3JkZXIuXG5cdCAqIE5vdCBuZWVkZWQgaW4gYTExeSBtb2RlIHNpbmNlIFRvb2xiYXIgYnV0dG9ucyBhbHdheXMgaGF2ZSBhIGJvcmRlci5cblx0ICovXG5cdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbn1cbi5kal9hMTF5IC5kaWppdEFycm93QnV0dG9uIHtcblx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXRCdXR0b25Db250ZW50cyB7XG5cdG1hcmdpbjogMC4xNWVtOyAvKiBNYXJnaW4gbmVlZGVkIHRvIG1ha2UgZm9jdXMgb3V0bGluZSB2aXNpYmxlICovXG59XG5cbi5kal9hMTF5IC5kaWppdFRleHRCb3hSZWFkT25seSAuZGlqaXRJbnB1dEZpZWxkLFxuLmRqX2ExMXkgLmRpaml0VGV4dEJveFJlYWRPbmx5IC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItc3R5bGU6IG91dHNldCFpbXBvcnRhbnQ7XG5cdGJvcmRlci13aWR0aDogbWVkaXVtIWltcG9ydGFudDtcblx0Ym9yZGVyLWNvbG9yOiAjOTk5ICFpbXBvcnRhbnQ7XG5cdGNvbG9yOiM5OTkgIWltcG9ydGFudDtcbn1cblxuLyogYnV0dG9uIGlubmVyIGNvbnRlbnRzIC0gbGFiZWxzLCBpY29ucyBldGMuICovXG4uZGlqaXRCdXR0b25Ob2RlICoge1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmRpaml0U2VsZWN0IC5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGlqaXRCdXR0b25Ob2RlIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHQvKiB0aGUgYXJyb3cgaWNvbiBub2RlICovXG5cdGJhY2tncm91bmQ6IG5vLXJlcGVhdCBjZW50ZXI7XG5cdHdpZHRoOiAxMnB4O1xuXHRoZWlnaHQ6IDEycHg7XG5cdGRpcmVjdGlvbjogbHRyOyAvKiBuZWVkZWQgYnkgSUUvUlRMICovXG59XG5cbi8qKioqXG5cdDMtZWxlbWVudCBib3JkZXJzOiAgKCBkaWppdExlZnQgKyBkaWppdFN0cmV0Y2ggKyBkaWppdFJpZ2h0IClcblx0VGhlc2Ugd2VyZSBhZGRlZCBmb3Igcm91bmRlZCBjb3JuZXJzIG9uIGRpaml0LmZvcm0uKkJ1dHRvbiBidXQgbmV2ZXIgYWN0dWFsbHkgdXNlZC5cbiAqKioqL1xuXG4uZGlqaXRMZWZ0IHtcblx0LyogTGVmdCBwYXJ0IG9mIGEgMy1lbGVtZW50IGJvcmRlciAqL1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgdG9wO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG59XG5cbi5kaWppdFN0cmV0Y2gge1xuXHQvKiBNaWRkbGUgKHN0cmV0Y2h5KSBwYXJ0IG9mIGEgMy1lbGVtZW50IGJvcmRlciAqL1xuXHR3aGl0ZS1zcGFjZTpub3dyYXA7XHRcdFx0LyogTU9XOiBtb3ZlIHNvbWV3aGVyZSBlbHNlICovXG5cdGJhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O1xufVxuXG4uZGlqaXRSaWdodCB7XG5cdC8qIFJpZ2h0IHBhcnQgb2YgYSAzLWVsZW1lbnQgYm9yZGVyICovXG5cdCNkaXNwbGF5OmlubGluZTtcdFx0XHRcdC8qIElFNyBzaXplcyB0byBvdXRlciBzaXplIHcvbyB0aGlzICovXG5cdGJhY2tncm91bmQtcG9zaXRpb246cmlnaHQgdG9wO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG59XG5cbi8qIEJ1dHRvbnMgKi9cbi5kal9nZWNrbyAuZGpfYTExeSAuZGlqaXRCdXR0b25EaXNhYmxlZCAuZGlqaXRCdXR0b25Ob2RlIHtcblx0b3BhY2l0eTogMC41O1xufVxuXG4uZGlqaXRUb2dnbGVCdXR0b24sXG4uZGlqaXRCdXR0b24sXG4uZGlqaXREcm9wRG93bkJ1dHRvbixcbi5kaWppdENvbWJvQnV0dG9uIHtcblx0Lyogb3V0c2lkZSBvZiBidXR0b24gKi9cblx0bWFyZ2luOiAwLjJlbTtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRkaXNwbGF5OiBibG9jaztcdFx0LyogdG8gbWFrZSBmb2N1cyBib3JkZXIgcmVjdGFuZ3VsYXIgKi9cbn1cbnRkLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRkaXNwbGF5OiB0YWJsZS1jZWxsO1x0LyogYnV0IGRvbid0IGFmZmVjdCBTZWxlY3QsIENvbWJvQnV0dG9uICovXG59XG5cbi5kaWppdEJ1dHRvbk5vZGUgaW1nIHtcblx0LyogbWFrZSB0ZXh0IGFuZCBpbWFnZXMgbGluZSB1cCBjbGVhbmx5ICovXG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0LyptYXJnaW4tYm90dG9tOi4yZW07Ki9cbn1cblxuLmRpaml0VG9vbGJhciAuZGlqaXRDb21ib0J1dHRvbiB7XG5cdC8qIGJlY2F1c2UgVG9vbGJhciBvbmx5IGRyYXdzIGEgYm9yZGVyIGFyb3VuZCB0aGUgaG92ZXJlZCB0aGluZyAqL1xuXHRib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xufVxuXG4uZGlqaXRUb29sYmFyIC5kaWppdFRvZ2dsZUJ1dHRvbixcbi5kaWppdFRvb2xiYXIgLmRpaml0QnV0dG9uLFxuLmRpaml0VG9vbGJhciAuZGlqaXREcm9wRG93bkJ1dHRvbixcbi5kaWppdFRvb2xiYXIgLmRpaml0Q29tYm9CdXR0b24ge1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdFRvb2xiYXIgLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHQvKiBqdXN0IGJlY2F1c2UgaXQgdXNlZCB0byBiZSB0aGlzIHdheSAqL1xuXHRwYWRkaW5nOiAxcHggMnB4O1xufVxuXG5cbi5kal93ZWJraXQgLmRpaml0VG9vbGJhciAuZGlqaXREcm9wRG93bkJ1dHRvbiB7XG5cdHBhZGRpbmctbGVmdDogMC4zZW07XG59XG4uZGpfZ2Vja28gLmRpaml0VG9vbGJhciAuZGlqaXRCdXR0b25Ob2RlOjotbW96LWZvY3VzLWlubmVyIHtcblx0cGFkZGluZzowO1xufVxuXG4uZGlqaXRTZWxlY3Qge1xuXHRib3JkZXI6MXB4IHNvbGlkIGdyYXk7XG59XG4uZGlqaXRCdXR0b25Ob2RlIHtcblx0LyogTm9kZSB0aGF0IGlzIGFjdGluZyBhcyBhIGJ1dHRvbiAtLSBtYXkgb3IgbWF5IG5vdCBiZSBhIEJVVFRPTiBlbGVtZW50ICovXG5cdGJvcmRlcjoxcHggc29saWQgZ3JheTtcblx0bWFyZ2luOjA7XG5cdGxpbmUtaGVpZ2h0Om5vcm1hbDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0I3ZlcnRpY2FsLWFsaWduOiBhdXRvO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5kal93ZWJraXQgLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIHtcblx0LyogYXBwYXJlbnQgV2ViS2l0IGJ1ZyB3aGVyZSBtZXNzaW5nIHdpdGggdGhlIGZvbnQgY291cGxlZCB3aXRoIGxpbmUtaGVpZ2h0Om5vcm1hbCBYIDIgKGRpaml0UmVzZXQgJiBkaWppdEJ1dHRvbk5vZGUpXG5cdGNhbiBiZSBkaWZmZXJlbnQgdGhhbiBqdXN0IGEgc2luZ2xlIGxpbmUtaGVpZ2h0Om5vcm1hbCwgdmlzaWJsZSBpbiBJbmxpbmVFZGl0Qm94L1NwaW5uZXIgKi9cblx0bGluZS1oZWlnaHQ6aW5oZXJpdDtcbn1cbi5kaWppdFRleHRCb3ggLmRpaml0QnV0dG9uTm9kZSB7XG5cdGJvcmRlci13aWR0aDogMDtcbn1cblxuLmRpaml0U2VsZWN0LFxuLmRpaml0U2VsZWN0ICosXG4uZGlqaXRCdXR0b25Ob2RlLFxuLmRpaml0QnV0dG9uTm9kZSAqIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGpfaWUgLmRpaml0QnV0dG9uTm9kZSB7XG5cdC8qIGVuc3VyZSBoYXNMYXlvdXQgKi9cblx0em9vbTogMTtcbn1cblxuLmRqX2llIC5kaWppdEJ1dHRvbk5vZGUgYnV0dG9uIHtcblx0Lypcblx0XHRkaXNndXN0aW5nIGhhY2sgdG8gZ2V0IHJpZCBvZiBzcHVyaW91cyBwYWRkaW5nIGFyb3VuZCBidXR0b24gZWxlbWVudHNcblx0XHRvbiBJRS4gTVNJRSBpcyB0cnVseSB0aGUgd2ViJ3MgYm9hdCBhbmNob3IuXG5cdCovXG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG5kaXYuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdGZsb2F0OiByaWdodDtcbn1cblxuLyoqKioqKlxuXHRUZXh0Qm94IHJlbGF0ZWQuXG5cdEV2ZXJ5dGhpbmcgdGhhdCBoYXMgYW4gPGlucHV0PlxuKioqKioqKi9cblxuLmRpaml0VGV4dEJveCB7XG5cdGJvcmRlcjogc29saWQgYmxhY2sgMXB4O1xuXHQjb3ZlcmZsb3c6IGhpZGRlbjsgLyogIzYwMjcsICM2MDY3ICovXG5cdHdpZHRoOiAxNWVtO1x0LyogbmVlZCB0byBzZXQgZGVmYXVsdCBzaXplIG9uIG91dGVyIG5vZGUgc2luY2UgaW5uZXIgbm9kZXMgc2F5IDxpbnB1dCBzdHlsZT1cIndpZHRoOjEwMCVcIj4gYW5kIDx0ZCB3aWR0aD0xMDAlPi4gIHVzZXIgY2FuIG92ZXJyaWRlICovXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kaWppdFRleHRCb3hSZWFkT25seSxcbi5kaWppdFRleHRCb3hEaXNhYmxlZCB7XG5cdGNvbG9yOiBncmF5O1xufVxuLmRqX3NhZmFyaSAuZGlqaXRUZXh0Qm94RGlzYWJsZWQgaW5wdXQge1xuXHRjb2xvcjogI0IwQjBCMDsgLyogYmVjYXVzZSBTYWZhcmkgbGlnaHRlbnMgZGlzYWJsZWQgaW5wdXQvdGV4dGFyZWEgbm8gbWF0dGVyIHdoYXQgY29sb3IgeW91IHNwZWNpZnkgKi9cbn1cbi5kal9zYWZhcmkgdGV4dGFyZWEuZGlqaXRUZXh0QXJlYURpc2FibGVkIHtcblx0Y29sb3I6ICMzMzM7IC8qIGJlY2F1c2UgU2FmYXJpIGxpZ2h0ZW5zIGRpc2FibGVkIGlucHV0L3RleHRhcmVhIG5vIG1hdHRlciB3aGF0IGNvbG9yIHlvdSBzcGVjaWZ5ICovXG59XG4uZGpfZ2Vja28gLmRpaml0VGV4dEJveFJlYWRPbmx5IGlucHV0LmRpaml0SW5wdXRGaWVsZCwgLyogZGlzYWJsZSBhcnJvdyBhbmQgdmFsaWRhdGlvbiBwcmVzZW50YXRpb24gaW5wdXRzIGJ1dCBhbGxvdyByZWFsIGlucHV0IGZvciB0ZXh0IHNlbGVjdGlvbiAqL1xuLmRqX2dlY2tvIC5kaWppdFRleHRCb3hEaXNhYmxlZCBpbnB1dCB7XG5cdC1tb3otdXNlci1pbnB1dDogbm9uZTsgLyogcHJldmVudCBmb2N1cyBvZiBkaXNhYmxlZCB0ZXh0Ym94IGJ1dHRvbnMgKi9cbn1cblxuLmRpaml0UGxhY2VIb2xkZXIge1xuXHQvKiBoaW50IHRleHQgdGhhdCBhcHBlYXJzIGluIGEgdGV4dGJveCB1bnRpbCB1c2VyIHN0YXJ0cyB0eXBpbmcgKi9cblx0Y29sb3I6ICNBQUFBQUE7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdCNmaWx0ZXI6IFwiXCI7IC8qIG1ha2UgdGhpcyBzaG93IHVwIGluIElFNiBhZnRlciB0aGUgcmVuZGVyaW5nIG9mIHRoZSB3aWRnZXQgKi9cblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0cG9pbnRlci1ldmVudHM6IG5vbmU7ICAgLyogc28gY3V0L3Bhc3RlIGNvbnRleHQgbWVudSBzaG93cyB1cCB3aGVuIHJpZ2h0IGNsaWNraW5nICovXG59XG5cbi5kaWppdFRpbWVUZXh0Qm94IHtcblx0d2lkdGg6IDhlbTtcbn1cblxuLyogcnVsZXMgZm9yIHdlYmtpdCB0byBkZWFsIHdpdGggZnV6enkgYmx1ZSBmb2N1cyBib3JkZXIgKi9cbi5kaWppdFRleHRCb3ggaW5wdXQ6Zm9jdXMge1xuXHRvdXRsaW5lOiBub25lO1x0LyogYmx1ZSBmdXp6eSBsaW5lIGxvb2tzIHdyb25nIG9uIGNvbWJvYm94IG9yIHNvbWV0aGluZyB3L3ZhbGlkYXRpb24gaWNvbiBzaG93aW5nICovXG59XG4uZGlqaXRUZXh0Qm94Rm9jdXNlZCB7XG5cdG91dGxpbmU6IDVweCAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG59XG5cbi5kaWppdFNlbGVjdCBpbnB1dCxcbi5kaWppdFRleHRCb3ggaW5wdXQge1xuXHRmbG9hdDogbGVmdDsgLyogbmVlZGVkIGJ5IElFIHRvIHJlbW92ZSBzZWNyZXQgbWFyZ2luICovXG59XG4uZGpfaWU2IGlucHV0LmRpaml0VGV4dEJveCxcbi5kal9pZTYgLmRpaml0VGV4dEJveCBpbnB1dCB7XG5cdGZsb2F0OiBub25lO1xufVxuLmRpaml0SW5wdXRJbm5lciB7XG5cdC8qIGZvciB3aGVuIGFuIDxpbnB1dD4gaXMgZW1iZWRkZWQgaW5zaWRlIGFuIGlubGluZS1ibG9jayA8ZGl2PiB3aXRoIGEgc2l6ZSBhbmQgYm9yZGVyICovXG5cdGJvcmRlcjowICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0d2lkdGg6MTAwJSAhaW1wb3J0YW50O1xuXHQvKiBJRSBkaXNsaWtlcyBob3Jpem9udGFsIHR3ZWFraW5nIGNvbWJpbmVkIHdpdGggd2lkdGg6MTAwJSBzbyBwdW5pc2ggZXZlcnlvbmUgZm9yIGNvbnNpc3RlbmN5ICovXG5cdHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0VGV4dEJveCBpbnB1dCB7XG5cdG1hcmdpbjogMCAhaW1wb3J0YW50O1xufVxuLmRpaml0VmFsaWRhdGlvblRleHRCb3hFcnJvciBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kaWppdFNlbGVjdCBpbnB1dCxcbi5kaWppdFRleHRCb3ggaW5wdXQuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0LyogPGlucHV0PiB1c2VkIHRvIGRpc3BsYXkgYXJyb3cgaWNvbi92YWxpZGF0aW9uIGljb24sIG9yIGluIGFycm93IGNoYXJhY3RlciBpbiBoaWdoIGNvbnRyYXN0IG1vZGUuXG5cdCAqIFRoZSBjc3MgYmVsb3cgaXMgYSB0cmljayB0byBoaWRlIHRoZSBjaGFyYWN0ZXIgaW4gbm9uLWhpZ2gtY29udHJhc3QgbW9kZVxuXHQgKi9cblx0dGV4dC1pbmRlbnQ6IC0yZW0gIWltcG9ydGFudDtcblx0ZGlyZWN0aW9uOiBsdHIgIWltcG9ydGFudDtcblx0dGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcblx0I3RleHQtaW5kZW50OiAwICFpbXBvcnRhbnQ7XG5cdCNsZXR0ZXItc3BhY2luZzogLTVlbSAhaW1wb3J0YW50O1xuXHQjdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDtcbn1cbi5kal9pZSAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWUgLmRpaml0VGV4dEJveCBpbnB1dCxcbi5kal9pZSBpbnB1dC5kaWppdFRleHRCb3gge1xuXHRvdmVyZmxvdy15OiB2aXNpYmxlOyAvKiBpbnB1dHMgbmVlZCBoZWxwIGV4cGFuZGluZyB3aGVuIHBhZGRpbmcgaXMgYWRkZWQgb3IgbGluZS1oZWlnaHQgaXMgYWRqdXN0ZWQgKi9cblx0bGluZS1oZWlnaHQ6IG5vcm1hbDsgLyogc3RyaWN0IG1vZGUgKi9cbn1cbi5kaWppdFNlbGVjdCAuZGlqaXRTZWxlY3RMYWJlbCBzcGFuIHtcblx0bGluZS1oZWlnaHQ6IDEwMCU7XG59XG4uZGpfaWUgLmRpaml0U2VsZWN0IC5kaWppdFNlbGVjdExhYmVsIHtcblx0bGluZS1oZWlnaHQ6IG5vcm1hbDtcbn1cbi5kal9pZTYgLmRpaml0U2VsZWN0IC5kaWppdFNlbGVjdExhYmVsLFxuLmRqX2llNyAuZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwsXG4uZGpfaWU4IC5kaWppdFNlbGVjdCAuZGlqaXRTZWxlY3RMYWJlbCxcbi5kal9pZXF1aXJrcyAuZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwsXG4uZGlqaXRTZWxlY3QgdGQsXG4uZGpfaWU2IC5kaWppdFNlbGVjdCBpbnB1dCxcbi5kal9pZXF1aXJrcyAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWU2IC5kaWppdFNlbGVjdCAuZGlqaXRWYWxpZGF0aW9uQ29udGFpbmVyLFxuLmRqX2llNiAuZGlqaXRUZXh0Qm94IGlucHV0LFxuLmRqX2llNiBpbnB1dC5kaWppdFRleHRCb3gsXG4uZGpfaWVxdWlya3MgLmRpaml0VGV4dEJveCBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kal9pZXF1aXJrcyAuZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0QXJyb3dCdXR0b25Jbm5lcixcbi5kal9pZXF1aXJrcyAuZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0U3Bpbm5lckJ1dHRvbklubmVyLFxuLmRqX2llcXVpcmtzIC5kaWppdFRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRqX2llcXVpcmtzIGlucHV0LmRpaml0VGV4dEJveCB7XG5cdGxpbmUtaGVpZ2h0OiAxMDAlOyAvKiBJRTcgcHJvYmxlbSB3aGVyZSB0aGUgaWNvbiBpcyB2ZXJ0aWNhbGx5IHdheSB0b28gbG93IHcvbyB0aGlzICovXG59XG4uZGpfYTExeSBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kal9hMTF5IGlucHV0LmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdC8qIChpbiBoaWdoIGNvbnRyYXN0IG1vZGUpIHJldmVydCBydWxlcyBmcm9tIGFib3ZlIHNvIGNoYXJhY3RlciBkaXNwbGF5cyAqL1xuXHR0ZXh0LWluZGVudDogMCAhaW1wb3J0YW50O1xuXHR3aWR0aDogMWVtICFpbXBvcnRhbnQ7XG5cdCN0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG5cdGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xufVxuLmRpaml0VmFsaWRhdGlvblRleHRCb3hFcnJvciAuZGlqaXRWYWxpZGF0aW9uQ29udGFpbmVyIHtcblx0ZGlzcGxheTogaW5saW5lO1xuXHRjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi8qIENvbWJvQm94ICYgU3Bpbm5lciAqL1xuXG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGlqaXRDb21ib0JveCAuZGlqaXRBcnJvd0J1dHRvbkNvbnRhaW5lciB7XG5cdC8qIGRpdmlkaW5nIGxpbmUgYmV0d2VlbiBpbnB1dCBhcmVhIGFuZCB1cC9kb3duIGJ1dHRvbihzKSBmb3IgQ29tYm9Cb3ggYW5kIFNwaW5uZXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwIDAgMCAxcHggIWltcG9ydGFudDsgLyogIWltcG9ydGFudCBuZWVkZWQgZHVlIHRvIHdheXdhcmQgXCIudGhlbWUgLmRpaml0QnV0dG9uTm9kZVwiIHJ1bGVzICovXG59XG4uZGpfYTExeSAuZGlqaXRTZWxlY3QgLmRpaml0QXJyb3dCdXR0b25Db250YWluZXIsXG4uZGlqaXRUb29sYmFyIC5kaWppdENvbWJvQm94IC5kaWppdEFycm93QnV0dG9uQ29udGFpbmVyIHtcblx0Lyogb3ZlcnJpZGVzIGFib3ZlIHJ1bGUgcGx1cyBtaXJyb3ItaW1hZ2UgcnVsZSBpbiBkaWppdF9ydGwuY3NzIHRvIGhhdmUgbm8gZGl2aWRlciB3aGVuIENvbWJvQm94IGluIFRvb2xiYXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdENvbWJvQm94TWVudSB7XG5cdC8qIERyb3AgZG93biBtZW51IGlzIGltcGxlbWVudGVkIGFzIDx1bD4gPGxpLz4gPGxpLz4gLi4uIGJ1dCB3ZSBkb24ndCB3YW50IGNpcmNsZXMgYmVmb3JlIGVhY2ggaXRlbSAqL1xuXHRsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QnV0dG9uTm9kZSB7XG5cdC8qIGRpdmlkaW5nIGxpbmUgYmV0d2VlbiBpbnB1dCBhcmVhIGFuZCB1cC9kb3duIGJ1dHRvbihzKSBmb3IgQ29tYm9Cb3ggYW5kIFNwaW5uZXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwO1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdFNwaW5uZXIgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRCdXR0b25Ob2RlIHtcblx0Y2xlYXI6IGJvdGg7IC8qIElFIHdvcmthcm91bmQgKi9cbn1cblxuLmRqX2llIC5kaWppdFRvb2xiYXIgLmRpaml0Q29tYm9Cb3gge1xuXHQvKiBtYWtlIGNvbWJvYm94IGJ1dHRvbnMgYWxpZ24gcHJvcGVybHkgd2l0aCBvdGhlciBidXR0b25zIGluIGEgdG9vbGJhciAqL1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4vKiBTcGlubmVyICovXG5cbi5kaWppdFRleHRCb3ggLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciB7XG5cdHdpZHRoOiAxZW07XG5cdHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uSW5uZXIge1xuXHR3aWR0aDoxZW07XG5cdHZpc2liaWxpdHk6aGlkZGVuICFpbXBvcnRhbnQ7IC8qIGp1c3QgYSBzaXppbmcgZWxlbWVudCAqL1xuXHRvdmVyZmxvdy14OmhpZGRlbjtcbn1cbi5kaWppdENvbWJvQm94IC5kaWppdEJ1dHRvbk5vZGUsXG4uZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItd2lkdGg6IDA7XG59XG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItd2lkdGg6IDBweCAhaW1wb3J0YW50O1xuXHRib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRUZXh0Qm94IC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIGlucHV0IHtcblx0d2lkdGg6IDFlbSAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0bWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsgLyogc2hvdWxkIGF1dG8tY2VudGVyICovXG59XG4uZGpfaWUgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRwYWRkaW5nLWxlZnQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwLjNlbSAhaW1wb3J0YW50O1xuXHRtYXJnaW4tcmlnaHQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdHdpZHRoOiAxLjRlbSAhaW1wb3J0YW50O1xufVxuLmRqX2llNyAuZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIgLmRpaml0SW5wdXRGaWVsZCB7XG5cdHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OyAvKiBtYW51YWxseSBjZW50ZXIgSU5QVVQ6IGNoYXJhY3RlciBpcyAuNWVtIGFuZCB0b3RhbCB3aWR0aCA9IDFlbSAqL1xuXHRwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG5cdHdpZHRoOiAxZW0gIWltcG9ydGFudDtcbn1cbi5kal9pZTYgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRtYXJnaW4tbGVmdDogMC4xZW0gIWltcG9ydGFudDtcblx0bWFyZ2luLXJpZ2h0OiAwLjFlbSAhaW1wb3J0YW50O1xuXHR3aWR0aDogMWVtICFpbXBvcnRhbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xuXHRtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcblx0d2lkdGg6IDJlbSAhaW1wb3J0YW50O1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEFycm93QnV0dG9uIHtcblx0Lyogbm90ZTogLmRpaml0SW5wdXRMYXlvdXRDb250YWluZXIgbWFrZXMgdGhpcyBydWxlIG92ZXJyaWRlIC5kaWppdEFycm93QnV0dG9uIHNldHRpbmdzXG5cdCAqIGZvciBkaWppdC5mb3JtLkJ1dHRvblxuXHQgKi9cblx0cGFkZGluZzogMDtcblx0cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG5cdHJpZ2h0OiAwO1xuXHRmbG9hdDogbm9uZTtcblx0aGVpZ2h0OiA1MCU7XG5cdHdpZHRoOiAxMDAlO1xuXHRib3R0b206IGF1dG87XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiBhdXRvO1xufVxuLmRqX2llcXVpcmtzIC5kaWppdFNwaW5uZXIgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdHdpZHRoOiBhdXRvO1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0RG93bkFycm93QnV0dG9uIHtcblx0dG9wOiA1MCU7XG5cdGJvcmRlci10b3Atd2lkdGg6IDFweCAhaW1wb3J0YW50O1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdFVwQXJyb3dCdXR0b24ge1xuXHQjYm90dG9tOiA1MCU7XHQvKiBvdGhlcndpc2UgKG9uIHNvbWUgbWFjaGluZXMpIHRvcCBhcnJvdyBpY29uIHRvbyBjbG9zZSB0byBzcGxpdHRlciBib3JkZXIgKElFNi83KSAqL1xuXHR0b3A6IDA7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHRtYXJnaW46IGF1dG87XG5cdG92ZXJmbG93LXg6IGhpZGRlbjtcblx0aGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0aGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIgLmRpaml0SW5wdXRGaWVsZCB7XG5cdC1tb3otdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHQtbW96LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciB0b3A7XG5cdC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHQtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciB0b3A7XG5cdC1vLXRyYW5zZm9ybTogc2NhbGUoMC41KTtcblx0LW8tdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIHRvcDtcblx0dHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHR0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDtcblx0cGFkZGluZy10b3A6IDA7XG5cdHBhZGRpbmctYm90dG9tOiAwO1xuXHRwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcblx0cGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xuXHR3aWR0aDogMTAwJTtcblx0dmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLmRqX2llIC5kaWppdFNwaW5uZXIgLmRpaml0QXJyb3dCdXR0b25Jbm5lciAuZGlqaXRJbnB1dEZpZWxkIHtcblx0em9vbTogNTAlOyAvKiBlbXVsYXRlIHRyYW5zZm9ybTogc2NhbGUoMC41KSAqL1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QXJyb3dCdXR0b24ge1xuXHR3aWR0aDogMTAwJTtcbn1cbi5kal9pZXF1aXJrcyAuZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QXJyb3dCdXR0b24ge1xuXHR3aWR0aDogMWVtOyAvKiBtYXRjaGVzIC5kal9hMTF5IC5kaWppdFRleHRCb3ggLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciBydWxlIC0gMTAwJSBpcyB0aGUgd2hvbGUgc2NyZWVuIHdpZHRoIGluIHF1aXJrcyAqL1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHR2ZXJ0aWNhbC1hbGlnbjp0b3A7XG5cdHZpc2liaWxpdHk6IHZpc2libGU7XG59XG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIHtcblx0d2lkdGg6IDFlbTtcbn1cblxuLyoqKipcblx0XHRkaWppdC5mb3JtLkNoZWNrQm94XG4gXHQgJlxuICBcdFx0ZGlqaXQuZm9ybS5SYWRpb0J1dHRvblxuICoqKiovXG5cbi5kaWppdENoZWNrQm94LFxuLmRpaml0UmFkaW8sXG4uZGlqaXRDaGVja0JveElucHV0IHtcblx0cGFkZGluZzogMDtcblx0Ym9yZGVyOiAwO1xuXHR3aWR0aDogMTZweDtcblx0aGVpZ2h0OiAxNnB4O1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciBjZW50ZXI7XG5cdGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRpaml0Q2hlY2tCb3ggaW5wdXQsXG4uZGlqaXRSYWRpbyBpbnB1dCB7XG5cdG1hcmdpbjogMDtcblx0cGFkZGluZzogMDtcblx0ZGlzcGxheTogYmxvY2s7XG59XG5cbi5kaWppdENoZWNrQm94SW5wdXQge1xuXHQvKiBwbGFjZSB0aGUgYWN0dWFsIGlucHV0IG9uIHRvcCwgYnV0IGludmlzaWJsZSAqL1xuXHRvcGFjaXR5OiAwO1xufVxuXG4uZGpfaWUgLmRpaml0Q2hlY2tCb3hJbnB1dCB7XG5cdGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTtcbn1cblxuLmRqX2ExMXkgLmRpaml0Q2hlY2tCb3gsXG4uZGpfYTExeSAuZGlqaXRSYWRpbyB7XG5cdC8qIGluIGExMXkgbW9kZSB3ZSBkaXNwbGF5IHRoZSBuYXRpdmUgY2hlY2tib3ggKG5vdCB0aGUgaWNvbiksIHNvIGRvbid0IHJlc3RyaWN0IHRoZSBzaXplICovXG5cdHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG5cdGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0Q2hlY2tCb3hJbnB1dCB7XG5cdG9wYWNpdHk6IDE7XG5cdGZpbHRlcjogbm9uZTtcblx0d2lkdGg6IGF1dG87XG5cdGhlaWdodDogYXV0bztcbn1cblxuLmRqX2ExMXkgLmRpaml0Rm9jdXNlZExhYmVsIHtcblx0LyogZm9yIGNoZWNrYm94ZXMgb3IgcmFkaW8gYnV0dG9ucyBpbiBoaWdoIGNvbnRyYXN0IG1vZGUsIHVzZSBib3JkZXIgcmF0aGVyIHRoYW4gb3V0bGluZSB0byBpbmRpY2F0ZSBmb2N1cyAob3V0bGluZSBkb2VzIG5vdCB3b3JrIGluIEZGKSovXG5cdGJvcmRlcjogMXB4IGRvdHRlZDtcblx0b3V0bGluZTogMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi8qKioqXG5cdFx0ZGlqaXQuUHJvZ3Jlc3NCYXJcbiAqKioqL1xuXG4uZGlqaXRQcm9ncmVzc0JhciB7XG4gICAgei1pbmRleDogMDsgLyogc28gei1pbmRleCBzZXR0aW5ncyBiZWxvdyBoYXZlIG5vIGVmZmVjdCBvdXRzaWRlIG9mIHRoZSBQcm9ncmVzc0JhciAqL1xufVxuLmRpaml0UHJvZ3Jlc3NCYXJFbXB0eSB7XG5cdC8qIG91dGVyIGNvbnRhaW5lciBhbmQgYmFja2dyb3VuZCBvZiB0aGUgYmFyIHRoYXQncyBub3QgZmluaXNoZWQgeWV0Ki9cblx0cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO1xuXHRib3JkZXI6MXB4IHNvbGlkIGJsYWNrOyBcdC8qIGExMXk6IGJvcmRlciBuZWNlc3NhcnkgZm9yIGhpZ2gtY29udHJhc3QgbW9kZSAqL1xuXHR6LWluZGV4OjA7XHRcdFx0LyogZXN0YWJsaXNoIGEgc3RhY2tpbmcgY29udGV4dCBmb3IgdGhpcyBwcm9ncmVzcyBiYXIgKi9cbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJGdWxsIHtcblx0Lyogb3V0ZXIgY29udGFpbmVyIGZvciBiYWNrZ3JvdW5kIG9mIGJhciB0aGF0IGlzIGZpbmlzaGVkICovXG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHRvdmVyZmxvdzpoaWRkZW47XG5cdHotaW5kZXg6LTE7XG5cdHRvcDowO1xuXHR3aWR0aDoxMDAlO1xufVxuLmRqX2llNiAuZGlqaXRQcm9ncmVzc0JhckZ1bGwge1xuXHRoZWlnaHQ6MS42ZW07XG59XG5cbi5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGlubmVyIGNvbnRhaW5lciBmb3IgZmluaXNoZWQgcG9ydGlvbiAqL1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHR0b3A6MDtcblx0bGVmdDowO1xuXHRib3R0b206MDtcblx0cmlnaHQ6MDtcblx0bWFyZ2luOjA7XG5cdHBhZGRpbmc6MDtcblx0d2lkdGg6IDEwMCU7ICAgIC8qIG5lZWRlZCBmb3IgSUUvcXVpcmtzICovXG5cdGhlaWdodDphdXRvO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiNhYWE7XG5cdGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7XG59XG5cbi5kal9hMTF5IC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGExMXk6ICBUaGUgYm9yZGVyIHByb3ZpZGVzIHZpc2liaWxpdHkgaW4gaGlnaC1jb250cmFzdCBtb2RlICovXG5cdGJvcmRlci13aWR0aDoycHg7XG5cdGJvcmRlci1zdHlsZTpzb2xpZDtcblx0YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4uZGpfaWU2IC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIHdpZHRoOmF1dG8gd29ya3MgaW4gSUU2IHdpdGggcG9zaXRpb246c3RhdGljIGJ1dCBub3QgcG9zaXRpb246YWJzb2x1dGUgKi9cblx0cG9zaXRpb246c3RhdGljO1xuXHQvKiBoZWlnaHQ6YXV0byBvciAxMDAlIGRvZXMgbm90IHdvcmsgaW4gSUU2ICovXG5cdGhlaWdodDoxLjZlbTtcbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJJbmRldGVybWluYXRlIC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGFuaW1hdGVkIGdpZiBmb3IgJ2luZGV0ZXJtaW5hdGUnIG1vZGUgKi9cbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJJbmRldGVybWluYXRlSGlnaENvbnRyYXN0SW1hZ2Uge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi5kal9hMTF5IC5kaWppdFByb2dyZXNzQmFySW5kZXRlcm1pbmF0ZSAuZGlqaXRQcm9ncmVzc0JhckluZGV0ZXJtaW5hdGVIaWdoQ29udHJhc3RJbWFnZSB7XG5cdGRpc3BsYXk6YmxvY2s7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHR0b3A6MDtcblx0Ym90dG9tOjA7XG5cdG1hcmdpbjowO1xuXHRwYWRkaW5nOjA7XG5cdHdpZHRoOjEwMCU7XG5cdGhlaWdodDphdXRvO1xufVxuXG4uZGlqaXRQcm9ncmVzc0JhckxhYmVsIHtcblx0ZGlzcGxheTpibG9jaztcblx0cG9zaXRpb246c3RhdGljO1xuXHR3aWR0aDoxMDAlO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4vKioqKlxuXHRcdGRpaml0LlRvb2x0aXBcbiAqKioqL1xuXG4uZGlqaXRUb29sdGlwIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiAyMDAwO1xuXHRkaXNwbGF5OiBibG9jaztcblx0LyogbWFrZSB2aXNpYmxlIGJ1dCBvZmYgc2NyZWVuICovXG5cdGxlZnQ6IDA7XG5cdHRvcDogLTEwMDAwcHg7XG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4uZGlqaXRUb29sdGlwQ29udGFpbmVyIHtcblx0Ym9yZGVyOiBzb2xpZCBibGFjayAycHg7XG5cdGJhY2tncm91bmQ6ICNiOGI1YjU7XG5cdGNvbG9yOiBibGFjaztcblx0Zm9udC1zaXplOiBzbWFsbDtcbn1cblxuLmRpaml0VG9vbHRpcEZvY3VzTm9kZSB7XG5cdHBhZGRpbmc6IDJweCAycHggMnB4IDJweDtcbn1cblxuLmRpaml0VG9vbHRpcENvbm5lY3RvciB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbi5kal9hMTF5IC5kaWppdFRvb2x0aXBDb25uZWN0b3Ige1xuXHRkaXNwbGF5OiBub25lO1x0Lyogd29uJ3Qgc2hvdyBiL2MgaXQncyBiYWNrZ3JvdW5kLWltYWdlOyBoaWRlIHRvIGF2b2lkIGJvcmRlciBnYXAgKi9cbn1cblxuLmRpaml0VG9vbHRpcERhdGEge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi8qIExheW91dCB3aWRnZXRzLiBUaGlzIGlzIGVzc2VudGlhbCBDU1MgdG8gbWFrZSBsYXlvdXQgd29yayAoaXQgaXNuJ3QgXCJzdHlsaW5nXCIgQ1NTKVxuICAgbWFrZSBzdXJlIHRoYXQgdGhlIHBvc2l0aW9uOmFic29sdXRlIGluIGRpaml0QWxpZ24qIG92ZXJyaWRlcyBvdGhlciBjbGFzc2VzICovXG5cbi5kaWppdExheW91dENvbnRhaW5lciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5kaWppdEFsaWduVG9wLFxuLmRpaml0QWxpZ25Cb3R0b20sXG4uZGlqaXRBbGlnbkxlZnQsXG4uZGlqaXRBbGlnblJpZ2h0IHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5ib2R5IC5kaWppdEFsaWduQ2xpZW50IHsgcG9zaXRpb246IGFic29sdXRlOyB9XG5cbi8qXG4gKiBCb3JkZXJDb250YWluZXJcbiAqXG4gKiAuZGlqaXRCb3JkZXJDb250YWluZXIgaXMgYSBzdHlsaXplZCBsYXlvdXQgd2hlcmUgcGFuZXMgaGF2ZSBib3JkZXIgYW5kIG1hcmdpbi5cbiAqIC5kaWppdEJvcmRlckNvbnRhaW5lck5vR3V0dGVyIGlzIGEgcmF3IGxheW91dC5cbiAqL1xuLmRpaml0Qm9yZGVyQ29udGFpbmVyLCAuZGlqaXRCb3JkZXJDb250YWluZXJOb0d1dHRlciB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuICAgIHotaW5kZXg6IDA7IC8qIHNvIHotaW5kZXggc2V0dGluZ3MgYmVsb3cgaGF2ZSBubyBlZmZlY3Qgb3V0c2lkZSBvZiB0aGUgQm9yZGVyQ29udGFpbmVyICovXG59XG5cbi5kaWppdEJvcmRlckNvbnRhaW5lclBhbmUsXG4uZGlqaXRCb3JkZXJDb250YWluZXJOb0d1dHRlclBhbmUge1xuXHRwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcdC8qICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgcG9zaXRpb246cmVsYXRpdmUgaW4gZGlqaXRUYWJDb250YWluZXIgZXRjLiAqL1xuXHR6LWluZGV4OiAyO1x0XHQvKiBhYm92ZSB0aGUgc3BsaXR0ZXJzIHNvIHRoYXQgb2ZmLWJ5LW9uZSBicm93c2VyIGVycm9ycyBkb24ndCBjb3ZlciB1cCBib3JkZXIgb2YgcGFuZSAqL1xufVxuXG4uZGlqaXRCb3JkZXJDb250YWluZXIgPiAuZGlqaXRUZXh0QXJlYSB7XG5cdC8qIE9uIFNhZmFyaSwgZm9yIFNpbXBsZVRleHRBcmVhIGluc2lkZSBhIEJvcmRlckNvbnRhaW5lcixcblx0XHRkb24ndCB3YW50IHRvIGRpc3BsYXkgdGhlIGdyaXAgdG8gcmVzaXplICovXG5cdHJlc2l6ZTogbm9uZTtcbn1cblxuLmRpaml0R3V0dGVyIHtcblx0LyogZ3V0dGVyIGlzIGp1c3QgYSBwbGFjZSBob2xkZXIgZm9yIGVtcHR5IHNwYWNlIGJldHdlZW4gcGFuZXMgaW4gQm9yZGVyQ29udGFpbmVyICovXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0Zm9udC1zaXplOiAxcHg7XHRcdC8qIG5lZWRlZCBieSBJRTYgZXZlbiB0aG91Z2ggZGl2IGlzIGVtcHR5LCBvdGhlcndpc2UgZ29lcyB0byAxNXB4ICovXG59XG5cbi8qIFNwbGl0Q29udGFpbmVyXG5cblx0J1YnID09IGNvbnRhaW5lciB0aGF0IHNwbGl0cyB2ZXJ0aWNhbGx5ICh1cC9kb3duKVxuXHQnSCcgPSBob3Jpem9udGFsIChsZWZ0L3JpZ2h0KVxuKi9cblxuLmRpaml0U3BsaXR0ZXIge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHotaW5kZXg6IDEwO1x0XHQvKiBhYm92ZSB0aGUgcGFuZXMgc28gdGhhdCBzcGxpdHRlciBmb2N1cyBpcyB2aXNpYmxlIG9uIEZGLCBzZWUgIzc1ODMqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRib3JkZXItY29sb3I6IGdyYXk7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogMDtcbn1cbi5kal9pZSAuZGlqaXRTcGxpdHRlciB7XG5cdHotaW5kZXg6IDE7XHQvKiBiZWhpbmQgdGhlIHBhbmVzIHNvIHRoYXQgcGFuZSBib3JkZXJzIGFyZW4ndCBvYnNjdXJlZCBzZWUgdGVzdF9HdWkuaHRtbC9bMTQzOTJdICovXG59XG5cbi5kaWppdFNwbGl0dGVyQWN0aXZlIHtcblx0ei1pbmRleDogMTEgIWltcG9ydGFudDtcbn1cblxuLmRpaml0U3BsaXR0ZXJDb3ZlciB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHR6LWluZGV4Oi0xO1xuXHR0b3A6MDtcblx0bGVmdDowO1xuXHR3aWR0aDoxMDAlO1xuXHRoZWlnaHQ6MTAwJTtcbn1cblxuLmRpaml0U3BsaXR0ZXJDb3ZlckFjdGl2ZSB7XG5cdHotaW5kZXg6MyAhaW1wb3J0YW50O1xufVxuXG4vKiAjNjk0NTogc3RvcCBtb3VzZSBldmVudHMgKi9cbi5kal9pZSAuZGlqaXRTcGxpdHRlckNvdmVyIHtcblx0YmFja2dyb3VuZDogd2hpdGU7XG5cdG9wYWNpdHk6IDA7XG59XG4uZGpfaWU2IC5kaWppdFNwbGl0dGVyQ292ZXIsXG4uZGpfaWU3IC5kaWppdFNwbGl0dGVyQ292ZXIsXG4uZGpfaWU4IC5kaWppdFNwbGl0dGVyQ292ZXIge1xuXHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7XG59XG5cbi5kaWppdFNwbGl0dGVySCB7XG5cdGhlaWdodDogN3B4O1xuXHRib3JkZXItdG9wOjFweDtcblx0Ym9yZGVyLWJvdHRvbToxcHg7XG5cdGN1cnNvcjogcm93LXJlc2l6ZTtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5kaWppdFNwbGl0dGVyViB7XG5cdHdpZHRoOiA3cHg7XG5cdGJvcmRlci1sZWZ0OjFweDtcblx0Ym9yZGVyLXJpZ2h0OjFweDtcblx0Y3Vyc29yOiBjb2wtcmVzaXplO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0U3BsaXRDb250YWluZXIge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uZGlqaXRTcGxpdFBhbmUge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJILFxuLmRpaml0U3BsaXRDb250YWluZXJTaXplclYge1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0Zm9udC1zaXplOiAxcHg7XG5cdGJhY2tncm91bmQtY29sb3I6IFRocmVlREZhY2U7XG5cdGJvcmRlcjogMXB4IHNvbGlkO1xuXHRib3JkZXItY29sb3I6IFRocmVlREhpZ2hsaWdodCBUaHJlZURTaGFkb3cgVGhyZWVEU2hhZG93IFRocmVlREhpZ2hsaWdodDtcblx0bWFyZ2luOiAwO1xufVxuXG4uZGlqaXRTcGxpdENvbnRhaW5lclNpemVySCAudGh1bWIsIC5kaWppdFNwbGl0dGVyViAuZGlqaXRTcGxpdHRlclRodW1iIHtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0dG9wOjQ5JTtcbn1cblxuLmRpaml0U3BsaXRDb250YWluZXJTaXplclYgLnRodW1iLCAuZGlqaXRTcGxpdHRlckggLmRpaml0U3BsaXR0ZXJUaHVtYiB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHRsZWZ0OjQ5JTtcbn1cblxuLmRpaml0U3BsaXR0ZXJTaGFkb3csXG4uZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplckgsXG4uZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplclYge1xuXHRmb250LXNpemU6IDFweDtcblx0YmFja2dyb3VuZC1jb2xvcjogVGhyZWVEU2hhZG93O1xuXHQtbW96LW9wYWNpdHk6IDAuNTtcblx0b3BhY2l0eTogMC41O1xuXHRmaWx0ZXI6IEFscGhhKE9wYWNpdHk9NTApO1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJILCAuZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplckgge1xuXHRjdXJzb3I6IGNvbC1yZXNpemU7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJWLCAuZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplclYge1xuXHRjdXJzb3I6IHJvdy1yZXNpemU7XG59XG5cbi5kal9hMTF5IC5kaWppdFNwbGl0dGVySCB7XG5cdGJvcmRlci10b3A6MXB4IHNvbGlkICNkM2QzZDMgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2QzZDNkMyAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0U3BsaXR0ZXJWIHtcblx0Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkM2QzZDMgIWltcG9ydGFudDtcblx0Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZDNkM2QzICFpbXBvcnRhbnQ7XG59XG5cbi8qIENvbnRlbnRQYW5lICovXG5cbi5kaWppdENvbnRlbnRQYW5lIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG92ZXJmbG93OiBhdXRvO1x0LyogaWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIChvciBvdmVyZmxvdzpoaWRkZW4pLCB0aGVuIFdpZGdldC5yZXNpemVUbygpIGRvZXNuJ3QgbWFrZSBzZW5zZSBmb3IgQ29udGVudFBhbmUgKi9cblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG4uZGlqaXRDb250ZW50UGFuZVNpbmdsZUNoaWxkIHtcblx0Lypcblx0ICogaWYgdGhlIENvbnRlbnRQYW5lIGhvbGRzIGEgc2luZ2xlIGxheW91dCB3aWRnZXQgY2hpbGQgd2hpY2ggaXMgYmVpbmcgc2l6ZWQgdG8gbWF0Y2ggdGhlIGNvbnRlbnQgcGFuZSxcblx0ICogdGhlbiB0aGUgQ29udGVudFBhbmUgc2hvdWxkIG5ldmVyIGdldCBhIHNjcm9sbGJhciAoYnV0IGl0IGRvZXMgZHVlIHRvIGJyb3dzZXIgYnVncywgc2VlICM5NDQ5XG5cdCAqL1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZGlqaXRDb250ZW50UGFuZUxvYWRpbmcgLmRpaml0SWNvbkxvYWRpbmcsXG4uZGlqaXRDb250ZW50UGFuZUVycm9yIC5kaWppdEljb25FcnJvciB7XG5cdG1hcmdpbi1yaWdodDogOXB4O1xufVxuXG4vKiBUaXRsZVBhbmUgYW5kIEZpZWxkc2V0ICovXG5cbi5kaWppdFRpdGxlUGFuZSB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuLmRpaml0RmllbGRzZXQge1xuXHRib3JkZXI6IDFweCBzb2xpZCBncmF5O1xufVxuLmRpaml0VGl0bGVQYW5lVGl0bGUsIC5kaWppdEZpZWxkc2V0VGl0bGUge1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uZGlqaXRUaXRsZVBhbmVUaXRsZUZpeGVkT3BlbiwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZENsb3NlZCxcbi5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZE9wZW4sIC5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZENsb3NlZCB7XG5cdC8qIFRpdGxlUGFuZSBvciBGaWVsZHNldCB0aGF0IGNhbm5vdCBiZSB0b2dnbGVkICovXG5cdGN1cnNvcjogZGVmYXVsdDtcbn1cbi5kaWppdFRpdGxlUGFuZVRpdGxlICoge1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZUlubmVyLCAuZGlqaXRGaWVsZHNldCAuZGlqaXRBcnJvd05vZGVJbm5lciB7XG5cdC8qIG5vcm1hbGx5LCBoaWRlIGFycm93IHRleHQgaW4gZmF2b3Igb2YgaWNvbiAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRqX2ExMXkgLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZUlubmVyLCAuZGpfYTExeSAuZGlqaXRGaWVsZHNldCAuZGlqaXRBcnJvd05vZGVJbm5lciB7XG5cdC8qIC4uLiBleGNlcHQgaW4gYTExeSBtb2RlLCB0aGVuIHNob3cgdGV4dCBhcnJvdyAqL1xuXHRkaXNwbGF5OiBpbmxpbmU7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XHRcdC8qIGJlY2F1c2UgLSBhbmQgKyBhcmUgZGlmZmVyZW50IHdpZHRocyAqL1xufVxuLmRqX2ExMXkgLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZSwgLmRqX2ExMXkgLmRpaml0RmllbGRzZXQgLmRpaml0QXJyb3dOb2RlIHtcblx0LyogLi4uIGFuZCBoaWRlIGljb24gKFRPRE86IGp1c3QgcG9pbnQgZGlqaXRJY29uIGNsYXNzIG9uIHRoZSBpY29uLCBhbmQgaXQgaGlkZXMgYXV0b21hdGljYWxseSkgKi9cblx0ZGlzcGxheTogbm9uZTtcbn1cbi5kaWppdFRpdGxlUGFuZVRpdGxlRml4ZWRPcGVuIC5kaWppdEFycm93Tm9kZSwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZE9wZW4gLmRpaml0QXJyb3dOb2RlSW5uZXIsXG4uZGlqaXRUaXRsZVBhbmVUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZSwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZENsb3NlZCAuZGlqaXRBcnJvd05vZGVJbm5lcixcbi5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZE9wZW4gLmRpaml0QXJyb3dOb2RlLCAuZGlqaXRGaWVsZHNldFRpdGxlRml4ZWRPcGVuIC5kaWppdEFycm93Tm9kZUlubmVyLFxuLmRpaml0RmllbGRzZXRUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZSwgLmRpaml0RmllbGRzZXRUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZUlubmVyIHtcblx0LyogZG9uJ3Qgc2hvdyB0aGUgb3BlbiBjbG9zZSBpY29uIG9yIHRleHQgYXJyb3c7IGl0IG1ha2VzIHRoZSB1c2VyIHRoaW5rIHRoZSBwYW5lIGlzIGNsb3NhYmxlICovXG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcdC8qICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgYWJvdmUgYTExeSBydWxlcyB0byBzaG93IHRleHQgYXJyb3cgKi9cbn1cblxuLmRqX2llNiAuZGlqaXRUaXRsZVBhbmVDb250ZW50T3V0ZXIsXG4uZGpfaWU2IC5kaWppdFRpdGxlUGFuZSAuZGlqaXRUaXRsZVBhbmVUaXRsZSB7XG5cdC8qIGZvcmNlIGhhc0xheW91dCB0byBlbnN1cmUgYm9yZGVycyBldGMsIHNob3cgdXAgKi9cblx0em9vbTogMTtcbn1cblxuLyogQ29sb3IgUGFsZXR0ZVxuICogU2l6ZXMgZGVzaWduZWQgc28gdGhhdCB0YWJsZSBjZWxsIHBvc2l0aW9ucyBtYXRjaCBpY29ucyBpbiB1bmRlcmx5aW5nIGltYWdlLFxuICogd2hpY2ggYXBwZWFyIGF0IDIweDIwIGludGVydmFscy5cbiAqL1xuXG4uZGlqaXRDb2xvclBhbGV0dGUge1xuXHRib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuXHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUge1xuXHQvKiBUYWJsZSB0aGF0IGhvbGRzIHRoZSBwYWxldHRlIGNlbGxzLCBhbmQgb3ZlcmxheXMgaW1hZ2UgZmlsZSB3aXRoIGNvbG9yIHN3YXRjaGVzLlxuXHQgKiBwYWRkaW5nL21hcmdpbiB0byBhbGlnbiB0YWJsZSB3aXRoIGltYWdlLlxuXHQgKi9cblx0cGFkZGluZzogMnB4IDNweCAzcHggM3B4O1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdG91dGxpbmU6IDA7XG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG59XG4uZGpfaWU2IC5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUsXG4uZGpfaWU3IC5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUsXG4uZGpfaWVxdWlya3MgLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVUYWJsZSB7XG5cdC8qIHVzaW5nIHBhZGRpbmcgYWJvdmUgc28gdGhhdCBmb2N1cyBib3JkZXIgaXNuJ3QgY3V0b2ZmIG9uIG1vei93ZWJraXQsXG5cdCAqIGJ1dCB1c2luZyBtYXJnaW4gb24gSUUgYmVjYXVzZSBwYWRkaW5nIGRvZXNuJ3Qgc2VlbSB0byB3b3JrXG5cdCAqL1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDJweCAzcHggM3B4IDNweDtcbn1cblxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVDZWxsIHtcblx0LyogPHRkPiBpbiB0aGUgPHRhYmxlPiAqL1xuXHRmb250LXNpemU6IDFweDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRiYWNrZ3JvdW5kOiBub25lO1xufVxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVJbWcge1xuXHQvKiBDYWxsZWQgZGlqaXRQYWxldHRlSW1nIGZvciBiYWNrLWNvbXBhdCwgdGhpcyBhY3R1YWxseSB3cmFwcyB0aGUgY29sb3Igc3dhdGNoIHdpdGggYSBib3JkZXIgYW5kIHBhZGRpbmcgKi9cblx0cGFkZGluZzogMXB4O1x0XHQvKiB3aGl0ZSBhcmVhIGJldHdlZW4gZ3JheSBib3JkZXIgYW5kIGNvbG9yIHN3YXRjaCAqL1xuXHRib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuXHRtYXJnaW46IDJweCAxcHg7XG5cdGN1cnNvcjogZGVmYXVsdDtcblx0Zm9udC1zaXplOiAxcHg7XHRcdC8qIHByZXZlbnQgPHNwYW4+IGZyb20gZ2V0dGluZyBiaWdnZXIganVzdCB0byBob2xkIGEgY2hhcmFjdGVyICovXG59XG4uZGpfZ2Vja28gLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVJbWcge1xuXHRwYWRkaW5nLWJvdHRvbTogMDtcdC8qIHdvcmthcm91bmQgcmVuZGVyaW5nIGdsaXRjaCBvbiBGRiwgaXQgYWRkcyBhbiBleHRyYSBwaXhlbCBhdCB0aGUgYm90dG9tICovXG59XG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0Q29sb3JQYWxldHRlU3dhdGNoIHtcblx0LyogdGhlIGFjdHVhbCBwYXJ0IHdoZXJlIHRoZSBjb2xvciBpcyAqL1xuXHR3aWR0aDogMTRweDtcblx0aGVpZ2h0OiAxMnB4O1xufVxuLmRpaml0UGFsZXR0ZVRhYmxlIHRkIHtcblx0XHRwYWRkaW5nOiAwO1xufVxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVDZWxsOmhvdmVyIC5kaWppdFBhbGV0dGVJbWcge1xuXHQvKiBob3ZlcmVkIGNvbG9yIHN3YXRjaCAqL1xuXHRib3JkZXI6IDFweCBzb2xpZCAjMDAwO1xufVxuXG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZUNlbGw6YWN0aXZlIC5kaWppdFBhbGV0dGVJbWcsXG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZVRhYmxlIC5kaWppdFBhbGV0dGVDZWxsU2VsZWN0ZWQgLmRpaml0UGFsZXR0ZUltZyB7XG5cdGJvcmRlcjogMnB4IHNvbGlkICMwMDA7XG5cdG1hcmdpbjogMXB4IDA7XHQvKiByZWR1Y2UgbWFyZ2luIHRvIGNvbXBlbnNhdGUgZm9yIGluY3JlYXNlZCBib3JkZXIgKi9cbn1cblxuXG4uZGpfYTExeSAuZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZVRhYmxlLFxuLmRqX2ExMXkgLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVUYWJsZSAqIHtcblx0LyogdGFibGUgY2VsbHMgYXJlIHRvIGNhdGNoIGV2ZW50cywgYnV0IHRoZSBzd2F0Y2hlcyBhcmUgaW4gdGhlIFBhbGV0dGVJbWcgYmVoaW5kIHRoZSB0YWJsZSAqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4vKiBBY2NvcmRpb25Db250YWluZXIgKi9cblxuLmRpaml0QWNjb3JkaW9uQ29udGFpbmVyIHtcblx0Ym9yZGVyOjFweCBzb2xpZCAjYjdiN2I3O1xuXHRib3JkZXItdG9wOjAgIWltcG9ydGFudDtcbn1cbi5kaWppdEFjY29yZGlvblRpdGxlIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0QWNjb3JkaW9uVGl0bGVTZWxlY3RlZCB7XG5cdGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLyogaW1hZ2VzIG9mZiwgaGlnaC1jb250cmFzdCBtb2RlIHN0eWxlcyAqL1xuLmRpaml0QWNjb3JkaW9uVGl0bGUgLmFycm93VGV4dFVwLFxuLmRpaml0QWNjb3JkaW9uVGl0bGUgLmFycm93VGV4dERvd24ge1xuXHRkaXNwbGF5OiBub25lO1xuXHRmb250LXNpemU6IDAuNjVlbTtcblx0Zm9udC13ZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZSAuYXJyb3dUZXh0VXAsXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZVNlbGVjdGVkIC5hcnJvd1RleHREb3duIHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZVNlbGVjdGVkIC5hcnJvd1RleHRVcCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5kaWppdEFjY29yZGlvbkNoaWxkV3JhcHBlciB7XG5cdC8qIHRoaXMgaXMgdGhlIG5vZGUgd2hvc2UgaGVpZ2h0IGlzIGFkanVzdGVkICovXG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIENhbGVuZGFyICovXG5cbi5kaWppdENhbGVuZGFyQ29udGFpbmVyIHRhYmxlIHtcblx0d2lkdGg6IGF1dG87XHQvKiBpbiBjYXNlIHVzZXIgaGFzIHNwZWNpZmllZCBhIHdpZHRoIGZvciB0aGUgVEFCTEUgbm9kZXMsIHNlZSAjMTA1NTMgKi9cblx0Y2xlYXI6IGJvdGg7ICAgIC8qIGNsZWFyIG1hcmdpbiBjcmVhdGVkIGZvciBsZWZ0L3JpZ2h0IG1vbnRoIGFycm93czsgbmVlZGVkIG9uIElFMTAgZm9yIENhbGVuZGFyTGl0ZSAqL1xufVxuLmRpaml0Q2FsZW5kYXJDb250YWluZXIgdGgsIC5kaWppdENhbGVuZGFyQ29udGFpbmVyIHRkIHtcblx0cGFkZGluZzogMDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmRpaml0Q2FsZW5kYXJNb250aENvbnRhaW5lciB7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5kaWppdENhbGVuZGFyRGVjcmVtZW50QXJyb3cge1xuXHRmbG9hdDogbGVmdDtcbn1cbi5kaWppdENhbGVuZGFySW5jcmVtZW50QXJyb3cge1xuXHRmbG9hdDogcmlnaHQ7XG59XG5cbi5kaWppdENhbGVuZGFyWWVhckxhYmVsIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyAgICAvKiBtYWtlIHN1cmUgcHJldmlvdXMsIGN1cnJlbnQsIGFuZCBuZXh0IHllYXIgYXBwZWFyIG9uIHNhbWUgcm93ICovXG59XG5cbi5kaWppdENhbGVuZGFyTmV4dFllYXIge1xuXHRtYXJnaW46MCAwIDAgMC41NWVtO1xufVxuXG4uZGlqaXRDYWxlbmRhclByZXZpb3VzWWVhciB7XG5cdG1hcmdpbjowIDAuNTVlbSAwIDA7XG59XG5cbi5kaWppdENhbGVuZGFySW5jcmVtZW50Q29udHJvbCB7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kaWppdENhbGVuZGFySW5jcmVtZW50Q29udHJvbCxcbi5kaWppdENhbGVuZGFyRGF0ZVRlbXBsYXRlLFxuLmRpaml0Q2FsZW5kYXJNb250aExhYmVsLFxuLmRpaml0Q2FsZW5kYXJQcmV2aW91c1llYXIsXG4uZGlqaXRDYWxlbmRhck5leHRZZWFyIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGlqaXRDYWxlbmRhckRpc2FibGVkRGF0ZSB7XG5cdGNvbG9yOiBncmF5O1xuXHR0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4uZGlqaXRTcGFjZXIge1xuXHQvKiBkb24ndCBkaXNwbGF5IGl0LCBidXQgbWFrZSBpdCBhZmZlY3QgdGhlIHdpZHRoICovXG4gIFx0cG9zaXRpb246IHJlbGF0aXZlO1xuICBcdGhlaWdodDogMXB4O1xuICBcdG92ZXJmbG93OiBoaWRkZW47XG4gIFx0dmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4vKiBTdHlsaW5nIGZvciBtb250aCBkcm9wIGRvd24gbGlzdCAqL1xuXG4uZGlqaXRDYWxlbmRhck1vbnRoTWVudSAuZGlqaXRDYWxlbmRhck1vbnRoTGFiZWwge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcbn1cblxuLyogTWVudSAqL1xuXG4uZGlqaXRNZW51IHtcblx0Ym9yZGVyOjFweCBzb2xpZCBibGFjaztcblx0YmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtcbn1cbi5kaWppdE1lbnVUYWJsZSB7XG5cdGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtcblx0Ym9yZGVyLXdpZHRoOjA7XG5cdGJhY2tncm91bmQtY29sb3I6d2hpdGU7XG59XG5cbi8qIHdvcmthcm91bmQgZm9yIHdlYmtpdCBidWcgIzg0MjcsIHJlbW92ZSB0aGlzIHdoZW4gaXQgaXMgZml4ZWQgdXBzdHJlYW0gKi9cbi5kal93ZWJraXQgLmRpaml0TWVudVRhYmxlIHRkW2NvbHNwYW49XCIyXCJde1xuXHRib3JkZXItcmlnaHQ6aGlkZGVuO1xufVxuXG4uZGlqaXRNZW51SXRlbSB7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdHBhZGRpbmc6LjFlbSAuMmVtO1xuXHRjdXJzb3I6cG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLypcbk5vIG5lZWQgdG8gc2hvdyBhIGZvY3VzIGJvcmRlciBzaW5jZSBpdCdzIG9idmlvdXMgZnJvbSB0aGUgc2hhZGluZywgYW5kIHRoZXJlJ3MgYSAuZGpfYTExeSAuZGlqaXRNZW51SXRlbVNlbGVjdGVkXG5ydWxlIGJlbG93IHRoYXQgaGFuZGxlcyB0aGUgaGlnaCBjb250cmFzdCBjYXNlIHdoZW4gdGhlcmUncyBubyBzaGFkaW5nLlxuSGlkaW5nIHRoZSBmb2N1cyBib3JkZXIgYWxzbyB3b3JrcyBhcm91bmQgd2Via2l0IGJ1ZyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTI1Nzc5LlxuKi9cbi5kaWppdE1lbnVJdGVtOmZvY3VzIHtcblx0b3V0bGluZTogbm9uZVxufVxuXG4uZGlqaXRNZW51UGFzc2l2ZSAuZGlqaXRNZW51SXRlbUhvdmVyLFxuLmRpaml0TWVudUl0ZW1TZWxlY3RlZCB7XG5cdC8qXG5cdCAqIGRpaml0TWVudUl0ZW1Ib3ZlciByZWZlcnMgdG8gYWN0dWFsIG1vdXNlIG92ZXJcblx0ICogZGlqaXRNZW51SXRlbVNlbGVjdGVkIGlzIHVzZWQgYWZ0ZXIgYSBtZW51IGhhcyBiZWVuIFwiYWN0aXZhdGVkXCIgYnlcblx0ICogY2xpY2tpbmcgaXQsIHRhYmJpbmcgaW50byBpdCwgb3IgYmVpbmcgb3BlbmVkIGZyb20gYSBwYXJlbnQgbWVudSxcblx0ICogYW5kIGRlbm90ZXMgdGhhdCB0aGUgbWVudSBpdGVtIGhhcyBmb2N1cyBvciB0aGF0IGZvY3VzIGlzIG9uIGEgY2hpbGRcblx0ICogbWVudVxuXHQgKi9cblx0YmFja2dyb3VuZC1jb2xvcjpibGFjaztcblx0Y29sb3I6d2hpdGU7XG59XG5cbi5kaWppdE1lbnVJdGVtSWNvbiwgLmRpaml0TWVudUV4cGFuZCB7XG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5cbi5kaWppdE1lbnVJdGVtRGlzYWJsZWQgKiB7XG5cdC8qIGZvciBhIGRpc2FibGVkIG1lbnUgaXRlbSwganVzdCBzZXQgaXQgdG8gbW9zdGx5IHRyYW5zcGFyZW50ICovXG5cdG9wYWNpdHk6MC41O1xuXHRjdXJzb3I6ZGVmYXVsdDtcbn1cbi5kal9pZSAuZGpfYTExeSAuZGlqaXRNZW51SXRlbURpc2FibGVkLFxuLmRqX2llIC5kal9hMTF5IC5kaWppdE1lbnVJdGVtRGlzYWJsZWQgKixcbi5kal9pZSAuZGlqaXRNZW51SXRlbURpc2FibGVkICoge1xuXHRjb2xvcjogZ3JheTtcblx0ZmlsdGVyOiBhbHBoYShvcGFjaXR5PTM1KTtcbn1cblxuLmRpaml0TWVudUl0ZW1MYWJlbCB7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kal9hMTF5IC5kaWppdE1lbnVJdGVtU2VsZWN0ZWQge1xuXHRib3JkZXI6IDFweCBkb3R0ZWQgYmxhY2sgIWltcG9ydGFudDtcdC8qIGZvciAyLjAgdXNlIG91dGxpbmUgaW5zdGVhZCwgdG8gcHJldmVudCBqaXR0ZXIgKi9cbn1cblxuLmRqX2ExMXkgLmRpaml0TWVudUl0ZW1TZWxlY3RlZCAuZGlqaXRNZW51SXRlbUxhYmVsIHtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG59XG4uZGpfaWU4IC5kal9hMTF5IC5kaWppdE1lbnVJdGVtTGFiZWwge1xuXHRwb3NpdGlvbjpzdGF0aWM7XG59XG5cbi5kaWppdE1lbnVFeHBhbmRBMTF5IHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbi5kal9hMTF5IC5kaWppdE1lbnVFeHBhbmRBMTF5IHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGlqaXRNZW51U2VwYXJhdG9yIHRkIHtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xufVxuXG4vKiBzZXBhcmF0b3IgY2FuIGJlIHR3byBwaXhlbHMgLS0gc2V0IGJvcmRlciBvZiBlaXRoZXIgb25lIHRvIDAgdG8gaGF2ZSBvbmx5IG9uZSAqL1xuLmRpaml0TWVudVNlcGFyYXRvclRvcCB7XG5cdGhlaWdodDogNTAlO1xuXHRtYXJnaW46IDA7XG5cdG1hcmdpbi10b3A6M3B4O1xuXHRmb250LXNpemU6IDFweDtcbn1cblxuLmRpaml0TWVudVNlcGFyYXRvckJvdHRvbSB7XG5cdGhlaWdodDogNTAlO1xuXHRtYXJnaW46IDA7XG5cdG1hcmdpbi1ib3R0b206M3B4O1xuXHRmb250LXNpemU6IDFweDtcbn1cblxuLyogQ2hlY2tlZE1lbnVJdGVtIGFuZCBSYWRpb01lbnVJdGVtICovXG4uZGlqaXRNZW51SXRlbUljb25DaGFyIHtcblx0ZGlzcGxheTogbm9uZTtcdFx0LyogZG9uJ3QgZGlzcGxheSBleGNlcHQgaW4gaGlnaCBjb250cmFzdCBtb2RlICovXG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcdC8qIGZvciBoaWdoIGNvbnRyYXN0IG1vZGUgd2hlbiBtZW51aXRlbSBpcyB1bmNoZWNrZWQ6IGxlYXZlIHNwYWNlIGZvciB3aGVuIGl0IGlzIGNoZWNrZWQgKi9cbn1cbi5kal9hMTF5IC5kaWppdE1lbnVJdGVtSWNvbkNoYXIge1xuXHRkaXNwbGF5OiBpbmxpbmU7XHQvKiBkaXNwbGF5IGNoYXJhY3RlciBpbiBoaWdoIGNvbnRyYXN0IG1vZGUsIHNpbmNlIGljb24gZG9lc24ndCBzaG93ICovXG59XG4uZGlqaXRDaGVja2VkTWVudUl0ZW1DaGVja2VkIC5kaWppdE1lbnVJdGVtSWNvbkNoYXIsXG4uZGlqaXRSYWRpb01lbnVJdGVtQ2hlY2tlZCAuZGlqaXRNZW51SXRlbUljb25DaGFyIHtcblx0dmlzaWJpbGl0eTogdmlzaWJsZTsgLyogbWVudWl0ZW0gaXMgY2hlY2tlZCAqL1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdE1lbnVCYXIgLmRpaml0TWVudUl0ZW0ge1xuXHQvKiBzbyBib3R0b20gYm9yZGVyIG9mIE1lbnVCYXIgYXBwZWFycyBvbiBJRTcgaW4gaGlnaC1jb250cmFzdCBtb2RlICovXG5cdG1hcmdpbjogMDtcbn1cblxuLyogU3RhY2tDb250YWluZXIgKi9cblxuLmRpaml0U3RhY2tDb250cm9sbGVyIC5kaWppdFRvZ2dsZUJ1dHRvbkNoZWNrZWQgKiB7XG5cdGN1cnNvcjogZGVmYXVsdDtcdC8qIGJlY2F1c2UgcHJlc3NpbmcgaXQgaGFzIG5vIGVmZmVjdCAqL1xufVxuXG4vKioqXG5UYWJDb250YWluZXJcblxuTWFpbiBjbGFzcyBoaWVyYXJjaHk6XG5cbi5kaWppdFRhYkNvbnRhaW5lciAtIHRoZSB3aG9sZSBUYWJDb250YWluZXJcbiAgIC5kaWppdFRhYkNvbnRyb2xsZXIgLyAuZGlqaXRUYWJMaXN0Q29udGFpbmVyLXRvcCAtIHdyYXBwZXIgZm9yIHRhYiBidXR0b25zLCBzY3JvbGwgYnV0dG9uc1xuXHQgLmRpaml0VGFiTGlzdFdyYXBwZXIgLyAuZGlqaXRUYWJDb250YWluZXJUb3BTdHJpcCAtIG91dGVyIHdyYXBwZXIgZm9yIHRhYiBidXR0b25zIChub3JtYWwgd2lkdGgpXG5cdFx0Lm5vd3JhcFRhYlN0cmlwIC8gLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgLSBpbm5lciB3cmFwcGVyIGZvciB0YWIgYnV0dG9ucyAoNTBLIHdpZHRoKVxuICAgLmRpaml0VGFiUGFuZVdyYXBwZXIgLSB3cmFwcGVyIGZvciBjb250ZW50IHBhbmVzLCBoYXMgYWxsIGJvcmRlcnMgZXhjZXB0IHRoZSBvbmUgYmV0d2VlbiBjb250ZW50IGFuZCB0YWJzXG4qKiovXG5cbi5kaWppdFRhYkNvbnRhaW5lciB7XG4gICAgei1pbmRleDogMDsgLyogc28gei1pbmRleCBzZXR0aW5ncyBiZWxvdyBoYXZlIG5vIGVmZmVjdCBvdXRzaWRlIG9mIHRoZSBUYWJDb250YWluZXIgKi9cbiAgICBvdmVyZmxvdzogdmlzaWJsZTsgLyogcHJldmVudCBvZmYtYnktb25lLXBpeGVsIGVycm9ycyBmcm9tIGhpZGluZyBib3R0b20gYm9yZGVyIChvcHBvc2l0ZSB0YWIgbGFiZWxzKSAqL1xufVxuLmRqX2llNiAuZGlqaXRUYWJDb250YWluZXIge1xuICAgIC8qIHdvcmthcm91bmQgSUU2IHByb2JsZW0gd2hlbiB0YWxsIGNvbnRlbnQgb3ZlcmZsb3dzIFRhYkNvbnRhaW5lciwgc2VlIGVkaXRvci90ZXN0X0Z1bGxTY3JlZW4uaHRtbCAqL1xuICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxufVxuLmRpaml0VGFiQ29udGFpbmVyTm9MYXlvdXQge1xuXHR3aWR0aDogMTAwJTtcdC8qIG90aGVyd2lzZSBTY3JvbGxpbmdUYWJDb250cm9sbGVyIGdvZXMgdG8gNTBLIHBpeGVscyB3aWRlICovXG59XG5cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzLFxuLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMsXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMsXG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIHtcbiAgICB6LWluZGV4OiAxO1xuXHRvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OyAgLyogc28gdGFicyBjYW4gY292ZXIgdXAgYm9yZGVyIGFkamFjZW50IHRvIGNvbnRhaW5lciAqL1xufVxuXG4uZGlqaXRUYWJDb250cm9sbGVyIHtcbiAgICB6LWluZGV4OiAxO1xufVxuLmRpaml0VGFiQ29udGFpbmVyQm90dG9tLWNvbnRhaW5lcixcbi5kaWppdFRhYkNvbnRhaW5lclRvcC1jb250YWluZXIsXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LWNvbnRhaW5lcixcbi5kaWppdFRhYkNvbnRhaW5lclJpZ2h0LWNvbnRhaW5lciB7XG5cdHotaW5kZXg6MDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7XG59XG4ubm93cmFwVGFiU3RyaXAge1xuXHR3aWR0aDogNTAwMDBweDtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0OyAgLyoganVzdCBpbiBjYXNlIGFuY2VzdG9yIGhhcyBub24tc3RhbmRhcmQgc2V0dGluZyAqL1xuICAgIHotaW5kZXg6IDE7XG59XG4uZGlqaXRUYWJMaXN0V3JhcHBlciB7XG5cdG92ZXJmbG93OiBoaWRkZW47XG4gICAgei1pbmRleDogMTtcbn1cblxuLmRqX2ExMXkgLnRhYlN0cmlwQnV0dG9uIGltZyB7XG5cdC8qIGhpZGUgdGhlIGljb25zIChvciByYXRoZXIgdGhlIGVtcHR5IHNwYWNlIHdoZXJlIHRoZXkgbm9ybWFsbHkgYXBwZWFyKSBiZWNhdXNlIHRleHQgd2lsbCBhcHBlYXIgaW5zdGVhZCAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJUb3AtdGFicyB7XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjaztcbn1cbi5kaWppdFRhYkNvbnRhaW5lclRvcC1jb250YWluZXIge1xuXHRib3JkZXItdG9wOiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMge1xuXHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBibGFjaztcblx0ZmxvYXQ6IGxlZnQ7ICAgIC8qIG5lZWRlZCBmb3IgSUU3IFJUTCBtb2RlICovXG59XG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LWNvbnRhaW5lciB7XG5cdGJvcmRlci1sZWZ0OiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJCb3R0b20tdGFicyB7XG5cdGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjaztcbn1cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS1jb250YWluZXIge1xuXHRib3JkZXItYm90dG9tOiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIHtcblx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCBibGFjaztcblx0ZmxvYXQ6IGxlZnQ7ICAgIC8qIG5lZWRlZCBmb3IgSUU3IFJUTCBtb2RlICovXG59XG4uZGlqaXRUYWJDb250YWluZXJSaWdodC1jb250YWluZXIge1xuXHRib3JkZXItcmlnaHQ6IDA7XG59XG5cbmRpdi5kaWppdFRhYkRpc2FibGVkLCAuZGpfaWUgZGl2LmRpaml0VGFiRGlzYWJsZWQge1xuXHRjdXJzb3I6IGF1dG87XG59XG5cbi5kaWppdFRhYiB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRjdXJzb3I6cG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcblx0d2hpdGUtc3BhY2U6bm93cmFwO1xuXHR6LWluZGV4OjM7XG59XG4uZGlqaXRUYWIgKiB7XG5cdC8qIG1ha2UgdGFiIGljb25zIGFuZCBjbG9zZSBpY29uIGxpbmUgdXAgdy90ZXh0ICovXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4uZGlqaXRUYWJDaGVja2VkIHtcblx0Y3Vyc29yOiBkZWZhdWx0O1x0LyogYmVjYXVzZSBjbGlja2luZyB3aWxsIGhhdmUgbm8gZWZmZWN0ICovXG59XG5cbi5kaWppdFRhYkNvbnRhaW5lclRvcC10YWJzIC5kaWppdFRhYiB7XG5cdHRvcDogMXB4O1x0LyogdG8gb3ZlcmxhcCBib3JkZXIgb24gLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgKi9cbn1cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzIC5kaWppdFRhYiB7XG5cdHRvcDogLTFweDtcdC8qIHRvIG92ZXJsYXAgYm9yZGVyIG9uIC5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzICovXG59XG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMgLmRpaml0VGFiIHtcblx0bGVmdDogMXB4O1x0LyogdG8gb3ZlcmxhcCBib3JkZXIgb24gLmRpaml0VGFiQ29udGFpbmVyTGVmdC10YWJzICovXG59XG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIC5kaWppdFRhYiB7XG5cdGxlZnQ6IC0xcHg7XHQvKiB0byBvdmVybGFwIGJvcmRlciBvbiAuZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzICovXG59XG5cblxuLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgLmRpaml0VGFiLFxuLmRpaml0VGFiQ29udGFpbmVyQm90dG9tLXRhYnMgLmRpaml0VGFiIHtcblx0LyogSW5saW5lLWJsb2NrICovXG5cdGRpc3BsYXk6aW5saW5lLWJsb2NrO1x0XHRcdC8qIHdlYmtpdCBhbmQgRkYzICovXG5cdCN6b29tOiAxOyAvKiBzZXQgaGFzTGF5b3V0OnRydWUgdG8gbWltaWMgaW5saW5lLWJsb2NrICovXG5cdCNkaXNwbGF5OmlubGluZTsgLyogZG9uJ3QgdXNlIC5kal9pZSBzaW5jZSB0aGF0IGluY3JlYXNlcyB0aGUgcHJpb3JpdHkgKi9cbn1cblxuLnRhYlN0cmlwQnV0dG9uIHtcblx0ei1pbmRleDogMTI7XG59XG5cbi5kaWppdFRhYkJ1dHRvbkRpc2FibGVkIC50YWJTdHJpcEJ1dHRvbiB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cblxuLmRpaml0VGFiQ2xvc2VCdXR0b24ge1xuXHRtYXJnaW4tbGVmdDogMWVtO1xufVxuXG4uZGlqaXRUYWJDbG9zZVRleHQge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi5kaWppdFRhYiAudGFiTGFiZWwge1xuXHQvKiBtYWtlIHN1cmUgdGFicyB3L2Nsb3NlIGJ1dHRvbiBhbmQgdy9vdXQgY2xvc2UgYnV0dG9uIGFyZSBzYW1lIGhlaWdodCwgZXZlbiB3L3NtYWxsICg8MTVweCkgZm9udC5cblx0ICogYXNzdW1lcyA8PTE1cHggaGVpZ2h0IGZvciBjbG9zZSBidXR0b24gaWNvbi5cblx0ICovXG5cdG1pbi1oZWlnaHQ6IDE1cHg7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5kaWppdE5vSWNvbiB7XG5cdC8qIGFwcGxpZWQgdG8gPGltZz4vPHNwYW4+IG5vZGUgd2hlbiB0aGVyZSBpcyBubyBpY29uIHNwZWNpZmllZCAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRqX2llNiAuZGlqaXRUYWIgLmRpaml0Tm9JY29uIHtcblx0LyogYmVjYXVzZSBtaW4taGVpZ2h0IChvbiAudGFiTGFiZWwsIGFib3ZlKSBkb2Vzbid0IHdvcmsgb24gSUU2ICovXG5cdGRpc3BsYXk6IGlubGluZTtcblx0aGVpZ2h0OiAxNXB4O1xuXHR3aWR0aDogMXB4O1xufVxuXG4vKiBpbWFnZXMgb2ZmLCBoaWdoLWNvbnRyYXN0IG1vZGUgc3R5bGVzICovXG5cbi5kal9hMTF5IC5kaWppdFRhYkNsb3NlQnV0dG9uIHtcblx0YmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuXHR3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmRqX2ExMXkgLmRpaml0VGFiQ2xvc2VUZXh0IHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGlqaXRUYWJQYW5lLFxuLmRpaml0U3RhY2tDb250YWluZXItY2hpbGQsXG4uZGlqaXRBY2NvcmRpb25Db250YWluZXItY2hpbGQge1xuXHQvKiBjaGlsZHJlbiBvZiBUYWJDb250YWluZXIsIFN0YWNrQ29udGFpbmVyLCBhbmQgQWNjb3JkaW9uQ29udGFpbmVyIHNob3VsZG4ndCBoYXZlIGJvcmRlcnNcblx0ICogYi9jIGEgYm9yZGVyIGlzIGFscmVhZHkgdGhlcmUgZnJvbSB0aGUgVGFiQ29udGFpbmVyL1N0YWNrQ29udGFpbmVyL0FjY29yZGlvbkNvbnRhaW5lciBpdHNlbGYuXG5cdCAqL1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBJbmxpbmVFZGl0Qm94ICovXG4uZGlqaXRJbmxpbmVFZGl0Qm94RGlzcGxheU1vZGUge1xuXHRib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcdC8qIHNvIGtleWxpbmUgKGJvcmRlcikgb24gaG92ZXIgY2FuIGFwcGVhciB3aXRob3V0IHNjcmVlbiBqdW1wICovXG5cdGN1cnNvcjogdGV4dDtcbn1cblxuLmRqX2ExMXkgLmRpaml0SW5saW5lRWRpdEJveERpc3BsYXlNb2RlLFxuLmRqX2llNiAuZGlqaXRJbmxpbmVFZGl0Qm94RGlzcGxheU1vZGUge1xuXHQvKiBleGNlcHQgdGhhdCBJRTYgZG9lc24ndCBzdXBwb3J0IHRyYW5zcGFyZW50IGJvcmRlcnMsIG5vciBkb2VzIGhpZ2ggY29udHJhc3QgbW9kZSAqL1xuXHRib3JkZXI6IG5vbmU7XG59XG5cbi5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZUhvdmVyLFxuLmRqX2ExMXkgLmRpaml0SW5saW5lRWRpdEJveERpc3BsYXlNb2RlSG92ZXIsXG4uZGpfaWU2IC5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZUhvdmVyIHtcblx0LyogQW4gSW5saW5lRWRpdEJveCBpbiB2aWV3IG1vZGUgKGNsaWNrIHRoaXMgdG8gZWRpdCB0aGUgdGV4dCkgKi9cblx0YmFja2dyb3VuZC1jb2xvcjogI2UyZWJmMjtcblx0Ym9yZGVyOiBzb2xpZCAxcHggYmxhY2s7XG59XG5cbi5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZURpc2FibGVkIHtcblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKiBUcmVlICovXG4uZGlqaXRUcmVlIHtcblx0b3ZlcmZsb3c6IGF1dG87XHQvKiBmb3Igc2Nyb2xsYmFycyB3aGVuIFRyZWUgaGFzIGEgaGVpZ2h0IHNldHRpbmcsIGFuZCB0byBwcmV2ZW50IHdyYXBwaW5nIGFyb3VuZCBmbG9hdCBlbGVtZW50cywgc2VlICMxMTQ5MSAqL1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGlqaXRUcmVlQ29udGFpbmVyIHtcblx0ZmxvYXQ6IGxlZnQ7XHQvKiBmb3IgY29ycmVjdCBoaWdobGlnaHRpbmcgZHVyaW5nIGhvcml6b250YWwgc2Nyb2xsLCBzZWUgIzE2MTMyICovXG59XG5cbi5kaWppdFRyZWVJbmRlbnQge1xuXHQvKiBhbW91bnQgdG8gaW5kZW50IGVhY2ggdHJlZSBub2RlIChyZWxhdGl2ZSB0byBwYXJlbnQgbm9kZSkgKi9cblx0d2lkdGg6IDE5cHg7XG59XG5cbi5kaWppdFRyZWVSb3csIC5kaWppdFRyZWVDb250ZW50IHtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmRqX2llIC5kaWppdFRyZWVMYWJlbDpmb2N1cyB7XG5cdC8qIHdvcmthcm91bmQgSUU5IGJlaGF2aW9yIHdoZXJlIGRvd24gYXJyb3dpbmcgdGhyb3VnaCBUcmVlTm9kZXMgZG9lc24ndCBzaG93IGZvY3VzIG91dGxpbmUgKi9cblx0b3V0bGluZTogMXB4IGRvdHRlZCBibGFjaztcbn1cblxuLmRpaml0VHJlZVJvdyBpbWcge1xuXHQvKiBtYWtlIHRoZSBleHBhbmRvIGFuZCBmb2xkZXIgaWNvbnMgbGluZSB1cCB3aXRoIHRoZSBsYWJlbCAqL1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uZGlqaXRUcmVlQ29udGVudCB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4uZGlqaXRFeHBhbmRvVGV4dCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5kal9hMTF5IC5kaWppdEV4cGFuZG9UZXh0IHtcblx0ZGlzcGxheTogaW5saW5lO1xuXHRwYWRkaW5nLWxlZnQ6IDEwcHg7XG5cdHBhZGRpbmctcmlnaHQ6IDEwcHg7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogdGhpbjtcblx0Y3Vyc29yOiBwb2ludGVyO1xufVxuXG4uZGlqaXRUcmVlTGFiZWwge1xuXHRtYXJnaW46IDAgNHB4O1xufVxuXG4vKiBEaWFsb2cgKi9cblxuLmRpaml0RGlhbG9nIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiA5OTk7XG5cdG92ZXJmbG93OiBoaWRkZW47XHQvKiBvdmVycmlkZSBvdmVyZmxvdzogYXV0bzsgZnJvbSBDb250ZW50UGFuZSB0byBtYWtlIGRyYWdnaW5nIHNtb290aGVyICovXG59XG5cbi5kaWppdERpYWxvZ1RpdGxlQmFyIHtcblx0Y3Vyc29yOiBtb3ZlO1xufVxuLmRpaml0RGlhbG9nRml4ZWQgLmRpaml0RGlhbG9nVGl0bGVCYXIge1xuXHRjdXJzb3I6ZGVmYXVsdDtcbn1cbi5kaWppdERpYWxvZ0Nsb3NlSWNvbiB7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5kaWppdERpYWxvZ1BhbmVDb250ZW50IHtcblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuLmRpaml0RGlhbG9nVW5kZXJsYXlXcmFwcGVyIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRsZWZ0OiAwO1xuXHR0b3A6IDA7XG5cdHotaW5kZXg6IDk5ODtcblx0ZGlzcGxheTogbm9uZTtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn1cblxuLmRpaml0RGlhbG9nVW5kZXJsYXkge1xuXHRiYWNrZ3JvdW5kOiAjZWVlO1xuXHRvcGFjaXR5OiAwLjU7XG59XG5cbi5kal9pZSAuZGlqaXREaWFsb2dVbmRlcmxheSB7XG5cdGZpbHRlcjogYWxwaGEob3BhY2l0eT01MCk7XG59XG5cbi8qIGltYWdlcyBvZmYsIGhpZ2gtY29udHJhc3QgbW9kZSBzdHlsZXMgKi9cbi5kal9hMTF5IC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGpfYTExeSAuZGlqaXREaWFsb2cge1xuXHRvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdERpYWxvZyAuY2xvc2VUZXh0IHtcblx0ZGlzcGxheTpub25lO1xuXHQvKiBmb3IgdGhlIG9uaG92ZXIgYm9yZGVyIGluIGhpZ2ggY29udHJhc3Qgb24gSUU6ICovXG5cdHBvc2l0aW9uOmFic29sdXRlO1xufVxuXG4uZGpfYTExeSAuZGlqaXREaWFsb2cgLmNsb3NlVGV4dCB7XG5cdGRpc3BsYXk6aW5saW5lO1xufVxuXG4vKiBTbGlkZXIgKi9cblxuLmRpaml0U2xpZGVyTW92ZWFibGUge1xuXHR6LWluZGV4Ojk5O1xuXHRwb3NpdGlvbjphYnNvbHV0ZSAhaW1wb3J0YW50O1xuXHRkaXNwbGF5OmJsb2NrO1xuXHR2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG59XG5cbi5kaWppdFNsaWRlck1vdmVhYmxlSCB7XG5cdHJpZ2h0OjA7XG59XG4uZGlqaXRTbGlkZXJNb3ZlYWJsZVYge1xuXHRyaWdodDo1MCU7XG59XG5cbi5kal9hMTF5IGRpdi5kaWppdFNsaWRlckltYWdlSGFuZGxlLFxuLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRtYXJnaW46MDtcblx0cGFkZGluZzowO1xuXHRwb3NpdGlvbjpyZWxhdGl2ZSAhaW1wb3J0YW50O1xuXHRib3JkZXI6OHB4IHNvbGlkIGdyYXk7XG5cdHdpZHRoOjA7XG5cdGhlaWdodDowO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRqX2ExMXkgLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRmb250LXNpemU6IDA7XG59XG4uZGpfaWU3IC5kaWppdFNsaWRlckltYWdlSGFuZGxlIHtcblx0b3ZlcmZsb3c6IGhpZGRlbjsgLyogSUU3IHdvcmthcm91bmQgdG8gbWFrZSBzbGlkZXIgaGFuZGxlIFZJU0lCTEUgaW4gbm9uLWExMXkgbW9kZSAqL1xufVxuLmRqX2llNyAuZGpfYTExeSAuZGlqaXRTbGlkZXJJbWFnZUhhbmRsZSB7XG5cdG92ZXJmbG93OiB2aXNpYmxlOyAvKiBJRTcgd29ya2Fyb3VuZCB0byBtYWtlIHNsaWRlciBoYW5kbGUgVklTSUJMRSBpbiBhMTF5IG1vZGUgKi9cbn1cbi5kal9hMTF5IC5kaWppdFNsaWRlckZvY3VzZWQgLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRib3JkZXI6NHB4IHNvbGlkICMwMDA7XG5cdGhlaWdodDo4cHg7XG5cdHdpZHRoOjhweDtcbn1cblxuLmRpaml0U2xpZGVySW1hZ2VIYW5kbGVWIHtcblx0dG9wOi04cHg7XG5cdHJpZ2h0OiAtNTAlO1xufVxuXG4uZGlqaXRTbGlkZXJJbWFnZUhhbmRsZUgge1xuXHRsZWZ0OjUwJTtcblx0dG9wOi01cHg7XG5cdHZlcnRpY2FsLWFsaWduOnRvcDtcbn1cblxuLmRpaml0U2xpZGVyQmFyIHtcblx0Ym9yZGVyLXN0eWxlOnNvbGlkO1xuXHRib3JkZXItY29sb3I6YmxhY2s7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmRpaml0U2xpZGVyQmFyQ29udGFpbmVyViB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRoZWlnaHQ6MTAwJTtcblx0ei1pbmRleDoxO1xufVxuXG4uZGlqaXRTbGlkZXJCYXJDb250YWluZXJIIHtcblx0cG9zaXRpb246cmVsYXRpdmU7XG5cdHotaW5kZXg6MTtcbn1cblxuLmRpaml0U2xpZGVyQmFySCB7XG5cdGhlaWdodDo0cHg7XG5cdGJvcmRlci13aWR0aDoxcHggMDtcbn1cblxuLmRpaml0U2xpZGVyQmFyViB7XG5cdHdpZHRoOjRweDtcblx0Ym9yZGVyLXdpZHRoOjAgMXB4O1xufVxuXG4uZGlqaXRTbGlkZXJQcm9ncmVzc0JhciB7XG5cdGJhY2tncm91bmQtY29sb3I6cmVkO1xuXHR6LWluZGV4OjE7XG59XG5cbi5kaWppdFNsaWRlclByb2dyZXNzQmFyViB7XG5cdHBvc2l0aW9uOnN0YXRpYyAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6MDtcblx0dmVydGljYWwtYWxpZ246dG9wO1xuXHR0ZXh0LWFsaWduOmxlZnQ7XG59XG5cbi5kaWppdFNsaWRlclByb2dyZXNzQmFySCB7XG5cdHBvc2l0aW9uOmFic29sdXRlICFpbXBvcnRhbnQ7XG5cdHdpZHRoOjA7XG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0b3ZlcmZsb3c6dmlzaWJsZTtcbn1cblxuLmRpaml0U2xpZGVyUmVtYWluaW5nQmFyIHtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O1xuXHR6LWluZGV4OjE7XG59XG5cbi5kaWppdFNsaWRlclJlbWFpbmluZ0JhclYge1xuXHRoZWlnaHQ6MTAwJTtcblx0dGV4dC1hbGlnbjpsZWZ0O1xufVxuXG4uZGlqaXRTbGlkZXJSZW1haW5pbmdCYXJIIHtcblx0d2lkdGg6MTAwJSAhaW1wb3J0YW50O1xufVxuXG4vKiB0aGUgc2xpZGVyIGJ1bXBlciBpcyB0aGUgc3BhY2UgY29uc3VtZWQgYnkgdGhlIHNsaWRlciBoYW5kbGUgd2hlbiBpdCBoYW5ncyBvdmVyIGFuIGVkZ2UgKi9cbi5kaWppdFNsaWRlckJ1bXBlciB7XG5cdG92ZXJmbG93OmhpZGRlbjtcblx0ei1pbmRleDoxO1xufVxuXG4uZGlqaXRTbGlkZXJCdW1wZXJWIHtcblx0d2lkdGg6NHB4O1xuXHRoZWlnaHQ6OHB4O1xuXHRib3JkZXItd2lkdGg6MCAxcHg7XG59XG5cbi5kaWppdFNsaWRlckJ1bXBlckgge1xuXHR3aWR0aDo4cHg7XG5cdGhlaWdodDo0cHg7XG5cdGJvcmRlci13aWR0aDoxcHggMDtcbn1cblxuLmRpaml0U2xpZGVyQm90dG9tQnVtcGVyLFxuLmRpaml0U2xpZGVyTGVmdEJ1bXBlciB7XG5cdGJhY2tncm91bmQtY29sb3I6cmVkO1xufVxuXG4uZGlqaXRTbGlkZXJUb3BCdW1wZXIsXG4uZGlqaXRTbGlkZXJSaWdodEJ1bXBlciB7XG5cdGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7XG59XG5cbi5kaWppdFNsaWRlckRlY29yYXRpb24ge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvbkMsXG4uZGlqaXRTbGlkZXJEZWNvcmF0aW9uViB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogbmVlZGVkIGZvciBJRStxdWlya3MrUlRMK3ZlcnRpY2FsIChyZW5kZXJpbmcgYnVnKSBidXQgYWRkIGV2ZXJ5d2hlcmUgZm9yIGN1c3RvbSBzdHlsaW5nIGNvbnNpc3RlbmN5IGJ1dCB0aGlzIG1lc3NlcyB1cCBJRSBob3Jpem9udGFsIHNsaWRlcnMgKi9cbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvbkgge1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvblYge1xuXHRoZWlnaHQ6IDEwMCU7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5kaWppdFNsaWRlckJ1dHRvbiB7XG5cdGZvbnQtZmFtaWx5Om1vbm9zcGFjZTtcblx0bWFyZ2luOjA7XG5cdHBhZGRpbmc6MDtcblx0ZGlzcGxheTpibG9jaztcbn1cblxuLmRqX2ExMXkgLmRpaml0U2xpZGVyQnV0dG9uSW5uZXIge1xuXHR2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0U2xpZGVyQnV0dG9uQ29udGFpbmVyIHtcblx0dGV4dC1hbGlnbjpjZW50ZXI7XG5cdGhlaWdodDowO1x0LyogPz8/ICovXG59XG4uZGlqaXRTbGlkZXJCdXR0b25Db250YWluZXIgKiB7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmRpaml0U2xpZGVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRwYWRkaW5nOjA7XG5cdGRpc3BsYXk6YmxvY2s7XG59XG5cbi5kaWppdFJ1bGVDb250YWluZXIge1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0b3ZlcmZsb3c6dmlzaWJsZTtcbn1cblxuLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRoZWlnaHQ6MTAwJTtcblx0bGluZS1oZWlnaHQ6MDtcblx0ZmxvYXQ6bGVmdDtcblx0dGV4dC1hbGlnbjpsZWZ0O1xufVxuXG4uZGpfb3BlcmEgLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRsaW5lLWhlaWdodDoyJTtcbn1cblxuLmRqX2llIC5kaWppdFJ1bGVDb250YWluZXJWIHtcblx0bGluZS1oZWlnaHQ6bm9ybWFsO1xufVxuXG4uZGpfZ2Vja28gLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRtYXJnaW46MCAwIDFweCAwOyAvKiBtb3ppbGxhIGJ1ZyB3b3JrYXJvdW5kIGZvciBmbG9hdDpsZWZ0LGhlaWdodDoxMDAlIGJsb2NrIGVsZW1lbnRzICovXG59XG5cbi5kaWppdFJ1bGVNYXJrIHtcblx0cG9zaXRpb246YWJzb2x1dGU7XG5cdGJvcmRlcjoxcHggc29saWQgYmxhY2s7XG5cdGxpbmUtaGVpZ2h0OjA7XG5cdGhlaWdodDoxMDAlO1xufVxuXG4uZGlqaXRSdWxlTWFya0gge1xuXHR3aWR0aDowO1xuXHRib3JkZXItdG9wLXdpZHRoOjAgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbS13aWR0aDowICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1sZWZ0LXdpZHRoOjAgIWltcG9ydGFudDtcbn1cblxuLmRpaml0UnVsZUxhYmVsQ29udGFpbmVyIHtcblx0cG9zaXRpb246YWJzb2x1dGU7XG59XG5cbi5kaWppdFJ1bGVMYWJlbENvbnRhaW5lckgge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0ZGlzcGxheTppbmxpbmUtYmxvY2s7XG59XG5cbi5kaWppdFJ1bGVMYWJlbEgge1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0bGVmdDotNTAlO1xufVxuXG4uZGlqaXRSdWxlTGFiZWxWIHtcblx0Lyogc28gdGhhdCBsb25nIGxhYmVscyBkb24ndCBvdmVyZmxvdyB0byBtdWx0aXBsZSByb3dzLCBvciBvdmVyd3JpdGUgc2xpZGVyIGl0c2VsZiAqL1xuXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRpaml0UnVsZU1hcmtWIHtcblx0aGVpZ2h0OjA7XG5cdGJvcmRlci1yaWdodC13aWR0aDowICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1ib3R0b20td2lkdGg6MCAhaW1wb3J0YW50O1xuXHRib3JkZXItbGVmdC13aWR0aDowICFpbXBvcnRhbnQ7XG5cdHdpZHRoOjEwMCU7XG5cdGxlZnQ6MDtcbn1cblxuLmRqX2llIC5kaWppdFJ1bGVMYWJlbENvbnRhaW5lclYge1xuXHRtYXJnaW4tdG9wOi0uNTVlbTtcbn1cblxuLmRqX2ExMXkgLmRpaml0U2xpZGVyUmVhZE9ubHksXG4uZGpfYTExeSAuZGlqaXRTbGlkZXJEaXNhYmxlZCB7XG5cdG9wYWNpdHk6MC42O1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdFNsaWRlclJlYWRPbmx5IC5kaWppdFNsaWRlckJhcixcbi5kal9pZSAuZGpfYTExeSAuZGlqaXRTbGlkZXJEaXNhYmxlZCAuZGlqaXRTbGlkZXJCYXIge1xuXHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NDApO1xufVxuXG4vKiArIGFuZCAtIFNsaWRlciBidXR0b25zOiBvdmVycmlkZSB0aGVtZSBzZXR0aW5ncyB0byBkaXNwbGF5IGljb25zICovXG4uZGpfYTExeSAuZGlqaXRTbGlkZXIgLmRpaml0U2xpZGVyQnV0dG9uQ29udGFpbmVyIGRpdiB7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IC8qIG90aGVyd2lzZSBoeXBoZW4gaXMgbGFyZ2VyIGFuZCBtb3JlIHZlcnRpY2FsbHkgY2VudGVyZWQgKi9cblx0Zm9udC1zaXplOiAxZW07XG5cdGxpbmUtaGVpZ2h0OiAxZW07XG5cdGhlaWdodDogYXV0bztcblx0d2lkdGg6IGF1dG87XG5cdG1hcmdpbjogMCA0cHg7XG59XG5cbi8qIEljb24tb25seSBidXR0b25zIChvZnRlbiBpbiB0b29sYmFycykgc3RpbGwgZGlzcGxheSB0aGUgdGV4dCBpbiBoaWdoLWNvbnRyYXN0IG1vZGUgKi9cbi5kal9hMTF5IC5kaWppdEJ1dHRvbkNvbnRlbnRzIC5kaWppdEJ1dHRvblRleHQsXG4uZGpfYTExeSAuZGlqaXRUYWIgLnRhYkxhYmVsIHtcblx0ZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uVGV4dCB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xufVxuXG4vKiBUZXh0QXJlYSwgU2ltcGxlVGV4dEFyZWEgKi9cbi5kaWppdFRleHRBcmVhIHtcblx0d2lkdGg6MTAwJTtcblx0b3ZlcmZsb3cteTogYXV0bztcdC8qIHcvb3V0IHRoaXMgSUUncyBTaW1wbGVUZXh0QXJlYSBnb2VzIHRvIG92ZXJmbG93OiBzY3JvbGwgKi9cbn1cbi5kaWppdFRleHRBcmVhW2NvbHNdIHtcblx0d2lkdGg6YXV0bzsgLyogU2ltcGxlVGV4dEFyZWEgY29scyAqL1xufVxuLmRqX2llIC5kaWppdFRleHRBcmVhQ29scyB7XG5cdHdpZHRoOmF1dG87XG59XG5cbi5kaWppdEV4cGFuZGluZ1RleHRBcmVhIHtcblx0LyogZm9yIGF1dG8gZXhhbmRpbmcgdGV4dGFyZWEgKGNhbGxlZCBUZXh0YXJlYSBjdXJyZW50bHksIHJlbmFtZSBmb3IgMi4wKSBkb24ndCB3YW50IHRvIGRpc3BsYXkgdGhlIGdyaXAgdG8gcmVzaXplICovXG5cdHJlc2l6ZTogbm9uZTtcbn1cblxuXG4vKiBUb29sYmFyXG4gKiBOb3RlIHRoYXQgb3RoZXIgdG9vbGJhciBydWxlcyAoZm9yIG9iamVjdHMgaW4gdG9vbGJhcnMpIGFyZSBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGlzIGZpbGUuXG4gKi9cblxuLmRpaml0VG9vbGJhclNlcGFyYXRvciB7XG5cdGhlaWdodDogMThweDtcblx0d2lkdGg6IDVweDtcblx0cGFkZGluZzogMCAxcHg7XG5cdG1hcmdpbjogMDtcbn1cblxuLyogRWRpdG9yICovXG4uZGlqaXRJRUZpeGVkVG9vbGJhciB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHQvKiB0b3A6MDsgKi9cblx0dG9wOiBleHByZXNzaW9uKGV2YWwoKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8ZG9jdW1lbnQuYm9keSkuc2Nyb2xsVG9wKSk7XG59XG5cbi5kaWppdEVkaXRvciB7XG5cdGRpc3BsYXk6IGJsb2NrO1x0LyogcHJldmVudHMgZ2xpdGNoIG9uIEZGIHdpdGggSW5saW5lRWRpdEJveCwgc2VlICM4NDA0ICovXG59XG5cbi5kaWppdEVkaXRvckRpc2FibGVkLFxuLmRpaml0RWRpdG9yUmVhZE9ubHkge1xuXHRjb2xvcjogZ3JheTtcbn1cblxuLyogVGltZVBpY2tlciAqL1xuXG4uZGlqaXRUaW1lUGlja2VyIHtcblx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG4uZGlqaXRUaW1lUGlja2VySXRlbSB7XG5cdGN1cnNvcjpwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0VGltZVBpY2tlckl0ZW1Ib3ZlciB7XG5cdGJhY2tncm91bmQtY29sb3I6Z3JheTtcblx0Y29sb3I6d2hpdGU7XG59XG4uZGlqaXRUaW1lUGlja2VySXRlbVNlbGVjdGVkIHtcblx0Zm9udC13ZWlnaHQ6Ym9sZDtcblx0Y29sb3I6IzMzMztcblx0YmFja2dyb3VuZC1jb2xvcjojYjdjZGVlO1xufVxuLmRpaml0VGltZVBpY2tlckl0ZW1EaXNhYmxlZCB7XG5cdGNvbG9yOmdyYXk7XG5cdHRleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2g7XG59XG5cbi5kaWppdFRpbWVQaWNrZXJJdGVtSW5uZXIge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0Ym9yZGVyOjA7XG5cdHBhZGRpbmc6MnB4IDhweCAycHggOHB4O1xufVxuXG4uZGlqaXRUaW1lUGlja2VyVGljayxcbi5kaWppdFRpbWVQaWNrZXJNYXJrZXIge1xuXHRib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmF5O1xufVxuXG4uZGlqaXRUaW1lUGlja2VyIC5kaWppdERvd25BcnJvd0J1dHRvbiB7XG5cdGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0VGltZVBpY2tlclRpY2sge1xuXHRjb2xvcjojQ0NDO1xufVxuXG4uZGlqaXRUaW1lUGlja2VyTWFya2VyIHtcblx0Y29sb3I6YmxhY2s7XG5cdGJhY2tncm91bmQtY29sb3I6I0NDQztcbn1cblxuLmRqX2ExMXkgLmRpaml0VGltZVBpY2tlckl0ZW1TZWxlY3RlZCAuZGlqaXRUaW1lUGlja2VySXRlbUlubmVyIHtcblx0Ym9yZGVyOiBzb2xpZCA0cHggYmxhY2s7XG59XG4uZGpfYTExeSAuZGlqaXRUaW1lUGlja2VySXRlbUhvdmVyIC5kaWppdFRpbWVQaWNrZXJJdGVtSW5uZXIge1xuXHRib3JkZXI6IGRhc2hlZCA0cHggYmxhY2s7XG59XG5cblxuLmRpaml0VG9nZ2xlQnV0dG9uSWNvbkNoYXIge1xuXHQvKiBjaGFyYWN0ZXIgKGluc3RlYWQgb2YgaWNvbikgdG8gc2hvdyB0aGF0IFRvZ2dsZUJ1dHRvbiBpcyBjaGVja2VkICovXG5cdGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0VG9nZ2xlQnV0dG9uIC5kaWppdFRvZ2dsZUJ1dHRvbkljb25DaGFyIHtcblx0ZGlzcGxheTppbmxpbmUgIWltcG9ydGFudDtcblx0dmlzaWJpbGl0eTpoaWRkZW47XG59XG4uZGpfaWU2IC5kaWppdFRvZ2dsZUJ1dHRvbkljb25DaGFyLCAuZGpfaWU2IC50YWJTdHJpcEJ1dHRvbiAuZGlqaXRCdXR0b25UZXh0IHtcblx0Zm9udC1mYW1pbHk6IFwiQXJpYWwgVW5pY29kZSBNU1wiO1x0Lyogb3RoZXJ3aXNlIHRoZSBhMTF5IGNoYXJhY3RlciAoY2hlY2ttYXJrLCBhcnJvdywgZXRjLikgYXBwZWFycyBhcyBhIGJveCAqL1xufVxuLmRqX2ExMXkgLmRpaml0VG9nZ2xlQnV0dG9uQ2hlY2tlZCAuZGlqaXRUb2dnbGVCdXR0b25JY29uQ2hhciB7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyAvKiBJbiBoaWdoIGNvbnRyYXN0IG1vZGUsIGRpc3BsYXkgdGhlIGNoZWNrIHN5bWJvbCAqL1xuXHR2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0QXJyb3dCdXR0b25DaGFyIHtcblx0ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRBcnJvd0J1dHRvbkNoYXIge1xuXHRkaXNwbGF5OmlubGluZSAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXREcm9wRG93bkJ1dHRvbiAuZGlqaXRBcnJvd0J1dHRvbklubmVyLFxuLmRqX2ExMXkgLmRpaml0Q29tYm9CdXR0b24gLmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBTZWxlY3QgKi9cbi5kal9hMTF5IC5kaWppdFNlbGVjdCB7XG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGUgIWltcG9ydGFudDtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG59XG4uZGpfaWUgLmRpaml0U2VsZWN0IHtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTsgLyogU2V0IHRoaXMgYmFjayBmb3Igd2hhdCB3ZSBoYWNrIGluIGRpaml0IGlubGluZSAqL1xufVxuLmRqX2llNiAuZGlqaXRTZWxlY3QgLmRpaml0VmFsaWRhdGlvbkNvbnRhaW5lcixcbi5kal9pZTggLmRpaml0U2VsZWN0IC5kaWppdEJ1dHRvblRleHQge1xuXHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLmRqX2llNiAuZGlqaXRUZXh0Qm94IC5kaWppdElucHV0Q29udGFpbmVyLFxuLmRqX2llcXVpcmtzIC5kaWppdFRleHRCb3ggLmRpaml0SW5wdXRDb250YWluZXIsXG4uZGpfaWU2IC5kaWppdFRleHRCb3ggLmRpaml0QXJyb3dCdXR0b25Jbm5lcixcbi5kal9pZTYgLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uSW5uZXIsXG4uZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwge1xuXHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi5kaWppdE51bWJlclRleHRCb3gge1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRkaXJlY3Rpb246IGx0cjtcbn1cblxuLmRpaml0TnVtYmVyVGV4dEJveCAuZGlqaXRJbnB1dElubmVyIHtcblx0dGV4dC1hbGlnbjogaW5oZXJpdDsgLyogaW5wdXQgKi9cbn1cblxuLmRpaml0TnVtYmVyVGV4dEJveCBpbnB1dC5kaWppdElucHV0SW5uZXIsXG4uZGlqaXRDdXJyZW5jeVRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRpaml0U3Bpbm5lciBpbnB1dC5kaWppdElucHV0SW5uZXIge1xuXHR0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLmRqX2llOCAuZGlqaXROdW1iZXJUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXROdW1iZXJUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lcixcbi5kal9pZTggLmRpaml0Q3VycmVuY3lUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXRDdXJyZW5jeVRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRqX2llOCAuZGlqaXRTcGlubmVyIGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXRTcGlubmVyIGlucHV0LmRpaml0SW5wdXRJbm5lciB7XG5cdC8qIHdvcmthcm91bmQgYnVnIHdoZXJlIGNhcmV0IGludmlzaWJsZSBpbiBlbXB0eSB0ZXh0Ym94ZXMgKi9cblx0cGFkZGluZy1yaWdodDogMXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdFRvb2xiYXIgLmRpaml0U2VsZWN0IHtcblx0bWFyZ2luOiAwO1xufVxuLmRqX3dlYmtpdCAuZGlqaXRUb29sYmFyIC5kaWppdFNlbGVjdCB7XG5cdHBhZGRpbmctbGVmdDogMC4zZW07XG59XG4uZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRwYWRkaW5nOiAwO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRib3JkZXItc3R5bGU6IG5vbmUgc29saWQgbm9uZSBub25lO1xuXHRib3JkZXItd2lkdGg6IDFweDtcbn1cbi5kaWppdFNlbGVjdEZpeGVkV2lkdGggLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLmRpaml0U2VsZWN0TWVudSAuZGlqaXRNZW51SXRlbUljb24ge1xuXHQvKiBhdm9pZCBibGFuayBhcmVhIGluIGxlZnQgc2lkZSBvZiBtZW51IChzaW5jZSB3ZSBoYXZlIG5vIGljb25zKSAqL1xuXHRkaXNwbGF5Om5vbmU7XG59XG4uZGpfaWU2IC5kaWppdFNlbGVjdE1lbnUgLmRpaml0TWVudUl0ZW1MYWJlbCxcbi5kal9pZTcgLmRpaml0U2VsZWN0TWVudSAuZGlqaXRNZW51SXRlbUxhYmVsIHtcblx0LyogU2V0IGJhY2sgdG8gc3RhdGljIGR1ZSB0byBidWcgaW4gaWU2L2llNyAtIFNlZSBCdWcgIzk2NTEgKi9cblx0cG9zaXRpb246IHN0YXRpYztcbn1cblxuLyogRml4IHRoZSBiYXNlbGluZSBvZiBvdXIgbGFiZWwgKGZvciBtdWx0aS1zaXplIGZvbnQgZWxlbWVudHMpICovXG4uZGlqaXRTZWxlY3RMYWJlbCAqXG57XG5cdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuLyogU3R5bGluZyBmb3IgdGhlIGN1cnJlbnRseS1zZWxlY3RlZCBvcHRpb24gKHJpY2ggdGV4dCBjYW4gbWVzcyB0aGlzIHVwKSAqL1xuLmRpaml0U2VsZWN0U2VsZWN0ZWRPcHRpb24gKiB7XG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKiBGaXggdGhlIHN0eWxpbmcgb2YgdGhlIGRyb3Bkb3duIG1lbnUgdG8gYmUgbW9yZSBjb21ib2JveC1saWtlICovXG4uZGlqaXRTZWxlY3RNZW51IHtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG59XG5cbi8qIFVzZWQgaW4gY2FzZXMsIHN1Y2ggYXMgRnVsbFNjcmVlbiBwbHVnaW4sIHdoZW4gd2UgbmVlZCB0byBmb3JjZSBzdHVmZiB0byBzdGF0aWMgcG9zaXRpb25pbmcuICovXG4uZGlqaXRGb3JjZVN0YXRpYyB7XG5cdHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDtcbn1cblxuLyoqKiogRGlzYWJsZWQgY3Vyc29yICoqKioqL1xuLmRpaml0UmVhZE9ubHkgKixcbi5kaWppdERpc2FibGVkICosXG4uZGlqaXRSZWFkT25seSxcbi5kaWppdERpc2FibGVkIHtcblx0LyogYSByZWdpb24gdGhlIHVzZXIgd291bGQgYmUgYWJsZSB0byBjbGljayBvbiwgYnV0IGl0J3MgZGlzYWJsZWQgKi9cblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKiBEcmFnIGFuZCBEcm9wICovXG4uZG9qb0RuZEl0ZW0ge1xuICAgIHBhZGRpbmc6IDJweDsgIC8qIHdpbGwgYmUgcmVwbGFjZWQgYnkgYm9yZGVyIGR1cmluZyBkcmFnIG92ZXIgKGRvam9EbmRJdGVtQmVmb3JlLCBkb2pvRG5kSXRlbUFmdGVyKSAqL1xuXG5cdC8qIFByZXZlbnQgbWFnbmlmeWluZy1nbGFzcyB0ZXh0IHNlbGVjdGlvbiBpY29uIHRvIGFwcGVhciBvbiBtb2JpbGUgd2Via2l0IGFzIGl0IGNhdXNlcyBhIHRvdWNob3V0IGV2ZW50ICovXG5cdC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcblx0LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgLyogRGlzYWJsZSBzZWxlY3Rpb24vQ29weSBvZiBVSVdlYlZpZXcgKi9cbn1cbi5kb2pvRG5kSG9yaXpvbnRhbCAuZG9qb0RuZEl0ZW0ge1xuICAgIC8qIG1ha2UgY29udGVudHMgb2YgaG9yaXpvbnRhbCBjb250YWluZXIgYmUgc2lkZSBieSBzaWRlLCByYXRoZXIgdGhhbiB2ZXJ0aWNhbCAqL1xuICAgICNkaXNwbGF5OiBpbmxpbmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZG9qb0RuZEl0ZW1CZWZvcmUsXG4uZG9qb0RuZEl0ZW1BZnRlciB7XG5cdGJvcmRlcjogMHB4IHNvbGlkICMzNjk7XG59XG4uZG9qb0RuZEl0ZW1CZWZvcmUge1xuICAgIGJvcmRlci13aWR0aDogMnB4IDAgMCAwO1xuICAgIHBhZGRpbmc6IDAgMnB4IDJweCAycHg7XG59XG4uZG9qb0RuZEl0ZW1BZnRlciB7XG4gICAgYm9yZGVyLXdpZHRoOiAwIDAgMnB4IDA7XG4gICAgcGFkZGluZzogMnB4IDJweCAwIDJweDtcbn1cbi5kb2pvRG5kSG9yaXpvbnRhbCAuZG9qb0RuZEl0ZW1CZWZvcmUge1xuICAgIGJvcmRlci13aWR0aDogMCAwIDAgMnB4O1xuICAgIHBhZGRpbmc6IDJweCAycHggMnB4IDA7XG59XG4uZG9qb0RuZEhvcml6b250YWwgLmRvam9EbmRJdGVtQWZ0ZXIge1xuICAgIGJvcmRlci13aWR0aDogMCAycHggMCAwO1xuICAgIHBhZGRpbmc6IDJweCAwIDJweCAycHg7XG59XG5cbi5kb2pvRG5kSXRlbU92ZXIge1xuXHRjdXJzb3I6cG9pbnRlcjtcbn1cbi5kal9nZWNrbyAuZGlqaXRBcnJvd0J1dHRvbklubmVyIElOUFVULFxuLmRqX2dlY2tvIElOUFVULmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdC1tb3otdXNlci1mb2N1czppZ25vcmU7XG59XG4uZGlqaXRGb2N1c2VkIC5kaWppdE1lbnVJdGVtU2hvcnRjdXRLZXkge1xuXHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbiIsIi8qIERpaml0IGN1c3RvbSBzdHlsaW5nICovXG4uZGlqaXRCb3JkZXJDb250YWluZXIge1xuICAgIGhlaWdodDogMzUwcHg7XG59XG4uZGlqaXRUb29sdGlwQ29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xufVxuLmRpaml0Q29udGVudFBhbmUge1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7IC8qIFdpZGdldHMgbGlrZSB0aGUgZGF0YSBncmlkIHBhc3MgdGhlaXIgc2Nyb2xsXG4gICAgb2Zmc2V0IHRvIHRoZSBwYXJlbnQgaWYgdGhlcmUgaXMgbm90IGVub3VnaCByb29tIHRvIGRpc3BsYXkgYSBzY3JvbGwgYmFyXG4gICAgaW4gdGhlIHdpZGdldCBpdHNlbGYsIHNvIGRvIG5vdCBoaWRlIHRoZSBvdmVyZmxvdy4gKi9cbn1cblxuLyogR2xvYmFsIEJvb3RzdHJhcCBjaGFuZ2VzICovXG5cbi8qIENsaWVudCBkZWZhdWx0cyBhbmQgaGVscGVycyAqL1xuLm14LWRhdGF2aWV3LWNvbnRlbnQsIC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcjpub3QoLm14LXNjcm9sbGNvbnRhaW5lci1uZXN0ZWQpLCAubXgtdGFiY29udGFpbmVyLWNvbnRlbnQsIC5teC1ncmlkLWNvbnRlbnQge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cbmh0bWwsIGJvZHksICNjb250ZW50IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG4jY29udGVudCA+IC5teC1wYWdlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xufVxuXG4ubXgtbGVmdC1hbGlnbmVkIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LXJpZ2h0LWFsaWduZWQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuLm14LWNlbnRlci1hbGlnbmVkIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5teC10YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtdGFibGUgdGgsXG4ubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLm14LXRhYmxlIHRoLm5vcGFkZGluZyxcbi5teC10YWJsZSB0ZC5ub3BhZGRpbmcge1xuXHRwYWRkaW5nOiAwO1xufVxuXG4ubXgtb2Zmc2NyZWVuIHtcbiAgICAvKiBXaGVuIHBvc2l0aW9uIHJlbGF0aXZlIGlzIG5vdCBzZXQgSUUgZG9lc24ndCBwcm9wZXJseSByZW5kZXIgd2hlbiB0aGlzIGNsYXNzIGlzIHJlbW92ZWRcbiAgICAgKiB3aXRoIHRoZSBlZmZlY3QgdGhhdCBlbGVtZW50cyBhcmUgbm90IGRpc3BsYXllZCBvciBhcmUgbm90IGNsaWNrYWJsZS5cbiAgICAqL1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLm14LWllLWV2ZW50LXNoaWVsZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAtMTtcbn1cblxuLm14LXN3aXBlLW5hdmlnYXRpb24tcHJvZ3Jlc3Mge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBoZWlnaHQ6IDU0cHg7XG4gICAgd2lkdGg6IDU0cHg7XG4gICAgdG9wOiBjYWxjKDUwJSAtIDI3cHgpO1xuICAgIGxlZnQ6IGNhbGMoNTAlIC0gMjdweCk7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaE5nQTJBUE1BQVAvLy93QUFBSGg0ZUJ3Y0hBNE9EdGpZMkZSVVZOemMzTVRFeEVoSVNJcUtpZ0FBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQWtLQUFBQUlmNGFRM0psWVhSbFpDQjNhWFJvSUdGcVlYaHNiMkZrTG1sdVptOEFJZjhMVGtWVVUwTkJVRVV5TGpBREFRQUFBQ3dBQUFBQU5nQTJBQUFFeXhESVNhdTlPT3ZOdS85Z0tJNWt5U0VKUVNTSTZVcUtLaFBLV3lMejNOcGltcXNKbnVnM0U0YUlNaVBJOXdzcVBUamlUbGt3cUF3RlRDeFhleFlHczBIMmdnSk9MWUxCUURDeTVnd213WXg5SkpyQXNzSFFYc0tyOUNGdU0zQWxjakowSUFkK0JBTUhMbWxySkFkdUJvNVBsNWlabXB1Y25aNmZjV3FJbUpDamFIT1poaXFtRkl1QWw2NFpzWml6RjZvRXJFSzN1Uk9sbTc2Z3djTER4TVhHeDhYQWo2SWt1NCtvSXJVazBoL1UwV0Vqem5IUUlzcWhrY2pCM3NuY3hkYkM1K0xseWN6aDdrOFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRNRU1oSnE3MDQ2ODI3LzJBb2ptUnBubVZoRUlSUm9HY3hzT3p3d3VSS3N3Wk83anZmQ0VnVGluUzduaEYwbU5FR2h3c2l3VW9nbHBTRHpoQzFLSWlLa1dBd0VKZ1FSTllWSk5pWlNkUjBJdVNzbGRKRlVKMHd1T01KSVcwMGJ5TnhSSE9CWklRamFHbHJXQnhmUUdHUUhsTlZqNVdhbTV5ZG5wOUxZMldib29zV2dpeW1RcWdFcWhON2ZaQ3dHYk95TzdFWHJLNDR1aHFscElxZ3dzUEV4Y2JIeU1lL0tNc2l2U2JQZExjbnRkSlAxTlBPYmlmUmlhUE13Y25DemNyYnlOWEc2TVhkeHVUaTd6NFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRPRU1oSnE3MDQ2ODI3LzJBb2ptUnBubWlxQXNJd0NLc3BFRFFCeCtOUUV3T2U3ejFmYUZhN0NVR3QxMUZZTU5BTUJWTFNTQ3JvYW9Qb2NFY1ZPWGNFZytoS0M1TEF0VEhRaEthSmlMUnU2THNUdjEzeTBJSE1PeXc5QjE4R2ZuK0Zob2VJaVlvWkNBazBDUWlMRmdwb0NobFRSd2h0QkpFV2NEWkNqbTBKRjN4bU1adHVGcVpDcVFRWG4za29vbWlrc0hpWm01MlNBSlJnbHJ3VGpZKzd3Y2JIeU1uS0U1Z296VzljSjdFL1dDZXNhdFVtMTF0RjB0RWp6eks0eTRuaHh0UEkyOGJxd2VqSTV1VHhKaEVBSWZrRUNRb0FBQUFzQUFBQUFEWUFOZ0FBQk1zUXlFbXJ2VGpyemJ2L1lDaU9aR21lYUtvQ3dqQUlxeWtRTkFISDQxQVRBNTd2UFY5b1Zyc0pRYTNYY1lsS0dtV3VKM0luRlJGcDFZNnVGaXh0YVYzUWwzY2FoejlYMnltZDdUaFRiNlo4VHEvYjcvaTh2R0NnR1FvYWNVSUZab0FYYkVkOU93UUdHR1pIaXpXT1FKQ1JCQmlJUW9vN2paaFJTd2RtQjNvVUI0b0dvNlNxcTZ5dE1RZ0pOQWtJckFxUkNpT0NJd2lXQkxSVFJTV3hsZ2toanlTOU5NYVV5TWxEVk1LOXhVT2ZKYnlXdjNxMmk3aEx1aFd3c3RsQ21hdkg1c3lyNWVyVnJ1NDRFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWlaY2dVR05BWUZKSk1pQldhZ1E0TWxuVHNFQmlLTElxczFya0Ftc1RSV3FDU3FPNjFXa1JrSUNUUUpDQmNIWmdkSENyRUt4cW9HeVVJSXRnVEZlc0syQ1h2VXQzcmNCSHZZc2RwNjA3Yldlc3VyelpYQncrZ2lFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWdTQ0FrMENRaVdDanMwQ3BRSW9qV2ZKWk1kbktjRUNhcURJSzQxWGtBaHREUzJYQ0d0cDdBa2p4Nm1ycW5Ca1NLaG9xUVhCUVkwQmdWTG01M0dGUVZtMHBUUG9nYVZ0Tit1bGR3NzNwUUhaZ2VXQjl3RzZwa29FUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2dktVU0Nsa0RnTFFvN05BcC9Fd2lDTlg1Q2NSWjdpQVFKaTFRWGp6VkNacFNWQkpkQUY0NklrVDVzRjRlUGlxSlJHWUdDaElXR2puMnVzck8wdFhZRkJqUUdCYlFGWnJ4UVNpSzVnZ1l5a3lHVkpwakpqOHVkSWNRN3hpV2pJUWRtQjJ1cEl3ZkVCdHEySG95ejFyUE01OURseUxUazR1OHBFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3a1JDVm9Db1dtOWhCTEZqcWFBZGhEVEdyUGtOSDZTV1VLQ3UvTjJ3cldTcmhiOG9HbHFZQWljSFpPSU5ETUhHOTdlWFhvZFVsTlZWbGRnUzRhS2k0eU5qbzhGQmpRR0JZOFhCV3MwQTVWUVhSbVNVd2FkWlJob1VKazhwV0duY2hlZ082SkNlRFlZQjZnREIxYWVHUWVnQnJtV3djTER4TVhHeDF5QUtic2lzNEVnemo5c0o3ZlNtdFN0UTZReTI4M0tLTXpJamVIRTBjYlY1OW5sM2NYazR1OG9FUUE3KTtcbn1cblxuIiwiLyogQmFjYXVzZSB3ZSB1c2UgY2hlY2tib3hlcyB3aXRob3V0IGxhYmVscywgYWxpZ24gdGhlbSB3aXRoIG90aGVyIHdpZGdldHMuICovXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgIG1hcmdpbjogOXB4IDA7XG59XG5cbi5teC1jaGVja2JveCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG59XG5cbi5mb3JtLXZlcnRpY2FsIC5mb3JtLWdyb3VwLm14LWNoZWNrYm94IGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5mb3JtLXZlcnRpY2FsIC5mb3JtLWdyb3VwLm14LWNoZWNrYm94LmxhYmVsLWFmdGVyIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLm5vLWNvbHVtbnMge1xuICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xufVxuXG4ubXgtcmFkaW9idXR0b25zLmlubGluZSAucmFkaW8ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG59XG5cbi5teC1yYWRpb2J1dHRvbnMgLnJhZGlvIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgLyogUmVzZXQgYm9vdHN0cmFwIHJ1bGVzICovXG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLm14LXJhZGlvYnV0dG9ucyAucmFkaW8gbGFiZWwge1xuICAgIC8qIFJlc2V0IGJvb3RzdHJhcCBydWxlcyAqL1xuICAgIHBhZGRpbmctbGVmdDogMDtcbn1cblxuLmFsZXJ0IHtcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XG59XG5cbi5teC1jb21wb3VuZC1jb250cm9sIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xufVxuXG4ubXgtY29tcG91bmQtY29udHJvbCBidXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG59XG5cbltkaXI9XCJydGxcIl0gLm14LWNvbXBvdW5kLWNvbnRyb2wgYnV0dG9uIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbiIsIi5teC10b29sdGlwIHtcbiAgICBtYXJnaW46IDEwcHg7XG59XG4ubXgtdG9vbHRpcC1jb250ZW50IHtcbiAgICB3aWR0aDogNDAwcHg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbn1cbi5teC10b29sdGlwLXByZXBhcmUge1xuICAgIGhlaWdodDogMjRweDtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEdBQVlBTVFkQUtYWjhuZkY2NFRMN1F1WDNGZTQ1emFxNGhPYjNmTDYvZnI5L3JyaTlkWHQrWnJVOEN5bTRVbXk1Y0hsOXVQeisySzg2T2oxL056dytyRGQ5TTNxK0pEUTcyckE2aU9pMyszNC9FQ3U0OGpvOXgyZjNnV1YyLy8vL3dBQUFBQUFBQ0gvQzA1RlZGTkRRVkJGTWk0d0F3RUFBQUFoL3d0WVRWQWdSR0YwWVZoTlVEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVFF3SURjNUxqRTJNRFExTVN3Z01qQXhOeTh3TlM4d05pMHdNVG93T0RveU1TQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRnZ0tFMWhZMmx1ZEc5emFDa2lJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZSVUpGTmtVNE5FWkNORVZETVRGRk9EazNNREJCTlVVMVJVTTRRamczUVRVaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlJVSkZOa1U0TlRCQ05FVkRNVEZGT0RrM01EQkJOVVUxUlVNNFFqZzNRVFVpUGlBOGVHMXdUVTA2UkdWeWFYWmxaRVp5YjIwZ2MzUlNaV1k2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRwRlFrVTJSVGcwUkVJMFJVTXhNVVU0T1Rjd01FRTFSVFZGUXpoQ09EZEJOU0lnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBGUWtVMlJUZzBSVUkwUlVNeE1VVTRPVGN3TUVFMVJUVkZRemhDT0RkQk5TSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QZ0gvL3YzOCsvcjUrUGYyOWZUejh2SHc3Kzd0N092cTZlam41dVhrNCtMaDROL2UzZHpiMnRuWTE5YlYxTlBTMGREUHpzM015OHJKeU1mR3hjVER3c0hBdjc2OXZMdTZ1YmkzdHJXMHM3S3hzSyt1cmF5cnFxbW9wNmFscEtPaW9hQ2ZucDJjbTVxWm1KZVdsWlNUa3BHUWo0Nk5qSXVLaVlpSGhvV0VnNEtCZ0g5K2ZYeDdlbmw0ZDNaMWRITnljWEJ2Ym0xc2EycHBhR2RtWldSalltRmdYMTVkWEZ0YVdWaFhWbFZVVTFKUlVFOU9UVXhMU2tsSVIwWkZSRU5DUVVBL1BqMDhPem81T0RjMk5UUXpNakV3THk0dExDc3FLU2duSmlVa0l5SWhJQjhlSFJ3Ykdoa1lGeFlWRkJNU0VSQVBEZzBNQ3dvSkNBY0dCUVFEQWdFQUFDSDVCQVVFQUIwQUxBQUFBQUFZQUJnQUFBVWNZQ2VPWkdtZWFLcXViT3UrY0N6UGRHM2ZlSzd2Zk8vL3dPQXJCQUFoK1FRRkJBQWRBQ3dBQUFBQUFRQUJBQUFGQTJBWEFnQWgrUVFGQkFBZEFDd1VBQXdBQVFBQ0FBQUZBeURUaEFBaCtRUUZCQUFkQUN3VEFBc0FBZ0FHQUFBRkMyQVhkRnhuZE1UUU1WMElBQ0g1QkFVRUFCMEFMQkVBQ3dBRUFBZ0FBQVVSWUNjMllpbHlvcldkVm1jTnA4aTBYUWdBSWZrRUJRUUFIUUFzRHdBT0FBWUFCZ0FBQlE5Z0ozYUJNWjRqaDQ0V0I0bkZjSVlBSWZrRUNRUUFIUUFzRFFBUEFBZ0FCZ0FBQlJGZ0o0NGRSSGJCcVlvcEdRd2NPUmhxQ0FBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRkxXQW5qbVJwbm1pcXJtenJ2bkFzejNSdDMzaXVrOEpnRHdRYlIyaWhCVGlOV1c4WTR6aDlHaGxnUnkyRkFBQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZNMkFuam1ScG5taXFybXpydm5Bc3ozUnQzMmh6YzN0U0M3emFZT2VvY1NBMFlNWlZJUWtHd1JhUVE2VjJpaklBYnFzS0FRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZObUFuam1ScG5taXFybXpydm5Bc3ozUnQzMmh6Yy90VVY3eWFJV01MMGppRVZRVUZMS3dDSEVPcFlqQ3lNcHlzbGloYjRMNnJFQUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGT21BbmptUnBubWlxcm16cnZuQXN6M1J0MzJoemN6dFFWN3phcG1BTG1vQXNqZzdGTUI0NWpGV0RzeWxWTnM1VmdjUHRFbU8rQ202c0NnRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCVDlnSjQ1a2FaNW9xcTVzNjc1d0xNOTBiZDhvY1hPQ3plMm14c2ExWVp4K0xRN2cxRUNxT0prVWc3TkljWXlxNXJDMGdicW1uSENZc1lRdGU3aDBLZ1FBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQlVSZ0o0NWthWjVvcXE1czY3NXdMTTkwYmQ4b1lRWXdKNVNjbmluNElwSVlGOWNsV1ZvWVY1ekZLZk5FY1RLcFN4WElURkc3SXkyMnhlQ1l6eGNwVFBxajRONm9FQUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGU21BbmptUnBubWlxcm16cnZuQXN6M1ROYm5iQXdZUzV2NXdBcWZKekZVZEhWckt6WWJnWU9OK2t4YW1jQ2dQV29KRGFaRk9EYUtyQWNaWVlIRzVydzJtN04xWllSUmkzMlZjaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVlBZQ2VPWkdtZWFLcXViT3UrY0N6UDVVYlFJb2QzZ3I3N3JodkpBbXh4TEtVaVM5bmhURjVNQThQRk1KaDZMbzdneEJpd0JsUFV4cHNhYkZZTVRwaVVYcXNFQm81OGJ0akN0aGI3YnI4S0FRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZVMkFuam1ScG5taXFybXpydmpETFhERXBjRFZwWlBtSTk1MGJVUFJ6UVVxUVlvdHpKQ2xaejhsenhabVVEQVZYd1hDYW9yeWRDM2Rsb0tFTTQzTWFkZUZrU3dXT2VSVXdjTzU0UXlBbU9BcUdnQzBoQUNINUJBVUVBQjBBTEFBQUFBQVlBQmdBQUFWWFlDZU9aR21lYUtxdWJMdHVsbnNhaG14dXRVMEduRjRPRFIrcEp4VHhpaUpDemhYNzJRYUVIZEUxSFZWWkhNQXY0OG9NVE1jV0ozRENzUXliMUdBNSs2bzJIRzRwdzBtekFnTU9aNURmazIwQlVYOUloQzBoQUNINUJBa0VBQjBBTEFJQUF3QVVBQk1BQUFVL1lDZUsxdENNYUpweWhPcU93L2JPOUd6VmM0dnY5YzJuc2w5QVpQaDFpajZqY3JRUW5YYlBEc1E0SFFWcFYxUld0VTFGUjE5WDlWZ1VqV20rWkNvRUFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVmJZQ2VPWkdtZWFLcU9GckdpeE1CeHpHc2FuR3VidzdhZkJ0K3ZST0FNVGJsanlhaGtNWnVkaG5BWEtFbUhtOFp5K0JRdHVpL09ZcWw3RlUvZ1ZQSTJUVzBNcVo1cU0xamh5cU1pM0R6amJEWjllRFlRRFZwalVJZy9JUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGWUdBbmptUnBubWlxaWxXWFpjUnFFaHczWE5jZ2t3WUg3U2ZPQlhneURJa2xHdExrVzVZNFRoSkJGeFZsamtCQjZZcThaRXBVWUpnRkpYSmFwT1lPVXBhMlY1eVl5U2k3R0ZKQzFlVmRWSlBZZHpJME5qZ0ROWEpFQkYrSVZZMUFJUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGWldBbmptUnBubWlxaWtKWEZNUnFOaHhuTUlWUngvTEFXYWFBck1OaERGRUQ0M0hHV1o1K3pwS2dHUzBacXFTQ2Npa2NhWjA0RXVHNk5QQkcxR01hRFJ4YTFpS2F1bkZLeWhpRFZGSEZnSnQ4YlNSdmVUSTBOZ3dNT2h4MFRnUXZIUzFZa2xFaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVm1ZQ2VPWkdtZWFLcUtRY01VeldwbUhMZDF4VlpuY2pjTUFWUGdwMXB3Q2lyR0RUVkE5azZad1JQRm1aNENWV3Vwc2RTT1h0cmdWMXRna0xqV1RZeVVmYlpISExFTU81UDJCanhUVTFhd240NHFCVzhtQzBSQ2hpczBOZ1U1TzFZdFptdGVrNU1oQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFWbllDZU9aR21lYUtxS1FYWmQyV29XSEhkMURWTVhjc1VOSjRHQnMrTHdVclFLeWlpam5RcEFXY2R3NGdTa3FBQVJlM0p4VDdkdngwS0NmYjBqTk5aTTJtTGRJeXRXTzR2S0JzY1NjK1ZjNXA5d1ZYWWtBUU9CS0RRMkdTNDdYeTB2SFZkaWs1UWlJUUFoK1FRRkJBQWRBQ3dBQUFBQUdBQVlBQUFGYm1BbmptUnBubWlxaWxheGJjVnFNaHpIZEExdHl3Sm5uQUlEUjZEaVpGUVpUc29vUzU0WVAxbkhjQ3NOcFNJbHlhTEZjZ0trUWhWcjJwQkZpOUttY1c2WVIrSXpJMGJxU3UxWm9qZFJnbUtwSjB3clRpaUNLSVFvUFZFbFFYZ29PZ3dOT1RWalVpMW1kR2VhbXlVaEFDSDVCQVVFQUIwQUxBSUFBZ0FVQUJRQUFBVmJZQ2VPa01HZG5BR05MSWx5dy9DdWJjZWNXWjJkVEhzYk5aYXBKNEtrZ2kwVDdZU3NNWTI1Sm10WDRraWRKdXVWaFJwc1dUTFlkeFRXamsrbXNTZ0ZIVk03ekcvY0NMd3FSei9wMElmVDhZSkdYV1VjTkVoVktDbzFJUUFoK1FRRkJBQWRBQ3dCQUFFQUZnQVdBQUFGWjJBbmptUFZCV1NxbmdaSGNnYTZqc2JyMG5OMTEyVEZjNmFVNnpZYnBtckVXY2ZGTzRrRXloSFUyYWsxbzlYc0VydHlCYm1xWUpKN1E0MnhMaG00MlBsaVRUc3QxeXBTYzZkcUpGa3VHazVWQWtZcE9pSlhiVDlLVnh4Smhpb0JMUytOVVNaMktpRUFJZmtFQ1FRQUhRQXNBUUFCQUJZQUZnQUFCV3BnSjQ2aWxWMVgxazFrUzE2Y3kxMHUyY1MxeURVMU0zSUVFZ0hYOGRsR3dWcXl3L3ZsY2tSYVovbE1TbVBFcDY0VHM0aW8ycVJKcXoyUm42aHpMcVd1cWI1dEtyWTk3MGpCU3BHVTI5Nk9tbE01UzRBaVJseFVReU9HTmxreWhDNHdNbnRrSmlncUxDNGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVYrWUNlT1pHbWVwVlZjVjlaTjZMbHhkRTF2OGRqWWZOM0VEQnVFQkxFeFRqdmE4RlNrL1VxMW5DaEttbkdXdVNadVJKVjJ1aGFsbDh1eGlESzBNZG5WdWFUVlg4NUY1T2JBNC9NTzJnNm5zZU5ZVWsxbVUyOWVYUjFXZ1NoYUpBdUlLSkFkU1ZlTVBpZEJrRTAwUnlpVVBaZFNWajFiYWhZWkxCbUVkM0FoQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFXQllDZU9aR21lcFZWY1Y5Rk42TGx4ZEUxdjhkallmTjNFakpyQlpLZ3hUanRhVE9BejFYS2lKMm5HRVVDakhOeUlOcngyaXB5UlJlbnRNRGtXVVlGY3ByazZGN2FYZGhIRncrVU9YUzIvdXJkVlpXY2tYR1ZnVTMweE55UUxVamsxQ3lWSmdTZG5IRDhtUVlVa0FtQWNSeWlUUFUxUVZEMWFaU29zQldsNXJoMGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVdDWUNlT1pHbWVwVlZjVjlGTjZMbHhkRTF2OGRqWWZOM0VqTnJGZEtreFRqdk9JRGVnL1VxMFphN1Q1SlJtMXFub1JxSU50WjFpdG1PaGdVYzBpNmhnUG5kb3JuRDc3QldKM1cvT2x6MEd3OUY5VXdCcEloTjFZSGNqV0hRY09GMUtXbFVtU1FNQU1WVlBKVUdISXdCaUhFY29TVDAybVRGWVBZNW5LaXd1TUhodUlRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZlbUFuam1ScG5xV1ZNVXlHdmhjbnovTDFqZzJ0ejgxYnpLNVNabFk0NVRpR20wSFdLOG1TdDg2U1U0cFJvNklhU1JiRURxOGRpd3k3NVZoRVgvS0lLMktNMVIwWm8vMVd5OUYxTWpzTDF2ZjNYaklUSTFaMkhEWmxVRXA1SWtlS0oxTk5KVCtBSTE4Y1JTaEhPelNTTUp5SGNHRXJMUjJEb25BaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVjlZQ2VPWkdtZVpkQXdUSU8rRnlmUDh2V09CRDFjMTBBVHI4SU1Zb0xNQ3FjY3h3YVRBVXUxbXlqR0tWR2xvMmlXUThSMmpGVlJRT2JkQmtRTnpxQXM4bzBZUzNZbnhoREJtV1Y2ZHMzMnVUcGpZV1ZrVzExWVlDUlhYbHBiZUUyQ09Jd25WRThsUWpLR0kyQWNTQzg2UEQ0elhsUTBrbGhuTEg5eWNpRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCWDFnSjQ1a2FaNWwwQlJGZzc0TUo4OHk4NDRFZlhYWlJST3ZqR3h3RWd4a21WT09rd3pLZ0NYa1RTVGtsR0xFcWVob0c4bTBwSzhvSUFaM1pBRlJnN016ZDN5akF0UE40eFJFY25yOUxtTFQ0V05sWUdoZUhBSnVnbGhtWEZGelUxVW1TMDBvVlZBbFZWa2xSbEl2T2hrOU5HQXhORE5kWmlvZExYcDZJUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGZ0dBbmptUnBucVhRRkZrbm9HakJ6ZlJjd0NORUR4M1JaUU1hQk5hWWJWQ2JXZU9rNCtCNnM5UE05K3hFU2JKanRaTzhqYTViQUZqQTRXMUZ3WmVJMHpyL25LSU1oK3BteCtGdWdoM2FQc3ZwWlc0ZFFTUmdXNFpaWjEwbFUxVjZlRG1OTUk5REprVWNXaVpKa0ZJekF4aytRRUpWTWpVMFhtY3ZHYUNDclIwaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVjZZQ2VPWkdtZXBkQmxHWUcrR1NmUGN2YU8xcnk1UWJmTmxoZEJWa0FWWks2VDdOWUpMRTJ5SHJQekhNV0swODdSTnFwbXF3TE9KanY2cVVTY0pIbG81WkJKSEc1TVNuWnkyZThPSGoxK203dHViMTVYWkZzbFVWK0JKRG1LS0U0Y1FTWkRIRmdtUjJrM09qd0VQMTR3TkRSY1pDb3NIV2Q1YnlFQUlma0VDUVFBSFFBc0FBQUFBQmdBR0FBQUJYcGdKNDVrYVo1bDFXVk5wNkpueHMzMG5NRmpRQmR1RnhTMEFJd3dHeFpSbkFGT05PQUlTOGRsSnlxU0VhUWk0bTFFbFVZckhCNVdCQ1J4eG1hSXFNRjVqY0d0RGh2TmpVK2ZZOTBJTEI2WHVXZG9WRlpqV2xDQlhvaG1Ta3ROZUNSRUhGY25rWk1uT2pNOEtqOUJVakkxTkZ0b0VBMHRiblJqSVFBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRmdHQW5qbVJwbmlaRWRCYnFObHdzeDQwN0NyR3hkbE5IR0RHQkM4SVp1QUlEam90anNJbUF3bExST1VxV1lBR3FLTUNwalpqYUVaREUyWVU3U3BFbGZhNXdXajcydVN3aXlNTjBFYWR5N3JoSEMzZGFIQXRmVFdkakkxaGhYRjVmUmxwV0ptQk9pU2xGV1NkSUhCQXVPRXc3UFQ4eFdqQXpNbzVoRml0d2ZYMGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVYxWUNlT1pHbWVwa1YwQWVvU1hDekhxeXRXOFVWTzNSWGJIWTdCWnVCWVRqZ2QwSGNTQWtmRkV1dzVXbkJxSW82UzJ1T1FPQzF1ZGhUd2lqc1RzR2g2RG1MTlozaTVIUXpYei9PUjlzd2NzYmxYSlU1VVVTVkpUejRWS0VJTEtBdEZSeWc0ZXlNOFBuQTJNRE15V0Z3QkJDc0FkR0loQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFWellDZU9aR21lWmdCMUFlb1NBeWZQQStHU2NWWldHVGZjQWM3bGR1RzBUaHpkclZQZ25BYkRwZWp5SXhHYzBoSEhOaG9vczUxTVZZUUZrMGRCcy9ZSUtaczVxN082QXhlbDUyNU9SVjF4ZTlWaVZtNVNXeVZRWUZSSUJWSk5LRUZSS0VWSEtEazdQV00zTURNMFhHWXFjWE5xSVFBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRmQyQW5qbVJwbm1iUVdkMkVvdERBY1lZeEQ5QkxEZ05oRWp4ZGdKUFJaVGlxRThlbkUzRk9nMkpUbEJtVVl0TmRidFRMam9Da3AzY2s3Z2pLWTQ1Z1pCaXpSNWEydTJOZ09lZWQ4Z1R0NWJoRVhXTmdPMjQ0SlZGZVZTWUxTMU1FZkdGU0tFZE5QRXdrUUZaVE1UTTFOMXRqYXl4L2VGa2hBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVZvWUNlT1pHbWVwdEFGYU50WkJtY3dUR3hZN21nWXA3QzdBZzdFQmVHMGpMa1ZzbVFZSmpzUUhnbjIxT0YwVlpKVXRNd3VmVm1kU3NRSWswZUJzcG5CRW0yejcyNjFheGhYd1NNcTNOU3NSazl5UnloQlRpaEZkaWMvS1lvNU1ESTBObVlkS20yU1dTRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCV3hnSjQ1a2FaNW0xUVZvdXhvYzB6UU1aN0N1YURBb1k3Z1ZUazRnUkJWekhjN0VaQkFnUllJZktjQjdpcW9qcVZWSE9tNlBGZXlXb1JJMXRxT3pDSWZ1cUsvdERubmt0WG9OaTdaMjFXYXdkVTVQVVNkMUxZVWlRWUVvUkRrN1BYc3RBVEF5TkRaL1ZwZHhUeUVBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQldOZ0o0NWthWjVtMVFsbzJ3V2IwWFJRWTJ5Qk8yN3oyV3c2ZzY0alJCa2NRK0xFQkV5S21xTkF6emw5T2tsUTRuVlVGRldwcXRWMkJCa0p5bU8wZDl5cGRxL3ZyRE1yM1g2MThOUGJaVmlhRm50NkN5NDhLRDlKTURJME5qaGpLaXhzV3lFQUlma0VDUVFBSFFBc0FBQUFBQmdBR0FBQUJWaGdKNDVrYVo3bTBnbG91MjdGMmxuRjVwSTJhdVV0M3dNb24wc29JZzVMQXN1dHBNUXRUYjdZa3lRVk5hZldFUXRMMnNxNDN5ejQycWxpemNhYmtMeGtkOUxCRTd5VUJzeUxhcmYxUG9JcFdUVmdJaXdxZ2xnaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVlpZQ2VPWkdtZXA5QUJhTnN4aE5xcGpPeSt0c25jeGQzMUtLQlBTTnI1UnNaUjdyaE1Ia1ZPd3BQVUlDMmZyT21wSXVKcVI5N1pWenlTZnF2SXNaTThiV3JYSXFKTFRxS2I3TVdyU0FCSHdUb0xZbjArWGdwalV5RUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCVkZnSjQ1a2FaNW5oYTVqWm9sSloyVXNTYVBBdlJKMXg2Ty9YdERXSTVZQVJaS3FsVFNLWHMxb2JTSmFTcSttbUlpSzVjcXVVSkd1T2NhYXlqVzBMemtzdFUvdmtwclpxOUNRSFdURzJ1U2JleUVBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQlVsZ0o0NWthWjVuaGE0anBJcE9CN0Vrd2Rwc1FIYzYydSsvMms0NExNcU1MZVF1cHV4TVJJdW05QlNGVGErZGwyaW01R0pMdUdLWUZNeXR5dEt4U2IzeWlpcnU0clA2WllVQUFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVTVZQ2VPWkdtZUo0Q3VZMUNxS2l1Nk1ydlVkNjJiOU43dnRaOFBTQ3dtUkxHaU1yVkVKWnZMMzdNcGxGV2hwWnpOaW0zeGxxcGpseFVDQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFVM1lDZU9aR21lNklTdTRtSzY3RmpGTkoyc2Q2M0g4MTdEUHFCdlNDeUtWRVdrY1lrUzZweE1VUys2azFCWDAxT1dCWVhxbE5kVENBQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZMR0Fuam1ScG5taXFvdFBxdm5Bc3oySkxxL2F0Ny96cDlNRGdLQmNqQ284OHhVdXBNNmFjVHRnUGFRb0JBQ0g1QkFVRUFCMEFMQUFBQUFBWUFCZ0FBQVVqWUNlT1pHbWVhS3F1Yk91K2NMeFNjbTNmZUk3VGV0L3p2cUJ3eUFLV2pDOGtNUVFBT3c9PSkgbm8tcmVwZWF0IHNjcm9sbCBjZW50ZXIgY2VudGVyO1xufVxuLm14LXRvb2x0aXAtY29udGVudCAudGFibGUgdGgsXG4ubXgtdG9vbHRpcC1jb250ZW50IC50YWJsZSB0ZCB7XG4gICAgcGFkZGluZzogMnB4IDhweDtcbn1cbiIsIi5teC10YWJjb250YWluZXItcGFuZSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuLm14LXRhYmNvbnRhaW5lci1jb250ZW50LmxvYWRpbmcge1xuICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaE5nQTJBUE1BQVAvLy93QUFBSGg0ZUJ3Y0hBNE9EdGpZMkZSVVZOemMzTVRFeEVoSVNJcUtpZ0FBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQWtLQUFBQUlmNGFRM0psWVhSbFpDQjNhWFJvSUdGcVlYaHNiMkZrTG1sdVptOEFJZjhMVGtWVVUwTkJVRVV5TGpBREFRQUFBQ3dBQUFBQU5nQTJBQUFFeXhESVNhdTlPT3ZOdS85Z0tJNWt5U0VKUVNTSTZVcUtLaFBLV3lMejNOcGltcXNKbnVnM0U0YUlNaVBJOXdzcVBUamlUbGt3cUF3RlRDeFhleFlHczBIMmdnSk9MWUxCUURDeTVnd213WXg5SkpyQXNzSFFYc0tyOUNGdU0zQWxjakowSUFkK0JBTUhMbWxySkFkdUJvNVBsNWlabXB1Y25aNmZjV3FJbUpDamFIT1poaXFtRkl1QWw2NFpzWml6RjZvRXJFSzN1Uk9sbTc2Z3djTER4TVhHeDhYQWo2SWt1NCtvSXJVazBoL1UwV0Vqem5IUUlzcWhrY2pCM3NuY3hkYkM1K0xseWN6aDdrOFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRNRU1oSnE3MDQ2ODI3LzJBb2ptUnBubVZoRUlSUm9HY3hzT3p3d3VSS3N3Wk83anZmQ0VnVGluUzduaEYwbU5FR2h3c2l3VW9nbHBTRHpoQzFLSWlLa1dBd0VKZ1FSTllWSk5pWlNkUjBJdVNzbGRKRlVKMHd1T01KSVcwMGJ5TnhSSE9CWklRamFHbHJXQnhmUUdHUUhsTlZqNVdhbTV5ZG5wOUxZMldib29zV2dpeW1RcWdFcWhON2ZaQ3dHYk95TzdFWHJLNDR1aHFscElxZ3dzUEV4Y2JIeU1lL0tNc2l2U2JQZExjbnRkSlAxTlBPYmlmUmlhUE13Y25DemNyYnlOWEc2TVhkeHVUaTd6NFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRPRU1oSnE3MDQ2ODI3LzJBb2ptUnBubWlxQXNJd0NLc3BFRFFCeCtOUUV3T2U3ejFmYUZhN0NVR3QxMUZZTU5BTUJWTFNTQ3JvYW9Qb2NFY1ZPWGNFZytoS0M1TEF0VEhRaEthSmlMUnU2THNUdjEzeTBJSE1PeXc5QjE4R2ZuK0Zob2VJaVlvWkNBazBDUWlMRmdwb0NobFRSd2h0QkpFV2NEWkNqbTBKRjN4bU1adHVGcVpDcVFRWG4za29vbWlrc0hpWm01MlNBSlJnbHJ3VGpZKzd3Y2JIeU1uS0U1Z296VzljSjdFL1dDZXNhdFVtMTF0RjB0RWp6eks0eTRuaHh0UEkyOGJxd2VqSTV1VHhKaEVBSWZrRUNRb0FBQUFzQUFBQUFEWUFOZ0FBQk1zUXlFbXJ2VGpyemJ2L1lDaU9aR21lYUtvQ3dqQUlxeWtRTkFISDQxQVRBNTd2UFY5b1Zyc0pRYTNYY1lsS0dtV3VKM0luRlJGcDFZNnVGaXh0YVYzUWwzY2FoejlYMnltZDdUaFRiNlo4VHEvYjcvaTh2R0NnR1FvYWNVSUZab0FYYkVkOU93UUdHR1pIaXpXT1FKQ1JCQmlJUW9vN2paaFJTd2RtQjNvVUI0b0dvNlNxcTZ5dE1RZ0pOQWtJckFxUkNpT0NJd2lXQkxSVFJTV3hsZ2toanlTOU5NYVV5TWxEVk1LOXhVT2ZKYnlXdjNxMmk3aEx1aFd3c3RsQ21hdkg1c3lyNWVyVnJ1NDRFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWlaY2dVR05BWUZKSk1pQldhZ1E0TWxuVHNFQmlLTElxczFya0Ftc1RSV3FDU3FPNjFXa1JrSUNUUUpDQmNIWmdkSENyRUt4cW9HeVVJSXRnVEZlc0syQ1h2VXQzcmNCSHZZc2RwNjA3Yldlc3VyelpYQncrZ2lFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWdTQ0FrMENRaVdDanMwQ3BRSW9qV2ZKWk1kbktjRUNhcURJSzQxWGtBaHREUzJYQ0d0cDdBa2p4Nm1ycW5Ca1NLaG9xUVhCUVkwQmdWTG01M0dGUVZtMHBUUG9nYVZ0Tit1bGR3NzNwUUhaZ2VXQjl3RzZwa29FUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2dktVU0Nsa0RnTFFvN05BcC9Fd2lDTlg1Q2NSWjdpQVFKaTFRWGp6VkNacFNWQkpkQUY0NklrVDVzRjRlUGlxSlJHWUdDaElXR2puMnVzck8wdFhZRkJqUUdCYlFGWnJ4UVNpSzVnZ1l5a3lHVkpwakpqOHVkSWNRN3hpV2pJUWRtQjJ1cEl3ZkVCdHEySG95ejFyUE01OURseUxUazR1OHBFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3a1JDVm9Db1dtOWhCTEZqcWFBZGhEVEdyUGtOSDZTV1VLQ3UvTjJ3cldTcmhiOG9HbHFZQWljSFpPSU5ETUhHOTdlWFhvZFVsTlZWbGRnUzRhS2k0eU5qbzhGQmpRR0JZOFhCV3MwQTVWUVhSbVNVd2FkWlJob1VKazhwV0duY2hlZ082SkNlRFlZQjZnREIxYWVHUWVnQnJtV3djTER4TVhHeDF5QUtic2lzNEVnemo5c0o3ZlNtdFN0UTZReTI4M0tLTXpJamVIRTBjYlY1OW5sM2NYazR1OG9FUUE3KSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDMycHggMzJweDtcbn1cbi5teC10YWJjb250YWluZXItdGFicyB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLm14LXRhYmNvbnRhaW5lci10YWJzIGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ubXgtdGFiY29udGFpbmVyLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQ6ICNmMmRlZGU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGNvbG9yOiAjYjk0YTQ4O1xuICAgIHRvcDogMHB4O1xuICAgIHJpZ2h0OiAtNXB4O1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB6LWluZGV4OiAxOyAvKiBpbmRpY2F0b3Igc2hvdWxkIG5vdCBoaWRlIGJlaGluZCBvdGhlciB0YWIgKi9cbn1cbiIsIi8qIGJhc2Ugc3RydWN0dXJlICovXG4ubXgtZ3JpZCB7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47IC8qIHRvIHByZXZlbnQgYW55IG1hcmdpbiBmcm9tIGVzY2FwaW5nIGdyaWQgYW5kIGZvb2JhcmluZyBvdXIgc2l6ZSBjYWxjdWxhdGlvbnMgKi9cbn1cbi5teC1ncmlkLWNvbnRyb2xiYXIsIC5teC1ncmlkLXNlYXJjaGJhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uLFxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIC5teC1idXR0b24ge1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIC5teC1idXR0b24gKyAubXgtYnV0dG9uLFxuLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uICsgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuM2VtO1xufVxuXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXNlYXJjaC1jb250cm9scyAubXgtYnV0dG9uICsgLm14LWJ1dHRvbixcbltkaXI9XCJydGxcIl0gLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uICsgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjNlbTtcbn1cblxuLm14LWdyaWQtcGFnaW5nYmFyLFxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG4ubXgtZ3JpZC10b29sYmFyLCAubXgtZ3JpZC1zZWFyY2gtaW5wdXRzIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBmbGV4OiAxO1xufVxuXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXRvb2xiYXIsXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXNlYXJjaC1pbnB1dHMge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAwcHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXBhZ2luZ2JhcixcbltkaXI9XCJydGxcIl0gLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIHtcbiAgICBtYXJnaW4tbGVmdDogMHB4O1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbn1cblxuLm14LWdyaWQtcGFnaW5nLXN0YXR1cyB7XG4gICAgcGFkZGluZzogMCA4cHggNXB4O1xufVxuXG4vKiBzZWFyY2ggZmllbGRzICovXG4ubXgtZ3JpZC1zZWFyY2gtaXRlbSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLm14LWdyaWQtc2VhcmNoLWxhYmVsIHtcbiAgICB3aWR0aDogMTEwcHg7XG4gICAgcGFkZGluZzogMCA1cHg7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbltkaXI9XCJydGxcIl0gLm14LWdyaWQtc2VhcmNoLWxhYmVsIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LWdyaWQtc2VhcmNoLWlucHV0IHtcbiAgICB3aWR0aDogMTUwcHg7XG4gICAgcGFkZGluZzogMCA1cHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4ubXgtZ3JpZC1zZWFyY2gtbWVzc2FnZSB7XG4gICAgZmxleC1iYXNpczogMTAwJTtcbn1cblxuLyogd2lkZ2V0IGNvbWJpbmF0aW9ucyAqL1xuLm14LWRhdGF2aWV3IC5teC1ncmlkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbiIsIi5teC1jYWxlbmRhciB7XG4gICAgei1pbmRleDogMTAwMDtcbn1cblxuLm14LWNhbGVuZGFyLW1vbnRoLWRyb3Bkb3duLW9wdGlvbnMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuLm14LWNhbGVuZGFyLCAubXgtY2FsZW5kYXItbW9udGgtZHJvcGRvd24ge1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4ubXgtY2FsZW5kYXItbW9udGgtY3VycmVudCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ubXgtY2FsZW5kYXItbW9udGgtc3BhY2VyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAwcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi5teC1jYWxlbmRhciwgLm14LWNhbGVuZGFyLW1vbnRoLWRyb3Bkb3duLW9wdGlvbnMge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JleTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbiIsIi5teC1kYXRhZ3JpZCB0ciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubXgtZGF0YWdyaWQgdHIubXgtZGF0YWdyaWQtcm93LWVtcHR5IHtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi5teC1kYXRhZ3JpZCB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm14LWRhdGFncmlkIHRoLCAubXgtZGF0YWdyaWQgdGQge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG59XG5cbi8qIGhlYWQgKi9cbi5teC1kYXRhZ3JpZCB0aCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyAvKiBSZXF1aXJlZCBmb3IgdGhlIHBvc2l0aW9uaW5nIG9mIHRoZSBjb2x1bW4gcmVzaXplcnMgKi9cbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7XG59XG4ubXgtZGF0YWdyaWQtaGVhZC1jYXB0aW9uIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ubXgtZGF0YWdyaWQtc29ydC1pY29uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgcGFkZGluZy1sZWZ0OiA1cHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kYXRhZ3JpZC1zb3J0LWljb24ge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBhZGRpbmc6IDAgNXB4IDAgMDtcbn1cbi5teC1kYXRhZ3JpZC1jb2x1bW4tcmVzaXplciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtNnB4O1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBjdXJzb3I6IGNvbC1yZXNpemU7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kYXRhZ3JpZC1jb2x1bW4tcmVzaXplciB7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogLTZweDtcbn1cblxuLyogYm9keSAqL1xuLm14LWRhdGFncmlkIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRkIHtcbiAgICBib3JkZXItdG9wOiBub25lO1xufVxuLm14LWRhdGFncmlkIHRib2R5IHRyOm50aC1jaGlsZCgybisxKSB0ZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTtcbn1cbi5teC1kYXRhZ3JpZCB0Ym9keSAuc2VsZWN0ZWQgdGQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7XG59XG4ubXgtZGF0YWdyaWQtZGF0YS13cmFwcGVyIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ubXgtZGF0YWdyaWQgdGJvZHkgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDE2cHg7XG4gICAgbWF4LWhlaWdodDogMTZweDtcbn1cbi5teC1kYXRhZ3JpZCBpbnB1dCxcbi5teC1kYXRhZ3JpZCBzZWxlY3QsXG4ubXgtZGF0YWdyaWQgdGV4dGFyZWEge1xuICAgIGN1cnNvcjogYXV0bztcbn1cblxuLyogZm9vdCAqL1xuLm14LWRhdGFncmlkIHRmb290IHRoLFxuLm14LWRhdGFncmlkIHRmb290IHRkIHtcbiAgICBwYWRkaW5nOiAzcHggOHB4O1xufVxuLm14LWRhdGFncmlkIHRmb290IHRoIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbn1cbi5teC1kYXRhZ3JpZC5teC1jb250ZW50LWxvYWRpbmcgLm14LWNvbnRlbnQtbG9hZGVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDkwJTtcbiAgICBhbmltYXRpb246IHBsYWNlaG9sZGVyR3JhZGllbnQgMXMgbGluZWFyIGluZmluaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiAjRjVGNUY1O1xuICAgIGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNGNUY1RjUgMCUsICNGNUY1RjUgNSUsICNGOUY5RjkgNTAlLCAjRjVGNUY1IDk1JSwgI0Y1RjVGNSAxMDAlKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMHB4IDEwMHB4O1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG59XG5Aa2V5ZnJhbWVzIHBsYWNlaG9sZGVyR3JhZGllbnQge1xuICAgIDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwcHggMDsgfVxuICAgIDEwMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTAwcHggMDsgfVxufVxuXG4ubXgtZGF0YWdyaWQtdGFibGUtcmVzaXppbmcgdGgsXG4ubXgtZGF0YWdyaWQtdGFibGUtcmVzaXppbmcgdGQge1xuICAgIGN1cnNvcjogY29sLXJlc2l6ZSAhaW1wb3J0YW50O1xufVxuIiwiLm14LXRlbXBsYXRlZ3JpZC1jb250ZW50LXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5teC10ZW1wbGF0ZWdyaWQtcm93IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG59XG4ubXgtdGVtcGxhdGVncmlkLWl0ZW0ge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ubXgtdGVtcGxhdGVncmlkLWVtcHR5IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xufVxuLm14LXRlbXBsYXRlZ3JpZC1pdGVtLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xufVxuLm14LXRlbXBsYXRlZ3JpZC1pdGVtIC5teC10YWJsZSB0aCxcbi5teC10ZW1wbGF0ZWdyaWQtaXRlbSAubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDJweCA4cHg7XG59XG4iLCIubXgtc2Nyb2xsY29udGFpbmVyLWhvcml6b250YWwge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG59XG4ubXgtc2Nyb2xsY29udGFpbmVyLWhvcml6b250YWwgPiBkaXYge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItd3JhcHBlciB7XG4gICAgcGFkZGluZzogMTBweDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItbmVzdGVkIHtcbiAgICBwYWRkaW5nOiAwO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1maXhlZCA+IC5teC1zY3JvbGxjb250YWluZXItbWlkZGxlID4gLm14LXNjcm9sbGNvbnRhaW5lci13cmFwcGVyLFxuLm14LXNjcm9sbGNvbnRhaW5lci1maXhlZCA+IC5teC1zY3JvbGxjb250YWluZXItbGVmdCA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcixcbi5teC1zY3JvbGxjb250YWluZXItZml4ZWQgPiAubXgtc2Nyb2xsY29udGFpbmVyLWNlbnRlciA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcixcbi5teC1zY3JvbGxjb250YWluZXItZml4ZWQgPiAubXgtc2Nyb2xsY29udGFpbmVyLXJpZ2h0ID4gLm14LXNjcm9sbGNvbnRhaW5lci13cmFwcGVyIHtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cblxuLm14LXNjcm9sbGNvbnRhaW5lci1tb3ZlLWluIHtcbiAgICB0cmFuc2l0aW9uOiBsZWZ0IDI1MG1zIGVhc2Utb3V0O1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1tb3ZlLW91dCB7XG4gICAgdHJhbnNpdGlvbjogbGVmdCAyNTBtcyBlYXNlLWluO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zaHJpbmsgLm14LXNjcm9sbGNvbnRhaW5lci10b2dnbGVhYmxlIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB3aWR0aDtcbn1cblxuLm14LXNjcm9sbGNvbnRhaW5lci10b2dnbGVhYmxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zbGlkZSA+IC5teC1zY3JvbGxjb250YWluZXItdG9nZ2xlYWJsZSA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItcHVzaCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zaHJpbmsgPiAubXgtc2Nyb2xsY29udGFpbmVyLXRvZ2dsZWFibGUge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubXgtc2Nyb2xsY29udGFpbmVyLXB1c2gubXgtc2Nyb2xsY29udGFpbmVyLW9wZW4gPiBkaXYsXG4ubXgtc2Nyb2xsY29udGFpbmVyLXNsaWRlLm14LXNjcm9sbGNvbnRhaW5lci1vcGVuID4gZGl2IHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5teC1zY3JvbGxjb250YWluZXItcHVzaC5teC1zY3JvbGxjb250YWluZXItb3BlbiA+IC5teC1zY3JvbGxjb250YWluZXItdG9nZ2xlYWJsZSxcbi5teC1zY3JvbGxjb250YWluZXItc2xpZGUubXgtc2Nyb2xsY29udGFpbmVyLW9wZW4gPiAubXgtc2Nyb2xsY29udGFpbmVyLXRvZ2dsZWFibGUge1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuIiwiLm14LW5hdmJhci1pdGVtIGltZyxcbi5teC1uYXZiYXItc3ViaXRlbSBpbWcge1xuICAgIGhlaWdodDogMTZweDtcbn1cblxuIiwiLm14LW5hdmlnYXRpb250cmVlIC5uYXZiYXItaW5uZXIge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RmZTZlYTtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSBsaTpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgY29sb3I6ICM3Nzc7XG4gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgYS5hY3RpdmUge1xuICAgIGNvbG9yOiAjRkZGO1xuICAgIHRleHQtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICMzNDk4REI7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xufVxuLm14LW5hdmlnYXRpb250cmVlIC5teC1uYXZpZ2F0aW9udHJlZS1jb2xsYXBzZWQgdWwge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgdWwge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHtcbiAgICBwYWRkaW5nOiA1cHggMDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICBwYWRkaW5nOiA1cHggMDtcbn1cbltkaXI9XCJydGxcIl0gLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHVsIGxpIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB1bCBsaSB7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIHBhZGRpbmctdG9wOiAzcHg7XG4gICAgcGFkZGluZy1ib3R0b206IDNweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB1bCBsaSBpbWcge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4iLCIubXgtbGluayBpbWcsXG4ubXgtYnV0dG9uIGltZyB7XG4gICAgaGVpZ2h0OiAxNnB4O1xufVxuLm14LWxpbmsge1xuICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbiIsIi5teC1ncm91cGJveCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbi5teC1ncm91cGJveC1oZWFkZXIge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gICAgY29sb3I6ICNlZWU7XG4gICAgYmFja2dyb3VuZDogIzMzMztcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4IDRweCAwIDA7XG59XG4ubXgtZ3JvdXBib3gtY29sbGFwc2libGUgPiAubXgtZ3JvdXBib3gtaGVhZGVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZ3JvdXBib3guY29sbGFwc2VkID4gLm14LWdyb3VwYm94LWhlYWRlciB7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuLm14LWdyb3VwYm94LWJvZHkge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cbi5teC1ncm91cGJveC5jb2xsYXBzZWQgPiAubXgtZ3JvdXBib3gtYm9keSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbi5teC1ncm91cGJveC1oZWFkZXIgKyAubXgtZ3JvdXBib3gtYm9keSB7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgNHB4IDRweDtcbn1cbi5teC1ncm91cGJveC1jb2xsYXBzZS1pY29uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG59XG5bZGlyPVwicnRsXCJdIC5teC1ncm91cGJveC1jb2xsYXBzZS1pY29uIHtcbiAgICBmbG9hdDogbGVmdDtcbn1cbiIsIi5teC1kYXRhdmlldyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm14LWRhdGF2aWV3LWNvbnRyb2xzIHtcbiAgICBwYWRkaW5nOiAxOXB4IDIwcHggMTJweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVlO1xufVxuXG4ubXgtZGF0YXZpZXctY29udHJvbHMgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuXG4ubXgtZGF0YXZpZXctY29udHJvbHMgLm14LWJ1dHRvbiArIC5teC1idXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjNlbTtcbn1cblxuLm14LWRhdGF2aWV3LW1lc3NhZ2Uge1xuICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbn1cbi5teC1kYXRhdmlldy1tZXNzYWdlID4gZGl2IHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG4ubXgtZGF0YXZpZXctbWVzc2FnZSA+IGRpdiA+IHAge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi8qIFRvcC1sZXZlbCBkYXRhIHZpZXcgaW4gd2luZG93IGlzIGEgc3BlY2lhbCBjYXNlLCBoYW5kbGUgaXQgYXMgc3VjaC4gKi9cbi5teC13aW5kb3ctdmlldyAubXgtd2luZG93LWJvZHkge1xuICAgIHBhZGRpbmc6IDA7XG59XG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRlbnQsXG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LXBsYWNlaG9sZGVyID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDE1cHg7XG59XG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRyb2xzLFxuLm14LXdpbmRvdy12aWV3IC5teC13aW5kb3ctYm9keSA+IC5teC1wbGFjZWhvbGRlciA+IC5teC1kYXRhdmlldyA+IC5teC1kYXRhdmlldy1jb250cm9scyB7XG4gICAgYm9yZGVyLXJhZGl1czogMHB4IDBweCA2cHggNnB4O1xufVxuIiwiLm14LWRpYWxvZyB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogNTAwcHg7XG4gICAgLyogSWYgdGhlIG1hcmdpbiBpcyBzZXQgdG8gYXV0bywgSUU5IHJlcG9ydHMgdGhlIGNhbGN1bGF0ZWQgdmFsdWUgb2YgdGhlXG4gICAgICogbWFyZ2luIGFzIHRoZSBhY3R1YWwgdmFsdWUuIE90aGVyIGJyb3dzZXJzIHdpbGwganVzdCByZXBvcnQgMC4gRWxpbWluYXRlXG4gICAgICogdGhpcyBkaWZmZXJlbmNlIGJ5IHNldHRpbmcgbWFyZ2luIHRvIDAgZm9yIGV2ZXJ5IGJyb3dzZXIuICovXG4gICAgbWFyZ2luOiAwO1xufVxuLm14LWRpYWxvZy1oZWFkZXIge1xuICAgIGN1cnNvcjogbW92ZTtcbn1cbi5teC1kaWFsb2ctYm9keSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG59XG4iLCIubXgtd2luZG93IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiA2MDBweDtcbiAgICAvKiBJZiB0aGUgbWFyZ2luIGlzIHNldCB0byBhdXRvLCBJRTkgcmVwb3J0cyB0aGUgY2FsY3VsYXRlZCB2YWx1ZSBvZiB0aGVcbiAgICAgKiBtYXJnaW4gYXMgdGhlIGFjdHVhbCB2YWx1ZS4gT3RoZXIgYnJvd3NlcnMgd2lsbCBqdXN0IHJlcG9ydCAwLiBFbGltaW5hdGVcbiAgICAgKiB0aGlzIGRpZmZlcmVuY2UgYnkgc2V0dGluZyBtYXJnaW4gdG8gMCBmb3IgZXZlcnkgYnJvd3Nlci4gKi9cbiAgICBtYXJnaW46IDA7XG59XG4ubXgtd2luZG93LWNvbnRlbnQge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm14LXdpbmRvdy1hY3RpdmUgLm14LXdpbmRvdy1oZWFkZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4IDZweCAwIDA7XG59XG4ubXgtd2luZG93LWhlYWRlciB7XG4gICAgY3Vyc29yOiBtb3ZlO1xufVxuLm14LXdpbmRvdy1ib2R5IHtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cbiIsIi5teC1kcm9wZG93bi1saXN0ICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1kcm9wZG93bi1saXN0IGltZyB7XG4gICAgd2lkdGg6IDM1cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kcm9wZG93bi1saXN0IGltZyB7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4ubXgtZHJvcGRvd24tbGlzdCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LWRyb3Bkb3duLWxpc3QgPiBsaSB7XG4gICAgcGFkZGluZzogNXB4IDEwcHggMTBweDtcbiAgICBib3JkZXI6IDFweCAjZGRkO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLm14LWRyb3Bkb3duLWxpc3QgPiBsaTpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG59XG4ubXgtZHJvcGRvd24tbGlzdCA+IGxpOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xufVxuLm14LWRyb3Bkb3duLWxpc3Qtc3RyaXBlZCA+IGxpOm50aC1jaGlsZCgybisxKSB7XG4gICAgYmFja2dyb3VuZDogI2Y5ZjlmOTtcbn1cbi5teC1kcm9wZG93bi1saXN0ID4gbGk6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7XG59XG4iLCIubXgtaGVhZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogOXB4O1xuICAgIGJhY2tncm91bmQ6ICMzMzM7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm14LWhlYWRlci1jZW50ZXIge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjb2xvcjogI2VlZTtcbiAgICBsaW5lLWhlaWdodDogMzBweDsgLyogaGVpZ2h0IG9mIGJ1dHRvbnMgKi9cbn1cbmJvZHlbZGlyPVwibHRyXCJdIC5teC1oZWFkZXItbGVmdCxcbmJvZHlbZGlyPVwicnRsXCJdIC5teC1oZWFkZXItcmlnaHQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDlweDtcbiAgICBsZWZ0OiA5cHg7XG59XG5ib2R5W2Rpcj1cImx0clwiXSAubXgtaGVhZGVyLXJpZ2h0LFxuYm9keVtkaXI9XCJydGxcIl0gLm14LWhlYWRlci1sZWZ0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA5cHg7XG4gICAgcmlnaHQ6IDlweDtcbn1cbiIsIi5teC10aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICAgIG1hcmdpbi10b3A6IDBweDtcbn1cbiIsIi5teC1saXN0dmlldyB7XG4gICAgcGFkZGluZzogOHB4O1xufVxuLm14LWxpc3R2aWV3ID4gdWwge1xuICAgIHBhZGRpbmc6IDBweDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LWxpc3R2aWV3ID4gdWwgPiBsaSB7XG4gICAgcGFkZGluZzogNXB4IDEwcHggMTBweDtcbiAgICBib3JkZXI6IDFweCAjZGRkO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG4ubXgtbGlzdHZpZXcgPiB1bCA+IGxpOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcbn1cbi5teC1saXN0dmlldyA+IHVsID4gbGk6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7XG59XG4ubXgtbGlzdHZpZXcgbGk6bnRoLWNoaWxkKDJuKzEpIHtcbiAgICBiYWNrZ3JvdW5kOiAjZjlmOWY5O1xufVxuLm14LWxpc3R2aWV3IGxpOm50aC1jaGlsZCgybisxKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcbn1cbi5teC1saXN0dmlldyA+IHVsID4gbGkuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNlZWU7XG59XG4ubXgtbGlzdHZpZXctY2xpY2thYmxlIHVsICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1saXN0dmlldy1lbXB0eSB7XG4gICAgY29sb3I6ICM5OTk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm14LWxpc3R2aWV3IC5teC1saXN0dmlldy1sb2FkaW5nIHtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5teC1saXN0dmlldy1zZWFyY2hiYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbi5teC1saXN0dmlldy1zZWFyY2hiYXIgPiBpbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtbGlzdHZpZXctc2VhcmNoYmFyID4gYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xufVxuW2Rpcj1cInJ0bFwiXSAubXgtbGlzdHZpZXctc2VhcmNoYmFyID4gYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbi5teC1saXN0dmlldy1zZWxlY3Rpb24ge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwYWRkaW5nOiAwIDE1cHggMCA1cHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1saXN0dmlldy1zZWxlY3Rpb24ge1xuICAgIHBhZGRpbmc6IDAgNXB4IDAgMTVweDtcbn1cbi5teC1saXN0dmlldy1zZWxlY3RhYmxlIC5teC1saXN0dmlldy1jb250ZW50IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtbGlzdHZpZXcgLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kOiAjZGVmO1xufVxuLm14LWxpc3R2aWV3IC5teC10YWJsZSB0aCxcbi5teC1saXN0dmlldyAubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDJweDtcbn1cbiIsIi5teC1sb2dpbiAuZm9ybS1jb250cm9sIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xufVxuIiwiLm14LW1lbnViYXIge1xuICAgIHBhZGRpbmc6IDhweDtcbn1cbi5teC1tZW51YmFyLWljb24ge1xuICAgIGhlaWdodDogMTZweDtcbn1cbi5teC1tZW51YmFyLW1vcmUtaWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDTUFBQUFqQ0FZQUFBQWUyYk5aQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFLTkpSRUZVZU5waS9QLy9QOE5nQVV3TWd3aU1PbWJVTWFPT0dYWE1xR05HSFRQWUhNT0NUZkRzMmJNZVFLb09pSTFCWENCdU1qWTIza0ZyZFl6b1RRaWdSbThndFFXTEcwT0JCcXlobFRwYzBkU09JeFRyYUt3T3EyUFVjV2hXcDdFNnJJNjVpVVB6VFJxcncrcVlHaHlhbTJpc0R0TXh3RVMxQ1VnRkFmRnhxQkNJRGtKUGJOUldoelUzalJaNm80NFpkY3lvWTBZZE0rcVlVY2NNVXNjQUJCZ0FVWHBFakUvQnMvSUFBQUFBU1VWT1JLNUNZSUk9KSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDE2cHggMTZweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuIiwiLm14LW5hdmlnYXRpb25saXN0IHtcbiAgICBwYWRkaW5nOiA4cHg7XG59XG4ubXgtbmF2aWdhdGlvbmxpc3QgbGk6aG92ZXIsXG4ubXgtbmF2aWdhdGlvbmxpc3QgbGk6Zm9jdXMsXG4ubXgtbmF2aWdhdGlvbmxpc3QgbGkuYWN0aXZlIHtcbiAgICBjb2xvcjogI0ZGRjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ5OERCO1xufVxuLm14LW5hdmlnYXRpb25saXN0ICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1uYXZpZ2F0aW9ubGlzdCAudGFibGUgdGgsXG4ubXgtbmF2aWdhdGlvbmxpc3QgLnRhYmxlIHRkIHtcbiAgICBwYWRkaW5nOiAycHg7XG59XG4iLCIubXgtcHJvZ3Jlc3Mge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDMwJTtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIG1hcmdpbjogYXV0bztcbiAgICB3aWR0aDogMjUwcHg7XG4gICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgYmFja2dyb3VuZDogIzMzMztcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgei1pbmRleDogNTAwMDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgcGFkZGluZzogMjBweCAxNXB4O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC40cyBlYXNlLWluLW91dDtcbn1cbi5teC1wcm9ncmVzcy1oaWRkZW4ge1xuICAgIG9wYWNpdHk6IDA7XG59XG4ubXgtcHJvZ3Jlc3MtbWVzc2FnZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG59XG4ubXgtcHJvZ3Jlc3MtZW1wdHkgLm14LXByb2dyZXNzLW1lc3NhZ2Uge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4ubXgtcHJvZ3Jlc3MtaW5kaWNhdG9yIHtcbiAgICB3aWR0aDogNzBweDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhSZ0FLQU1RQUFEbzZPb0dCZ1ZwYVduQndjSTZPanF5c3JGSlNVbVJrWkQ4L1AweE1UTTdPenFlbnAxaFlXRjFkWFVoSVNISnljb2VIaDB0TFMxZFhWNmlvcU0vUHoyVmxaVDA5UFRjM04wQkFRSVdGaGRiVzFseGNYSzJ0clVGQlFUTXpNd0FBQUNIL0MwNUZWRk5EUVZCRk1pNHdBd0VBQUFBaCtRUUVEQUFBQUN3QUFBQUFSZ0FLQUFBRms2RG5YUmFHV1plb3JxU0pybkI3cHJBcXY3VjQweDdRL1VCQXpnZjhDV3ZFNGhHV0RBNkx4aEVVeU5OTmYxWHBOWHU1ZHJoZWt0Y0NzNHpMNTVYNVNsYVBNVjRNREg2VnIraFR1d29QMVl2NFJTWnhjNE4zaFh1SGYzRnJVMjBxakZDT0lwQkZraDZVUUphWVB5aGhNWjRzb0RhaVZsczlVMHNyVFZGSXFFOVFxU3FySFVzN09Ub2xNN2NqdVRnNXRyZkFJUUFoK1FRRURBQUFBQ3dBQUFBQUNnQUtBQUFGSktEbkhZV2lGSWZvUVZyclFxTXJhK1RzbG5acjV0ckpvN3dVYXdZVFZRb1VDa29VQWdBaCtRUUVEQUFBQUN3QUFBQUFHUUFLQUFBRldhRG5NY1N5RUpLb3JrZWhLTVdoUGx4dFA2c0thWHdQZVJLYmtNUElIWHBJellFd3RCRnloV1N2c0dqV0ZqbUZsS2VvV3JFcjdWYkJ0RDVYMFcyQllTVWF0MG9QYllqTGVYYkpuNGcwbVJDS2RpSVZCUlFVTVNJaEFDSDVCQVFNQUFBQUxBQUFBQUFvQUFvQUFBV0tvT2NsUXhBTWthaXVETEVzaExUT1I2RW94YUUyV2U4M005R0RReXcrZ2g2SVpzbUVlQ0srYUNZeGt4U3ZIQWFOeWRVY0JsTGZZRWJBRmdtelFwZFpDSVI3Z2RuQ1RGek1GT3Vsd3YyT3IrWjBkaXQ0ZVFwZ2IyTXJaWFJvSzJwNUJRbHZVek1NZEZsYmVUbzhVa0JCUTFoSFFVcGRUaUlrSmdOVVNCNHRFeE1FV3F3VkJSUVVPU0loQUNINUJBUU1BQUFBTEFBQUFBQTNBQW9BQUFXOG9PY2hoaUFZaUtpdXlSQUVRN1RPRExFc2hEU3ZSNkVvaFlQS3NTa2FIVHRQSThOc05wSVBqblQ2U0VJMDJDeGtaT3h1VXF0SWM1eEp6Q1RUTkljeE8yVGZtb1BCYXpUTUJ1VG1ZRVpRVHdrekJYQlpCUUowUlFJekFYbE1BVE1MZmxJTE13cURXQXFHaDRrcmk0eU9LNUNSa3l1VmxncHpoM1lyZUl4N0szMlJnQ3VDbGdVSWgxOHpDWXhsTkpGcmJaWnhIa1JlU0R0TFpFODdVV3BWTzFkd1d5SVlKU2RnU1MwdkEyWkpIalVURXdSczNoVUZGQlJCSWlFQUlma0VCQXdBQUFBc0FBQUFBRVlBQ2dBQUJmQ2c1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkROSzhNc1N3RXlVNTFLQ2dVaFlNSzBHazZBVVBIWmtwMURCdVpyTFl4ZkhDKzRNY1FvaW1iSVNPbnVwTmlVZDhiMlNxaXJXY1NNd2w0ejJITURtYUJHZ2NXYTA0V013WndWQVl6QTNaYUF6TUVmR0FFTXdXQ1pnVVloazBZTXdLTFV3SXpBWkJaQVRNTGxWOExNd3FhWlFxZG5xQXJvcU9sSzZlb3FpdXNyYThyc2JJS2haNklLNHFqalN1UHFKSXJsSzJYSzVteUJSZWViRE1JbzNFMHFIY3pESzE5ZjdLREhreHJVRHRTY0ZZN1dIWmNPMTU4WWp0a2dtZ2lKRXlnR0NJQ2d3c1ljb2JVdURFQUQ4RWVFeVlROEVPd1FnRUtGSktJQ0FFQUlma0VCQXdBQUFBc0R3QUFBRGNBQ2dBQUJicWc1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkROSzhNc1N3RWlRclFLUm9CTzQ5ancydzZrbzJNZE5wSVBqalk3R05rN0haU3JLWjRJMXRGcHVoTVlpYkp1amtNaTlkb21SbkdUY05za0o0T1pnUnZXUVFZYzBVWU13SjRUQUl6QVgxU0FUTUxnbGdMaFlhSUs0cUxqU3VQa0pJcmxKVUxjb1oxSzNlTGVpdDhrSDhyZ1pVRUY0WmZNd2lMWkRTUWFqTU1sWEFlUkY1SU8wdGpUenRSYVZVN1YyOWJJaVFtS0VraUdDNHdaVWsxTndOcjJEMFRFd1FNSWlFQUlma0VCQXdBQUFBc0hnQUFBQ2dBQ2dBQUJZZWc1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkRwQUpkN3dNemtXTkRMRHFDbmtabXlXeU1mTkJPaWxXc2JtU3JDSE9iU1ZpaVBzdk1ZQzBhWmdNdWM0QUI5ekF6UVprb21BWFV5MERiRFYvSjUzVXJkM2dCWDI1aUsyUnpaeXRwZUFNWGJsSXpDSE5YTkhoZEhqeFJRRUZEVmtkQlNseE9JaVFtS0VnaUdDNHdXRWcxTndNSklpRUFJZmtFQkF3QUFBQXNMUUFBQUJrQUNnQUFCVldnNTEwV2hsbVhxSzZJSVFnR29nSmRiUU9yNm14ODc0eTJZQ2ZGNmhrM0NJdlFac2taamowRFpsbkQ1QVJRbm1CS3RhNndXWUdTMmx3OXM0WUxkWmhEWkpFZW1oQ1g4K3lPUHhISmhLcXJNQzR3TWg0aEFDSDVCQVFNQUFBQUxEd0FBQUFLQUFvQUFBVWlvT2RkRm9aWmwrZ0JYZXNDb3l0MzVPeVdkbXZtM2NtanZCUnJCaE9SVENoUkNBQTcpO1xufVxuIiwiLm14LXJlbG9hZC1ub3RpZmljYXRpb24ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiAxMDAxO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxcmVtO1xuXG4gICAgYm9yZGVyOiAxcHggc29saWQgaHNsKDIwMCwgOTYlLCA0MSUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgyMDAsIDk2JSwgNDQlKTtcblxuICAgIGJveC1zaGFkb3c6IDAgNXB4IDIwcHggcmdiYSgxLCAzNywgNTUsIDAuMTYpO1xuICAgIGNvbG9yOiB3aGl0ZTtcblxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDE0cHg7XG59XG4iLCIubXgtcmVzaXplci1uLFxuLm14LXJlc2l6ZXItcyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMHB4O1xufVxuLm14LXJlc2l6ZXItbiB7XG4gICAgdG9wOiAtNXB4O1xuICAgIGN1cnNvcjogbi1yZXNpemU7XG59XG4ubXgtcmVzaXplci1zIHtcbiAgICBib3R0b206IC01cHg7XG4gICAgY3Vyc29yOiBzLXJlc2l6ZTtcbn1cblxuLm14LXJlc2l6ZXItZSxcbi5teC1yZXNpemVyLXcge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuLm14LXJlc2l6ZXItZSB7XG4gICAgcmlnaHQ6IC01cHg7XG4gICAgY3Vyc29yOiBlLXJlc2l6ZTtcbn1cbi5teC1yZXNpemVyLXcge1xuICAgIGxlZnQ6IC01cHg7XG4gICAgY3Vyc29yOiB3LXJlc2l6ZTtcbn1cblxuLm14LXJlc2l6ZXItbncsXG4ubXgtcmVzaXplci1uZSxcbi5teC1yZXNpemVyLXN3LFxuLm14LXJlc2l6ZXItc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XG59XG5cbi5teC1yZXNpemVyLW53LFxuLm14LXJlc2l6ZXItbmUge1xuICAgIHRvcDogLTVweDtcbn1cbi5teC1yZXNpemVyLXN3LFxuLm14LXJlc2l6ZXItc2Uge1xuICAgIGJvdHRvbTogLTVweDtcbn1cbi5teC1yZXNpemVyLW53LFxuLm14LXJlc2l6ZXItc3cge1xuICAgIGxlZnQ6IC01cHg7XG59XG4ubXgtcmVzaXplci1uZSxcbi5teC1yZXNpemVyLXNlIHtcbiAgICByaWdodDogLTVweDtcbn1cblxuLm14LXJlc2l6ZXItbncge1xuICAgIGN1cnNvcjogbnctcmVzaXplO1xufVxuLm14LXJlc2l6ZXItbmUge1xuICAgIGN1cnNvcjogbmUtcmVzaXplO1xufVxuLm14LXJlc2l6ZXItc3cge1xuICAgIGN1cnNvcjogc3ctcmVzaXplO1xufVxuLm14LXJlc2l6ZXItc2Uge1xuICAgIGN1cnNvcjogc2UtcmVzaXplO1xufVxuIiwiLm14LXRleHQge1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbn1cbiIsIi5teC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiBub25lO1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbn1cbi5teC10ZXh0YXJlYSAubXgtdGV4dGFyZWEtbm9yZXNpemUge1xuICAgIGhlaWdodDogYXV0bztcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG59XG4ubXgtdGV4dGFyZWEgLm14LXRleHRhcmVhLWNvdW50ZXIge1xuICAgIGZvbnQtc2l6ZTogc21hbGxlcjtcbn1cbi5teC10ZXh0YXJlYSAuZm9ybS1jb250cm9sLXN0YXRpYyB7XG4gICAgd2hpdGUtc3BhY2U6IHByZS1saW5lO1xufVxuIiwiLm14LXVuZGVybGF5IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xufVxuIiwiLm14LWltYWdlem9vbSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5O1xufVxuLm14LWltYWdlem9vbS13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLm14LWltYWdlem9vbS1pbWFnZSB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xufVxuIiwiLm14LWRyb3Bkb3duIGxpIHtcbiAgICBwYWRkaW5nOiAzcHggMjBweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZHJvcGRvd24gbGFiZWwge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY29sb3I6ICMzMzM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZHJvcGRvd24gaW5wdXQge1xuICAgIG1hcmdpbjogMDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1kcm9wZG93biAuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNmOGY4Zjg7XG59XG4ubXgtc2VsZWN0Ym94IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LXNlbGVjdGJveC1jYXJldC13cmFwcGVyIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuIiwiLm14LWRlbW91c2Vyc3dpdGNoZXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMzYwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDIwMDAwO1xuICAgIGJveC1zaGFkb3c6IC0xcHggMCA1cHggcmdiYSgyOCw1OSw4NiwuMik7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlci1jb250ZW50IHtcbiAgICBwYWRkaW5nOiA4MHB4IDQwcHggMjBweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgY29sb3I6ICMzODdlYTI7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU9nQUFBQmdDQVlBQUFBWFNqN05BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQXlScFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TXkxak1ERXhJRFkyTGpFME5UWTJNU3dnTWpBeE1pOHdNaTh3TmkweE5EbzFOam95TnlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVOVE5pQW9UV0ZqYVc1MGIzTm9LU0lnZUcxd1RVMDZTVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG8wTXprd09UUkVNRFEyTkVZeE1VVTBRVFE0TVVJNU5UTkdNVVEzUXpFNU55SWdlRzF3VFUwNlJHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEbzBNemt3T1RSRU1UUTJORVl4TVVVMFFUUTRNVUk1TlROR01VUTNRekU1TnlJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qYzBSRU15TVVaR05EWTBRekV4UlRSQk5EZ3hRamsxTTBZeFJEZERNVGszSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pjMFJFTXlNakF3TkRZMFF6RXhSVFJCTkRneFFqazFNMFl4UkRkRE1UazNJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrZzF0Umx3QUFFRkZKUkVGVWVOcnNuWWwzVmNVZHgyZHU4ckpESUpDd0NnalZhclZvc1ZYYzZqbldubnBJUWxKV2w2T0NyUFlma2gxY2l1d2xMRm81dFQzbFZKUlZFVVVFUlFRSlM0Q1FRRWpDUzk3MCs1Mlo5M0lUREd1Uzk4ajcvVGp6N3IyL2U5OTlaTzU4N205K003K1owY05YYnNxS2FUTmVLVlZvbEttT0tiWDM5RXNWS2wxRVY2MklLSzN3QjV1SGNZZy8zM3lDNHgybS9FMmpSRVNTTE1HSmw4dXZZcnNIaWR1aFNBK21Vd2FZaWhsUk0zSEdPdXp1Wlg0Zy9SbHBpdDY4TkZ1S2gwalNEWWd4emxBTVc3V3BDQmIwNlJqTmlEWUh6azZ2UEpaMm1iRnArYStKTEN4b0hyYm5vVnB0eW1lZGxXSWlrblJBS1VOWFZRMERvT01BcUlKMlg4MzB5cFBwQitteVFsL2xIWTNES0xaYlRmbnNMNldvaUNRZFVNcmdWVlZqQWVoSWFHTXhaWGFlbi83WGMybVpNWnVYVm1MenFGSTJmL1lCMm85TTJleW9GQm1ScEFKS0tWbTk4UkZvUndCUUZzZ2RnTFErVFNFZEIwQkxzWnNCUUd1d3Y4NlV6VGtqeFVZa3FZQlNpbGR2SEFkQWgyRzNDUloxUisyMFNRM3BDZW1TZ2RpVUFkQlJBTFFGKzl1UWRnTlVhZVVWU1I2Z2xBR3IvL0U0Tm9NQWFBTjgweDExMHlZMXBXMUdiVmxDdi9SMy92QVE5amVac3JsWHBBaUpkS2NFTnpqUDdoZFU3VlErMGhOOTFxeVBwR3RHd2Yrc3dvYmRNWmVRSGtENm05Nnk2SDRwUWlKSnM2RGVpa1pnUVIrSEJTMUNsYmZXYVBQWjVhbFRXdFBYa2k0dXNGVmVaUjV3Q3ZhZm1vOU42YnlyVXB4RWVoeFFTdjgxRzNJQUtDQTFoUUQwSFBaM1hVbGpTQjJvaTU3QjVua0FpbHFJdVlEOWpZRDB1QlFwa1I0SGxGSzRaa01lQUIwUFFQTUI2TmxXWlhZM1Q1MGFTM05JaXdIb2l3QjBqSEw5TWJ1UVBoRnJLdExqZ0ZMZ2crWUQwUEdnTWcrQW5zRjJUelROSWJXWnVIVWhxcnpxOS82dzFqWWdsYzcvVVlxWFNJOENTaWxZdTQ0VzlDa0F5bXJ2S2ZpbmUxdW5URE1DNmNJaDJQd0o2VmNBbFBteEY5YjFYMmJDL0NZcFppSTlCaWdsRDVDMnVyamRiQUJhRGRVK2dUUnNUWTJ6cHRxMitQNFRrSDRqT1NQU1k0QlNzdGV1TFFDZ1R3UFFMQnhXd3ovZFo2Wk1GMGd0cEF0S3NIa0JnTWE3WVk0QTJnL05oTGRxSlhkRWVnUlFTb1NRYXNQV3pBZ0FQVVZMQ2toamtxMCtjejljOEFRMlR5TDFVeTVzY2p2U0RvRGFLcmtqMHUyQVVqTFdyV0cvNEZNQWxPTW56K0NPZTh6a2x3VFNOa2laTHhNQTZDTmV4UzZaandEcEVja2RrVzRIMUVPYUQwQ2Z3bTRPN3NqeGs0UlVyRVE3VU4rK2p5OHlwSHU5Nmp1a2p3SHFCY2tka1c0RjFONW8zV3FHQTQ3SEhmT1VEUTgwdTgza2x3WFNhMEY5RnBzL0lQVlZkcnlwK3N4WGU2VzFWNlQ3QUUxQXFnMzlybndmWGJNTGtNb1l5bXNoemNYbUw4cU9ON1hDb1B2L0lPMEZxT0llaUhRUG9QYUc2MWZsT1F0aGFDSHE4QXM3emFSWG1pV3JmeEhVVWI3YUcyL3Q1Y0NFYmVLZmluUWJvQjdTSE44WDJCKy93SEdrbndOU0daclZPYWkveGVZeHBGRmU5Wk5peU9DRXR5UzJWd0R0bnE1THZmNkRMRnZvdE9HQVovaFhCcEMrZWtteS9JYitLV0V0OGFyRFNQOEdxS2NsZHdUUTdvQTBFNy9BUWM2RGZUL2dia0I2WHJMOXVwQnE1VUlHQ1dxaGNrSDRqRVQ2TDBDdGtSd1NRTHYrUnphczVOdytuRDRscG9MWUY2Ynl0V3JKK2h1Q0NqZEJ2YURhZ3ZBOXFCcWd6aGRRQmRDdWh2VHY3S2dmQVVENWd3Y0I2VkhKL3BzQ2xZMXR6M2tmMVQ0eWIxRzNBMVNaczFjQTdWSkl4d0xRa2Q0Z0hIV2d2aTd4dTdjRXFuNHNaRkhwbzM0S1VLVXhTUUR0b2gvYytONFFWMjJ6djN0S2FmV0ZxWGhkQWhwdUd0UUZCUFdQb2FvdnM1S0EvZy9waUNtZEx5ODhBZlNPSVdYd09BTWFzZ0RvUmV6dk1oVnZTRi9wcllIS1lJZW5rZTREb0lPOG1sWGVuVGo3bFNtZEp3RWlBdWlkUVBwdXZ2V3JORnNxRGNQY2RnTFNlbmtrdDVHWFd4YzhZMEZWeXJzUG1uM09YQXhxRjBDVnJpMEI5TFlocFFYbDhncTBBQzJLWTBvclpzak03YmNQS2h2aXhtSnZqRmZSZFRpbzJMMGxFNW9Kb0xmOW42aDZoMzJsdy8xVUlkOEMwaC9rMGR3SnFBdHBTVG5wK0VNaExhdS91NUVPbU5LNUVwZ3ZnTjR5cEhqekcxZEYwK29rOXZlYmlUT2w4ZWpPUUdXZ0EwZk9qTURSQ0srK0NwLzFBTFpmbXJLNUp5U1hCTkJiZ0hURllNVVJIbHBGQUdpZHJacE5uTmtvajZrcllGM0V5Q1NtKzFYaWtXdXVYTWVsRmZlYnNqbmlxd3FnTndWcEhnQmw1RkYvKzdaWFpvK1orS2FFQjNZZHFNVUE5RkZ2VmUveGFnNXhvMXZ4RlhTSFpKbEZBZlQ2LzZsTkt6SUJKZ3ZSRU8rWEhnU2tFbm5VMWZtOFpUR0h1VDNTd1ZkbEZmZ1FmVldrbzZaOHRyZ1pBbWhub0M1SDRURWp2RjlhYmYzUzhsa3Q4dGk2SEZUT216UlcyVVdoOUppMktqQUhrdXR2bFdzSlBvYThGMWdGMEk2UUxodGlDNDlXV1FDMHdmcWw1YlBFWCtvMldKZjBBNkQwVlVjck8zK1NqcDlxeFA1M09FZGdmMENOUmw2VUFtZ0MwbHlVRTFyVFltWDc5c3dCVkwya0JiSzc4MzN6RXVTMy9vMXlBOGtkcks2NHdFZlZkRGtZQzN6WVRKd3BMOHgwQnJTdHdDeWxYM3FQTHlYSFVWNitObVhpSS9WUTNoZmg4MEZrL1JoblhST1dsUS9qRkk2UFlJOE5UVCtiaWhreXIxSTZBdW9MQ254U3d5cFlnREp5R2Z0N1Rka2NDUkhzNlJxTjBteGdZdklOVEFucjJvejlZOHExQ2g4MUZXK2NreHhMSTBCOTFhdkErNlVEVUNyNHR2NEdrQjZUeDVrTVdKZHJWd1cyalV0czBCc1JzcTY4NGhMMFA5a2Fqd08zeGxTK0ppTnVlak9nb1FZTnh2SEcrL0k0Ync4NzNHVnR6bVErazZvVnVUNFdlTFNIZFdBb01JSWZET1Evb1dMQno2d09RMWN0c3o3MlVrQWRwSXM1bFFvYk1qaEZTQ09BWlFpYlZLdFNCdGgzKzNyTE9zcUhHN29KMFdKQi9BcldnR284cktkd0xWKzBaMlErNVY0Q3FJYzBSN2wrdkVIZUVUcUtsL1VoVXpwWEdwQlM3Vmx0ZkkvRERJY0QwT0hLTnZqcFVhR3pjVDgyNXNNUUFhcytBeDBEL1dzQ3BldlNiWm5MWGdGb0NOUnd3RDJiL3I4QXBIV0NSUW8vc3cwcmFVcUxMYlJLRHdXTWpNY2UxdWJISnFCbHErQlZEMm9OZEJmd3hRc1pTbk1GZ3d0WHBrNXBFa0R2Q2tnWGNRVEhRNjRCaVc5aXc3NjY3MDNwUEdtWXVGdWU0Zm9QTXF6dmFxZHIxU1dBa2RYaVlvRFp6NE5xb1NYWkdSN2tER01IcWRkQ1YwOUxpLzJMZ2RGczNlZHhQYTY2Y25aNjVWMFJYUEhraXUyWitMdnp0VkY5ZWgyZ2lZZThkWkdiUmRDOWZpOHFOaUNWenBQdW1MdFlNdGF0eWZLZ011Qy9DREFXQWRBaXhhM1JPUTVlRHpDM1JzY3RiOXdlTjBGM09YQWhqQTJFRnNlMHZFM2FUcTZ1bTNDdVVSdE4vemVLL1didGZPU3IwTVZDOTJvKzlPcUw3ZnA2SDM1L1c0RC9VN1pPL0xvT3NNMENaTmhxNkRsQ1MwZXd6Y1YxT2REeC81dURxN0d2OHFETGc0N1Yvd0p0MjFPMG5iK3gxd0xxSVVYVnlUeWc3QUs2ZHNRR1Y3cUdOWjB2SGVtOVRQcXNXYy9DM1E5UUZhTFFzeFpWQ1BnNHdWcGZIUGZWZGtFdmxVRm9BMTkxMWlHSTQ1K0JyVmJHd1ZZSnRQVzFzRnRkK0Y2MEJTRkE3ZFpDMW5hWDBIVWQ3aGZTYVJzdGh4ZUlVZlg2K2NXZjI3UEdmeG9kUDhKV3U3MlkxYnR6aVd2dE9XTkxmZnc2NC8vRmRIdy9acjhUaTkveG11KzA3Y2V2aVlYMEhmZGpmcjhWKzYzdDlQRy9NUDZ5TVNyeFZ6TmxYL2JXMU9wb1JiOVVMYmwxMTE3YnlYSGlDWVpmWnAzcE81N3JvTHZ6MTg2MUtuTVQxNFIxNWdiWG1jN3VwYS96M2M3T2RhSnZhOFc5d2JYdGZGQjFuU3F1dWdrTG1nTmRRVUNMcFRRdFZXN2dMRyt1dDFxd2FMQnVSc1BhcVlqZFY1cGZoU1hVR2FGNzBaSUhIUUJsOGJ3YUFyUlZXOHRMQkRRdE5NTWpvOVpTRzFwc1o3bHhkYU5tNzROUnNPaWFzZWFYdlRXM3hUa3pMVjZ2elFYN0FTbG5zMmZrQzZ0RXo2ck14dStSQjBkVU5FZGFldE5IbW55NmF5UkltMGNUemF0QitsVFppQmI3a3VNc2VNK3BTRk94bEZzUkFUUjFRTjJQengzS2RZNjdWY0V6bThhcHpPWnNLUTRpS2RlTzBwc2JpVzc0eDMrNGdGVmVocVRSNTRDUFlEalc4YmlaOEpaMHlZZ0lvQ2tDS1dkbzU0aU1JYjQxb2hicGEwQjZVWXFIaUFDYU9xQnlYbDVhMC9pYW5Cd1EvaTFBbGVCN0VRRTBkVUI5bXpHOUkrTWVLOUozaXZQeFNMVlhSQUJOR1VnNTN2UkJaVVBOckxEdjlLQ3NjQzBpZ0tZV3FFT1ZuWXZIOXAxU3pucFFaUTRlRVFFMGhVQmxueWtqa2ZLOGY4b1pBZzREVkJsb0xDS0FwZ2lrakxwNlNDVkNCcmthbS9vZTZVZUFLbE5RaWdpZ0tRSXFBN0RaZnpyRXEyaEZqOUNxQWxRSndoY1JRRk1FMUJMdm41WjRGY2Nqc3NYM3BMVDRpZ2lncVFNcUc1TFlMVFBRcXk1NVVFOExxQ0lDYU9xQVN0K1U4K3dNOEtwNlgvVTlKYUNLQ0tDcEErcG83NThXdFZsVWZkaUJPbDh5VzBRQVRSRlE2WjhPZGFEcWVOV1hyYjdWQUZVYWswUUUwTlFCVlE4SlZYMjVZdmdQeXFqanBuUytEQllYRVVCVEE5UUZJNzFGZFkxSmhxdUhxeCtaQUtwTTBpd2lnS1lJcUlSMEJBQ056K1JBSzNxQ3kvbVowbmtOa2tNaUFtZ3FaUHpXQlFSMGxFb0U1TnNaenhpTXozVTNhd0NyWkpLSUFKb0NvREl5NlY2L2JrbGNMbmxRVHdKVThWTUZVSkhrZzdxUXNiN3NvcUZsalhmUlJIMzE5eWRUT3ZleTVKSUFLcElhc0RMZ1liaUhWZmx1bXZOSXg3ajZseW1iSzkwMEFxaElDb0JhcU5xVzdYTmliSEErcDJNNUFWREZxZ3FnSXNrSGRaRmZ4Vm9OQnFBRFEyZHFQYXpWcG15T2ROVUlvQ0pKZjJCYkZ0RS92Y2Y1cWJyQXE5bVFkTnI3cStkTTJXeDVxQUtvU1BKaFhVdy9sZjJxZzBKYUxtMVFEVXQ3MHBUUGxxbERCVkNSRkFBMTExdFZWSC8xQU8rclVoajRjQkk2d0RwTC9GVUJWQ1Q1c0M3aFVvdkR1SDZtY3NzdXFsQ3cvaWttd0NycnBBcWdJa2wvdUp1WERGUnVPWG5DV2hBNjAyQmhOWW9ydnRXWmlXOUtaZ21nSXNtRmRTbGg5ZU5VN2NLMjhXb3cxNkxrZEtKbkZFTU1KODZVeUNVQlZDUzVzQzRyc3JBYU93U3VNTFNJTGdNZ3p1SDRETTZkTlJVenJraHVDYUFpeVN3QW01YWg2cXZaQ2x5c3dwRkxiWTFNTlRobUVQOTVVL0dHOUxVS29DTEpnM1U1NDRFQnF5N3gxalUzQWF4RDlxSUg5anlPYWszbDYxSWRGa0JGa2xZNHFsYjBkVmJWZHQyRSsxcUphOHdCcXhramZJSEpWTDRtRTNnTG9DTEpnZlVkcnNaTzMzV0FiUlZPaEJ3bS9GY1VwS0FlMk5aNlM0dXR2bXdtdlNLWko0Q0s5SGpCMmZndWdlM25yU3ZCTFFHZ3JwbXA3YXFvQTlWYTJqb2dYR2Ntdjl3b3VTZUFpdlE0c08vQmxBWjlBV2gvSFBiMzhCWjBxQlpUb2haV1oyWHJzVjhQZllPWk1sMkcwQW1nSWoxYXVEYXNqSVJnN1FjUTZkUG1ocXJGWVgvMkNtR0ZEV1pJNHFWQTZVc0VOenAxYWt3QUZSSHBxUUszL29Nc2ZIS2NLMU5mR3pSaFZKODRySUcvTG5EZ21zQUZValJrdUxWdkdqS01qWUpxZ0w2eGJ0cmtxQUFxSXRMZGhYRGRhbktaajcwK2dRdEp4RmIzSWJpQkJ6ZkRYd3RBUGNCVzN4SzRlWWFiQXFPNWJmUkFOMnUzNmx3ejlNMm5YNnE0SzYzdytCWGJBd0ZVSkdVbHNuYXRCbkE1QUM0L3d3S3M4Z0VvdDNtQnF5cEhFaGEzUGJpSlNqVDFnWnZiQ2RCcXprVWNoWTdIVVczWGVOVlJmNzVGRzgxdUl1T09OZThZWmZVYjMydnRjTytXUTYrKzJBNmNoOS9meHAvTTFDWitsZjNNME81ckVmd21WUkZ0VCtsTWZHVGFZNlBwQm1UaW9peXY1M0dXTWpwYjIvTUNxTWhkS29Wck5tUTZVRlV1QU1peFd3ZHVGZ3AzTm81em9NOEtQRnR4Yk9NdzZ3N1ZhdjFMa0p2UTkwSjYzY2tMb1FPZzdWNFV2NlR2N0Q0QWxQc3hBVlNrMTh2UVZWVzBTckJJT3N0YnM0aTNaaEZ2aGVQV2pEWHB3QjNyd0ZvNW83QzErakJFc0pUV0lvWjF4bG5oZG9DMmF0ZngxSUxmdEZ0M2JQVnhxMjJ0dWJmYVVhKy9Da0NiZDg3NFkvVC9BZ3dBMk1pN0hkQWUraWtBQUFBQVNVVk9SSzVDWUlJPSkgdG9wIHJpZ2h0IG5vLXJlcGVhdCAjMWIzMTQ5O1xuICAgIC8qIGJhY2tncm91bmQtYXR0YWNoZW1lbnQgbG9jYWwgaXMgbm90IHN1cHBvcnRlZCBvbiBJRThcbiAgICAgKiB3aGVuIHRoaXMgaXMgcGFydCBvZiBiYWNrZ3JvdW5kIHRoZSBjb21wbGV0ZSBiYWNrZ3JvdW5kIGlzIGlnbm9yZWQgKi9cbiAgICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGxvY2FsO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXIgdWwge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luLXRvcDogMjVweDtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM0OTYwNzY7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgY29sb3I6ICMzODdlYTI7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM0OTYwNzY7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBoMiB7XG4gICAgbWFyZ2luOiAyMHB4IDAgNXB4O1xuICAgIGNvbG9yOiAjNWJjNGZlO1xuICAgIGZvbnQtc2l6ZTogMjhweDtcbn1cbi5teC1kZW1vdXNlcnN3aXRjaGVyIGgzIHtcbiAgICBtYXJnaW46IDAgMCAycHg7XG4gICAgY29sb3I6ICM1YmM0ZmU7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXIgLmFjdGl2ZSBoMyB7XG4gICAgY29sb3I6ICMxMWVmZGI7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXItdG9nZ2xlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAyNSU7XG4gICAgbGVmdDogLTM1cHg7XG4gICAgd2lkdGg6IDM1cHg7XG4gICAgaGVpZ2h0OiAzOHB4O1xuICAgIG1hcmdpbi10b3A6IC00MHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4O1xuICAgIGJveC1zaGFkb3c6IC0xcHggMCA1cHggcmdiYSgyOCw1OSw4NiwuMik7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQklBQUFBU0NBWUFBQUJXem81WEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeVJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNeTFqTURFeElEWTJMakUwTlRZMk1Td2dNakF4TWk4d01pOHdOaTB4TkRvMU5qb3lOeUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTmlBb1RXRmphVzUwYjNOb0tTSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEbzNORVJETWpGR1JEUTJORU14TVVVMFFUUTRNVUk1TlROR01VUTNRekU1TnlJZ2VHMXdUVTA2Ukc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvM05FUkRNakZHUlRRMk5FTXhNVVUwUVRRNE1VSTVOVE5HTVVRM1F6RTVOeUkrSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pjMFJFTXlNVVpDTkRZMFF6RXhSVFJCTkRneFFqazFNMFl4UkRkRE1UazNJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPamMwUkVNeU1VWkRORFkwUXpFeFJUUkJORGd4UWprMU0wWXhSRGRETVRrM0lpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCsxWm92TkFBQUFXZEpSRUZVZU5xTTFNMHJSRkVZeC9FN1k1cUlRcE9VYklpeW1RV3lzQmd2SlZKSzJWZ3J5WlF0S1NVTFplbFBzQjBMWmFOWmpKVU5LMUZza0pxVXZDUzNOQXNaYzN6UDlOemlPT2ZlZWVwVGM4L2M4K3ZjOHhaVFNubU9ha0VHS2R6Z0RCWFh5NTRPTXNTd2pwTDZXOWNZc3J4ZlpXdmNVdTd5MFZkTFVDYytWWGdkMm9MaXhwZk9JT21GMTdUdEhUT296WXV1cEN4QWFOQjlEVUVmZURVYkU4YnpFWHhaZXJQMDBsOGhoM0xVaUhUSU1yNk45ajJrc1lvaWh2LzFkZXlMU1Z6S0ttMWpFVytXZlpWMkxmOGdza2pJY3djV3BPTSsrcEhDRlBMb3NnV3RvQ3lkN2pDUE9qemhHSEhMeURQWTFhY2hhSmhEeFJqNnJCd0pYVXVvTjBJRzhJSXY3T2lHQmp4YWR2QUlUdVQzcmV4NmMwU2JLQVNmbG5VY0JUM0pUVGhBanlXa0dVVnNCRUVGUjVDZXJ6WHBOSWFjckZJckpuQ0JCM211QnZraEIxVFAyN2hNL0x2eDN6bDZneEhxdTZjNzRraVU4SXhHaktKZExyclQzeGZkandBREFKYU14UDJidkQyQkFBQUFBRWxGVGtTdVFtQ0MpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0ICMxYjMxNDk7XG59XG4iLCIvKiBtYXN0ZXIgZGV0YWlscyBzY3JlZW4gZm9yIG1vYmlsZSAqL1xuLm14LW1hc3Rlci1kZXRhaWwtc2NyZWVuIHtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLXNjcmVlbiAubXgtbWFzdGVyLWRldGFpbC1kZXRhaWxzIHtcbiAgICBwYWRkaW5nOiAxNXB4O1xufVxuXG4ubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNztcbn1cblxuLm14LW1hc3Rlci1kZXRhaWwtc2NyZWVuLWhlYWRlci1jYXB0aW9uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxN3B4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLXNjcmVlbi1oZWFkZXItY2xvc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDUwcHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiAjMDA3YWZmO1xufVxuXG5ib2R5W2Rpcj1cInJ0bFwiXSAubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyLWNsb3NlIHtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0OiBhdXRvO1xufVxuXG4ubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyLWNsb3NlOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFwyMDM5XCI7XG4gICAgZm9udC1zaXplOiA1MnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xufVxuXG4vKiBjbGFzc2VzIGZvciBjb250ZW50IHBhZ2UgKi9cbi5teC1tYXN0ZXItZGV0YWlsLWNvbnRlbnQtZml4IHtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLWNvbnRlbnQtaGlkZGVuIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMCUpO1xufVxuXG5ib2R5W2Rpcj1cInJ0bFwiXSAubXgtbWFzdGVyLWRldGFpbC1jb250ZW50LWhpZGRlbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwMCUpO1xufSIsIi5yZXBvcnRpbmdSZXBvcnQge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbiIsIi5yZXBvcnRpbmdSZXBvcnRQYXJhbWV0ZXIgdGgge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuIiwiLnJlcG9ydGluZ0RhdGVSYW5nZSB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbn1cbi5yZXBvcnRpbmdEYXRlUmFuZ2UgdGgge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xufVxuLnJlcG9ydGluZ0RhdGVSYW5nZSB0ZCB7XG4gICAgcGFkZGluZzogNXB4O1xufVxuIiwiLm14LXJlcG9ydG1hdHJpeCB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0aCwgLm14LXJlcG9ydG1hdHJpeCB0ZCB7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzO1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZCB7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0Ym9keSB0cjpudGgtY2hpbGQoMm4rMSkgdGQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG59XG5cbi5teC1yZXBvcnRtYXRyaXggdGJvZHkgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDE2cHg7XG4gICAgbWF4LWhlaWdodDogMTZweDtcbn1cbiIsIi8qIFdBUk5JTkc6IElFOSBsaW1pdHMgbmVzdGVkIGltcG9ydHMgdG8gdGhyZWUgbGV2ZWxzIGRlZXA6IGh0dHA6Ly9qb3JnZWFsYmFsYWRlam8uY29tLzIwMTEvMDUvMjgvaW50ZXJuZXQtZXhwbG9yZXItbGltaXRzLW5lc3RlZC1pbXBvcnQtY3NzLXN0YXRlbWVudHMgKi9cblxuLyogZGlqaXQgYmFzZSAqL1xuXG4vKiBtZW5kaXggYmFzZSAqL1xuXG4vKiB3aWRnZXRzICovXG5cbi8qIHJlcG9ydGluZyAqL1xuIl0sInNvdXJjZVJvb3QiOiIifQ==*/\n","//== Gray Shades\n//## Different gray shades to be used for our variables and components\n$gray-darker: #222222;\n$gray-dark: #333333;\n$gray: #555555;\n$gray-light: #888888;\n$gray-primary: #D7D7D7;\n$gray-lighter: #EEEEEE;\n\n//== Step 1: Brand Colors\n$brand-default: #DDDDDD;\n$brand-primary: #0595DB;\n$brand-inverse: #252C36;\n$brand-info: #48B0F7;\n$brand-success: #76CA02;\n$brand-warning: #F99B1D;\n$brand-danger: #ED1C24;\n\n// Used for other variables\n$default-border-color: $gray-primary;\n\n//== Step 3: Typography\n$font-family-import: \"https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700\";\n@if $font-family-import != false {\n // Only import, if the import is set\n @import url($font-family-import);\n}\n$font-family-base: \"Open Sans\", sans-serif;\n$font-base-size: 14px;\n$font-base-color: #555555;\n$link-color: $brand-primary;\n$font-size-h1: 31px;\n$font-size-h2: 26px;\n$font-size-h3: 24px;\n$font-size-h4: 18px;\n$font-color-detail: $gray-light;\n$font-color-headers: #17347B;\n\n//== Step 2: UI Customization\n\n// Topbar\n$topbar-bg: #FFFFFF;\n$navtopbar-border-color: $default-border-color;\n$topbar-border-color: $navtopbar-border-color;\n$topbar-minimalheight: 60px;\n$navtopbar-color: $font-base-color;\n$navbar-brand-name: $default-border-color;\n$brand-logo: false;\n$brand-logo-height: 30px;\n$brand-logo-width: 30px;\n\n// Sidebar\n$sidebar-bg: $brand-inverse;\n$navsidebar-color: #FFFFFF;\n$navsidebar-color-hover: $navsidebar-color;\n\n// Backgrounds\n$bg-color: #FFFFFF;\n$bg-color-secondary: #F5F8FD;\n\n// == Old variables used in theme customizer to the new lib variables\n$font-size-default: $font-base-size;\n$font-color-default: $font-base-color;\n$border-color-default: $default-border-color;\n$font-color-header:\t\t\t\t $font-color-headers;\n\n\n//== Settings\n//## Enable or disable your desired framework features\n// Use of !important\n$important-flex: true; // ./base/flex.scss\n$important-spacing: true; // ./base/spacing.scss\n$important-helpers: true; // ./helpers/helperclasses.scss\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n//\n// ██████╗ █████╗ ███████╗██╗ ██████╗\n// ██╔══██╗██╔══██╗██╔════╝██║██╔════╝\n// ██████╔╝███████║███████╗██║██║\n// ██╔══██╗██╔══██║╚════██║██║██║\n// ██████╔╝██║ ██║███████║██║╚██████╗\n// ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝\n//\n\n\n//== Gray Shades\n//## Different gray shades to be used for our variables and components\n$gray-darker: #222 !default;\n$gray-dark: #333 !default;\n$gray: #555 !default;\n$gray-light: #888 !default;\n$gray-primary: #d7d7d7 !default;\n$gray-lighter: #eee !default;\n\n\n//== Step 1: Brand Colors\n$brand-default: #DDDDDD !default;\n$brand-primary: #0595DB !default;\n$brand-inverse: #252C36 !default;\n$brand-info: #48B0F7 !default;\n$brand-success: #76CA02 !default;\n$brand-warning: #f99b1d !default;\n$brand-danger: #ed1c24 !default;\n\n$brand-logo:\t\t\t\t\t\t\tfalse !default;\n$brand-logo-height:\t\t\t\t\t\t26px !default;\n$brand-logo-width:\t\t\t\t\t\t26px !default; // Only used for CSS brand logo\n\n\n\n\n\n//== Step 2: UI Customization\n\n// Default Font Size & Color\n$font-size-default: 14px !default;\n$font-color-default: #555 !default;\n\n// Global Border Color\n$border-color-default: $gray-primary !default;\n$border-radius-default: 4px !default;\n\n// Topbar\n$topbar-bg: #FFF !default;\n$topbar-minimalheight: 60px !default;\n$topbar-border-color: $border-color-default !default;\n\n// Topbar mobile\n$m-header-height: \t45px !default;\n$m-header-bg: $topbar-bg !default;\n$m-header-color: #555 !default;\n$m-header-title-size: 17px !default;\n\n\n// Sidebar\n$sidebar-bg: $brand-inverse !default;\n\n// Navbar Brand Name / For your company, product, or project name (used in layouts/base/)\n$navbar-brand-name: $font-color-default !default;\n\n// Background Colors\n$bg-color: #FFF !default;\n$bg-color-secondary: #F5F8FD !default; // Background color that is used for specific page templates background\n\n// Default Link Color\n$link-color: $brand-primary !default;\n$link-hover-color: darken($link-color, 15%) !default;\n\n\n\n\n\n//\n// █████╗ ██████╗ ██╗ ██╗ █████╗ ███╗ ██╗ ██████╗███████╗██████╗\n// ██╔══██╗██╔══██╗██║ ██║██╔══██╗████╗ ██║██╔════╝██╔════╝██╔══██╗\n// ███████║██║ ██║██║ ██║███████║██╔██╗ ██║██║ █████╗ ██║ ██║\n// ██╔══██║██║ ██║╚██╗ ██╔╝██╔══██║██║╚██╗██║██║ ██╔══╝ ██║ ██║\n// ██║ ██║██████╔╝ ╚████╔╝ ██║ ██║██║ ╚████║╚██████╗███████╗██████╔╝\n// ╚═╝ ╚═╝╚═════╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝\n//\n\n\n//== Typography\n//## Change your font family, weight, line-height, headings and more (used in components/typography)\n\n// Font Family Import (Used for google font plugin in theme creater https://ux.mendix.com/theme-creator.html)\n$font-family-import: \"https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700\" !default;\n@if $font-family-import != false {\n // Only import, if the import is set\n @import url($font-family-import);\n}\n\n// Font Family / False = fallback from Bootstrap (Helvetica Neue)\n$font-family-base: 'Open Sans', sans-serif !default;\n\n// Font Sizes\n$font-size-large: 16px !default;\n$font-size-small: 12px !default;\n\n// Font Weights\n$font-weight-light: 100 !default;\n$font-weight-normal: normal !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: bold !default;\n\n// Font Size Headers\n$font-size-h1: 31px !default;\n$font-size-h2: 26px !default;\n$font-size-h3: 24px !default;\n$font-size-h4: 18px !default;\n$font-size-h5: $font-size-default !default;\n$font-size-h6: 12px !default;\n\n// Font Weight Headers\n$font-weight-header: $font-weight-normal !default;\n\n// Line Height\n$line-height-base: 1.428571429 !default;\n\n// Spacing\n$font-header-margin:\t\t\t\t\t15px 0 30px 0 !default;\n\n// Text Colors\n$font-color-header:\t\t\t\t #17347B !default;\n$font-color-detail: $gray-light !default;\n\n\n\n\n\n//== Navigation\n//## Used in components/navigation\n\n// Default Navigation styling\n$navigation-item-height: 60px !default;\n$navigation-item-padding: 5px 15px !default;\n\n$navigation-font-size: $font-size-default !default;\n$navigation-sub-font-size: $font-size-small !default;\n$navigation-glyph-size: 20px !default; // For glyphicons that you can select in the Mendix Modeler\n\n$navigation-bg: $brand-inverse !default;\n$navigation-bg-hover: lighten($navigation-bg, 4) !default;\n$navigation-bg-active: lighten($navigation-bg, 8) !default;\n$navigation-color: #FFF !default;\n$navigation-color-hover: #FFF !default;\n$navigation-color-active: #FFF !default;\n\n$navigation-sub-bg: darken($navigation-bg, 4) !default;\n$navigation-sub-bg-hover: $navigation-sub-bg !default;\n$navigation-sub-bg-active: $navigation-sub-bg !default;\n$navigation-sub-color: #AAA !default;\n$navigation-sub-color-hover: $brand-primary !default;\n$navigation-sub-color-active: $brand-primary !default;\n\n$navigation-border-color: $navigation-bg-hover !default;\n\n// Navigation Sidebar\n$navsidebar-font-size: $font-size-default !default;\n$navsidebar-sub-font-size: $font-size-small !default;\n$navsidebar-glyph-size: 20px !default; // For glyphicons that you can select in the Mendix Modeler\n\n$navsidebar-bg: $sidebar-bg !default;\n$navsidebar-bg-hover: lighten($navsidebar-bg, 4) !default;\n$navsidebar-bg-active: lighten($navsidebar-bg, 8) !default;\n$navsidebar-color: #FFF !default;\n$navsidebar-color-hover: #FFF !default;\n$navsidebar-color-active: #FFF !default;\n\n$navsidebar-sub-bg: darken($navsidebar-bg, 4) !default;\n$navsidebar-sub-bg-hover: $navsidebar-sub-bg !default;\n$navsidebar-sub-bg-active: $navsidebar-sub-bg !default;\n$navsidebar-sub-color: #AAA !default;\n$navsidebar-sub-color-hover: $brand-primary !default;\n$navsidebar-sub-color-active: $brand-primary !default;\n\n$navsidebar-border-color: $navsidebar-bg-hover !default;\n\n// Navigation topbar\n$navtopbar-font-size: $font-size-default !default;\n$navtopbar-sub-font-size: $font-size-small !default;\n$navtopbar-glyph-size: 1.2em !default; // For glyphicons that you can select in the Mendix Modeler\n\n$navtopbar-bg: $topbar-bg !default;\n$navtopbar-bg-hover: darken($navtopbar-bg, 4) !default;\n$navtopbar-bg-active: darken($navtopbar-bg, 8) !default;\n$navtopbar-color: $font-color-default !default;\n$navtopbar-color-hover: $navtopbar-color !default;\n$navtopbar-color-active: $navtopbar-color !default;\n\n$navtopbar-sub-bg: lighten($navtopbar-bg, 4) !default;\n$navtopbar-sub-bg-hover: $navtopbar-sub-bg !default;\n$navtopbar-sub-bg-active: $navtopbar-sub-bg !default;\n$navtopbar-sub-color: #AAA !default;\n$navtopbar-sub-color-hover: $brand-primary !default;\n$navtopbar-sub-color-active: $brand-primary !default;\n\n//## Used in layouts/base\n$navtopbar-border-color: $topbar-border-color !default;\n\n\n\n\n//== Form\n//## Used in components/inputs\n\n// Values that can be used default | lined\n$form-input-style: default !default;\n\n// Form Label\n$form-label-color: #666 !default;\n$form-label-size: $font-size-default !default;\n$form-label-weight: $font-weight-semibold !default;\n$form-label-gutter: 8px !default;\n\n// Form Input dimensions\n$form-input-height: auto !default;\n$form-input-padding-y: 8px !default;\n$form-input-padding-x: 10px !default;\n$form-input-font-size: $form-label-size !default;\n$form-input-line-height: $line-height-base !default;\n$form-input-border-radius: $border-radius-default !default;\n\n// Form Input styling\n$form-input-bg: #FFF !default;\n$form-input-bg-focus: #FFF !default;\n$form-input-bg-hover: $gray-primary !default;\n$form-input-bg-disabled: $gray-lighter !default;\n$form-input-color: $font-color-default !default;\n$form-input-focus-color: $form-input-color !default;\n$form-input-disabled-color: $form-input-color !default;\n$form-input-placeholder-color: $gray-light !default;\n$form-input-border-color: $border-color-default !default;\n$form-input-border-focus-color: $brand-primary !default;\n\n// Form Input Static styling\n$form-input-static-border-color:\t\t#F0F0EE !default;\n\n// Form Group\n$form-group-margin-bottom: 15px !default;\n$form-group-gutter: 15px !default;\n\n\n\n\n//== Buttons\n//## Define background-color, border-color and text. Used in components/buttons\n\n// Default button style\n$btn-font-size: 14px !default;\n$btn-bordered: false !default; // Default value false, set to true if you want this effect\n$btn-border-radius: $border-radius-default !default;\n\n// Button Background Color\n$btn-default-bg: #FFF !default;\n$btn-inverse-bg: $brand-inverse !default;\n$btn-primary-bg: $brand-primary !default;\n$btn-info-bg: $brand-info !default;\n$btn-success-bg: $brand-success !default;\n$btn-warning-bg: $brand-warning !default;\n$btn-danger-bg: $brand-danger !default;\n\n// Button Border Color\n$btn-default-border-color: $brand-default !default;\n$btn-inverse-border-color: $btn-inverse-bg !default;\n$btn-primary-border-color: $btn-primary-bg !default;\n$btn-info-border-color: $btn-info-bg !default;\n$btn-success-border-color: $btn-success-bg !default;\n$btn-warning-border-color: $btn-warning-bg !default;\n$btn-danger-border-color: $btn-danger-bg !default;\n\n// Button Text Color\n$btn-default-color: $brand-primary !default;\n$btn-inverse-color: #FFF !default;\n$btn-primary-color: #FFF !default;\n$btn-info-color: #FFF !default;\n$btn-success-color: #FFF !default;\n$btn-warning-color: #FFF !default;\n$btn-danger-color: #FFF !default;\n\n// Button Background Color\n$btn-default-bg-hover: $btn-default-border-color !default;\n$btn-inverse-bg-hover: mix($btn-inverse-bg, white, 80%) !default;\n$btn-primary-bg-hover: mix($btn-primary-bg, black, 80%) !default;\n$btn-info-bg-hover: mix($btn-info-bg, black, 80%) !default;\n$btn-success-bg-hover: mix($btn-success-bg, black, 80%) !default;\n$btn-warning-bg-hover: mix($btn-warning-bg, black, 80%) !default;\n$btn-danger-bg-hover: mix($btn-danger-bg, black, 80%) !default;\n$btn-link-bg-hover: $gray-lighter !default;\n\n\n\n\n//== Header blocks\n//## Define look and feel over multible building blocks that serve as header\n$header-bg-color: $bg-color-secondary !default;\n$header-text-color: #FFF !default;\n$header-text-color-detail: rgba(0,0,0, 0.2) !default;\n\n\n\n\n\n//\n// ███████╗██╗ ██╗██████╗ ███████╗██████╗ ████████╗\n// ██╔════╝╚██╗██╔╝██╔══██╗██╔════╝██╔══██╗╚══██╔══╝\n// █████╗ ╚███╔╝ ██████╔╝█████╗ ██████╔╝ ██║\n// ██╔══╝ ██╔██╗ ██╔═══╝ ██╔══╝ ██╔══██╗ ██║\n// ███████╗██╔╝ ██╗██║ ███████╗██║ ██║ ██║\n// ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝\n//\n\n//== Color variations\n//## These variations are used to support several other variables and components\n\n// Color variations\n$color-default-darker: mix($brand-default, black, 60%) !default;\n$color-default-dark: mix($brand-default, black, 70%) !default;\n$color-default-light: mix($brand-default, white, 60%) !default;\n$color-default-lighter: mix($brand-default, white, 20%) !default;\n\n$color-inverse-darker: mix($brand-inverse, black, 60%) !default;\n$color-inverse-dark: mix($brand-inverse, black, 70%) !default;\n$color-inverse-light: mix($brand-inverse, white, 60%) !default;\n$color-inverse-lighter: mix($brand-inverse, white, 20%) !default;\n\n$color-primary-darker: mix($brand-primary, black, 60%) !default;\n$color-primary-dark: mix($brand-primary, black, 70%) !default;\n$color-primary-light: mix($brand-primary, white, 60%) !default;\n$color-primary-lighter: mix($brand-primary, white, 20%) !default;\n\n$color-info-darker: mix($brand-info, black, 60%) !default;\n$color-info-dark: mix($brand-info, black, 70%) !default;\n$color-info-light: mix($brand-info, white, 60%) !default;\n$color-info-lighter: mix($brand-info, white, 20%) !default;\n\n$color-success-darker: mix($brand-success, black, 60%) !default;\n$color-success-dark: mix($brand-success, black, 70%) !default;\n$color-success-light: mix($brand-success, white, 60%) !default;\n$color-success-lighter: mix($brand-success, white, 20%) !default;\n\n$color-warning-darker: mix($brand-warning, black, 60%) !default;\n$color-warning-dark: mix($brand-warning, black, 70%) !default;\n$color-warning-light: mix($brand-warning, white, 60%) !default;\n$color-warning-lighter: mix($brand-warning, white, 20%) !default;\n\n$color-danger-darker: mix($brand-danger, black, 60%) !default;\n$color-danger-dark: mix($brand-danger, black, 70%) !default;\n$color-danger-light: mix($brand-danger, white, 60%) !default;\n$color-danger-lighter: mix($brand-danger, white, 20%) !default;\n\n$brand-gradient: linear-gradient(152deg, #0CC7F0 0%, #087ECC 51%, #077AC9 55%, #0659B9 78%) !default;\n\n\n//== Grids\n//## Used for Datagrid, Templategrid, Listview & Tables (see components folder)\n\n// Default Border Colors\n$grid-border-color: $border-color-default !default;\n\n// Spacing\n// Default\n$grid-padding-top: 15px !default;\n$grid-padding-right: 15px !default;\n$grid-padding-bottom: 15px !default;\n$grid-padding-left: 15px !default;\n\n// Listview\n$listview-padding-top: 15px !default;\n$listview-padding-right: 15px !default;\n$listview-padding-bottom: 15px !default;\n$listview-padding-left: 15px !default;\n\n// Background Colors\n$grid-bg: #FFF !default;\n$grid-bg-header: transparent !default; // Grid Headers\n$grid-bg-hover: mix($grid-border-color, #FFF, 20%) !default;\n$grid-bg-selected: mix($grid-border-color, #FFF, 30%) !default;\n$grid-bg-selected-hover: mix($grid-border-color, #FFF, 50%) !default;\n\n// Striped Background Color\n$grid-bg-striped: mix($grid-border-color, #FFF, 10%) !default;\n\n// Background Footer Color\n$grid-footer-bg: $gray-primary !default;\n\n// Text Color\n$grid-selected-color: $font-color-default !default;\n\n// Paging Colors\n$grid-paging-bg: transparent !default;\n$grid-paging-bg-hover: transparent !default;\n$grid-paging-border-color: transparent !default;\n$grid-paging-border-color-hover: transparent !default;\n$grid-paging-color: $gray-light !default;\n$grid-paging-color-hover: $brand-primary !default;\n\n\n\n\n//== Tabs\n//## Default variables for Tab Container Widget (used in components/tabcontainer)\n\n// Text Color\n$tabs-color: $font-color-detail !default;\n$tabs-color-active: $font-color-default !default;\n$tabs-lined-color-active: $brand-primary !default;\n\n// Border Color\n$tabs-border-color: $border-color-default !default;\n$tabs-lined-border-color: $brand-primary !default;\n\n// Background Color\n$tabs-bg: #FFF !default;\n$tabs-bg-hover: lighten($tabs-border-color,5) !default;\n$tabs-bg-active: $brand-primary !default;\n\n\n\n\n//== Modals\n//## Default Mendix Modal, Blocking Modal and Login Modal (used in components/modals)\n\n// Background Color\n$modal-header-bg: transparent !default;\n\n// Border Color\n$modal-header-border-color: $border-color-default !default;\n\n// Text Color\n$modal-header-color: $font-color-default !default;\n\n\n\n\n//== Dataview\n//## Default variables for Dataview Widget (used in components/dataview)\n\n// Controls\n$dataview-controls-bg: transparent !default;\n$dataview-controls-border-color: $border-color-default !default;\n\n// Empty Message\n$dataview-emptymessage-bg: $bg-color !default;\n$dataview-emptymessage-color: $font-color-default !default;\n\n\n\n\n//== Alerts\n//## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts)\n\n// Background Color\n$alert-info-bg: $color-info-lighter !default;\n$alert-success-bg: $color-success-lighter !default;\n$alert-warning-bg: $color-warning-lighter !default;\n$alert-danger-bg: $color-danger-lighter !default;\n\n// Text Color\n$alert-info-color: $color-info-darker !default;\n$alert-success-color: $color-success-darker !default;\n$alert-warning-color: $color-warning-darker !default;\n$alert-danger-color: $color-danger-darker !default;\n\n// Border Color\n$alert-info-border-color: $color-info-dark !default;\n$alert-success-border-color: $color-success-dark !default;\n$alert-warning-border-color: $color-warning-dark !default;\n$alert-danger-border-color: $color-danger-dark !default;\n\n\n\n\n//== Labels\n//## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels)\n\n// Background Color\n$label-default-bg: $brand-default !default;\n$label-primary-bg: $brand-primary !default;\n$label-info-bg: $brand-info !default;\n$label-inverse-bg: $brand-inverse !default;\n$label-success-bg: $brand-success !default;\n$label-warning-bg: $brand-warning !default;\n$label-danger-bg: $brand-danger !default;\n\n// Border Color\n$label-default-border-color: $brand-default !default;\n$label-primary-border-color: $brand-primary !default;\n$label-info-border-color: $brand-info !default;\n$label-success-border-color: $brand-success !default;\n$label-warning-border-color: $brand-warning !default;\n$label-danger-border-color: $brand-danger !default;\n\n// Text Color\n$label-default-color: $font-color-default !default;\n$label-primary-color: #FFF !default;\n$label-info-color: #FFF !default;\n$label-inverse-color: #FFF !default;\n$label-success-color: #FFF !default;\n$label-warning-color: #FFF !default;\n$label-danger-color: #FFF !default;\n\n\n\n\n//== Groupbox\n//## Default variables for Groupbox Widget (used in components/groupbox)\n\n// Background Color\n$groupbox-default-bg: $brand-default !default;\n$groupbox-inverse-bg: $brand-inverse !default;\n$groupbox-primary-bg: $brand-primary !default;\n$groupbox-info-bg: $brand-info !default;\n$groupbox-success-bg: $brand-success !default;\n$groupbox-warning-bg: $brand-warning !default;\n$groupbox-danger-bg: $brand-danger !default;\n$groupbox-white-bg: #FFF !default;\n\n// Text Color\n$groupbox-default-color: $font-color-default !default;\n$groupbox-inverse-color: #FFF !default;\n$groupbox-primary-color: #FFF !default;\n$groupbox-info-color: #FFF !default;\n$groupbox-success-color: #FFF !default;\n$groupbox-warning-color: #FFF !default;\n$groupbox-danger-color: #FFF !default;\n$groupbox-white-color: $font-color-default !default;\n\n\n\n\n//== Callout (groupbox) Colors\n//## Extended variables for Groupbox Widget (used in components/groupbox)\n\n// Text and Border Color\n$callout-default-color: $font-color-default !default;\n$callout-info-color: $brand-info !default;\n$callout-success-color: $brand-success !default;\n$callout-warning-color: $brand-warning !default;\n$callout-danger-color: $brand-danger !default;\n\n// Background Color\n$callout-default-bg: $color-default-lighter!default;\n$callout-info-bg: $color-info-lighter !default;\n$callout-success-bg: $color-success-lighter !default;\n$callout-warning-bg: $color-warning-lighter !default;\n$callout-danger-bg: $color-danger-lighter !default;\n\n//== Timeline\n//## Extended variables for Timeline Widget\n// Colors\n$timeline-icon-color: $brand-primary;\n$timeline-border-color: $border-color-default;\n\n$timeline-color-header: $font-color-header;\n$timeline-color-detail: $font-color-detail;\n\n// Sizes\n$timeline-icon-size: 18px;\n\n//== Spacing\n//## Advanced layout options (used in base/mixins/default-spacing)\n\n// Small spacing\n$spacing-small: 5px !default;\n\n// Medium spacing\n$spacing-medium: 15px !default;\n$t-spacing-medium: 15px !default;\n$m-spacing-medium: 15px !default;\n\n// Large spacing\n$spacing-large: 30px !default;\n$t-spacing-large: 30px !default;\n$m-spacing-large: 15px !default;\n\n// Layout spacing\n$layout-spacing-top: 30px !default;\n$layout-spacing-right: 30px !default;\n$layout-spacing-bottom: 30px !default;\n$layout-spacing-left: 30px !default;\n\n$t-layout-spacing-top: 30px !default;\n$t-layout-spacing-right: 30px !default;\n$t-layout-spacing-bottom: 30px !default;\n$t-layout-spacing-left: 30px !default;\n\n$m-layout-spacing-top: 15px !default;\n$m-layout-spacing-right: 15px !default;\n$m-layout-spacing-bottom: 15px !default;\n$m-layout-spacing-left: 15px !default;\n\n// Combined layout spacing\n$layout-spacing: $layout-spacing-top $layout-spacing-right $layout-spacing-bottom $layout-spacing-left !default;\n$m-layout-spacing: $m-layout-spacing-top $m-layout-spacing-right $m-layout-spacing-bottom $m-layout-spacing-left !default;\n$t-layout-spacing: $t-layout-spacing-top $t-layout-spacing-right $t-layout-spacing-bottom $t-layout-spacing-left !default;\n\n// Gutter size\n$gutter-size: 15px !default;\n\n\n\n\n\n//== Tables\n//## Table spacing options (used in components/tables)\n\n$padding-table-cell-top: 8px !default;\n$padding-table-cell-bottom: 8px !default;\n$padding-table-cell-left: 8px !default;\n$padding-table-cell-right: 8px !default;\n\n\n\n\n//== Media queries breakpoints\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n$screen-xs: 480px !default;\n$screen-sm: 576px !default;\n$screen-md: 768px !default;\n$screen-lg: 992px !default;\n$screen-xl: 1200px !default;\n\n// So media queries don't overlap when required, provide a maximum (used for max-width)\n$screen-xs-max: ($screen-sm - 1) !default;\n$screen-sm-max: ($screen-md - 1) !default;\n$screen-md-max: ($screen-lg - 1) !default;\n$screen-lg-max: ($screen-xl - 1) !default;\n\n\n//== Settings\n//## Enable or disable your desired framework features\n// Use of !important\n$important-flex: true !default; // ./base/flex.scss\n$important-spacing: true !default; // ./base/spacing.scss\n$important-helpers: true !default; // ./helpers/helperclasses.scss\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin transition(\n $style: initial,\n $delay: 0s,\n $duration: 0.3s,\n $property: all,\n $timing-fucntion: cubic-bezier(0.4, 0, 0.2, 1)\n) {\n -webkit-transition: $property $duration $delay $timing-fucntion;\n -moz-transition: $property $duration $delay $timing-fucntion;\n -o-transition: $property $duration $delay $timing-fucntion;\n transition: $property $duration $delay $timing-fucntion;\n transform-style: $style;\n}\n\n@mixin ripple($color: #000, $transparency: 10%, $scale: 10) {\n position: relative;\n overflow: hidden;\n transform: translate3d(0, 0, 0);\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n pointer-events: none;\n background-image: radial-gradient(circle, $color $transparency, transparent $transparency);\n background-repeat: no-repeat;\n background-position: 50%;\n -webkit-transform: scale($scale, $scale);\n transform: scale($scale, $scale);\n opacity: 0;\n -webkit-transition: transform 0.5s, opacity 1s;\n -moz-transition: transform 0.5s, opacity 1s;\n -o-transition: transform 0.5s, opacity 1s;\n transition: transform 0.5s, opacity 1s;\n }\n\n &:active:after {\n -webkit-transform: scale(0, 0);\n transform: scale(0, 0);\n opacity: 0.1;\n transition: 0s;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin get-responsive-spacing-large($type: padding, $direction: all, $is_important: false) {\n $suffix: '';\n $dash: '-'; // Otherwise it will be interpreted as a minus symbol. Needed for the Gonzales PE version: 3.4.7 compiler (used by the Webmodeler)\n\n @if $is_important != false {\n $suffix: ' !important';\n }\n @if $direction==all {\n @media (max-width: $screen-sm-max) {\n #{$type}: #{$m-spacing-large}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}: #{$t-spacing-large}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}: #{$spacing-large}#{$suffix};\n }\n } @else {\n @media (max-width: $screen-sm-max) {\n #{$type}#{$dash}#{$direction}: #{$m-spacing-large}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}#{$dash}#{$direction}: #{$t-spacing-large}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}#{$dash}#{$direction}: #{$spacing-large}#{$suffix};\n }\n }\n}\n\n@mixin get-responsive-spacing-medium($type: padding, $direction: all, $is_important: false) {\n $suffix: '';\n $dash: '-'; // Otherwise it will be interpreted as a minus symbol. Needed for the Gonzales PE version: 3.4.7 compiler (used by the Webmodeler)\n\n @if $is_important != false {\n $suffix: ' !important';\n }\n @if $direction==all {\n @media (max-width: $screen-sm-max) {\n #{$type}: #{$m-spacing-medium}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}: #{$t-spacing-medium}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}: #{$spacing-medium}#{$suffix};\n }\n } @else {\n @media (max-width: $screen-sm-max) {\n #{$type}#{$dash}#{$direction}: #{$m-spacing-medium}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}#{$dash}#{$direction}: #{$t-spacing-medium}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}#{$dash}#{$direction}: #{$spacing-medium}#{$suffix};\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin layout-spacing($type: padding, $direction: all, $device: responsive, $is_important: false) {\n $suffix: '';\n @if $is_important != false {\n $suffix: ' !important';\n }\n @if $device==responsive {\n @if $direction==all {\n @media (max-width: $screen-sm-max) {\n #{$type}: #{$m-layout-spacing}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}: #{$t-layout-spacing}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}: #{$layout-spacing}#{$suffix};\n }\n } @else if $direction==top {\n @media (max-width: $screen-sm-max) {\n #{$type}-top: #{$m-layout-spacing-top}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}-top: #{$t-layout-spacing-top}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}-top: #{$layout-spacing-top}#{$suffix};\n }\n } @else if $direction==right {\n @media (max-width: $screen-sm-max) {\n #{$type}-right: #{$m-layout-spacing-right}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}-right: #{$t-layout-spacing-right}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}-right: #{$layout-spacing-right}#{$suffix};\n }\n } @else if $direction==bottom {\n @media (max-width: $screen-sm-max) {\n #{$type}-bottom: #{$m-layout-spacing-bottom}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}-bottom: #{$t-layout-spacing-bottom}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}-bottom: #{$layout-spacing-bottom}#{$suffix};\n }\n } @else if $direction==left {\n @media (max-width: $screen-sm-max) {\n #{$type}-left: #{$m-layout-spacing-left}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}-left: #{$t-layout-spacing-left}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}-left: #{$layout-spacing-left}#{$suffix};\n }\n }\n } @else if $device==tablet {\n @if $direction==all {\n #{$type}: #{$t-layout-spacing}#{$suffix};\n } @else if $direction==top {\n #{$type}-top: #{$t-layout-spacing-top}#{$suffix};\n } @else if $direction==right {\n #{$type}-right: #{$t-layout-spacing-right}#{$suffix};\n } @else if $direction==bottom {\n #{$type}-bottom: #{$t-layout-spacing-bottom}#{$suffix};\n } @else if $direction==left {\n #{$type}-left: #{$t-layout-spacing-left}#{$suffix};\n }\n } @else if $device==mobile {\n @if $direction==all {\n #{$type}: #{$m-layout-spacing}#{$suffix};\n } @else if $direction==top {\n #{$type}-top: #{$m-layout-spacing-top}#{$suffix};\n } @else if $direction==right {\n #{$type}-right: #{$m-layout-spacing-right}#{$suffix};\n } @else if $direction==bottom {\n #{$type}-bottom: #{$m-layout-spacing-bottom}#{$suffix};\n } @else if $direction==left {\n #{$type}-left: #{$m-layout-spacing-left}#{$suffix};\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin button-variant($color, $background, $border, $hover) {\n color: $color;\n border-color: $border;\n background-color: $background;\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open > &.dropdown-toggle {\n color: $color;\n border-color: $hover;\n background-color: $hover;\n }\n &:active,\n &.active,\n .open > &.dropdown-toggle {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n &[aria-disabled],\n fieldset[disabled] {\n &,\n &:hover,\n &:focus,\n &:active,\n &.active {\n border-color: $border;\n background-color: $background;\n }\n }\n // Button bordered\n &.btn-bordered {\n background-color: transparent;\n @if $color != $btn-default-color {\n color: $border;\n }\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open > &.dropdown-toggle {\n color: $color;\n border-color: $border;\n background-color: $border;\n }\n }\n // Button as link\n &.btn-link {\n text-decoration: none;\n border-color: transparent;\n background-color: transparent;\n @if $color != $btn-default-color {\n color: $background;\n }\n\n &:hover {\n border-color: $btn-link-bg-hover;\n background-color: $btn-link-bg-hover;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin groupbox-variant($color, $background) {\n > .mx-groupbox-header {\n color: $color;\n border-color: $background;\n background: $background;\n }\n > .mx-groupbox-body {\n border-color: $background;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@keyframes slideInUp {\n from {\n visibility: visible;\n transform: translate3d(0, 100%, 0);\n }\n\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n\n.animated {\n animation-duration: 0.4s;\n animation-fill-mode: both;\n}\n\n.slideInUp {\n animation-name: slideInUp;\n}\n\n@keyframes slideInDown {\n from {\n visibility: visible;\n transform: translate3d(0, -100%, 0);\n }\n\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n\n.slideInDown {\n animation-name: slideInDown;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n.fadeIn {\n animation-name: fadeIn;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Flex\n\n Flex classes\n========================================================================== */\n$important-flex-value: if($important-flex, ' !important', '');\n\n// Flex layout\n.flexcontainer {\n display: flex;\n overflow: hidden;\n flex: 1;\n flex-direction: row;\n\n .flexitem {\n margin-right: $gutter-size;\n\n &:last-child {\n margin-right: 0;\n }\n }\n\n .flexitem-main {\n overflow: hidden;\n flex: 1;\n }\n}\n\n// These classes define the order of the children\n.flex-row {\n flex-direction: row #{$important-flex-value};\n}\n\n.flex-column {\n flex-direction: column #{$important-flex-value};\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse #{$important-flex-value};\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse #{$important-flex-value};\n}\n\n.flex-wrap {\n flex-wrap: wrap #{$important-flex-value};\n}\n\n.flex-nowrap {\n flex-wrap: nowrap #{$important-flex-value};\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse #{$important-flex-value};\n}\n\n// Align children in both directions\n.flex-center {\n align-items: center #{$important-flex-value};\n justify-content: center #{$important-flex-value};\n}\n\n// These classes define the alignment of the children\n.justify-content-start {\n justify-content: flex-start #{$important-flex-value};\n}\n\n.justify-content-end {\n justify-content: flex-end #{$important-flex-value};\n}\n\n.justify-content-center {\n justify-content: center #{$important-flex-value};\n}\n\n.justify-content-between {\n justify-content: space-between #{$important-flex-value};\n}\n\n.justify-content-around {\n justify-content: space-around #{$important-flex-value};\n}\n\n.justify-content-evenly {\n // Not Supported in IE11\n justify-content: space-evenly #{$important-flex-value};\n}\n\n.justify-content-stretch {\n justify-content: stretch #{$important-flex-value};\n}\n\n/// These classes define the alignment of the children in the cross-direction\n.align-children-start {\n align-items: flex-start #{$important-flex-value};\n}\n\n.align-children-end {\n align-items: flex-end #{$important-flex-value};\n}\n\n.align-children-center {\n align-items: center #{$important-flex-value};\n}\n\n.align-children-baseline {\n align-items: baseline #{$important-flex-value};\n}\n\n.align-children-stretch {\n align-items: stretch #{$important-flex-value};\n}\n\n/// These classes define the alignment of the rows of children in the cross-direction\n.align-content-start {\n align-content: flex-start #{$important-flex-value};\n}\n\n.align-content-end {\n align-content: flex-end #{$important-flex-value};\n}\n\n.align-content-center {\n align-content: center #{$important-flex-value};\n}\n\n.align-content-between {\n align-content: space-between #{$important-flex-value};\n}\n\n.align-content-around {\n align-content: space-around #{$important-flex-value};\n}\n\n.align-content-stretch {\n align-content: stretch #{$important-flex-value};\n}\n\n/// These classes allow the default alignment to be overridden for individual items\n.align-self-auto {\n align-self: auto #{$important-flex-value};\n}\n\n.align-self-start {\n align-self: flex-start #{$important-flex-value};\n}\n\n.align-self-end {\n align-self: flex-end #{$important-flex-value};\n}\n\n.align-self-center {\n align-self: center #{$important-flex-value};\n}\n\n.align-self-baseline {\n align-self: baseline #{$important-flex-value};\n}\n\n.align-self-stretch {\n align-self: stretch #{$important-flex-value};\n}\n\n/// These classes define the percentage of available free space within a flex container a flex item will take.\n@mixin flex-items($number) {\n @for $i from 1 through $number {\n .flexitem-#{$i} {\n flex: #{$i} #{$i} 1%;\n }\n }\n}\n\n@include flex-items($number: 12);\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Spacing\n\n Spacing classes\n========================================================================== */\n$important-spacing-value: if($important-spacing, ' !important', '');\n\n// Spacing none\n.spacing-inner-none {\n padding: 0 #{$important-spacing-value};\n}\n\n.spacing-inner-top-none {\n padding-top: 0 #{$important-spacing-value};\n}\n\n.spacing-inner-right-none {\n padding-right: 0 #{$important-spacing-value};\n}\n\n.spacing-inner-bottom-none {\n padding-bottom: 0 #{$important-spacing-value};\n}\n\n.spacing-inner-left-none {\n padding-left: 0 #{$important-spacing-value};\n}\n\n.spacing-outer-none {\n margin: 0 #{$important-spacing-value};\n}\n\n.spacing-outer-top-none {\n margin-top: 0 #{$important-spacing-value};\n}\n\n.spacing-outer-right-none {\n margin-right: 0 #{$important-spacing-value};\n}\n\n.spacing-outer-bottom-none {\n margin-bottom: 0 #{$important-spacing-value};\n}\n\n.spacing-outer-left-none {\n margin-left: 0 #{$important-spacing-value};\n}\n\n// Spacing small\n.spacing-inner {\n padding: $spacing-small #{$important-spacing-value};\n}\n\n.spacing-inner-top {\n padding-top: $spacing-small #{$important-spacing-value};\n}\n\n.spacing-inner-right {\n padding-right: $spacing-small #{$important-spacing-value};\n}\n\n.spacing-inner-bottom {\n padding-bottom: $spacing-small #{$important-spacing-value};\n}\n\n.spacing-inner-left {\n padding-left: $spacing-small #{$important-spacing-value};\n}\n\n.spacing-outer {\n margin: $spacing-small #{$important-spacing-value};\n}\n\n.spacing-outer-top {\n margin-top: $spacing-small #{$important-spacing-value};\n}\n\n.spacing-outer-right {\n margin-right: $spacing-small #{$important-spacing-value};\n}\n\n.spacing-outer-bottom {\n margin-bottom: $spacing-small #{$important-spacing-value};\n}\n\n.spacing-outer-left {\n margin-left: $spacing-small #{$important-spacing-value};\n}\n\n// Spacing Medium\n.spacing-inner-medium {\n @include get-responsive-spacing-medium($type: padding, $direction: all, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-top-medium {\n @include get-responsive-spacing-medium($type: padding, $direction: top, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-right-medium {\n @include get-responsive-spacing-medium($type: padding, $direction: right, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-bottom-medium {\n @include get-responsive-spacing-medium($type: padding, $direction: bottom, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-left-medium {\n @include get-responsive-spacing-medium($type: padding, $direction: left, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-medium {\n @include get-responsive-spacing-medium($type: margin, $direction: all, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-top-medium {\n @include get-responsive-spacing-medium($type: margin, $direction: top, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-right-medium {\n @include get-responsive-spacing-medium($type: margin, $direction: right, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-bottom-medium {\n @include get-responsive-spacing-medium($type: margin, $direction: bottom, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-left-medium {\n @include get-responsive-spacing-medium($type: margin, $direction: left, $is_important: #{$important-spacing-value});\n}\n\n// Spacing Large\n.spacing-inner-large {\n @include get-responsive-spacing-large($type: padding, $direction: all, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-top-large {\n @include get-responsive-spacing-large($type: padding, $direction: top, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-right-large {\n @include get-responsive-spacing-large($type: padding, $direction: right, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-bottom-large {\n @include get-responsive-spacing-large($type: padding, $direction: bottom, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-left-large {\n @include get-responsive-spacing-large($type: padding, $direction: left, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-large {\n @include get-responsive-spacing-large($type: margin, $direction: all, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-top-large {\n @include get-responsive-spacing-large($type: margin, $direction: top, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-right-large {\n @include get-responsive-spacing-large($type: margin, $direction: right, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-bottom-large {\n @include get-responsive-spacing-large($type: margin, $direction: bottom, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-left-large {\n @include get-responsive-spacing-large($type: margin, $direction: left, $is_important: #{$important-spacing-value});\n}\n\n// Spacing layouts\n.spacing-inner-layout {\n @include layout-spacing($type: padding, $direction: all, $device: responsive, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-top-layout {\n @include layout-spacing($type: padding, $direction: top, $device: responsive, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-right-layout {\n @include layout-spacing($type: padding, $direction: right, $device: responsive, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-bottom-layout {\n @include layout-spacing($type: padding, $direction: bottom, $device: responsive, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-left-layout {\n @include layout-spacing($type: padding, $direction: left, $device: responsive, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-layout {\n @include layout-spacing($type: margin, $direction: all, $device: responsive, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-top-layout {\n @include layout-spacing($type: margin, $direction: top, $device: responsive, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-right-layout {\n @include layout-spacing($type: margin, $direction: right, $device: responsive, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-bottom-layout {\n @include layout-spacing($type: margin, $direction: bottom, $device: responsive, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-left-layout {\n @include layout-spacing($type: margin, $direction: left, $device: responsive, $is_important: #{$important-spacing-value});\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n// Basic styling Scroll container\n// .mx-scrollcontainer {\n// .mx-scrollcontainer-wrapper {\n// padding: 0;\n// // Convert width to max-width when in scroll container to make sure you dont get scrollbars\n// .mx-layoutgrid-fixed {\n// width: 100%;\n// margin: auto;\n// @media (min-width: $screen-md) {\n// max-width: 750px;\n// }\n// @media (min-width: $screen-lg) {\n// max-width: 970px;\n// }\n// @media (min-width: $screen-xl) {\n// max-width: 1170px;\n// }\n// }\n// }\n// }\n\n.mx-scrollcontainer .mx-placeholder {\n width: 100%;\n height: 100%;\n .mx-layoutgrid,\n .mx-layoutgrid-fluid {\n @include layout-spacing($type: padding, $direction: all, $device: responsive);\n .mx-layoutgrid,\n .mx-layoutgrid-fluid {\n padding: 0;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Base\n\n Default settings\n========================================================================== */\nhtml {\n height: 100%;\n}\n\nbody {\n min-height: 100%;\n color: $font-color-default;\n background-color: $bg-color;\n font-family: $font-family-base;\n font-size: $font-size-default;\n font-weight: $font-weight-normal;\n line-height: $line-height-base;\n}\n\na {\n -moz-transition: 0.25s;\n -o-transition: 0.25s;\n -webkit-transition: 0.25s;\n transition: 0.25s;\n color: $link-color;\n -webkit-backface-visibility: hidden;\n}\n\na:hover {\n text-decoration: underline;\n color: $link-hover-color;\n}\n\n// Address `outline` inconsistency between Chrome and other browsers.\na:focus {\n outline: thin dotted;\n}\n\n// Improve readability when focused and also mouse hovered in all browsers\na:active,\na:hover {\n outline: 0;\n}\n\n// Removes large blue border in chrome on focus and active states\ninput:focus,\nbutton:focus,\n.mx-link:focus {\n outline: 0;\n}\n\n// Removes large blue border for tabindexes from widgets\ndiv[tabindex] {\n outline: 0;\n}\n\n// Disabled State\n.disabled,\n[disabled] {\n cursor: not-allowed;\n // opacity: 0.65;\n -webkit-box-shadow: none;\n box-shadow: none;\n filter: alpha(opacity=65);\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\nbody {\n height: 100%;\n}\n\n.loginpage {\n display: flex;\n height: 100%;\n}\n.loginpage-logo {\n position: absolute;\n top: 30px;\n right: 30px;\n width: 120px;\n}\n\n.loginpage-left {\n display: none;\n}\n\n.loginpage-right {\n display: flex;\n flex: 1;\n flex-direction: column;\n justify-content: space-around;\n}\n.loginpage-formwrapper {\n width: 400px;\n margin: 0 auto;\n}\n// Form\n.loginpage-form {\n .alert {\n display: none;\n }\n\n .btn {\n border-radius: 40px;\n }\n\n // Form label + input\n .form-group {\n width: 100%;\n align-items: center;\n\n .control-label {\n flex: 4;\n margin-bottom: 0;\n font-size: $font-size-default;\n font-weight: 500;\n }\n\n .inputwrapper {\n flex: 8;\n position: relative;\n width: 100%;\n\n .glyphicon {\n &:before {\n -webkit-transition: color 0.4s;\n -moz-transition: color 0.4s;\n -o-transition: color 0.4s;\n transition: color 0.4s;\n }\n\n position: absolute;\n top: 50%;\n left: $form-input-padding-x;\n -webkit-transform: translateY(-50%);\n -moz-transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n -o-transform: translateY(-50%);\n transform: translateY(-50%);\n\n &-eye-open:hover,\n &-eye-close:hover {\n cursor: pointer;\n color: $brand-primary;\n }\n }\n\n .form-control {\n padding: $form-input-padding-y $form-input-padding-x $form-input-padding-y 45px;\n }\n\n .form-control:focus ~ .glyphicon:before {\n color: $brand-primary;\n }\n }\n }\n}\n// Divider - only on login-with-sso.html\n.loginpage-alternativelabel {\n display: flex;\n align-items: center;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n margin: 25px 0px;\n\n hr {\n flex: 1;\n margin: 20px 0 20px 10px;\n border: 0;\n border-color: #d8d8d8;\n border-top: 1px solid #eeeeee;\n }\n}\n\n.loginpage-signin {\n color: #555555;\n}\n\n// Show only on wide screens\n@media screen and (min-width: $screen-xl) {\n .loginpage-logo {\n width: 150px;\n }\n\n .loginpage-left {\n position: relative;\n display: block;\n flex: 1;\n width: 100%;\n height: 100%;\n }\n // Image and clipping mask\n .loginpage-image {\n height: 100%;\n animation: makePointer 1s ease-out both;\n background: left / cover no-repeat url('../../../resources/work-do-more.jpeg'); // Microsoft EDGE\n background: left / cover no-repeat\n linear-gradient(to right, rgba($brand-primary, 0.9) 0%, rgba($brand-primary, 0.6) 100%),\n left / cover no-repeat url('../../../resources/work-do-more.jpeg');\n background: left / cover no-repeat -moz-linear-gradient(left, rgba($brand-primary, 0.9) 0%, rgba(\n $brand-primary,\n 0.6\n )\n 100%),\n left / cover no-repeat url('../../../resources/work-do-more.jpeg');\n background: left / cover no-repeat -webkit-gradient(linear, left bottom, right bottom, color-stop(0%, rgba($brand-primary, 0.9)), color-stop(100%, rgba($brand-primary, 0.6))),\n left / cover no-repeat url('../../../resources/work-do-more.jpeg');\n background: left / cover no-repeat -webkit-linear-gradient(left, rgba($brand-primary, 0.9) 0%, rgba(\n $brand-primary,\n 0.6\n )\n 100%),\n left / cover no-repeat url('../../../resources/work-do-more.jpeg');\n background: left / cover no-repeat -o-linear-gradient(left, rgba($brand-primary, 0.9) 0%, rgba(\n $brand-primary,\n 0.6\n )\n 100%),\n left / cover no-repeat url('../../../resources/work-do-more.jpeg');\n background: left / cover no-repeat -ms-linear-gradient(left, rgba($brand-primary, 0.9) 0%, rgba(\n $brand-primary,\n 0.6\n )\n 100%),\n left / cover no-repeat url('../../../resources/work-do-more.jpeg');\n -webkit-clip-path: polygon(0% 0%, 100% 0, 100% 50%, 100% 100%, 0% 100%);\n clip-path: polygon(0% 0%, 100% 0, 100% 50%, 100% 100%, 0% 100%);\n }\n\n .loginpage-formwrapper {\n width: 400px;\n }\n}\n\n// Animate image clipping mask\n@keyframes makePointer {\n 100% {\n -webkit-clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);\n clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);\n }\n}\n@-webkit-keyframes makePointer {\n 100% {\n -webkit-clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);\n clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Inputs\n\n The form-control class style all inputs\n========================================================================== */\n.form-control {\n display: flex;\n flex: 1;\n min-width: 50px;\n height: $form-input-height;\n padding: $form-input-padding-y $form-input-padding-x;\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n color: $form-input-color;\n border: 1px solid $form-input-border-color;\n border-radius: $form-input-border-radius;\n background-color: $form-input-bg;\n background-image: none;\n box-shadow: none;\n font-size: $form-input-font-size;\n line-height: $form-input-line-height;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n @if $form-input-style==lined {\n @extend .form-control-lined;\n }\n}\n\n.form-control:not([readonly]):focus {\n border-color: $form-input-border-focus-color;\n outline: 0;\n background-color: $form-input-bg-focus;\n box-shadow: none;\n}\n\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n opacity: 1;\n background-color: #EEEEEE;\n}\n\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\n\n// Lined\n.form-control-lined {\n border: 0;\n border-bottom: 1px solid $form-input-border-color;\n border-radius: 0;\n background-color: transparent;\n\n &:focus {\n background-color: transparent;\n }\n}\n\n// Read only form control class\n.form-control-static {\n overflow: hidden;\n flex: 1;\n min-height: auto;\n padding: $form-input-padding-y $form-input-padding-x;\n border-bottom: 1px solid $form-input-static-border-color;\n font-size: $form-input-font-size;\n line-height: $form-input-line-height;\n\n & + .control-label {\n margin-left: $form-label-gutter;\n }\n}\n\n// Dropdown input widget\nselect.form-control {\n $arrow: \"data:image/svg+xml;utf8,\";\n padding-right: 30px;\n background-image: url($arrow);\n background-repeat: no-repeat;\n background-position: calc(100% - #{$form-input-padding-x}) center;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n}\n\n.form-control.mx-selectbox {\n align-items: center;\n flex-direction: row-reverse;\n justify-content: space-between;\n}\n\n// Not editable textarea, textarea will be rendered as a label\n.mx-textarea .control-label {\n height: auto;\n}\n\ntextarea.form-control {\n flex-basis: auto;\n}\n\n.mx-compound-control {\n display: flex;\n flex: 1;\n flex-wrap: wrap;\n max-width: 100%;\n\n .mx-validation-message {\n flex-basis: 100%;\n margin-top: 5px;\n }\n}\n\n// Form Group\n.form-group {\n display: flex;\n flex-direction: row;\n margin-bottom: $form-group-margin-bottom;\n\n & > div[class*='col-'] {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n }\n\n & > [class*='col-'] {\n padding-right: $form-group-gutter;\n padding-left: $form-group-gutter;\n }\n\n // Alignment content\n div[class*='textBox'] > .control-label,\n div[class*='textArea'] > .control-label,\n div[class*='datePicker'] > .control-label {\n @extend .form-control-static;\n }\n\n // Label\n .control-label {\n overflow: hidden;\n margin-bottom: 5px;\n text-overflow: ellipsis;\n color: $form-label-color;\n font-size: $form-label-size;\n font-weight: $form-label-weight;\n }\n\n .mx-validation-message {\n flex-basis: 100%;\n }\n\n &.no-columns:not(.label-after) {\n flex-direction: column;\n }\n}\n\n.form-group.label-after {\n .form-control-static {\n flex: unset;\n }\n\n .control-label {\n margin-bottom: 0;\n }\n}\n\n.mx-dateinput,\n.mx-referenceselector,\n.mx-referencesetselector {\n flex: 1;\n}\n\n// Targets only webkit iOS devices\n.dj_webkit.dj_ios .form-control {\n transform: translateZ(0);\n}\n\n@media only screen and (min-width: $screen-md) {\n .form-horizontal {\n .control-label {\n margin-bottom: 0;\n padding-top: $form-input-padding-y;\n padding-bottom: $form-input-padding-y;\n line-height: $form-input-line-height;\n }\n }\n}\n\n@media only screen and (max-width: $screen-sm-max) {\n .form-group {\n flex-direction: column;\n }\n}\n\n@media only screen and (max-device-width: 1024px) and (-webkit-min-device-pixel-ratio: 0) {\n // Fixes alignment bug on iPads / iPhones where datefield is not aligned vertically\n input[type='date'],\n input[type='time'],\n input[type='datetime-local'],\n input[type='month'] {\n line-height: 1;\n }\n // Fix shrinking of date inputs because inability of setting a placeholder\n input[type='time']:not(.has-value):before,\n input[type='date']:not(.has-value):before,\n input[type='month']:not(.has-value):before,\n input[type='datetime-local']:not(.has-value):before {\n margin-right: 0.5em;\n content: attr(placeholder) !important;\n color: #AAAAAA;\n }\n input[type='time'].has-value:before,\n input[type='date'].has-value:before,\n input[type='month'].has-value:before,\n input[type='datetime-local'].has-value:before {\n content: '' !important;\n }\n}\n\n@media (-ms-high-contrast: none), (-ms-high-contrast: active) {\n // Target IE10+\n .form-group {\n display: block;\n }\n}\n\n[dir='rtl'] {\n // Dropdown input widget\n select.form-control {\n padding-right: 30px;\n padding-left: 0;\n background-position: #{$form-input-padding-x} center;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Alerts\n\n Default Bootstrap Alert boxes. Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages\n========================================================================== */\n\n.alert {\n margin-top: 0; // want to align it with padding of a page\n padding: 15px;\n border: 0;\n border-radius: 4px;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Alerts\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n.alert-bordered {\n border: 1px solid;\n}\n\n// Color variations\n.alert-success {\n color: $alert-success-color;\n border-color: $alert-success-border-color;\n background-color: $alert-success-bg;\n}\n\n.alert-info {\n color: $alert-info-color;\n border-color: $alert-info-border-color;\n background-color: $alert-info-bg;\n}\n\n.alert-warning {\n color: $alert-warning-color;\n border-color: $alert-warning-border-color;\n background-color: $alert-warning-bg;\n}\n\n.alert-danger {\n color: $alert-danger-color;\n border-color: $alert-danger-border-color;\n background-color: $alert-danger-bg;\n}\n\n//== State\n//## Styling when component is in certain state\n//-------------------------------------------------------------------------------------------------------------------//\n.has-error .alert {\n margin-top: 8px;\n margin-bottom: 0;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Backgrounds\n\n Different background components, all managed by variables\n========================================================================== */\n\n.background-main {\n background-color: $bg-color !important;\n}\n\n.background-secondary {\n background-color: $bg-color-secondary !important;\n}\n\n.background-default {\n background-color: $brand-default !important;\n}\n\n.background-default-darker {\n background-color: $color-default-darker !important;\n}\n\n.background-default-dark {\n background-color: $color-default-dark !important;\n}\n\n.background-default-light {\n background-color: $color-default-light !important;\n}\n\n.background-default-lighter {\n background-color: $color-default-lighter !important;\n}\n\n.background-inverse {\n background-color: $brand-inverse !important;\n}\n\n.background-inverse-darker {\n background-color: $color-inverse-darker !important;\n}\n\n.background-inverse-dark {\n background-color: $color-inverse-dark !important;\n}\n\n.background-inverse-light {\n background-color: $color-inverse-light !important;\n}\n\n.background-inverse-lighter {\n background-color: $color-inverse-lighter !important;\n}\n\n.background-primary {\n background-color: $brand-primary !important;\n}\n\n.background-primary-darker {\n background-color: $color-primary-darker !important;\n}\n\n.background-primary-dark {\n background-color: $color-primary-dark !important;\n}\n\n.background-primary-light {\n background-color: $color-primary-light !important;\n}\n\n.background-primary-lighter {\n background-color: $color-primary-lighter !important;\n}\n\n.background-info {\n background-color: $brand-info !important;\n}\n\n.background-info-darker {\n background-color: $color-info-darker !important;\n}\n\n.background-info-dark {\n background-color: $color-info-dark !important;\n}\n\n.background-info-light {\n background-color: $color-info-light !important;\n}\n\n.background-info-lighter {\n background-color: $color-info-lighter !important;\n}\n\n.background-success {\n background-color: $brand-success !important;\n}\n\n.background-success-darker {\n background-color: $color-success-darker !important;\n}\n\n.background-success-dark {\n background-color: $color-success-dark !important;\n}\n\n.background-success-light {\n background-color: $color-success-light !important;\n}\n\n.background-success-lighter {\n background-color: $color-success-lighter !important;\n}\n\n.background-warning {\n background-color: $brand-warning !important;\n}\n\n.background-warning-darker {\n background-color: $color-warning-darker !important;\n}\n\n.background-warning-dark {\n background-color: $color-warning-dark !important;\n}\n\n.background-warning-light {\n background-color: $color-warning-light !important;\n}\n\n.background-warning-lighter {\n background-color: $color-warning-lighter !important;\n}\n\n.background-danger {\n background-color: $brand-danger !important;\n}\n\n.background-danger-darker {\n background-color: $color-danger-darker !important;\n}\n\n.background-danger-dark {\n background-color: $color-danger-dark !important;\n}\n\n.background-danger-light {\n background-color: $color-danger-light !important;\n}\n\n.background-danger-lighter {\n background-color: $color-danger-lighter !important;\n}\n\n.background-brand-gradient {\n background-image: $brand-gradient !important;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Buttons\n\n Default Bootstrap and Mendix Buttons\n========================================================================== */\n\n.btn,\n.mx-button {\n display: inline-block;\n margin-bottom: 0;\n padding: 0.6em 1em;\n cursor: pointer;\n -moz-user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n -moz-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n -webkit-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n text-align: center;\n vertical-align: middle;\n white-space: nowrap;\n color: $btn-default-color;\n border: 1px solid $btn-default-border-color;\n border-radius: $btn-border-radius;\n background-color: $btn-default-bg;\n background-image: none;\n box-shadow: none;\n text-shadow: none;\n font-size: $btn-font-size;\n line-height: $line-height-base;\n\n &:hover,\n &:focus,\n &:active,\n &:active:focus {\n outline: none;\n box-shadow: none;\n }\n\n &[aria-disabled] {\n cursor: not-allowed;\n pointer-events: none;\n opacity: 0.65;\n filter: alpha(opacity=65);\n }\n\n @if $btn-bordered != false {\n @extend .btn-bordered;\n }\n}\n\n// Mendix button link\n.mx-link {\n padding: 0;\n color: $link-color;\n\n &[aria-disabled='true'] {\n cursor: not-allowed;\n pointer-events: none;\n opacity: 0.65;\n filter: alpha(opacity=65);\n }\n}\n\n// Images and icons in buttons\n.btn,\n.mx-button,\n.mx-link {\n img {\n //height: auto; // MXUI override who set the height on 16px default\n height: $font-size-default + 4px;\n margin-right: 5px;\n vertical-align: text-top;\n }\n}\n\n//== Phone specific\n//-------------------------------------------------------------------------------------------------------------------//\n.profile-phone {\n .btn,\n .mx-link {\n &:active {\n -webkit-transform: translateY(1px);\n transform: translateY(1px);\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Buttons\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Color variations\n.btn,\n.btn-default {\n @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border-color, $btn-default-bg-hover);\n}\n\n.btn-primary {\n @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border-color, $btn-primary-bg-hover);\n}\n\n.btn-inverse {\n @include button-variant($btn-inverse-color, $btn-inverse-bg, $btn-inverse-border-color, $btn-inverse-bg-hover);\n}\n\n.btn-success {\n @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border-color, $btn-success-bg-hover);\n}\n\n.btn-info {\n @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border-color, $btn-info-bg-hover);\n}\n\n.btn-warning {\n @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border-color, $btn-warning-bg-hover);\n}\n\n.btn-danger {\n @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border-color, $btn-danger-bg-hover);\n}\n\n// Button Sizes\n.btn-lg {\n font-size: $font-size-large;\n img {\n height: calc(#{$font-size-small} + 4px);\n }\n}\n\n.btn-sm {\n font-size: $font-size-small;\n img {\n height: calc(#{$font-size-small} + 4px);\n }\n}\n\n// Button Image\n.btn-image {\n padding: 0;\n vertical-align: middle;\n border-style: none;\n background-color: transparent;\n img {\n display: block; // or else the button doesn't get a width\n height: auto; // Image set height\n }\n &:hover,\n &:focus {\n background-color: transparent;\n }\n}\n\n// Icon buttons\n.btn-icon {\n & > img,\n & > .glyphicon {\n margin: 0;\n }\n}\n\n.btn-icon-right {\n & > img,\n & > .glyphicon {\n float: right;\n margin-left: 5px;\n }\n}\n\n.btn-icon-top {\n padding-right: 0;\n padding-left: 0;\n & > img,\n & > .glyphicon {\n display: block;\n margin: 0 0 5px 0;\n }\n}\n\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Checkbox\n\n Default Mendix Checkbox Widget\n========================================================================== */\n\n.mx-checkbox.label-after {\n flex-wrap: wrap;\n\n .control-label {\n padding: 0;\n }\n}\n\ninput[type='checkbox'] {\n position: relative !important; //Remove after mxui merge\n width: 16px;\n height: 16px;\n margin: 0 !important; // Remove after mxui merge\n cursor: pointer;\n -moz-user-select: none;\n -ms-user-select: none;\n -o-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n\n\n &::-ms-check {\n color: $form-input-border-color;\n border-color: $form-input-border-color;\n border-radius: $form-input-border-radius;\n background-color: $form-input-bg;\n }\n\n &:focus::-ms-check,\n &:checked::-ms-check {\n color: $form-input-border-focus-color;\n border-color: $form-input-border-focus-color;\n background-color: $form-input-bg-focus;\n }\n\n &:before,\n &:after {\n position: absolute;\n display: block;\n transition: all 0.3s ease;\n }\n\n &:before {\n // Checkbox\n width: 100%;\n height: 100%;\n content: '';\n border: 1px solid $form-input-border-color;\n border-radius: $form-input-border-radius;\n background-color: transparent;\n }\n\n &:after {\n // Checkmark\n width: 8px;\n height: 4px;\n margin: 5px 4px;\n transform: rotate(-45deg);\n pointer-events: none;\n border: 2px solid #FFFFFF;\n border-top: 0;\n border-right: 0;\n }\n\n &:not(:disabled):not(:checked):hover:after {\n content: '';\n border-color: $form-input-bg-hover; // color of checkmark on hover\n }\n\n &:checked:before {\n border-color: $form-input-border-focus-color;\n background-color: $form-input-border-focus-color;\n }\n\n &:checked:after {\n content: '';\n }\n\n &:disabled:before {\n background-color: $form-input-bg-disabled;\n }\n\n &:checked:disabled:before {\n border-color: transparent;\n background-color: rgba($form-input-border-focus-color, 0.4);\n }\n\n &:disabled:after,\n &:checked:disabled:after {\n border-color: $form-input-bg-disabled;\n }\n\n & + .control-label {\n margin-left: $form-label-gutter;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Grid\n\n Default Mendix Grid (used for Mendix Datagrid)\n========================================================================== */\n\n.mx-grid {\n padding: 0px;\n border: 0;\n border-radius: 0;\n .mx-grid-controlbar {\n margin: 10px 0;\n /* Paging */\n .mx-grid-pagingbar {\n /* Buttons */\n .mx-button {\n padding: 6px;\n color: $grid-paging-color;\n border-color: $grid-paging-border-color;\n background-color: $grid-paging-bg;\n &:hover {\n color: $grid-paging-color-hover;\n border-color: $grid-paging-border-color-hover;\n background-color: $grid-paging-bg-hover;\n }\n }\n /* Text Paging .. to .. to .. */\n .mx-grid-paging-status {\n padding: 0 8px 8px;\n }\n }\n }\n .mx-grid-searchbar {\n margin: 10px 0;\n .mx-grid-search-item {\n .mx-grid-search-label {\n vertical-align: middle;\n label {\n padding-top: 5px;\n }\n }\n .mx-grid-search-input {\n display: inline-flex;\n .form-control {\n height: 28px;\n font-size: 11px;\n }\n select.form-control {\n padding: 3px;\n vertical-align: middle;\n }\n .mx-button {\n height: 28px;\n padding-top: 2px;\n padding-bottom: 2px;\n }\n }\n }\n }\n}\n\n// Remove default border from grid inside a Mendix Dataview\n.mx-dataview .mx-grid {\n border: 0;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Datagrid Default\n\n Default Mendix Datagrid Widget. The datagrid shows a list of objects in a grid\n========================================================================== */\n\n.mx-datagrid {\n table {\n border-width: 0;\n background-color: transparent;\n /* Table header */\n th {\n border-style: solid;\n border-color: $grid-border-color;\n border-top-width: 0;\n border-right: 0;\n border-bottom-width: 1px;\n border-left: 0;\n background-color: $grid-bg-header;\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n vertical-align: middle;\n .mx-datagrid-head-caption {\n white-space: normal;\n }\n }\n /* Table Body */\n tbody tr {\n td {\n @include transition();\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n vertical-align: middle;\n border-width: 0;\n border-color: $grid-border-color;\n border-bottom-width: 1px;\n border-bottom-style: solid;\n background-color: $grid-bg;\n &:focus {\n outline: none;\n }\n /* Text without spaces */\n .mx-datagrid-data-wrapper {\n text-overflow: ellipsis;\n }\n }\n &.selected td,\n &.selected:hover td {\n color: $grid-selected-color;\n background-color: $grid-bg-selected !important;\n }\n }\n /* Table Footer */\n tfoot {\n > tr > th {\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n border-width: 0;\n background-color: $grid-footer-bg;\n }\n > tr > td {\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n border-width: 0;\n background-color: $grid-bg;\n font-weight: $font-weight-bold;\n }\n }\n & *:focus {\n outline: 0;\n }\n }\n}","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Datagrid Default\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Striped style\n.datagrid-striped.mx-datagrid {\n table {\n th {\n border-width: 0;\n }\n\n tbody tr {\n td {\n border-top-width: 0;\n }\n\n &:nth-child(odd) td {\n background-color: $grid-bg-striped;\n }\n }\n }\n}\n\n// Bordered style\n.datagrid-bordered.mx-datagrid {\n table {\n border: 1px solid;\n\n th {\n border: 1px solid $grid-border-color;\n }\n\n tbody tr {\n td {\n border: 1px solid $grid-border-color;\n }\n }\n }\n\n tfoot {\n > tr > th {\n border-width: 0;\n background-color: $grid-footer-bg;\n }\n\n > tr > td {\n border-width: 1px;\n }\n }\n}\n\n// Transparent style so you can see the background\n.datagrid-transparent.mx-datagrid {\n table {\n background-color: transparent;\n\n tbody tr {\n &:nth-of-type(odd) {\n background-color: transparent;\n }\n\n td {\n background-color: transparent;\n }\n }\n }\n}\n\n// Hover style activated\n.datagrid-hover.mx-datagrid {\n table {\n tbody tr {\n &:hover td {\n background-color: $grid-bg-hover !important;\n }\n\n &.selected:hover td {\n background-color: $grid-bg-selected-hover !important;\n }\n }\n }\n}\n\n// Datagrid Row Sizes\n.datagrid-lg.mx-datagrid {\n table {\n th {\n padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2) ($grid-padding-left * 2);\n }\n\n tbody tr {\n td {\n padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2) ($grid-padding-left * 2);\n }\n }\n }\n}\n\n.datagrid-sm.mx-datagrid {\n table {\n th {\n padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2) ($grid-padding-left / 2);\n }\n\n tbody tr {\n td {\n padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2) ($grid-padding-left/ 2);\n }\n }\n }\n}\n\n// Datagrid Full Search\n// Default Mendix Datagrid Widget with adjusted search field. Only 1 search field is allowed\n.datagrid-fullsearch.mx-grid {\n .mx-grid-search-button {\n @extend .btn-primary;\n }\n\n .mx-grid-reset-button {\n display: none;\n }\n\n .mx-grid-search-item {\n display: block;\n }\n\n .mx-grid-search-label {\n display: none;\n }\n\n .mx-grid-searchbar {\n .mx-grid-search-controls {\n position: absolute;\n right: 0;\n }\n\n .mx-grid-search-input {\n width: 80%;\n padding-left: 0;\n\n .btn,\n .form-control {\n height: 35px;\n font-size: 12px;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Dataview\n\n Default Mendix Dataview Widget. The data view is used for showing the contents of exactly one object\n========================================================================== */\n\n.mx-dataview {\n /* Control bar */\n .mx-dataview-controls {\n // Needed to clear the bootstrap columns (get float: left)\n clear: both;\n margin-top: 10px;\n padding: 8px 0;\n border-top: 1px solid $dataview-controls-border-color;\n border-radius: 0;\n background-color: $dataview-controls-bg;\n /* Buttons */\n .mx-button {\n margin-right: 0.3em;\n margin-bottom: 0;\n &:last-child {\n margin-right: 0;\n }\n }\n }\n /* Dataview-content gives problems for nexted layout grid containers */\n > .mx-dataview-content > .mx-container-nested {\n > .row {\n margin-right: 0;\n margin-left: 0;\n }\n }\n /* Dataview empty message */\n .mx-dataview-message {\n color: $dataview-emptymessage-color;\n background: $dataview-emptymessage-bg;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Date Picker\n \n Default Mendix Date Picker Widget.\n========================================================================== */\n\n.mx-calendar {\n /* (must be higher than popup z-index) */\n z-index: 10010 !important;\n padding: 10px;\n font-size: 12px;\n background: $bg-color;\n border-radius: $border-radius-default;\n border: 1px solid $border-color-default;\n box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.06);\n .mx-calendar-month-header {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n margin: 0 3px 10px 3px;\n }\n .mx-calendar-month-next,\n .mx-calendar-month-previous,\n .mx-calendar-month-dropdown {\n border: 0;\n cursor: pointer;\n background: transparent;\n }\n .mx-calendar-month-next,\n .mx-calendar-month-previous {\n &:hover {\n color: $brand-primary;\n }\n }\n .mx-calendar-month-dropdown {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n .mx-calendar-month-current:first-child {\n margin-right: 10px;\n }\n }\n th {\n color: $brand-primary;\n }\n th,\n td {\n width: 35px;\n height: 35px;\n text-align: center;\n }\n td {\n color: $font-color-default;\n\n &:hover {\n cursor: pointer;\n border-radius: 50%;\n color: $brand-primary;\n background-color: $brand-default;\n }\n }\n .mx-calendar-day-month-next,\n .mx-calendar-day-month-previous {\n color: lighten($font-color-default, 45%);\n }\n .mx-calendar-day-selected,\n .mx-calendar-day-selected:hover {\n color: #fff;\n border-radius: 50%;\n background: $brand-primary;\n }\n\n //\n\n .mx-calendar-year-switcher {\n text-align: center;\n margin-top: 10px;\n color: lighten($brand-primary, 30%);\n span.mx-calendar-year-selected {\n color: $brand-primary;\n margin-left: 10px;\n margin-right: 10px;\n }\n span:hover {\n cursor: pointer;\n text-decoration: underline;\n background-color: transparent;\n }\n }\n}\n\n.mx-calendar-month-dropdown-options {\n /* (must be higher than popup z-index) */\n z-index: 10020 !important;\n position: absolute;\n top: 25px;\n padding: 2px 10px;\n border-radius: $border-radius-default;\n background-color: $bg-color;\n div {\n cursor: pointer;\n font-size: 12px;\n padding: 2px 0;\n &:hover,\n &:focus {\n color: $brand-primary;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Header\n\n Default Mendix Mobile Header\n========================================================================== */\n\n.mx-header {\n z-index: 100;\n display: flex;\n width: 100%;\n height: $m-header-height;\n padding: 0;\n text-align: initial;\n color: $m-header-color;\n border-bottom: 1px solid $border-color-default;\n background-color: $m-header-bg;\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14);\n\n // Reset mxui\n div.mx-header-left,\n div.mx-header-right {\n position: relative;\n top: initial;\n right: initial;\n left: initial;\n display: flex;\n align-items: center;\n width: 25%;\n height: 100%;\n .mx-placeholder {\n display: flex;\n align-items: center;\n height: 100%;\n }\n }\n\n div.mx-header-left .mx-placeholder {\n order: 1;\n .mx-placeholder {\n justify-content: flex-start;\n }\n }\n div.mx-header-center {\n overflow: hidden;\n flex: 1;\n order: 2;\n text-align: center;\n\n .mx-title {\n overflow: hidden;\n width: 100%;\n margin: 0;\n text-overflow: ellipsis;\n color: $m-header-color;\n font-size: $m-header-title-size;\n line-height: $m-header-height;\n }\n }\n div.mx-header-right {\n order: 3;\n .mx-placeholder {\n justify-content: flex-end;\n }\n }\n\n // Content magic\n .mx-link {\n display: flex;\n align-items: center;\n height: 100%;\n -webkit-transition: all 0.2s;\n -moz-transition: all 0.2s;\n transition: all 0.2s;\n text-decoration: none;\n .glyphicon {\n top: 0;\n font-size: 23px;\n }\n &:active {\n -webkit-transform: translateY(1px);\n transform: translateY(1px);\n color: $link-hover-color;\n }\n }\n\n .mx-link,\n .btn,\n img {\n padding: 0 8px;\n }\n\n .mx-sidebartoggle {\n font-size: 24px;\n line-height: $m-header-height;\n img {\n height: 20px;\n }\n }\n}\n\n// RTL support\nbody[dir='rtl'] {\n .mx-header-left {\n order: 3;\n }\n .mx-header-right {\n order: 1;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Glyphicons\n\n Default Mendix Glyphicons\n========================================================================== */\n\n.mx-glyphicon {\n &:before {\n display: inline-block;\n margin-top: -0.2em;\n margin-right: 0.4555555em;\n vertical-align: middle;\n font-family: \"Glyphicons Halflings\";\n font-weight: $font-weight-normal;\n font-style: normal;\n line-height: inherit;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Groupbox\n\n Default Mendix Groupboxes\n========================================================================== */\n\n.mx-groupbox {\n margin: 0;\n > .mx-groupbox-header {\n margin: 0;\n color: $groupbox-default-color;\n border-width: 1px 1px 0 1px;\n border-style: solid;\n border-color: $groupbox-default-bg;\n background: $groupbox-default-bg;\n font-size: $font-size-h5;\n .mx-groupbox-collapse-icon {\n margin-top: 0.1em;\n }\n }\n > .mx-groupbox-body {\n padding: 10px 15px;\n border-width: 1px;\n border-style: solid;\n border-color: $groupbox-default-bg;\n background-color: #FFFFFF;\n }\n .mx-groupbox-header + .mx-groupbox-body {\n border-top: none;\n }\n &.collapsed > .mx-groupbox-header {\n }\n}","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Groupbox\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Color variations\n.groupbox-default {\n @include groupbox-variant($groupbox-default-color, $groupbox-default-bg);\n}\n\n.groupbox-primary {\n @include groupbox-variant($groupbox-primary-color, $groupbox-primary-bg);\n}\n\n.groupbox-inverse {\n @include groupbox-variant($groupbox-inverse-color, $groupbox-inverse-bg);\n}\n\n// Success appears as green\n.groupbox-success {\n @include groupbox-variant($groupbox-success-color, $groupbox-success-bg);\n}\n\n// Info appears as blue-green\n.groupbox-info {\n @include groupbox-variant($groupbox-info-color, $groupbox-info-bg);\n}\n\n// Warning appears as orange\n.groupbox-warning {\n @include groupbox-variant($groupbox-warning-color, $groupbox-warning-bg);\n}\n\n// Danger and error appear as red\n.groupbox-danger {\n @include groupbox-variant($groupbox-danger-color, $groupbox-danger-bg);\n}\n\n// white appears as full white\n.groupbox-white {\n @include groupbox-variant($groupbox-white-color, $groupbox-white-bg);\n}\n\n.groupbox-transparent {\n border-bottom: 1px solid $border-color-default;\n > .mx-groupbox-header {\n padding: 15px 0;\n color: $gray-darker;\n border-style: none;\n background: transparent;\n font-size: 16px;\n font-weight: $font-weight-semibold;\n }\n .mx-groupbox-body {\n padding: 15px 0;\n border-style: none;\n background-color: transparent;\n }\n .mx-groupbox-collapse-icon {\n color: $brand-primary;\n }\n}\n\n// Header options\n.groupbox-h1 > .mx-groupbox-header {\n font-size: $font-size-h1;\n}\n\n.groupbox-h2 > .mx-groupbox-header {\n font-size: $font-size-h2;\n}\n\n.groupbox-h3 > .mx-groupbox-header {\n font-size: $font-size-h3;\n}\n\n.groupbox-h4 > .mx-groupbox-header {\n font-size: $font-size-h4;\n}\n\n.groupbox-h5 > .mx-groupbox-header {\n font-size: $font-size-h5;\n}\n\n.groupbox-h6 > .mx-groupbox-header {\n font-size: $font-size-h6;\n}\n\n// Callout Look and Feel\n.groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n border: 0;\n background-color: $callout-info-bg;\n }\n .mx-groupbox-header + .mx-groupbox-body {\n padding-top: 0;\n }\n}\n\n.groupbox-info.groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n background-color: $callout-info-bg;\n }\n > .mx-groupbox-header {\n color: $callout-info-color;\n }\n}\n\n.groupbox-success.groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n background-color: $callout-success-bg;\n }\n > .mx-groupbox-header {\n color: $callout-success-color;\n }\n}\n\n.groupbox-warning.groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n background-color: $callout-warning-bg;\n }\n > .mx-groupbox-header {\n color: $callout-warning-color;\n }\n}\n\n.groupbox-danger.groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n background-color: $callout-danger-bg;\n }\n > .mx-groupbox-header {\n color: $callout-danger-color;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Images\n\n Default Mendix Image Widgets\n========================================================================== */\n\nimg.img-rounded,\n.img-rounded img {\n border-radius: 6px;\n}\n\nimg.img-thumbnail,\n.img-thumbnail img {\n display: inline-block;\n max-width: 100%;\n height: auto;\n padding: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -moz-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n border: 1px solid $brand-default;\n border-radius: 4px;\n background-color: #FFFFFF;\n line-height: $line-height-base;\n}\n\nimg.img-circle,\n.img-circle img {\n border-radius: 50%;\n}\n\nimg.img-auto,\n.img-auto img {\n width: auto !important;\n max-width: 100% !important;\n height: auto !important;\n max-height: 100% !important;\n}\n\nimg.img-center,\n.img-center img {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Labels\n\n Default labels combined with Bootstrap labels\n========================================================================== */\n\n.label {\n display: inline-block;\n padding: 0.2em 0.6em 0.3em;\n text-align: center;\n vertical-align: baseline;\n white-space: nowrap;\n color: #ffffff;\n border-radius: 0.25em;\n font-size: 100%;\n line-height: 1;\n margin: 0;\n\n .form-control-static {\n all: unset;\n font-weight: $font-weight-normal;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Labels\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Color variations\n.label-default {\n color: $label-default-color;\n background-color: $label-default-bg;\n}\n\n.label-primary {\n color: $label-primary-color;\n background-color: $label-primary-bg;\n}\n\n.label-success {\n color: $label-success-color;\n background-color: $label-success-bg;\n}\n\n.label-inverse {\n color: $label-inverse-color;\n background-color: $label-inverse-bg;\n}\n\n.label-info {\n color: $label-info-color;\n background-color: $label-info-bg;\n}\n\n.label-warning {\n color: $label-warning-color;\n background-color: $label-warning-bg;\n}\n\n.label-danger {\n color: $label-danger-color;\n background-color: $label-danger-bg;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Listview\n\n Default Mendix Listview Widget. The list view shows a list of objects arranged vertically. Each object is shown using a template\n========================================================================== */\n.mx-listview {\n // Remove widget padding\n padding: 0;\n /* Clear search button (overrides load more button stying) */\n // Search bar\n .mx-listview-searchbar {\n margin-bottom: $gutter-size;\n\n .btn {\n width: auto;\n }\n }\n\n /* Load more button */\n & > .btn {\n width: 100%;\n margin: 10px auto;\n }\n\n & > ul {\n margin: 0;\n\n .mx-listview-empty {\n border-style: none;\n background-color: transparent;\n }\n\n & > li {\n @include transition();\n padding: $listview-padding-top $listview-padding-right $listview-padding-bottom $listview-padding-left;\n border-width: 1px 0 0 0;\n border-style: solid;\n border-color: $grid-border-color;\n background-color: $grid-bg;\n\n &:first-child {\n border-radius: 0; // Reset mxui listview style\n }\n\n &:last-child {\n border-bottom: 1px solid $grid-border-color;\n border-radius: 0; // Reset mxui listview style\n }\n\n &:focus,\n &:active {\n outline: 0;\n background-color: $grid-bg-hover;\n }\n\n &.selected {\n background-color: $grid-bg-selected;\n }\n }\n }\n\n .mx-layoutgrid {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n}\n\n//== Phone specific\n//-------------------------------------------------------------------------------------------------------------------//\n.profile-phone .mx-listview {\n .mx-listview-searchbar {\n margin-bottom: 3px;\n background: #FFFFFF;\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14);\n\n input {\n padding: 14px 15px;\n color: #555555;\n border-style: none;\n border-radius: 0;\n box-shadow: none;\n }\n\n .btn {\n padding: 14px 15px;\n color: inherit;\n border-style: none;\n }\n }\n\n & > ul > li {\n &:first-child {\n border-top: none;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Listview\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Bordered\n.listview-bordered.mx-listview {\n & > ul > li {\n border: 1px solid $grid-border-color;\n border-top: 0;\n\n &:first-child {\n border-top: 1px solid $grid-border-color;\n border-radius: 0;\n }\n\n &:last-child {\n border-radius: 0;\n }\n }\n}\n\n// Striped\n.listview-striped.mx-listview {\n & > ul > li:nth-child(2n + 1) {\n background-color: $grid-bg-striped;\n }\n}\n\n// Items as seperated blocks\n.listview-seperated.mx-listview {\n & > ul > li {\n margin-bottom: $gutter-size;\n border-width: 1px;\n border-style: solid;\n border-radius: $border-radius-default;\n }\n}\n\n// Remove all styling\n.listview-stylingless.mx-listview {\n & > ul > li {\n padding: 0;\n cursor: default;\n border: 0;\n background-color: transparent;\n\n &:hover,\n &:focus,\n &:active {\n background-color: transparent;\n }\n\n &.selected {\n background-color: transparent !important;\n\n &:hover,\n &:focus,\n &:active {\n background-color: transparent !important;\n }\n }\n }\n}\n\n// Hover style activated\n.listview-hover.mx-listview {\n & > ul > li {\n &:hover,\n &:focus,\n &:active {\n background-color: $grid-bg-hover !important;\n }\n\n &.selected {\n &:hover,\n &:focus,\n &:active {\n background-color: $grid-bg-selected-hover !important;\n }\n }\n }\n}\n\n// Templategrid Row Sizes\n.listview-lg.mx-listview {\n & > ul > li {\n padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2) ($grid-padding-left * 2);\n }\n}\n\n.listview-sm.mx-listview {\n & > ul > li {\n padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2) ($grid-padding-left / 2);\n }\n}\n\n// Bootstrap columns\n.mx-listview[class*='lv-col'] {\n overflow: hidden; // For if it is not in a layout, to prevent scrollbars\n & > ul {\n display: block; // normal a table\n margin-right: -1 * $gutter-size;\n margin-left: -1 * $gutter-size;\n\n &::before,\n &::after {\n // clearfix\n display: table;\n clear: both;\n content: ' ';\n }\n\n & > li {\n // bootstrap col\n position: relative;\n display: block; // normal a table\n float: left;\n min-height: 1px;\n padding-right: $gutter-size;\n padding-left: $gutter-size;\n border: 0;\n @media (max-width: $screen-md-max) {\n width: 100% !important;\n }\n\n & > .mx-dataview {\n overflow: hidden;\n }\n }\n }\n\n &.lv-col-xs-12 > ul > li {\n width: 100% !important;\n }\n\n &.lv-col-xs-11 > ul > li {\n width: 91.66666667% !important;\n }\n\n &.lv-col-xs-10 > ul > li {\n width: 83.33333333% !important;\n }\n\n &.lv-col-xs-9 > ul > li {\n width: 75% !important;\n }\n\n &.lv-col-xs-8 > ul > li {\n width: 66.66666667% !important;\n }\n\n &.lv-col-xs-7 > ul > li {\n width: 58.33333333% !important;\n }\n\n &.lv-col-xs-6 > ul > li {\n width: 50% !important;\n }\n\n &.lv-col-xs-5 > ul > li {\n width: 41.66666667% !important;\n }\n\n &.lv-col-xs-4 > ul > li {\n width: 33.33333333% !important;\n }\n\n &.lv-col-xs-3 > ul > li {\n width: 25% !important;\n }\n\n &.lv-col-xs-2 > ul > li {\n width: 16.66666667% !important;\n }\n\n &.lv-col-xs-1 > ul > li {\n width: 8.33333333% !important;\n }\n\n @media (min-width: $screen-md) {\n &.lv-col-sm-12 > ul > li {\n width: 100% !important;\n }\n &.lv-col-sm-11 > ul > li {\n width: 91.66666667% !important;\n }\n &.lv-col-sm-10 > ul > li {\n width: 83.33333333% !important;\n }\n &.lv-col-sm-9 > ul > li {\n width: 75% !important;\n }\n &.lv-col-sm-8 > ul > li {\n width: 66.66666667% !important;\n }\n &.lv-col-sm-7 > ul > li {\n width: 58.33333333% !important;\n }\n &.lv-col-sm-6 > ul > li {\n width: 50% !important;\n }\n &.lv-col-sm-5 > ul > li {\n width: 41.66666667% !important;\n }\n &.lv-col-sm-4 > ul > li {\n width: 33.33333333% !important;\n }\n &.lv-col-sm-3 > ul > li {\n width: 25% !important;\n }\n &.lv-col-sm-2 > ul > li {\n width: 16.66666667% !important;\n }\n &.lv-col-sm-1 > ul > li {\n width: 8.33333333% !important;\n }\n }\n @media (min-width: $screen-lg) {\n &.lv-col-md-12 > ul > li {\n width: 100% !important;\n }\n &.lv-col-md-11 > ul > li {\n width: 91.66666667% !important;\n }\n &.lv-col-md-10 > ul > li {\n width: 83.33333333% !important;\n }\n &.lv-col-md-9 > ul > li {\n width: 75% !important;\n }\n &.lv-col-md-8 > ul > li {\n width: 66.66666667% !important;\n }\n &.lv-col-md-7 > ul > li {\n width: 58.33333333% !important;\n }\n &.lv-col-md-6 > ul > li {\n width: 50% !important;\n }\n &.lv-col-md-5 > ul > li {\n width: 41.66666667% !important;\n }\n &.lv-col-md-4 > ul > li {\n width: 33.33333333% !important;\n }\n &.lv-col-md-3 > ul > li {\n width: 25% !important;\n }\n &.lv-col-md-2 > ul > li {\n width: 16.66666667% !important;\n }\n &.lv-col-md-1 > ul > li {\n width: 16.66666667% !important;\n }\n }\n @media (min-width: $screen-xl) {\n &.lv-col-lg-12 > ul > li {\n width: 100% !important;\n }\n &.lv-col-lg-11 > ul > li {\n width: 91.66666667% !important;\n }\n &.lv-col-lg-10 > ul > li {\n width: 83.33333333% !important;\n }\n &.lv-col-lg-9 > ul > li {\n width: 75% !important;\n }\n &.lv-col-lg-8 > ul > li {\n width: 66.66666667% !important;\n }\n &.lv-col-lg-7 > ul > li {\n width: 58.33333333% !important;\n }\n &.lv-col-lg-6 > ul > li {\n width: 50% !important;\n }\n &.lv-col-lg-5 > ul > li {\n width: 41.66666667% !important;\n }\n &.lv-col-lg-4 > ul > li {\n width: 33.33333333% !important;\n }\n &.lv-col-lg-3 > ul > li {\n width: 25% !important;\n }\n &.lv-col-lg-2 > ul > li {\n width: 16.66666667% !important;\n }\n &.lv-col-lg-1 > ul > li {\n width: 8.33333333% !important;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Modals\n\n Default Mendix Modals. Modals are streamlined, but flexible, dialog prompts with the minimum required functionality and smart defaults\n========================================================================== */\n.modal-dialog {\n .modal-content {\n border: 1px solid $modal-header-border-color;\n border-radius: 4px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n\n .modal-header {\n padding: 15px 20px;\n border-bottom-color: $modal-header-border-color;\n border-radius: 0; // Because of the class .mx-window-active in mxui.css\n background-color: $modal-header-bg;\n\n h4 {\n margin: 0;\n color: $modal-header-color;\n font-size: 16px;\n font-weight: $font-weight-bold;\n }\n\n .close {\n margin-top: -3px;\n opacity: 1;\n /* For IE8 and earlier */\n color: $modal-header-color;\n text-shadow: none;\n filter: alpha(opacity=100);\n }\n }\n\n .modal-body {\n padding: 20px;\n }\n\n .modal-footer {\n display: flex;\n justify-content: flex-end;\n margin-top: 0;\n padding: 20px;\n border-style: none;\n }\n }\n}\n\n// Default Mendix Window Modal\n.mx-window {\n // If popup direct child is a dataview it gets the class mx-window-view\n &.mx-window-view .mx-window-body {\n overflow: hidden; // hide second scrollbar in edit page\n padding: 0;\n // Dataview in popup\n > .mx-dataview > .mx-dataview-content,\n > .mx-placeholder > .mx-dataview > .mx-dataview-content {\n padding: 20px;\n }\n\n > .mx-dataview > .mx-dataview-controls,\n > .mx-placeholder > .mx-dataview > .mx-dataview-controls {\n display: flex;\n justify-content: flex-end;\n margin: 0;\n padding: 20px;\n text-align: left;\n border-top: 1px solid $modal-header-border-color;\n }\n }\n\n .mx-dataview-controls {\n padding-bottom: 0;\n }\n\n .mx-layoutgrid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n// Login modal\n.mx-login {\n .modal-body {\n padding: 0 15px;\n }\n\n .modal-content {\n input {\n height: 56px;\n padding: 12px 12px;\n border: 1px solid #EEEEEE;\n background: #EEEEEE;\n box-shadow: none;\n font-size: 16px;\n\n &:focus {\n border-color: #66AFE9;\n }\n }\n }\n\n .modal-header,\n .modal-footer {\n border: 0;\n }\n\n button {\n font-size: 16px;\n }\n\n h4 {\n color: #AAAAAA;\n font-size: 20px;\n font-weight: $font-weight-bold;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Navigation\n\n Default Mendix Navigation Bar\n========================================================================== */\n.mx-navbar {\n margin: 0;\n border-style: none;\n border-radius: 0;\n background-color: $navigation-bg;\n\n ul.nav {\n margin: 0; // weird -margin if screen gets small (bootstrap)\n\n /* Navigation item */\n & > li.mx-navbar-item > a {\n display: flex;\n align-items: center;\n min-height: $topbar-minimalheight;\n padding: $navigation-item-padding;\n vertical-align: middle;\n color: $navigation-color;\n border-radius: 0;\n font-size: $navigation-font-size;\n font-weight: $font-weight-normal;\n\n /* Dropdown arrow */\n .caret {\n border-top-color: $navigation-color;\n border-bottom-color: $navigation-color;\n }\n\n &:hover,\n &:focus,\n &.active {\n text-decoration: none;\n color: $navigation-color-hover;\n background-color: $navigation-bg-hover;\n\n .caret {\n border-top-color: $navigation-color-active;\n border-bottom-color: $navigation-color-active;\n }\n }\n\n &.active {\n color: $navigation-color-active;\n background-color: $navigation-bg-active;\n }\n\n /* Dropdown */\n .mx-navbar-submenu::before {\n position: absolute;\n top: -9px;\n left: 15px;\n width: 0;\n height: 0;\n content: '';\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n border-width: 0 9px 9px 9px;\n border-style: solid;\n border-color: transparent transparent $navigation-border-color transparent;\n }\n\n // Image\n img {\n width: 20px; // Default size (so it looks good)\n height: auto;\n margin-right: 0.5em;\n }\n\n .glyphicon {\n top: 0;\n margin-right: 0.5em;\n vertical-align: middle;\n font-size: $navigation-glyph-size;\n }\n }\n\n & > .mx-navbar-item.active a {\n color: $navigation-color-active;\n }\n\n /* When hovering or the dropdown is open */\n & > .mx-navbar-item > a:hover,\n & > .mx-navbar-item > a:focus,\n & > .mx-navbar-item.open > a,\n & > .mx-navbar-item.open > a:hover,\n & > .mx-navbar-item.open > a:focus {\n text-decoration: none;\n color: $navigation-color-hover;\n background-color: $navigation-bg-hover;\n\n .caret {\n border-top-color: $navigation-color-hover;\n border-bottom-color: $navigation-color-hover;\n }\n }\n\n & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a {\n color: $navigation-sub-color-active;\n background-color: $navigation-sub-bg-active;\n\n .caret {\n border-top-color: $navigation-sub-color-active;\n border-bottom-color: $navigation-sub-color-active;\n }\n }\n }\n @media (max-width: $screen-md) {\n ul.nav > li.mx-navbar-item > a {\n padding: 10px 20px;\n }\n .mx-navbar-item.open .dropdown-menu {\n padding: 0;\n border-radius: 0;\n background-color: $navigation-sub-bg;\n\n & > li.mx-navbar-subitem > a {\n padding: 10px 20px;\n color: $navigation-sub-color;\n border-radius: 0;\n font-size: $navigation-sub-font-size;\n font-weight: $font-weight-normal;\n\n &:hover,\n &:focus {\n color: $navigation-sub-color-hover;\n background-color: $navigation-sub-bg-hover;\n }\n\n &.active {\n color: $navigation-sub-color-active;\n background-color: $navigation-sub-bg-active;\n }\n }\n }\n }\n\n /* remove focus */\n &:focus {\n outline: 0;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Navigation\n\n//== Regions\n//## Behavior in the different regions\n========================================================================== */\n// When used in topbar\n.region-topbar {\n .mx-navbar {\n background-color: $navtopbar-bg;\n ul.nav {\n /* Navigation item */\n & > li.mx-navbar-item > a {\n color: $navtopbar-color;\n font-size: $navtopbar-font-size;\n\n /* Dropdown arrow */\n .caret {\n border-top-color: $navtopbar-color;\n border-bottom-color: $navtopbar-color;\n }\n &:hover,\n &:focus,\n &.active {\n color: $navtopbar-color-hover;\n background-color: $navtopbar-bg-hover;\n .caret {\n border-top-color: $navtopbar-color-active;\n border-bottom-color: $navtopbar-color-active;\n }\n }\n &.active {\n color: $navtopbar-color-active;\n background-color: $navtopbar-bg-active;\n }\n\n /* Dropdown */\n .mx-navbar-submenu::before {\n border-color: transparent transparent $navtopbar-border-color transparent;\n }\n\n // Image\n .glyphicon {\n font-size: $navtopbar-glyph-size;\n }\n }\n\n /* When hovering or the dropdown is open */\n & > .mx-navbar-item > a:hover,\n & > .mx-navbar-item > a:focus,\n & > .mx-navbar-item.active a,\n & > .mx-navbar-item.open > a,\n & > .mx-navbar-item.open > a:hover,\n & > .mx-navbar-item.open > a:focus {\n color: $navtopbar-color-hover;\n background-color: $navtopbar-bg-hover;\n .caret {\n border-top-color: $navtopbar-color-hover;\n border-bottom-color: $navtopbar-color-hover;\n }\n }\n & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a {\n color: $navtopbar-sub-color-active;\n background-color: $navtopbar-sub-bg-active;\n .caret {\n border-top-color: $navtopbar-sub-color-active;\n border-bottom-color: $navtopbar-sub-color-active;\n }\n }\n }\n @media (max-width: $screen-md) {\n ul.nav > li.mx-navbar-item > a {\n }\n .mx-navbar-item.open .dropdown-menu {\n background-color: $navtopbar-sub-bg;\n & > li.mx-navbar-subitem > a {\n color: $navtopbar-sub-color;\n font-size: $navtopbar-sub-font-size;\n &:hover,\n &:focus {\n color: $navtopbar-sub-color-hover;\n background-color: $navtopbar-sub-bg-hover;\n }\n &.active {\n color: $navtopbar-sub-color-active;\n background-color: $navtopbar-sub-bg-active;\n }\n }\n }\n }\n }\n}\n\n// When used in sidebar\n.region-sidebar {\n .mx-navbar {\n background-color: $navsidebar-bg;\n ul.nav {\n /* Navigation item */\n & > li.mx-navbar-item > a {\n color: $navsidebar-color;\n font-size: $navsidebar-font-size;\n\n /* Dropdown arrow */\n .caret {\n border-top-color: $navsidebar-color;\n border-bottom-color: $navsidebar-color;\n }\n &:hover,\n &:focus,\n &.active {\n color: $navsidebar-color-hover;\n background-color: $navsidebar-bg-hover;\n .caret {\n border-top-color: $navsidebar-color-active;\n border-bottom-color: $navsidebar-color-active;\n }\n }\n &.active {\n color: $navsidebar-color-active;\n background-color: $navsidebar-bg-active;\n }\n\n /* Dropdown */\n .mx-navbar-submenu::before {\n border-color: transparent transparent $navsidebar-border-color transparent;\n }\n\n // Image\n .glyphicon {\n font-size: $navsidebar-glyph-size;\n }\n }\n\n /* When hovering or the dropdown is open */\n & > .mx-navbar-item > a:hover,\n & > .mx-navbar-item > a:focus,\n & > .mx-navbar-item.active a,\n & > .mx-navbar-item.open > a,\n & > .mx-navbar-item.open > a:hover,\n & > .mx-navbar-item.open > a:focus {\n color: $navsidebar-color-hover;\n background-color: $navsidebar-bg-hover;\n .caret {\n border-top-color: $navsidebar-color-hover;\n border-bottom-color: $navsidebar-color-hover;\n }\n }\n & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a {\n color: $navsidebar-sub-color-active;\n background-color: $navsidebar-sub-bg-active;\n .caret {\n border-top-color: $navsidebar-sub-color-active;\n border-bottom-color: $navsidebar-sub-color-active;\n }\n }\n }\n @media (max-width: $screen-md) {\n ul.nav > li.mx-navbar-item > a {\n }\n .mx-navbar-item.open .dropdown-menu {\n background-color: $navtopbar-sub-bg;\n & > li.mx-navbar-subitem > a {\n color: $navsidebar-sub-color;\n font-size: $navsidebar-sub-font-size;\n &:hover,\n &:focus {\n color: $navsidebar-sub-color-hover;\n background-color: $navsidebar-sub-bg-hover;\n }\n &.active {\n color: $navsidebar-sub-color-active;\n background-color: $navsidebar-sub-bg-active;\n }\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Navigation List\n \n Default Mendix Navigation List Widget. A navigation list can be used to attach an action to an entire row. Such a row is called a navigation list item\n========================================================================== */\n.mx-navigationlist {\n margin: 0;\n padding: 0;\n list-style: none;\n \n li.mx-navigationlist-item {\n @include transition();\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n border-width: 1px;\n border-style: none none solid none;\n border-color: $grid-border-color;\n border-radius: 0;\n background-color: $grid-bg;\n\n &:hover,\n &:focus {\n color: inherit;\n background-color: $grid-bg-hover;\n }\n\n &.active {\n color: inherit;\n background-color: $grid-bg-selected;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Navigation\n\n Default Mendix Navigation Tree\n========================================================================== */\n.mx-navigationtree {\n background-color: $navigation-bg;\n\n /* Every navigation item */\n .navbar-inner > ul {\n margin: 0;\n padding-left: 0;\n & > li {\n padding: 0;\n border-style: none;\n & > a {\n display: flex;\n align-items: center;\n height: $navigation-item-height;\n padding: $navigation-item-padding;\n color: $navigation-color;\n border-bottom: 1px solid $navigation-border-color;\n border-radius: 0;\n background-color: $navigation-bg;\n text-shadow: none;\n font-size: $navigation-font-size;\n font-weight: $font-weight-normal;\n .caret {\n border-top-color: $navigation-color;\n border-bottom-color: $navigation-color;\n }\n img {\n width: 20px; // Default size\n height: auto;\n margin-right: 0.5em;\n }\n .glyphicon {\n top: 0;\n margin-right: 0.5em;\n vertical-align: middle;\n font-size: $navigation-glyph-size;\n }\n }\n a:hover,\n a:focus,\n a.active {\n text-decoration: none;\n color: $navigation-color-hover;\n background-color: $navigation-bg-hover;\n .caret {\n border-top-color: $navigation-color-active;\n border-bottom-color: $navigation-color-active;\n }\n }\n a.active {\n color: $navigation-color-active;\n border-left-color: $navigation-color-active;\n background-color: $navigation-bg-active;\n }\n }\n }\n\n /* Sub navigation item specific */\n li.mx-navigationtree-has-items {\n & > ul {\n margin: 0;\n padding-left: 0;\n background-color: $navigation-sub-bg;\n li {\n margin: 0;\n padding: 0;\n border: 0;\n a {\n padding: 12px 20px 12px 25px;\n text-decoration: none;\n color: $navigation-sub-color;\n border: 0;\n background-color: $navigation-sub-bg;\n text-shadow: none;\n font-size: $navigation-sub-font-size;\n font-weight: $font-weight-normal;\n\n &:hover,\n &:focus,\n &.active {\n color: $navigation-sub-color-hover;\n outline: 0;\n background-color: $navigation-sub-bg-hover;\n }\n &.active {\n color: $navigation-sub-color-active;\n border: 0;\n background-color: $navigation-sub-bg-active;\n }\n }\n }\n }\n }\n\n /* remove focus */\n &:focus {\n outline: 0;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Navigation\n\n//== Regions\n//## Behavior in the different regions\n========================================================================== */\n// When used in topbar\n.region-topbar {\n .mx-navigationtree {\n background-color: $navtopbar-bg;\n .navbar-inner > ul {\n & > li {\n & > a {\n color: $navtopbar-color;\n border-color: $navtopbar-border-color;\n background-color: $navtopbar-bg;\n font-size: $navtopbar-font-size;\n .caret {\n border-top-color: $navtopbar-color;\n border-bottom-color: $navtopbar-color;\n }\n\n .glyphicon {\n font-size: $navtopbar-glyph-size;\n }\n }\n a:hover,\n a:focus,\n a.active {\n color: $navtopbar-color-hover;\n background-color: $navtopbar-bg-hover;\n .caret {\n border-top-color: $navtopbar-color-active;\n border-bottom-color: $navtopbar-color-active;\n }\n }\n a.active {\n color: $navtopbar-color-active;\n border-left-color: $navtopbar-color-active;\n background-color: $navtopbar-bg-active;\n }\n }\n }\n\n /* Sub navigation item specific */\n li.mx-navigationtree-has-items {\n & > ul {\n background-color: $navtopbar-sub-bg;\n li {\n a {\n color: $navtopbar-sub-color;\n background-color: $navtopbar-sub-bg;\n font-size: $navtopbar-sub-font-size;\n &:hover,\n &:focus,\n &.active {\n color: $navtopbar-sub-color-hover;\n background-color: $navtopbar-sub-bg-hover;\n }\n &.active {\n color: $navtopbar-sub-color-active;\n background-color: $navtopbar-sub-bg-active;\n }\n }\n }\n }\n }\n }\n}\n\n// When used in sidebar\n.region-sidebar {\n .mx-navigationtree {\n background-color: $navsidebar-bg;\n .navbar-inner > ul {\n & > li {\n & > a {\n color: $navsidebar-color;\n border-color: $navsidebar-border-color;\n background-color: $navsidebar-bg;\n font-size: $navsidebar-font-size;\n .caret {\n border-top-color: $navsidebar-color;\n border-bottom-color: $navsidebar-color;\n }\n\n .glyphicon {\n font-size: $navsidebar-glyph-size;\n }\n }\n a:hover,\n a:focus,\n a.active {\n color: $navsidebar-color-hover;\n background-color: $navsidebar-bg-hover;\n .caret {\n border-top-color: $navsidebar-color-active;\n border-bottom-color: $navsidebar-color-active;\n }\n }\n a.active {\n color: $navsidebar-color-active;\n border-left-color: $navsidebar-color-active;\n background-color: $navsidebar-bg-active;\n }\n }\n }\n\n /* Sub navigation item specific */\n li.mx-navigationtree-has-items {\n & > ul {\n background-color: $navsidebar-sub-bg;\n li {\n a {\n color: $navsidebar-sub-color;\n background-color: $navsidebar-sub-bg;\n font-size: $navsidebar-sub-font-size;\n &:hover,\n &:focus,\n &.active {\n color: $navsidebar-sub-color-hover;\n background-color: $navsidebar-sub-bg-hover;\n }\n &.active {\n color: $navsidebar-sub-color-active;\n background-color: $navsidebar-sub-bg-active;\n }\n }\n }\n }\n }\n }\n}\n\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n//-------------------------------------------------------------------------------------------------------------------//\n// Content Centerd text and icons\n.nav-content-center-text-icons.mx-navigationtree {\n .navbar-inner ul {\n a {\n flex-direction: column;\n justify-content: center;\n .glyphicon {\n margin: 0 0 5px 0;\n }\n }\n }\n}\n\n// Content Centerd icons only\n.nav-content-center.mx-navigationtree {\n .navbar-inner ul {\n a {\n justify-content: center;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Popup Menu\n\n Default Mendix Popup Menus\n========================================================================== */\n.popupmenu {\n position: relative;\n display: inline-flex;\n}\n\n.popupmenu-trigger {\n cursor: pointer;\n}\n\n.popupmenu-menu {\n position: absolute;\n z-index: 999;\n display: none;\n flex-direction: column;\n width: max-content;\n border-radius: 8px;\n background-color: $bg-color;\n box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05), 0 2px 16px 0 rgba(33, 43, 54, 0.08);\n\n &.popupmenu-position-left {\n top: 0;\n left: 0;\n transform: translateX(-100%);\n }\n\n &.popupmenu-position-right {\n top: 0;\n right: 0;\n transform: translateX(100%);\n }\n\n &.popupmenu-position-top {\n top: 0;\n transform: translateY(-100%);\n }\n\n &.popupmenu-position-bottom {\n bottom: 0;\n transform: translateY(100%);\n }\n\n .popupmenu-basic-item:first-child,\n .popupmenu-custom-item:first-child {\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n }\n\n .popupmenu-basic-item:last-child,\n .popupmenu-custom-item:last-child {\n border-bottom-right-radius: 8px;\n border-bottom-left-radius: 8px;\n }\n}\n\n.popupmenu-basic-divider {\n width: 100%;\n height: 1px;\n background-color: $brand-default;\n}\n\n.popupmenu-basic-item {\n padding: 12px 16px;\n color: $font-color-default;\n font-size: 14px;\n\n &:hover,\n &:focus,\n &:active {\n cursor: pointer;\n border-color: $bg-color-secondary;\n background-color: $bg-color-secondary;\n }\n\n &-inverse {\n color: $brand-inverse;\n }\n\n &-primary {\n color: $brand-primary;\n }\n\n &-info {\n color: $brand-info;\n }\n\n &-success {\n color: $brand-success;\n }\n\n &-warning {\n color: $brand-warning;\n }\n\n &-danger {\n color: $brand-danger;\n }\n}\n\n.popupmenu-custom-item {\n &:hover,\n &:focus,\n &:active {\n cursor: pointer;\n border-color: $bg-color-secondary;\n background-color: $bg-color-secondary;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Navigation\n\n Default Mendix Simple Menu Bar\n========================================================================== */\n.mx-menubar {\n padding: 0;\n background-color: $navigation-bg;\n\n ul.mx-menubar-list {\n display: flex;\n width: 100%;\n min-height: 50px;\n\n li.mx-menubar-item {\n margin: 0;\n\n > a {\n display: flex;\n overflow: hidden;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: $navigation-item-padding;\n white-space: nowrap;\n color: $navigation-color;\n border-radius: 0;\n font-size: $navigation-font-size;\n font-weight: $font-weight-normal;\n\n img {\n margin-right: 0.5em;\n }\n\n .glyphicon {\n top: -1px;\n margin-right: 0.5em;\n vertical-align: middle;\n font-size: $navigation-glyph-size;\n }\n }\n\n a:hover,\n a:focus,\n &:hover a,\n &:focus a,\n &.active a {\n text-decoration: none;\n color: $navigation-color-hover;\n background-color: $navigation-bg-hover;\n }\n\n &.active a {\n color: $navigation-color-active;\n background-color: $navigation-bg-active;\n }\n }\n }\n\n /* remove focus */\n &:focus {\n outline: 0;\n }\n}\n\n// Vertical variation specifics\n.mx-menubar-vertical {\n background-color: $navigation-bg;\n\n ul.mx-menubar-list {\n display: flex;\n\n li.mx-menubar-item {\n display: block;\n\n a {\n border-bottom: 1px solid $navigation-border-color;\n }\n }\n }\n}\n\n// Horizontal variation specifics\n.mx-menubar-horizontal {\n box-shadow: 2px 0 4px 0 rgba(0, 0, 0, 0.14);\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n width: auto;\n\n a {\n width: 100%;\n }\n }\n }\n\n /* Two menu items */\n &.menubar-col-6 ul.mx-menubar-list li.mx-menubar-item {\n width: 50%;\n }\n\n /* Three menu items */\n &.menubar-col-4 ul.mx-menubar-list li.mx-menubar-item {\n width: 33.33333333%;\n }\n\n /* Four menu items */\n &.menubar-col-3 ul.mx-menubar-list li.mx-menubar-item {\n width: 25%;\n }\n\n /* Five menu items */\n &.menubar-col-2 ul.mx-menubar-list li.mx-menubar-item {\n width: 20%;\n }\n}\n\n//== Regions\n//## Behavior in the different regions\n//-------------------------------------------------------------------------------------------------------------------//\n// When used in topbar\n.region-topbar {\n .mx-menubar {\n background-color: $navtopbar-bg;\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n a {\n color: $navtopbar-color;\n font-size: $navtopbar-font-size;\n\n .glyphicon {\n font-size: $navtopbar-glyph-size;\n }\n }\n\n a:hover,\n a:focus,\n &:hover a,\n &:focus a,\n &.active a {\n color: $navtopbar-color-hover;\n background-color: $navtopbar-bg-hover;\n }\n\n &.active a {\n color: $navtopbar-color-active;\n background-color: $navtopbar-bg-active;\n }\n }\n }\n }\n\n // Vertical variation specifics\n .mx-menubar-vertical {\n background-color: $navtopbar-bg;\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n a {\n height: $navigation-item-height;\n border-color: $navtopbar-border-color;\n }\n }\n }\n }\n}\n\n// When used in sidebar\n.region-sidebar {\n .mx-menubar {\n background-color: $navsidebar-bg;\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n a {\n color: $navsidebar-color;\n font-size: $navsidebar-font-size;\n\n .glyphicon {\n font-size: $navsidebar-glyph-size;\n }\n }\n\n a:hover,\n a:focus,\n &:hover a,\n &:focus a,\n &.active a {\n color: $navsidebar-color-hover;\n background-color: $navsidebar-bg-hover;\n }\n\n &.active a {\n color: $navsidebar-color-active;\n background-color: $navsidebar-bg-active;\n }\n }\n }\n }\n\n // Vertical variation specifics\n .mx-menubar-vertical {\n background-color: $navsidebar-bg;\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n a {\n border-color: $navsidebar-border-color;\n }\n }\n }\n }\n}\n\n@supports (padding-bottom: env(safe-area-inset-bottom)) {\n .mx-menubar {\n padding-bottom: env(safe-area-inset-bottom);\n }\n}","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Navigation\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Center text and icons\n.bottom-nav-text-icons.mx-menubar {\n ul.mx-menubar-list {\n li.mx-menubar-item {\n a {\n flex-direction: column;\n padding: 8px 8px 6px 8px;\n line-height: normal;\n font-size: 11px;\n .glyphicon {\n display: block;\n margin: 0 0 5px 0;\n font-size: 18px;\n }\n img {\n display: block;\n height: 18px;\n margin: 0 0 5px 0;\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Radio Buttons\n\n Default Mendix Radio Button Widget\n========================================================================== */\n.mx-radiobuttons.inline .mx-radiogroup {\n display: flex;\n flex-direction: row;\n\n .radio {\n margin: 0 20px 0 0;\n }\n}\n\n.mx-radiobuttons .radio:last-child {\n margin-bottom: 0;\n}\n\n.radio {\n display: flex !important; // Remove after mxui merge\n align-items: center;\n margin-top: 0;\n}\n\ninput[type='radio'] {\n position: relative !important; // Remove after mxui merge\n width: 16px;\n height: 16px;\n margin: 0;\n cursor: pointer;\n -moz-user-select: none;\n -ms-user-select: none;\n -o-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n\n &::-ms-check {\n color: $form-input-border-color;\n border-color: $form-input-border-color;\n background-color: $form-input-bg;\n }\n\n &:focus::-ms-check,\n &:checked::-ms-check {\n color: $form-input-border-focus-color;\n border-color: $form-input-border-focus-color;\n background-color: $form-input-bg-focus;\n }\n\n &:before,\n &:after {\n position: absolute;\n display: block;\n transition: all 0.3s ease-in-out;\n border-radius: 50%;\n }\n\n &:before {\n width: 100%;\n height: 100%;\n content: '';\n border: 1px solid $form-input-border-color;\n background-color: transparent;\n }\n\n &:after {\n top: 50%;\n left: 50%;\n width: 50%;\n height: 50%;\n transform: translate(-50%, -50%);\n pointer-events: none;\n background-color: $form-input-border-focus-color;\n }\n\n &:not(:checked):after {\n transform: translate(-50%, -50%) scale(0);\n opacity: 0;\n }\n\n &:not(:disabled):not(:checked):hover:after {\n background-color: $form-input-bg-hover;\n }\n\n &:checked:after,\n &:not(:disabled):not(:checked):hover:after {\n content: '';\n transform: translate(-50%, -50%) scale(1);\n opacity: 1;\n }\n\n &:checked:before {\n border-color: $form-input-border-focus-color;\n background-color: $form-input-bg;\n }\n\n &:disabled:before {\n background-color: $form-input-bg-disabled;\n }\n\n &:checked:disabled:before {\n border-color: rgba($form-input-border-focus-color, 0.4);\n }\n\n &:checked:disabled:after {\n background-color: rgba($form-input-border-focus-color, 0.4);\n }\n\n & + label {\n margin-left: $form-label-gutter;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Tab Container\n\n Default Mendix Tab Container Widget. Tab containers are used to show information categorized into multiple tab pages.\n This can be very useful if the amount of information that has to be displayed is larger than the amount of space on the screen\n========================================================================== */\n\n.mx-tabcontainer {\n .mx-tabcontainer-tabs {\n margin-bottom: 20px;\n border-color: $tabs-border-color;\n & > li > a {\n margin-right: 0;\n -webkit-transition: all 0.2s ease-in-out;\n -moz-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n color: $tabs-color;\n font-weight: $font-weight-normal;\n &:hover,\n &:focus {\n background-color: $tabs-bg-hover;\n }\n }\n & > li.active > a,\n & > li.active > a:hover,\n & > li.active > a:focus {\n color: $tabs-color-active;\n border: 1px solid $tabs-border-color;\n border-bottom-color: transparent;\n background-color: $tabs-bg;\n }\n }\n}\n\n// Tab Styling Specific for mobile\n.tab-mobile.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n margin: 0;\n text-align: center;\n border-style: none;\n background-color: $brand-primary;\n li {\n display: table-cell;\n float: none;\n width: 1%;\n margin: 0;\n text-align: center;\n border-style: none;\n border-radius: 0;\n a {\n padding: 15px;\n text-transform: uppercase;\n color: #FFFFFF;\n border-width: 0 1px 0 0;\n border-style: solid;\n border-color: rgba(255, 255, 255, 0.3);\n border-radius: 0;\n font-size: 12px;\n font-weight: $font-weight-normal;\n &:hover,\n &:focus {\n background-color: inherit;\n }\n }\n &:last-child a {\n border-right: none;\n }\n &.active > a,\n &.active > a:hover,\n &.active > a:focus {\n color: #FFFFFF;\n border-style: none;\n border-radius: 0;\n background-color: mix($brand-primary, #000000, 80%);\n }\n }\n }\n}\n\n.mx-tabcontainer-badge {\n margin-left: 8px;\n border-radius: $font-size-small;\n background-color: $label-primary-bg;\n color: $label-primary-color;\n font-size: $font-size-small;\n font-weight: $font-weight-bold;\n line-height: 1;\n padding: 3px 7px;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Tab Container\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Style as pills\n.tab-pills.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n border: 0;\n & > li > a {\n margin-right: 2px;\n color: $tabs-color;\n border: 1px solid $tabs-border-color;\n border-radius: 4px;\n &:hover,\n &:focus {\n background-color: $tabs-bg-hover;\n }\n }\n & > li.active > a,\n & > li.active > a:hover,\n & > li.active > a:focus {\n color: #FFFFFF;\n border-color: $tabs-bg-active;\n background-color: $tabs-bg-active;\n }\n }\n}\n\n// Style with lines\n.tab-lined.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n border-width: 3px;\n li {\n margin-right: 30px;\n margin-bottom: -3px;\n & > a {\n padding: 10px 0;\n color: $tabs-color;\n border: 0;\n border-style: solid;\n border-color: transparent;\n border-bottom-width: 3px;\n border-radius: 0;\n &:hover,\n &:focus {\n color: $tabs-color;\n border: 0;\n border-color: transparent;\n background: transparent;\n }\n }\n &.active > a,\n &.active > a:hover,\n &.active > a:focus {\n color: $tabs-lined-color-active;\n border: 0;\n border-bottom: 3px solid $tabs-lined-border-color;\n background-color: transparent;\n }\n }\n }\n}\n\n// Justified style\n// Lets your tabs take 100% of the width\n.tab-justified.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n width: 100%;\n border-bottom: 0;\n & > li {\n display: table-cell;\n float: none;\n width: 1%;\n margin: 0;\n @media (max-width: $screen-sm-max) {\n display: block;\n width: 100%;\n }\n & > a {\n text-align: center;\n border-bottom: 1px solid $tabs-border-color;\n }\n }\n & > li.active > a {\n border-bottom-color: transparent;\n border-radius: 4px;\n @media (max-width: $screen-sm-max) {\n border-bottom-color: $tabs-border-color;\n }\n }\n }\n}\n\n// Bordered\n.tab-bordered.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n margin: 0;\n }\n & > .mx-tabcontainer-content {\n padding: 10px;\n border-width: 0 1px 1px 1px;\n border-style: solid;\n border-color: $tabs-border-color;\n background-color: #FFFFFF;\n }\n}\n\n// Wizard\n.tab-wizard.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n position: relative;\n display: flex;\n justify-content: space-between;\n border-style: none;\n\n &::before {\n position: absolute;\n top: 16px;\n display: block;\n width: 100%;\n height: 1px;\n content: \"\";\n background-color: $tabs-border-color;\n }\n & > li {\n position: relative;\n float: none;\n width: 100%;\n text-align: center;\n & > a {\n width: 33px;\n height: 33px;\n margin: auto;\n padding: 0;\n text-align: center;\n color: $brand-default;\n border: 1px solid $tabs-border-color;\n border-radius: 100%;\n background-color: #FFFFFF;\n font-size: 18px;\n font-weight: bold;\n line-height: 33px;\n }\n &.active {\n & > a,\n & > a:hover,\n & > a:focus {\n color: #FFFFFF;\n border-color: $tabs-bg-active;\n background-color: $tabs-bg-active;\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Tables\n\n Default Mendix Table Widget. Tables can be used to lend structure to a page. They contain a number of rows (tr) and columns, the intersection of which is called a cell (td). Each cell can contain widgets\n========================================================================== */\n\nth {\n font-weight: $font-weight-bold;\n}\n\nhtml body .mx-page table.mx-table {\n th,\n td {\n &.nopadding {\n padding: 0;\n }\n }\n}\n\ntable.mx-table {\n > tbody {\n /* Table row */\n > tr {\n /* Table header */\n > th {\n padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom $padding-table-cell-left;s\n * {\n color: $form-label-color;\n font-weight: $font-weight-bold;\n font-weight: $form-label-weight;\n }\n > label {\n padding-top: 7px;\n padding-bottom: 6px; // Aligns label in the middle if there is no input field next to it.\n }\n }\n /* Table cells */\n > td {\n padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom $padding-table-cell-left;\n > div > label,\n .mx-referenceselector-input-wrapper label {\n padding-top: 7px;\n padding-bottom: 6px; // Aligns label in the middle if there is no input field next to it.\n }\n }\n }\n }\n}\n\n// Default Mendix Table Widget inside TemplateGrid\n.mx-templategrid table.mx-table {\n > tbody {\n > tr {\n > th,\n > td {\n padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom $padding-table-cell-left;\n }\n }\n }\n}\n\n// Default Mendix Table Widget inside Listview\n.mx-list table.mx-table {\n > tbody {\n > tr {\n > th,\n > td {\n padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom $padding-table-cell-left;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Tables\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Lined\ntable.table-lined.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > td {\n border-width: 1px 0;\n border-style: solid;\n border-color: $grid-border-color;\n }\n }\n }\n}\n\n// Bordered\ntable.table-bordered.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n border-width: 1px;\n border-style: solid;\n border-color: $grid-border-color;\n }\n }\n }\n}\n\n// Makes table compact\ntable.table-compact.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n padding-top: 2px;\n padding-bottom: 2px;\n }\n }\n }\n}\n\n// Remove padding on sides\ntable.table-sideless.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > td,\n > th {\n padding-right: 0;\n }\n > th:first-child,\n > td:first-child {\n padding-left: 0;\n }\n }\n }\n}\n\n// Remove all padding\ntable.table-spaceless.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n padding: 0;\n }\n }\n }\n}\n\n// Tables Vertical\n// Will remove unwanted paddings\ntable.table-vertical.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n > th {\n padding-bottom: 0;\n > label {\n padding: 0;\n }\n > div > label {\n padding: 0;\n }\n }\n }\n }\n}\n\n// Align content in middle\ntable.table-align-vertical-middle.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n vertical-align: middle;\n }\n }\n }\n}\n\n// Compact labels\ntable.table-label-compact.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n > label {\n margin: 0;\n padding: 0;\n }\n > div > label,\n .mx-referenceselector-input-wrapper label {\n margin: 0;\n padding: 0;\n }\n }\n }\n }\n}\n\n$height-row-s: 55px;\n$height-row-m: 70px;\n$height-row-l: 120px;\n// Small rows\ntable.table-row-s.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n height: $height-row-s;\n }\n }\n }\n}\n\n// Medium rows\ntable.table-row-m.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n height: $height-row-m;\n }\n }\n }\n}\n\n// Large rows\ntable.table-row-l.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n height: $height-row-l;\n }\n }\n }\n}\n\n// Makes the columns fixed\ntable.table-fixed {\n table-layout: fixed;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Templategrid\n\n Default Mendix Templategrid Widget. The template grid shows a list of objects in a tile view. For example, a template grid can show a list of products. The template grid has a lot in common with the data grid. The main difference is that the objects are shown in templates (a sort of small data view) instead of rows\n========================================================================== */\n\n.mx-templategrid {\n .mx-templategrid-content-wrapper {\n table-layout: fixed;\n }\n .mx-templategrid-item {\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n cursor: default;\n background-color: $grid-bg;\n &:hover {\n background-color: transparent;\n }\n &.selected {\n background-color: $grid-bg-selected !important;\n }\n }\n .mx-layoutgrid {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n}","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Templategrid\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Make sure your content looks selectable\n.templategrid-selectable.mx-templategrid {\n .mx-templategrid-item {\n cursor: pointer;\n }\n}\n\n// Lined\n.templategrid-lined.mx-templategrid {\n .mx-grid-content {\n border-top-width: 2px;\n border-top-style: solid;\n border-top-color: $grid-border-color;\n }\n\n .mx-templategrid-item {\n border-top: 1px solid $grid-border-color;\n border-right: none;\n border-bottom: 1px solid $grid-border-color;\n border-left: none;\n }\n}\n\n// Striped\n.templategrid-striped.mx-templategrid {\n .mx-templategrid-row:nth-child(odd) .mx-templategrid-item {\n background-color: #F9F9F9;\n }\n}\n\n// Stylingless\n.templategrid-stylingless.mx-templategrid {\n .mx-templategrid-item {\n padding: 0;\n cursor: default;\n border: 0;\n background-color: transparent;\n\n &:hover {\n background-color: transparent;\n }\n\n &.selected {\n background-color: transparent !important;\n\n &:hover {\n background-color: transparent !important;\n }\n }\n }\n}\n\n// Transparent items\n.templategrid-transparent.mx-templategrid {\n .mx-templategrid-item {\n border: 0;\n background-color: transparent;\n }\n}\n\n// Hover\n.templategrid-hover.mx-templategrid {\n .mx-templategrid-item {\n &:hover {\n background-color: $grid-bg-hover !important;\n }\n\n &.selected {\n background-color: $grid-bg-selected !important;\n\n &:hover {\n background-color: $grid-bg-selected-hover !important;\n }\n }\n }\n}\n\n// Templategrid Row Sizes\n.templategrid-lg.mx-templategrid {\n .mx-templategrid-item {\n padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2) ($grid-padding-left * 2);\n }\n}\n\n.templategrid-sm.mx-templategrid {\n .mx-templategrid-item {\n padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2) ($grid-padding-left / 2);\n }\n}\n\n// Templategrid Layoutgrid styles\n.mx-templategrid[class*=\"tg-col\"] {\n overflow: hidden; // For if it is not in a layout, to prevent scrollbars\n .mx-templategrid-content-wrapper {\n display: block;\n }\n\n .mx-templategrid-row {\n display: block;\n margin-right: -1 * $gutter-size;\n margin-left: -1 * $gutter-size;\n\n &::before,\n &::after {\n // clearfix\n display: table;\n clear: both;\n content: \" \";\n }\n }\n\n .mx-templategrid-item {\n // bootstrap col\n position: relative;\n display: block;\n float: left;\n min-height: 1px;\n padding-right: $gutter-size;\n padding-left: $gutter-size;\n border: 0;\n @media (max-width: 992px) {\n width: 100% !important;\n }\n\n .mx-dataview {\n overflow: hidden;\n }\n }\n\n &.tg-col-xs-12 .mx-templategrid-item {\n width: 100% !important;\n }\n\n &.tg-col-xs-11 .mx-templategrid-item {\n width: 91.66666667% !important;\n }\n\n &.tg-col-xs-10 .mx-templategrid-item {\n width: 83.33333333% !important;\n }\n\n &.tg-col-xs-9 .mx-templategrid-item {\n width: 75% !important;\n }\n\n &.tg-col-xs-8 .mx-templategrid-item {\n width: 66.66666667% !important;\n }\n\n &.tg-col-xs-7 .mx-templategrid-item {\n width: 58.33333333% !important;\n }\n\n &.tg-col-xs-6 .mx-templategrid-item {\n width: 50% !important;\n }\n\n &.tg-col-xs-5 .mx-templategrid-item {\n width: 41.66666667% !important;\n }\n\n &.tg-col-xs-4 .mx-templategrid-item {\n width: 33.33333333% !important;\n }\n\n &.tg-col-xs-3 .mx-templategrid-item {\n width: 25% !important;\n }\n\n &.tg-col-xs-2 .mx-templategrid-item {\n width: 16.66666667% !important;\n }\n\n &.tg-col-xs-1 .mx-templategrid-item {\n width: 8.33333333% !important;\n }\n\n @media (min-width: 768px) {\n &.tg-col-sm-12 .mx-templategrid-item {\n width: 100% !important;\n }\n &.tg-col-sm-11 .mx-templategrid-item {\n width: 91.66666667% !important;\n }\n &.tg-col-sm-10 .mx-templategrid-item {\n width: 83.33333333% !important;\n }\n &.tg-col-sm-9 .mx-templategrid-item {\n width: 75% !important;\n }\n &.tg-col-sm-8 .mx-templategrid-item {\n width: 66.66666667% !important;\n }\n &.tg-col-sm-7 .mx-templategrid-item {\n width: 58.33333333% !important;\n }\n &.tg-col-sm-6 .mx-templategrid-item {\n width: 50% !important;\n }\n &.tg-col-sm-5 .mx-templategrid-item {\n width: 41.66666667% !important;\n }\n &.tg-col-sm-4 .mx-templategrid-item {\n width: 33.33333333% !important;\n }\n &.tg-col-sm-3 .mx-templategrid-item {\n width: 25% !important;\n }\n &.tg-col-sm-2 .mx-templategrid-item {\n width: 16.66666667% !important;\n }\n &.tg-col-sm-1 .mx-templategrid-item {\n width: 8.33333333% !important;\n }\n }\n @media (min-width: 992px) {\n &.tg-col-md-12 .mx-templategrid-item {\n width: 100% !important;\n }\n &.tg-col-md-11 .mx-templategrid-item {\n width: 91.66666667% !important;\n }\n &.tg-col-md-10 .mx-templategrid-item {\n width: 83.33333333% !important;\n }\n &.tg-col-md-9 .mx-templategrid-item {\n width: 75% !important;\n }\n &.tg-col-md-8 .mx-templategrid-item {\n width: 66.66666667% !important;\n }\n &.tg-col-md-7 .mx-templategrid-item {\n width: 58.33333333% !important;\n }\n &.tg-col-md-6 .mx-templategrid-item {\n width: 50% !important;\n }\n &.tg-col-md-5 .mx-templategrid-item {\n width: 41.66666667% !important;\n }\n &.tg-col-md-4 .mx-templategrid-item {\n width: 33.33333333% !important;\n }\n &.tg-col-md-3 .mx-templategrid-item {\n width: 25% !important;\n }\n &.tg-col-md-2 .mx-templategrid-item {\n width: 16.66666667% !important;\n }\n &.tg-col-md-1 .mx-templategrid-item {\n width: 8.33333333% !important;\n }\n }\n @media (min-width: 1200px) {\n &.tg-col-lg-12 .mx-templategrid-item {\n width: 100% !important;\n }\n &.tg-col-lg-11 .mx-templategrid-item {\n width: 91.66666667% !important;\n }\n &.tg-col-lg-10 .mx-templategrid-item {\n width: 83.33333333% !important;\n }\n &.tg-col-lg-9 .mx-templategrid-item {\n width: 75% !important;\n }\n &.tg-col-lg-8 .mx-templategrid-item {\n width: 66.66666667% !important;\n }\n &.tg-col-lg-7 .mx-templategrid-item {\n width: 58.33333333% !important;\n }\n &.tg-col-lg-6 .mx-templategrid-item {\n width: 50% !important;\n }\n &.tg-col-lg-5 .mx-templategrid-item {\n width: 41.66666667% !important;\n }\n &.tg-col-lg-4 .mx-templategrid-item {\n width: 33.33333333% !important;\n }\n &.tg-col-lg-3 .mx-templategrid-item {\n width: 25% !important;\n }\n &.tg-col-lg-2 .mx-templategrid-item {\n width: 16.66666667% !important;\n }\n &.tg-col-lg-1 .mx-templategrid-item {\n width: 8.33333333% !important;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Typography\n========================================================================== */\n\np {\n line-height: $line-height-base * 1.25;\n}\n\nlabel {\n padding-top: 0;\n}\n\n.mx-title {\n margin: $font-header-margin;\n color: $font-color-header;\n font-size: $font-size-h1;\n font-weight: $font-weight-header;\n}\n\nh1,\n.h1,\n.h1 > * {\n font-size: $font-size-h1;\n}\n\nh2,\n.h2,\n.h2 > * {\n font-size: $font-size-h2;\n}\n\nh3,\n.h3,\n.h3 > * {\n font-size: $font-size-h3;\n}\n\nh4,\n.h4,\n.h4 > * {\n font-size: $font-size-h4;\n}\n\nh5,\n.h5,\n.h5 > * {\n font-size: $font-size-h5;\n}\n\nh6,\n.h6,\n.h6 > * {\n font-size: $font-size-h6;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n margin: $font-header-margin;\n color: $font-color-header;\n font-weight: $font-weight-header;\n line-height: 1.3;\n}","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Typography\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Text size\n.text-small {\n font-size: $font-size-small !important;\n}\n\n.text-large {\n font-size: $font-size-large !important;\n}\n\n// Text Weights\n.text-light,\n.text-light > *,\n.text-light label {\n font-weight: $font-weight-light !important;\n}\n\n.text-normal,\n.text-normal > *,\n.text-normal label {\n font-weight: $font-weight-normal !important;\n}\n\n.text-semibold,\n.text-semibold > *,\n.text-semibold label {\n font-weight: $font-weight-semibold !important;\n}\n\n.text-bold,\n.text-bold > *,\n.text-bold label {\n font-weight: $font-weight-bold !important;\n}\n\n// Color variations\n.text-default,\n.text-default:hover {\n color: $font-color-default !important;\n}\n\n.text-primary,\n.text-primary:hover {\n color: $brand-primary !important;\n}\n\n.text-info,\n.text-info:hover {\n color: $brand-info !important;\n}\n\n.text-success,\n.text-success:hover {\n color: $brand-success !important;\n}\n\n.text-warning,\n.text-warning:hover {\n color: $brand-warning !important;\n}\n\n.text-danger,\n.text-danger:hover {\n color: $brand-danger !important;\n}\n\n.text-header {\n color: $font-color-header !important;\n}\n\n.text-detail {\n color: $font-color-detail !important;\n}\n\n.text-white {\n color: #ffffff;\n}\n\n// Alignment options\n.text-left {\n text-align: left !important;\n}\n.text-center {\n text-align: center !important;\n}\n.text-right {\n text-align: right !important;\n}\n.text-justify {\n text-align: justify !important;\n}\n\n// Transform options\n.text-lowercase {\n text-transform: lowercase !important;\n}\n.text-uppercase {\n text-transform: uppercase !important;\n}\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n// Wrap options\n.text-break {\n word-break: break-all !important;\n word-break: break-word !important;\n -ms-word-break: break-all !important;\n -webkit-hyphens: auto !important;\n -moz-hyphens: auto !important;\n hyphens: auto !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-nowrap {\n overflow: hidden !important;\n max-width: 100% !important;\n white-space: nowrap !important;\n text-overflow: ellipsis !important;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Layout Grid\n\n Default Bootstrap containers\n========================================================================== */\n.mx-layoutgrid {\n width: 100%;\n margin-right: auto;\n margin-left: auto;\n padding-right: $gutter-size;\n padding-left: $gutter-size;\n}\n\n// Row\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -$gutter-size;\n margin-left: -$gutter-size;\n\n &::before,\n &::after {\n content: normal;\n }\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n// Columns\n.col-1,\n.col-2,\n.col-3,\n.col-4,\n.col-5,\n.col-6,\n.col-7,\n.col-8,\n.col-9,\n.col-10,\n.col-11,\n.col-12,\n.col,\n.col-auto,\n.col-sm-1,\n.col-sm-2,\n.col-sm-3,\n.col-sm-4,\n.col-sm-5,\n.col-sm-6,\n.col-sm-7,\n.col-sm-8,\n.col-sm-9,\n.col-sm-10,\n.col-sm-11,\n.col-sm-12,\n.col-sm,\n.col-sm-auto,\n.col-md-1,\n.col-md-2,\n.col-md-3,\n.col-md-4,\n.col-md-5,\n.col-md-6,\n.col-md-7,\n.col-md-8,\n.col-md-9,\n.col-md-10,\n.col-md-11,\n.col-md-12,\n.col-md,\n.col-md-auto,\n.col-lg-1,\n.col-lg-2,\n.col-lg-3,\n.col-lg-4,\n.col-lg-5,\n.col-lg-6,\n.col-lg-7,\n.col-lg-8,\n.col-lg-9,\n.col-lg-10,\n.col-lg-11,\n.col-lg-12,\n.col-lg,\n.col-lg-auto,\n.col-xl-1,\n.col-xl-2,\n.col-xl-3,\n.col-xl-4,\n.col-xl-5,\n.col-xl-6,\n.col-xl-7,\n.col-xl-8,\n.col-xl-9,\n.col-xl-10,\n.col-xl-11,\n.col-xl-12,\n.col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n padding-right: $gutter-size;\n padding-left: $gutter-size;\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-first {\n order: -1;\n}\n\n.order-last {\n order: 13;\n}\n\n.order-0 {\n order: 0;\n}\n\n.order-1 {\n order: 1;\n}\n\n.order-2 {\n order: 2;\n}\n\n.order-3 {\n order: 3;\n}\n\n.order-4 {\n order: 4;\n}\n\n.order-5 {\n order: 5;\n}\n\n.order-6 {\n order: 6;\n}\n\n.order-7 {\n order: 7;\n}\n\n.order-8 {\n order: 8;\n}\n\n.order-9 {\n order: 9;\n}\n\n.order-10 {\n order: 10;\n}\n\n.order-11 {\n order: 11;\n}\n\n.order-12 {\n order: 12;\n}\n\n.offset-1,\n.col-offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2,\n.col-offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3,\n.col-offset-3 {\n margin-left: 25%;\n}\n\n.offset-4,\n.col-offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5,\n.col-offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6,\n.col-offset-6 {\n margin-left: 50%;\n}\n\n.offset-7,\n.col-offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8,\n.col-offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9,\n.col-offset-9 {\n margin-left: 75%;\n}\n\n.offset-10,\n.col-offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11,\n.col-offset-11 {\n margin-left: 91.666667%;\n}\n\n// Responsiveness\n@media (min-width: $screen-sm) {\n .mx-layoutgrid-fixed {\n max-width: 540px;\n }\n}\n\n@media (min-width: $screen-md) {\n .mx-layoutgrid-fixed {\n max-width: 720px;\n }\n}\n\n@media (min-width: $screen-lg) {\n .mx-layoutgrid-fixed {\n max-width: 960px;\n }\n}\n\n@media (min-width: $screen-xl) {\n .mx-layoutgrid-fixed {\n max-width: 1140px;\n }\n}\n\n@media (min-width: $screen-sm) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n order: -1;\n }\n .order-sm-last {\n order: 13;\n }\n .order-sm-0 {\n order: 0;\n }\n .order-sm-1 {\n order: 1;\n }\n .order-sm-2 {\n order: 2;\n }\n .order-sm-3 {\n order: 3;\n }\n .order-sm-4 {\n order: 4;\n }\n .order-sm-5 {\n order: 5;\n }\n .order-sm-6 {\n order: 6;\n }\n .order-sm-7 {\n order: 7;\n }\n .order-sm-8 {\n order: 8;\n }\n .order-sm-9 {\n order: 9;\n }\n .order-sm-10 {\n order: 10;\n }\n .order-sm-11 {\n order: 11;\n }\n .order-sm-12 {\n order: 12;\n }\n .offset-sm-0,\n .col-sm-offset-0 {\n margin-left: 0;\n }\n .offset-sm-1,\n .col-sm-offset-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2,\n .col-sm-offset-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3,\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .offset-sm-4,\n .col-sm-offset-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5,\n .col-sm-offset-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6,\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .offset-sm-7,\n .col-sm-offset-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8,\n .col-sm-offset-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9,\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .offset-sm-10,\n .col-sm-offset-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11,\n .col-sm-offset-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: $screen-md) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n order: -1;\n }\n .order-md-last {\n order: 13;\n }\n .order-md-0 {\n order: 0;\n }\n .order-md-1 {\n order: 1;\n }\n .order-md-2 {\n order: 2;\n }\n .order-md-3 {\n order: 3;\n }\n .order-md-4 {\n order: 4;\n }\n .order-md-5 {\n order: 5;\n }\n .order-md-6 {\n order: 6;\n }\n .order-md-7 {\n order: 7;\n }\n .order-md-8 {\n order: 8;\n }\n .order-md-9 {\n order: 9;\n }\n .order-md-10 {\n order: 10;\n }\n .order-md-11 {\n order: 11;\n }\n .order-md-12 {\n order: 12;\n }\n .offset-md-0,\n .col-md-offset-0 {\n margin-left: 0;\n }\n .offset-md-1,\n .col-md-offset-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2,\n .col-md-offset-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3,\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .offset-md-4,\n .col-md-offset-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5,\n .col-md-offset-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6,\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .offset-md-7,\n .col-md-offset-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8,\n .col-md-offset-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9,\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .offset-md-10,\n .col-md-offset-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11,\n .col-md-offset-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: $screen-lg) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n order: -1;\n }\n .order-lg-last {\n order: 13;\n }\n .order-lg-0 {\n order: 0;\n }\n .order-lg-1 {\n order: 1;\n }\n .order-lg-2 {\n order: 2;\n }\n .order-lg-3 {\n order: 3;\n }\n .order-lg-4 {\n order: 4;\n }\n .order-lg-5 {\n order: 5;\n }\n .order-lg-6 {\n order: 6;\n }\n .order-lg-7 {\n order: 7;\n }\n .order-lg-8 {\n order: 8;\n }\n .order-lg-9 {\n order: 9;\n }\n .order-lg-10 {\n order: 10;\n }\n .order-lg-11 {\n order: 11;\n }\n .order-lg-12 {\n order: 12;\n }\n .offset-lg-0,\n .col-lg-offset-0 {\n margin-left: 0;\n }\n .offset-lg-1,\n .col-lg-offset-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2,\n .col-lg-offset-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3,\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .offset-lg-4,\n .col-lg-offset-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5,\n .col-lg-offset-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6,\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .offset-lg-7,\n .col-lg-offset-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8,\n .col-lg-offset-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9,\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .offset-lg-10,\n .col-lg-offset-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11,\n .col-lg-offset-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: $screen-xl) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n order: -1;\n }\n .order-xl-last {\n order: 13;\n }\n .order-xl-0 {\n order: 0;\n }\n .order-xl-1 {\n order: 1;\n }\n .order-xl-2 {\n order: 2;\n }\n .order-xl-3 {\n order: 3;\n }\n .order-xl-4 {\n order: 4;\n }\n .order-xl-5 {\n order: 5;\n }\n .order-xl-6 {\n order: 6;\n }\n .order-xl-7 {\n order: 7;\n }\n .order-xl-8 {\n order: 8;\n }\n .order-xl-9 {\n order: 9;\n }\n .order-xl-10 {\n order: 10;\n }\n .order-xl-11 {\n order: 11;\n }\n .order-xl-12 {\n order: 12;\n }\n .offset-xl-0,\n .col-xl-offset-0 {\n margin-left: 0;\n }\n .offset-xl-1,\n .col-xl-offset-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2,\n .col-xl-offset-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3,\n .col-xl-offset-3 {\n margin-left: 25%;\n }\n .offset-xl-4,\n .col-xl-offset-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5,\n .col-xl-offset-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6,\n .col-xl-offset-6 {\n margin-left: 50%;\n }\n .offset-xl-7,\n .col-xl-offset-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8,\n .col-xl-offset-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9,\n .col-xl-offset-9 {\n margin-left: 75%;\n }\n .offset-xl-10,\n .col-xl-offset-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11,\n .col-xl-offset-11 {\n margin-left: 91.666667%;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Progress\n\n Default Mendix Progress Widget.\n========================================================================== */\n\n.mx-progress {\n color: $font-color-default;\n background: $bg-color-secondary;\n\n .mx-progress-message {\n color: $font-color-default;\n }\n\n .mx-progress-indicator {\n position: relative;\n overflow: hidden;\n width: 100%;\n max-width: 100%;\n height: 2px;\n margin: auto;\n padding: 0;\n border-radius: 0;\n background: $gray-lighter;\n\n &:before,\n &:after {\n position: absolute;\n top: 0;\n left: 0;\n display: block;\n width: 50%;\n height: 2px;\n content: \"\";\n transform: translate3d(-100%, 0, 0);\n background: $brand-primary;\n }\n\n &::before {\n animation: loader 2s infinite;\n }\n\n &::after {\n animation: loader 2s -2s infinite;\n }\n }\n}\n\n\n@keyframes loader {\n 0% {\n transform: translate3d(-100%, 0, 0);\n }\n 100% {\n transform: translate3d(200%, 0, 0);\n }\n}\n",".widget-timeline-date-header {\n display: inline-block;\n width: 110px;\n overflow-wrap: break-word;\n padding: 8px;\n text-align: center;\n border: 1px solid $timeline-border-color;\n border-radius: 30px;\n}\n\n.widget-timeline-events-wrapper {\n display: flex;\n flex: 1;\n margin-left: 55px;\n padding-top: 35px;\n\n ul {\n padding: 0;\n list-style: none;\n margin-bottom: 0;\n }\n}\n\n.widget-timeline-title {\n color: $timeline-color-header;\n font-weight: 600;\n margin: 0 0 10px 0;\n}\n\n.widget-timeline-description {\n color: $timeline-color-detail;\n}\n\n.widget-timeline-event {\n position: relative;\n margin-left: $timeline-icon-size / 2;\n padding-left: $spacing-large;\n padding-bottom: 20px;\n\n &:not(:last-of-type) {\n border-left: 1px solid $timeline-border-color;\n }\n\n &.clickable {\n cursor: pointer;\n transition: background 0.8s;\n\n &:hover {\n .widget-timeline-title {\n color: #dadcde;\n }\n }\n }\n}\n\n.widget-timeline-icon-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n width: $timeline-icon-size;\n height: $timeline-icon-size;\n transform: translateX(-50%);\n\n .glyphicon {\n font-size: $timeline-icon-size;\n }\n\n img {\n max-width: $timeline-icon-size;\n max-height: $timeline-icon-size;\n }\n}\n\n.widget-timeline-content-wrapper {\n .widget-timeline-date-time-wrapper {\n margin-right: 15px;\n }\n\n .widget-timeline-info-wrapper {\n flex-direction: column;\n }\n}\n\n.widget-timeline-icon-circle {\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background-color: $timeline-icon-color;\n}\n\n.widget-timeline-no-divider {\n padding-bottom: 0;\n padding-top: 0;\n margin-left: 0;\n}\n\n.widget-timeline-flex-container {\n display: flex;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Helpers\n\n Default Mendix Helpers\n========================================================================== */\n$important-helpers-value: if($important-helpers, ' !important', '');\n\n// Display properties\n.d-none {\n display: none #{$important-helpers-value};\n}\n\n.d-flex {\n display: flex #{$important-helpers-value};\n}\n\n.d-inline-flex {\n display: inline-flex #{$important-helpers-value};\n}\n\n.d-inline {\n display: inline #{$important-helpers-value};\n}\n\n.d-inline-block {\n display: inline-block #{$important-helpers-value};\n}\n\n.show,\n.d-block {\n display: block #{$important-helpers-value};\n}\n\n.table,\n.d-table {\n display: table #{$important-helpers-value};\n}\n\n.table-row,\n.d-table-row {\n display: table-row #{$important-helpers-value};\n}\n\n.table-cell,\n.d-table-cell {\n display: table-cell #{$important-helpers-value};\n}\n\n.hide,\n.hidden {\n display: none #{$important-helpers-value};\n visibility: hidden #{$important-helpers-value};\n}\n\n.invisible {\n visibility: hidden #{$important-helpers-value};\n}\n\n.display-ie8-only:not([attr*=\"\"]) {\n display: none #{$important-helpers-value};\n padding: 0 #{$important-helpers-value};\n}\n\n.list-nostyle {\n ul {\n margin: 0 #{$important-helpers-value};\n padding: 0 #{$important-helpers-value};\n\n li {\n list-style-type: none #{$important-helpers-value};\n }\n }\n}\n\n.nowrap,\n.nowrap * {\n overflow: hidden #{$important-helpers-value};\n // Star for inside an element, IE8 span > a\n white-space: nowrap #{$important-helpers-value};\n text-overflow: ellipsis #{$important-helpers-value};\n}\n\n// Render DIV as Table Cells\n.table {\n display: table #{$important-helpers-value};\n}\n\n.table-row {\n display: table-row #{$important-helpers-value};\n}\n\n.table-cell {\n display: table-cell #{$important-helpers-value};\n}\n\n// Quick floats\n.pull-left {\n float: left #{$important-helpers-value};\n}\n\n.pull-right {\n float: right #{$important-helpers-value};\n}\n\n// Align options\n.align-top {\n vertical-align: top #{$important-helpers-value};\n}\n\n.align-middle {\n vertical-align: middle #{$important-helpers-value};\n}\n\n.align-bottom {\n vertical-align: bottom #{$important-helpers-value};\n}\n\n// Flex alignments\n.row-left {\n display: flex #{$important-helpers-value};\n align-items: center #{$important-helpers-value};\n flex-flow: row #{$important-helpers-value};\n justify-content: flex-start #{$important-helpers-value};\n}\n\n.row-center {\n display: flex #{$important-helpers-value};\n align-items: center #{$important-helpers-value};\n flex-flow: row #{$important-helpers-value};\n justify-content: center #{$important-helpers-value};\n}\n\n.row-right {\n display: flex #{$important-helpers-value};\n align-items: center #{$important-helpers-value};\n flex-flow: row #{$important-helpers-value};\n justify-content: flex-end #{$important-helpers-value};\n}\n\n.col-left {\n display: flex #{$important-helpers-value};\n align-items: flex-start #{$important-helpers-value};\n flex-direction: column #{$important-helpers-value};\n justify-content: center #{$important-helpers-value};\n}\n\n.col-center {\n display: flex #{$important-helpers-value};\n align-items: center #{$important-helpers-value};\n flex-direction: column #{$important-helpers-value};\n justify-content: center #{$important-helpers-value};\n}\n\n.col-right {\n display: flex #{$important-helpers-value};\n align-items: flex-end #{$important-helpers-value};\n flex-direction: column #{$important-helpers-value};\n justify-content: center #{$important-helpers-value};\n}\n\n// Media\n@media (max-width: $screen-sm-max) {\n .hide-phone {\n display: none #{$important-helpers-value};\n }\n}\n\n@media (min-width: $screen-md) and (max-width: $screen-md-max) {\n .hide-tablet {\n display: none #{$important-helpers-value};\n }\n}\n\n@media (min-width: $screen-lg) {\n .hide-desktop {\n display: none #{$important-helpers-value};\n }\n}\n\n\n@media (max-width: $screen-xs-max) {\n .hide-xs,\n .hidden-xs,\n .d-xs-none {\n display: none #{$important-helpers-value};\n }\n .d-xs-flex {\n display: flex #{$important-helpers-value};\n }\n .d-xs-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-xs-inline {\n display: inline #{$important-helpers-value};\n }\n .d-xs-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-xs-block {\n display: block #{$important-helpers-value};\n }\n .d-xs-table {\n display: table #{$important-helpers-value};\n }\n .d-xs-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-xs-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n}\n\n@media (min-width: $screen-sm) and (max-width: $screen-sm-max) {\n .hide-sm,\n .hidden-sm,\n .d-sm-none {\n display: none #{$important-helpers-value};\n }\n .d-sm-flex {\n display: flex #{$important-helpers-value};\n }\n .d-sm-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-sm-inline {\n display: inline #{$important-helpers-value};\n }\n .d-sm-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-sm-block {\n display: block #{$important-helpers-value};\n }\n .d-sm-table {\n display: table #{$important-helpers-value};\n }\n .d-sm-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-sm-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n}\n\n@media (min-width: $screen-md) and (max-width: $screen-md-max) {\n .hide-md,\n .hidden-md,\n .d-md-none {\n display: none #{$important-helpers-value};\n }\n .d-md-flex {\n display: flex #{$important-helpers-value};\n }\n .d-md-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-md-inline {\n display: inline #{$important-helpers-value};\n }\n .d-md-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-md-block {\n display: block #{$important-helpers-value};\n }\n .d-md-table {\n display: table #{$important-helpers-value};\n }\n .d-md-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-md-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n}\n\n@media (min-width: $screen-lg) and (max-width: $screen-xl) {\n .hide-lg,\n .hidden-lg,\n .d-lg-none {\n display: none #{$important-helpers-value};\n }\n .d-lg-flex {\n display: flex #{$important-helpers-value};\n }\n .d-lg-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-lg-inline {\n display: inline #{$important-helpers-value};\n }\n .d-lg-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-lg-block {\n display: block #{$important-helpers-value};\n }\n .d-lg-table {\n display: table #{$important-helpers-value};\n }\n .d-lg-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-lg-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n}\n\n@media (min-width: $screen-xl) {\n .hide-xl,\n .hidden-xl,\n .d-xl-none {\n display: none #{$important-helpers-value};\n }\n .d-xl-flex {\n display: flex #{$important-helpers-value};\n }\n .d-xl-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-xl-inline {\n display: inline #{$important-helpers-value};\n }\n .d-xl-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-xl-block {\n display: block #{$important-helpers-value};\n }\n .d-xl-table {\n display: table #{$important-helpers-value};\n }\n .d-xl-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-xl-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/*\n* Mendix Documentation\n* Special styles for presenting components\n*/\n\n/*\n* Dijit Widgets\n*\n* Default Dojo Dijit Widgets\n*/\n\n/*\n * Dijit Tooltip Widget\n *\n * Default tooltip used for Mendix widgets\n */\n\n.mx-tooltip {\n .dijitTooltipContainer {\n border-width: 1px;\n border-color: $gray-light;\n border-radius: 4px;\n background: #ffffff;\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n .mx-tooltip-content {\n padding: 10px;\n }\n .form-group {\n margin-bottom: 5px;\n }\n }\n .dijitTooltipConnector {\n width: 0;\n height: 0;\n margin-left: -10px;\n border-width: 10px 10px 10px 0;\n border-style: solid;\n border-color: transparent;\n border-right-color: $gray-light;\n }\n}\n\n/*\n * Dijit Border Container\n *\n * Used in Mendix as split pane containers\n */\n\n.dijitBorderContainer {\n padding: 5px;\n background-color: #fcfcfc;\n .dijitSplitterV,\n .dijitGutterV {\n width: 5px;\n border: 0;\n background: #fcfcfc;\n }\n .dijitSplitterH,\n .dijitGutterH {\n height: 5px;\n border: 0;\n background: #fcfcfc;\n }\n .dijitSplitterH {\n .dijitSplitterThumb {\n top: 2px;\n width: 19px;\n height: 1px;\n background: #b0b0b0;\n }\n }\n .dijitSplitterV {\n .dijitSplitterThumb {\n left: 2px;\n width: 1px;\n height: 19px;\n background: #b0b0b0;\n }\n }\n .dijitSplitContainer-child,\n .dijitBorderContainer-child {\n border: 1px solid #cccccc;\n }\n .dijitBorderContainer-dijitTabContainerTop,\n .dijitBorderContainer-dijitTabContainerBottom,\n .dijitBorderContainer-dijitTabContainerLeft,\n .dijitBorderContainer-dijitTabContainerRight {\n border: none;\n }\n .dijitBorderContainer-dijitBorderContainer {\n padding: 0;\n border: none;\n }\n .dijitSplitterActive {\n /* For IE8 and earlier */\n margin: 0;\n opacity: 0.6;\n background-color: #aaaaaa;\n background-image: none;\n font-size: 1px;\n filter: alpha(opacity=60);\n }\n .dijitSplitContainer-dijitContentPane,\n .dijitBorderContainer-dijitContentPane {\n padding: 5px;\n background-color: #ffffff;\n }\n}\n\n/*\n * Dijit Menu Popup\n *\n * Used in datepickers and calendar widgets\n */\n\n.dijitMenuPopup {\n margin-top: 10px;\n .dijitMenu {\n display: block;\n width: 200px !important;\n margin-top: 0; // No top margin because there is no parent with margin bottom\n padding: 12px 10px;\n border-radius: 3px;\n background: $brand-inverse;\n &:after {\n position: absolute;\n bottom: 100%;\n left: 20px;\n width: 0;\n height: 0;\n margin-left: -10px;\n content: ' ';\n pointer-events: none;\n border: medium solid transparent;\n border-width: 10px;\n border-bottom-color: $brand-inverse;\n }\n // Menu item\n .dijitMenuItem {\n background: transparent;\n .dijitMenuItemLabel {\n display: block;\n overflow: hidden;\n width: 180px !important;\n padding: 10px;\n text-overflow: ellipsis;\n color: #ffffff;\n border-radius: 3px;\n }\n // Hover\n &.dijitMenuItemHover {\n background: none;\n .dijitMenuItemLabel {\n background: $brand-primary;\n }\n }\n }\n // New label\n .tg_newlabelmenuitem {\n .dijitMenuItemLabel {\n font-weight: $font-weight-bold;\n }\n }\n // Seperator\n .dijitMenuSeparator {\n td {\n padding: 0;\n border-bottom-width: 3px;\n }\n .dijitMenuSeparatorIconCell {\n > div {\n margin: 0; //override dijit styling\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* Based on https://github.com/mendixlabs/star-rating/blob/v1.1.1/src/ui/StarRating.scss */\ndiv.widget-progress-bar .progress-bar-default {\n background-color: $brand-default;\n}\n\ndiv.widget-progress-bar .progress-bar-primary {\n background-color: $brand-primary;\n}\n\ndiv.widget-progress-bar .progress-bar-success {\n background-color: $brand-success;\n}\n\ndiv.widget-progress-bar .progress-bar-info {\n background-color: $brand-info;\n}\n\ndiv.widget-progress-bar .progress-bar-warning {\n background-color: $brand-warning;\n}\n\ndiv.widget-progress-bar .progress-bar-danger {\n background-color: $brand-danger;\n}\n\ndiv.widget-progress-bar .progress-bar-inverse {\n background-color: $brand-inverse;\n}\n\ndiv.widget-progress-bar-alert.widget-progress-bar-text-contrast .progress-bar {\n color: $color-danger-darker;\n}\n\ndiv.widget-progress-bar-text-contrast .progress-bar {\n color: $font-color-default;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* Based on https://github.com/mendixlabs/progress-circle/tree/master/src/ui/_progress-circle-theme.scss */\npath.widget-progress-circle-path {\n stroke: $brand-primary;\n}\n\n.widget-progress-circle-primary {\n path.widget-progress-circle-path {\n stroke: $brand-primary;\n }\n .progressbar-text {\n color: $brand-primary !important;\n }\n}\n\n.widget-progress-circle-info {\n path.widget-progress-circle-path {\n stroke: $brand-info;\n }\n .progressbar-text {\n color: $brand-info !important;\n }\n}\n\n.widget-progress-circle-success {\n path.widget-progress-circle-path {\n stroke: $brand-success;\n }\n .progressbar-text {\n color: $brand-success !important;\n }\n}\n\n.widget-progress-circle-warning {\n path.widget-progress-circle-path {\n stroke: $brand-warning;\n }\n .progressbar-text {\n color: $brand-warning !important;\n }\n}\n\n.widget-progress-circle-danger {\n path.widget-progress-circle-path {\n stroke: $brand-danger;\n }\n .progressbar-text {\n color: $brand-danger !important;\n }\n}\n\n.widget-progress-circle-inverse {\n path.widget-progress-circle-path {\n stroke: $brand-inverse;\n }\n .progressbar-text {\n color: $brand-inverse !important;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n// Based on https://github.com/mendixlabs/range-slider/tree/master/src/ui/_range-slider-theme.scss\n\ndiv.widget-range-slider {\n .rc-slider-handle,\n .rc-slider-dot-active {\n border-color: $brand-default;\n\n &:active {\n border-color: $brand-default;\n box-shadow: none;\n }\n\n &:hover {\n border-color: $brand-default;\n }\n }\n\n &.has-error {\n .rc-slider-track,\n .rc-slider-rail {\n background-color: $brand-danger;\n }\n }\n}\n\ndiv.widget-range-slider-primary .rc-slider-track {\n background-color: $brand-primary;\n}\n\ndiv.widget-range-slider-info .rc-slider-track {\n background-color: $brand-info;\n}\n\ndiv.widget-range-slider-success .rc-slider-track {\n background-color: $brand-success;\n}\n\ndiv.widget-range-slider-warning .rc-slider-track {\n background-color: $brand-warning;\n}\n\ndiv.widget-range-slider-danger .rc-slider-track {\n background-color: $brand-danger;\n}\n\ndiv.widget-range-slider-inverse .rc-slider-track {\n background-color: $brand-inverse;\n}\n\n.rc-slider-tooltip {\n z-index: 999;\n}","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n// Based on https://github.com/mendixlabs/slider/tree/master/src/ui/_slider-theme.scss\n\ndiv.widget-slider {\n .rc-slider-handle,\n .rc-slider-dot-active {\n border-color: $brand-default;\n &:active {\n border-color: $brand-default;\n }\n &:hover {\n border-color: $brand-default;\n }\n }\n\n &.has-error {\n .rc-slider-track,\n .rc-slider-rail {\n background-color: $brand-danger;\n }\n }\n}\n\ndiv.widget-slider-primary .rc-slider-track {\n background-color: $brand-primary;\n}\n\ndiv.widget-slider-info .rc-slider-track {\n background-color: $brand-info;\n}\n\ndiv.widget-slider-success .rc-slider-track {\n background-color: $brand-success;\n}\n\ndiv.widget-slider-warning .rc-slider-track {\n background-color: $brand-warning;\n}\n\ndiv.widget-slider-danger .rc-slider-track {\n background-color: $brand-danger;\n}\n\ndiv.widget-slider-inverse .rc-slider-track {\n background-color: $brand-inverse;\n}\n","//\r\n// DISCLAIMER:\r\n// Do not change this file because it is core styling.\r\n// Customizing core files will make updating Atlas much more difficult in the future.\r\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\r\n//\r\n\r\n/* Based on https://github.com/mendixlabs/star-rating/blob/v1.1.1/src/ui/StarRating.scss */\r\nspan.widget-star-rating-full-default {\r\n color: $brand-default;\r\n}\r\n\r\nspan.widget-star-rating-full-primary {\r\n color: $brand-primary;\r\n}\r\n\r\nspan.widget-star-rating-full-success {\r\n color: $brand-success;\r\n}\r\n\r\nspan.widget-star-rating-full-info {\r\n color: $brand-info;\r\n}\r\n\r\nspan.widget-star-rating-full-warning {\r\n color: $brand-warning;\r\n}\r\n\r\nspan.widget-star-rating-full-danger {\r\n color: $brand-danger;\r\n}\r\n\r\nspan.widget-star-rating-full-inverse {\r\n color: $brand-inverse;\r\n}\r\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n$default-android-color: #6FBEB5;\n$default-ios-color: rgb(100, 189, 99);\n\n@mixin bootstrap-style-ios($brand-style) {\n border-color: $brand-style;\n background-color: $brand-style;\n box-shadow: $brand-style 0 0 0 16px inset;\n}\n\n@mixin bootstrap-style-android($brand-style) {\n background-color: lighten($brand-style, 10%);\n}\n\n@mixin ios {\n .widget-switch-btn-wrapper {\n &.checked {\n &.widget-switch-btn-wrapper-default {\n @include bootstrap-style-ios($default-ios-color);\n }\n\n &.widget-switch-btn-wrapper-success {\n @include bootstrap-style-ios($brand-success);\n }\n\n &.widget-switch-btn-wrapper-info {\n @include bootstrap-style-ios($brand-info);\n }\n\n &.widget-switch-btn-wrapper-primary {\n @include bootstrap-style-ios($brand-primary);\n }\n\n &.widget-switch-btn-wrapper-warning {\n @include bootstrap-style-ios($brand-warning);\n }\n\n &.widget-switch-btn-wrapper-danger {\n @include bootstrap-style-ios($brand-danger);\n }\n\n &.widget-switch-btn-wrapper-inverse {\n @include bootstrap-style-ios($brand-inverse);\n }\n }\n }\n}\n\n@mixin android {\n .widget-switch-btn-wrapper {\n &.checked {\n &.widget-switch-btn-wrapper-default {\n @include bootstrap-style-android($default-android-color);\n\n .widget-switch-btn {\n background: $default-android-color;\n }\n }\n\n &.widget-switch-btn-wrapper-success {\n @include bootstrap-style-android($brand-success);\n\n .widget-switch-btn {\n background: $brand-success;\n }\n }\n\n &.widget-switch-btn-wrapper-info {\n @include bootstrap-style-android($brand-info);\n\n .widget-switch-btn {\n background: $brand-info;\n }\n }\n\n &.widget-switch-btn-wrapper-primary {\n @include bootstrap-style-android($brand-primary);\n\n .widget-switch-btn {\n background: $brand-primary;\n }\n }\n\n &.widget-switch-btn-wrapper-warning {\n @include bootstrap-style-android($brand-warning);\n\n .widget-switch-btn {\n background: $brand-warning;\n }\n }\n\n &.widget-switch-btn-wrapper-danger {\n @include bootstrap-style-android($brand-danger);\n\n .widget-switch-btn {\n background: $brand-danger;\n }\n }\n\n &.widget-switch-btn-wrapper-inverse {\n @include bootstrap-style-android($brand-inverse);\n\n .widget-switch-btn {\n background: $brand-inverse;\n }\n }\n }\n }\n}\n\n.widget-switch-btn-wrapper {\n &:focus {\n outline: 1px solid $brand-primary;\n }\n}\n\ndiv {\n &.widget-switch {\n &.iOS {\n @include ios;\n }\n\n &.android {\n @include android;\n }\n\n &.auto {\n @include ios;\n }\n }\n}\n\nhtml {\n div {\n &.dj_android {\n .widget-switch {\n &.auto {\n @include android;\n }\n }\n }\n\n &.dj_ios {\n .widget-switch {\n &.auto {\n @include ios;\n }\n }\n }\n }\n}\n","/* ==========================================================================\n Breadcrumbs\n\n========================================================================== */\n.breadcrumb {\n //reset\n margin: 0;\n padding: 0;\n border-radius: 0;\n background-color: transparent;\n font-size: $font-size-default;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.breadcrumb-item {\n display: inline-block;\n margin: 0;\n &:last-child {\n color: $font-color-default;\n a {\n text-decoration: none;\n }\n }\n}\n.breadcrumb-item + .breadcrumb-item {\n &::before {\n display: inline-block;\n padding-right: 10px;\n padding-left: 10px;\n content: \"/\";\n color: $gray-light;\n }\n}\n\n//== Variations \n//-------------------------------------------------------------------------------------------------------------------//\n.breadcrumb-large {\n font-size: $font-size-h3;\n}\n.breadcrumb-underline {\n padding-bottom: $gutter-size;\n border-bottom: 1px solid $border-color-default;\n}\n","/* ==========================================================================\n Cards\n\n========================================================================== */\n.card {\n padding: 30px;\n border: 1px solid $border-color-default;\n border-radius: $border-radius-default;\n background-color: #FFFFFF;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.card-title {\n margin-top: 0;\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.cardaction {\n .card-image {\n .glyphicon {\n font-size: 58px;\n }\n }\n}\n\n.cardmetrics {\n .card-title {\n margin-bottom: 0;\n }\n\n .figurecontent {\n }\n\n .card-image {\n width: 100px;\n height: auto;\n // If btn\n &.btn {\n width: 100px;\n height: 100px;\n padding: 0;\n cursor: default;\n pointer-events: none;\n font-size: 40px;\n }\n }\n\n .card-counter {\n margin: 0;\n font-size: 64px;\n }\n\n .card-morebutton {\n }\n}\n\n.cardinfo {\n .card-text {\n margin-bottom: $spacing-large;\n }\n}\n\n// Used in card info\n.textwithicon {\n overflow: hidden;\n max-width: 100%;\n margin-bottom: 15px;\n text-overflow: ellipsis;\n\n .textwithicon-icon,\n .textwithicon-text {\n display: inline-block;\n vertical-align: middle;\n }\n\n .textwithicon-icon {\n margin-right: 15px;\n padding: 0;\n color: $brand-primary; // class .text-primary\n border: 0;\n background: transparent;\n font-size: 23px;\n }\n\n .textwithicon-text {\n }\n}\n\n// Used in card info\n.socialprofiles {\n .socialprofiles-title {\n display: block;\n margin-bottom: 10px;\n font-weight: bold; // class text-bold\n }\n\n .socialprofiles-button {\n width: 24px;\n height: 24px;\n margin-right: 15px;\n padding: 0;\n border-radius: 24px;\n\n .glyphicon {\n margin: 0;\n }\n }\n}\n\n\n.cardtabs {\n padding: 0;\n}\n\n.cardtabs-tabs {\n margin: 0;\n\n ul.mx-tabcontainer-tabs {\n display: flex;\n margin: 0;\n background-color: mix($tabs-border-color, #FFFFFF, 20%);\n\n li {\n flex: 1 1 auto;\n text-align: center;\n\n a,\n a:hover,\n a:focus {\n border-top-width: 0;\n border-right-width: 1px;\n border-left-width: 0;\n }\n\n &:first-child a {\n border-radius: $border-radius-default 0 0 0;\n }\n\n &:last-child a {\n border-radius: 0 $border-radius-default 0 0;\n }\n }\n }\n\n .mx-tabcontainer-pane {\n @include get-responsive-spacing-large($type: padding, $direction: all);\n }\n}\n\n.carduser {\n .card-controls {\n }\n\n .card-title {\n }\n\n .card-detail {\n }\n}\n\n.cardgraph {\n .card-title {\n }\n}\n\n.cardchart {\n .card-title {\n }\n}\n\n.cardproduct {\n padding: 0;\n\n}\n\n.cardproduct-header {\n position: relative;\n overflow: hidden;\n height: 200px;\n\n .card-image {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: auto;\n }\n\n}\n\n.cardproduct-overlay {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n padding: 20px 30px;\n background: rgba(0, 0, 0, 0.60);\n\n}\n\n.cardproduct-overlay-category,\n.cardproduct-overlay-title {\n margin: 0;\n color: #FFFFFF;\n}\n\n.cardproduct-footer .col {\n padding: 20px 30px;\n\n .widget-star-rating-font {\n font-size: 20px;\n }\n}\n\n.cardproduct-name {\n margin: 0;\n}\n\n.cardproduct-btn {\n display: flex;\n align-items: center;\n height: 100%;\n padding: 30px;\n border-left: 1px solid $border-color-default;\n}\n\n.cardproduct2 {\n @extend .cardproduct;\n\n .cardproduct-header {\n &::after {\n position: absolute;\n bottom: 0;\n left: 0;\n display: block;\n width: 100%;\n padding: 20px 30px;\n content: \"\";\n background: rgba(0, 0, 0, 0.60);\n background: -moz-linear-gradient(top, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 2%, rgba(0, 0, 0, 0.99) 99%, rgba(0, 0, 0, 1) 100%);\n background: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 2%, rgba(0, 0, 0, 0.99) 99%, rgba(0, 0, 0, 1) 100%);\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 2%, rgba(0, 0, 0, 0.99) 99%, rgba(0, 0, 0, 1) 100%);\n }\n }\n}\n\n\n.cardproduct3 {\n @extend .cardproduct;\n\n .cardproduct-header {\n height: 320px;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n }\n\n .cardproduct-overlay {\n min-height: 100px;\n padding: 30px;\n background: -moz-linear-gradient(top, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 8%, rgba(0, 0, 0, 0.99) 121%, rgba(0, 0, 0, 1) 100%);\n background: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 8%, rgba(0, 0, 0, 0.99) 121%, rgba(0, 0, 0, 1) 100%);\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 8%, rgba(0, 0, 0, 0.99) 121%, rgba(0, 0, 0, 1) 100%);\n font-size: $font-size-default;\n }\n}\n\n.cardshopping {\n}\n\n.carduserlist {\n}\n\n.cardstatus {\n padding: 20px;\n\n .card-linkicon {\n font-size: 30px;\n }\n\n .cardstatus-status {\n margin-bottom: 5px;\n }\n}\n\n.cardpayment {\n}\n\n.cardprogress {\n}\n\n.cardprogress-state {\n width: 80px;\n height: 80px;\n padding: 0;\n cursor: default;\n pointer-events: none;\n border-radius: 100%;\n font-size: 28px;\n}\n\n.cardhighlight {\n border-top: 4px solid $brand-primary;\n}\n\n.cardchat {\n overflow: hidden;\n padding: 0;\n\n .chat {\n height: 400px;\n }\n}\n\n@media screen and (max-width: $screen-md-max) {\n .widget-charts:not([height]),\n .widget-charts-line:not([height]) {\n padding-bottom: 80% !important;\n }\n}\n\n\n@media screen and (max-width: $screen-lg-max) {\n .cardprogress {\n .cardprogress-state {\n width: 60px;\n height: 60px;\n font-size: 24px;\n }\n }\n}\n","/* ==========================================================================\n Chats\n\n========================================================================== */\n.chat {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: $bg-color-secondary;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.chat-content {\n display: flex;\n overflow: auto;\n flex: 1;\n flex-direction: column;\n justify-content: flex-end;\n\n .chat-list {\n position: relative;\n overflow: auto;\n\n ul {\n display: flex;\n flex-direction: column-reverse;\n margin-bottom: $m-spacing-large;\n }\n\n li {\n padding: 15px 30px;\n animation: fadeIn 0.2s;\n background-color: transparent;\n animation-fill-mode: both;\n\n &,\n &:last-child {\n border: 0;\n }\n }\n\n .mx-listview-loadMore {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n display: block;\n width: 50%;\n margin: 15px auto;\n color: #FFFFFF;\n background-color: $brand-primary;\n box-shadow: 0 2px 20px 0 rgba(0, 0, 0, 0.05);\n }\n }\n}\n\n\n.chat-message {\n display: flex;\n}\n\n.chat-avatar {\n margin: 0 20px 0 0;\n border-radius: 50%;\n}\n\n.chat-message-content {\n display: inline-flex;\n flex-direction: column;\n}\n\n.chat-message-balloon {\n position: relative;\n display: flex;\n flex-direction: column;\n padding: 10px 15px;\n border-radius: 5px;\n background-color: $bg-color;\n\n &::after {\n position: absolute;\n top: 10px;\n right: 100%;\n width: 0;\n height: 0;\n content: '';\n border: 10px solid transparent;\n border-top: 0;\n border-right-color: $bg-color;\n border-left: 0;\n }\n}\n\n.chat-message-time {\n padding-top: 2px;\n\n .form-control-static {\n border: 0;\n }\n}\n\n.chat-footer {\n z-index: 1;\n padding: $m-spacing-large;\n background-color: $bg-color;\n box-shadow: 0 2px 20px 0 rgba(0, 0, 0, 0.05);\n}\n\n.chat-input {\n display: flex;\n\n .chat-textbox {\n flex: 1;\n margin-right: $spacing-large;\n margin-bottom: 0;\n\n .form-control {\n border: 0;\n }\n }\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.chat-message-self {\n justify-content: flex-end;\n\n .chat-avatar {\n margin: 0 0 0 20px;\n }\n\n .chat-message-balloon {\n background-color: $color-primary-lighter;\n\n &::after {\n left: 100%;\n border: 10px solid transparent;\n border-top: 0;\n border-right: 0;\n border-left-color: $color-primary-lighter;\n }\n }\n\n .chat-message-time {\n text-align: right;\n }\n}\n","/* ==========================================================================\n Control Group\n \n A group of buttons next to eachother\n========================================================================== */\n.controlgroup {\n .btn,\n .btn-group {\n margin-right: $spacing-small;\n margin-bottom: $spacing-small;\n\n &:last-child {\n margin-right: 0;\n }\n .btn {\n margin-right: 0;\n margin-bottom: 0;\n }\n }\n .btn-group {\n .btn + .btn {\n margin-left: -1px;\n }\n }\n}\n","/* ==========================================================================\n Full page blocks\n\n Blocks that take up the full width and height\n========================================================================== */\n\n.fullpageblock {\n position: relative;\n height: 100%;\n min-height: 100%;\n\n // Helper to make it fullheight\n .fullheight {\n height: 100% !important;\n\n & > .mx-dataview-content {\n height: inherit !important;\n }\n }\n\n .fullpage-overlay {\n position: absolute;\n z-index: 10;\n bottom: 0;\n left: 0;\n width: 100%;\n }\n}\n","/* ==========================================================================\n Pageheader\n========================================================================== */\n\n//== Default\n//-------------------------------------------------------------------------------------------------------------------//\n.pageheader {\n border-bottom: 1px solid $border-color-default;\n background: $header-bg-color;\n}\n\n// Check if it is part of a inner layoutgrid\n.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .pageheader {\n @include get-responsive-spacing-large($type: margin, $direction: bottom);\n @include get-responsive-spacing-large($type: padding, $direction: bottom);\n background: transparent;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.pageheader-type {\n margin: 0;\n}\n\n.pageheader-title {\n margin: 0;\n}\n\n.pageheader-subtitle {\n margin: 0;\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.pageheaderwithcontrols {\n .controlgroup {\n }\n}\n\n.pageheaderwithimage {\n .pageheader-image {\n }\n .figurecontent {\n }\n}\n\n.pageheaderwithimageandcontrols {\n}\n\n.pageheaderwithsearch {\n .pageheader-title {\n margin-bottom: 1em;\n }\n}\n\n.pageheaderwithbreadcrumb {\n .breadcrumb {\n }\n}\n","/* ==========================================================================\n Pageheader\n\n========================================================================== */\n.heroheader {\n border-bottom: 1px solid $border-color-default;\n background: $header-bg-color;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.heroheader-title {\n margin: 0 0 10px 0;\n}\n\n.heroheader-subtitle {\n margin: 0;\n padding: 0 15px;\n\n &::before {\n display: block;\n max-width: 330px;\n height: 1px;\n margin: auto auto 10px auto;\n content: \"\";\n background-color: lighten($border-color-default, 4);\n }\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.heroheader1 {\n background-image: $brand-gradient;\n\n .heroheader-title {\n margin-bottom: 10px;\n color: #FFFFFF;\n }\n\n .heroheader-subtitle {\n padding: 0;\n color: #FFFFFF;\n\n &::before {\n display: none;\n }\n }\n}\n\n.heroheadermap {\n padding: 0 !important;\n}\n\n.heroheadermap-controls {\n padding: $spacing-large;\n background: $header-bg-color;\n}\n\n.heroheaderproduct {\n position: relative;\n overflow: hidden;\n height: 300px;\n background-color: #000000;\n\n .heroheaderproduct-backgroundimage {\n position: absolute;\n z-index: 0;\n top: 0;\n width: 100%;\n opacity: 0.7;\n filter: blur(5px);\n }\n\n .heroheaderproduct-overlay {\n position: absolute;\n z-index: 1;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n}\n\n.heroheaderexpense {\n .heroheaderexpense-title {\n font-size: 72px;\n }\n\n .heroheaderexpense-type {\n align-items: center;\n\n &::before {\n flex-grow: 1;\n height: 1px;\n margin-right: 10px;\n content: \"\";\n background-color: #D2D2D2;\n }\n }\n}\n","/* ==========================================================================\n Form Block\n\n Used in default forms\n========================================================================== */\n.formblock {\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.formblock-title {\n margin-bottom: $gutter-size;\n padding-bottom: $gutter-size;\n border-bottom: 1px solid $border-color-default;\n}\n","/* ==========================================================================\n Master Detail\n\n A list with a listening dataview\n========================================================================== */\n.masterdetail {\n .masterdetail-master {\n .controlgroup {\n margin-bottom: $gutter-size;\n }\n\n @media (max-width: $screen-lg) {\n @include layout-spacing($type: margin, $direction: bottom, $device: responsive);\n }\n\n @media (min-width: $screen-lg) {\n border-right: 1px solid $border-color-default;\n\n .mx-listview-searchbar {\n margin: $gutter-size;\n }\n .controlgroup {\n padding: $gutter-size;\n border-bottom: 1px solid $border-color-default;\n }\n }\n }\n\n .masterdetail-detail {\n @media (min-width: $screen-lg) {\n @include layout-spacing($type: padding, $direction: all, $device: responsive);\n }\n }\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.masterdetailvertical {\n .masterdetail-master {\n @include layout-spacing($type: margin, $direction: bottom, $device: responsive);\n }\n\n .masterdetail-detail {\n @include layout-spacing($type: padding, $direction: top, $device: responsive);\n }\n}\n","/* ==========================================================================\n User profile blocks\n -\n========================================================================== */\n.userprofile {\n .userprofile-img {\n }\n .userprofile-title {\n }\n .userprofile-subtitle {\n }\n}","$wizard-step-number-size: 60px;\n$wizard-step-height: 50px;\n\n.wizard {\n display: flex;\n justify-content: space-between;\n .wizard-step {\n position: relative;\n width: 100%;\n text-align: center;\n &::before {\n position: absolute;\n z-index: -1;\n top: $wizard-step-number-size / 2;\n display: block;\n width: 100%;\n height: 2px;\n content: \"\";\n background-color: $border-color-default;\n }\n .wizard-step-number {\n width: $wizard-step-number-size;\n height: $wizard-step-number-size;\n border-color: $border-color-default;\n border-radius: 50%;\n background-color: #FFFFFF;\n font-size: 20px;\n }\n .wizard-step-text {\n display: block;\n margin-top: 15px;\n }\n }\n\n\n // States\n .wizard-step-active {\n .wizard-step-number {\n color: #FFFFFF;\n border-color: $brand-primary;\n background-color: $brand-primary;\n }\n .wizard-step-text {\n color: $brand-primary;\n }\n }\n .wizard-step-visited {\n .wizard-step-number {\n color: #FFFFFF;\n border-color: $brand-success;\n background-color: $brand-success;\n }\n .wizard-step-text {\n }\n }\n}\n\n.wizardprogress {\n display: flex;\n justify-content: space-between;\n\n .wizard-step-text {\n width: 100%;\n }\n\n .wizard-step {\n position: relative;\n width: 100%;\n height: $wizard-step-height;\n margin-left: 0 - ($wizard-step-height / 2);\n padding-left: ($wizard-step-height / 2);\n border: 1px solid $border-color-default;\n background: #FFFFFF;\n\n a {\n display: block;\n overflow: hidden;\n width: 100%;\n height: 100%;\n padding: 14px;\n white-space: nowrap;\n text-decoration: none;\n text-overflow: ellipsis;\n color: $font-color-default;\n }\n &::before,\n &::after {\n position: absolute;\n z-index: 1;\n left: 100%;\n margin-left: 0 - ($wizard-step-height / 2);\n content: \" \";\n border-style: solid;\n border-color: transparent;\n }\n &::after {\n top: 1px;\n border-width: (($wizard-step-height / 2) - 1);\n border-left-color: #FFFFFF;\n }\n &::before {\n top: 0;\n border-width: $wizard-step-height / 2;\n border-left-color: $border-color-default;\n }\n\n &:first-child {\n margin-left: 0;\n padding-left: 0;\n border-radius: 5px 0 0 5px;\n }\n\n &:last-child {\n border-radius: 0 5px 5px 0;\n &::before,\n &::after {\n display: none;\n }\n }\n }\n // States\n .wizard-step-active {\n background: $brand-primary;\n a {\n text-decoration: none;\n color: #FFFFFF;\n }\n &::after {\n border-left-color: $brand-primary;\n }\n }\n .wizard-step-visited {\n a {\n color: $link-color;\n }\n }\n}\n","// Timeline\n.timeline {\n .timeline-header {\n display: inline-block;\n width: 110px;\n padding: 8px;\n text-align: center;\n border: 1px solid $border-color-default;\n border-radius: 30px;\n }\n}\n.timeline-itemwrapper.mx-listview {\n margin-bottom: 0;\n margin-left: 55px;\n padding: $spacing-large 0;\n border-left: 1px solid $border-color-default;\n & > ul > li {\n position: relative;\n padding-left: ($gutter-size * 2);\n\n &::before {\n position: absolute;\n top: 5px;\n left: -5px;\n display: block;\n width: 10px;\n height: 10px;\n content: '';\n border-radius: 50%;\n background-color: $brand-primary;\n }\n }\n li + li {\n margin-top: $spacing-large;\n }\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.timeline2 {\n .timeline-itemwrapper.mx-listview {\n & > ul > li {\n padding-left: $gutter-size;\n }\n }\n}\n","/* ==========================================================================\n Atlas layout\n \n The core stucture of all atlas layouts\n========================================================================== */\n.layout-atlas {\n // Toggle button\n .toggle-btn > .glyphicon {\n margin: 0;\n }\n\n // Sidebar\n .region-sidebar {\n background-color: $navsidebar-bg;\n\n .mx-navigationtree .navbar-inner > ul > li > a {\n padding: 0 15px;\n\n .glyphicon {\n margin-right: 10px;\n }\n }\n .toggle-btn {\n border-color: transparent;\n border-radius: 0;\n background: transparent;\n }\n }\n\n // Topbar\n .region-topbar {\n position: relative;\n z-index: 1; // Show dropshadow\n min-height: $topbar-minimalheight;\n border-bottom: 1px solid $navtopbar-border-color;\n background-color: $navtopbar-bg;\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14);\n\n &::before {\n z-index: 1;\n display: block;\n width: 100%;\n height: 4px;\n content: \"\";\n background-color: $brand-primary;\n }\n // Topbar Content\n .topbar-content {\n display: flex;\n align-items: center;\n min-height: $topbar-minimalheight;\n }\n\n // Toggle btn\n .toggle-btn {\n margin-right: 15px;\n padding: 5px;\n }\n\n // For your company, product, or project name\n .navbar-brand {\n display: inline-block;\n // reset bootstrap\n float: none;\n height: auto;\n padding: 0;\n line-height: inherit;\n\n img {\n display: inline-block;\n @if $brand-logo !=false {\n width: 0;\n height: 0;\n padding: ($brand-logo-height / 2) ($brand-logo-width / 2);\n background-image: url($brand-logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: $brand-logo-width;\n } @else {\n width: auto;\n height: $brand-logo-height;\n }\n }\n\n a {\n margin-left: 5px;\n color: $navbar-brand-name;\n font-size: 20px;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n }\n }\n\n .mx-navbar {\n display: inline-block;\n margin-left: $gutter-size;\n vertical-align: middle;\n background: transparent;\n\n & > .mx-navbar-item {\n & > a {\n margin-top: 5px;\n padding: 0 20px;\n }\n }\n }\n }\n}\n","/* ==========================================================================\n Atlas layout\n \n Extra styling for phone layouts\n========================================================================== */\n.layout-atlas-phone {\n .region-topbar {\n min-height: $m-header-height;\n border-style: none;\n background-color: $m-header-bg;\n\n &::before {\n display: none;\n }\n }\n}\n","/* ==========================================================================\n Atlas layout\n\n Extra styling for responsive layouts\n========================================================================== */\n.layout-atlas-responsive-default {\n $sidebar-width: 60px;\n\n @media (min-width: $screen-md) {\n .mx-scrollcontainer:not(.mx-scrollcontainer-open) > .region-sidebar {\n width: $sidebar-width !important;\n\n .mx-scrollcontainer-wrapper > .mx-navigationtree ul li {\n &.mx-navigationtree-has-items:hover {\n a {\n background-color: $navsidebar-sub-bg;\n }\n\n ul {\n position: absolute;\n z-index: 100;\n top: 0;\n bottom: 0;\n left: $sidebar-width;\n display: block;\n overflow-y: auto;\n min-width: 200px;\n padding-top: 10px;\n }\n }\n\n &.mx-navigationtree-collapsed,\n &.mx-navigationtree-has-items {\n ul {\n display: none;\n }\n }\n }\n }\n }\n\n\n .mx-scrollcontainer-slide {\n\n &.mx-scrollcontainer-open > .region-sidebar {\n width: $sidebar-width !important;\n }\n }\n\n // Push aside for mobile\n @media (max-width: $screen-sm-max) {\n .mx-scrollcontainer-open:not(.mx-scrollcontainer-slide) {\n width: 1100px;\n }\n\n .mx-scrollcontainer-slide .toggle-btn {\n display: inline-block !important;\n }\n }\n\n // Sidebar\n .region-sidebar {\n .toggle-btn {\n width: $sidebar-width;\n height: 60px;\n border-color: transparent;\n border-radius: 0;\n background: transparent;\n }\n\n .mx-scrollcontainer-wrapper > .mx-navigationtree {\n .navbar-inner > ul > li {\n & > a {\n height: $sidebar-width;\n // Glyph icon\n .glyphicon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n margin-left: -5px;\n padding: 10px;\n border-radius: 3px;\n }\n\n &.active {\n .glyphicon {\n background: $brand-primary;\n }\n }\n }\n }\n }\n }\n\n // Topbar\n .region-topbar {\n }\n}\n\n// Topbar variant\n.layout-atlas-responsive-topbar {\n .mx-scrollcontainer-slide,\n .mx-scrollcontainer-push {\n &:not(.mx-scrollcontainer-open) > .region-sidebar {\n visibility: hidden;\n }\n }\n}\n\n// All responsive layouts\n.layout-atlas-responsive-default,\n.layout-atlas-responsive-topbar {\n // Topbar\n .region-topbar {\n .toggle-btn {\n display: none;\n\n @media (max-width: $screen-sm-max) {\n display: inline-block;\n }\n }\n }\n\n .mx-scrollcontainer-slide {\n &:not(.mx-scrollcontainer-open) > .region-sidebar {\n overflow: hidden;\n }\n\n &.mx-scrollcontainer-open > .region-sidebar {\n\n & > .mx-scrollcontainer-wrapper {\n position: relative;\n }\n }\n\n .region-sidebar > .mx-scrollcontainer-wrapper {\n z-index: 2;\n background-color: inherit;\n }\n }\n}\n\n// Fix Safari issue of sidebar disappearing\n.profile-tablet {\n .mx-scrollcontainer:not(.mx-scrollcontainer-open) > .region-sidebar {\n overflow-y: hidden;\n\n .mx-scrollcontainer-wrapper {\n overflow: visible;\n }\n }\n}\n","/* ==========================================================================\n Atlas layout\n \n Extra styling for tablet layouts\n========================================================================== */\n.layout-atlas-tablet {\n // tablet\n}\n","@import \"custom-variables\";\n"],"names":[],"mappings":"ACAA;;;;GAIG,AAEH,4DAA4D,AGmBxD,OAAO,CAAC,wEAAI,CC4EZ,OAAO,CAAC,wEAAI,CD5EZ,OAAO,CAAC,wEAAI,CHlBhB,AAAA,IAAI,AAAC,CACD,WAAW,CAAE,UAAU,CACvB,wBAAwB,CAAE,IAAI,CAC9B,oBAAoB,CAAE,IAAI,CAC7B,AACD,AAAA,IAAI,AAAC,CACD,MAAM,CAAE,CAAC,CACZ,AACD,AAAA,OAAO,CACP,KAAK,CACL,OAAO,CACP,UAAU,CACV,MAAM,CACN,MAAM,CACN,MAAM,CACN,MAAM,CACN,IAAI,CACJ,IAAI,CACJ,GAAG,CACH,OAAO,CACP,OAAO,AAAC,CACJ,OAAO,CAAE,KAAK,CACjB,AACD,AAAA,KAAK,CACL,MAAM,CACN,QAAQ,CACR,KAAK,AAAC,CACF,OAAO,CAAE,YAAY,CACrB,cAAc,CAAE,QAAQ,CAC3B,AACD,AAAA,KAAK,AAAA,IAAK,EAAA,AAAA,QAAC,AAAA,EAAW,CAClB,OAAO,CAAE,IAAI,CACb,MAAM,CAAE,CAAC,CACZ,CACD,AAAA,AAAA,MAAC,AAAA,EACD,QAAQ,AAAC,CACL,OAAO,CAAE,IAAI,CAChB,AACD,AAAA,CAAC,AAAC,CACE,gBAAgB,CAAE,WAAW,CAChC,AACD,AAAA,CAAC,AAAA,OAAO,CACR,CAAC,AAAA,MAAM,AAAC,CACJ,OAAO,CAAE,CAAC,CACb,AACD,AAAA,IAAI,CAAA,AAAA,KAAC,AAAA,CAAO,CACR,aAAa,CAAE,UAAU,CAC5B,AACD,AAAA,CAAC,CACD,MAAM,AAAC,CACH,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,GAAG,AAAC,CACA,UAAU,CAAE,MAAM,CACrB,AACD,AAAA,EAAE,AAAC,CACC,MAAM,CAAE,QAAQ,CAChB,SAAS,CAAE,GAAG,CACjB,AACD,AAAA,IAAI,AAAC,CACD,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,KAAK,AAAC,CACF,SAAS,CAAE,GAAG,CACjB,AACD,AAAA,GAAG,CACH,GAAG,AAAC,CACA,QAAQ,CAAE,QAAQ,CAClB,SAAS,CAAE,GAAG,CACd,WAAW,CAAE,CAAC,CACd,cAAc,CAAE,QAAQ,CAC3B,AACD,AAAA,GAAG,AAAC,CACA,GAAG,CAAE,MAAM,CACd,AACD,AAAA,GAAG,AAAC,CACA,MAAM,CAAE,OAAO,CAClB,AACD,AAAA,GAAG,AAAC,CACA,MAAM,CAAE,CAAC,CACZ,AACD,AAAA,GAAG,AAAA,IAAK,CAAA,KAAK,CAAE,CACX,QAAQ,CAAE,MAAM,CACnB,AACD,AAAA,MAAM,AAAC,CACH,MAAM,CAAE,QAAQ,CACnB,AACD,AAAA,EAAE,AAAC,CACC,MAAM,CAAE,CAAC,CACT,kBAAkB,CAAE,WAAW,CAC/B,eAAe,CAAE,WAAW,CAC5B,UAAU,CAAE,WAAW,CAC1B,AACD,AAAA,GAAG,AAAC,CACA,QAAQ,CAAE,IAAI,CACjB,AACD,AAAA,IAAI,CACJ,GAAG,CACH,GAAG,CACH,IAAI,AAAC,CACD,WAAW,CAAE,oBAAoB,CACjC,SAAS,CAAE,GAAG,CACjB,AACD,AAAA,MAAM,CACN,KAAK,CACL,QAAQ,CACR,MAAM,CACN,QAAQ,AAAC,CACL,MAAM,CAAE,CAAC,CACT,IAAI,CAAE,OAAO,CACb,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,MAAM,AAAC,CACH,QAAQ,CAAE,OAAO,CACpB,AACD,AAAA,MAAM,CACN,MAAM,AAAC,CACH,cAAc,CAAE,IAAI,CACvB,AACD,AAAA,MAAM,CACN,IAAI,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,EACX,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EACN,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAe,CACjB,kBAAkB,CAAE,MAAM,CAC1B,MAAM,CAAE,OAAO,CAClB,AAKD,AAAA,MAAM,AAAA,kBAAkB,CACxB,KAAK,AAAA,kBAAkB,AAAC,CACpB,OAAO,CAAE,CAAC,CACV,MAAM,CAAE,CAAC,CACZ,AACD,AAAA,KAAK,AAAC,CACF,WAAW,CAAE,MAAM,CACtB,AACD,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,EACN,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAAc,CAChB,kBAAkB,CAAE,UAAU,CAC9B,eAAe,CAAE,UAAU,CAC3B,UAAU,CAAE,UAAU,CACtB,OAAO,CAAE,CAAC,CACb,AACD,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,2BAA2B,CAC/C,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,2BAA2B,AAAC,CAC5C,MAAM,CAAE,IAAI,CACf,AACD,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAe,CACjB,kBAAkB,CAAE,WAAW,CAC/B,eAAe,CAAE,WAAW,CAC5B,UAAU,CAAE,WAAW,CACvB,kBAAkB,CAAE,SAAS,CAChC,AACD,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,8BAA8B,CAClD,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,2BAA2B,AAAC,CAC5C,kBAAkB,CAAE,IAAI,CAC3B,AACD,AAAA,QAAQ,AAAC,CACL,OAAO,CAAE,qBAAqB,CAC9B,MAAM,CAAE,KAAK,CACb,MAAM,CAAE,iBAAiB,CAC5B,AACD,AAAA,MAAM,AAAC,CACH,OAAO,CAAE,CAAC,CACV,MAAM,CAAE,CAAC,CACZ,AACD,AAAA,QAAQ,AAAC,CACL,QAAQ,CAAE,IAAI,CACjB,AACD,AAAA,QAAQ,AAAC,CACL,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,KAAK,AAAC,CACF,cAAc,CAAE,CAAC,CACjB,eAAe,CAAE,QAAQ,CAC5B,AACD,AAAA,EAAE,CACF,EAAE,AAAC,CACC,OAAO,CAAE,CAAC,CACb,AACD,qFAAqF,AACrF,MAAM,CAAC,KAAK,CACR,AAAA,CAAC,CACD,CAAC,AAAA,OAAO,CACR,CAAC,AAAA,MAAM,AAAC,CACJ,KAAK,CAAE,eAAe,CACtB,WAAW,CAAE,eAAe,CAC5B,UAAU,CAAE,sBAAsB,CAClC,kBAAkB,CAAE,eAAe,CACnC,UAAU,CAAE,eAAe,CAC9B,AACD,AAAA,CAAC,CACD,CAAC,AAAA,QAAQ,AAAC,CACN,eAAe,CAAE,SAAS,CAC7B,AACD,AAAA,CAAC,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,AAAC,CACV,OAAO,CAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAC/B,AACD,AAAA,IAAI,CAAA,AAAA,KAAC,AAAA,CAAM,MAAM,AAAC,CACd,OAAO,CAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAChC,AACD,AAAA,CAAC,CAAA,AAAA,IAAC,EAAM,GAAG,AAAT,CAAU,MAAM,CAClB,CAAC,CAAA,AAAA,IAAC,EAAM,aAAa,AAAnB,CAAoB,MAAM,AAAC,CACzB,OAAO,CAAE,EAAE,CACd,AACD,AAAA,GAAG,CACH,UAAU,AAAC,CACP,MAAM,CAAE,cAAc,CAEtB,iBAAiB,CAAE,KAAK,CAC3B,AACD,AAAA,KAAK,AAAC,CACF,OAAO,CAAE,kBAAkB,CAC9B,AACD,AAAA,EAAE,CACF,GAAG,AAAC,CACA,iBAAiB,CAAE,KAAK,CAC3B,AA7IL,AAAA,GAAG,AA8IK,CACA,SAAS,CAAE,eAAe,CAC7B,AACD,AAAA,CAAC,CACD,EAAE,CACF,EAAE,AAAC,CACC,OAAO,CAAE,CAAC,CACV,MAAM,CAAE,CAAC,CACZ,AACD,AAAA,EAAE,CACF,EAAE,AAAC,CACC,gBAAgB,CAAE,KAAK,CAC1B,AACD,AAAA,MAAM,AAAC,CACH,UAAU,CAAE,eAAe,CAC9B,AACD,AAAA,OAAO,AAAC,CACJ,OAAO,CAAE,IAAI,CAChB,AACD,AAAA,IAAI,CAAG,MAAM,CACb,OAAO,CAAG,IAAI,CAAG,MAAM,AAAC,CACpB,gBAAgB,CAAE,eAAe,CACpC,AACD,AAAA,MAAM,AAAC,CACH,MAAM,CAAE,cAAc,CACzB,AACD,AAAA,MAAM,AAAC,CACH,eAAe,CAAE,mBAAmB,CACvC,AACD,AAAA,MAAM,CAAC,EAAE,CACT,MAAM,CAAC,EAAE,AAAC,CACN,gBAAgB,CAAE,eAAe,CACpC,AACD,AAAA,eAAe,CAAC,EAAE,CAClB,eAAe,CAAC,EAAE,AAAC,CACf,MAAM,CAAE,yBAAyB,CACpC,CAEL,UAAU,CACN,WAAW,CAAE,sBAAsB,CACnC,GAAG,CAAE,iDAAiD,CAAC,eAAe,CAClE,gDAAgD,CAAC,cAAc,CAEvE,AAAA,UAAU,AAAC,CACP,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,GAAG,CACR,OAAO,CAAE,YAAY,CACrB,WAAW,CAAE,sBAAsB,CACnC,UAAU,CAAE,MAAM,CAClB,WAAW,CAAE,MAAM,CACnB,WAAW,CAAE,CAAC,CAEd,sBAAsB,CAAE,WAAW,CACnC,uBAAuB,CAAE,SAAS,CACrC,AACD,AAAA,mBAAmB,AAAA,OAAO,AAAC,CACvB,OAAO,CAAE,KAAK,CACjB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,KAAK,CACjB,AACD,AAAA,eAAe,AAAA,OAAO,CACtB,cAAc,AAAA,OAAO,AAAC,CAClB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,mBAAmB,AAAA,OAAO,AAAC,CACvB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,mBAAmB,AAAA,OAAO,AAAC,CACvB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,aAAa,AAAA,OAAO,AAAC,CACjB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,kBAAkB,AAAA,OAAO,AAAC,CACtB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,aAAa,AAAA,OAAO,AAAC,CACjB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,kBAAkB,AAAA,OAAO,AAAC,CACtB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,mBAAmB,AAAA,OAAO,AAAC,CACvB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,cAAc,AAAA,OAAO,AAAC,CAClB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,cAAc,AAAA,OAAO,AAAC,CAClB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,uBAAuB,AAAA,OAAO,AAAC,CAC3B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,mBAAmB,AAAA,OAAO,AAAC,CACvB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,sBAAsB,AAAA,OAAO,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,kBAAkB,AAAA,OAAO,AAAC,CACtB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,mBAAmB,AAAA,OAAO,AAAC,CACvB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,sBAAsB,AAAA,OAAO,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,kBAAkB,AAAA,OAAO,AAAC,CACtB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,cAAc,AAAA,OAAO,AAAC,CAClB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,mBAAmB,AAAA,OAAO,AAAC,CACvB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,sBAAsB,AAAA,OAAO,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,uBAAuB,AAAA,OAAO,AAAC,CAC3B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,sBAAsB,AAAA,OAAO,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,wBAAwB,AAAA,OAAO,AAAC,CAC5B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,sBAAsB,AAAA,OAAO,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,uBAAuB,AAAA,OAAO,AAAC,CAC3B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,yBAAyB,AAAA,OAAO,AAAC,CAC7B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,kBAAkB,AAAA,OAAO,AAAC,CACtB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,wBAAwB,AAAA,OAAO,AAAC,CAC5B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,wBAAwB,AAAA,OAAO,AAAC,CAC5B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,mBAAmB,AAAA,OAAO,AAAC,CACvB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,kBAAkB,AAAA,OAAO,AAAC,CACtB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,uBAAuB,AAAA,OAAO,AAAC,CAC3B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,uBAAuB,AAAA,OAAO,AAAC,CAC3B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,uBAAuB,AAAA,OAAO,AAAC,CAC3B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,wBAAwB,AAAA,OAAO,AAAC,CAC5B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,sBAAsB,AAAA,OAAO,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,kBAAkB,AAAA,OAAO,AAAC,CACtB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,wBAAwB,AAAA,OAAO,AAAC,CAC5B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,wBAAwB,AAAA,OAAO,AAAC,CAC5B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,sBAAsB,AAAA,OAAO,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,mBAAmB,AAAA,OAAO,AAAC,CACvB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,sBAAsB,AAAA,OAAO,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,uBAAuB,AAAA,OAAO,AAAC,CAC3B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,2BAA2B,AAAA,OAAO,AAAC,CAC/B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,mBAAmB,AAAA,OAAO,AAAC,CACvB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,uBAAuB,AAAA,OAAO,AAAC,CAC3B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,mBAAmB,AAAA,OAAO,AAAC,CACvB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,kBAAkB,AAAA,OAAO,AAAC,CACtB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,uBAAuB,AAAA,OAAO,AAAC,CAC3B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,kBAAkB,AAAA,OAAO,AAAC,CACtB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,wBAAwB,AAAA,OAAO,AAAC,CAC5B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,uBAAuB,AAAA,OAAO,AAAC,CAC3B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,sBAAsB,AAAA,OAAO,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,0BAA0B,AAAA,OAAO,AAAC,CAC9B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,4BAA4B,AAAA,OAAO,AAAC,CAChC,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,cAAc,AAAA,OAAO,AAAC,CAClB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,mBAAmB,AAAA,OAAO,AAAC,CACvB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,sBAAsB,AAAA,OAAO,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,sBAAsB,AAAA,OAAO,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,kBAAkB,AAAA,OAAO,AAAC,CACtB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,6BAA6B,AAAA,OAAO,AAAC,CACjC,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,4BAA4B,AAAA,OAAO,AAAC,CAChC,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,0BAA0B,AAAA,OAAO,AAAC,CAC9B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,4BAA4B,AAAA,OAAO,AAAC,CAChC,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,sBAAsB,AAAA,OAAO,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,kBAAkB,AAAA,OAAO,AAAC,CACtB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,cAAc,AAAA,OAAO,AAAC,CAClB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,cAAc,AAAA,OAAO,AAAC,CAClB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,2BAA2B,AAAA,OAAO,AAAC,CAC/B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,+BAA+B,AAAA,OAAO,AAAC,CACnC,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,wBAAwB,AAAA,OAAO,AAAC,CAC5B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,4BAA4B,AAAA,OAAO,AAAC,CAChC,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,6BAA6B,AAAA,OAAO,AAAC,CACjC,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iCAAiC,AAAA,OAAO,AAAC,CACrC,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,wBAAwB,AAAA,OAAO,AAAC,CAC5B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,sBAAsB,AAAA,OAAO,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,kBAAkB,AAAA,OAAO,AAAC,CACtB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,sBAAsB,AAAA,OAAO,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,uBAAuB,AAAA,OAAO,AAAC,CAC3B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,wBAAwB,AAAA,OAAO,AAAC,CAC5B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,sBAAsB,AAAA,OAAO,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,sBAAsB,AAAA,OAAO,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,sBAAsB,AAAA,OAAO,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,mBAAmB,AAAA,OAAO,AAAC,CACvB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,kBAAkB,AAAA,OAAO,AAAC,CACtB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,mBAAmB,AAAA,OAAO,AAAC,CACvB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,mBAAmB,AAAA,OAAO,AAAC,CACvB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,mBAAmB,AAAA,OAAO,AAAC,CACvB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,uBAAuB,AAAA,OAAO,AAAC,CAC3B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,sBAAsB,AAAA,OAAO,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,yBAAyB,AAAA,OAAO,AAAC,CAC7B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,4BAA4B,AAAA,OAAO,AAAC,CAChC,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,yBAAyB,AAAA,OAAO,AAAC,CAC7B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,uBAAuB,AAAA,OAAO,AAAC,CAC3B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,uBAAuB,AAAA,OAAO,AAAC,CAC3B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,yBAAyB,AAAA,OAAO,AAAC,CAC7B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,aAAa,AAAA,OAAO,AAAC,CACjB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,mBAAmB,AAAA,OAAO,AAAC,CACvB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,uBAAuB,AAAA,OAAO,AAAC,CAC3B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,cAAc,AAAA,OAAO,AAAC,CAClB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,eAAe,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,mBAAmB,AAAA,OAAO,AAAC,CACvB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,kBAAkB,AAAA,OAAO,AAAC,CACtB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,cAAc,AAAA,OAAO,AAAC,CAClB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,cAAc,AAAA,OAAO,AAAC,CAClB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,cAAc,AAAA,OAAO,AAAC,CAClB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,cAAc,AAAA,OAAO,AAAC,CAClB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,cAAc,AAAA,OAAO,AAAC,CAClB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,2BAA2B,AAAA,OAAO,AAAC,CAC/B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,4BAA4B,AAAA,OAAO,AAAC,CAChC,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,0BAA0B,AAAA,OAAO,AAAC,CAC9B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,yBAAyB,AAAA,OAAO,AAAC,CAC7B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,uBAAuB,AAAA,OAAO,AAAC,CAC3B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,cAAc,AAAA,OAAO,AAAC,CAClB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gBAAgB,AAAA,OAAO,AAAC,CACpB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,0BAA0B,AAAA,OAAO,AAAC,CAC9B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,2BAA2B,AAAA,OAAO,AAAC,CAC/B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,8BAA8B,AAAA,OAAO,AAAC,CAClC,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,kCAAkC,AAAA,OAAO,AAAC,CACtC,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,4BAA4B,AAAA,OAAO,AAAC,CAChC,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,gCAAgC,AAAA,OAAO,AAAC,CACpC,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,6BAA6B,AAAA,OAAO,AAAC,CACjC,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,yBAAyB,AAAA,OAAO,AAAC,CAC7B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,wBAAwB,AAAA,OAAO,AAAC,CAC5B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,0BAA0B,AAAA,OAAO,AAAC,CAC9B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,uBAAuB,AAAA,OAAO,AAAC,CAC3B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,kBAAkB,AAAA,OAAO,AAAC,CACtB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,sBAAsB,AAAA,OAAO,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,qBAAqB,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAA,OAAO,AAAC,CACxB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,kBAAkB,AAAA,OAAO,AAAC,CACtB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,CAAC,AAAC,CACE,kBAAkB,CAAE,UAAU,CAC9B,eAAe,CAAE,UAAU,CAC3B,UAAU,CAAE,UAAU,CACzB,AACD,AAAA,CAAC,AAAA,OAAO,CACR,CAAC,AAAA,MAAM,AAAC,CACJ,kBAAkB,CAAE,UAAU,CAC9B,eAAe,CAAE,UAAU,CAC3B,UAAU,CAAE,UAAU,CACzB,AAjjCD,AAAA,IAAI,AAkjCC,CACD,SAAS,CAAE,IAAI,CAEf,2BAA2B,CAAE,aAAgB,CAChD,AAjjCD,AAAA,IAAI,AAkjCC,CACD,WAAW,CAAE,8CAA8C,CAC3D,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,UAAU,CACvB,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,KAAK,CACL,MAAM,CACN,MAAM,CACN,QAAQ,AAAC,CACL,WAAW,CAAE,OAAO,CACpB,SAAS,CAAE,OAAO,CAClB,WAAW,CAAE,OAAO,CACvB,AA/hCD,AAAA,CAAC,AAgiCC,CACE,KAAK,CAAE,OAAO,CACd,eAAe,CAAE,IAAI,CACxB,AACD,AAAA,CAAC,AAAA,MAAM,CACP,CAAC,AAAA,MAAM,AAAC,CACJ,KAAK,CAAE,OAAO,CACd,eAAe,CAAE,SAAS,CAC7B,AACD,AAAA,CAAC,AAAA,MAAM,AAAC,CACJ,OAAO,CAAE,WAAW,CACpB,OAAO,CAAE,iCAAiC,CAC1C,cAAc,CAAE,IAAI,CACvB,AA9/BD,AAAA,MAAM,AA+/BC,CACH,MAAM,CAAE,CAAC,CACZ,AAvgCD,AAAA,GAAG,AAwgCC,CACA,cAAc,CAAE,MAAM,CACzB,AACD,AAAA,eAAe,CACf,UAAU,CAAG,GAAG,CAChB,UAAU,CAAC,CAAC,CAAG,GAAG,CAClB,eAAe,CAAG,KAAK,CAAG,GAAG,CAC7B,eAAe,CAAG,KAAK,CAAG,CAAC,CAAG,GAAG,AAAC,CAC9B,OAAO,CAAE,KAAK,CACd,SAAS,CAAE,IAAI,CACf,MAAM,CAAE,IAAI,CACf,AACD,AAAA,YAAY,AAAC,CACT,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,cAAc,AAAC,CACX,OAAO,CAAE,YAAY,CACrB,SAAS,CAAE,IAAI,CACf,MAAM,CAAE,IAAI,CACZ,OAAO,CAAE,GAAG,CACZ,WAAW,CAAE,UAAU,CACvB,gBAAgB,CAAE,IAAI,CACtB,MAAM,CAAE,cAAc,CACtB,aAAa,CAAE,GAAG,CAClB,kBAAkB,CAAE,oBAAoB,CACxC,aAAa,CAAE,oBAAoB,CACnC,UAAU,CAAE,oBAAoB,CACnC,AACD,AAAA,WAAW,AAAC,CACR,aAAa,CAAE,GAAG,CACrB,AA7hCD,AAAA,EAAE,AA8hCC,CACC,UAAU,CAAE,IAAI,CAChB,aAAa,CAAE,IAAI,CACnB,MAAM,CAAE,CAAC,CACT,UAAU,CAAE,cAAc,CAC7B,AACD,AAAA,QAAQ,AAAC,CACL,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,GAAG,CACV,MAAM,CAAE,GAAG,CACX,OAAO,CAAE,CAAC,CACV,MAAM,CAAE,IAAI,CACZ,QAAQ,CAAE,MAAM,CAChB,IAAI,CAAE,gBAAgB,CACtB,MAAM,CAAE,CAAC,CACZ,AACD,AAAA,kBAAkB,AAAA,OAAO,CACzB,kBAAkB,AAAA,MAAM,AAAC,CACrB,QAAQ,CAAE,MAAM,CAChB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,MAAM,CAAE,CAAC,CACT,QAAQ,CAAE,OAAO,CACjB,IAAI,CAAE,IAAI,CACb,CACD,AAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAe,CACZ,MAAM,CAAE,OAAO,CAClB,AACD,AAAA,EAAE,CACF,EAAE,CACF,EAAE,CACF,EAAE,CACF,EAAE,CACF,EAAE,CACF,GAAG,CACH,GAAG,CACH,GAAG,CACH,GAAG,CACH,GAAG,CACH,GAAG,AAAC,CACA,WAAW,CAAE,OAAO,CACpB,WAAW,CAAE,GAAG,CAChB,WAAW,CAAE,GAAG,CAChB,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,EAAE,CAAC,KAAK,CACR,EAAE,CAAC,KAAK,CACR,EAAE,CAAC,KAAK,CACR,EAAE,CAAC,KAAK,CACR,EAAE,CAAC,KAAK,CACR,EAAE,CAAC,KAAK,CACR,GAAG,CAAC,KAAK,CACT,GAAG,CAAC,KAAK,CACT,GAAG,CAAC,KAAK,CACT,GAAG,CAAC,KAAK,CACT,GAAG,CAAC,KAAK,CACT,GAAG,CAAC,KAAK,CACT,EAAE,CAAC,MAAM,CACT,EAAE,CAAC,MAAM,CACT,EAAE,CAAC,MAAM,CACT,EAAE,CAAC,MAAM,CACT,EAAE,CAAC,MAAM,CACT,EAAE,CAAC,MAAM,CACT,GAAG,CAAC,MAAM,CACV,GAAG,CAAC,MAAM,CACV,GAAG,CAAC,MAAM,CACV,GAAG,CAAC,MAAM,CACV,GAAG,CAAC,MAAM,CACV,GAAG,CAAC,MAAM,AAAC,CACP,WAAW,CAAE,MAAM,CACnB,WAAW,CAAE,CAAC,CACd,KAAK,CAAE,IAAI,CACd,AACD,AAAA,EAAE,CACF,GAAG,CACH,EAAE,CACF,GAAG,CACH,EAAE,CACF,GAAG,AAAC,CACA,UAAU,CAAE,IAAI,CAChB,aAAa,CAAE,IAAI,CACtB,AACD,AAAA,EAAE,CAAC,KAAK,CACR,GAAG,CAAC,KAAK,CACT,EAAE,CAAC,KAAK,CACR,GAAG,CAAC,KAAK,CACT,EAAE,CAAC,KAAK,CACR,GAAG,CAAC,KAAK,CACT,EAAE,CAAC,MAAM,CACT,GAAG,CAAC,MAAM,CACV,EAAE,CAAC,MAAM,CACT,GAAG,CAAC,MAAM,CACV,EAAE,CAAC,MAAM,CACT,GAAG,CAAC,MAAM,AAAC,CACP,SAAS,CAAE,GAAG,CACjB,AACD,AAAA,EAAE,CACF,GAAG,CACH,EAAE,CACF,GAAG,CACH,EAAE,CACF,GAAG,AAAC,CACA,UAAU,CAAE,IAAI,CAChB,aAAa,CAAE,IAAI,CACtB,AACD,AAAA,EAAE,CAAC,KAAK,CACR,GAAG,CAAC,KAAK,CACT,EAAE,CAAC,KAAK,CACR,GAAG,CAAC,KAAK,CACT,EAAE,CAAC,KAAK,CACR,GAAG,CAAC,KAAK,CACT,EAAE,CAAC,MAAM,CACT,GAAG,CAAC,MAAM,CACV,EAAE,CAAC,MAAM,CACT,GAAG,CAAC,MAAM,CACV,EAAE,CAAC,MAAM,CACT,GAAG,CAAC,MAAM,AAAC,CACP,SAAS,CAAE,GAAG,CACjB,AACD,AAAA,EAAE,CACF,GAAG,AAAC,CACA,SAAS,CAAE,IAAI,CAClB,AACD,AAAA,EAAE,CACF,GAAG,AAAC,CACA,SAAS,CAAE,IAAI,CAClB,AACD,AAAA,EAAE,CACF,GAAG,AAAC,CACA,SAAS,CAAE,IAAI,CAClB,AACD,AAAA,EAAE,CACF,GAAG,AAAC,CACA,SAAS,CAAE,IAAI,CAClB,AACD,AAAA,EAAE,CACF,GAAG,AAAC,CACA,SAAS,CAAE,IAAI,CAClB,AACD,AAAA,EAAE,CACF,GAAG,AAAC,CACA,SAAS,CAAE,IAAI,CAClB,AACD,AAAA,CAAC,AAAC,CACE,MAAM,CAAE,QAAQ,CACnB,AACD,AAAA,KAAK,AAAC,CACF,aAAa,CAAE,IAAI,CACnB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,GAAG,CAChB,WAAW,CAAE,GAAG,CACnB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EANxB,AAAA,KAAK,AAOK,CACF,SAAS,CAAE,IAAI,CAClB,CAEL,AAAA,KAAK,CACL,MAAM,AAAC,CACH,SAAS,CAAE,GAAG,CACjB,AACD,AAAA,IAAI,CACJ,KAAK,AAAC,CACF,OAAO,CAAE,KAAK,CACd,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,UAAU,AAAC,CACP,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,WAAW,AAAC,CACR,UAAU,CAAE,KAAK,CACpB,AACD,AAAA,YAAY,AAAC,CACT,UAAU,CAAE,MAAM,CACrB,AACD,AAAA,aAAa,AAAC,CACV,UAAU,CAAE,OAAO,CACtB,AACD,AAAA,YAAY,AAAC,CACT,WAAW,CAAE,MAAM,CACtB,AACD,AAAA,eAAe,AAAC,CACZ,cAAc,CAAE,SAAS,CAC5B,AACD,AAAA,eAAe,AAAC,CACZ,cAAc,CAAE,SAAS,CAC5B,AACD,AAAA,gBAAgB,AAAC,CACb,cAAc,CAAE,UAAU,CAC7B,AACD,AAAA,WAAW,AAAC,CACR,KAAK,CAAE,IAAI,CACd,AACD,AAAA,aAAa,AAAC,CACV,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,CAAC,AAAA,aAAa,AAAA,MAAM,AAAC,CACjB,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,aAAa,AAAC,CACV,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,CAAC,AAAA,aAAa,AAAA,MAAM,AAAC,CACjB,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,UAAU,AAAC,CACP,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,CAAC,AAAA,UAAU,AAAA,MAAM,AAAC,CACd,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,aAAa,AAAC,CACV,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,CAAC,AAAA,aAAa,AAAA,MAAM,AAAC,CACjB,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,YAAY,AAAC,CACT,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,CAAC,AAAA,YAAY,AAAA,MAAM,AAAC,CAChB,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,WAAW,AAAC,CACR,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,CAAC,AAAA,WAAW,AAAA,MAAM,AAAC,CACf,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,WAAW,AAAC,CACR,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,CAAC,AAAA,WAAW,AAAA,MAAM,AAAC,CACf,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,QAAQ,AAAC,CACL,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,CAAC,AAAA,QAAQ,AAAA,MAAM,AAAC,CACZ,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,WAAW,AAAC,CACR,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,CAAC,AAAA,WAAW,AAAA,MAAM,AAAC,CACf,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,UAAU,AAAC,CACP,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,CAAC,AAAA,UAAU,AAAA,MAAM,AAAC,CACd,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,YAAY,AAAC,CACT,cAAc,CAAE,GAAG,CACnB,MAAM,CAAE,WAAW,CACnB,aAAa,CAAE,cAAc,CAChC,AACD,AAAA,EAAE,CACF,EAAE,AAAC,CACC,UAAU,CAAE,CAAC,CACb,aAAa,CAAE,IAAI,CACtB,AACD,AAAA,EAAE,CAAC,EAAE,CACL,EAAE,CAAC,EAAE,CACL,EAAE,CAAC,EAAE,CACL,EAAE,CAAC,EAAE,AAAC,CACF,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,cAAc,AAAC,CACX,YAAY,CAAE,CAAC,CACf,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,YAAY,AAAC,CACT,YAAY,CAAE,CAAC,CACf,WAAW,CAAE,IAAI,CACjB,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,YAAY,CAAG,EAAE,AAAC,CACd,OAAO,CAAE,YAAY,CACrB,aAAa,CAAE,GAAG,CAClB,YAAY,CAAE,GAAG,CACpB,AACD,AAAA,EAAE,AAAC,CACC,UAAU,CAAE,CAAC,CACb,aAAa,CAAE,IAAI,CACtB,AACD,AAAA,EAAE,CACF,EAAE,AAAC,CACC,WAAW,CAAE,UAAU,CAC1B,AACD,AAAA,EAAE,AAAC,CACC,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,EAAE,AAAC,CACC,WAAW,CAAE,CAAC,CACjB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,cAAc,CAAC,EAAE,AAAC,CACd,KAAK,CAAE,IAAI,CACX,KAAK,CAAE,KAAK,CACZ,QAAQ,CAAE,MAAM,CAChB,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,KAAK,CACjB,aAAa,CAAE,QAAQ,CACvB,WAAW,CAAE,MAAM,CACtB,AACD,AAAA,cAAc,CAAC,EAAE,AAAC,CACd,WAAW,CAAE,KAAK,CACrB,CAEL,AAAA,IAAI,CAAA,AAAA,KAAC,AAAA,EACL,IAAI,CAAA,AAAA,mBAAC,AAAA,CAAqB,CACtB,MAAM,CAAE,IAAI,CACZ,aAAa,CAAE,eAAe,CACjC,AACD,AAAA,WAAW,AAAC,CACR,SAAS,CAAE,GAAG,CACd,cAAc,CAAE,SAAS,CAC5B,AACD,AAAA,UAAU,AAAC,CACP,OAAO,CAAE,SAAS,CAClB,MAAM,CAAE,QAAQ,CAChB,SAAS,CAAE,MAAM,CACjB,WAAW,CAAE,cAAc,CAC9B,AACD,AAAA,UAAU,CAAC,CAAC,AAAA,WAAW,CACvB,UAAU,CAAC,EAAE,AAAA,WAAW,CACxB,UAAU,CAAC,EAAE,AAAA,WAAW,AAAC,CACrB,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,UAAU,CAAC,MAAM,CACjB,UAAU,CAAC,KAAK,CAChB,UAAU,CAAC,MAAM,AAAC,CACd,OAAO,CAAE,KAAK,CACd,SAAS,CAAE,GAAG,CACd,WAAW,CAAE,UAAU,CACvB,KAAK,CAAE,IAAI,CACd,AACD,AAAA,UAAU,CAAC,MAAM,AAAA,OAAO,CACxB,UAAU,CAAC,KAAK,AAAA,OAAO,CACvB,UAAU,CAAC,MAAM,AAAA,OAAO,AAAC,CACrB,OAAO,CAAE,aAAa,CACzB,AACD,AAAA,mBAAmB,CACnB,UAAU,AAAA,WAAW,AAAC,CAClB,aAAa,CAAE,IAAI,CACnB,YAAY,CAAE,CAAC,CACf,UAAU,CAAE,KAAK,CACjB,YAAY,CAAE,cAAc,CAC5B,WAAW,CAAE,CAAC,CACjB,AACD,AAAA,mBAAmB,CAAC,MAAM,AAAA,OAAO,CACjC,UAAU,AAAA,WAAW,CAAC,MAAM,AAAA,OAAO,CACnC,mBAAmB,CAAC,KAAK,AAAA,OAAO,CAChC,UAAU,AAAA,WAAW,CAAC,KAAK,AAAA,OAAO,CAClC,mBAAmB,CAAC,MAAM,AAAA,OAAO,CACjC,UAAU,AAAA,WAAW,CAAC,MAAM,AAAA,OAAO,AAAC,CAChC,OAAO,CAAE,EAAE,CACd,AACD,AAAA,mBAAmB,CAAC,MAAM,AAAA,MAAM,CAChC,UAAU,AAAA,WAAW,CAAC,MAAM,AAAA,MAAM,CAClC,mBAAmB,CAAC,KAAK,AAAA,MAAM,CAC/B,UAAU,AAAA,WAAW,CAAC,KAAK,AAAA,MAAM,CACjC,mBAAmB,CAAC,MAAM,AAAA,MAAM,CAChC,UAAU,AAAA,WAAW,CAAC,MAAM,AAAA,MAAM,AAAC,CAC/B,OAAO,CAAE,aAAa,CACzB,AACD,AAAA,OAAO,AAAC,CACJ,aAAa,CAAE,IAAI,CACnB,UAAU,CAAE,MAAM,CAClB,WAAW,CAAE,UAAU,CAC1B,AA14CD,AAAA,IAAI,CACJ,GAAG,CACH,GAAG,CACH,IAAI,AA24CC,CACD,WAAW,CAAE,iDAAiD,CACjE,AACD,AAAA,IAAI,AAAC,CACD,OAAO,CAAE,OAAO,CAChB,SAAS,CAAE,GAAG,CACd,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CACzB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,GAAG,AAAC,CACA,OAAO,CAAE,OAAO,CAChB,SAAS,CAAE,GAAG,CACd,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,IAAI,CACtB,aAAa,CAAE,GAAG,CAClB,kBAAkB,CAAE,KAAK,CAAC,CAAC,CAAE,IAAG,CAAC,CAAC,CAAC,gBAAmB,CACtD,UAAU,CAAE,KAAK,CAAC,CAAC,CAAE,IAAG,CAAC,CAAC,CAAC,gBAAmB,CACjD,AACD,AAAA,GAAG,CAAC,GAAG,AAAC,CACJ,OAAO,CAAE,CAAC,CACV,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,IAAI,CACjB,kBAAkB,CAAE,IAAI,CACxB,UAAU,CAAE,IAAI,CACnB,AA16CD,AAAA,GAAG,AA26CC,CACA,OAAO,CAAE,KAAK,CACd,OAAO,CAAE,KAAK,CACd,MAAM,CAAE,QAAQ,CAChB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,UAAU,CACvB,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,SAAS,CACrB,SAAS,CAAE,UAAU,CACrB,gBAAgB,CAAE,OAAO,CACzB,MAAM,CAAE,cAAc,CACtB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,GAAG,CAAC,IAAI,AAAC,CACL,OAAO,CAAE,CAAC,CACV,SAAS,CAAE,OAAO,CAClB,KAAK,CAAE,OAAO,CACd,WAAW,CAAE,QAAQ,CACrB,gBAAgB,CAAE,WAAW,CAC7B,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,eAAe,AAAC,CACZ,UAAU,CAAE,KAAK,CACjB,UAAU,CAAE,MAAM,CACrB,AACD,AAAA,UAAU,AAAC,CACP,aAAa,CAAE,IAAI,CACnB,YAAY,CAAE,IAAI,CAClB,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,IAAI,CACpB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EANxB,AAAA,UAAU,AAOK,CACP,KAAK,CAAE,KAAK,CACf,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,EAXxB,AAAA,UAAU,AAYK,CACP,KAAK,CAAE,KAAK,CACf,CAEL,MAAM,EAAE,SAAS,EAAE,MAAM,EAhBzB,AAAA,UAAU,AAiBK,CACP,KAAK,CAAE,MAAM,CAChB,CAEL,AAAA,gBAAgB,AAAC,CACb,aAAa,CAAE,IAAI,CACnB,YAAY,CAAE,IAAI,CAClB,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,IAAI,AAAC,CACD,YAAY,CAAE,KAAK,CACnB,WAAW,CAAE,KAAK,CACrB,AAj5CD,AAAA,KAAK,AAymEC,CACF,gBAAgB,CAAE,WAAW,CAChC,AACD,AAAA,OAAO,AAAC,CACJ,WAAW,CAAE,GAAG,CAChB,cAAc,CAAE,GAAG,CACnB,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,EAAE,AAAC,CACC,UAAU,CAAE,IAAI,CACnB,AA5iEG,AAAA,MAAM,AA6iEH,CACH,KAAK,CAAE,IAAI,CACX,SAAS,CAAE,IAAI,CACf,aAAa,CAAE,IAAI,CACtB,AACD,AAAA,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CACxB,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CACxB,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CACxB,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CACxB,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CACxB,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAC,CACrB,OAAO,CAAE,GAAG,CACZ,WAAW,CAAE,UAAU,CACvB,cAAc,CAAE,GAAG,CACnB,UAAU,CAAE,cAAc,CAC7B,AACD,AAAA,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAC,CACrB,cAAc,CAAE,MAAM,CACtB,aAAa,CAAE,cAAc,CAChC,AACD,AAAA,MAAM,CAAG,OAAO,CAAG,KAAK,CAAG,EAAE,AAAA,YAAY,CAAG,EAAE,CAC9C,MAAM,CAAG,QAAQ,CAAG,KAAK,CAAG,EAAE,AAAA,YAAY,CAAG,EAAE,CAC/C,MAAM,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAG,EAAE,CAChD,MAAM,CAAG,OAAO,CAAG,KAAK,CAAG,EAAE,AAAA,YAAY,CAAG,EAAE,CAC9C,MAAM,CAAG,QAAQ,CAAG,KAAK,CAAG,EAAE,AAAA,YAAY,CAAG,EAAE,CAC/C,MAAM,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAG,EAAE,AAAC,CAC7C,UAAU,CAAE,CAAC,CAChB,AACD,AAAA,MAAM,CAAG,KAAK,CAAG,KAAK,AAAC,CACnB,UAAU,CAAE,cAAc,CAC7B,AACD,AAAA,MAAM,CAAC,MAAM,AAAC,CACV,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,gBAAgB,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CAClC,gBAAgB,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CAClC,gBAAgB,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CAClC,gBAAgB,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CAClC,gBAAgB,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CAClC,gBAAgB,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAC,CAC/B,OAAO,CAAE,GAAG,CACf,AACD,AAAA,eAAe,AAAC,CACZ,MAAM,CAAE,cAAc,CACzB,AACD,AAAA,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CACjC,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CACjC,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CACjC,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CACjC,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CACjC,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAC,CAC9B,MAAM,CAAE,cAAc,CACzB,AACD,AAAA,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CACjC,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAC,CAC9B,mBAAmB,CAAE,GAAG,CAC3B,AACD,AAAA,cAAc,CAAG,KAAK,CAAG,EAAE,AAAA,YAAa,CAAA,GAAG,CAAE,CACzC,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,YAAY,CAAG,KAAK,CAAG,EAAE,AAAA,MAAM,AAAC,CAC5B,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,KAAK,CAAC,GAAG,CAAA,AAAA,KAAC,EAAO,MAAM,AAAb,CAAe,CACrB,QAAQ,CAAE,MAAM,CAChB,OAAO,CAAE,YAAY,CACrB,KAAK,CAAE,IAAI,CACd,AACD,AAAA,KAAK,CAAC,EAAE,CAAA,AAAA,KAAC,EAAO,MAAM,AAAb,EACT,KAAK,CAAC,EAAE,CAAA,AAAA,KAAC,EAAO,MAAM,AAAb,CAAe,CACpB,QAAQ,CAAE,MAAM,CAChB,OAAO,CAAE,UAAU,CACnB,KAAK,CAAE,IAAI,CACd,AACD,AAAA,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,OAAO,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,OAAO,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,OAAO,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,OAAO,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,OAAO,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,OAAO,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,OAAO,CAAG,EAAE,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,OAAO,CAAG,EAAE,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,OAAO,CAAG,EAAE,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,OAAO,CAAG,EAAE,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,OAAO,CAAG,EAAE,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,OAAO,CAAG,EAAE,AAAC,CAC5B,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,YAAY,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,OAAO,AAAA,MAAM,CAC3C,YAAY,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,OAAO,AAAA,MAAM,CAC3C,YAAY,CAAG,KAAK,CAAG,EAAE,AAAA,OAAO,AAAA,MAAM,CAAG,EAAE,CAC3C,YAAY,CAAG,KAAK,CAAG,EAAE,AAAA,MAAM,CAAG,OAAO,CACzC,YAAY,CAAG,KAAK,CAAG,EAAE,AAAA,OAAO,AAAA,MAAM,CAAG,EAAE,AAAC,CACxC,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,QAAQ,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,QAAQ,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,QAAQ,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,QAAQ,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,QAAQ,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,QAAQ,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,QAAQ,CAAG,EAAE,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,QAAQ,CAAG,EAAE,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,QAAQ,CAAG,EAAE,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,QAAQ,CAAG,EAAE,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,QAAQ,CAAG,EAAE,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,QAAQ,CAAG,EAAE,AAAC,CAC7B,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,YAAY,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,QAAQ,AAAA,MAAM,CAC5C,YAAY,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,QAAQ,AAAA,MAAM,CAC5C,YAAY,CAAG,KAAK,CAAG,EAAE,AAAA,QAAQ,AAAA,MAAM,CAAG,EAAE,CAC5C,YAAY,CAAG,KAAK,CAAG,EAAE,AAAA,MAAM,CAAG,QAAQ,CAC1C,YAAY,CAAG,KAAK,CAAG,EAAE,AAAA,QAAQ,AAAA,MAAM,CAAG,EAAE,AAAC,CACzC,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,KAAK,CAC7B,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,KAAK,CAC7B,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,KAAK,CAC7B,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,KAAK,CAC7B,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,KAAK,CAC7B,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,KAAK,CAC7B,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,KAAK,CAAG,EAAE,CAC7B,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,KAAK,CAAG,EAAE,CAC7B,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,KAAK,CAAG,EAAE,CAC7B,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,KAAK,CAAG,EAAE,CAC7B,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,KAAK,CAAG,EAAE,CAC7B,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,KAAK,CAAG,EAAE,AAAC,CAC1B,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,YAAY,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,KAAK,AAAA,MAAM,CACzC,YAAY,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,KAAK,AAAA,MAAM,CACzC,YAAY,CAAG,KAAK,CAAG,EAAE,AAAA,KAAK,AAAA,MAAM,CAAG,EAAE,CACzC,YAAY,CAAG,KAAK,CAAG,EAAE,AAAA,MAAM,CAAG,KAAK,CACvC,YAAY,CAAG,KAAK,CAAG,EAAE,AAAA,KAAK,AAAA,MAAM,CAAG,EAAE,AAAC,CACtC,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,QAAQ,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,QAAQ,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,QAAQ,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,QAAQ,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,QAAQ,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,QAAQ,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,QAAQ,CAAG,EAAE,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,QAAQ,CAAG,EAAE,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,QAAQ,CAAG,EAAE,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,QAAQ,CAAG,EAAE,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,QAAQ,CAAG,EAAE,CAChC,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,QAAQ,CAAG,EAAE,AAAC,CAC7B,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,YAAY,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,QAAQ,AAAA,MAAM,CAC5C,YAAY,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,QAAQ,AAAA,MAAM,CAC5C,YAAY,CAAG,KAAK,CAAG,EAAE,AAAA,QAAQ,AAAA,MAAM,CAAG,EAAE,CAC5C,YAAY,CAAG,KAAK,CAAG,EAAE,AAAA,MAAM,CAAG,QAAQ,CAC1C,YAAY,CAAG,KAAK,CAAG,EAAE,AAAA,QAAQ,AAAA,MAAM,CAAG,EAAE,AAAC,CACzC,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,OAAO,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,OAAO,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,OAAO,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,OAAO,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,OAAO,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,OAAO,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,OAAO,CAAG,EAAE,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,OAAO,CAAG,EAAE,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,OAAO,CAAG,EAAE,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,OAAO,CAAG,EAAE,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,OAAO,CAAG,EAAE,CAC/B,MAAM,CAAG,KAAK,CAAG,EAAE,AAAA,OAAO,CAAG,EAAE,AAAC,CAC5B,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,YAAY,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,OAAO,AAAA,MAAM,CAC3C,YAAY,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,OAAO,AAAA,MAAM,CAC3C,YAAY,CAAG,KAAK,CAAG,EAAE,AAAA,OAAO,AAAA,MAAM,CAAG,EAAE,CAC3C,YAAY,CAAG,KAAK,CAAG,EAAE,AAAA,MAAM,CAAG,OAAO,CACzC,YAAY,CAAG,KAAK,CAAG,EAAE,AAAA,OAAO,AAAA,MAAM,CAAG,EAAE,AAAC,CACxC,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,iBAAiB,AAAC,CACd,UAAU,CAAE,KAAK,CACjB,UAAU,CAAE,IAAI,CACnB,AACD,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK,EAJnC,AAAA,iBAAiB,AAKK,CACd,KAAK,CAAE,IAAI,CACX,aAAa,CAAE,IAAI,CACnB,UAAU,CAAE,MAAM,CAClB,kBAAkB,CAAE,wBAAwB,CAC5C,MAAM,CAAE,cAAc,CACzB,AACD,AAAA,iBAAiB,CAAG,MAAM,AAAC,CACvB,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,iBAAiB,CAAG,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CAC5C,iBAAiB,CAAG,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CAC5C,iBAAiB,CAAG,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CAC5C,iBAAiB,CAAG,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CAC5C,iBAAiB,CAAG,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,CAC5C,iBAAiB,CAAG,MAAM,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAC,CACzC,WAAW,CAAE,MAAM,CACtB,AACD,AAAA,iBAAiB,CAAG,eAAe,AAAC,CAChC,MAAM,CAAE,CAAC,CACZ,AACD,AAAA,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,CACjE,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,CACjE,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,CACjE,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,CACjE,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,CACjE,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,AAAC,CAC9D,WAAW,CAAE,CAAC,CACjB,AACD,AAAA,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,CAChE,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,CAChE,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,CAChE,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,CAChE,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,CAChE,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,AAAC,CAC7D,YAAY,CAAE,CAAC,CAClB,AACD,AAAA,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,WAAW,CAAG,EAAE,CAChE,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,WAAW,CAAG,EAAE,CAChE,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,WAAW,CAAG,EAAE,CAChE,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,WAAW,CAAG,EAAE,AAAC,CAC7D,aAAa,CAAE,CAAC,CACnB,CAt2EL,AAAA,QAAQ,AAw2EC,CACL,SAAS,CAAE,CAAC,CACZ,OAAO,CAAE,CAAC,CACV,MAAM,CAAE,CAAC,CACT,MAAM,CAAE,CAAC,CACZ,AAx2ED,AAAA,MAAM,AAy2EC,CACH,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,OAAO,CAAE,CAAC,CACV,aAAa,CAAE,IAAI,CACnB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,OAAO,CACpB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,CAAC,CACT,aAAa,CAAE,iBAAiB,CACnC,AACD,AAAA,KAAK,AAAC,CACF,OAAO,CAAE,YAAY,CACrB,SAAS,CAAE,IAAI,CACf,aAAa,CAAE,GAAG,CAClB,WAAW,CAAE,IAAI,CACpB,AAx4ED,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAy4Ee,CACjB,kBAAkB,CAAE,UAAU,CAC9B,eAAe,CAAE,UAAU,CAC3B,UAAU,CAAE,UAAU,CACzB,AACD,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EACN,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAiB,CACnB,MAAM,CAAE,OAAO,CACf,UAAU,CAAE,MAAM,CAClB,WAAW,CAAE,MAAM,CACtB,AACD,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,CAAa,CACf,OAAO,CAAE,KAAK,CACjB,AACD,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAAc,CAChB,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACd,AACD,AAAA,MAAM,CAAA,AAAA,QAAC,AAAA,EACP,MAAM,CAAA,AAAA,IAAC,AAAA,CAAM,CACT,MAAM,CAAE,IAAI,CACf,AACD,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,CAAY,MAAM,CACxB,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAAa,MAAM,CACzB,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,MAAM,AAAC,CACzB,OAAO,CAAE,WAAW,CACpB,OAAO,CAAE,iCAAiC,CAC1C,cAAc,CAAE,IAAI,CACvB,AACD,AAAA,MAAM,AAAC,CACH,OAAO,CAAE,KAAK,CACd,WAAW,CAAE,GAAG,CAChB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,UAAU,CACvB,KAAK,CAAE,IAAI,CACd,AAkFD,AAAA,MAAM,CACN,SAAS,AAAC,CACN,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,KAAK,CACd,UAAU,CAAE,IAAI,CAChB,aAAa,CAAE,IAAI,CACtB,AACD,AAAA,MAAM,CAAC,KAAK,CACZ,SAAS,CAAC,KAAK,AAAC,CACZ,UAAU,CAAE,IAAI,CAChB,YAAY,CAAE,IAAI,CAClB,aAAa,CAAE,CAAC,CAChB,WAAW,CAAE,MAAM,CACnB,MAAM,CAAE,OAAO,CAClB,AACD,AAAA,MAAM,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EACb,aAAa,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EACpB,SAAS,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,EAChB,gBAAgB,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAiB,CACpC,QAAQ,CAAE,QAAQ,CAClB,UAAU,CAAE,MAAM,CAClB,WAAW,CAAE,KAAK,CACrB,AACD,AAAA,MAAM,CAAG,MAAM,CACf,SAAS,CAAG,SAAS,AAAC,CAClB,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,aAAa,CACb,gBAAgB,AAAC,CACb,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,YAAY,CACrB,YAAY,CAAE,IAAI,CAClB,aAAa,CAAE,CAAC,CAChB,WAAW,CAAE,MAAM,CACnB,cAAc,CAAE,MAAM,CACtB,MAAM,CAAE,OAAO,CAClB,AACD,AAAA,aAAa,CAAG,aAAa,CAC7B,gBAAgB,CAAG,gBAAgB,AAAC,CAChC,UAAU,CAAE,CAAC,CACb,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EAAa,AAAA,QAAC,AAAA,EACpB,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,EAAgB,AAAA,QAAC,AAAA,EACvB,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAAa,SAAS,CAC5B,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,SAAS,CAC/B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EACzB,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAiB,CACtC,MAAM,CAAE,WAAW,CACtB,AACD,AAAA,aAAa,AAAA,SAAS,CACtB,gBAAgB,AAAA,SAAS,CACzB,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,aAAa,CAChC,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,gBAAgB,AAAC,CAChC,MAAM,CAAE,WAAW,CACtB,AACD,AAAA,MAAM,AAAA,SAAS,CAAC,KAAK,CACrB,SAAS,AAAA,SAAS,CAAC,KAAK,CACxB,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,MAAM,CAAC,KAAK,CAC/B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,SAAS,CAAC,KAAK,AAAC,CAC/B,MAAM,CAAE,WAAW,CACtB,AACD,AAAA,oBAAoB,CgBjmFpB,WAAW,CAiBP,GAAG,CAAA,AAAA,KAAC,EAAO,SAAS,AAAhB,EAAoB,cAAc,CAjB1C,WAAW,CAkBP,GAAG,CAAA,AAAA,KAAC,EAAO,UAAU,AAAjB,EAAqB,cAAc,CAlB3C,WAAW,CAmBP,GAAG,CAAA,AAAA,KAAC,EAAO,YAAY,AAAnB,EAAuB,cAAc,AhB8kFxB,CACjB,UAAU,CAAE,IAAI,CAChB,WAAW,CAAE,GAAG,CAChB,cAAc,CAAE,GAAG,CACnB,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,oBAAoB,AAAA,SAAS,CgBvmF7B,WAAW,CAiBP,GAAG,CAAA,AAAA,KAAC,EAAO,SAAS,AAAhB,EhBslFY,SAAS,AgBtlFD,cAAc,CAjB1C,WAAW,CAkBP,GAAG,CAAA,AAAA,KAAC,EAAO,UAAU,AAAjB,EhBqlFY,SAAS,AgBrlFA,cAAc,CAlB3C,WAAW,CAmBP,GAAG,CAAA,AAAA,KAAC,EAAO,YAAY,AAAnB,EhBolFY,SAAS,AgBplFE,cAAc,ChBqlF7C,oBAAoB,AAAA,SAAS,CgBxmF7B,WAAW,CAiBP,GAAG,CAAA,AAAA,KAAC,EAAO,SAAS,AAAhB,EhBulFY,SAAS,AgBvlFD,cAAc,CAjB1C,WAAW,CAkBP,GAAG,CAAA,AAAA,KAAC,EAAO,UAAU,AAAjB,EhBslFY,SAAS,AgBtlFA,cAAc,CAlB3C,WAAW,CAmBP,GAAG,CAAA,AAAA,KAAC,EAAO,YAAY,AAAnB,EhBqlFY,SAAS,AgBrlFE,cAAc,AhBqlFf,CAC1B,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,CAAC,CAClB,AACD,AAAA,SAAS,AAAC,CACN,MAAM,CAAE,IAAI,CACZ,OAAO,CAAE,QAAQ,CACjB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,GAAG,CAChB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,MAAM,AAAA,SAAS,AAAC,CACZ,MAAM,CAAE,IAAI,CACZ,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,QAAQ,AAAA,SAAS,CACjB,MAAM,CAAA,AAAA,QAAC,AAAA,CAAS,SAAS,AAAC,CACtB,MAAM,CAAE,IAAI,CACf,AACD,AAAA,cAAc,CAAC,aAAa,AAAC,CACzB,MAAM,CAAE,IAAI,CACZ,OAAO,CAAE,QAAQ,CACjB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,GAAG,CAChB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,MAAM,AAAA,cAAc,CAAC,aAAa,AAAC,CAC/B,MAAM,CAAE,IAAI,CACZ,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,QAAQ,AAAA,cAAc,CAAC,aAAa,CACpC,MAAM,CAAA,AAAA,QAAC,AAAA,CAAS,cAAc,CAAC,aAAa,AAAC,CACzC,MAAM,CAAE,IAAI,CACf,AACD,AAAA,cAAc,CAAC,oBAAoB,CAAnC,cAAc,CgB1oFd,WAAW,CAiBP,GAAG,CAAA,AAAA,KAAC,EAAO,SAAS,AAAhB,EAAoB,cAAc,CAjB1C,WAAW,ChB0oFX,cAAc,CgBznFV,GAAG,CAAA,AAAA,KAAC,EAAO,SAAS,AAAhB,EAAoB,cAAc,ChBynF1C,cAAc,CgB1oFd,WAAW,CAkBP,GAAG,CAAA,AAAA,KAAC,EAAO,UAAU,AAAjB,EAAqB,cAAc,CAlB3C,WAAW,ChB0oFX,cAAc,CgBxnFV,GAAG,CAAA,AAAA,KAAC,EAAO,UAAU,AAAjB,EAAqB,cAAc,ChBwnF3C,cAAc,CgB1oFd,WAAW,CAmBP,GAAG,CAAA,AAAA,KAAC,EAAO,YAAY,AAAnB,EAAuB,cAAc,CAnB7C,WAAW,ChB0oFX,cAAc,CgBvnFV,GAAG,CAAA,AAAA,KAAC,EAAO,YAAY,AAAnB,EAAuB,cAAc,AhBunFT,CAChC,MAAM,CAAE,IAAI,CACZ,UAAU,CAAE,IAAI,CAChB,OAAO,CAAE,QAAQ,CACjB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,GAAG,CACnB,AACD,AAAA,SAAS,AAAC,CACN,MAAM,CAAE,IAAI,CACZ,OAAO,CAAE,SAAS,CAClB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,SAAS,CACtB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,MAAM,AAAA,SAAS,AAAC,CACZ,MAAM,CAAE,IAAI,CACZ,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,QAAQ,AAAA,SAAS,CACjB,MAAM,CAAA,AAAA,QAAC,AAAA,CAAS,SAAS,AAAC,CACtB,MAAM,CAAE,IAAI,CACf,AACD,AAAA,cAAc,CAAC,aAAa,AAAC,CACzB,MAAM,CAAE,IAAI,CACZ,OAAO,CAAE,SAAS,CAClB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,SAAS,CACtB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,MAAM,AAAA,cAAc,CAAC,aAAa,AAAC,CAC/B,MAAM,CAAE,IAAI,CACZ,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,QAAQ,AAAA,cAAc,CAAC,aAAa,CACpC,MAAM,CAAA,AAAA,QAAC,AAAA,CAAS,cAAc,CAAC,aAAa,AAAC,CACzC,MAAM,CAAE,IAAI,CACf,AACD,AAAA,cAAc,CAAC,oBAAoB,CAAnC,cAAc,CgB/qFd,WAAW,CAiBP,GAAG,CAAA,AAAA,KAAC,EAAO,SAAS,AAAhB,EAAoB,cAAc,CAjB1C,WAAW,ChB+qFX,cAAc,CgB9pFV,GAAG,CAAA,AAAA,KAAC,EAAO,SAAS,AAAhB,EAAoB,cAAc,ChB8pF1C,cAAc,CgB/qFd,WAAW,CAkBP,GAAG,CAAA,AAAA,KAAC,EAAO,UAAU,AAAjB,EAAqB,cAAc,CAlB3C,WAAW,ChB+qFX,cAAc,CgB7pFV,GAAG,CAAA,AAAA,KAAC,EAAO,UAAU,AAAjB,EAAqB,cAAc,ChB6pF3C,cAAc,CgB/qFd,WAAW,CAmBP,GAAG,CAAA,AAAA,KAAC,EAAO,YAAY,AAAnB,EAAuB,cAAc,CAnB7C,WAAW,ChB+qFX,cAAc,CgB5pFV,GAAG,CAAA,AAAA,KAAC,EAAO,YAAY,AAAnB,EAAuB,cAAc,AhB4pFT,CAChC,MAAM,CAAE,IAAI,CACZ,UAAU,CAAE,IAAI,CAChB,OAAO,CAAE,SAAS,CAClB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,SAAS,CACzB,AACD,AAAA,aAAa,AAAC,CACV,QAAQ,CAAE,QAAQ,CACrB,AACD,AAAA,aAAa,CAAC,aAAa,AAAC,CACxB,aAAa,CAAE,MAAM,CACxB,AACD,AAAA,sBAAsB,AAAC,CACnB,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,CAAC,CACR,OAAO,CAAE,CAAC,CACV,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,WAAW,CAAE,IAAI,CACjB,UAAU,CAAE,MAAM,CAClB,cAAc,CAAE,IAAI,CACvB,AACD,AAAA,SAAS,CAAG,sBAAsB,AAAC,CAC/B,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,SAAS,CAAG,sBAAsB,AAAC,CAC/B,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,YAAY,CAAC,WAAW,CACxB,YAAY,CAAC,cAAc,CAC3B,YAAY,CAAC,MAAM,CACnB,YAAY,CAAC,SAAS,CACtB,YAAY,CAAC,aAAa,CAC1B,YAAY,CAAC,gBAAgB,CAC7B,YAAY,AAAA,MAAM,CAAC,KAAK,CACxB,YAAY,AAAA,SAAS,CAAC,KAAK,CAC3B,YAAY,AAAA,aAAa,CAAC,KAAK,CAC/B,YAAY,AAAA,gBAAgB,CAAC,KAAK,AAAC,CAC/B,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,YAAY,CAAC,aAAa,AAAC,CACvB,YAAY,CAAE,OAAO,CACrB,kBAAkB,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAoB,CACxD,UAAU,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAoB,CACnD,AACD,AAAA,YAAY,CAAC,aAAa,AAAA,MAAM,AAAC,CAC7B,YAAY,CAAE,OAAO,CACrB,kBAAkB,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAoB,CAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CACzE,UAAU,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAoB,CAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CACpE,AACD,AAAA,YAAY,CAAC,kBAAkB,AAAC,CAC5B,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,YAAY,CAAC,sBAAsB,AAAC,CAChC,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,YAAY,CAAC,WAAW,CACxB,YAAY,CAAC,cAAc,CAC3B,YAAY,CAAC,MAAM,CACnB,YAAY,CAAC,SAAS,CACtB,YAAY,CAAC,aAAa,CAC1B,YAAY,CAAC,gBAAgB,CAC7B,YAAY,AAAA,MAAM,CAAC,KAAK,CACxB,YAAY,AAAA,SAAS,CAAC,KAAK,CAC3B,YAAY,AAAA,aAAa,CAAC,KAAK,CAC/B,YAAY,AAAA,gBAAgB,CAAC,KAAK,AAAC,CAC/B,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,YAAY,CAAC,aAAa,AAAC,CACvB,YAAY,CAAE,OAAO,CACrB,kBAAkB,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAoB,CACxD,UAAU,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAoB,CACnD,AACD,AAAA,YAAY,CAAC,aAAa,AAAA,MAAM,AAAC,CAC7B,YAAY,CAAE,OAAO,CACrB,kBAAkB,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAoB,CAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CACzE,UAAU,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAoB,CAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CACpE,AACD,AAAA,YAAY,CAAC,kBAAkB,AAAC,CAC5B,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,YAAY,CAAC,sBAAsB,AAAC,CAChC,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,UAAU,CAAC,WAAW,CACtB,UAAU,CAAC,cAAc,CACzB,UAAU,CAAC,MAAM,CACjB,UAAU,CAAC,SAAS,CACpB,UAAU,CAAC,aAAa,CACxB,UAAU,CAAC,gBAAgB,CAC3B,UAAU,AAAA,MAAM,CAAC,KAAK,CACtB,UAAU,AAAA,SAAS,CAAC,KAAK,CACzB,UAAU,AAAA,aAAa,CAAC,KAAK,CAC7B,UAAU,AAAA,gBAAgB,CAAC,KAAK,AAAC,CAC7B,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,UAAU,CAAC,aAAa,AAAC,CACrB,YAAY,CAAE,OAAO,CACrB,kBAAkB,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAoB,CACxD,UAAU,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAoB,CACnD,AACD,AAAA,UAAU,CAAC,aAAa,AAAA,MAAM,AAAC,CAC3B,YAAY,CAAE,OAAO,CACrB,kBAAkB,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAoB,CAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CACzE,UAAU,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAoB,CAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CACpE,AACD,AAAA,UAAU,CAAC,kBAAkB,AAAC,CAC1B,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,UAAU,CAAC,sBAAsB,AAAC,CAC9B,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,aAAa,CAAC,KAAK,GAAG,sBAAsB,AAAC,CACzC,GAAG,CAAE,IAAI,CACZ,AACD,AAAA,aAAa,CAAC,KAAK,AAAA,QAAQ,GAAG,sBAAsB,AAAC,CACjD,GAAG,CAAE,CAAC,CACT,AACD,AAAA,WAAW,AAAC,CACR,OAAO,CAAE,KAAK,CACd,UAAU,CAAE,GAAG,CACf,aAAa,CAAE,IAAI,CACnB,KAAK,CAAE,OAAO,CACjB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,YAAY,CAAC,WAAW,AAAC,CACrB,OAAO,CAAE,YAAY,CACrB,aAAa,CAAE,CAAC,CAChB,cAAc,CAAE,MAAM,CACzB,AACD,AAAA,YAAY,CAAC,aAAa,AAAC,CACvB,OAAO,CAAE,YAAY,CACrB,KAAK,CAAE,IAAI,CACX,cAAc,CAAE,MAAM,CACzB,AACD,AAAA,YAAY,CAAC,oBAAoB,CAAjC,YAAY,CgBn0FhB,WAAW,CAiBP,GAAG,CAAA,AAAA,KAAC,EAAO,SAAS,AAAhB,EAAoB,cAAc,CAjB1C,WAAW,ChBm0FP,YAAY,CgBlzFZ,GAAG,CAAA,AAAA,KAAC,EAAO,SAAS,AAAhB,EAAoB,cAAc,ChBkzFtC,YAAY,CgBn0FhB,WAAW,CAkBP,GAAG,CAAA,AAAA,KAAC,EAAO,UAAU,AAAjB,EAAqB,cAAc,CAlB3C,WAAW,ChBm0FP,YAAY,CgBjzFZ,GAAG,CAAA,AAAA,KAAC,EAAO,UAAU,AAAjB,EAAqB,cAAc,ChBizFvC,YAAY,CgBn0FhB,WAAW,CAmBP,GAAG,CAAA,AAAA,KAAC,EAAO,YAAY,AAAnB,EAAuB,cAAc,CAnB7C,WAAW,ChBm0FP,YAAY,CgBhzFZ,GAAG,CAAA,AAAA,KAAC,EAAO,YAAY,AAAnB,EAAuB,cAAc,AhBgzFP,CAC9B,OAAO,CAAE,YAAY,CACxB,AACD,AAAA,YAAY,CAAC,YAAY,AAAC,CACtB,OAAO,CAAE,YAAY,CACrB,cAAc,CAAE,MAAM,CACzB,AACD,AAAA,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAC5C,YAAY,CAAC,YAAY,CAAC,gBAAgB,CAC1C,YAAY,CAAC,YAAY,CAAC,aAAa,AAAC,CACpC,KAAK,CAAE,IAAI,CACd,AACD,AAAA,YAAY,CAAC,YAAY,CAAG,aAAa,AAAC,CACtC,KAAK,CAAE,IAAI,CACd,AACD,AAAA,YAAY,CAAC,cAAc,AAAC,CACxB,aAAa,CAAE,CAAC,CAChB,cAAc,CAAE,MAAM,CACzB,AACD,AAAA,YAAY,CAAC,MAAM,CACnB,YAAY,CAAC,SAAS,AAAC,CACnB,OAAO,CAAE,YAAY,CACrB,UAAU,CAAE,CAAC,CACb,aAAa,CAAE,CAAC,CAChB,cAAc,CAAE,MAAM,CACzB,AACD,AAAA,YAAY,CAAC,MAAM,CAAC,KAAK,CACzB,YAAY,CAAC,SAAS,CAAC,KAAK,AAAC,CACzB,YAAY,CAAE,CAAC,CAClB,AACD,AAAA,YAAY,CAAC,MAAM,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EAC1B,YAAY,CAAC,SAAS,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAiB,CAC1C,QAAQ,CAAE,QAAQ,CAClB,WAAW,CAAE,CAAC,CACjB,AACD,AAAA,YAAY,CAAC,aAAa,CAAC,sBAAsB,AAAC,CAC9C,GAAG,CAAE,CAAC,CACT,CAEL,AAAA,gBAAgB,CAAC,MAAM,CACvB,gBAAgB,CAAC,SAAS,CAC1B,gBAAgB,CAAC,aAAa,CAC9B,gBAAgB,CAAC,gBAAgB,AAAC,CAC9B,WAAW,CAAE,GAAG,CAChB,UAAU,CAAE,CAAC,CACb,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,gBAAgB,CAAC,MAAM,CACvB,gBAAgB,CAAC,SAAS,AAAC,CACvB,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,gBAAgB,CAAC,WAAW,AAAC,CACzB,YAAY,CAAE,KAAK,CACnB,WAAW,CAAE,KAAK,CACrB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,gBAAgB,CAAC,cAAc,AAAC,CAC5B,WAAW,CAAE,GAAG,CAChB,aAAa,CAAE,CAAC,CAChB,UAAU,CAAE,KAAK,CACpB,CAEL,AAAA,gBAAgB,CAAC,aAAa,CAAC,sBAAsB,AAAC,CAClD,KAAK,CAAE,IAAI,CACd,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,gBAAgB,CAAC,cAAc,CAAC,cAAc,AAAC,CAC3C,WAAW,CAAE,WAAW,CAC3B,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,gBAAgB,CAAC,cAAc,CAAC,cAAc,AAAC,CAC3C,WAAW,CAAE,GAAG,CACnB,CAEL,AAAA,IAAI,AAAC,CACD,OAAO,CAAE,YAAY,CACrB,OAAO,CAAE,QAAQ,CACjB,aAAa,CAAE,CAAC,CAChB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,MAAM,CACnB,WAAW,CAAE,UAAU,CACvB,UAAU,CAAE,MAAM,CAClB,WAAW,CAAE,MAAM,CACnB,cAAc,CAAE,MAAM,CACtB,gBAAgB,CAAE,YAAY,CAC9B,YAAY,CAAE,YAAY,CAC1B,MAAM,CAAE,OAAO,CACf,mBAAmB,CAAE,IAAI,CACzB,gBAAgB,CAAE,IAAI,CACtB,eAAe,CAAE,IAAI,CACrB,WAAW,CAAE,IAAI,CACjB,gBAAgB,CAAE,IAAI,CACtB,MAAM,CAAE,qBAAqB,CAC7B,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,IAAI,AAAA,MAAM,CACV,IAAI,AAAA,OAAO,AAAA,MAAM,CACjB,IAAI,AAAA,OAAO,AAAA,MAAM,CACjB,IAAI,AAAA,MAAM,CACV,IAAI,AAAA,OAAO,AAAA,MAAM,CACjB,IAAI,AAAA,OAAO,AAAA,MAAM,AAAC,CACd,OAAO,CAAE,WAAW,CACpB,OAAO,CAAE,iCAAiC,CAC1C,cAAc,CAAE,IAAI,CACvB,AACD,AAAA,IAAI,AAAA,MAAM,CACV,IAAI,AAAA,MAAM,CACV,IAAI,AAAA,MAAM,AAAC,CACP,KAAK,CAAE,IAAI,CACX,eAAe,CAAE,IAAI,CACxB,AACD,AAAA,IAAI,AAAA,OAAO,CACX,IAAI,AAAA,OAAO,AAAC,CACR,gBAAgB,CAAE,IAAI,CACtB,OAAO,CAAE,CAAC,CACV,kBAAkB,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAoB,CACxD,UAAU,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAoB,CACnD,AACD,AAAA,IAAI,AAAA,SAAS,CACb,IAAI,CAAA,AAAA,QAAC,AAAA,EACL,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,IAAI,AAAC,CACpB,cAAc,CAAE,IAAI,CACpB,MAAM,CAAE,WAAW,CACnB,MAAM,CAAE,iBAAiB,CACzB,kBAAkB,CAAE,IAAI,CACxB,UAAU,CAAE,IAAI,CAChB,OAAO,CAAE,IAAI,CAChB,AACD,AAAA,YAAY,AAAC,CACT,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,IAAI,CACtB,YAAY,CAAE,IAAI,CACrB,AACD,AAAA,YAAY,AAAA,MAAM,CAClB,YAAY,AAAA,MAAM,CAClB,YAAY,AAAA,MAAM,CAClB,YAAY,AAAA,OAAO,CACnB,YAAY,AAAA,OAAO,CACnB,KAAK,CAAG,gBAAgB,AAAA,YAAY,AAAC,CACjC,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,YAAY,AAAA,OAAO,CACnB,YAAY,AAAA,OAAO,CACnB,KAAK,CAAG,gBAAgB,AAAA,YAAY,AAAC,CACjC,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,YAAY,AAAA,SAAS,CACrB,YAAY,CAAA,AAAA,QAAC,AAAA,EACb,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,CAC/B,YAAY,AAAA,SAAS,AAAA,MAAM,CAC3B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CAC5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM,CACrC,YAAY,AAAA,SAAS,AAAA,MAAM,CAC3B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CAC5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM,CACrC,YAAY,AAAA,SAAS,AAAA,MAAM,CAC3B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CAC5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM,CACrC,YAAY,AAAA,SAAS,AAAA,OAAO,CAC5B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,OAAO,CAC7B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,OAAO,CACtC,YAAY,AAAA,SAAS,AAAA,OAAO,CAC5B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,OAAO,CAC7B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,OAAO,AAAC,CACnC,gBAAgB,CAAE,IAAI,CACtB,YAAY,CAAE,IAAI,CACrB,AACD,AAAA,YAAY,CAAC,MAAM,AAAC,CAChB,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,YAAY,CyB/+FZ,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,AzB8+Fb,CACT,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,YAAY,AAAA,MAAM,CyBp/FlB,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,AzBm/Fd,MAAM,CAClB,YAAY,AAAA,MAAM,CyBr/FlB,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,AzBo/Fd,MAAM,CAClB,YAAY,AAAA,MAAM,CyBt/FlB,oBAAoB,AAAA,QAAQ,CzBs/FhB,MAAM,AyBr/Fd,sBAAsB,CzBs/F1B,YAAY,AAAA,OAAO,CyBv/FnB,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,AzBs/Fd,OAAO,CACnB,YAAY,AAAA,OAAO,CyBx/FnB,oBAAoB,AAAA,QAAQ,CzBw/FhB,OAAO,AyBv/Ff,sBAAsB,CzBw/F1B,KAAK,CAAG,gBAAgB,AAAA,YAAY,CyBz/FpC,oBAAoB,AAAA,QAAQ,CzBy/F5B,KAAK,CAAG,gBAAgB,AyBx/FpB,sBAAsB,AzBw/FW,CACjC,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AAND,AAOA,YAPY,AAAA,OAAO,CyBv/FnB,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,AzBs/Fd,OAAO,CACnB,YAAY,AAAA,OAAO,CyBx/FnB,oBAAoB,AAAA,QAAQ,CzBw/FhB,OAAO,AyBv/Ff,sBAAsB,CzBw/F1B,KAAK,CAAG,gBAAgB,AAAA,YAAY,CyBz/FpC,oBAAoB,AAAA,QAAQ,CzBy/F5B,KAAK,CAAG,gBAAgB,AyBx/FpB,sBAAsB,AzB+/FW,CACjC,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,YAAY,AAAA,SAAS,CyBngGrB,oBAAoB,AAAA,QAAQ,CzBmgGhB,SAAS,AyBlgGjB,sBAAsB,CzBmgG1B,YAAY,CAAA,AAAA,QAAC,AAAA,EyBpgGb,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CzBmgGd,AAAA,QAAC,AAAA,EACb,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,CAA/B,QAAQ,CAAA,AAAA,QAAC,AAAA,EyBrgGT,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CAD1B,oBAAoB,AAAA,QAAQ,CzBqgG5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EyBpgGL,sBAAsB,CzBqgG1B,YAAY,AAAA,SAAS,AAAA,MAAM,CyBtgG3B,oBAAoB,AAAA,QAAQ,CzBsgGhB,SAAS,AyBrgGjB,sBAAsB,AzBqgGL,MAAM,CAC3B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CyBvgG5B,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CzBsgGd,AAAA,QAAC,AAAA,CAAS,MAAM,CAC5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM,CAArC,QAAQ,CAAA,AAAA,QAAC,AAAA,EyBxgGT,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,AzBm/Fd,MAAM,CyBp/FlB,oBAAoB,AAAA,QAAQ,CzBwgG5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EyBvgGL,sBAAsB,AzBm/Fd,MAAM,CAqBlB,YAAY,AAAA,SAAS,AAAA,MAAM,CyBzgG3B,oBAAoB,AAAA,QAAQ,CzBygGhB,SAAS,AyBxgGjB,sBAAsB,AzBwgGL,MAAM,CAC3B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CyB1gG5B,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CzBygGd,AAAA,QAAC,AAAA,CAAS,MAAM,CAC5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM,CAArC,QAAQ,CAAA,AAAA,QAAC,AAAA,EyB3gGT,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,AzBo/Fd,MAAM,CyBr/FlB,oBAAoB,AAAA,QAAQ,CzB2gG5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EyB1gGL,sBAAsB,AzBo/Fd,MAAM,CAuBlB,YAAY,AAAA,SAAS,AAAA,MAAM,CyB5gG3B,oBAAoB,AAAA,QAAQ,CzB4gGhB,SAAS,AAAA,MAAM,AyB3gGvB,sBAAsB,CzB4gG1B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CyB7gG5B,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CzB4gGd,AAAA,QAAC,AAAA,CAAS,MAAM,CAC5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM,CAArC,QAAQ,CAAA,AAAA,QAAC,AAAA,EyB9gGT,oBAAoB,AAAA,QAAQ,CzBs/FhB,MAAM,AyBr/Fd,sBAAsB,CAD1B,oBAAoB,AAAA,QAAQ,CzB8gG5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAxBG,MAAM,AyBr/Fd,sBAAsB,CzB8gG1B,YAAY,AAAA,SAAS,AAAA,OAAO,CyB/gG5B,oBAAoB,AAAA,QAAQ,CzB+gGhB,SAAS,AyB9gGjB,sBAAsB,AzB8gGL,OAAO,CAC5B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,OAAO,CyBhhG7B,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CzB+gGd,AAAA,QAAC,AAAA,CAAS,OAAO,CAC7B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,OAAO,CAAtC,QAAQ,CAAA,AAAA,QAAC,AAAA,EyBjhGT,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,AzBs/Fd,OAAO,CyBv/FnB,oBAAoB,AAAA,QAAQ,CzBihG5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EyBhhGL,sBAAsB,AzBs/Fd,OAAO,CA2BnB,YAAY,AAAA,SAAS,AAAA,OAAO,CyBlhG5B,oBAAoB,AAAA,QAAQ,CzBkhGhB,SAAS,AAAA,OAAO,AyBjhGxB,sBAAsB,CzBkhG1B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,OAAO,CyBnhG7B,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CzBkhGd,AAAA,QAAC,AAAA,CAAS,OAAO,CAC7B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,OAAO,CAAtC,QAAQ,CAAA,AAAA,QAAC,AAAA,EyBphGT,oBAAoB,AAAA,QAAQ,CzBw/FhB,OAAO,AyBv/Ff,sBAAsB,CAD1B,oBAAoB,AAAA,QAAQ,CzBohG5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EA5BG,OAAO,AyBv/Ff,sBAAsB,AzBmhGa,CACnC,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,YAAY,CAAC,MAAM,CyBxhGnB,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CzBuhGb,MAAM,AAAC,CAChB,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,YAAY,AAAC,CACT,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,YAAY,AAAA,MAAM,CAClB,YAAY,AAAA,MAAM,CAClB,YAAY,AAAA,MAAM,CAClB,YAAY,AAAA,OAAO,CACnB,YAAY,AAAA,OAAO,CACnB,KAAK,CAAG,gBAAgB,AAAA,YAAY,AAAC,CACjC,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,YAAY,AAAA,OAAO,CACnB,YAAY,AAAA,OAAO,CACnB,KAAK,CAAG,gBAAgB,AAAA,YAAY,AAAC,CACjC,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,YAAY,AAAA,SAAS,CACrB,YAAY,CAAA,AAAA,QAAC,AAAA,EACb,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,CAC/B,YAAY,AAAA,SAAS,AAAA,MAAM,CAC3B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CAC5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM,CACrC,YAAY,AAAA,SAAS,AAAA,MAAM,CAC3B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CAC5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM,CACrC,YAAY,AAAA,SAAS,AAAA,MAAM,CAC3B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CAC5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM,CACrC,YAAY,AAAA,SAAS,AAAA,OAAO,CAC5B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,OAAO,CAC7B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,OAAO,CACtC,YAAY,AAAA,SAAS,AAAA,OAAO,CAC5B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,OAAO,CAC7B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,OAAO,AAAC,CACnC,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,YAAY,CAAC,MAAM,AAAC,CAChB,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,SAAS,AAAC,CACN,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,SAAS,AAAA,MAAM,CACf,SAAS,AAAA,MAAM,CACf,SAAS,AAAA,MAAM,CACf,SAAS,AAAA,OAAO,CAChB,SAAS,AAAA,OAAO,CAChB,KAAK,CAAG,gBAAgB,AAAA,SAAS,AAAC,CAC9B,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,SAAS,AAAA,OAAO,CAChB,SAAS,AAAA,OAAO,CAChB,KAAK,CAAG,gBAAgB,AAAA,SAAS,AAAC,CAC9B,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,SAAS,AAAA,SAAS,CAClB,SAAS,CAAA,AAAA,QAAC,AAAA,EACV,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,SAAS,CAC5B,SAAS,AAAA,SAAS,AAAA,MAAM,CACxB,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CACzB,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,SAAS,AAAA,MAAM,CAClC,SAAS,AAAA,SAAS,AAAA,MAAM,CACxB,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CACzB,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,SAAS,AAAA,MAAM,CAClC,SAAS,AAAA,SAAS,AAAA,MAAM,CACxB,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CACzB,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,SAAS,AAAA,MAAM,CAClC,SAAS,AAAA,SAAS,AAAA,OAAO,CACzB,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,OAAO,CAC1B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,SAAS,AAAA,OAAO,CACnC,SAAS,AAAA,SAAS,AAAA,OAAO,CACzB,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,OAAO,CAC1B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,SAAS,AAAA,OAAO,AAAC,CAChC,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,SAAS,CAAC,MAAM,AAAC,CACb,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,YAAY,AAAC,CACT,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,YAAY,AAAA,MAAM,CAClB,YAAY,AAAA,MAAM,CAClB,YAAY,AAAA,MAAM,CAClB,YAAY,AAAA,OAAO,CACnB,YAAY,AAAA,OAAO,CACnB,KAAK,CAAG,gBAAgB,AAAA,YAAY,AAAC,CACjC,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,YAAY,AAAA,OAAO,CACnB,YAAY,AAAA,OAAO,CACnB,KAAK,CAAG,gBAAgB,AAAA,YAAY,AAAC,CACjC,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,YAAY,AAAA,SAAS,CACrB,YAAY,CAAA,AAAA,QAAC,AAAA,EACb,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,CAC/B,YAAY,AAAA,SAAS,AAAA,MAAM,CAC3B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CAC5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM,CACrC,YAAY,AAAA,SAAS,AAAA,MAAM,CAC3B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CAC5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM,CACrC,YAAY,AAAA,SAAS,AAAA,MAAM,CAC3B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CAC5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM,CACrC,YAAY,AAAA,SAAS,AAAA,OAAO,CAC5B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,OAAO,CAC7B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,OAAO,CACtC,YAAY,AAAA,SAAS,AAAA,OAAO,CAC5B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,OAAO,CAC7B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,OAAO,AAAC,CACnC,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,YAAY,CAAC,MAAM,AAAC,CAChB,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,WAAW,AAAC,CACR,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,WAAW,AAAA,MAAM,CACjB,WAAW,AAAA,MAAM,CACjB,WAAW,AAAA,MAAM,CACjB,WAAW,AAAA,OAAO,CAClB,WAAW,AAAA,OAAO,CAClB,KAAK,CAAG,gBAAgB,AAAA,WAAW,AAAC,CAChC,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,WAAW,AAAA,OAAO,CAClB,WAAW,AAAA,OAAO,CAClB,KAAK,CAAG,gBAAgB,AAAA,WAAW,AAAC,CAChC,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,WAAW,AAAA,SAAS,CACpB,WAAW,CAAA,AAAA,QAAC,AAAA,EACZ,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,WAAW,CAC9B,WAAW,AAAA,SAAS,AAAA,MAAM,CAC1B,WAAW,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CAC3B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,WAAW,AAAA,MAAM,CACpC,WAAW,AAAA,SAAS,AAAA,MAAM,CAC1B,WAAW,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CAC3B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,WAAW,AAAA,MAAM,CACpC,WAAW,AAAA,SAAS,AAAA,MAAM,CAC1B,WAAW,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CAC3B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,WAAW,AAAA,MAAM,CACpC,WAAW,AAAA,SAAS,AAAA,OAAO,CAC3B,WAAW,CAAA,AAAA,QAAC,AAAA,CAAS,OAAO,CAC5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,WAAW,AAAA,OAAO,CACrC,WAAW,AAAA,SAAS,AAAA,OAAO,CAC3B,WAAW,CAAA,AAAA,QAAC,AAAA,CAAS,OAAO,CAC5B,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,WAAW,AAAA,OAAO,AAAC,CAClC,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,WAAW,CAAC,MAAM,AAAC,CACf,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,SAAS,AAAC,CACN,WAAW,CAAE,MAAM,CACnB,KAAK,CAAE,OAAO,CACd,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,SAAS,CACT,SAAS,AAAA,OAAO,CAChB,SAAS,AAAA,OAAO,CAChB,SAAS,CAAA,AAAA,QAAC,AAAA,EACV,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,SAAS,AAAC,CACzB,gBAAgB,CAAE,WAAW,CAC7B,kBAAkB,CAAE,IAAI,CACxB,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,SAAS,CACT,SAAS,AAAA,MAAM,CACf,SAAS,AAAA,MAAM,CACf,SAAS,AAAA,OAAO,AAAC,CACb,YAAY,CAAE,WAAW,CAC5B,AACD,AAAA,SAAS,AAAA,MAAM,CACf,SAAS,AAAA,MAAM,AAAC,CACZ,KAAK,CAAE,OAAO,CACd,eAAe,CAAE,SAAS,CAC1B,gBAAgB,CAAE,WAAW,CAChC,AACD,AAAA,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CACzB,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,SAAS,AAAA,MAAM,CAClC,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CACzB,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,SAAS,AAAA,MAAM,AAAC,CAC/B,KAAK,CAAE,IAAI,CACX,eAAe,CAAE,IAAI,CACxB,AACD,AAAA,OAAO,CACP,aAAa,CAAG,IAAI,AAAC,CACjB,OAAO,CAAE,SAAS,CAClB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,SAAS,CACtB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,OAAO,CACP,aAAa,CAAG,IAAI,AAAC,CACjB,OAAO,CAAE,QAAQ,CACjB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,GAAG,CAChB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,OAAO,CACP,aAAa,CAAG,IAAI,AAAC,CACjB,OAAO,CAAE,OAAO,CAChB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,GAAG,CAChB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,UAAU,AAAC,CACP,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACd,AACD,AAAA,UAAU,CAAG,UAAU,AAAC,CACpB,UAAU,CAAE,GAAG,CAClB,AACD,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,UAAU,CAC9B,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAAa,UAAU,CAC7B,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,UAAU,AAAC,CAC3B,KAAK,CAAE,IAAI,CACd,AACD,AAAA,KAAK,AAAC,CACF,OAAO,CAAE,CAAC,CACV,kBAAkB,CAAE,oBAAoB,CACxC,aAAa,CAAE,oBAAoB,CACnC,UAAU,CAAE,oBAAoB,CACnC,AACD,AAAA,KAAK,AAAA,GAAG,AAAC,CACL,OAAO,CAAE,CAAC,CACb,AACD,AAAA,SAAS,AAAC,CACN,OAAO,CAAE,IAAI,CAChB,AACD,AAAA,SAAS,AAAA,GAAG,AAAC,CACT,OAAO,CAAE,KAAK,CACjB,AACD,AAAA,EAAE,AAAA,SAAS,AAAA,GAAG,AAAC,CACX,OAAO,CAAE,SAAS,CACrB,AACD,AAAA,KAAK,AAAA,SAAS,AAAA,GAAG,AAAC,CACd,OAAO,CAAE,eAAe,CAC3B,AACD,AAAA,WAAW,AAAC,CACR,QAAQ,CAAE,QAAQ,CAClB,MAAM,CAAE,CAAC,CACT,QAAQ,CAAE,MAAM,CAChB,kCAAkC,CAAE,IAAI,CACxC,6BAA6B,CAAE,IAAI,CACnC,0BAA0B,CAAE,IAAI,CAChC,2BAA2B,CAAE,KAAK,CAClC,sBAAsB,CAAE,KAAK,CAC7B,mBAAmB,CAAE,KAAK,CAC1B,2BAA2B,CAAE,kBAAkB,CAC/C,sBAAsB,CAAE,kBAAkB,CAC1C,mBAAmB,CAAE,kBAAkB,CAC1C,AACD,AAAA,MAAM,AAAC,CACH,OAAO,CAAE,YAAY,CACrB,KAAK,CAAE,CAAC,CACR,MAAM,CAAE,CAAC,CACT,WAAW,CAAE,GAAG,CAChB,cAAc,CAAE,MAAM,CACtB,UAAU,CAAE,UAAU,CACtB,YAAY,CAAE,qBAAqB,CACnC,WAAW,CAAE,qBAAqB,CACrC,AACD,AAAA,OAAO,CACP,SAAS,AAAC,CACN,QAAQ,CAAE,QAAQ,CACrB,AACD,AAAA,gBAAgB,AAAA,MAAM,AAAC,CACnB,OAAO,CAAE,CAAC,CACb,AACD,AAAA,cAAc,AAAC,CACX,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,IAAI,CACT,IAAI,CAAE,CAAC,CACP,OAAO,CAAE,IAAI,CACb,OAAO,CAAE,IAAI,CACb,KAAK,CAAE,IAAI,CACX,SAAS,CAAE,KAAK,CAChB,OAAO,CAAE,KAAK,CACd,MAAM,CAAE,OAAO,CACf,SAAS,CAAE,IAAI,CACf,UAAU,CAAE,IAAI,CAChB,UAAU,CAAE,IAAI,CAChB,gBAAgB,CAAE,IAAI,CACtB,uBAAuB,CAAE,WAAW,CACpC,eAAe,CAAE,WAAW,CAC5B,MAAM,CAAE,cAAc,CACtB,MAAM,CAAE,GAAG,CAAC,KAAK,CAAC,gBAAmB,CACrC,aAAa,CAAE,GAAG,CAClB,kBAAkB,CAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAoB,CACnD,UAAU,CAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAoB,CAC9C,AACD,AAAA,cAAc,AAAA,WAAW,AAAC,CACtB,KAAK,CAAE,CAAC,CACR,IAAI,CAAE,IAAI,CACb,AACD,AAAA,cAAc,CAAC,QAAQ,AAAC,CACpB,MAAM,CAAE,GAAG,CACX,MAAM,CAAE,KAAK,CACb,QAAQ,CAAE,MAAM,CAChB,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,cAAc,CAAG,EAAE,CAAG,CAAC,AAAC,CACpB,OAAO,CAAE,KAAK,CACd,OAAO,CAAE,QAAQ,CACjB,KAAK,CAAE,IAAI,CACX,WAAW,CAAE,MAAM,CACnB,WAAW,CAAE,UAAU,CACvB,KAAK,CAAE,IAAI,CACX,WAAW,CAAE,MAAM,CACtB,AACD,AAAA,cAAc,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,CAC7B,cAAc,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,AAAC,CAC1B,KAAK,CAAE,OAAO,CACd,eAAe,CAAE,IAAI,CACrB,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,cAAc,CAAG,OAAO,CAAG,CAAC,CAC5B,cAAc,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,CAClC,cAAc,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,AAAC,CAC/B,KAAK,CAAE,IAAI,CACX,eAAe,CAAE,IAAI,CACrB,gBAAgB,CAAE,OAAO,CACzB,OAAO,CAAE,CAAC,CACb,AACD,AAAA,cAAc,CAAG,SAAS,CAAG,CAAC,CAC9B,cAAc,CAAG,SAAS,CAAG,CAAC,AAAA,MAAM,CACpC,cAAc,CAAG,SAAS,CAAG,CAAC,AAAA,MAAM,AAAC,CACjC,KAAK,CAAE,IAAI,CACd,AACD,AAAA,cAAc,CAAG,SAAS,CAAG,CAAC,AAAA,MAAM,CACpC,cAAc,CAAG,SAAS,CAAG,CAAC,AAAA,MAAM,AAAC,CACjC,eAAe,CAAE,IAAI,CACrB,MAAM,CAAE,WAAW,CACnB,gBAAgB,CAAE,WAAW,CAC7B,gBAAgB,CAAE,IAAI,CACtB,MAAM,CAAE,2DAA2D,CACtE,AACD,AAAA,KAAK,CAAG,cAAc,AAAC,CACnB,OAAO,CAAE,KAAK,CACjB,AACD,AAAA,KAAK,CAAG,CAAC,AAAC,CACN,OAAO,CAAE,CAAC,CACb,AACD,AAAA,oBAAoB,AAAC,CACjB,KAAK,CAAE,CAAC,CACR,IAAI,CAAE,IAAI,CACb,AACD,AAAA,mBAAmB,AAAC,CAChB,KAAK,CAAE,IAAI,CACX,IAAI,CAAE,CAAC,CACV,AACD,AAAA,gBAAgB,AAAC,CACb,OAAO,CAAE,KAAK,CACd,OAAO,CAAE,QAAQ,CACjB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,UAAU,CACvB,KAAK,CAAE,IAAI,CACX,WAAW,CAAE,MAAM,CACtB,AACD,AAAA,kBAAkB,AAAC,CACf,QAAQ,CAAE,KAAK,CACf,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,CAAC,CACR,MAAM,CAAE,CAAC,CACT,IAAI,CAAE,CAAC,CACP,OAAO,CAAE,GAAG,CACf,AACD,AAAA,WAAW,CAAG,cAAc,AAAC,CACzB,KAAK,CAAE,CAAC,CACR,IAAI,CAAE,IAAI,CACb,AACD,AAAA,OAAO,CAAC,MAAM,CACd,oBAAoB,CAAC,SAAS,CAAC,MAAM,AAAC,CAClC,OAAO,CAAE,EAAE,CACX,UAAU,CAAE,CAAC,CACb,aAAa,CAAE,SAAS,CAC3B,AACD,AAAA,OAAO,CAAC,cAAc,CACtB,oBAAoB,CAAC,SAAS,CAAC,cAAc,AAAC,CAC1C,GAAG,CAAE,IAAI,CACT,MAAM,CAAE,IAAI,CACZ,aAAa,CAAE,GAAG,CACrB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,aAAa,CAAC,cAAc,AAAC,CACzB,KAAK,CAAE,CAAC,CACR,IAAI,CAAE,IAAI,CACb,AACD,AAAA,aAAa,CAAC,mBAAmB,AAAC,CAC9B,KAAK,CAAE,IAAI,CACX,IAAI,CAAE,CAAC,CACV,CAEL,AAAA,UAAU,CACV,mBAAmB,AAAC,CAChB,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,YAAY,CACrB,cAAc,CAAE,MAAM,CACzB,AACD,AAAA,UAAU,CAAG,IAAI,CACjB,mBAAmB,CAAG,IAAI,AAAC,CACvB,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,IAAI,CACd,AACD,AAAA,UAAU,CAAG,IAAI,AAAA,MAAM,CACvB,mBAAmB,CAAG,IAAI,AAAA,MAAM,CAChC,UAAU,CAAG,IAAI,AAAA,MAAM,CACvB,mBAAmB,CAAG,IAAI,AAAA,MAAM,CAChC,UAAU,CAAG,IAAI,AAAA,OAAO,CACxB,mBAAmB,CAAG,IAAI,AAAA,OAAO,CACjC,UAAU,CAAG,IAAI,AAAA,OAAO,CACxB,mBAAmB,CAAG,IAAI,AAAA,OAAO,AAAC,CAC9B,OAAO,CAAE,CAAC,CACb,AACD,AAAA,UAAU,CAAC,IAAI,CAAG,IAAI,CACtB,UAAU,CAAC,IAAI,CAAG,UAAU,CAC5B,UAAU,CAAC,UAAU,CAAG,IAAI,CAC5B,UAAU,CAAC,UAAU,CAAG,UAAU,AAAC,CAC/B,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,YAAY,AAAC,CACT,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,YAAY,CAAC,UAAU,CACvB,YAAY,CAAC,YAAY,AAAC,CACtB,KAAK,CAAE,IAAI,CACd,AACD,AAAA,YAAY,CAAG,IAAI,CACnB,YAAY,CAAG,UAAU,CACzB,YAAY,CAAG,YAAY,AAAC,CACxB,WAAW,CAAE,GAAG,CACnB,AACD,AAAA,UAAU,CAAG,IAAI,AAAA,IAAK,CAAA,YAAY,CAAC,IAAK,CAAA,WAAW,CAAC,IAAK,CAAA,gBAAgB,CAAE,CACvE,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,UAAU,CAAG,IAAI,AAAA,YAAY,AAAC,CAC1B,WAAW,CAAE,CAAC,CACjB,AACD,AAAA,UAAU,CAAG,IAAI,AAAA,YAAY,AAAA,IAAK,CANM,WAAW,CAML,IAAK,CANM,gBAAgB,CAMJ,CACjE,uBAAuB,CAAE,CAAC,CAC1B,0BAA0B,CAAE,CAAC,CAChC,AACD,AAAA,UAAU,CAAG,IAAI,AAAA,WAAW,AAAA,IAAK,CAVX,YAAY,EAWlC,UAAU,CAAG,gBAAgB,AAAA,IAAK,CAXZ,YAAY,CAWc,CAC5C,sBAAsB,CAAE,CAAC,CACzB,yBAAyB,CAAE,CAAC,CAC/B,AACD,AAAA,UAAU,CAAG,UAAU,AAAC,CACpB,KAAK,CAAE,IAAI,CACd,AACD,AAAA,UAAU,CAAG,UAAU,AAAA,IAAK,CAlBN,YAAY,CAkBO,IAAK,CAlBN,WAAW,EAkBU,IAAI,AAAC,CAC9D,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,UAAU,CAAG,UAAU,AAAA,YAAY,AAAA,IAAK,CArBA,WAAW,EAqBI,IAAI,AAAA,WAAW,CACtE,UAAU,CAAG,UAAU,AAAA,YAAY,AAAA,IAAK,CAtBA,WAAW,EAsBI,gBAAgB,AAAC,CACpE,uBAAuB,CAAE,CAAC,CAC1B,0BAA0B,CAAE,CAAC,CAChC,AACD,AAAA,UAAU,CAAG,UAAU,AAAA,WAAW,AAAA,IAAK,CA1BjB,YAAY,EA0BqB,IAAI,AAAA,YAAY,AAAC,CACpE,sBAAsB,CAAE,CAAC,CACzB,yBAAyB,CAAE,CAAC,CAC/B,AACD,AAAA,UAAU,CAAC,gBAAgB,AAAA,OAAO,CAClC,UAAU,AAAA,KAAK,CAAC,gBAAgB,AAAC,CAC7B,OAAO,CAAE,CAAC,CACb,AACD,AAAA,UAAU,CAAG,IAAI,CAAG,gBAAgB,AAAC,CACjC,aAAa,CAAE,GAAG,CAClB,YAAY,CAAE,GAAG,CACpB,AACD,AAAA,UAAU,CAAG,OAAO,CAAG,gBAAgB,AAAC,CACpC,aAAa,CAAE,IAAI,CACnB,YAAY,CAAE,IAAI,CACrB,AACD,AAAA,UAAU,AAAA,KAAK,CAAC,gBAAgB,AAAC,CAC7B,kBAAkB,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAoB,CACxD,UAAU,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAoB,CACnD,AACD,AAAA,UAAU,AAAA,KAAK,CAAC,gBAAgB,AAAA,SAAS,AAAC,CACtC,kBAAkB,CAAE,IAAI,CACxB,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,IAAI,CAAC,MAAM,AAAC,CACR,WAAW,CAAE,CAAC,CACjB,AACD,AAAA,OAAO,CAAC,MAAM,AAAC,CACX,YAAY,CAAE,SAAS,CACvB,mBAAmB,CAAE,CAAC,CACzB,AACD,AAAA,OAAO,CAAC,OAAO,CAAC,MAAM,AAAC,CACnB,YAAY,CAAE,SAAS,CAC1B,AACD,AAAA,mBAAmB,CAAG,IAAI,CAC1B,mBAAmB,CAAG,UAAU,CAChC,mBAAmB,CAAG,UAAU,CAAG,IAAI,AAAC,CACpC,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,KAAK,CAAE,IAAI,CACX,SAAS,CAAE,IAAI,CAClB,AACD,AAAA,mBAAmB,CAAG,UAAU,CAAG,IAAI,AAAC,CACpC,KAAK,CAAE,IAAI,CACd,AACD,AAAA,mBAAmB,CAAG,IAAI,CAAG,IAAI,CACjC,mBAAmB,CAAG,IAAI,CAAG,UAAU,CACvC,mBAAmB,CAAG,UAAU,CAAG,IAAI,CACvC,mBAAmB,CAAG,UAAU,CAAG,UAAU,AAAC,CAC1C,UAAU,CAAE,IAAI,CAChB,WAAW,CAAE,CAAC,CACjB,AACD,AAAA,mBAAmB,CAAG,IAAI,AAAA,IAAK,CA9ET,YAAY,CA8EU,IAAK,CA9ET,WAAW,CA8EW,CAC1D,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,mBAAmB,CAAG,IAAI,AAAA,YAAY,AAAA,IAAK,CAjFH,WAAW,CAiFK,CACpD,uBAAuB,CAAE,GAAG,CAC5B,0BAA0B,CAAE,CAAC,CAC7B,yBAAyB,CAAE,CAAC,CAC/B,AACD,AAAA,mBAAmB,CAAG,IAAI,AAAA,WAAW,AAAA,IAAK,CAtFpB,YAAY,CAsFsB,CACpD,sBAAsB,CAAE,CAAC,CACzB,uBAAuB,CAAE,CAAC,CAC1B,yBAAyB,CAAE,GAAG,CACjC,AACD,AAAA,mBAAmB,CAAG,UAAU,AAAA,IAAK,CA3Ff,YAAY,CA2FgB,IAAK,CA3Ff,WAAW,EA2FmB,IAAI,AAAC,CACvE,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,mBAAmB,CAAG,UAAU,AAAA,YAAY,AAAA,IAAK,CA9FT,WAAW,EA8Fa,IAAI,AAAA,WAAW,CAC/E,mBAAmB,CAAG,UAAU,AAAA,YAAY,AAAA,IAAK,CA/FT,WAAW,EA+Fa,gBAAgB,AAAC,CAC7E,0BAA0B,CAAE,CAAC,CAC7B,yBAAyB,CAAE,CAAC,CAC/B,AACD,AAAA,mBAAmB,CAAG,UAAU,AAAA,WAAW,AAAA,IAAK,CAnG1B,YAAY,EAmG8B,IAAI,AAAA,YAAY,AAAC,CAC7E,sBAAsB,CAAE,CAAC,CACzB,uBAAuB,CAAE,CAAC,CAC7B,AACD,AAAA,oBAAoB,AAAC,CACjB,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,YAAY,CAAE,KAAK,CACnB,eAAe,CAAE,QAAQ,CAC5B,AACD,AAAA,oBAAoB,CAAG,IAAI,CAC3B,oBAAoB,CAAG,UAAU,AAAC,CAC9B,OAAO,CAAE,UAAU,CACnB,KAAK,CAAE,IAAI,CACX,KAAK,CAAE,EAAE,CACZ,AACD,AAAA,oBAAoB,CAAG,UAAU,CAAC,IAAI,AAAC,CACnC,KAAK,CAAE,IAAI,CACd,AACD,AAAA,oBAAoB,CAAG,UAAU,CAAC,cAAc,AAAC,CAC7C,IAAI,CAAE,IAAI,CACb,CACD,AAAA,AAAA,WAAC,CAAY,SAAS,AAArB,EAAyB,IAAI,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,GACrC,AAAA,WAAC,CAAY,SAAS,AAArB,EAAyB,UAAU,CAAG,IAAI,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,GAClD,AAAA,WAAC,CAAY,SAAS,AAArB,EAAyB,IAAI,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,GACrC,AAAA,WAAC,CAAY,SAAS,AAArB,EAAyB,UAAU,CAAG,IAAI,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAiB,CAC/D,QAAQ,CAAE,QAAQ,CAClB,IAAI,CAAE,gBAAgB,CACtB,cAAc,CAAE,IAAI,CACvB,AACD,AAAA,YAAY,AAAC,CACT,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,KAAK,CACd,eAAe,CAAE,QAAQ,CAC5B,AACD,AAAA,YAAY,CAAA,AAAA,KAAC,EAAO,MAAM,AAAb,CAAe,CACxB,KAAK,CAAE,IAAI,CACX,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,CAAC,CAClB,AACD,AAAA,YAAY,CAAC,aAAa,AAAC,CACvB,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,CAAC,CACV,KAAK,CAAE,IAAI,CACX,KAAK,CAAE,IAAI,CACX,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,eAAe,CAAG,aAAa,CAC/B,eAAe,CAAG,kBAAkB,CACpC,eAAe,CAAG,gBAAgB,CAAG,IAAI,AAAC,CACtC,MAAM,CAAE,IAAI,CACZ,OAAO,CAAE,SAAS,CAClB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,SAAS,CACtB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,MAAM,AAAA,eAAe,CAAG,aAAa,CACrC,MAAM,AAAA,eAAe,CAAG,kBAAkB,CAC1C,MAAM,AAAA,eAAe,CAAG,gBAAgB,CAAG,IAAI,AAAC,CAC5C,MAAM,CAAE,IAAI,CACZ,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,QAAQ,AAAA,eAAe,CAAG,aAAa,CACvC,QAAQ,AAAA,eAAe,CAAG,kBAAkB,CAC5C,QAAQ,AAAA,eAAe,CAAG,gBAAgB,CAAG,IAAI,CACjD,MAAM,CAAA,AAAA,QAAC,AAAA,CAAS,eAAe,CAAG,aAAa,CAC/C,MAAM,CAAA,AAAA,QAAC,AAAA,CAAS,eAAe,CAAG,kBAAkB,CACpD,MAAM,CAAA,AAAA,QAAC,AAAA,CAAS,eAAe,CAAG,gBAAgB,CAAG,IAAI,AAAC,CACtD,MAAM,CAAE,IAAI,CACf,AACD,AAAA,eAAe,CAAG,aAAa,CAC/B,eAAe,CAAG,kBAAkB,CACpC,eAAe,CAAG,gBAAgB,CAAG,IAAI,AAAC,CACtC,MAAM,CAAE,IAAI,CACZ,OAAO,CAAE,QAAQ,CACjB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,GAAG,CAChB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,MAAM,AAAA,eAAe,CAAG,aAAa,CACrC,MAAM,AAAA,eAAe,CAAG,kBAAkB,CAC1C,MAAM,AAAA,eAAe,CAAG,gBAAgB,CAAG,IAAI,AAAC,CAC5C,MAAM,CAAE,IAAI,CACZ,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,QAAQ,AAAA,eAAe,CAAG,aAAa,CACvC,QAAQ,AAAA,eAAe,CAAG,kBAAkB,CAC5C,QAAQ,AAAA,eAAe,CAAG,gBAAgB,CAAG,IAAI,CACjD,MAAM,CAAA,AAAA,QAAC,AAAA,CAAS,eAAe,CAAG,aAAa,CAC/C,MAAM,CAAA,AAAA,QAAC,AAAA,CAAS,eAAe,CAAG,kBAAkB,CACpD,MAAM,CAAA,AAAA,QAAC,AAAA,CAAS,eAAe,CAAG,gBAAgB,CAAG,IAAI,AAAC,CACtD,MAAM,CAAE,IAAI,CACf,AACD,AAAA,kBAAkB,CAClB,gBAAgB,CAChB,YAAY,CAAC,aAAa,AAAC,CACvB,OAAO,CAAE,UAAU,CACtB,AACD,AAAA,kBAAkB,AAAA,IAAK,CArMD,YAAY,CAqME,IAAK,CArMD,WAAW,EAsMnD,gBAAgB,AAAA,IAAK,CAtMC,YAAY,CAsMA,IAAK,CAtMC,WAAW,EAuMnD,YAAY,CAAC,aAAa,AAAA,IAAK,CAvMT,YAAY,CAuMU,IAAK,CAvMT,WAAW,CAuMW,CAC1D,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,kBAAkB,CAClB,gBAAgB,AAAC,CACb,KAAK,CAAE,EAAE,CACT,WAAW,CAAE,MAAM,CACnB,cAAc,CAAE,MAAM,CACzB,AACD,AAAA,kBAAkB,AAAC,CACf,OAAO,CAAE,QAAQ,CACjB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,MAAM,CACnB,WAAW,CAAE,CAAC,CACd,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,MAAM,CAClB,gBAAgB,CAAE,IAAI,CACtB,MAAM,CAAE,cAAc,CACtB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,kBAAkB,AAAA,SAAS,AAAC,CACxB,OAAO,CAAE,QAAQ,CACjB,SAAS,CAAE,IAAI,CACf,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,kBAAkB,AAAA,SAAS,AAAC,CACxB,OAAO,CAAE,SAAS,CAClB,SAAS,CAAE,IAAI,CACf,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,kBAAkB,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EACzB,kBAAkB,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAiB,CACtC,UAAU,CAAE,CAAC,CAChB,AACD,AAAA,YAAY,CAAC,aAAa,AAAA,YAAY,CACtC,kBAAkB,AAAA,YAAY,CAC9B,gBAAgB,AAAA,YAAY,CAAG,IAAI,CACnC,gBAAgB,AAAA,YAAY,CAAG,UAAU,CAAG,IAAI,CAChD,gBAAgB,AAAA,YAAY,CAAG,gBAAgB,CAC/C,gBAAgB,AAAA,WAAW,CAAG,IAAI,AAAA,IAAK,CA9OC,WAAW,CA8OA,IAAK,CA9OC,gBAAgB,EA+OzE,gBAAgB,AAAA,WAAW,CAAG,UAAU,AAAA,IAAK,CA/OL,WAAW,EA+OS,IAAI,AAAC,CAC7D,uBAAuB,CAAE,CAAC,CAC1B,0BAA0B,CAAE,CAAC,CAChC,AACD,AAAA,kBAAkB,AAAA,YAAY,AAAC,CAC3B,YAAY,CAAE,CAAC,CAClB,AACD,AAAA,YAAY,CAAC,aAAa,AAAA,WAAW,CACrC,kBAAkB,AAAA,WAAW,CAC7B,gBAAgB,AAAA,WAAW,CAAG,IAAI,CAClC,gBAAgB,AAAA,WAAW,CAAG,UAAU,CAAG,IAAI,CAC/C,gBAAgB,AAAA,WAAW,CAAG,gBAAgB,CAC9C,gBAAgB,AAAA,YAAY,CAAG,IAAI,AAAA,IAAK,CA3PlB,YAAY,EA4PlC,gBAAgB,AAAA,YAAY,CAAG,UAAU,AAAA,IAAK,CA5PxB,YAAY,EA4P4B,IAAI,AAAC,CAC/D,sBAAsB,CAAE,CAAC,CACzB,yBAAyB,CAAE,CAAC,CAC/B,AACD,AAAA,kBAAkB,AAAA,WAAW,AAAC,CAC1B,WAAW,CAAE,CAAC,CACjB,AACD,AAAA,gBAAgB,AAAC,CACb,QAAQ,CAAE,QAAQ,CAClB,SAAS,CAAE,CAAC,CACZ,WAAW,CAAE,MAAM,CACtB,AACD,AAAA,gBAAgB,CAAG,IAAI,AAAC,CACpB,QAAQ,CAAE,QAAQ,CACrB,AACD,AAAA,gBAAgB,CAAG,IAAI,CAAG,IAAI,AAAC,CAC3B,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,gBAAgB,CAAG,IAAI,AAAA,MAAM,CAC7B,gBAAgB,CAAG,IAAI,AAAA,MAAM,CAC7B,gBAAgB,CAAG,IAAI,AAAA,OAAO,AAAC,CAC3B,OAAO,CAAE,CAAC,CACb,AACD,AAAA,gBAAgB,AAAA,YAAY,CAAG,IAAI,CACnC,gBAAgB,AAAA,YAAY,CAAG,UAAU,AAAC,CACtC,YAAY,CAAE,IAAI,CACrB,AACD,AAAA,gBAAgB,AAAA,WAAW,CAAG,IAAI,CAClC,gBAAgB,AAAA,WAAW,CAAG,UAAU,AAAC,CACrC,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,IAAI,AAAC,CACD,YAAY,CAAE,CAAC,CACf,aAAa,CAAE,CAAC,CAChB,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,IAAI,CAAG,EAAE,AAAC,CACN,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,KAAK,CACjB,AACD,AAAA,IAAI,CAAG,EAAE,CAAG,CAAC,AAAC,CACV,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,KAAK,CACd,OAAO,CAAE,SAAS,CACrB,AACD,AAAA,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,CACnB,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,AAAC,CAChB,eAAe,CAAE,IAAI,CACrB,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,IAAI,CAAG,EAAE,AAAA,SAAS,CAAG,CAAC,AAAC,CACnB,KAAK,CAAE,IAAI,CACd,AACD,AAAA,IAAI,CAAG,EAAE,AAAA,SAAS,CAAG,CAAC,AAAA,MAAM,CAC5B,IAAI,CAAG,EAAE,AAAA,SAAS,CAAG,CAAC,AAAA,MAAM,AAAC,CACzB,KAAK,CAAE,IAAI,CACX,eAAe,CAAE,IAAI,CACrB,MAAM,CAAE,WAAW,CACnB,gBAAgB,CAAE,WAAW,CAChC,AACD,AAAA,IAAI,CAAC,KAAK,CAAG,CAAC,CACd,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,CACpB,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,AAAC,CACjB,gBAAgB,CAAE,IAAI,CACtB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,IAAI,CAAC,YAAY,AAAC,CACd,MAAM,CAAE,GAAG,CACX,MAAM,CAAE,KAAK,CACb,QAAQ,CAAE,MAAM,CAChB,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,IAAI,CAAG,EAAE,CAAG,CAAC,CAAG,GAAG,AAAC,CAChB,SAAS,CAAE,IAAI,CAClB,AACD,AAAA,SAAS,AAAC,CACN,aAAa,CAAE,cAAc,CAChC,AACD,AAAA,SAAS,CAAG,EAAE,AAAC,CACX,KAAK,CAAE,IAAI,CACX,aAAa,CAAE,IAAI,CACtB,AACD,AAAA,SAAS,CAAG,EAAE,CAAG,CAAC,AAAC,CACf,YAAY,CAAE,GAAG,CACjB,WAAW,CAAE,UAAU,CACvB,MAAM,CAAE,qBAAqB,CAC7B,aAAa,CAAE,WAAW,CAC7B,AACD,AAAA,SAAS,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,AAAC,CACrB,YAAY,CAAE,cAAc,CAC/B,AACD,AAAA,SAAS,CAAG,EAAE,AAAA,OAAO,CAAG,CAAC,CACzB,SAAS,CAAG,EAAE,AAAA,OAAO,CAAG,CAAC,AAAA,MAAM,CAC/B,SAAS,CAAG,EAAE,AAAA,OAAO,CAAG,CAAC,AAAA,MAAM,AAAC,CAC5B,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,OAAO,CACf,gBAAgB,CAAE,IAAI,CACtB,MAAM,CAAE,cAAc,CACtB,mBAAmB,CAAE,WAAW,CACnC,AACD,AAAA,SAAS,AAAA,cAAc,AAAC,CACpB,KAAK,CAAE,IAAI,CACX,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,SAAS,AAAA,cAAc,CAAG,EAAE,AAAC,CACzB,KAAK,CAAE,IAAI,CACd,AACD,AAAA,SAAS,AAAA,cAAc,CAAG,EAAE,CAAG,CAAC,AAAC,CAC7B,aAAa,CAAE,GAAG,CAClB,UAAU,CAAE,MAAM,CACrB,AACD,AAAA,SAAS,AAAA,cAAc,CAAG,SAAS,CAAC,cAAc,AAAC,CAC/C,GAAG,CAAE,IAAI,CACT,IAAI,CAAE,IAAI,CACb,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EAXxB,AAAA,SAAS,AAAA,cAAc,CAAG,EAAE,AAYK,CACzB,OAAO,CAAE,UAAU,CACnB,KAAK,CAAE,EAAE,CACZ,AAZL,AAAA,SAAS,AAAA,cAAc,CAAG,EAAE,CAAG,CAAC,AAaK,CAC7B,aAAa,CAAE,CAAC,CACnB,CAfL,AAAA,SAAS,AAAA,cAAc,CAAG,EAAE,CAAG,CAAC,AAiBC,CAC7B,YAAY,CAAE,CAAC,CACf,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,SAAS,AAAA,cAAc,CAAG,OAAO,CAAG,CAAC,CACrC,SAAS,AAAA,cAAc,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,CAC3C,SAAS,AAAA,cAAc,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,AAAC,CACxC,MAAM,CAAE,cAAc,CACzB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EA1BxB,AAAA,SAAS,AAAA,cAAc,CAAG,EAAE,CAAG,CAAC,AA2BK,CAC7B,aAAa,CAAE,cAAc,CAC7B,aAAa,CAAE,WAAW,CAC7B,AATL,AAAA,SAAS,AAAA,cAAc,CAAG,OAAO,CAAG,CAAC,CACrC,SAAS,AAAA,cAAc,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,CAC3C,SAAS,AAAA,cAAc,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,AAUK,CACxC,mBAAmB,CAAE,IAAI,CAC5B,CAEL,AAAA,UAAU,CAAG,EAAE,AAAC,CACZ,KAAK,CAAE,IAAI,CACd,AACD,AAAA,UAAU,CAAG,EAAE,CAAG,CAAC,AAAC,CAChB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,UAAU,CAAG,EAAE,CAAG,EAAE,AAAC,CACjB,WAAW,CAAE,GAAG,CACnB,AACD,AAAA,UAAU,CAAG,EAAE,AAAA,OAAO,CAAG,CAAC,CAC1B,UAAU,CAAG,EAAE,AAAA,OAAO,CAAG,CAAC,AAAA,MAAM,CAChC,UAAU,CAAG,EAAE,AAAA,OAAO,CAAG,CAAC,AAAA,MAAM,AAAC,CAC7B,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,YAAY,CAAG,EAAE,AAAC,CACd,KAAK,CAAE,IAAI,CACd,AACD,AAAA,YAAY,CAAG,EAAE,CAAG,EAAE,AAAC,CACnB,UAAU,CAAE,GAAG,CACf,WAAW,CAAE,CAAC,CACjB,AACD,AAAA,cAAc,AAAC,CACX,KAAK,CAAE,IAAI,CACd,AACD,AAAA,cAAc,CAAG,EAAE,AAAC,CAChB,KAAK,CAAE,IAAI,CACd,AACD,AAAA,cAAc,CAAG,EAAE,CAAG,CAAC,AAAC,CACpB,aAAa,CAAE,GAAG,CAClB,UAAU,CAAE,MAAM,CACrB,AACD,AAAA,cAAc,CAAG,SAAS,CAAC,cAAc,AAAC,CACtC,GAAG,CAAE,IAAI,CACT,IAAI,CAAE,IAAI,CACb,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EAXxB,AAAA,cAAc,CAAG,EAAE,AAYK,CAChB,OAAO,CAAE,UAAU,CACnB,KAAK,CAAE,EAAE,CACZ,AAZL,AAAA,cAAc,CAAG,EAAE,CAAG,CAAC,AAaK,CACpB,aAAa,CAAE,CAAC,CACnB,CAEL,AAAA,mBAAmB,AAAC,CAChB,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,mBAAmB,CAAG,EAAE,CAAG,CAAC,AAAC,CACzB,YAAY,CAAE,CAAC,CACf,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,mBAAmB,CAAG,OAAO,CAAG,CAAC,CACjC,mBAAmB,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,CACvC,mBAAmB,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,AAAC,CACpC,MAAM,CAAE,cAAc,CACzB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EATxB,AAAA,mBAAmB,CAAG,EAAE,CAAG,CAAC,AAUK,CACzB,aAAa,CAAE,cAAc,CAC7B,aAAa,CAAE,WAAW,CAC7B,AATL,AAAA,mBAAmB,CAAG,OAAO,CAAG,CAAC,CACjC,mBAAmB,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,CACvC,mBAAmB,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,AAUK,CACpC,mBAAmB,CAAE,IAAI,CAC5B,CAEL,AAAA,YAAY,CAAG,SAAS,AAAC,CACrB,OAAO,CAAE,IAAI,CAChB,AACD,AAAA,YAAY,CAAG,OAAO,AAAC,CACnB,OAAO,CAAE,KAAK,CACjB,AACD,AAAA,SAAS,CAAC,cAAc,AAAC,CACrB,UAAU,CAAE,IAAI,CAChB,sBAAsB,CAAE,CAAC,CACzB,uBAAuB,CAAE,CAAC,CAC7B,AAz0HG,AAAA,OAAO,AA00HH,CACJ,QAAQ,CAAE,QAAQ,CAClB,UAAU,CAAE,IAAI,CAChB,aAAa,CAAE,IAAI,CACnB,MAAM,CAAE,qBAAqB,CAChC,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EAh1HpB,AAAA,OAAO,AAi1HC,CACJ,aAAa,CAAE,GAAG,CACrB,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,cAAc,AAAC,CACX,KAAK,CAAE,IAAI,CACd,CAEL,AAAA,gBAAgB,AAAC,CACb,aAAa,CAAE,IAAI,CACnB,YAAY,CAAE,IAAI,CAClB,UAAU,CAAE,OAAO,CACnB,0BAA0B,CAAE,KAAK,CACjC,UAAU,CAAE,qBAAqB,CACjC,kBAAkB,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAwB,CAC1D,UAAU,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAwB,CACrD,AACD,AAAA,gBAAgB,AAAA,GAAG,AAAC,CAChB,UAAU,CAAE,IAAI,CACnB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EAZxB,AAAA,gBAAgB,AAaK,CACb,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,CAAC,CACb,kBAAkB,CAAE,IAAI,CACxB,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,gBAAgB,AAAA,SAAS,AAAC,CACtB,OAAO,CAAE,gBAAgB,CACzB,MAAM,CAAE,eAAe,CACvB,cAAc,CAAE,CAAC,CACjB,QAAQ,CAAE,kBAAkB,CAC/B,AAfL,AAAA,gBAAgB,AAAA,GAAG,AAgBK,CAChB,UAAU,CAAE,OAAO,CACtB,AACD,AAAA,iBAAiB,CAAC,gBAAgB,CAClC,kBAAkB,CAAC,gBAAgB,CACnC,oBAAoB,CAAC,gBAAgB,AAAC,CAClC,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,CAAC,CAClB,CAEL,AAAA,iBAAiB,CAAC,gBAAgB,CAClC,oBAAoB,CAAC,gBAAgB,AAAC,CAClC,UAAU,CAAE,KAAK,CACpB,AACD,MAAM,EAAE,gBAAgB,EAAE,KAAK,OAAO,WAAW,EAAE,SAAS,EAJ5D,AAAA,iBAAiB,CAAC,gBAAgB,CAClC,oBAAoB,CAAC,gBAAgB,AAKK,CAClC,UAAU,CAAE,KAAK,CACpB,CAEL,AAAA,UAAU,CAAG,cAAc,CAC3B,gBAAgB,CAAG,cAAc,CACjC,UAAU,CAAG,gBAAgB,CAC7B,gBAAgB,CAAG,gBAAgB,AAAC,CAChC,YAAY,CAAE,KAAK,CACnB,WAAW,CAAE,KAAK,CACrB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EAPxB,AAAA,UAAU,CAAG,cAAc,CAC3B,gBAAgB,CAAG,cAAc,CACjC,UAAU,CAAG,gBAAgB,CAC7B,gBAAgB,CAAG,gBAAgB,AAQK,CAChC,YAAY,CAAE,CAAC,CACf,WAAW,CAAE,CAAC,CACjB,CAEL,AAAA,kBAAkB,AAAC,CACf,OAAO,CAAE,IAAI,CACb,YAAY,CAAE,OAAO,CACxB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EAJxB,AAAA,kBAAkB,AAKK,CACf,aAAa,CAAE,CAAC,CACnB,CAEL,AAAA,iBAAiB,CACjB,oBAAoB,AAAC,CACjB,QAAQ,CAAE,KAAK,CACf,KAAK,CAAE,CAAC,CACR,IAAI,CAAE,CAAC,CACP,OAAO,CAAE,IAAI,CAChB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EAPxB,AAAA,iBAAiB,CACjB,oBAAoB,AAQK,CACjB,aAAa,CAAE,CAAC,CACnB,CAEL,AAAA,iBAAiB,AAAC,CACd,GAAG,CAAE,CAAC,CACN,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,oBAAoB,AAAC,CACjB,MAAM,CAAE,CAAC,CACT,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,aAAa,AAAC,CACV,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,OAAO,CAAE,SAAS,CAClB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,aAAa,AAAA,MAAM,CACnB,aAAa,AAAA,MAAM,AAAC,CAChB,eAAe,CAAE,IAAI,CACxB,AACD,AAAA,aAAa,CAAG,GAAG,AAAC,CAChB,OAAO,CAAE,KAAK,CACjB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,OAAO,CAAG,UAAU,CAAC,aAAa,CAClC,OAAO,CAAG,gBAAgB,CAAC,aAAa,AAAC,CACrC,WAAW,CAAE,KAAK,CACrB,CAEL,AAAA,cAAc,AAAC,CACX,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,KAAK,CACZ,OAAO,CAAE,QAAQ,CACjB,UAAU,CAAE,GAAG,CACf,YAAY,CAAE,IAAI,CAClB,aAAa,CAAE,GAAG,CAClB,gBAAgB,CAAE,WAAW,CAC7B,gBAAgB,CAAE,IAAI,CACtB,MAAM,CAAE,qBAAqB,CAC7B,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,cAAc,AAAA,MAAM,AAAC,CACjB,OAAO,CAAE,CAAC,CACb,AACD,AAAA,cAAc,CAAC,SAAS,AAAC,CACrB,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,GAAG,CACX,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,cAAc,CAAC,SAAS,CAAG,SAAS,AAAC,CACjC,UAAU,CAAE,GAAG,CAClB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EAxBxB,AAAA,cAAc,AAyBK,CACX,OAAO,CAAE,IAAI,CAChB,CAEL,AAAA,WAAW,AAAC,CACR,MAAM,CAAE,WAAW,CACtB,AACD,AAAA,WAAW,CAAG,EAAE,CAAG,CAAC,AAAC,CACjB,WAAW,CAAE,IAAI,CACjB,cAAc,CAAE,IAAI,CACpB,WAAW,CAAE,IAAI,CACpB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,WAAW,CAAC,KAAK,CAAC,cAAc,AAAC,CAC7B,QAAQ,CAAE,MAAM,CAChB,KAAK,CAAE,IAAI,CACX,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,CAAC,CACb,gBAAgB,CAAE,WAAW,CAC7B,MAAM,CAAE,CAAC,CACT,kBAAkB,CAAE,IAAI,CACxB,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,EAAE,CAAG,CAAC,CACzC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,AAAC,CAC9C,OAAO,CAAE,iBAAiB,CAC7B,AACD,AAAA,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,EAAE,CAAG,CAAC,AAAC,CACtC,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,CAC/C,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,AAAC,CAC5C,gBAAgB,CAAE,IAAI,CACzB,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,EA/BxB,AAAA,WAAW,AAgCK,CACR,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,CAAC,CACZ,AACD,AAAA,WAAW,CAAG,EAAE,AAAC,CACb,KAAK,CAAE,IAAI,CACd,AAnCL,AAAA,WAAW,CAAG,EAAE,CAAG,CAAC,AAoCK,CACjB,WAAW,CAAE,IAAI,CACjB,cAAc,CAAE,IAAI,CACvB,CAEL,AAAA,YAAY,AAAC,CACT,OAAO,CAAE,SAAS,CAClB,UAAU,CAAE,GAAG,CACf,YAAY,CAAE,KAAK,CACnB,aAAa,CAAE,GAAG,CAClB,WAAW,CAAE,KAAK,CAClB,UAAU,CAAE,qBAAqB,CACjC,aAAa,CAAE,qBAAqB,CACpC,kBAAkB,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAwB,CAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAwB,CAC5F,UAAU,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAwB,CAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAwB,CACvF,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,YAAY,CAAC,WAAW,AAAC,CACrB,OAAO,CAAE,YAAY,CACrB,aAAa,CAAE,CAAC,CAChB,cAAc,CAAE,MAAM,CACzB,AACD,AAAA,YAAY,CAAC,aAAa,AAAC,CACvB,OAAO,CAAE,YAAY,CACrB,KAAK,CAAE,IAAI,CACX,cAAc,CAAE,MAAM,CACzB,AACD,AAAA,YAAY,CAAC,oBAAoB,CAAjC,YAAY,CgBrqIhB,WAAW,CAiBP,GAAG,CAAA,AAAA,KAAC,EAAO,SAAS,AAAhB,EAAoB,cAAc,CAjB1C,WAAW,ChBqqIP,YAAY,CgBppIZ,GAAG,CAAA,AAAA,KAAC,EAAO,SAAS,AAAhB,EAAoB,cAAc,ChBopItC,YAAY,CgBrqIhB,WAAW,CAkBP,GAAG,CAAA,AAAA,KAAC,EAAO,UAAU,AAAjB,EAAqB,cAAc,CAlB3C,WAAW,ChBqqIP,YAAY,CgBnpIZ,GAAG,CAAA,AAAA,KAAC,EAAO,UAAU,AAAjB,EAAqB,cAAc,ChBmpIvC,YAAY,CgBrqIhB,WAAW,CAmBP,GAAG,CAAA,AAAA,KAAC,EAAO,YAAY,AAAnB,EAAuB,cAAc,CAnB7C,WAAW,ChBqqIP,YAAY,CgBlpIZ,GAAG,CAAA,AAAA,KAAC,EAAO,YAAY,AAAnB,EAAuB,cAAc,AhBkpIP,CAC9B,OAAO,CAAE,YAAY,CACxB,AACD,AAAA,YAAY,CAAC,YAAY,AAAC,CACtB,OAAO,CAAE,YAAY,CACrB,cAAc,CAAE,MAAM,CACzB,AACD,AAAA,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAC5C,YAAY,CAAC,YAAY,CAAC,gBAAgB,CAC1C,YAAY,CAAC,YAAY,CAAC,aAAa,AAAC,CACpC,KAAK,CAAE,IAAI,CACd,AACD,AAAA,YAAY,CAAC,YAAY,CAAG,aAAa,AAAC,CACtC,KAAK,CAAE,IAAI,CACd,AACD,AAAA,YAAY,CAAC,cAAc,AAAC,CACxB,aAAa,CAAE,CAAC,CAChB,cAAc,CAAE,MAAM,CACzB,AACD,AAAA,YAAY,CAAC,MAAM,CACnB,YAAY,CAAC,SAAS,AAAC,CACnB,OAAO,CAAE,YAAY,CACrB,UAAU,CAAE,CAAC,CACb,aAAa,CAAE,CAAC,CAChB,cAAc,CAAE,MAAM,CACzB,AACD,AAAA,YAAY,CAAC,MAAM,CAAC,KAAK,CACzB,YAAY,CAAC,SAAS,CAAC,KAAK,AAAC,CACzB,YAAY,CAAE,CAAC,CAClB,AACD,AAAA,YAAY,CAAC,MAAM,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EAC1B,YAAY,CAAC,SAAS,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAiB,CAC1C,QAAQ,CAAE,QAAQ,CAClB,WAAW,CAAE,CAAC,CACjB,AACD,AAAA,YAAY,CAAC,aAAa,CAAC,sBAAsB,AAAC,CAC9C,GAAG,CAAE,CAAC,CACT,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,EAjDpB,AAAA,YAAY,CAAC,WAAW,AAkDC,CACrB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,YAAY,CAAC,WAAW,AAAA,WAAW,AAAC,CAChC,aAAa,CAAE,CAAC,CACnB,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,EArExB,AAAA,YAAY,AAsEK,CACT,KAAK,CAAE,IAAI,CACX,WAAW,CAAE,CAAC,CACd,cAAc,CAAE,CAAC,CACjB,YAAY,CAAE,CAAC,CACf,WAAW,CAAE,CAAC,CACd,MAAM,CAAE,CAAC,CACT,kBAAkB,CAAE,IAAI,CACxB,UAAU,CAAE,IAAI,CACnB,CAEL,AAAA,WAAW,CAAG,EAAE,CAAG,cAAc,AAAC,CAC9B,UAAU,CAAE,CAAC,CACb,sBAAsB,CAAE,CAAC,CACzB,uBAAuB,CAAE,CAAC,CAC7B,AACD,AAAA,oBAAoB,CAAC,WAAW,CAAG,EAAE,CAAG,cAAc,AAAC,CACnD,aAAa,CAAE,CAAC,CAChB,sBAAsB,CAAE,GAAG,CAC3B,uBAAuB,CAAE,GAAG,CAC5B,0BAA0B,CAAE,CAAC,CAC7B,yBAAyB,CAAE,CAAC,CAC/B,AACD,AAAA,WAAW,AAAC,CACR,UAAU,CAAE,GAAG,CACf,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,WAAW,AAAA,OAAO,AAAC,CACf,UAAU,CAAE,IAAI,CAChB,aAAa,CAAE,IAAI,CACtB,AACD,AAAA,WAAW,AAAA,OAAO,AAAC,CACf,UAAU,CAAE,IAAI,CAChB,aAAa,CAAE,IAAI,CACtB,AACD,AAAA,YAAY,AAAC,CACT,UAAU,CAAE,IAAI,CAChB,aAAa,CAAE,IAAI,CACtB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EAJxB,AAAA,YAAY,AAKK,CACT,KAAK,CAAE,IAAI,CACX,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,IAAI,CACpB,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,YAAY,AAAC,CACT,KAAK,CAAE,eAAe,CACzB,AACD,AAAA,aAAa,AAAC,CACV,KAAK,CAAE,gBAAgB,CACvB,YAAY,CAAE,KAAK,CACtB,AACD,AAAA,aAAa,GAAG,aAAa,AAAC,CAC1B,YAAY,CAAE,CAAC,CAClB,CAEL,AAAA,eAAe,AAAC,CACZ,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,eAAe,CAAC,aAAa,AAAC,CAC1B,KAAK,CAAE,IAAI,CACd,AACD,AAAA,eAAe,CAAC,aAAa,AAAA,MAAM,CACnC,eAAe,CAAC,aAAa,AAAA,MAAM,AAAC,CAChC,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,WAAW,CAChC,AACD,AAAA,eAAe,CAAC,YAAY,AAAC,CACzB,KAAK,CAAE,IAAI,CACd,AACD,AAAA,eAAe,CAAC,WAAW,CAAG,EAAE,CAAG,CAAC,AAAC,CACjC,KAAK,CAAE,IAAI,CACd,AACD,AAAA,eAAe,CAAC,WAAW,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,CAC1C,eAAe,CAAC,WAAW,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,AAAC,CACvC,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,WAAW,CAChC,AACD,AAAA,eAAe,CAAC,WAAW,CAAG,OAAO,CAAG,CAAC,CACzC,eAAe,CAAC,WAAW,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,CAC/C,eAAe,CAAC,WAAW,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,AAAC,CAC5C,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,eAAe,CAAC,WAAW,CAAG,SAAS,CAAG,CAAC,CAC3C,eAAe,CAAC,WAAW,CAAG,SAAS,CAAG,CAAC,AAAA,MAAM,CACjD,eAAe,CAAC,WAAW,CAAG,SAAS,CAAG,CAAC,AAAA,MAAM,AAAC,CAC9C,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,WAAW,CAChC,AACD,AAAA,eAAe,CAAC,cAAc,AAAC,CAC3B,YAAY,CAAE,IAAI,CACrB,AACD,AAAA,eAAe,CAAC,cAAc,AAAA,MAAM,CACpC,eAAe,CAAC,cAAc,AAAA,MAAM,AAAC,CACjC,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,eAAe,CAAC,cAAc,CAAC,SAAS,AAAC,CACrC,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,eAAe,CAAC,gBAAgB,CAChC,eAAe,CAAC,YAAY,AAAC,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,eAAe,CAAC,WAAW,CAAG,KAAK,CAAG,CAAC,CACvC,eAAe,CAAC,WAAW,CAAG,KAAK,CAAG,CAAC,AAAA,MAAM,CAC7C,eAAe,CAAC,WAAW,CAAG,KAAK,CAAG,CAAC,AAAA,MAAM,AAAC,CAC1C,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CAC5B,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,EAAE,CAAG,CAAC,AAAC,CACtD,KAAK,CAAE,IAAI,CACd,AACD,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,CAC/D,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,AAAC,CAC5D,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,WAAW,CAChC,AACD,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,OAAO,CAAG,CAAC,CAC9D,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,CACpE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,AAAC,CACjE,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,SAAS,CAAG,CAAC,CAChE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,SAAS,CAAG,CAAC,AAAA,MAAM,CACtE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,SAAS,CAAG,CAAC,AAAA,MAAM,AAAC,CACnE,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,WAAW,CAChC,CAEL,AAAA,eAAe,CAAC,YAAY,AAAC,CACzB,KAAK,CAAE,IAAI,CACd,AACD,AAAA,eAAe,CAAC,YAAY,AAAA,MAAM,AAAC,CAC/B,KAAK,CAAE,IAAI,CACd,AACD,AAAA,eAAe,CAAC,SAAS,AAAC,CACtB,KAAK,CAAE,IAAI,CACd,AACD,AAAA,eAAe,CAAC,SAAS,AAAA,MAAM,CAC/B,eAAe,CAAC,SAAS,AAAA,MAAM,AAAC,CAC5B,KAAK,CAAE,IAAI,CACd,AACD,AAAA,eAAe,CAAC,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CACzC,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,eAAe,CAAC,SAAS,AAAA,MAAM,CAClD,eAAe,CAAC,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CACzC,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,eAAe,CAAC,SAAS,AAAA,MAAM,AAAC,CAC/C,KAAK,CAAE,IAAI,CACd,AACD,AAAA,eAAe,AAAC,CACZ,gBAAgB,CAAE,IAAI,CACtB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,eAAe,CAAC,aAAa,AAAC,CAC1B,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,eAAe,CAAC,aAAa,AAAA,MAAM,CACnC,eAAe,CAAC,aAAa,AAAA,MAAM,AAAC,CAChC,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,WAAW,CAChC,AACD,AAAA,eAAe,CAAC,YAAY,AAAC,CACzB,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,eAAe,CAAC,WAAW,CAAG,EAAE,CAAG,CAAC,AAAC,CACjC,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,eAAe,CAAC,WAAW,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,CAC1C,eAAe,CAAC,WAAW,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,AAAC,CACvC,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,WAAW,CAChC,AACD,AAAA,eAAe,CAAC,WAAW,CAAG,OAAO,CAAG,CAAC,CACzC,eAAe,CAAC,WAAW,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,CAC/C,eAAe,CAAC,WAAW,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,AAAC,CAC5C,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,eAAe,CAAC,WAAW,CAAG,SAAS,CAAG,CAAC,CAC3C,eAAe,CAAC,WAAW,CAAG,SAAS,CAAG,CAAC,AAAA,MAAM,CACjD,eAAe,CAAC,WAAW,CAAG,SAAS,CAAG,CAAC,AAAA,MAAM,AAAC,CAC9C,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,WAAW,CAChC,AACD,AAAA,eAAe,CAAC,cAAc,AAAC,CAC3B,YAAY,CAAE,IAAI,CACrB,AACD,AAAA,eAAe,CAAC,cAAc,AAAA,MAAM,CACpC,eAAe,CAAC,cAAc,AAAA,MAAM,AAAC,CACjC,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,eAAe,CAAC,cAAc,CAAC,SAAS,AAAC,CACrC,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,eAAe,CAAC,gBAAgB,CAChC,eAAe,CAAC,YAAY,AAAC,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,eAAe,CAAC,WAAW,CAAG,KAAK,CAAG,CAAC,CACvC,eAAe,CAAC,WAAW,CAAG,KAAK,CAAG,CAAC,AAAA,MAAM,CAC7C,eAAe,CAAC,WAAW,CAAG,KAAK,CAAG,CAAC,AAAA,MAAM,AAAC,CAC1C,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CAC5B,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,gBAAgB,AAAC,CAChE,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,AAAC,CACtD,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,EAAE,CAAG,CAAC,AAAC,CACtD,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,CAC/D,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,AAAC,CAC5D,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,WAAW,CAChC,AACD,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,OAAO,CAAG,CAAC,CAC9D,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,CACpE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,AAAC,CACjE,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,SAAS,CAAG,CAAC,CAChE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,SAAS,CAAG,CAAC,AAAA,MAAM,CACtE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,SAAS,CAAG,CAAC,AAAA,MAAM,AAAC,CACnE,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,WAAW,CAChC,CAEL,AAAA,eAAe,CAAC,YAAY,AAAC,CACzB,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,eAAe,CAAC,YAAY,AAAA,MAAM,AAAC,CAC/B,KAAK,CAAE,IAAI,CACd,AACD,AAAA,eAAe,CAAC,SAAS,AAAC,CACtB,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,eAAe,CAAC,SAAS,AAAA,MAAM,CAC/B,eAAe,CAAC,SAAS,AAAA,MAAM,AAAC,CAC5B,KAAK,CAAE,IAAI,CACd,AACD,AAAA,eAAe,CAAC,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CACzC,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,eAAe,CAAC,SAAS,AAAA,MAAM,CAClD,eAAe,CAAC,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CACzC,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,eAAe,CAAC,SAAS,AAAA,MAAM,AAAC,CAC/C,KAAK,CAAE,IAAI,CACd,AACD,AAAA,WAAW,AAAC,CACR,OAAO,CAAE,QAAQ,CACjB,aAAa,CAAE,IAAI,CACnB,UAAU,CAAE,IAAI,CAChB,gBAAgB,CAAE,OAAO,CACzB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,WAAW,CAAG,EAAE,AAAC,CACb,OAAO,CAAE,YAAY,CACxB,AACD,AAAA,WAAW,CAAG,EAAE,CAAG,EAAE,AAAA,OAAO,AAAC,CACzB,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,OAAO,CAAE,QAAQ,CACpB,AACD,AAAA,WAAW,CAAG,OAAO,AAAC,CAClB,KAAK,CAAE,IAAI,CACd,AACD,AAAA,WAAW,AAAC,CACR,OAAO,CAAE,YAAY,CACrB,YAAY,CAAE,CAAC,CACf,MAAM,CAAE,MAAM,CACd,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,WAAW,CAAG,EAAE,AAAC,CACb,OAAO,CAAE,MAAM,CAClB,AACD,AAAA,WAAW,CAAG,EAAE,CAAG,CAAC,CACpB,WAAW,CAAG,EAAE,CAAG,IAAI,AAAC,CACpB,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,IAAI,CACX,OAAO,CAAE,QAAQ,CACjB,WAAW,CAAE,IAAI,CACjB,WAAW,CAAE,UAAU,CACvB,KAAK,CAAE,OAAO,CACd,eAAe,CAAE,IAAI,CACrB,gBAAgB,CAAE,IAAI,CACtB,MAAM,CAAE,cAAc,CACzB,AACD,AAAA,WAAW,CAAG,EAAE,AAAA,YAAY,CAAG,CAAC,CAChC,WAAW,CAAG,EAAE,AAAA,YAAY,CAAG,IAAI,AAAC,CAChC,WAAW,CAAE,CAAC,CACd,sBAAsB,CAAE,GAAG,CAC3B,yBAAyB,CAAE,GAAG,CACjC,AACD,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAG,CAAC,CAC/B,WAAW,CAAG,EAAE,AAAA,WAAW,CAAG,IAAI,AAAC,CAC/B,uBAAuB,CAAE,GAAG,CAC5B,0BAA0B,CAAE,GAAG,CAClC,AACD,AAAA,WAAW,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,CAC1B,WAAW,CAAG,EAAE,CAAG,IAAI,AAAA,MAAM,CAC7B,WAAW,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,CAC1B,WAAW,CAAG,EAAE,CAAG,IAAI,AAAA,MAAM,AAAC,CAC1B,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,IAAI,CACtB,YAAY,CAAE,IAAI,CACrB,AACD,AAAA,WAAW,CAAG,OAAO,CAAG,CAAC,CACzB,WAAW,CAAG,OAAO,CAAG,IAAI,CAC5B,WAAW,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,CAC/B,WAAW,CAAG,OAAO,CAAG,IAAI,AAAA,MAAM,CAClC,WAAW,CAAG,OAAO,CAAG,CAAC,AAAA,MAAM,CAC/B,WAAW,CAAG,OAAO,CAAG,IAAI,AAAA,MAAM,AAAC,CAC/B,OAAO,CAAE,CAAC,CACV,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,OAAO,CACf,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,WAAW,CAAG,SAAS,CAAG,IAAI,CAC9B,WAAW,CAAG,SAAS,CAAG,IAAI,AAAA,MAAM,CACpC,WAAW,CAAG,SAAS,CAAG,IAAI,AAAA,MAAM,CACpC,WAAW,CAAG,SAAS,CAAG,CAAC,CAC3B,WAAW,CAAG,SAAS,CAAG,CAAC,AAAA,MAAM,CACjC,WAAW,CAAG,SAAS,CAAG,CAAC,AAAA,MAAM,AAAC,CAC9B,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,WAAW,CACnB,gBAAgB,CAAE,IAAI,CACtB,YAAY,CAAE,IAAI,CACrB,AACD,AAAA,cAAc,CAAG,EAAE,CAAG,CAAC,CACvB,cAAc,CAAG,EAAE,CAAG,IAAI,AAAC,CACvB,OAAO,CAAE,SAAS,CAClB,SAAS,CAAE,IAAI,CAClB,AACD,AAAA,cAAc,CAAG,EAAE,AAAA,YAAY,CAAG,CAAC,CACnC,cAAc,CAAG,EAAE,AAAA,YAAY,CAAG,IAAI,AAAC,CACnC,sBAAsB,CAAE,GAAG,CAC3B,yBAAyB,CAAE,GAAG,CACjC,AACD,AAAA,cAAc,CAAG,EAAE,AAAA,WAAW,CAAG,CAAC,CAClC,cAAc,CAAG,EAAE,AAAA,WAAW,CAAG,IAAI,AAAC,CAClC,uBAAuB,CAAE,GAAG,CAC5B,0BAA0B,CAAE,GAAG,CAClC,AACD,AAAA,cAAc,CAAG,EAAE,CAAG,CAAC,CACvB,cAAc,CAAG,EAAE,CAAG,IAAI,AAAC,CACvB,OAAO,CAAE,QAAQ,CACjB,SAAS,CAAE,IAAI,CAClB,AACD,AAAA,cAAc,CAAG,EAAE,AAAA,YAAY,CAAG,CAAC,CACnC,cAAc,CAAG,EAAE,AAAA,YAAY,CAAG,IAAI,AAAC,CACnC,sBAAsB,CAAE,GAAG,CAC3B,yBAAyB,CAAE,GAAG,CACjC,AACD,AAAA,cAAc,CAAG,EAAE,AAAA,WAAW,CAAG,CAAC,CAClC,cAAc,CAAG,EAAE,AAAA,WAAW,CAAG,IAAI,AAAC,CAClC,uBAAuB,CAAE,GAAG,CAC5B,0BAA0B,CAAE,GAAG,CAClC,AACD,AAAA,MAAM,AAAC,CACH,YAAY,CAAE,CAAC,CACf,MAAM,CAAE,MAAM,CACd,UAAU,CAAE,MAAM,CAClB,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,MAAM,CAAC,EAAE,AAAC,CACN,OAAO,CAAE,MAAM,CAClB,AACD,AAAA,MAAM,CAAC,EAAE,CAAG,CAAC,CACb,MAAM,CAAC,EAAE,CAAG,IAAI,AAAC,CACb,OAAO,CAAE,YAAY,CACrB,OAAO,CAAE,QAAQ,CACjB,gBAAgB,CAAE,IAAI,CACtB,MAAM,CAAE,cAAc,CACtB,aAAa,CAAE,IAAI,CACtB,AACD,AAAA,MAAM,CAAC,EAAE,CAAG,CAAC,AAAA,MAAM,CACnB,MAAM,CAAC,EAAE,CAAG,CAAC,AAAA,MAAM,AAAC,CAChB,eAAe,CAAE,IAAI,CACrB,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,MAAM,CAAC,KAAK,CAAG,CAAC,CAChB,MAAM,CAAC,KAAK,CAAG,IAAI,AAAC,CAChB,KAAK,CAAE,KAAK,CACf,AACD,AAAA,MAAM,CAAC,SAAS,CAAG,CAAC,CACpB,MAAM,CAAC,SAAS,CAAG,IAAI,AAAC,CACpB,KAAK,CAAE,IAAI,CACd,AACD,AAAA,MAAM,CAAC,SAAS,CAAG,CAAC,CACpB,MAAM,CAAC,SAAS,CAAG,CAAC,AAAA,MAAM,CAC1B,MAAM,CAAC,SAAS,CAAG,CAAC,AAAA,MAAM,CAC1B,MAAM,CAAC,SAAS,CAAG,IAAI,AAAC,CACpB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,WAAW,CACnB,gBAAgB,CAAE,IAAI,CACzB,AAt+IG,AAAA,MAAM,AAu+IH,CACH,OAAO,CAAE,MAAM,CACf,OAAO,CAAE,iBAAiB,CAC1B,SAAS,CAAE,GAAG,CACd,WAAW,CAAE,IAAI,CACjB,WAAW,CAAE,CAAC,CACd,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,MAAM,CAClB,WAAW,CAAE,MAAM,CACnB,cAAc,CAAE,QAAQ,CACxB,aAAa,CAAE,MAAM,CACxB,AACD,AAAA,CAAC,AAAA,MAAM,AAAA,MAAM,CACb,CAAC,AAAA,MAAM,AAAA,MAAM,AAAC,CACV,KAAK,CAAE,IAAI,CACX,eAAe,CAAE,IAAI,CACrB,MAAM,CAAE,OAAO,CAClB,AACD,AAAA,MAAM,AAAA,MAAM,AAAC,CACT,OAAO,CAAE,IAAI,CAChB,AACD,AAAA,IAAI,CAAC,MAAM,AAAC,CACR,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,IAAI,CACZ,AACD,AAAA,cAAc,AAAC,CACX,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,cAAc,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,CAC1B,cAAc,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,AAAC,CACvB,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,cAAc,AAAC,CACX,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,cAAc,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,CAC1B,cAAc,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,AAAC,CACvB,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,cAAc,AAAC,CACX,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,cAAc,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,CAC1B,cAAc,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,AAAC,CACvB,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,WAAW,AAAC,CACR,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,WAAW,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,CACvB,WAAW,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,AAAC,CACpB,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,cAAc,AAAC,CACX,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,cAAc,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,CAC1B,cAAc,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,AAAC,CACvB,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,aAAa,AAAC,CACV,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,aAAa,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,CACzB,aAAa,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,AAAC,CACtB,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,MAAM,AAAC,CACH,OAAO,CAAE,YAAY,CACrB,SAAS,CAAE,IAAI,CACf,OAAO,CAAE,OAAO,CAChB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,IAAI,CACjB,WAAW,CAAE,CAAC,CACd,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,MAAM,CAClB,WAAW,CAAE,MAAM,CACnB,cAAc,CAAE,QAAQ,CACxB,gBAAgB,CAAE,IAAI,CACtB,aAAa,CAAE,IAAI,CACtB,AACD,AAAA,MAAM,AAAA,MAAM,AAAC,CACT,OAAO,CAAE,IAAI,CAChB,AACD,AAAA,IAAI,CAAC,MAAM,AAAC,CACR,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,IAAI,CACZ,AACD,AAAA,OAAO,CAAC,MAAM,CACd,aAAa,CAAG,IAAI,CAAC,MAAM,AAAC,CACxB,GAAG,CAAE,CAAC,CACN,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,CAAC,AAAA,MAAM,AAAA,MAAM,CACb,CAAC,AAAA,MAAM,AAAA,MAAM,AAAC,CACV,KAAK,CAAE,IAAI,CACX,eAAe,CAAE,IAAI,CACrB,MAAM,CAAE,OAAO,CAClB,AACD,AAAA,gBAAgB,AAAA,OAAO,CAAG,MAAM,CAChC,UAAU,CAAG,OAAO,CAAG,CAAC,CAAG,MAAM,AAAC,CAC9B,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,gBAAgB,CAAG,MAAM,AAAC,CACtB,KAAK,CAAE,KAAK,CACf,AACD,AAAA,gBAAgB,CAAG,MAAM,CAAG,MAAM,AAAC,CAC/B,YAAY,CAAE,GAAG,CACpB,AACD,AAAA,UAAU,CAAG,EAAE,CAAG,CAAC,CAAG,MAAM,AAAC,CACzB,WAAW,CAAE,GAAG,CACnB,AACD,AAAA,UAAU,AAAC,CACP,OAAO,CAAE,SAAS,CAClB,aAAa,CAAE,IAAI,CACnB,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,UAAU,CAAC,EAAE,CACb,UAAU,CAAC,GAAG,AAAC,CACX,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,UAAU,CAAC,CAAC,AAAC,CACT,aAAa,CAAE,IAAI,CACnB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,GAAG,CACnB,AACD,AAAA,UAAU,CAAG,EAAE,AAAC,CACZ,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,UAAU,CAAC,UAAU,CACrB,gBAAgB,CAAC,UAAU,AAAC,CACxB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,UAAU,CAAC,UAAU,AAAC,CAClB,SAAS,CAAE,IAAI,CAClB,AACD,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK,EAzBnC,AAAA,UAAU,AA0BK,CACP,OAAO,CAAE,MAAM,CAClB,AAVL,AAAA,UAAU,CAAC,UAAU,CACrB,gBAAgB,CAAC,UAAU,AAWK,CACxB,aAAa,CAAE,IAAI,CACnB,YAAY,CAAE,IAAI,CACrB,AA3BL,AAAA,UAAU,CAAC,EAAE,CACb,UAAU,CAAC,GAAG,AA4BK,CACX,SAAS,CAAE,IAAI,CAClB,CAEL,AAAA,UAAU,AAAC,CACP,OAAO,CAAE,KAAK,CACd,OAAO,CAAE,GAAG,CACZ,aAAa,CAAE,IAAI,CACnB,WAAW,CAAE,UAAU,CACvB,gBAAgB,CAAE,IAAI,CACtB,MAAM,CAAE,cAAc,CACtB,aAAa,CAAE,GAAG,CAClB,kBAAkB,CAAE,uBAAuB,CAC3C,aAAa,CAAE,uBAAuB,CACtC,UAAU,CAAE,uBAAuB,CACtC,AACD,AAAA,UAAU,CAAG,GAAG,CAChB,UAAU,CAAC,CAAC,CAAG,GAAG,AAAC,CACf,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,CAAC,AAAA,UAAU,AAAA,MAAM,CACjB,CAAC,AAAA,UAAU,AAAA,MAAM,CACjB,CAAC,AAAA,UAAU,AAAA,OAAO,AAAC,CACf,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,UAAU,CAAC,QAAQ,AAAC,CAChB,OAAO,CAAE,GAAG,CACZ,KAAK,CAAE,IAAI,CACd,AACD,AAAA,MAAM,AAAC,CACH,OAAO,CAAE,IAAI,CACb,aAAa,CAAE,IAAI,CACnB,MAAM,CAAE,qBAAqB,CAC7B,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,MAAM,CAAC,EAAE,AAAC,CACN,UAAU,CAAE,CAAC,CACb,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,MAAM,CAAC,WAAW,AAAC,CACf,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,MAAM,CAAG,CAAC,CACV,MAAM,CAAG,EAAE,AAAC,CACR,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,MAAM,CAAG,CAAC,CAAG,CAAC,AAAC,CACX,UAAU,CAAE,GAAG,CAClB,AACD,AAAA,kBAAkB,CAClB,kBAAkB,AAAC,CACf,aAAa,CAAE,IAAI,CACtB,AACD,AAAA,kBAAkB,CAAC,MAAM,CACzB,kBAAkB,CAAC,MAAM,AAAC,CACtB,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,IAAI,CACT,KAAK,CAAE,KAAK,CACZ,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,cAAc,AAAC,CACX,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,cAAc,CAAC,EAAE,AAAC,CACd,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,cAAc,CAAC,WAAW,AAAC,CACvB,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,WAAW,AAAC,CACR,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,WAAW,CAAC,EAAE,AAAC,CACX,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,WAAW,CAAC,WAAW,AAAC,CACpB,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,cAAc,AAAC,CACX,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,cAAc,CAAC,EAAE,AAAC,CACd,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,cAAc,CAAC,WAAW,AAAC,CACvB,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,aAAa,AAAC,CACV,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,aAAa,CAAC,EAAE,AAAC,CACb,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,aAAa,CAAC,WAAW,AAAC,CACtB,KAAK,CAAE,OAAO,CACjB,AACD,kBAAkB,CAAlB,oBAAkB,CACd,IAAI,CACA,mBAAmB,CAAE,MAAM,CAE/B,EAAE,CACE,mBAAmB,CAAE,GAAG,EAGhC,aAAa,CAAb,oBAAa,CACT,IAAI,CACA,mBAAmB,CAAE,MAAM,CAE/B,EAAE,CACE,mBAAmB,CAAE,GAAG,EAGhC,UAAU,CAAV,oBAAU,CACN,IAAI,CACA,mBAAmB,CAAE,MAAM,CAE/B,EAAE,CACE,mBAAmB,CAAE,GAAG,EAGhC,AAAA,SAAS,AAAC,CACN,MAAM,CAAE,IAAI,CACZ,aAAa,CAAE,IAAI,CACnB,QAAQ,CAAE,MAAM,CAChB,gBAAgB,CAAE,OAAO,CACzB,aAAa,CAAE,GAAG,CAClB,kBAAkB,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,eAAkB,CACtD,UAAU,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,eAAkB,CACjD,AACD,AAAA,aAAa,AAAC,CACV,KAAK,CAAE,IAAI,CACX,KAAK,CAAE,CAAC,CACR,MAAM,CAAE,IAAI,CACZ,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,IAAI,CACjB,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,MAAM,CAClB,gBAAgB,CAAE,OAAO,CACzB,kBAAkB,CAAE,KAAK,CAAC,CAAC,CAAE,IAAG,CAAC,CAAC,CAAC,gBAAmB,CACtD,UAAU,CAAE,KAAK,CAAC,CAAC,CAAE,IAAG,CAAC,CAAC,CAAC,gBAAmB,CAC9C,kBAAkB,CAAE,eAAe,CACnC,aAAa,CAAE,eAAe,CAC9B,UAAU,CAAE,eAAe,CAC9B,AACD,AAAA,iBAAiB,CAAC,aAAa,CAC/B,qBAAqB,AAAC,CAClB,gBAAgB,CAAE,kLASjB,CACD,gBAAgB,CAAE,6KASjB,CACD,gBAAgB,CAAE,0KASjB,CACD,uBAAuB,CAAE,SAAS,CAClC,eAAe,CAAE,SAAS,CAC7B,AACD,AAAA,SAAS,AAAA,OAAO,CAAC,aAAa,CAC9B,aAAa,AAAA,OAAO,AAAC,CACjB,iBAAiB,CAAE,uCAAuC,CAC1D,YAAY,CAAE,uCAAuC,CACrD,SAAS,CAAE,uCAAuC,CACrD,AACD,AAAA,qBAAqB,AAAC,CAClB,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,iBAAiB,CAAC,qBAAqB,AAAC,CACpC,gBAAgB,CAAE,kLASjB,CACD,gBAAgB,CAAE,6KASjB,CACD,gBAAgB,CAAE,0KASjB,CACJ,AACD,AAAA,kBAAkB,AAAC,CACf,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,iBAAiB,CAAC,kBAAkB,AAAC,CACjC,gBAAgB,CAAE,kLASjB,CACD,gBAAgB,CAAE,6KASjB,CACD,gBAAgB,CAAE,0KASjB,CACJ,AACD,AAAA,qBAAqB,AAAC,CAClB,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,iBAAiB,CAAC,qBAAqB,AAAC,CACpC,gBAAgB,CAAE,kLASjB,CACD,gBAAgB,CAAE,6KASjB,CACD,gBAAgB,CAAE,0KASjB,CACJ,AACD,AAAA,oBAAoB,AAAC,CACjB,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,iBAAiB,CAAC,oBAAoB,AAAC,CACnC,gBAAgB,CAAE,kLASjB,CACD,gBAAgB,CAAE,6KASjB,CACD,gBAAgB,CAAE,0KASjB,CACJ,AACD,AAAA,MAAM,AAAC,CACH,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,MAAM,AAAA,YAAY,AAAC,CACf,UAAU,CAAE,CAAC,CAChB,AACD,AAAA,MAAM,CACN,WAAW,AAAC,CACR,QAAQ,CAAE,MAAM,CAChB,IAAI,CAAE,CAAC,CACV,AACD,AAAA,WAAW,AAAC,CACR,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,aAAa,AAAC,CACV,OAAO,CAAE,KAAK,CACjB,AACD,AAAA,YAAY,CACZ,MAAM,CAAG,WAAW,AAAC,CACjB,YAAY,CAAE,IAAI,CACrB,AACD,AAAA,WAAW,CACX,MAAM,CAAG,UAAU,AAAC,CAChB,aAAa,CAAE,IAAI,CACtB,AACD,AAAA,WAAW,CACX,YAAY,CACZ,WAAW,AAAC,CACR,OAAO,CAAE,UAAU,CACnB,cAAc,CAAE,GAAG,CACtB,AACD,AAAA,aAAa,AAAC,CACV,cAAc,CAAE,MAAM,CACzB,AACD,AAAA,aAAa,AAAC,CACV,cAAc,CAAE,MAAM,CACzB,AACD,AAAA,cAAc,AAAC,CACX,UAAU,CAAE,CAAC,CACb,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,WAAW,AAAC,CACR,YAAY,CAAE,CAAC,CACf,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,WAAW,AAAC,CACR,YAAY,CAAE,CAAC,CACf,aAAa,CAAE,IAAI,CACtB,AACD,AAAA,gBAAgB,AAAC,CACb,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,KAAK,CACd,OAAO,CAAE,SAAS,CAClB,aAAa,CAAE,IAAI,CACnB,gBAAgB,CAAE,IAAI,CACtB,MAAM,CAAE,cAAc,CACzB,AACD,AAAA,gBAAgB,AAAA,YAAY,AAAC,CACzB,sBAAsB,CAAE,GAAG,CAC3B,uBAAuB,CAAE,GAAG,CAC/B,AACD,AAAA,gBAAgB,AAAA,WAAW,AAAC,CACxB,aAAa,CAAE,CAAC,CAChB,0BAA0B,CAAE,GAAG,CAC/B,yBAAyB,CAAE,GAAG,CACjC,AACD,AAAA,CAAC,AAAA,gBAAgB,AAAC,CACd,KAAK,CAAE,IAAI,CACd,AACD,AAAA,CAAC,AAAA,gBAAgB,CAAC,wBAAwB,AAAC,CACvC,KAAK,CAAE,IAAI,CACd,AACD,AAAA,CAAC,AAAA,gBAAgB,AAAA,MAAM,CACvB,CAAC,AAAA,gBAAgB,AAAA,MAAM,AAAC,CACpB,KAAK,CAAE,IAAI,CACX,eAAe,CAAE,IAAI,CACrB,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,gBAAgB,AAAA,SAAS,CACzB,gBAAgB,AAAA,SAAS,AAAA,MAAM,CAC/B,gBAAgB,AAAA,SAAS,AAAA,MAAM,AAAC,CAC5B,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,WAAW,CACnB,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,gBAAgB,AAAA,SAAS,CAAC,wBAAwB,CAClD,gBAAgB,AAAA,SAAS,AAAA,MAAM,CAAC,wBAAwB,CACxD,gBAAgB,AAAA,SAAS,AAAA,MAAM,CAAC,wBAAwB,AAAC,CACrD,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,gBAAgB,AAAA,SAAS,CAAC,qBAAqB,CAC/C,gBAAgB,AAAA,SAAS,AAAA,MAAM,CAAC,qBAAqB,CACrD,gBAAgB,AAAA,SAAS,AAAA,MAAM,CAAC,qBAAqB,AAAC,CAClD,KAAK,CAAE,IAAI,CACd,AACD,AAAA,gBAAgB,AAAA,OAAO,CACvB,gBAAgB,AAAA,OAAO,AAAA,MAAM,CAC7B,gBAAgB,AAAA,OAAO,AAAA,MAAM,AAAC,CAC1B,OAAO,CAAE,CAAC,CACV,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,gBAAgB,AAAA,OAAO,CAAC,wBAAwB,CAChD,gBAAgB,AAAA,OAAO,AAAA,MAAM,CAAC,wBAAwB,CACtD,gBAAgB,AAAA,OAAO,AAAA,MAAM,CAAC,wBAAwB,CACtD,gBAAgB,AAAA,OAAO,CAAC,wBAAwB,CAAG,KAAK,CACxD,gBAAgB,AAAA,OAAO,AAAA,MAAM,CAAC,wBAAwB,CAAG,KAAK,CAC9D,gBAAgB,AAAA,OAAO,AAAA,MAAM,CAAC,wBAAwB,CAAG,KAAK,CAC9D,gBAAgB,AAAA,OAAO,CAAC,wBAAwB,CAAG,MAAM,CACzD,gBAAgB,AAAA,OAAO,AAAA,MAAM,CAAC,wBAAwB,CAAG,MAAM,CAC/D,gBAAgB,AAAA,OAAO,AAAA,MAAM,CAAC,wBAAwB,CAAG,MAAM,AAAC,CAC5D,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,gBAAgB,AAAA,OAAO,CAAC,qBAAqB,CAC7C,gBAAgB,AAAA,OAAO,AAAA,MAAM,CAAC,qBAAqB,CACnD,gBAAgB,AAAA,OAAO,AAAA,MAAM,CAAC,qBAAqB,AAAC,CAChD,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,wBAAwB,AAAC,CACrB,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,CAAC,AAAA,wBAAwB,AAAC,CACtB,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,CAAC,AAAA,wBAAwB,CAAC,wBAAwB,AAAC,CAC/C,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,CAAC,AAAA,wBAAwB,AAAA,MAAM,CAC/B,CAAC,AAAA,wBAAwB,AAAA,MAAM,AAAC,CAC5B,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,CAAC,AAAA,wBAAwB,AAAA,OAAO,CAChC,CAAC,AAAA,wBAAwB,AAAA,OAAO,AAAA,MAAM,CACtC,CAAC,AAAA,wBAAwB,AAAA,OAAO,AAAA,MAAM,AAAC,CACnC,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,qBAAqB,AAAC,CAClB,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,CAAC,AAAA,qBAAqB,AAAC,CACnB,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,CAAC,AAAA,qBAAqB,CAAC,wBAAwB,AAAC,CAC5C,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,CAAC,AAAA,qBAAqB,AAAA,MAAM,CAC5B,CAAC,AAAA,qBAAqB,AAAA,MAAM,AAAC,CACzB,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,CAAC,AAAA,qBAAqB,AAAA,OAAO,CAC7B,CAAC,AAAA,qBAAqB,AAAA,OAAO,AAAA,MAAM,CACnC,CAAC,AAAA,qBAAqB,AAAA,OAAO,AAAA,MAAM,AAAC,CAChC,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,wBAAwB,AAAC,CACrB,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,CAAC,AAAA,wBAAwB,AAAC,CACtB,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,CAAC,AAAA,wBAAwB,CAAC,wBAAwB,AAAC,CAC/C,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,CAAC,AAAA,wBAAwB,AAAA,MAAM,CAC/B,CAAC,AAAA,wBAAwB,AAAA,MAAM,AAAC,CAC5B,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,CAAC,AAAA,wBAAwB,AAAA,OAAO,CAChC,CAAC,AAAA,wBAAwB,AAAA,OAAO,AAAA,MAAM,CACtC,CAAC,AAAA,wBAAwB,AAAA,OAAO,AAAA,MAAM,AAAC,CACnC,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,uBAAuB,AAAC,CACpB,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,CAAC,AAAA,uBAAuB,AAAC,CACrB,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,CAAC,AAAA,uBAAuB,CAAC,wBAAwB,AAAC,CAC9C,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,CAAC,AAAA,uBAAuB,AAAA,MAAM,CAC9B,CAAC,AAAA,uBAAuB,AAAA,MAAM,AAAC,CAC3B,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,CAAC,AAAA,uBAAuB,AAAA,OAAO,CAC/B,CAAC,AAAA,uBAAuB,AAAA,OAAO,AAAA,MAAM,CACrC,CAAC,AAAA,uBAAuB,AAAA,OAAO,AAAA,MAAM,AAAC,CAClC,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,wBAAwB,AAAC,CACrB,UAAU,CAAE,CAAC,CACb,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,qBAAqB,AAAC,CAClB,aAAa,CAAE,CAAC,CAChB,WAAW,CAAE,GAAG,CACnB,AACD,AAAA,MAAM,AAAC,CACH,aAAa,CAAE,IAAI,CACnB,gBAAgB,CAAE,IAAI,CACtB,MAAM,CAAE,qBAAqB,CAC7B,aAAa,CAAE,GAAG,CAClB,kBAAkB,CAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAmB,CACjD,UAAU,CAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAmB,CAC5C,AACD,AAAA,WAAW,AAAC,CACR,OAAO,CAAE,IAAI,CAChB,AACD,AAAA,cAAc,AAAC,CACX,OAAO,CAAE,SAAS,CAClB,aAAa,CAAE,qBAAqB,CACpC,sBAAsB,CAAE,GAAG,CAC3B,uBAAuB,CAAE,GAAG,CAC/B,AACD,AAAA,cAAc,CAAG,SAAS,CAAC,gBAAgB,AAAC,CACxC,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,YAAY,AAAC,CACT,UAAU,CAAE,CAAC,CACb,aAAa,CAAE,CAAC,CAChB,SAAS,CAAE,IAAI,CACf,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,YAAY,CAAG,CAAC,CAChB,YAAY,CAAG,KAAK,CACpB,YAAY,CAAG,MAAM,CACrB,YAAY,CAAG,KAAK,CAAG,CAAC,CACxB,YAAY,CAAG,MAAM,CAAG,CAAC,AAAC,CACtB,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,aAAa,AAAC,CACV,OAAO,CAAE,SAAS,CAClB,gBAAgB,CAAE,OAAO,CACzB,UAAU,CAAE,cAAc,CAC1B,0BAA0B,CAAE,GAAG,CAC/B,yBAAyB,CAAE,GAAG,CACjC,AACD,AAAA,MAAM,CAAG,WAAW,CACpB,MAAM,CAAG,eAAe,CAAG,WAAW,AAAC,CACnC,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,MAAM,CAAG,WAAW,CAAC,gBAAgB,CACrC,MAAM,CAAG,eAAe,CAAG,WAAW,CAAC,gBAAgB,AAAC,CACpD,YAAY,CAAE,KAAK,CACnB,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,MAAM,CAAG,WAAW,AAAA,YAAY,CAAC,gBAAgB,AAAA,YAAY,CAC7D,MAAM,CAAG,eAAe,CAAG,WAAW,AAAA,YAAY,CAAC,gBAAgB,AAAA,YAAY,AAAC,CAC5E,UAAU,CAAE,CAAC,CACb,sBAAsB,CAAE,GAAG,CAC3B,uBAAuB,CAAE,GAAG,CAC/B,AACD,AAAA,MAAM,CAAG,WAAW,AAAA,WAAW,CAAC,gBAAgB,AAAA,WAAW,CAC3D,MAAM,CAAG,eAAe,CAAG,WAAW,AAAA,WAAW,CAAC,gBAAgB,AAAA,WAAW,AAAC,CAC1E,aAAa,CAAE,CAAC,CAChB,0BAA0B,CAAE,GAAG,CAC/B,yBAAyB,CAAE,GAAG,CACjC,AACD,AAAA,cAAc,CAAG,WAAW,CAAC,gBAAgB,AAAA,YAAY,AAAC,CACtD,gBAAgB,CAAE,CAAC,CACtB,AACD,AAAA,WAAW,CAAG,aAAa,AAAC,CACxB,gBAAgB,CAAE,CAAC,CACtB,AACD,AAAA,MAAM,CAAG,MAAM,CACf,MAAM,CAAG,iBAAiB,CAAG,MAAM,CACnC,MAAM,CAAG,eAAe,CAAG,MAAM,AAAC,CAC9B,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,MAAM,CAAG,MAAM,CAAC,OAAO,CACvB,MAAM,CAAG,iBAAiB,CAAG,MAAM,CAAC,OAAO,CAC3C,MAAM,CAAG,eAAe,CAAG,MAAM,CAAC,OAAO,AAAC,CACtC,aAAa,CAAE,IAAI,CACnB,YAAY,CAAE,IAAI,CACrB,AACD,AAAA,MAAM,CAAG,MAAM,AAAA,YAAY,CAC3B,MAAM,CAAG,iBAAiB,AAAA,YAAY,CAAG,MAAM,AAAA,YAAY,AAAC,CACxD,sBAAsB,CAAE,GAAG,CAC3B,uBAAuB,CAAE,GAAG,CAC/B,AACD,AAAA,MAAM,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAChE,MAAM,CAAG,iBAAiB,AAAA,YAAY,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAChG,MAAM,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAChE,MAAM,CAAG,iBAAiB,AAAA,YAAY,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,AAAC,CAC7F,sBAAsB,CAAE,GAAG,CAC3B,uBAAuB,CAAE,GAAG,CAC/B,AACD,AAAA,MAAM,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY,CAC/E,MAAM,CAAG,iBAAiB,AAAA,YAAY,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY,CAC/G,MAAM,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY,CAC/E,MAAM,CAAG,iBAAiB,AAAA,YAAY,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY,CAC/G,MAAM,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY,CAC/E,MAAM,CAAG,iBAAiB,AAAA,YAAY,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY,CAC/G,MAAM,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY,CAC/E,MAAM,CAAG,iBAAiB,AAAA,YAAY,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY,AAAC,CAC5G,sBAAsB,CAAE,GAAG,CAC9B,AACD,AAAA,MAAM,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW,CAC9E,MAAM,CAAG,iBAAiB,AAAA,YAAY,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW,CAC9G,MAAM,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW,CAC9E,MAAM,CAAG,iBAAiB,AAAA,YAAY,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW,CAC9G,MAAM,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW,CAC9E,MAAM,CAAG,iBAAiB,AAAA,YAAY,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW,CAC9G,MAAM,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW,CAC9E,MAAM,CAAG,iBAAiB,AAAA,YAAY,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW,AAAC,CAC3G,uBAAuB,CAAE,GAAG,CAC/B,AACD,AAAA,MAAM,CAAG,MAAM,AAAA,WAAW,CAC1B,MAAM,CAAG,iBAAiB,AAAA,WAAW,CAAG,MAAM,AAAA,WAAW,AAAC,CACtD,0BAA0B,CAAE,GAAG,CAC/B,yBAAyB,CAAE,GAAG,CACjC,AACD,AAAA,MAAM,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAC7D,MAAM,CAAG,iBAAiB,AAAA,WAAW,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAC5F,MAAM,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAC7D,MAAM,CAAG,iBAAiB,AAAA,WAAW,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,AAAC,CACzF,0BAA0B,CAAE,GAAG,CAC/B,yBAAyB,CAAE,GAAG,CACjC,AACD,AAAA,MAAM,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY,CAC5E,MAAM,CAAG,iBAAiB,AAAA,WAAW,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY,CAC3G,MAAM,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY,CAC5E,MAAM,CAAG,iBAAiB,AAAA,WAAW,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY,CAC3G,MAAM,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY,CAC5E,MAAM,CAAG,iBAAiB,AAAA,WAAW,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY,CAC3G,MAAM,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY,CAC5E,MAAM,CAAG,iBAAiB,AAAA,WAAW,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY,AAAC,CACxG,yBAAyB,CAAE,GAAG,CACjC,AACD,AAAA,MAAM,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW,CAC3E,MAAM,CAAG,iBAAiB,AAAA,WAAW,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW,CAC1G,MAAM,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW,CAC3E,MAAM,CAAG,iBAAiB,AAAA,WAAW,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW,CAC1G,MAAM,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW,CAC3E,MAAM,CAAG,iBAAiB,AAAA,WAAW,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW,CAC1G,MAAM,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW,CAC3E,MAAM,CAAG,iBAAiB,AAAA,WAAW,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW,AAAC,CACvG,0BAA0B,CAAE,GAAG,CAClC,AACD,AAAA,MAAM,CAAG,WAAW,CAAG,MAAM,CAC7B,MAAM,CAAG,WAAW,CAAG,iBAAiB,CACxC,MAAM,CAAG,MAAM,CAAG,WAAW,CAC7B,MAAM,CAAG,iBAAiB,CAAG,WAAW,AAAC,CACrC,UAAU,CAAE,cAAc,CAC7B,AACD,AAAA,MAAM,CAAG,MAAM,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,CACvD,MAAM,CAAG,MAAM,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAC,CACpD,UAAU,CAAE,CAAC,CAChB,AACD,AAAA,MAAM,CAAG,eAAe,CACxB,MAAM,CAAG,iBAAiB,CAAG,eAAe,AAAC,CACzC,MAAM,CAAE,CAAC,CACZ,AACD,AAAA,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,CACtD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,CAC1E,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,CACtD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,CAC1E,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,CACtD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,CAC1E,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,CACtD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,CAC1E,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,CACtD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,CAC1E,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,CACtD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,AAAC,CACvE,WAAW,CAAE,CAAC,CACjB,AACD,AAAA,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,CACrD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,CACzE,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,CACrD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,CACzE,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,CACrD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,CACzE,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,CACrD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,CACzE,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,CACrD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,CACzE,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,CACrD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,AAAC,CACtE,YAAY,CAAE,CAAC,CAClB,AACD,AAAA,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,YAAY,CAAG,EAAE,CACtD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,YAAY,CAAG,EAAE,CAC1E,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,YAAY,CAAG,EAAE,CACtD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,YAAY,CAAG,EAAE,CAC1E,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,YAAY,CAAG,EAAE,CACtD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,YAAY,CAAG,EAAE,CAC1E,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,YAAY,CAAG,EAAE,CACtD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,YAAY,CAAG,EAAE,AAAC,CACvE,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,WAAW,CAAG,EAAE,CACrD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,WAAW,CAAG,EAAE,CACzE,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,WAAW,CAAG,EAAE,CACrD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,WAAW,CAAG,EAAE,CACzE,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,WAAW,CAAG,EAAE,CACrD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,WAAW,CAAG,EAAE,CACzE,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,WAAW,CAAG,EAAE,CACrD,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,AAAA,WAAW,CAAG,EAAE,AAAC,CACtE,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,MAAM,CAAG,iBAAiB,AAAC,CACvB,aAAa,CAAE,CAAC,CAChB,MAAM,CAAE,CAAC,CACZ,AACD,AAAA,YAAY,AAAC,CACT,aAAa,CAAE,IAAI,CACtB,AACD,AAAA,YAAY,CAAC,MAAM,AAAC,CAChB,aAAa,CAAE,CAAC,CAChB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,YAAY,CAAC,MAAM,CAAG,MAAM,AAAC,CACzB,UAAU,CAAE,GAAG,CAClB,AACD,AAAA,YAAY,CAAC,cAAc,AAAC,CACxB,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,YAAY,CAAC,cAAc,CAAG,eAAe,CAAG,WAAW,CAC3D,YAAY,CAAC,cAAc,CAAG,eAAe,CAAG,WAAW,AAAC,CACxD,UAAU,CAAE,cAAc,CAC7B,AACD,AAAA,YAAY,CAAC,aAAa,AAAC,CACvB,UAAU,CAAE,CAAC,CAChB,AACD,AAAA,YAAY,CAAC,aAAa,CAAG,eAAe,CAAC,WAAW,AAAC,CACrD,aAAa,CAAE,cAAc,CAChC,AACD,AAAA,cAAc,AAAC,CACX,YAAY,CAAE,IAAI,CACrB,AACD,AAAA,cAAc,CAAG,cAAc,AAAC,CAC5B,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,IAAI,CACrB,AACD,AAAA,cAAc,CAAG,cAAc,CAAG,eAAe,CAAG,WAAW,AAAC,CAC5D,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,cAAc,CAAG,cAAc,CAAC,MAAM,AAAC,CACnC,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,cAAc,CAAG,aAAa,CAAG,eAAe,CAAG,WAAW,AAAC,CAC3D,mBAAmB,CAAE,IAAI,CAC5B,AACD,AAAA,cAAc,AAAC,CACX,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,cAAc,CAAG,cAAc,AAAC,CAC5B,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,cAAc,CAAG,cAAc,CAAG,eAAe,CAAG,WAAW,AAAC,CAC5D,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,cAAc,CAAG,cAAc,CAAC,MAAM,AAAC,CACnC,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,cAAc,CAAG,aAAa,CAAG,eAAe,CAAG,WAAW,AAAC,CAC3D,mBAAmB,CAAE,OAAO,CAC/B,AACD,AAAA,cAAc,AAAC,CACX,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,cAAc,CAAG,cAAc,AAAC,CAC5B,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,cAAc,CAAG,cAAc,CAAG,eAAe,CAAG,WAAW,AAAC,CAC5D,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,cAAc,CAAG,cAAc,CAAC,MAAM,AAAC,CACnC,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,cAAc,CAAG,aAAa,CAAG,eAAe,CAAG,WAAW,AAAC,CAC3D,mBAAmB,CAAE,OAAO,CAC/B,AACD,AAAA,WAAW,AAAC,CACR,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,WAAW,CAAG,cAAc,AAAC,CACzB,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,WAAW,CAAG,cAAc,CAAG,eAAe,CAAG,WAAW,AAAC,CACzD,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,WAAW,CAAG,cAAc,CAAC,MAAM,AAAC,CAChC,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,WAAW,CAAG,aAAa,CAAG,eAAe,CAAG,WAAW,AAAC,CACxD,mBAAmB,CAAE,OAAO,CAC/B,AACD,AAAA,cAAc,AAAC,CACX,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,cAAc,CAAG,cAAc,AAAC,CAC5B,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,cAAc,CAAG,cAAc,CAAG,eAAe,CAAG,WAAW,AAAC,CAC5D,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,cAAc,CAAG,cAAc,CAAC,MAAM,AAAC,CACnC,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,cAAc,CAAG,aAAa,CAAG,eAAe,CAAG,WAAW,AAAC,CAC3D,mBAAmB,CAAE,OAAO,CAC/B,AACD,AAAA,aAAa,AAAC,CACV,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,aAAa,CAAG,cAAc,AAAC,CAC3B,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CACzB,YAAY,CAAE,OAAO,CACxB,AACD,AAAA,aAAa,CAAG,cAAc,CAAG,eAAe,CAAG,WAAW,AAAC,CAC3D,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,aAAa,CAAG,cAAc,CAAC,MAAM,AAAC,CAClC,KAAK,CAAE,OAAO,CACd,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,aAAa,CAAG,aAAa,CAAG,eAAe,CAAG,WAAW,AAAC,CAC1D,mBAAmB,CAAE,OAAO,CAC/B,AACD,AAAA,iBAAiB,AAAC,CACd,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,KAAK,CACd,MAAM,CAAE,CAAC,CACT,OAAO,CAAE,CAAC,CACV,QAAQ,CAAE,MAAM,CACnB,AACD,AAAA,iBAAiB,CAAC,sBAAsB,CACxC,iBAAiB,CAAC,MAAM,CACxB,iBAAiB,CAAC,KAAK,CACvB,iBAAiB,CAAC,MAAM,CACxB,iBAAiB,CAAC,KAAK,AAAC,CACpB,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,MAAM,CAAE,CAAC,CACT,IAAI,CAAE,CAAC,CACP,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,MAAM,CAAE,CAAC,CACZ,AACD,AAAA,uBAAuB,AAAC,CACpB,cAAc,CAAE,MAAM,CACzB,AACD,AAAA,sBAAsB,AAAC,CACnB,cAAc,CAAE,GAAG,CACtB,AACD,AAAA,KAAK,AAAC,CACF,UAAU,CAAE,IAAI,CAChB,OAAO,CAAE,IAAI,CACb,aAAa,CAAE,IAAI,CACnB,gBAAgB,CAAE,OAAO,CACzB,MAAM,CAAE,iBAAiB,CACzB,aAAa,CAAE,GAAG,CAClB,kBAAkB,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAmB,CACvD,UAAU,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAmB,CAClD,AACD,AAAA,KAAK,CAAC,UAAU,AAAC,CACb,YAAY,CAAE,IAAI,CAClB,YAAY,CAAE,gBAAmB,CACpC,AACD,AAAA,QAAQ,AAAC,CACL,OAAO,CAAE,IAAI,CACb,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,QAAQ,AAAC,CACL,OAAO,CAAE,GAAG,CACZ,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,MAAM,AAAC,CACH,KAAK,CAAE,KAAK,CACZ,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,IAAI,CACjB,WAAW,CAAE,CAAC,CACd,KAAK,CAAE,IAAI,CACX,WAAW,CAAE,YAAY,CACzB,MAAM,CAAE,iBAAiB,CACzB,OAAO,CAAE,GAAG,CACf,AACD,AAAA,MAAM,AAAA,MAAM,CACZ,MAAM,AAAA,MAAM,AAAC,CACT,KAAK,CAAE,IAAI,CACX,eAAe,CAAE,IAAI,CACrB,MAAM,CAAE,OAAO,CACf,MAAM,CAAE,iBAAiB,CACzB,OAAO,CAAE,GAAG,CACf,AACD,AAAA,MAAM,AAAA,MAAM,AAAC,CACT,kBAAkB,CAAE,IAAI,CACxB,OAAO,CAAE,CAAC,CACV,MAAM,CAAE,OAAO,CACf,UAAU,CAAE,WAAW,CACvB,MAAM,CAAE,CAAC,CACZ,AACD,AAAA,WAAW,AAAC,CACR,QAAQ,CAAE,MAAM,CACnB,AACD,AAAA,MAAM,AAAC,CACH,QAAQ,CAAE,KAAK,CACf,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,CAAC,CACR,MAAM,CAAE,CAAC,CACT,IAAI,CAAE,CAAC,CACP,OAAO,CAAE,IAAI,CACb,OAAO,CAAE,IAAI,CACb,QAAQ,CAAE,MAAM,CAChB,0BAA0B,CAAE,KAAK,CACjC,OAAO,CAAE,CAAC,CACb,AACD,AAAA,MAAM,AAAA,KAAK,CAAC,aAAa,AAAC,CACtB,kBAAkB,CAAE,+BAA+B,CACnD,aAAa,CAAE,0BAA0B,CACzC,UAAU,CAAE,uBAAuB,CACnC,iBAAiB,CAAE,kBAAkB,CACrC,aAAa,CAAE,kBAAkB,CACjC,YAAY,CAAE,kBAAkB,CAChC,SAAS,CAAE,kBAAkB,CAChC,AACD,AAAA,MAAM,AAAA,GAAG,CAAC,aAAa,AAAC,CACpB,iBAAiB,CAAE,eAAe,CAClC,aAAa,CAAE,eAAe,CAC9B,YAAY,CAAE,eAAe,CAC7B,SAAS,CAAE,eAAe,CAC7B,AACD,AAAA,WAAW,CAAC,MAAM,AAAC,CACf,UAAU,CAAE,MAAM,CAClB,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,aAAa,AAAC,CACV,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACf,AACD,AAAA,cAAc,AAAC,CACX,QAAQ,CAAE,QAAQ,CAClB,gBAAgB,CAAE,IAAI,CACtB,uBAAuB,CAAE,WAAW,CACpC,eAAe,CAAE,WAAW,CAC5B,MAAM,CAAE,cAAc,CACtB,MAAM,CAAE,GAAG,CAAC,KAAK,CAAC,eAAkB,CACpC,aAAa,CAAE,GAAG,CAClB,OAAO,CAAE,CAAC,CACV,kBAAkB,CAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,eAAkB,CAChD,UAAU,CAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,eAAkB,CAC3C,AACD,AAAA,eAAe,AAAC,CACZ,QAAQ,CAAE,KAAK,CACf,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,CAAC,CACR,MAAM,CAAE,CAAC,CACT,IAAI,CAAE,CAAC,CACP,OAAO,CAAE,IAAI,CACb,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,eAAe,AAAA,KAAK,AAAC,CACjB,MAAM,CAAE,gBAAgB,CACxB,OAAO,CAAE,CAAC,CACb,AACD,AAAA,eAAe,AAAA,GAAG,AAAC,CACf,MAAM,CAAE,iBAAiB,CACzB,OAAO,CAAE,GAAG,CACf,AACD,AAAA,aAAa,AAAC,CACV,UAAU,CAAE,aAAa,CACzB,OAAO,CAAE,IAAI,CACb,aAAa,CAAE,iBAAiB,CACnC,AACD,AAAA,aAAa,CAAC,MAAM,AAAC,CACjB,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,YAAY,AAAC,CACT,MAAM,CAAE,CAAC,CACT,WAAW,CAAE,UAAU,CAC1B,AACD,AAAA,WAAW,AAAC,CACR,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,IAAI,CAChB,AACD,AAAA,aAAa,AAAC,CACV,OAAO,CAAE,IAAI,CACb,UAAU,CAAE,KAAK,CACjB,UAAU,CAAE,iBAAiB,CAChC,AACD,AAAA,aAAa,CAAC,IAAI,CAAG,IAAI,AAAC,CACtB,aAAa,CAAE,CAAC,CAChB,WAAW,CAAE,GAAG,CACnB,AACD,AAAA,aAAa,CAAC,UAAU,CAAC,IAAI,CAAG,IAAI,AAAC,CACjC,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,aAAa,CAAC,UAAU,CAAG,UAAU,AAAC,CAClC,WAAW,CAAE,CAAC,CACjB,AACD,AAAA,wBAAwB,AAAC,CACrB,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,OAAO,CACZ,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,QAAQ,CAAE,MAAM,CACnB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EAxExB,AAAA,aAAa,AAyEK,CACV,KAAK,CAAE,KAAK,CACZ,MAAM,CAAE,SAAS,CACpB,AAvEL,AAAA,cAAc,AAwEK,CACX,kBAAkB,CAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAkB,CACjD,UAAU,CAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAkB,CAC5C,AACD,AAAA,SAAS,AAAC,CACN,KAAK,CAAE,KAAK,CACf,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,SAAS,AAAC,CACN,KAAK,CAAE,KAAK,CACf,CAEL,AAAA,QAAQ,AAAC,CACL,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,IAAI,CACb,OAAO,CAAE,KAAK,CACd,WAAW,CAAE,8CAA8C,CAC3D,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,MAAM,CACnB,WAAW,CAAE,GAAG,CAChB,MAAM,CAAE,gBAAgB,CACxB,OAAO,CAAE,CAAC,CACb,AACD,AAAA,QAAQ,AAAA,GAAG,AAAC,CACR,MAAM,CAAE,iBAAiB,CACzB,OAAO,CAAE,GAAG,CACf,AACD,AAAA,QAAQ,AAAA,IAAI,AAAC,CACT,OAAO,CAAE,KAAK,CACd,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,QAAQ,AAAA,MAAM,AAAC,CACX,OAAO,CAAE,KAAK,CACd,WAAW,CAAE,GAAG,CACnB,AACD,AAAA,QAAQ,AAAA,OAAO,AAAC,CACZ,OAAO,CAAE,KAAK,CACd,UAAU,CAAE,GAAG,CAClB,AACD,AAAA,QAAQ,AAAA,KAAK,AAAC,CACV,OAAO,CAAE,KAAK,CACd,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,cAAc,AAAC,CACX,SAAS,CAAE,KAAK,CAChB,OAAO,CAAE,OAAO,CAChB,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,MAAM,CAClB,eAAe,CAAE,IAAI,CACrB,gBAAgB,CAAE,IAAI,CACtB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,cAAc,AAAC,CACX,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,CAAC,CACR,MAAM,CAAE,CAAC,CACT,YAAY,CAAE,WAAW,CACzB,YAAY,CAAE,KAAK,CACtB,AACD,AAAA,QAAQ,AAAA,IAAI,CAAC,cAAc,AAAC,CACxB,MAAM,CAAE,CAAC,CACT,IAAI,CAAE,GAAG,CACT,WAAW,CAAE,IAAI,CACjB,YAAY,CAAE,SAAS,CACvB,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,QAAQ,AAAA,SAAS,CAAC,cAAc,AAAC,CAC7B,KAAK,CAAE,GAAG,CACV,MAAM,CAAE,CAAC,CACT,aAAa,CAAE,IAAI,CACnB,YAAY,CAAE,SAAS,CACvB,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,QAAQ,AAAA,UAAU,CAAC,cAAc,AAAC,CAC9B,MAAM,CAAE,CAAC,CACT,IAAI,CAAE,GAAG,CACT,aAAa,CAAE,IAAI,CACnB,YAAY,CAAE,SAAS,CACvB,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,QAAQ,AAAA,MAAM,CAAC,cAAc,AAAC,CAC1B,GAAG,CAAE,GAAG,CACR,IAAI,CAAE,CAAC,CACP,UAAU,CAAE,IAAI,CAChB,YAAY,CAAE,aAAa,CAC3B,kBAAkB,CAAE,IAAI,CAC3B,AACD,AAAA,QAAQ,AAAA,KAAK,CAAC,cAAc,AAAC,CACzB,GAAG,CAAE,GAAG,CACR,KAAK,CAAE,CAAC,CACR,UAAU,CAAE,IAAI,CAChB,YAAY,CAAE,aAAa,CAC3B,iBAAiB,CAAE,IAAI,CAC1B,AACD,AAAA,QAAQ,AAAA,OAAO,CAAC,cAAc,AAAC,CAC3B,GAAG,CAAE,CAAC,CACN,IAAI,CAAE,GAAG,CACT,WAAW,CAAE,IAAI,CACjB,YAAY,CAAE,SAAS,CACvB,mBAAmB,CAAE,IAAI,CAC5B,AACD,AAAA,QAAQ,AAAA,YAAY,CAAC,cAAc,AAAC,CAChC,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,GAAG,CACV,UAAU,CAAE,IAAI,CAChB,YAAY,CAAE,SAAS,CACvB,mBAAmB,CAAE,IAAI,CAC5B,AACD,AAAA,QAAQ,AAAA,aAAa,CAAC,cAAc,AAAC,CACjC,GAAG,CAAE,CAAC,CACN,IAAI,CAAE,GAAG,CACT,UAAU,CAAE,IAAI,CAChB,YAAY,CAAE,SAAS,CACvB,mBAAmB,CAAE,IAAI,CAC5B,AACD,AAAA,QAAQ,AAAC,CACL,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,IAAI,CAAE,CAAC,CACP,OAAO,CAAE,IAAI,CACb,OAAO,CAAE,IAAI,CACb,SAAS,CAAE,KAAK,CAChB,OAAO,CAAE,GAAG,CACZ,WAAW,CAAE,8CAA8C,CAC3D,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,MAAM,CACnB,WAAW,CAAE,UAAU,CACvB,UAAU,CAAE,IAAI,CAChB,WAAW,CAAE,MAAM,CACnB,gBAAgB,CAAE,IAAI,CACtB,uBAAuB,CAAE,WAAW,CACpC,eAAe,CAAE,WAAW,CAC5B,MAAM,CAAE,cAAc,CACtB,MAAM,CAAE,GAAG,CAAC,KAAK,CAAC,eAAkB,CACpC,aAAa,CAAE,GAAG,CAClB,kBAAkB,CAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAkB,CACjD,UAAU,CAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,eAAkB,CAC5C,AACD,AAAA,QAAQ,AAAA,IAAI,AAAC,CACT,UAAU,CAAE,KAAK,CACpB,AACD,AAAA,QAAQ,AAAA,MAAM,AAAC,CACX,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,QAAQ,AAAA,OAAO,AAAC,CACZ,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,QAAQ,AAAA,KAAK,AAAC,CACV,WAAW,CAAE,KAAK,CACrB,AACD,AAAA,cAAc,AAAC,CACX,OAAO,CAAE,QAAQ,CACjB,MAAM,CAAE,CAAC,CACT,SAAS,CAAE,IAAI,CACf,gBAAgB,CAAE,OAAO,CACzB,aAAa,CAAE,iBAAiB,CAChC,aAAa,CAAE,WAAW,CAC7B,AACD,AAAA,gBAAgB,AAAC,CACb,OAAO,CAAE,QAAQ,CACpB,AACD,AAAA,QAAQ,CAAG,MAAM,CACjB,QAAQ,CAAG,MAAM,AAAA,MAAM,AAAC,CACpB,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,CAAC,CACR,MAAM,CAAE,CAAC,CACT,YAAY,CAAE,WAAW,CACzB,YAAY,CAAE,KAAK,CACtB,AACD,AAAA,QAAQ,CAAG,MAAM,AAAC,CACd,YAAY,CAAE,IAAI,CACrB,AACD,AAAA,QAAQ,CAAG,MAAM,AAAA,MAAM,AAAC,CACpB,OAAO,CAAE,EAAE,CACX,YAAY,CAAE,IAAI,CACrB,AACD,AAAA,QAAQ,AAAA,IAAI,CAAG,MAAM,AAAC,CAClB,MAAM,CAAE,KAAK,CACb,IAAI,CAAE,GAAG,CACT,WAAW,CAAE,KAAK,CAClB,gBAAgB,CAAE,IAAI,CACtB,gBAAgB,CAAE,gBAAmB,CACrC,mBAAmB,CAAE,CAAC,CACzB,AACD,AAAA,QAAQ,AAAA,IAAI,CAAG,MAAM,AAAA,MAAM,AAAC,CACxB,MAAM,CAAE,GAAG,CACX,WAAW,CAAE,KAAK,CAClB,OAAO,CAAE,GAAG,CACZ,gBAAgB,CAAE,IAAI,CACtB,mBAAmB,CAAE,CAAC,CACzB,AACD,AAAA,QAAQ,AAAA,MAAM,CAAG,MAAM,AAAC,CACpB,GAAG,CAAE,GAAG,CACR,IAAI,CAAE,KAAK,CACX,UAAU,CAAE,KAAK,CACjB,kBAAkB,CAAE,IAAI,CACxB,kBAAkB,CAAE,gBAAmB,CACvC,iBAAiB,CAAE,CAAC,CACvB,AACD,AAAA,QAAQ,AAAA,MAAM,CAAG,MAAM,AAAA,MAAM,AAAC,CAC1B,MAAM,CAAE,KAAK,CACb,IAAI,CAAE,GAAG,CACT,OAAO,CAAE,GAAG,CACZ,kBAAkB,CAAE,IAAI,CACxB,iBAAiB,CAAE,CAAC,CACvB,AACD,AAAA,QAAQ,AAAA,OAAO,CAAG,MAAM,AAAC,CACrB,GAAG,CAAE,KAAK,CACV,IAAI,CAAE,GAAG,CACT,WAAW,CAAE,KAAK,CAClB,gBAAgB,CAAE,CAAC,CACnB,mBAAmB,CAAE,IAAI,CACzB,mBAAmB,CAAE,gBAAmB,CAC3C,AACD,AAAA,QAAQ,AAAA,OAAO,CAAG,MAAM,AAAA,MAAM,AAAC,CAC3B,GAAG,CAAE,GAAG,CACR,WAAW,CAAE,KAAK,CAClB,OAAO,CAAE,GAAG,CACZ,gBAAgB,CAAE,CAAC,CACnB,mBAAmB,CAAE,IAAI,CAC5B,AACD,AAAA,QAAQ,AAAA,KAAK,CAAG,MAAM,AAAC,CACnB,GAAG,CAAE,GAAG,CACR,KAAK,CAAE,KAAK,CACZ,UAAU,CAAE,KAAK,CACjB,kBAAkB,CAAE,CAAC,CACrB,iBAAiB,CAAE,IAAI,CACvB,iBAAiB,CAAE,gBAAmB,CACzC,AACD,AAAA,QAAQ,AAAA,KAAK,CAAG,MAAM,AAAA,MAAM,AAAC,CACzB,KAAK,CAAE,GAAG,CACV,MAAM,CAAE,KAAK,CACb,OAAO,CAAE,GAAG,CACZ,kBAAkB,CAAE,CAAC,CACrB,iBAAiB,CAAE,IAAI,CAC1B,AACD,AAAA,SAAS,AAAC,CACN,QAAQ,CAAE,QAAQ,CACrB,AACD,AAAA,eAAe,AAAC,CACZ,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,IAAI,CACX,QAAQ,CAAE,MAAM,CACnB,AACD,AAAA,eAAe,CAAG,KAAK,AAAC,CACpB,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,IAAI,CACb,kBAAkB,CAAE,qBAAqB,CACzC,aAAa,CAAE,qBAAqB,CACpC,UAAU,CAAE,qBAAqB,CACpC,AACD,AAAA,eAAe,CAAG,KAAK,CAAG,GAAG,CAC7B,eAAe,CAAG,KAAK,CAAG,CAAC,CAAG,GAAG,AAAC,CAC9B,WAAW,CAAE,CAAC,CACjB,AACD,MAAM,CAAC,GAAG,MAAM,YAAY,KAAI,mBAAmB,EAXnD,AAAA,eAAe,CAAG,KAAK,AAYK,CACpB,kBAAkB,CAAE,kCAAkC,CACtD,aAAa,CAAE,6BAA6B,CAC5C,UAAU,CAAE,0BAA0B,CAEtC,2BAA2B,CAAE,MAAM,CACnC,mBAAmB,CAAE,MAAM,CAC3B,mBAAmB,CAAE,IAAI,CACzB,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,eAAe,CAAG,KAAK,AAAA,KAAK,CAC5B,eAAe,CAAG,KAAK,AAAA,OAAO,AAAA,MAAM,AAAC,CACjC,IAAI,CAAE,CAAC,CACP,iBAAiB,CAAE,uBAAuB,CAC1C,SAAS,CAAE,uBAAuB,CACrC,AACD,AAAA,eAAe,CAAG,KAAK,AAAA,KAAK,CAC5B,eAAe,CAAG,KAAK,AAAA,OAAO,AAAA,KAAK,AAAC,CAChC,IAAI,CAAE,CAAC,CACP,iBAAiB,CAAE,wBAAwB,CAC3C,SAAS,CAAE,wBAAwB,CACtC,AACD,AAAA,eAAe,CAAG,KAAK,AAAA,KAAK,AAAA,KAAK,CACjC,eAAe,CAAG,KAAK,AAAA,KAAK,AAAA,MAAM,CAClC,eAAe,CAAG,KAAK,AAAA,OAAO,AAAC,CAC3B,IAAI,CAAE,CAAC,CACP,iBAAiB,CAAE,oBAAoB,CACvC,SAAS,CAAE,oBAAoB,CAClC,CAEL,AAAA,eAAe,CAAG,OAAO,CACzB,eAAe,CAAG,KAAK,CACvB,eAAe,CAAG,KAAK,AAAC,CACpB,OAAO,CAAE,KAAK,CACjB,AACD,AAAA,eAAe,CAAG,OAAO,AAAC,CACtB,IAAI,CAAE,CAAC,CACV,AACD,AAAA,eAAe,CAAG,KAAK,CACvB,eAAe,CAAG,KAAK,AAAC,CACpB,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,IAAI,CACd,AACD,AAAA,eAAe,CAAG,KAAK,AAAC,CACpB,IAAI,CAAE,IAAI,CACb,AACD,AAAA,eAAe,CAAG,KAAK,AAAC,CACpB,IAAI,CAAE,KAAK,CACd,AACD,AAAA,eAAe,CAAG,KAAK,AAAA,KAAK,CAC5B,eAAe,CAAG,KAAK,AAAA,MAAM,AAAC,CAC1B,IAAI,CAAE,CAAC,CACV,AACD,AAAA,eAAe,CAAG,OAAO,AAAA,KAAK,AAAC,CAC3B,IAAI,CAAE,KAAK,CACd,AACD,AAAA,eAAe,CAAG,OAAO,AAAA,MAAM,AAAC,CAC5B,IAAI,CAAE,IAAI,CACb,AACD,AAAA,iBAAiB,AAAC,CACd,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,MAAM,CAAE,CAAC,CACT,IAAI,CAAE,CAAC,CACP,KAAK,CAAE,GAAG,CACV,SAAS,CAAE,IAAI,CACf,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,MAAM,CAClB,WAAW,CAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,eAAkB,CACzC,MAAM,CAAE,iBAAiB,CACzB,OAAO,CAAE,GAAG,CACf,AACD,AAAA,iBAAiB,AAAA,KAAK,AAAC,CACnB,gBAAgB,CAAE,0EAAgF,CAClG,gBAAgB,CAAE,qEAA2E,CAC7F,gBAAgB,CAAE,4FAMjB,CACD,gBAAgB,CAAE,sEAA4E,CAC9F,MAAM,CAAE,8GAA8G,CACtH,iBAAiB,CAAE,QAAQ,CAC9B,AACD,AAAA,iBAAiB,AAAA,MAAM,AAAC,CACpB,KAAK,CAAE,CAAC,CACR,IAAI,CAAE,IAAI,CACV,gBAAgB,CAAE,0EAAgF,CAClG,gBAAgB,CAAE,qEAA2E,CAC7F,gBAAgB,CAAE,4FAMjB,CACD,gBAAgB,CAAE,sEAA4E,CAC9F,MAAM,CAAE,8GAA8G,CACtH,iBAAiB,CAAE,QAAQ,CAC9B,AACD,AAAA,iBAAiB,AAAA,MAAM,CACvB,iBAAiB,AAAA,MAAM,AAAC,CACpB,KAAK,CAAE,IAAI,CACX,eAAe,CAAE,IAAI,CACrB,MAAM,CAAE,iBAAiB,CACzB,OAAO,CAAE,CAAC,CACV,OAAO,CAAE,GAAG,CACf,AACD,AAAA,iBAAiB,CAAC,UAAU,CAC5B,iBAAiB,CAAC,UAAU,CAC5B,iBAAiB,CAAC,uBAAuB,CACzC,iBAAiB,CAAC,wBAAwB,AAAC,CACvC,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,GAAG,CACR,OAAO,CAAE,CAAC,CACV,OAAO,CAAE,YAAY,CACxB,AACD,AAAA,iBAAiB,CAAC,UAAU,CAC5B,iBAAiB,CAAC,uBAAuB,AAAC,CACtC,IAAI,CAAE,GAAG,CACT,WAAW,CAAE,KAAK,CACrB,AACD,AAAA,iBAAiB,CAAC,UAAU,CAC5B,iBAAiB,CAAC,wBAAwB,AAAC,CACvC,KAAK,CAAE,GAAG,CACV,YAAY,CAAE,KAAK,CACtB,AACD,AAAA,iBAAiB,CAAC,UAAU,CAC5B,iBAAiB,CAAC,UAAU,AAAC,CACzB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,UAAU,CAAE,KAAK,CACjB,WAAW,CAAE,KAAK,CAClB,WAAW,CAAE,CAAC,CACjB,AACD,AAAA,iBAAiB,CAAC,UAAU,AAAA,OAAO,AAAC,CAChC,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,iBAAiB,CAAC,UAAU,AAAA,OAAO,AAAC,CAChC,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,oBAAoB,AAAC,CACjB,QAAQ,CAAE,QAAQ,CAClB,MAAM,CAAE,IAAI,CACZ,IAAI,CAAE,GAAG,CACT,OAAO,CAAE,EAAE,CACX,KAAK,CAAE,GAAG,CACV,YAAY,CAAE,CAAC,CACf,WAAW,CAAE,IAAI,CACjB,UAAU,CAAE,MAAM,CAClB,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,oBAAoB,CAAC,EAAE,AAAC,CACpB,OAAO,CAAE,YAAY,CACrB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,MAAM,CAAE,GAAG,CACX,WAAW,CAAE,MAAM,CACnB,MAAM,CAAE,OAAO,CACf,gBAAgB,CAAE,OAAO,CACzB,gBAAgB,CAAE,aAAgB,CAClC,MAAM,CAAE,cAAc,CACtB,aAAa,CAAE,IAAI,CACtB,AACD,AAAA,oBAAoB,CAAC,OAAO,AAAC,CACzB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,MAAM,CAAE,CAAC,CACT,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,iBAAiB,AAAC,CACd,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,GAAG,CACV,MAAM,CAAE,IAAI,CACZ,IAAI,CAAE,GAAG,CACT,OAAO,CAAE,EAAE,CACX,WAAW,CAAE,IAAI,CACjB,cAAc,CAAE,IAAI,CACpB,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,MAAM,CAClB,WAAW,CAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,eAAkB,CAC5C,AACD,AAAA,iBAAiB,CAAC,IAAI,AAAC,CACnB,WAAW,CAAE,IAAI,CACpB,AACD,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK,EAC/B,AAAA,iBAAiB,CAAC,uBAAuB,CACzC,iBAAiB,CAAC,wBAAwB,CAC1C,iBAAiB,CAAC,UAAU,CAC5B,iBAAiB,CAAC,UAAU,AAAC,CACzB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,UAAU,CAAE,KAAK,CACjB,SAAS,CAAE,IAAI,CAClB,AACD,AAAA,iBAAiB,CAAC,uBAAuB,CACzC,iBAAiB,CAAC,UAAU,AAAC,CACzB,WAAW,CAAE,KAAK,CACrB,AACD,AAAA,iBAAiB,CAAC,wBAAwB,CAC1C,iBAAiB,CAAC,UAAU,AAAC,CACzB,YAAY,CAAE,KAAK,CACtB,AAhCL,AAAA,iBAAiB,AAiCK,CACd,KAAK,CAAE,GAAG,CACV,IAAI,CAAE,GAAG,CACT,cAAc,CAAE,IAAI,CACvB,AAlEL,AAAA,oBAAoB,AAmEK,CACjB,MAAM,CAAE,IAAI,CACf,CAEL,AAAA,SAAS,AAAA,OAAO,CAChB,SAAS,AAAA,MAAM,CACf,cAAc,CAAC,EAAE,AAAA,OAAO,CACxB,cAAc,CAAC,EAAE,AAAA,MAAM,CACvB,UAAU,AAAA,OAAO,CACjB,UAAU,AAAA,MAAM,CAChB,gBAAgB,AAAA,OAAO,CACvB,gBAAgB,AAAA,MAAM,CACtB,IAAI,AAAA,OAAO,CACX,IAAI,AAAA,MAAM,CACV,gBAAgB,CAAC,WAAW,AAAA,OAAO,CACnC,gBAAgB,CAAC,WAAW,AAAA,MAAM,CAClC,YAAY,AAAA,OAAO,CACnB,YAAY,AAAA,MAAM,CAClB,mBAAmB,CAAG,UAAU,AAAA,OAAO,CACvC,mBAAmB,CAAG,UAAU,AAAA,MAAM,CACtC,IAAI,AAAA,OAAO,CACX,IAAI,AAAA,MAAM,CACV,OAAO,AAAA,OAAO,CACd,OAAO,AAAA,MAAM,CACb,cAAc,AAAA,OAAO,CACrB,cAAc,AAAA,MAAM,CACpB,gBAAgB,AAAA,OAAO,CACvB,gBAAgB,AAAA,MAAM,CACtB,MAAM,AAAA,OAAO,CACb,MAAM,AAAA,MAAM,CACZ,WAAW,AAAA,OAAO,CAClB,WAAW,AAAA,MAAM,CACjB,aAAa,AAAA,OAAO,CACpB,aAAa,AAAA,MAAM,AAAC,CAChB,OAAO,CAAE,KAAK,CACd,OAAO,CAAE,GAAG,CACf,AACD,AAAA,SAAS,AAAA,MAAM,CACf,cAAc,CAAC,EAAE,AAAA,MAAM,CACvB,UAAU,AAAA,MAAM,CAChB,gBAAgB,AAAA,MAAM,CACtB,IAAI,AAAA,MAAM,CACV,gBAAgB,CAAC,WAAW,AAAA,MAAM,CAClC,YAAY,AAAA,MAAM,CAClB,mBAAmB,CAAG,UAAU,AAAA,MAAM,CACtC,IAAI,AAAA,MAAM,CACV,OAAO,AAAA,MAAM,CACb,cAAc,AAAA,MAAM,CACpB,gBAAgB,AAAA,MAAM,CACtB,MAAM,AAAA,MAAM,CACZ,WAAW,AAAA,MAAM,CACjB,aAAa,AAAA,MAAM,AAAC,CAChB,KAAK,CAAE,IAAI,CACd,AACD,AAAA,aAAa,AAAC,CACV,OAAO,CAAE,KAAK,CACd,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,WAAW,AAAC,CACR,KAAK,CAAE,gBAAgB,CAC1B,AACD,AAAA,UAAU,AAAC,CACP,KAAK,CAAE,eAAe,CACzB,AACD,AAAA,KAAK,AAAC,CACF,OAAO,CAAE,eAAe,CAC3B,AACD,AAAA,KAAK,AAAC,CACF,OAAO,CAAE,gBAAgB,CAC5B,AACD,AAAA,UAAU,AAAC,CACP,UAAU,CAAE,MAAM,CACrB,AACD,AAAA,UAAU,AAAC,CACP,IAAI,CAAE,KAAK,CACX,KAAK,CAAE,WAAW,CAClB,WAAW,CAAE,IAAI,CACjB,gBAAgB,CAAE,WAAW,CAC7B,MAAM,CAAE,CAAC,CACZ,AACD,AAAA,OAAO,AAAC,CACJ,OAAO,CAAE,eAAe,CAC3B,AACD,AAAA,MAAM,AAAC,CACH,QAAQ,CAAE,KAAK,CAClB,AACD,aAAa,CACT,KAAK,CAAE,YAAY,CAEvB,AAAA,WAAW,CACX,WAAW,CACX,WAAW,CACX,WAAW,AAAC,CACR,OAAO,CAAE,eAAe,CAC3B,AACD,AAAA,iBAAiB,CACjB,kBAAkB,CAClB,wBAAwB,CACxB,iBAAiB,CACjB,kBAAkB,CAClB,wBAAwB,CACxB,iBAAiB,CACjB,kBAAkB,CAClB,wBAAwB,CACxB,iBAAiB,CACjB,kBAAkB,CAClB,wBAAwB,AAAC,CACrB,OAAO,CAAE,eAAe,CAC3B,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,WAAW,AAAC,CACR,OAAO,CAAE,gBAAgB,CAC5B,AACD,AAAA,KAAK,AAAA,WAAW,AAAC,CACb,OAAO,CAAE,KAAK,CACjB,AACD,AAAA,EAAE,AAAA,WAAW,AAAC,CACV,OAAO,CAAE,oBAAoB,CAChC,AACD,AAAA,EAAE,AAAA,WAAW,CACb,EAAE,AAAA,WAAW,AAAC,CACV,OAAO,CAAE,qBAAqB,CACjC,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,iBAAiB,AAAC,CACd,OAAO,CAAE,gBAAgB,CAC5B,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,kBAAkB,AAAC,CACf,OAAO,CAAE,iBAAiB,CAC7B,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,wBAAwB,AAAC,CACrB,OAAO,CAAE,uBAAuB,CACnC,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK,EAC3C,AAAA,WAAW,AAAC,CACR,OAAO,CAAE,gBAAgB,CAC5B,AACD,AAAA,KAAK,AAAA,WAAW,AAAC,CACb,OAAO,CAAE,KAAK,CACjB,AACD,AAAA,EAAE,AAAA,WAAW,AAAC,CACV,OAAO,CAAE,oBAAoB,CAChC,AACD,AAAA,EAAE,AAAA,WAAW,CACb,EAAE,AAAA,WAAW,AAAC,CACV,OAAO,CAAE,qBAAqB,CACjC,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK,EAC3C,AAAA,iBAAiB,AAAC,CACd,OAAO,CAAE,gBAAgB,CAC5B,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK,EAC3C,AAAA,kBAAkB,AAAC,CACf,OAAO,CAAE,iBAAiB,CAC7B,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK,EAC3C,AAAA,wBAAwB,AAAC,CACrB,OAAO,CAAE,uBAAuB,CACnC,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,MAAM,EAC5C,AAAA,WAAW,AAAC,CACR,OAAO,CAAE,gBAAgB,CAC5B,AACD,AAAA,KAAK,AAAA,WAAW,AAAC,CACb,OAAO,CAAE,KAAK,CACjB,AACD,AAAA,EAAE,AAAA,WAAW,AAAC,CACV,OAAO,CAAE,oBAAoB,CAChC,AACD,AAAA,EAAE,AAAA,WAAW,CACb,EAAE,AAAA,WAAW,AAAC,CACV,OAAO,CAAE,qBAAqB,CACjC,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,MAAM,EAC5C,AAAA,iBAAiB,AAAC,CACd,OAAO,CAAE,gBAAgB,CAC5B,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,MAAM,EAC5C,AAAA,kBAAkB,AAAC,CACf,OAAO,CAAE,iBAAiB,CAC7B,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,MAAM,EAC5C,AAAA,wBAAwB,AAAC,CACrB,OAAO,CAAE,uBAAuB,CACnC,CAEL,MAAM,EAAE,SAAS,EAAE,MAAM,EACrB,AAAA,WAAW,AAAC,CACR,OAAO,CAAE,gBAAgB,CAC5B,AACD,AAAA,KAAK,AAAA,WAAW,AAAC,CACb,OAAO,CAAE,KAAK,CACjB,AACD,AAAA,EAAE,AAAA,WAAW,AAAC,CACV,OAAO,CAAE,oBAAoB,CAChC,AACD,AAAA,EAAE,AAAA,WAAW,CACb,EAAE,AAAA,WAAW,AAAC,CACV,OAAO,CAAE,qBAAqB,CACjC,CAEL,MAAM,EAAE,SAAS,EAAE,MAAM,EACrB,AAAA,iBAAiB,AAAC,CACd,OAAO,CAAE,gBAAgB,CAC5B,CAEL,MAAM,EAAE,SAAS,EAAE,MAAM,EACrB,AAAA,kBAAkB,AAAC,CACf,OAAO,CAAE,iBAAiB,CAC7B,CAEL,MAAM,EAAE,SAAS,EAAE,MAAM,EACrB,AAAA,wBAAwB,AAAC,CACrB,OAAO,CAAE,uBAAuB,CACnC,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,UAAU,AAAC,CACP,OAAO,CAAE,eAAe,CAC3B,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK,EAC3C,AAAA,UAAU,AAAC,CACP,OAAO,CAAE,eAAe,CAC3B,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,MAAM,EAC5C,AAAA,UAAU,AAAC,CACP,OAAO,CAAE,eAAe,CAC3B,CAEL,MAAM,EAAE,SAAS,EAAE,MAAM,EACrB,AAAA,UAAU,AAAC,CACP,OAAO,CAAE,eAAe,CAC3B,CAEL,AAAA,cAAc,AAAC,CACX,OAAO,CAAE,eAAe,CAC3B,AACD,MAAM,CAAC,KAAK,CAHZ,AAAA,cAAc,AAIK,CACX,OAAO,CAAE,gBAAgB,CAC5B,AACD,AAAA,KAAK,AAAA,cAAc,AAAC,CAChB,OAAO,CAAE,KAAK,CACjB,AACD,AAAA,EAAE,AAAA,cAAc,AAAC,CACb,OAAO,CAAE,oBAAoB,CAChC,AACD,AAAA,EAAE,AAAA,cAAc,CAChB,EAAE,AAAA,cAAc,AAAC,CACb,OAAO,CAAE,qBAAqB,CACjC,CAEL,AAAA,oBAAoB,AAAC,CACjB,OAAO,CAAE,eAAe,CAC3B,AACD,MAAM,CAAC,KAAK,CAHZ,AAAA,oBAAoB,AAIK,CACjB,OAAO,CAAE,gBAAgB,CAC5B,CAEL,AAAA,qBAAqB,AAAC,CAClB,OAAO,CAAE,eAAe,CAC3B,AACD,MAAM,CAAC,KAAK,CAHZ,AAAA,qBAAqB,AAIK,CAClB,OAAO,CAAE,iBAAiB,CAC7B,CAEL,AAAA,2BAA2B,AAAC,CACxB,OAAO,CAAE,eAAe,CAC3B,AACD,MAAM,CAAC,KAAK,CAHZ,AAAA,2BAA2B,AAIK,CACxB,OAAO,CAAE,uBAAuB,CACnC,CAEL,MAAM,CAAC,KAAK,CACR,AAAA,aAAa,AAAC,CACV,OAAO,CAAE,eAAe,CAC3B,EC1pNL,AAAA,AACI,GADH,CAAI,KAAK,AAAT,EACG,KAAK,AAAA,UAAU,AAAC,CACZ,UAAU,CAAE,KAAK,CACpB,CAHL,AAAA,AAII,GAJH,CAAI,KAAK,AAAT,EAIG,KAAK,AAAA,WAAW,AAAC,CACb,UAAU,CAAE,IAAI,CACnB,CANL,AAAA,AAOI,GAPH,CAAI,KAAK,AAAT,EAOG,cAAc,AAAC,CACX,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,OAAO,CACxB,CAVL,AAAA,AAWI,GAXH,CAAI,KAAK,AAAT,EAWG,YAAY,AAAC,CACT,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,OAAO,CACrB,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,CAAC,CACjB,CAhBL,AAAA,AAiBI,GAjBH,CAAI,KAAK,AAAT,EAiBG,EAAE,AAAC,CACC,YAAY,CAAE,CAAC,CACf,WAAW,CAAE,OAAO,CACvB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,GArB5B,AAAA,AAsBQ,GAtBP,CAAI,KAAK,AAAT,EAsBO,cAAc,CAAC,EAAE,AAAC,CACd,KAAK,CAAE,KAAK,CACZ,KAAK,CAAE,KAAK,CACZ,UAAU,CAAE,IAAI,CACnB,CA1BT,AAAA,AA2BQ,GA3BP,CAAI,KAAK,AAAT,EA2BO,cAAc,CAAC,EAAE,AAAC,CACd,YAAY,CAAE,KAAK,CACnB,WAAW,CAAE,CAAC,CACjB,EA9BT,AAAA,AAgCI,GAhCH,CAAI,KAAK,AAAT,EAgCG,UAAU,AAAC,CACP,YAAY,CAAE,iBAAiB,CAC/B,WAAW,CAAE,CAAC,CACjB,CAnCL,AAAA,AAoCI,GApCH,CAAI,KAAK,AAAT,EAoCG,mBAAmB,EApCvB,AAAA,GAAC,CAAI,KAAK,AAAT,EAqCG,UAAU,AAAA,UAAU,AAAC,CACjB,YAAY,CAAE,IAAI,CAClB,aAAa,CAAE,CAAC,CAChB,WAAW,CAAE,iBAAiB,CAC9B,YAAY,CAAE,CAAC,CACf,UAAU,CAAE,IAAI,CACnB,CA3CL,AAAA,AA4CI,GA5CH,CAAI,KAAK,AAAT,EA4CG,SAAS,EA5Cb,AAAA,GAAC,CAAI,KAAK,AAAT,EA6CG,SAAS,EA7Cb,AAAA,GAAC,CAAI,KAAK,AAAT,EA8CG,SAAS,EA9Cb,AAAA,GAAC,CAAI,KAAK,AAAT,EA+CG,SAAS,EA/Cb,AAAA,GAAC,CAAI,KAAK,AAAT,EAgDG,SAAS,EAhDb,AAAA,GAAC,CAAI,KAAK,AAAT,EAiDG,SAAS,EAjDb,AAAA,GAAC,CAAI,KAAK,AAAT,EAkDG,SAAS,EAlDb,AAAA,GAAC,CAAI,KAAK,AAAT,EAmDG,SAAS,EAnDb,AAAA,GAAC,CAAI,KAAK,AAAT,EAoDG,SAAS,EApDb,AAAA,GAAC,CAAI,KAAK,AAAT,EAqDG,SAAS,EArDb,AAAA,GAAC,CAAI,KAAK,AAAT,EAsDG,SAAS,EAtDb,AAAA,GAAC,CAAI,KAAK,AAAT,EAuDG,SAAS,EAvDb,AAAA,GAAC,CAAI,KAAK,AAAT,EAwDG,SAAS,EAxDb,AAAA,GAAC,CAAI,KAAK,AAAT,EAyDG,SAAS,EAzDb,AAAA,GAAC,CAAI,KAAK,AAAT,EA0DG,SAAS,EA1Db,AAAA,GAAC,CAAI,KAAK,AAAT,EA2DG,SAAS,EA3Db,AAAA,GAAC,CAAI,KAAK,AAAT,EA4DG,SAAS,EA5Db,AAAA,GAAC,CAAI,KAAK,AAAT,EA6DG,SAAS,EA7Db,AAAA,GAAC,CAAI,KAAK,AAAT,EA8DG,SAAS,EA9Db,AAAA,GAAC,CAAI,KAAK,AAAT,EA+DG,SAAS,EA/Db,AAAA,GAAC,CAAI,KAAK,AAAT,EAgEG,SAAS,EAhEb,AAAA,GAAC,CAAI,KAAK,AAAT,EAiEG,SAAS,EAjEb,AAAA,GAAC,CAAI,KAAK,AAAT,EAkEG,SAAS,EAlEb,AAAA,GAAC,CAAI,KAAK,AAAT,EAmEG,SAAS,EAnEb,AAAA,GAAC,CAAI,KAAK,AAAT,EAoEG,SAAS,EApEb,AAAA,GAAC,CAAI,KAAK,AAAT,EAqEG,SAAS,EArEb,AAAA,GAAC,CAAI,KAAK,AAAT,EAsEG,SAAS,EAtEb,AAAA,GAAC,CAAI,KAAK,AAAT,EAuEG,SAAS,EAvEb,AAAA,GAAC,CAAI,KAAK,AAAT,EAwEG,SAAS,EAxEb,AAAA,GAAC,CAAI,KAAK,AAAT,EAyEG,SAAS,EAzEb,AAAA,GAAC,CAAI,KAAK,AAAT,EA0EG,SAAS,EA1Eb,AAAA,GAAC,CAAI,KAAK,AAAT,EA2EG,SAAS,EA3Eb,AAAA,GAAC,CAAI,KAAK,AAAT,EA4EG,SAAS,EA5Eb,AAAA,GAAC,CAAI,KAAK,AAAT,EA6EG,SAAS,EA7Eb,AAAA,GAAC,CAAI,KAAK,AAAT,EA8EG,SAAS,EA9Eb,AAAA,GAAC,CAAI,KAAK,AAAT,EA+EG,SAAS,EA/Eb,AAAA,GAAC,CAAI,KAAK,AAAT,EAgFG,UAAU,EAhFd,AAAA,GAAC,CAAI,KAAK,AAAT,EAiFG,UAAU,EAjFd,AAAA,GAAC,CAAI,KAAK,AAAT,EAkFG,UAAU,EAlFd,AAAA,GAAC,CAAI,KAAK,AAAT,EAmFG,UAAU,EAnFd,AAAA,GAAC,CAAI,KAAK,AAAT,EAoFG,UAAU,EApFd,AAAA,GAAC,CAAI,KAAK,AAAT,EAqFG,UAAU,EArFd,AAAA,GAAC,CAAI,KAAK,AAAT,EAsFG,UAAU,EAtFd,AAAA,GAAC,CAAI,KAAK,AAAT,EAuFG,UAAU,EAvFd,AAAA,GAAC,CAAI,KAAK,AAAT,EAwFG,UAAU,EAxFd,AAAA,GAAC,CAAI,KAAK,AAAT,EAyFG,UAAU,EAzFd,AAAA,GAAC,CAAI,KAAK,AAAT,EA0FG,UAAU,EA1Fd,AAAA,GAAC,CAAI,KAAK,AAAT,EA2FG,UAAU,AAAC,CACP,QAAQ,CAAE,QAAQ,CAClB,UAAU,CAAE,GAAG,CACf,YAAY,CAAE,IAAI,CAClB,aAAa,CAAE,IAAI,CACtB,CAhGL,AAAA,AAiGI,GAjGH,CAAI,KAAK,AAAT,EAiGG,SAAS,EAjGb,AAAA,GAAC,CAAI,KAAK,AAAT,EAkGG,SAAS,EAlGb,AAAA,GAAC,CAAI,KAAK,AAAT,EAmGG,SAAS,EAnGb,AAAA,GAAC,CAAI,KAAK,AAAT,EAoGG,SAAS,EApGb,AAAA,GAAC,CAAI,KAAK,AAAT,EAqGG,SAAS,EArGb,AAAA,GAAC,CAAI,KAAK,AAAT,EAsGG,SAAS,EAtGb,AAAA,GAAC,CAAI,KAAK,AAAT,EAuGG,SAAS,EAvGb,AAAA,GAAC,CAAI,KAAK,AAAT,EAwGG,SAAS,EAxGb,AAAA,GAAC,CAAI,KAAK,AAAT,EAyGG,SAAS,EAzGb,AAAA,GAAC,CAAI,KAAK,AAAT,EA0GG,UAAU,EA1Gd,AAAA,GAAC,CAAI,KAAK,AAAT,EA2GG,UAAU,EA3Gd,AAAA,GAAC,CAAI,KAAK,AAAT,EA4GG,UAAU,AAAC,CACP,KAAK,CAAE,KAAK,CACf,CA9GL,AAAA,AA+GI,GA/GH,CAAI,KAAK,AAAT,EA+GG,UAAU,AAAC,CACP,KAAK,CAAE,IAAI,CACd,CAjHL,AAAA,AAkHI,GAlHH,CAAI,KAAK,AAAT,EAkHG,UAAU,AAAC,CACP,KAAK,CAAE,YAAY,CACtB,CApHL,AAAA,AAqHI,GArHH,CAAI,KAAK,AAAT,EAqHG,UAAU,AAAC,CACP,KAAK,CAAE,YAAY,CACtB,CAvHL,AAAA,AAwHI,GAxHH,CAAI,KAAK,AAAT,EAwHG,SAAS,AAAC,CACN,KAAK,CAAE,GAAG,CACb,CA1HL,AAAA,AA2HI,GA3HH,CAAI,KAAK,AAAT,EA2HG,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CA7HL,AAAA,AA8HI,GA9HH,CAAI,KAAK,AAAT,EA8HG,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CAhIL,AAAA,AAiII,GAjIH,CAAI,KAAK,AAAT,EAiIG,SAAS,AAAC,CACN,KAAK,CAAE,GAAG,CACb,CAnIL,AAAA,AAoII,GApIH,CAAI,KAAK,AAAT,EAoIG,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CAtIL,AAAA,AAuII,GAvIH,CAAI,KAAK,AAAT,EAuIG,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CAzIL,AAAA,AA0II,GA1IH,CAAI,KAAK,AAAT,EA0IG,SAAS,AAAC,CACN,KAAK,CAAE,GAAG,CACb,CA5IL,AAAA,AA6II,GA7IH,CAAI,KAAK,AAAT,EA6IG,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CA/IL,AAAA,AAgJI,GAhJH,CAAI,KAAK,AAAT,EAgJG,SAAS,AAAC,CACN,KAAK,CAAE,WAAW,CACrB,CAlJL,AAAA,AAmJI,GAnJH,CAAI,KAAK,AAAT,EAmJG,eAAe,AAAC,CACZ,IAAI,CAAE,IAAI,CACV,KAAK,CAAE,IAAI,CACd,CAtJL,AAAA,AAuJI,GAvJH,CAAI,KAAK,AAAT,EAuJG,eAAe,AAAC,CACZ,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CA1JL,AAAA,AA2JI,GA3JH,CAAI,KAAK,AAAT,EA2JG,eAAe,AAAC,CACZ,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CA9JL,AAAA,AA+JI,GA/JH,CAAI,KAAK,AAAT,EA+JG,cAAc,AAAC,CACX,IAAI,CAAE,GAAG,CACT,KAAK,CAAE,IAAI,CACd,CAlKL,AAAA,AAmKI,GAnKH,CAAI,KAAK,AAAT,EAmKG,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CAtKL,AAAA,AAuKI,GAvKH,CAAI,KAAK,AAAT,EAuKG,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CA1KL,AAAA,AA2KI,GA3KH,CAAI,KAAK,AAAT,EA2KG,cAAc,AAAC,CACX,IAAI,CAAE,GAAG,CACT,KAAK,CAAE,IAAI,CACd,CA9KL,AAAA,AA+KI,GA/KH,CAAI,KAAK,AAAT,EA+KG,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CAlLL,AAAA,AAmLI,GAnLH,CAAI,KAAK,AAAT,EAmLG,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CAtLL,AAAA,AAuLI,GAvLH,CAAI,KAAK,AAAT,EAuLG,cAAc,AAAC,CACX,IAAI,CAAE,GAAG,CACT,KAAK,CAAE,IAAI,CACd,CA1LL,AAAA,AA2LI,GA3LH,CAAI,KAAK,AAAT,EA2LG,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CA9LL,AAAA,AA+LI,GA/LH,CAAI,KAAK,AAAT,EA+LG,cAAc,AAAC,CACX,IAAI,CAAE,WAAW,CACjB,KAAK,CAAE,IAAI,CACd,CAlML,AAAA,AAmMI,GAnMH,CAAI,KAAK,AAAT,EAmMG,cAAc,AAAC,CACX,IAAI,CAAE,IAAI,CACV,KAAK,CAAE,IAAI,CACd,CAtML,AAAA,AAuMI,GAvMH,CAAI,KAAK,AAAT,EAuMG,eAAe,AAAC,CACZ,KAAK,CAAE,IAAI,CACX,IAAI,CAAE,CAAC,CACV,CA1ML,AAAA,AA2MI,GA3MH,CAAI,KAAK,AAAT,EA2MG,eAAe,AAAC,CACZ,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CA9ML,AAAA,AA+MI,GA/MH,CAAI,KAAK,AAAT,EA+MG,eAAe,AAAC,CACZ,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CAlNL,AAAA,AAmNI,GAnNH,CAAI,KAAK,AAAT,EAmNG,cAAc,AAAC,CACX,KAAK,CAAE,GAAG,CACV,IAAI,CAAE,CAAC,CACV,CAtNL,AAAA,AAuNI,GAvNH,CAAI,KAAK,AAAT,EAuNG,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CA1NL,AAAA,AA2NI,GA3NH,CAAI,KAAK,AAAT,EA2NG,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CA9NL,AAAA,AA+NI,GA/NH,CAAI,KAAK,AAAT,EA+NG,cAAc,AAAC,CACX,KAAK,CAAE,GAAG,CACV,IAAI,CAAE,CAAC,CACV,CAlOL,AAAA,AAmOI,GAnOH,CAAI,KAAK,AAAT,EAmOG,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CAtOL,AAAA,AAuOI,GAvOH,CAAI,KAAK,AAAT,EAuOG,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CA1OL,AAAA,AA2OI,GA3OH,CAAI,KAAK,AAAT,EA2OG,cAAc,AAAC,CACX,KAAK,CAAE,GAAG,CACV,IAAI,CAAE,CAAC,CACV,CA9OL,AAAA,AA+OI,GA/OH,CAAI,KAAK,AAAT,EA+OG,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CAlPL,AAAA,AAmPI,GAnPH,CAAI,KAAK,AAAT,EAmPG,cAAc,AAAC,CACX,KAAK,CAAE,WAAW,CAClB,IAAI,CAAE,CAAC,CACV,CAtPL,AAAA,AAuPI,GAvPH,CAAI,KAAK,AAAT,EAuPG,cAAc,AAAC,CACX,KAAK,CAAE,IAAI,CACX,IAAI,CAAE,CAAC,CACV,CA1PL,AAAA,AA2PI,GA3PH,CAAI,KAAK,AAAT,EA2PG,iBAAiB,AAAC,CACd,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,CAAC,CACjB,CA9PL,AAAA,AA+PI,GA/PH,CAAI,KAAK,AAAT,EA+PG,iBAAiB,AAAC,CACd,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CAlQL,AAAA,AAmQI,GAnQH,CAAI,KAAK,AAAT,EAmQG,iBAAiB,AAAC,CACd,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CAtQL,AAAA,AAuQI,GAvQH,CAAI,KAAK,AAAT,EAuQG,gBAAgB,AAAC,CACb,YAAY,CAAE,GAAG,CACjB,WAAW,CAAE,CAAC,CACjB,CA1QL,AAAA,AA2QI,GA3QH,CAAI,KAAK,AAAT,EA2QG,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CA9QL,AAAA,AA+QI,GA/QH,CAAI,KAAK,AAAT,EA+QG,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CAlRL,AAAA,AAmRI,GAnRH,CAAI,KAAK,AAAT,EAmRG,gBAAgB,AAAC,CACb,YAAY,CAAE,GAAG,CACjB,WAAW,CAAE,CAAC,CACjB,CAtRL,AAAA,AAuRI,GAvRH,CAAI,KAAK,AAAT,EAuRG,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CA1RL,AAAA,AA2RI,GA3RH,CAAI,KAAK,AAAT,EA2RG,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CA9RL,AAAA,AA+RI,GA/RH,CAAI,KAAK,AAAT,EA+RG,gBAAgB,AAAC,CACb,YAAY,CAAE,GAAG,CACjB,WAAW,CAAE,CAAC,CACjB,CAlSL,AAAA,AAmSI,GAnSH,CAAI,KAAK,AAAT,EAmSG,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CAtSL,AAAA,AAuSI,GAvSH,CAAI,KAAK,AAAT,EAuSG,gBAAgB,AAAC,CACb,YAAY,CAAE,WAAW,CACzB,WAAW,CAAE,CAAC,CACjB,CA1SL,AAAA,AA2SI,GA3SH,CAAI,KAAK,AAAT,EA2SG,gBAAgB,AAAC,CACb,YAAY,CAAE,EAAE,CAChB,WAAW,CAAE,CAAC,CACjB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,GA/S5B,AAAA,AAgTQ,GAhTP,CAAI,KAAK,AAAT,EAgTO,SAAS,EAhTjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAiTO,SAAS,EAjTjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAkTO,SAAS,EAlTjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAmTO,SAAS,EAnTjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAoTO,SAAS,EApTjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAqTO,SAAS,EArTjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAsTO,SAAS,EAtTjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAuTO,SAAS,EAvTjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAwTO,SAAS,EAxTjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAyTO,UAAU,EAzTlB,AAAA,GAAC,CAAI,KAAK,AAAT,EA0TO,UAAU,EA1TlB,AAAA,GAAC,CAAI,KAAK,AAAT,EA2TO,UAAU,AAAC,CACP,KAAK,CAAE,KAAK,CACf,CA7TT,AAAA,AA8TQ,GA9TP,CAAI,KAAK,AAAT,EA8TO,UAAU,AAAC,CACP,KAAK,CAAE,IAAI,CACd,CAhUT,AAAA,AAiUQ,GAjUP,CAAI,KAAK,AAAT,EAiUO,UAAU,AAAC,CACP,KAAK,CAAE,YAAY,CACtB,CAnUT,AAAA,AAoUQ,GApUP,CAAI,KAAK,AAAT,EAoUO,UAAU,AAAC,CACP,KAAK,CAAE,YAAY,CACtB,CAtUT,AAAA,AAuUQ,GAvUP,CAAI,KAAK,AAAT,EAuUO,SAAS,AAAC,CACN,KAAK,CAAE,GAAG,CACb,CAzUT,AAAA,AA0UQ,GA1UP,CAAI,KAAK,AAAT,EA0UO,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CA5UT,AAAA,AA6UQ,GA7UP,CAAI,KAAK,AAAT,EA6UO,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CA/UT,AAAA,AAgVQ,GAhVP,CAAI,KAAK,AAAT,EAgVO,SAAS,AAAC,CACN,KAAK,CAAE,GAAG,CACb,CAlVT,AAAA,AAmVQ,GAnVP,CAAI,KAAK,AAAT,EAmVO,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CArVT,AAAA,AAsVQ,GAtVP,CAAI,KAAK,AAAT,EAsVO,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CAxVT,AAAA,AAyVQ,GAzVP,CAAI,KAAK,AAAT,EAyVO,SAAS,AAAC,CACN,KAAK,CAAE,GAAG,CACb,CA3VT,AAAA,AA4VQ,GA5VP,CAAI,KAAK,AAAT,EA4VO,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CA9VT,AAAA,AA+VQ,GA/VP,CAAI,KAAK,AAAT,EA+VO,SAAS,AAAC,CACN,KAAK,CAAE,WAAW,CACrB,CAjWT,AAAA,AAkWQ,GAlWP,CAAI,KAAK,AAAT,EAkWO,eAAe,AAAC,CACZ,IAAI,CAAE,IAAI,CACV,KAAK,CAAE,IAAI,CACd,CArWT,AAAA,AAsWQ,GAtWP,CAAI,KAAK,AAAT,EAsWO,eAAe,AAAC,CACZ,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CAzWT,AAAA,AA0WQ,GA1WP,CAAI,KAAK,AAAT,EA0WO,eAAe,AAAC,CACZ,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CA7WT,AAAA,AA8WQ,GA9WP,CAAI,KAAK,AAAT,EA8WO,cAAc,AAAC,CACX,IAAI,CAAE,GAAG,CACT,KAAK,CAAE,IAAI,CACd,CAjXT,AAAA,AAkXQ,GAlXP,CAAI,KAAK,AAAT,EAkXO,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CArXT,AAAA,AAsXQ,GAtXP,CAAI,KAAK,AAAT,EAsXO,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CAzXT,AAAA,AA0XQ,GA1XP,CAAI,KAAK,AAAT,EA0XO,cAAc,AAAC,CACX,IAAI,CAAE,GAAG,CACT,KAAK,CAAE,IAAI,CACd,CA7XT,AAAA,AA8XQ,GA9XP,CAAI,KAAK,AAAT,EA8XO,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CAjYT,AAAA,AAkYQ,GAlYP,CAAI,KAAK,AAAT,EAkYO,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CArYT,AAAA,AAsYQ,GAtYP,CAAI,KAAK,AAAT,EAsYO,cAAc,AAAC,CACX,IAAI,CAAE,GAAG,CACT,KAAK,CAAE,IAAI,CACd,CAzYT,AAAA,AA0YQ,GA1YP,CAAI,KAAK,AAAT,EA0YO,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CA7YT,AAAA,AA8YQ,GA9YP,CAAI,KAAK,AAAT,EA8YO,cAAc,AAAC,CACX,IAAI,CAAE,WAAW,CACjB,KAAK,CAAE,IAAI,CACd,CAjZT,AAAA,AAkZQ,GAlZP,CAAI,KAAK,AAAT,EAkZO,cAAc,AAAC,CACX,IAAI,CAAE,IAAI,CACV,KAAK,CAAE,IAAI,CACd,CArZT,AAAA,AAsZQ,GAtZP,CAAI,KAAK,AAAT,EAsZO,eAAe,AAAC,CACZ,KAAK,CAAE,IAAI,CACX,IAAI,CAAE,CAAC,CACV,CAzZT,AAAA,AA0ZQ,GA1ZP,CAAI,KAAK,AAAT,EA0ZO,eAAe,AAAC,CACZ,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CA7ZT,AAAA,AA8ZQ,GA9ZP,CAAI,KAAK,AAAT,EA8ZO,eAAe,AAAC,CACZ,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CAjaT,AAAA,AAkaQ,GAlaP,CAAI,KAAK,AAAT,EAkaO,cAAc,AAAC,CACX,KAAK,CAAE,GAAG,CACV,IAAI,CAAE,CAAC,CACV,CAraT,AAAA,AAsaQ,GAtaP,CAAI,KAAK,AAAT,EAsaO,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CAzaT,AAAA,AA0aQ,GA1aP,CAAI,KAAK,AAAT,EA0aO,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CA7aT,AAAA,AA8aQ,GA9aP,CAAI,KAAK,AAAT,EA8aO,cAAc,AAAC,CACX,KAAK,CAAE,GAAG,CACV,IAAI,CAAE,CAAC,CACV,CAjbT,AAAA,AAkbQ,GAlbP,CAAI,KAAK,AAAT,EAkbO,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CArbT,AAAA,AAsbQ,GAtbP,CAAI,KAAK,AAAT,EAsbO,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CAzbT,AAAA,AA0bQ,GA1bP,CAAI,KAAK,AAAT,EA0bO,cAAc,AAAC,CACX,KAAK,CAAE,GAAG,CACV,IAAI,CAAE,CAAC,CACV,CA7bT,AAAA,AA8bQ,GA9bP,CAAI,KAAK,AAAT,EA8bO,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CAjcT,AAAA,AAkcQ,GAlcP,CAAI,KAAK,AAAT,EAkcO,cAAc,AAAC,CACX,KAAK,CAAE,WAAW,CAClB,IAAI,CAAE,CAAC,CACV,CArcT,AAAA,AAscQ,GAtcP,CAAI,KAAK,AAAT,EAscO,cAAc,AAAC,CACX,KAAK,CAAE,IAAI,CACX,IAAI,CAAE,CAAC,CACV,CAzcT,AAAA,AA0cQ,GA1cP,CAAI,KAAK,AAAT,EA0cO,iBAAiB,AAAC,CACd,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,CAAC,CACjB,CA7cT,AAAA,AA8cQ,GA9cP,CAAI,KAAK,AAAT,EA8cO,iBAAiB,AAAC,CACd,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CAjdT,AAAA,AAkdQ,GAldP,CAAI,KAAK,AAAT,EAkdO,iBAAiB,AAAC,CACd,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CArdT,AAAA,AAsdQ,GAtdP,CAAI,KAAK,AAAT,EAsdO,gBAAgB,AAAC,CACb,YAAY,CAAE,GAAG,CACjB,WAAW,CAAE,CAAC,CACjB,CAzdT,AAAA,AA0dQ,GA1dP,CAAI,KAAK,AAAT,EA0dO,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CA7dT,AAAA,AA8dQ,GA9dP,CAAI,KAAK,AAAT,EA8dO,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CAjeT,AAAA,AAkeQ,GAleP,CAAI,KAAK,AAAT,EAkeO,gBAAgB,AAAC,CACb,YAAY,CAAE,GAAG,CACjB,WAAW,CAAE,CAAC,CACjB,CAreT,AAAA,AAseQ,GAteP,CAAI,KAAK,AAAT,EAseO,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CAzeT,AAAA,AA0eQ,GA1eP,CAAI,KAAK,AAAT,EA0eO,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CA7eT,AAAA,AA8eQ,GA9eP,CAAI,KAAK,AAAT,EA8eO,gBAAgB,AAAC,CACb,YAAY,CAAE,GAAG,CACjB,WAAW,CAAE,CAAC,CACjB,CAjfT,AAAA,AAkfQ,GAlfP,CAAI,KAAK,AAAT,EAkfO,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CArfT,AAAA,AAsfQ,GAtfP,CAAI,KAAK,AAAT,EAsfO,gBAAgB,AAAC,CACb,YAAY,CAAE,WAAW,CACzB,WAAW,CAAE,CAAC,CACjB,CAzfT,AAAA,AA0fQ,GA1fP,CAAI,KAAK,AAAT,EA0fO,gBAAgB,AAAC,CACb,YAAY,CAAE,EAAE,CAChB,WAAW,CAAE,CAAC,CACjB,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,GA/f5B,AAAA,AAggBQ,GAhgBP,CAAI,KAAK,AAAT,EAggBO,SAAS,EAhgBjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAigBO,SAAS,EAjgBjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAkgBO,SAAS,EAlgBjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAmgBO,SAAS,EAngBjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAogBO,SAAS,EApgBjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAqgBO,SAAS,EArgBjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAsgBO,SAAS,EAtgBjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAugBO,SAAS,EAvgBjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAwgBO,SAAS,EAxgBjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAygBO,UAAU,EAzgBlB,AAAA,GAAC,CAAI,KAAK,AAAT,EA0gBO,UAAU,EA1gBlB,AAAA,GAAC,CAAI,KAAK,AAAT,EA2gBO,UAAU,AAAC,CACP,KAAK,CAAE,KAAK,CACf,CA7gBT,AAAA,AA8gBQ,GA9gBP,CAAI,KAAK,AAAT,EA8gBO,UAAU,AAAC,CACP,KAAK,CAAE,IAAI,CACd,CAhhBT,AAAA,AAihBQ,GAjhBP,CAAI,KAAK,AAAT,EAihBO,UAAU,AAAC,CACP,KAAK,CAAE,YAAY,CACtB,CAnhBT,AAAA,AAohBQ,GAphBP,CAAI,KAAK,AAAT,EAohBO,UAAU,AAAC,CACP,KAAK,CAAE,YAAY,CACtB,CAthBT,AAAA,AAuhBQ,GAvhBP,CAAI,KAAK,AAAT,EAuhBO,SAAS,AAAC,CACN,KAAK,CAAE,GAAG,CACb,CAzhBT,AAAA,AA0hBQ,GA1hBP,CAAI,KAAK,AAAT,EA0hBO,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CA5hBT,AAAA,AA6hBQ,GA7hBP,CAAI,KAAK,AAAT,EA6hBO,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CA/hBT,AAAA,AAgiBQ,GAhiBP,CAAI,KAAK,AAAT,EAgiBO,SAAS,AAAC,CACN,KAAK,CAAE,GAAG,CACb,CAliBT,AAAA,AAmiBQ,GAniBP,CAAI,KAAK,AAAT,EAmiBO,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CAriBT,AAAA,AAsiBQ,GAtiBP,CAAI,KAAK,AAAT,EAsiBO,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CAxiBT,AAAA,AAyiBQ,GAziBP,CAAI,KAAK,AAAT,EAyiBO,SAAS,AAAC,CACN,KAAK,CAAE,GAAG,CACb,CA3iBT,AAAA,AA4iBQ,GA5iBP,CAAI,KAAK,AAAT,EA4iBO,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CA9iBT,AAAA,AA+iBQ,GA/iBP,CAAI,KAAK,AAAT,EA+iBO,SAAS,AAAC,CACN,KAAK,CAAE,WAAW,CACrB,CAjjBT,AAAA,AAkjBQ,GAljBP,CAAI,KAAK,AAAT,EAkjBO,eAAe,AAAC,CACZ,IAAI,CAAE,IAAI,CACV,KAAK,CAAE,IAAI,CACd,CArjBT,AAAA,AAsjBQ,GAtjBP,CAAI,KAAK,AAAT,EAsjBO,eAAe,AAAC,CACZ,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CAzjBT,AAAA,AA0jBQ,GA1jBP,CAAI,KAAK,AAAT,EA0jBO,eAAe,AAAC,CACZ,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CA7jBT,AAAA,AA8jBQ,GA9jBP,CAAI,KAAK,AAAT,EA8jBO,cAAc,AAAC,CACX,IAAI,CAAE,GAAG,CACT,KAAK,CAAE,IAAI,CACd,CAjkBT,AAAA,AAkkBQ,GAlkBP,CAAI,KAAK,AAAT,EAkkBO,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CArkBT,AAAA,AAskBQ,GAtkBP,CAAI,KAAK,AAAT,EAskBO,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CAzkBT,AAAA,AA0kBQ,GA1kBP,CAAI,KAAK,AAAT,EA0kBO,cAAc,AAAC,CACX,IAAI,CAAE,GAAG,CACT,KAAK,CAAE,IAAI,CACd,CA7kBT,AAAA,AA8kBQ,GA9kBP,CAAI,KAAK,AAAT,EA8kBO,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CAjlBT,AAAA,AAklBQ,GAllBP,CAAI,KAAK,AAAT,EAklBO,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CArlBT,AAAA,AAslBQ,GAtlBP,CAAI,KAAK,AAAT,EAslBO,cAAc,AAAC,CACX,IAAI,CAAE,GAAG,CACT,KAAK,CAAE,IAAI,CACd,CAzlBT,AAAA,AA0lBQ,GA1lBP,CAAI,KAAK,AAAT,EA0lBO,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CA7lBT,AAAA,AA8lBQ,GA9lBP,CAAI,KAAK,AAAT,EA8lBO,cAAc,AAAC,CACX,IAAI,CAAE,WAAW,CACjB,KAAK,CAAE,IAAI,CACd,CAjmBT,AAAA,AAkmBQ,GAlmBP,CAAI,KAAK,AAAT,EAkmBO,cAAc,AAAC,CACX,IAAI,CAAE,IAAI,CACV,KAAK,CAAE,IAAI,CACd,CArmBT,AAAA,AAsmBQ,GAtmBP,CAAI,KAAK,AAAT,EAsmBO,eAAe,AAAC,CACZ,KAAK,CAAE,IAAI,CACX,IAAI,CAAE,CAAC,CACV,CAzmBT,AAAA,AA0mBQ,GA1mBP,CAAI,KAAK,AAAT,EA0mBO,eAAe,AAAC,CACZ,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CA7mBT,AAAA,AA8mBQ,GA9mBP,CAAI,KAAK,AAAT,EA8mBO,eAAe,AAAC,CACZ,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CAjnBT,AAAA,AAknBQ,GAlnBP,CAAI,KAAK,AAAT,EAknBO,cAAc,AAAC,CACX,KAAK,CAAE,GAAG,CACV,IAAI,CAAE,CAAC,CACV,CArnBT,AAAA,AAsnBQ,GAtnBP,CAAI,KAAK,AAAT,EAsnBO,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CAznBT,AAAA,AA0nBQ,GA1nBP,CAAI,KAAK,AAAT,EA0nBO,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CA7nBT,AAAA,AA8nBQ,GA9nBP,CAAI,KAAK,AAAT,EA8nBO,cAAc,AAAC,CACX,KAAK,CAAE,GAAG,CACV,IAAI,CAAE,CAAC,CACV,CAjoBT,AAAA,AAkoBQ,GAloBP,CAAI,KAAK,AAAT,EAkoBO,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CAroBT,AAAA,AAsoBQ,GAtoBP,CAAI,KAAK,AAAT,EAsoBO,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CAzoBT,AAAA,AA0oBQ,GA1oBP,CAAI,KAAK,AAAT,EA0oBO,cAAc,AAAC,CACX,KAAK,CAAE,GAAG,CACV,IAAI,CAAE,CAAC,CACV,CA7oBT,AAAA,AA8oBQ,GA9oBP,CAAI,KAAK,AAAT,EA8oBO,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CAjpBT,AAAA,AAkpBQ,GAlpBP,CAAI,KAAK,AAAT,EAkpBO,cAAc,AAAC,CACX,KAAK,CAAE,WAAW,CAClB,IAAI,CAAE,CAAC,CACV,CArpBT,AAAA,AAspBQ,GAtpBP,CAAI,KAAK,AAAT,EAspBO,cAAc,AAAC,CACX,KAAK,CAAE,IAAI,CACX,IAAI,CAAE,CAAC,CACV,CAzpBT,AAAA,AA0pBQ,GA1pBP,CAAI,KAAK,AAAT,EA0pBO,iBAAiB,AAAC,CACd,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,CAAC,CACjB,CA7pBT,AAAA,AA8pBQ,GA9pBP,CAAI,KAAK,AAAT,EA8pBO,iBAAiB,AAAC,CACd,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CAjqBT,AAAA,AAkqBQ,GAlqBP,CAAI,KAAK,AAAT,EAkqBO,iBAAiB,AAAC,CACd,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CArqBT,AAAA,AAsqBQ,GAtqBP,CAAI,KAAK,AAAT,EAsqBO,gBAAgB,AAAC,CACb,YAAY,CAAE,GAAG,CACjB,WAAW,CAAE,CAAC,CACjB,CAzqBT,AAAA,AA0qBQ,GA1qBP,CAAI,KAAK,AAAT,EA0qBO,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CA7qBT,AAAA,AA8qBQ,GA9qBP,CAAI,KAAK,AAAT,EA8qBO,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CAjrBT,AAAA,AAkrBQ,GAlrBP,CAAI,KAAK,AAAT,EAkrBO,gBAAgB,AAAC,CACb,YAAY,CAAE,GAAG,CACjB,WAAW,CAAE,CAAC,CACjB,CArrBT,AAAA,AAsrBQ,GAtrBP,CAAI,KAAK,AAAT,EAsrBO,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CAzrBT,AAAA,AA0rBQ,GA1rBP,CAAI,KAAK,AAAT,EA0rBO,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CA7rBT,AAAA,AA8rBQ,GA9rBP,CAAI,KAAK,AAAT,EA8rBO,gBAAgB,AAAC,CACb,YAAY,CAAE,GAAG,CACjB,WAAW,CAAE,CAAC,CACjB,CAjsBT,AAAA,AAksBQ,GAlsBP,CAAI,KAAK,AAAT,EAksBO,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CArsBT,AAAA,AAssBQ,GAtsBP,CAAI,KAAK,AAAT,EAssBO,gBAAgB,AAAC,CACb,YAAY,CAAE,WAAW,CACzB,WAAW,CAAE,CAAC,CACjB,CAzsBT,AAAA,AA0sBQ,GA1sBP,CAAI,KAAK,AAAT,EA0sBO,gBAAgB,AAAC,CACb,YAAY,CAAE,EAAE,CAChB,WAAW,CAAE,CAAC,CACjB,CAEL,MAAM,EAAE,SAAS,EAAE,MAAM,GA/sB7B,AAAA,AAgtBQ,GAhtBP,CAAI,KAAK,AAAT,EAgtBO,SAAS,EAhtBjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAitBO,SAAS,EAjtBjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAktBO,SAAS,EAltBjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAmtBO,SAAS,EAntBjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAotBO,SAAS,EAptBjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAqtBO,SAAS,EArtBjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAstBO,SAAS,EAttBjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAutBO,SAAS,EAvtBjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAwtBO,SAAS,EAxtBjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAytBO,UAAU,EAztBlB,AAAA,GAAC,CAAI,KAAK,AAAT,EA0tBO,UAAU,EA1tBlB,AAAA,GAAC,CAAI,KAAK,AAAT,EA2tBO,UAAU,AAAC,CACP,KAAK,CAAE,KAAK,CACf,CA7tBT,AAAA,AA8tBQ,GA9tBP,CAAI,KAAK,AAAT,EA8tBO,UAAU,AAAC,CACP,KAAK,CAAE,IAAI,CACd,CAhuBT,AAAA,AAiuBQ,GAjuBP,CAAI,KAAK,AAAT,EAiuBO,UAAU,AAAC,CACP,KAAK,CAAE,YAAY,CACtB,CAnuBT,AAAA,AAouBQ,GApuBP,CAAI,KAAK,AAAT,EAouBO,UAAU,AAAC,CACP,KAAK,CAAE,YAAY,CACtB,CAtuBT,AAAA,AAuuBQ,GAvuBP,CAAI,KAAK,AAAT,EAuuBO,SAAS,AAAC,CACN,KAAK,CAAE,GAAG,CACb,CAzuBT,AAAA,AA0uBQ,GA1uBP,CAAI,KAAK,AAAT,EA0uBO,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CA5uBT,AAAA,AA6uBQ,GA7uBP,CAAI,KAAK,AAAT,EA6uBO,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CA/uBT,AAAA,AAgvBQ,GAhvBP,CAAI,KAAK,AAAT,EAgvBO,SAAS,AAAC,CACN,KAAK,CAAE,GAAG,CACb,CAlvBT,AAAA,AAmvBQ,GAnvBP,CAAI,KAAK,AAAT,EAmvBO,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CArvBT,AAAA,AAsvBQ,GAtvBP,CAAI,KAAK,AAAT,EAsvBO,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CAxvBT,AAAA,AAyvBQ,GAzvBP,CAAI,KAAK,AAAT,EAyvBO,SAAS,AAAC,CACN,KAAK,CAAE,GAAG,CACb,CA3vBT,AAAA,AA4vBQ,GA5vBP,CAAI,KAAK,AAAT,EA4vBO,SAAS,AAAC,CACN,KAAK,CAAE,YAAY,CACtB,CA9vBT,AAAA,AA+vBQ,GA/vBP,CAAI,KAAK,AAAT,EA+vBO,SAAS,AAAC,CACN,KAAK,CAAE,WAAW,CACrB,CAjwBT,AAAA,AAkwBQ,GAlwBP,CAAI,KAAK,AAAT,EAkwBO,eAAe,AAAC,CACZ,IAAI,CAAE,IAAI,CACV,KAAK,CAAE,IAAI,CACd,CArwBT,AAAA,AAswBQ,GAtwBP,CAAI,KAAK,AAAT,EAswBO,eAAe,AAAC,CACZ,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CAzwBT,AAAA,AA0wBQ,GA1wBP,CAAI,KAAK,AAAT,EA0wBO,eAAe,AAAC,CACZ,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CA7wBT,AAAA,AA8wBQ,GA9wBP,CAAI,KAAK,AAAT,EA8wBO,cAAc,AAAC,CACX,IAAI,CAAE,GAAG,CACT,KAAK,CAAE,IAAI,CACd,CAjxBT,AAAA,AAkxBQ,GAlxBP,CAAI,KAAK,AAAT,EAkxBO,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CArxBT,AAAA,AAsxBQ,GAtxBP,CAAI,KAAK,AAAT,EAsxBO,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CAzxBT,AAAA,AA0xBQ,GA1xBP,CAAI,KAAK,AAAT,EA0xBO,cAAc,AAAC,CACX,IAAI,CAAE,GAAG,CACT,KAAK,CAAE,IAAI,CACd,CA7xBT,AAAA,AA8xBQ,GA9xBP,CAAI,KAAK,AAAT,EA8xBO,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CAjyBT,AAAA,AAkyBQ,GAlyBP,CAAI,KAAK,AAAT,EAkyBO,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CAryBT,AAAA,AAsyBQ,GAtyBP,CAAI,KAAK,AAAT,EAsyBO,cAAc,AAAC,CACX,IAAI,CAAE,GAAG,CACT,KAAK,CAAE,IAAI,CACd,CAzyBT,AAAA,AA0yBQ,GA1yBP,CAAI,KAAK,AAAT,EA0yBO,cAAc,AAAC,CACX,IAAI,CAAE,YAAY,CAClB,KAAK,CAAE,IAAI,CACd,CA7yBT,AAAA,AA8yBQ,GA9yBP,CAAI,KAAK,AAAT,EA8yBO,cAAc,AAAC,CACX,IAAI,CAAE,WAAW,CACjB,KAAK,CAAE,IAAI,CACd,CAjzBT,AAAA,AAkzBQ,GAlzBP,CAAI,KAAK,AAAT,EAkzBO,cAAc,AAAC,CACX,IAAI,CAAE,IAAI,CACV,KAAK,CAAE,IAAI,CACd,CArzBT,AAAA,AAszBQ,GAtzBP,CAAI,KAAK,AAAT,EAszBO,eAAe,AAAC,CACZ,KAAK,CAAE,IAAI,CACX,IAAI,CAAE,CAAC,CACV,CAzzBT,AAAA,AA0zBQ,GA1zBP,CAAI,KAAK,AAAT,EA0zBO,eAAe,AAAC,CACZ,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CA7zBT,AAAA,AA8zBQ,GA9zBP,CAAI,KAAK,AAAT,EA8zBO,eAAe,AAAC,CACZ,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CAj0BT,AAAA,AAk0BQ,GAl0BP,CAAI,KAAK,AAAT,EAk0BO,cAAc,AAAC,CACX,KAAK,CAAE,GAAG,CACV,IAAI,CAAE,CAAC,CACV,CAr0BT,AAAA,AAs0BQ,GAt0BP,CAAI,KAAK,AAAT,EAs0BO,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CAz0BT,AAAA,AA00BQ,GA10BP,CAAI,KAAK,AAAT,EA00BO,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CA70BT,AAAA,AA80BQ,GA90BP,CAAI,KAAK,AAAT,EA80BO,cAAc,AAAC,CACX,KAAK,CAAE,GAAG,CACV,IAAI,CAAE,CAAC,CACV,CAj1BT,AAAA,AAk1BQ,GAl1BP,CAAI,KAAK,AAAT,EAk1BO,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CAr1BT,AAAA,AAs1BQ,GAt1BP,CAAI,KAAK,AAAT,EAs1BO,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CAz1BT,AAAA,AA01BQ,GA11BP,CAAI,KAAK,AAAT,EA01BO,cAAc,AAAC,CACX,KAAK,CAAE,GAAG,CACV,IAAI,CAAE,CAAC,CACV,CA71BT,AAAA,AA81BQ,GA91BP,CAAI,KAAK,AAAT,EA81BO,cAAc,AAAC,CACX,KAAK,CAAE,YAAY,CACnB,IAAI,CAAE,CAAC,CACV,CAj2BT,AAAA,AAk2BQ,GAl2BP,CAAI,KAAK,AAAT,EAk2BO,cAAc,AAAC,CACX,KAAK,CAAE,WAAW,CAClB,IAAI,CAAE,CAAC,CACV,CAr2BT,AAAA,AAs2BQ,GAt2BP,CAAI,KAAK,AAAT,EAs2BO,cAAc,AAAC,CACX,KAAK,CAAE,IAAI,CACX,IAAI,CAAE,CAAC,CACV,CAz2BT,AAAA,AA02BQ,GA12BP,CAAI,KAAK,AAAT,EA02BO,iBAAiB,AAAC,CACd,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,CAAC,CACjB,CA72BT,AAAA,AA82BQ,GA92BP,CAAI,KAAK,AAAT,EA82BO,iBAAiB,AAAC,CACd,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CAj3BT,AAAA,AAk3BQ,GAl3BP,CAAI,KAAK,AAAT,EAk3BO,iBAAiB,AAAC,CACd,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CAr3BT,AAAA,AAs3BQ,GAt3BP,CAAI,KAAK,AAAT,EAs3BO,gBAAgB,AAAC,CACb,YAAY,CAAE,GAAG,CACjB,WAAW,CAAE,CAAC,CACjB,CAz3BT,AAAA,AA03BQ,GA13BP,CAAI,KAAK,AAAT,EA03BO,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CA73BT,AAAA,AA83BQ,GA93BP,CAAI,KAAK,AAAT,EA83BO,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CAj4BT,AAAA,AAk4BQ,GAl4BP,CAAI,KAAK,AAAT,EAk4BO,gBAAgB,AAAC,CACb,YAAY,CAAE,GAAG,CACjB,WAAW,CAAE,CAAC,CACjB,CAr4BT,AAAA,AAs4BQ,GAt4BP,CAAI,KAAK,AAAT,EAs4BO,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CAz4BT,AAAA,AA04BQ,GA14BP,CAAI,KAAK,AAAT,EA04BO,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CA74BT,AAAA,AA84BQ,GA94BP,CAAI,KAAK,AAAT,EA84BO,gBAAgB,AAAC,CACb,YAAY,CAAE,GAAG,CACjB,WAAW,CAAE,CAAC,CACjB,CAj5BT,AAAA,AAk5BQ,GAl5BP,CAAI,KAAK,AAAT,EAk5BO,gBAAgB,AAAC,CACb,YAAY,CAAE,YAAY,CAC1B,WAAW,CAAE,CAAC,CACjB,CAr5BT,AAAA,AAs5BQ,GAt5BP,CAAI,KAAK,AAAT,EAs5BO,gBAAgB,AAAC,CACb,YAAY,CAAE,WAAW,CACzB,WAAW,CAAE,CAAC,CACjB,CAz5BT,AAAA,AA05BQ,GA15BP,CAAI,KAAK,AAAT,EA05BO,gBAAgB,AAAC,CACb,YAAY,CAAE,EAAE,CAChB,WAAW,CAAE,CAAC,CACjB,EA75BT,AAAA,AA+5BI,GA/5BH,CAAI,KAAK,AAAT,EA+5BG,OAAO,AAAC,CACJ,UAAU,CAAE,KAAK,CACpB,CAj6BL,AAAA,AAk6BI,GAl6BH,CAAI,KAAK,AAAT,EAk6BG,EAAE,AAAA,IAAK,CAAA,gBAAgB,CAAE,CACrB,UAAU,CAAE,KAAK,CACpB,AACD,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK,GAr6BvC,AAAA,AAs6BQ,GAt6BP,CAAI,KAAK,AAAT,EAs6BO,iBAAiB,CAAG,eAAe,AAAC,CAChC,MAAM,CAAE,CAAC,CACZ,CAx6BT,AAAA,AAy6BQ,GAz6BP,CAAI,KAAK,AAAT,EAy6BO,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,EAz6BzE,AAAA,GAAC,CAAI,KAAK,AAAT,EA06BO,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,EA16BzE,AAAA,GAAC,CAAI,KAAK,AAAT,EA26BO,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,EA36BzE,AAAA,GAAC,CAAI,KAAK,AAAT,EA46BO,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,EA56BzE,AAAA,GAAC,CAAI,KAAK,AAAT,EA66BO,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,EA76BzE,AAAA,GAAC,CAAI,KAAK,AAAT,EA86BO,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,AAAC,CAC9D,YAAY,CAAE,CAAC,CACf,WAAW,CAAE,OAAO,CACvB,CAj7BT,AAAA,AAk7BQ,GAl7BP,CAAI,KAAK,AAAT,EAk7BO,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,EAl7BxE,AAAA,GAAC,CAAI,KAAK,AAAT,EAm7BO,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,EAn7BxE,AAAA,GAAC,CAAI,KAAK,AAAT,EAo7BO,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,EAp7BxE,AAAA,GAAC,CAAI,KAAK,AAAT,EAq7BO,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,EAr7BxE,AAAA,GAAC,CAAI,KAAK,AAAT,EAs7BO,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,EAt7BxE,AAAA,GAAC,CAAI,KAAK,AAAT,EAu7BO,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,AAAC,CAC7D,WAAW,CAAE,CAAC,CACd,YAAY,CAAE,OAAO,CACxB,EA17BT,AAAA,AA47BI,GA57BH,CAAI,KAAK,AAAT,EA47BG,MAAM,CAAC,KAAK,EA57BhB,AAAA,GAAC,CAAI,KAAK,AAAT,EA67BG,SAAS,CAAC,KAAK,AAAC,CACZ,aAAa,CAAE,IAAI,CACnB,YAAY,CAAE,OAAO,CACxB,CAh8BL,AAAA,AAi8BI,GAj8BH,CAAI,KAAK,AAAT,EAi8BG,MAAM,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,GAj8BjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAk8BG,aAAa,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,GAl8BxB,AAAA,GAAC,CAAI,KAAK,AAAT,EAm8BG,SAAS,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,GAn8BpB,AAAA,GAAC,CAAI,KAAK,AAAT,EAo8BG,gBAAgB,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAiB,CACpC,YAAY,CAAE,KAAK,CACnB,WAAW,CAAE,IAAI,CACpB,CAv8BL,AAAA,AAw8BI,GAx8BH,CAAI,KAAK,AAAT,EAw8BG,aAAa,EAx8BjB,AAAA,GAAC,CAAI,KAAK,AAAT,EAy8BG,gBAAgB,AAAC,CACb,aAAa,CAAE,IAAI,CACnB,YAAY,CAAE,CAAC,CAClB,CA58BL,AAAA,AA68BI,GA78BH,CAAI,KAAK,AAAT,EA68BG,aAAa,CAAG,aAAa,EA78BjC,AAAA,GAAC,CAAI,KAAK,AAAT,EA88BG,gBAAgB,CAAG,gBAAgB,AAAC,CAChC,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,CAAC,CACjB,CAj9BL,AAAA,AAk9BI,GAl9BH,CAAI,KAAK,AAAT,EAk9BG,aAAa,CAAC,aAAa,AAAC,CACxB,YAAY,CAAE,MAAM,CACpB,aAAa,CAAE,IAAI,CACtB,CAr9BL,AAAA,AAs9BI,GAt9BH,CAAI,KAAK,AAAT,EAs9BG,sBAAsB,AAAC,CACnB,IAAI,CAAE,CAAC,CACP,KAAK,CAAE,IAAI,CACd,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,GA19B5B,AAAA,AA29BQ,GA39BP,CAAI,KAAK,AAAT,EA29BO,YAAY,CAAC,KAAK,AAAC,CACf,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,OAAO,CACxB,CA99BT,AAAA,AA+9BQ,GA/9BP,CAAI,KAAK,AAAT,EA+9BO,YAAY,CAAC,MAAM,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,GA/9BlC,AAAA,GAAC,CAAI,KAAK,AAAT,EAg+BO,YAAY,CAAC,SAAS,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAiB,CAC1C,YAAY,CAAE,CAAC,CACf,WAAW,CAAE,IAAI,CACpB,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,GAr+B5B,AAAA,AAs+BQ,GAt+BP,CAAI,KAAK,AAAT,EAs+BO,gBAAgB,CAAC,cAAc,AAAC,CAC5B,UAAU,CAAE,IAAI,CACnB,EAx+BT,AAAA,AA0+BI,GA1+BH,CAAI,KAAK,AAAT,EA0+BG,gBAAgB,CAAC,aAAa,CAAC,sBAAsB,AAAC,CAClD,IAAI,CAAE,IAAI,CACV,KAAK,CAAE,IAAI,CACd,CA7+BL,AAAA,AA8+BI,GA9+BH,CAAI,KAAK,AAAT,EA8+BG,MAAM,AAAC,CACH,YAAY,CAAE,GAAG,CACjB,WAAW,CAAE,CAAC,CACjB,CAj/BL,AAAA,AAk/BI,GAl/BH,CAAI,KAAK,AAAT,EAk/BG,cAAc,AAAC,CACX,KAAK,CAAE,CAAC,CACR,IAAI,CAAE,IAAI,CACV,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,KAAK,CACpB,CAv/BL,AAAA,AAw/BI,GAx/BH,CAAI,KAAK,AAAT,EAw/BG,cAAc,AAAA,WAAW,AAAC,CACtB,IAAI,CAAE,CAAC,CACP,KAAK,CAAE,IAAI,CACX,KAAK,CAAE,KAAK,CACf,CA5/BL,AAAA,AA6/BI,GA7/BH,CAAI,KAAK,AAAT,EA6/BG,oBAAoB,AAAC,CACjB,IAAI,CAAE,IAAI,CACV,KAAK,CAAE,CAAC,CACX,CAhgCL,AAAA,AAigCI,GAjgCH,CAAI,KAAK,AAAT,EAigCG,mBAAmB,AAAC,CAChB,IAAI,CAAE,CAAC,CACP,KAAK,CAAE,IAAI,CACd,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,GArgC5B,AAAA,AAsgCQ,GAtgCP,CAAI,KAAK,AAAT,EAsgCO,aAAa,CAAC,cAAc,AAAC,CACzB,IAAI,CAAE,IAAI,CACV,KAAK,CAAE,CAAC,CACX,CAzgCT,AAAA,AA0gCQ,GA1gCP,CAAI,KAAK,AAAT,EA0gCO,aAAa,CAAC,mBAAmB,AAAC,CAC9B,IAAI,CAAE,CAAC,CACP,KAAK,CAAE,IAAI,CACd,EA7gCT,AAAA,AA+gCI,GA/gCH,CAAI,KAAK,AAAT,EA+gCG,UAAU,CAAG,IAAI,EA/gCrB,AAAA,GAAC,CAAI,KAAK,AAAT,EAghCG,mBAAmB,CAAG,IAAI,AAAC,CACvB,KAAK,CAAE,KAAK,CACf,CAlhCL,AAAA,AAmhCI,GAnhCH,CAAI,KAAK,AAAT,EAmhCG,UAAU,CAAC,IAAI,CAAG,IAAI,EAnhC1B,AAAA,GAAC,CAAI,KAAK,AAAT,EAohCG,UAAU,CAAC,IAAI,CAAG,UAAU,EAphChC,AAAA,GAAC,CAAI,KAAK,AAAT,EAqhCG,UAAU,CAAC,UAAU,CAAG,IAAI,EArhChC,AAAA,GAAC,CAAI,KAAK,AAAT,EAshCG,UAAU,CAAC,UAAU,CAAG,UAAU,AAAC,CAC/B,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,GAAG,CACnB,CAzhCL,AAAA,AA0hCI,GA1hCH,CAAI,KAAK,AAAT,EA0hCG,YAAY,AAAC,CACT,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,GAAG,CACnB,CA7hCL,AAAA,AA8hCI,GA9hCH,CAAI,KAAK,AAAT,EA8hCG,YAAY,CAAC,UAAU,EA9hC3B,AAAA,GAAC,CAAI,KAAK,AAAT,EA+hCG,YAAY,CAAC,YAAY,AAAC,CACtB,KAAK,CAAE,KAAK,CACf,CAjiCL,AAAA,AAkiCI,GAliCH,CAAI,KAAK,AAAT,EAkiCG,YAAY,CAAG,IAAI,EAliCvB,AAAA,GAAC,CAAI,KAAK,AAAT,EAmiCG,YAAY,CAAG,UAAU,EAniC7B,AAAA,GAAC,CAAI,KAAK,AAAT,EAoiCG,YAAY,CAAG,YAAY,AAAC,CACxB,YAAY,CAAE,GAAG,CACjB,WAAW,CAAE,GAAG,CACnB,CAviCL,AAAA,AAwiCI,GAxiCH,CAAI,KAAK,AAAT,EAwiCG,UAAU,CAAG,IAAI,AAAA,YAAY,AAAC,CAC1B,YAAY,CAAE,CAAC,CAClB,CA1iCL,AAAA,AA2iCI,GA3iCH,CAAI,KAAK,AAAT,EA2iCG,UAAU,CAAG,IAAI,AAAA,YAAY,AAAA,IAAK,CDgjFE,WAAW,CChjFD,IAAK,CDgjFE,gBAAgB,CChjFA,CACjE,uBAAuB,CAAE,GAAG,CAC5B,0BAA0B,CAAE,GAAG,CAC/B,yBAAyB,CAAE,CAAC,CAC5B,sBAAsB,CAAE,CAAC,CAC5B,CAhjCL,AAAA,AAijCI,GAjjCH,CAAI,KAAK,AAAT,EAijCG,UAAU,CAAG,IAAI,AAAA,WAAW,AAAA,IAAK,CD0iFf,YAAY,GC3lHlC,AAAA,GAAC,CAAI,KAAK,AAAT,EAkjCG,UAAU,CAAG,gBAAgB,AAAA,IAAK,CDyiFhB,YAAY,CCziFkB,CAC5C,sBAAsB,CAAE,GAAG,CAC3B,yBAAyB,CAAE,GAAG,CAC9B,0BAA0B,CAAE,CAAC,CAC7B,uBAAuB,CAAE,CAAC,CAC7B,CAvjCL,AAAA,AAwjCI,GAxjCH,CAAI,KAAK,AAAT,EAwjCG,UAAU,CAAG,UAAU,AAAC,CACpB,KAAK,CAAE,KAAK,CACf,CA1jCL,AAAA,AA2jCI,GA3jCH,CAAI,KAAK,AAAT,EA2jCG,UAAU,AAAA,oBAAoB,CAAG,IAAI,EA3jCzC,AAAA,GAAC,CAAI,KAAK,AAAT,EA4jCG,UAAU,AAAA,oBAAoB,CAAG,UAAU,AAAC,CACxC,KAAK,CAAE,IAAI,CACd,CA9jCL,AAAA,AA+jCI,GA/jCH,CAAI,KAAK,AAAT,EA+jCG,UAAU,CAAG,UAAU,AAAA,IAAK,CD4hFV,YAAY,CC5hFW,IAAK,CD4hFV,WAAW,EC5hFc,IAAI,AAAC,CAC9D,aAAa,CAAE,CAAC,CACnB,CAjkCL,AAAA,AAkkCI,GAlkCH,CAAI,KAAK,AAAT,EAkkCG,UAAU,CAAG,UAAU,AAAA,YAAY,CAAG,IAAI,AAAA,WAAW,EAlkCzD,AAAA,GAAC,CAAI,KAAK,AAAT,EAmkCG,UAAU,CAAG,UAAU,AAAA,YAAY,CAAG,gBAAgB,AAAC,CACnD,uBAAuB,CAAE,GAAG,CAC5B,0BAA0B,CAAE,GAAG,CAC/B,yBAAyB,CAAE,CAAC,CAC5B,sBAAsB,CAAE,CAAC,CAC5B,CAxkCL,AAAA,AAykCI,GAzkCH,CAAI,KAAK,AAAT,EAykCG,UAAU,CAAG,UAAU,AAAA,WAAW,CAAG,IAAI,AAAA,YAAY,AAAC,CAClD,sBAAsB,CAAE,GAAG,CAC3B,yBAAyB,CAAE,GAAG,CAC9B,0BAA0B,CAAE,CAAC,CAC7B,uBAAuB,CAAE,CAAC,CAC7B,CA9kCL,AAAA,AA+kCI,GA/kCH,CAAI,KAAK,AAAT,EA+kCG,IAAI,CAAC,MAAM,AAAC,CACR,YAAY,CAAE,CAAC,CAClB,CAjlCL,AAAA,AAklCI,GAllCH,CAAI,KAAK,AAAT,EAklCG,mBAAmB,CAAG,IAAI,CAAG,IAAI,EAllCrC,AAAA,GAAC,CAAI,KAAK,AAAT,EAmlCG,mBAAmB,CAAG,IAAI,CAAG,UAAU,EAnlC3C,AAAA,GAAC,CAAI,KAAK,AAAT,EAolCG,mBAAmB,CAAG,UAAU,CAAG,IAAI,EAplC3C,AAAA,GAAC,CAAI,KAAK,AAAT,EAqlCG,mBAAmB,CAAG,UAAU,CAAG,UAAU,AAAC,CAC1C,UAAU,CAAE,IAAI,CAChB,YAAY,CAAE,CAAC,CAClB,CAxlCL,AAAA,AAylCI,GAzlCH,CAAI,KAAK,AAAT,EAylCG,YAAY,CAAC,aAAa,AAAC,CACvB,KAAK,CAAE,KAAK,CACf,CA3lCL,AAAA,AA4lCI,GA5lCH,CAAI,KAAK,AAAT,EA4lCG,YAAY,CAAC,aAAa,AAAA,YAAY,EA5lC1C,AAAA,GAAC,CAAI,KAAK,AAAT,EA6lCG,kBAAkB,AAAA,YAAY,EA7lClC,AAAA,GAAC,CAAI,KAAK,AAAT,EA8lCG,gBAAgB,AAAA,YAAY,CAAG,IAAI,EA9lCvC,AAAA,GAAC,CAAI,KAAK,AAAT,EA+lCG,gBAAgB,AAAA,YAAY,CAAG,UAAU,CAAG,IAAI,EA/lCpD,AAAA,GAAC,CAAI,KAAK,AAAT,EAgmCG,gBAAgB,AAAA,YAAY,CAAG,gBAAgB,EAhmCnD,AAAA,GAAC,CAAI,KAAK,AAAT,EAimCG,gBAAgB,AAAA,WAAW,CAAG,IAAI,AAAA,IAAK,CD0/EH,WAAW,CC1/EI,IAAK,CD0/EH,gBAAgB,GC3lHzE,AAAA,GAAC,CAAI,KAAK,AAAT,EAkmCG,gBAAgB,AAAA,WAAW,CAAG,UAAU,AAAA,IAAK,CDy/ET,WAAW,ECz/Ea,IAAI,AAAC,CAC7D,0BAA0B,CAAE,GAAG,CAC/B,uBAAuB,CAAE,GAAG,CAC5B,yBAAyB,CAAE,CAAC,CAC5B,sBAAsB,CAAE,CAAC,CAC5B,CAvmCL,AAAA,AAwmCI,GAxmCH,CAAI,KAAK,AAAT,EAwmCG,kBAAkB,AAAA,YAAY,AAAC,CAC3B,WAAW,CAAE,GAAG,CAChB,YAAY,CAAE,SAAS,CAC1B,CA3mCL,AAAA,AA4mCI,GA5mCH,CAAI,KAAK,AAAT,EA4mCG,YAAY,CAAC,aAAa,AAAA,WAAW,EA5mCzC,AAAA,GAAC,CAAI,KAAK,AAAT,EA6mCG,kBAAkB,AAAA,WAAW,EA7mCjC,AAAA,GAAC,CAAI,KAAK,AAAT,EA8mCG,gBAAgB,AAAA,WAAW,CAAG,IAAI,EA9mCtC,AAAA,GAAC,CAAI,KAAK,AAAT,EA+mCG,gBAAgB,AAAA,WAAW,CAAG,UAAU,CAAG,IAAI,EA/mCnD,AAAA,GAAC,CAAI,KAAK,AAAT,EAgnCG,gBAAgB,AAAA,WAAW,CAAG,gBAAgB,EAhnClD,AAAA,GAAC,CAAI,KAAK,AAAT,EAinCG,gBAAgB,AAAA,YAAY,CAAG,IAAI,AAAA,IAAK,CD0+EtB,YAAY,GC3lHlC,AAAA,GAAC,CAAI,KAAK,AAAT,EAknCG,gBAAgB,AAAA,YAAY,CAAG,UAAU,AAAA,IAAK,CDy+E5B,YAAY,ECz+EgC,IAAI,AAAC,CAC/D,yBAAyB,CAAE,GAAG,CAC9B,sBAAsB,CAAE,GAAG,CAC3B,0BAA0B,CAAE,CAAC,CAC7B,uBAAuB,CAAE,CAAC,CAC7B,CAvnCL,AAAA,AAwnCI,GAxnCH,CAAI,KAAK,AAAT,EAwnCG,kBAAkB,AAAA,WAAW,AAAC,CAC1B,iBAAiB,CAAE,GAAG,CACtB,iBAAiB,CAAE,KAAK,CACxB,YAAY,CAAE,GAAG,CACpB,CA5nCL,AAAA,AA6nCI,GA7nCH,CAAI,KAAK,AAAT,EA6nCG,gBAAgB,CAAG,IAAI,CAAG,IAAI,AAAC,CAC3B,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,IAAI,CACpB,CAhoCL,AAAA,AAioCI,GAjoCH,CAAI,KAAK,AAAT,EAioCG,gBAAgB,AAAA,YAAY,CAAG,IAAI,EAjoCvC,AAAA,GAAC,CAAI,KAAK,AAAT,EAkoCG,gBAAgB,AAAA,YAAY,CAAG,UAAU,AAAC,CACtC,WAAW,CAAE,IAAI,CACjB,YAAY,CAAE,IAAI,CACrB,CAroCL,AAAA,AAsoCI,GAtoCH,CAAI,KAAK,AAAT,EAsoCG,gBAAgB,AAAA,WAAW,CAAG,IAAI,EAtoCtC,AAAA,GAAC,CAAI,KAAK,AAAT,EAuoCG,gBAAgB,AAAA,WAAW,CAAG,UAAU,AAAC,CACrC,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,IAAI,CACpB,CA1oCL,AAAA,AA2oCI,GA3oCH,CAAI,KAAK,AAAT,EA2oCG,IAAI,AAAC,CACD,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,OAAO,CACxB,CA9oCL,AAAA,AA+oCI,GA/oCH,CAAI,KAAK,AAAT,EA+oCG,SAAS,CAAG,EAAE,AAAC,CACX,KAAK,CAAE,KAAK,CACf,CAjpCL,AAAA,AAkpCI,GAlpCH,CAAI,KAAK,AAAT,EAkpCG,SAAS,CAAG,EAAE,CAAG,CAAC,AAAC,CACf,WAAW,CAAE,IAAI,CACjB,YAAY,CAAE,IAAI,CAClB,aAAa,CAAE,WAAW,CAC7B,CAtpCL,AAAA,AAupCI,GAvpCH,CAAI,KAAK,AAAT,EAupCG,UAAU,CAAG,EAAE,AAAC,CACZ,KAAK,CAAE,KAAK,CACf,CAzpCL,AAAA,AA0pCI,GA1pCH,CAAI,KAAK,AAAT,EA0pCG,UAAU,CAAG,EAAE,CAAG,CAAC,AAAC,CAChB,aAAa,CAAE,GAAG,CACrB,CA5pCL,AAAA,AA6pCI,GA7pCH,CAAI,KAAK,AAAT,EA6pCG,UAAU,CAAG,EAAE,CAAG,EAAE,AAAC,CACjB,YAAY,CAAE,GAAG,CACjB,WAAW,CAAE,IAAI,CACpB,CAhqCL,AAAA,AAiqCI,GAjqCH,CAAI,KAAK,AAAT,EAiqCG,YAAY,CAAG,EAAE,AAAC,CACd,KAAK,CAAE,IAAI,CACd,CAnqCL,AAAA,AAoqCI,GApqCH,CAAI,KAAK,AAAT,EAoqCG,YAAY,CAAG,EAAE,CAAG,EAAE,AAAC,CACnB,YAAY,CAAE,CAAC,CACf,WAAW,CAAE,IAAI,CACpB,CAvqCL,AAAA,AAwqCI,GAxqCH,CAAI,KAAK,AAAT,EAwqCG,cAAc,CAAG,SAAS,CAAC,cAAc,AAAC,CACtC,KAAK,CAAE,IAAI,CACd,CA1qCL,AAAA,AA2qCI,GA3qCH,CAAI,KAAK,AAAT,EA2qCG,mBAAmB,CAAG,EAAE,CAAG,CAAC,AAAC,CACzB,WAAW,CAAE,CAAC,CACd,YAAY,CAAE,IAAI,CACrB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,GA/qC5B,AAAA,AA2qCI,GA3qCH,CAAI,KAAK,AAAT,EA2qCG,mBAAmB,CAAG,EAAE,CAAG,CAAC,AAKK,CACzB,aAAa,CAAE,WAAW,CAC7B,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,GAprC5B,AAAA,AAqrCQ,GArrCP,CAAI,KAAK,AAAT,EAqrCO,cAAc,AAAC,CACX,KAAK,CAAE,KAAK,CACf,EAvrCT,AAAA,AAyrCI,GAzrCH,CAAI,KAAK,AAAT,EAyrCG,gBAAgB,AAAC,CACb,aAAa,CAAE,IAAI,CACnB,YAAY,CAAE,IAAI,CACrB,CA5rCL,AAAA,AA6rCI,GA7rCH,CAAI,KAAK,AAAT,EA6rCG,aAAa,AAAC,CACV,KAAK,CAAE,KAAK,CACf,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,GAhsC5B,AAAA,AAisCQ,GAjsCP,CAAI,KAAK,AAAT,EAisCO,OAAO,CAAG,UAAU,CAAC,aAAa,EAjsC1C,AAAA,GAAC,CAAI,KAAK,AAAT,EAksCO,OAAO,CAAG,gBAAgB,CAAC,aAAa,AAAC,CACrC,YAAY,CAAE,KAAK,CACnB,WAAW,CAAE,IAAI,CACpB,EArsCT,AAAA,AAusCI,GAvsCH,CAAI,KAAK,AAAT,EAusCG,cAAc,AAAC,CACX,KAAK,CAAE,IAAI,CACX,WAAW,CAAE,IAAI,CACjB,YAAY,CAAE,IAAI,CACrB,AACD,MAAM,EAAE,SAAS,EAAE,KAAK,GA5sC5B,AAAA,AA6sCQ,GA7sCP,CAAI,KAAK,AAAT,EA6sCO,WAAW,CAAC,KAAK,CAAC,cAAc,CAAG,EAAE,CAAG,CAAC,EA7sCjD,AAAA,GAAC,CAAI,KAAK,AAAT,EA8sCO,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,AAAC,CAC9C,OAAO,CAAE,iBAAiB,CAC7B,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,GAltC5B,AAAA,AAmtCQ,GAntCP,CAAI,KAAK,AAAT,EAmtCO,WAAW,AAAC,CACR,KAAK,CAAE,KAAK,CACf,CArtCT,AAAA,AAstCQ,GAttCP,CAAI,KAAK,AAAT,EAstCO,WAAW,CAAG,EAAE,AAAC,CACb,KAAK,CAAE,KAAK,CACf,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,GA1tC5B,AAAA,AA2tCQ,GA3tCP,CAAI,KAAK,AAAT,EA2tCO,YAAY,AAAA,KAAK,AAAC,CACd,KAAK,CAAE,gBAAgB,CAC1B,CA7tCT,AAAA,AA8tCQ,GA9tCP,CAAI,KAAK,AAAT,EA8tCO,aAAa,AAAA,WAAW,AAAC,CACrB,WAAW,CAAE,KAAK,CAClB,YAAY,CAAE,IAAI,CACrB,CAjuCT,AAAA,AAkuCQ,GAluCP,CAAI,KAAK,AAAT,EAkuCO,aAAa,AAAA,KAAK,AAAC,CACf,KAAK,CAAE,eAAe,CACtB,WAAW,CAAE,KAAK,CAClB,YAAY,CAAE,IAAI,CACrB,CAtuCT,AAAA,AAsgCQ,GAtgCP,CAAI,KAAK,AAAT,EAsgCO,aAAa,CAAC,cAAc,AAiOC,CACzB,IAAI,CAAE,CAAC,CACP,KAAK,CAAE,IAAI,CACd,CAEL,MAAM,EAAE,SAAS,EAAE,KAAK,GA5uC5B,AAAA,AA6uCQ,GA7uCP,CAAI,KAAK,AAAT,EA6uCO,YAAY,AAAC,CACT,KAAK,CAAE,KAAK,CACf,CA/uCT,AAAA,AAgvCQ,GAhvCP,CAAI,KAAK,AAAT,EAgvCO,YAAY,AAAA,aAAa,AAAA,WAAW,AAAC,CACjC,WAAW,CAAE,CAAC,CACd,YAAY,CAAE,IAAI,CACrB,EAnvCT,AAAA,AAqvCI,GArvCH,CAAI,KAAK,AAAT,EAqvCG,WAAW,AAAC,CACR,aAAa,CAAE,CAAC,CACnB,CAvvCL,AAAA,AAwvCI,GAxvCH,CAAI,KAAK,AAAT,EAwvCG,WAAW,CAAG,EAAE,CAAG,CAAC,EAxvCxB,AAAA,GAAC,CAAI,KAAK,AAAT,EAyvCG,WAAW,CAAG,EAAE,CAAG,IAAI,AAAC,CACpB,KAAK,CAAE,KAAK,CACZ,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,GAAG,CACnB,CA7vCL,AAAA,AA8vCI,GA9vCH,CAAI,KAAK,AAAT,EA8vCG,WAAW,CAAG,EAAE,AAAA,YAAY,CAAG,CAAC,EA9vCpC,AAAA,GAAC,CAAI,KAAK,AAAT,EA+vCG,WAAW,CAAG,EAAE,AAAA,YAAY,CAAG,IAAI,AAAC,CAChC,WAAW,CAAE,CAAC,CACd,0BAA0B,CAAE,GAAG,CAC/B,uBAAuB,CAAE,GAAG,CAC5B,yBAAyB,CAAE,CAAC,CAC5B,sBAAsB,CAAE,CAAC,CAC5B,CArwCL,AAAA,AAswCI,GAtwCH,CAAI,KAAK,AAAT,EAswCG,WAAW,CAAG,EAAE,AAAA,WAAW,CAAG,CAAC,EAtwCnC,AAAA,GAAC,CAAI,KAAK,AAAT,EAuwCG,WAAW,CAAG,EAAE,AAAA,WAAW,CAAG,IAAI,AAAC,CAC/B,YAAY,CAAE,IAAI,CAClB,yBAAyB,CAAE,GAAG,CAC9B,sBAAsB,CAAE,GAAG,CAC3B,0BAA0B,CAAE,CAAC,CAC7B,uBAAuB,CAAE,CAAC,CAC7B,CA7wCL,AAAA,AA8wCI,GA9wCH,CAAI,KAAK,AAAT,EA8wCG,MAAM,AAAC,CACH,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,OAAO,CACxB,CAjxCL,AAAA,AAkxCI,GAlxCH,CAAI,KAAK,AAAT,EAkxCG,MAAM,CAAC,KAAK,CAAG,CAAC,EAlxCpB,AAAA,GAAC,CAAI,KAAK,AAAT,EAmxCG,MAAM,CAAC,KAAK,CAAG,IAAI,AAAC,CAChB,KAAK,CAAE,IAAI,CACd,CArxCL,AAAA,AAsxCI,GAtxCH,CAAI,KAAK,AAAT,EAsxCG,MAAM,CAAC,SAAS,CAAG,CAAC,EAtxCxB,AAAA,GAAC,CAAI,KAAK,AAAT,EAuxCG,MAAM,CAAC,SAAS,CAAG,IAAI,AAAC,CACpB,KAAK,CAAE,KAAK,CACf,CAzxCL,AAAA,AA0xCI,GA1xCH,CAAI,KAAK,AAAT,EA0xCG,UAAU,CAAG,EAAE,CAAG,CAAC,CAAG,MAAM,AAAC,CACzB,WAAW,CAAE,GAAG,CAChB,YAAY,CAAE,GAAG,CACpB,CA7xCL,AAAA,AA8xCI,GA9xCH,CAAI,KAAK,AAAT,EA8xCG,gBAAgB,CAAG,MAAM,AAAC,CACtB,KAAK,CAAE,IAAI,CACd,CAhyCL,AAAA,AAiyCI,GAjyCH,CAAI,KAAK,AAAT,EAiyCG,gBAAgB,CAAG,MAAM,CAAG,MAAM,AAAC,CAC/B,WAAW,CAAE,GAAG,CAChB,YAAY,CAAE,IAAI,CACrB,CApyCL,AAAA,AAqyCI,GAryCH,CAAI,KAAK,AAAT,EAqyCG,kBAAkB,EAryCtB,AAAA,GAAC,CAAI,KAAK,AAAT,EAsyCG,kBAAkB,AAAC,CACf,YAAY,CAAE,IAAI,CAClB,aAAa,CAAE,IAAI,CACtB,CAzyCL,AAAA,AA0yCI,GA1yCH,CAAI,KAAK,AAAT,EA0yCG,kBAAkB,CAAC,MAAM,EA1yC7B,AAAA,GAAC,CAAI,KAAK,AAAT,EA2yCG,kBAAkB,CAAC,MAAM,AAAC,CACtB,KAAK,CAAE,IAAI,CACX,IAAI,CAAE,KAAK,CACd,CA9yCL,AAAA,AA+yCI,GA/yCH,CAAI,KAAK,AAAT,EA+yCG,aAAa,AAAC,CACV,KAAK,CAAE,KAAK,CACf,CAjzCL,AAAA,AAkzCI,GAlzCH,CAAI,KAAK,AAAT,EAkzCG,MAAM,CAAG,UAAU,AAAC,CAChB,YAAY,CAAE,IAAI,CACrB,CApzCL,AAAA,AAqzCI,GArzCH,CAAI,KAAK,AAAT,EAqzCG,MAAM,CAAG,UAAU,AAAA,KAAK,AAAC,CACrB,YAAY,CAAE,CAAC,CACf,WAAW,CAAE,IAAI,CACpB,CAxzCL,AAAA,AAyzCI,GAzzCH,CAAI,KAAK,AAAT,EAyzCG,MAAM,CAAG,WAAW,AAAC,CACjB,WAAW,CAAE,IAAI,CACpB,CA3zCL,AAAA,AA4zCI,GA5zCH,CAAI,KAAK,AAAT,EA4zCG,MAAM,CAAG,WAAW,AAAA,KAAK,AAAC,CACtB,WAAW,CAAE,CAAC,CACd,YAAY,CAAE,IAAI,CACrB,CA/zCL,AAAA,AAg0CI,GAh0CH,CAAI,KAAK,AAAT,EAg0CG,YAAY,EAh0ChB,AAAA,GAAC,CAAI,KAAK,AAAT,EAi0CG,MAAM,CAAG,WAAW,AAAC,CACjB,aAAa,CAAE,IAAI,CACnB,YAAY,CAAE,OAAO,CACxB,CAp0CL,AAAA,AAq0CI,GAr0CH,CAAI,KAAK,AAAT,EAq0CG,WAAW,EAr0Cf,AAAA,GAAC,CAAI,KAAK,AAAT,EAs0CG,MAAM,CAAG,UAAU,AAAC,CAChB,YAAY,CAAE,IAAI,CAClB,aAAa,CAAE,OAAO,CACzB,CAz0CL,AAAA,AA00CI,GA10CH,CAAI,KAAK,AAAT,EA00CG,WAAW,AAAC,CACR,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,OAAO,CACrB,UAAU,CAAE,IAAI,CACnB,CA90CL,AAAA,AA+0CI,GA/0CH,CAAI,KAAK,AAAT,EA+0CG,WAAW,AAAC,CACR,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,OAAO,CACxB,CAl1CL,AAAA,AAm1CI,GAn1CH,CAAI,KAAK,AAAT,EAm1CG,MAAM,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY,EAn1CnF,AAAA,GAAC,CAAI,KAAK,AAAT,EAo1CG,MAAM,CAAG,iBAAiB,AAAA,YAAY,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY,EAp1CnH,AAAA,GAAC,CAAI,KAAK,AAAT,EAq1CG,MAAM,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY,EAr1CnF,AAAA,GAAC,CAAI,KAAK,AAAT,EAs1CG,MAAM,CAAG,iBAAiB,AAAA,YAAY,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY,EAt1CnH,AAAA,GAAC,CAAI,KAAK,AAAT,EAu1CG,MAAM,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY,EAv1CnF,AAAA,GAAC,CAAI,KAAK,AAAT,EAw1CG,MAAM,CAAG,iBAAiB,AAAA,YAAY,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY,EAx1CnH,AAAA,GAAC,CAAI,KAAK,AAAT,EAy1CG,MAAM,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY,EAz1CnF,AAAA,GAAC,CAAI,KAAK,AAAT,EA01CG,MAAM,CAAG,iBAAiB,AAAA,YAAY,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY,AAAC,CAC5G,uBAAuB,CAAE,GAAG,CAC5B,sBAAsB,CAAE,CAAC,CAC5B,CA71CL,AAAA,AA81CI,GA91CH,CAAI,KAAK,AAAT,EA81CG,MAAM,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW,EA91ClF,AAAA,GAAC,CAAI,KAAK,AAAT,EA+1CG,MAAM,CAAG,iBAAiB,AAAA,YAAY,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW,EA/1ClH,AAAA,GAAC,CAAI,KAAK,AAAT,EAg2CG,MAAM,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW,EAh2ClF,AAAA,GAAC,CAAI,KAAK,AAAT,EAi2CG,MAAM,CAAG,iBAAiB,AAAA,YAAY,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW,EAj2ClH,AAAA,GAAC,CAAI,KAAK,AAAT,EAk2CG,MAAM,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW,EAl2ClF,AAAA,GAAC,CAAI,KAAK,AAAT,EAm2CG,MAAM,CAAG,iBAAiB,AAAA,YAAY,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW,EAn2ClH,AAAA,GAAC,CAAI,KAAK,AAAT,EAo2CG,MAAM,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW,EAp2ClF,AAAA,GAAC,CAAI,KAAK,AAAT,EAq2CG,MAAM,CAAG,iBAAiB,AAAA,YAAY,CAAG,MAAM,AAAA,YAAY,CAAG,KAAK,AAAA,YAAY,CAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW,AAAC,CAC3G,sBAAsB,CAAE,GAAG,CAC3B,uBAAuB,CAAE,CAAC,CAC7B,CAx2CL,AAAA,AAy2CI,GAz2CH,CAAI,KAAK,AAAT,EAy2CG,MAAM,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY,EAz2ChF,AAAA,GAAC,CAAI,KAAK,AAAT,EA02CG,MAAM,CAAG,iBAAiB,AAAA,WAAW,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY,EA12C/G,AAAA,GAAC,CAAI,KAAK,AAAT,EA22CG,MAAM,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY,EA32ChF,AAAA,GAAC,CAAI,KAAK,AAAT,EA42CG,MAAM,CAAG,iBAAiB,AAAA,WAAW,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY,EA52C/G,AAAA,GAAC,CAAI,KAAK,AAAT,EA62CG,MAAM,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY,EA72ChF,AAAA,GAAC,CAAI,KAAK,AAAT,EA82CG,MAAM,CAAG,iBAAiB,AAAA,WAAW,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY,EA92C/G,AAAA,GAAC,CAAI,KAAK,AAAT,EA+2CG,MAAM,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY,EA/2ChF,AAAA,GAAC,CAAI,KAAK,AAAT,EAg3CG,MAAM,CAAG,iBAAiB,AAAA,WAAW,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY,AAAC,CACxG,yBAAyB,CAAE,GAAG,CAC9B,uBAAuB,CAAE,CAAC,CAC7B,CAn3CL,AAAA,AAo3CI,GAp3CH,CAAI,KAAK,AAAT,EAo3CG,MAAM,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW,EAp3C/E,AAAA,GAAC,CAAI,KAAK,AAAT,EAq3CG,MAAM,CAAG,iBAAiB,AAAA,WAAW,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW,EAr3C9G,AAAA,GAAC,CAAI,KAAK,AAAT,EAs3CG,MAAM,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW,EAt3C/E,AAAA,GAAC,CAAI,KAAK,AAAT,EAu3CG,MAAM,CAAG,iBAAiB,AAAA,WAAW,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW,EAv3C9G,AAAA,GAAC,CAAI,KAAK,AAAT,EAw3CG,MAAM,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW,EAx3C/E,AAAA,GAAC,CAAI,KAAK,AAAT,EAy3CG,MAAM,CAAG,iBAAiB,AAAA,WAAW,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW,EAz3C9G,AAAA,GAAC,CAAI,KAAK,AAAT,EA03CG,MAAM,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW,EA13C/E,AAAA,GAAC,CAAI,KAAK,AAAT,EA23CG,MAAM,CAAG,iBAAiB,AAAA,WAAW,CAAG,MAAM,AAAA,WAAW,CAAG,KAAK,AAAA,WAAW,CAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW,AAAC,CACvG,0BAA0B,CAAE,GAAG,CAC/B,sBAAsB,CAAE,CAAC,CAC5B,CA93CL,AAAA,AA+3CI,GA/3CH,CAAI,KAAK,AAAT,EA+3CG,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,EA/3C1D,AAAA,GAAC,CAAI,KAAK,AAAT,EAg4CG,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,EAh4C9E,AAAA,GAAC,CAAI,KAAK,AAAT,EAi4CG,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,EAj4C1D,AAAA,GAAC,CAAI,KAAK,AAAT,EAk4CG,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,EAl4C9E,AAAA,GAAC,CAAI,KAAK,AAAT,EAm4CG,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,EAn4C1D,AAAA,GAAC,CAAI,KAAK,AAAT,EAo4CG,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,EAp4C9E,AAAA,GAAC,CAAI,KAAK,AAAT,EAq4CG,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,EAr4C1D,AAAA,GAAC,CAAI,KAAK,AAAT,EAs4CG,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,EAt4C9E,AAAA,GAAC,CAAI,KAAK,AAAT,EAu4CG,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,EAv4C1D,AAAA,GAAC,CAAI,KAAK,AAAT,EAw4CG,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,EAx4C9E,AAAA,GAAC,CAAI,KAAK,AAAT,EAy4CG,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,EAz4C1D,AAAA,GAAC,CAAI,KAAK,AAAT,EA04CG,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,YAAY,AAAC,CACvE,YAAY,CAAE,CAAC,CACf,WAAW,CAAE,IAAI,CACpB,CA74CL,AAAA,AA84CI,GA94CH,CAAI,KAAK,AAAT,EA84CG,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,EA94CzD,AAAA,GAAC,CAAI,KAAK,AAAT,EA+4CG,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,EA/4C7E,AAAA,GAAC,CAAI,KAAK,AAAT,EAg5CG,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,EAh5CzD,AAAA,GAAC,CAAI,KAAK,AAAT,EAi5CG,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,EAj5C7E,AAAA,GAAC,CAAI,KAAK,AAAT,EAk5CG,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,EAl5CzD,AAAA,GAAC,CAAI,KAAK,AAAT,EAm5CG,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,EAn5C7E,AAAA,GAAC,CAAI,KAAK,AAAT,EAo5CG,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,EAp5CzD,AAAA,GAAC,CAAI,KAAK,AAAT,EAq5CG,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,EAr5C7E,AAAA,GAAC,CAAI,KAAK,AAAT,EAs5CG,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,EAt5CzD,AAAA,GAAC,CAAI,KAAK,AAAT,EAu5CG,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,EAv5C7E,AAAA,GAAC,CAAI,KAAK,AAAT,EAw5CG,MAAM,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,EAx5CzD,AAAA,GAAC,CAAI,KAAK,AAAT,EAy5CG,MAAM,CAAG,iBAAiB,CAAG,eAAe,CAAG,KAAK,CAAG,EAAE,CAAG,EAAE,AAAA,WAAW,AAAC,CACtE,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,CAAC,CACjB,CA55CL,AAAA,AA65CI,GA75CH,CAAI,KAAK,AAAT,EA65CG,iBAAiB,CAAC,sBAAsB,EA75C5C,AAAA,GAAC,CAAI,KAAK,AAAT,EA85CG,iBAAiB,CAAC,MAAM,EA95C5B,AAAA,GAAC,CAAI,KAAK,AAAT,EA+5CG,iBAAiB,CAAC,KAAK,EA/5C3B,AAAA,GAAC,CAAI,KAAK,AAAT,EAg6CG,iBAAiB,CAAC,MAAM,AAAC,CACrB,KAAK,CAAE,CAAC,CACR,IAAI,CAAE,IAAI,CACb,CAn6CL,AAAA,AAo6CI,GAp6CH,CAAI,KAAK,AAAT,EAo6CG,MAAM,AAAC,CACH,KAAK,CAAE,IAAI,CACd,CAt6CL,AAAA,AAu6CI,GAv6CH,CAAI,KAAK,AAAT,EAu6CG,aAAa,AAAC,CACV,UAAU,CAAE,IAAI,CACnB,CAz6CL,AAAA,AA06CI,GA16CH,CAAI,KAAK,AAAT,EA06CG,aAAa,AAAA,KAAK,AAAC,CACf,UAAU,CAAE,KAAK,CACpB,CA56CL,AAAA,AA66CI,GA76CH,CAAI,KAAK,AAAT,EA66CG,aAAa,CAAC,IAAI,CAAG,IAAI,AAAC,CACtB,WAAW,CAAE,IAAI,CACjB,YAAY,CAAE,GAAG,CACpB,CAh7CL,AAAA,AAi7CI,GAj7CH,CAAI,KAAK,AAAT,EAi7CG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAG,IAAI,AAAC,CACjC,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,IAAI,CACpB,CAp7CL,AAAA,AAq7CI,GAr7CH,CAAI,KAAK,AAAT,EAq7CG,aAAa,CAAC,UAAU,CAAG,UAAU,AAAC,CAClC,YAAY,CAAE,CAAC,CACf,WAAW,CAAE,IAAI,CACpB,CAx7CL,AAAA,AAy7CI,GAz7CH,CAAI,KAAK,AAAT,EAy7CG,QAAQ,AAAC,CACL,IAAI,CAAE,IAAI,CACV,UAAU,CAAE,KAAK,CACpB,CA57CL,AAAA,AA67CI,GA77CH,CAAI,KAAK,AAAT,EA67CG,QAAQ,AAAA,IAAI,CAAG,MAAM,AAAC,CAClB,KAAK,CAAE,GAAG,CACV,IAAI,CAAE,IAAI,CACV,YAAY,CAAE,KAAK,CACnB,WAAW,CAAE,IAAI,CACpB,CAl8CL,AAAA,AAm8CI,GAn8CH,CAAI,KAAK,AAAT,EAm8CG,QAAQ,AAAA,IAAI,CAAG,MAAM,AAAA,MAAM,AAAC,CACxB,YAAY,CAAE,KAAK,CACnB,WAAW,CAAE,IAAI,CACpB,CAt8CL,AAAA,AAu8CI,GAv8CH,CAAI,KAAK,AAAT,EAu8CG,QAAQ,AAAA,OAAO,CAAG,MAAM,AAAC,CACrB,KAAK,CAAE,GAAG,CACV,IAAI,CAAE,IAAI,CACV,YAAY,CAAE,KAAK,CACnB,WAAW,CAAE,IAAI,CACpB,CA58CL,AAAA,AA68CI,GA78CH,CAAI,KAAK,AAAT,EA68CG,QAAQ,AAAA,OAAO,CAAG,MAAM,AAAA,MAAM,AAAC,CAC3B,YAAY,CAAE,KAAK,CACnB,WAAW,CAAE,IAAI,CACpB,CAh9CL,AAAA,AAi9CI,GAj9CH,CAAI,KAAK,AAAT,EAi9CG,iBAAiB,AAAC,CACd,KAAK,CAAE,CAAC,CACR,MAAM,CAAE,CAAC,CACZ,CAp9CL,AAAA,AAq9CI,GAr9CH,CAAI,KAAK,AAAT,EAq9CG,iBAAiB,AAAA,KAAK,AAAC,CACnB,KAAK,CAAE,IAAI,CACX,IAAI,CAAE,CAAC,CACP,gBAAgB,CAAE,kGAIjB,CACD,gBAAgB,CAAE,qEAA2E,CAC7F,gBAAgB,CAAE,sEAA4E,CAC9F,iBAAiB,CAAE,QAAQ,CAC3B,MAAM,CAAE,8GAA8G,CACzH,CAj+CL,AAAA,AAk+CI,GAl+CH,CAAI,KAAK,AAAT,EAk+CG,iBAAiB,AAAA,MAAM,AAAC,CACpB,IAAI,CAAE,IAAI,CACV,KAAK,CAAE,CAAC,CACR,gBAAgB,CAAE,kGAIjB,CACD,gBAAgB,CAAE,qEAA2E,CAC7F,gBAAgB,CAAE,sEAA4E,CAC9F,iBAAiB,CAAE,QAAQ,CAC3B,MAAM,CAAE,8GAA8G,CACzH,CA9+CL,AAAA,AA++CI,GA/+CH,CAAI,KAAK,AAAT,EA++CG,iBAAiB,CAAC,UAAU,EA/+ChC,AAAA,GAAC,CAAI,KAAK,AAAT,EAg/CG,iBAAiB,CAAC,uBAAuB,AAAC,CACtC,IAAI,CAAE,GAAG,CACT,KAAK,CAAE,IAAI,CACX,YAAY,CAAE,KAAK,CACtB,CAp/CL,AAAA,AAq/CI,GAr/CH,CAAI,KAAK,AAAT,EAq/CG,iBAAiB,CAAC,UAAU,EAr/ChC,AAAA,GAAC,CAAI,KAAK,AAAT,EAs/CG,iBAAiB,CAAC,wBAAwB,AAAC,CACvC,KAAK,CAAE,GAAG,CACV,IAAI,CAAE,IAAI,CACV,WAAW,CAAE,KAAK,CACrB,CA1/CL,AAAA,AA2/CI,GA3/CH,CAAI,KAAK,AAAT,EA2/CG,oBAAoB,AAAC,CACjB,KAAK,CAAE,GAAG,CACV,IAAI,CAAE,CAAC,CACP,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,CAAC,CACd,YAAY,CAAE,CAAC,CAClB,AACD,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK,GAlgDvC,AAAA,AAmgDQ,GAngDP,CAAI,KAAK,AAAT,EAmgDO,iBAAiB,CAAC,uBAAuB,EAngDjD,AAAA,GAAC,CAAI,KAAK,AAAT,EAogDO,iBAAiB,CAAC,UAAU,AAAC,CACzB,WAAW,CAAE,CAAC,CACd,YAAY,CAAE,KAAK,CACtB,CAvgDT,AAAA,AAwgDQ,GAxgDP,CAAI,KAAK,AAAT,EAwgDO,iBAAiB,CAAC,wBAAwB,EAxgDlD,AAAA,GAAC,CAAI,KAAK,AAAT,EAygDO,iBAAiB,CAAC,UAAU,AAAC,CACzB,WAAW,CAAE,CAAC,CACd,YAAY,CAAE,KAAK,CACtB,CA5gDT,AAAA,AA6gDQ,GA7gDP,CAAI,KAAK,AAAT,EA6gDO,iBAAiB,AAAC,CACd,IAAI,CAAE,GAAG,CACT,KAAK,CAAE,GAAG,CACV,cAAc,CAAE,IAAI,CACvB,EAjhDT,AAAA,AAmhDI,GAnhDH,CAAI,KAAK,AAAT,EAmhDG,WAAW,AAAA,KAAK,AAAC,CACb,KAAK,CAAE,eAAe,CACzB,CArhDL,AAAA,AAshDI,GAthDH,CAAI,KAAK,AAAT,EAshDG,UAAU,AAAA,KAAK,AAAC,CACZ,KAAK,CAAE,gBAAgB,CAC1B,AC/gDJ,AAAA,WAAW,AAAC,CAKZ,MAAM,CAAC,CAAC,CACR,MAAM,CAAC,CAAC,CACR,OAAO,CAAC,CAAC,CACT,IAAI,CAAE,OAAO,CACb,WAAW,CAAC,MAAM,CAClB,KAAK,CAAE,OAAO,CACd,AACD,AAAA,QAAQ,CAAC,WAAW,AAAC,CACpB,eAAe,CAAE,IAAI,CACrB,AAED,AAAA,YAAY,AAAC,CAKZ,OAAO,CAAC,YAAY,CACpB,MAAM,CAAC,CAAC,CACR,OAAO,CAAC,CAAC,CACT,cAAc,CAAC,MAAM,CACrB,AAED,AAAA,KAAK,AAAA,YAAY,AAAC,CAEjB,OAAO,CAAC,YAAY,CACpB,UAAU,CAAE,WAAW,CAAE,eAAe,CAAE,WAAW,CACrD,AAED,AAAA,YAAY,AAAC,CAEZ,QAAQ,CAAE,QAAQ,CAClB,UAAU,CAAE,MAAM,CAClB,AACD,AAAA,YAAY,CAAC,CAAC,AAAC,CACd,UAAU,CAAE,iBAAiB,CAC7B,AAED,AAAA,aAAa,AAAC,CAEb,OAAO,CAAE,gBAAgB,CACzB,QAAQ,CAAE,QAAQ,CAClB,UAAU,CAAE,OAAO,CACnB,AAED,AAAA,OAAO,CAAC,cAAc,CAAC,oBAAoB,CAC3C,oBAAoB,AAAC,CAEpB,QAAQ,CAAE,MAAM,CAChB,KAAK,CAAE,eAAe,CACtB,QAAQ,CAAE,QAAQ,CAClB,AACD,AAAA,OAAO,CAAC,oBAAoB,AAAC,CAC5B,KAAK,CAAE,eAAe,CACtB,KAAK,CAAE,IAAI,CACX,OAAO,CAAE,uBAAuB,CAChC,AAED,AAAA,MAAM,CAAC,YAAY,CAAC,KAAK,CACzB,MAAM,CAAC,KAAK,AAAA,aAAa,CACzB,MAAM,CAAC,aAAa,CAAC,KAAK,AAAC,CAC1B,SAAS,CAAE,IAAI,CACf,AACD,AAAA,YAAY,CAAC,gBAAgB,AAAC,CAC7B,KAAK,CAAE,IAAI,CACX,cAAc,CAAE,GAAG,CACnB,AACD,AAAA,KAAK,AAAA,YAAY,AAAC,CACjB,OAAO,CAAE,YAAY,CACrB,eAAe,CAAE,QAAQ,CACzB,AACD,AAAA,aAAa,CAAC,4BAA4B,CAC1C,aAAa,CAAC,0BAA0B,CACxC,uBAAuB,CAAC,yBAAyB,AAAC,CACjD,KAAK,CAAE,KAAK,CACZ,UAAU,CAAE,MAAM,CAClB,AACD,AAAA,YAAY,CAAC,KAAK,AAAA,gBAAgB,CAClC,aAAa,CAAC,KAAK,AAAA,gBAAgB,AAAC,CAEnC,YAAY,CAAE,YAAY,CAC1B,aAAa,CAAE,YAAY,CAC3B,AACD,AAAA,uBAAuB,CAAC,yBAAyB,AAAC,CACjD,OAAO,CAAE,IAAI,CACb,AAED,AAAA,WAAW,AAAC,CACX,SAAS,CAAC,GAAG,CACb,WAAW,CAAC,GAAG,CACf,AAED,AAAA,eAAe,AAAC,CACf,QAAQ,CAAE,mBAAmB,CAC7B,IAAI,CAAE,mBAAmB,CACzB,GAAG,CAAE,mBAAmB,CACxB,AAMD,AAAA,WAAW,AAAC,CACX,QAAQ,CAAE,QAAQ,CAClB,gBAAgB,CAAE,WAAW,CAC7B,MAAM,CAAE,CAAC,CACT,MAAM,CAAE,CAAC,CACT,OAAO,CAAE,CAAC,CACV,0BAA0B,CAAE,KAAK,CACjC,AAED,AAAA,kBAAkB,AAAC,CAElB,OAAO,CAAE,YAAY,CACrB,MAAM,CAAE,YAAY,CACpB,gBAAgB,CAAE,sBAAsB,CACxC,gBAAgB,CAAE,eAAe,CACjC,MAAM,CAAE,eAAe,CACvB,KAAK,CAAE,eAAe,CACtB,AAED,AAAA,qBAAqB,AAAC,CAErB,KAAK,CAAE,eAAe,CACtB,QAAQ,CAAE,iBAAiB,CAC3B,MAAM,CAAE,kBAAkB,CAC1B,cAAc,CAAE,iBAAiB,CACjC,AAED,AAAA,sBAAsB,AAAC,CAEtB,QAAQ,CAAE,QAAQ,CAClB,IAAI,CAAE,CAAC,CACP,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,OAAO,CAAE,EAAE,CACX,MAAM,CAAE,CAAC,CACT,OAAO,CAAE,CAAC,CACV,MAAM,CAAE,CAAC,CACT,AAED,AAAA,iBAAiB,AAAC,CAEjB,OAAO,CAAC,eAAe,CACvB,AAED,AAAA,eAAe,AAAC,CAEf,QAAQ,CAAE,MAAM,CAChB,AAKD,AAAA,QAAQ,CAAC,UAAU,CACnB,QAAQ,CAAC,GAAG,AAAA,sBAAsB,CAClC,QAAQ,CAAC,IAAI,AAAA,sBAAsB,CACnC,QAAQ,CAAC,GAAG,AAAA,sBAAsB,CAClC,QAAQ,CAAC,8BAA8B,CACvC,QAAQ,CAAC,iBAAiB,AAAC,CAG1B,OAAO,CAAE,IAAI,CACb,AACD,AAAA,aAAa,CAAC,GAAG,AAAA,sBAAsB,AAAC,CACvC,OAAO,CAAE,KAAK,CACd,AAED,AAAA,QAAQ,CAAC,mBAAmB,AAAC,CAC5B,OAAO,CAAE,iBAAiB,CAC1B,MAAM,CAAE,OAAO,CACf,AAQD,AAAA,QAAQ,CAAC,uBAAuB,AAAC,CAChC,OAAO,CAAE,GAAG,CACZ,MAAM,CAAE,cAAc,CACtB,AACD,AAAA,QAAQ,CAAC,0BAA0B,CAAC,uBAAuB,AAAC,CAC3D,YAAY,CAAE,gBAAgB,CAC9B,YAAY,CAAE,cAAc,CAC5B,OAAO,CAAE,CAAC,CACV,AACD,AAAA,QAAQ,CAAC,0BAA0B,AAAC,CACnC,cAAc,CAAE,gBAAgB,CAChC,MAAM,CAAE,cAAc,CACtB,AACD,AAAA,QAAQ,CAAC,gBAAgB,AAAC,CACzB,MAAM,CAAE,8BAA8B,CAKtC,OAAO,CAAE,YAAY,CACrB,AACD,AAAA,QAAQ,CAAC,iBAAiB,AAAC,CAC1B,OAAO,CAAE,YAAY,CACrB,AAED,AAAA,QAAQ,CAAC,oBAAoB,AAAC,CAC7B,MAAM,CAAE,MAAM,CACd,AAED,AAAA,QAAQ,CAAC,qBAAqB,CAAC,gBAAgB,CAC/C,QAAQ,CAAC,qBAAqB,CAAC,gBAAgB,AAAC,CAC/C,YAAY,CAAE,MAAM,CAAA,UAAU,CAC9B,YAAY,CAAE,MAAM,CAAA,UAAU,CAC9B,YAAY,CAAE,eAAe,CAC7B,KAAK,CAAC,eAAe,CACrB,AAGD,AAAA,gBAAgB,CAAC,CAAC,AAAC,CAClB,cAAc,CAAE,MAAM,CACtB,AACD,AAAA,YAAY,CAAC,sBAAsB,CACnC,gBAAgB,CAAC,sBAAsB,AAAC,CAEvC,UAAU,CAAE,gBAAgB,CAC5B,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,SAAS,CAAE,GAAG,CACd,AAOD,AAAA,UAAU,AAAC,CAEV,mBAAmB,CAAC,QAAQ,CAC5B,iBAAiB,CAAC,SAAS,CAC3B,AAED,AAAA,aAAa,AAAC,CAEb,WAAW,CAAC,MAAM,CAClB,iBAAiB,CAAC,QAAQ,CAC1B,AAED,AAAA,WAAW,AAAC,CAEX,mBAAmB,CAAC,SAAS,CAC7B,iBAAiB,CAAC,SAAS,CAC3B,AAGD,AAAA,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,gBAAgB,AAAC,CACxD,OAAO,CAAE,GAAG,CACZ,AAED,AAAA,kBAAkB,CAClB,YAAY,CACZ,oBAAoB,CACpB,iBAAiB,AAAC,CAEjB,MAAM,CAAE,KAAK,CACb,cAAc,CAAE,MAAM,CACtB,AAED,AAAA,oBAAoB,AAAC,CACpB,OAAO,CAAE,KAAK,CACd,AACD,AAAA,EAAE,AAAA,oBAAoB,AAAC,CACtB,OAAO,CAAE,UAAU,CACnB,AAED,AAAA,gBAAgB,CAAC,GAAG,AAAC,CAEpB,cAAc,CAAC,MAAM,CAErB,AAED,AAAA,aAAa,CAAC,iBAAiB,AAAC,CAE/B,eAAe,CAAE,QAAQ,CACzB,AAED,AAAA,aAAa,CAAC,kBAAkB,CAChC,aAAa,CAAC,YAAY,CAC1B,aAAa,CAAC,oBAAoB,CAClC,aAAa,CAAC,iBAAiB,AAAC,CAC/B,MAAM,CAAE,CAAC,CACT,AAED,AAAA,aAAa,CAAC,oBAAoB,AAAC,CAElC,OAAO,CAAE,OAAO,CAChB,AAGD,AAAA,UAAU,CAAC,aAAa,CAAC,oBAAoB,AAAC,CAC7C,YAAY,CAAE,KAAK,CACnB,AACD,AAAA,SAAS,CAAC,aAAa,CAAC,gBAAgB,AAAA,kBAAkB,AAAC,CAC1D,OAAO,CAAC,CAAC,CACT,AAED,AAAA,YAAY,AAAC,CACZ,MAAM,CAAC,cAAc,CACrB,AACD,AAAA,gBAAgB,AAAC,CAEhB,MAAM,CAAC,cAAc,CACrB,MAAM,CAAC,CAAC,CACR,WAAW,CAAC,MAAM,CAClB,cAAc,CAAE,MAAM,CACtB,UAAU,CAAC,MAAM,CACjB,WAAW,CAAE,MAAM,CACnB,AACD,AAAA,UAAU,CAAC,aAAa,CAAC,4BAA4B,AAAC,CAGrD,WAAW,CAAC,OAAO,CACnB,AACD,AAAA,aAAa,CAAC,gBAAgB,AAAC,CAC9B,YAAY,CAAE,CAAC,CACf,AAED,AAAA,YAAY,CACZ,YAAY,CAAC,CAAC,CACd,gBAAgB,CAChB,gBAAgB,CAAC,CAAC,AAAC,CAClB,MAAM,CAAE,OAAO,CACf,2BAA2B,CAAE,WAAW,CACxC,AAED,AAAA,MAAM,CAAC,gBAAgB,AAAC,CAEvB,IAAI,CAAE,CAAC,CACP,AAED,AAAA,MAAM,CAAC,gBAAgB,CAAC,MAAM,AAAC,CAK9B,QAAQ,CAAE,OAAO,CACjB,AAED,AAAA,GAAG,AAAA,iBAAiB,AAAC,CACpB,KAAK,CAAE,KAAK,CACZ,AAOD,AAAA,aAAa,AAAC,CACb,MAAM,CAAE,eAAe,CACvB,KAAK,CAAE,IAAI,CACX,cAAc,CAAE,MAAM,CACtB,AAED,AAAA,qBAAqB,CACrB,qBAAqB,AAAC,CACrB,KAAK,CAAE,IAAI,CACX,AACD,AAAA,UAAU,CAAC,qBAAqB,CAAC,KAAK,AAAC,CACtC,KAAK,CAAE,OAAO,CACd,AACD,AAAA,UAAU,CAAC,QAAQ,AAAA,sBAAsB,AAAC,CACzC,KAAK,CAAE,IAAI,CACX,AACD,AAAA,SAAS,CAAC,qBAAqB,CAAC,KAAK,AAAA,gBAAgB,CACrD,SAAS,CAAC,qBAAqB,CAAC,KAAK,AAAC,CACrC,eAAe,CAAE,IAAI,CACrB,AAED,AAAA,iBAAiB,AAAC,CAEjB,KAAK,CAAE,OAAO,CACd,UAAU,CAAE,MAAM,CAClB,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,IAAI,CAAE,CAAC,CACP,WAAW,CAAE,MAAM,CACnB,cAAc,CAAE,IAAI,CACpB,AAED,AAAA,iBAAiB,AAAC,CACjB,KAAK,CAAE,GAAG,CACV,AAGD,AAAA,aAAa,CAAC,KAAK,AAAA,MAAM,AAAC,CACzB,OAAO,CAAE,IAAI,CACb,AACD,AAAA,oBAAoB,AAAC,CACpB,OAAO,CAAE,4BAA4B,CACrC,AAED,AAAA,YAAY,CAAC,KAAK,CAClB,aAAa,CAAC,KAAK,AAAC,CACnB,KAAK,CAAE,IAAI,CACX,AACD,AAAA,OAAO,CAAC,KAAK,AAAA,aAAa,CAC1B,OAAO,CAAC,aAAa,CAAC,KAAK,AAAC,CAC3B,KAAK,CAAE,IAAI,CACX,AACD,AAAA,gBAAgB,AAAC,CAEhB,MAAM,CAAC,YAAY,CACnB,gBAAgB,CAAC,sBAAsB,CACvC,KAAK,CAAC,eAAe,CAErB,YAAY,CAAE,YAAY,CAC1B,aAAa,CAAE,YAAY,CAC3B,WAAW,CAAE,YAAY,CACzB,YAAY,CAAE,YAAY,CAC1B,AACD,AAAA,QAAQ,CAAC,aAAa,CAAC,KAAK,AAAC,CAC5B,MAAM,CAAE,YAAY,CACpB,AACD,AAAA,4BAA4B,CAAC,KAAK,AAAA,qBAAqB,CACvD,YAAY,CAAC,KAAK,CAClB,aAAa,CAAC,KAAK,AAAA,sBAAsB,AAAC,CAIzC,WAAW,CAAE,eAAe,CAC5B,SAAS,CAAE,cAAc,CACzB,UAAU,CAAE,eAAe,CAC3B,MAAM,CAAE,eAAe,CACvB,AACD,AAAA,MAAM,CAAC,YAAY,CAAC,KAAK,CACzB,MAAM,CAAC,aAAa,CAAC,KAAK,CAC1B,MAAM,CAAC,KAAK,AAAA,aAAa,AAAC,CACzB,UAAU,CAAE,OAAO,CACnB,WAAW,CAAE,MAAM,CACnB,AACD,AAAA,YAAY,CAAC,iBAAiB,CAAC,IAAI,AAAC,CACnC,WAAW,CAAE,IAAI,CACjB,AACD,AAAA,MAAM,CAAC,YAAY,CAAC,iBAAiB,AAAC,CACrC,WAAW,CAAE,MAAM,CACnB,AACD,AAAA,OAAO,CAAC,YAAY,CAAC,iBAAiB,CACtC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CACtC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CACtC,YAAY,CAAC,YAAY,CAAC,iBAAiB,CAC3C,YAAY,CAAC,EAAE,CACf,OAAO,CAAC,YAAY,CAAC,KAAK,CAC1B,YAAY,CAAC,YAAY,CAAC,KAAK,CAC/B,OAAO,CAAC,YAAY,CAAC,yBAAyB,CAC9C,OAAO,CAAC,aAAa,CAAC,KAAK,CAC3B,OAAO,CAAC,KAAK,AAAA,aAAa,CAC1B,YAAY,CAAC,aAAa,CAAC,KAAK,AAAA,qBAAqB,CACrD,YAAY,CAAC,aAAa,CAAC,KAAK,AAAA,sBAAsB,CACtD,YAAY,CAAC,aAAa,CAAC,KAAK,AAAA,wBAAwB,CACxD,YAAY,CAAC,aAAa,CAAC,KAAK,AAAA,gBAAgB,CAChD,YAAY,CAAC,KAAK,AAAA,aAAa,AAAC,CAC/B,WAAW,CAAE,IAAI,CACjB,AACD,AAAA,QAAQ,CAAC,KAAK,AAAA,qBAAqB,CACnC,QAAQ,CAAC,KAAK,AAAA,sBAAsB,AAAC,CAEpC,WAAW,CAAE,YAAY,CACzB,KAAK,CAAE,cAAc,CACrB,KAAK,CAAE,gBAAgB,CACvB,AACD,AAAA,4BAA4B,CAAC,yBAAyB,AAAC,CACtD,OAAO,CAAE,MAAM,CACf,MAAM,CAAE,OAAO,CACf,AAID,AAAA,aAAa,CAAC,4BAA4B,CAC1C,cAAc,CAAC,0BAA0B,AAAC,CAEzC,YAAY,CAAE,oBAAoB,CAClC,AACD,AAAA,QAAQ,CAAC,YAAY,CAAC,0BAA0B,CAChD,aAAa,CAAC,cAAc,CAAC,0BAA0B,AAAC,CAEvD,YAAY,CAAE,YAAY,CAC1B,AAED,AAAA,kBAAkB,AAAC,CAElB,eAAe,CAAE,IAAI,CACrB,AACD,AAAA,aAAa,CAAC,4BAA4B,CAAC,gBAAgB,AAAC,CAE3D,YAAY,CAAE,CAAC,CACf,AACD,AAAA,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,4BAA4B,CAAC,gBAAgB,AAAC,CAC3E,KAAK,CAAE,IAAI,CACX,AAED,AAAA,MAAM,CAAC,aAAa,CAAC,cAAc,AAAC,CAEnC,cAAc,CAAE,MAAM,CACtB,AAID,AAAA,aAAa,CAAC,4BAA4B,AAAC,CAC1C,KAAK,CAAE,GAAG,CACV,QAAQ,CAAE,mBAAmB,CAC7B,QAAQ,CAAE,MAAM,CAChB,AACD,AAAA,aAAa,CAAC,wBAAwB,AAAC,CACtC,KAAK,CAAC,GAAG,CACT,UAAU,CAAC,iBAAiB,CAC5B,UAAU,CAAC,MAAM,CACjB,AACD,AAAA,cAAc,CAAC,gBAAgB,CAC/B,4BAA4B,CAAC,gBAAgB,AAAC,CAC7C,YAAY,CAAE,CAAC,CACf,AACD,AAAA,QAAQ,CAAC,4BAA4B,CAAC,gBAAgB,AAAC,CACtD,YAAY,CAAE,cAAc,CAC5B,YAAY,CAAE,gBAAgB,CAC9B,AACD,AAAA,QAAQ,CAAC,aAAa,CAAC,4BAA4B,CACnD,QAAQ,CAAC,aAAa,CAAC,sBAAsB,CAC7C,QAAQ,CAAC,4BAA4B,CAAC,KAAK,AAAC,CAC3C,KAAK,CAAE,cAAc,CACrB,AACD,AAAA,QAAQ,CAAC,aAAa,CAAC,sBAAsB,AAAC,CAC7C,MAAM,CAAE,iBAAiB,CACzB,AACD,AAAA,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,sBAAsB,CAAC,gBAAgB,AAAC,CACrE,YAAY,CAAE,gBAAgB,CAC9B,aAAa,CAAE,gBAAgB,CAC/B,WAAW,CAAE,gBAAgB,CAC7B,YAAY,CAAE,gBAAgB,CAC9B,KAAK,CAAE,gBAAgB,CACvB,AACD,AAAA,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,sBAAsB,CAAC,gBAAgB,AAAC,CACtE,YAAY,CAAE,YAAY,CAC1B,aAAa,CAAE,YAAY,CAC3B,KAAK,CAAE,cAAc,CACrB,AACD,AAAA,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,sBAAsB,CAAC,gBAAgB,AAAC,CACtE,WAAW,CAAE,gBAAgB,CAC7B,YAAY,CAAE,gBAAgB,CAC9B,KAAK,CAAE,cAAc,CACrB,AACD,AAAA,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,sBAAsB,CAAC,gBAAgB,AAAC,CAC3E,WAAW,CAAE,YAAY,CACzB,YAAY,CAAE,YAAY,CAC1B,KAAK,CAAE,cAAc,CACrB,AACD,AAAA,aAAa,CAAC,4BAA4B,CAAC,iBAAiB,AAAC,CAI5D,OAAO,CAAE,CAAC,CACV,QAAQ,CAAE,mBAAmB,CAC7B,KAAK,CAAE,CAAC,CACR,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,GAAG,CACX,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,IAAI,CAAE,CAAC,CACP,KAAK,CAAE,IAAI,CACX,AACD,AAAA,YAAY,CAAC,aAAa,CAAC,4BAA4B,CAAC,iBAAiB,AAAC,CACzE,KAAK,CAAE,IAAI,CACX,AACD,AAAA,QAAQ,CAAC,4BAA4B,CAAC,iBAAiB,AAAC,CACvD,QAAQ,CAAE,kBAAkB,CAC5B,AACD,AAAA,aAAa,CAAC,4BAA4B,CAAC,qBAAqB,AAAC,CAChE,GAAG,CAAE,GAAG,CACR,gBAAgB,CAAE,cAAc,CAChC,AACD,AAAA,aAAa,CAAC,4BAA4B,CAAC,mBAAmB,AAAC,CAC9D,GAAG,CAAE,CAAC,CACN,AACD,AAAA,aAAa,CAAC,sBAAsB,AAAC,CACpC,MAAM,CAAE,IAAI,CACZ,UAAU,CAAE,MAAM,CAClB,MAAM,CAAE,eAAe,CACvB,AACD,AAAA,YAAY,CAAC,aAAa,CAAC,sBAAsB,AAAC,CACjD,MAAM,CAAE,eAAe,CACvB,AACD,AAAA,aAAa,CAAC,sBAAsB,CAAC,gBAAgB,AAAC,CACrD,cAAc,CAAE,UAAU,CAC1B,qBAAqB,CAAE,UAAU,CACjC,iBAAiB,CAAE,UAAU,CAC7B,wBAAwB,CAAE,UAAU,CACpC,YAAY,CAAE,UAAU,CACxB,mBAAmB,CAAE,UAAU,CAC/B,SAAS,CAAE,UAAU,CACrB,gBAAgB,CAAE,QAAQ,CAC1B,WAAW,CAAE,CAAC,CACd,cAAc,CAAE,CAAC,CACjB,YAAY,CAAE,YAAY,CAC1B,aAAa,CAAE,YAAY,CAC3B,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,MAAM,CAClB,AACD,AAAA,MAAM,CAAC,aAAa,CAAC,sBAAsB,CAAC,gBAAgB,AAAC,CAC5D,IAAI,CAAE,GAAG,CACT,AACD,AAAA,aAAa,CAAC,4BAA4B,CAAC,sBAAsB,AAAC,CACjE,QAAQ,CAAE,MAAM,CAChB,AAED,AAAA,QAAQ,CAAC,aAAa,CAAC,4BAA4B,CAAC,iBAAiB,AAAC,CACrE,KAAK,CAAE,IAAI,CACX,AACD,AAAA,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,4BAA4B,CAAC,iBAAiB,AAAC,CAClF,KAAK,CAAE,GAAG,CACV,AACD,AAAA,QAAQ,CAAC,aAAa,CAAC,sBAAsB,CAAC,gBAAgB,AAAC,CAC9D,cAAc,CAAC,GAAG,CAClB,UAAU,CAAE,OAAO,CACnB,AACD,AAAA,QAAQ,CAAC,4BAA4B,AAAC,CACrC,KAAK,CAAE,GAAG,CACV,AAQD,AAAA,cAAc,CACd,WAAW,CACX,mBAAmB,AAAC,CACnB,OAAO,CAAE,CAAC,CACV,MAAM,CAAE,CAAC,CACT,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,mBAAmB,CAAC,aAAa,CACjC,iBAAiB,CAAC,SAAS,CAC3B,QAAQ,CAAE,MAAM,CAChB,AAED,AAAA,cAAc,CAAC,KAAK,CACpB,WAAW,CAAC,KAAK,AAAC,CACjB,MAAM,CAAE,CAAC,CACT,OAAO,CAAE,CAAC,CACV,OAAO,CAAE,KAAK,CACd,AAED,AAAA,mBAAmB,AAAC,CAEnB,OAAO,CAAE,CAAC,CACV,AAED,AAAA,MAAM,CAAC,mBAAmB,AAAC,CAC1B,MAAM,CAAE,gBAAgB,CACxB,AAED,AAAA,QAAQ,CAAC,cAAc,CACvB,QAAQ,CAAC,WAAW,AAAC,CAEpB,KAAK,CAAE,eAAe,CACtB,MAAM,CAAE,eAAe,CACvB,AACD,AAAA,QAAQ,CAAC,mBAAmB,AAAC,CAC5B,OAAO,CAAE,CAAC,CACV,MAAM,CAAE,IAAI,CACZ,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,AAED,AAAA,QAAQ,CAAC,kBAAkB,AAAC,CAE3B,MAAM,CAAE,UAAU,CAClB,OAAO,CAAE,cAAc,CACvB,AAMD,AAAA,iBAAiB,AAAC,CACd,OAAO,CAAE,CAAC,CACb,AACD,AAAA,sBAAsB,AAAC,CAEtB,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CACjC,MAAM,CAAC,eAAe,CACtB,OAAO,CAAC,CAAC,CACT,AAED,AAAA,qBAAqB,AAAC,CAErB,QAAQ,CAAC,QAAQ,CACjB,QAAQ,CAAC,MAAM,CACf,OAAO,CAAC,EAAE,CACV,GAAG,CAAC,CAAC,CACL,KAAK,CAAC,IAAI,CACV,AACD,AAAA,OAAO,CAAC,qBAAqB,AAAC,CAC7B,MAAM,CAAC,KAAK,CACZ,AAED,AAAA,qBAAqB,AAAC,CAErB,QAAQ,CAAC,QAAQ,CACjB,QAAQ,CAAC,MAAM,CACf,GAAG,CAAC,CAAC,CACL,IAAI,CAAC,CAAC,CACN,MAAM,CAAC,CAAC,CACR,KAAK,CAAC,CAAC,CACP,MAAM,CAAC,CAAC,CACR,OAAO,CAAC,CAAC,CACT,KAAK,CAAE,IAAI,CACX,MAAM,CAAC,IAAI,CACX,gBAAgB,CAAC,IAAI,CACrB,qBAAqB,CAAE,KAAK,CAC5B,AAED,AAAA,QAAQ,CAAC,qBAAqB,AAAC,CAE9B,YAAY,CAAC,GAAG,CAChB,YAAY,CAAC,KAAK,CAClB,gBAAgB,CAAC,sBAAsB,CACvC,AAED,AAAA,OAAO,CAAC,qBAAqB,AAAC,CAE7B,QAAQ,CAAC,MAAM,CAEf,MAAM,CAAC,KAAK,CACZ,AAMD,AAAA,+CAA+C,AAAC,CAC/C,OAAO,CAAC,IAAI,CACZ,AAED,AAAA,QAAQ,CAAC,8BAA8B,CAAC,+CAA+C,AAAC,CACvF,OAAO,CAAC,KAAK,CACb,QAAQ,CAAC,QAAQ,CACjB,GAAG,CAAC,CAAC,CACL,MAAM,CAAC,CAAC,CACR,MAAM,CAAC,CAAC,CACR,OAAO,CAAC,CAAC,CACT,KAAK,CAAC,IAAI,CACV,MAAM,CAAC,IAAI,CACX,AAED,AAAA,sBAAsB,AAAC,CACtB,OAAO,CAAC,KAAK,CACb,QAAQ,CAAC,MAAM,CACf,KAAK,CAAC,IAAI,CACV,UAAU,CAAC,MAAM,CACjB,gBAAgB,CAAC,sBAAsB,CACvC,AAMD,AAAA,aAAa,AAAC,CACb,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,IAAI,CACb,OAAO,CAAE,KAAK,CAEd,IAAI,CAAE,CAAC,CACP,GAAG,CAAE,QAAQ,CACb,QAAQ,CAAE,OAAO,CACjB,AAED,AAAA,sBAAsB,AAAC,CACtB,MAAM,CAAE,eAAe,CACvB,UAAU,CAAE,OAAO,CACnB,KAAK,CAAE,KAAK,CACZ,SAAS,CAAE,KAAK,CAChB,AAED,AAAA,sBAAsB,AAAC,CACtB,OAAO,CAAE,eAAe,CACxB,AAED,AAAA,sBAAsB,AAAC,CACtB,QAAQ,CAAE,QAAQ,CAClB,AACD,AAAA,QAAQ,CAAC,sBAAsB,AAAC,CAC/B,OAAO,CAAE,IAAI,CACb,AAED,AAAA,iBAAiB,AAAC,CACjB,OAAO,CAAC,IAAI,CACZ,AAKD,AAAA,qBAAqB,AAAC,CACrB,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,KAAK,CACd,QAAQ,CAAE,MAAM,CAChB,AAED,AAAA,cAAc,CACd,iBAAiB,CACjB,eAAe,CACf,gBAAgB,AAAC,CAChB,QAAQ,CAAE,QAAQ,CAClB,QAAQ,CAAE,MAAM,CAChB,AAED,AAAA,IAAI,CAAC,iBAAiB,AAAC,CAAE,QAAQ,CAAE,QAAQ,CAAI,AAQ/C,AAAA,qBAAqB,CAAE,6BAA6B,AAAC,CACpD,QAAQ,CAAC,QAAQ,CACjB,QAAQ,CAAE,MAAM,CACb,OAAO,CAAE,CAAC,CACb,AAED,AAAA,yBAAyB,CACzB,iCAAiC,AAAC,CACjC,QAAQ,CAAE,mBAAmB,CAC7B,OAAO,CAAE,CAAC,CACV,AAED,AAAA,qBAAqB,CAAG,cAAc,AAAC,CAGtC,MAAM,CAAE,IAAI,CACZ,AAED,AAAA,YAAY,AAAC,CAEZ,QAAQ,CAAE,QAAQ,CAClB,SAAS,CAAE,GAAG,CACd,AAQD,AAAA,cAAc,AAAC,CACd,QAAQ,CAAE,QAAQ,CAClB,QAAQ,CAAE,MAAM,CAChB,OAAO,CAAE,EAAE,CACX,gBAAgB,CAAE,IAAI,CACtB,YAAY,CAAE,IAAI,CAClB,YAAY,CAAE,KAAK,CACnB,YAAY,CAAE,CAAC,CACf,AACD,AAAA,MAAM,CAAC,cAAc,AAAC,CACrB,OAAO,CAAE,CAAC,CACV,AAED,AAAA,oBAAoB,AAAC,CACpB,OAAO,CAAE,aAAa,CACtB,AAED,AAAA,mBAAmB,AAAC,CACnB,QAAQ,CAAC,QAAQ,CACjB,OAAO,CAAC,EAAE,CACV,GAAG,CAAC,CAAC,CACL,IAAI,CAAC,CAAC,CACN,KAAK,CAAC,IAAI,CACV,MAAM,CAAC,IAAI,CACX,AAED,AAAA,yBAAyB,AAAC,CACzB,OAAO,CAAC,YAAY,CACpB,AAGD,AAAA,MAAM,CAAC,mBAAmB,AAAC,CAC1B,UAAU,CAAE,KAAK,CACjB,OAAO,CAAE,CAAC,CACV,AACD,AAAA,OAAO,CAAC,mBAAmB,CAC3B,OAAO,CAAC,mBAAmB,CAC3B,OAAO,CAAC,mBAAmB,AAAC,CAC3B,MAAM,CAAE,gBAAgB,CACxB,AAED,AAAA,eAAe,AAAC,CACf,MAAM,CAAE,GAAG,CACX,UAAU,CAAC,GAAG,CACd,aAAa,CAAC,GAAG,CACjB,MAAM,CAAE,UAAU,CAClB,2BAA2B,CAAE,WAAW,CACxC,AACD,AAAA,eAAe,AAAC,CACf,KAAK,CAAE,GAAG,CACV,WAAW,CAAC,GAAG,CACf,YAAY,CAAC,GAAG,CAChB,MAAM,CAAE,UAAU,CAClB,2BAA2B,CAAE,WAAW,CACxC,AACD,AAAA,oBAAoB,AAAC,CACpB,QAAQ,CAAE,QAAQ,CAClB,QAAQ,CAAE,MAAM,CAChB,OAAO,CAAE,KAAK,CACd,AAED,AAAA,eAAe,AAAC,CACf,QAAQ,CAAE,QAAQ,CAClB,AAED,AAAA,0BAA0B,CAC1B,0BAA0B,AAAC,CAC1B,QAAQ,CAAC,QAAQ,CACjB,SAAS,CAAE,GAAG,CACd,gBAAgB,CAAE,UAAU,CAC5B,MAAM,CAAE,SAAS,CACjB,YAAY,CAAE,yDAAyD,CACvE,MAAM,CAAE,CAAC,CACT,AAED,AAAA,0BAA0B,CAAC,MAAM,CAAE,eAAe,CAAC,mBAAmB,AAAC,CACtE,QAAQ,CAAC,MAAM,CACf,QAAQ,CAAC,QAAQ,CACjB,GAAG,CAAC,GAAG,CACP,AAED,AAAA,0BAA0B,CAAC,MAAM,CAAE,eAAe,CAAC,mBAAmB,AAAC,CACtE,QAAQ,CAAC,QAAQ,CACjB,IAAI,CAAC,GAAG,CACR,AAED,AAAA,oBAAoB,CACpB,iCAAiC,CACjC,iCAAiC,AAAC,CACjC,SAAS,CAAE,GAAG,CACd,gBAAgB,CAAE,YAAY,CAC9B,YAAY,CAAE,GAAG,CACjB,OAAO,CAAE,GAAG,CACZ,MAAM,CAAE,iBAAiB,CACzB,MAAM,CAAE,CAAC,CACT,AAED,AAAA,0BAA0B,CAAE,iCAAiC,AAAC,CAC7D,MAAM,CAAE,UAAU,CAClB,AAED,AAAA,0BAA0B,CAAE,iCAAiC,AAAC,CAC7D,MAAM,CAAE,UAAU,CAClB,AAED,AAAA,QAAQ,CAAC,eAAe,AAAC,CACxB,UAAU,CAAC,4BAA4B,CACvC,aAAa,CAAC,4BAA4B,CAC1C,AACD,AAAA,QAAQ,CAAC,eAAe,AAAC,CACxB,WAAW,CAAC,4BAA4B,CACxC,YAAY,CAAC,4BAA4B,CACzC,AAID,AAAA,iBAAiB,AAAC,CACjB,OAAO,CAAE,KAAK,CACd,QAAQ,CAAE,IAAI,CACd,0BAA0B,CAAE,KAAK,CACjC,AAED,AAAA,4BAA4B,AAAC,CAK5B,QAAQ,CAAE,MAAM,CAChB,AAED,AAAA,wBAAwB,CAAC,iBAAiB,CAC1C,sBAAsB,CAAC,eAAe,AAAC,CACtC,YAAY,CAAE,GAAG,CACjB,AAID,AAAA,eAAe,AAAC,CACf,OAAO,CAAE,KAAK,CACd,QAAQ,CAAE,MAAM,CAChB,AACD,AAAA,cAAc,AAAC,CACd,MAAM,CAAE,cAAc,CACtB,AACD,AAAA,oBAAoB,CAAE,mBAAmB,AAAC,CACzC,MAAM,CAAE,OAAO,CACf,2BAA2B,CAAE,WAAW,CACxC,AACD,AAAA,6BAA6B,CAAE,+BAA+B,CAC9D,4BAA4B,CAAE,8BAA8B,AAAC,CAE5D,MAAM,CAAE,OAAO,CACf,AACD,AAAA,oBAAoB,CAAC,CAAC,AAAC,CACtB,cAAc,CAAE,MAAM,CACtB,AACD,AAAA,eAAe,CAAC,oBAAoB,CAAE,cAAc,CAAC,oBAAoB,AAAC,CAEzE,OAAO,CAAE,IAAI,CACb,AACD,AAAA,QAAQ,CAAC,eAAe,CAAC,oBAAoB,CAAE,QAAQ,CAAC,cAAc,CAAC,oBAAoB,AAAC,CAE3F,OAAO,CAAE,MAAM,CACf,WAAW,CAAE,SAAS,CACtB,AACD,AAAA,QAAQ,CAAC,eAAe,CAAC,eAAe,CAAE,QAAQ,CAAC,cAAc,CAAC,eAAe,AAAC,CAEjF,OAAO,CAAE,IAAI,CACb,AACD,AAAA,6BAA6B,CAAC,eAAe,CAAE,6BAA6B,CAAC,oBAAoB,CACjG,+BAA+B,CAAC,eAAe,CAAE,+BAA+B,CAAC,oBAAoB,CACrG,4BAA4B,CAAC,eAAe,CAAE,4BAA4B,CAAC,oBAAoB,CAC/F,8BAA8B,CAAC,eAAe,CAAE,8BAA8B,CAAC,oBAAoB,AAAC,CAEnG,OAAO,CAAE,eAAe,CACxB,AAED,AAAA,OAAO,CAAC,2BAA2B,CACnC,OAAO,CAAC,eAAe,CAAC,oBAAoB,AAAC,CAE5C,IAAI,CAAE,CAAC,CACP,AAOD,AAAA,kBAAkB,AAAC,CAClB,MAAM,CAAE,cAAc,CACtB,UAAU,CAAE,IAAI,CAChB,QAAQ,CAAE,QAAQ,CAClB,AAED,AAAA,kBAAkB,CAAC,kBAAkB,AAAC,CAIrC,OAAO,CAAE,eAAe,CACxB,QAAQ,CAAE,QAAQ,CAClB,QAAQ,CAAE,MAAM,CAChB,OAAO,CAAE,CAAC,CACV,eAAe,CAAE,QAAQ,CACzB,AACD,AAAA,OAAO,CAAC,kBAAkB,CAAC,kBAAkB,CAC7C,OAAO,CAAC,kBAAkB,CAAC,kBAAkB,CAC7C,YAAY,CAAC,kBAAkB,CAAC,kBAAkB,AAAC,CAIlD,OAAO,CAAE,CAAC,CACV,MAAM,CAAE,eAAe,CACvB,AAED,AAAA,kBAAkB,CAAC,iBAAiB,AAAC,CAEpC,SAAS,CAAE,GAAG,CACd,cAAc,CAAE,MAAM,CACtB,UAAU,CAAE,MAAM,CAClB,UAAU,CAAE,IAAI,CAChB,AACD,AAAA,kBAAkB,CAAC,gBAAgB,AAAC,CAEnC,OAAO,CAAE,GAAG,CACZ,MAAM,CAAE,cAAc,CACtB,MAAM,CAAE,OAAO,CACf,MAAM,CAAE,OAAO,CACf,SAAS,CAAE,GAAG,CACd,AACD,AAAA,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,AAAC,CAC7C,cAAc,CAAE,CAAC,CACjB,AACD,AAAA,kBAAkB,CAAC,wBAAwB,AAAC,CAE3C,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,AACD,AAAA,kBAAkB,CAAC,EAAE,AAAC,CACpB,OAAO,CAAE,CAAC,CACX,AACD,AAAA,kBAAkB,CAAC,iBAAiB,AAAA,MAAM,CAAC,gBAAgB,AAAC,CAE3D,MAAM,CAAE,cAAc,CACtB,AAED,AAAA,kBAAkB,CAAC,iBAAiB,AAAA,OAAO,CAAC,gBAAgB,CAC5D,kBAAkB,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,gBAAgB,AAAC,CAChF,MAAM,CAAE,cAAc,CACtB,MAAM,CAAE,KAAK,CACb,AAGD,AAAA,QAAQ,CAAC,kBAAkB,CAAC,kBAAkB,CAC9C,QAAQ,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,AAAC,CAEhD,gBAAgB,CAAE,sBAAsB,CACxC,AAID,AAAA,wBAAwB,AAAC,CACxB,MAAM,CAAC,iBAAiB,CACxB,UAAU,CAAC,YAAY,CACvB,AACD,AAAA,oBAAoB,AAAC,CACpB,MAAM,CAAE,OAAO,CACf,2BAA2B,CAAE,WAAW,CACxC,AACD,AAAA,4BAA4B,AAAC,CAC5B,MAAM,CAAE,OAAO,CACf,AAGD,AAAA,oBAAoB,CAAC,YAAY,CACjC,oBAAoB,CAAC,cAAc,AAAC,CACnC,OAAO,CAAE,IAAI,CACb,SAAS,CAAE,MAAM,CACjB,WAAW,CAAE,iBAAiB,CAC9B,AAED,AAAA,QAAQ,CAAC,oBAAoB,CAAC,YAAY,CAC1C,QAAQ,CAAC,4BAA4B,CAAC,cAAc,AAAC,CACpD,OAAO,CAAE,MAAM,CACf,AAED,AAAA,QAAQ,CAAC,4BAA4B,CAAC,YAAY,AAAC,CAClD,OAAO,CAAE,IAAI,CACb,AAED,AAAA,2BAA2B,AAAC,CAE3B,QAAQ,CAAE,MAAM,CAChB,AAID,AAAA,uBAAuB,CAAC,KAAK,AAAC,CAC7B,KAAK,CAAE,IAAI,CACX,KAAK,CAAE,IAAI,CACX,AACD,AAAA,uBAAuB,CAAC,EAAE,CAAE,uBAAuB,CAAC,EAAE,AAAC,CACtD,OAAO,CAAE,CAAC,CACV,cAAc,CAAE,MAAM,CACtB,AAED,AAAA,4BAA4B,AAAC,CAC5B,UAAU,CAAE,MAAM,CAClB,AACD,AAAA,4BAA4B,AAAC,CAC5B,KAAK,CAAE,IAAI,CACX,AACD,AAAA,4BAA4B,AAAC,CAC5B,KAAK,CAAE,KAAK,CACZ,AAED,AAAA,uBAAuB,AAAC,CACpB,WAAW,CAAE,MAAM,CACtB,AAED,AAAA,sBAAsB,AAAC,CACtB,MAAM,CAAC,YAAY,CACnB,AAED,AAAA,0BAA0B,AAAC,CAC1B,MAAM,CAAC,YAAY,CACnB,AAED,AAAA,8BAA8B,AAAC,CAC9B,cAAc,CAAE,MAAM,CACtB,AAED,AAAA,8BAA8B,CAC9B,0BAA0B,CAC1B,wBAAwB,CACxB,0BAA0B,CAC1B,sBAAsB,AAAC,CACtB,MAAM,CAAE,OAAO,CACf,2BAA2B,CAAE,WAAW,CACxC,AAED,AAAA,0BAA0B,AAAC,CAC1B,KAAK,CAAE,IAAI,CACX,eAAe,CAAE,YAAY,CAC7B,MAAM,CAAE,OAAO,CACf,AAED,AAAA,YAAY,AAAC,CAEV,QAAQ,CAAE,QAAQ,CAClB,MAAM,CAAE,GAAG,CACX,QAAQ,CAAE,MAAM,CAChB,UAAU,CAAE,MAAM,CACpB,AAID,AAAA,uBAAuB,CAAC,wBAAwB,AAAC,CAChD,UAAU,CAAC,MAAM,CACjB,AAID,AAAA,UAAU,AAAC,CACV,MAAM,CAAC,eAAe,CACtB,gBAAgB,CAAC,KAAK,CACtB,AACD,AAAA,eAAe,AAAC,CACf,eAAe,CAAC,QAAQ,CACxB,YAAY,CAAC,CAAC,CACd,gBAAgB,CAAC,KAAK,CACtB,AAGD,AAAA,UAAU,CAAC,eAAe,CAAC,EAAE,CAAA,AAAA,OAAC,CAAQ,GAAG,AAAX,CAAY,CACzC,YAAY,CAAC,MAAM,CACnB,AAED,AAAA,cAAc,AAAC,CACd,UAAU,CAAE,IAAI,CAChB,WAAW,CAAE,MAAM,CACnB,OAAO,CAAC,SAAS,CACjB,MAAM,CAAC,OAAO,CACd,2BAA2B,CAAE,WAAW,CACxC,AAOD,AAAA,cAAc,AAAA,MAAM,AAAC,CACpB,OAAO,CAAE,IACV,CAAC,AAED,AAAA,iBAAiB,CAAC,mBAAmB,CACrC,sBAAsB,AAAC,CAQtB,gBAAgB,CAAC,KAAK,CACtB,KAAK,CAAC,KAAK,CACX,AAED,AAAA,kBAAkB,CAAE,gBAAgB,AAAC,CACpC,iBAAiB,CAAE,SAAS,CAC5B,AAED,AAAA,sBAAsB,CAAC,CAAC,AAAC,CAExB,OAAO,CAAC,GAAG,CACX,MAAM,CAAC,OAAO,CACd,AACD,AAAA,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CACtC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CACxC,MAAM,CAAC,sBAAsB,CAAC,CAAC,AAAC,CAC/B,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,iBAAiB,CACzB,AAED,AAAA,mBAAmB,AAAC,CACnB,cAAc,CAAE,MAAM,CACtB,AAED,AAAA,QAAQ,CAAC,sBAAsB,AAAC,CAC/B,MAAM,CAAE,2BAA2B,CACnC,AAED,AAAA,QAAQ,CAAC,sBAAsB,CAAC,mBAAmB,AAAC,CACnD,YAAY,CAAE,GAAG,CACjB,YAAY,CAAE,KAAK,CACnB,AACD,AAAA,OAAO,CAAC,QAAQ,CAAC,mBAAmB,AAAC,CACpC,QAAQ,CAAC,MAAM,CACf,AAED,AAAA,oBAAoB,AAAC,CACpB,OAAO,CAAE,IAAI,CACb,AACD,AAAA,QAAQ,CAAC,oBAAoB,AAAC,CAC7B,OAAO,CAAE,MAAM,CACf,AAED,AAAA,mBAAmB,CAAC,EAAE,AAAC,CACtB,MAAM,CAAE,CAAC,CACT,OAAO,CAAE,CAAC,CACV,AAGD,AAAA,sBAAsB,AAAC,CACtB,MAAM,CAAE,GAAG,CACX,MAAM,CAAE,CAAC,CACT,UAAU,CAAC,GAAG,CACd,SAAS,CAAE,GAAG,CACd,AAED,AAAA,yBAAyB,AAAC,CACzB,MAAM,CAAE,GAAG,CACX,MAAM,CAAE,CAAC,CACT,aAAa,CAAC,GAAG,CACjB,SAAS,CAAE,GAAG,CACd,AAGD,AAAA,sBAAsB,AAAC,CACtB,OAAO,CAAE,IAAI,CACb,UAAU,CAAE,MAAM,CAClB,AACD,AAAA,QAAQ,CAAC,sBAAsB,AAAC,CAC/B,OAAO,CAAE,MAAM,CACf,AACD,AAAA,4BAA4B,CAAC,sBAAsB,CACnD,0BAA0B,CAAC,sBAAsB,AAAC,CACjD,UAAU,CAAE,OAAO,CACnB,AACD,AAAA,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,AAAC,CAE5C,MAAM,CAAE,CAAC,CACT,AAID,AAAA,qBAAqB,CAAC,yBAAyB,CAAC,CAAC,AAAC,CACjD,MAAM,CAAE,OAAO,CACf,AAcD,AAAA,kBAAkB,AAAC,CACf,OAAO,CAAE,CAAC,CACV,QAAQ,CAAE,OAAO,CACpB,AACD,AAAA,OAAO,CAAC,kBAAkB,AAAC,CAExB,QAAQ,CAAE,MAAM,CAElB,AACD,AAAA,0BAA0B,AAAC,CAC1B,KAAK,CAAE,IAAI,CACX,AAED,AAAA,6BAA6B,CAC7B,0BAA0B,CAC1B,2BAA2B,CAC3B,4BAA4B,AAAC,CACzB,OAAO,CAAE,CAAC,CACb,QAAQ,CAAE,kBAAkB,CAC5B,AAED,AAAA,mBAAmB,AAAC,CAChB,OAAO,CAAE,CAAC,CACb,AACD,AAAA,kCAAkC,CAClC,+BAA+B,CAC/B,gCAAgC,CAChC,iCAAiC,AAAC,CACjC,OAAO,CAAC,CAAC,CACT,QAAQ,CAAE,MAAM,CAChB,MAAM,CAAE,eAAe,CACvB,AACD,AAAA,eAAe,AAAC,CACf,KAAK,CAAE,OAAO,CACd,OAAO,CAAE,KAAK,CACd,QAAQ,CAAE,QAAQ,CACf,UAAU,CAAE,IAAI,CAChB,OAAO,CAAE,CAAC,CACb,AACD,AAAA,oBAAoB,AAAC,CACpB,QAAQ,CAAE,MAAM,CACb,OAAO,CAAE,CAAC,CACb,AAED,AAAA,QAAQ,CAAC,eAAe,CAAC,GAAG,AAAC,CAE5B,OAAO,CAAE,IAAI,CACb,AAED,AAAA,0BAA0B,AAAC,CAC1B,aAAa,CAAE,eAAe,CAC9B,AACD,AAAA,+BAA+B,AAAC,CAC/B,UAAU,CAAE,CAAC,CACb,AAED,AAAA,2BAA2B,AAAC,CAC3B,YAAY,CAAE,eAAe,CAC7B,KAAK,CAAE,IAAI,CACX,AACD,AAAA,gCAAgC,AAAC,CAChC,WAAW,CAAE,CAAC,CACd,AAED,AAAA,6BAA6B,AAAC,CAC7B,UAAU,CAAE,eAAe,CAC3B,AACD,AAAA,kCAAkC,AAAC,CAClC,aAAa,CAAE,CAAC,CAChB,AAED,AAAA,4BAA4B,AAAC,CAC5B,WAAW,CAAE,eAAe,CAC5B,KAAK,CAAE,IAAI,CACX,AACD,AAAA,iCAAiC,AAAC,CACjC,YAAY,CAAE,CAAC,CACf,AAED,AAAA,GAAG,AAAA,iBAAiB,CAAE,MAAM,CAAC,GAAG,AAAA,iBAAiB,AAAC,CACjD,MAAM,CAAE,IAAI,CACZ,AAED,AAAA,SAAS,AAAC,CACT,QAAQ,CAAC,QAAQ,CACjB,MAAM,CAAC,OAAO,CACd,2BAA2B,CAAE,WAAW,CACxC,WAAW,CAAC,MAAM,CAClB,OAAO,CAAC,CAAC,CACT,AACD,AAAA,SAAS,CAAC,CAAC,AAAC,CAEX,cAAc,CAAE,MAAM,CACtB,AACD,AAAA,gBAAgB,AAAC,CAChB,MAAM,CAAE,OAAO,CACf,AAED,AAAA,0BAA0B,CAAC,SAAS,AAAC,CACpC,GAAG,CAAE,GAAG,CACR,AACD,AAAA,6BAA6B,CAAC,SAAS,AAAC,CACvC,GAAG,CAAE,IAAI,CACT,AACD,AAAA,2BAA2B,CAAC,SAAS,AAAC,CACrC,IAAI,CAAE,GAAG,CACT,AACD,AAAA,4BAA4B,CAAC,SAAS,AAAC,CACtC,IAAI,CAAE,IAAI,CACV,AAGD,AAAA,0BAA0B,CAAC,SAAS,CACpC,6BAA6B,CAAC,SAAS,AAAC,CAEvC,OAAO,CAAC,YAAY,CACpB,AAED,AAAA,eAAe,AAAC,CACf,OAAO,CAAE,EAAE,CACX,AAED,AAAA,uBAAuB,CAAC,eAAe,AAAC,CACvC,OAAO,CAAE,IAAI,CACb,AAGD,AAAA,oBAAoB,AAAC,CACpB,WAAW,CAAE,GAAG,CAChB,AAED,AAAA,kBAAkB,AAAC,CAClB,OAAO,CAAC,IAAI,CACZ,AAED,AAAA,SAAS,CAAC,SAAS,AAAC,CAInB,UAAU,CAAE,IAAI,CAChB,OAAO,CAAE,YAAY,CACrB,AACD,AAAA,YAAY,AAAC,CAEZ,OAAO,CAAE,IAAI,CACb,AACD,AAAA,OAAO,CAAC,SAAS,CAAC,YAAY,AAAC,CAE9B,OAAO,CAAE,MAAM,CACf,MAAM,CAAE,IAAI,CACZ,KAAK,CAAE,GAAG,CACV,AAID,AAAA,QAAQ,CAAC,oBAAoB,AAAC,CAC7B,gBAAgB,CAAE,eAAe,CACjC,KAAK,CAAE,eAAe,CACtB,MAAM,CAAE,eAAe,CACvB,AAED,AAAA,QAAQ,CAAC,kBAAkB,AAAC,CAC3B,OAAO,CAAE,MAAM,CACf,AAED,AAAA,aAAa,CACb,0BAA0B,CAC1B,8BAA8B,AAAC,CAI3B,MAAM,CAAE,eAAe,CAC1B,AAGD,AAAA,8BAA8B,AAAC,CAC9B,MAAM,CAAE,qBAAqB,CAC7B,MAAM,CAAE,IAAI,CACZ,AAED,AAAA,QAAQ,CAAC,8BAA8B,CACvC,OAAO,CAAC,8BAA8B,AAAC,CAEtC,MAAM,CAAE,IAAI,CACZ,AAED,AAAA,mCAAmC,CACnC,QAAQ,CAAC,mCAAmC,CAC5C,OAAO,CAAC,mCAAmC,AAAC,CAE3C,gBAAgB,CAAE,OAAO,CACzB,MAAM,CAAE,eAAe,CACvB,AAED,AAAA,sCAAsC,AAAC,CACtC,MAAM,CAAE,OAAO,CACf,AAGD,AAAA,UAAU,AAAC,CACV,QAAQ,CAAE,IAAI,CACd,2BAA2B,CAAE,WAAW,CACxC,AAED,AAAA,mBAAmB,AAAC,CACnB,KAAK,CAAE,IAAI,CACX,AAED,AAAA,gBAAgB,AAAC,CAEhB,KAAK,CAAE,IAAI,CACX,AAED,AAAA,aAAa,CAAE,iBAAiB,AAAC,CAChC,WAAW,CAAE,MAAM,CACnB,AAED,AAAA,MAAM,CAAC,eAAe,AAAA,MAAM,AAAC,CAE5B,OAAO,CAAE,gBAAgB,CACzB,AAED,AAAA,aAAa,CAAC,GAAG,AAAC,CAEjB,cAAc,CAAE,MAAM,CACtB,AAED,AAAA,iBAAiB,AAAC,CACd,MAAM,CAAE,OAAO,CAClB,AAED,AAAA,iBAAiB,AAAC,CACjB,OAAO,CAAE,IAAI,CACb,AAED,AAAA,QAAQ,CAAC,iBAAiB,AAAC,CAC1B,OAAO,CAAE,MAAM,CACf,YAAY,CAAE,IAAI,CAClB,aAAa,CAAE,IAAI,CACnB,WAAW,CAAE,SAAS,CACtB,YAAY,CAAE,KAAK,CACnB,YAAY,CAAE,IAAI,CAClB,MAAM,CAAE,OAAO,CACf,AAED,AAAA,eAAe,AAAC,CACf,MAAM,CAAE,KAAK,CACb,AAID,AAAA,YAAY,AAAC,CACZ,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,GAAG,CACZ,QAAQ,CAAE,MAAM,CAChB,AAED,AAAA,oBAAoB,AAAC,CACpB,MAAM,CAAE,IAAI,CACZ,AACD,AAAA,iBAAiB,CAAC,oBAAoB,AAAC,CACtC,MAAM,CAAC,OAAO,CACd,AACD,AAAA,qBAAqB,AAAC,CACrB,MAAM,CAAE,OAAO,CACf,2BAA2B,CAAE,WAAW,CACxC,AACD,AAAA,uBAAuB,AAAC,CACvB,0BAA0B,CAAE,KAAK,CACjC,AACD,AAAA,2BAA2B,AAAC,CAC3B,QAAQ,CAAE,QAAQ,CAClB,IAAI,CAAE,CAAC,CACP,GAAG,CAAE,CAAC,CACN,OAAO,CAAE,GAAG,CACZ,OAAO,CAAE,IAAI,CACb,UAAU,CAAE,sBAAsB,CAClC,AAED,AAAA,oBAAoB,AAAC,CACpB,UAAU,CAAE,IAAI,CAChB,OAAO,CAAE,GAAG,CACZ,AAED,AAAA,MAAM,CAAC,oBAAoB,AAAC,CAC3B,MAAM,CAAE,iBAAiB,CACzB,AAGD,AAAA,QAAQ,CAAC,4BAA4B,CACrC,QAAQ,CAAC,YAAY,AAAC,CACrB,OAAO,CAAE,YAAY,CACrB,gBAAgB,CAAE,gBAAgB,CAClC,AAED,AAAA,YAAY,CAAC,UAAU,AAAC,CACvB,OAAO,CAAC,IAAI,CAEZ,QAAQ,CAAC,QAAQ,CACjB,AAED,AAAA,QAAQ,CAAC,YAAY,CAAC,UAAU,AAAC,CAChC,OAAO,CAAC,MAAM,CACd,AAID,AAAA,oBAAoB,AAAC,CACpB,OAAO,CAAC,EAAE,CACV,QAAQ,CAAC,mBAAmB,CAC5B,OAAO,CAAC,KAAK,CACb,cAAc,CAAC,MAAM,CACrB,AAED,AAAA,qBAAqB,AAAC,CACrB,KAAK,CAAC,CAAC,CACP,AACD,AAAA,qBAAqB,AAAC,CACrB,KAAK,CAAC,GAAG,CACT,AAED,AAAA,QAAQ,CAAC,GAAG,AAAA,uBAAuB,CACnC,uBAAuB,AAAC,CACvB,MAAM,CAAC,CAAC,CACR,OAAO,CAAC,CAAC,CACT,QAAQ,CAAC,mBAAmB,CAC5B,MAAM,CAAC,cAAc,CACrB,KAAK,CAAC,CAAC,CACP,MAAM,CAAC,CAAC,CACR,MAAM,CAAE,OAAO,CACf,2BAA2B,CAAE,WAAW,CACxC,AACD,AAAA,YAAY,CAAC,QAAQ,CAAC,uBAAuB,AAAC,CAC7C,SAAS,CAAE,CAAC,CACZ,AACD,AAAA,OAAO,CAAC,uBAAuB,AAAC,CAC/B,QAAQ,CAAE,MAAM,CAChB,AACD,AAAA,OAAO,CAAC,QAAQ,CAAC,uBAAuB,AAAC,CACxC,QAAQ,CAAE,OAAO,CACjB,AACD,AAAA,QAAQ,CAAC,mBAAmB,CAAC,uBAAuB,AAAC,CACpD,MAAM,CAAC,cAAc,CACrB,MAAM,CAAC,GAAG,CACV,KAAK,CAAC,GAAG,CACT,AAED,AAAA,wBAAwB,AAAC,CACxB,GAAG,CAAC,IAAI,CACR,KAAK,CAAE,IAAI,CACX,AAED,AAAA,wBAAwB,AAAC,CACxB,IAAI,CAAC,GAAG,CACR,GAAG,CAAC,IAAI,CACR,cAAc,CAAC,GAAG,CAClB,AAED,AAAA,eAAe,AAAC,CACf,YAAY,CAAC,KAAK,CAClB,YAAY,CAAC,KAAK,CAClB,MAAM,CAAE,OAAO,CACf,2BAA2B,CAAE,WAAW,CACxC,AAED,AAAA,yBAAyB,AAAC,CACzB,QAAQ,CAAC,QAAQ,CACjB,MAAM,CAAC,IAAI,CACX,OAAO,CAAC,CAAC,CACT,AAED,AAAA,yBAAyB,AAAC,CACzB,QAAQ,CAAC,QAAQ,CACjB,OAAO,CAAC,CAAC,CACT,AAED,AAAA,gBAAgB,AAAC,CAChB,MAAM,CAAC,GAAG,CACV,YAAY,CAAC,KAAK,CAClB,AAED,AAAA,gBAAgB,AAAC,CAChB,KAAK,CAAC,GAAG,CACT,YAAY,CAAC,KAAK,CAClB,AAED,AAAA,uBAAuB,AAAC,CACvB,gBAAgB,CAAC,GAAG,CACpB,OAAO,CAAC,CAAC,CACT,AAED,AAAA,wBAAwB,AAAC,CACxB,QAAQ,CAAC,iBAAiB,CAC1B,MAAM,CAAC,CAAC,CACR,cAAc,CAAC,GAAG,CAClB,UAAU,CAAC,IAAI,CACf,AAED,AAAA,wBAAwB,AAAC,CACxB,QAAQ,CAAC,mBAAmB,CAC5B,KAAK,CAAC,CAAC,CACP,cAAc,CAAC,MAAM,CACrB,QAAQ,CAAC,OAAO,CAChB,AAED,AAAA,wBAAwB,AAAC,CACxB,QAAQ,CAAC,MAAM,CACf,gBAAgB,CAAC,WAAW,CAC5B,OAAO,CAAC,CAAC,CACT,AAED,AAAA,yBAAyB,AAAC,CACzB,MAAM,CAAC,IAAI,CACX,UAAU,CAAC,IAAI,CACf,AAED,AAAA,yBAAyB,AAAC,CACzB,KAAK,CAAC,eAAe,CACrB,AAGD,AAAA,kBAAkB,AAAC,CAClB,QAAQ,CAAC,MAAM,CACf,OAAO,CAAC,CAAC,CACT,AAED,AAAA,mBAAmB,AAAC,CACnB,KAAK,CAAC,GAAG,CACT,MAAM,CAAC,GAAG,CACV,YAAY,CAAC,KAAK,CAClB,AAED,AAAA,mBAAmB,AAAC,CACnB,KAAK,CAAC,GAAG,CACT,MAAM,CAAC,GAAG,CACV,YAAY,CAAC,KAAK,CAClB,AAED,AAAA,wBAAwB,CACxB,sBAAsB,AAAC,CACtB,gBAAgB,CAAC,GAAG,CACpB,AAED,AAAA,qBAAqB,CACrB,uBAAuB,AAAC,CACvB,gBAAgB,CAAC,WAAW,CAC5B,AAED,AAAA,sBAAsB,AAAC,CACtB,UAAU,CAAC,MAAM,CACjB,AAED,AAAA,uBAAuB,CACvB,uBAAuB,AAAC,CACvB,QAAQ,CAAE,QAAQ,CAClB,AAED,AAAA,uBAAuB,AAAC,CACvB,KAAK,CAAE,IAAI,CACX,AAED,AAAA,uBAAuB,AAAC,CACvB,MAAM,CAAE,IAAI,CACZ,WAAW,CAAE,MAAM,CACnB,AAED,AAAA,kBAAkB,AAAC,CAClB,WAAW,CAAC,SAAS,CACrB,MAAM,CAAC,CAAC,CACR,OAAO,CAAC,CAAC,CACT,OAAO,CAAC,KAAK,CACb,AAED,AAAA,QAAQ,CAAC,uBAAuB,AAAC,CAChC,UAAU,CAAC,kBAAkB,CAC7B,AAED,AAAA,2BAA2B,AAAC,CAC3B,UAAU,CAAC,MAAM,CACjB,MAAM,CAAC,CAAC,CACR,AACD,AAAA,2BAA2B,CAAC,CAAC,AAAC,CAC7B,MAAM,CAAE,OAAO,CACf,2BAA2B,CAAE,WAAW,CACxC,AAED,AAAA,YAAY,CAAC,gBAAgB,AAAC,CAC7B,OAAO,CAAC,CAAC,CACT,OAAO,CAAC,KAAK,CACb,AAED,AAAA,mBAAmB,AAAC,CACnB,QAAQ,CAAC,QAAQ,CACjB,QAAQ,CAAC,OAAO,CAChB,AAED,AAAA,oBAAoB,AAAC,CACpB,MAAM,CAAC,IAAI,CACX,WAAW,CAAC,CAAC,CACb,KAAK,CAAC,IAAI,CACV,UAAU,CAAC,IAAI,CACf,AAED,AAAA,SAAS,CAAC,oBAAoB,AAAC,CAC9B,WAAW,CAAC,EAAE,CACd,AAED,AAAA,MAAM,CAAC,oBAAoB,AAAC,CAC3B,WAAW,CAAC,MAAM,CAClB,AAED,AAAA,SAAS,CAAC,oBAAoB,AAAC,CAC9B,MAAM,CAAC,SAAS,CAChB,AAED,AAAA,cAAc,AAAC,CACd,QAAQ,CAAC,QAAQ,CACjB,MAAM,CAAC,eAAe,CACtB,WAAW,CAAC,CAAC,CACb,MAAM,CAAC,IAAI,CACX,AAED,AAAA,eAAe,AAAC,CACf,KAAK,CAAC,CAAC,CACP,gBAAgB,CAAC,YAAY,CAC7B,mBAAmB,CAAC,YAAY,CAChC,iBAAiB,CAAC,YAAY,CAC9B,AAED,AAAA,wBAAwB,AAAC,CACxB,QAAQ,CAAC,QAAQ,CACjB,AAED,AAAA,yBAAyB,AAAC,CACzB,UAAU,CAAC,MAAM,CACjB,OAAO,CAAC,YAAY,CACpB,AAED,AAAA,gBAAgB,AAAC,CAChB,QAAQ,CAAC,QAAQ,CACjB,IAAI,CAAC,IAAI,CACT,AAED,AAAA,gBAAgB,AAAC,CAEhB,aAAa,CAAE,QAAQ,CACvB,WAAW,CAAE,MAAM,CACnB,QAAQ,CAAE,MAAM,CAChB,AAED,AAAA,eAAe,AAAC,CACf,MAAM,CAAC,CAAC,CACR,kBAAkB,CAAC,YAAY,CAC/B,mBAAmB,CAAC,YAAY,CAChC,iBAAiB,CAAC,YAAY,CAC9B,KAAK,CAAC,IAAI,CACV,IAAI,CAAC,CAAC,CACN,AAED,AAAA,MAAM,CAAC,yBAAyB,AAAC,CAChC,UAAU,CAAC,MAAM,CACjB,AAED,AAAA,QAAQ,CAAC,oBAAoB,CAC7B,QAAQ,CAAC,oBAAoB,AAAC,CAC7B,OAAO,CAAC,GAAG,CACX,AACD,AAAA,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,eAAe,CACpD,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,eAAe,AAAC,CACpD,MAAM,CAAE,iBAAiB,CACzB,AAGD,AAAA,QAAQ,CAAC,YAAY,CAAC,2BAA2B,CAAC,GAAG,AAAC,CACrD,WAAW,CAAE,SAAS,CACtB,SAAS,CAAE,GAAG,CACd,WAAW,CAAE,GAAG,CAChB,MAAM,CAAE,IAAI,CACZ,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,KAAK,CACb,AAGD,AAAA,QAAQ,CAAC,oBAAoB,CAAC,gBAAgB,CAC9C,QAAQ,CAAC,SAAS,CAAC,SAAS,AAAC,CAC5B,OAAO,CAAE,iBAAiB,CAC1B,AACD,AAAA,QAAQ,CAAC,YAAY,CAAC,gBAAgB,AAAC,CACtC,OAAO,CAAE,uBAAuB,CAChC,AAGD,AAAA,cAAc,AAAC,CACd,KAAK,CAAC,IAAI,CACV,UAAU,CAAE,IAAI,CAChB,AACD,AAAA,cAAc,CAAA,AAAA,IAAC,AAAA,CAAM,CACpB,KAAK,CAAC,IAAI,CACV,AACD,AAAA,MAAM,CAAC,kBAAkB,AAAC,CACzB,KAAK,CAAC,IAAI,CACV,AAED,AAAA,uBAAuB,AAAC,CAEvB,MAAM,CAAE,IAAI,CACZ,AAOD,AAAA,sBAAsB,AAAC,CACtB,MAAM,CAAE,IAAI,CACZ,KAAK,CAAE,GAAG,CACV,OAAO,CAAE,KAAK,CACd,MAAM,CAAE,CAAC,CACT,AAGD,AAAA,oBAAoB,AAAC,CACpB,QAAQ,CAAC,QAAQ,CAEjB,GAAG,CAAE,qEAAqE,CAC1E,AAED,AAAA,YAAY,AAAC,CACZ,OAAO,CAAE,KAAK,CACd,AAED,AAAA,oBAAoB,CACpB,oBAAoB,AAAC,CACpB,KAAK,CAAE,IAAI,CACX,AAID,AAAA,gBAAgB,AAAC,CAChB,gBAAgB,CAAE,KAAK,CACvB,AACD,AAAA,oBAAoB,AAAC,CACpB,MAAM,CAAC,OAAO,CACd,2BAA2B,CAAE,WAAW,CACxC,AACD,AAAA,yBAAyB,AAAC,CACzB,gBAAgB,CAAC,IAAI,CACrB,KAAK,CAAC,KAAK,CACX,AACD,AAAA,4BAA4B,AAAC,CAC5B,WAAW,CAAC,IAAI,CAChB,KAAK,CAAC,IAAI,CACV,gBAAgB,CAAC,OAAO,CACxB,AACD,AAAA,4BAA4B,AAAC,CAC5B,KAAK,CAAC,IAAI,CACV,eAAe,CAAC,YAAY,CAC5B,AAED,AAAA,yBAAyB,AAAC,CACzB,UAAU,CAAC,MAAM,CACjB,MAAM,CAAC,CAAC,CACR,OAAO,CAAC,eAAe,CACvB,AAED,AAAA,oBAAoB,CACpB,sBAAsB,AAAC,CACtB,aAAa,CAAC,cAAc,CAC5B,AAED,AAAA,gBAAgB,CAAC,qBAAqB,AAAC,CACtC,UAAU,CAAE,eAAe,CAC3B,AAED,AAAA,oBAAoB,AAAC,CACpB,KAAK,CAAC,IAAI,CACV,AAED,AAAA,sBAAsB,AAAC,CACtB,KAAK,CAAC,KAAK,CACX,gBAAgB,CAAC,IAAI,CACrB,AAED,AAAA,QAAQ,CAAC,4BAA4B,CAAC,yBAAyB,AAAC,CAC/D,MAAM,CAAE,eAAe,CACvB,AACD,AAAA,QAAQ,CAAC,yBAAyB,CAAC,yBAAyB,AAAC,CAC5D,MAAM,CAAE,gBAAgB,CACxB,AAGD,AAAA,0BAA0B,AAAC,CAE1B,OAAO,CAAC,eAAe,CACvB,AACD,AAAA,QAAQ,CAAC,kBAAkB,CAAC,0BAA0B,AAAC,CACtD,OAAO,CAAC,iBAAiB,CACzB,UAAU,CAAC,MAAM,CACjB,AACD,AAAA,OAAO,CAAC,0BAA0B,CAAE,OAAO,CAAC,eAAe,CAAC,gBAAgB,AAAC,CAC5E,WAAW,CAAE,kBAAkB,CAC/B,AACD,AAAA,QAAQ,CAAC,yBAAyB,CAAC,0BAA0B,AAAC,CAC7D,OAAO,CAAE,iBAAiB,CAC1B,UAAU,CAAC,kBAAkB,CAC7B,AAED,AAAA,qBAAqB,AAAC,CACrB,OAAO,CAAC,eAAe,CACvB,AACD,AAAA,QAAQ,CAAC,qBAAqB,AAAC,CAC9B,OAAO,CAAC,iBAAiB,CACzB,AAED,AAAA,QAAQ,CAAC,oBAAoB,CAAC,sBAAsB,CACpD,QAAQ,CAAC,iBAAiB,CAAC,sBAAsB,AAAC,CACjD,OAAO,CAAC,eAAe,CACvB,AAGD,AAAA,QAAQ,CAAC,YAAY,AAAC,CACrB,eAAe,CAAE,mBAAmB,CACpC,YAAY,CAAE,GAAG,CACjB,YAAY,CAAE,KAAK,CACnB,AACD,AAAA,MAAM,CAAC,YAAY,AAAC,CACnB,cAAc,CAAE,MAAM,CACtB,AACD,AAAA,OAAO,CAAC,YAAY,CAAC,yBAAyB,CAC9C,OAAO,CAAC,YAAY,CAAC,gBAAgB,AAAC,CACrC,cAAc,CAAE,GAAG,CACnB,AACD,AAAA,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAC1C,YAAY,CAAC,aAAa,CAAC,oBAAoB,CAC/C,OAAO,CAAC,aAAa,CAAC,sBAAsB,CAC5C,OAAO,CAAC,aAAa,CAAC,wBAAwB,CAC9C,YAAY,CAAC,iBAAiB,AAAC,CAC9B,cAAc,CAAE,QAAQ,CACxB,AAED,AAAA,mBAAmB,AAAC,CACnB,UAAU,CAAE,IAAI,CAChB,SAAS,CAAE,GAAG,CACd,AAED,AAAA,mBAAmB,CAAC,gBAAgB,AAAC,CACpC,UAAU,CAAE,OAAO,CACnB,AAED,AAAA,mBAAmB,CAAC,KAAK,AAAA,gBAAgB,CACzC,qBAAqB,CAAC,KAAK,AAAA,gBAAgB,CAC3C,aAAa,CAAC,KAAK,AAAA,gBAAgB,AAAC,CACnC,UAAU,CAAE,KAAK,CACjB,AAED,AAAA,OAAO,CAAC,mBAAmB,CAAC,KAAK,AAAA,gBAAgB,CAAE,OAAO,CAAC,mBAAmB,CAAC,KAAK,AAAA,gBAAgB,CACpG,OAAO,CAAC,qBAAqB,CAAC,KAAK,AAAA,gBAAgB,CAAE,OAAO,CAAC,qBAAqB,CAAC,KAAK,AAAA,gBAAgB,CACxG,OAAO,CAAC,aAAa,CAAC,KAAK,AAAA,gBAAgB,CAAE,OAAO,CAAC,aAAa,CAAC,KAAK,AAAA,gBAAgB,AAAC,CAExF,aAAa,CAAE,cAAc,CAC7B,AAED,AAAA,aAAa,CAAC,YAAY,AAAC,CAC1B,MAAM,CAAE,CAAC,CACT,AACD,AAAA,UAAU,CAAC,aAAa,CAAC,YAAY,AAAC,CACrC,YAAY,CAAE,KAAK,CACnB,AACD,AAAA,YAAY,CAAC,oBAAoB,AAAC,CACjC,OAAO,CAAE,CAAC,CACV,WAAW,CAAE,MAAM,CACnB,UAAU,CAAE,IAAI,CAChB,YAAY,CAAE,oBAAoB,CAClC,YAAY,CAAE,GAAG,CACjB,AACD,AAAA,sBAAsB,CAAC,oBAAoB,AAAC,CAC3C,KAAK,CAAE,IAAI,CACX,AAED,AAAA,gBAAgB,CAAC,kBAAkB,AAAC,CAEnC,OAAO,CAAC,IAAI,CACZ,AACD,AAAA,OAAO,CAAC,gBAAgB,CAAC,mBAAmB,CAC5C,OAAO,CAAC,gBAAgB,CAAC,mBAAmB,AAAC,CAE5C,QAAQ,CAAE,MAAM,CAChB,AAGD,AAAA,iBAAiB,CAAC,CAAC,AACnB,CACC,cAAc,CAAE,QAAQ,CACxB,AAGD,AAAA,0BAA0B,CAAC,CAAC,AAAC,CAC5B,WAAW,CAAE,IAAI,CACjB,AAGD,AAAA,gBAAgB,AAAC,CAChB,YAAY,CAAE,GAAG,CACjB,AAGD,AAAA,iBAAiB,AAAC,CACjB,QAAQ,CAAE,iBAAiB,CAC3B,AAGD,AAAA,cAAc,CAAC,CAAC,CAChB,cAAc,CAAC,CAAC,CAChB,cAAc,CACd,cAAc,AAAC,CAEd,MAAM,CAAE,OAAO,CACf,AAGD,AAAA,YAAY,AAAC,CACT,OAAO,CAAE,GAAG,CAGf,qBAAqB,CAAE,IAAI,CAC3B,mBAAmB,CAAE,IAAI,CACzB,AACD,AAAA,kBAAkB,CAAC,YAAY,AAAC,CAE5B,OAAO,CAAE,YAAY,CACxB,AAED,AAAA,kBAAkB,CAClB,iBAAiB,AAAC,CACjB,MAAM,CAAE,cAAc,CACtB,AACD,AAAA,kBAAkB,AAAC,CACf,YAAY,CAAE,SAAS,CACvB,OAAO,CAAE,aAAa,CACzB,AACD,AAAA,iBAAiB,AAAC,CACd,YAAY,CAAE,SAAS,CACvB,OAAO,CAAE,aAAa,CACzB,AACD,AAAA,kBAAkB,CAAC,kBAAkB,AAAC,CAClC,YAAY,CAAE,SAAS,CACvB,OAAO,CAAE,aAAa,CACzB,AACD,AAAA,kBAAkB,CAAC,iBAAiB,AAAC,CACjC,YAAY,CAAE,SAAS,CACvB,OAAO,CAAE,aAAa,CACzB,AAED,AAAA,gBAAgB,AAAC,CAChB,MAAM,CAAC,OAAO,CACd,AACD,AAAA,SAAS,CAAC,sBAAsB,CAAC,KAAK,CACtC,SAAS,CAAC,KAAK,AAAA,sBAAsB,AAAC,CACrC,eAAe,CAAC,MAAM,CACtB,AACD,AAAA,aAAa,CAAC,yBAAyB,AAAC,CACvC,eAAe,CAAE,SAAS,CAC1B,AAGD,AAAA,qBAAqB,AAAC,CAClB,MAAM,CAAE,KAAK,CAChB,AAr6CD,AAAA,sBAAsB,AAs6CC,CACnB,UAAU,CAAE,IAAI,CAChB,MAAM,CAAE,cAAc,CACtB,aAAa,CAAE,GAAG,CACrB,AAzuCD,AAAA,iBAAiB,AA0uCC,CACd,UAAU,CAAE,WAAW,CACvB,QAAQ,CAAE,eAAe,CAG5B,AAKD,AAAA,oBAAoB,CAAE,2BAA2B,AAAA,IAAK,CAAA,0BAA0B,EAAG,wBAAwB,CAAE,gBAAgB,AAAC,CAC1H,0BAA0B,CAAE,KAAK,CACpC,AACD,AAAA,IAAI,CAAE,IAAI,CAAE,QAAQ,AAAC,CACjB,MAAM,CAAE,IAAI,CACf,AACD,AAAA,QAAQ,CAAG,QAAQ,AAAC,CAChB,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,IAAI,CACnB,ADjzCU,AAAL,gBAAqB,ACmzCV,CACb,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,iBAAiB,AAAC,CACd,UAAU,CAAE,KAAK,CACpB,AACD,AAAA,kBAAkB,AAAC,CACf,UAAU,CAAE,MAAM,CACrB,AAED,AAAA,SAAS,AAAC,CACN,KAAK,CAAE,IAAI,CACd,AACD,AAAA,SAAS,CAAC,EAAE,CACZ,SAAS,CAAC,EAAE,AAAC,CACT,OAAO,CAAE,GAAG,CACZ,cAAc,CAAE,GAAG,CACtB,AACD,AAAA,SAAS,CAAC,EAAE,AAAA,UAAU,CACtB,SAAS,CAAC,EAAE,AAAA,UAAU,AAAC,CACtB,OAAO,CAAE,CAAC,CACV,AAED,AAAA,aAAa,AAAC,CAIV,QAAQ,CAAE,QAAQ,CAClB,MAAM,CAAE,CAAC,CACT,QAAQ,CAAE,MAAM,CACnB,AAED,AAAA,mBAAmB,AAAC,CAChB,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,IAAI,CAAE,CAAC,CACP,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,OAAO,CAAE,EAAE,CACd,AAED,AAAA,6BAA6B,AAAC,CAC1B,QAAQ,CAAE,QAAQ,CAClB,MAAM,CAAE,IAAI,CACZ,KAAK,CAAE,IAAI,CACX,GAAG,CAAE,gBAAgB,CACrB,IAAI,CAAE,gBAAgB,CACtB,UAAU,CAAE,+gFAA+gF,CAC9hF,AAID,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAiB,CACnB,MAAM,CAAE,KAAK,CAChB,AAED,AAAA,YAAY,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAiB,CAChC,WAAW,CAAE,CAAC,CACd,YAAY,CAAE,GAAG,CACjB,QAAQ,CAAE,MAAM,CACnB,AAED,AAAA,cAAc,CAAC,WAAW,AAAA,YAAY,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAiB,CAC1D,OAAO,CAAE,KAAK,CACjB,AAED,AAAA,cAAc,CAAC,WAAW,AAAA,YAAY,AAAA,YAAY,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAiB,CACtE,OAAO,CAAE,YAAY,CACxB,AAED,AAAA,gBAAgB,CAAC,WAAW,AAAA,WAAW,AAAC,CACpC,YAAY,CAAE,IAAI,CAClB,aAAa,CAAE,IAAI,CACtB,AAED,AAAA,gBAAgB,AAAA,OAAO,CAAC,MAAM,AAAC,CAC3B,OAAO,CAAE,YAAY,CACrB,YAAY,CAAE,IAAI,CACrB,AAED,AAAA,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAAc,CAExC,QAAQ,CAAE,MAAM,CAChB,YAAY,CAAE,GAAG,CACjB,WAAW,CAAE,CAAC,CACjB,AAED,AAAA,gBAAgB,CAAC,MAAM,CAAC,KAAK,AAAC,CAE1B,YAAY,CAAE,CAAC,CAClB,AF6lFD,AAAA,MAAM,AE3lFC,CACH,UAAU,CAAE,GAAG,CACf,aAAa,CAAE,IAAI,CACnB,WAAW,CAAE,QAAQ,CACxB,AAED,AAAA,oBAAoB,AAAC,CACjB,OAAO,CAAE,IAAI,CAChB,AAED,AAAA,oBAAoB,CAAC,MAAM,AAAC,CACxB,WAAW,CAAE,GAAG,CACnB,CAED,AAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,oBAAoB,CAAC,MAAM,AAAC,CACpC,WAAW,CAAE,CAAC,CACd,YAAY,CAAE,GAAG,CACpB,AAED,AAAA,WAAW,AAAC,CACR,MAAM,CAAE,IAAI,CACf,AACD,AAAA,mBAAmB,AAAC,CAChB,KAAK,CAAE,KAAK,CACZ,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,mBAAmB,AAAC,CAChB,MAAM,CAAE,IAAI,CACZ,OAAO,CAAE,GAAG,CACZ,UAAU,CAAE,WAAW,CAAC,+4QAA+4Q,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CACz8Q,AACD,AAAA,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAC7B,mBAAmB,CAAC,MAAM,CAAC,EAAE,AAAC,CAC1B,OAAO,CAAE,OAAO,CACnB,AAED,AAAA,qBAAqB,AAAC,CAClB,MAAM,CAAE,IAAI,CACf,AACD,AAAA,wBAAwB,AAAA,QAAQ,AAAC,CAC7B,UAAU,CAAE,IAAI,CAChB,UAAU,CAAE,+gFAA+gF,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CACnjF,eAAe,CAAE,SAAS,CAC7B,AACD,AAAA,qBAAqB,AAAC,CAClB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,qBAAqB,CAAC,EAAE,AAAC,CACrB,QAAQ,CAAE,QAAQ,CACrB,AACD,AAAA,0BAA0B,AAAC,CACvB,QAAQ,CAAE,QAAQ,CAClB,UAAU,CAAE,OAAO,CACnB,aAAa,CAAE,GAAG,CAClB,KAAK,CAAE,OAAO,CACd,GAAG,CAAE,GAAG,CACR,KAAK,CAAE,IAAI,CACX,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,WAAW,CAAE,IAAI,CACjB,UAAU,CAAE,MAAM,CAClB,cAAc,CAAE,MAAM,CACtB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,GAAG,CAChB,OAAO,CAAE,CAAC,CACb,AAGD,AAAA,QAAQ,AAAC,CACL,OAAO,CAAE,GAAG,CACZ,QAAQ,CAAE,MAAM,CACnB,AACD,AAAA,mBAAmB,CAAE,kBAAkB,AAAC,CACpC,OAAO,CAAE,IAAI,CACb,eAAe,CAAE,aAAa,CAC9B,SAAS,CAAE,IAAI,CAClB,AACD,AAAA,mBAAmB,CAAC,UAAU,CAC9B,wBAAwB,CAAC,UAAU,AAAC,CAChC,aAAa,CAAE,GAAG,CACrB,AAED,AAAA,wBAAwB,CAAC,UAAU,CAAG,UAAU,CAChD,mBAAmB,CAAC,UAAU,CAAG,UAAU,AAAC,CACxC,WAAW,CAAE,KAAK,CACrB,CAED,AAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,wBAAwB,CAAC,UAAU,CAAG,UAAU,EAC5D,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,mBAAmB,CAAC,UAAU,CAAG,UAAU,AAAC,CACpD,WAAW,CAAE,CAAC,CACd,YAAY,CAAE,KAAK,CACtB,AAED,AAAA,kBAAkB,CAClB,wBAAwB,AAAC,CACrB,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,MAAM,CACnB,WAAW,CAAE,QAAQ,CACrB,WAAW,CAAE,IAAI,CACpB,AAED,AAAA,gBAAgB,CAAE,sBAAsB,AAAC,CACrC,YAAY,CAAE,GAAG,CACjB,IAAI,CAAE,CAAC,CACV,CAED,AAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,gBAAgB,EAC5B,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,sBAAsB,AAAC,CAC/B,WAAW,CAAE,GAAG,CAChB,YAAY,CAAE,GAAG,CACpB,CACD,AAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,kBAAkB,EAC9B,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,wBAAwB,AAAC,CACjC,WAAW,CAAE,GAAG,CAChB,YAAY,CAAE,IAAI,CACrB,AAED,AAAA,sBAAsB,AAAC,CACnB,OAAO,CAAE,SAAS,CACrB,AAGD,AAAA,oBAAoB,AAAC,CACjB,OAAO,CAAE,YAAY,CACrB,cAAc,CAAE,GAAG,CACnB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,qBAAqB,AAAC,CAClB,KAAK,CAAE,KAAK,CACZ,OAAO,CAAE,KAAK,CACd,UAAU,CAAE,KAAK,CACjB,OAAO,CAAE,YAAY,CACrB,cAAc,CAAE,GAAG,CACnB,QAAQ,CAAE,MAAM,CACnB,CACD,AAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,qBAAqB,AAAC,CAC9B,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,qBAAqB,AAAC,CAClB,KAAK,CAAE,KAAK,CACZ,OAAO,CAAE,KAAK,CACd,OAAO,CAAE,YAAY,CACrB,cAAc,CAAE,GAAG,CACtB,AACD,AAAA,uBAAuB,AAAC,CACpB,UAAU,CAAE,IAAI,CACnB,AAGD,AAAA,YAAY,CAAC,QAAQ,AAAC,CAClB,MAAM,CAAE,cAAc,CACtB,aAAa,CAAE,GAAG,CACrB,AAED,AAAA,YAAY,AAAC,CACT,OAAO,CAAE,IAAI,CAChB,AAED,AAAA,mCAAmC,AAAC,CAChC,QAAQ,CAAE,QAAQ,CACrB,AAED,AAAA,YAAY,CAAE,2BAA2B,AAAC,CACtC,WAAW,CAAE,IAAI,CACpB,AAED,AAAA,0BAA0B,AAAC,CACvB,OAAO,CAAE,YAAY,CACxB,AAED,AAAA,yBAAyB,AAAC,CACtB,QAAQ,CAAE,QAAQ,CAClB,MAAM,CAAE,GAAG,CACX,QAAQ,CAAE,MAAM,CAChB,UAAU,CAAE,MAAM,CACrB,AAED,AAAA,YAAY,CAAE,mCAAmC,AAAC,CAC9C,MAAM,CAAE,mBAAmB,CAC3B,gBAAgB,CAAE,KAAK,CAC1B,AAED,AAAA,YAAY,CAAC,EAAE,AAAC,CACZ,MAAM,CAAE,OAAO,CAClB,AAED,AAAA,YAAY,CAAC,EAAE,AAAA,sBAAsB,AAAC,CAClC,MAAM,CAAE,OAAO,CAClB,AAED,AAAA,YAAY,CAAC,KAAK,AAAC,CACf,KAAK,CAAE,IAAI,CACX,SAAS,CAAE,IAAI,CACf,YAAY,CAAE,KAAK,CACnB,aAAa,CAAE,CAAC,CACnB,AAED,AAAA,YAAY,CAAC,EAAE,CAAE,YAAY,CAAC,EAAE,AAAC,CAC7B,OAAO,CAAE,GAAG,CACZ,WAAW,CAAE,UAAU,CACvB,cAAc,CAAE,MAAM,CACtB,MAAM,CAAE,cAAc,CACzB,AAGD,AAAA,YAAY,CAAC,EAAE,AAAC,CACZ,QAAQ,CAAE,QAAQ,CAClB,mBAAmB,CAAE,GAAG,CAC3B,AACD,AAAA,yBAAyB,AAAC,CACtB,QAAQ,CAAE,MAAM,CAChB,WAAW,CAAE,MAAM,CACtB,AACD,AAAA,sBAAsB,AAAC,CACnB,KAAK,CAAE,KAAK,CACZ,YAAY,CAAE,GAAG,CACpB,CACD,AAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,sBAAsB,AAAC,CAC/B,KAAK,CAAE,IAAI,CACX,OAAO,CAAE,SAAS,CACrB,AACD,AAAA,2BAA2B,AAAC,CACxB,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,IAAI,CAAE,IAAI,CACV,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,MAAM,CAAE,UAAU,CACrB,CACD,AAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,2BAA2B,AAAC,CACpC,IAAI,CAAE,IAAI,CACV,KAAK,CAAE,IAAI,CACd,AAGD,AAAA,YAAY,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAC,CACjC,UAAU,CAAE,IAAI,CACnB,AAID,AAAA,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,AAAC,CAC5B,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,yBAAyB,AAAC,CACtB,QAAQ,CAAE,MAAM,CAChB,WAAW,CAAE,MAAM,CACtB,AACD,AAAA,YAAY,CAAC,KAAK,CAAC,GAAG,AAAC,CACnB,SAAS,CAAE,IAAI,CACf,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,YAAY,CAAC,KAAK,CAClB,YAAY,CAAC,MAAM,CACnB,YAAY,CAAC,QAAQ,AAAC,CAClB,MAAM,CAAE,IAAI,CACf,AAGD,AAAA,YAAY,CAAC,KAAK,CAAC,EAAE,CACrB,YAAY,CAAC,KAAK,CAAC,EAAE,AAAC,CAClB,OAAO,CAAE,OAAO,CACnB,AACD,AAAA,YAAY,CAAC,KAAK,CAAC,EAAE,AAAC,CAClB,UAAU,CAAE,cAAc,CAC7B,AACD,AAAA,YAAY,AAAA,mBAAmB,CAAC,kBAAkB,AAAC,CAC/C,OAAO,CAAE,YAAY,CACrB,KAAK,CAAE,GAAG,CACV,SAAS,CAAE,sCAAsC,CACjD,aAAa,CAAE,GAAG,CAClB,UAAU,CAAE,OAAO,CACnB,UAAU,CAAE,mGAAmG,CAC/G,eAAe,CAAE,WAAW,CAC5B,mBAAmB,CAAE,IAAI,CAC5B,AACD,UAAU,CAAV,mBAAU,CACN,EAAE,CAAG,mBAAmB,CAAE,OAAO,CACjC,IAAI,CAAG,mBAAmB,CAAE,QAAQ,EAGxC,AAAA,2BAA2B,CAAC,EAAE,CAC9B,2BAA2B,CAAC,EAAE,AAAC,CAC3B,MAAM,CAAE,qBAAqB,CAChC,AAED,AAAA,gCAAgC,AAAC,CAC7B,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,eAAe,CAAE,QAAQ,CACzB,UAAU,CAAE,UAAU,CACzB,AACD,AAAA,oBAAoB,AAAC,CACjB,OAAO,CAAE,SAAS,CACrB,AACD,AAAA,qBAAqB,AAAC,CAClB,OAAO,CAAE,GAAG,CACZ,OAAO,CAAE,UAAU,CACnB,MAAM,CAAE,cAAc,CACtB,MAAM,CAAE,OAAO,CACf,UAAU,CAAE,UAAU,CACzB,AACD,AAAA,sBAAsB,AAAC,CACnB,OAAO,CAAE,UAAU,CACtB,AACD,AAAA,qBAAqB,AAAA,SAAS,AAAC,CAC3B,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAClC,qBAAqB,CAAC,SAAS,CAAC,EAAE,AAAC,CAC/B,OAAO,CAAE,OAAO,CACnB,AAED,AAAA,8BAA8B,AAAC,CAC3B,KAAK,CAAE,IAAI,CACX,OAAO,CAAE,KAAK,CACd,YAAY,CAAE,KAAK,CACtB,AACD,AAAA,8BAA8B,CAAG,GAAG,AAAC,CACjC,OAAO,CAAE,UAAU,CACnB,cAAc,CAAE,GAAG,CACtB,AAxaqD,AAAL,0BAA+B,AA4arD,CACvB,OAAO,CAAE,CAAC,CACb,AACD,AAAA,yBAAyB,CAAG,0BAA0B,CAAG,2BAA2B,CACpF,yBAAyB,CAAG,wBAAwB,CAAG,2BAA2B,CAClF,yBAAyB,CAAG,0BAA0B,CAAG,2BAA2B,CACpF,yBAAyB,CAAG,yBAAyB,CAAG,2BAA2B,AAAC,CAChF,QAAQ,CAAE,IAAI,CACjB,AAED,AAAA,2BAA2B,AAAC,CACxB,UAAU,CAAE,mBAAmB,CAClC,AACD,AAAA,4BAA4B,AAAC,CACzB,UAAU,CAAE,kBAAkB,CACjC,AACD,AAAA,0BAA0B,CAAC,8BAA8B,AAAC,CACtD,mBAAmB,CAAE,KAAK,CAC7B,AAED,AAAA,8BAA8B,AAAC,CAC3B,gBAAgB,CAAE,IAAI,CACzB,AAMD,AAAA,wBAAwB,AAAC,CACrB,QAAQ,CAAE,QAAQ,CACrB,AACD,AAAA,0BAA0B,CAAG,8BAA8B,AAAC,CACxD,QAAQ,CAAE,MAAM,CACnB,AACD,AAAA,wBAAwB,AAAA,wBAAwB,CAAG,GAAG,CACtD,yBAAyB,AAAA,wBAAwB,CAAG,GAAG,AAAC,CACpD,cAAc,CAAE,IAAI,CACvB,AACD,AAAA,wBAAwB,AAAA,wBAAwB,CAAG,8BAA8B,CACjF,yBAAyB,AAAA,wBAAwB,CAAG,8BAA8B,AAAC,CAC/E,cAAc,CAAE,IAAI,CACvB,AAED,AAAA,eAAe,CAAC,GAAG,CACnB,kBAAkB,CAAC,GAAG,AAAC,CACnB,MAAM,CAAE,IAAI,CACf,AAGD,AAAA,kBAAkB,CAAC,aAAa,AAAC,CAC7B,YAAY,CAAE,CAAC,CACf,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,kBAAkB,CAAC,EAAE,AAAC,CAClB,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,kBAAkB,CAAC,EAAE,CAAC,EAAE,AAAC,CACrB,aAAa,CAAE,iBAAiB,CACnC,AACD,AAAA,kBAAkB,CAAC,EAAE,AAAA,WAAW,AAAC,CAC7B,YAAY,CAAE,IAAI,CACrB,AACD,AAAA,kBAAkB,CAAC,CAAC,AAAC,CACjB,OAAO,CAAE,KAAK,CACd,OAAO,CAAE,QAAQ,CACjB,KAAK,CAAE,IAAI,CACX,WAAW,CAAE,YAAY,CACzB,eAAe,CAAE,IAAI,CACxB,AACD,AAAA,kBAAkB,CAAC,CAAC,AAAA,OAAO,AAAC,CACxB,KAAK,CAAE,IAAI,CACX,WAAW,CAAE,IAAI,CACjB,UAAU,CAAE,OAAO,CACnB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,kBAAkB,CAAC,4BAA4B,CAAC,EAAE,AAAC,CAC/C,OAAO,CAAE,IAAI,CAChB,AAxBD,AAAA,kBAAkB,CAAC,EAAE,AAyBC,CAClB,MAAM,CAAE,CAAC,CACT,OAAO,CAAE,CAAC,CACb,AAzBD,AAAA,kBAAkB,CAAC,EAAE,CAAC,EAAE,AA0BC,CACrB,OAAO,CAAE,KAAK,CACjB,AACD,AAAA,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,AAAC,CACxB,OAAO,CAAE,CAAC,CACV,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,AAAC,CAC3B,WAAW,CAAE,GAAG,CAChB,OAAO,CAAE,KAAK,CACjB,CACD,AAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,AAAC,CACvC,WAAW,CAAE,IAAI,CACjB,YAAY,CAAE,GAAG,CACpB,AACD,AAAA,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,AAAC,CACjC,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,GAAG,CAChB,cAAc,CAAE,GAAG,CACtB,AACD,AAAA,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,AAAC,CACrC,cAAc,CAAE,GAAG,CACtB,AAED,AAAA,QAAQ,CAAC,GAAG,CACZ,UAAU,CAAC,GAAG,AAAC,CACX,MAAM,CAAE,IAAI,CACf,AACD,AAAA,QAAQ,AAAC,CACL,OAAO,CAAE,QAAQ,CACjB,OAAO,CAAE,YAAY,CACxB,AAED,AAAA,YAAY,AAAC,CACT,aAAa,CAAE,IAAI,CACtB,AACD,AAAA,mBAAmB,AAAC,CAChB,MAAM,CAAE,CAAC,CACT,OAAO,CAAE,SAAS,CAClB,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,IAAI,CAChB,SAAS,CAAE,OAAO,CAClB,WAAW,CAAE,OAAO,CACpB,aAAa,CAAE,WAAW,CAC7B,AACD,AAAA,wBAAwB,CAAG,mBAAmB,AAAC,CAC3C,MAAM,CAAE,OAAO,CAClB,AACD,AAAA,YAAY,AAAA,UAAU,CAAG,mBAAmB,AAAC,CACzC,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,iBAAiB,AAAC,CACd,OAAO,CAAE,GAAG,CACZ,MAAM,CAAE,cAAc,CACtB,aAAa,CAAE,GAAG,CACrB,AACD,AAAA,YAAY,AAAA,UAAU,CAAG,iBAAiB,AAAC,CACvC,OAAO,CAAE,IAAI,CAChB,AACD,AAAA,mBAAmB,CAAG,iBAAiB,AAAC,CACpC,UAAU,CAAE,IAAI,CAChB,aAAa,CAAE,WAAW,CAC7B,AACD,AAAA,0BAA0B,AAAC,CACvB,KAAK,CAAE,KAAK,CACf,CACD,AAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,0BAA0B,AAAC,CACnC,KAAK,CAAE,IAAI,CACd,AAED,AAAA,YAAY,AAAC,CACT,QAAQ,CAAE,QAAQ,CACrB,AACD,AAAA,qBAAqB,AAAC,CAClB,OAAO,CAAE,cAAc,CACvB,gBAAgB,CAAE,OAAO,CACzB,UAAU,CAAE,cAAc,CAC7B,AAED,AAAA,qBAAqB,CAAC,UAAU,AAAC,CAC7B,aAAa,CAAE,GAAG,CACrB,AAED,AAAA,qBAAqB,CAAC,UAAU,CAAG,UAAU,AAAC,CAC1C,WAAW,CAAE,KAAK,CACrB,AAED,AAAA,oBAAoB,AAAC,CACjB,UAAU,CAAE,IAAI,CAChB,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,CAAC,CACR,MAAM,CAAE,CAAC,CACT,IAAI,CAAE,CAAC,CACV,AACD,AAAA,oBAAoB,CAAG,GAAG,AAAC,CACvB,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACf,AACD,AAAA,oBAAoB,CAAG,GAAG,CAAG,CAAC,AAAC,CAC3B,OAAO,CAAE,UAAU,CACnB,UAAU,CAAE,MAAM,CAClB,cAAc,CAAE,MAAM,CACzB,AAGD,AAAA,eAAe,CAAC,eAAe,AAAC,CAC5B,OAAO,CAAE,CAAC,CACb,AACD,AAAA,eAAe,CAAC,eAAe,CAAG,YAAY,CAAG,oBAAoB,CACrE,eAAe,CAAC,eAAe,CAAG,eAAe,CAAG,YAAY,CAAG,oBAAoB,AAAC,CACpF,OAAO,CAAE,IAAI,CAChB,AACD,AAAA,eAAe,CAAC,eAAe,CAAG,YAAY,CAAG,qBAAqB,CACtE,eAAe,CAAC,eAAe,CAAG,eAAe,CAAG,YAAY,CAAG,qBAAqB,AAAC,CACrF,aAAa,CAAE,eAAe,CACjC,AAED,AAAA,UAAU,AAAC,CACP,QAAQ,CAAE,KAAK,CACf,IAAI,CAAE,IAAI,CACV,KAAK,CAAE,IAAI,CACX,OAAO,CAAE,CAAC,CACV,KAAK,CAAE,KAAK,CAIZ,MAAM,CAAE,CAAC,CACZ,AACD,AAAA,iBAAiB,AAAC,CACd,MAAM,CAAE,IAAI,CACf,AACD,AAAA,eAAe,AAAC,CACZ,QAAQ,CAAE,IAAI,CACjB,AAED,AAAA,UAAU,AAAC,CACP,QAAQ,CAAE,KAAK,CACf,IAAI,CAAE,IAAI,CACV,KAAK,CAAE,IAAI,CACX,OAAO,CAAE,CAAC,CACV,KAAK,CAAE,KAAK,CAIZ,MAAM,CAAE,CAAC,CACZ,AACD,AAAA,kBAAkB,AAAC,CACf,MAAM,CAAE,IAAI,CACZ,QAAQ,CAAE,MAAM,CACnB,AACD,AAAA,iBAAiB,CAAC,iBAAiB,AAAC,CAChC,gBAAgB,CAAE,OAAO,CACzB,aAAa,CAAE,WAAW,CAC7B,AACD,AAAA,iBAAiB,AAAC,CACd,MAAM,CAAE,IAAI,CACf,AACD,AAAA,eAAe,AAAC,CACZ,QAAQ,CAAE,IAAI,CACjB,AAED,AAAA,iBAAiB,CAAC,CAAC,AAAC,CAChB,MAAM,CAAE,OAAO,CAClB,AACD,AAAA,iBAAiB,CAAC,GAAG,AAAC,CAClB,KAAK,CAAE,IAAI,CACX,cAAc,CAAE,MAAM,CACtB,YAAY,CAAE,IAAI,CACrB,CACD,AAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,iBAAiB,CAAC,GAAG,AAAC,CAC9B,WAAW,CAAE,IAAI,CACjB,YAAY,CAAE,IAAI,CACrB,AAED,AAAA,iBAAiB,AAAC,CACd,OAAO,CAAE,CAAC,CACV,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,iBAAiB,CAAG,EAAE,AAAC,CACnB,OAAO,CAAE,aAAa,CACtB,MAAM,CAAE,QAAQ,CAChB,YAAY,CAAE,gBAAgB,CAC9B,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,iBAAiB,CAAG,EAAE,AAAA,YAAY,AAAC,CAC/B,sBAAsB,CAAE,GAAG,CAC3B,uBAAuB,CAAE,GAAG,CAC/B,AACD,AAAA,iBAAiB,CAAG,EAAE,AAAA,WAAW,AAAC,CAC9B,mBAAmB,CAAE,KAAK,CAC1B,yBAAyB,CAAE,GAAG,CAC9B,0BAA0B,CAAE,GAAG,CAClC,AACD,AAAA,yBAAyB,CAAG,EAAE,AAAA,UAAW,CAAA,IAAI,CAAE,CAC3C,UAAU,CAAE,OAAO,CACtB,AACD,AAAA,iBAAiB,CAAG,EAAE,AAAA,MAAM,AAAC,CACzB,UAAU,CAAE,OAAO,CACtB,AAED,AAAA,UAAU,AAAC,CACP,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,GAAG,CACZ,UAAU,CAAE,IAAI,CAChB,UAAU,CAAE,MAAM,CACrB,AACD,AAAA,iBAAiB,AAAC,CACd,OAAO,CAAE,YAAY,CACrB,KAAK,CAAE,IAAI,CACX,WAAW,CAAE,IAAI,CACpB,AACD,AAAA,IAAI,CAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,eAAe,CAC/B,IAAI,CAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,gBAAgB,AAAC,CAC7B,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,GAAG,CACR,IAAI,CAAE,GAAG,CACZ,AACD,AAAA,IAAI,CAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,gBAAgB,CAChC,IAAI,CAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,eAAe,AAAC,CAC5B,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,GAAG,CACR,KAAK,CAAE,GAAG,CACb,AAED,AAAA,SAAS,AAAC,CACN,aAAa,CAAE,GAAG,CAClB,UAAU,CAAE,GAAG,CAClB,AAED,AAAA,YAAY,AAAC,CACT,OAAO,CAAE,GAAG,CACf,AACD,AAAA,YAAY,CAAG,EAAE,AAAC,CACd,OAAO,CAAE,GAAG,CACZ,UAAU,CAAE,IAAI,CACnB,AA0BD,AAAA,sBAAsB,CAAG,EAAE,CAAG,EAAE,AAAC,CAC7B,MAAM,CAAE,OAAO,CAClB,AACD,AAAA,kBAAkB,AAAC,CACf,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,MAAM,CACrB,AACD,AAAA,YAAY,CAAC,oBAAoB,AAAC,CAC9B,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,CAAC,CACd,UAAU,CAAE,MAAM,CACrB,AACD,AAAA,sBAAsB,AAAC,CACnB,OAAO,CAAE,IAAI,CACb,aAAa,CAAE,IAAI,CACtB,AACD,AAAA,sBAAsB,CAAG,KAAK,AAAC,CAC3B,KAAK,CAAE,IAAI,CACd,AACD,AAAA,sBAAsB,CAAG,MAAM,AAAC,CAC5B,WAAW,CAAE,GAAG,CACnB,CACD,AAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,sBAAsB,CAAG,MAAM,AAAC,CACxC,WAAW,CAAE,CAAC,CACd,YAAY,CAAE,GAAG,CACpB,AACD,AAAA,sBAAsB,AAAC,CACnB,OAAO,CAAE,UAAU,CACnB,cAAc,CAAE,MAAM,CACtB,OAAO,CAAE,YAAY,CACxB,CACD,AAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,sBAAsB,AAAC,CAC/B,OAAO,CAAE,YAAY,CACxB,AACD,AAAA,uBAAuB,CAAC,oBAAoB,AAAC,CACzC,OAAO,CAAE,UAAU,CACnB,cAAc,CAAE,MAAM,CACtB,KAAK,CAAE,IAAI,CACd,AACD,AAAA,YAAY,CAAC,SAAS,AAAC,CACnB,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,YAAY,CAAC,SAAS,CAAC,EAAE,CACzB,YAAY,CAAC,SAAS,CAAC,EAAE,AAAC,CACtB,OAAO,CAAE,GAAG,CACf,AAED,AAAA,SAAS,CAAC,aAAa,AAAC,CACpB,UAAU,CAAE,IAAI,CACnB,AAED,AAAA,WAAW,AAAC,CACR,OAAO,CAAE,GAAG,CACf,AACD,AAAA,gBAAgB,AAAC,CACb,MAAM,CAAE,IAAI,CACf,AACD,AAAA,qBAAqB,AAAC,CAClB,OAAO,CAAE,YAAY,CACrB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,UAAU,CAAE,mXAAmX,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CACvZ,eAAe,CAAE,SAAS,CAC1B,cAAc,CAAE,MAAM,CACzB,AAED,AAAA,kBAAkB,AAAC,CACf,OAAO,CAAE,GAAG,CACf,AACD,AAAA,kBAAkB,CAAC,EAAE,AAAA,MAAM,CAC3B,kBAAkB,CAAC,EAAE,AAAA,MAAM,CAC3B,kBAAkB,CAAC,EAAE,AAAA,OAAO,AAAC,CACzB,KAAK,CAAE,IAAI,CACX,gBAAgB,CAAE,OAAO,CAC5B,AACD,AAAA,kBAAkB,CAAC,CAAC,AAAC,CACjB,MAAM,CAAE,OAAO,CAClB,AACD,AAAA,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAC5B,kBAAkB,CAAC,MAAM,CAAC,EAAE,AAAC,CACzB,OAAO,CAAE,GAAG,CACf,AAED,AAAA,YAAY,AAAC,CACT,QAAQ,CAAE,KAAK,CACf,GAAG,CAAE,GAAG,CACR,IAAI,CAAE,CAAC,CACP,KAAK,CAAE,CAAC,CACR,MAAM,CAAE,IAAI,CACZ,KAAK,CAAE,KAAK,CACZ,SAAS,CAAE,GAAG,CACd,UAAU,CAAE,IAAI,CAChB,OAAO,CAAE,GAAG,CACZ,OAAO,CAAE,IAAI,CACb,aAAa,CAAE,GAAG,CAClB,OAAO,CAAE,SAAS,CAClB,UAAU,CAAE,wBAAwB,CACvC,AACD,AAAA,mBAAmB,AAAC,CAChB,OAAO,CAAE,CAAC,CACb,AACD,AAAA,oBAAoB,AAAC,CACjB,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,MAAM,CAClB,aAAa,CAAE,IAAI,CACtB,AACD,AAAA,kBAAkB,CAAC,oBAAoB,AAAC,CACpC,OAAO,CAAE,IAAI,CAChB,AACD,AAAA,sBAAsB,AAAC,CACnB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,MAAM,CAAE,IAAI,CACZ,UAAU,CAAE,uoEAAuoE,CACtpE,AAED,AAAA,uBAAuB,AAAC,CACpB,QAAQ,CAAE,KAAK,CACf,OAAO,CAAE,IAAI,CACb,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,IAAI,CACX,OAAO,CAAE,IAAI,CAEb,MAAM,CAAE,GAAG,CAAC,KAAK,CAAC,OAAkB,CACpC,gBAAgB,CAAE,OAAkB,CAEpC,UAAU,CAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAqB,CAC5C,KAAK,CAAE,KAAK,CAEZ,UAAU,CAAE,MAAM,CAClB,SAAS,CAAE,IAAI,CAClB,AAED,AAAA,aAAa,CACb,aAAa,AAAC,CACV,QAAQ,CAAE,QAAQ,CAClB,IAAI,CAAE,CAAC,CACP,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACf,AACD,AAAA,aAAa,AAAC,CACV,GAAG,CAAE,IAAI,CACT,MAAM,CAAE,QAAQ,CACnB,AACD,AAAA,aAAa,AAAC,CACV,MAAM,CAAE,IAAI,CACZ,MAAM,CAAE,QAAQ,CACnB,AAED,AAAA,aAAa,CACb,aAAa,AAAC,CACV,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACf,AACD,AAAA,aAAa,AAAC,CACV,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,QAAQ,CACnB,AACD,AAAA,aAAa,AAAC,CACV,IAAI,CAAE,IAAI,CACV,MAAM,CAAE,QAAQ,CACnB,AAED,AAAA,cAAc,CACd,cAAc,CACd,cAAc,CACd,cAAc,AAAC,CACX,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACf,AAED,AAAA,cAAc,CACd,cAAc,AAAC,CACX,GAAG,CAAE,IAAI,CACZ,AACD,AAAA,cAAc,CACd,cAAc,AAAC,CACX,MAAM,CAAE,IAAI,CACf,AACD,AAAA,cAAc,CACd,cAAc,AAAC,CACX,IAAI,CAAE,IAAI,CACb,AACD,AAAA,cAAc,CACd,cAAc,AAAC,CACX,KAAK,CAAE,IAAI,CACd,AAED,AAAA,cAAc,AAAC,CACX,MAAM,CAAE,SAAS,CACpB,AACD,AAAA,cAAc,AAAC,CACX,MAAM,CAAE,SAAS,CACpB,AACD,AAAA,cAAc,AAAC,CACX,MAAM,CAAE,SAAS,CACpB,AACD,AAAA,cAAc,AAAC,CACX,MAAM,CAAE,SAAS,CACpB,AAED,AAAA,QAAQ,AAAC,CACL,WAAW,CAAE,QAAQ,CACxB,AAED,AAAA,YAAY,CAAC,QAAQ,AAAC,CAClB,MAAM,CAAE,IAAI,CACZ,UAAU,CAAE,MAAM,CACrB,AACD,AAAA,YAAY,CAAC,qBAAqB,AAAC,CAC/B,MAAM,CAAE,IAAI,CACZ,MAAM,CAAE,QAAQ,CAChB,UAAU,CAAE,IAAI,CACnB,AACD,AAAA,YAAY,CAAC,oBAAoB,AAAC,CAC9B,SAAS,CAAE,OAAO,CACrB,AACD,AAAA,YAAY,CAAC,oBAAoB,CAAjC,YAAY,Cc3jGZ,WAAW,CAiBP,GAAG,CAAA,AAAA,KAAC,EAAO,SAAS,AAAhB,EAAoB,cAAc,CAjB1C,WAAW,Cd2jGX,YAAY,Cc1iGR,GAAG,CAAA,AAAA,KAAC,EAAO,SAAS,AAAhB,EAAoB,cAAc,Cd0iG1C,YAAY,Cc3jGZ,WAAW,CAkBP,GAAG,CAAA,AAAA,KAAC,EAAO,UAAU,AAAjB,EAAqB,cAAc,CAlB3C,WAAW,Cd2jGX,YAAY,CcziGR,GAAG,CAAA,AAAA,KAAC,EAAO,UAAU,AAAjB,EAAqB,cAAc,CdyiG3C,YAAY,Cc3jGZ,WAAW,CAmBP,GAAG,CAAA,AAAA,KAAC,EAAO,YAAY,AAAnB,EAAuB,cAAc,CAnB7C,WAAW,Cd2jGX,YAAY,CcxiGR,GAAG,CAAA,AAAA,KAAC,EAAO,YAAY,AAAnB,EAAuB,cAAc,AdwiGX,CAC9B,WAAW,CAAE,QAAQ,CACxB,AAED,AAAA,YAAY,AAAC,CACT,QAAQ,CAAE,KAAK,CACf,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,OAAO,CAAE,IAAI,CACb,OAAO,CAAE,GAAG,CACZ,gBAAgB,CAAE,IAAI,CACzB,AAED,AAAA,aAAa,AAAC,CACV,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,qBAAqB,AAAC,CAClB,OAAO,CAAE,UAAU,CACnB,UAAU,CAAE,MAAM,CAClB,cAAc,CAAE,MAAM,CACzB,AACD,AAAA,mBAAmB,AAAC,CAChB,SAAS,CAAE,IAAI,CAClB,AAED,AAAA,YAAY,CAAC,EAAE,AAAC,CACZ,OAAO,CAAE,QAAQ,CACjB,MAAM,CAAE,OAAO,CAClB,AACD,AAAA,YAAY,CAAC,KAAK,AAAC,CACf,OAAO,CAAE,CAAC,CACV,KAAK,CAAE,IAAI,CACX,WAAW,CAAE,MAAM,CACnB,MAAM,CAAE,OAAO,CAClB,AACD,AAAA,YAAY,CAAC,KAAK,AAAC,CACf,MAAM,CAAE,CAAC,CACT,cAAc,CAAE,MAAM,CACtB,MAAM,CAAE,OAAO,CAClB,AACD,AAAA,YAAY,CAAC,SAAS,AAAC,CACnB,UAAU,CAAE,OAAO,CACtB,AASD,AAAA,oBAAoB,AAAC,CACjB,QAAQ,CAAE,KAAK,CACf,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,CAAC,CACR,KAAK,CAAE,KAAK,CACZ,MAAM,CAAE,IAAI,CACZ,OAAO,CAAE,KAAK,CACd,UAAU,CAAG,IAAG,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAiB,CAC3C,AACD,AAAA,4BAA4B,AAAC,CACzB,OAAO,CAAE,cAAc,CACvB,MAAM,CAAE,IAAI,CACZ,KAAK,CAAE,OAAO,CACd,SAAS,CAAE,IAAI,CACf,QAAQ,CAAE,IAAI,CACd,UAAU,CAAE,2pNAA2pN,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAGnsN,qBAAqB,CAAE,KAAK,CAC/B,AACD,AAAA,oBAAoB,CAAC,EAAE,AAAC,CACpB,OAAO,CAAE,CAAC,CACV,UAAU,CAAE,IAAI,CAChB,eAAe,CAAE,IAAI,CACrB,UAAU,CAAE,iBAAiB,CAChC,AACD,AAAA,oBAAoB,CAAC,CAAC,AAAC,CACnB,OAAO,CAAE,KAAK,CACd,OAAO,CAAE,MAAM,CACf,KAAK,CAAE,OAAO,CACd,aAAa,CAAE,iBAAiB,CACnC,AACD,AAAA,oBAAoB,CAAC,EAAE,AAAC,CACpB,MAAM,CAAE,UAAU,CAClB,KAAK,CAAE,OAAO,CACd,SAAS,CAAE,IAAI,CAClB,AACD,AAAA,oBAAoB,CAAC,EAAE,AAAC,CACpB,MAAM,CAAE,OAAO,CACf,KAAK,CAAE,OAAO,CACd,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,MAAM,CACnB,QAAQ,CAAE,MAAM,CAChB,WAAW,CAAE,MAAM,CACnB,aAAa,CAAE,QAAQ,CAC1B,AACD,AAAA,oBAAoB,CAAC,OAAO,CAAC,EAAE,AAAC,CAC5B,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,oBAAoB,CAAC,CAAC,AAAC,CACnB,aAAa,CAAE,CAAC,CACnB,AACD,AAAA,2BAA2B,AAAC,CACxB,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,GAAG,CACR,IAAI,CAAE,KAAK,CACX,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,UAAU,CAAE,KAAK,CACjB,MAAM,CAAE,OAAO,CACf,sBAAsB,CAAE,GAAG,CAC3B,yBAAyB,CAAE,GAAG,CAC9B,UAAU,CAAG,IAAG,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAiB,CACxC,UAAU,CAAE,urDAAurD,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CACtuD,AAGD,AAAA,wBAAwB,AAAC,CACrB,GAAG,CAAE,CAAC,CACN,IAAI,CAAE,CAAC,CACP,QAAQ,CAAE,IAAI,CACd,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,QAAQ,CAAE,QAAQ,CAClB,gBAAgB,CAAE,KAAK,CACvB,WAAW,CAAE,SAAS,CACzB,AAED,AAAA,wBAAwB,CAAC,yBAAyB,AAAC,CAC/C,OAAO,CAAE,IAAI,CAChB,AAED,AAAA,+BAA+B,AAAC,CAC5B,QAAQ,CAAE,QAAQ,CAClB,QAAQ,CAAE,IAAI,CACd,aAAa,CAAE,cAAc,CAC7B,gBAAgB,CAAE,OAAO,CAC5B,AAED,AAAA,uCAAuC,AAAC,CACpC,UAAU,CAAE,MAAM,CAClB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,IAAI,CACjB,WAAW,CAAE,GAAG,CACnB,AAED,AAAA,qCAAqC,AAAC,CAClC,QAAQ,CAAE,QAAQ,CAClB,IAAI,CAAE,CAAC,CACP,GAAG,CAAE,CAAC,CACN,MAAM,CAAE,IAAI,CACZ,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,UAAU,CAAE,WAAW,CACvB,KAAK,CAAE,OAAO,CACjB,AAED,AAAA,IAAI,CAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,qCAAqC,AAAC,CAClD,KAAK,CAAE,CAAC,CACR,IAAI,CAAE,IAAI,CACb,AAED,AAAA,qCAAqC,AAAA,QAAQ,AAAC,CAC1C,OAAO,CAAE,OAAO,CAChB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,IAAI,CACpB,AAGD,AAAA,6BAA6B,AAAC,CAC1B,MAAM,CAAE,KAAK,CACb,QAAQ,CAAE,MAAM,CACnB,AAED,AAAA,gCAAgC,AAAC,CAC7B,SAAS,CAAE,iBAAiB,CAC/B,AAED,AAAA,IAAI,CAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,gCAAgC,AAAC,CAC7C,SAAS,CAAE,gBAAgB,CAC9B,AACD,AAAA,gBAAgB,AAAC,CACb,OAAO,CAAE,GAAG,CACZ,MAAM,CAAE,cAAc,CACtB,qBAAqB,CAAE,GAAG,CAC1B,kBAAkB,CAAE,GAAG,CACvB,aAAa,CAAE,GAAG,CACrB,AAED,AAAA,yBAAyB,CAAC,EAAE,AAAC,CACzB,UAAU,CAAE,KAAK,CACpB,AAED,AAAA,mBAAmB,CAAC,KAAK,AAAC,CACtB,KAAK,CAAE,IAAI,CACX,YAAY,CAAE,KAAK,CACtB,AACD,AAAA,mBAAmB,CAAC,EAAE,AAAC,CACnB,OAAO,CAAE,GAAG,CACZ,UAAU,CAAE,KAAK,CACjB,gBAAgB,CAAE,IAAI,CACzB,AACD,AAAA,mBAAmB,CAAC,EAAE,AAAC,CACnB,OAAO,CAAE,GAAG,CACf,AAED,AAAA,gBAAgB,CAAC,KAAK,AAAC,CACnB,KAAK,CAAE,IAAI,CACX,SAAS,CAAE,IAAI,CACf,YAAY,CAAE,KAAK,CACnB,aAAa,CAAE,CAAC,CACnB,AAED,AAAA,gBAAgB,CAAC,EAAE,CAAE,gBAAgB,CAAC,EAAE,AAAC,CACrC,OAAO,CAAE,GAAG,CACZ,WAAW,CAAE,UAAU,CACvB,cAAc,CAAE,MAAM,CACtB,MAAM,CAAE,cAAc,CACzB,AAED,AAAA,gBAAgB,CAAC,KAAK,CAAC,EAAE,AAAA,YAAY,CAAC,EAAE,AAAC,CACrC,UAAU,CAAE,IAAI,CACnB,AAED,AAAA,gBAAgB,CAAC,KAAK,CAAC,EAAE,AAAA,UAAW,CAAA,IAAI,EAAE,EAAE,AAAC,CACzC,gBAAgB,CAAE,OAAO,CAC5B,AAED,AAAA,gBAAgB,CAAC,KAAK,CAAC,GAAG,AAAC,CACvB,SAAS,CAAE,IAAI,CACf,UAAU,CAAE,IAAI,CACnB,AAED,MAAM,CAAC,GAAG,OAAO,gBAAgB,EAAE,IAAI,KAAI,gBAAgB,EAAE,MAAM,EAj4GnE,AAAA,YAAY,AAk4GK,CACT,IAAI,CAAE,CAAC,CACP,OAAO,CAAC,MAAM,CACd,cAAc,CAAE,IAAI,CACvB,AAr2GL,AAAA,OAAO,CAAC,cAAc,CAAC,oBAAoB,CAC3C,oBAAoB,AAu2GK,CACjB,IAAI,CAAE,CAAC,CACV,AAhqGL,AAAA,WAAW,AAkqGK,CAER,OAAO,CAAC,MAAM,CACjB,AAxmGL,AAAA,gBAAgB,AA0mGK,CACb,cAAc,CAAE,IAAI,CACvB,AA5jGL,AAAA,aAAa,AA8jGK,CACV,QAAQ,CAAE,MAAM,CACnB,AA3iGL,AAAA,iBAAiB,AA6iGK,CACd,MAAM,CAAE,EAAE,CACb,AAlgGL,AAAA,4BAA4B,CAAC,KAAK,AAAA,qBAAqB,CACvD,YAAY,CAAC,KAAK,CAClB,aAAa,CAAC,KAAK,AAAA,sBAAsB,AAogGK,CACtC,WAAW,CAAE,YAAY,CACzB,cAAc,CAAE,eAAe,CAC/B,UAAU,CAAE,gBAAgB,CAC/B,AAl+FL,AAAA,QAAQ,CAAC,KAAK,AAAA,qBAAqB,CACnC,QAAQ,CAAC,KAAK,AAAA,sBAAsB,AAo+FK,CACjC,UAAU,CAAE,eAAe,CAC9B,AAn3FL,AAAA,aAAa,CAAC,4BAA4B,CAAC,mBAAmB,AAq3FK,CAC3D,MAAM,CAAE,GAAG,CACd,AA//DL,AAAA,0BAA0B,CAAC,SAAS,CACpC,6BAA6B,CAAC,SAAS,AAigEK,CACpC,IAAI,CAAE,CAAC,CACP,OAAO,CAAC,MAAM,CACjB,AA1zCL,AAAA,kBAAkB,CAAC,YAAY,AA4zCK,CAE5B,OAAO,CAAE,MAAM,CAClB,CQl9GL,UAAU,CAAV,SAAU,CACN,IAAI,CACA,UAAU,CAAE,OAAO,CACnB,SAAS,CAAE,uBAAuB,CAGtC,EAAE,CACE,SAAS,CAAE,oBAAoB,EAIvC,AAAA,SAAS,AAAC,CACN,kBAAkB,CAAE,IAAI,CACxB,mBAAmB,CAAE,IAAI,CAC5B,AAED,AAAA,UAAU,AAAC,CACP,cAAc,CAAE,SAAS,CAC5B,AAED,UAAU,CAAV,WAAU,CACN,IAAI,CACA,UAAU,CAAE,OAAO,CACnB,SAAS,CAAE,wBAAwB,CAGvC,EAAE,CACE,SAAS,CAAE,oBAAoB,EAIvC,AAAA,YAAY,AAAC,CACT,cAAc,CAAE,WAAW,CAC9B,AAED,UAAU,CAAV,MAAU,CACN,IAAI,CACA,OAAO,CAAE,CAAC,CAGd,EAAE,CACE,OAAO,CAAE,CAAC,EAIlB,AAAA,OAAO,AAAC,CACJ,cAAc,CAAE,MAAM,CACzB,ACxCD,AAAA,cAAc,AAAC,CACX,OAAO,CAAE,IAAI,CACb,QAAQ,CAAE,MAAM,CAChB,IAAI,CAAE,CAAC,CACP,cAAc,CAAE,GAAG,CActB,AAlBD,AAMI,cANU,CAMV,SAAS,AAAC,CACN,YAAY,CP6kBoB,IAAI,COxkBvC,AAZL,AASQ,cATM,CAMV,SAAS,AAGJ,WAAW,AAAC,CACT,YAAY,CAAE,CAAC,CAClB,AAXT,AAcI,cAdU,CAcV,cAAc,AAAC,CACX,QAAQ,CAAE,MAAM,CAChB,IAAI,CAAE,CAAC,CACV,AAIL,AAAA,SAAS,AAAC,CACN,cAAc,CAAE,GAAG,CAAC,WAAwB,CAC/C,AAED,AAAA,YAAY,AAAC,CACT,cAAc,CAAE,MAAM,CAAC,WAAwB,CAClD,AAED,AAAA,iBAAiB,AAAC,CACd,cAAc,CAAE,WAAW,CAAC,WAAwB,CACvD,AAED,AAAA,oBAAoB,AAAC,CACjB,cAAc,CAAE,cAAc,CAAC,WAAwB,CAC1D,AAED,AAAA,UAAU,AAAC,CACP,SAAS,CAAE,IAAI,CAAC,WAAwB,CAC3C,AAED,AAAA,YAAY,AAAC,CACT,SAAS,CAAE,MAAM,CAAC,WAAwB,CAC7C,AAED,AAAA,kBAAkB,AAAC,CACf,SAAS,CAAE,YAAY,CAAC,WAAwB,CACnD,AAGD,AAAA,YAAY,AAAC,CACT,WAAW,CAAE,MAAM,CAAC,WAAwB,CAC5C,eAAe,CAAE,MAAM,CAAC,WAAwB,CACnD,AAGD,AAAA,sBAAsB,AAAC,CACnB,eAAe,CAAE,UAAU,CAAC,WAAwB,CACvD,AAED,AAAA,oBAAoB,AAAC,CACjB,eAAe,CAAE,QAAQ,CAAC,WAAwB,CACrD,AAED,AAAA,uBAAuB,AAAC,CACpB,eAAe,CAAE,MAAM,CAAC,WAAwB,CACnD,AAED,AAAA,wBAAwB,AAAC,CACrB,eAAe,CAAE,aAAa,CAAC,WAAwB,CAC1D,AAED,AAAA,uBAAuB,AAAC,CACpB,eAAe,CAAE,YAAY,CAAC,WAAwB,CACzD,AAED,AAAA,uBAAuB,AAAC,CAEpB,eAAe,CAAE,YAAY,CAAC,WAAwB,CACzD,AAED,AAAA,wBAAwB,AAAC,CACrB,eAAe,CAAE,OAAO,CAAC,WAAwB,CACpD,AAGD,AAAA,qBAAqB,AAAC,CAClB,WAAW,CAAE,UAAU,CAAC,WAAwB,CACnD,AAED,AAAA,mBAAmB,AAAC,CAChB,WAAW,CAAE,QAAQ,CAAC,WAAwB,CACjD,AAED,AAAA,sBAAsB,AAAC,CACnB,WAAW,CAAE,MAAM,CAAC,WAAwB,CAC/C,AAED,AAAA,wBAAwB,AAAC,CACrB,WAAW,CAAE,QAAQ,CAAC,WAAwB,CACjD,AAED,AAAA,uBAAuB,AAAC,CACpB,WAAW,CAAE,OAAO,CAAC,WAAwB,CAChD,AAGD,AAAA,oBAAoB,AAAC,CACjB,aAAa,CAAE,UAAU,CAAC,WAAwB,CACrD,AAED,AAAA,kBAAkB,AAAC,CACf,aAAa,CAAE,QAAQ,CAAC,WAAwB,CACnD,AAED,AAAA,qBAAqB,AAAC,CAClB,aAAa,CAAE,MAAM,CAAC,WAAwB,CACjD,AAED,AAAA,sBAAsB,AAAC,CACnB,aAAa,CAAE,aAAa,CAAC,WAAwB,CACxD,AAED,AAAA,qBAAqB,AAAC,CAClB,aAAa,CAAE,YAAY,CAAC,WAAwB,CACvD,AAED,AAAA,sBAAsB,AAAC,CACnB,aAAa,CAAE,OAAO,CAAC,WAAwB,CAClD,AAGD,AAAA,gBAAgB,AAAC,CACb,UAAU,CAAE,IAAI,CAAC,WAAwB,CAC5C,AAED,AAAA,iBAAiB,AAAC,CACd,UAAU,CAAE,UAAU,CAAC,WAAwB,CAClD,AAED,AAAA,eAAe,AAAC,CACZ,UAAU,CAAE,QAAQ,CAAC,WAAwB,CAChD,AAED,AAAA,kBAAkB,AAAC,CACf,UAAU,CAAE,MAAM,CAAC,WAAwB,CAC9C,AAED,AAAA,oBAAoB,AAAC,CACjB,UAAU,CAAE,QAAQ,CAAC,WAAwB,CAChD,AAED,AAAA,mBAAmB,AAAC,CAChB,UAAU,CAAE,OAAO,CAAC,WAAwB,CAC/C,AAKO,AAAA,WAAW,AAAK,CACZ,IAAI,CAAE,CAAK,CAAC,CAAK,CAAC,EAAE,CACvB,AAFD,AAAA,WAAW,AAAK,CACZ,IAAI,CAAE,CAAK,CAAC,CAAK,CAAC,EAAE,CACvB,AAFD,AAAA,WAAW,AAAK,CACZ,IAAI,CAAE,CAAK,CAAC,CAAK,CAAC,EAAE,CACvB,AAFD,AAAA,WAAW,AAAK,CACZ,IAAI,CAAE,CAAK,CAAC,CAAK,CAAC,EAAE,CACvB,AAFD,AAAA,WAAW,AAAK,CACZ,IAAI,CAAE,CAAK,CAAC,CAAK,CAAC,EAAE,CACvB,AAFD,AAAA,WAAW,AAAK,CACZ,IAAI,CAAE,CAAK,CAAC,CAAK,CAAC,EAAE,CACvB,AAFD,AAAA,WAAW,AAAK,CACZ,IAAI,CAAE,CAAK,CAAC,CAAK,CAAC,EAAE,CACvB,AAFD,AAAA,WAAW,AAAK,CACZ,IAAI,CAAE,CAAK,CAAC,CAAK,CAAC,EAAE,CACvB,AAFD,AAAA,WAAW,AAAK,CACZ,IAAI,CAAE,CAAK,CAAC,CAAK,CAAC,EAAE,CACvB,AAFD,AAAA,YAAY,AAAI,CACZ,IAAI,CAAE,EAAK,CAAC,EAAK,CAAC,EAAE,CACvB,AAFD,AAAA,YAAY,AAAI,CACZ,IAAI,CAAE,EAAK,CAAC,EAAK,CAAC,EAAE,CACvB,AAFD,AAAA,YAAY,AAAI,CACZ,IAAI,CAAE,EAAK,CAAC,EAAK,CAAC,EAAE,CACvB,ACjKT,AAAA,mBAAmB,AAAC,CAChB,OAAO,CAAE,CAAC,CAAC,WAA2B,CACzC,AAED,AAAA,uBAAuB,AAAC,CACpB,WAAW,CAAE,CAAC,CAAC,WAA2B,CAC7C,AAED,AAAA,yBAAyB,AAAC,CACtB,aAAa,CAAE,CAAC,CAAC,WAA2B,CAC/C,AAED,AAAA,0BAA0B,AAAC,CACvB,cAAc,CAAE,CAAC,CAAC,WAA2B,CAChD,AAED,AAAA,wBAAwB,AAAC,CACrB,YAAY,CAAE,CAAC,CAAC,WAA2B,CAC9C,AAED,AAAA,mBAAmB,AAAC,CAChB,MAAM,CAAE,CAAC,CAAC,WAA2B,CACxC,AAED,AAAA,uBAAuB,AAAC,CACpB,UAAU,CAAE,CAAC,CAAC,WAA2B,CAC5C,AAED,AAAA,yBAAyB,AAAC,CACtB,YAAY,CAAE,CAAC,CAAC,WAA2B,CAC9C,AAED,AAAA,0BAA0B,AAAC,CACvB,aAAa,CAAE,CAAC,CAAC,WAA2B,CAC/C,AAED,AAAA,wBAAwB,AAAC,CACrB,WAAW,CAAE,CAAC,CAAC,WAA2B,CAC7C,AAGD,AAAA,cAAc,AAAC,CACX,OAAO,CRwgB4B,GAAG,CQxgBd,WAA2B,CACtD,AAED,AAAA,kBAAkB,AAAC,CACf,WAAW,CRogBwB,GAAG,CQpgBV,WAA2B,CAC1D,AAED,AAAA,oBAAoB,AAAC,CACjB,aAAa,CRggBsB,GAAG,CQhgBR,WAA2B,CAC5D,AAED,AAAA,qBAAqB,AAAC,CAClB,cAAc,CR4fqB,GAAG,CQ5fP,WAA2B,CAC7D,AAED,AAAA,mBAAmB,AAAC,CAChB,YAAY,CRwfuB,GAAG,CQxfT,WAA2B,CAC3D,AAED,AAAA,cAAc,AAAC,CACX,MAAM,CRof6B,GAAG,CQpff,WAA2B,CACrD,AAED,AAAA,kBAAkB,AAAC,CACf,UAAU,CRgfyB,GAAG,CQhfX,WAA2B,CACzD,AAED,AAAA,oBAAoB,AAAC,CACjB,YAAY,CR4euB,GAAG,CQ5eT,WAA2B,CAC3D,AAED,AAAA,qBAAqB,AAAC,CAClB,aAAa,CRwesB,GAAG,CQxeR,WAA2B,CAC5D,AAED,AAAA,mBAAmB,AAAC,CAChB,WAAW,CRoewB,GAAG,CQpeV,WAA2B,CAC1D,ANhDO,MAAM,EAAE,SAAS,EAAE,KAAK,EMmDhC,AAAA,qBAAqB,AAAC,CNlDV,OAAQ,CAAC,eAAC,CMoDrB,CNlDO,MAAM,EAAE,SAAS,EAAE,KAAK,EMgDhC,AAAA,qBAAqB,AAAC,CN/CV,OAAQ,CAAC,eAAC,CMiDrB,CN/CO,MAAM,EAAE,SAAS,EAAE,KAAK,EM6ChC,AAAA,qBAAqB,AAAC,CN5CV,OAAQ,CAAC,eAAC,CM8CrB,CN3CO,MAAM,EAAE,SAAS,EAAE,KAAK,EM6ChC,AAAA,yBAAyB,AAAC,CN5Cd,WAA6B,CAAC,eAAC,CM8C1C,CN5CO,MAAM,EAAE,SAAS,EAAE,KAAK,EM0ChC,AAAA,yBAAyB,AAAC,CNzCd,WAA6B,CAAC,eAAC,CM2C1C,CNzCO,MAAM,EAAE,SAAS,EAAE,KAAK,EMuChC,AAAA,yBAAyB,AAAC,CNtCd,WAA6B,CAAC,eAAC,CMwC1C,CN/CO,MAAM,EAAE,SAAS,EAAE,KAAK,EMiDhC,AAAA,2BAA2B,AAAC,CNhDhB,aAA6B,CAAC,eAAC,CMkD1C,CNhDO,MAAM,EAAE,SAAS,EAAE,KAAK,EM8ChC,AAAA,2BAA2B,AAAC,CN7ChB,aAA6B,CAAC,eAAC,CM+C1C,CN7CO,MAAM,EAAE,SAAS,EAAE,KAAK,EM2ChC,AAAA,2BAA2B,AAAC,CN1ChB,aAA6B,CAAC,eAAC,CM4C1C,CNnDO,MAAM,EAAE,SAAS,EAAE,KAAK,EMqDhC,AAAA,4BAA4B,AAAC,CNpDjB,cAA6B,CAAC,eAAC,CMsD1C,CNpDO,MAAM,EAAE,SAAS,EAAE,KAAK,EMkDhC,AAAA,4BAA4B,AAAC,CNjDjB,cAA6B,CAAC,eAAC,CMmD1C,CNjDO,MAAM,EAAE,SAAS,EAAE,KAAK,EM+ChC,AAAA,4BAA4B,AAAC,CN9CjB,cAA6B,CAAC,eAAC,CMgD1C,CNvDO,MAAM,EAAE,SAAS,EAAE,KAAK,EMyDhC,AAAA,0BAA0B,AAAC,CNxDf,YAA6B,CAAC,eAAC,CM0D1C,CNxDO,MAAM,EAAE,SAAS,EAAE,KAAK,EMsDhC,AAAA,0BAA0B,AAAC,CNrDf,YAA6B,CAAC,eAAC,CMuD1C,CNrDO,MAAM,EAAE,SAAS,EAAE,KAAK,EMmDhC,AAAA,0BAA0B,AAAC,CNlDf,YAA6B,CAAC,eAAC,CMoD1C,CNrEO,MAAM,EAAE,SAAS,EAAE,KAAK,EMuEhC,AAAA,qBAAqB,AAAC,CNtEV,MAAQ,CAAC,eAAC,CMwErB,CNtEO,MAAM,EAAE,SAAS,EAAE,KAAK,EMoEhC,AAAA,qBAAqB,AAAC,CNnEV,MAAQ,CAAC,eAAC,CMqErB,CNnEO,MAAM,EAAE,SAAS,EAAE,KAAK,EMiEhC,AAAA,qBAAqB,AAAC,CNhEV,MAAQ,CAAC,eAAC,CMkErB,CN/DO,MAAM,EAAE,SAAS,EAAE,KAAK,EMiEhC,AAAA,yBAAyB,AAAC,CNhEd,UAA6B,CAAC,eAAC,CMkE1C,CNhEO,MAAM,EAAE,SAAS,EAAE,KAAK,EM8DhC,AAAA,yBAAyB,AAAC,CN7Dd,UAA6B,CAAC,eAAC,CM+D1C,CN7DO,MAAM,EAAE,SAAS,EAAE,KAAK,EM2DhC,AAAA,yBAAyB,AAAC,CN1Dd,UAA6B,CAAC,eAAC,CM4D1C,CNnEO,MAAM,EAAE,SAAS,EAAE,KAAK,EMqEhC,AAAA,2BAA2B,AAAC,CNpEhB,YAA6B,CAAC,eAAC,CMsE1C,CNpEO,MAAM,EAAE,SAAS,EAAE,KAAK,EMkEhC,AAAA,2BAA2B,AAAC,CNjEhB,YAA6B,CAAC,eAAC,CMmE1C,CNjEO,MAAM,EAAE,SAAS,EAAE,KAAK,EM+DhC,AAAA,2BAA2B,AAAC,CN9DhB,YAA6B,CAAC,eAAC,CMgE1C,CNvEO,MAAM,EAAE,SAAS,EAAE,KAAK,EMyEhC,AAAA,4BAA4B,AAAC,CNxEjB,aAA6B,CAAC,eAAC,CM0E1C,CNxEO,MAAM,EAAE,SAAS,EAAE,KAAK,EMsEhC,AAAA,4BAA4B,AAAC,CNrEjB,aAA6B,CAAC,eAAC,CMuE1C,CNrEO,MAAM,EAAE,SAAS,EAAE,KAAK,EMmEhC,AAAA,4BAA4B,AAAC,CNlEjB,aAA6B,CAAC,eAAC,CMoE1C,CN3EO,MAAM,EAAE,SAAS,EAAE,KAAK,EM6EhC,AAAA,0BAA0B,AAAC,CN5Ef,WAA6B,CAAC,eAAC,CM8E1C,CN5EO,MAAM,EAAE,SAAS,EAAE,KAAK,EM0EhC,AAAA,0BAA0B,AAAC,CNzEf,WAA6B,CAAC,eAAC,CM2E1C,CNzEO,MAAM,EAAE,SAAS,EAAE,KAAK,EMuEhC,AAAA,0BAA0B,AAAC,CNtEf,WAA6B,CAAC,eAAC,CMwE1C,CNvHO,MAAM,EAAE,SAAS,EAAE,KAAK,EM0HhC,AAAA,oBAAoB,AAAC,CNzHT,OAAQ,CAAC,eAAC,CM2HrB,CNzHO,MAAM,EAAE,SAAS,EAAE,KAAK,EMuHhC,AAAA,oBAAoB,AAAC,CNtHT,OAAQ,CAAC,eAAC,CMwHrB,CNtHO,MAAM,EAAE,SAAS,EAAE,KAAK,EMoHhC,AAAA,oBAAoB,AAAC,CNnHT,OAAQ,CAAC,eAAC,CMqHrB,CNlHO,MAAM,EAAE,SAAS,EAAE,KAAK,EMoHhC,AAAA,wBAAwB,AAAC,CNnHb,WAA6B,CAAC,eAAC,CMqH1C,CNnHO,MAAM,EAAE,SAAS,EAAE,KAAK,EMiHhC,AAAA,wBAAwB,AAAC,CNhHb,WAA6B,CAAC,eAAC,CMkH1C,CNhHO,MAAM,EAAE,SAAS,EAAE,KAAK,EM8GhC,AAAA,wBAAwB,AAAC,CN7Gb,WAA6B,CAAC,eAAC,CM+G1C,CNtHO,MAAM,EAAE,SAAS,EAAE,KAAK,EMwHhC,AAAA,0BAA0B,AAAC,CNvHf,aAA6B,CAAC,eAAC,CMyH1C,CNvHO,MAAM,EAAE,SAAS,EAAE,KAAK,EMqHhC,AAAA,0BAA0B,AAAC,CNpHf,aAA6B,CAAC,eAAC,CMsH1C,CNpHO,MAAM,EAAE,SAAS,EAAE,KAAK,EMkHhC,AAAA,0BAA0B,AAAC,CNjHf,aAA6B,CAAC,eAAC,CMmH1C,CN1HO,MAAM,EAAE,SAAS,EAAE,KAAK,EM4HhC,AAAA,2BAA2B,AAAC,CN3HhB,cAA6B,CAAC,eAAC,CM6H1C,CN3HO,MAAM,EAAE,SAAS,EAAE,KAAK,EMyHhC,AAAA,2BAA2B,AAAC,CNxHhB,cAA6B,CAAC,eAAC,CM0H1C,CNxHO,MAAM,EAAE,SAAS,EAAE,KAAK,EMsHhC,AAAA,2BAA2B,AAAC,CNrHhB,cAA6B,CAAC,eAAC,CMuH1C,CN9HO,MAAM,EAAE,SAAS,EAAE,KAAK,EMgIhC,AAAA,yBAAyB,AAAC,CN/Hd,YAA6B,CAAC,eAAC,CMiI1C,CN/HO,MAAM,EAAE,SAAS,EAAE,KAAK,EM6HhC,AAAA,yBAAyB,AAAC,CN5Hd,YAA6B,CAAC,eAAC,CM8H1C,CN5HO,MAAM,EAAE,SAAS,EAAE,KAAK,EM0HhC,AAAA,yBAAyB,AAAC,CNzHd,YAA6B,CAAC,eAAC,CM2H1C,CN5IO,MAAM,EAAE,SAAS,EAAE,KAAK,EM8IhC,AAAA,oBAAoB,AAAC,CN7IT,MAAQ,CAAC,eAAC,CM+IrB,CN7IO,MAAM,EAAE,SAAS,EAAE,KAAK,EM2IhC,AAAA,oBAAoB,AAAC,CN1IT,MAAQ,CAAC,eAAC,CM4IrB,CN1IO,MAAM,EAAE,SAAS,EAAE,KAAK,EMwIhC,AAAA,oBAAoB,AAAC,CNvIT,MAAQ,CAAC,eAAC,CMyIrB,CNtIO,MAAM,EAAE,SAAS,EAAE,KAAK,EMwIhC,AAAA,wBAAwB,AAAC,CNvIb,UAA6B,CAAC,eAAC,CMyI1C,CNvIO,MAAM,EAAE,SAAS,EAAE,KAAK,EMqIhC,AAAA,wBAAwB,AAAC,CNpIb,UAA6B,CAAC,eAAC,CMsI1C,CNpIO,MAAM,EAAE,SAAS,EAAE,KAAK,EMkIhC,AAAA,wBAAwB,AAAC,CNjIb,UAA6B,CAAC,eAAC,CMmI1C,CN1IO,MAAM,EAAE,SAAS,EAAE,KAAK,EM4IhC,AAAA,0BAA0B,AAAC,CN3If,YAA6B,CAAC,eAAC,CM6I1C,CN3IO,MAAM,EAAE,SAAS,EAAE,KAAK,EMyIhC,AAAA,0BAA0B,AAAC,CNxIf,YAA6B,CAAC,eAAC,CM0I1C,CNxIO,MAAM,EAAE,SAAS,EAAE,KAAK,EMsIhC,AAAA,0BAA0B,AAAC,CNrIf,YAA6B,CAAC,eAAC,CMuI1C,CN9IO,MAAM,EAAE,SAAS,EAAE,KAAK,EMgJhC,AAAA,2BAA2B,AAAC,CN/IhB,aAA6B,CAAC,eAAC,CMiJ1C,CN/IO,MAAM,EAAE,SAAS,EAAE,KAAK,EM6IhC,AAAA,2BAA2B,AAAC,CN5IhB,aAA6B,CAAC,eAAC,CM8I1C,CN5IO,MAAM,EAAE,SAAS,EAAE,KAAK,EM0IhC,AAAA,2BAA2B,AAAC,CNzIhB,aAA6B,CAAC,eAAC,CM2I1C,CNlJO,MAAM,EAAE,SAAS,EAAE,KAAK,EMoJhC,AAAA,yBAAyB,AAAC,CNnJd,WAA6B,CAAC,eAAC,CMqJ1C,CNnJO,MAAM,EAAE,SAAS,EAAE,KAAK,EMiJhC,AAAA,yBAAyB,AAAC,CNhJd,WAA6B,CAAC,eAAC,CMkJ1C,CNhJO,MAAM,EAAE,SAAS,EAAE,KAAK,EM8IhC,AAAA,yBAAyB,AAAC,CN7Id,WAA6B,CAAC,eAAC,CM+I1C,CLjKW,MAAM,EAAE,SAAS,EAAE,KAAK,EKoKpC,AAAA,qBAAqB,AAAC,CLnKN,OAAQ,CAAC,8BAAC,CKqKzB,CLnKW,MAAM,EAAE,SAAS,EAAE,KAAK,EKiKpC,AAAA,qBAAqB,AAAC,CLhKN,OAAQ,CAAC,8BAAC,CKkKzB,CLhKW,MAAM,EAAE,SAAS,EAAE,KAAK,EK8JpC,AAAA,qBAAqB,AAAC,CL7JN,OAAQ,CAAC,8BAAC,CK+JzB,CL5JW,MAAM,EAAE,SAAS,EAAE,KAAK,EK8JpC,AAAA,yBAAyB,AAAC,CL7JV,WAAY,CAAK,eAAC,CK+JjC,CL7JW,MAAM,EAAE,SAAS,EAAE,KAAK,EK2JpC,AAAA,yBAAyB,AAAC,CL1JV,WAAY,CAAK,eAAC,CK4JjC,CL1JW,MAAM,EAAE,SAAS,EAAE,KAAK,EKwJpC,AAAA,yBAAyB,AAAC,CLvJV,WAAY,CAAK,eAAC,CKyJjC,CLtJW,MAAM,EAAE,SAAS,EAAE,KAAK,EKwJpC,AAAA,2BAA2B,AAAC,CLvJZ,aAAc,CAAO,eAAC,CKyJrC,CLvJW,MAAM,EAAE,SAAS,EAAE,KAAK,EKqJpC,AAAA,2BAA2B,AAAC,CLpJZ,aAAc,CAAO,eAAC,CKsJrC,CLpJW,MAAM,EAAE,SAAS,EAAE,KAAK,EKkJpC,AAAA,2BAA2B,AAAC,CLjJZ,aAAc,CAAO,eAAC,CKmJrC,CLhJW,MAAM,EAAE,SAAS,EAAE,KAAK,EKkJpC,AAAA,4BAA4B,AAAC,CLjJb,cAAe,CAAQ,eAAC,CKmJvC,CLjJW,MAAM,EAAE,SAAS,EAAE,KAAK,EK+IpC,AAAA,4BAA4B,AAAC,CL9Ib,cAAe,CAAQ,eAAC,CKgJvC,CL9IW,MAAM,EAAE,SAAS,EAAE,KAAK,EK4IpC,AAAA,4BAA4B,AAAC,CL3Ib,cAAe,CAAQ,eAAC,CK6IvC,CL1IW,MAAM,EAAE,SAAS,EAAE,KAAK,EK4IpC,AAAA,0BAA0B,AAAC,CL3IX,YAAa,CAAM,eAAC,CK6InC,CL3IW,MAAM,EAAE,SAAS,EAAE,KAAK,EKyIpC,AAAA,0BAA0B,AAAC,CLxIX,YAAa,CAAM,eAAC,CK0InC,CLxIW,MAAM,EAAE,SAAS,EAAE,KAAK,EKsIpC,AAAA,0BAA0B,AAAC,CLrIX,YAAa,CAAM,eAAC,CKuInC,CLtLW,MAAM,EAAE,SAAS,EAAE,KAAK,EKwLpC,AAAA,qBAAqB,AAAC,CLvLN,MAAQ,CAAC,8BAAC,CKyLzB,CLvLW,MAAM,EAAE,SAAS,EAAE,KAAK,EKqLpC,AAAA,qBAAqB,AAAC,CLpLN,MAAQ,CAAC,8BAAC,CKsLzB,CLpLW,MAAM,EAAE,SAAS,EAAE,KAAK,EKkLpC,AAAA,qBAAqB,AAAC,CLjLN,MAAQ,CAAC,8BAAC,CKmLzB,CLhLW,MAAM,EAAE,SAAS,EAAE,KAAK,EKkLpC,AAAA,yBAAyB,AAAC,CLjLV,UAAY,CAAK,eAAC,CKmLjC,CLjLW,MAAM,EAAE,SAAS,EAAE,KAAK,EK+KpC,AAAA,yBAAyB,AAAC,CL9KV,UAAY,CAAK,eAAC,CKgLjC,CL9KW,MAAM,EAAE,SAAS,EAAE,KAAK,EK4KpC,AAAA,yBAAyB,AAAC,CL3KV,UAAY,CAAK,eAAC,CK6KjC,CL1KW,MAAM,EAAE,SAAS,EAAE,KAAK,EK4KpC,AAAA,2BAA2B,AAAC,CL3KZ,YAAc,CAAO,eAAC,CK6KrC,CL3KW,MAAM,EAAE,SAAS,EAAE,KAAK,EKyKpC,AAAA,2BAA2B,AAAC,CLxKZ,YAAc,CAAO,eAAC,CK0KrC,CLxKW,MAAM,EAAE,SAAS,EAAE,KAAK,EKsKpC,AAAA,2BAA2B,AAAC,CLrKZ,YAAc,CAAO,eAAC,CKuKrC,CLpKW,MAAM,EAAE,SAAS,EAAE,KAAK,EKsKpC,AAAA,4BAA4B,AAAC,CLrKb,aAAe,CAAQ,eAAC,CKuKvC,CLrKW,MAAM,EAAE,SAAS,EAAE,KAAK,EKmKpC,AAAA,4BAA4B,AAAC,CLlKb,aAAe,CAAQ,eAAC,CKoKvC,CLlKW,MAAM,EAAE,SAAS,EAAE,KAAK,EKgKpC,AAAA,4BAA4B,AAAC,CL/Jb,aAAe,CAAQ,eAAC,CKiKvC,CL9JW,MAAM,EAAE,SAAS,EAAE,KAAK,EKgKpC,AAAA,0BAA0B,AAAC,CL/JX,WAAa,CAAM,eAAC,CKiKnC,CL/JW,MAAM,EAAE,SAAS,EAAE,KAAK,EK6JpC,AAAA,0BAA0B,AAAC,CL5JX,WAAa,CAAM,eAAC,CK8JnC,CL5JW,MAAM,EAAE,SAAS,EAAE,KAAK,EK0JpC,AAAA,0BAA0B,AAAC,CLzJX,WAAa,CAAM,eAAC,CK2JnC,CC5LD,AAAA,mBAAmB,CAAC,eAAe,AAAC,CAChC,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CASf,ANzBW,MAAM,EAAE,SAAS,EAAE,KAAK,EMcpC,AAGI,mBAHe,CAAC,eAAe,CAG/B,cAAc,CAHlB,mBAAmB,CAAC,eAAe,CAI/B,oBAAoB,AAAC,CNjBT,OAAQ,CAAC,mBAAC,CMuBrB,CNrBO,MAAM,EAAE,SAAS,EAAE,KAAK,EMWpC,AAGI,mBAHe,CAAC,eAAe,CAG/B,cAAc,CAHlB,mBAAmB,CAAC,eAAe,CAI/B,oBAAoB,AAAC,CNdT,OAAQ,CAAC,mBAAC,CMoBrB,CNlBO,MAAM,EAAE,SAAS,EAAE,KAAK,EMQpC,AAGI,mBAHe,CAAC,eAAe,CAG/B,cAAc,CAHlB,mBAAmB,CAAC,eAAe,CAI/B,oBAAoB,AAAC,CNXT,OAAQ,CAAC,mBAAC,CMiBrB,CAVL,AAMQ,mBANW,CAAC,eAAe,CAG/B,cAAc,CAGV,cAAc,CANtB,mBAAmB,CAAC,eAAe,CAG/B,cAAc,CAIV,oBAAoB,CAP5B,mBAAmB,CAAC,eAAe,CAI/B,oBAAoB,CAEhB,cAAc,CANtB,mBAAmB,CAAC,eAAe,CAI/B,oBAAoB,CAGhB,oBAAoB,AAAC,CACjB,OAAO,CAAE,CAAC,CACb,Ab9BT,AAAA,IAAI,AcIC,CACD,MAAM,CAAE,IAAI,CACf,AdDD,AAAA,IAAI,AcGC,CACD,UAAU,CAAE,IAAI,CAChB,KAAK,CXY2C,IAAO,CWXvD,gBAAgB,CXuCgC,IAAO,CWtCvD,WAAW,CXQqC,WAAW,CAAE,UAAU,CWPvE,SAAS,CXQuC,IAAI,CWPpD,WAAW,CV4FyB,MAAM,CU3F1C,WAAW,CV2GyB,OAAW,CU1GlD,AdsBD,AAAA,CAAC,AcpBC,CACE,eAAe,CAAE,KAAK,CACtB,aAAa,CAAE,KAAK,CACpB,kBAAkB,CAAE,KAAK,CACzB,UAAU,CAAE,KAAK,CACjB,KAAK,CXnB2C,OAAO,CWoBvD,2BAA2B,CAAE,MAAM,CACtC,AAED,AAAA,CAAC,AAAA,MAAM,AAAC,CACJ,eAAe,CAAE,SAAS,CAC1B,KAAK,CV0C+B,OAAwB,CUzC/D,AdijCD,AAAA,CAAC,AAAA,MAAM,Ac9iCC,CACJ,OAAO,CAAE,WAAW,CACvB,AdMD,AAAA,CAAC,AAAA,OAAO,CACR,CAAC,AAAA,MAAM,AcHC,CACJ,OAAO,CAAE,CAAC,CACb,AAGD,AAAA,KAAK,AAAA,MAAM,CACX,MAAM,AAAA,MAAM,CACZ,QAAQ,AAAA,MAAM,AAAC,CACX,OAAO,CAAE,CAAC,CACb,AAGD,AAAA,GAAG,CAAA,AAAA,QAAC,AAAA,CAAU,CACV,OAAO,CAAE,CAAC,CACb,AAGD,AAAA,SAAS,EACT,AAAA,QAAC,AAAA,CAAU,CACP,MAAM,CAAE,WAAW,CAEnB,kBAAkB,CAAE,IAAI,CACxB,UAAU,CAAE,IAAI,CAChB,MAAM,CAAE,iBAAiB,CAC5B,Ad1DD,AAAA,IAAI,AeLC,CACD,MAAM,CAAE,IAAI,CACf,AAED,AAAA,UAAU,AAAC,CACP,OAAO,CAAE,IAAI,CACb,MAAM,CAAE,IAAI,CACf,AACD,AAAA,eAAe,AAAC,CACZ,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,IAAI,CACT,KAAK,CAAE,IAAI,CACX,KAAK,CAAE,KAAK,CACf,AAED,AAAA,eAAe,AAAC,CACZ,OAAO,CAAE,IAAI,CAChB,AAED,AAAA,gBAAgB,AAAC,CACb,OAAO,CAAE,IAAI,CACb,IAAI,CAAE,CAAC,CACP,cAAc,CAAE,MAAM,CACtB,eAAe,CAAE,YAAY,CAChC,AACD,AAAA,sBAAsB,AAAC,CACnB,KAAK,CAAE,KAAK,CACZ,MAAM,CAAE,MAAM,CACjB,AAED,AACI,eADW,CACX,MAAM,AAAC,CACH,OAAO,CAAE,IAAI,CAChB,AAHL,AAKI,eALW,CAKX,IAAI,AAAC,CACD,aAAa,CAAE,IAAI,CACtB,AAPL,AAUI,eAVW,CAUX,WAAW,AAAC,CACR,KAAK,CAAE,IAAI,CACX,WAAW,CAAE,MAAM,CA8CtB,AA1DL,AAcQ,eAdO,CAUX,WAAW,CAIP,cAAc,AAAC,CACX,IAAI,CAAE,CAAC,CACP,aAAa,CAAE,CAAC,CAChB,SAAS,CZ1B+B,IAAI,CY2B5C,WAAW,CAAE,GAAG,CACnB,AAnBT,AAqBQ,eArBO,CAUX,WAAW,CAWP,aAAa,AAAC,CACV,IAAI,CAAE,CAAC,CACP,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,IAAI,CAiCd,AAzDT,AA0BY,eA1BG,CAUX,WAAW,CAWP,aAAa,CAKT,UAAU,AAAC,CAQP,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,GAAG,CACR,IAAI,CX6JoB,IAAI,CW5J5B,iBAAiB,CAAE,gBAAgB,CACnC,cAAc,CAAE,gBAAgB,CAChC,aAAa,CAAE,gBAAgB,CAC/B,YAAY,CAAE,gBAAgB,CAC9B,SAAS,CAAE,gBAAgB,CAO9B,AAhDb,AA2BgB,eA3BD,CAUX,WAAW,CAWP,aAAa,CAKT,UAAU,AACL,OAAO,AAAC,CACL,kBAAkB,CAAE,UAAU,CAC9B,eAAe,CAAE,UAAU,CAC3B,aAAa,CAAE,UAAU,CACzB,UAAU,CAAE,UAAU,CACzB,AAhCjB,AA2CgB,eA3CD,CAUX,WAAW,CAWP,aAAa,CAsBJ,mBAAS,AAAA,MAAM,CA3ChC,eAAe,CAUX,WAAW,CAWP,aAAa,CAuBJ,oBAAU,AAAA,MAAM,AAAC,CACd,MAAM,CAAE,OAAO,CACf,KAAK,CZxE2B,OAAO,CYyE1C,AA/CjB,AAkDY,eAlDG,CAUX,WAAW,CAWP,aAAa,CA6BT,aAAa,AAAC,CACV,OAAO,CX6IiB,GAAG,CACH,IAAI,CADJ,GAAG,CW7IgD,IAAI,CAClF,AApDb,AAsDY,eAtDG,CAUX,WAAW,CAWP,aAAa,CAiCT,aAAa,AAAA,MAAM,GAAG,UAAU,AAAA,OAAO,AAAC,CACpC,KAAK,CZjF+B,OAAO,CYkF9C,AAKb,AAAA,2BAA2B,AAAC,CACxB,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,MAAM,CACnB,cAAc,CAAE,GAAG,CACnB,SAAS,CAAE,MAAM,CACjB,eAAe,CAAE,aAAa,CAC9B,MAAM,CAAE,QAAQ,CASnB,AAfD,AAQI,2BARuB,CAQvB,EAAE,AAAC,CACC,IAAI,CAAE,CAAC,CACP,MAAM,CAAE,gBAAgB,CACxB,MAAM,CAAE,CAAC,CACT,YAAY,CAAE,OAAO,CACrB,UAAU,CAAE,iBAAiB,CAChC,AAGL,AAAA,iBAAiB,AAAC,CACd,KAAK,CAAE,OAAO,CACjB,AAGD,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,MAAM,EAzGpC,AAAA,eAAe,AA0GK,CACZ,KAAK,CAAE,KAAK,CACf,AArGL,AAAA,eAAe,AAuGK,CACZ,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,KAAK,CACd,IAAI,CAAE,CAAC,CACP,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACf,AAED,AAAA,gBAAgB,AAAC,CACb,MAAM,CAAE,IAAI,CACZ,SAAS,CAAE,4BAA4B,CACvC,UAAU,CAAE,UAAY,CAAC,SAAS,CAAC,2CAA2C,CAC9E,UAAU,CAAE,UAAY,CAAC,SAAS,CAC1B,2EAAuF,CAC3F,UAAY,CAAC,SAAS,CAAC,2CAA2C,CACtE,UAAU,CAAE,UAAY,CAAC,SAAS,CAAC,4EAId,CACjB,UAAY,CAAC,SAAS,CAAC,2CAA2C,CACtE,UAAU,CAAE,UAAY,CAAC,SAAS,CAAC,+HAA2I,CAC1K,UAAY,CAAC,SAAS,CAAC,2CAA2C,CACtE,UAAU,CAAE,UAAY,CAAC,SAAS,CAAC,+EAId,CACjB,UAAY,CAAC,SAAS,CAAC,2CAA2C,CACtE,UAAU,CAAE,UAAY,CAAC,SAAS,CAAC,0EAId,CACjB,UAAY,CAAC,SAAS,CAAC,2CAA2C,CACtE,UAAU,CAAE,UAAY,CAAC,SAAS,CAAC,2EAId,CACjB,UAAY,CAAC,SAAS,CAAC,2CAA2C,CACtE,iBAAiB,CAAE,oDAAoD,CACvE,SAAS,CAAE,oDAAoD,CAClE,AAxIL,AAAA,sBAAsB,AA0IK,CACnB,KAAK,CAAE,KAAK,CACf,CAIL,UAAU,CAAV,WAAU,CACN,IAAI,CACA,iBAAiB,CAAE,mDAAmD,CACtE,SAAS,CAAE,mDAAmD,EAGtE,kBAAkB,CAAlB,WAAkB,CACd,IAAI,CACA,iBAAiB,CAAE,mDAAmD,CACtE,SAAS,CAAE,mDAAmD,EC9KtE,AAAA,aAAa,AAAC,CACV,OAAO,CAAE,IAAI,CACb,IAAI,CAAE,CAAC,CACP,SAAS,CAAE,IAAI,CACf,MAAM,CZqN8B,IAAI,CYpNxC,OAAO,CZqN6B,GAAG,CACH,IAAI,CYrNxC,UAAU,CAAE,4DAA4D,CACxE,KAAK,CbW2C,IAAO,CaVvD,MAAM,CAAE,GAAG,CAAC,KAAK,Cbb+B,OAAO,CacvD,aAAa,CZgCuB,GAAG,CY/BvC,gBAAgB,CZuNoB,IAAI,CYtNxC,gBAAgB,CAAE,IAAI,CACtB,UAAU,CAAE,IAAI,CAChB,SAAS,CbIuC,IAAI,CaHpD,WAAW,CZwGyB,OAAW,CYvG/C,UAAU,CAAE,IAAI,CAChB,eAAe,CAAE,IAAI,CACrB,kBAAkB,CAAE,IAAI,CAI3B,AAED,AAAA,aAAa,AAAA,IAAK,EAAA,AAAA,QAAC,AAAA,EAAU,MAAM,AAAC,CAChC,YAAY,CbxBoC,OAAO,CayBvD,OAAO,CAAE,CAAC,CACV,gBAAgB,CZwMoB,IAAI,CYvMxC,UAAU,CAAE,IAAI,CACnB,AAED,AAAA,aAAa,CAAA,AAAA,QAAC,AAAA,EACd,aAAa,CAAA,AAAA,QAAC,AAAA,EACd,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,aAAa,AAAC,CAC7B,OAAO,CAAE,CAAC,CACV,gBAAgB,CAAE,OAAO,CAC5B,AAED,AAAA,aAAa,CAAA,AAAA,QAAC,AAAA,EACd,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,aAAa,AAAC,CAC7B,MAAM,CAAE,WAAW,CACtB,AAGD,AAAA,mBAAmB,AAAC,CAChB,MAAM,CAAE,CAAC,CACT,aAAa,CAAE,GAAG,CAAC,KAAK,CblDwB,OAAO,CamDvD,aAAa,CAAE,CAAC,CAChB,gBAAgB,CAAE,WAAW,CAKhC,AATD,AAMI,mBANe,AAMd,MAAM,AAAC,CACJ,gBAAgB,CAAE,WAAW,CAChC,AhB2pFL,AAAA,oBAAoB,CgBjmFpB,WAAW,CAiBP,GAAG,CAAA,AAAA,KAAC,EAAO,SAAS,AAAhB,EAAoB,cAAc,CAjB1C,WAAW,CAkBP,GAAG,CAAA,AAAA,KAAC,EAAO,UAAU,AAAjB,EAAqB,cAAc,CAlB3C,WAAW,CAmBP,GAAG,CAAA,AAAA,KAAC,EAAO,YAAY,AAAnB,EAAuB,cAAc,AAzExB,CACjB,QAAQ,CAAE,MAAM,CAChB,IAAI,CAAE,CAAC,CACP,UAAU,CAAE,IAAI,CAChB,OAAO,CZ+J6B,GAAG,CACH,IAAI,CY/JxC,aAAa,CAAE,GAAG,CAAC,KAAK,CZiLM,OAAO,CYhLrC,SAAS,Cb5CuC,IAAI,Ca6CpD,WAAW,CZwDyB,OAAW,CYnDlD,AAZD,AASI,oBATgB,CASZ,cAAc,CA6CtB,WAAW,CAiBP,GAAG,CAAA,AAAA,KAAC,EAAO,SAAS,AAAhB,EAAoB,cAAc,CA9DlC,cAAc,CA6CtB,WAAW,CAkBP,GAAG,CAAA,AAAA,KAAC,EAAO,UAAU,AAAjB,EAAqB,cAAc,CA/DnC,cAAc,CA6CtB,WAAW,CAmBP,GAAG,CAAA,AAAA,KAAC,EAAO,YAAY,AAAnB,EAAuB,cAAc,CAhErC,cAAc,AAAC,CACf,WAAW,CZqJqB,GAAG,CYpJtC,AAIL,AAAA,MAAM,AAAA,aAAa,AAAC,CAEhB,aAAa,CAAE,IAAI,CACnB,gBAAgB,CAAE,wMAAW,CAC7B,iBAAiB,CAAE,SAAS,CAC5B,mBAAmB,CAAE,iBAAqC,CAAC,MAAM,CACjE,UAAU,CAAE,IAAI,CAChB,eAAe,CAAE,IAAI,CACrB,kBAAkB,CAAE,IAAI,CAC3B,AAED,AAAA,aAAa,AAAA,aAAa,AAAC,CACvB,WAAW,CAAE,MAAM,CACnB,cAAc,CAAE,WAAW,CAC3B,eAAe,CAAE,aAAa,CACjC,AAGD,AAAA,YAAY,CAAC,cAAc,AAAC,CACxB,MAAM,CAAE,IAAI,CACf,AAED,AAAA,QAAQ,AAAA,aAAa,AAAC,CAClB,UAAU,CAAE,IAAI,CACnB,AdstED,AAAA,oBAAoB,AcptEC,CACjB,OAAO,CAAE,IAAI,CACb,IAAI,CAAE,CAAC,CACP,SAAS,CAAE,IAAI,CACf,SAAS,CAAE,IAAI,CAMlB,AAVD,AAMI,oBANgB,CAMhB,sBAAsB,AAAC,CACnB,UAAU,CAAE,IAAI,CAChB,UAAU,CAAE,GAAG,CAClB,AAIL,AAAA,WAAW,AAAC,CACR,OAAO,CAAE,IAAI,CACb,cAAc,CAAE,GAAG,CACnB,aAAa,CZgIuB,IAAI,CY3F3C,AAxCD,AAKI,WALO,CAKH,GAAG,CAAA,AAAA,KAAC,EAAO,MAAM,AAAb,CAAe,CACnB,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,MAAM,CACnB,SAAS,CAAE,IAAI,CAClB,AATL,AAWI,WAXO,EAWH,AAAA,KAAC,EAAO,MAAM,AAAb,CAAe,CAChB,aAAa,CZwHmB,IAAI,CYvHpC,YAAY,CZuHoB,IAAI,CYtHvC,AAdL,AAwBI,WAxBO,CAwBP,cAAc,AAAC,CACX,QAAQ,CAAE,MAAM,CAChB,aAAa,CAAE,GAAG,CAClB,aAAa,CAAE,QAAQ,CACvB,KAAK,CZ0E2B,IAAI,CYzEpC,SAAS,CbzHmC,IAAI,Ca0HhD,WAAW,CZpCqB,GAAG,CYqCtC,AA/BL,AAiCI,WAjCO,CAiCP,sBAAsB,AAAC,CACnB,UAAU,CAAE,IAAI,CACnB,AAnCL,AAqCI,WArCO,AAqCN,WAAW,AAAA,IAAK,CAAA,YAAY,CAAE,CAC3B,cAAc,CAAE,MAAM,CACzB,AAGL,AACI,WADO,AAAA,YAAY,CACnB,oBAAoB,CADxB,WAAW,AAAA,YAAY,CAzBnB,GAAG,CAAA,AAAA,KAAC,EAAO,SAAS,AAAhB,EAAoB,cAAc,CAyB1C,WAAW,AAAA,YAAY,CAxBnB,GAAG,CAAA,AAAA,KAAC,EAAO,UAAU,AAAjB,EAAqB,cAAc,CAwB3C,WAAW,AAAA,YAAY,CAvBnB,GAAG,CAAA,AAAA,KAAC,EAAO,YAAY,AAAnB,EAAuB,cAAc,AAwBpB,CACjB,IAAI,CAAE,KAAK,CACd,AAHL,AAKI,WALO,AAAA,YAAY,CAKnB,cAAc,AAAC,CACX,aAAa,CAAE,CAAC,CACnB,AAGL,AAAA,aAAa,CACb,qBAAqB,CACrB,wBAAwB,AAAC,CACrB,IAAI,CAAE,CAAC,CACV,AAGD,AAAA,UAAU,AAAA,OAAO,CAAC,aAAa,AAAC,CAC5B,SAAS,CAAE,aAAa,CAC3B,AAED,MAAM,MAAM,MAAM,MAAM,SAAS,EAAE,KAAK,EhB4zFpC,AAAA,gBAAgB,CAAC,cAAc,AgB1zFZ,CACX,aAAa,CAAE,CAAC,CAChB,WAAW,CZ0CiB,GAAG,CYzC/B,cAAc,CZyCc,GAAG,CYxC/B,WAAW,CZ5DiB,OAAW,CY6D1C,CAIT,MAAM,MAAM,MAAM,MAAM,SAAS,EAAE,KAAK,EA1ExC,AAAA,WAAW,AA2EK,CACR,cAAc,CAAE,MAAM,CACzB,CAGL,MAAM,MAAM,MAAM,MAAM,gBAAgB,EAAE,MAAM,QAAQ,6BAA6B,EAAE,CAAC,EAEpF,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,EACN,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,EACN,KAAK,CAAA,AAAA,IAAC,CAAK,gBAAgB,AAArB,EACN,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAAc,CAChB,WAAW,CAAE,CAAC,CACjB,AAED,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,CAAY,IAAK,CAAA,UAAU,CAAC,OAAO,CACzC,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,CAAY,IAAK,CADA,UAAU,CACC,OAAO,CACzC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAAa,IAAK,CAFD,UAAU,CAEE,OAAO,CAC1C,KAAK,CAAA,AAAA,IAAC,CAAK,gBAAgB,AAArB,CAAsB,IAAK,CAHV,UAAU,CAGW,OAAO,AAAC,CAChD,YAAY,CAAE,KAAK,CACnB,OAAO,CAAE,iBAAiB,CAAC,UAAU,CACrC,KAAK,CAAE,OAAO,CACjB,AACD,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,CAAY,UAAU,AAAA,OAAO,CACnC,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,CAAY,UAAU,AAAA,OAAO,CACnC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAAa,UAAU,AAAA,OAAO,CACpC,KAAK,CAAA,AAAA,IAAC,CAAK,gBAAgB,AAArB,CAAsB,UAAU,AAAA,OAAO,AAAC,CAC1C,OAAO,CAAE,aAAa,CACzB,CAGL,MAAM,GAAG,gBAAgB,EAAE,IAAI,KAAI,gBAAgB,EAAE,MAAM,EAzG3D,AAAA,WAAW,AA2GK,CACR,OAAO,CAAE,KAAK,CACjB,EAGL,AAAA,AAEI,GAFH,CAAI,KAAK,AAAT,EAEG,MAAM,AAAA,aAAa,AAAC,CAChB,aAAa,CAAE,IAAI,CACnB,YAAY,CAAE,CAAC,CACf,mBAAmB,CAAE,IAAwB,CAAC,MAAM,CACvD,AhBsqJL,AAAA,MAAM,AiBv4JC,CACH,UAAU,CAAE,CAAC,CACb,OAAO,CAAE,IAAI,CACb,MAAM,CAAE,CAAC,CACT,aAAa,CAAE,GAAG,CACrB,ACLD,AAAA,eAAe,AAAC,CACZ,MAAM,CAAE,SAAS,CACpB,AlBo6JD,AAAA,cAAc,AkBj6JC,CACX,KAAK,CdyU+B,OAA+B,CcxUnE,YAAY,CdyUwB,OAA+B,CcxUnE,gBAAgB,Cd0UoB,OAA+B,CczUtE,AlBw6JD,AAAA,WAAW,AkBt6JC,CACR,KAAK,Cd8T+B,OAA4B,Cc7ThE,YAAY,Cd8TwB,OAA4B,Cc7ThE,gBAAgB,Cd+ToB,OAA4B,Cc9TnE,AlB66JD,AAAA,cAAc,AkB36JC,CACX,KAAK,CdkU+B,OAA+B,CcjUnE,YAAY,CdkUwB,OAA+B,CcjUnE,gBAAgB,CdmUoB,OAA+B,CclUtE,AlBk7JD,AAAA,aAAa,AkBh7JC,CACV,KAAK,CdiU+B,OAA8B,CchUlE,YAAY,CdiUwB,OAA8B,CchUlE,gBAAgB,CdkUoB,OAA8B,CcjUrE,AAKD,AAAA,UAAU,CAAC,MAAM,AAAC,CACd,UAAU,CAAE,GAAG,CACf,aAAa,CAAE,CAAC,CACnB,ACnCD,AAAA,gBAAgB,AAAC,CACb,gBAAgB,ChB2CgC,IAAO,CgB3C3B,UAAU,CACzC,AAED,AAAA,qBAAqB,AAAC,CAClB,gBAAgB,ChBwCgC,OAAO,CgBxCjB,UAAU,CACnD,AAED,AAAA,mBAAmB,AAAC,CAChB,gBAAgB,ChBZgC,IAAO,CgBYtB,UAAU,CAC9C,AAED,AAAA,0BAA0B,AAAC,CACvB,gBAAgB,Cf8SoB,OAA+B,Ce9S3B,UAAU,CACrD,AAED,AAAA,wBAAwB,AAAC,CACrB,gBAAgB,Cf2SoB,OAA+B,Ce3S7B,UAAU,CACnD,AAED,AAAA,yBAAyB,AAAC,CACtB,gBAAgB,CfwSoB,OAA+B,CexS5B,UAAU,CACpD,AAED,AAAA,2BAA2B,AAAC,CACxB,gBAAgB,CfqSoB,OAA+B,CerS1B,UAAU,CACtD,AAED,AAAA,mBAAmB,AAAC,CAChB,gBAAgB,ChB9BgC,OAAO,CgB8BtB,UAAU,CAC9C,AAED,AAAA,0BAA0B,AAAC,CACvB,gBAAgB,Cf+RoB,OAA+B,Ce/R3B,UAAU,CACrD,AAED,AAAA,wBAAwB,AAAC,CACrB,gBAAgB,Cf4RoB,OAA+B,Ce5R7B,UAAU,CACnD,AAED,AAAA,yBAAyB,AAAC,CACtB,gBAAgB,CfyRoB,OAA+B,CezR5B,UAAU,CACpD,AAED,AAAA,2BAA2B,AAAC,CACxB,gBAAgB,CfsRoB,OAA+B,CetR1B,UAAU,CACtD,AAED,AAAA,mBAAmB,AAAC,CAChB,gBAAgB,ChBnDgC,OAAO,CgBmDtB,UAAU,CAC9C,AAED,AAAA,0BAA0B,AAAC,CACvB,gBAAgB,CfgRoB,OAA+B,CehR3B,UAAU,CACrD,AAED,AAAA,wBAAwB,AAAC,CACrB,gBAAgB,Cf6QoB,OAA+B,Ce7Q7B,UAAU,CACnD,AAED,AAAA,yBAAyB,AAAC,CACtB,gBAAgB,Cf0QoB,OAA+B,Ce1Q5B,UAAU,CACpD,AAED,AAAA,2BAA2B,AAAC,CACxB,gBAAgB,CfuQoB,OAA+B,CevQ1B,UAAU,CACtD,AAED,AAAA,gBAAgB,AAAC,CACb,gBAAgB,ChBrEgC,OAAO,CgBqEzB,UAAU,CAC3C,AAED,AAAA,uBAAuB,AAAC,CACpB,gBAAgB,CfiQoB,OAA4B,CejQ3B,UAAU,CAClD,AAED,AAAA,qBAAqB,AAAC,CAClB,gBAAgB,Cf8PoB,OAA4B,Ce9P7B,UAAU,CAChD,AAED,AAAA,sBAAsB,AAAC,CACnB,gBAAgB,Cf2PoB,OAA4B,Ce3P5B,UAAU,CACjD,AAED,AAAA,wBAAwB,AAAC,CACrB,gBAAgB,CfwPoB,OAA4B,CexP1B,UAAU,CACnD,AAED,AAAA,mBAAmB,AAAC,CAChB,gBAAgB,ChBxFgC,OAAO,CgBwFtB,UAAU,CAC9C,AAED,AAAA,0BAA0B,AAAC,CACvB,gBAAgB,CfkPoB,OAA+B,CelP3B,UAAU,CACrD,AAED,AAAA,wBAAwB,AAAC,CACrB,gBAAgB,Cf+OoB,OAA+B,Ce/O7B,UAAU,CACnD,AAED,AAAA,yBAAyB,AAAC,CACtB,gBAAgB,Cf4OoB,OAA+B,Ce5O5B,UAAU,CACpD,AAED,AAAA,2BAA2B,AAAC,CACxB,gBAAgB,CfyOoB,OAA+B,CezO1B,UAAU,CACtD,AAED,AAAA,mBAAmB,AAAC,CAChB,gBAAgB,ChB3GgC,OAAO,CgB2GtB,UAAU,CAC9C,AAED,AAAA,0BAA0B,AAAC,CACvB,gBAAgB,CfmOoB,OAA+B,CenO3B,UAAU,CACrD,AAED,AAAA,wBAAwB,AAAC,CACrB,gBAAgB,CfgOoB,OAA+B,CehO7B,UAAU,CACnD,AAED,AAAA,yBAAyB,AAAC,CACtB,gBAAgB,Cf6NoB,OAA+B,Ce7N5B,UAAU,CACpD,AAED,AAAA,2BAA2B,AAAC,CACxB,gBAAgB,Cf0NoB,OAA+B,Ce1N1B,UAAU,CACtD,AAED,AAAA,kBAAkB,AAAC,CACf,gBAAgB,ChB9HgC,OAAO,CgB8HvB,UAAU,CAC7C,AAED,AAAA,yBAAyB,AAAC,CACtB,gBAAgB,CfoNoB,OAA8B,CepN3B,UAAU,CACpD,AAED,AAAA,uBAAuB,AAAC,CACpB,gBAAgB,CfiNoB,OAA8B,CejN7B,UAAU,CAClD,AAED,AAAA,wBAAwB,AAAC,CACrB,gBAAgB,Cf8MoB,OAA8B,Ce9M5B,UAAU,CACnD,AAED,AAAA,0BAA0B,AAAC,CACvB,gBAAgB,Cf2MoB,OAA8B,Ce3M1B,UAAU,CACrD,AAED,AAAA,0BAA0B,AAAC,CACvB,gBAAgB,CfyMoB,0EAA0E,CezM5E,UAAU,CAC/C,ACtJD,AAAA,IAAI,CACJ,UAAU,AAAC,CACP,OAAO,CAAE,YAAY,CACrB,aAAa,CAAE,CAAC,CAChB,OAAO,CAAE,SAAS,CAClB,MAAM,CAAE,OAAO,CACf,gBAAgB,CAAE,IAAI,CACtB,eAAe,CAAE,IAAI,CACrB,mBAAmB,CAAE,IAAI,CACzB,WAAW,CAAE,IAAI,CACjB,eAAe,CAAE,oBAAoB,CACrC,aAAa,CAAE,oBAAoB,CACnC,kBAAkB,CAAE,oBAAoB,CACxC,UAAU,CAAE,oBAAoB,CAChC,UAAU,CAAE,MAAM,CAClB,cAAc,CAAE,MAAM,CACtB,WAAW,CAAE,MAAM,CACnB,KAAK,CjBnB2C,OAAO,CiBoBvD,MAAM,CAAE,GAAG,CAAC,KAAK,CjBrB+B,IAAO,CiBsBvD,aAAa,ChBoBuB,GAAG,CgBnBvC,gBAAgB,ChByOoB,IAAI,CgBxOxC,gBAAgB,CAAE,IAAI,CACtB,UAAU,CAAE,IAAI,CAChB,WAAW,CAAE,IAAI,CACjB,SAAS,ChBgO2B,IAAI,CgB/NxC,WAAW,ChB2FyB,OAAW,CgBvElD,AA7CD,AA2BI,IA3BA,AA2BC,MAAM,CA3BX,IAAI,AA4BC,MAAM,CA5BX,IAAI,AA6BC,OAAO,CA7BZ,IAAI,AA8BC,OAAO,AAAA,MAAM,CA7BlB,UAAU,AA0BL,MAAM,CA1BX,UAAU,AA2BL,MAAM,CA3BX,UAAU,AA4BL,OAAO,CA5BZ,UAAU,AA6BL,OAAO,AAAA,MAAM,AAAC,CACX,OAAO,CAAE,IAAI,CACb,UAAU,CAAE,IAAI,CACnB,AAjCL,AAmCI,IAnCA,CAmCC,AAAA,aAAC,AAAA,EAlCN,UAAU,CAkCL,AAAA,aAAC,AAAA,CAAe,CACb,MAAM,CAAE,WAAW,CACnB,cAAc,CAAE,IAAI,CACpB,OAAO,CAAE,IAAI,CACb,MAAM,CAAE,iBAAiB,CAC5B,AlBurFL,AAAA,QAAQ,AkB/qFC,CACL,OAAO,CAAE,CAAC,CACV,KAAK,CjBpD2C,OAAO,CiB4D1D,AAVD,AAII,QAJI,CAIH,AAAA,aAAC,CAAc,MAAM,AAApB,CAAsB,CACpB,MAAM,CAAE,WAAW,CACnB,cAAc,CAAE,IAAI,CACpB,OAAO,CAAE,IAAI,CACb,MAAM,CAAE,iBAAiB,CAC5B,AAIL,AAGI,IAHA,CAGA,GAAG,CAFP,UAAU,CAEN,GAAG,CADP,QAAQ,CACJ,GAAG,AAAC,CAEA,MAAM,CAAE,IAAwB,CAChC,YAAY,CAAE,GAAG,CACjB,cAAc,CAAE,QAAQ,CAC3B,AAKL,AAGQ,cAHM,CACV,IAAI,AAEC,OAAO,CAHhB,cAAc,CAEV,QAAQ,AACH,OAAO,AAAC,CACL,iBAAiB,CAAE,eAAe,CAClC,SAAS,CAAE,eAAe,CAC7B,AC/ET,AAAA,IAAI,CACJ,YAAY,AAAC,CbPT,KAAK,CLG2C,OAAO,CKFvD,YAAY,CLCoC,IAAO,CKAvD,gBAAgB,CJgQoB,IAAI,CiBzP3C,AAHD,AbFI,IaEA,AbFC,MAAM,CaEX,IAAI,AbDC,MAAM,CaCX,IAAI,AbAC,OAAO,CaAZ,IAAI,AbCC,OAAO,CACR,KAAK,CaFT,IAAI,AbES,gBAAgB,CaD7B,YAAY,AbHP,MAAM,CaGX,YAAY,AbFP,MAAM,CaEX,YAAY,AbDP,OAAO,CaCZ,YAAY,AbAP,OAAO,CACR,KAAK,CaDT,YAAY,AbCC,gBAAgB,AAAC,CACtB,KAAK,CLNuC,OAAO,CKOnD,YAAY,CLRgC,IAAO,CKSnD,gBAAgB,CLT4B,IAAO,CKUtD,AaNL,AbOI,IaPA,AbOC,OAAO,CaPZ,IAAI,AbQC,OAAO,CACR,KAAK,CaTT,IAAI,AbSS,gBAAgB,CaR7B,YAAY,AbMP,OAAO,CaNZ,YAAY,AbOP,OAAO,CACR,KAAK,CaRT,YAAY,AbQC,gBAAgB,AAAC,CACtB,gBAAgB,CAAE,IAAI,CACzB,AaXL,AbgBQ,IahBJ,AbYC,SAAS,CaZd,IAAI,AbYC,SAAS,AAKL,MAAM,CajBf,IAAI,AbYC,SAAS,AAML,MAAM,CalBf,IAAI,AbYC,SAAS,AAOL,OAAO,CanBhB,IAAI,AbYC,SAAS,AAQL,OAAO,CapBhB,IAAI,CbaC,AAAA,QAAC,AAAA,EabN,IAAI,CbaC,AAAA,QAAC,AAAA,CAIG,MAAM,CajBf,IAAI,CbaC,AAAA,QAAC,AAAA,CAKG,MAAM,CalBf,IAAI,CbaC,AAAA,QAAC,AAAA,CAMG,OAAO,CanBhB,IAAI,CbaC,AAAA,QAAC,AAAA,CAOG,OAAO,CapBhB,IAAI,CbcC,AAAA,aAAC,AAAA,EadN,IAAI,CbcC,AAAA,aAAC,AAAA,CAGG,MAAM,CajBf,IAAI,CbcC,AAAA,aAAC,AAAA,CAIG,MAAM,CalBf,IAAI,CbcC,AAAA,aAAC,AAAA,CAKG,OAAO,CanBhB,IAAI,CbcC,AAAA,aAAC,AAAA,CAMG,OAAO,CapBhB,IAAI,CbeA,QAAQ,CAAA,AAAA,QAAC,AAAA,Eafb,IAAI,CbeA,QAAQ,CAAA,AAAA,QAAC,AAAA,CAEJ,MAAM,CajBf,IAAI,CbeA,QAAQ,CAAA,AAAA,QAAC,AAAA,CAGJ,MAAM,CalBf,IAAI,CbeA,QAAQ,CAAA,AAAA,QAAC,AAAA,CAIJ,OAAO,CanBhB,IAAI,CbeA,QAAQ,CAAA,AAAA,QAAC,AAAA,CAKJ,OAAO,CanBhB,YAAY,AbWP,SAAS,CaXd,YAAY,AbWP,SAAS,AAKL,MAAM,CahBf,YAAY,AbWP,SAAS,AAML,MAAM,CajBf,YAAY,AbWP,SAAS,AAOL,OAAO,CalBhB,YAAY,AbWP,SAAS,AAQL,OAAO,CanBhB,YAAY,CbYP,AAAA,QAAC,AAAA,EaZN,YAAY,CbYP,AAAA,QAAC,AAAA,CAIG,MAAM,CahBf,YAAY,CbYP,AAAA,QAAC,AAAA,CAKG,MAAM,CajBf,YAAY,CbYP,AAAA,QAAC,AAAA,CAMG,OAAO,CalBhB,YAAY,CbYP,AAAA,QAAC,AAAA,CAOG,OAAO,CanBhB,YAAY,CbaP,AAAA,aAAC,AAAA,EabN,YAAY,CbaP,AAAA,aAAC,AAAA,CAGG,MAAM,CahBf,YAAY,CbaP,AAAA,aAAC,AAAA,CAIG,MAAM,CajBf,YAAY,CbaP,AAAA,aAAC,AAAA,CAKG,OAAO,CalBhB,YAAY,CbaP,AAAA,aAAC,AAAA,CAMG,OAAO,CanBhB,YAAY,CbcR,QAAQ,CAAA,AAAA,QAAC,AAAA,Eadb,YAAY,CbcR,QAAQ,CAAA,AAAA,QAAC,AAAA,CAEJ,MAAM,CahBf,YAAY,CbcR,QAAQ,CAAA,AAAA,QAAC,AAAA,CAGJ,MAAM,CajBf,YAAY,CbcR,QAAQ,CAAA,AAAA,QAAC,AAAA,CAIJ,OAAO,CalBhB,YAAY,CbcR,QAAQ,CAAA,AAAA,QAAC,AAAA,CAKJ,OAAO,AAAC,CACL,YAAY,CLzB4B,IAAO,CK0B/C,gBAAgB,CJsOY,IAAI,CIrOnC,AavBT,Ab0BI,Ia1BA,Ab0BC,aAAa,CazBlB,YAAY,AbyBP,aAAa,AAAC,CACX,gBAAgB,CAAE,WAAW,CAchC,AazCL,AbgCQ,IahCJ,Ab0BC,aAAa,AAMT,MAAM,CahCf,IAAI,Ab0BC,aAAa,AAOT,MAAM,CajCf,IAAI,Ab0BC,aAAa,AAQT,OAAO,CalChB,IAAI,Ab0BC,aAAa,AAST,OAAO,CACR,KAAK,CapCb,IAAI,Ab0BC,aAAa,AAUD,gBAAgB,CanCjC,YAAY,AbyBP,aAAa,AAMT,MAAM,Ca/Bf,YAAY,AbyBP,aAAa,AAOT,MAAM,CahCf,YAAY,AbyBP,aAAa,AAQT,OAAO,CajChB,YAAY,AbyBP,aAAa,AAST,OAAO,CACR,KAAK,CanCb,YAAY,AbyBP,aAAa,AAUD,gBAAgB,AAAC,CACtB,KAAK,CLxCmC,OAAO,CKyC/C,YAAY,CL1C4B,IAAO,CK2C/C,gBAAgB,CL3CwB,IAAO,CK4ClD,AaxCT,Ab2CI,Ia3CA,Ab2CC,SAAS,Ca1Cd,YAAY,Ab0CP,SAAS,AAAC,CACP,eAAe,CAAE,IAAI,CACrB,YAAY,CAAE,WAAW,CACzB,gBAAgB,CAAE,WAAW,CAShC,AavDL,AbmDQ,IanDJ,Ab2CC,SAAS,AAQL,MAAM,CalDf,YAAY,Ab0CP,SAAS,AAQL,MAAM,AAAC,CACJ,YAAY,CL3D4B,IAAO,CK4D/C,gBAAgB,CL5DwB,IAAO,CK6DlD,ARqiGT,AAAA,YAAY,CyB/+FZ,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,AJxGb,CbXT,KAAK,CJsR+B,IAAI,CIrRxC,YAAY,CLEoC,OAAO,CKDvD,gBAAgB,CLCgC,OAAO,CkBU1D,ArBylGD,AQlmGI,YRkmGQ,AAAA,MAAM,CyBp/FlB,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,AzBm/Fd,MAAM,CAClB,YAAY,AAAA,MAAM,CyBr/FlB,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,AzBo/Fd,MAAM,CAElB,YAAY,AAAA,OAAO,CyBv/FnB,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,AzBs/Fd,OAAO,CACnB,YAAY,AAAA,OAAO,CyBx/FnB,oBAAoB,AAAA,QAAQ,CzBw/FhB,OAAO,AyBv/Ff,sBAAsB,CjB3GtB,KAAK,CaGT,YAAY,AbHC,gBAAgB,CiB0G7B,oBAAoB,AAAA,QAAQ,CjB1GxB,KAAK,CRmmGD,gBAAgB,AyBx/FpB,sBAAsB,AjB3GI,CACtB,KAAK,CJ6Q2B,IAAI,CI5QpC,YAAY,CJqRoB,OAAgC,CIpRhE,gBAAgB,CJoRgB,OAAgC,CInRnE,AR6lGL,AQ5lGI,YR4lGQ,AAAA,OAAO,CyBv/FnB,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,AzBs/Fd,OAAO,CACnB,YAAY,AAAA,OAAO,CyBx/FnB,oBAAoB,AAAA,QAAQ,CzBw/FhB,OAAO,AyBv/Ff,sBAAsB,CjB3GtB,KAAK,CaGT,YAAY,AbHC,gBAAgB,CiB0G7B,oBAAoB,AAAA,QAAQ,CjB1GxB,KAAK,CRmmGD,gBAAgB,AyBx/FpB,sBAAsB,AjBpGI,CACtB,gBAAgB,CAAE,IAAI,CACzB,ARomGL,AQ/lGQ,YR+lGI,AAAA,SAAS,CyBngGrB,oBAAoB,AAAA,QAAQ,CzBmgGhB,SAAS,AyBlgGjB,sBAAsB,CzBqgG1B,YAAY,AAAA,SAAS,AAAA,MAAM,CyBtgG3B,oBAAoB,AAAA,QAAQ,CzBsgGhB,SAAS,AyBrgGjB,sBAAsB,AzBqgGL,MAAM,CAG3B,YAAY,AAAA,SAAS,AAAA,MAAM,CyBzgG3B,oBAAoB,AAAA,QAAQ,CzBygGhB,SAAS,AyBxgGjB,sBAAsB,AzBwgGL,MAAM,CAM3B,YAAY,AAAA,SAAS,AAAA,OAAO,CyB/gG5B,oBAAoB,AAAA,QAAQ,CzB+gGhB,SAAS,AyB9gGjB,sBAAsB,AzB8gGL,OAAO,CAG5B,YAAY,AAAA,SAAS,AAAA,OAAO,CyBlhG5B,oBAAoB,AAAA,QAAQ,CzBkhGhB,SAAS,AAAA,OAAO,AyBjhGxB,sBAAsB,CzBmgG1B,YAAY,CAAA,AAAA,QAAC,AAAA,EyBpgGb,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CzBmgGd,AAAA,QAAC,AAAA,EAGb,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CyBvgG5B,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CzBsgGd,AAAA,QAAC,AAAA,CAAS,MAAM,CAG5B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,CyB1gG5B,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CzBygGd,AAAA,QAAC,AAAA,CAAS,MAAM,CAM5B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,OAAO,CyBhhG7B,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CzB+gGd,AAAA,QAAC,AAAA,CAAS,OAAO,CAG7B,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,OAAO,CyBnhG7B,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CzBkhGd,AAAA,QAAC,AAAA,CAAS,OAAO,CqB1nG7B,YAAY,CbSP,AAAA,aAAC,AAAA,EiB8FN,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CjB/FrB,AAAA,aAAC,AAAA,EaTN,YAAY,CbSP,AAAA,aAAC,AAAA,CAGG,MAAM,CiB2Ff,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CjB/FrB,AAAA,aAAC,AAAA,CAGG,MAAM,CaZf,YAAY,CbSP,AAAA,aAAC,AAAA,CAIG,MAAM,CiB0Ff,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CjB/FrB,AAAA,aAAC,AAAA,CAIG,MAAM,Cabf,YAAY,CbSP,AAAA,aAAC,AAAA,CAKG,OAAO,CiByFhB,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CjB/FrB,AAAA,aAAC,AAAA,CAKG,OAAO,CadhB,YAAY,CbSP,AAAA,aAAC,AAAA,CAMG,OAAO,CiBwFhB,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CjB/FrB,AAAA,aAAC,AAAA,CAMG,OAAO,CafhB,YAAY,CbUR,QAAQ,CAAA,AAAA,QAAC,AAAA,EiB6Fb,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CjB9FtB,QAAQ,CAAA,AAAA,QAAC,AAAA,EaVb,YAAY,CbUR,QAAQ,CAAA,AAAA,QAAC,AAAA,CAEJ,MAAM,CiB2Ff,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CjB9FtB,QAAQ,CAAA,AAAA,QAAC,AAAA,CAEJ,MAAM,CaZf,YAAY,CbUR,QAAQ,CAAA,AAAA,QAAC,AAAA,CAGJ,MAAM,CiB0Ff,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CjB9FtB,QAAQ,CAAA,AAAA,QAAC,AAAA,CAGJ,MAAM,Cabf,YAAY,CbUR,QAAQ,CAAA,AAAA,QAAC,AAAA,CAIJ,OAAO,CiByFhB,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CjB9FtB,QAAQ,CAAA,AAAA,QAAC,AAAA,CAIJ,OAAO,CadhB,YAAY,CbUR,QAAQ,CAAA,AAAA,QAAC,AAAA,CAKJ,OAAO,CiBwFhB,oBAAoB,AAAA,QAAQ,CACxB,sBAAsB,CjB9FtB,QAAQ,CAAA,AAAA,QAAC,AAAA,CAKJ,OAAO,AAAC,CACL,YAAY,CLxB4B,OAAO,CKyB/C,gBAAgB,CLzBwB,OAAO,CK0BlD,AalBT,AbqBI,YarBQ,AbqBP,aAAa,CiBkFlB,oBAAoB,AAAA,QAAQ,CjBlFvB,aAAa,AiBmFd,sBAAsB,AjBnFP,CACX,gBAAgB,CAAE,WAAW,CAEzB,KAAK,CLhCmC,OAAO,CK4CtD,AapCL,Ab2BQ,Ya3BI,AbqBP,aAAa,AAMT,MAAM,CiB4Ef,oBAAoB,AAAA,QAAQ,CjBlFvB,aAAa,AiBmFd,sBAAsB,AjB7EjB,MAAM,Ca3Bf,YAAY,AbqBP,aAAa,AAOT,MAAM,CiB2Ef,oBAAoB,AAAA,QAAQ,CjBlFvB,aAAa,AiBmFd,sBAAsB,AjB5EjB,MAAM,Ca5Bf,YAAY,AbqBP,aAAa,AAQT,OAAO,CiB0EhB,oBAAoB,AAAA,QAAQ,CjBlFvB,aAAa,AiBmFd,sBAAsB,AjB3EjB,OAAO,Ca7BhB,YAAY,AbqBP,aAAa,AAST,OAAO,CiByEhB,oBAAoB,AAAA,QAAQ,CjBlFvB,aAAa,AAST,OAAO,AiB0EZ,sBAAsB,CjBzElB,KAAK,Ca/Bb,YAAY,AbqBP,aAAa,AAUD,gBAAgB,CiBwEjC,oBAAoB,AAAA,QAAQ,CjBxEpB,KAAK,CAVR,aAAa,AAUD,gBAAgB,AiByE7B,sBAAsB,AjBzEQ,CACtB,KAAK,CJ2OuB,IAAI,CI1OhC,YAAY,CLzC4B,OAAO,CK0C/C,gBAAgB,CL1CwB,OAAO,CK2ClD,AanCT,AbsCI,YatCQ,AbsCP,SAAS,CiBiEd,oBAAoB,AAAA,QAAQ,CjBjEvB,SAAS,AiBkEV,sBAAsB,AjBlEX,CACP,eAAe,CAAE,IAAI,CACrB,YAAY,CAAE,WAAW,CACzB,gBAAgB,CAAE,WAAW,CAEzB,KAAK,CLnDmC,OAAO,CK0DtD,AalDL,Ab8CQ,Ya9CI,AbsCP,SAAS,AAQL,MAAM,CiByDf,oBAAoB,AAAA,QAAQ,CjBjEvB,SAAS,AiBkEV,sBAAsB,AjB1DjB,MAAM,AAAC,CACJ,YAAY,CL3D4B,IAAO,CK4D/C,gBAAgB,CL5DwB,IAAO,CK6DlD,Aa7CT,AAAA,YAAY,AAAC,CbfT,KAAK,CJqR+B,IAAI,CIpRxC,YAAY,CLGoC,OAAO,CKFvD,gBAAgB,CLEgC,OAAO,CkBa1D,AAFD,AbXI,YaWQ,AbXP,MAAM,CaWX,YAAY,AbVP,MAAM,CaUX,YAAY,AbTP,OAAO,CaSZ,YAAY,AbRP,OAAO,CACR,KAAK,CaOT,YAAY,AbPC,gBAAgB,AAAC,CACtB,KAAK,CJ4Q2B,IAAI,CI3QpC,YAAY,CJoRoB,OAAgC,CInRhE,gBAAgB,CJmRgB,OAAgC,CIlRnE,AaGL,AbFI,YaEQ,AbFP,OAAO,CaEZ,YAAY,AbDP,OAAO,CACR,KAAK,CaAT,YAAY,AbAC,gBAAgB,AAAC,CACtB,gBAAgB,CAAE,IAAI,CACzB,AaFL,AbOQ,YaPI,AbGP,SAAS,CaHd,YAAY,AbGP,SAAS,AAKL,MAAM,CaRf,YAAY,AbGP,SAAS,AAML,MAAM,CaTf,YAAY,AbGP,SAAS,AAOL,OAAO,CaVhB,YAAY,AbGP,SAAS,AAQL,OAAO,CaXhB,YAAY,CbIP,AAAA,QAAC,AAAA,EaJN,YAAY,CbIP,AAAA,QAAC,AAAA,CAIG,MAAM,CaRf,YAAY,CbIP,AAAA,QAAC,AAAA,CAKG,MAAM,CaTf,YAAY,CbIP,AAAA,QAAC,AAAA,CAMG,OAAO,CaVhB,YAAY,CbIP,AAAA,QAAC,AAAA,CAOG,OAAO,CaXhB,YAAY,CbKP,AAAA,aAAC,AAAA,EaLN,YAAY,CbKP,AAAA,aAAC,AAAA,CAGG,MAAM,CaRf,YAAY,CbKP,AAAA,aAAC,AAAA,CAIG,MAAM,CaTf,YAAY,CbKP,AAAA,aAAC,AAAA,CAKG,OAAO,CaVhB,YAAY,CbKP,AAAA,aAAC,AAAA,CAMG,OAAO,CaXhB,YAAY,CbMR,QAAQ,CAAA,AAAA,QAAC,AAAA,EaNb,YAAY,CbMR,QAAQ,CAAA,AAAA,QAAC,AAAA,CAEJ,MAAM,CaRf,YAAY,CbMR,QAAQ,CAAA,AAAA,QAAC,AAAA,CAGJ,MAAM,CaTf,YAAY,CbMR,QAAQ,CAAA,AAAA,QAAC,AAAA,CAIJ,OAAO,CaVhB,YAAY,CbMR,QAAQ,CAAA,AAAA,QAAC,AAAA,CAKJ,OAAO,AAAC,CACL,YAAY,CLvB4B,OAAO,CKwB/C,gBAAgB,CLxBwB,OAAO,CKyBlD,AadT,AbiBI,YajBQ,AbiBP,aAAa,AAAC,CACX,gBAAgB,CAAE,WAAW,CAEzB,KAAK,CL/BmC,OAAO,CK2CtD,AahCL,AbuBQ,YavBI,AbiBP,aAAa,AAMT,MAAM,CavBf,YAAY,AbiBP,aAAa,AAOT,MAAM,CaxBf,YAAY,AbiBP,aAAa,AAQT,OAAO,CazBhB,YAAY,AbiBP,aAAa,AAST,OAAO,CACR,KAAK,Ca3Bb,YAAY,AbiBP,aAAa,AAUD,gBAAgB,AAAC,CACtB,KAAK,CJ0OuB,IAAI,CIzOhC,YAAY,CLxC4B,OAAO,CKyC/C,gBAAgB,CLzCwB,OAAO,CK0ClD,Aa/BT,AbkCI,YalCQ,AbkCP,SAAS,AAAC,CACP,eAAe,CAAE,IAAI,CACrB,YAAY,CAAE,WAAW,CACzB,gBAAgB,CAAE,WAAW,CAEzB,KAAK,CLlDmC,OAAO,CKyDtD,Aa9CL,Ab0CQ,Ya1CI,AbkCP,SAAS,AAQL,MAAM,AAAC,CACJ,YAAY,CL3D4B,IAAO,CK4D/C,gBAAgB,CL5DwB,IAAO,CK6DlD,ARklGT,AAAA,YAAY,AqB3nGC,CbnBT,KAAK,CJwR+B,IAAI,CIvRxC,YAAY,CLKoC,OAAO,CKJvD,gBAAgB,CLIgC,OAAO,CkBe1D,AAFD,AbfI,YaeQ,AbfP,MAAM,CaeX,YAAY,AbdP,MAAM,CacX,YAAY,AbbP,OAAO,CaaZ,YAAY,AbZP,OAAO,CACR,KAAK,CaWT,YAAY,AbXC,gBAAgB,AAAC,CACtB,KAAK,CJ+Q2B,IAAI,CI9QpC,YAAY,CJuRoB,OAAgC,CItRhE,gBAAgB,CJsRgB,OAAgC,CIrRnE,AaOL,AbNI,YaMQ,AbNP,OAAO,CaMZ,YAAY,AbLP,OAAO,CACR,KAAK,CaIT,YAAY,AbJC,gBAAgB,AAAC,CACtB,gBAAgB,CAAE,IAAI,CACzB,AaEL,AbGQ,YaHI,AbDP,SAAS,CaCd,YAAY,AbDP,SAAS,AAKL,MAAM,CaJf,YAAY,AbDP,SAAS,AAML,MAAM,CaLf,YAAY,AbDP,SAAS,AAOL,OAAO,CaNhB,YAAY,AbDP,SAAS,AAQL,OAAO,CaPhB,YAAY,CbAP,AAAA,QAAC,AAAA,EaAN,YAAY,CbAP,AAAA,QAAC,AAAA,CAIG,MAAM,CaJf,YAAY,CbAP,AAAA,QAAC,AAAA,CAKG,MAAM,CaLf,YAAY,CbAP,AAAA,QAAC,AAAA,CAMG,OAAO,CaNhB,YAAY,CbAP,AAAA,QAAC,AAAA,CAOG,OAAO,CaPhB,YAAY,CbCP,AAAA,aAAC,AAAA,EaDN,YAAY,CbCP,AAAA,aAAC,AAAA,CAGG,MAAM,CaJf,YAAY,CbCP,AAAA,aAAC,AAAA,CAIG,MAAM,CaLf,YAAY,CbCP,AAAA,aAAC,AAAA,CAKG,OAAO,CaNhB,YAAY,CbCP,AAAA,aAAC,AAAA,CAMG,OAAO,CaPhB,YAAY,CbER,QAAQ,CAAA,AAAA,QAAC,AAAA,EaFb,YAAY,CbER,QAAQ,CAAA,AAAA,QAAC,AAAA,CAEJ,MAAM,CaJf,YAAY,CbER,QAAQ,CAAA,AAAA,QAAC,AAAA,CAGJ,MAAM,CaLf,YAAY,CbER,QAAQ,CAAA,AAAA,QAAC,AAAA,CAIJ,OAAO,CaNhB,YAAY,CbER,QAAQ,CAAA,AAAA,QAAC,AAAA,CAKJ,OAAO,AAAC,CACL,YAAY,CLrB4B,OAAO,CKsB/C,gBAAgB,CLtBwB,OAAO,CKuBlD,AaVT,AbaI,YabQ,AbaP,aAAa,AAAC,CACX,gBAAgB,CAAE,WAAW,CAEzB,KAAK,CL7BmC,OAAO,CKyCtD,Aa5BL,AbmBQ,YanBI,AbaP,aAAa,AAMT,MAAM,CanBf,YAAY,AbaP,aAAa,AAOT,MAAM,CapBf,YAAY,AbaP,aAAa,AAQT,OAAO,CarBhB,YAAY,AbaP,aAAa,AAST,OAAO,CACR,KAAK,CavBb,YAAY,AbaP,aAAa,AAUD,gBAAgB,AAAC,CACtB,KAAK,CJ6OuB,IAAI,CI5OhC,YAAY,CLtC4B,OAAO,CKuC/C,gBAAgB,CLvCwB,OAAO,CKwClD,Aa3BT,Ab8BI,Ya9BQ,Ab8BP,SAAS,AAAC,CACP,eAAe,CAAE,IAAI,CACrB,YAAY,CAAE,WAAW,CACzB,gBAAgB,CAAE,WAAW,CAEzB,KAAK,CLhDmC,OAAO,CKuDtD,Aa1CL,AbsCQ,YatCI,Ab8BP,SAAS,AAQL,MAAM,AAAC,CACJ,YAAY,CL3D4B,IAAO,CK4D/C,gBAAgB,CL5DwB,IAAO,CK6DlD,AR+nGT,AAAA,SAAS,AqBpqGC,CbvBN,KAAK,CJuR+B,IAAI,CItRxC,YAAY,CLIoC,OAAO,CKHvD,gBAAgB,CLGgC,OAAO,CkBoB1D,AAFD,AbnBI,SamBK,AbnBJ,MAAM,CamBX,SAAS,AblBJ,MAAM,CakBX,SAAS,AbjBJ,OAAO,CaiBZ,SAAS,AbhBJ,OAAO,CACR,KAAK,CaeT,SAAS,AbfI,gBAAgB,AAAC,CACtB,KAAK,CJ8Q2B,IAAI,CI7QpC,YAAY,CJsRoB,OAA6B,CIrR7D,gBAAgB,CJqRgB,OAA6B,CIpRhE,AaWL,AbVI,SaUK,AbVJ,OAAO,CaUZ,SAAS,AbTJ,OAAO,CACR,KAAK,CaQT,SAAS,AbRI,gBAAgB,AAAC,CACtB,gBAAgB,CAAE,IAAI,CACzB,AaML,AbDQ,SaCC,AbLJ,SAAS,CaKd,SAAS,AbLJ,SAAS,AAKL,MAAM,CaAf,SAAS,AbLJ,SAAS,AAML,MAAM,CaDf,SAAS,AbLJ,SAAS,AAOL,OAAO,CaFhB,SAAS,AbLJ,SAAS,AAQL,OAAO,CaHhB,SAAS,CbJJ,AAAA,QAAC,AAAA,EaIN,SAAS,CbJJ,AAAA,QAAC,AAAA,CAIG,MAAM,CaAf,SAAS,CbJJ,AAAA,QAAC,AAAA,CAKG,MAAM,CaDf,SAAS,CbJJ,AAAA,QAAC,AAAA,CAMG,OAAO,CaFhB,SAAS,CbJJ,AAAA,QAAC,AAAA,CAOG,OAAO,CaHhB,SAAS,CbHJ,AAAA,aAAC,AAAA,EaGN,SAAS,CbHJ,AAAA,aAAC,AAAA,CAGG,MAAM,CaAf,SAAS,CbHJ,AAAA,aAAC,AAAA,CAIG,MAAM,CaDf,SAAS,CbHJ,AAAA,aAAC,AAAA,CAKG,OAAO,CaFhB,SAAS,CbHJ,AAAA,aAAC,AAAA,CAMG,OAAO,CaHhB,SAAS,CbFL,QAAQ,CAAA,AAAA,QAAC,AAAA,EaEb,SAAS,CbFL,QAAQ,CAAA,AAAA,QAAC,AAAA,CAEJ,MAAM,CaAf,SAAS,CbFL,QAAQ,CAAA,AAAA,QAAC,AAAA,CAGJ,MAAM,CaDf,SAAS,CbFL,QAAQ,CAAA,AAAA,QAAC,AAAA,CAIJ,OAAO,CaFhB,SAAS,CbFL,QAAQ,CAAA,AAAA,QAAC,AAAA,CAKJ,OAAO,AAAC,CACL,YAAY,CLtB4B,OAAO,CKuB/C,gBAAgB,CLvBwB,OAAO,CKwBlD,AaNT,AbSI,SaTK,AbSJ,aAAa,AAAC,CACX,gBAAgB,CAAE,WAAW,CAEzB,KAAK,CL9BmC,OAAO,CK0CtD,AaxBL,AbeQ,SafC,AbSJ,aAAa,AAMT,MAAM,Caff,SAAS,AbSJ,aAAa,AAOT,MAAM,CahBf,SAAS,AbSJ,aAAa,AAQT,OAAO,CajBhB,SAAS,AbSJ,aAAa,AAST,OAAO,CACR,KAAK,CanBb,SAAS,AbSJ,aAAa,AAUD,gBAAgB,AAAC,CACtB,KAAK,CJ4OuB,IAAI,CI3OhC,YAAY,CLvC4B,OAAO,CKwC/C,gBAAgB,CLxCwB,OAAO,CKyClD,AavBT,Ab0BI,Sa1BK,Ab0BJ,SAAS,AAAC,CACP,eAAe,CAAE,IAAI,CACrB,YAAY,CAAE,WAAW,CACzB,gBAAgB,CAAE,WAAW,CAEzB,KAAK,CLjDmC,OAAO,CKwDtD,AatCL,AbkCQ,SalCC,Ab0BJ,SAAS,AAQL,MAAM,AAAC,CACJ,YAAY,CL3D4B,IAAO,CK4D/C,gBAAgB,CL5DwB,IAAO,CK6DlD,AR4qGT,AAAA,YAAY,AqB7sGC,Cb3BT,KAAK,CJyR+B,IAAI,CIxRxC,YAAY,CLMoC,OAAO,CKLvD,gBAAgB,CLKgC,OAAO,CkBsB1D,AAFD,AbvBI,YauBQ,AbvBP,MAAM,CauBX,YAAY,AbtBP,MAAM,CasBX,YAAY,AbrBP,OAAO,CaqBZ,YAAY,AbpBP,OAAO,CACR,KAAK,CamBT,YAAY,AbnBC,gBAAgB,AAAC,CACtB,KAAK,CJgR2B,IAAI,CI/QpC,YAAY,CJwRoB,OAAgC,CIvRhE,gBAAgB,CJuRgB,OAAgC,CItRnE,AaeL,AbdI,YacQ,AbdP,OAAO,CacZ,YAAY,AbbP,OAAO,CACR,KAAK,CaYT,YAAY,AbZC,gBAAgB,AAAC,CACtB,gBAAgB,CAAE,IAAI,CACzB,AaUL,AbLQ,YaKI,AbTP,SAAS,CaSd,YAAY,AbTP,SAAS,AAKL,MAAM,CaIf,YAAY,AbTP,SAAS,AAML,MAAM,CaGf,YAAY,AbTP,SAAS,AAOL,OAAO,CaEhB,YAAY,AbTP,SAAS,AAQL,OAAO,CaChB,YAAY,CbRP,AAAA,QAAC,AAAA,EaQN,YAAY,CbRP,AAAA,QAAC,AAAA,CAIG,MAAM,CaIf,YAAY,CbRP,AAAA,QAAC,AAAA,CAKG,MAAM,CaGf,YAAY,CbRP,AAAA,QAAC,AAAA,CAMG,OAAO,CaEhB,YAAY,CbRP,AAAA,QAAC,AAAA,CAOG,OAAO,CaChB,YAAY,CbPP,AAAA,aAAC,AAAA,EaON,YAAY,CbPP,AAAA,aAAC,AAAA,CAGG,MAAM,CaIf,YAAY,CbPP,AAAA,aAAC,AAAA,CAIG,MAAM,CaGf,YAAY,CbPP,AAAA,aAAC,AAAA,CAKG,OAAO,CaEhB,YAAY,CbPP,AAAA,aAAC,AAAA,CAMG,OAAO,CaChB,YAAY,CbNR,QAAQ,CAAA,AAAA,QAAC,AAAA,EaMb,YAAY,CbNR,QAAQ,CAAA,AAAA,QAAC,AAAA,CAEJ,MAAM,CaIf,YAAY,CbNR,QAAQ,CAAA,AAAA,QAAC,AAAA,CAGJ,MAAM,CaGf,YAAY,CbNR,QAAQ,CAAA,AAAA,QAAC,AAAA,CAIJ,OAAO,CaEhB,YAAY,CbNR,QAAQ,CAAA,AAAA,QAAC,AAAA,CAKJ,OAAO,AAAC,CACL,YAAY,CLpB4B,OAAO,CKqB/C,gBAAgB,CLrBwB,OAAO,CKsBlD,AaFT,AbKI,YaLQ,AbKP,aAAa,AAAC,CACX,gBAAgB,CAAE,WAAW,CAEzB,KAAK,CL5BmC,OAAO,CKwCtD,AapBL,AbWQ,YaXI,AbKP,aAAa,AAMT,MAAM,CaXf,YAAY,AbKP,aAAa,AAOT,MAAM,CaZf,YAAY,AbKP,aAAa,AAQT,OAAO,CabhB,YAAY,AbKP,aAAa,AAST,OAAO,CACR,KAAK,Cafb,YAAY,AbKP,aAAa,AAUD,gBAAgB,AAAC,CACtB,KAAK,CJ8OuB,IAAI,CI7OhC,YAAY,CLrC4B,OAAO,CKsC/C,gBAAgB,CLtCwB,OAAO,CKuClD,AanBT,AbsBI,YatBQ,AbsBP,SAAS,AAAC,CACP,eAAe,CAAE,IAAI,CACrB,YAAY,CAAE,WAAW,CACzB,gBAAgB,CAAE,WAAW,CAEzB,KAAK,CL/CmC,OAAO,CKsDtD,AalCL,Ab8BQ,Ya9BI,AbsBP,SAAS,AAQL,MAAM,AAAC,CACJ,YAAY,CL3D4B,IAAO,CK4D/C,gBAAgB,CL5DwB,IAAO,CK6DlD,ARytGT,AAAA,WAAW,AqBtvGC,Cb/BR,KAAK,CJ0R+B,IAAI,CIzRxC,YAAY,CLOoC,OAAO,CKNvD,gBAAgB,CLMgC,OAAO,CkByB1D,AAFD,Ab3BI,Wa2BO,Ab3BN,MAAM,Ca2BX,WAAW,Ab1BN,MAAM,Ca0BX,WAAW,AbzBN,OAAO,CayBZ,WAAW,AbxBN,OAAO,CACR,KAAK,CauBT,WAAW,AbvBE,gBAAgB,AAAC,CACtB,KAAK,CJiR2B,IAAI,CIhRpC,YAAY,CJyRoB,OAA+B,CIxR/D,gBAAgB,CJwRgB,OAA+B,CIvRlE,AamBL,AblBI,WakBO,AblBN,OAAO,CakBZ,WAAW,AbjBN,OAAO,CACR,KAAK,CagBT,WAAW,AbhBE,gBAAgB,AAAC,CACtB,gBAAgB,CAAE,IAAI,CACzB,AacL,AbTQ,WaSG,AbbN,SAAS,Caad,WAAW,AbbN,SAAS,AAKL,MAAM,CaQf,WAAW,AbbN,SAAS,AAML,MAAM,CaOf,WAAW,AbbN,SAAS,AAOL,OAAO,CaMhB,WAAW,AbbN,SAAS,AAQL,OAAO,CaKhB,WAAW,CbZN,AAAA,QAAC,AAAA,EaYN,WAAW,CbZN,AAAA,QAAC,AAAA,CAIG,MAAM,CaQf,WAAW,CbZN,AAAA,QAAC,AAAA,CAKG,MAAM,CaOf,WAAW,CbZN,AAAA,QAAC,AAAA,CAMG,OAAO,CaMhB,WAAW,CbZN,AAAA,QAAC,AAAA,CAOG,OAAO,CaKhB,WAAW,CbXN,AAAA,aAAC,AAAA,EaWN,WAAW,CbXN,AAAA,aAAC,AAAA,CAGG,MAAM,CaQf,WAAW,CbXN,AAAA,aAAC,AAAA,CAIG,MAAM,CaOf,WAAW,CbXN,AAAA,aAAC,AAAA,CAKG,OAAO,CaMhB,WAAW,CbXN,AAAA,aAAC,AAAA,CAMG,OAAO,CaKhB,WAAW,CbVP,QAAQ,CAAA,AAAA,QAAC,AAAA,EaUb,WAAW,CbVP,QAAQ,CAAA,AAAA,QAAC,AAAA,CAEJ,MAAM,CaQf,WAAW,CbVP,QAAQ,CAAA,AAAA,QAAC,AAAA,CAGJ,MAAM,CaOf,WAAW,CbVP,QAAQ,CAAA,AAAA,QAAC,AAAA,CAIJ,OAAO,CaMhB,WAAW,CbVP,QAAQ,CAAA,AAAA,QAAC,AAAA,CAKJ,OAAO,AAAC,CACL,YAAY,CLnB4B,OAAO,CKoB/C,gBAAgB,CLpBwB,OAAO,CKqBlD,AaET,AbCI,WaDO,AbCN,aAAa,AAAC,CACX,gBAAgB,CAAE,WAAW,CAEzB,KAAK,CL3BmC,OAAO,CKuCtD,AahBL,AbOQ,WaPG,AbCN,aAAa,AAMT,MAAM,CaPf,WAAW,AbCN,aAAa,AAOT,MAAM,CaRf,WAAW,AbCN,aAAa,AAQT,OAAO,CaThB,WAAW,AbCN,aAAa,AAST,OAAO,CACR,KAAK,CaXb,WAAW,AbCN,aAAa,AAUD,gBAAgB,AAAC,CACtB,KAAK,CJ+OuB,IAAI,CI9OhC,YAAY,CLpC4B,OAAO,CKqC/C,gBAAgB,CLrCwB,OAAO,CKsClD,AafT,AbkBI,WalBO,AbkBN,SAAS,AAAC,CACP,eAAe,CAAE,IAAI,CACrB,YAAY,CAAE,WAAW,CACzB,gBAAgB,CAAE,WAAW,CAEzB,KAAK,CL9CmC,OAAO,CKqDtD,Aa9BL,Ab0BQ,Wa1BG,AbkBN,SAAS,AAQL,MAAM,AAAC,CACJ,YAAY,CL3D4B,IAAO,CK4D/C,gBAAgB,CL5DwB,IAAO,CK6DlD,AaxBT,AAAA,OAAO,AAAC,CACJ,SAAS,CjB+D2B,IAAI,CiB3D3C,AALD,AAEI,OAFG,CAEH,GAAG,AAAC,CACA,MAAM,CAAE,gBAA+B,CAC1C,AAGL,AAAA,OAAO,AAAC,CACJ,SAAS,CjByD2B,IAAI,CiBrD3C,AALD,AAEI,OAFG,CAEH,GAAG,AAAC,CACA,MAAM,CAAE,gBAA+B,CAC1C,AAIL,AAAA,UAAU,AAAC,CACP,OAAO,CAAE,CAAC,CACV,cAAc,CAAE,MAAM,CACtB,YAAY,CAAE,IAAI,CAClB,gBAAgB,CAAE,WAAW,CAShC,AAbD,AAKI,UALM,CAKN,GAAG,AAAC,CACA,OAAO,CAAE,KAAK,CACd,MAAM,CAAE,IAAI,CACf,AARL,AASI,UATM,AASL,MAAM,CATX,UAAU,AAUL,MAAM,AAAC,CACJ,gBAAgB,CAAE,WAAW,CAChC,AAIL,AACI,SADK,CACD,GAAG,CADX,SAAS,CAED,UAAU,AAAC,CACX,MAAM,CAAE,CAAC,CACZ,AAGL,AACI,eADW,CACP,GAAG,CADX,eAAe,CAEP,UAAU,AAAC,CACX,KAAK,CAAE,KAAK,CACZ,WAAW,CAAE,GAAG,CACnB,AAGL,AAAA,aAAa,AAAC,CACV,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,CAAC,CAMlB,AARD,AAGI,aAHS,CAGL,GAAG,CAHX,aAAa,CAIL,UAAU,AAAC,CACX,OAAO,CAAE,KAAK,CACd,MAAM,CAAE,SAAS,CACpB,ACpFL,AAAA,YAAY,AAAA,YAAY,AAAC,CACrB,SAAS,CAAE,IAAI,CAKlB,AAND,AAGI,YAHQ,AAAA,YAAY,CAGpB,cAAc,AAAC,CACX,OAAO,CAAE,CAAC,CACb,ApB+vEL,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CoB5vEiB,CACnB,QAAQ,CAAE,mBAAmB,CAC7B,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,MAAM,CAAE,YAAY,CACpB,MAAM,CAAE,OAAO,CACf,gBAAgB,CAAE,IAAI,CACtB,eAAe,CAAE,IAAI,CACrB,cAAc,CAAE,IAAI,CACpB,mBAAmB,CAAE,IAAI,CACzB,WAAW,CAAE,IAAI,CACjB,UAAU,CAAE,IAAI,CAChB,eAAe,CAAE,IAAI,CACrB,kBAAkB,CAAE,IAAI,CA6E3B,AA1FD,AAgBI,KAhBC,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAgBD,WAAW,AAAC,CACT,KAAK,CnBhCuC,OAAO,CmBiCnD,YAAY,CnBjCgC,OAAO,CmBkCnD,aAAa,ClBYmB,GAAG,CkBXnC,gBAAgB,ClBmMgB,IAAI,CkBlMvC,AArBL,AAuBI,KAvBC,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAuBD,MAAM,AAAA,WAAW,CAvBtB,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAwBD,QAAQ,AAAA,WAAW,AAAC,CACjB,KAAK,CnBnCuC,OAAO,CmBoCnD,YAAY,CnBpCgC,OAAO,CmBqCnD,gBAAgB,ClB6LgB,IAAI,CkB5LvC,AA5BL,AA8BI,KA9BC,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CA8BD,OAAO,CA9BZ,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CA+BD,MAAM,AAAC,CACJ,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,KAAK,CACd,UAAU,CAAE,aAAa,CAC5B,AAnCL,AAqCI,KArCC,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAqCD,OAAO,AAAC,CAEL,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,OAAO,CAAE,EAAE,CACX,MAAM,CAAE,GAAG,CAAC,KAAK,CnBzD2B,OAAO,CmB0DnD,aAAa,ClBZmB,GAAG,CkBanC,gBAAgB,CAAE,WAAW,CAChC,AA7CL,AA+CI,KA/CC,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CA+CD,MAAM,AAAC,CAEJ,KAAK,CAAE,GAAG,CACV,MAAM,CAAE,GAAG,CACX,MAAM,CAAE,OAAO,CACf,SAAS,CAAE,cAAc,CACzB,cAAc,CAAE,IAAI,CACpB,MAAM,CAAE,iBAAiB,CACzB,UAAU,CAAE,CAAC,CACb,YAAY,CAAE,CAAC,CAClB,AAzDL,AA2DI,KA3DC,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CA2DD,IAAK,CAAA,SAAS,CAAC,IAAK,CAAA,QAAQ,CAAC,MAAM,AAAA,MAAM,AAAC,CACvC,OAAO,CAAE,EAAE,CACX,YAAY,CnB5EgC,OAAO,CmB6EtD,AA9DL,AAgEI,KAhEC,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAgED,QAAQ,AAAA,OAAO,AAAC,CACb,YAAY,CnB3EgC,OAAO,CmB4EnD,gBAAgB,CnB5E4B,OAAO,CmB6EtD,AAnEL,AAqEI,KArEC,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAqED,QAAQ,AAAA,MAAM,AAAC,CACZ,OAAO,CAAE,EAAE,CACd,AAvEL,AAyEI,KAzEC,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAyED,SAAS,AAAA,OAAO,AAAC,CACd,gBAAgB,CnBxF4B,IAAO,CmByFtD,AA3EL,AA6EI,KA7EC,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CA6ED,QAAQ,AAAA,SAAS,AAAA,OAAO,AAAC,CACtB,YAAY,CAAE,WAAW,CACzB,gBAAgB,CnBzF4B,mBAAO,CmB0FtD,AAhFL,AAkFI,KAlFC,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAkFD,SAAS,AAAA,MAAM,CAlFpB,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAmFD,QAAQ,AAAA,SAAS,AAAA,MAAM,AAAC,CACrB,YAAY,CnBlGgC,IAAO,CmBmGtD,AArFL,AAuFI,KAvFC,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,EAuFE,cAAc,AAAC,CACf,WAAW,ClBoHqB,GAAG,CkBnHtC,ApB+wEL,AAAA,QAAQ,AqBh3EC,CACL,OAAO,CAAE,GAAG,CACZ,MAAM,CAAE,CAAC,CACT,aAAa,CAAE,CAAC,CAkDnB,AArDD,AAII,QAJI,CAIJ,mBAAmB,AAAC,CAChB,MAAM,CAAE,MAAM,CAoBjB,AAzBL,AASY,QATJ,CAIJ,mBAAmB,CAGf,kBAAkB,CAEd,UAAU,AAAC,CACP,OAAO,CAAE,GAAG,CACZ,KAAK,CpBnB+B,IAAO,CoBoB3C,YAAY,CnB2XY,aAAW,CmB1XnC,gBAAgB,CnBwXQ,aAAW,CmBlXtC,AAnBb,AAcgB,QAdR,CAIJ,mBAAmB,CAGf,kBAAkB,CAEd,UAAU,AAKL,MAAM,AAAC,CACJ,KAAK,CpBjB2B,OAAO,CoBkBvC,YAAY,CnBwXQ,aAAW,CmBvX/B,gBAAgB,CnBqXI,aAAW,CmBpXlC,AAlBjB,AAqBY,QArBJ,CAIJ,mBAAmB,CAGf,kBAAkB,CAcd,sBAAsB,AAAC,CACnB,OAAO,CAAE,SAAS,CACrB,AAvBb,AA0BI,QA1BI,CA0BJ,kBAAkB,AAAC,CACf,MAAM,CAAE,MAAM,CAyBjB,AApDL,AA6BY,QA7BJ,CA0BJ,kBAAkB,CAEd,oBAAoB,CAChB,qBAAqB,AAAC,CAClB,cAAc,CAAE,MAAM,CAIzB,AAlCb,AA+BgB,QA/BR,CA0BJ,kBAAkB,CAEd,oBAAoB,CAChB,qBAAqB,CAEjB,KAAK,AAAC,CACF,WAAW,CAAE,GAAG,CACnB,AAjCjB,AAmCY,QAnCJ,CA0BJ,kBAAkB,CAEd,oBAAoB,CAOhB,qBAAqB,AAAC,CAClB,OAAO,CAAE,WAAW,CAcvB,AAlDb,AAqCgB,QArCR,CA0BJ,kBAAkB,CAEd,oBAAoB,CAOhB,qBAAqB,CAEjB,aAAa,AAAC,CACV,MAAM,CAAE,IAAI,CACZ,SAAS,CAAE,IAAI,CAClB,AAxCjB,AAyCgB,QAzCR,CA0BJ,kBAAkB,CAEd,oBAAoB,CAOhB,qBAAqB,CAMjB,MAAM,AAAA,aAAa,AAAC,CAChB,OAAO,CAAE,GAAG,CACZ,cAAc,CAAE,MAAM,CACzB,AA5CjB,AA6CgB,QA7CR,CA0BJ,kBAAkB,CAEd,oBAAoB,CAOhB,qBAAqB,CAUjB,UAAU,AAAC,CACP,MAAM,CAAE,IAAI,CACZ,WAAW,CAAE,GAAG,CAChB,cAAc,CAAE,GAAG,CACtB,ArBg5EjB,AAAA,YAAY,CAAC,QAAQ,AqBz4EC,CAClB,MAAM,CAAE,CAAC,CACZ,ArBg7ED,AAAA,YAAY,CAAC,KAAK,AsBz+ER,CACF,YAAY,CAAE,CAAC,CACf,gBAAgB,CAAE,WAAW,CA0DhC,AA7DL,AAKQ,YALI,CACR,KAAK,CAID,EAAE,AAAC,CACC,YAAY,CAAE,KAAK,CACnB,YAAY,CrBd4B,OAAO,CqBe/C,gBAAgB,CAAE,CAAC,CACnB,YAAY,CAAE,CAAC,CACf,mBAAmB,CAAE,GAAG,CACxB,WAAW,CAAE,CAAC,CACd,gBAAgB,CpB0WY,aAAW,CoBzWvC,OAAO,CpB4VqB,IAAI,CACJ,IAAI,CACJ,IAAI,CACJ,IAAI,CoB9VhC,cAAc,CAAE,MAAM,CAIzB,AAlBT,AAeY,YAfA,CACR,KAAK,CAID,EAAE,CAUE,yBAAyB,AAAC,CACtB,WAAW,CAAE,MAAM,CACtB,AAjBb,AAqBY,YArBA,CACR,KAAK,CAmBD,KAAK,CAAC,EAAE,CACJ,EAAE,AAAC,CnBpBX,kBAAkB,CAHP,GAAG,CADH,GAAI,CADP,EAAE,CAGQ,4BAA4B,CAG9C,eAAe,CAJJ,GAAG,CADH,GAAI,CADP,EAAE,CAGQ,4BAA4B,CAI9C,aAAa,CALF,GAAG,CADH,GAAI,CADP,EAAE,CAGQ,4BAA4B,CAK9C,UAAU,CANC,GAAG,CADH,GAAI,CADP,EAAE,CAGQ,4BAA4B,CAM9C,eAAe,CAVP,OAAO,CmB4BH,OAAO,CpBkViB,IAAI,CACJ,IAAI,CACJ,IAAI,CACJ,IAAI,CoBpV5B,cAAc,CAAE,MAAM,CACtB,YAAY,CAAE,CAAC,CACf,YAAY,CrBjCwB,OAAO,CqBkC3C,mBAAmB,CAAE,GAAG,CACxB,mBAAmB,CAAE,KAAK,CAC1B,gBAAgB,CpBwVQ,IAAI,CoBhV/B,AArCb,AA8BgB,YA9BJ,CACR,KAAK,CAmBD,KAAK,CAAC,EAAE,CACJ,EAAE,AASG,MAAM,AAAC,CACJ,OAAO,CAAE,IAAI,CAChB,AAhCjB,AAkCgB,YAlCJ,CACR,KAAK,CAmBD,KAAK,CAAC,EAAE,CACJ,EAAE,CAaE,yBAAyB,AAAC,CACtB,aAAa,CAAE,QAAQ,CAC1B,AApCjB,AAsCY,YAtCA,CACR,KAAK,CAmBD,KAAK,CAAC,EAAE,AAkBH,SAAS,CAAC,EAAE,CAtCzB,YAAY,CACR,KAAK,CAmBD,KAAK,CAAC,EAAE,AAmBH,SAAS,AAAA,MAAM,CAAC,EAAE,AAAC,CAChB,KAAK,CrBxB+B,IAAO,CqByB3C,gBAAgB,CpB+UQ,OAAkC,CoB/UtB,UAAU,CACjD,AA1Cb,AA8CY,YA9CA,CACR,KAAK,CA4CD,KAAK,CACC,EAAE,CAAG,EAAE,AAAC,CACN,OAAO,CpB0TiB,IAAI,CACJ,IAAI,CACJ,IAAI,CACJ,IAAI,CoB5T5B,YAAY,CAAE,CAAC,CACf,gBAAgB,CrBxDoB,OAAO,CqByD9C,AAlDb,AAmDY,YAnDA,CACR,KAAK,CA4CD,KAAK,CAMC,EAAE,CAAG,EAAE,AAAC,CACN,OAAO,CpBqTiB,IAAI,CACJ,IAAI,CACJ,IAAI,CACJ,IAAI,CoBvT5B,YAAY,CAAE,CAAC,CACf,gBAAgB,CpB+TQ,IAAI,CoB9T5B,WAAW,CpB+Ca,IAAI,CoB9C/B,AAxDb,AA0DQ,YA1DI,CACR,KAAK,CAyDC,CAAC,AAAA,MAAM,AAAC,CACN,OAAO,CAAE,CAAC,CACb,AC5DT,AAEQ,iBAFS,AAAA,YAAY,CACzB,KAAK,CACD,EAAE,AAAC,CACC,YAAY,CAAE,CAAC,CAClB,AAJT,AAOY,iBAPK,AAAA,YAAY,CACzB,KAAK,CAKD,KAAK,CAAC,EAAE,CACJ,EAAE,AAAC,CACC,gBAAgB,CAAE,CAAC,CACtB,AATb,AAWY,iBAXK,AAAA,YAAY,CACzB,KAAK,CAKD,KAAK,CAAC,EAAE,AAKH,UAAW,CzB40EgB,GAAG,EyB50Ed,EAAE,AAAC,CAChB,gBAAgB,CrBgXQ,OAAkC,CqB/W7D,AAMb,AACI,kBADc,AAAA,YAAY,CAC1B,KAAK,AAAC,CACF,MAAM,CAAE,SAAS,CAWpB,AAbL,AAIQ,kBAJU,AAAA,YAAY,CAC1B,KAAK,CAGD,EAAE,AAAC,CACC,MAAM,CAAE,GAAG,CAAC,KAAK,CtB/BuB,OAAO,CsBgClD,AANT,AASY,kBATM,AAAA,YAAY,CAC1B,KAAK,CAOD,KAAK,CAAC,EAAE,CACJ,EAAE,AAAC,CACC,MAAM,CAAE,GAAG,CAAC,KAAK,CtBpCmB,OAAO,CsBqC9C,AAXb,AAgBQ,kBAhBU,AAAA,YAAY,CAe1B,KAAK,CACC,EAAE,CAAG,EAAE,AAAC,CACN,YAAY,CAAE,CAAC,CACf,gBAAgB,CtB5CwB,OAAO,CsB6ClD,AAnBT,AAqBQ,kBArBU,AAAA,YAAY,CAe1B,KAAK,CAMC,EAAE,CAAG,EAAE,AAAC,CACN,YAAY,CAAE,GAAG,CACpB,AAKT,AACI,qBADiB,AAAA,YAAY,CAC7B,KAAK,AAAC,CACF,gBAAgB,CAAE,WAAW,CAWhC,AAbL,AAKY,qBALS,AAAA,YAAY,CAC7B,KAAK,CAGD,KAAK,CAAC,EAAE,AACH,YAAa,CzBmyEc,GAAG,CyBnyEZ,CACf,gBAAgB,CAAE,WAAW,CAChC,AAPb,AASY,qBATS,AAAA,YAAY,CAC7B,KAAK,CAGD,KAAK,CAAC,EAAE,CAKJ,EAAE,AAAC,CACC,gBAAgB,CAAE,WAAW,CAChC,AAMb,AAGY,eAHG,AAAA,YAAY,CACvB,KAAK,CACD,KAAK,CAAC,EAAE,AACH,MAAM,CAAC,EAAE,AAAC,CACP,gBAAgB,CrBmTQ,OAAkC,CqBnTzB,UAAU,CAC9C,AALb,AAOY,eAPG,AAAA,YAAY,CACvB,KAAK,CACD,KAAK,CAAC,EAAE,AAKH,SAAS,AAAA,MAAM,CAAC,EAAE,AAAC,CAChB,gBAAgB,CrBiTQ,OAAkC,CqBjThB,UAAU,CACvD,AAMb,AAEQ,YAFI,AAAA,YAAY,CACpB,KAAK,CACD,EAAE,AAAC,CACC,OAAO,CAAE,IAAuB,CAAC,IAAyB,CAAC,IAA0B,CAAC,IAAwB,CACjH,AAJT,AAOY,YAPA,AAAA,YAAY,CACpB,KAAK,CAKD,KAAK,CAAC,EAAE,CACJ,EAAE,AAAC,CACC,OAAO,CAAE,IAAuB,CAAC,IAAyB,CAAC,IAA0B,CAAC,IAAwB,CACjH,AAKb,AAEQ,YAFI,AAAA,YAAY,CACpB,KAAK,CACD,EAAE,AAAC,CACC,OAAO,CAAE,KAAuB,CAAC,KAAyB,CAAC,KAA0B,CAAC,KAAwB,CACjH,AAJT,AAOY,YAPA,AAAA,YAAY,CACpB,KAAK,CAKD,KAAK,CAAC,EAAE,CACJ,EAAE,AAAC,CACC,OAAO,CAAE,KAAuB,CAAC,KAAyB,CAAC,KAA0B,CAAC,KAAuB,CAChH,AAOb,AAKI,oBALgB,AAAA,QAAQ,CAKxB,qBAAqB,AAAC,CAClB,OAAO,CAAE,IAAI,CAChB,AAPL,AASI,oBATgB,AAAA,QAAQ,CASxB,oBAAoB,AAAC,CACjB,OAAO,CAAE,KAAK,CACjB,AAXL,AAaI,oBAbgB,AAAA,QAAQ,CAaxB,qBAAqB,AAAC,CAClB,OAAO,CAAE,IAAI,CAChB,AAfL,AAkBQ,oBAlBY,AAAA,QAAQ,CAiBxB,kBAAkB,CACd,wBAAwB,AAAC,CACrB,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,CAAC,CACX,AArBT,AAuBQ,oBAvBY,AAAA,QAAQ,CAiBxB,kBAAkB,CAMd,qBAAqB,AAAC,CAClB,KAAK,CAAE,GAAG,CACV,YAAY,CAAE,CAAC,CAOlB,AAhCT,AA2BY,oBA3BQ,AAAA,QAAQ,CAiBxB,kBAAkB,CAMd,qBAAqB,CAIjB,IAAI,CA3BhB,oBAAoB,AAAA,QAAQ,CAiBxB,kBAAkB,CAMd,qBAAqB,CAKjB,aAAa,AAAC,CACV,MAAM,CAAE,IAAI,CACZ,SAAS,CAAE,IAAI,CAClB,AC5Ib,AAEI,YAFQ,CAER,qBAAqB,AAAC,CAElB,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,IAAI,CAChB,OAAO,CAAE,KAAK,CACd,UAAU,CAAE,GAAG,CAAC,KAAK,CvBduB,OAAO,CuBenD,aAAa,CAAE,CAAC,CAChB,gBAAgB,CtB6agB,aAAW,CsBpa9C,AAlBL,AAWQ,YAXI,CAER,qBAAqB,CASjB,UAAU,AAAC,CACP,YAAY,CAAE,KAAK,CACnB,aAAa,CAAE,CAAC,CAInB,AAjBT,AAcY,YAdA,CAER,qBAAqB,CASjB,UAAU,AAGL,WAAW,AAAC,CACT,YAAY,CAAE,CAAC,CAClB,AAhBb,AAqBQ,YArBI,CAoBN,oBAAoB,CAAG,oBAAoB,CACvC,IAAI,AAAC,CACH,YAAY,CAAE,CAAC,CACf,WAAW,CAAE,CAAC,CACjB,AAxBT,AA2BI,YA3BQ,CA2BR,oBAAoB,AAAC,CACjB,KAAK,CvBZuC,IAAO,CuBanD,UAAU,CvBekC,IAAO,CuBdtD,AxBw6EL,AAAA,YAAY,AyBt8EC,CAET,OAAO,CAAE,gBAAgB,CACzB,OAAO,CAAE,IAAI,CACb,SAAS,CAAE,IAAI,CACf,UAAU,CxBuCsC,IAAO,CwBtCvD,aAAa,CvBiCuB,GAAG,CuBhCvC,MAAM,CAAE,GAAG,CAAC,KAAK,CxBd+B,OAAO,CwBevD,UAAU,CAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAmB,CA4E/C,AApFD,AASI,YATQ,CASR,yBAAyB,AAAC,CACtB,OAAO,CAAE,IAAI,CACb,cAAc,CAAE,GAAG,CACnB,eAAe,CAAE,aAAa,CAC9B,MAAM,CAAE,cAAc,CACzB,AAdL,AAeI,YAfQ,CAeR,uBAAuB,CAf3B,YAAY,CAgBR,2BAA2B,CAhB/B,YAAY,CAiBR,2BAA2B,AAAC,CACxB,MAAM,CAAE,CAAC,CACT,MAAM,CAAE,OAAO,CACf,UAAU,CAAE,WAAW,CAC1B,AArBL,AAwBQ,YAxBI,CAsBR,uBAAuB,AAElB,MAAM,CAxBf,YAAY,CAuBR,2BAA2B,AACtB,MAAM,AAAC,CACJ,KAAK,CxB3BmC,OAAO,CwB4BlD,AA1BT,AA4BI,YA5BQ,CA4BR,2BAA2B,AAAC,CACxB,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,MAAM,CACnB,eAAe,CAAE,MAAM,CACvB,QAAQ,CAAE,QAAQ,CAIrB,AApCL,AAiCQ,YAjCI,CA4BR,2BAA2B,CAKvB,0BAA0B,AAAA,YAAY,AAAC,CACnC,YAAY,CAAE,IAAI,CACrB,AAnCT,AAqCI,YArCQ,CAqCR,EAAE,AAAC,CACC,KAAK,CxBxCuC,OAAO,CwByCtD,AAvCL,AAwCI,YAxCQ,CAwCR,EAAE,CAxCN,YAAY,CAyCR,EAAE,AAAC,CACC,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,UAAU,CAAE,MAAM,CACrB,AA7CL,AA8CI,YA9CQ,CA8CR,EAAE,AAAC,CACC,KAAK,CxB/BuC,IAAO,CwBuCtD,AAvDL,AAiDQ,YAjDI,CA8CR,EAAE,AAGG,MAAM,AAAC,CACJ,MAAM,CAAE,OAAO,CACf,aAAa,CAAE,GAAG,CAClB,KAAK,CxBtDmC,OAAO,CwBuD/C,gBAAgB,CxBxDwB,IAAO,CwByDlD,AAtDT,AAwDI,YAxDQ,CAwDR,2BAA2B,CAxD/B,YAAY,CAyDR,+BAA+B,AAAC,CAC5B,KAAK,CAAE,OAAiC,CAC3C,AA3DL,AA4DI,YA5DQ,CA4DR,yBAAyB,CA5D7B,YAAY,CA6DR,yBAAyB,AAAA,MAAM,AAAC,CAC5B,KAAK,CAAE,IAAI,CACX,aAAa,CAAE,GAAG,CAClB,UAAU,CxBlEkC,OAAO,CwBmEtD,AAjEL,AAqEI,YArEQ,CAqER,0BAA0B,AAAC,CACvB,UAAU,CAAE,MAAM,CAClB,UAAU,CAAE,IAAI,CAChB,KAAK,CAAE,OAA4B,CAWtC,AAnFL,AAyEQ,YAzEI,CAqER,0BAA0B,CAItB,IAAI,AAAA,0BAA0B,AAAC,CAC3B,KAAK,CxB5EmC,OAAO,CwB6E/C,WAAW,CAAE,IAAI,CACjB,YAAY,CAAE,IAAI,CACrB,AA7ET,AA8EQ,YA9EI,CAqER,0BAA0B,CAStB,IAAI,AAAA,MAAM,AAAC,CACP,MAAM,CAAE,OAAO,CACf,eAAe,CAAE,SAAS,CAC1B,gBAAgB,CAAE,WAAW,CAChC,AzBw3ET,AAAA,mCAAmC,AyBp3EC,CAEhC,OAAO,CAAE,gBAAgB,CACzB,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,IAAI,CACT,OAAO,CAAE,QAAQ,CACjB,aAAa,CvBrDuB,GAAG,CuBsDvC,gBAAgB,CxBjDgC,IAAO,CwB2D1D,AAjBD,AAQI,mCAR+B,CAQ/B,GAAG,AAAC,CACA,MAAM,CAAE,OAAO,CACf,SAAS,CAAE,IAAI,CACf,OAAO,CAAE,KAAK,CAKjB,AAhBL,AAYQ,mCAZ2B,CAQ/B,GAAG,AAIE,MAAM,CAZf,mCAAmC,CAQ/B,GAAG,AAKE,MAAM,AAAC,CACJ,KAAK,CxBtGmC,OAAO,CwBuGlD,AzBwyFT,AAAA,UAAU,A0B74FC,CACP,OAAO,CAAE,GAAG,CACZ,OAAO,CAAE,IAAI,CACb,KAAK,CAAE,IAAI,CACX,MAAM,CxB2C4B,IAAI,CwB1CtC,OAAO,CAAE,CAAC,CACV,UAAU,CAAE,OAAO,CACnB,KAAK,CxB0C+B,IAAI,CwBzCxC,aAAa,CAAE,GAAG,CAAC,KAAK,CzBfwB,OAAO,CyBgBvD,gBAAgB,CzBmBgC,IAAO,CyBlBvD,UAAU,CAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAmB,CAkF9C,AA5FD,AAaI,UAbM,CAaN,GAAG,AAAA,eAAe,CAbtB,UAAU,CAcN,GAAG,AAAA,gBAAgB,AAAC,CAChB,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,OAAO,CACZ,KAAK,CAAE,OAAO,CACd,IAAI,CAAE,OAAO,CACb,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,MAAM,CACnB,KAAK,CAAE,GAAG,CACV,MAAM,CAAE,IAAI,CAMf,AA5BL,AAuBQ,UAvBE,CAaN,GAAG,AAAA,eAAe,CAUd,eAAe,CAvBvB,UAAU,CAcN,GAAG,AAAA,gBAAgB,CASf,eAAe,AAAC,CACZ,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,MAAM,CACnB,MAAM,CAAE,IAAI,CACf,AA3BT,AA8BI,UA9BM,CA8BN,GAAG,AAAA,eAAe,CAAC,eAAe,AAAC,CAC/B,KAAK,CAAE,CAAC,CAIX,AAnCL,AAgCQ,UAhCE,CA8BN,GAAG,AAAA,eAAe,CAAC,eAAe,CAE9B,eAAe,AAAC,CACZ,eAAe,CAAE,UAAU,CAC9B,AAlCT,AAoCI,UApCM,CAoCN,GAAG,AAAA,iBAAiB,AAAC,CACjB,QAAQ,CAAE,MAAM,CAChB,IAAI,CAAE,CAAC,CACP,KAAK,CAAE,CAAC,CACR,UAAU,CAAE,MAAM,CAWrB,AAnDL,AA0CQ,UA1CE,CAoCN,GAAG,AAAA,iBAAiB,CAMhB,SAAS,AAAC,CACN,QAAQ,CAAE,MAAM,CAChB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,CAAC,CACT,aAAa,CAAE,QAAQ,CACvB,KAAK,CxBEuB,IAAI,CwBDhC,SAAS,CxBEmB,IAAI,CwBDhC,WAAW,CxBFe,IAAI,CwBGjC,AAlDT,AAoDI,UApDM,CAoDN,GAAG,AAAA,gBAAgB,AAAC,CAChB,KAAK,CAAE,CAAC,CAIX,AAzDL,AAsDQ,UAtDE,CAoDN,GAAG,AAAA,gBAAgB,CAEf,eAAe,AAAC,CACZ,eAAe,CAAE,QAAQ,CAC5B,AAxDT,AA4DI,UA5DM,CA4DN,QAAQ,AAAC,CACL,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,MAAM,CACnB,MAAM,CAAE,IAAI,CACZ,kBAAkB,CAAE,QAAQ,CAC5B,eAAe,CAAE,QAAQ,CACzB,UAAU,CAAE,QAAQ,CACpB,eAAe,CAAE,IAAI,CAUxB,AA7EL,AAoEQ,UApEE,CA4DN,QAAQ,CAQJ,UAAU,AAAC,CACP,GAAG,CAAE,CAAC,CACN,SAAS,CAAE,IAAI,CAClB,AAvET,AAwEQ,UAxEE,CA4DN,QAAQ,AAYH,OAAO,AAAC,CACL,iBAAiB,CAAE,eAAe,CAClC,SAAS,CAAE,eAAe,CAC1B,KAAK,CxBVuB,OAAwB,CwBWvD,AA5ET,AA+EI,UA/EM,CA+EN,QAAQ,CA/EZ,UAAU,CAgFN,IAAI,CAhFR,UAAU,CAiFN,GAAG,AAAC,CACA,OAAO,CAAE,KAAK,CACjB,AAnFL,AAqFI,UArFM,CAqFN,iBAAiB,AAAC,CACd,SAAS,CAAE,IAAI,CACf,WAAW,CxBxCmB,IAAI,CwB4CrC,AA3FL,AAwFQ,UAxFE,CAqFN,iBAAiB,CAGb,GAAG,AAAC,CACA,MAAM,CAAE,IAAI,CACf,AAKT,AACI,IADA,CAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EACD,eAAe,AAAC,CACZ,KAAK,CAAE,CAAC,CACX,AAHL,AAII,IAJA,CAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAID,gBAAgB,AAAC,CACb,KAAK,CAAE,CAAC,CACX,ACrGL,AACI,aADS,AACR,OAAO,AAAC,CACL,OAAO,CAAE,YAAY,CACrB,UAAU,CAAE,MAAM,CAClB,YAAY,CAAE,WAAW,CACzB,cAAc,CAAE,MAAM,CACtB,WAAW,CAAE,sBAAsB,CACnC,WAAW,CzB6FqB,MAAM,CyB5FtC,UAAU,CAAE,MAAM,CAClB,WAAW,CAAE,OAAO,CACpB,sBAAsB,CAAE,WAAW,CACnC,uBAAuB,CAAE,SAAS,CACrC,A3BwtFL,AAAA,YAAY,A4BpuFC,CACT,MAAM,CAAE,CAAC,CAyBZ,AA1BD,AAEI,YAFQ,CAEN,mBAAmB,AAAC,CAClB,MAAM,CAAE,CAAC,CACT,KAAK,C3BYuC,IAAO,C2BXnD,YAAY,CAAE,aAAa,CAC3B,YAAY,CAAE,KAAK,CACnB,YAAY,C3BVgC,IAAO,C2BWnD,UAAU,C3BXkC,IAAO,C2BYnD,SAAS,C3BMmC,IAAI,C2BFnD,AAbL,AAUQ,YAVI,CAEN,mBAAmB,CAQjB,0BAA0B,AAAC,CACvB,UAAU,CAAE,KAAK,CACpB,AAZT,AAcI,YAdQ,CAcN,iBAAiB,AAAC,CAChB,OAAO,CAAE,SAAS,CAClB,YAAY,CAAE,GAAG,CACjB,YAAY,CAAE,KAAK,CACnB,YAAY,C3BrBgC,IAAO,C2BsBnD,gBAAgB,CAAE,OAAO,CAC5B,AApBL,AAqBI,YArBQ,CAqBR,mBAAmB,CAAG,iBAAiB,AAAC,CACpC,UAAU,CAAE,IAAI,CACnB,ACtBL,AtBNI,iBsBMa,CtBNX,mBAAmB,AAAC,CAClB,KAAK,CNoBuC,IAAO,CMnBnD,YAAY,CNAgC,IAAO,CMCnD,UAAU,CNDkC,IAAO,CMEtD,AsBEL,AtBDI,iBsBCa,CtBDX,iBAAiB,AAAC,CAChB,YAAY,CNJgC,IAAO,CMKtD,AsBGL,AtBVI,iBsBUa,CtBVX,mBAAmB,AAAC,CAClB,KAAK,CL4gB2B,IAAI,CK3gBpC,YAAY,CNCgC,OAAO,CMAnD,UAAU,CNAkC,OAAO,CMCtD,AsBML,AtBLI,iBsBKa,CtBLX,iBAAiB,AAAC,CAChB,YAAY,CNHgC,OAAO,CMItD,AsBOL,AtBdI,iBsBca,CtBdX,mBAAmB,AAAC,CAClB,KAAK,CL2gB2B,IAAI,CK1gBpC,YAAY,CNEgC,OAAO,CMDnD,UAAU,CNCkC,OAAO,CMAtD,AsBUL,AtBTI,iBsBSa,CtBTX,iBAAiB,AAAC,CAChB,YAAY,CNFgC,OAAO,CMGtD,AsBYL,AtBnBI,iBsBmBa,CtBnBX,mBAAmB,AAAC,CAClB,KAAK,CL8gB2B,IAAI,CK7gBpC,YAAY,CNIgC,OAAO,CMHnD,UAAU,CNGkC,OAAO,CMFtD,AsBeL,AtBdI,iBsBca,CtBdX,iBAAiB,AAAC,CAChB,YAAY,CNAgC,OAAO,CMCtD,AsBiBL,AtBxBI,csBwBU,CtBxBR,mBAAmB,AAAC,CAClB,KAAK,CL6gB2B,IAAI,CK5gBpC,YAAY,CNGgC,OAAO,CMFnD,UAAU,CNEkC,OAAO,CMDtD,AsBoBL,AtBnBI,csBmBU,CtBnBR,iBAAiB,AAAC,CAChB,YAAY,CNDgC,OAAO,CMEtD,AsBsBL,AtB7BI,iBsB6Ba,CtB7BX,mBAAmB,AAAC,CAClB,KAAK,CL+gB2B,IAAI,CK9gBpC,YAAY,CNKgC,OAAO,CMJnD,UAAU,CNIkC,OAAO,CMHtD,AsByBL,AtBxBI,iBsBwBa,CtBxBX,iBAAiB,AAAC,CAChB,YAAY,CNCgC,OAAO,CMAtD,AsB2BL,AtBlCI,gBsBkCY,CtBlCV,mBAAmB,AAAC,CAClB,KAAK,CLghB2B,IAAI,CK/gBpC,YAAY,CNMgC,OAAO,CMLnD,UAAU,CNKkC,OAAO,CMJtD,AsB8BL,AtB7BI,gBsB6BY,CtB7BV,iBAAiB,AAAC,CAChB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"} \ No newline at end of file diff --git a/theme/styles/web/sass/app/_custom-variables.scss b/theme/styles/web/sass/app/_custom-variables.scss deleted file mode 100644 index a47c7e0..0000000 --- a/theme/styles/web/sass/app/_custom-variables.scss +++ /dev/null @@ -1,73 +0,0 @@ -//== Gray Shades -//## Different gray shades to be used for our variables and components -$gray-darker: #222222; -$gray-dark: #333333; -$gray: #555555; -$gray-light: #888888; -$gray-primary: #D7D7D7; -$gray-lighter: #EEEEEE; - -//== Step 1: Brand Colors -$brand-default: #DDDDDD; -$brand-primary: #0595DB; -$brand-inverse: #252C36; -$brand-info: #48B0F7; -$brand-success: #76CA02; -$brand-warning: #F99B1D; -$brand-danger: #ED1C24; - -// Used for other variables -$default-border-color: $gray-primary; - -//== Step 3: Typography -$font-family-import: "https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700"; -@if $font-family-import != false { - // Only import, if the import is set - @import url($font-family-import); -} -$font-family-base: "Open Sans", sans-serif; -$font-base-size: 14px; -$font-base-color: #555555; -$link-color: $brand-primary; -$font-size-h1: 31px; -$font-size-h2: 26px; -$font-size-h3: 24px; -$font-size-h4: 18px; -$font-color-detail: $gray-light; -$font-color-headers: #17347B; - -//== Step 2: UI Customization - -// Topbar -$topbar-bg: #FFFFFF; -$navtopbar-border-color: $default-border-color; -$topbar-border-color: $navtopbar-border-color; -$topbar-minimalheight: 60px; -$navtopbar-color: $font-base-color; -$navbar-brand-name: $default-border-color; -$brand-logo: false; -$brand-logo-height: 30px; -$brand-logo-width: 30px; - -// Sidebar -$sidebar-bg: $brand-inverse; -$navsidebar-color: #FFFFFF; -$navsidebar-color-hover: $navsidebar-color; - -// Backgrounds -$bg-color: #FFFFFF; -$bg-color-secondary: #F5F8FD; - -// == Old variables used in theme customizer to the new lib variables -$font-size-default: $font-base-size; -$font-color-default: $font-base-color; -$border-color-default: $default-border-color; -$font-color-header: $font-color-headers; - - -//== Settings -//## Enable or disable your desired framework features -// Use of !important -$important-flex: true; // ./base/flex.scss -$important-spacing: true; // ./base/spacing.scss -$important-helpers: true; // ./helpers/helperclasses.scss diff --git a/theme/styles/web/sass/core/_legacy/_mxui.scss b/theme/styles/web/sass/core/_legacy/_mxui.scss deleted file mode 100644 index a7ad1dd..0000000 --- a/theme/styles/web/sass/core/_legacy/_mxui.scss +++ /dev/null @@ -1,3562 +0,0 @@ -/* @preserve - Copyright (c) 2005-2016, Mendix bv. All rights reserved. - See mxclientsystem/licenses.txt for third party licenses that apply. -*/ - - -/* - Essential styles that themes can inherit. - In other words, works but doesn't look great. -*/ - - - -/**** - GENERIC PIECES - ****/ - - .dijitReset { - /* Use this style to null out padding, margin, border in your template elements - so that page specific styles don't break them. - - Use in all TABLE, TR and TD tags. - */ - margin:0; - border:0; - padding:0; - font: inherit; - line-height:normal; - color: inherit; -} -.dj_a11y .dijitReset { - -moz-appearance: none; /* remove predefined high-contrast styling in Firefox */ -} - -.dijitInline { - /* To inline block elements. - Similar to InlineBox below, but this has fewer side-effects in Moz. - Also, apparently works on a DIV as well as a FIELDSET. - */ - display:inline-block; /* webkit and FF3 */ - border:0; - padding:0; - vertical-align:middle; -} - -table.dijitInline { - /* To inline tables with a given width set */ - display:inline-table; - box-sizing: content-box; -moz-box-sizing: content-box; -} - -.dijitHidden { - /* To hide unselected panes in StackContainer etc. */ - position: absolute; /* remove from normal document flow to simulate display: none */ - visibility: hidden; /* hide element from view, but don't break scrolling, see #18612 */ -} -.dijitHidden * { - visibility: hidden !important; /* hide visibility:visible descendants of class=dijitHidden nodes, see #18799 */ -} - -.dijitVisible { - /* To show selected pane in StackContainer etc. */ - display: block !important; /* override user's display:none setting via style setting or indirectly via class */ - position: relative; /* to support setting width/height, see #2033 */ - visibility: visible; -} - -.dj_ie6 .dijitComboBox .dijitInputContainer, -.dijitInputContainer { - /* for positioning of placeHolder */ - overflow: hidden; - float: none !important; /* needed to squeeze the INPUT in */ - position: relative; -} -.dj_ie7 .dijitInputContainer { - float: left !important; /* needed by IE to squeeze the INPUT in */ - clear: left; - display: inline-block !important; /* to fix wrong text alignment in textdir=rtl text box */ -} - -.dj_ie .dijitSelect input, -.dj_ie input.dijitTextBox, -.dj_ie .dijitTextBox input { - font-size: 100%; -} -.dijitSelect .dijitButtonText { - float: left; - vertical-align: top; -} -TABLE.dijitSelect { - padding: 0 !important; /* messes up border alignment */ - border-collapse: separate; /* so jsfiddle works with Normalized CSS checked */ -} -.dijitTextBox .dijitSpinnerButtonContainer, -.dijitTextBox .dijitArrowButtonContainer, -.dijitValidationTextBox .dijitValidationContainer { - float: right; - text-align: center; -} -.dijitSelect input.dijitInputField, -.dijitTextBox input.dijitInputField { - /* override unreasonable user styling of buttons and icons */ - padding-left: 0 !important; - padding-right: 0 !important; -} -.dijitValidationTextBox .dijitValidationContainer { - display: none; -} - -.dijitTeeny { - font-size:1px; - line-height:1px; -} - -.dijitOffScreen { /* these class attributes should supersede any inline positioning style */ - position: absolute !important; - left: -10000px !important; - top: -10000px !important; -} - -/* - * Popup items have a wrapper div (dijitPopup) - * with the real popup inside, and maybe an iframe too - */ -.dijitPopup { - position: absolute; - background-color: transparent; - margin: 0; - border: 0; - padding: 0; - -webkit-overflow-scrolling: touch; -} - -.dijitPositionOnly { - /* Null out all position-related properties */ - padding: 0 !important; - border: 0 !important; - background-color: transparent !important; - background-image: none !important; - height: auto !important; - width: auto !important; -} - -.dijitNonPositionOnly { - /* Null position-related properties */ - float: none !important; - position: static !important; - margin: 0 0 0 0 !important; - vertical-align: middle !important; -} - -.dijitBackgroundIframe { - /* iframe used to prevent problems with PDF or other applets overlaying menus etc */ - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - z-index: -1; - border: 0; - padding: 0; - margin: 0; -} - -.dijitDisplayNone { - /* hide something. Use this as a class rather than element.style so another class can override */ - display:none !important; -} - -.dijitContainer { - /* for all layout containers */ - overflow: hidden; /* need on IE so something can be reduced in size, and so scrollbars aren't temporarily displayed when resizing */ -} - -/**** - A11Y - ****/ -.dj_a11y .dijitIcon, -.dj_a11y div.dijitArrowButtonInner, /* is this only for Spinner? if so, it should be deleted */ -.dj_a11y span.dijitArrowButtonInner, -.dj_a11y img.dijitArrowButtonInner, -.dj_a11y .dijitCalendarIncrementControl, -.dj_a11y .dijitTreeExpando { - /* hide icon nodes in high contrast mode; when necessary they will be replaced by character equivalents - * exception for input.dijitArrowButtonInner, because the icon and character are controlled by the same node */ - display: none; -} -.dijitSpinner div.dijitArrowButtonInner { - display: block; /* override previous rule */ -} - -.dj_a11y .dijitA11ySideArrow { - display: inline !important; /* display text instead */ - cursor: pointer; -} - -/* - * Since we can't use shading in a11y mode, and since the underline indicates today's date, - * use a border to show the selected date. - * Avoid screen jitter when switching selected date by compensating for the selected node's - * border w/padding on other nodes. - */ -.dj_a11y .dijitCalendarDateLabel { - padding: 1px; - border: 0px !important; -} -.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel { - border-style: solid !important; - border-width: 1px !important; - padding: 0; -} -.dj_a11y .dijitCalendarDateTemplate { - padding-bottom: 0.1em !important; /* otherwise bottom border doesn't appear on IE */ - border: 0px !important; -} -.dj_a11y .dijitButtonNode { - border: black outset medium !important; - - /* In claro, hovering a toolbar button reduces padding and adds a border. - * Not needed in a11y mode since Toolbar buttons always have a border. - */ - padding: 0 !important; -} -.dj_a11y .dijitArrowButton { - padding: 0 !important; -} - -.dj_a11y .dijitButtonContents { - margin: 0.15em; /* Margin needed to make focus outline visible */ -} - -.dj_a11y .dijitTextBoxReadOnly .dijitInputField, -.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode { - border-style: outset!important; - border-width: medium!important; - border-color: #999 !important; - color:#999 !important; -} - -/* button inner contents - labels, icons etc. */ -.dijitButtonNode * { - vertical-align: middle; -} -.dijitSelect .dijitArrowButtonInner, -.dijitButtonNode .dijitArrowButtonInner { - /* the arrow icon node */ - background: no-repeat center; - width: 12px; - height: 12px; - direction: ltr; /* needed by IE/RTL */ -} - -/**** - 3-element borders: ( dijitLeft + dijitStretch + dijitRight ) - These were added for rounded corners on dijit.form.*Button but never actually used. - ****/ - -.dijitLeft { - /* Left part of a 3-element border */ - background-position:left top; - background-repeat:no-repeat; -} - -.dijitStretch { - /* Middle (stretchy) part of a 3-element border */ - white-space:nowrap; /* MOW: move somewhere else */ - background-repeat:repeat-x; -} - -.dijitRight { - /* Right part of a 3-element border */ - background-position:right top; - background-repeat:no-repeat; -} - -/* Buttons */ -.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode { - opacity: 0.5; -} - -.dijitToggleButton, -.dijitButton, -.dijitDropDownButton, -.dijitComboButton { - /* outside of button */ - margin: 0.2em; - vertical-align: middle; -} - -.dijitButtonContents { - display: block; /* to make focus border rectangular */ -} -td.dijitButtonContents { - display: table-cell; /* but don't affect Select, ComboButton */ -} - -.dijitButtonNode img { - /* make text and images line up cleanly */ - vertical-align:middle; - /*margin-bottom:.2em;*/ -} - -.dijitToolbar .dijitComboButton { - /* because Toolbar only draws a border around the hovered thing */ - border-collapse: separate; -} - -.dijitToolbar .dijitToggleButton, -.dijitToolbar .dijitButton, -.dijitToolbar .dijitDropDownButton, -.dijitToolbar .dijitComboButton { - margin: 0; -} - -.dijitToolbar .dijitButtonContents { - /* just because it used to be this way */ - padding: 1px 2px; -} - - -.dj_webkit .dijitToolbar .dijitDropDownButton { - padding-left: 0.3em; -} -.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner { - padding:0; -} - -.dijitSelect { - border:1px solid gray; -} -.dijitButtonNode { - /* Node that is acting as a button -- may or may not be a BUTTON element */ - border:1px solid gray; - margin:0; - line-height:normal; - vertical-align: middle; - text-align:center; - white-space: nowrap; -} -.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer { - /* apparent WebKit bug where messing with the font coupled with line-height:normal X 2 (dijitReset & dijitButtonNode) - can be different than just a single line-height:normal, visible in InlineEditBox/Spinner */ - line-height:inherit; -} -.dijitTextBox .dijitButtonNode { - border-width: 0; -} - -.dijitSelect, -.dijitSelect *, -.dijitButtonNode, -.dijitButtonNode * { - cursor: pointer; - -webkit-tap-highlight-color: transparent; -} - -.dj_ie .dijitButtonNode { - /* ensure hasLayout */ - zoom: 1; -} - -.dj_ie .dijitButtonNode button { - /* - disgusting hack to get rid of spurious padding around button elements - on IE. MSIE is truly the web's boat anchor. - */ - overflow: visible; -} - -div.dijitArrowButton { - float: right; -} - -/****** - TextBox related. - Everything that has an -*******/ - -.dijitTextBox { - border: solid black 1px; - width: 15em; /* need to set default size on outer node since inner nodes say and
    . user can override */ - vertical-align: middle; -} - -.dijitTextBoxReadOnly, -.dijitTextBoxDisabled { - color: gray; -} -.dj_safari .dijitTextBoxDisabled input { - color: #B0B0B0; /* because Safari lightens disabled input/textarea no matter what color you specify */ -} -.dj_safari textarea.dijitTextAreaDisabled { - color: #333; /* because Safari lightens disabled input/textarea no matter what color you specify */ -} -.dj_gecko .dijitTextBoxReadOnly input.dijitInputField, /* disable arrow and validation presentation inputs but allow real input for text selection */ -.dj_gecko .dijitTextBoxDisabled input { - -moz-user-input: none; /* prevent focus of disabled textbox buttons */ -} - -.dijitPlaceHolder { - /* hint text that appears in a textbox until user starts typing */ - color: #AAAAAA; - font-style: italic; - position: absolute; - top: 0; - left: 0; - white-space: nowrap; - pointer-events: none; /* so cut/paste context menu shows up when right clicking */ -} - -.dijitTimeTextBox { - width: 8em; -} - -/* rules for webkit to deal with fuzzy blue focus border */ -.dijitTextBox input:focus { - outline: none; /* blue fuzzy line looks wrong on combobox or something w/validation icon showing */ -} -.dijitTextBoxFocused { - outline: 5px -webkit-focus-ring-color; -} - -.dijitSelect input, -.dijitTextBox input { - float: left; /* needed by IE to remove secret margin */ -} -.dj_ie6 input.dijitTextBox, -.dj_ie6 .dijitTextBox input { - float: none; -} -.dijitInputInner { - /* for when an is embedded inside an inline-block
    with a size and border */ - border:0 !important; - background-color:transparent !important; - width:100% !important; - /* IE dislikes horizontal tweaking combined with width:100% so punish everyone for consistency */ - padding-left: 0 !important; - padding-right: 0 !important; - margin-left: 0 !important; - margin-right: 0 !important; -} -.dj_a11y .dijitTextBox input { - margin: 0 !important; -} -.dijitValidationTextBoxError input.dijitValidationInner, -.dijitSelect input, -.dijitTextBox input.dijitArrowButtonInner { - /* used to display arrow icon/validation icon, or in arrow character in high contrast mode. - * The css below is a trick to hide the character in non-high-contrast mode - */ - text-indent: -2em !important; - direction: ltr !important; - text-align: left !important; - height: auto !important; -} -.dj_ie .dijitSelect input, -.dj_ie .dijitTextBox input, -.dj_ie input.dijitTextBox { - overflow-y: visible; /* inputs need help expanding when padding is added or line-height is adjusted */ - line-height: normal; /* strict mode */ -} -.dijitSelect .dijitSelectLabel span { - line-height: 100%; -} -.dj_ie .dijitSelect .dijitSelectLabel { - line-height: normal; -} -.dj_ie6 .dijitSelect .dijitSelectLabel, -.dj_ie7 .dijitSelect .dijitSelectLabel, -.dj_ie8 .dijitSelect .dijitSelectLabel, -.dj_iequirks .dijitSelect .dijitSelectLabel, -.dijitSelect td, -.dj_ie6 .dijitSelect input, -.dj_iequirks .dijitSelect input, -.dj_ie6 .dijitSelect .dijitValidationContainer, -.dj_ie6 .dijitTextBox input, -.dj_ie6 input.dijitTextBox, -.dj_iequirks .dijitTextBox input.dijitValidationInner, -.dj_iequirks .dijitTextBox input.dijitArrowButtonInner, -.dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner, -.dj_iequirks .dijitTextBox input.dijitInputInner, -.dj_iequirks input.dijitTextBox { - line-height: 100%; /* IE7 problem where the icon is vertically way too low w/o this */ -} -.dj_a11y input.dijitValidationInner, -.dj_a11y input.dijitArrowButtonInner { - /* (in high contrast mode) revert rules from above so character displays */ - text-indent: 0 !important; - width: 1em !important; - color: black !important; -} -.dijitValidationTextBoxError .dijitValidationContainer { - display: inline; - cursor: default; -} - -/* ComboBox & Spinner */ - -.dijitSpinner .dijitSpinnerButtonContainer, -.dijitComboBox .dijitArrowButtonContainer { - /* dividing line between input area and up/down button(s) for ComboBox and Spinner */ - border-width: 0 0 0 1px !important; /* !important needed due to wayward ".theme .dijitButtonNode" rules */ -} -.dj_a11y .dijitSelect .dijitArrowButtonContainer, -.dijitToolbar .dijitComboBox .dijitArrowButtonContainer { - /* overrides above rule plus mirror-image rule in dijit_rtl.css to have no divider when ComboBox in Toolbar */ - border-width: 0 !important; -} - -.dijitComboBoxMenu { - /* Drop down menu is implemented as
    • ... but we don't want circles before each item */ - list-style-type: none; -} -.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode { - /* dividing line between input area and up/down button(s) for ComboBox and Spinner */ - border-width: 0; -} -.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode { - clear: both; /* IE workaround */ -} - -.dj_ie .dijitToolbar .dijitComboBox { - /* make combobox buttons align properly with other buttons in a toolbar */ - vertical-align: middle; -} - -/* Spinner */ - -.dijitTextBox .dijitSpinnerButtonContainer { - width: 1em; - position: relative !important; - overflow: hidden; -} -.dijitSpinner .dijitSpinnerButtonInner { - width:1em; - visibility:hidden !important; /* just a sizing element */ - overflow-x:hidden; -} -.dijitComboBox .dijitButtonNode, -.dijitSpinnerButtonContainer .dijitButtonNode { - border-width: 0; -} -.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode { - border-width: 0px !important; - border-style: solid !important; -} -.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer, -.dj_a11y .dijitSpinner .dijitArrowButtonInner, -.dj_a11y .dijitSpinnerButtonContainer input { - width: 1em !important; -} -.dj_a11y .dijitSpinner .dijitArrowButtonInner { - margin: 0 auto !important; /* should auto-center */ -} -.dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { - padding-left: 0.3em !important; - padding-right: 0.3em !important; - margin-left: 0.3em !important; - margin-right: 0.3em !important; - width: 1.4em !important; -} -.dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { - padding-left: 0 !important; /* manually center INPUT: character is .5em and total width = 1em */ - padding-right: 0 !important; - width: 1em !important; -} -.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { - margin-left: 0.1em !important; - margin-right: 0.1em !important; - width: 1em !important; -} -.dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { - margin-left: 0 !important; - margin-right: 0 !important; - width: 2em !important; -} -.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { - /* note: .dijitInputLayoutContainer makes this rule override .dijitArrowButton settings - * for dijit.form.Button - */ - padding: 0; - position: absolute !important; - right: 0; - float: none; - height: 50%; - width: 100%; - bottom: auto; - left: 0; - right: auto; -} -.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { - width: auto; -} -.dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton { - overflow: visible !important; -} -.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton { - top: 50%; - border-top-width: 1px !important; -} -.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton { - top: 0; -} -.dijitSpinner .dijitArrowButtonInner { - margin: auto; - overflow-x: hidden; - height: 100% !important; -} -.dj_iequirks .dijitSpinner .dijitArrowButtonInner { - height: auto !important; -} -.dijitSpinner .dijitArrowButtonInner .dijitInputField { - -moz-transform: scale(0.5); - -moz-transform-origin: center top; - -webkit-transform: scale(0.5); - -webkit-transform-origin: center top; - -o-transform: scale(0.5); - -o-transform-origin: center top; - transform: scale(0.5); - transform-origin: left top; - padding-top: 0; - padding-bottom: 0; - padding-left: 0 !important; - padding-right: 0 !important; - width: 100%; - visibility: hidden; -} -.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField { - zoom: 50%; /* emulate transform: scale(0.5) */ -} -.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner { - overflow: hidden; -} - -.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { - width: 100%; -} -.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { - width: 1em; /* matches .dj_a11y .dijitTextBox .dijitSpinnerButtonContainer rule - 100% is the whole screen width in quirks */ -} -.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { - vertical-align:top; - visibility: visible; -} -.dj_a11y .dijitSpinnerButtonContainer { - width: 1em; -} - -/**** - dijit.form.CheckBox - & - dijit.form.RadioButton - ****/ - -.dijitCheckBox, -.dijitRadio, -.dijitCheckBoxInput { - padding: 0; - border: 0; - width: 16px; - height: 16px; - background-position:center center; - background-repeat:no-repeat; - overflow: hidden; -} - -.dijitCheckBox input, -.dijitRadio input { - margin: 0; - padding: 0; - display: block; -} - -.dijitCheckBoxInput { - /* place the actual input on top, but invisible */ - opacity: 0; -} - -.dj_ie .dijitCheckBoxInput { - filter: alpha(opacity=0); -} - -.dj_a11y .dijitCheckBox, -.dj_a11y .dijitRadio { - /* in a11y mode we display the native checkbox (not the icon), so don't restrict the size */ - width: auto !important; - height: auto !important; -} -.dj_a11y .dijitCheckBoxInput { - opacity: 1; - filter: none; - width: auto; - height: auto; -} - -.dj_a11y .dijitFocusedLabel { - /* for checkboxes or radio buttons in high contrast mode, use border rather than outline to indicate focus (outline does not work in FF)*/ - border: 1px dotted; - outline: 0px !important; -} - -/**** - dijit.ProgressBar - ****/ - -.dijitProgressBar { - z-index: 0; /* so z-index settings below have no effect outside of the ProgressBar */ -} -.dijitProgressBarEmpty { - /* outer container and background of the bar that's not finished yet*/ - position:relative;overflow:hidden; - border:1px solid black; /* a11y: border necessary for high-contrast mode */ - z-index:0; /* establish a stacking context for this progress bar */ -} - -.dijitProgressBarFull { - /* outer container for background of bar that is finished */ - position:absolute; - overflow:hidden; - z-index:-1; - top:0; - width:100%; -} -.dj_ie6 .dijitProgressBarFull { - height:1.6em; -} - -.dijitProgressBarTile { - /* inner container for finished portion */ - position:absolute; - overflow:hidden; - top:0; - left:0; - bottom:0; - right:0; - margin:0; - padding:0; - width: 100%; /* needed for IE/quirks */ - height:auto; - background-color:#aaa; - background-attachment: fixed; -} - -.dj_a11y .dijitProgressBarTile { - /* a11y: The border provides visibility in high-contrast mode */ - border-width:2px; - border-style:solid; - background-color:transparent !important; -} - -.dj_ie6 .dijitProgressBarTile { - /* width:auto works in IE6 with position:static but not position:absolute */ - position:static; - /* height:auto or 100% does not work in IE6 */ - height:1.6em; -} - -.dijitProgressBarIndeterminate .dijitProgressBarTile { - /* animated gif for 'indeterminate' mode */ -} - -.dijitProgressBarIndeterminateHighContrastImage { - display:none; -} - -.dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage { - display:block; - position:absolute; - top:0; - bottom:0; - margin:0; - padding:0; - width:100%; - height:auto; -} - -.dijitProgressBarLabel { - display:block; - position:static; - width:100%; - text-align:center; - background-color:transparent !important; -} - -/**** - dijit.Tooltip - ****/ - -.dijitTooltip { - position: absolute; - z-index: 2000; - display: block; - /* make visible but off screen */ - left: 0; - top: -10000px; - overflow: visible; -} - -.dijitTooltipContainer { - border: solid black 2px; - background: #b8b5b5; - color: black; - font-size: small; -} - -.dijitTooltipFocusNode { - padding: 2px 2px 2px 2px; -} - -.dijitTooltipConnector { - position: absolute; -} -.dj_a11y .dijitTooltipConnector { - display: none; /* won't show b/c it's background-image; hide to avoid border gap */ -} - -.dijitTooltipData { - display:none; -} - -/* Layout widgets. This is essential CSS to make layout work (it isn't "styling" CSS) - make sure that the position:absolute in dijitAlign* overrides other classes */ - -.dijitLayoutContainer { - position: relative; - display: block; - overflow: hidden; -} - -.dijitAlignTop, -.dijitAlignBottom, -.dijitAlignLeft, -.dijitAlignRight { - position: absolute; - overflow: hidden; -} - -body .dijitAlignClient { position: absolute; } - -/* - * BorderContainer - * - * .dijitBorderContainer is a stylized layout where panes have border and margin. - * .dijitBorderContainerNoGutter is a raw layout. - */ -.dijitBorderContainer, .dijitBorderContainerNoGutter { - position:relative; - overflow: hidden; - z-index: 0; /* so z-index settings below have no effect outside of the BorderContainer */ -} - -.dijitBorderContainerPane, -.dijitBorderContainerNoGutterPane { - position: absolute !important; /* !important to override position:relative in dijitTabContainer etc. */ - z-index: 2; /* above the splitters so that off-by-one browser errors don't cover up border of pane */ -} - -.dijitBorderContainer > .dijitTextArea { - /* On Safari, for SimpleTextArea inside a BorderContainer, - don't want to display the grip to resize */ - resize: none; -} - -.dijitGutter { - /* gutter is just a place holder for empty space between panes in BorderContainer */ - position: absolute; - font-size: 1px; /* needed by IE6 even though div is empty, otherwise goes to 15px */ -} - -/* SplitContainer - - 'V' == container that splits vertically (up/down) - 'H' = horizontal (left/right) -*/ - -.dijitSplitter { - position: absolute; - overflow: hidden; - z-index: 10; /* above the panes so that splitter focus is visible on FF, see #7583*/ - background-color: #fff; - border-color: gray; - border-style: solid; - border-width: 0; -} -.dj_ie .dijitSplitter { - z-index: 1; /* behind the panes so that pane borders aren't obscured see test_Gui.html/[14392] */ -} - -.dijitSplitterActive { - z-index: 11 !important; -} - -.dijitSplitterCover { - position:absolute; - z-index:-1; - top:0; - left:0; - width:100%; - height:100%; -} - -.dijitSplitterCoverActive { - z-index:3 !important; -} - -/* #6945: stop mouse events */ -.dj_ie .dijitSplitterCover { - background: white; - opacity: 0; -} -.dj_ie6 .dijitSplitterCover, -.dj_ie7 .dijitSplitterCover, -.dj_ie8 .dijitSplitterCover { - filter: alpha(opacity=0); -} - -.dijitSplitterH { - height: 7px; - border-top:1px; - border-bottom:1px; - cursor: row-resize; - -webkit-tap-highlight-color: transparent; -} -.dijitSplitterV { - width: 7px; - border-left:1px; - border-right:1px; - cursor: col-resize; - -webkit-tap-highlight-color: transparent; -} -.dijitSplitContainer { - position: relative; - overflow: hidden; - display: block; -} - -.dijitSplitPane { - position: absolute; -} - -.dijitSplitContainerSizerH, -.dijitSplitContainerSizerV { - position:absolute; - font-size: 1px; - background-color: ThreeDFace; - border: 1px solid; - border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight; - margin: 0; -} - -.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb { - overflow:hidden; - position:absolute; - top:49%; -} - -.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb { - position:absolute; - left:49%; -} - -.dijitSplitterShadow, -.dijitSplitContainerVirtualSizerH, -.dijitSplitContainerVirtualSizerV { - font-size: 1px; - background-color: ThreeDShadow; - -moz-opacity: 0.5; - opacity: 0.5; - filter: Alpha(Opacity=50); - margin: 0; -} - -.dijitSplitContainerSizerH, .dijitSplitContainerVirtualSizerH { - cursor: col-resize; -} - -.dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV { - cursor: row-resize; -} - -.dj_a11y .dijitSplitterH { - border-top:1px solid #d3d3d3 !important; - border-bottom:1px solid #d3d3d3 !important; -} -.dj_a11y .dijitSplitterV { - border-left:1px solid #d3d3d3 !important; - border-right:1px solid #d3d3d3 !important; -} - -/* ContentPane */ - -.dijitContentPane { - display: block; - overflow: auto; /* if we don't have this (or overflow:hidden), then Widget.resizeTo() doesn't make sense for ContentPane */ - -webkit-overflow-scrolling: touch; -} - -.dijitContentPaneSingleChild { - /* - * if the ContentPane holds a single layout widget child which is being sized to match the content pane, - * then the ContentPane should never get a scrollbar (but it does due to browser bugs, see #9449 - */ - overflow: hidden; -} - -.dijitContentPaneLoading .dijitIconLoading, -.dijitContentPaneError .dijitIconError { - margin-right: 9px; -} - -/* TitlePane and Fieldset */ - -.dijitTitlePane { - display: block; - overflow: hidden; -} -.dijitFieldset { - border: 1px solid gray; -} -.dijitTitlePaneTitle, .dijitFieldsetTitle { - cursor: pointer; - -webkit-tap-highlight-color: transparent; -} -.dijitTitlePaneTitleFixedOpen, .dijitTitlePaneTitleFixedClosed, -.dijitFieldsetTitleFixedOpen, .dijitFieldsetTitleFixedClosed { - /* TitlePane or Fieldset that cannot be toggled */ - cursor: default; -} -.dijitTitlePaneTitle * { - vertical-align: middle; -} -.dijitTitlePane .dijitArrowNodeInner, .dijitFieldset .dijitArrowNodeInner { - /* normally, hide arrow text in favor of icon */ - display: none; -} -.dj_a11y .dijitTitlePane .dijitArrowNodeInner, .dj_a11y .dijitFieldset .dijitArrowNodeInner { - /* ... except in a11y mode, then show text arrow */ - display: inline; - font-family: monospace; /* because - and + are different widths */ -} -.dj_a11y .dijitTitlePane .dijitArrowNode, .dj_a11y .dijitFieldset .dijitArrowNode { - /* ... and hide icon (TODO: just point dijitIcon class on the icon, and it hides automatically) */ - display: none; -} -.dijitTitlePaneTitleFixedOpen .dijitArrowNode, .dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner, -.dijitTitlePaneTitleFixedClosed .dijitArrowNode, .dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner, -.dijitFieldsetTitleFixedOpen .dijitArrowNode, .dijitFieldsetTitleFixedOpen .dijitArrowNodeInner, -.dijitFieldsetTitleFixedClosed .dijitArrowNode, .dijitFieldsetTitleFixedClosed .dijitArrowNodeInner { - /* don't show the open close icon or text arrow; it makes the user think the pane is closable */ - display: none !important; /* !important to override above a11y rules to show text arrow */ -} - -.dj_ie6 .dijitTitlePaneContentOuter, -.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle { - /* force hasLayout to ensure borders etc, show up */ - zoom: 1; -} - -/* Color Palette - * Sizes designed so that table cell positions match icons in underlying image, - * which appear at 20x20 intervals. - */ - -.dijitColorPalette { - border: 1px solid #999; - background: #fff; - position: relative; -} - -.dijitColorPalette .dijitPaletteTable { - /* Table that holds the palette cells, and overlays image file with color swatches. - * padding/margin to align table with image. - */ - padding: 2px 3px 3px 3px; - position: relative; - overflow: hidden; - outline: 0; - border-collapse: separate; -} -.dj_ie6 .dijitColorPalette .dijitPaletteTable, -.dj_ie7 .dijitColorPalette .dijitPaletteTable, -.dj_iequirks .dijitColorPalette .dijitPaletteTable { - /* using padding above so that focus border isn't cutoff on moz/webkit, - * but using margin on IE because padding doesn't seem to work - */ - padding: 0; - margin: 2px 3px 3px 3px; -} - -.dijitColorPalette .dijitPaletteCell { - /*
    in the */ - font-size: 1px; - vertical-align: middle; - text-align: center; - background: none; -} -.dijitColorPalette .dijitPaletteImg { - /* Called dijitPaletteImg for back-compat, this actually wraps the color swatch with a border and padding */ - padding: 1px; /* white area between gray border and color swatch */ - border: 1px solid #999; - margin: 2px 1px; - cursor: default; - font-size: 1px; /* prevent from getting bigger just to hold a character */ -} -.dj_gecko .dijitColorPalette .dijitPaletteImg { - padding-bottom: 0; /* workaround rendering glitch on FF, it adds an extra pixel at the bottom */ -} -.dijitColorPalette .dijitColorPaletteSwatch { - /* the actual part where the color is */ - width: 14px; - height: 12px; -} -.dijitPaletteTable td { - padding: 0; -} -.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg { - /* hovered color swatch */ - border: 1px solid #000; -} - -.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg, -.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg { - border: 2px solid #000; - margin: 1px 0; /* reduce margin to compensate for increased border */ -} - - -.dj_a11y .dijitColorPalette .dijitPaletteTable, -.dj_a11y .dijitColorPalette .dijitPaletteTable * { - /* table cells are to catch events, but the swatches are in the PaletteImg behind the table */ - background-color: transparent !important; -} - -/* AccordionContainer */ - -.dijitAccordionContainer { - border:1px solid #b7b7b7; - border-top:0 !important; -} -.dijitAccordionTitle { - cursor: pointer; - -webkit-tap-highlight-color: transparent; -} -.dijitAccordionTitleSelected { - cursor: default; -} - -/* images off, high-contrast mode styles */ -.dijitAccordionTitle .arrowTextUp, -.dijitAccordionTitle .arrowTextDown { - display: none; - font-size: 0.65em; - font-weight: normal !important; -} - -.dj_a11y .dijitAccordionTitle .arrowTextUp, -.dj_a11y .dijitAccordionTitleSelected .arrowTextDown { - display: inline; -} - -.dj_a11y .dijitAccordionTitleSelected .arrowTextUp { - display: none; -} - -.dijitAccordionChildWrapper { - /* this is the node whose height is adjusted */ - overflow: hidden; -} - -/* Calendar */ - -.dijitCalendarContainer table { - width: auto; /* in case user has specified a width for the TABLE nodes, see #10553 */ - clear: both; /* clear margin created for left/right month arrows; needed on IE10 for CalendarLite */ -} -.dijitCalendarContainer th, .dijitCalendarContainer td { - padding: 0; - vertical-align: middle; -} - -.dijitCalendarMonthContainer { - text-align: center; -} -.dijitCalendarDecrementArrow { - float: left; -} -.dijitCalendarIncrementArrow { - float: right; -} - -.dijitCalendarYearLabel { - white-space: nowrap; /* make sure previous, current, and next year appear on same row */ -} - -.dijitCalendarNextYear { - margin:0 0 0 0.55em; -} - -.dijitCalendarPreviousYear { - margin:0 0.55em 0 0; -} - -.dijitCalendarIncrementControl { - vertical-align: middle; -} - -.dijitCalendarIncrementControl, -.dijitCalendarDateTemplate, -.dijitCalendarMonthLabel, -.dijitCalendarPreviousYear, -.dijitCalendarNextYear { - cursor: pointer; - -webkit-tap-highlight-color: transparent; -} - -.dijitCalendarDisabledDate { - color: gray; - text-decoration: line-through; - cursor: default; -} - -.dijitSpacer { - /* don't display it, but make it affect the width */ - position: relative; - height: 1px; - overflow: hidden; - visibility: hidden; -} - -/* Styling for month drop down list */ - -.dijitCalendarMonthMenu .dijitCalendarMonthLabel { - text-align:center; -} - -/* Menu */ - -.dijitMenu { - border:1px solid black; - background-color:white; -} -.dijitMenuTable { - border-collapse:collapse; - border-width:0; - background-color:white; -} - -/* workaround for webkit bug #8427, remove this when it is fixed upstream */ -.dj_webkit .dijitMenuTable td[colspan="2"]{ - border-right:hidden; -} - -.dijitMenuItem { - text-align: left; - white-space: nowrap; - padding:.1em .2em; - cursor:pointer; - -webkit-tap-highlight-color: transparent; -} - -/* -No need to show a focus border since it's obvious from the shading, and there's a .dj_a11y .dijitMenuItemSelected -rule below that handles the high contrast case when there's no shading. -Hiding the focus border also works around webkit bug https://code.google.com/p/chromium/issues/detail?id=125779. -*/ -.dijitMenuItem:focus { - outline: none -} - -.dijitMenuPassive .dijitMenuItemHover, -.dijitMenuItemSelected { - /* - * dijitMenuItemHover refers to actual mouse over - * dijitMenuItemSelected is used after a menu has been "activated" by - * clicking it, tabbing into it, or being opened from a parent menu, - * and denotes that the menu item has focus or that focus is on a child - * menu - */ - background-color:black; - color:white; -} - -.dijitMenuItemIcon, .dijitMenuExpand { - background-repeat: no-repeat; -} - -.dijitMenuItemDisabled * { - /* for a disabled menu item, just set it to mostly transparent */ - opacity:0.5; - cursor:default; -} -.dj_ie .dj_a11y .dijitMenuItemDisabled, -.dj_ie .dj_a11y .dijitMenuItemDisabled *, -.dj_ie .dijitMenuItemDisabled * { - color: gray; - filter: alpha(opacity=35); -} - -.dijitMenuItemLabel { - vertical-align: middle; -} - -.dj_a11y .dijitMenuItemSelected { - border: 1px dotted black !important; /* for 2.0 use outline instead, to prevent jitter */ -} - -.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel { - border-width: 1px; - border-style: solid; -} -.dj_ie8 .dj_a11y .dijitMenuItemLabel { - position:static; -} - -.dijitMenuExpandA11y { - display: none; -} -.dj_a11y .dijitMenuExpandA11y { - display: inline; -} - -.dijitMenuSeparator td { - border: 0; - padding: 0; -} - -/* separator can be two pixels -- set border of either one to 0 to have only one */ -.dijitMenuSeparatorTop { - height: 50%; - margin: 0; - margin-top:3px; - font-size: 1px; -} - -.dijitMenuSeparatorBottom { - height: 50%; - margin: 0; - margin-bottom:3px; - font-size: 1px; -} - -/* CheckedMenuItem and RadioMenuItem */ -.dijitMenuItemIconChar { - display: none; /* don't display except in high contrast mode */ - visibility: hidden; /* for high contrast mode when menuitem is unchecked: leave space for when it is checked */ -} -.dj_a11y .dijitMenuItemIconChar { - display: inline; /* display character in high contrast mode, since icon doesn't show */ -} -.dijitCheckedMenuItemChecked .dijitMenuItemIconChar, -.dijitRadioMenuItemChecked .dijitMenuItemIconChar { - visibility: visible; /* menuitem is checked */ -} -.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem { - /* so bottom border of MenuBar appears on IE7 in high-contrast mode */ - margin: 0; -} - -/* StackContainer */ - -.dijitStackController .dijitToggleButtonChecked * { - cursor: default; /* because pressing it has no effect */ -} - -/*** -TabContainer - -Main class hierarchy: - -.dijitTabContainer - the whole TabContainer - .dijitTabController / .dijitTabListContainer-top - wrapper for tab buttons, scroll buttons - .dijitTabListWrapper / .dijitTabContainerTopStrip - outer wrapper for tab buttons (normal width) - .nowrapTabStrip / .dijitTabContainerTop-tabs - inner wrapper for tab buttons (50K width) - .dijitTabPaneWrapper - wrapper for content panes, has all borders except the one between content and tabs -***/ - -.dijitTabContainer { - z-index: 0; /* so z-index settings below have no effect outside of the TabContainer */ - overflow: visible; /* prevent off-by-one-pixel errors from hiding bottom border (opposite tab labels) */ -} -.dj_ie6 .dijitTabContainer { - /* workaround IE6 problem when tall content overflows TabContainer, see editor/test_FullScreen.html */ - overflow: hidden; - -} -.dijitTabContainerNoLayout { - width: 100%; /* otherwise ScrollingTabController goes to 50K pixels wide */ -} - -.dijitTabContainerBottom-tabs, -.dijitTabContainerTop-tabs, -.dijitTabContainerLeft-tabs, -.dijitTabContainerRight-tabs { - z-index: 1; - overflow: visible !important; /* so tabs can cover up border adjacent to container */ -} - -.dijitTabController { - z-index: 1; -} -.dijitTabContainerBottom-container, -.dijitTabContainerTop-container, -.dijitTabContainerLeft-container, -.dijitTabContainerRight-container { - z-index:0; - overflow: hidden; - border: 1px solid black; -} -.nowrapTabStrip { - width: 50000px; - display: block; - position: relative; - text-align: left; /* just in case ancestor has non-standard setting */ - z-index: 1; -} -.dijitTabListWrapper { - overflow: hidden; - z-index: 1; -} - -.dj_a11y .tabStripButton img { - /* hide the icons (or rather the empty space where they normally appear) because text will appear instead */ - display: none; -} - -.dijitTabContainerTop-tabs { - border-bottom: 1px solid black; -} -.dijitTabContainerTop-container { - border-top: 0; -} - -.dijitTabContainerLeft-tabs { - border-right: 1px solid black; - float: left; /* needed for IE7 RTL mode */ -} -.dijitTabContainerLeft-container { - border-left: 0; -} - -.dijitTabContainerBottom-tabs { - border-top: 1px solid black; -} -.dijitTabContainerBottom-container { - border-bottom: 0; -} - -.dijitTabContainerRight-tabs { - border-left: 1px solid black; - float: left; /* needed for IE7 RTL mode */ -} -.dijitTabContainerRight-container { - border-right: 0; -} - -div.dijitTabDisabled, .dj_ie div.dijitTabDisabled { - cursor: auto; -} - -.dijitTab { - position:relative; - cursor:pointer; - -webkit-tap-highlight-color: transparent; - white-space:nowrap; - z-index:3; -} -.dijitTab * { - /* make tab icons and close icon line up w/text */ - vertical-align: middle; -} -.dijitTabChecked { - cursor: default; /* because clicking will have no effect */ -} - -.dijitTabContainerTop-tabs .dijitTab { - top: 1px; /* to overlap border on .dijitTabContainerTop-tabs */ -} -.dijitTabContainerBottom-tabs .dijitTab { - top: -1px; /* to overlap border on .dijitTabContainerBottom-tabs */ -} -.dijitTabContainerLeft-tabs .dijitTab { - left: 1px; /* to overlap border on .dijitTabContainerLeft-tabs */ -} -.dijitTabContainerRight-tabs .dijitTab { - left: -1px; /* to overlap border on .dijitTabContainerRight-tabs */ -} - - -.dijitTabContainerTop-tabs .dijitTab, -.dijitTabContainerBottom-tabs .dijitTab { - /* Inline-block */ - display:inline-block; /* webkit and FF3 */ -} - -.tabStripButton { - z-index: 12; -} - -.dijitTabButtonDisabled .tabStripButton { - display: none; -} - - -.dijitTabCloseButton { - margin-left: 1em; -} - -.dijitTabCloseText { - display:none; -} - -.dijitTab .tabLabel { - /* make sure tabs w/close button and w/out close button are same height, even w/small (<15px) font. - * assumes <=15px height for close button icon. - */ - min-height: 15px; - display: inline-block; -} -.dijitNoIcon { - /* applied to / node when there is no icon specified */ - display: none; -} -.dj_ie6 .dijitTab .dijitNoIcon { - /* because min-height (on .tabLabel, above) doesn't work on IE6 */ - display: inline; - height: 15px; - width: 1px; -} - -/* images off, high-contrast mode styles */ - -.dj_a11y .dijitTabCloseButton { - background-image: none !important; - width: auto !important; - height: auto !important; -} - -.dj_a11y .dijitTabCloseText { - display: inline; -} - -.dijitTabPane, -.dijitStackContainer-child, -.dijitAccordionContainer-child { - /* children of TabContainer, StackContainer, and AccordionContainer shouldn't have borders - * b/c a border is already there from the TabContainer/StackContainer/AccordionContainer itself. - */ - border: none !important; -} - -/* InlineEditBox */ -.dijitInlineEditBoxDisplayMode { - border: 1px solid transparent; /* so keyline (border) on hover can appear without screen jump */ - cursor: text; -} - -.dj_a11y .dijitInlineEditBoxDisplayMode, -.dj_ie6 .dijitInlineEditBoxDisplayMode { - /* except that IE6 doesn't support transparent borders, nor does high contrast mode */ - border: none; -} - -.dijitInlineEditBoxDisplayModeHover, -.dj_a11y .dijitInlineEditBoxDisplayModeHover, -.dj_ie6 .dijitInlineEditBoxDisplayModeHover { - /* An InlineEditBox in view mode (click this to edit the text) */ - background-color: #e2ebf2; - border: solid 1px black; -} - -.dijitInlineEditBoxDisplayModeDisabled { - cursor: default; -} - -/* Tree */ -.dijitTree { - overflow: auto; /* for scrollbars when Tree has a height setting, and to prevent wrapping around float elements, see #11491 */ - -webkit-tap-highlight-color: transparent; -} - -.dijitTreeContainer { - float: left; /* for correct highlighting during horizontal scroll, see #16132 */ -} - -.dijitTreeIndent { - /* amount to indent each tree node (relative to parent node) */ - width: 19px; -} - -.dijitTreeRow, .dijitTreeContent { - white-space: nowrap; -} - -.dj_ie .dijitTreeLabel:focus { - /* workaround IE9 behavior where down arrowing through TreeNodes doesn't show focus outline */ - outline: 1px dotted black; -} - -.dijitTreeRow img { - /* make the expando and folder icons line up with the label */ - vertical-align: middle; -} - -.dijitTreeContent { - cursor: default; -} - -.dijitExpandoText { - display: none; -} - -.dj_a11y .dijitExpandoText { - display: inline; - padding-left: 10px; - padding-right: 10px; - font-family: monospace; - border-style: solid; - border-width: thin; - cursor: pointer; -} - -.dijitTreeLabel { - margin: 0 4px; -} - -/* Dialog */ - -.dijitDialog { - position: absolute; - z-index: 999; - overflow: hidden; /* override overflow: auto; from ContentPane to make dragging smoother */ -} - -.dijitDialogTitleBar { - cursor: move; -} -.dijitDialogFixed .dijitDialogTitleBar { - cursor:default; -} -.dijitDialogCloseIcon { - cursor: pointer; - -webkit-tap-highlight-color: transparent; -} -.dijitDialogPaneContent { - -webkit-overflow-scrolling: touch; -} -.dijitDialogUnderlayWrapper { - position: absolute; - left: 0; - top: 0; - z-index: 998; - display: none; - background: transparent !important; -} - -.dijitDialogUnderlay { - background: #eee; - opacity: 0.5; -} - -.dj_ie .dijitDialogUnderlay { - filter: alpha(opacity=50); -} - -/* images off, high-contrast mode styles */ -.dj_a11y .dijitSpinnerButtonContainer, -.dj_a11y .dijitDialog { - opacity: 1 !important; - background-color: white !important; -} - -.dijitDialog .closeText { - display:none; - /* for the onhover border in high contrast on IE: */ - position:absolute; -} - -.dj_a11y .dijitDialog .closeText { - display:inline; -} - -/* Slider */ - -.dijitSliderMoveable { - z-index:99; - position:absolute !important; - display:block; - vertical-align:middle; -} - -.dijitSliderMoveableH { - right:0; -} -.dijitSliderMoveableV { - right:50%; -} - -.dj_a11y div.dijitSliderImageHandle, -.dijitSliderImageHandle { - margin:0; - padding:0; - position:relative !important; - border:8px solid gray; - width:0; - height:0; - cursor: pointer; - -webkit-tap-highlight-color: transparent; -} -.dj_iequirks .dj_a11y .dijitSliderImageHandle { - font-size: 0; -} -.dj_ie7 .dijitSliderImageHandle { - overflow: hidden; /* IE7 workaround to make slider handle VISIBLE in non-a11y mode */ -} -.dj_ie7 .dj_a11y .dijitSliderImageHandle { - overflow: visible; /* IE7 workaround to make slider handle VISIBLE in a11y mode */ -} -.dj_a11y .dijitSliderFocused .dijitSliderImageHandle { - border:4px solid #000; - height:8px; - width:8px; -} - -.dijitSliderImageHandleV { - top:-8px; - right: -50%; -} - -.dijitSliderImageHandleH { - left:50%; - top:-5px; - vertical-align:top; -} - -.dijitSliderBar { - border-style:solid; - border-color:black; - cursor: pointer; - -webkit-tap-highlight-color: transparent; -} - -.dijitSliderBarContainerV { - position:relative; - height:100%; - z-index:1; -} - -.dijitSliderBarContainerH { - position:relative; - z-index:1; -} - -.dijitSliderBarH { - height:4px; - border-width:1px 0; -} - -.dijitSliderBarV { - width:4px; - border-width:0 1px; -} - -.dijitSliderProgressBar { - background-color:red; - z-index:1; -} - -.dijitSliderProgressBarV { - position:static !important; - height:0; - vertical-align:top; - text-align:left; -} - -.dijitSliderProgressBarH { - position:absolute !important; - width:0; - vertical-align:middle; - overflow:visible; -} - -.dijitSliderRemainingBar { - overflow:hidden; - background-color:transparent; - z-index:1; -} - -.dijitSliderRemainingBarV { - height:100%; - text-align:left; -} - -.dijitSliderRemainingBarH { - width:100% !important; -} - -/* the slider bumper is the space consumed by the slider handle when it hangs over an edge */ -.dijitSliderBumper { - overflow:hidden; - z-index:1; -} - -.dijitSliderBumperV { - width:4px; - height:8px; - border-width:0 1px; -} - -.dijitSliderBumperH { - width:8px; - height:4px; - border-width:1px 0; -} - -.dijitSliderBottomBumper, -.dijitSliderLeftBumper { - background-color:red; -} - -.dijitSliderTopBumper, -.dijitSliderRightBumper { - background-color:transparent; -} - -.dijitSliderDecoration { - text-align:center; -} - -.dijitSliderDecorationC, -.dijitSliderDecorationV { - position: relative; /* needed for IE+quirks+RTL+vertical (rendering bug) but add everywhere for custom styling consistency but this messes up IE horizontal sliders */ -} - -.dijitSliderDecorationH { - width: 100%; -} - -.dijitSliderDecorationV { - height: 100%; - white-space: nowrap; -} - -.dijitSliderButton { - font-family:monospace; - margin:0; - padding:0; - display:block; -} - -.dj_a11y .dijitSliderButtonInner { - visibility:visible !important; -} - -.dijitSliderButtonContainer { - text-align:center; - height:0; /* ??? */ -} -.dijitSliderButtonContainer * { - cursor: pointer; - -webkit-tap-highlight-color: transparent; -} - -.dijitSlider .dijitButtonNode { - padding:0; - display:block; -} - -.dijitRuleContainer { - position:relative; - overflow:visible; -} - -.dijitRuleContainerV { - height:100%; - line-height:0; - float:left; - text-align:left; -} - -.dj_opera .dijitRuleContainerV { - line-height:2%; -} - -.dj_ie .dijitRuleContainerV { - line-height:normal; -} - -.dj_gecko .dijitRuleContainerV { - margin:0 0 1px 0; /* mozilla bug workaround for float:left,height:100% block elements */ -} - -.dijitRuleMark { - position:absolute; - border:1px solid black; - line-height:0; - height:100%; -} - -.dijitRuleMarkH { - width:0; - border-top-width:0 !important; - border-bottom-width:0 !important; - border-left-width:0 !important; -} - -.dijitRuleLabelContainer { - position:absolute; -} - -.dijitRuleLabelContainerH { - text-align:center; - display:inline-block; -} - -.dijitRuleLabelH { - position:relative; - left:-50%; -} - -.dijitRuleLabelV { - /* so that long labels don't overflow to multiple rows, or overwrite slider itself */ - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} - -.dijitRuleMarkV { - height:0; - border-right-width:0 !important; - border-bottom-width:0 !important; - border-left-width:0 !important; - width:100%; - left:0; -} - -.dj_ie .dijitRuleLabelContainerV { - margin-top:-.55em; -} - -.dj_a11y .dijitSliderReadOnly, -.dj_a11y .dijitSliderDisabled { - opacity:0.6; -} -.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar, -.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar { - filter: alpha(opacity=40); -} - -/* + and - Slider buttons: override theme settings to display icons */ -.dj_a11y .dijitSlider .dijitSliderButtonContainer div { - font-family: monospace; /* otherwise hyphen is larger and more vertically centered */ - font-size: 1em; - line-height: 1em; - height: auto; - width: auto; - margin: 0 4px; -} - -/* Icon-only buttons (often in toolbars) still display the text in high-contrast mode */ -.dj_a11y .dijitButtonContents .dijitButtonText, -.dj_a11y .dijitTab .tabLabel { - display: inline !important; -} -.dj_a11y .dijitSelect .dijitButtonText { - display: inline-block !important; -} - -/* TextArea, SimpleTextArea */ -.dijitTextArea { - width:100%; - overflow-y: auto; /* w/out this IE's SimpleTextArea goes to overflow: scroll */ -} -.dijitTextArea[cols] { - width:auto; /* SimpleTextArea cols */ -} -.dj_ie .dijitTextAreaCols { - width:auto; -} - -.dijitExpandingTextArea { - /* for auto exanding textarea (called Textarea currently, rename for 2.0) don't want to display the grip to resize */ - resize: none; -} - - -/* Toolbar - * Note that other toolbar rules (for objects in toolbars) are scattered throughout this file. - */ - -.dijitToolbarSeparator { - height: 18px; - width: 5px; - padding: 0 1px; - margin: 0; -} - -/* Editor */ -.dijitIEFixedToolbar { - position:absolute; - /* top:0; */ - top: expression(eval((document.documentElement||document.body).scrollTop)); -} - -.dijitEditor { - display: block; /* prevents glitch on FF with InlineEditBox, see #8404 */ -} - -.dijitEditorDisabled, -.dijitEditorReadOnly { - color: gray; -} - -/* TimePicker */ - -.dijitTimePicker { - background-color: white; -} -.dijitTimePickerItem { - cursor:pointer; - -webkit-tap-highlight-color: transparent; -} -.dijitTimePickerItemHover { - background-color:gray; - color:white; -} -.dijitTimePickerItemSelected { - font-weight:bold; - color:#333; - background-color:#b7cdee; -} -.dijitTimePickerItemDisabled { - color:gray; - text-decoration:line-through; -} - -.dijitTimePickerItemInner { - text-align:center; - border:0; - padding:2px 8px 2px 8px; -} - -.dijitTimePickerTick, -.dijitTimePickerMarker { - border-bottom:1px solid gray; -} - -.dijitTimePicker .dijitDownArrowButton { - border-top: none !important; -} - -.dijitTimePickerTick { - color:#CCC; -} - -.dijitTimePickerMarker { - color:black; - background-color:#CCC; -} - -.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner { - border: solid 4px black; -} -.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner { - border: dashed 4px black; -} - - -.dijitToggleButtonIconChar { - /* character (instead of icon) to show that ToggleButton is checked */ - display:none !important; -} -.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar { - display:inline !important; - visibility:hidden; -} -.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText { - font-family: "Arial Unicode MS"; /* otherwise the a11y character (checkmark, arrow, etc.) appears as a box */ -} -.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar { - display: inline !important; /* In high contrast mode, display the check symbol */ - visibility:visible !important; -} - -.dijitArrowButtonChar { - display:none !important; -} -.dj_a11y .dijitArrowButtonChar { - display:inline !important; -} - -.dj_a11y .dijitDropDownButton .dijitArrowButtonInner, -.dj_a11y .dijitComboButton .dijitArrowButtonInner { - display:none !important; -} - -/* Select */ -.dj_a11y .dijitSelect { - border-collapse: separate !important; - border-width: 1px; - border-style: solid; -} -.dj_ie .dijitSelect { - vertical-align: middle; /* Set this back for what we hack in dijit inline */ -} -.dj_ie6 .dijitSelect .dijitValidationContainer, -.dj_ie8 .dijitSelect .dijitButtonText { - vertical-align: top; -} -.dj_ie6 .dijitTextBox .dijitInputContainer, -.dj_iequirks .dijitTextBox .dijitInputContainer, -.dj_ie6 .dijitTextBox .dijitArrowButtonInner, -.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner, -.dijitSelect .dijitSelectLabel { - vertical-align: baseline; -} - -.dijitNumberTextBox { - text-align: left; - direction: ltr; -} - -.dijitNumberTextBox .dijitInputInner { - text-align: inherit; /* input */ -} - -.dijitNumberTextBox input.dijitInputInner, -.dijitCurrencyTextBox input.dijitInputInner, -.dijitSpinner input.dijitInputInner { - text-align: right; -} - -.dj_ie8 .dijitNumberTextBox input.dijitInputInner, .dj_ie9 .dijitNumberTextBox input.dijitInputInner, -.dj_ie8 .dijitCurrencyTextBox input.dijitInputInner, .dj_ie9 .dijitCurrencyTextBox input.dijitInputInner, -.dj_ie8 .dijitSpinner input.dijitInputInner, .dj_ie9 .dijitSpinner input.dijitInputInner { - /* workaround bug where caret invisible in empty textboxes */ - padding-right: 1px !important; -} - -.dijitToolbar .dijitSelect { - margin: 0; -} -.dj_webkit .dijitToolbar .dijitSelect { - padding-left: 0.3em; -} -.dijitSelect .dijitButtonContents { - padding: 0; - white-space: nowrap; - text-align: left; - border-style: none solid none none; - border-width: 1px; -} -.dijitSelectFixedWidth .dijitButtonContents { - width: 100%; -} - -.dijitSelectMenu .dijitMenuItemIcon { - /* avoid blank area in left side of menu (since we have no icons) */ - display:none; -} -.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel, -.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel { - /* Set back to static due to bug in ie6/ie7 - See Bug #9651 */ - position: static; -} - -/* Fix the baseline of our label (for multi-size font elements) */ -.dijitSelectLabel * -{ - vertical-align: baseline; -} - -/* Styling for the currently-selected option (rich text can mess this up) */ -.dijitSelectSelectedOption * { - font-weight: bold; -} - -/* Fix the styling of the dropdown menu to be more combobox-like */ -.dijitSelectMenu { - border-width: 1px; -} - -/* Used in cases, such as FullScreen plugin, when we need to force stuff to static positioning. */ -.dijitForceStatic { - position: static !important; -} - -/**** Disabled cursor *****/ -.dijitReadOnly *, -.dijitDisabled *, -.dijitReadOnly, -.dijitDisabled { - /* a region the user would be able to click on, but it's disabled */ - cursor: default; -} - -/* Drag and Drop */ -.dojoDndItem { - padding: 2px; /* will be replaced by border during drag over (dojoDndItemBefore, dojoDndItemAfter) */ - - /* Prevent magnifying-glass text selection icon to appear on mobile webkit as it causes a touchout event */ - -webkit-touch-callout: none; - -webkit-user-select: none; /* Disable selection/Copy of UIWebView */ -} -.dojoDndHorizontal .dojoDndItem { - /* make contents of horizontal container be side by side, rather than vertical */ - display: inline-block; -} - -.dojoDndItemBefore, -.dojoDndItemAfter { - border: 0px solid #369; -} -.dojoDndItemBefore { - border-width: 2px 0 0 0; - padding: 0 2px 2px 2px; -} -.dojoDndItemAfter { - border-width: 0 0 2px 0; - padding: 2px 2px 0 2px; -} -.dojoDndHorizontal .dojoDndItemBefore { - border-width: 0 0 0 2px; - padding: 2px 2px 2px 0; -} -.dojoDndHorizontal .dojoDndItemAfter { - border-width: 0 2px 0 0; - padding: 2px 0 2px 2px; -} - -.dojoDndItemOver { - cursor:pointer; -} -.dj_gecko .dijitArrowButtonInner INPUT, -.dj_gecko INPUT.dijitArrowButtonInner { - -moz-user-focus:ignore; -} -.dijitFocused .dijitMenuItemShortcutKey { - text-decoration: underline; -} - -/* Dijit custom styling */ -.dijitBorderContainer { - height: 350px; -} -.dijitTooltipContainer { - background: #fff; - border: 1px solid #ccc; - border-radius: 6px; -} -.dijitContentPane { - box-sizing: content-box; - overflow: auto !important; /* Widgets like the data grid pass their scroll - offset to the parent if there is not enough room to display a scroll bar - in the widget itself, so do not hide the overflow. */ -} - -/* Global Bootstrap changes */ - -/* Client defaults and helpers */ -.mx-dataview-content, .mx-scrollcontainer-wrapper:not(.mx-scrollcontainer-nested), .mx-tabcontainer-content, .mx-grid-content { - -webkit-overflow-scrolling: touch; -} -html, body, #content { - height: 100%; -} -#content > .mx-page { - width: 100%; - min-height: 100%; -} - -.mx-left-aligned { - text-align: left; -} -.mx-right-aligned { - text-align: right; -} -.mx-center-aligned { - text-align: center; -} - -.mx-table { - width: 100%; -} -.mx-table th, -.mx-table td { - padding: 8px; - vertical-align: top; -} -.mx-table th.nopadding, -.mx-table td.nopadding { - padding: 0; -} - -.mx-offscreen { - /* When position relative is not set IE doesn't properly render when this class is removed - * with the effect that elements are not displayed or are not clickable. - */ - position: relative; - height: 0; - overflow: hidden; -} - -.mx-ie-event-shield { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: -1; -} - -.mx-swipe-navigation-progress { - position: absolute; - height: 54px; - width: 54px; - top: calc(50% - 27px); - left: calc(50% - 27px); - background: url(data:image/gif;base64,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); -} - - -/* Bacause we use checkboxes without labels, align them with other widgets. */ -input[type="checkbox"] { - margin: 9px 0; -} - -.mx-checkbox input[type="checkbox"] { - margin-left: 0; - margin-right: 8px; - position: static; -} - -.form-vertical .form-group.mx-checkbox input[type="checkbox"] { - display: block; -} - -.form-vertical .form-group.mx-checkbox.label-after input[type="checkbox"] { - display: inline-block; -} - -.form-horizontal .form-group.no-columns { - padding-left: 15px; - padding-right: 15px; -} - -.mx-radiobuttons.inline .radio { - display: inline-block; - margin-right: 20px; -} - -.mx-radiobuttons .radio input[type="radio"] { - /* Reset bootstrap rules */ - position: static; - margin-right: 8px; - margin-left: 0; -} - -.mx-radiobuttons .radio label { - /* Reset bootstrap rules */ - padding-left: 0; -} - -.alert { - margin-top: 8px; - margin-bottom: 10px; - white-space: pre-line; -} - -.mx-compound-control { - display: flex; -} - -.mx-compound-control button { - margin-left: 5px; -} - -[dir="rtl"] .mx-compound-control button { - margin-left: 0; - margin-right: 5px; -} - -.mx-tooltip { - margin: 10px; -} -.mx-tooltip-content { - width: 400px; - overflow-y: auto; -} -.mx-tooltip-prepare { - height: 24px; - padding: 8px; - background: transparent url(data:image/gif;base64,R0lGODlhGAAYAMQdAKXZ8nfF64TL7QuX3Fe45zaq4hOb3fL6/fr9/rri9dXt+ZrU8Cym4Umy5cHl9uPz+2K86Oj1/Nzw+rDd9M3q+JDQ72rA6iOi3+34/ECu48jo9x2f3gWV2////wAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUJFNkU4NEZCNEVDMTFFODk3MDBBNUU1RUM4Qjg3QTUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RUJFNkU4NTBCNEVDMTFFODk3MDBBNUU1RUM4Qjg3QTUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFQkU2RTg0REI0RUMxMUU4OTcwMEE1RTVFQzhCODdBNSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFQkU2RTg0RUI0RUMxMUU4OTcwMEE1RTVFQzhCODdBNSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6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) no-repeat scroll center center; -} -.mx-tooltip-content .table th, -.mx-tooltip-content .table td { - padding: 2px 8px; -} - -.mx-tabcontainer-pane { - height: 100%; -} -.mx-tabcontainer-content.loading { - min-height: 48px; - background: url(data:image/gif;base64,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) no-repeat center center; - background-size: 32px 32px; -} -.mx-tabcontainer-tabs { - margin-bottom: 8px; -} -.mx-tabcontainer-tabs li { - position: relative; -} -.mx-tabcontainer-indicator { - position: absolute; - background: #f2dede; - border-radius: 8px; - color: #b94a48; - top: 0px; - right: -5px; - width: 16px; - height: 16px; - line-height: 16px; - text-align: center; - vertical-align: middle; - font-size: 10px; - font-weight: 600; - z-index: 1; /* indicator should not hide behind other tab */ -} - -/* base structure */ -.mx-grid { - padding: 8px; - overflow: hidden; /* to prevent any margin from escaping grid and foobaring our size calculations */ -} -.mx-grid-controlbar, .mx-grid-searchbar { - display: flex; - justify-content: space-between; - flex-wrap: wrap; -} -.mx-grid-controlbar .mx-button, -.mx-grid-search-controls .mx-button { - margin-bottom: 8px; -} - -.mx-grid-search-controls .mx-button + .mx-button, -.mx-grid-controlbar .mx-button + .mx-button { - margin-left: 0.3em; -} - -[dir="rtl"] .mx-grid-search-controls .mx-button + .mx-button, -[dir="rtl"] .mx-grid-controlbar .mx-button + .mx-button { - margin-left: 0; - margin-right: 0.3em; -} - -.mx-grid-pagingbar, -.mx-grid-search-controls { - display: flex; - white-space: nowrap; - align-items: baseline; - margin-left: auto; -} - -.mx-grid-toolbar, .mx-grid-search-inputs { - margin-right: 5px; - flex: 1; -} - -[dir="rtl"] .mx-grid-toolbar, -[dir="rtl"] .mx-grid-search-inputs { - margin-left: 5px; - margin-right: 0px; -} -[dir="rtl"] .mx-grid-pagingbar, -[dir="rtl"] .mx-grid-search-controls { - margin-left: 0px; - margin-right: auto; -} - -.mx-grid-paging-status { - padding: 0 8px 5px; -} - -/* search fields */ -.mx-grid-search-item { - display: inline-block; - vertical-align: top; - margin-bottom: 8px; -} -.mx-grid-search-label { - width: 110px; - padding: 0 5px; - text-align: right; - display: inline-block; - vertical-align: top; - overflow: hidden; -} -[dir="rtl"] .mx-grid-search-label { - text-align: left; -} -.mx-grid-search-input { - width: 150px; - padding: 0 5px; - display: inline-block; - vertical-align: top; -} -.mx-grid-search-message { - flex-basis: 100%; -} - -/* widget combinations */ -.mx-dataview .mx-grid { - border: 1px solid #ddd; - border-radius: 3px; -} - -.mx-calendar { - z-index: 1000; -} - -.mx-calendar-month-dropdown-options { - position: absolute; -} - -.mx-calendar, .mx-calendar-month-dropdown { - user-select: none; -} - -.mx-calendar-month-current { - display: inline-block; -} - -.mx-calendar-month-spacer { - position: relative; - height: 0px; - overflow: hidden; - visibility: hidden; -} - -.mx-calendar, .mx-calendar-month-dropdown-options { - border: 1px solid lightgrey; - background-color: white; -} - -.mx-datagrid tr { - cursor: pointer; -} - -.mx-datagrid tr.mx-datagrid-row-empty { - cursor: default; -} - -.mx-datagrid table { - width: 100%; - max-width: 100%; - table-layout: fixed; - margin-bottom: 0; -} - -.mx-datagrid th, .mx-datagrid td { - padding: 8px; - line-height: 1.42857143; - vertical-align: bottom; - border: 1px solid #ddd; -} - -/* head */ -.mx-datagrid th { - position: relative; /* Required for the positioning of the column resizers */ - border-bottom-width: 2px; -} -.mx-datagrid-head-caption { - overflow: hidden; - white-space: nowrap; -} -.mx-datagrid-sort-icon { - float: right; - padding-left: 5px; -} -[dir="rtl"] .mx-datagrid-sort-icon { - float: left; - padding: 0 5px 0 0; -} -.mx-datagrid-column-resizer { - position: absolute; - top: 0; - left: -6px; - width: 10px; - height: 100%; - cursor: col-resize; -} -[dir="rtl"] .mx-datagrid-column-resizer { - left: auto; - right: -6px; -} - -/* body */ -.mx-datagrid tbody tr:first-child td { - border-top: none; -} -//.mx-datagrid tbody tr:nth-child(2n+1) td { -// background-color: #f9f9f9; -//} -.mx-datagrid tbody .selected td { - background-color: #eee; -} -.mx-datagrid-data-wrapper { - overflow: hidden; - white-space: nowrap; -} -.mx-datagrid tbody img { - max-width: 16px; - max-height: 16px; -} -.mx-datagrid input, -.mx-datagrid select, -.mx-datagrid textarea { - cursor: auto; -} - -/* foot */ -.mx-datagrid tfoot th, -.mx-datagrid tfoot td { - padding: 3px 8px; -} -.mx-datagrid tfoot th { - border-top: 1px solid #ddd; -} -.mx-datagrid.mx-content-loading .mx-content-loader { - display: inline-block; - width: 90%; - animation: placeholderGradient 1s linear infinite; - border-radius: 4px; - background: #F5F5F5; - background: repeating-linear-gradient(to right, #F5F5F5 0%, #F5F5F5 5%, #F9F9F9 50%, #F5F5F5 95%, #F5F5F5 100%); - background-size: 200px 100px; - animation-fill-mode: both; -} -@keyframes placeholderGradient { - 0% { background-position: 100px 0; } - 100% { background-position: -100px 0; } -} - -.mx-datagrid-table-resizing th, -.mx-datagrid-table-resizing td { - cursor: col-resize !important; -} - -.mx-templategrid-content-wrapper { - display: table; - width: 100%; - border-collapse: collapse; - box-sizing: border-box; -} -.mx-templategrid-row { - display: table-row; -} -.mx-templategrid-item { - padding: 5px; - display: table-cell; - border: 1px solid #ddd; - cursor: pointer; - box-sizing: border-box; -} -.mx-templategrid-empty { - display: table-cell; -} -.mx-templategrid-item.selected { - background-color: #f5f5f5; -} -.mx-templategrid-item .mx-table th, -.mx-templategrid-item .mx-table td { - padding: 2px 8px; -} - -.mx-scrollcontainer-horizontal { - width: 100%; - display: table; - table-layout: fixed; -} -.mx-scrollcontainer-horizontal > div { - display: table-cell; - vertical-align: top; -} -//.mx-scrollcontainer-wrapper { -// padding: 10px; -//} -.mx-scrollcontainer-nested { - padding: 0; -} -.mx-scrollcontainer-fixed > .mx-scrollcontainer-middle > .mx-scrollcontainer-wrapper, -.mx-scrollcontainer-fixed > .mx-scrollcontainer-left > .mx-scrollcontainer-wrapper, -.mx-scrollcontainer-fixed > .mx-scrollcontainer-center > .mx-scrollcontainer-wrapper, -.mx-scrollcontainer-fixed > .mx-scrollcontainer-right > .mx-scrollcontainer-wrapper { - overflow: auto; -} - -.mx-scrollcontainer-move-in { - transition: left 250ms ease-out; -} -.mx-scrollcontainer-move-out { - transition: left 250ms ease-in; -} -.mx-scrollcontainer-shrink .mx-scrollcontainer-toggleable { - transition-property: width; -} - -.mx-scrollcontainer-toggleable { - background-color: #fff; -} -//.mx-scrollcontainer-slide > .mx-scrollcontainer-toggleable > .mx-scrollcontainer-wrapper { -// position: relative; -// z-index: 1; -// background-color: inherit; -//} -.mx-scrollcontainer-push { - position: relative; -} -.mx-scrollcontainer-shrink > .mx-scrollcontainer-toggleable { - overflow: hidden; -} -.mx-scrollcontainer-push.mx-scrollcontainer-open > div, -.mx-scrollcontainer-slide.mx-scrollcontainer-open > div { - pointer-events: none; -} -.mx-scrollcontainer-push.mx-scrollcontainer-open > .mx-scrollcontainer-toggleable, -.mx-scrollcontainer-slide.mx-scrollcontainer-open > .mx-scrollcontainer-toggleable { - pointer-events: auto; -} - -.mx-navbar-item img, -.mx-navbar-subitem img { - height: 16px; -} - - -.mx-navigationtree .navbar-inner { - padding-left: 0; - padding-right: 0; -} -.mx-navigationtree ul { - list-style: none; -} -.mx-navigationtree ul li { - border-bottom: 1px solid #dfe6ea; -} -.mx-navigationtree li:last-child { - border-style: none; -} -.mx-navigationtree a { - display: block; - padding: 5px 10px; - color: #777; - text-shadow: 0 1px 0 #fff; - text-decoration: none; -} -.mx-navigationtree a.active { - color: #FFF; - text-shadow: none; - background: #3498DB; - border-radius: 3px; -} -.mx-navigationtree .mx-navigationtree-collapsed ul { - display: none; -} -.mx-navigationtree ul { - margin: 0; - padding: 0; -} -.mx-navigationtree ul li { - padding: 5px 0; -} -.mx-navigationtree ul li ul { - padding: 0; - margin-left: 10px; -} -.mx-navigationtree ul li ul li { - margin-left: 8px; - padding: 5px 0; -} -[dir="rtl"] .mx-navigationtree ul li ul li { - margin-left: auto; - margin-right: 8px; -} -.mx-navigationtree ul li ul li ul li { - font-size: 10px; - padding-top: 3px; - padding-bottom: 3px; -} -.mx-navigationtree ul li ul li ul li img { - vertical-align: top; -} - -.mx-link img, -.mx-button img { - height: 16px; -} -.mx-link { - padding: 6px 12px; - display: inline-block; -} - -.mx-groupbox { - margin-bottom: 10px; -} -.mx-groupbox-header { - margin: 0; - padding: 10px 15px; - color: #eee; - background: #333; - font-size: inherit; - line-height: inherit; - border-radius: 4px 4px 0 0; -} -.mx-groupbox-collapsible > .mx-groupbox-header { - cursor: pointer; -} -.mx-groupbox.collapsed > .mx-groupbox-header { - border-radius: 4px; -} -.mx-groupbox-body { - padding: 8px; - border: 1px solid #ddd; - border-radius: 4px; -} -.mx-groupbox.collapsed > .mx-groupbox-body { - display: none; -} -.mx-groupbox-header + .mx-groupbox-body { - border-top: none; - border-radius: 0 0 4px 4px; -} -.mx-groupbox-collapse-icon { - float: right; -} -[dir="rtl"] .mx-groupbox-collapse-icon { - float: left; -} - -.mx-dataview { - position: relative; -} -.mx-dataview-controls { - padding: 19px 20px 12px; - background-color: #f5f5f5; - border-top: 1px solid #eee; -} - -.mx-dataview-controls .mx-button { - margin-bottom: 8px; -} - -.mx-dataview-controls .mx-button + .mx-button { - margin-left: 0.3em; -} - -.mx-dataview-message { - background: #fff; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; -} -.mx-dataview-message > div { - display: table; - width: 100%; - height: 100%; -} -.mx-dataview-message > div > p { - display: table-cell; - text-align: center; - vertical-align: middle; -} - -/* Top-level data view in window is a special case, handle it as such. */ -.mx-window-view .mx-window-body { - padding: 0; -} -.mx-window-view .mx-window-body > .mx-dataview > .mx-dataview-content, -.mx-window-view .mx-window-body > .mx-placeholder > .mx-dataview > .mx-dataview-content { - padding: 15px; -} -.mx-window-view .mx-window-body > .mx-dataview > .mx-dataview-controls, -.mx-window-view .mx-window-body > .mx-placeholder > .mx-dataview > .mx-dataview-controls { - border-radius: 0px 0px 6px 6px; -} - -.mx-dialog { - position: fixed; - left: auto; - right: auto; - padding: 0; - width: 500px; - /* If the margin is set to auto, IE9 reports the calculated value of the - * margin as the actual value. Other browsers will just report 0. Eliminate - * this difference by setting margin to 0 for every browser. */ - margin: 0; -} -.mx-dialog-header { - cursor: move; -} -.mx-dialog-body { - overflow: auto; -} - -.mx-window { - position: fixed; - left: auto; - right: auto; - padding: 0; - width: 600px; - /* If the margin is set to auto, IE9 reports the calculated value of the - * margin as the actual value. Other browsers will just report 0. Eliminate - * this difference by setting margin to 0 for every browser. */ - margin: 0; -} -.mx-window-content { - height: 100%; - overflow: hidden; -} -.mx-window-active .mx-window-header { - background-color: #f5f5f5; - border-radius: 6px 6px 0 0; -} -.mx-window-header { - cursor: move; -} -.mx-window-body { - overflow: auto; -} - -.mx-dropdown-list * { - cursor: pointer; -} -.mx-dropdown-list img { - width: 35px; - vertical-align: middle; - margin-right: 10px; -} -[dir="rtl"] .mx-dropdown-list img { - margin-left: 10px; - margin-right: auto; -} - -.mx-dropdown-list { - padding: 0; - list-style: none; -} -.mx-dropdown-list > li { - padding: 5px 10px 10px; - border: 1px #ddd; - border-style: solid solid none; - background-color: #fff; -} -.mx-dropdown-list > li:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; -} -.mx-dropdown-list > li:last-child { - border-bottom-style: solid; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; -} -.mx-dropdown-list-striped > li:nth-child(2n+1) { - background: #f9f9f9; -} -.mx-dropdown-list > li:hover { - background: #f5f5f5; -} - -.mx-header { - position: relative; - padding: 9px; - background: #333; - text-align: center; -} -.mx-header-center { - display: inline-block; - color: #eee; - line-height: 30px; /* height of buttons */ -} -body[dir="ltr"] .mx-header-left, -body[dir="rtl"] .mx-header-right { - position: absolute; - top: 9px; - left: 9px; -} -body[dir="ltr"] .mx-header-right, -body[dir="rtl"] .mx-header-left { - position: absolute; - top: 9px; - right: 9px; -} - -.mx-title { - margin-bottom: 0px; - margin-top: 0px; -} - -.mx-listview { - padding: 8px; -} -.mx-listview > ul { - padding: 0px; - list-style: none; -} -// .mx-listview > ul > li { -// padding: 5px 10px 10px; -// border: 1px #ddd; -// border-style: solid solid none; -// background-color: #fff; -// outline: none; -// } -// .mx-listview > ul > li:first-child { -// border-top-left-radius: 4px; -// border-top-right-radius: 4px; -// } -// .mx-listview > ul > li:last-child { -// border-bottom-style: solid; -// border-bottom-left-radius: 4px; -// border-bottom-right-radius: 4px; -// } -//.mx-listview li:nth-child(2n+1) { -// background: #f9f9f9; -//} -//.mx-listview li:nth-child(2n+1):hover { -// background: #f5f5f5; -//} -.mx-listview > ul > li.selected { -// background: #eee; -} -.mx-listview-clickable > ul > li { - cursor: pointer; -} -.mx-listview-empty { - color: #999; - text-align: center; -} -.mx-listview .mx-listview-loading { - padding: 10px; - line-height: 0; - text-align: center; -} -.mx-listview-searchbar { - display: flex; - margin-bottom: 10px; -} -.mx-listview-searchbar > input { - width: 100%; -} -.mx-listview-searchbar > button { - margin-left: 5px; -} -[dir="rtl"] .mx-listview-searchbar > button { - margin-left: 0; - margin-right: 5px; -} -.mx-listview-selection { - display: table-cell; - vertical-align: middle; - padding: 0 15px 0 5px; -} -[dir="rtl"] .mx-listview-selection { - padding: 0 5px 0 15px; -} -.mx-listview-selectable .mx-listview-content { - display: table-cell; - vertical-align: middle; - width: 100%; -} -.mx-listview .selected { - background: #def; -} -.mx-listview .mx-table th, -.mx-listview .mx-table td { - padding: 2px; -} - -.mx-login .form-control { - margin-top: 10px; -} - -.mx-menubar { - padding: 8px; -} -.mx-menubar-icon { - height: 16px; -} -.mx-menubar-more-icon { - display: inline-block; - width: 16px; - height: 16px; - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKNJREFUeNpi/P//P8NgAUwMgwiMOmbUMaOOGXXMqGNGHTPYHMOCTfDs2bMeQKoOiI1BXCBuMjY23kFrdYzoTQigRm8gtQWLG0OBBqyhlTpc0dSOIxTraKwOq2PUcWhWp7E6rI65iUPzTRqrw+qYGhyam2isDtMxwES1CUgFAfFxqBCIDkJPbNRWhzU3jRZ6o44ZdcyoY0YdM+qYUccMUscABBgAUXpEjE/Bs/IAAAAASUVORK5CYII=) no-repeat center center; - background-size: 16px 16px; - vertical-align: middle; -} - -.mx-navigationlist { - padding: 8px; -} -.mx-navigationlist li:hover, -.mx-navigationlist li:focus, -.mx-navigationlist li.active { - color: #FFF; - background-color: #3498DB; -} -.mx-navigationlist * { - cursor: pointer; -} -.mx-navigationlist .table th, -.mx-navigationlist .table td { - padding: 2px; -} - -.mx-progress { - position: fixed; - top: 30%; - left: 0; - right: 0; - margin: auto; - width: 250px; - max-width: 90%; - background: #333; - opacity: 0.8; - z-index: 5000; - border-radius: 4px; - padding: 20px 15px; - transition: opacity 0.4s ease-in-out; -} -.mx-progress-hidden { - opacity: 0; -} -.mx-progress-message { - color: #fff; - text-align: center; - margin-bottom: 15px; -} -.mx-progress-empty .mx-progress-message { - display: none; -} -.mx-progress-indicator { - width: 70px; - height: 10px; - margin: auto; - background: url(data:image/gif;base64,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); -} - -.mx-reload-notification { - position: fixed; - z-index: 1001; - top: 0; - width: 100%; - padding: 1rem; - - border: 1px solid hsl(200, 96%, 41%); - background-color: hsl(200, 96%, 44%); - - box-shadow: 0 5px 20px rgba(1, 37, 55, 0.16); - color: white; - - text-align: center; - font-size: 14px; -} - -.mx-resizer-n, -.mx-resizer-s { - position: absolute; - left: 0; - width: 100%; - height: 10px; -} -.mx-resizer-n { - top: -5px; - cursor: n-resize; -} -.mx-resizer-s { - bottom: -5px; - cursor: s-resize; -} - -.mx-resizer-e, -.mx-resizer-w { - position: absolute; - top: 0; - width: 10px; - height: 100%; -} -.mx-resizer-e { - right: -5px; - cursor: e-resize; -} -.mx-resizer-w { - left: -5px; - cursor: w-resize; -} - -.mx-resizer-nw, -.mx-resizer-ne, -.mx-resizer-sw, -.mx-resizer-se { - position: absolute; - width: 20px; - height: 20px; -} - -.mx-resizer-nw, -.mx-resizer-ne { - top: -5px; -} -.mx-resizer-sw, -.mx-resizer-se { - bottom: -5px; -} -.mx-resizer-nw, -.mx-resizer-sw { - left: -5px; -} -.mx-resizer-ne, -.mx-resizer-se { - right: -5px; -} - -.mx-resizer-nw { - cursor: nw-resize; -} -.mx-resizer-ne { - cursor: ne-resize; -} -.mx-resizer-sw { - cursor: sw-resize; -} -.mx-resizer-se { - cursor: se-resize; -} - -.mx-text { - white-space: pre-line; -} - -.mx-textarea textarea { - resize: none; - overflow-y: hidden; -} -.mx-textarea .mx-textarea-noresize { - height: auto; - resize: vertical; - overflow-y: auto; -} -.mx-textarea .mx-textarea-counter { - font-size: smaller; -} -.mx-textarea .form-control-static { - white-space: pre-line; -} - -.mx-underlay { - position: fixed; - top: 0; - width: 100%; - height: 100%; - z-index: 1000; - opacity: 0.5; - background-color: #333; -} - -.mx-imagezoom { - position: absolute; - display: table; - width: 100%; - height: 100%; - background-color: #999; -} -.mx-imagezoom-wrapper { - display: table-cell; - text-align: center; - vertical-align: middle; -} -.mx-imagezoom-image { - max-width: none; -} - -.mx-dropdown li { - padding: 3px 20px; - cursor: pointer; -} -.mx-dropdown label { - padding: 0; - color: #333; - white-space: nowrap; - cursor: pointer; -} -.mx-dropdown input { - margin: 0; - vertical-align: middle; - cursor: pointer; -} -.mx-dropdown .selected { - background: #f8f8f8; -} -//.mx-selectbox { -// text-align: left; -//} -//.mx-selectbox-caret-wrapper { -// float: right; -// height: 100%; -//} - -.mx-demouserswitcher { - position: fixed; - top: 0; - right: 0; - width: 360px; - height: 100%; - z-index: 20000; - box-shadow: -1px 0 5px rgba(28,59,86,.2); -} -.mx-demouserswitcher-content { - padding: 80px 40px 20px; - height: 100%; - color: #387ea2; - font-size: 14px; - overflow: auto; - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOgAAABgCAYAAAAXSj7NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MzkwOTREMDQ2NEYxMUU0QTQ4MUI5NTNGMUQ3QzE5NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0MzkwOTREMTQ2NEYxMUU0QTQ4MUI5NTNGMUQ3QzE5NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0REMyMUZGNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0REMyMjAwNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+g1tRlwAAEFFJREFUeNrsnYl3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) top right no-repeat #1b3149; - /* background-attachement local is not supported on IE8 - * when this is part of background the complete background is ignored */ - background-attachment: local; -} -.mx-demouserswitcher ul { - padding: 0; - margin-top: 25px; - list-style-type: none; - border-top: 1px solid #496076; -} -.mx-demouserswitcher a { - display: block; - padding: 10px 0; - color: #387ea2; - border-bottom: 1px solid #496076; -} -.mx-demouserswitcher h2 { - margin: 20px 0 5px; - color: #5bc4fe; - font-size: 28px; -} -.mx-demouserswitcher h3 { - margin: 0 0 2px; - color: #5bc4fe; - font-size: 18px; - font-weight: normal; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.mx-demouserswitcher .active h3 { - color: #11efdb; -} -.mx-demouserswitcher p { - margin-bottom: 0; -} -.mx-demouserswitcher-toggle { - position: absolute; - top: 25%; - left: -35px; - width: 35px; - height: 38px; - margin-top: -40px; - cursor: pointer; - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; - box-shadow: -1px 0 5px rgba(28,59,86,.2); - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NERDMjFGRDQ2NEMxMUU0QTQ4MUI5NTNGMUQ3QzE5NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NERDMjFGRTQ2NEMxMUU0QTQ4MUI5NTNGMUQ3QzE5NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0REMyMUZCNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0REMyMUZDNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+1ZovNAAAAWdJREFUeNqM1M0rRFEYx/E7Y5qIQpOUbIiymQWysBgvJVJK2VgryZQtKSULZelPsB0LZaNZjJUNK1FskJqUvCS3NAsZc3zP9NziOOfeeepTc8/c8+vc8xZTSnmOakEGKdzgDBXXy54OMsSwjpL6W9cYsrxfZWvcUu7y0VdLUCc+VXgd2oLixpfOIOmF17TtHTOozYuupCxAaNB9DUEfeDUbE8bzEXxZerP00l8hh3LUiHTIMr6N9j2ksYoihv/1deyLSVzKKm1jEW+WfZV2Lf8gskjIcwcWpOM++pHCFPLosgWtoCyd7jCPOjzhGHHLyDPY1achaJhDxRj6rBwJXUuoN0IG8IIv7OiGBjxadvAITuT3rex6c0SbKASflnUcBT3JTThAjyWkGUVsBEEFR5CerzXpNIacrFIrJnCBB3muBvkhB1TP27hM/Lvx3zl6gxHqu6c74kiU8IxGjKJdLrrT3xfdjwADAJaMxP2bvD2BAAAAAElFTkSuQmCC) center center no-repeat #1b3149; -} - -/* master details screen for mobile */ -.mx-master-detail-screen { - top: 0; - left: 0; - overflow: auto; - width: 100%; - height: 100%; - position: absolute; - background-color: white; - will-change: transform; -} - -.mx-master-detail-screen .mx-master-detail-details { - padding: 15px; -} - -.mx-master-detail-screen-header { - position: relative; - overflow: auto; - border-bottom: 1px solid #ccc; - background-color: #f7f7f7; -} - -.mx-master-detail-screen-header-caption { - text-align: center; - font-size: 17px; - line-height: 24px; - font-weight: 600; -} - -.mx-master-detail-screen-header-close { - position: absolute; - left: 0; - top: 0; - height: 100%; - width: 50px; - border: none; - background: transparent; - color: #007aff; -} - -body[dir="rtl"] .mx-master-detail-screen-header-close { - right: 0; - left: auto; -} - -.mx-master-detail-screen-header-close::before { - content: "\2039"; - font-size: 52px; - line-height: 24px; -} - -/* classes for content page */ -.mx-master-detail-content-fix { - height: 100vh; - overflow: hidden; -} - -.mx-master-detail-content-hidden { - transform: translateX(-200%); -} - -body[dir="rtl"] .mx-master-detail-content-hidden { - transform: translateX(200%); -} -.reportingReport { - padding: 5px; - border: 1px solid #ddd; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} - -.reportingReportParameter th { - text-align: right; -} - -.reportingDateRange table { - width: 100%; - table-layout: fixed; -} -.reportingDateRange th { - padding: 5px; - text-align: right; - background-color: #eee; -} -.reportingDateRange td { - padding: 5px; -} - -.mx-reportmatrix table { - width: 100%; - max-width: 100%; - table-layout: fixed; - margin-bottom: 0; -} - -.mx-reportmatrix th, .mx-reportmatrix td { - padding: 8px; - line-height: 1.42857143; - vertical-align: bottom; - border: 1px solid #ddd; -} - -.mx-reportmatrix tbody tr:first-child td { - border-top: none; -} - -.mx-reportmatrix tbody tr:nth-child(2n+1) td { - background-color: #f9f9f9; -} - -.mx-reportmatrix tbody img { - max-width: 16px; - max-height: 16px; -} - -@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { - .dijitInline { - zoom: 1; /* set hasLayout:true to mimic inline-block */ - display:inline; /* don't use .dj_ie since that increases the priority */ - vertical-align: auto; /* makes TextBox,Button line up w/native counterparts on IE6 */ - } - - .dj_ie6 .dijitComboBox .dijitInputContainer, - .dijitInputContainer { - zoom: 1; - } - - .dijitRight { - /* Right part of a 3-element border */ - display:inline; /* IE7 sizes to outer size w/o this */ - } - - .dijitButtonNode { - vertical-align: auto; - } - - .dijitTextBox { - overflow: hidden; /* #6027, #6067 */ - } - - .dijitPlaceHolder { - filter: ""; /* make this show up in IE6 after the rendering of the widget */ - } - - .dijitValidationTextBoxError input.dijitValidationInner, - .dijitSelect input, - .dijitTextBox input.dijitArrowButtonInner { - text-indent: 0 !important; - letter-spacing: -5em !important; - text-align: right !important; - } - - .dj_a11y input.dijitValidationInner, - .dj_a11y input.dijitArrowButtonInner { - text-align: left !important; - } - - .dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton { - bottom: 50%; /* otherwise (on some machines) top arrow icon too close to splitter border (IE6/7) */ - } - - .dijitTabContainerTop-tabs .dijitTab, - .dijitTabContainerBottom-tabs .dijitTab { - zoom: 1; /* set hasLayout:true to mimic inline-block */ - display:inline; /* don't use .dj_ie since that increases the priority */ - } - - .dojoDndHorizontal .dojoDndItem { - /* make contents of horizontal container be side by side, rather than vertical */ - display: inline; - } -} - - - -/* WARNING: IE9 limits nested imports to three levels deep: http://jorgealbaladejo.com/2011/05/28/internet-explorer-limits-nested-import-css-statements */ - -/* dijit base */ - -/* mendix base */ - -/* widgets */ - -/* reporting */ - - -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9kb2pvL2Rpaml0L3RoZW1lcy9kaWppdC5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS9iYXNlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL2Zvcm1zLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9Ub29sdGlwLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9UYWJDb250YWluZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L19HcmlkLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9DYWxlbmRhci5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvRGF0YUdyaWQuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RlbXBsYXRlR3JpZC5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvU2Nyb2xsQ29udGFpbmVyLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9OYXZiYXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L05hdmlnYXRpb25UcmVlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9CdXR0b24uY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0dyb3VwQm94LmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9EYXRhVmlldy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvRGlhbG9nLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9XaW5kb3cuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0Ryb3BEb3duLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9IZWFkZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RpdGxlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9MaXN0Vmlldy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvTG9naW5EaWFsb2cuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L01lbnVCYXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L05hdmlnYXRpb25MaXN0LmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9Qcm9ncmVzcy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvUmVsb2FkTm90aWZpY2F0aW9uLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9SZXNpemFibGUuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RleHQuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RleHRBcmVhLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9VbmRlcmxheS5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvSW1hZ2Vab29tLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9TZWxlY3RCb3guY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0RlbW9Vc2VyU3dpdGNoZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L01hc3RlckRldGFpbC5jc3MiLCJ3ZWJwYWNrOi8vLy4vcmVwb3J0aW5nL3VpL3dpZGdldC9SZXBvcnQuY3NzIiwid2VicGFjazovLy8uL3JlcG9ydGluZy91aS93aWRnZXQvUmVwb3J0UGFyYW1ldGVyLmNzcyIsIndlYnBhY2s6Ly8vLi9yZXBvcnRpbmcvdWkvd2lkZ2V0L0RhdGVSYW5nZS5jc3MiLCJ3ZWJwYWNrOi8vLy4vcmVwb3J0aW5nL3VpL3dpZGdldC9SZXBvcnRNYXRyaXguY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvbXh1aS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7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QUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsd0JBQXdCO0FBQ3hCLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHlDQUF5QztBQUN4RDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixvQkFBb0I7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQsMEJBQTBCO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsYUFBYTtBQUNiLGFBQWEsd0RBQXdEO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQjtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdnNFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7O0FDOUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUN6REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOztBQzdCQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JGQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQzFCQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhCQUE4QjtBQUN0QyxVQUFVLCtCQUErQjtBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUN0R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyREE7QUFDQTtBQUNBO0FBQ0E7OztBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0VBO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DOztBQy9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JFQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7QUMvREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDO0FDaEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDekJBOztBQUVBOztBQUVBOztBQUVBOztBQUVBIiwiZmlsZSI6Im14dWkvdWkvbXh1aS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuXHRFc3NlbnRpYWwgc3R5bGVzIHRoYXQgdGhlbWVzIGNhbiBpbmhlcml0LlxuXHRJbiBvdGhlciB3b3Jkcywgd29ya3MgYnV0IGRvZXNuJ3QgbG9vayBncmVhdC5cbiovXG5cblxuXG4vKioqKlxuXHRcdEdFTkVSSUMgUElFQ0VTXG4gKioqKi9cblxuLmRpaml0UmVzZXQge1xuXHQvKiBVc2UgdGhpcyBzdHlsZSB0byBudWxsIG91dCBwYWRkaW5nLCBtYXJnaW4sIGJvcmRlciBpbiB5b3VyIHRlbXBsYXRlIGVsZW1lbnRzXG5cdFx0c28gdGhhdCBwYWdlIHNwZWNpZmljIHN0eWxlcyBkb24ndCBicmVhayB0aGVtLlxuXHRcdC0gVXNlIGluIGFsbCBUQUJMRSwgVFIgYW5kIFREIHRhZ3MuXG5cdCovXG5cdG1hcmdpbjowO1xuXHRib3JkZXI6MDtcblx0cGFkZGluZzowO1xuXHRmb250OiBpbmhlcml0O1xuXHRsaW5lLWhlaWdodDpub3JtYWw7XG5cdGNvbG9yOiBpbmhlcml0O1xufVxuLmRqX2ExMXkgLmRpaml0UmVzZXQge1xuXHQtbW96LWFwcGVhcmFuY2U6IG5vbmU7IC8qIHJlbW92ZSBwcmVkZWZpbmVkIGhpZ2gtY29udHJhc3Qgc3R5bGluZyBpbiBGaXJlZm94ICovXG59XG5cbi5kaWppdElubGluZSB7XG5cdC8qICBUbyBpbmxpbmUgYmxvY2sgZWxlbWVudHMuXG5cdFx0U2ltaWxhciB0byBJbmxpbmVCb3ggYmVsb3csIGJ1dCB0aGlzIGhhcyBmZXdlciBzaWRlLWVmZmVjdHMgaW4gTW96LlxuXHRcdEFsc28sIGFwcGFyZW50bHkgd29ya3Mgb24gYSBESVYgYXMgd2VsbCBhcyBhIEZJRUxEU0VULlxuXHQqL1xuXHRkaXNwbGF5OmlubGluZS1ibG9jaztcdFx0XHQvKiB3ZWJraXQgYW5kIEZGMyAqL1xuXHQjem9vbTogMTsgLyogc2V0IGhhc0xheW91dDp0cnVlIHRvIG1pbWljIGlubGluZS1ibG9jayAqL1xuXHQjZGlzcGxheTppbmxpbmU7IC8qIGRvbid0IHVzZSAuZGpfaWUgc2luY2UgdGhhdCBpbmNyZWFzZXMgdGhlIHByaW9yaXR5ICovXG5cdGJvcmRlcjowO1xuXHRwYWRkaW5nOjA7XG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0I3ZlcnRpY2FsLWFsaWduOiBhdXRvO1x0LyogbWFrZXMgVGV4dEJveCxCdXR0b24gbGluZSB1cCB3L25hdGl2ZSBjb3VudGVycGFydHMgb24gSUU2ICovXG59XG5cbnRhYmxlLmRpaml0SW5saW5lIHtcblx0LyogVG8gaW5saW5lIHRhYmxlcyB3aXRoIGEgZ2l2ZW4gd2lkdGggc2V0ICovXG5cdGRpc3BsYXk6aW5saW5lLXRhYmxlO1xuXHRib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbn1cblxuLmRpaml0SGlkZGVuIHtcblx0LyogVG8gaGlkZSB1bnNlbGVjdGVkIHBhbmVzIGluIFN0YWNrQ29udGFpbmVyIGV0Yy4gKi9cblx0cG9zaXRpb246IGFic29sdXRlOyAvKiByZW1vdmUgZnJvbSBub3JtYWwgZG9jdW1lbnQgZmxvdyB0byBzaW11bGF0ZSBkaXNwbGF5OiBub25lICovXG5cdHZpc2liaWxpdHk6IGhpZGRlbjsgLyogaGlkZSBlbGVtZW50IGZyb20gdmlldywgYnV0IGRvbid0IGJyZWFrIHNjcm9sbGluZywgc2VlICMxODYxMiAqL1xufVxuLmRpaml0SGlkZGVuICoge1xuXHR2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsgLyogaGlkZSB2aXNpYmlsaXR5OnZpc2libGUgZGVzY2VuZGFudHMgb2YgY2xhc3M9ZGlqaXRIaWRkZW4gbm9kZXMsIHNlZSAjMTg3OTkgKi9cbn1cblxuLmRpaml0VmlzaWJsZSB7XG5cdC8qIFRvIHNob3cgc2VsZWN0ZWQgcGFuZSBpbiBTdGFja0NvbnRhaW5lciBldGMuICovXG5cdGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XHQvKiBvdmVycmlkZSB1c2VyJ3MgZGlzcGxheTpub25lIHNldHRpbmcgdmlhIHN0eWxlIHNldHRpbmcgb3IgaW5kaXJlY3RseSB2aWEgY2xhc3MgKi9cblx0cG9zaXRpb246IHJlbGF0aXZlO1x0XHRcdC8qIHRvIHN1cHBvcnQgc2V0dGluZyB3aWR0aC9oZWlnaHQsIHNlZSAjMjAzMyAqL1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuXG4uZGpfaWU2IC5kaWppdENvbWJvQm94IC5kaWppdElucHV0Q29udGFpbmVyLFxuLmRpaml0SW5wdXRDb250YWluZXIge1xuXHQvKiBmb3IgcG9zaXRpb25pbmcgb2YgcGxhY2VIb2xkZXIgKi9cblx0I3pvb206IDE7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IC8qIG5lZWRlZCB0byBzcXVlZXplIHRoZSBJTlBVVCBpbiAqL1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uZGpfaWU3IC5kaWppdElucHV0Q29udGFpbmVyIHtcblx0ZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgLyogbmVlZGVkIGJ5IElFIHRvIHNxdWVlemUgdGhlIElOUFVUIGluICovXG5cdGNsZWFyOiBsZWZ0O1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgLyogdG8gZml4IHdyb25nIHRleHQgYWxpZ25tZW50IGluIHRleHRkaXI9cnRsIHRleHQgYm94ICovXG59XG5cbi5kal9pZSAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWUgaW5wdXQuZGlqaXRUZXh0Qm94LFxuLmRqX2llIC5kaWppdFRleHRCb3ggaW5wdXQge1xuXHRmb250LXNpemU6IDEwMCU7XG59XG4uZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uVGV4dCB7XG5cdGZsb2F0OiBsZWZ0O1xuXHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuVEFCTEUuZGlqaXRTZWxlY3Qge1xuXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IC8qIG1lc3NlcyB1cCBib3JkZXIgYWxpZ25tZW50ICovXG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IC8qIHNvIGpzZmlkZGxlIHdvcmtzIHdpdGggTm9ybWFsaXplZCBDU1MgY2hlY2tlZCAqL1xufVxuLmRpaml0VGV4dEJveCAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyLFxuLmRpaml0VGV4dEJveCAuZGlqaXRBcnJvd0J1dHRvbkNvbnRhaW5lcixcbi5kaWppdFZhbGlkYXRpb25UZXh0Qm94IC5kaWppdFZhbGlkYXRpb25Db250YWluZXIge1xuXHRmbG9hdDogcmlnaHQ7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5kaWppdFNlbGVjdCBpbnB1dC5kaWppdElucHV0RmllbGQsXG4uZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRGaWVsZCB7XG5cdC8qIG92ZXJyaWRlIHVucmVhc29uYWJsZSB1c2VyIHN0eWxpbmcgb2YgYnV0dG9ucyBhbmQgaWNvbnMgKi9cblx0cGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcbn1cbi5kaWppdFZhbGlkYXRpb25UZXh0Qm94IC5kaWppdFZhbGlkYXRpb25Db250YWluZXIge1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4uZGlqaXRUZWVueSB7XG5cdGZvbnQtc2l6ZToxcHg7XG5cdGxpbmUtaGVpZ2h0OjFweDtcbn1cblxuLmRpaml0T2ZmU2NyZWVuIHsgLyogdGhlc2UgY2xhc3MgYXR0cmlidXRlcyBzaG91bGQgc3VwZXJzZWRlIGFueSBpbmxpbmUgcG9zaXRpb25pbmcgc3R5bGUgKi9cblx0cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG5cdGxlZnQ6IC0xMDAwMHB4ICFpbXBvcnRhbnQ7XG5cdHRvcDogLTEwMDAwcHggIWltcG9ydGFudDtcbn1cblxuLypcbiAqIFBvcHVwIGl0ZW1zIGhhdmUgYSB3cmFwcGVyIGRpdiAoZGlqaXRQb3B1cClcbiAqIHdpdGggdGhlIHJlYWwgcG9wdXAgaW5zaWRlLCBhbmQgbWF5YmUgYW4gaWZyYW1lIHRvb1xuICovXG4uZGlqaXRQb3B1cCB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdG1hcmdpbjogMDtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xuXHQtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbi5kaWppdFBvc2l0aW9uT25seSB7XG5cdC8qIE51bGwgb3V0IGFsbCBwb3NpdGlvbi1yZWxhdGVkIHByb3BlcnRpZXMgKi9cblx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xuXHRib3JkZXI6IDAgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcblx0d2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmRpaml0Tm9uUG9zaXRpb25Pbmx5IHtcblx0LyogTnVsbCBwb3NpdGlvbi1yZWxhdGVkIHByb3BlcnRpZXMgKi9cblx0ZmxvYXQ6IG5vbmUgIWltcG9ydGFudDtcblx0cG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50O1xuXHRtYXJnaW46IDAgMCAwIDAgIWltcG9ydGFudDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50O1xufVxuXG4uZGlqaXRCYWNrZ3JvdW5kSWZyYW1lIHtcblx0LyogaWZyYW1lIHVzZWQgdG8gcHJldmVudCBwcm9ibGVtcyB3aXRoIFBERiBvciBvdGhlciBhcHBsZXRzIG92ZXJsYXlpbmcgbWVudXMgZXRjICovXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0bGVmdDogMDtcblx0dG9wOiAwO1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xuXHR6LWluZGV4OiAtMTtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdERpc3BsYXlOb25lIHtcblx0LyogaGlkZSBzb21ldGhpbmcuICBVc2UgdGhpcyBhcyBhIGNsYXNzIHJhdGhlciB0aGFuIGVsZW1lbnQuc3R5bGUgc28gYW5vdGhlciBjbGFzcyBjYW4gb3ZlcnJpZGUgKi9cblx0ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdENvbnRhaW5lciB7XG5cdC8qIGZvciBhbGwgbGF5b3V0IGNvbnRhaW5lcnMgKi9cblx0b3ZlcmZsb3c6IGhpZGRlbjtcdC8qIG5lZWQgb24gSUUgc28gc29tZXRoaW5nIGNhbiBiZSByZWR1Y2VkIGluIHNpemUsIGFuZCBzbyBzY3JvbGxiYXJzIGFyZW4ndCB0ZW1wb3JhcmlseSBkaXNwbGF5ZWQgd2hlbiByZXNpemluZyAqL1xufVxuXG4vKioqKlxuXHRcdEExMVlcbiAqKioqL1xuLmRqX2ExMXkgLmRpaml0SWNvbixcbi5kal9hMTF5IGRpdi5kaWppdEFycm93QnV0dG9uSW5uZXIsIC8qIGlzIHRoaXMgb25seSBmb3IgU3Bpbm5lcj8gIGlmIHNvLCBpdCBzaG91bGQgYmUgZGVsZXRlZCAqL1xuLmRqX2ExMXkgc3Bhbi5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGpfYTExeSBpbWcuZGlqaXRBcnJvd0J1dHRvbklubmVyLFxuLmRqX2ExMXkgLmRpaml0Q2FsZW5kYXJJbmNyZW1lbnRDb250cm9sLFxuLmRqX2ExMXkgLmRpaml0VHJlZUV4cGFuZG8ge1xuXHQvKiBoaWRlIGljb24gbm9kZXMgaW4gaGlnaCBjb250cmFzdCBtb2RlOyB3aGVuIG5lY2Vzc2FyeSB0aGV5IHdpbGwgYmUgcmVwbGFjZWQgYnkgY2hhcmFjdGVyIGVxdWl2YWxlbnRzXG5cdCAqIGV4Y2VwdGlvbiBmb3IgaW5wdXQuZGlqaXRBcnJvd0J1dHRvbklubmVyLCBiZWNhdXNlIHRoZSBpY29uIGFuZCBjaGFyYWN0ZXIgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIHNhbWUgbm9kZSAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRpaml0U3Bpbm5lciBkaXYuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0ZGlzcGxheTogYmxvY2s7IC8qIG92ZXJyaWRlIHByZXZpb3VzIHJ1bGUgKi9cbn1cblxuLmRqX2ExMXkgLmRpaml0QTExeVNpZGVBcnJvdyB7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyAvKiBkaXNwbGF5IHRleHQgaW5zdGVhZCAqL1xuXHRjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qXG4gKiBTaW5jZSB3ZSBjYW4ndCB1c2Ugc2hhZGluZyBpbiBhMTF5IG1vZGUsIGFuZCBzaW5jZSB0aGUgdW5kZXJsaW5lIGluZGljYXRlcyB0b2RheSdzIGRhdGUsXG4gKiB1c2UgYSBib3JkZXIgdG8gc2hvdyB0aGUgc2VsZWN0ZWQgZGF0ZS5cbiAqIEF2b2lkIHNjcmVlbiBqaXR0ZXIgd2hlbiBzd2l0Y2hpbmcgc2VsZWN0ZWQgZGF0ZSBieSBjb21wZW5zYXRpbmcgZm9yIHRoZSBzZWxlY3RlZCBub2RlJ3NcbiAqIGJvcmRlciB3L3BhZGRpbmcgb24gb3RoZXIgbm9kZXMuXG4gKi9cbi5kal9hMTF5IC5kaWppdENhbGVuZGFyRGF0ZUxhYmVsIHtcblx0cGFkZGluZzogMXB4O1xuXHRib3JkZXI6IDBweCAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0Q2FsZW5kYXJTZWxlY3RlZERhdGUgLmRpaml0Q2FsZW5kYXJEYXRlTGFiZWwge1xuXHRib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG5cdGJvcmRlci13aWR0aDogMXB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmc6IDA7XG59XG4uZGpfYTExeSAuZGlqaXRDYWxlbmRhckRhdGVUZW1wbGF0ZSB7XG5cdHBhZGRpbmctYm90dG9tOiAwLjFlbSAhaW1wb3J0YW50O1x0Lyogb3RoZXJ3aXNlIGJvdHRvbSBib3JkZXIgZG9lc24ndCBhcHBlYXIgb24gSUUgKi9cblx0Ym9yZGVyOiAwcHggIWltcG9ydGFudDtcbn1cbi5kal9hMTF5IC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXI6IGJsYWNrIG91dHNldCBtZWRpdW0gIWltcG9ydGFudDtcblxuXHQvKiBJbiBjbGFybywgaG92ZXJpbmcgYSB0b29sYmFyIGJ1dHRvbiByZWR1Y2VzIHBhZGRpbmcgYW5kIGFkZHMgYSBib3JkZXIuXG5cdCAqIE5vdCBuZWVkZWQgaW4gYTExeSBtb2RlIHNpbmNlIFRvb2xiYXIgYnV0dG9ucyBhbHdheXMgaGF2ZSBhIGJvcmRlci5cblx0ICovXG5cdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbn1cbi5kal9hMTF5IC5kaWppdEFycm93QnV0dG9uIHtcblx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXRCdXR0b25Db250ZW50cyB7XG5cdG1hcmdpbjogMC4xNWVtOyAvKiBNYXJnaW4gbmVlZGVkIHRvIG1ha2UgZm9jdXMgb3V0bGluZSB2aXNpYmxlICovXG59XG5cbi5kal9hMTF5IC5kaWppdFRleHRCb3hSZWFkT25seSAuZGlqaXRJbnB1dEZpZWxkLFxuLmRqX2ExMXkgLmRpaml0VGV4dEJveFJlYWRPbmx5IC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItc3R5bGU6IG91dHNldCFpbXBvcnRhbnQ7XG5cdGJvcmRlci13aWR0aDogbWVkaXVtIWltcG9ydGFudDtcblx0Ym9yZGVyLWNvbG9yOiAjOTk5ICFpbXBvcnRhbnQ7XG5cdGNvbG9yOiM5OTkgIWltcG9ydGFudDtcbn1cblxuLyogYnV0dG9uIGlubmVyIGNvbnRlbnRzIC0gbGFiZWxzLCBpY29ucyBldGMuICovXG4uZGlqaXRCdXR0b25Ob2RlICoge1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmRpaml0U2VsZWN0IC5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGlqaXRCdXR0b25Ob2RlIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHQvKiB0aGUgYXJyb3cgaWNvbiBub2RlICovXG5cdGJhY2tncm91bmQ6IG5vLXJlcGVhdCBjZW50ZXI7XG5cdHdpZHRoOiAxMnB4O1xuXHRoZWlnaHQ6IDEycHg7XG5cdGRpcmVjdGlvbjogbHRyOyAvKiBuZWVkZWQgYnkgSUUvUlRMICovXG59XG5cbi8qKioqXG5cdDMtZWxlbWVudCBib3JkZXJzOiAgKCBkaWppdExlZnQgKyBkaWppdFN0cmV0Y2ggKyBkaWppdFJpZ2h0IClcblx0VGhlc2Ugd2VyZSBhZGRlZCBmb3Igcm91bmRlZCBjb3JuZXJzIG9uIGRpaml0LmZvcm0uKkJ1dHRvbiBidXQgbmV2ZXIgYWN0dWFsbHkgdXNlZC5cbiAqKioqL1xuXG4uZGlqaXRMZWZ0IHtcblx0LyogTGVmdCBwYXJ0IG9mIGEgMy1lbGVtZW50IGJvcmRlciAqL1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgdG9wO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG59XG5cbi5kaWppdFN0cmV0Y2gge1xuXHQvKiBNaWRkbGUgKHN0cmV0Y2h5KSBwYXJ0IG9mIGEgMy1lbGVtZW50IGJvcmRlciAqL1xuXHR3aGl0ZS1zcGFjZTpub3dyYXA7XHRcdFx0LyogTU9XOiBtb3ZlIHNvbWV3aGVyZSBlbHNlICovXG5cdGJhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O1xufVxuXG4uZGlqaXRSaWdodCB7XG5cdC8qIFJpZ2h0IHBhcnQgb2YgYSAzLWVsZW1lbnQgYm9yZGVyICovXG5cdCNkaXNwbGF5OmlubGluZTtcdFx0XHRcdC8qIElFNyBzaXplcyB0byBvdXRlciBzaXplIHcvbyB0aGlzICovXG5cdGJhY2tncm91bmQtcG9zaXRpb246cmlnaHQgdG9wO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG59XG5cbi8qIEJ1dHRvbnMgKi9cbi5kal9nZWNrbyAuZGpfYTExeSAuZGlqaXRCdXR0b25EaXNhYmxlZCAuZGlqaXRCdXR0b25Ob2RlIHtcblx0b3BhY2l0eTogMC41O1xufVxuXG4uZGlqaXRUb2dnbGVCdXR0b24sXG4uZGlqaXRCdXR0b24sXG4uZGlqaXREcm9wRG93bkJ1dHRvbixcbi5kaWppdENvbWJvQnV0dG9uIHtcblx0Lyogb3V0c2lkZSBvZiBidXR0b24gKi9cblx0bWFyZ2luOiAwLjJlbTtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRkaXNwbGF5OiBibG9jaztcdFx0LyogdG8gbWFrZSBmb2N1cyBib3JkZXIgcmVjdGFuZ3VsYXIgKi9cbn1cbnRkLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRkaXNwbGF5OiB0YWJsZS1jZWxsO1x0LyogYnV0IGRvbid0IGFmZmVjdCBTZWxlY3QsIENvbWJvQnV0dG9uICovXG59XG5cbi5kaWppdEJ1dHRvbk5vZGUgaW1nIHtcblx0LyogbWFrZSB0ZXh0IGFuZCBpbWFnZXMgbGluZSB1cCBjbGVhbmx5ICovXG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0LyptYXJnaW4tYm90dG9tOi4yZW07Ki9cbn1cblxuLmRpaml0VG9vbGJhciAuZGlqaXRDb21ib0J1dHRvbiB7XG5cdC8qIGJlY2F1c2UgVG9vbGJhciBvbmx5IGRyYXdzIGEgYm9yZGVyIGFyb3VuZCB0aGUgaG92ZXJlZCB0aGluZyAqL1xuXHRib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xufVxuXG4uZGlqaXRUb29sYmFyIC5kaWppdFRvZ2dsZUJ1dHRvbixcbi5kaWppdFRvb2xiYXIgLmRpaml0QnV0dG9uLFxuLmRpaml0VG9vbGJhciAuZGlqaXREcm9wRG93bkJ1dHRvbixcbi5kaWppdFRvb2xiYXIgLmRpaml0Q29tYm9CdXR0b24ge1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdFRvb2xiYXIgLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHQvKiBqdXN0IGJlY2F1c2UgaXQgdXNlZCB0byBiZSB0aGlzIHdheSAqL1xuXHRwYWRkaW5nOiAxcHggMnB4O1xufVxuXG5cbi5kal93ZWJraXQgLmRpaml0VG9vbGJhciAuZGlqaXREcm9wRG93bkJ1dHRvbiB7XG5cdHBhZGRpbmctbGVmdDogMC4zZW07XG59XG4uZGpfZ2Vja28gLmRpaml0VG9vbGJhciAuZGlqaXRCdXR0b25Ob2RlOjotbW96LWZvY3VzLWlubmVyIHtcblx0cGFkZGluZzowO1xufVxuXG4uZGlqaXRTZWxlY3Qge1xuXHRib3JkZXI6MXB4IHNvbGlkIGdyYXk7XG59XG4uZGlqaXRCdXR0b25Ob2RlIHtcblx0LyogTm9kZSB0aGF0IGlzIGFjdGluZyBhcyBhIGJ1dHRvbiAtLSBtYXkgb3IgbWF5IG5vdCBiZSBhIEJVVFRPTiBlbGVtZW50ICovXG5cdGJvcmRlcjoxcHggc29saWQgZ3JheTtcblx0bWFyZ2luOjA7XG5cdGxpbmUtaGVpZ2h0Om5vcm1hbDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0I3ZlcnRpY2FsLWFsaWduOiBhdXRvO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5kal93ZWJraXQgLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIHtcblx0LyogYXBwYXJlbnQgV2ViS2l0IGJ1ZyB3aGVyZSBtZXNzaW5nIHdpdGggdGhlIGZvbnQgY291cGxlZCB3aXRoIGxpbmUtaGVpZ2h0Om5vcm1hbCBYIDIgKGRpaml0UmVzZXQgJiBkaWppdEJ1dHRvbk5vZGUpXG5cdGNhbiBiZSBkaWZmZXJlbnQgdGhhbiBqdXN0IGEgc2luZ2xlIGxpbmUtaGVpZ2h0Om5vcm1hbCwgdmlzaWJsZSBpbiBJbmxpbmVFZGl0Qm94L1NwaW5uZXIgKi9cblx0bGluZS1oZWlnaHQ6aW5oZXJpdDtcbn1cbi5kaWppdFRleHRCb3ggLmRpaml0QnV0dG9uTm9kZSB7XG5cdGJvcmRlci13aWR0aDogMDtcbn1cblxuLmRpaml0U2VsZWN0LFxuLmRpaml0U2VsZWN0ICosXG4uZGlqaXRCdXR0b25Ob2RlLFxuLmRpaml0QnV0dG9uTm9kZSAqIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGpfaWUgLmRpaml0QnV0dG9uTm9kZSB7XG5cdC8qIGVuc3VyZSBoYXNMYXlvdXQgKi9cblx0em9vbTogMTtcbn1cblxuLmRqX2llIC5kaWppdEJ1dHRvbk5vZGUgYnV0dG9uIHtcblx0Lypcblx0XHRkaXNndXN0aW5nIGhhY2sgdG8gZ2V0IHJpZCBvZiBzcHVyaW91cyBwYWRkaW5nIGFyb3VuZCBidXR0b24gZWxlbWVudHNcblx0XHRvbiBJRS4gTVNJRSBpcyB0cnVseSB0aGUgd2ViJ3MgYm9hdCBhbmNob3IuXG5cdCovXG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG5kaXYuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdGZsb2F0OiByaWdodDtcbn1cblxuLyoqKioqKlxuXHRUZXh0Qm94IHJlbGF0ZWQuXG5cdEV2ZXJ5dGhpbmcgdGhhdCBoYXMgYW4gPGlucHV0PlxuKioqKioqKi9cblxuLmRpaml0VGV4dEJveCB7XG5cdGJvcmRlcjogc29saWQgYmxhY2sgMXB4O1xuXHQjb3ZlcmZsb3c6IGhpZGRlbjsgLyogIzYwMjcsICM2MDY3ICovXG5cdHdpZHRoOiAxNWVtO1x0LyogbmVlZCB0byBzZXQgZGVmYXVsdCBzaXplIG9uIG91dGVyIG5vZGUgc2luY2UgaW5uZXIgbm9kZXMgc2F5IDxpbnB1dCBzdHlsZT1cIndpZHRoOjEwMCVcIj4gYW5kIDx0ZCB3aWR0aD0xMDAlPi4gIHVzZXIgY2FuIG92ZXJyaWRlICovXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kaWppdFRleHRCb3hSZWFkT25seSxcbi5kaWppdFRleHRCb3hEaXNhYmxlZCB7XG5cdGNvbG9yOiBncmF5O1xufVxuLmRqX3NhZmFyaSAuZGlqaXRUZXh0Qm94RGlzYWJsZWQgaW5wdXQge1xuXHRjb2xvcjogI0IwQjBCMDsgLyogYmVjYXVzZSBTYWZhcmkgbGlnaHRlbnMgZGlzYWJsZWQgaW5wdXQvdGV4dGFyZWEgbm8gbWF0dGVyIHdoYXQgY29sb3IgeW91IHNwZWNpZnkgKi9cbn1cbi5kal9zYWZhcmkgdGV4dGFyZWEuZGlqaXRUZXh0QXJlYURpc2FibGVkIHtcblx0Y29sb3I6ICMzMzM7IC8qIGJlY2F1c2UgU2FmYXJpIGxpZ2h0ZW5zIGRpc2FibGVkIGlucHV0L3RleHRhcmVhIG5vIG1hdHRlciB3aGF0IGNvbG9yIHlvdSBzcGVjaWZ5ICovXG59XG4uZGpfZ2Vja28gLmRpaml0VGV4dEJveFJlYWRPbmx5IGlucHV0LmRpaml0SW5wdXRGaWVsZCwgLyogZGlzYWJsZSBhcnJvdyBhbmQgdmFsaWRhdGlvbiBwcmVzZW50YXRpb24gaW5wdXRzIGJ1dCBhbGxvdyByZWFsIGlucHV0IGZvciB0ZXh0IHNlbGVjdGlvbiAqL1xuLmRqX2dlY2tvIC5kaWppdFRleHRCb3hEaXNhYmxlZCBpbnB1dCB7XG5cdC1tb3otdXNlci1pbnB1dDogbm9uZTsgLyogcHJldmVudCBmb2N1cyBvZiBkaXNhYmxlZCB0ZXh0Ym94IGJ1dHRvbnMgKi9cbn1cblxuLmRpaml0UGxhY2VIb2xkZXIge1xuXHQvKiBoaW50IHRleHQgdGhhdCBhcHBlYXJzIGluIGEgdGV4dGJveCB1bnRpbCB1c2VyIHN0YXJ0cyB0eXBpbmcgKi9cblx0Y29sb3I6ICNBQUFBQUE7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdCNmaWx0ZXI6IFwiXCI7IC8qIG1ha2UgdGhpcyBzaG93IHVwIGluIElFNiBhZnRlciB0aGUgcmVuZGVyaW5nIG9mIHRoZSB3aWRnZXQgKi9cblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0cG9pbnRlci1ldmVudHM6IG5vbmU7ICAgLyogc28gY3V0L3Bhc3RlIGNvbnRleHQgbWVudSBzaG93cyB1cCB3aGVuIHJpZ2h0IGNsaWNraW5nICovXG59XG5cbi5kaWppdFRpbWVUZXh0Qm94IHtcblx0d2lkdGg6IDhlbTtcbn1cblxuLyogcnVsZXMgZm9yIHdlYmtpdCB0byBkZWFsIHdpdGggZnV6enkgYmx1ZSBmb2N1cyBib3JkZXIgKi9cbi5kaWppdFRleHRCb3ggaW5wdXQ6Zm9jdXMge1xuXHRvdXRsaW5lOiBub25lO1x0LyogYmx1ZSBmdXp6eSBsaW5lIGxvb2tzIHdyb25nIG9uIGNvbWJvYm94IG9yIHNvbWV0aGluZyB3L3ZhbGlkYXRpb24gaWNvbiBzaG93aW5nICovXG59XG4uZGlqaXRUZXh0Qm94Rm9jdXNlZCB7XG5cdG91dGxpbmU6IDVweCAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG59XG5cbi5kaWppdFNlbGVjdCBpbnB1dCxcbi5kaWppdFRleHRCb3ggaW5wdXQge1xuXHRmbG9hdDogbGVmdDsgLyogbmVlZGVkIGJ5IElFIHRvIHJlbW92ZSBzZWNyZXQgbWFyZ2luICovXG59XG4uZGpfaWU2IGlucHV0LmRpaml0VGV4dEJveCxcbi5kal9pZTYgLmRpaml0VGV4dEJveCBpbnB1dCB7XG5cdGZsb2F0OiBub25lO1xufVxuLmRpaml0SW5wdXRJbm5lciB7XG5cdC8qIGZvciB3aGVuIGFuIDxpbnB1dD4gaXMgZW1iZWRkZWQgaW5zaWRlIGFuIGlubGluZS1ibG9jayA8ZGl2PiB3aXRoIGEgc2l6ZSBhbmQgYm9yZGVyICovXG5cdGJvcmRlcjowICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0d2lkdGg6MTAwJSAhaW1wb3J0YW50O1xuXHQvKiBJRSBkaXNsaWtlcyBob3Jpem9udGFsIHR3ZWFraW5nIGNvbWJpbmVkIHdpdGggd2lkdGg6MTAwJSBzbyBwdW5pc2ggZXZlcnlvbmUgZm9yIGNvbnNpc3RlbmN5ICovXG5cdHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0VGV4dEJveCBpbnB1dCB7XG5cdG1hcmdpbjogMCAhaW1wb3J0YW50O1xufVxuLmRpaml0VmFsaWRhdGlvblRleHRCb3hFcnJvciBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kaWppdFNlbGVjdCBpbnB1dCxcbi5kaWppdFRleHRCb3ggaW5wdXQuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0LyogPGlucHV0PiB1c2VkIHRvIGRpc3BsYXkgYXJyb3cgaWNvbi92YWxpZGF0aW9uIGljb24sIG9yIGluIGFycm93IGNoYXJhY3RlciBpbiBoaWdoIGNvbnRyYXN0IG1vZGUuXG5cdCAqIFRoZSBjc3MgYmVsb3cgaXMgYSB0cmljayB0byBoaWRlIHRoZSBjaGFyYWN0ZXIgaW4gbm9uLWhpZ2gtY29udHJhc3QgbW9kZVxuXHQgKi9cblx0dGV4dC1pbmRlbnQ6IC0yZW0gIWltcG9ydGFudDtcblx0ZGlyZWN0aW9uOiBsdHIgIWltcG9ydGFudDtcblx0dGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcblx0I3RleHQtaW5kZW50OiAwICFpbXBvcnRhbnQ7XG5cdCNsZXR0ZXItc3BhY2luZzogLTVlbSAhaW1wb3J0YW50O1xuXHQjdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDtcbn1cbi5kal9pZSAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWUgLmRpaml0VGV4dEJveCBpbnB1dCxcbi5kal9pZSBpbnB1dC5kaWppdFRleHRCb3gge1xuXHRvdmVyZmxvdy15OiB2aXNpYmxlOyAvKiBpbnB1dHMgbmVlZCBoZWxwIGV4cGFuZGluZyB3aGVuIHBhZGRpbmcgaXMgYWRkZWQgb3IgbGluZS1oZWlnaHQgaXMgYWRqdXN0ZWQgKi9cblx0bGluZS1oZWlnaHQ6IG5vcm1hbDsgLyogc3RyaWN0IG1vZGUgKi9cbn1cbi5kaWppdFNlbGVjdCAuZGlqaXRTZWxlY3RMYWJlbCBzcGFuIHtcblx0bGluZS1oZWlnaHQ6IDEwMCU7XG59XG4uZGpfaWUgLmRpaml0U2VsZWN0IC5kaWppdFNlbGVjdExhYmVsIHtcblx0bGluZS1oZWlnaHQ6IG5vcm1hbDtcbn1cbi5kal9pZTYgLmRpaml0U2VsZWN0IC5kaWppdFNlbGVjdExhYmVsLFxuLmRqX2llNyAuZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwsXG4uZGpfaWU4IC5kaWppdFNlbGVjdCAuZGlqaXRTZWxlY3RMYWJlbCxcbi5kal9pZXF1aXJrcyAuZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwsXG4uZGlqaXRTZWxlY3QgdGQsXG4uZGpfaWU2IC5kaWppdFNlbGVjdCBpbnB1dCxcbi5kal9pZXF1aXJrcyAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWU2IC5kaWppdFNlbGVjdCAuZGlqaXRWYWxpZGF0aW9uQ29udGFpbmVyLFxuLmRqX2llNiAuZGlqaXRUZXh0Qm94IGlucHV0LFxuLmRqX2llNiBpbnB1dC5kaWppdFRleHRCb3gsXG4uZGpfaWVxdWlya3MgLmRpaml0VGV4dEJveCBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kal9pZXF1aXJrcyAuZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0QXJyb3dCdXR0b25Jbm5lcixcbi5kal9pZXF1aXJrcyAuZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0U3Bpbm5lckJ1dHRvbklubmVyLFxuLmRqX2llcXVpcmtzIC5kaWppdFRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRqX2llcXVpcmtzIGlucHV0LmRpaml0VGV4dEJveCB7XG5cdGxpbmUtaGVpZ2h0OiAxMDAlOyAvKiBJRTcgcHJvYmxlbSB3aGVyZSB0aGUgaWNvbiBpcyB2ZXJ0aWNhbGx5IHdheSB0b28gbG93IHcvbyB0aGlzICovXG59XG4uZGpfYTExeSBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kal9hMTF5IGlucHV0LmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdC8qIChpbiBoaWdoIGNvbnRyYXN0IG1vZGUpIHJldmVydCBydWxlcyBmcm9tIGFib3ZlIHNvIGNoYXJhY3RlciBkaXNwbGF5cyAqL1xuXHR0ZXh0LWluZGVudDogMCAhaW1wb3J0YW50O1xuXHR3aWR0aDogMWVtICFpbXBvcnRhbnQ7XG5cdCN0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG5cdGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xufVxuLmRpaml0VmFsaWRhdGlvblRleHRCb3hFcnJvciAuZGlqaXRWYWxpZGF0aW9uQ29udGFpbmVyIHtcblx0ZGlzcGxheTogaW5saW5lO1xuXHRjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi8qIENvbWJvQm94ICYgU3Bpbm5lciAqL1xuXG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGlqaXRDb21ib0JveCAuZGlqaXRBcnJvd0J1dHRvbkNvbnRhaW5lciB7XG5cdC8qIGRpdmlkaW5nIGxpbmUgYmV0d2VlbiBpbnB1dCBhcmVhIGFuZCB1cC9kb3duIGJ1dHRvbihzKSBmb3IgQ29tYm9Cb3ggYW5kIFNwaW5uZXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwIDAgMCAxcHggIWltcG9ydGFudDsgLyogIWltcG9ydGFudCBuZWVkZWQgZHVlIHRvIHdheXdhcmQgXCIudGhlbWUgLmRpaml0QnV0dG9uTm9kZVwiIHJ1bGVzICovXG59XG4uZGpfYTExeSAuZGlqaXRTZWxlY3QgLmRpaml0QXJyb3dCdXR0b25Db250YWluZXIsXG4uZGlqaXRUb29sYmFyIC5kaWppdENvbWJvQm94IC5kaWppdEFycm93QnV0dG9uQ29udGFpbmVyIHtcblx0Lyogb3ZlcnJpZGVzIGFib3ZlIHJ1bGUgcGx1cyBtaXJyb3ItaW1hZ2UgcnVsZSBpbiBkaWppdF9ydGwuY3NzIHRvIGhhdmUgbm8gZGl2aWRlciB3aGVuIENvbWJvQm94IGluIFRvb2xiYXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdENvbWJvQm94TWVudSB7XG5cdC8qIERyb3AgZG93biBtZW51IGlzIGltcGxlbWVudGVkIGFzIDx1bD4gPGxpLz4gPGxpLz4gLi4uIGJ1dCB3ZSBkb24ndCB3YW50IGNpcmNsZXMgYmVmb3JlIGVhY2ggaXRlbSAqL1xuXHRsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QnV0dG9uTm9kZSB7XG5cdC8qIGRpdmlkaW5nIGxpbmUgYmV0d2VlbiBpbnB1dCBhcmVhIGFuZCB1cC9kb3duIGJ1dHRvbihzKSBmb3IgQ29tYm9Cb3ggYW5kIFNwaW5uZXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwO1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdFNwaW5uZXIgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRCdXR0b25Ob2RlIHtcblx0Y2xlYXI6IGJvdGg7IC8qIElFIHdvcmthcm91bmQgKi9cbn1cblxuLmRqX2llIC5kaWppdFRvb2xiYXIgLmRpaml0Q29tYm9Cb3gge1xuXHQvKiBtYWtlIGNvbWJvYm94IGJ1dHRvbnMgYWxpZ24gcHJvcGVybHkgd2l0aCBvdGhlciBidXR0b25zIGluIGEgdG9vbGJhciAqL1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4vKiBTcGlubmVyICovXG5cbi5kaWppdFRleHRCb3ggLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciB7XG5cdHdpZHRoOiAxZW07XG5cdHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uSW5uZXIge1xuXHR3aWR0aDoxZW07XG5cdHZpc2liaWxpdHk6aGlkZGVuICFpbXBvcnRhbnQ7IC8qIGp1c3QgYSBzaXppbmcgZWxlbWVudCAqL1xuXHRvdmVyZmxvdy14OmhpZGRlbjtcbn1cbi5kaWppdENvbWJvQm94IC5kaWppdEJ1dHRvbk5vZGUsXG4uZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItd2lkdGg6IDA7XG59XG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItd2lkdGg6IDBweCAhaW1wb3J0YW50O1xuXHRib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRUZXh0Qm94IC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIGlucHV0IHtcblx0d2lkdGg6IDFlbSAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0bWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsgLyogc2hvdWxkIGF1dG8tY2VudGVyICovXG59XG4uZGpfaWUgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRwYWRkaW5nLWxlZnQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwLjNlbSAhaW1wb3J0YW50O1xuXHRtYXJnaW4tcmlnaHQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdHdpZHRoOiAxLjRlbSAhaW1wb3J0YW50O1xufVxuLmRqX2llNyAuZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIgLmRpaml0SW5wdXRGaWVsZCB7XG5cdHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OyAvKiBtYW51YWxseSBjZW50ZXIgSU5QVVQ6IGNoYXJhY3RlciBpcyAuNWVtIGFuZCB0b3RhbCB3aWR0aCA9IDFlbSAqL1xuXHRwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG5cdHdpZHRoOiAxZW0gIWltcG9ydGFudDtcbn1cbi5kal9pZTYgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRtYXJnaW4tbGVmdDogMC4xZW0gIWltcG9ydGFudDtcblx0bWFyZ2luLXJpZ2h0OiAwLjFlbSAhaW1wb3J0YW50O1xuXHR3aWR0aDogMWVtICFpbXBvcnRhbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xuXHRtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcblx0d2lkdGg6IDJlbSAhaW1wb3J0YW50O1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEFycm93QnV0dG9uIHtcblx0Lyogbm90ZTogLmRpaml0SW5wdXRMYXlvdXRDb250YWluZXIgbWFrZXMgdGhpcyBydWxlIG92ZXJyaWRlIC5kaWppdEFycm93QnV0dG9uIHNldHRpbmdzXG5cdCAqIGZvciBkaWppdC5mb3JtLkJ1dHRvblxuXHQgKi9cblx0cGFkZGluZzogMDtcblx0cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG5cdHJpZ2h0OiAwO1xuXHRmbG9hdDogbm9uZTtcblx0aGVpZ2h0OiA1MCU7XG5cdHdpZHRoOiAxMDAlO1xuXHRib3R0b206IGF1dG87XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiBhdXRvO1xufVxuLmRqX2llcXVpcmtzIC5kaWppdFNwaW5uZXIgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdHdpZHRoOiBhdXRvO1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0RG93bkFycm93QnV0dG9uIHtcblx0dG9wOiA1MCU7XG5cdGJvcmRlci10b3Atd2lkdGg6IDFweCAhaW1wb3J0YW50O1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdFVwQXJyb3dCdXR0b24ge1xuXHQjYm90dG9tOiA1MCU7XHQvKiBvdGhlcndpc2UgKG9uIHNvbWUgbWFjaGluZXMpIHRvcCBhcnJvdyBpY29uIHRvbyBjbG9zZSB0byBzcGxpdHRlciBib3JkZXIgKElFNi83KSAqL1xuXHR0b3A6IDA7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHRtYXJnaW46IGF1dG87XG5cdG92ZXJmbG93LXg6IGhpZGRlbjtcblx0aGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0aGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIgLmRpaml0SW5wdXRGaWVsZCB7XG5cdC1tb3otdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHQtbW96LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciB0b3A7XG5cdC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHQtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciB0b3A7XG5cdC1vLXRyYW5zZm9ybTogc2NhbGUoMC41KTtcblx0LW8tdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIHRvcDtcblx0dHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHR0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDtcblx0cGFkZGluZy10b3A6IDA7XG5cdHBhZGRpbmctYm90dG9tOiAwO1xuXHRwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcblx0cGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xuXHR3aWR0aDogMTAwJTtcblx0dmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLmRqX2llIC5kaWppdFNwaW5uZXIgLmRpaml0QXJyb3dCdXR0b25Jbm5lciAuZGlqaXRJbnB1dEZpZWxkIHtcblx0em9vbTogNTAlOyAvKiBlbXVsYXRlIHRyYW5zZm9ybTogc2NhbGUoMC41KSAqL1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QXJyb3dCdXR0b24ge1xuXHR3aWR0aDogMTAwJTtcbn1cbi5kal9pZXF1aXJrcyAuZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QXJyb3dCdXR0b24ge1xuXHR3aWR0aDogMWVtOyAvKiBtYXRjaGVzIC5kal9hMTF5IC5kaWppdFRleHRCb3ggLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciBydWxlIC0gMTAwJSBpcyB0aGUgd2hvbGUgc2NyZWVuIHdpZHRoIGluIHF1aXJrcyAqL1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHR2ZXJ0aWNhbC1hbGlnbjp0b3A7XG5cdHZpc2liaWxpdHk6IHZpc2libGU7XG59XG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIHtcblx0d2lkdGg6IDFlbTtcbn1cblxuLyoqKipcblx0XHRkaWppdC5mb3JtLkNoZWNrQm94XG4gXHQgJlxuICBcdFx0ZGlqaXQuZm9ybS5SYWRpb0J1dHRvblxuICoqKiovXG5cbi5kaWppdENoZWNrQm94LFxuLmRpaml0UmFkaW8sXG4uZGlqaXRDaGVja0JveElucHV0IHtcblx0cGFkZGluZzogMDtcblx0Ym9yZGVyOiAwO1xuXHR3aWR0aDogMTZweDtcblx0aGVpZ2h0OiAxNnB4O1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciBjZW50ZXI7XG5cdGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRpaml0Q2hlY2tCb3ggaW5wdXQsXG4uZGlqaXRSYWRpbyBpbnB1dCB7XG5cdG1hcmdpbjogMDtcblx0cGFkZGluZzogMDtcblx0ZGlzcGxheTogYmxvY2s7XG59XG5cbi5kaWppdENoZWNrQm94SW5wdXQge1xuXHQvKiBwbGFjZSB0aGUgYWN0dWFsIGlucHV0IG9uIHRvcCwgYnV0IGludmlzaWJsZSAqL1xuXHRvcGFjaXR5OiAwO1xufVxuXG4uZGpfaWUgLmRpaml0Q2hlY2tCb3hJbnB1dCB7XG5cdGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTtcbn1cblxuLmRqX2ExMXkgLmRpaml0Q2hlY2tCb3gsXG4uZGpfYTExeSAuZGlqaXRSYWRpbyB7XG5cdC8qIGluIGExMXkgbW9kZSB3ZSBkaXNwbGF5IHRoZSBuYXRpdmUgY2hlY2tib3ggKG5vdCB0aGUgaWNvbiksIHNvIGRvbid0IHJlc3RyaWN0IHRoZSBzaXplICovXG5cdHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG5cdGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0Q2hlY2tCb3hJbnB1dCB7XG5cdG9wYWNpdHk6IDE7XG5cdGZpbHRlcjogbm9uZTtcblx0d2lkdGg6IGF1dG87XG5cdGhlaWdodDogYXV0bztcbn1cblxuLmRqX2ExMXkgLmRpaml0Rm9jdXNlZExhYmVsIHtcblx0LyogZm9yIGNoZWNrYm94ZXMgb3IgcmFkaW8gYnV0dG9ucyBpbiBoaWdoIGNvbnRyYXN0IG1vZGUsIHVzZSBib3JkZXIgcmF0aGVyIHRoYW4gb3V0bGluZSB0byBpbmRpY2F0ZSBmb2N1cyAob3V0bGluZSBkb2VzIG5vdCB3b3JrIGluIEZGKSovXG5cdGJvcmRlcjogMXB4IGRvdHRlZDtcblx0b3V0bGluZTogMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi8qKioqXG5cdFx0ZGlqaXQuUHJvZ3Jlc3NCYXJcbiAqKioqL1xuXG4uZGlqaXRQcm9ncmVzc0JhciB7XG4gICAgei1pbmRleDogMDsgLyogc28gei1pbmRleCBzZXR0aW5ncyBiZWxvdyBoYXZlIG5vIGVmZmVjdCBvdXRzaWRlIG9mIHRoZSBQcm9ncmVzc0JhciAqL1xufVxuLmRpaml0UHJvZ3Jlc3NCYXJFbXB0eSB7XG5cdC8qIG91dGVyIGNvbnRhaW5lciBhbmQgYmFja2dyb3VuZCBvZiB0aGUgYmFyIHRoYXQncyBub3QgZmluaXNoZWQgeWV0Ki9cblx0cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO1xuXHRib3JkZXI6MXB4IHNvbGlkIGJsYWNrOyBcdC8qIGExMXk6IGJvcmRlciBuZWNlc3NhcnkgZm9yIGhpZ2gtY29udHJhc3QgbW9kZSAqL1xuXHR6LWluZGV4OjA7XHRcdFx0LyogZXN0YWJsaXNoIGEgc3RhY2tpbmcgY29udGV4dCBmb3IgdGhpcyBwcm9ncmVzcyBiYXIgKi9cbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJGdWxsIHtcblx0Lyogb3V0ZXIgY29udGFpbmVyIGZvciBiYWNrZ3JvdW5kIG9mIGJhciB0aGF0IGlzIGZpbmlzaGVkICovXG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHRvdmVyZmxvdzpoaWRkZW47XG5cdHotaW5kZXg6LTE7XG5cdHRvcDowO1xuXHR3aWR0aDoxMDAlO1xufVxuLmRqX2llNiAuZGlqaXRQcm9ncmVzc0JhckZ1bGwge1xuXHRoZWlnaHQ6MS42ZW07XG59XG5cbi5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGlubmVyIGNvbnRhaW5lciBmb3IgZmluaXNoZWQgcG9ydGlvbiAqL1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHR0b3A6MDtcblx0bGVmdDowO1xuXHRib3R0b206MDtcblx0cmlnaHQ6MDtcblx0bWFyZ2luOjA7XG5cdHBhZGRpbmc6MDtcblx0d2lkdGg6IDEwMCU7ICAgIC8qIG5lZWRlZCBmb3IgSUUvcXVpcmtzICovXG5cdGhlaWdodDphdXRvO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiNhYWE7XG5cdGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7XG59XG5cbi5kal9hMTF5IC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGExMXk6ICBUaGUgYm9yZGVyIHByb3ZpZGVzIHZpc2liaWxpdHkgaW4gaGlnaC1jb250cmFzdCBtb2RlICovXG5cdGJvcmRlci13aWR0aDoycHg7XG5cdGJvcmRlci1zdHlsZTpzb2xpZDtcblx0YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4uZGpfaWU2IC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIHdpZHRoOmF1dG8gd29ya3MgaW4gSUU2IHdpdGggcG9zaXRpb246c3RhdGljIGJ1dCBub3QgcG9zaXRpb246YWJzb2x1dGUgKi9cblx0cG9zaXRpb246c3RhdGljO1xuXHQvKiBoZWlnaHQ6YXV0byBvciAxMDAlIGRvZXMgbm90IHdvcmsgaW4gSUU2ICovXG5cdGhlaWdodDoxLjZlbTtcbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJJbmRldGVybWluYXRlIC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGFuaW1hdGVkIGdpZiBmb3IgJ2luZGV0ZXJtaW5hdGUnIG1vZGUgKi9cbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJJbmRldGVybWluYXRlSGlnaENvbnRyYXN0SW1hZ2Uge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi5kal9hMTF5IC5kaWppdFByb2dyZXNzQmFySW5kZXRlcm1pbmF0ZSAuZGlqaXRQcm9ncmVzc0JhckluZGV0ZXJtaW5hdGVIaWdoQ29udHJhc3RJbWFnZSB7XG5cdGRpc3BsYXk6YmxvY2s7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHR0b3A6MDtcblx0Ym90dG9tOjA7XG5cdG1hcmdpbjowO1xuXHRwYWRkaW5nOjA7XG5cdHdpZHRoOjEwMCU7XG5cdGhlaWdodDphdXRvO1xufVxuXG4uZGlqaXRQcm9ncmVzc0JhckxhYmVsIHtcblx0ZGlzcGxheTpibG9jaztcblx0cG9zaXRpb246c3RhdGljO1xuXHR3aWR0aDoxMDAlO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4vKioqKlxuXHRcdGRpaml0LlRvb2x0aXBcbiAqKioqL1xuXG4uZGlqaXRUb29sdGlwIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiAyMDAwO1xuXHRkaXNwbGF5OiBibG9jaztcblx0LyogbWFrZSB2aXNpYmxlIGJ1dCBvZmYgc2NyZWVuICovXG5cdGxlZnQ6IDA7XG5cdHRvcDogLTEwMDAwcHg7XG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4uZGlqaXRUb29sdGlwQ29udGFpbmVyIHtcblx0Ym9yZGVyOiBzb2xpZCBibGFjayAycHg7XG5cdGJhY2tncm91bmQ6ICNiOGI1YjU7XG5cdGNvbG9yOiBibGFjaztcblx0Zm9udC1zaXplOiBzbWFsbDtcbn1cblxuLmRpaml0VG9vbHRpcEZvY3VzTm9kZSB7XG5cdHBhZGRpbmc6IDJweCAycHggMnB4IDJweDtcbn1cblxuLmRpaml0VG9vbHRpcENvbm5lY3RvciB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbi5kal9hMTF5IC5kaWppdFRvb2x0aXBDb25uZWN0b3Ige1xuXHRkaXNwbGF5OiBub25lO1x0Lyogd29uJ3Qgc2hvdyBiL2MgaXQncyBiYWNrZ3JvdW5kLWltYWdlOyBoaWRlIHRvIGF2b2lkIGJvcmRlciBnYXAgKi9cbn1cblxuLmRpaml0VG9vbHRpcERhdGEge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi8qIExheW91dCB3aWRnZXRzLiBUaGlzIGlzIGVzc2VudGlhbCBDU1MgdG8gbWFrZSBsYXlvdXQgd29yayAoaXQgaXNuJ3QgXCJzdHlsaW5nXCIgQ1NTKVxuICAgbWFrZSBzdXJlIHRoYXQgdGhlIHBvc2l0aW9uOmFic29sdXRlIGluIGRpaml0QWxpZ24qIG92ZXJyaWRlcyBvdGhlciBjbGFzc2VzICovXG5cbi5kaWppdExheW91dENvbnRhaW5lciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5kaWppdEFsaWduVG9wLFxuLmRpaml0QWxpZ25Cb3R0b20sXG4uZGlqaXRBbGlnbkxlZnQsXG4uZGlqaXRBbGlnblJpZ2h0IHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5ib2R5IC5kaWppdEFsaWduQ2xpZW50IHsgcG9zaXRpb246IGFic29sdXRlOyB9XG5cbi8qXG4gKiBCb3JkZXJDb250YWluZXJcbiAqXG4gKiAuZGlqaXRCb3JkZXJDb250YWluZXIgaXMgYSBzdHlsaXplZCBsYXlvdXQgd2hlcmUgcGFuZXMgaGF2ZSBib3JkZXIgYW5kIG1hcmdpbi5cbiAqIC5kaWppdEJvcmRlckNvbnRhaW5lck5vR3V0dGVyIGlzIGEgcmF3IGxheW91dC5cbiAqL1xuLmRpaml0Qm9yZGVyQ29udGFpbmVyLCAuZGlqaXRCb3JkZXJDb250YWluZXJOb0d1dHRlciB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuICAgIHotaW5kZXg6IDA7IC8qIHNvIHotaW5kZXggc2V0dGluZ3MgYmVsb3cgaGF2ZSBubyBlZmZlY3Qgb3V0c2lkZSBvZiB0aGUgQm9yZGVyQ29udGFpbmVyICovXG59XG5cbi5kaWppdEJvcmRlckNvbnRhaW5lclBhbmUsXG4uZGlqaXRCb3JkZXJDb250YWluZXJOb0d1dHRlclBhbmUge1xuXHRwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcdC8qICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgcG9zaXRpb246cmVsYXRpdmUgaW4gZGlqaXRUYWJDb250YWluZXIgZXRjLiAqL1xuXHR6LWluZGV4OiAyO1x0XHQvKiBhYm92ZSB0aGUgc3BsaXR0ZXJzIHNvIHRoYXQgb2ZmLWJ5LW9uZSBicm93c2VyIGVycm9ycyBkb24ndCBjb3ZlciB1cCBib3JkZXIgb2YgcGFuZSAqL1xufVxuXG4uZGlqaXRCb3JkZXJDb250YWluZXIgPiAuZGlqaXRUZXh0QXJlYSB7XG5cdC8qIE9uIFNhZmFyaSwgZm9yIFNpbXBsZVRleHRBcmVhIGluc2lkZSBhIEJvcmRlckNvbnRhaW5lcixcblx0XHRkb24ndCB3YW50IHRvIGRpc3BsYXkgdGhlIGdyaXAgdG8gcmVzaXplICovXG5cdHJlc2l6ZTogbm9uZTtcbn1cblxuLmRpaml0R3V0dGVyIHtcblx0LyogZ3V0dGVyIGlzIGp1c3QgYSBwbGFjZSBob2xkZXIgZm9yIGVtcHR5IHNwYWNlIGJldHdlZW4gcGFuZXMgaW4gQm9yZGVyQ29udGFpbmVyICovXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0Zm9udC1zaXplOiAxcHg7XHRcdC8qIG5lZWRlZCBieSBJRTYgZXZlbiB0aG91Z2ggZGl2IGlzIGVtcHR5LCBvdGhlcndpc2UgZ29lcyB0byAxNXB4ICovXG59XG5cbi8qIFNwbGl0Q29udGFpbmVyXG5cblx0J1YnID09IGNvbnRhaW5lciB0aGF0IHNwbGl0cyB2ZXJ0aWNhbGx5ICh1cC9kb3duKVxuXHQnSCcgPSBob3Jpem9udGFsIChsZWZ0L3JpZ2h0KVxuKi9cblxuLmRpaml0U3BsaXR0ZXIge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHotaW5kZXg6IDEwO1x0XHQvKiBhYm92ZSB0aGUgcGFuZXMgc28gdGhhdCBzcGxpdHRlciBmb2N1cyBpcyB2aXNpYmxlIG9uIEZGLCBzZWUgIzc1ODMqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRib3JkZXItY29sb3I6IGdyYXk7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogMDtcbn1cbi5kal9pZSAuZGlqaXRTcGxpdHRlciB7XG5cdHotaW5kZXg6IDE7XHQvKiBiZWhpbmQgdGhlIHBhbmVzIHNvIHRoYXQgcGFuZSBib3JkZXJzIGFyZW4ndCBvYnNjdXJlZCBzZWUgdGVzdF9HdWkuaHRtbC9bMTQzOTJdICovXG59XG5cbi5kaWppdFNwbGl0dGVyQWN0aXZlIHtcblx0ei1pbmRleDogMTEgIWltcG9ydGFudDtcbn1cblxuLmRpaml0U3BsaXR0ZXJDb3ZlciB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHR6LWluZGV4Oi0xO1xuXHR0b3A6MDtcblx0bGVmdDowO1xuXHR3aWR0aDoxMDAlO1xuXHRoZWlnaHQ6MTAwJTtcbn1cblxuLmRpaml0U3BsaXR0ZXJDb3ZlckFjdGl2ZSB7XG5cdHotaW5kZXg6MyAhaW1wb3J0YW50O1xufVxuXG4vKiAjNjk0NTogc3RvcCBtb3VzZSBldmVudHMgKi9cbi5kal9pZSAuZGlqaXRTcGxpdHRlckNvdmVyIHtcblx0YmFja2dyb3VuZDogd2hpdGU7XG5cdG9wYWNpdHk6IDA7XG59XG4uZGpfaWU2IC5kaWppdFNwbGl0dGVyQ292ZXIsXG4uZGpfaWU3IC5kaWppdFNwbGl0dGVyQ292ZXIsXG4uZGpfaWU4IC5kaWppdFNwbGl0dGVyQ292ZXIge1xuXHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7XG59XG5cbi5kaWppdFNwbGl0dGVySCB7XG5cdGhlaWdodDogN3B4O1xuXHRib3JkZXItdG9wOjFweDtcblx0Ym9yZGVyLWJvdHRvbToxcHg7XG5cdGN1cnNvcjogcm93LXJlc2l6ZTtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5kaWppdFNwbGl0dGVyViB7XG5cdHdpZHRoOiA3cHg7XG5cdGJvcmRlci1sZWZ0OjFweDtcblx0Ym9yZGVyLXJpZ2h0OjFweDtcblx0Y3Vyc29yOiBjb2wtcmVzaXplO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0U3BsaXRDb250YWluZXIge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uZGlqaXRTcGxpdFBhbmUge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJILFxuLmRpaml0U3BsaXRDb250YWluZXJTaXplclYge1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0Zm9udC1zaXplOiAxcHg7XG5cdGJhY2tncm91bmQtY29sb3I6IFRocmVlREZhY2U7XG5cdGJvcmRlcjogMXB4IHNvbGlkO1xuXHRib3JkZXItY29sb3I6IFRocmVlREhpZ2hsaWdodCBUaHJlZURTaGFkb3cgVGhyZWVEU2hhZG93IFRocmVlREhpZ2hsaWdodDtcblx0bWFyZ2luOiAwO1xufVxuXG4uZGlqaXRTcGxpdENvbnRhaW5lclNpemVySCAudGh1bWIsIC5kaWppdFNwbGl0dGVyViAuZGlqaXRTcGxpdHRlclRodW1iIHtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0dG9wOjQ5JTtcbn1cblxuLmRpaml0U3BsaXRDb250YWluZXJTaXplclYgLnRodW1iLCAuZGlqaXRTcGxpdHRlckggLmRpaml0U3BsaXR0ZXJUaHVtYiB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHRsZWZ0OjQ5JTtcbn1cblxuLmRpaml0U3BsaXR0ZXJTaGFkb3csXG4uZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplckgsXG4uZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplclYge1xuXHRmb250LXNpemU6IDFweDtcblx0YmFja2dyb3VuZC1jb2xvcjogVGhyZWVEU2hhZG93O1xuXHQtbW96LW9wYWNpdHk6IDAuNTtcblx0b3BhY2l0eTogMC41O1xuXHRmaWx0ZXI6IEFscGhhKE9wYWNpdHk9NTApO1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJILCAuZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplckgge1xuXHRjdXJzb3I6IGNvbC1yZXNpemU7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJWLCAuZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplclYge1xuXHRjdXJzb3I6IHJvdy1yZXNpemU7XG59XG5cbi5kal9hMTF5IC5kaWppdFNwbGl0dGVySCB7XG5cdGJvcmRlci10b3A6MXB4IHNvbGlkICNkM2QzZDMgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2QzZDNkMyAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0U3BsaXR0ZXJWIHtcblx0Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkM2QzZDMgIWltcG9ydGFudDtcblx0Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZDNkM2QzICFpbXBvcnRhbnQ7XG59XG5cbi8qIENvbnRlbnRQYW5lICovXG5cbi5kaWppdENvbnRlbnRQYW5lIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG92ZXJmbG93OiBhdXRvO1x0LyogaWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIChvciBvdmVyZmxvdzpoaWRkZW4pLCB0aGVuIFdpZGdldC5yZXNpemVUbygpIGRvZXNuJ3QgbWFrZSBzZW5zZSBmb3IgQ29udGVudFBhbmUgKi9cblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG4uZGlqaXRDb250ZW50UGFuZVNpbmdsZUNoaWxkIHtcblx0Lypcblx0ICogaWYgdGhlIENvbnRlbnRQYW5lIGhvbGRzIGEgc2luZ2xlIGxheW91dCB3aWRnZXQgY2hpbGQgd2hpY2ggaXMgYmVpbmcgc2l6ZWQgdG8gbWF0Y2ggdGhlIGNvbnRlbnQgcGFuZSxcblx0ICogdGhlbiB0aGUgQ29udGVudFBhbmUgc2hvdWxkIG5ldmVyIGdldCBhIHNjcm9sbGJhciAoYnV0IGl0IGRvZXMgZHVlIHRvIGJyb3dzZXIgYnVncywgc2VlICM5NDQ5XG5cdCAqL1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZGlqaXRDb250ZW50UGFuZUxvYWRpbmcgLmRpaml0SWNvbkxvYWRpbmcsXG4uZGlqaXRDb250ZW50UGFuZUVycm9yIC5kaWppdEljb25FcnJvciB7XG5cdG1hcmdpbi1yaWdodDogOXB4O1xufVxuXG4vKiBUaXRsZVBhbmUgYW5kIEZpZWxkc2V0ICovXG5cbi5kaWppdFRpdGxlUGFuZSB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuLmRpaml0RmllbGRzZXQge1xuXHRib3JkZXI6IDFweCBzb2xpZCBncmF5O1xufVxuLmRpaml0VGl0bGVQYW5lVGl0bGUsIC5kaWppdEZpZWxkc2V0VGl0bGUge1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uZGlqaXRUaXRsZVBhbmVUaXRsZUZpeGVkT3BlbiwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZENsb3NlZCxcbi5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZE9wZW4sIC5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZENsb3NlZCB7XG5cdC8qIFRpdGxlUGFuZSBvciBGaWVsZHNldCB0aGF0IGNhbm5vdCBiZSB0b2dnbGVkICovXG5cdGN1cnNvcjogZGVmYXVsdDtcbn1cbi5kaWppdFRpdGxlUGFuZVRpdGxlICoge1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZUlubmVyLCAuZGlqaXRGaWVsZHNldCAuZGlqaXRBcnJvd05vZGVJbm5lciB7XG5cdC8qIG5vcm1hbGx5LCBoaWRlIGFycm93IHRleHQgaW4gZmF2b3Igb2YgaWNvbiAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRqX2ExMXkgLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZUlubmVyLCAuZGpfYTExeSAuZGlqaXRGaWVsZHNldCAuZGlqaXRBcnJvd05vZGVJbm5lciB7XG5cdC8qIC4uLiBleGNlcHQgaW4gYTExeSBtb2RlLCB0aGVuIHNob3cgdGV4dCBhcnJvdyAqL1xuXHRkaXNwbGF5OiBpbmxpbmU7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XHRcdC8qIGJlY2F1c2UgLSBhbmQgKyBhcmUgZGlmZmVyZW50IHdpZHRocyAqL1xufVxuLmRqX2ExMXkgLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZSwgLmRqX2ExMXkgLmRpaml0RmllbGRzZXQgLmRpaml0QXJyb3dOb2RlIHtcblx0LyogLi4uIGFuZCBoaWRlIGljb24gKFRPRE86IGp1c3QgcG9pbnQgZGlqaXRJY29uIGNsYXNzIG9uIHRoZSBpY29uLCBhbmQgaXQgaGlkZXMgYXV0b21hdGljYWxseSkgKi9cblx0ZGlzcGxheTogbm9uZTtcbn1cbi5kaWppdFRpdGxlUGFuZVRpdGxlRml4ZWRPcGVuIC5kaWppdEFycm93Tm9kZSwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZE9wZW4gLmRpaml0QXJyb3dOb2RlSW5uZXIsXG4uZGlqaXRUaXRsZVBhbmVUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZSwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZENsb3NlZCAuZGlqaXRBcnJvd05vZGVJbm5lcixcbi5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZE9wZW4gLmRpaml0QXJyb3dOb2RlLCAuZGlqaXRGaWVsZHNldFRpdGxlRml4ZWRPcGVuIC5kaWppdEFycm93Tm9kZUlubmVyLFxuLmRpaml0RmllbGRzZXRUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZSwgLmRpaml0RmllbGRzZXRUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZUlubmVyIHtcblx0LyogZG9uJ3Qgc2hvdyB0aGUgb3BlbiBjbG9zZSBpY29uIG9yIHRleHQgYXJyb3c7IGl0IG1ha2VzIHRoZSB1c2VyIHRoaW5rIHRoZSBwYW5lIGlzIGNsb3NhYmxlICovXG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcdC8qICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgYWJvdmUgYTExeSBydWxlcyB0byBzaG93IHRleHQgYXJyb3cgKi9cbn1cblxuLmRqX2llNiAuZGlqaXRUaXRsZVBhbmVDb250ZW50T3V0ZXIsXG4uZGpfaWU2IC5kaWppdFRpdGxlUGFuZSAuZGlqaXRUaXRsZVBhbmVUaXRsZSB7XG5cdC8qIGZvcmNlIGhhc0xheW91dCB0byBlbnN1cmUgYm9yZGVycyBldGMsIHNob3cgdXAgKi9cblx0em9vbTogMTtcbn1cblxuLyogQ29sb3IgUGFsZXR0ZVxuICogU2l6ZXMgZGVzaWduZWQgc28gdGhhdCB0YWJsZSBjZWxsIHBvc2l0aW9ucyBtYXRjaCBpY29ucyBpbiB1bmRlcmx5aW5nIGltYWdlLFxuICogd2hpY2ggYXBwZWFyIGF0IDIweDIwIGludGVydmFscy5cbiAqL1xuXG4uZGlqaXRDb2xvclBhbGV0dGUge1xuXHRib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuXHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUge1xuXHQvKiBUYWJsZSB0aGF0IGhvbGRzIHRoZSBwYWxldHRlIGNlbGxzLCBhbmQgb3ZlcmxheXMgaW1hZ2UgZmlsZSB3aXRoIGNvbG9yIHN3YXRjaGVzLlxuXHQgKiBwYWRkaW5nL21hcmdpbiB0byBhbGlnbiB0YWJsZSB3aXRoIGltYWdlLlxuXHQgKi9cblx0cGFkZGluZzogMnB4IDNweCAzcHggM3B4O1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdG91dGxpbmU6IDA7XG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG59XG4uZGpfaWU2IC5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUsXG4uZGpfaWU3IC5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUsXG4uZGpfaWVxdWlya3MgLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVUYWJsZSB7XG5cdC8qIHVzaW5nIHBhZGRpbmcgYWJvdmUgc28gdGhhdCBmb2N1cyBib3JkZXIgaXNuJ3QgY3V0b2ZmIG9uIG1vei93ZWJraXQsXG5cdCAqIGJ1dCB1c2luZyBtYXJnaW4gb24gSUUgYmVjYXVzZSBwYWRkaW5nIGRvZXNuJ3Qgc2VlbSB0byB3b3JrXG5cdCAqL1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDJweCAzcHggM3B4IDNweDtcbn1cblxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVDZWxsIHtcblx0LyogPHRkPiBpbiB0aGUgPHRhYmxlPiAqL1xuXHRmb250LXNpemU6IDFweDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRiYWNrZ3JvdW5kOiBub25lO1xufVxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVJbWcge1xuXHQvKiBDYWxsZWQgZGlqaXRQYWxldHRlSW1nIGZvciBiYWNrLWNvbXBhdCwgdGhpcyBhY3R1YWxseSB3cmFwcyB0aGUgY29sb3Igc3dhdGNoIHdpdGggYSBib3JkZXIgYW5kIHBhZGRpbmcgKi9cblx0cGFkZGluZzogMXB4O1x0XHQvKiB3aGl0ZSBhcmVhIGJldHdlZW4gZ3JheSBib3JkZXIgYW5kIGNvbG9yIHN3YXRjaCAqL1xuXHRib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuXHRtYXJnaW46IDJweCAxcHg7XG5cdGN1cnNvcjogZGVmYXVsdDtcblx0Zm9udC1zaXplOiAxcHg7XHRcdC8qIHByZXZlbnQgPHNwYW4+IGZyb20gZ2V0dGluZyBiaWdnZXIganVzdCB0byBob2xkIGEgY2hhcmFjdGVyICovXG59XG4uZGpfZ2Vja28gLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVJbWcge1xuXHRwYWRkaW5nLWJvdHRvbTogMDtcdC8qIHdvcmthcm91bmQgcmVuZGVyaW5nIGdsaXRjaCBvbiBGRiwgaXQgYWRkcyBhbiBleHRyYSBwaXhlbCBhdCB0aGUgYm90dG9tICovXG59XG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0Q29sb3JQYWxldHRlU3dhdGNoIHtcblx0LyogdGhlIGFjdHVhbCBwYXJ0IHdoZXJlIHRoZSBjb2xvciBpcyAqL1xuXHR3aWR0aDogMTRweDtcblx0aGVpZ2h0OiAxMnB4O1xufVxuLmRpaml0UGFsZXR0ZVRhYmxlIHRkIHtcblx0XHRwYWRkaW5nOiAwO1xufVxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVDZWxsOmhvdmVyIC5kaWppdFBhbGV0dGVJbWcge1xuXHQvKiBob3ZlcmVkIGNvbG9yIHN3YXRjaCAqL1xuXHRib3JkZXI6IDFweCBzb2xpZCAjMDAwO1xufVxuXG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZUNlbGw6YWN0aXZlIC5kaWppdFBhbGV0dGVJbWcsXG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZVRhYmxlIC5kaWppdFBhbGV0dGVDZWxsU2VsZWN0ZWQgLmRpaml0UGFsZXR0ZUltZyB7XG5cdGJvcmRlcjogMnB4IHNvbGlkICMwMDA7XG5cdG1hcmdpbjogMXB4IDA7XHQvKiByZWR1Y2UgbWFyZ2luIHRvIGNvbXBlbnNhdGUgZm9yIGluY3JlYXNlZCBib3JkZXIgKi9cbn1cblxuXG4uZGpfYTExeSAuZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZVRhYmxlLFxuLmRqX2ExMXkgLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVUYWJsZSAqIHtcblx0LyogdGFibGUgY2VsbHMgYXJlIHRvIGNhdGNoIGV2ZW50cywgYnV0IHRoZSBzd2F0Y2hlcyBhcmUgaW4gdGhlIFBhbGV0dGVJbWcgYmVoaW5kIHRoZSB0YWJsZSAqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4vKiBBY2NvcmRpb25Db250YWluZXIgKi9cblxuLmRpaml0QWNjb3JkaW9uQ29udGFpbmVyIHtcblx0Ym9yZGVyOjFweCBzb2xpZCAjYjdiN2I3O1xuXHRib3JkZXItdG9wOjAgIWltcG9ydGFudDtcbn1cbi5kaWppdEFjY29yZGlvblRpdGxlIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0QWNjb3JkaW9uVGl0bGVTZWxlY3RlZCB7XG5cdGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLyogaW1hZ2VzIG9mZiwgaGlnaC1jb250cmFzdCBtb2RlIHN0eWxlcyAqL1xuLmRpaml0QWNjb3JkaW9uVGl0bGUgLmFycm93VGV4dFVwLFxuLmRpaml0QWNjb3JkaW9uVGl0bGUgLmFycm93VGV4dERvd24ge1xuXHRkaXNwbGF5OiBub25lO1xuXHRmb250LXNpemU6IDAuNjVlbTtcblx0Zm9udC13ZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZSAuYXJyb3dUZXh0VXAsXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZVNlbGVjdGVkIC5hcnJvd1RleHREb3duIHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZVNlbGVjdGVkIC5hcnJvd1RleHRVcCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5kaWppdEFjY29yZGlvbkNoaWxkV3JhcHBlciB7XG5cdC8qIHRoaXMgaXMgdGhlIG5vZGUgd2hvc2UgaGVpZ2h0IGlzIGFkanVzdGVkICovXG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIENhbGVuZGFyICovXG5cbi5kaWppdENhbGVuZGFyQ29udGFpbmVyIHRhYmxlIHtcblx0d2lkdGg6IGF1dG87XHQvKiBpbiBjYXNlIHVzZXIgaGFzIHNwZWNpZmllZCBhIHdpZHRoIGZvciB0aGUgVEFCTEUgbm9kZXMsIHNlZSAjMTA1NTMgKi9cblx0Y2xlYXI6IGJvdGg7ICAgIC8qIGNsZWFyIG1hcmdpbiBjcmVhdGVkIGZvciBsZWZ0L3JpZ2h0IG1vbnRoIGFycm93czsgbmVlZGVkIG9uIElFMTAgZm9yIENhbGVuZGFyTGl0ZSAqL1xufVxuLmRpaml0Q2FsZW5kYXJDb250YWluZXIgdGgsIC5kaWppdENhbGVuZGFyQ29udGFpbmVyIHRkIHtcblx0cGFkZGluZzogMDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmRpaml0Q2FsZW5kYXJNb250aENvbnRhaW5lciB7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5kaWppdENhbGVuZGFyRGVjcmVtZW50QXJyb3cge1xuXHRmbG9hdDogbGVmdDtcbn1cbi5kaWppdENhbGVuZGFySW5jcmVtZW50QXJyb3cge1xuXHRmbG9hdDogcmlnaHQ7XG59XG5cbi5kaWppdENhbGVuZGFyWWVhckxhYmVsIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyAgICAvKiBtYWtlIHN1cmUgcHJldmlvdXMsIGN1cnJlbnQsIGFuZCBuZXh0IHllYXIgYXBwZWFyIG9uIHNhbWUgcm93ICovXG59XG5cbi5kaWppdENhbGVuZGFyTmV4dFllYXIge1xuXHRtYXJnaW46MCAwIDAgMC41NWVtO1xufVxuXG4uZGlqaXRDYWxlbmRhclByZXZpb3VzWWVhciB7XG5cdG1hcmdpbjowIDAuNTVlbSAwIDA7XG59XG5cbi5kaWppdENhbGVuZGFySW5jcmVtZW50Q29udHJvbCB7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kaWppdENhbGVuZGFySW5jcmVtZW50Q29udHJvbCxcbi5kaWppdENhbGVuZGFyRGF0ZVRlbXBsYXRlLFxuLmRpaml0Q2FsZW5kYXJNb250aExhYmVsLFxuLmRpaml0Q2FsZW5kYXJQcmV2aW91c1llYXIsXG4uZGlqaXRDYWxlbmRhck5leHRZZWFyIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGlqaXRDYWxlbmRhckRpc2FibGVkRGF0ZSB7XG5cdGNvbG9yOiBncmF5O1xuXHR0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4uZGlqaXRTcGFjZXIge1xuXHQvKiBkb24ndCBkaXNwbGF5IGl0LCBidXQgbWFrZSBpdCBhZmZlY3QgdGhlIHdpZHRoICovXG4gIFx0cG9zaXRpb246IHJlbGF0aXZlO1xuICBcdGhlaWdodDogMXB4O1xuICBcdG92ZXJmbG93OiBoaWRkZW47XG4gIFx0dmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4vKiBTdHlsaW5nIGZvciBtb250aCBkcm9wIGRvd24gbGlzdCAqL1xuXG4uZGlqaXRDYWxlbmRhck1vbnRoTWVudSAuZGlqaXRDYWxlbmRhck1vbnRoTGFiZWwge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcbn1cblxuLyogTWVudSAqL1xuXG4uZGlqaXRNZW51IHtcblx0Ym9yZGVyOjFweCBzb2xpZCBibGFjaztcblx0YmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtcbn1cbi5kaWppdE1lbnVUYWJsZSB7XG5cdGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtcblx0Ym9yZGVyLXdpZHRoOjA7XG5cdGJhY2tncm91bmQtY29sb3I6d2hpdGU7XG59XG5cbi8qIHdvcmthcm91bmQgZm9yIHdlYmtpdCBidWcgIzg0MjcsIHJlbW92ZSB0aGlzIHdoZW4gaXQgaXMgZml4ZWQgdXBzdHJlYW0gKi9cbi5kal93ZWJraXQgLmRpaml0TWVudVRhYmxlIHRkW2NvbHNwYW49XCIyXCJde1xuXHRib3JkZXItcmlnaHQ6aGlkZGVuO1xufVxuXG4uZGlqaXRNZW51SXRlbSB7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdHBhZGRpbmc6LjFlbSAuMmVtO1xuXHRjdXJzb3I6cG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLypcbk5vIG5lZWQgdG8gc2hvdyBhIGZvY3VzIGJvcmRlciBzaW5jZSBpdCdzIG9idmlvdXMgZnJvbSB0aGUgc2hhZGluZywgYW5kIHRoZXJlJ3MgYSAuZGpfYTExeSAuZGlqaXRNZW51SXRlbVNlbGVjdGVkXG5ydWxlIGJlbG93IHRoYXQgaGFuZGxlcyB0aGUgaGlnaCBjb250cmFzdCBjYXNlIHdoZW4gdGhlcmUncyBubyBzaGFkaW5nLlxuSGlkaW5nIHRoZSBmb2N1cyBib3JkZXIgYWxzbyB3b3JrcyBhcm91bmQgd2Via2l0IGJ1ZyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTI1Nzc5LlxuKi9cbi5kaWppdE1lbnVJdGVtOmZvY3VzIHtcblx0b3V0bGluZTogbm9uZVxufVxuXG4uZGlqaXRNZW51UGFzc2l2ZSAuZGlqaXRNZW51SXRlbUhvdmVyLFxuLmRpaml0TWVudUl0ZW1TZWxlY3RlZCB7XG5cdC8qXG5cdCAqIGRpaml0TWVudUl0ZW1Ib3ZlciByZWZlcnMgdG8gYWN0dWFsIG1vdXNlIG92ZXJcblx0ICogZGlqaXRNZW51SXRlbVNlbGVjdGVkIGlzIHVzZWQgYWZ0ZXIgYSBtZW51IGhhcyBiZWVuIFwiYWN0aXZhdGVkXCIgYnlcblx0ICogY2xpY2tpbmcgaXQsIHRhYmJpbmcgaW50byBpdCwgb3IgYmVpbmcgb3BlbmVkIGZyb20gYSBwYXJlbnQgbWVudSxcblx0ICogYW5kIGRlbm90ZXMgdGhhdCB0aGUgbWVudSBpdGVtIGhhcyBmb2N1cyBvciB0aGF0IGZvY3VzIGlzIG9uIGEgY2hpbGRcblx0ICogbWVudVxuXHQgKi9cblx0YmFja2dyb3VuZC1jb2xvcjpibGFjaztcblx0Y29sb3I6d2hpdGU7XG59XG5cbi5kaWppdE1lbnVJdGVtSWNvbiwgLmRpaml0TWVudUV4cGFuZCB7XG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5cbi5kaWppdE1lbnVJdGVtRGlzYWJsZWQgKiB7XG5cdC8qIGZvciBhIGRpc2FibGVkIG1lbnUgaXRlbSwganVzdCBzZXQgaXQgdG8gbW9zdGx5IHRyYW5zcGFyZW50ICovXG5cdG9wYWNpdHk6MC41O1xuXHRjdXJzb3I6ZGVmYXVsdDtcbn1cbi5kal9pZSAuZGpfYTExeSAuZGlqaXRNZW51SXRlbURpc2FibGVkLFxuLmRqX2llIC5kal9hMTF5IC5kaWppdE1lbnVJdGVtRGlzYWJsZWQgKixcbi5kal9pZSAuZGlqaXRNZW51SXRlbURpc2FibGVkICoge1xuXHRjb2xvcjogZ3JheTtcblx0ZmlsdGVyOiBhbHBoYShvcGFjaXR5PTM1KTtcbn1cblxuLmRpaml0TWVudUl0ZW1MYWJlbCB7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kal9hMTF5IC5kaWppdE1lbnVJdGVtU2VsZWN0ZWQge1xuXHRib3JkZXI6IDFweCBkb3R0ZWQgYmxhY2sgIWltcG9ydGFudDtcdC8qIGZvciAyLjAgdXNlIG91dGxpbmUgaW5zdGVhZCwgdG8gcHJldmVudCBqaXR0ZXIgKi9cbn1cblxuLmRqX2ExMXkgLmRpaml0TWVudUl0ZW1TZWxlY3RlZCAuZGlqaXRNZW51SXRlbUxhYmVsIHtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG59XG4uZGpfaWU4IC5kal9hMTF5IC5kaWppdE1lbnVJdGVtTGFiZWwge1xuXHRwb3NpdGlvbjpzdGF0aWM7XG59XG5cbi5kaWppdE1lbnVFeHBhbmRBMTF5IHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbi5kal9hMTF5IC5kaWppdE1lbnVFeHBhbmRBMTF5IHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGlqaXRNZW51U2VwYXJhdG9yIHRkIHtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xufVxuXG4vKiBzZXBhcmF0b3IgY2FuIGJlIHR3byBwaXhlbHMgLS0gc2V0IGJvcmRlciBvZiBlaXRoZXIgb25lIHRvIDAgdG8gaGF2ZSBvbmx5IG9uZSAqL1xuLmRpaml0TWVudVNlcGFyYXRvclRvcCB7XG5cdGhlaWdodDogNTAlO1xuXHRtYXJnaW46IDA7XG5cdG1hcmdpbi10b3A6M3B4O1xuXHRmb250LXNpemU6IDFweDtcbn1cblxuLmRpaml0TWVudVNlcGFyYXRvckJvdHRvbSB7XG5cdGhlaWdodDogNTAlO1xuXHRtYXJnaW46IDA7XG5cdG1hcmdpbi1ib3R0b206M3B4O1xuXHRmb250LXNpemU6IDFweDtcbn1cblxuLyogQ2hlY2tlZE1lbnVJdGVtIGFuZCBSYWRpb01lbnVJdGVtICovXG4uZGlqaXRNZW51SXRlbUljb25DaGFyIHtcblx0ZGlzcGxheTogbm9uZTtcdFx0LyogZG9uJ3QgZGlzcGxheSBleGNlcHQgaW4gaGlnaCBjb250cmFzdCBtb2RlICovXG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcdC8qIGZvciBoaWdoIGNvbnRyYXN0IG1vZGUgd2hlbiBtZW51aXRlbSBpcyB1bmNoZWNrZWQ6IGxlYXZlIHNwYWNlIGZvciB3aGVuIGl0IGlzIGNoZWNrZWQgKi9cbn1cbi5kal9hMTF5IC5kaWppdE1lbnVJdGVtSWNvbkNoYXIge1xuXHRkaXNwbGF5OiBpbmxpbmU7XHQvKiBkaXNwbGF5IGNoYXJhY3RlciBpbiBoaWdoIGNvbnRyYXN0IG1vZGUsIHNpbmNlIGljb24gZG9lc24ndCBzaG93ICovXG59XG4uZGlqaXRDaGVja2VkTWVudUl0ZW1DaGVja2VkIC5kaWppdE1lbnVJdGVtSWNvbkNoYXIsXG4uZGlqaXRSYWRpb01lbnVJdGVtQ2hlY2tlZCAuZGlqaXRNZW51SXRlbUljb25DaGFyIHtcblx0dmlzaWJpbGl0eTogdmlzaWJsZTsgLyogbWVudWl0ZW0gaXMgY2hlY2tlZCAqL1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdE1lbnVCYXIgLmRpaml0TWVudUl0ZW0ge1xuXHQvKiBzbyBib3R0b20gYm9yZGVyIG9mIE1lbnVCYXIgYXBwZWFycyBvbiBJRTcgaW4gaGlnaC1jb250cmFzdCBtb2RlICovXG5cdG1hcmdpbjogMDtcbn1cblxuLyogU3RhY2tDb250YWluZXIgKi9cblxuLmRpaml0U3RhY2tDb250cm9sbGVyIC5kaWppdFRvZ2dsZUJ1dHRvbkNoZWNrZWQgKiB7XG5cdGN1cnNvcjogZGVmYXVsdDtcdC8qIGJlY2F1c2UgcHJlc3NpbmcgaXQgaGFzIG5vIGVmZmVjdCAqL1xufVxuXG4vKioqXG5UYWJDb250YWluZXJcblxuTWFpbiBjbGFzcyBoaWVyYXJjaHk6XG5cbi5kaWppdFRhYkNvbnRhaW5lciAtIHRoZSB3aG9sZSBUYWJDb250YWluZXJcbiAgIC5kaWppdFRhYkNvbnRyb2xsZXIgLyAuZGlqaXRUYWJMaXN0Q29udGFpbmVyLXRvcCAtIHdyYXBwZXIgZm9yIHRhYiBidXR0b25zLCBzY3JvbGwgYnV0dG9uc1xuXHQgLmRpaml0VGFiTGlzdFdyYXBwZXIgLyAuZGlqaXRUYWJDb250YWluZXJUb3BTdHJpcCAtIG91dGVyIHdyYXBwZXIgZm9yIHRhYiBidXR0b25zIChub3JtYWwgd2lkdGgpXG5cdFx0Lm5vd3JhcFRhYlN0cmlwIC8gLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgLSBpbm5lciB3cmFwcGVyIGZvciB0YWIgYnV0dG9ucyAoNTBLIHdpZHRoKVxuICAgLmRpaml0VGFiUGFuZVdyYXBwZXIgLSB3cmFwcGVyIGZvciBjb250ZW50IHBhbmVzLCBoYXMgYWxsIGJvcmRlcnMgZXhjZXB0IHRoZSBvbmUgYmV0d2VlbiBjb250ZW50IGFuZCB0YWJzXG4qKiovXG5cbi5kaWppdFRhYkNvbnRhaW5lciB7XG4gICAgei1pbmRleDogMDsgLyogc28gei1pbmRleCBzZXR0aW5ncyBiZWxvdyBoYXZlIG5vIGVmZmVjdCBvdXRzaWRlIG9mIHRoZSBUYWJDb250YWluZXIgKi9cbiAgICBvdmVyZmxvdzogdmlzaWJsZTsgLyogcHJldmVudCBvZmYtYnktb25lLXBpeGVsIGVycm9ycyBmcm9tIGhpZGluZyBib3R0b20gYm9yZGVyIChvcHBvc2l0ZSB0YWIgbGFiZWxzKSAqL1xufVxuLmRqX2llNiAuZGlqaXRUYWJDb250YWluZXIge1xuICAgIC8qIHdvcmthcm91bmQgSUU2IHByb2JsZW0gd2hlbiB0YWxsIGNvbnRlbnQgb3ZlcmZsb3dzIFRhYkNvbnRhaW5lciwgc2VlIGVkaXRvci90ZXN0X0Z1bGxTY3JlZW4uaHRtbCAqL1xuICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxufVxuLmRpaml0VGFiQ29udGFpbmVyTm9MYXlvdXQge1xuXHR3aWR0aDogMTAwJTtcdC8qIG90aGVyd2lzZSBTY3JvbGxpbmdUYWJDb250cm9sbGVyIGdvZXMgdG8gNTBLIHBpeGVscyB3aWRlICovXG59XG5cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzLFxuLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMsXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMsXG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIHtcbiAgICB6LWluZGV4OiAxO1xuXHRvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OyAgLyogc28gdGFicyBjYW4gY292ZXIgdXAgYm9yZGVyIGFkamFjZW50IHRvIGNvbnRhaW5lciAqL1xufVxuXG4uZGlqaXRUYWJDb250cm9sbGVyIHtcbiAgICB6LWluZGV4OiAxO1xufVxuLmRpaml0VGFiQ29udGFpbmVyQm90dG9tLWNvbnRhaW5lcixcbi5kaWppdFRhYkNvbnRhaW5lclRvcC1jb250YWluZXIsXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LWNvbnRhaW5lcixcbi5kaWppdFRhYkNvbnRhaW5lclJpZ2h0LWNvbnRhaW5lciB7XG5cdHotaW5kZXg6MDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7XG59XG4ubm93cmFwVGFiU3RyaXAge1xuXHR3aWR0aDogNTAwMDBweDtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0OyAgLyoganVzdCBpbiBjYXNlIGFuY2VzdG9yIGhhcyBub24tc3RhbmRhcmQgc2V0dGluZyAqL1xuICAgIHotaW5kZXg6IDE7XG59XG4uZGlqaXRUYWJMaXN0V3JhcHBlciB7XG5cdG92ZXJmbG93OiBoaWRkZW47XG4gICAgei1pbmRleDogMTtcbn1cblxuLmRqX2ExMXkgLnRhYlN0cmlwQnV0dG9uIGltZyB7XG5cdC8qIGhpZGUgdGhlIGljb25zIChvciByYXRoZXIgdGhlIGVtcHR5IHNwYWNlIHdoZXJlIHRoZXkgbm9ybWFsbHkgYXBwZWFyKSBiZWNhdXNlIHRleHQgd2lsbCBhcHBlYXIgaW5zdGVhZCAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJUb3AtdGFicyB7XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjaztcbn1cbi5kaWppdFRhYkNvbnRhaW5lclRvcC1jb250YWluZXIge1xuXHRib3JkZXItdG9wOiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMge1xuXHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBibGFjaztcblx0ZmxvYXQ6IGxlZnQ7ICAgIC8qIG5lZWRlZCBmb3IgSUU3IFJUTCBtb2RlICovXG59XG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LWNvbnRhaW5lciB7XG5cdGJvcmRlci1sZWZ0OiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJCb3R0b20tdGFicyB7XG5cdGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjaztcbn1cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS1jb250YWluZXIge1xuXHRib3JkZXItYm90dG9tOiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIHtcblx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCBibGFjaztcblx0ZmxvYXQ6IGxlZnQ7ICAgIC8qIG5lZWRlZCBmb3IgSUU3IFJUTCBtb2RlICovXG59XG4uZGlqaXRUYWJDb250YWluZXJSaWdodC1jb250YWluZXIge1xuXHRib3JkZXItcmlnaHQ6IDA7XG59XG5cbmRpdi5kaWppdFRhYkRpc2FibGVkLCAuZGpfaWUgZGl2LmRpaml0VGFiRGlzYWJsZWQge1xuXHRjdXJzb3I6IGF1dG87XG59XG5cbi5kaWppdFRhYiB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRjdXJzb3I6cG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcblx0d2hpdGUtc3BhY2U6bm93cmFwO1xuXHR6LWluZGV4OjM7XG59XG4uZGlqaXRUYWIgKiB7XG5cdC8qIG1ha2UgdGFiIGljb25zIGFuZCBjbG9zZSBpY29uIGxpbmUgdXAgdy90ZXh0ICovXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4uZGlqaXRUYWJDaGVja2VkIHtcblx0Y3Vyc29yOiBkZWZhdWx0O1x0LyogYmVjYXVzZSBjbGlja2luZyB3aWxsIGhhdmUgbm8gZWZmZWN0ICovXG59XG5cbi5kaWppdFRhYkNvbnRhaW5lclRvcC10YWJzIC5kaWppdFRhYiB7XG5cdHRvcDogMXB4O1x0LyogdG8gb3ZlcmxhcCBib3JkZXIgb24gLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgKi9cbn1cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzIC5kaWppdFRhYiB7XG5cdHRvcDogLTFweDtcdC8qIHRvIG92ZXJsYXAgYm9yZGVyIG9uIC5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzICovXG59XG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMgLmRpaml0VGFiIHtcblx0bGVmdDogMXB4O1x0LyogdG8gb3ZlcmxhcCBib3JkZXIgb24gLmRpaml0VGFiQ29udGFpbmVyTGVmdC10YWJzICovXG59XG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIC5kaWppdFRhYiB7XG5cdGxlZnQ6IC0xcHg7XHQvKiB0byBvdmVybGFwIGJvcmRlciBvbiAuZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzICovXG59XG5cblxuLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgLmRpaml0VGFiLFxuLmRpaml0VGFiQ29udGFpbmVyQm90dG9tLXRhYnMgLmRpaml0VGFiIHtcblx0LyogSW5saW5lLWJsb2NrICovXG5cdGRpc3BsYXk6aW5saW5lLWJsb2NrO1x0XHRcdC8qIHdlYmtpdCBhbmQgRkYzICovXG5cdCN6b29tOiAxOyAvKiBzZXQgaGFzTGF5b3V0OnRydWUgdG8gbWltaWMgaW5saW5lLWJsb2NrICovXG5cdCNkaXNwbGF5OmlubGluZTsgLyogZG9uJ3QgdXNlIC5kal9pZSBzaW5jZSB0aGF0IGluY3JlYXNlcyB0aGUgcHJpb3JpdHkgKi9cbn1cblxuLnRhYlN0cmlwQnV0dG9uIHtcblx0ei1pbmRleDogMTI7XG59XG5cbi5kaWppdFRhYkJ1dHRvbkRpc2FibGVkIC50YWJTdHJpcEJ1dHRvbiB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cblxuLmRpaml0VGFiQ2xvc2VCdXR0b24ge1xuXHRtYXJnaW4tbGVmdDogMWVtO1xufVxuXG4uZGlqaXRUYWJDbG9zZVRleHQge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi5kaWppdFRhYiAudGFiTGFiZWwge1xuXHQvKiBtYWtlIHN1cmUgdGFicyB3L2Nsb3NlIGJ1dHRvbiBhbmQgdy9vdXQgY2xvc2UgYnV0dG9uIGFyZSBzYW1lIGhlaWdodCwgZXZlbiB3L3NtYWxsICg8MTVweCkgZm9udC5cblx0ICogYXNzdW1lcyA8PTE1cHggaGVpZ2h0IGZvciBjbG9zZSBidXR0b24gaWNvbi5cblx0ICovXG5cdG1pbi1oZWlnaHQ6IDE1cHg7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5kaWppdE5vSWNvbiB7XG5cdC8qIGFwcGxpZWQgdG8gPGltZz4vPHNwYW4+IG5vZGUgd2hlbiB0aGVyZSBpcyBubyBpY29uIHNwZWNpZmllZCAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRqX2llNiAuZGlqaXRUYWIgLmRpaml0Tm9JY29uIHtcblx0LyogYmVjYXVzZSBtaW4taGVpZ2h0IChvbiAudGFiTGFiZWwsIGFib3ZlKSBkb2Vzbid0IHdvcmsgb24gSUU2ICovXG5cdGRpc3BsYXk6IGlubGluZTtcblx0aGVpZ2h0OiAxNXB4O1xuXHR3aWR0aDogMXB4O1xufVxuXG4vKiBpbWFnZXMgb2ZmLCBoaWdoLWNvbnRyYXN0IG1vZGUgc3R5bGVzICovXG5cbi5kal9hMTF5IC5kaWppdFRhYkNsb3NlQnV0dG9uIHtcblx0YmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuXHR3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmRqX2ExMXkgLmRpaml0VGFiQ2xvc2VUZXh0IHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGlqaXRUYWJQYW5lLFxuLmRpaml0U3RhY2tDb250YWluZXItY2hpbGQsXG4uZGlqaXRBY2NvcmRpb25Db250YWluZXItY2hpbGQge1xuXHQvKiBjaGlsZHJlbiBvZiBUYWJDb250YWluZXIsIFN0YWNrQ29udGFpbmVyLCBhbmQgQWNjb3JkaW9uQ29udGFpbmVyIHNob3VsZG4ndCBoYXZlIGJvcmRlcnNcblx0ICogYi9jIGEgYm9yZGVyIGlzIGFscmVhZHkgdGhlcmUgZnJvbSB0aGUgVGFiQ29udGFpbmVyL1N0YWNrQ29udGFpbmVyL0FjY29yZGlvbkNvbnRhaW5lciBpdHNlbGYuXG5cdCAqL1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBJbmxpbmVFZGl0Qm94ICovXG4uZGlqaXRJbmxpbmVFZGl0Qm94RGlzcGxheU1vZGUge1xuXHRib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcdC8qIHNvIGtleWxpbmUgKGJvcmRlcikgb24gaG92ZXIgY2FuIGFwcGVhciB3aXRob3V0IHNjcmVlbiBqdW1wICovXG5cdGN1cnNvcjogdGV4dDtcbn1cblxuLmRqX2ExMXkgLmRpaml0SW5saW5lRWRpdEJveERpc3BsYXlNb2RlLFxuLmRqX2llNiAuZGlqaXRJbmxpbmVFZGl0Qm94RGlzcGxheU1vZGUge1xuXHQvKiBleGNlcHQgdGhhdCBJRTYgZG9lc24ndCBzdXBwb3J0IHRyYW5zcGFyZW50IGJvcmRlcnMsIG5vciBkb2VzIGhpZ2ggY29udHJhc3QgbW9kZSAqL1xuXHRib3JkZXI6IG5vbmU7XG59XG5cbi5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZUhvdmVyLFxuLmRqX2ExMXkgLmRpaml0SW5saW5lRWRpdEJveERpc3BsYXlNb2RlSG92ZXIsXG4uZGpfaWU2IC5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZUhvdmVyIHtcblx0LyogQW4gSW5saW5lRWRpdEJveCBpbiB2aWV3IG1vZGUgKGNsaWNrIHRoaXMgdG8gZWRpdCB0aGUgdGV4dCkgKi9cblx0YmFja2dyb3VuZC1jb2xvcjogI2UyZWJmMjtcblx0Ym9yZGVyOiBzb2xpZCAxcHggYmxhY2s7XG59XG5cbi5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZURpc2FibGVkIHtcblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKiBUcmVlICovXG4uZGlqaXRUcmVlIHtcblx0b3ZlcmZsb3c6IGF1dG87XHQvKiBmb3Igc2Nyb2xsYmFycyB3aGVuIFRyZWUgaGFzIGEgaGVpZ2h0IHNldHRpbmcsIGFuZCB0byBwcmV2ZW50IHdyYXBwaW5nIGFyb3VuZCBmbG9hdCBlbGVtZW50cywgc2VlICMxMTQ5MSAqL1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGlqaXRUcmVlQ29udGFpbmVyIHtcblx0ZmxvYXQ6IGxlZnQ7XHQvKiBmb3IgY29ycmVjdCBoaWdobGlnaHRpbmcgZHVyaW5nIGhvcml6b250YWwgc2Nyb2xsLCBzZWUgIzE2MTMyICovXG59XG5cbi5kaWppdFRyZWVJbmRlbnQge1xuXHQvKiBhbW91bnQgdG8gaW5kZW50IGVhY2ggdHJlZSBub2RlIChyZWxhdGl2ZSB0byBwYXJlbnQgbm9kZSkgKi9cblx0d2lkdGg6IDE5cHg7XG59XG5cbi5kaWppdFRyZWVSb3csIC5kaWppdFRyZWVDb250ZW50IHtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmRqX2llIC5kaWppdFRyZWVMYWJlbDpmb2N1cyB7XG5cdC8qIHdvcmthcm91bmQgSUU5IGJlaGF2aW9yIHdoZXJlIGRvd24gYXJyb3dpbmcgdGhyb3VnaCBUcmVlTm9kZXMgZG9lc24ndCBzaG93IGZvY3VzIG91dGxpbmUgKi9cblx0b3V0bGluZTogMXB4IGRvdHRlZCBibGFjaztcbn1cblxuLmRpaml0VHJlZVJvdyBpbWcge1xuXHQvKiBtYWtlIHRoZSBleHBhbmRvIGFuZCBmb2xkZXIgaWNvbnMgbGluZSB1cCB3aXRoIHRoZSBsYWJlbCAqL1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uZGlqaXRUcmVlQ29udGVudCB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4uZGlqaXRFeHBhbmRvVGV4dCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5kal9hMTF5IC5kaWppdEV4cGFuZG9UZXh0IHtcblx0ZGlzcGxheTogaW5saW5lO1xuXHRwYWRkaW5nLWxlZnQ6IDEwcHg7XG5cdHBhZGRpbmctcmlnaHQ6IDEwcHg7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogdGhpbjtcblx0Y3Vyc29yOiBwb2ludGVyO1xufVxuXG4uZGlqaXRUcmVlTGFiZWwge1xuXHRtYXJnaW46IDAgNHB4O1xufVxuXG4vKiBEaWFsb2cgKi9cblxuLmRpaml0RGlhbG9nIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiA5OTk7XG5cdG92ZXJmbG93OiBoaWRkZW47XHQvKiBvdmVycmlkZSBvdmVyZmxvdzogYXV0bzsgZnJvbSBDb250ZW50UGFuZSB0byBtYWtlIGRyYWdnaW5nIHNtb290aGVyICovXG59XG5cbi5kaWppdERpYWxvZ1RpdGxlQmFyIHtcblx0Y3Vyc29yOiBtb3ZlO1xufVxuLmRpaml0RGlhbG9nRml4ZWQgLmRpaml0RGlhbG9nVGl0bGVCYXIge1xuXHRjdXJzb3I6ZGVmYXVsdDtcbn1cbi5kaWppdERpYWxvZ0Nsb3NlSWNvbiB7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5kaWppdERpYWxvZ1BhbmVDb250ZW50IHtcblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuLmRpaml0RGlhbG9nVW5kZXJsYXlXcmFwcGVyIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRsZWZ0OiAwO1xuXHR0b3A6IDA7XG5cdHotaW5kZXg6IDk5ODtcblx0ZGlzcGxheTogbm9uZTtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn1cblxuLmRpaml0RGlhbG9nVW5kZXJsYXkge1xuXHRiYWNrZ3JvdW5kOiAjZWVlO1xuXHRvcGFjaXR5OiAwLjU7XG59XG5cbi5kal9pZSAuZGlqaXREaWFsb2dVbmRlcmxheSB7XG5cdGZpbHRlcjogYWxwaGEob3BhY2l0eT01MCk7XG59XG5cbi8qIGltYWdlcyBvZmYsIGhpZ2gtY29udHJhc3QgbW9kZSBzdHlsZXMgKi9cbi5kal9hMTF5IC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGpfYTExeSAuZGlqaXREaWFsb2cge1xuXHRvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdERpYWxvZyAuY2xvc2VUZXh0IHtcblx0ZGlzcGxheTpub25lO1xuXHQvKiBmb3IgdGhlIG9uaG92ZXIgYm9yZGVyIGluIGhpZ2ggY29udHJhc3Qgb24gSUU6ICovXG5cdHBvc2l0aW9uOmFic29sdXRlO1xufVxuXG4uZGpfYTExeSAuZGlqaXREaWFsb2cgLmNsb3NlVGV4dCB7XG5cdGRpc3BsYXk6aW5saW5lO1xufVxuXG4vKiBTbGlkZXIgKi9cblxuLmRpaml0U2xpZGVyTW92ZWFibGUge1xuXHR6LWluZGV4Ojk5O1xuXHRwb3NpdGlvbjphYnNvbHV0ZSAhaW1wb3J0YW50O1xuXHRkaXNwbGF5OmJsb2NrO1xuXHR2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG59XG5cbi5kaWppdFNsaWRlck1vdmVhYmxlSCB7XG5cdHJpZ2h0OjA7XG59XG4uZGlqaXRTbGlkZXJNb3ZlYWJsZVYge1xuXHRyaWdodDo1MCU7XG59XG5cbi5kal9hMTF5IGRpdi5kaWppdFNsaWRlckltYWdlSGFuZGxlLFxuLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRtYXJnaW46MDtcblx0cGFkZGluZzowO1xuXHRwb3NpdGlvbjpyZWxhdGl2ZSAhaW1wb3J0YW50O1xuXHRib3JkZXI6OHB4IHNvbGlkIGdyYXk7XG5cdHdpZHRoOjA7XG5cdGhlaWdodDowO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRqX2ExMXkgLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRmb250LXNpemU6IDA7XG59XG4uZGpfaWU3IC5kaWppdFNsaWRlckltYWdlSGFuZGxlIHtcblx0b3ZlcmZsb3c6IGhpZGRlbjsgLyogSUU3IHdvcmthcm91bmQgdG8gbWFrZSBzbGlkZXIgaGFuZGxlIFZJU0lCTEUgaW4gbm9uLWExMXkgbW9kZSAqL1xufVxuLmRqX2llNyAuZGpfYTExeSAuZGlqaXRTbGlkZXJJbWFnZUhhbmRsZSB7XG5cdG92ZXJmbG93OiB2aXNpYmxlOyAvKiBJRTcgd29ya2Fyb3VuZCB0byBtYWtlIHNsaWRlciBoYW5kbGUgVklTSUJMRSBpbiBhMTF5IG1vZGUgKi9cbn1cbi5kal9hMTF5IC5kaWppdFNsaWRlckZvY3VzZWQgLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRib3JkZXI6NHB4IHNvbGlkICMwMDA7XG5cdGhlaWdodDo4cHg7XG5cdHdpZHRoOjhweDtcbn1cblxuLmRpaml0U2xpZGVySW1hZ2VIYW5kbGVWIHtcblx0dG9wOi04cHg7XG5cdHJpZ2h0OiAtNTAlO1xufVxuXG4uZGlqaXRTbGlkZXJJbWFnZUhhbmRsZUgge1xuXHRsZWZ0OjUwJTtcblx0dG9wOi01cHg7XG5cdHZlcnRpY2FsLWFsaWduOnRvcDtcbn1cblxuLmRpaml0U2xpZGVyQmFyIHtcblx0Ym9yZGVyLXN0eWxlOnNvbGlkO1xuXHRib3JkZXItY29sb3I6YmxhY2s7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmRpaml0U2xpZGVyQmFyQ29udGFpbmVyViB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRoZWlnaHQ6MTAwJTtcblx0ei1pbmRleDoxO1xufVxuXG4uZGlqaXRTbGlkZXJCYXJDb250YWluZXJIIHtcblx0cG9zaXRpb246cmVsYXRpdmU7XG5cdHotaW5kZXg6MTtcbn1cblxuLmRpaml0U2xpZGVyQmFySCB7XG5cdGhlaWdodDo0cHg7XG5cdGJvcmRlci13aWR0aDoxcHggMDtcbn1cblxuLmRpaml0U2xpZGVyQmFyViB7XG5cdHdpZHRoOjRweDtcblx0Ym9yZGVyLXdpZHRoOjAgMXB4O1xufVxuXG4uZGlqaXRTbGlkZXJQcm9ncmVzc0JhciB7XG5cdGJhY2tncm91bmQtY29sb3I6cmVkO1xuXHR6LWluZGV4OjE7XG59XG5cbi5kaWppdFNsaWRlclByb2dyZXNzQmFyViB7XG5cdHBvc2l0aW9uOnN0YXRpYyAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6MDtcblx0dmVydGljYWwtYWxpZ246dG9wO1xuXHR0ZXh0LWFsaWduOmxlZnQ7XG59XG5cbi5kaWppdFNsaWRlclByb2dyZXNzQmFySCB7XG5cdHBvc2l0aW9uOmFic29sdXRlICFpbXBvcnRhbnQ7XG5cdHdpZHRoOjA7XG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0b3ZlcmZsb3c6dmlzaWJsZTtcbn1cblxuLmRpaml0U2xpZGVyUmVtYWluaW5nQmFyIHtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O1xuXHR6LWluZGV4OjE7XG59XG5cbi5kaWppdFNsaWRlclJlbWFpbmluZ0JhclYge1xuXHRoZWlnaHQ6MTAwJTtcblx0dGV4dC1hbGlnbjpsZWZ0O1xufVxuXG4uZGlqaXRTbGlkZXJSZW1haW5pbmdCYXJIIHtcblx0d2lkdGg6MTAwJSAhaW1wb3J0YW50O1xufVxuXG4vKiB0aGUgc2xpZGVyIGJ1bXBlciBpcyB0aGUgc3BhY2UgY29uc3VtZWQgYnkgdGhlIHNsaWRlciBoYW5kbGUgd2hlbiBpdCBoYW5ncyBvdmVyIGFuIGVkZ2UgKi9cbi5kaWppdFNsaWRlckJ1bXBlciB7XG5cdG92ZXJmbG93OmhpZGRlbjtcblx0ei1pbmRleDoxO1xufVxuXG4uZGlqaXRTbGlkZXJCdW1wZXJWIHtcblx0d2lkdGg6NHB4O1xuXHRoZWlnaHQ6OHB4O1xuXHRib3JkZXItd2lkdGg6MCAxcHg7XG59XG5cbi5kaWppdFNsaWRlckJ1bXBlckgge1xuXHR3aWR0aDo4cHg7XG5cdGhlaWdodDo0cHg7XG5cdGJvcmRlci13aWR0aDoxcHggMDtcbn1cblxuLmRpaml0U2xpZGVyQm90dG9tQnVtcGVyLFxuLmRpaml0U2xpZGVyTGVmdEJ1bXBlciB7XG5cdGJhY2tncm91bmQtY29sb3I6cmVkO1xufVxuXG4uZGlqaXRTbGlkZXJUb3BCdW1wZXIsXG4uZGlqaXRTbGlkZXJSaWdodEJ1bXBlciB7XG5cdGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7XG59XG5cbi5kaWppdFNsaWRlckRlY29yYXRpb24ge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvbkMsXG4uZGlqaXRTbGlkZXJEZWNvcmF0aW9uViB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogbmVlZGVkIGZvciBJRStxdWlya3MrUlRMK3ZlcnRpY2FsIChyZW5kZXJpbmcgYnVnKSBidXQgYWRkIGV2ZXJ5d2hlcmUgZm9yIGN1c3RvbSBzdHlsaW5nIGNvbnNpc3RlbmN5IGJ1dCB0aGlzIG1lc3NlcyB1cCBJRSBob3Jpem9udGFsIHNsaWRlcnMgKi9cbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvbkgge1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvblYge1xuXHRoZWlnaHQ6IDEwMCU7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5kaWppdFNsaWRlckJ1dHRvbiB7XG5cdGZvbnQtZmFtaWx5Om1vbm9zcGFjZTtcblx0bWFyZ2luOjA7XG5cdHBhZGRpbmc6MDtcblx0ZGlzcGxheTpibG9jaztcbn1cblxuLmRqX2ExMXkgLmRpaml0U2xpZGVyQnV0dG9uSW5uZXIge1xuXHR2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0U2xpZGVyQnV0dG9uQ29udGFpbmVyIHtcblx0dGV4dC1hbGlnbjpjZW50ZXI7XG5cdGhlaWdodDowO1x0LyogPz8/ICovXG59XG4uZGlqaXRTbGlkZXJCdXR0b25Db250YWluZXIgKiB7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmRpaml0U2xpZGVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRwYWRkaW5nOjA7XG5cdGRpc3BsYXk6YmxvY2s7XG59XG5cbi5kaWppdFJ1bGVDb250YWluZXIge1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0b3ZlcmZsb3c6dmlzaWJsZTtcbn1cblxuLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRoZWlnaHQ6MTAwJTtcblx0bGluZS1oZWlnaHQ6MDtcblx0ZmxvYXQ6bGVmdDtcblx0dGV4dC1hbGlnbjpsZWZ0O1xufVxuXG4uZGpfb3BlcmEgLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRsaW5lLWhlaWdodDoyJTtcbn1cblxuLmRqX2llIC5kaWppdFJ1bGVDb250YWluZXJWIHtcblx0bGluZS1oZWlnaHQ6bm9ybWFsO1xufVxuXG4uZGpfZ2Vja28gLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRtYXJnaW46MCAwIDFweCAwOyAvKiBtb3ppbGxhIGJ1ZyB3b3JrYXJvdW5kIGZvciBmbG9hdDpsZWZ0LGhlaWdodDoxMDAlIGJsb2NrIGVsZW1lbnRzICovXG59XG5cbi5kaWppdFJ1bGVNYXJrIHtcblx0cG9zaXRpb246YWJzb2x1dGU7XG5cdGJvcmRlcjoxcHggc29saWQgYmxhY2s7XG5cdGxpbmUtaGVpZ2h0OjA7XG5cdGhlaWdodDoxMDAlO1xufVxuXG4uZGlqaXRSdWxlTWFya0gge1xuXHR3aWR0aDowO1xuXHRib3JkZXItdG9wLXdpZHRoOjAgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbS13aWR0aDowICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1sZWZ0LXdpZHRoOjAgIWltcG9ydGFudDtcbn1cblxuLmRpaml0UnVsZUxhYmVsQ29udGFpbmVyIHtcblx0cG9zaXRpb246YWJzb2x1dGU7XG59XG5cbi5kaWppdFJ1bGVMYWJlbENvbnRhaW5lckgge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0ZGlzcGxheTppbmxpbmUtYmxvY2s7XG59XG5cbi5kaWppdFJ1bGVMYWJlbEgge1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0bGVmdDotNTAlO1xufVxuXG4uZGlqaXRSdWxlTGFiZWxWIHtcblx0Lyogc28gdGhhdCBsb25nIGxhYmVscyBkb24ndCBvdmVyZmxvdyB0byBtdWx0aXBsZSByb3dzLCBvciBvdmVyd3JpdGUgc2xpZGVyIGl0c2VsZiAqL1xuXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRpaml0UnVsZU1hcmtWIHtcblx0aGVpZ2h0OjA7XG5cdGJvcmRlci1yaWdodC13aWR0aDowICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1ib3R0b20td2lkdGg6MCAhaW1wb3J0YW50O1xuXHRib3JkZXItbGVmdC13aWR0aDowICFpbXBvcnRhbnQ7XG5cdHdpZHRoOjEwMCU7XG5cdGxlZnQ6MDtcbn1cblxuLmRqX2llIC5kaWppdFJ1bGVMYWJlbENvbnRhaW5lclYge1xuXHRtYXJnaW4tdG9wOi0uNTVlbTtcbn1cblxuLmRqX2ExMXkgLmRpaml0U2xpZGVyUmVhZE9ubHksXG4uZGpfYTExeSAuZGlqaXRTbGlkZXJEaXNhYmxlZCB7XG5cdG9wYWNpdHk6MC42O1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdFNsaWRlclJlYWRPbmx5IC5kaWppdFNsaWRlckJhcixcbi5kal9pZSAuZGpfYTExeSAuZGlqaXRTbGlkZXJEaXNhYmxlZCAuZGlqaXRTbGlkZXJCYXIge1xuXHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NDApO1xufVxuXG4vKiArIGFuZCAtIFNsaWRlciBidXR0b25zOiBvdmVycmlkZSB0aGVtZSBzZXR0aW5ncyB0byBkaXNwbGF5IGljb25zICovXG4uZGpfYTExeSAuZGlqaXRTbGlkZXIgLmRpaml0U2xpZGVyQnV0dG9uQ29udGFpbmVyIGRpdiB7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IC8qIG90aGVyd2lzZSBoeXBoZW4gaXMgbGFyZ2VyIGFuZCBtb3JlIHZlcnRpY2FsbHkgY2VudGVyZWQgKi9cblx0Zm9udC1zaXplOiAxZW07XG5cdGxpbmUtaGVpZ2h0OiAxZW07XG5cdGhlaWdodDogYXV0bztcblx0d2lkdGg6IGF1dG87XG5cdG1hcmdpbjogMCA0cHg7XG59XG5cbi8qIEljb24tb25seSBidXR0b25zIChvZnRlbiBpbiB0b29sYmFycykgc3RpbGwgZGlzcGxheSB0aGUgdGV4dCBpbiBoaWdoLWNvbnRyYXN0IG1vZGUgKi9cbi5kal9hMTF5IC5kaWppdEJ1dHRvbkNvbnRlbnRzIC5kaWppdEJ1dHRvblRleHQsXG4uZGpfYTExeSAuZGlqaXRUYWIgLnRhYkxhYmVsIHtcblx0ZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uVGV4dCB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xufVxuXG4vKiBUZXh0QXJlYSwgU2ltcGxlVGV4dEFyZWEgKi9cbi5kaWppdFRleHRBcmVhIHtcblx0d2lkdGg6MTAwJTtcblx0b3ZlcmZsb3cteTogYXV0bztcdC8qIHcvb3V0IHRoaXMgSUUncyBTaW1wbGVUZXh0QXJlYSBnb2VzIHRvIG92ZXJmbG93OiBzY3JvbGwgKi9cbn1cbi5kaWppdFRleHRBcmVhW2NvbHNdIHtcblx0d2lkdGg6YXV0bzsgLyogU2ltcGxlVGV4dEFyZWEgY29scyAqL1xufVxuLmRqX2llIC5kaWppdFRleHRBcmVhQ29scyB7XG5cdHdpZHRoOmF1dG87XG59XG5cbi5kaWppdEV4cGFuZGluZ1RleHRBcmVhIHtcblx0LyogZm9yIGF1dG8gZXhhbmRpbmcgdGV4dGFyZWEgKGNhbGxlZCBUZXh0YXJlYSBjdXJyZW50bHksIHJlbmFtZSBmb3IgMi4wKSBkb24ndCB3YW50IHRvIGRpc3BsYXkgdGhlIGdyaXAgdG8gcmVzaXplICovXG5cdHJlc2l6ZTogbm9uZTtcbn1cblxuXG4vKiBUb29sYmFyXG4gKiBOb3RlIHRoYXQgb3RoZXIgdG9vbGJhciBydWxlcyAoZm9yIG9iamVjdHMgaW4gdG9vbGJhcnMpIGFyZSBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGlzIGZpbGUuXG4gKi9cblxuLmRpaml0VG9vbGJhclNlcGFyYXRvciB7XG5cdGhlaWdodDogMThweDtcblx0d2lkdGg6IDVweDtcblx0cGFkZGluZzogMCAxcHg7XG5cdG1hcmdpbjogMDtcbn1cblxuLyogRWRpdG9yICovXG4uZGlqaXRJRUZpeGVkVG9vbGJhciB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHQvKiB0b3A6MDsgKi9cblx0dG9wOiBleHByZXNzaW9uKGV2YWwoKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8ZG9jdW1lbnQuYm9keSkuc2Nyb2xsVG9wKSk7XG59XG5cbi5kaWppdEVkaXRvciB7XG5cdGRpc3BsYXk6IGJsb2NrO1x0LyogcHJldmVudHMgZ2xpdGNoIG9uIEZGIHdpdGggSW5saW5lRWRpdEJveCwgc2VlICM4NDA0ICovXG59XG5cbi5kaWppdEVkaXRvckRpc2FibGVkLFxuLmRpaml0RWRpdG9yUmVhZE9ubHkge1xuXHRjb2xvcjogZ3JheTtcbn1cblxuLyogVGltZVBpY2tlciAqL1xuXG4uZGlqaXRUaW1lUGlja2VyIHtcblx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG4uZGlqaXRUaW1lUGlja2VySXRlbSB7XG5cdGN1cnNvcjpwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0VGltZVBpY2tlckl0ZW1Ib3ZlciB7XG5cdGJhY2tncm91bmQtY29sb3I6Z3JheTtcblx0Y29sb3I6d2hpdGU7XG59XG4uZGlqaXRUaW1lUGlja2VySXRlbVNlbGVjdGVkIHtcblx0Zm9udC13ZWlnaHQ6Ym9sZDtcblx0Y29sb3I6IzMzMztcblx0YmFja2dyb3VuZC1jb2xvcjojYjdjZGVlO1xufVxuLmRpaml0VGltZVBpY2tlckl0ZW1EaXNhYmxlZCB7XG5cdGNvbG9yOmdyYXk7XG5cdHRleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2g7XG59XG5cbi5kaWppdFRpbWVQaWNrZXJJdGVtSW5uZXIge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0Ym9yZGVyOjA7XG5cdHBhZGRpbmc6MnB4IDhweCAycHggOHB4O1xufVxuXG4uZGlqaXRUaW1lUGlja2VyVGljayxcbi5kaWppdFRpbWVQaWNrZXJNYXJrZXIge1xuXHRib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmF5O1xufVxuXG4uZGlqaXRUaW1lUGlja2VyIC5kaWppdERvd25BcnJvd0J1dHRvbiB7XG5cdGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0VGltZVBpY2tlclRpY2sge1xuXHRjb2xvcjojQ0NDO1xufVxuXG4uZGlqaXRUaW1lUGlja2VyTWFya2VyIHtcblx0Y29sb3I6YmxhY2s7XG5cdGJhY2tncm91bmQtY29sb3I6I0NDQztcbn1cblxuLmRqX2ExMXkgLmRpaml0VGltZVBpY2tlckl0ZW1TZWxlY3RlZCAuZGlqaXRUaW1lUGlja2VySXRlbUlubmVyIHtcblx0Ym9yZGVyOiBzb2xpZCA0cHggYmxhY2s7XG59XG4uZGpfYTExeSAuZGlqaXRUaW1lUGlja2VySXRlbUhvdmVyIC5kaWppdFRpbWVQaWNrZXJJdGVtSW5uZXIge1xuXHRib3JkZXI6IGRhc2hlZCA0cHggYmxhY2s7XG59XG5cblxuLmRpaml0VG9nZ2xlQnV0dG9uSWNvbkNoYXIge1xuXHQvKiBjaGFyYWN0ZXIgKGluc3RlYWQgb2YgaWNvbikgdG8gc2hvdyB0aGF0IFRvZ2dsZUJ1dHRvbiBpcyBjaGVja2VkICovXG5cdGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0VG9nZ2xlQnV0dG9uIC5kaWppdFRvZ2dsZUJ1dHRvbkljb25DaGFyIHtcblx0ZGlzcGxheTppbmxpbmUgIWltcG9ydGFudDtcblx0dmlzaWJpbGl0eTpoaWRkZW47XG59XG4uZGpfaWU2IC5kaWppdFRvZ2dsZUJ1dHRvbkljb25DaGFyLCAuZGpfaWU2IC50YWJTdHJpcEJ1dHRvbiAuZGlqaXRCdXR0b25UZXh0IHtcblx0Zm9udC1mYW1pbHk6IFwiQXJpYWwgVW5pY29kZSBNU1wiO1x0Lyogb3RoZXJ3aXNlIHRoZSBhMTF5IGNoYXJhY3RlciAoY2hlY2ttYXJrLCBhcnJvdywgZXRjLikgYXBwZWFycyBhcyBhIGJveCAqL1xufVxuLmRqX2ExMXkgLmRpaml0VG9nZ2xlQnV0dG9uQ2hlY2tlZCAuZGlqaXRUb2dnbGVCdXR0b25JY29uQ2hhciB7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyAvKiBJbiBoaWdoIGNvbnRyYXN0IG1vZGUsIGRpc3BsYXkgdGhlIGNoZWNrIHN5bWJvbCAqL1xuXHR2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0QXJyb3dCdXR0b25DaGFyIHtcblx0ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRBcnJvd0J1dHRvbkNoYXIge1xuXHRkaXNwbGF5OmlubGluZSAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXREcm9wRG93bkJ1dHRvbiAuZGlqaXRBcnJvd0J1dHRvbklubmVyLFxuLmRqX2ExMXkgLmRpaml0Q29tYm9CdXR0b24gLmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBTZWxlY3QgKi9cbi5kal9hMTF5IC5kaWppdFNlbGVjdCB7XG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGUgIWltcG9ydGFudDtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG59XG4uZGpfaWUgLmRpaml0U2VsZWN0IHtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTsgLyogU2V0IHRoaXMgYmFjayBmb3Igd2hhdCB3ZSBoYWNrIGluIGRpaml0IGlubGluZSAqL1xufVxuLmRqX2llNiAuZGlqaXRTZWxlY3QgLmRpaml0VmFsaWRhdGlvbkNvbnRhaW5lcixcbi5kal9pZTggLmRpaml0U2VsZWN0IC5kaWppdEJ1dHRvblRleHQge1xuXHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLmRqX2llNiAuZGlqaXRUZXh0Qm94IC5kaWppdElucHV0Q29udGFpbmVyLFxuLmRqX2llcXVpcmtzIC5kaWppdFRleHRCb3ggLmRpaml0SW5wdXRDb250YWluZXIsXG4uZGpfaWU2IC5kaWppdFRleHRCb3ggLmRpaml0QXJyb3dCdXR0b25Jbm5lcixcbi5kal9pZTYgLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uSW5uZXIsXG4uZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwge1xuXHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi5kaWppdE51bWJlclRleHRCb3gge1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRkaXJlY3Rpb246IGx0cjtcbn1cblxuLmRpaml0TnVtYmVyVGV4dEJveCAuZGlqaXRJbnB1dElubmVyIHtcblx0dGV4dC1hbGlnbjogaW5oZXJpdDsgLyogaW5wdXQgKi9cbn1cblxuLmRpaml0TnVtYmVyVGV4dEJveCBpbnB1dC5kaWppdElucHV0SW5uZXIsXG4uZGlqaXRDdXJyZW5jeVRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRpaml0U3Bpbm5lciBpbnB1dC5kaWppdElucHV0SW5uZXIge1xuXHR0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLmRqX2llOCAuZGlqaXROdW1iZXJUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXROdW1iZXJUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lcixcbi5kal9pZTggLmRpaml0Q3VycmVuY3lUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXRDdXJyZW5jeVRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRqX2llOCAuZGlqaXRTcGlubmVyIGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXRTcGlubmVyIGlucHV0LmRpaml0SW5wdXRJbm5lciB7XG5cdC8qIHdvcmthcm91bmQgYnVnIHdoZXJlIGNhcmV0IGludmlzaWJsZSBpbiBlbXB0eSB0ZXh0Ym94ZXMgKi9cblx0cGFkZGluZy1yaWdodDogMXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdFRvb2xiYXIgLmRpaml0U2VsZWN0IHtcblx0bWFyZ2luOiAwO1xufVxuLmRqX3dlYmtpdCAuZGlqaXRUb29sYmFyIC5kaWppdFNlbGVjdCB7XG5cdHBhZGRpbmctbGVmdDogMC4zZW07XG59XG4uZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRwYWRkaW5nOiAwO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRib3JkZXItc3R5bGU6IG5vbmUgc29saWQgbm9uZSBub25lO1xuXHRib3JkZXItd2lkdGg6IDFweDtcbn1cbi5kaWppdFNlbGVjdEZpeGVkV2lkdGggLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLmRpaml0U2VsZWN0TWVudSAuZGlqaXRNZW51SXRlbUljb24ge1xuXHQvKiBhdm9pZCBibGFuayBhcmVhIGluIGxlZnQgc2lkZSBvZiBtZW51IChzaW5jZSB3ZSBoYXZlIG5vIGljb25zKSAqL1xuXHRkaXNwbGF5Om5vbmU7XG59XG4uZGpfaWU2IC5kaWppdFNlbGVjdE1lbnUgLmRpaml0TWVudUl0ZW1MYWJlbCxcbi5kal9pZTcgLmRpaml0U2VsZWN0TWVudSAuZGlqaXRNZW51SXRlbUxhYmVsIHtcblx0LyogU2V0IGJhY2sgdG8gc3RhdGljIGR1ZSB0byBidWcgaW4gaWU2L2llNyAtIFNlZSBCdWcgIzk2NTEgKi9cblx0cG9zaXRpb246IHN0YXRpYztcbn1cblxuLyogRml4IHRoZSBiYXNlbGluZSBvZiBvdXIgbGFiZWwgKGZvciBtdWx0aS1zaXplIGZvbnQgZWxlbWVudHMpICovXG4uZGlqaXRTZWxlY3RMYWJlbCAqXG57XG5cdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuLyogU3R5bGluZyBmb3IgdGhlIGN1cnJlbnRseS1zZWxlY3RlZCBvcHRpb24gKHJpY2ggdGV4dCBjYW4gbWVzcyB0aGlzIHVwKSAqL1xuLmRpaml0U2VsZWN0U2VsZWN0ZWRPcHRpb24gKiB7XG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKiBGaXggdGhlIHN0eWxpbmcgb2YgdGhlIGRyb3Bkb3duIG1lbnUgdG8gYmUgbW9yZSBjb21ib2JveC1saWtlICovXG4uZGlqaXRTZWxlY3RNZW51IHtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG59XG5cbi8qIFVzZWQgaW4gY2FzZXMsIHN1Y2ggYXMgRnVsbFNjcmVlbiBwbHVnaW4sIHdoZW4gd2UgbmVlZCB0byBmb3JjZSBzdHVmZiB0byBzdGF0aWMgcG9zaXRpb25pbmcuICovXG4uZGlqaXRGb3JjZVN0YXRpYyB7XG5cdHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDtcbn1cblxuLyoqKiogRGlzYWJsZWQgY3Vyc29yICoqKioqL1xuLmRpaml0UmVhZE9ubHkgKixcbi5kaWppdERpc2FibGVkICosXG4uZGlqaXRSZWFkT25seSxcbi5kaWppdERpc2FibGVkIHtcblx0LyogYSByZWdpb24gdGhlIHVzZXIgd291bGQgYmUgYWJsZSB0byBjbGljayBvbiwgYnV0IGl0J3MgZGlzYWJsZWQgKi9cblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKiBEcmFnIGFuZCBEcm9wICovXG4uZG9qb0RuZEl0ZW0ge1xuICAgIHBhZGRpbmc6IDJweDsgIC8qIHdpbGwgYmUgcmVwbGFjZWQgYnkgYm9yZGVyIGR1cmluZyBkcmFnIG92ZXIgKGRvam9EbmRJdGVtQmVmb3JlLCBkb2pvRG5kSXRlbUFmdGVyKSAqL1xuXG5cdC8qIFByZXZlbnQgbWFnbmlmeWluZy1nbGFzcyB0ZXh0IHNlbGVjdGlvbiBpY29uIHRvIGFwcGVhciBvbiBtb2JpbGUgd2Via2l0IGFzIGl0IGNhdXNlcyBhIHRvdWNob3V0IGV2ZW50ICovXG5cdC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcblx0LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgLyogRGlzYWJsZSBzZWxlY3Rpb24vQ29weSBvZiBVSVdlYlZpZXcgKi9cbn1cbi5kb2pvRG5kSG9yaXpvbnRhbCAuZG9qb0RuZEl0ZW0ge1xuICAgIC8qIG1ha2UgY29udGVudHMgb2YgaG9yaXpvbnRhbCBjb250YWluZXIgYmUgc2lkZSBieSBzaWRlLCByYXRoZXIgdGhhbiB2ZXJ0aWNhbCAqL1xuICAgICNkaXNwbGF5OiBpbmxpbmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZG9qb0RuZEl0ZW1CZWZvcmUsXG4uZG9qb0RuZEl0ZW1BZnRlciB7XG5cdGJvcmRlcjogMHB4IHNvbGlkICMzNjk7XG59XG4uZG9qb0RuZEl0ZW1CZWZvcmUge1xuICAgIGJvcmRlci13aWR0aDogMnB4IDAgMCAwO1xuICAgIHBhZGRpbmc6IDAgMnB4IDJweCAycHg7XG59XG4uZG9qb0RuZEl0ZW1BZnRlciB7XG4gICAgYm9yZGVyLXdpZHRoOiAwIDAgMnB4IDA7XG4gICAgcGFkZGluZzogMnB4IDJweCAwIDJweDtcbn1cbi5kb2pvRG5kSG9yaXpvbnRhbCAuZG9qb0RuZEl0ZW1CZWZvcmUge1xuICAgIGJvcmRlci13aWR0aDogMCAwIDAgMnB4O1xuICAgIHBhZGRpbmc6IDJweCAycHggMnB4IDA7XG59XG4uZG9qb0RuZEhvcml6b250YWwgLmRvam9EbmRJdGVtQWZ0ZXIge1xuICAgIGJvcmRlci13aWR0aDogMCAycHggMCAwO1xuICAgIHBhZGRpbmc6IDJweCAwIDJweCAycHg7XG59XG5cbi5kb2pvRG5kSXRlbU92ZXIge1xuXHRjdXJzb3I6cG9pbnRlcjtcbn1cbi5kal9nZWNrbyAuZGlqaXRBcnJvd0J1dHRvbklubmVyIElOUFVULFxuLmRqX2dlY2tvIElOUFVULmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdC1tb3otdXNlci1mb2N1czppZ25vcmU7XG59XG4uZGlqaXRGb2N1c2VkIC5kaWppdE1lbnVJdGVtU2hvcnRjdXRLZXkge1xuXHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbiIsIi8qIERpaml0IGN1c3RvbSBzdHlsaW5nICovXG4uZGlqaXRCb3JkZXJDb250YWluZXIge1xuICAgIGhlaWdodDogMzUwcHg7XG59XG4uZGlqaXRUb29sdGlwQ29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xufVxuLmRpaml0Q29udGVudFBhbmUge1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7IC8qIFdpZGdldHMgbGlrZSB0aGUgZGF0YSBncmlkIHBhc3MgdGhlaXIgc2Nyb2xsXG4gICAgb2Zmc2V0IHRvIHRoZSBwYXJlbnQgaWYgdGhlcmUgaXMgbm90IGVub3VnaCByb29tIHRvIGRpc3BsYXkgYSBzY3JvbGwgYmFyXG4gICAgaW4gdGhlIHdpZGdldCBpdHNlbGYsIHNvIGRvIG5vdCBoaWRlIHRoZSBvdmVyZmxvdy4gKi9cbn1cblxuLyogR2xvYmFsIEJvb3RzdHJhcCBjaGFuZ2VzICovXG5cbi8qIENsaWVudCBkZWZhdWx0cyBhbmQgaGVscGVycyAqL1xuLm14LWRhdGF2aWV3LWNvbnRlbnQsIC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcjpub3QoLm14LXNjcm9sbGNvbnRhaW5lci1uZXN0ZWQpLCAubXgtdGFiY29udGFpbmVyLWNvbnRlbnQsIC5teC1ncmlkLWNvbnRlbnQge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cbmh0bWwsIGJvZHksICNjb250ZW50IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG4jY29udGVudCA+IC5teC1wYWdlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xufVxuXG4ubXgtbGVmdC1hbGlnbmVkIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LXJpZ2h0LWFsaWduZWQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuLm14LWNlbnRlci1hbGlnbmVkIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5teC10YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtdGFibGUgdGgsXG4ubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLm14LXRhYmxlIHRoLm5vcGFkZGluZyxcbi5teC10YWJsZSB0ZC5ub3BhZGRpbmcge1xuXHRwYWRkaW5nOiAwO1xufVxuXG4ubXgtb2Zmc2NyZWVuIHtcbiAgICAvKiBXaGVuIHBvc2l0aW9uIHJlbGF0aXZlIGlzIG5vdCBzZXQgSUUgZG9lc24ndCBwcm9wZXJseSByZW5kZXIgd2hlbiB0aGlzIGNsYXNzIGlzIHJlbW92ZWRcbiAgICAgKiB3aXRoIHRoZSBlZmZlY3QgdGhhdCBlbGVtZW50cyBhcmUgbm90IGRpc3BsYXllZCBvciBhcmUgbm90IGNsaWNrYWJsZS5cbiAgICAqL1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLm14LWllLWV2ZW50LXNoaWVsZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAtMTtcbn1cblxuLm14LXN3aXBlLW5hdmlnYXRpb24tcHJvZ3Jlc3Mge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBoZWlnaHQ6IDU0cHg7XG4gICAgd2lkdGg6IDU0cHg7XG4gICAgdG9wOiBjYWxjKDUwJSAtIDI3cHgpO1xuICAgIGxlZnQ6IGNhbGMoNTAlIC0gMjdweCk7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaE5nQTJBUE1BQVAvLy93QUFBSGg0ZUJ3Y0hBNE9EdGpZMkZSVVZOemMzTVRFeEVoSVNJcUtpZ0FBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQWtLQUFBQUlmNGFRM0psWVhSbFpDQjNhWFJvSUdGcVlYaHNiMkZrTG1sdVptOEFJZjhMVGtWVVUwTkJVRVV5TGpBREFRQUFBQ3dBQUFBQU5nQTJBQUFFeXhESVNhdTlPT3ZOdS85Z0tJNWt5U0VKUVNTSTZVcUtLaFBLV3lMejNOcGltcXNKbnVnM0U0YUlNaVBJOXdzcVBUamlUbGt3cUF3RlRDeFhleFlHczBIMmdnSk9MWUxCUURDeTVnd213WXg5SkpyQXNzSFFYc0tyOUNGdU0zQWxjakowSUFkK0JBTUhMbWxySkFkdUJvNVBsNWlabXB1Y25aNmZjV3FJbUpDamFIT1poaXFtRkl1QWw2NFpzWml6RjZvRXJFSzN1Uk9sbTc2Z3djTER4TVhHeDhYQWo2SWt1NCtvSXJVazBoL1UwV0Vqem5IUUlzcWhrY2pCM3NuY3hkYkM1K0xseWN6aDdrOFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRNRU1oSnE3MDQ2ODI3LzJBb2ptUnBubVZoRUlSUm9HY3hzT3p3d3VSS3N3Wk83anZmQ0VnVGluUzduaEYwbU5FR2h3c2l3VW9nbHBTRHpoQzFLSWlLa1dBd0VKZ1FSTllWSk5pWlNkUjBJdVNzbGRKRlVKMHd1T01KSVcwMGJ5TnhSSE9CWklRamFHbHJXQnhmUUdHUUhsTlZqNVdhbTV5ZG5wOUxZMldib29zV2dpeW1RcWdFcWhON2ZaQ3dHYk95TzdFWHJLNDR1aHFscElxZ3dzUEV4Y2JIeU1lL0tNc2l2U2JQZExjbnRkSlAxTlBPYmlmUmlhUE13Y25DemNyYnlOWEc2TVhkeHVUaTd6NFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRPRU1oSnE3MDQ2ODI3LzJBb2ptUnBubWlxQXNJd0NLc3BFRFFCeCtOUUV3T2U3ejFmYUZhN0NVR3QxMUZZTU5BTUJWTFNTQ3JvYW9Qb2NFY1ZPWGNFZytoS0M1TEF0VEhRaEthSmlMUnU2THNUdjEzeTBJSE1PeXc5QjE4R2ZuK0Zob2VJaVlvWkNBazBDUWlMRmdwb0NobFRSd2h0QkpFV2NEWkNqbTBKRjN4bU1adHVGcVpDcVFRWG4za29vbWlrc0hpWm01MlNBSlJnbHJ3VGpZKzd3Y2JIeU1uS0U1Z296VzljSjdFL1dDZXNhdFVtMTF0RjB0RWp6eks0eTRuaHh0UEkyOGJxd2VqSTV1VHhKaEVBSWZrRUNRb0FBQUFzQUFBQUFEWUFOZ0FBQk1zUXlFbXJ2VGpyemJ2L1lDaU9aR21lYUtvQ3dqQUlxeWtRTkFISDQxQVRBNTd2UFY5b1Zyc0pRYTNYY1lsS0dtV3VKM0luRlJGcDFZNnVGaXh0YVYzUWwzY2FoejlYMnltZDdUaFRiNlo4VHEvYjcvaTh2R0NnR1FvYWNVSUZab0FYYkVkOU93UUdHR1pIaXpXT1FKQ1JCQmlJUW9vN2paaFJTd2RtQjNvVUI0b0dvNlNxcTZ5dE1RZ0pOQWtJckFxUkNpT0NJd2lXQkxSVFJTV3hsZ2toanlTOU5NYVV5TWxEVk1LOXhVT2ZKYnlXdjNxMmk3aEx1aFd3c3RsQ21hdkg1c3lyNWVyVnJ1NDRFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWlaY2dVR05BWUZKSk1pQldhZ1E0TWxuVHNFQmlLTElxczFya0Ftc1RSV3FDU3FPNjFXa1JrSUNUUUpDQmNIWmdkSENyRUt4cW9HeVVJSXRnVEZlc0syQ1h2VXQzcmNCSHZZc2RwNjA3Yldlc3VyelpYQncrZ2lFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWdTQ0FrMENRaVdDanMwQ3BRSW9qV2ZKWk1kbktjRUNhcURJSzQxWGtBaHREUzJYQ0d0cDdBa2p4Nm1ycW5Ca1NLaG9xUVhCUVkwQmdWTG01M0dGUVZtMHBUUG9nYVZ0Tit1bGR3NzNwUUhaZ2VXQjl3RzZwa29FUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2dktVU0Nsa0RnTFFvN05BcC9Fd2lDTlg1Q2NSWjdpQVFKaTFRWGp6VkNacFNWQkpkQUY0NklrVDVzRjRlUGlxSlJHWUdDaElXR2puMnVzck8wdFhZRkJqUUdCYlFGWnJ4UVNpSzVnZ1l5a3lHVkpwakpqOHVkSWNRN3hpV2pJUWRtQjJ1cEl3ZkVCdHEySG95ejFyUE01OURseUxUazR1OHBFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3a1JDVm9Db1dtOWhCTEZqcWFBZGhEVEdyUGtOSDZTV1VLQ3UvTjJ3cldTcmhiOG9HbHFZQWljSFpPSU5ETUhHOTdlWFhvZFVsTlZWbGRnUzRhS2k0eU5qbzhGQmpRR0JZOFhCV3MwQTVWUVhSbVNVd2FkWlJob1VKazhwV0duY2hlZ082SkNlRFlZQjZnREIxYWVHUWVnQnJtV3djTER4TVhHeDF5QUtic2lzNEVnemo5c0o3ZlNtdFN0UTZReTI4M0tLTXpJamVIRTBjYlY1OW5sM2NYazR1OG9FUUE3KTtcbn1cblxuIiwiLyogQmFjYXVzZSB3ZSB1c2UgY2hlY2tib3hlcyB3aXRob3V0IGxhYmVscywgYWxpZ24gdGhlbSB3aXRoIG90aGVyIHdpZGdldHMuICovXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgIG1hcmdpbjogOXB4IDA7XG59XG5cbi5teC1jaGVja2JveCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG59XG5cbi5mb3JtLXZlcnRpY2FsIC5mb3JtLWdyb3VwLm14LWNoZWNrYm94IGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5mb3JtLXZlcnRpY2FsIC5mb3JtLWdyb3VwLm14LWNoZWNrYm94LmxhYmVsLWFmdGVyIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLm5vLWNvbHVtbnMge1xuICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xufVxuXG4ubXgtcmFkaW9idXR0b25zLmlubGluZSAucmFkaW8ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG59XG5cbi5teC1yYWRpb2J1dHRvbnMgLnJhZGlvIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgLyogUmVzZXQgYm9vdHN0cmFwIHJ1bGVzICovXG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLm14LXJhZGlvYnV0dG9ucyAucmFkaW8gbGFiZWwge1xuICAgIC8qIFJlc2V0IGJvb3RzdHJhcCBydWxlcyAqL1xuICAgIHBhZGRpbmctbGVmdDogMDtcbn1cblxuLmFsZXJ0IHtcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XG59XG5cbi5teC1jb21wb3VuZC1jb250cm9sIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xufVxuXG4ubXgtY29tcG91bmQtY29udHJvbCBidXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG59XG5cbltkaXI9XCJydGxcIl0gLm14LWNvbXBvdW5kLWNvbnRyb2wgYnV0dG9uIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbiIsIi5teC10b29sdGlwIHtcbiAgICBtYXJnaW46IDEwcHg7XG59XG4ubXgtdG9vbHRpcC1jb250ZW50IHtcbiAgICB3aWR0aDogNDAwcHg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbn1cbi5teC10b29sdGlwLXByZXBhcmUge1xuICAgIGhlaWdodDogMjRweDtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEdBQVlBTVFkQUtYWjhuZkY2NFRMN1F1WDNGZTQ1emFxNGhPYjNmTDYvZnI5L3JyaTlkWHQrWnJVOEN5bTRVbXk1Y0hsOXVQeisySzg2T2oxL056dytyRGQ5TTNxK0pEUTcyckE2aU9pMyszNC9FQ3U0OGpvOXgyZjNnV1YyLy8vL3dBQUFBQUFBQ0gvQzA1RlZGTkRRVkJGTWk0d0F3RUFBQUFoL3d0WVRWQWdSR0YwWVZoTlVEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVFF3SURjNUxqRTJNRFExTVN3Z01qQXhOeTh3TlM4d05pMHdNVG93T0RveU1TQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRnZ0tFMWhZMmx1ZEc5emFDa2lJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZSVUpGTmtVNE5FWkNORVZETVRGRk9EazNNREJCTlVVMVJVTTRRamczUVRVaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlJVSkZOa1U0TlRCQ05FVkRNVEZGT0RrM01EQkJOVVUxUlVNNFFqZzNRVFVpUGlBOGVHMXdUVTA2UkdWeWFYWmxaRVp5YjIwZ2MzUlNaV1k2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRwRlFrVTJSVGcwUkVJMFJVTXhNVVU0T1Rjd01FRTFSVFZGUXpoQ09EZEJOU0lnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBGUWtVMlJUZzBSVUkwUlVNeE1VVTRPVGN3TUVFMVJUVkZRemhDT0RkQk5TSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QZ0gvL3YzOCsvcjUrUGYyOWZUejh2SHc3Kzd0N092cTZlam41dVhrNCtMaDROL2UzZHpiMnRuWTE5YlYxTlBTMGREUHpzM015OHJKeU1mR3hjVER3c0hBdjc2OXZMdTZ1YmkzdHJXMHM3S3hzSyt1cmF5cnFxbW9wNmFscEtPaW9hQ2ZucDJjbTVxWm1KZVdsWlNUa3BHUWo0Nk5qSXVLaVlpSGhvV0VnNEtCZ0g5K2ZYeDdlbmw0ZDNaMWRITnljWEJ2Ym0xc2EycHBhR2RtWldSalltRmdYMTVkWEZ0YVdWaFhWbFZVVTFKUlVFOU9UVXhMU2tsSVIwWkZSRU5DUVVBL1BqMDhPem81T0RjMk5UUXpNakV3THk0dExDc3FLU2duSmlVa0l5SWhJQjhlSFJ3Ykdoa1lGeFlWRkJNU0VSQVBEZzBNQ3dvSkNBY0dCUVFEQWdFQUFDSDVCQVVFQUIwQUxBQUFBQUFZQUJnQUFBVWNZQ2VPWkdtZWFLcXViT3UrY0N6UGRHM2ZlSzd2Zk8vL3dPQXJCQUFoK1FRRkJBQWRBQ3dBQUFBQUFRQUJBQUFGQTJBWEFnQWgrUVFGQkFBZEFDd1VBQXdBQVFBQ0FBQUZBeURUaEFBaCtRUUZCQUFkQUN3VEFBc0FBZ0FHQUFBRkMyQVhkRnhuZE1UUU1WMElBQ0g1QkFVRUFCMEFMQkVBQ3dBRUFBZ0FBQVVSWUNjMllpbHlvcldkVm1jTnA4aTBYUWdBSWZrRUJRUUFIUUFzRHdBT0FBWUFCZ0FBQlE5Z0ozYUJNWjRqaDQ0V0I0bkZjSVlBSWZrRUNRUUFIUUFzRFFBUEFBZ0FCZ0FBQlJGZ0o0NGRSSGJCcVlvcEdRd2NPUmhxQ0FBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRkxXQW5qbVJwbm1pcXJtenJ2bkFzejNSdDMzaXVrOEpnRHdRYlIyaWhCVGlOV1c4WTR6aDlHaGxnUnkyRkFBQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZNMkFuam1ScG5taXFybXpydm5Bc3ozUnQzMmh6YzN0U0M3emFZT2VvY1NBMFlNWlZJUWtHd1JhUVE2VjJpaklBYnFzS0FRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZObUFuam1ScG5taXFybXpydm5Bc3ozUnQzMmh6Yy90VVY3eWFJV01MMGppRVZRVUZMS3dDSEVPcFlqQ3lNcHlzbGloYjRMNnJFQUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGT21BbmptUnBubWlxcm16cnZuQXN6M1J0MzJoemN6dFFWN3phcG1BTG1vQXNqZzdGTUI0NWpGV0RzeWxWTnM1VmdjUHRFbU8rQ202c0NnRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCVDlnSjQ1a2FaNW9xcTVzNjc1d0xNOTBiZDhvY1hPQ3plMm14c2ExWVp4K0xRN2cxRUNxT0prVWc3TkljWXlxNXJDMGdicW1uSENZc1lRdGU3aDBLZ1FBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQlVSZ0o0NWthWjVvcXE1czY3NXdMTTkwYmQ4b1lRWXdKNVNjbmluNElwSVlGOWNsV1ZvWVY1ekZLZk5FY1RLcFN4WElURkc3SXkyMnhlQ1l6eGNwVFBxajRONm9FQUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGU21BbmptUnBubWlxcm16cnZuQXN6M1ROYm5iQXdZUzV2NXdBcWZKekZVZEhWckt6WWJnWU9OK2t4YW1jQ2dQV29KRGFaRk9EYUtyQWNaWVlIRzVydzJtN04xWllSUmkzMlZjaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVlBZQ2VPWkdtZWFLcXViT3UrY0N6UDVVYlFJb2QzZ3I3N3JodkpBbXh4TEtVaVM5bmhURjVNQThQRk1KaDZMbzdneEJpd0JsUFV4cHNhYkZZTVRwaVVYcXNFQm81OGJ0akN0aGI3YnI4S0FRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZVMkFuam1ScG5taXFybXpydmpETFhERXBjRFZwWlBtSTk1MGJVUFJ6UVVxUVlvdHpKQ2xaejhsenhabVVEQVZYd1hDYW9yeWRDM2Rsb0tFTTQzTWFkZUZrU3dXT2VSVXdjTzU0UXlBbU9BcUdnQzBoQUNINUJBVUVBQjBBTEFBQUFBQVlBQmdBQUFWWFlDZU9aR21lYUtxdWJMdHVsbnNhaG14dXRVMEduRjRPRFIrcEp4VHhpaUpDemhYNzJRYUVIZEUxSFZWWkhNQXY0OG9NVE1jV0ozRENzUXliMUdBNSs2bzJIRzRwdzBtekFnTU9aNURmazIwQlVYOUloQzBoQUNINUJBa0VBQjBBTEFJQUF3QVVBQk1BQUFVL1lDZUsxdENNYUpweWhPcU93L2JPOUd6VmM0dnY5YzJuc2w5QVpQaDFpajZqY3JRUW5YYlBEc1E0SFFWcFYxUld0VTFGUjE5WDlWZ1VqV20rWkNvRUFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVmJZQ2VPWkdtZWFLcU9GckdpeE1CeHpHc2FuR3VidzdhZkJ0K3ZST0FNVGJsanlhaGtNWnVkaG5BWEtFbUhtOFp5K0JRdHVpL09ZcWw3RlUvZ1ZQSTJUVzBNcVo1cU0xamh5cU1pM0R6amJEWjllRFlRRFZwalVJZy9JUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGWUdBbmptUnBubWlxaWxXWFpjUnFFaHczWE5jZ2t3WUg3U2ZPQlhneURJa2xHdExrVzVZNFRoSkJGeFZsamtCQjZZcThaRXBVWUpnRkpYSmFwT1lPVXBhMlY1eVl5U2k3R0ZKQzFlVmRWSlBZZHpJME5qZ0ROWEpFQkYrSVZZMUFJUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGWldBbmptUnBubWlxaWtKWEZNUnFOaHhuTUlWUngvTEFXYWFBck1OaERGRUQ0M0hHV1o1K3pwS2dHUzBacXFTQ2Npa2NhWjA0RXVHNk5QQkcxR01hRFJ4YTFpS2F1bkZLeWhpRFZGSEZnSnQ4YlNSdmVUSTBOZ3dNT2h4MFRnUXZIUzFZa2xFaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVm1ZQ2VPWkdtZWFLcUtRY01VeldwbUhMZDF4VlpuY2pjTUFWUGdwMXB3Q2lyR0RUVkE5azZad1JQRm1aNENWV3Vwc2RTT1h0cmdWMXRna0xqV1RZeVVmYlpISExFTU81UDJCanhUVTFhd240NHFCVzhtQzBSQ2hpczBOZ1U1TzFZdFptdGVrNU1oQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFWbllDZU9aR21lYUtxS1FYWmQyV29XSEhkMURWTVhjc1VOSjRHQnMrTHdVclFLeWlpam5RcEFXY2R3NGdTa3FBQVJlM0p4VDdkdngwS0NmYjBqTk5aTTJtTGRJeXRXTzR2S0JzY1NjK1ZjNXA5d1ZYWWtBUU9CS0RRMkdTNDdYeTB2SFZkaWs1UWlJUUFoK1FRRkJBQWRBQ3dBQUFBQUdBQVlBQUFGYm1BbmptUnBubWlxaWxheGJjVnFNaHpIZEExdHl3Sm5uQUlEUjZEaVpGUVpUc29vUzU0WVAxbkhjQ3NOcFNJbHlhTEZjZ0trUWhWcjJwQkZpOUttY1c2WVIrSXpJMGJxU3UxWm9qZFJnbUtwSjB3clRpaUNLSVFvUFZFbFFYZ29PZ3dOT1RWalVpMW1kR2VhbXlVaEFDSDVCQVVFQUIwQUxBSUFBZ0FVQUJRQUFBVmJZQ2VPa01HZG5BR05MSWx5dy9DdWJjZWNXWjJkVEhzYk5aYXBKNEtrZ2kwVDdZU3NNWTI1Sm10WDRraWRKdXVWaFJwc1dUTFlkeFRXamsrbXNTZ0ZIVk03ekcvY0NMd3FSei9wMElmVDhZSkdYV1VjTkVoVktDbzFJUUFoK1FRRkJBQWRBQ3dCQUFFQUZnQVdBQUFGWjJBbmptUFZCV1NxbmdaSGNnYTZqc2JyMG5OMTEyVEZjNmFVNnpZYnBtckVXY2ZGTzRrRXloSFUyYWsxbzlYc0VydHlCYm1xWUpKN1E0MnhMaG00MlBsaVRUc3QxeXBTYzZkcUpGa3VHazVWQWtZcE9pSlhiVDlLVnh4Smhpb0JMUytOVVNaMktpRUFJZmtFQ1FRQUhRQXNBUUFCQUJZQUZnQUFCV3BnSjQ2aWxWMVgxazFrUzE2Y3kxMHUyY1MxeURVMU0zSUVFZ0hYOGRsR3dWcXl3L3ZsY2tSYVovbE1TbVBFcDY0VHM0aW8ycVJKcXoyUm42aHpMcVd1cWI1dEtyWTk3MGpCU3BHVTI5Nk9tbE01UzRBaVJseFVReU9HTmxreWhDNHdNbnRrSmlncUxDNGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVYrWUNlT1pHbWVwVlZjVjlaTjZMbHhkRTF2OGRqWWZOM0VEQnVFQkxFeFRqdmE4RlNrL1VxMW5DaEttbkdXdVNadVJKVjJ1aGFsbDh1eGlESzBNZG5WdWFUVlg4NUY1T2JBNC9NTzJnNm5zZU5ZVWsxbVUyOWVYUjFXZ1NoYUpBdUlLSkFkU1ZlTVBpZEJrRTAwUnlpVVBaZFNWajFiYWhZWkxCbUVkM0FoQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFXQllDZU9aR21lcFZWY1Y5Rk42TGx4ZEUxdjhkallmTjNFakpyQlpLZ3hUanRhVE9BejFYS2lKMm5HRVVDakhOeUlOcngyaXB5UlJlbnRNRGtXVVlGY3ByazZGN2FYZGhIRncrVU9YUzIvdXJkVlpXY2tYR1ZnVTMweE55UUxVamsxQ3lWSmdTZG5IRDhtUVlVa0FtQWNSeWlUUFUxUVZEMWFaU29zQldsNXJoMGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVdDWUNlT1pHbWVwVlZjVjlGTjZMbHhkRTF2OGRqWWZOM0VqTnJGZEtreFRqdk9JRGVnL1VxMFphN1Q1SlJtMXFub1JxSU50WjFpdG1PaGdVYzBpNmhnUG5kb3JuRDc3QldKM1cvT2x6MEd3OUY5VXdCcEloTjFZSGNqV0hRY09GMUtXbFVtU1FNQU1WVlBKVUdISXdCaUhFY29TVDAybVRGWVBZNW5LaXd1TUhodUlRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZlbUFuam1ScG5xV1ZNVXlHdmhjbnovTDFqZzJ0ejgxYnpLNVNabFk0NVRpR20wSFdLOG1TdDg2U1U0cFJvNklhU1JiRURxOGRpd3k3NVZoRVgvS0lLMktNMVIwWm8vMVd5OUYxTWpzTDF2ZjNYaklUSTFaMkhEWmxVRXA1SWtlS0oxTk5KVCtBSTE4Y1JTaEhPelNTTUp5SGNHRXJMUjJEb25BaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVjlZQ2VPWkdtZVpkQXdUSU8rRnlmUDh2V09CRDFjMTBBVHI4SU1Zb0xNQ3FjY3h3YVRBVXUxbXlqR0tWR2xvMmlXUThSMmpGVlJRT2JkQmtRTnpxQXM4bzBZUzNZbnhoREJtV1Y2ZHMzMnVUcGpZV1ZrVzExWVlDUlhYbHBiZUUyQ09Jd25WRThsUWpLR0kyQWNTQzg2UEQ0elhsUTBrbGhuTEg5eWNpRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCWDFnSjQ1a2FaNWwwQlJGZzc0TUo4OHk4NDRFZlhYWlJST3ZqR3h3RWd4a21WT09rd3pLZ0NYa1RTVGtsR0xFcWVob0c4bTBwSzhvSUFaM1pBRlJnN016ZDN5akF0UE40eFJFY25yOUxtTFQ0V05sWUdoZUhBSnVnbGhtWEZGelUxVW1TMDBvVlZBbFZWa2xSbEl2T2hrOU5HQXhORE5kWmlvZExYcDZJUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGZ0dBbmptUnBucVhRRkZrbm9HakJ6ZlJjd0NORUR4M1JaUU1hQk5hWWJWQ2JXZU9rNCtCNnM5UE05K3hFU2JKanRaTzhqYTViQUZqQTRXMUZ3WmVJMHpyL25LSU1oK3BteCtGdWdoM2FQc3ZwWlc0ZFFTUmdXNFpaWjEwbFUxVjZlRG1OTUk5REprVWNXaVpKa0ZJekF4aytRRUpWTWpVMFhtY3ZHYUNDclIwaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVjZZQ2VPWkdtZXBkQmxHWUcrR1NmUGN2YU8xcnk1UWJmTmxoZEJWa0FWWks2VDdOWUpMRTJ5SHJQekhNV0swODdSTnFwbXF3TE9KanY2cVVTY0pIbG81WkJKSEc1TVNuWnkyZThPSGoxK203dHViMTVYWkZzbFVWK0JKRG1LS0U0Y1FTWkRIRmdtUjJrM09qd0VQMTR3TkRSY1pDb3NIV2Q1YnlFQUlma0VDUVFBSFFBc0FBQUFBQmdBR0FBQUJYcGdKNDVrYVo1bDFXVk5wNkpueHMzMG5NRmpRQmR1RnhTMEFJd3dHeFpSbkFGT05PQUlTOGRsSnlxU0VhUWk0bTFFbFVZckhCNVdCQ1J4eG1hSXFNRjVqY0d0RGh2TmpVK2ZZOTBJTEI2WHVXZG9WRlpqV2xDQlhvaG1Ta3ROZUNSRUhGY25rWk1uT2pNOEtqOUJVakkxTkZ0b0VBMHRiblJqSVFBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRmdHQW5qbVJwbmlaRWRCYnFObHdzeDQwN0NyR3hkbE5IR0RHQkM4SVp1QUlEam90anNJbUF3bExST1VxV1lBR3FLTUNwalpqYUVaREUyWVU3U3BFbGZhNXdXajcydVN3aXlNTjBFYWR5N3JoSEMzZGFIQXRmVFdkakkxaGhYRjVmUmxwV0ptQk9pU2xGV1NkSUhCQXVPRXc3UFQ4eFdqQXpNbzVoRml0d2ZYMGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVYxWUNlT1pHbWVwa1YwQWVvU1hDekhxeXRXOFVWTzNSWGJIWTdCWnVCWVRqZ2QwSGNTQWtmRkV1dzVXbkJxSW82UzJ1T1FPQzF1ZGhUd2lqc1RzR2g2RG1MTlozaTVIUXpYei9PUjlzd2NzYmxYSlU1VVVTVkpUejRWS0VJTEtBdEZSeWc0ZXlNOFBuQTJNRE15V0Z3QkJDc0FkR0loQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFWellDZU9aR21lWmdCMUFlb1NBeWZQQStHU2NWWldHVGZjQWM3bGR1RzBUaHpkclZQZ25BYkRwZWp5SXhHYzBoSEhOaG9vczUxTVZZUUZrMGRCcy9ZSUtaczVxN082QXhlbDUyNU9SVjF4ZTlWaVZtNVNXeVZRWUZSSUJWSk5LRUZSS0VWSEtEazdQV00zTURNMFhHWXFjWE5xSVFBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRmQyQW5qbVJwbm1iUVdkMkVvdERBY1lZeEQ5QkxEZ05oRWp4ZGdKUFJaVGlxRThlbkUzRk9nMkpUbEJtVVl0TmRidFRMam9Da3AzY2s3Z2pLWTQ1Z1pCaXpSNWEydTJOZ09lZWQ4Z1R0NWJoRVhXTmdPMjQ0SlZGZVZTWUxTMU1FZkdGU0tFZE5QRXdrUUZaVE1UTTFOMXRqYXl4L2VGa2hBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVZvWUNlT1pHbWVwdEFGYU50WkJtY3dUR3hZN21nWXA3QzdBZzdFQmVHMGpMa1ZzbVFZSmpzUUhnbjIxT0YwVlpKVXRNd3VmVm1kU3NRSWswZUJzcG5CRW0yejcyNjFheGhYd1NNcTNOU3NSazl5UnloQlRpaEZkaWMvS1lvNU1ESTBObVlkS20yU1dTRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCV3hnSjQ1a2FaNW0xUVZvdXhvYzB6UU1aN0N1YURBb1k3Z1ZUazRnUkJWekhjN0VaQkFnUllJZktjQjdpcW9qcVZWSE9tNlBGZXlXb1JJMXRxT3pDSWZ1cUsvdERubmt0WG9OaTdaMjFXYXdkVTVQVVNkMUxZVWlRWUVvUkRrN1BYc3RBVEF5TkRaL1ZwZHhUeUVBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQldOZ0o0NWthWjVtMVFsbzJ3V2IwWFJRWTJ5Qk8yN3oyV3c2ZzY0alJCa2NRK0xFQkV5S21xTkF6emw5T2tsUTRuVlVGRldwcXRWMkJCa0p5bU8wZDl5cGRxL3ZyRE1yM1g2MThOUGJaVmlhRm50NkN5NDhLRDlKTURJME5qaGpLaXhzV3lFQUlma0VDUVFBSFFBc0FBQUFBQmdBR0FBQUJWaGdKNDVrYVo3bTBnbG91MjdGMmxuRjVwSTJhdVV0M3dNb24wc29JZzVMQXN1dHBNUXRUYjdZa3lRVk5hZldFUXRMMnNxNDN5ejQycWxpemNhYmtMeGtkOUxCRTd5VUJzeUxhcmYxUG9JcFdUVmdJaXdxZ2xnaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVlpZQ2VPWkdtZXA5QUJhTnN4aE5xcGpPeSt0c25jeGQzMUtLQlBTTnI1UnNaUjdyaE1Ia1ZPd3BQVUlDMmZyT21wSXVKcVI5N1pWenlTZnF2SXNaTThiV3JYSXFKTFRxS2I3TVdyU0FCSHdUb0xZbjArWGdwalV5RUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCVkZnSjQ1a2FaNW5oYTVqWm9sSloyVXNTYVBBdlJKMXg2Ty9YdERXSTVZQVJaS3FsVFNLWHMxb2JTSmFTcSttbUlpSzVjcXVVSkd1T2NhYXlqVzBMemtzdFUvdmtwclpxOUNRSFdURzJ1U2JleUVBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQlVsZ0o0NWthWjVuaGE0anBJcE9CN0Vrd2Rwc1FIYzYydSsvMms0NExNcU1MZVF1cHV4TVJJdW05QlNGVGErZGwyaW01R0pMdUdLWUZNeXR5dEt4U2IzeWlpcnU0clA2WllVQUFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVTVZQ2VPWkdtZUo0Q3VZMUNxS2l1Nk1ydlVkNjJiOU43dnRaOFBTQ3dtUkxHaU1yVkVKWnZMMzdNcGxGV2hwWnpOaW0zeGxxcGpseFVDQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFVM1lDZU9aR21lNklTdTRtSzY3RmpGTkoyc2Q2M0g4MTdEUHFCdlNDeUtWRVdrY1lrUzZweE1VUys2azFCWDAxT1dCWVhxbE5kVENBQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZMR0Fuam1ScG5taXFvdFBxdm5Bc3oySkxxL2F0Ny96cDlNRGdLQmNqQ284OHhVdXBNNmFjVHRnUGFRb0JBQ0g1QkFVRUFCMEFMQUFBQUFBWUFCZ0FBQVVqWUNlT1pHbWVhS3F1Yk91K2NMeFNjbTNmZUk3VGV0L3p2cUJ3eUFLV2pDOGtNUVFBT3c9PSkgbm8tcmVwZWF0IHNjcm9sbCBjZW50ZXIgY2VudGVyO1xufVxuLm14LXRvb2x0aXAtY29udGVudCAudGFibGUgdGgsXG4ubXgtdG9vbHRpcC1jb250ZW50IC50YWJsZSB0ZCB7XG4gICAgcGFkZGluZzogMnB4IDhweDtcbn1cbiIsIi5teC10YWJjb250YWluZXItcGFuZSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuLm14LXRhYmNvbnRhaW5lci1jb250ZW50LmxvYWRpbmcge1xuICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaE5nQTJBUE1BQVAvLy93QUFBSGg0ZUJ3Y0hBNE9EdGpZMkZSVVZOemMzTVRFeEVoSVNJcUtpZ0FBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQWtLQUFBQUlmNGFRM0psWVhSbFpDQjNhWFJvSUdGcVlYaHNiMkZrTG1sdVptOEFJZjhMVGtWVVUwTkJVRVV5TGpBREFRQUFBQ3dBQUFBQU5nQTJBQUFFeXhESVNhdTlPT3ZOdS85Z0tJNWt5U0VKUVNTSTZVcUtLaFBLV3lMejNOcGltcXNKbnVnM0U0YUlNaVBJOXdzcVBUamlUbGt3cUF3RlRDeFhleFlHczBIMmdnSk9MWUxCUURDeTVnd213WXg5SkpyQXNzSFFYc0tyOUNGdU0zQWxjakowSUFkK0JBTUhMbWxySkFkdUJvNVBsNWlabXB1Y25aNmZjV3FJbUpDamFIT1poaXFtRkl1QWw2NFpzWml6RjZvRXJFSzN1Uk9sbTc2Z3djTER4TVhHeDhYQWo2SWt1NCtvSXJVazBoL1UwV0Vqem5IUUlzcWhrY2pCM3NuY3hkYkM1K0xseWN6aDdrOFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRNRU1oSnE3MDQ2ODI3LzJBb2ptUnBubVZoRUlSUm9HY3hzT3p3d3VSS3N3Wk83anZmQ0VnVGluUzduaEYwbU5FR2h3c2l3VW9nbHBTRHpoQzFLSWlLa1dBd0VKZ1FSTllWSk5pWlNkUjBJdVNzbGRKRlVKMHd1T01KSVcwMGJ5TnhSSE9CWklRamFHbHJXQnhmUUdHUUhsTlZqNVdhbTV5ZG5wOUxZMldib29zV2dpeW1RcWdFcWhON2ZaQ3dHYk95TzdFWHJLNDR1aHFscElxZ3dzUEV4Y2JIeU1lL0tNc2l2U2JQZExjbnRkSlAxTlBPYmlmUmlhUE13Y25DemNyYnlOWEc2TVhkeHVUaTd6NFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRPRU1oSnE3MDQ2ODI3LzJBb2ptUnBubWlxQXNJd0NLc3BFRFFCeCtOUUV3T2U3ejFmYUZhN0NVR3QxMUZZTU5BTUJWTFNTQ3JvYW9Qb2NFY1ZPWGNFZytoS0M1TEF0VEhRaEthSmlMUnU2THNUdjEzeTBJSE1PeXc5QjE4R2ZuK0Zob2VJaVlvWkNBazBDUWlMRmdwb0NobFRSd2h0QkpFV2NEWkNqbTBKRjN4bU1adHVGcVpDcVFRWG4za29vbWlrc0hpWm01MlNBSlJnbHJ3VGpZKzd3Y2JIeU1uS0U1Z296VzljSjdFL1dDZXNhdFVtMTF0RjB0RWp6eks0eTRuaHh0UEkyOGJxd2VqSTV1VHhKaEVBSWZrRUNRb0FBQUFzQUFBQUFEWUFOZ0FBQk1zUXlFbXJ2VGpyemJ2L1lDaU9aR21lYUtvQ3dqQUlxeWtRTkFISDQxQVRBNTd2UFY5b1Zyc0pRYTNYY1lsS0dtV3VKM0luRlJGcDFZNnVGaXh0YVYzUWwzY2FoejlYMnltZDdUaFRiNlo4VHEvYjcvaTh2R0NnR1FvYWNVSUZab0FYYkVkOU93UUdHR1pIaXpXT1FKQ1JCQmlJUW9vN2paaFJTd2RtQjNvVUI0b0dvNlNxcTZ5dE1RZ0pOQWtJckFxUkNpT0NJd2lXQkxSVFJTV3hsZ2toanlTOU5NYVV5TWxEVk1LOXhVT2ZKYnlXdjNxMmk3aEx1aFd3c3RsQ21hdkg1c3lyNWVyVnJ1NDRFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWlaY2dVR05BWUZKSk1pQldhZ1E0TWxuVHNFQmlLTElxczFya0Ftc1RSV3FDU3FPNjFXa1JrSUNUUUpDQmNIWmdkSENyRUt4cW9HeVVJSXRnVEZlc0syQ1h2VXQzcmNCSHZZc2RwNjA3Yldlc3VyelpYQncrZ2lFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWdTQ0FrMENRaVdDanMwQ3BRSW9qV2ZKWk1kbktjRUNhcURJSzQxWGtBaHREUzJYQ0d0cDdBa2p4Nm1ycW5Ca1NLaG9xUVhCUVkwQmdWTG01M0dGUVZtMHBUUG9nYVZ0Tit1bGR3NzNwUUhaZ2VXQjl3RzZwa29FUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2dktVU0Nsa0RnTFFvN05BcC9Fd2lDTlg1Q2NSWjdpQVFKaTFRWGp6VkNacFNWQkpkQUY0NklrVDVzRjRlUGlxSlJHWUdDaElXR2puMnVzck8wdFhZRkJqUUdCYlFGWnJ4UVNpSzVnZ1l5a3lHVkpwakpqOHVkSWNRN3hpV2pJUWRtQjJ1cEl3ZkVCdHEySG95ejFyUE01OURseUxUazR1OHBFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3a1JDVm9Db1dtOWhCTEZqcWFBZGhEVEdyUGtOSDZTV1VLQ3UvTjJ3cldTcmhiOG9HbHFZQWljSFpPSU5ETUhHOTdlWFhvZFVsTlZWbGRnUzRhS2k0eU5qbzhGQmpRR0JZOFhCV3MwQTVWUVhSbVNVd2FkWlJob1VKazhwV0duY2hlZ082SkNlRFlZQjZnREIxYWVHUWVnQnJtV3djTER4TVhHeDF5QUtic2lzNEVnemo5c0o3ZlNtdFN0UTZReTI4M0tLTXpJamVIRTBjYlY1OW5sM2NYazR1OG9FUUE3KSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDMycHggMzJweDtcbn1cbi5teC10YWJjb250YWluZXItdGFicyB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLm14LXRhYmNvbnRhaW5lci10YWJzIGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ubXgtdGFiY29udGFpbmVyLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQ6ICNmMmRlZGU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGNvbG9yOiAjYjk0YTQ4O1xuICAgIHRvcDogMHB4O1xuICAgIHJpZ2h0OiAtNXB4O1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB6LWluZGV4OiAxOyAvKiBpbmRpY2F0b3Igc2hvdWxkIG5vdCBoaWRlIGJlaGluZCBvdGhlciB0YWIgKi9cbn1cbiIsIi8qIGJhc2Ugc3RydWN0dXJlICovXG4ubXgtZ3JpZCB7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47IC8qIHRvIHByZXZlbnQgYW55IG1hcmdpbiBmcm9tIGVzY2FwaW5nIGdyaWQgYW5kIGZvb2JhcmluZyBvdXIgc2l6ZSBjYWxjdWxhdGlvbnMgKi9cbn1cbi5teC1ncmlkLWNvbnRyb2xiYXIsIC5teC1ncmlkLXNlYXJjaGJhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uLFxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIC5teC1idXR0b24ge1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIC5teC1idXR0b24gKyAubXgtYnV0dG9uLFxuLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uICsgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuM2VtO1xufVxuXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXNlYXJjaC1jb250cm9scyAubXgtYnV0dG9uICsgLm14LWJ1dHRvbixcbltkaXI9XCJydGxcIl0gLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uICsgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjNlbTtcbn1cblxuLm14LWdyaWQtcGFnaW5nYmFyLFxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG4ubXgtZ3JpZC10b29sYmFyLCAubXgtZ3JpZC1zZWFyY2gtaW5wdXRzIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBmbGV4OiAxO1xufVxuXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXRvb2xiYXIsXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXNlYXJjaC1pbnB1dHMge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAwcHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXBhZ2luZ2JhcixcbltkaXI9XCJydGxcIl0gLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIHtcbiAgICBtYXJnaW4tbGVmdDogMHB4O1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbn1cblxuLm14LWdyaWQtcGFnaW5nLXN0YXR1cyB7XG4gICAgcGFkZGluZzogMCA4cHggNXB4O1xufVxuXG4vKiBzZWFyY2ggZmllbGRzICovXG4ubXgtZ3JpZC1zZWFyY2gtaXRlbSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLm14LWdyaWQtc2VhcmNoLWxhYmVsIHtcbiAgICB3aWR0aDogMTEwcHg7XG4gICAgcGFkZGluZzogMCA1cHg7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbltkaXI9XCJydGxcIl0gLm14LWdyaWQtc2VhcmNoLWxhYmVsIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LWdyaWQtc2VhcmNoLWlucHV0IHtcbiAgICB3aWR0aDogMTUwcHg7XG4gICAgcGFkZGluZzogMCA1cHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4ubXgtZ3JpZC1zZWFyY2gtbWVzc2FnZSB7XG4gICAgZmxleC1iYXNpczogMTAwJTtcbn1cblxuLyogd2lkZ2V0IGNvbWJpbmF0aW9ucyAqL1xuLm14LWRhdGF2aWV3IC5teC1ncmlkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbiIsIi5teC1jYWxlbmRhciB7XG4gICAgei1pbmRleDogMTAwMDtcbn1cblxuLm14LWNhbGVuZGFyLW1vbnRoLWRyb3Bkb3duLW9wdGlvbnMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuLm14LWNhbGVuZGFyLCAubXgtY2FsZW5kYXItbW9udGgtZHJvcGRvd24ge1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4ubXgtY2FsZW5kYXItbW9udGgtY3VycmVudCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ubXgtY2FsZW5kYXItbW9udGgtc3BhY2VyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAwcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi5teC1jYWxlbmRhciwgLm14LWNhbGVuZGFyLW1vbnRoLWRyb3Bkb3duLW9wdGlvbnMge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JleTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbiIsIi5teC1kYXRhZ3JpZCB0ciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubXgtZGF0YWdyaWQgdHIubXgtZGF0YWdyaWQtcm93LWVtcHR5IHtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi5teC1kYXRhZ3JpZCB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm14LWRhdGFncmlkIHRoLCAubXgtZGF0YWdyaWQgdGQge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG59XG5cbi8qIGhlYWQgKi9cbi5teC1kYXRhZ3JpZCB0aCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyAvKiBSZXF1aXJlZCBmb3IgdGhlIHBvc2l0aW9uaW5nIG9mIHRoZSBjb2x1bW4gcmVzaXplcnMgKi9cbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7XG59XG4ubXgtZGF0YWdyaWQtaGVhZC1jYXB0aW9uIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ubXgtZGF0YWdyaWQtc29ydC1pY29uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgcGFkZGluZy1sZWZ0OiA1cHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kYXRhZ3JpZC1zb3J0LWljb24ge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBhZGRpbmc6IDAgNXB4IDAgMDtcbn1cbi5teC1kYXRhZ3JpZC1jb2x1bW4tcmVzaXplciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtNnB4O1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBjdXJzb3I6IGNvbC1yZXNpemU7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kYXRhZ3JpZC1jb2x1bW4tcmVzaXplciB7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogLTZweDtcbn1cblxuLyogYm9keSAqL1xuLm14LWRhdGFncmlkIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRkIHtcbiAgICBib3JkZXItdG9wOiBub25lO1xufVxuLm14LWRhdGFncmlkIHRib2R5IHRyOm50aC1jaGlsZCgybisxKSB0ZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTtcbn1cbi5teC1kYXRhZ3JpZCB0Ym9keSAuc2VsZWN0ZWQgdGQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7XG59XG4ubXgtZGF0YWdyaWQtZGF0YS13cmFwcGVyIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ubXgtZGF0YWdyaWQgdGJvZHkgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDE2cHg7XG4gICAgbWF4LWhlaWdodDogMTZweDtcbn1cbi5teC1kYXRhZ3JpZCBpbnB1dCxcbi5teC1kYXRhZ3JpZCBzZWxlY3QsXG4ubXgtZGF0YWdyaWQgdGV4dGFyZWEge1xuICAgIGN1cnNvcjogYXV0bztcbn1cblxuLyogZm9vdCAqL1xuLm14LWRhdGFncmlkIHRmb290IHRoLFxuLm14LWRhdGFncmlkIHRmb290IHRkIHtcbiAgICBwYWRkaW5nOiAzcHggOHB4O1xufVxuLm14LWRhdGFncmlkIHRmb290IHRoIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbn1cbi5teC1kYXRhZ3JpZC5teC1jb250ZW50LWxvYWRpbmcgLm14LWNvbnRlbnQtbG9hZGVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDkwJTtcbiAgICBhbmltYXRpb246IHBsYWNlaG9sZGVyR3JhZGllbnQgMXMgbGluZWFyIGluZmluaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiAjRjVGNUY1O1xuICAgIGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNGNUY1RjUgMCUsICNGNUY1RjUgNSUsICNGOUY5RjkgNTAlLCAjRjVGNUY1IDk1JSwgI0Y1RjVGNSAxMDAlKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMHB4IDEwMHB4O1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG59XG5Aa2V5ZnJhbWVzIHBsYWNlaG9sZGVyR3JhZGllbnQge1xuICAgIDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwcHggMDsgfVxuICAgIDEwMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTAwcHggMDsgfVxufVxuXG4ubXgtZGF0YWdyaWQtdGFibGUtcmVzaXppbmcgdGgsXG4ubXgtZGF0YWdyaWQtdGFibGUtcmVzaXppbmcgdGQge1xuICAgIGN1cnNvcjogY29sLXJlc2l6ZSAhaW1wb3J0YW50O1xufVxuIiwiLm14LXRlbXBsYXRlZ3JpZC1jb250ZW50LXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5teC10ZW1wbGF0ZWdyaWQtcm93IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG59XG4ubXgtdGVtcGxhdGVncmlkLWl0ZW0ge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ubXgtdGVtcGxhdGVncmlkLWVtcHR5IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xufVxuLm14LXRlbXBsYXRlZ3JpZC1pdGVtLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xufVxuLm14LXRlbXBsYXRlZ3JpZC1pdGVtIC5teC10YWJsZSB0aCxcbi5teC10ZW1wbGF0ZWdyaWQtaXRlbSAubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDJweCA4cHg7XG59XG4iLCIubXgtc2Nyb2xsY29udGFpbmVyLWhvcml6b250YWwge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG59XG4ubXgtc2Nyb2xsY29udGFpbmVyLWhvcml6b250YWwgPiBkaXYge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItd3JhcHBlciB7XG4gICAgcGFkZGluZzogMTBweDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItbmVzdGVkIHtcbiAgICBwYWRkaW5nOiAwO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1maXhlZCA+IC5teC1zY3JvbGxjb250YWluZXItbWlkZGxlID4gLm14LXNjcm9sbGNvbnRhaW5lci13cmFwcGVyLFxuLm14LXNjcm9sbGNvbnRhaW5lci1maXhlZCA+IC5teC1zY3JvbGxjb250YWluZXItbGVmdCA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcixcbi5teC1zY3JvbGxjb250YWluZXItZml4ZWQgPiAubXgtc2Nyb2xsY29udGFpbmVyLWNlbnRlciA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcixcbi5teC1zY3JvbGxjb250YWluZXItZml4ZWQgPiAubXgtc2Nyb2xsY29udGFpbmVyLXJpZ2h0ID4gLm14LXNjcm9sbGNvbnRhaW5lci13cmFwcGVyIHtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cblxuLm14LXNjcm9sbGNvbnRhaW5lci1tb3ZlLWluIHtcbiAgICB0cmFuc2l0aW9uOiBsZWZ0IDI1MG1zIGVhc2Utb3V0O1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1tb3ZlLW91dCB7XG4gICAgdHJhbnNpdGlvbjogbGVmdCAyNTBtcyBlYXNlLWluO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zaHJpbmsgLm14LXNjcm9sbGNvbnRhaW5lci10b2dnbGVhYmxlIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB3aWR0aDtcbn1cblxuLm14LXNjcm9sbGNvbnRhaW5lci10b2dnbGVhYmxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zbGlkZSA+IC5teC1zY3JvbGxjb250YWluZXItdG9nZ2xlYWJsZSA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItcHVzaCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zaHJpbmsgPiAubXgtc2Nyb2xsY29udGFpbmVyLXRvZ2dsZWFibGUge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubXgtc2Nyb2xsY29udGFpbmVyLXB1c2gubXgtc2Nyb2xsY29udGFpbmVyLW9wZW4gPiBkaXYsXG4ubXgtc2Nyb2xsY29udGFpbmVyLXNsaWRlLm14LXNjcm9sbGNvbnRhaW5lci1vcGVuID4gZGl2IHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5teC1zY3JvbGxjb250YWluZXItcHVzaC5teC1zY3JvbGxjb250YWluZXItb3BlbiA+IC5teC1zY3JvbGxjb250YWluZXItdG9nZ2xlYWJsZSxcbi5teC1zY3JvbGxjb250YWluZXItc2xpZGUubXgtc2Nyb2xsY29udGFpbmVyLW9wZW4gPiAubXgtc2Nyb2xsY29udGFpbmVyLXRvZ2dsZWFibGUge1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuIiwiLm14LW5hdmJhci1pdGVtIGltZyxcbi5teC1uYXZiYXItc3ViaXRlbSBpbWcge1xuICAgIGhlaWdodDogMTZweDtcbn1cblxuIiwiLm14LW5hdmlnYXRpb250cmVlIC5uYXZiYXItaW5uZXIge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RmZTZlYTtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSBsaTpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgY29sb3I6ICM3Nzc7XG4gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgYS5hY3RpdmUge1xuICAgIGNvbG9yOiAjRkZGO1xuICAgIHRleHQtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICMzNDk4REI7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xufVxuLm14LW5hdmlnYXRpb250cmVlIC5teC1uYXZpZ2F0aW9udHJlZS1jb2xsYXBzZWQgdWwge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgdWwge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHtcbiAgICBwYWRkaW5nOiA1cHggMDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICBwYWRkaW5nOiA1cHggMDtcbn1cbltkaXI9XCJydGxcIl0gLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHVsIGxpIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB1bCBsaSB7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIHBhZGRpbmctdG9wOiAzcHg7XG4gICAgcGFkZGluZy1ib3R0b206IDNweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB1bCBsaSBpbWcge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4iLCIubXgtbGluayBpbWcsXG4ubXgtYnV0dG9uIGltZyB7XG4gICAgaGVpZ2h0OiAxNnB4O1xufVxuLm14LWxpbmsge1xuICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbiIsIi5teC1ncm91cGJveCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbi5teC1ncm91cGJveC1oZWFkZXIge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gICAgY29sb3I6ICNlZWU7XG4gICAgYmFja2dyb3VuZDogIzMzMztcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4IDRweCAwIDA7XG59XG4ubXgtZ3JvdXBib3gtY29sbGFwc2libGUgPiAubXgtZ3JvdXBib3gtaGVhZGVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZ3JvdXBib3guY29sbGFwc2VkID4gLm14LWdyb3VwYm94LWhlYWRlciB7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuLm14LWdyb3VwYm94LWJvZHkge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cbi5teC1ncm91cGJveC5jb2xsYXBzZWQgPiAubXgtZ3JvdXBib3gtYm9keSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbi5teC1ncm91cGJveC1oZWFkZXIgKyAubXgtZ3JvdXBib3gtYm9keSB7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgNHB4IDRweDtcbn1cbi5teC1ncm91cGJveC1jb2xsYXBzZS1pY29uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG59XG5bZGlyPVwicnRsXCJdIC5teC1ncm91cGJveC1jb2xsYXBzZS1pY29uIHtcbiAgICBmbG9hdDogbGVmdDtcbn1cbiIsIi5teC1kYXRhdmlldyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm14LWRhdGF2aWV3LWNvbnRyb2xzIHtcbiAgICBwYWRkaW5nOiAxOXB4IDIwcHggMTJweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVlO1xufVxuXG4ubXgtZGF0YXZpZXctY29udHJvbHMgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuXG4ubXgtZGF0YXZpZXctY29udHJvbHMgLm14LWJ1dHRvbiArIC5teC1idXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjNlbTtcbn1cblxuLm14LWRhdGF2aWV3LW1lc3NhZ2Uge1xuICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbn1cbi5teC1kYXRhdmlldy1tZXNzYWdlID4gZGl2IHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG4ubXgtZGF0YXZpZXctbWVzc2FnZSA+IGRpdiA+IHAge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi8qIFRvcC1sZXZlbCBkYXRhIHZpZXcgaW4gd2luZG93IGlzIGEgc3BlY2lhbCBjYXNlLCBoYW5kbGUgaXQgYXMgc3VjaC4gKi9cbi5teC13aW5kb3ctdmlldyAubXgtd2luZG93LWJvZHkge1xuICAgIHBhZGRpbmc6IDA7XG59XG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRlbnQsXG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LXBsYWNlaG9sZGVyID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDE1cHg7XG59XG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRyb2xzLFxuLm14LXdpbmRvdy12aWV3IC5teC13aW5kb3ctYm9keSA+IC5teC1wbGFjZWhvbGRlciA+IC5teC1kYXRhdmlldyA+IC5teC1kYXRhdmlldy1jb250cm9scyB7XG4gICAgYm9yZGVyLXJhZGl1czogMHB4IDBweCA2cHggNnB4O1xufVxuIiwiLm14LWRpYWxvZyB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogNTAwcHg7XG4gICAgLyogSWYgdGhlIG1hcmdpbiBpcyBzZXQgdG8gYXV0bywgSUU5IHJlcG9ydHMgdGhlIGNhbGN1bGF0ZWQgdmFsdWUgb2YgdGhlXG4gICAgICogbWFyZ2luIGFzIHRoZSBhY3R1YWwgdmFsdWUuIE90aGVyIGJyb3dzZXJzIHdpbGwganVzdCByZXBvcnQgMC4gRWxpbWluYXRlXG4gICAgICogdGhpcyBkaWZmZXJlbmNlIGJ5IHNldHRpbmcgbWFyZ2luIHRvIDAgZm9yIGV2ZXJ5IGJyb3dzZXIuICovXG4gICAgbWFyZ2luOiAwO1xufVxuLm14LWRpYWxvZy1oZWFkZXIge1xuICAgIGN1cnNvcjogbW92ZTtcbn1cbi5teC1kaWFsb2ctYm9keSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG59XG4iLCIubXgtd2luZG93IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiA2MDBweDtcbiAgICAvKiBJZiB0aGUgbWFyZ2luIGlzIHNldCB0byBhdXRvLCBJRTkgcmVwb3J0cyB0aGUgY2FsY3VsYXRlZCB2YWx1ZSBvZiB0aGVcbiAgICAgKiBtYXJnaW4gYXMgdGhlIGFjdHVhbCB2YWx1ZS4gT3RoZXIgYnJvd3NlcnMgd2lsbCBqdXN0IHJlcG9ydCAwLiBFbGltaW5hdGVcbiAgICAgKiB0aGlzIGRpZmZlcmVuY2UgYnkgc2V0dGluZyBtYXJnaW4gdG8gMCBmb3IgZXZlcnkgYnJvd3Nlci4gKi9cbiAgICBtYXJnaW46IDA7XG59XG4ubXgtd2luZG93LWNvbnRlbnQge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm14LXdpbmRvdy1hY3RpdmUgLm14LXdpbmRvdy1oZWFkZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4IDZweCAwIDA7XG59XG4ubXgtd2luZG93LWhlYWRlciB7XG4gICAgY3Vyc29yOiBtb3ZlO1xufVxuLm14LXdpbmRvdy1ib2R5IHtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cbiIsIi5teC1kcm9wZG93bi1saXN0ICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1kcm9wZG93bi1saXN0IGltZyB7XG4gICAgd2lkdGg6IDM1cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kcm9wZG93bi1saXN0IGltZyB7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4ubXgtZHJvcGRvd24tbGlzdCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LWRyb3Bkb3duLWxpc3QgPiBsaSB7XG4gICAgcGFkZGluZzogNXB4IDEwcHggMTBweDtcbiAgICBib3JkZXI6IDFweCAjZGRkO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLm14LWRyb3Bkb3duLWxpc3QgPiBsaTpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG59XG4ubXgtZHJvcGRvd24tbGlzdCA+IGxpOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xufVxuLm14LWRyb3Bkb3duLWxpc3Qtc3RyaXBlZCA+IGxpOm50aC1jaGlsZCgybisxKSB7XG4gICAgYmFja2dyb3VuZDogI2Y5ZjlmOTtcbn1cbi5teC1kcm9wZG93bi1saXN0ID4gbGk6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7XG59XG4iLCIubXgtaGVhZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogOXB4O1xuICAgIGJhY2tncm91bmQ6ICMzMzM7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm14LWhlYWRlci1jZW50ZXIge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjb2xvcjogI2VlZTtcbiAgICBsaW5lLWhlaWdodDogMzBweDsgLyogaGVpZ2h0IG9mIGJ1dHRvbnMgKi9cbn1cbmJvZHlbZGlyPVwibHRyXCJdIC5teC1oZWFkZXItbGVmdCxcbmJvZHlbZGlyPVwicnRsXCJdIC5teC1oZWFkZXItcmlnaHQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDlweDtcbiAgICBsZWZ0OiA5cHg7XG59XG5ib2R5W2Rpcj1cImx0clwiXSAubXgtaGVhZGVyLXJpZ2h0LFxuYm9keVtkaXI9XCJydGxcIl0gLm14LWhlYWRlci1sZWZ0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA5cHg7XG4gICAgcmlnaHQ6IDlweDtcbn1cbiIsIi5teC10aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICAgIG1hcmdpbi10b3A6IDBweDtcbn1cbiIsIi5teC1saXN0dmlldyB7XG4gICAgcGFkZGluZzogOHB4O1xufVxuLm14LWxpc3R2aWV3ID4gdWwge1xuICAgIHBhZGRpbmc6IDBweDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LWxpc3R2aWV3ID4gdWwgPiBsaSB7XG4gICAgcGFkZGluZzogNXB4IDEwcHggMTBweDtcbiAgICBib3JkZXI6IDFweCAjZGRkO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG4ubXgtbGlzdHZpZXcgPiB1bCA+IGxpOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcbn1cbi5teC1saXN0dmlldyA+IHVsID4gbGk6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7XG59XG4ubXgtbGlzdHZpZXcgbGk6bnRoLWNoaWxkKDJuKzEpIHtcbiAgICBiYWNrZ3JvdW5kOiAjZjlmOWY5O1xufVxuLm14LWxpc3R2aWV3IGxpOm50aC1jaGlsZCgybisxKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcbn1cbi5teC1saXN0dmlldyA+IHVsID4gbGkuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNlZWU7XG59XG4ubXgtbGlzdHZpZXctY2xpY2thYmxlIHVsICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1saXN0dmlldy1lbXB0eSB7XG4gICAgY29sb3I6ICM5OTk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm14LWxpc3R2aWV3IC5teC1saXN0dmlldy1sb2FkaW5nIHtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5teC1saXN0dmlldy1zZWFyY2hiYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbi5teC1saXN0dmlldy1zZWFyY2hiYXIgPiBpbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtbGlzdHZpZXctc2VhcmNoYmFyID4gYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xufVxuW2Rpcj1cInJ0bFwiXSAubXgtbGlzdHZpZXctc2VhcmNoYmFyID4gYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbi5teC1saXN0dmlldy1zZWxlY3Rpb24ge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwYWRkaW5nOiAwIDE1cHggMCA1cHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1saXN0dmlldy1zZWxlY3Rpb24ge1xuICAgIHBhZGRpbmc6IDAgNXB4IDAgMTVweDtcbn1cbi5teC1saXN0dmlldy1zZWxlY3RhYmxlIC5teC1saXN0dmlldy1jb250ZW50IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtbGlzdHZpZXcgLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kOiAjZGVmO1xufVxuLm14LWxpc3R2aWV3IC5teC10YWJsZSB0aCxcbi5teC1saXN0dmlldyAubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDJweDtcbn1cbiIsIi5teC1sb2dpbiAuZm9ybS1jb250cm9sIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xufVxuIiwiLm14LW1lbnViYXIge1xuICAgIHBhZGRpbmc6IDhweDtcbn1cbi5teC1tZW51YmFyLWljb24ge1xuICAgIGhlaWdodDogMTZweDtcbn1cbi5teC1tZW51YmFyLW1vcmUtaWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDTUFBQUFqQ0FZQUFBQWUyYk5aQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFLTkpSRUZVZU5waS9QLy9QOE5nQVV3TWd3aU1PbWJVTWFPT0dYWE1xR05HSFRQWUhNT0NUZkRzMmJNZVFLb09pSTFCWENCdU1qWTIza0ZyZFl6b1RRaWdSbThndFFXTEcwT0JCcXlobFRwYzBkU09JeFRyYUt3T3EyUFVjV2hXcDdFNnJJNjVpVVB6VFJxcncrcVlHaHlhbTJpc0R0TXh3RVMxQ1VnRkFmRnhxQkNJRGtKUGJOUldoelUzalJaNm80NFpkY3lvWTBZZE0rcVlVY2NNVXNjQUJCZ0FVWHBFakUvQnMvSUFBQUFBU1VWT1JLNUNZSUk9KSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDE2cHggMTZweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuIiwiLm14LW5hdmlnYXRpb25saXN0IHtcbiAgICBwYWRkaW5nOiA4cHg7XG59XG4ubXgtbmF2aWdhdGlvbmxpc3QgbGk6aG92ZXIsXG4ubXgtbmF2aWdhdGlvbmxpc3QgbGk6Zm9jdXMsXG4ubXgtbmF2aWdhdGlvbmxpc3QgbGkuYWN0aXZlIHtcbiAgICBjb2xvcjogI0ZGRjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ5OERCO1xufVxuLm14LW5hdmlnYXRpb25saXN0ICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1uYXZpZ2F0aW9ubGlzdCAudGFibGUgdGgsXG4ubXgtbmF2aWdhdGlvbmxpc3QgLnRhYmxlIHRkIHtcbiAgICBwYWRkaW5nOiAycHg7XG59XG4iLCIubXgtcHJvZ3Jlc3Mge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDMwJTtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIG1hcmdpbjogYXV0bztcbiAgICB3aWR0aDogMjUwcHg7XG4gICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgYmFja2dyb3VuZDogIzMzMztcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgei1pbmRleDogNTAwMDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgcGFkZGluZzogMjBweCAxNXB4O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC40cyBlYXNlLWluLW91dDtcbn1cbi5teC1wcm9ncmVzcy1oaWRkZW4ge1xuICAgIG9wYWNpdHk6IDA7XG59XG4ubXgtcHJvZ3Jlc3MtbWVzc2FnZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG59XG4ubXgtcHJvZ3Jlc3MtZW1wdHkgLm14LXByb2dyZXNzLW1lc3NhZ2Uge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4ubXgtcHJvZ3Jlc3MtaW5kaWNhdG9yIHtcbiAgICB3aWR0aDogNzBweDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhSZ0FLQU1RQUFEbzZPb0dCZ1ZwYVduQndjSTZPanF5c3JGSlNVbVJrWkQ4L1AweE1UTTdPenFlbnAxaFlXRjFkWFVoSVNISnljb2VIaDB0TFMxZFhWNmlvcU0vUHoyVmxaVDA5UFRjM04wQkFRSVdGaGRiVzFseGNYSzJ0clVGQlFUTXpNd0FBQUNIL0MwNUZWRk5EUVZCRk1pNHdBd0VBQUFBaCtRUUVEQUFBQUN3QUFBQUFSZ0FLQUFBRms2RG5YUmFHV1plb3JxU0pybkI3cHJBcXY3VjQweDdRL1VCQXpnZjhDV3ZFNGhHV0RBNkx4aEVVeU5OTmYxWHBOWHU1ZHJoZWt0Y0NzNHpMNTVYNVNsYVBNVjRNREg2VnIraFR1d29QMVl2NFJTWnhjNE4zaFh1SGYzRnJVMjBxakZDT0lwQkZraDZVUUphWVB5aGhNWjRzb0RhaVZsczlVMHNyVFZGSXFFOVFxU3FySFVzN09Ub2xNN2NqdVRnNXRyZkFJUUFoK1FRRURBQUFBQ3dBQUFBQUNnQUtBQUFGSktEbkhZV2lGSWZvUVZyclFxTXJhK1RzbG5acjV0ckpvN3dVYXdZVFZRb1VDa29VQWdBaCtRUUVEQUFBQUN3QUFBQUFHUUFLQUFBRldhRG5NY1N5RUpLb3JrZWhLTVdoUGx4dFA2c0thWHdQZVJLYmtNUElIWHBJellFd3RCRnloV1N2c0dqV0ZqbUZsS2VvV3JFcjdWYkJ0RDVYMFcyQllTVWF0MG9QYllqTGVYYkpuNGcwbVJDS2RpSVZCUlFVTVNJaEFDSDVCQVFNQUFBQUxBQUFBQUFvQUFvQUFBV0tvT2NsUXhBTWthaXVETEVzaExUT1I2RW94YUUyV2U4M005R0RReXcrZ2g2SVpzbUVlQ0srYUNZeGt4U3ZIQWFOeWRVY0JsTGZZRWJBRmdtelFwZFpDSVI3Z2RuQ1RGek1GT3Vsd3YyT3IrWjBkaXQ0ZVFwZ2IyTXJaWFJvSzJwNUJRbHZVek1NZEZsYmVUbzhVa0JCUTFoSFFVcGRUaUlrSmdOVVNCNHRFeE1FV3F3VkJSUVVPU0loQUNINUJBUU1BQUFBTEFBQUFBQTNBQW9BQUFXOG9PY2hoaUFZaUtpdXlSQUVRN1RPRExFc2hEU3ZSNkVvaFlQS3NTa2FIVHRQSThOc05wSVBqblQ2U0VJMDJDeGtaT3h1VXF0SWM1eEp6Q1RUTkljeE8yVGZtb1BCYXpUTUJ1VG1ZRVpRVHdrekJYQlpCUUowUlFJekFYbE1BVE1MZmxJTE13cURXQXFHaDRrcmk0eU9LNUNSa3l1VmxncHpoM1lyZUl4N0szMlJnQ3VDbGdVSWgxOHpDWXhsTkpGcmJaWnhIa1JlU0R0TFpFODdVV3BWTzFkd1d5SVlKU2RnU1MwdkEyWkpIalVURXdSczNoVUZGQlJCSWlFQUlma0VCQXdBQUFBc0FBQUFBRVlBQ2dBQUJmQ2c1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkROSzhNc1N3RXlVNTFLQ2dVaFlNSzBHazZBVVBIWmtwMURCdVpyTFl4ZkhDKzRNY1FvaW1iSVNPbnVwTmlVZDhiMlNxaXJXY1NNd2w0ejJITURtYUJHZ2NXYTA0V013WndWQVl6QTNaYUF6TUVmR0FFTXdXQ1pnVVloazBZTXdLTFV3SXpBWkJaQVRNTGxWOExNd3FhWlFxZG5xQXJvcU9sSzZlb3FpdXNyYThyc2JJS2haNklLNHFqalN1UHFKSXJsSzJYSzVteUJSZWViRE1JbzNFMHFIY3pESzE5ZjdLREhreHJVRHRTY0ZZN1dIWmNPMTU4WWp0a2dtZ2lKRXlnR0NJQ2d3c1ljb2JVdURFQUQ4RWVFeVlROEVPd1FnRUtGSktJQ0FFQUlma0VCQXdBQUFBc0R3QUFBRGNBQ2dBQUJicWc1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkROSzhNc1N3RWlRclFLUm9CTzQ5ancydzZrbzJNZE5wSVBqalk3R05rN0haU3JLWjRJMXRGcHVoTVlpYkp1amtNaTlkb21SbkdUY05za0o0T1pnUnZXUVFZYzBVWU13SjRUQUl6QVgxU0FUTUxnbGdMaFlhSUs0cUxqU3VQa0pJcmxKVUxjb1oxSzNlTGVpdDhrSDhyZ1pVRUY0WmZNd2lMWkRTUWFqTU1sWEFlUkY1SU8wdGpUenRSYVZVN1YyOWJJaVFtS0VraUdDNHdaVWsxTndOcjJEMFRFd1FNSWlFQUlma0VCQXdBQUFBc0hnQUFBQ2dBQ2dBQUJZZWc1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkRwQUpkN3dNemtXTkRMRHFDbmtabXlXeU1mTkJPaWxXc2JtU3JDSE9iU1ZpaVBzdk1ZQzBhWmdNdWM0QUI5ekF6UVprb21BWFV5MERiRFYvSjUzVXJkM2dCWDI1aUsyUnpaeXRwZUFNWGJsSXpDSE5YTkhoZEhqeFJRRUZEVmtkQlNseE9JaVFtS0VnaUdDNHdXRWcxTndNSklpRUFJZmtFQkF3QUFBQXNMUUFBQUJrQUNnQUFCVldnNTEwV2hsbVhxSzZJSVFnR29nSmRiUU9yNm14ODc0eTJZQ2ZGNmhrM0NJdlFac2taamowRFpsbkQ1QVJRbm1CS3RhNndXWUdTMmx3OXM0WUxkWmhEWkpFZW1oQ1g4K3lPUHhISmhLcXJNQzR3TWg0aEFDSDVCQVFNQUFBQUxEd0FBQUFLQUFvQUFBVWlvT2RkRm9aWmwrZ0JYZXNDb3l0MzVPeVdkbXZtM2NtanZCUnJCaE9SVENoUkNBQTcpO1xufVxuIiwiLm14LXJlbG9hZC1ub3RpZmljYXRpb24ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiAxMDAxO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxcmVtO1xuXG4gICAgYm9yZGVyOiAxcHggc29saWQgaHNsKDIwMCwgOTYlLCA0MSUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgyMDAsIDk2JSwgNDQlKTtcblxuICAgIGJveC1zaGFkb3c6IDAgNXB4IDIwcHggcmdiYSgxLCAzNywgNTUsIDAuMTYpO1xuICAgIGNvbG9yOiB3aGl0ZTtcblxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDE0cHg7XG59XG4iLCIubXgtcmVzaXplci1uLFxuLm14LXJlc2l6ZXItcyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMHB4O1xufVxuLm14LXJlc2l6ZXItbiB7XG4gICAgdG9wOiAtNXB4O1xuICAgIGN1cnNvcjogbi1yZXNpemU7XG59XG4ubXgtcmVzaXplci1zIHtcbiAgICBib3R0b206IC01cHg7XG4gICAgY3Vyc29yOiBzLXJlc2l6ZTtcbn1cblxuLm14LXJlc2l6ZXItZSxcbi5teC1yZXNpemVyLXcge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuLm14LXJlc2l6ZXItZSB7XG4gICAgcmlnaHQ6IC01cHg7XG4gICAgY3Vyc29yOiBlLXJlc2l6ZTtcbn1cbi5teC1yZXNpemVyLXcge1xuICAgIGxlZnQ6IC01cHg7XG4gICAgY3Vyc29yOiB3LXJlc2l6ZTtcbn1cblxuLm14LXJlc2l6ZXItbncsXG4ubXgtcmVzaXplci1uZSxcbi5teC1yZXNpemVyLXN3LFxuLm14LXJlc2l6ZXItc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XG59XG5cbi5teC1yZXNpemVyLW53LFxuLm14LXJlc2l6ZXItbmUge1xuICAgIHRvcDogLTVweDtcbn1cbi5teC1yZXNpemVyLXN3LFxuLm14LXJlc2l6ZXItc2Uge1xuICAgIGJvdHRvbTogLTVweDtcbn1cbi5teC1yZXNpemVyLW53LFxuLm14LXJlc2l6ZXItc3cge1xuICAgIGxlZnQ6IC01cHg7XG59XG4ubXgtcmVzaXplci1uZSxcbi5teC1yZXNpemVyLXNlIHtcbiAgICByaWdodDogLTVweDtcbn1cblxuLm14LXJlc2l6ZXItbncge1xuICAgIGN1cnNvcjogbnctcmVzaXplO1xufVxuLm14LXJlc2l6ZXItbmUge1xuICAgIGN1cnNvcjogbmUtcmVzaXplO1xufVxuLm14LXJlc2l6ZXItc3cge1xuICAgIGN1cnNvcjogc3ctcmVzaXplO1xufVxuLm14LXJlc2l6ZXItc2Uge1xuICAgIGN1cnNvcjogc2UtcmVzaXplO1xufVxuIiwiLm14LXRleHQge1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbn1cbiIsIi5teC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiBub25lO1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbn1cbi5teC10ZXh0YXJlYSAubXgtdGV4dGFyZWEtbm9yZXNpemUge1xuICAgIGhlaWdodDogYXV0bztcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG59XG4ubXgtdGV4dGFyZWEgLm14LXRleHRhcmVhLWNvdW50ZXIge1xuICAgIGZvbnQtc2l6ZTogc21hbGxlcjtcbn1cbi5teC10ZXh0YXJlYSAuZm9ybS1jb250cm9sLXN0YXRpYyB7XG4gICAgd2hpdGUtc3BhY2U6IHByZS1saW5lO1xufVxuIiwiLm14LXVuZGVybGF5IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xufVxuIiwiLm14LWltYWdlem9vbSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5O1xufVxuLm14LWltYWdlem9vbS13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLm14LWltYWdlem9vbS1pbWFnZSB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xufVxuIiwiLm14LWRyb3Bkb3duIGxpIHtcbiAgICBwYWRkaW5nOiAzcHggMjBweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZHJvcGRvd24gbGFiZWwge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY29sb3I6ICMzMzM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZHJvcGRvd24gaW5wdXQge1xuICAgIG1hcmdpbjogMDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1kcm9wZG93biAuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNmOGY4Zjg7XG59XG4ubXgtc2VsZWN0Ym94IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LXNlbGVjdGJveC1jYXJldC13cmFwcGVyIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuIiwiLm14LWRlbW91c2Vyc3dpdGNoZXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMzYwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDIwMDAwO1xuICAgIGJveC1zaGFkb3c6IC0xcHggMCA1cHggcmdiYSgyOCw1OSw4NiwuMik7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlci1jb250ZW50IHtcbiAgICBwYWRkaW5nOiA4MHB4IDQwcHggMjBweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgY29sb3I6ICMzODdlYTI7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU9nQUFBQmdDQVlBQUFBWFNqN05BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQXlScFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TXkxak1ERXhJRFkyTGpFME5UWTJNU3dnTWpBeE1pOHdNaTh3TmkweE5EbzFOam95TnlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVOVE5pQW9UV0ZqYVc1MGIzTm9LU0lnZUcxd1RVMDZTVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG8wTXprd09UUkVNRFEyTkVZeE1VVTBRVFE0TVVJNU5UTkdNVVEzUXpFNU55SWdlRzF3VFUwNlJHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEbzBNemt3T1RSRU1UUTJORVl4TVVVMFFUUTRNVUk1TlROR01VUTNRekU1TnlJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qYzBSRU15TVVaR05EWTBRekV4UlRSQk5EZ3hRamsxTTBZeFJEZERNVGszSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pjMFJFTXlNakF3TkRZMFF6RXhSVFJCTkRneFFqazFNMFl4UkRkRE1UazNJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrZzF0Umx3QUFFRkZKUkVGVWVOcnNuWWwzVmNVZHgyZHU4ckpESUpDd0NnalZhclZvc1ZYYzZqbldubnBJUWxKV2w2T0NyUFlma2gxY2l1d2xMRm81dFQzbFZKUlZFVVVFUlFRSlM0Q1FRRWpDUzk3MCs1Mlo5M0lUREd1Uzk4ajcvVGp6N3IyL2U5OTlaTzU4N205K003K1owY05YYnNxS2FUTmVLVlZvbEttT0tiWDM5RXNWS2wxRVY2MklLSzN3QjV1SGNZZy8zM3lDNHgybS9FMmpSRVNTTE1HSmw4dXZZcnNIaWR1aFNBK21Vd2FZaWhsUk0zSEdPdXp1Wlg0Zy9SbHBpdDY4TkZ1S2gwalNEWWd4emxBTVc3V3BDQmIwNlJqTmlEWUh6azZ2UEpaMm1iRnArYStKTEN4b0hyYm5vVnB0eW1lZGxXSWlrblJBS1VOWFZRMERvT01BcUlKMlg4MzB5cFBwQitteVFsL2xIWTNES0xaYlRmbnNMNldvaUNRZFVNcmdWVlZqQWVoSWFHTXhaWGFlbi83WGMybVpNWnVYVm1MenFGSTJmL1lCMm85TTJleW9GQm1ScEFKS0tWbTk4UkZvUndCUUZzZ2RnTFErVFNFZEIwQkxzWnNCUUd1d3Y4NlV6VGtqeFVZa3FZQlNpbGR2SEFkQWgyRzNDUloxUisyMFNRM3BDZW1TZ2RpVUFkQlJBTFFGKzl1UWRnTlVhZVVWU1I2Z2xBR3IvL0U0Tm9NQWFBTjgweDExMHlZMXBXMUdiVmxDdi9SMy92QVE5amVac3JsWHBBaUpkS2NFTnpqUDdoZFU3VlErMGhOOTFxeVBwR3RHd2Yrc3dvYmRNWmVRSGtENm05Nnk2SDRwUWlKSnM2RGVpa1pnUVIrSEJTMUNsYmZXYVBQWjVhbFRXdFBYa2k0dXNGVmVaUjV3Q3ZhZm1vOU42YnlyVXB4RWVoeFFTdjgxRzNJQUtDQTFoUUQwSFBaM1hVbGpTQjJvaTU3QjVua0FpbHFJdVlEOWpZRDB1QlFwa1I0SGxGSzRaa01lQUIwUFFQTUI2TmxXWlhZM1Q1MGFTM05JaXdIb2l3QjBqSEw5TWJ1UVBoRnJLdExqZ0ZMZ2crWUQwUEdnTWcrQW5zRjJUelROSWJXWnVIVWhxcnpxOS82dzFqWWdsYzcvVVlxWFNJOENTaWxZdTQ0VzlDa0F5bXJ2S2ZpbmUxdW5URE1DNmNJaDJQd0o2VmNBbFBteEY5YjFYMmJDL0NZcFppSTlCaWdsRDVDMnVyamRiQUJhRGRVK2dUUnNUWTJ6cHRxMitQNFRrSDRqT1NQU1k0QlNzdGV1TFFDZ1R3UFFMQnhXd3ovZFo2Wk1GMGd0cEF0S3NIa0JnTWE3WVk0QTJnL05oTGRxSlhkRWVnUlFTb1NRYXNQV3pBZ0FQVVZMQ2toamtxMCtjejljOEFRMlR5TDFVeTVzY2p2U0RvRGFLcmtqMHUyQVVqTFdyV0cvNEZNQWxPTW56K0NPZTh6a2x3VFNOa2laTHhNQTZDTmV4UzZaandEcEVja2RrVzRIMUVPYUQwQ2Z3bTRPN3NqeGs0UlVyRVE3VU4rK2p5OHlwSHU5Nmp1a2p3SHFCY2tka1c0RjFONW8zV3FHQTQ3SEhmT1VEUTgwdTgza2x3WFNhMEY5RnBzL0lQVlZkcnlwK3N4WGU2VzFWNlQ3QUUxQXFnMzlybndmWGJNTGtNb1l5bXNoemNYbUw4cU9ON1hDb1B2L0lPMEZxT0llaUhRUG9QYUc2MWZsT1F0aGFDSHE4QXM3emFSWG1pV3JmeEhVVWI3YUcyL3Q1Y0NFYmVLZmluUWJvQjdTSE44WDJCKy93SEdrbndOU0daclZPYWkveGVZeHBGRmU5Wk5peU9DRXR5UzJWd0R0bnE1THZmNkRMRnZvdE9HQVovaFhCcEMrZWtteS9JYitLV0V0OGFyRFNQOEdxS2NsZHdUUTdvQTBFNy9BUWM2RGZUL2dia0I2WHJMOXVwQnE1VUlHQ1dxaGNrSDRqRVQ2TDBDdGtSd1NRTHYrUnphczVOdytuRDRscG9MWUY2Ynl0V3JKK2h1Q0NqZEJ2YURhZ3ZBOXFCcWd6aGRRQmRDdWh2VHY3S2dmQVVENWd3Y0I2VkhKL3BzQ2xZMXR6M2tmMVQ0eWIxRzNBMVNaczFjQTdWSkl4d0xRa2Q0Z0hIV2d2aTd4dTdjRXFuNHNaRkhwbzM0S1VLVXhTUUR0b2gvYytONFFWMjJ6djN0S2FmV0ZxWGhkQWhwdUd0UUZCUFdQb2FvdnM1S0EvZy9waUNtZEx5ODhBZlNPSVdYd09BTWFzZ0RvUmV6dk1oVnZTRi9wcllIS1lJZW5rZTREb0lPOG1sWGVuVGo3bFNtZEp3RWlBdWlkUVBwdXZ2V3JORnNxRGNQY2RnTFNlbmtrdDVHWFd4YzhZMEZWeXJzUG1uM09YQXhxRjBDVnJpMEI5TFlocFFYbDhncTBBQzJLWTBvclpzak03YmNQS2h2aXhtSnZqRmZSZFRpbzJMMGxFNW9Kb0xmOW42aDZoMzJsdy8xVUlkOEMwaC9rMGR3SnFBdHBTVG5wK0VNaExhdS91NUVPbU5LNUVwZ3ZnTjR5cEhqekcxZEYwK29rOXZlYmlUT2w4ZWpPUUdXZ0EwZk9qTURSQ0srK0NwLzFBTFpmbXJLNUp5U1hCTkJiZ0hURllNVVJIbHBGQUdpZHJacE5uTmtvajZrcllGM0V5Q1NtKzFYaWtXdXVYTWVsRmZlYnNqbmlxd3FnTndWcEhnQmw1RkYvKzdaWFpvK1orS2FFQjNZZHFNVUE5RkZ2VmUveGFnNXhvMXZ4RlhTSFpKbEZBZlQ2LzZsTkt6SUJKZ3ZSRU8rWEhnU2tFbm5VMWZtOFpUR0h1VDNTd1ZkbEZmZ1FmVldrbzZaOHRyZ1pBbWhub0M1SDRURWp2RjlhYmYzUzhsa3Q4dGk2SEZUT216UlcyVVdoOUppMktqQUhrdXR2bFdzSlBvYThGMWdGMEk2UUxodGlDNDlXV1FDMHdmcWw1YlBFWCtvMldKZjBBNkQwVlVjck8zK1NqcDlxeFA1M09FZGdmMENOUmw2VUFtZ0MwbHlVRTFyVFltWDc5c3dCVkwya0JiSzc4MzN6RXVTMy9vMXlBOGtkcks2NHdFZlZkRGtZQzN6WVRKd3BMOHgwQnJTdHdDeWxYM3FQTHlYSFVWNitObVhpSS9WUTNoZmg4MEZrL1JoblhST1dsUS9qRkk2UFlJOE5UVCtiaWhreXIxSTZBdW9MQ254U3d5cFlnREp5R2Z0N1Rka2NDUkhzNlJxTjBteGdZdklOVEFucjJvejlZOHExQ2g4MUZXK2NreHhMSTBCOTFhdkErNlVEVUNyNHR2NEdrQjZUeDVrTVdKZHJWd1cyalV0czBCc1JzcTY4NGhMMFA5a2Fqd08zeGxTK0ppTnVlak9nb1FZTnh2SEcrL0k0Ync4NzNHVnR6bVErazZvVnVUNFdlTFNIZFdBb01JSWZET1Evb1dMQno2d09RMWN0c3o3MlVrQWRwSXM1bFFvYk1qaEZTQ09BWlFpYlZLdFNCdGgzKzNyTE9zcUhHN29KMFdKQi9BcldnR284cktkd0xWKzBaMlErNVY0Q3FJYzBSN2wrdkVIZUVUcUtsL1VoVXpwWEdwQlM3Vmx0ZkkvRERJY0QwT0hLTnZqcFVhR3pjVDgyNXNNUUFhcytBeDBEL1dzQ3BldlNiWm5MWGdGb0NOUnd3RDJiL3I4QXBIV0NSUW8vc3cwcmFVcUxMYlJLRHdXTWpNY2UxdWJISnFCbHErQlZEMm9OZEJmd3hRc1pTbk1GZ3d0WHBrNXBFa0R2Q2tnWGNRVEhRNjRCaVc5aXc3NjY3MDNwUEdtWXVGdWU0Zm9QTXF6dmFxZHIxU1dBa2RYaVlvRFp6NE5xb1NYWkdSN2tER01IcWRkQ1YwOUxpLzJMZ2RGczNlZHhQYTY2Y25aNjVWMFJYUEhraXUyWitMdnp0VkY5ZWgyZ2lZZThkWkdiUmRDOWZpOHFOaUNWenBQdW1MdFlNdGF0eWZLZ011Qy9DREFXQWRBaXhhM1JPUTVlRHpDM1JzY3RiOXdlTjBGM09YQWhqQTJFRnNlMHZFM2FUcTZ1bTNDdVVSdE4vemVLL1didGZPU3IwTVZDOTJvKzlPcUw3ZnA2SDM1L1c0RC9VN1pPL0xvT3NNMENaTmhxNkRsQ1MwZXd6Y1YxT2REeC81dURxN0d2OHFETGc0N1Yvd0p0MjFPMG5iK3gxd0xxSVVYVnlUeWc3QUs2ZHNRR1Y3cUdOWjB2SGVtOVRQcXNXYy9DM1E5UUZhTFFzeFpWQ1BnNHdWcGZIUGZWZGtFdmxVRm9BMTkxMWlHSTQ1K0JyVmJHd1ZZSnRQVzFzRnRkK0Y2MEJTRkE3ZFpDMW5hWDBIVWQ3aGZTYVJzdGh4ZUlVZlg2K2NXZjI3UEdmeG9kUDhKV3U3MlkxYnR6aVd2dE9XTkxmZnc2NC8vRmRIdy9acjhUaTkveG11KzA3Y2V2aVlYMEhmZGpmcjhWKzYzdDlQRy9NUDZ5TVNyeFZ6TmxYL2JXMU9wb1JiOVVMYmwxMTE3YnlYSGlDWVpmWnAzcE81N3JvTHZ6MTg2MUtuTVQxNFIxNWdiWG1jN3VwYS96M2M3T2RhSnZhOFc5d2JYdGZGQjFuU3F1dWdrTG1nTmRRVUNMcFRRdFZXN2dMRyt1dDFxd2FMQnVSc1BhcVlqZFY1cGZoU1hVR2FGNzBaSUhIUUJsOGJ3YUFyUlZXOHRMQkRRdE5NTWpvOVpTRzFwc1o3bHhkYU5tNzROUnNPaWFzZWFYdlRXM3hUa3pMVjZ2elFYN0FTbG5zMmZrQzZ0RXo2ck14dStSQjBkVU5FZGFldE5IbW55NmF5UkltMGNUemF0QitsVFppQmI3a3VNc2VNK3BTRk94bEZzUkFUUjFRTjJQengzS2RZNjdWY0V6bThhcHpPWnNLUTRpS2RlTzBwc2JpVzc0eDMrNGdGVmVocVRSNTRDUFlEalc4YmlaOEpaMHlZZ0lvQ2tDS1dkbzU0aU1JYjQxb2hicGEwQjZVWXFIaUFDYU9xQnlYbDVhMC9pYW5Cd1EvaTFBbGVCN0VRRTBkVUI5bXpHOUkrTWVLOUozaXZQeFNMVlhSQUJOR1VnNTN2UkJaVVBOckxEdjlLQ3NjQzBpZ0tZV3FFT1ZuWXZIOXAxU3pucFFaUTRlRVFFMGhVQmxueWtqa2ZLOGY4b1pBZzREVkJsb0xDS0FwZ2lrakxwNlNDVkNCcmthbS9vZTZVZUFLbE5RaWdpZ0tRSXFBN0RaZnpyRXEyaEZqOUNxQWxRSndoY1JRRk1FMUJMdm41WjRGY2Nqc3NYM3BMVDRpZ2lncVFNcUc1TFlMVFBRcXk1NVVFOExxQ0lDYU9xQVN0K1U4K3dNOEtwNlgvVTlKYUNLQ0tDcEErcG83NThXdFZsVWZkaUJPbDh5VzBRQVRSRlE2WjhPZGFEcWVOV1hyYjdWQUZVYWswUUUwTlFCVlE4SlZYMjVZdmdQeXFqanBuUytEQllYRVVCVEE5UUZJNzFGZFkxSmhxdUhxeCtaQUtwTTBpd2lnS1lJcUlSMEJBQ056K1JBSzNxQ3kvbVowbmtOa2tNaUFtZ3FaUHpXQlFSMGxFb0U1TnNaenhpTXozVTNhd0NyWkpLSUFKb0NvREl5NlY2L2JrbGNMbmxRVHdKVThWTUZVSkhrZzdxUXNiN3NvcUZsalhmUlJIMzE5eWRUT3ZleTVKSUFLcElhc0RMZ1liaUhWZmx1bXZOSXg3ajZseW1iSzkwMEFxaElDb0JhcU5xVzdYTmliSEErcDJNNUFWREZxZ3FnSXNrSGRaRmZ4Vm9OQnFBRFEyZHFQYXpWcG15T2ROVUlvQ0pKZjJCYkZ0RS92Y2Y1cWJyQXE5bVFkTnI3cStkTTJXeDVxQUtvU1BKaFhVdy9sZjJxZzBKYUxtMVFEVXQ3MHBUUGxxbERCVkNSRkFBMTExdFZWSC8xQU8rclVoajRjQkk2d0RwTC9GVUJWQ1Q1c0M3aFVvdkR1SDZtY3NzdXFsQ3cvaWttd0NycnBBcWdJa2wvdUp1WERGUnVPWG5DV2hBNjAyQmhOWW9ydnRXWmlXOUtaZ21nSXNtRmRTbGg5ZU5VN2NLMjhXb3cxNkxrZEtKbkZFTU1KODZVeUNVQlZDUzVzQzRyc3JBYU93U3VNTFNJTGdNZ3p1SDRETTZkTlJVenJraHVDYUFpeVN3QW01YWg2cXZaQ2x5c3dwRkxiWTFNTlRobUVQOTVVL0dHOUxVS29DTEpnM1U1NDRFQnF5N3gxalUzQWF4RDlxSUg5anlPYWszbDYxSWRGa0JGa2xZNHFsYjBkVmJWZHQyRSsxcUphOHdCcXhramZJSEpWTDRtRTNnTG9DTEpnZlVkcnNaTzMzV0FiUlZPaEJ3bS9GY1VwS0FlMk5aNlM0dXR2bXdtdlNLWko0Q0s5SGpCMmZndWdlM25yU3ZCTFFHZ3JwbXA3YXFvQTlWYTJqb2dYR2Ntdjl3b3VTZUFpdlE0c08vQmxBWjlBV2gvSFBiMzhCWjBxQlpUb2haV1oyWHJzVjhQZllPWk1sMkcwQW1nSWoxYXVEYXNqSVJnN1FjUTZkUG1ocXJGWVgvMkNtR0ZEV1pJNHFWQTZVc0VOenAxYWt3QUZSSHBxUUszL29Nc2ZIS2NLMU5mR3pSaFZKODRySUcvTG5EZ21zQUZValJrdUxWdkdqS01qWUpxZ0w2eGJ0cmtxQUFxSXRMZGhYRGRhbktaajcwK2dRdEp4RmIzSWJpQkJ6ZkRYd3RBUGNCVzN4SzRlWWFiQXFPNWJmUkFOMnUzNmx3ejlNMm5YNnE0SzYzdytCWGJBd0ZVSkdVbHNuYXRCbkE1QUM0L3d3S3M4Z0VvdDNtQnF5cEhFaGEzUGJpSlNqVDFnWnZiQ2RCcXprVWNoWTdIVVczWGVOVlJmNzVGRzgxdUl1T09OZThZWmZVYjMydnRjTytXUTYrKzJBNmNoOS9meHAvTTFDWitsZjNNME81ckVmd21WUkZ0VCtsTWZHVGFZNlBwQm1UaW9peXY1M0dXTWpwYjIvTUNxTWhkS29Wck5tUTZVRlV1QU1peFd3ZHVGZ3AzTm81em9NOEtQRnR4Yk9NdzZ3N1ZhdjFMa0p2UTkwSjYzY2tMb1FPZzdWNFV2NlR2N0Q0QWxQc3hBVlNrMTh2UVZWVzBTckJJT3N0YnM0aTNaaEZ2aGVQV2pEWHB3QjNyd0ZvNW83QzErakJFc0pUV0lvWjF4bG5oZG9DMmF0ZngxSUxmdEZ0M2JQVnhxMjJ0dWJmYVVhKy9Da0NiZDg3NFkvVC9BZ3dBMk1pN0hkQWUraWtBQUFBQVNVVk9SSzVDWUlJPSkgdG9wIHJpZ2h0IG5vLXJlcGVhdCAjMWIzMTQ5O1xuICAgIC8qIGJhY2tncm91bmQtYXR0YWNoZW1lbnQgbG9jYWwgaXMgbm90IHN1cHBvcnRlZCBvbiBJRThcbiAgICAgKiB3aGVuIHRoaXMgaXMgcGFydCBvZiBiYWNrZ3JvdW5kIHRoZSBjb21wbGV0ZSBiYWNrZ3JvdW5kIGlzIGlnbm9yZWQgKi9cbiAgICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGxvY2FsO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXIgdWwge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luLXRvcDogMjVweDtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM0OTYwNzY7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgY29sb3I6ICMzODdlYTI7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM0OTYwNzY7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBoMiB7XG4gICAgbWFyZ2luOiAyMHB4IDAgNXB4O1xuICAgIGNvbG9yOiAjNWJjNGZlO1xuICAgIGZvbnQtc2l6ZTogMjhweDtcbn1cbi5teC1kZW1vdXNlcnN3aXRjaGVyIGgzIHtcbiAgICBtYXJnaW46IDAgMCAycHg7XG4gICAgY29sb3I6ICM1YmM0ZmU7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXIgLmFjdGl2ZSBoMyB7XG4gICAgY29sb3I6ICMxMWVmZGI7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXItdG9nZ2xlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAyNSU7XG4gICAgbGVmdDogLTM1cHg7XG4gICAgd2lkdGg6IDM1cHg7XG4gICAgaGVpZ2h0OiAzOHB4O1xuICAgIG1hcmdpbi10b3A6IC00MHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4O1xuICAgIGJveC1zaGFkb3c6IC0xcHggMCA1cHggcmdiYSgyOCw1OSw4NiwuMik7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQklBQUFBU0NBWUFBQUJXem81WEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeVJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNeTFqTURFeElEWTJMakUwTlRZMk1Td2dNakF4TWk4d01pOHdOaTB4TkRvMU5qb3lOeUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTmlBb1RXRmphVzUwYjNOb0tTSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEbzNORVJETWpGR1JEUTJORU14TVVVMFFUUTRNVUk1TlROR01VUTNRekU1TnlJZ2VHMXdUVTA2Ukc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvM05FUkRNakZHUlRRMk5FTXhNVVUwUVRRNE1VSTVOVE5HTVVRM1F6RTVOeUkrSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pjMFJFTXlNVVpDTkRZMFF6RXhSVFJCTkRneFFqazFNMFl4UkRkRE1UazNJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPamMwUkVNeU1VWkRORFkwUXpFeFJUUkJORGd4UWprMU0wWXhSRGRETVRrM0lpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCsxWm92TkFBQUFXZEpSRUZVZU5xTTFNMHJSRkVZeC9FN1k1cUlRcE9VYklpeW1RV3lzQmd2SlZKSzJWZ3J5WlF0S1NVTFplbFBzQjBMWmFOWmpKVU5LMUZza0pxVXZDUzNOQXNaYzN6UDlOemlPT2ZlZWVwVGM4L2M4K3ZjOHhaVFNubU9ha0VHS2R6Z0RCWFh5NTRPTXNTd2pwTDZXOWNZc3J4ZlpXdmNVdTd5MFZkTFVDYytWWGdkMm9MaXhwZk9JT21GMTdUdEhUT296WXV1cEN4QWFOQjlEVUVmZURVYkU4YnpFWHhaZXJQMDBsOGhoM0xVaUhUSU1yNk45ajJrc1lvaWh2LzFkZXlMU1Z6S0ttMWpFVytXZlpWMkxmOGdza2pJY3djV3BPTSsrcEhDRlBMb3NnV3RvQ3lkN2pDUE9qemhHSEhMeURQWTFhY2hhSmhEeFJqNnJCd0pYVXVvTjBJRzhJSXY3T2lHQmp4YWR2QUlUdVQzcmV4NmMwU2JLQVNmbG5VY0JUM0pUVGhBanlXa0dVVnNCRUVGUjVDZXJ6WHBOSWFjckZJckpuQ0JCM211QnZraEIxVFAyN2hNL0x2eDN6bDZneEhxdTZjNzRraVU4SXhHaktKZExyclQzeGZkandBREFKYU14UDJidkQyQkFBQUFBRWxGVGtTdVFtQ0MpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0ICMxYjMxNDk7XG59XG4iLCIvKiBtYXN0ZXIgZGV0YWlscyBzY3JlZW4gZm9yIG1vYmlsZSAqL1xuLm14LW1hc3Rlci1kZXRhaWwtc2NyZWVuIHtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLXNjcmVlbiAubXgtbWFzdGVyLWRldGFpbC1kZXRhaWxzIHtcbiAgICBwYWRkaW5nOiAxNXB4O1xufVxuXG4ubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNztcbn1cblxuLm14LW1hc3Rlci1kZXRhaWwtc2NyZWVuLWhlYWRlci1jYXB0aW9uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxN3B4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLXNjcmVlbi1oZWFkZXItY2xvc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDUwcHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiAjMDA3YWZmO1xufVxuXG5ib2R5W2Rpcj1cInJ0bFwiXSAubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyLWNsb3NlIHtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0OiBhdXRvO1xufVxuXG4ubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyLWNsb3NlOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFwyMDM5XCI7XG4gICAgZm9udC1zaXplOiA1MnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xufVxuXG4vKiBjbGFzc2VzIGZvciBjb250ZW50IHBhZ2UgKi9cbi5teC1tYXN0ZXItZGV0YWlsLWNvbnRlbnQtZml4IHtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLWNvbnRlbnQtaGlkZGVuIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMCUpO1xufVxuXG5ib2R5W2Rpcj1cInJ0bFwiXSAubXgtbWFzdGVyLWRldGFpbC1jb250ZW50LWhpZGRlbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwMCUpO1xufSIsIi5yZXBvcnRpbmdSZXBvcnQge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbiIsIi5yZXBvcnRpbmdSZXBvcnRQYXJhbWV0ZXIgdGgge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuIiwiLnJlcG9ydGluZ0RhdGVSYW5nZSB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbn1cbi5yZXBvcnRpbmdEYXRlUmFuZ2UgdGgge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xufVxuLnJlcG9ydGluZ0RhdGVSYW5nZSB0ZCB7XG4gICAgcGFkZGluZzogNXB4O1xufVxuIiwiLm14LXJlcG9ydG1hdHJpeCB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0aCwgLm14LXJlcG9ydG1hdHJpeCB0ZCB7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzO1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZCB7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0Ym9keSB0cjpudGgtY2hpbGQoMm4rMSkgdGQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG59XG5cbi5teC1yZXBvcnRtYXRyaXggdGJvZHkgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDE2cHg7XG4gICAgbWF4LWhlaWdodDogMTZweDtcbn1cbiIsIi8qIFdBUk5JTkc6IElFOSBsaW1pdHMgbmVzdGVkIGltcG9ydHMgdG8gdGhyZWUgbGV2ZWxzIGRlZXA6IGh0dHA6Ly9qb3JnZWFsYmFsYWRlam8uY29tLzIwMTEvMDUvMjgvaW50ZXJuZXQtZXhwbG9yZXItbGltaXRzLW5lc3RlZC1pbXBvcnQtY3NzLXN0YXRlbWVudHMgKi9cblxuLyogZGlqaXQgYmFzZSAqL1xuXG4vKiBtZW5kaXggYmFzZSAqL1xuXG4vKiB3aWRnZXRzICovXG5cbi8qIHJlcG9ydGluZyAqL1xuIl0sInNvdXJjZVJvb3QiOiIifQ==*/ diff --git a/theme/styles/web/sass/core/_legacy/bootstrap/_bootstrap-rtl.scss b/theme/styles/web/sass/core/_legacy/bootstrap/_bootstrap-rtl.scss deleted file mode 100644 index 8c768d5..0000000 --- a/theme/styles/web/sass/core/_legacy/bootstrap/_bootstrap-rtl.scss +++ /dev/null @@ -1,1570 +0,0 @@ -/******************************************************************************* - * bootstrap-rtl (version 3.3.4) - * Author: Morteza Ansarinia (http://github.com/morteza) - * Created on: August 13,2015 - * Project: bootstrap-rtl - * Copyright: Unlicensed Public Domain - *******************************************************************************/ - -[dir='rtl'] { - .flip.text-left { - text-align: right; - } - .flip.text-right { - text-align: left; - } - .list-unstyled { - padding-right: 0; - padding-left: initial; - } - .list-inline { - padding-right: 0; - padding-left: initial; - margin-right: -5px; - margin-left: 0; - } - dd { - margin-right: 0; - margin-left: initial; - } - @media (min-width: 768px) { - .dl-horizontal dt { - float: right; - clear: right; - text-align: left; - } - .dl-horizontal dd { - margin-right: 180px; - margin-left: 0; - } - } - blockquote { - border-right: 5px solid #eeeeee; - border-left: 0; - } - .blockquote-reverse, - blockquote.pull-left { - padding-left: 15px; - padding-right: 0; - border-left: 5px solid #eeeeee; - border-right: 0; - text-align: left; - } - .col-xs-1, - .col-sm-1, - .col-md-1, - .col-lg-1, - .col-xs-2, - .col-sm-2, - .col-md-2, - .col-lg-2, - .col-xs-3, - .col-sm-3, - .col-md-3, - .col-lg-3, - .col-xs-4, - .col-sm-4, - .col-md-4, - .col-lg-4, - .col-xs-5, - .col-sm-5, - .col-md-5, - .col-lg-5, - .col-xs-6, - .col-sm-6, - .col-md-6, - .col-lg-6, - .col-xs-7, - .col-sm-7, - .col-md-7, - .col-lg-7, - .col-xs-8, - .col-sm-8, - .col-md-8, - .col-lg-8, - .col-xs-9, - .col-sm-9, - .col-md-9, - .col-lg-9, - .col-xs-10, - .col-sm-10, - .col-md-10, - .col-lg-10, - .col-xs-11, - .col-sm-11, - .col-md-11, - .col-lg-11, - .col-xs-12, - .col-sm-12, - .col-md-12, - .col-lg-12 { - position: relative; - min-height: 1px; - padding-left: 15px; - padding-right: 15px; - } - .col-xs-1, - .col-xs-2, - .col-xs-3, - .col-xs-4, - .col-xs-5, - .col-xs-6, - .col-xs-7, - .col-xs-8, - .col-xs-9, - .col-xs-10, - .col-xs-11, - .col-xs-12 { - float: right; - } - .col-xs-12 { - width: 100%; - } - .col-xs-11 { - width: 91.66666667%; - } - .col-xs-10 { - width: 83.33333333%; - } - .col-xs-9 { - width: 75%; - } - .col-xs-8 { - width: 66.66666667%; - } - .col-xs-7 { - width: 58.33333333%; - } - .col-xs-6 { - width: 50%; - } - .col-xs-5 { - width: 41.66666667%; - } - .col-xs-4 { - width: 33.33333333%; - } - .col-xs-3 { - width: 25%; - } - .col-xs-2 { - width: 16.66666667%; - } - .col-xs-1 { - width: 8.33333333%; - } - .col-xs-pull-12 { - left: 100%; - right: auto; - } - .col-xs-pull-11 { - left: 91.66666667%; - right: auto; - } - .col-xs-pull-10 { - left: 83.33333333%; - right: auto; - } - .col-xs-pull-9 { - left: 75%; - right: auto; - } - .col-xs-pull-8 { - left: 66.66666667%; - right: auto; - } - .col-xs-pull-7 { - left: 58.33333333%; - right: auto; - } - .col-xs-pull-6 { - left: 50%; - right: auto; - } - .col-xs-pull-5 { - left: 41.66666667%; - right: auto; - } - .col-xs-pull-4 { - left: 33.33333333%; - right: auto; - } - .col-xs-pull-3 { - left: 25%; - right: auto; - } - .col-xs-pull-2 { - left: 16.66666667%; - right: auto; - } - .col-xs-pull-1 { - left: 8.33333333%; - right: auto; - } - .col-xs-pull-0 { - left: auto; - right: auto; - } - .col-xs-push-12 { - right: 100%; - left: 0; - } - .col-xs-push-11 { - right: 91.66666667%; - left: 0; - } - .col-xs-push-10 { - right: 83.33333333%; - left: 0; - } - .col-xs-push-9 { - right: 75%; - left: 0; - } - .col-xs-push-8 { - right: 66.66666667%; - left: 0; - } - .col-xs-push-7 { - right: 58.33333333%; - left: 0; - } - .col-xs-push-6 { - right: 50%; - left: 0; - } - .col-xs-push-5 { - right: 41.66666667%; - left: 0; - } - .col-xs-push-4 { - right: 33.33333333%; - left: 0; - } - .col-xs-push-3 { - right: 25%; - left: 0; - } - .col-xs-push-2 { - right: 16.66666667%; - left: 0; - } - .col-xs-push-1 { - right: 8.33333333%; - left: 0; - } - .col-xs-push-0 { - right: auto; - left: 0; - } - .col-xs-offset-12 { - margin-right: 100%; - margin-left: 0; - } - .col-xs-offset-11 { - margin-right: 91.66666667%; - margin-left: 0; - } - .col-xs-offset-10 { - margin-right: 83.33333333%; - margin-left: 0; - } - .col-xs-offset-9 { - margin-right: 75%; - margin-left: 0; - } - .col-xs-offset-8 { - margin-right: 66.66666667%; - margin-left: 0; - } - .col-xs-offset-7 { - margin-right: 58.33333333%; - margin-left: 0; - } - .col-xs-offset-6 { - margin-right: 50%; - margin-left: 0; - } - .col-xs-offset-5 { - margin-right: 41.66666667%; - margin-left: 0; - } - .col-xs-offset-4 { - margin-right: 33.33333333%; - margin-left: 0; - } - .col-xs-offset-3 { - margin-right: 25%; - margin-left: 0; - } - .col-xs-offset-2 { - margin-right: 16.66666667%; - margin-left: 0; - } - .col-xs-offset-1 { - margin-right: 8.33333333%; - margin-left: 0; - } - .col-xs-offset-0 { - margin-right: 0%; - margin-left: 0; - } - @media (min-width: 768px) { - .col-sm-1, - .col-sm-2, - .col-sm-3, - .col-sm-4, - .col-sm-5, - .col-sm-6, - .col-sm-7, - .col-sm-8, - .col-sm-9, - .col-sm-10, - .col-sm-11, - .col-sm-12 { - float: right; - } - .col-sm-12 { - width: 100%; - } - .col-sm-11 { - width: 91.66666667%; - } - .col-sm-10 { - width: 83.33333333%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-8 { - width: 66.66666667%; - } - .col-sm-7 { - width: 58.33333333%; - } - .col-sm-6 { - width: 50%; - } - .col-sm-5 { - width: 41.66666667%; - } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-2 { - width: 16.66666667%; - } - .col-sm-1 { - width: 8.33333333%; - } - .col-sm-pull-12 { - left: 100%; - right: auto; - } - .col-sm-pull-11 { - left: 91.66666667%; - right: auto; - } - .col-sm-pull-10 { - left: 83.33333333%; - right: auto; - } - .col-sm-pull-9 { - left: 75%; - right: auto; - } - .col-sm-pull-8 { - left: 66.66666667%; - right: auto; - } - .col-sm-pull-7 { - left: 58.33333333%; - right: auto; - } - .col-sm-pull-6 { - left: 50%; - right: auto; - } - .col-sm-pull-5 { - left: 41.66666667%; - right: auto; - } - .col-sm-pull-4 { - left: 33.33333333%; - right: auto; - } - .col-sm-pull-3 { - left: 25%; - right: auto; - } - .col-sm-pull-2 { - left: 16.66666667%; - right: auto; - } - .col-sm-pull-1 { - left: 8.33333333%; - right: auto; - } - .col-sm-pull-0 { - left: auto; - right: auto; - } - .col-sm-push-12 { - right: 100%; - left: 0; - } - .col-sm-push-11 { - right: 91.66666667%; - left: 0; - } - .col-sm-push-10 { - right: 83.33333333%; - left: 0; - } - .col-sm-push-9 { - right: 75%; - left: 0; - } - .col-sm-push-8 { - right: 66.66666667%; - left: 0; - } - .col-sm-push-7 { - right: 58.33333333%; - left: 0; - } - .col-sm-push-6 { - right: 50%; - left: 0; - } - .col-sm-push-5 { - right: 41.66666667%; - left: 0; - } - .col-sm-push-4 { - right: 33.33333333%; - left: 0; - } - .col-sm-push-3 { - right: 25%; - left: 0; - } - .col-sm-push-2 { - right: 16.66666667%; - left: 0; - } - .col-sm-push-1 { - right: 8.33333333%; - left: 0; - } - .col-sm-push-0 { - right: auto; - left: 0; - } - .col-sm-offset-12 { - margin-right: 100%; - margin-left: 0; - } - .col-sm-offset-11 { - margin-right: 91.66666667%; - margin-left: 0; - } - .col-sm-offset-10 { - margin-right: 83.33333333%; - margin-left: 0; - } - .col-sm-offset-9 { - margin-right: 75%; - margin-left: 0; - } - .col-sm-offset-8 { - margin-right: 66.66666667%; - margin-left: 0; - } - .col-sm-offset-7 { - margin-right: 58.33333333%; - margin-left: 0; - } - .col-sm-offset-6 { - margin-right: 50%; - margin-left: 0; - } - .col-sm-offset-5 { - margin-right: 41.66666667%; - margin-left: 0; - } - .col-sm-offset-4 { - margin-right: 33.33333333%; - margin-left: 0; - } - .col-sm-offset-3 { - margin-right: 25%; - margin-left: 0; - } - .col-sm-offset-2 { - margin-right: 16.66666667%; - margin-left: 0; - } - .col-sm-offset-1 { - margin-right: 8.33333333%; - margin-left: 0; - } - .col-sm-offset-0 { - margin-right: 0%; - margin-left: 0; - } - } - @media (min-width: 992px) { - .col-md-1, - .col-md-2, - .col-md-3, - .col-md-4, - .col-md-5, - .col-md-6, - .col-md-7, - .col-md-8, - .col-md-9, - .col-md-10, - .col-md-11, - .col-md-12 { - float: right; - } - .col-md-12 { - width: 100%; - } - .col-md-11 { - width: 91.66666667%; - } - .col-md-10 { - width: 83.33333333%; - } - .col-md-9 { - width: 75%; - } - .col-md-8 { - width: 66.66666667%; - } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; - } - .col-md-5 { - width: 41.66666667%; - } - .col-md-4 { - width: 33.33333333%; - } - .col-md-3 { - width: 25%; - } - .col-md-2 { - width: 16.66666667%; - } - .col-md-1 { - width: 8.33333333%; - } - .col-md-pull-12 { - left: 100%; - right: auto; - } - .col-md-pull-11 { - left: 91.66666667%; - right: auto; - } - .col-md-pull-10 { - left: 83.33333333%; - right: auto; - } - .col-md-pull-9 { - left: 75%; - right: auto; - } - .col-md-pull-8 { - left: 66.66666667%; - right: auto; - } - .col-md-pull-7 { - left: 58.33333333%; - right: auto; - } - .col-md-pull-6 { - left: 50%; - right: auto; - } - .col-md-pull-5 { - left: 41.66666667%; - right: auto; - } - .col-md-pull-4 { - left: 33.33333333%; - right: auto; - } - .col-md-pull-3 { - left: 25%; - right: auto; - } - .col-md-pull-2 { - left: 16.66666667%; - right: auto; - } - .col-md-pull-1 { - left: 8.33333333%; - right: auto; - } - .col-md-pull-0 { - left: auto; - right: auto; - } - .col-md-push-12 { - right: 100%; - left: 0; - } - .col-md-push-11 { - right: 91.66666667%; - left: 0; - } - .col-md-push-10 { - right: 83.33333333%; - left: 0; - } - .col-md-push-9 { - right: 75%; - left: 0; - } - .col-md-push-8 { - right: 66.66666667%; - left: 0; - } - .col-md-push-7 { - right: 58.33333333%; - left: 0; - } - .col-md-push-6 { - right: 50%; - left: 0; - } - .col-md-push-5 { - right: 41.66666667%; - left: 0; - } - .col-md-push-4 { - right: 33.33333333%; - left: 0; - } - .col-md-push-3 { - right: 25%; - left: 0; - } - .col-md-push-2 { - right: 16.66666667%; - left: 0; - } - .col-md-push-1 { - right: 8.33333333%; - left: 0; - } - .col-md-push-0 { - right: auto; - left: 0; - } - .col-md-offset-12 { - margin-right: 100%; - margin-left: 0; - } - .col-md-offset-11 { - margin-right: 91.66666667%; - margin-left: 0; - } - .col-md-offset-10 { - margin-right: 83.33333333%; - margin-left: 0; - } - .col-md-offset-9 { - margin-right: 75%; - margin-left: 0; - } - .col-md-offset-8 { - margin-right: 66.66666667%; - margin-left: 0; - } - .col-md-offset-7 { - margin-right: 58.33333333%; - margin-left: 0; - } - .col-md-offset-6 { - margin-right: 50%; - margin-left: 0; - } - .col-md-offset-5 { - margin-right: 41.66666667%; - margin-left: 0; - } - .col-md-offset-4 { - margin-right: 33.33333333%; - margin-left: 0; - } - .col-md-offset-3 { - margin-right: 25%; - margin-left: 0; - } - .col-md-offset-2 { - margin-right: 16.66666667%; - margin-left: 0; - } - .col-md-offset-1 { - margin-right: 8.33333333%; - margin-left: 0; - } - .col-md-offset-0 { - margin-right: 0%; - margin-left: 0; - } - } - @media (min-width: 1200px) { - .col-lg-1, - .col-lg-2, - .col-lg-3, - .col-lg-4, - .col-lg-5, - .col-lg-6, - .col-lg-7, - .col-lg-8, - .col-lg-9, - .col-lg-10, - .col-lg-11, - .col-lg-12 { - float: right; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-pull-12 { - left: 100%; - right: auto; - } - .col-lg-pull-11 { - left: 91.66666667%; - right: auto; - } - .col-lg-pull-10 { - left: 83.33333333%; - right: auto; - } - .col-lg-pull-9 { - left: 75%; - right: auto; - } - .col-lg-pull-8 { - left: 66.66666667%; - right: auto; - } - .col-lg-pull-7 { - left: 58.33333333%; - right: auto; - } - .col-lg-pull-6 { - left: 50%; - right: auto; - } - .col-lg-pull-5 { - left: 41.66666667%; - right: auto; - } - .col-lg-pull-4 { - left: 33.33333333%; - right: auto; - } - .col-lg-pull-3 { - left: 25%; - right: auto; - } - .col-lg-pull-2 { - left: 16.66666667%; - right: auto; - } - .col-lg-pull-1 { - left: 8.33333333%; - right: auto; - } - .col-lg-pull-0 { - left: auto; - right: auto; - } - .col-lg-push-12 { - right: 100%; - left: 0; - } - .col-lg-push-11 { - right: 91.66666667%; - left: 0; - } - .col-lg-push-10 { - right: 83.33333333%; - left: 0; - } - .col-lg-push-9 { - right: 75%; - left: 0; - } - .col-lg-push-8 { - right: 66.66666667%; - left: 0; - } - .col-lg-push-7 { - right: 58.33333333%; - left: 0; - } - .col-lg-push-6 { - right: 50%; - left: 0; - } - .col-lg-push-5 { - right: 41.66666667%; - left: 0; - } - .col-lg-push-4 { - right: 33.33333333%; - left: 0; - } - .col-lg-push-3 { - right: 25%; - left: 0; - } - .col-lg-push-2 { - right: 16.66666667%; - left: 0; - } - .col-lg-push-1 { - right: 8.33333333%; - left: 0; - } - .col-lg-push-0 { - right: auto; - left: 0; - } - .col-lg-offset-12 { - margin-right: 100%; - margin-left: 0; - } - .col-lg-offset-11 { - margin-right: 91.66666667%; - margin-left: 0; - } - .col-lg-offset-10 { - margin-right: 83.33333333%; - margin-left: 0; - } - .col-lg-offset-9 { - margin-right: 75%; - margin-left: 0; - } - .col-lg-offset-8 { - margin-right: 66.66666667%; - margin-left: 0; - } - .col-lg-offset-7 { - margin-right: 58.33333333%; - margin-left: 0; - } - .col-lg-offset-6 { - margin-right: 50%; - margin-left: 0; - } - .col-lg-offset-5 { - margin-right: 41.66666667%; - margin-left: 0; - } - .col-lg-offset-4 { - margin-right: 33.33333333%; - margin-left: 0; - } - .col-lg-offset-3 { - margin-right: 25%; - margin-left: 0; - } - .col-lg-offset-2 { - margin-right: 16.66666667%; - margin-left: 0; - } - .col-lg-offset-1 { - margin-right: 8.33333333%; - margin-left: 0; - } - .col-lg-offset-0 { - margin-right: 0%; - margin-left: 0; - } - } - caption { - text-align: right; - } - th:not(.mx-left-aligned) { - text-align: right; - } - @media screen and (max-width: 767px) { - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-right: 0; - border-left: initial; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-left: 0; - border-right: initial; - } - } - .radio label, - .checkbox label { - padding-right: 20px; - padding-left: initial; - } - .radio input[type='radio'], - .radio-inline input[type='radio'], - .checkbox input[type='checkbox'], - .checkbox-inline input[type='checkbox'] { - margin-right: -20px; - margin-left: auto; - } - .radio-inline, - .checkbox-inline { - padding-right: 20px; - padding-left: 0; - } - .radio-inline + .radio-inline, - .checkbox-inline + .checkbox-inline { - margin-right: 10px; - margin-left: 0; - } - .has-feedback .form-control { - padding-left: 42.5px; - padding-right: 12px; - } - .form-control-feedback { - left: 0; - right: auto; - } - @media (min-width: 768px) { - .form-inline label { - padding-right: 0; - padding-left: initial; - } - .form-inline .radio input[type='radio'], - .form-inline .checkbox input[type='checkbox'] { - margin-right: 0; - margin-left: auto; - } - } - @media (min-width: 768px) { - .form-horizontal .control-label { - text-align: left; - } - } - .form-horizontal .has-feedback .form-control-feedback { - left: 15px; - right: auto; - } - .caret { - margin-right: 2px; - margin-left: 0; - } - .dropdown-menu { - right: 0; - left: auto; - float: left; - text-align: right; - } - .dropdown-menu.pull-right { - left: 0; - right: auto; - float: right; - } - .dropdown-menu-right { - left: auto; - right: 0; - } - .dropdown-menu-left { - left: 0; - right: auto; - } - @media (min-width: 768px) { - .navbar-right .dropdown-menu { - left: auto; - right: 0; - } - .navbar-right .dropdown-menu-left { - left: 0; - right: auto; - } - } - .btn-group > .btn, - .btn-group-vertical > .btn { - float: right; - } - .btn-group .btn + .btn, - .btn-group .btn + .btn-group, - .btn-group .btn-group + .btn, - .btn-group .btn-group + .btn-group { - margin-right: -1px; - margin-left: 0px; - } - .btn-toolbar { - margin-right: -5px; - margin-left: 0px; - } - .btn-toolbar .btn-group, - .btn-toolbar .input-group { - float: right; - } - .btn-toolbar > .btn, - .btn-toolbar > .btn-group, - .btn-toolbar > .input-group { - margin-right: 5px; - margin-left: 0px; - } - .btn-group > .btn:first-child { - margin-right: 0; - } - .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 0; - border-top-left-radius: 0; - } - .btn-group > .btn:last-child:not(:first-child), - .btn-group > .dropdown-toggle:not(:first-child) { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 0; - border-top-right-radius: 0; - } - .btn-group > .btn-group { - float: right; - } - .btn-group.btn-group-justified > .btn, - .btn-group.btn-group-justified > .btn-group { - float: none; - } - .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; - } - .btn-group > .btn-group:first-child > .btn:last-child, - .btn-group > .btn-group:first-child > .dropdown-toggle { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 0; - border-top-left-radius: 0; - } - .btn-group > .btn-group:last-child > .btn:first-child { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 0; - border-top-right-radius: 0; - } - .btn .caret { - margin-right: 0; - } - .btn-group-vertical > .btn + .btn, - .btn-group-vertical > .btn + .btn-group, - .btn-group-vertical > .btn-group + .btn, - .btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-right: 0; - } - .input-group .form-control { - float: right; - } - .input-group .form-control:first-child, - .input-group-addon:first-child, - .input-group-btn:first-child > .btn, - .input-group-btn:first-child > .btn-group > .btn, - .input-group-btn:first-child > .dropdown-toggle, - .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), - .input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-bottom-right-radius: 4px; - border-top-right-radius: 4px; - border-bottom-left-radius: 0; - border-top-left-radius: 0; - } - .input-group-addon:first-child { - border-left: 0px; - border-right: 1px solid; - } - .input-group .form-control:last-child, - .input-group-addon:last-child, - .input-group-btn:last-child > .btn, - .input-group-btn:last-child > .btn-group > .btn, - .input-group-btn:last-child > .dropdown-toggle, - .input-group-btn:first-child > .btn:not(:first-child), - .input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-bottom-left-radius: 4px; - border-top-left-radius: 4px; - border-bottom-right-radius: 0; - border-top-right-radius: 0; - } - .input-group-addon:last-child { - border-left-width: 1px; - border-left-style: solid; - border-right: 0px; - } - .input-group-btn > .btn + .btn { - margin-right: -1px; - margin-left: auto; - } - .input-group-btn:first-child > .btn, - .input-group-btn:first-child > .btn-group { - margin-left: -1px; - margin-right: auto; - } - .input-group-btn:last-child > .btn, - .input-group-btn:last-child > .btn-group { - margin-right: -1px; - margin-left: auto; - } - .nav { - padding-right: 0; - padding-left: initial; - } - .nav-tabs > li { - float: right; - } - .nav-tabs > li > a { - margin-left: auto; - margin-right: -2px; - border-radius: 4px 4px 0 0; - } - .nav-pills > li { - float: right; - } - .nav-pills > li > a { - border-radius: 4px; - } - .nav-pills > li + li { - margin-right: 2px; - margin-left: auto; - } - .nav-stacked > li { - float: none; - } - .nav-stacked > li + li { - margin-right: 0; - margin-left: auto; - } - .nav-justified > .dropdown .dropdown-menu { - right: auto; - } - .nav-tabs-justified > li > a { - margin-left: 0; - margin-right: auto; - } - @media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-radius: 4px 4px 0 0; - } - } - @media (min-width: 768px) { - .navbar-header { - float: right; - } - } - .navbar-collapse { - padding-right: 15px; - padding-left: 15px; - } - .navbar-brand { - float: right; - } - @media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-right: -15px; - margin-left: auto; - } - } - .navbar-toggle { - float: left; - margin-left: 15px; - margin-right: auto; - } - @media (max-width: 767px) { - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 25px 5px 15px; - } - } - @media (min-width: 768px) { - .navbar-nav { - float: right; - } - .navbar-nav > li { - float: right; - } - } - @media (min-width: 768px) { - .navbar-left.flip { - float: right !important; - } - .navbar-right:last-child { - margin-left: -15px; - margin-right: auto; - } - .navbar-right.flip { - float: left !important; - margin-left: -15px; - margin-right: auto; - } - .navbar-right .dropdown-menu { - left: 0; - right: auto; - } - } - @media (min-width: 768px) { - .navbar-text { - float: right; - } - .navbar-text.navbar-right:last-child { - margin-left: 0; - margin-right: auto; - } - } - .pagination { - padding-right: 0; - } - .pagination > li > a, - .pagination > li > span { - float: right; - margin-right: -1px; - margin-left: 0px; - } - .pagination > li:first-child > a, - .pagination > li:first-child > span { - margin-left: 0; - border-bottom-right-radius: 4px; - border-top-right-radius: 4px; - border-bottom-left-radius: 0; - border-top-left-radius: 0; - } - .pagination > li:last-child > a, - .pagination > li:last-child > span { - margin-right: -1px; - border-bottom-left-radius: 4px; - border-top-left-radius: 4px; - border-bottom-right-radius: 0; - border-top-right-radius: 0; - } - .pager { - padding-right: 0; - padding-left: initial; - } - .pager .next > a, - .pager .next > span { - float: left; - } - .pager .previous > a, - .pager .previous > span { - float: right; - } - .nav-pills > li > a > .badge { - margin-left: 0px; - margin-right: 3px; - } - .list-group-item > .badge { - float: left; - } - .list-group-item > .badge + .badge { - margin-left: 5px; - margin-right: auto; - } - .alert-dismissable, - .alert-dismissible { - padding-left: 35px; - padding-right: 15px; - } - .alert-dismissable .close, - .alert-dismissible .close { - right: auto; - left: -21px; - } - .progress-bar { - float: right; - } - .media > .pull-left { - margin-right: 10px; - } - .media > .pull-left.flip { - margin-right: 0; - margin-left: 10px; - } - .media > .pull-right { - margin-left: 10px; - } - .media > .pull-right.flip { - margin-left: 0; - margin-right: 10px; - } - .media-right, - .media > .pull-right { - padding-right: 10px; - padding-left: initial; - } - .media-left, - .media > .pull-left { - padding-left: 10px; - padding-right: initial; - } - .media-list { - padding-right: 0; - padding-left: initial; - list-style: none; - } - .list-group { - padding-right: 0; - padding-left: initial; - } - .panel > .table:first-child > thead:first-child > tr:first-child td:first-child, - .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, - .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, - .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, - .panel > .table:first-child > thead:first-child > tr:first-child th:first-child, - .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, - .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, - .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-right-radius: 3px; - border-top-left-radius: 0; - } - .panel > .table:first-child > thead:first-child > tr:first-child td:last-child, - .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, - .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, - .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, - .panel > .table:first-child > thead:first-child > tr:first-child th:last-child, - .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, - .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, - .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-left-radius: 3px; - border-top-right-radius: 0; - } - .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, - .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, - .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, - .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, - .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, - .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, - .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, - .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; - border-top-right-radius: 0; - } - .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, - .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, - .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, - .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, - .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, - .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, - .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, - .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 3px; - border-top-left-radius: 0; - } - .panel > .table-bordered > thead > tr > th:first-child, - .panel > .table-responsive > .table-bordered > thead > tr > th:first-child, - .panel > .table-bordered > tbody > tr > th:first-child, - .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, - .panel > .table-bordered > tfoot > tr > th:first-child, - .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .panel > .table-bordered > thead > tr > td:first-child, - .panel > .table-responsive > .table-bordered > thead > tr > td:first-child, - .panel > .table-bordered > tbody > tr > td:first-child, - .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, - .panel > .table-bordered > tfoot > tr > td:first-child, - .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-right: 0; - border-left: none; - } - .panel > .table-bordered > thead > tr > th:last-child, - .panel > .table-responsive > .table-bordered > thead > tr > th:last-child, - .panel > .table-bordered > tbody > tr > th:last-child, - .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, - .panel > .table-bordered > tfoot > tr > th:last-child, - .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .panel > .table-bordered > thead > tr > td:last-child, - .panel > .table-responsive > .table-bordered > thead > tr > td:last-child, - .panel > .table-bordered > tbody > tr > td:last-child, - .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, - .panel > .table-bordered > tfoot > tr > td:last-child, - .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: none; - border-left: 0; - } - .embed-responsive .embed-responsive-item, - .embed-responsive iframe, - .embed-responsive embed, - .embed-responsive object { - right: 0; - left: auto; - } - .close { - float: left; - } - .modal-footer { - text-align: left; - } - .modal-footer.flip { - text-align: right; - } - .modal-footer .btn + .btn { - margin-left: auto; - margin-right: 5px; - } - .modal-footer .btn-group .btn + .btn { - margin-right: -1px; - margin-left: auto; - } - .modal-footer .btn-block + .btn-block { - margin-right: 0; - margin-left: auto; - } - .popover { - left: auto; - text-align: right; - } - .popover.top > .arrow { - right: 50%; - left: auto; - margin-right: -11px; - margin-left: auto; - } - .popover.top > .arrow:after { - margin-right: -10px; - margin-left: auto; - } - .popover.bottom > .arrow { - right: 50%; - left: auto; - margin-right: -11px; - margin-left: auto; - } - .popover.bottom > .arrow:after { - margin-right: -10px; - margin-left: auto; - } - .carousel-control { - right: 0; - bottom: 0; - } - .carousel-control.left { - right: auto; - left: 0; - background-image: -webkit-linear-gradient( - left, - color-stop(rgba(0, 0, 0, 0.5) 0%), - color-stop(rgba(0, 0, 0, 0.0001) 100%) - ); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); - } - .carousel-control.right { - left: auto; - right: 0; - background-image: -webkit-linear-gradient( - left, - color-stop(rgba(0, 0, 0, 0.0001) 0%), - color-stop(rgba(0, 0, 0, 0.5) 100%) - ); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); - } - .carousel-control .icon-prev, - .carousel-control .glyphicon-chevron-left { - left: 50%; - right: auto; - margin-right: -10px; - } - .carousel-control .icon-next, - .carousel-control .glyphicon-chevron-right { - right: 50%; - left: auto; - margin-left: -10px; - } - .carousel-indicators { - right: 50%; - left: 0; - margin-right: -30%; - margin-left: 0; - padding-left: 0; - } - @media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: 0; - margin-right: -15px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-left: 0; - margin-right: -15px; - } - .carousel-caption { - left: 20%; - right: 20%; - padding-bottom: 30px; - } - } - .pull-right.flip { - float: left !important; - } - .pull-left.flip { - float: right !important; - } -} diff --git a/theme/styles/web/sass/core/_legacy/bootstrap/_bootstrap.scss b/theme/styles/web/sass/core/_legacy/bootstrap/_bootstrap.scss deleted file mode 100644 index 90fc44f..0000000 --- a/theme/styles/web/sass/core/_legacy/bootstrap/_bootstrap.scss +++ /dev/null @@ -1,6820 +0,0 @@ -/*! - * Bootstrap v3.3.4 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ -html { - font-family: sans-serif; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -body { - margin: 0; -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden], -template { - display: none; -} -a { - background-color: transparent; -} -a:active, -a:hover { - outline: 0; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -h1 { - margin: 0.67em 0; - font-size: 2em; -} -mark { - color: #000; - background: #ff0; -} -small { - font-size: 80%; -} -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - height: 0; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - margin: 0; - font: inherit; - color: inherit; -} -button { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html input[type='button'], -input[type='reset'], -input[type='submit'] { - -webkit-appearance: button; - cursor: pointer; -} -//button[disabled], -//html input[disabled] { -// cursor: default; -//} -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} -input { - line-height: normal; -} -input[type='checkbox'], -input[type='radio'] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 0; -} -input[type='number']::-webkit-inner-spin-button, -input[type='number']::-webkit-outer-spin-button { - height: auto; -} -input[type='search'] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} -input[type='search']::-webkit-search-cancel-button, -input[type='search']::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - padding: 0.35em 0.625em 0.75em; - margin: 0 2px; - border: 1px solid #c0c0c0; -} -legend { - padding: 0; - border: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -table { - border-spacing: 0; - border-collapse: collapse; -} -td, -th { - padding: 0; -} -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print { - *, - *:before, - *:after { - color: #000 !important; - text-shadow: none !important; - background: transparent !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: ' (' attr(href) ')'; - } - abbr[title]:after { - content: ' (' attr(title) ')'; - } - a[href^='#']:after, - a[href^='javascript:']:after { - content: ''; - } - pre, - blockquote { - border: 1px solid #999; - - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - select { - background: #fff !important; - } - .navbar { - display: none; - } - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; - } - .label { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table td, - .table th { - background-color: #fff !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} -@font-face { - font-family: 'Glyphicons Halflings'; - src: url('./fonts/glyphicons-halflings-regular.woff2') format('woff2'), - url('./fonts/glyphicons-halflings-regular.woff') format('woff'); -} -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.glyphicon-asterisk:before { - content: '\2a'; -} -.glyphicon-plus:before { - content: '\2b'; -} -.glyphicon-euro:before, -.glyphicon-eur:before { - content: '\20ac'; -} -.glyphicon-minus:before { - content: '\2212'; -} -.glyphicon-cloud:before { - content: '\2601'; -} -.glyphicon-envelope:before { - content: '\2709'; -} -.glyphicon-pencil:before { - content: '\270f'; -} -.glyphicon-glass:before { - content: '\e001'; -} -.glyphicon-music:before { - content: '\e002'; -} -.glyphicon-search:before { - content: '\e003'; -} -.glyphicon-heart:before { - content: '\e005'; -} -.glyphicon-star:before { - content: '\e006'; -} -.glyphicon-star-empty:before { - content: '\e007'; -} -.glyphicon-user:before { - content: '\e008'; -} -.glyphicon-film:before { - content: '\e009'; -} -.glyphicon-th-large:before { - content: '\e010'; -} -.glyphicon-th:before { - content: '\e011'; -} -.glyphicon-th-list:before { - content: '\e012'; -} -.glyphicon-ok:before { - content: '\e013'; -} -.glyphicon-remove:before { - content: '\e014'; -} -.glyphicon-zoom-in:before { - content: '\e015'; -} -.glyphicon-zoom-out:before { - content: '\e016'; -} -.glyphicon-off:before { - content: '\e017'; -} -.glyphicon-signal:before { - content: '\e018'; -} -.glyphicon-cog:before { - content: '\e019'; -} -.glyphicon-trash:before { - content: '\e020'; -} -.glyphicon-home:before { - content: '\e021'; -} -.glyphicon-file:before { - content: '\e022'; -} -.glyphicon-time:before { - content: '\e023'; -} -.glyphicon-road:before { - content: '\e024'; -} -.glyphicon-download-alt:before { - content: '\e025'; -} -.glyphicon-download:before { - content: '\e026'; -} -.glyphicon-upload:before { - content: '\e027'; -} -.glyphicon-inbox:before { - content: '\e028'; -} -.glyphicon-play-circle:before { - content: '\e029'; -} -.glyphicon-repeat:before { - content: '\e030'; -} -.glyphicon-refresh:before { - content: '\e031'; -} -.glyphicon-list-alt:before { - content: '\e032'; -} -.glyphicon-lock:before { - content: '\e033'; -} -.glyphicon-flag:before { - content: '\e034'; -} -.glyphicon-headphones:before { - content: '\e035'; -} -.glyphicon-volume-off:before { - content: '\e036'; -} -.glyphicon-volume-down:before { - content: '\e037'; -} -.glyphicon-volume-up:before { - content: '\e038'; -} -.glyphicon-qrcode:before { - content: '\e039'; -} -.glyphicon-barcode:before { - content: '\e040'; -} -.glyphicon-tag:before { - content: '\e041'; -} -.glyphicon-tags:before { - content: '\e042'; -} -.glyphicon-book:before { - content: '\e043'; -} -.glyphicon-bookmark:before { - content: '\e044'; -} -.glyphicon-print:before { - content: '\e045'; -} -.glyphicon-camera:before { - content: '\e046'; -} -.glyphicon-font:before { - content: '\e047'; -} -.glyphicon-bold:before { - content: '\e048'; -} -.glyphicon-italic:before { - content: '\e049'; -} -.glyphicon-text-height:before { - content: '\e050'; -} -.glyphicon-text-width:before { - content: '\e051'; -} -.glyphicon-align-left:before { - content: '\e052'; -} -.glyphicon-align-center:before { - content: '\e053'; -} -.glyphicon-align-right:before { - content: '\e054'; -} -.glyphicon-align-justify:before { - content: '\e055'; -} -.glyphicon-list:before { - content: '\e056'; -} -.glyphicon-indent-left:before { - content: '\e057'; -} -.glyphicon-indent-right:before { - content: '\e058'; -} -.glyphicon-facetime-video:before { - content: '\e059'; -} -.glyphicon-picture:before { - content: '\e060'; -} -.glyphicon-map-marker:before { - content: '\e062'; -} -.glyphicon-adjust:before { - content: '\e063'; -} -.glyphicon-tint:before { - content: '\e064'; -} -.glyphicon-edit:before { - content: '\e065'; -} -.glyphicon-share:before { - content: '\e066'; -} -.glyphicon-check:before { - content: '\e067'; -} -.glyphicon-move:before { - content: '\e068'; -} -.glyphicon-step-backward:before { - content: '\e069'; -} -.glyphicon-fast-backward:before { - content: '\e070'; -} -.glyphicon-backward:before { - content: '\e071'; -} -.glyphicon-play:before { - content: '\e072'; -} -.glyphicon-pause:before { - content: '\e073'; -} -.glyphicon-stop:before { - content: '\e074'; -} -.glyphicon-forward:before { - content: '\e075'; -} -.glyphicon-fast-forward:before { - content: '\e076'; -} -.glyphicon-step-forward:before { - content: '\e077'; -} -.glyphicon-eject:before { - content: '\e078'; -} -.glyphicon-chevron-left:before { - content: '\e079'; -} -.glyphicon-chevron-right:before { - content: '\e080'; -} -.glyphicon-plus-sign:before { - content: '\e081'; -} -.glyphicon-minus-sign:before { - content: '\e082'; -} -.glyphicon-remove-sign:before { - content: '\e083'; -} -.glyphicon-ok-sign:before { - content: '\e084'; -} -.glyphicon-question-sign:before { - content: '\e085'; -} -.glyphicon-info-sign:before { - content: '\e086'; -} -.glyphicon-screenshot:before { - content: '\e087'; -} -.glyphicon-remove-circle:before { - content: '\e088'; -} -.glyphicon-ok-circle:before { - content: '\e089'; -} -.glyphicon-ban-circle:before { - content: '\e090'; -} -.glyphicon-arrow-left:before { - content: '\e091'; -} -.glyphicon-arrow-right:before { - content: '\e092'; -} -.glyphicon-arrow-up:before { - content: '\e093'; -} -.glyphicon-arrow-down:before { - content: '\e094'; -} -.glyphicon-share-alt:before { - content: '\e095'; -} -.glyphicon-resize-full:before { - content: '\e096'; -} -.glyphicon-resize-small:before { - content: '\e097'; -} -.glyphicon-exclamation-sign:before { - content: '\e101'; -} -.glyphicon-gift:before { - content: '\e102'; -} -.glyphicon-leaf:before { - content: '\e103'; -} -.glyphicon-fire:before { - content: '\e104'; -} -.glyphicon-eye-open:before { - content: '\e105'; -} -.glyphicon-eye-close:before { - content: '\e106'; -} -.glyphicon-warning-sign:before { - content: '\e107'; -} -.glyphicon-plane:before { - content: '\e108'; -} -.glyphicon-calendar:before { - content: '\e109'; -} -.glyphicon-random:before { - content: '\e110'; -} -.glyphicon-comment:before { - content: '\e111'; -} -.glyphicon-magnet:before { - content: '\e112'; -} -.glyphicon-chevron-up:before { - content: '\e113'; -} -.glyphicon-chevron-down:before { - content: '\e114'; -} -.glyphicon-retweet:before { - content: '\e115'; -} -.glyphicon-shopping-cart:before { - content: '\e116'; -} -.glyphicon-folder-close:before { - content: '\e117'; -} -.glyphicon-folder-open:before { - content: '\e118'; -} -.glyphicon-resize-vertical:before { - content: '\e119'; -} -.glyphicon-resize-horizontal:before { - content: '\e120'; -} -.glyphicon-hdd:before { - content: '\e121'; -} -.glyphicon-bullhorn:before { - content: '\e122'; -} -.glyphicon-bell:before { - content: '\e123'; -} -.glyphicon-certificate:before { - content: '\e124'; -} -.glyphicon-thumbs-up:before { - content: '\e125'; -} -.glyphicon-thumbs-down:before { - content: '\e126'; -} -.glyphicon-hand-right:before { - content: '\e127'; -} -.glyphicon-hand-left:before { - content: '\e128'; -} -.glyphicon-hand-up:before { - content: '\e129'; -} -.glyphicon-hand-down:before { - content: '\e130'; -} -.glyphicon-circle-arrow-right:before { - content: '\e131'; -} -.glyphicon-circle-arrow-left:before { - content: '\e132'; -} -.glyphicon-circle-arrow-up:before { - content: '\e133'; -} -.glyphicon-circle-arrow-down:before { - content: '\e134'; -} -.glyphicon-globe:before { - content: '\e135'; -} -.glyphicon-wrench:before { - content: '\e136'; -} -.glyphicon-tasks:before { - content: '\e137'; -} -.glyphicon-filter:before { - content: '\e138'; -} -.glyphicon-briefcase:before { - content: '\e139'; -} -.glyphicon-fullscreen:before { - content: '\e140'; -} -.glyphicon-dashboard:before { - content: '\e141'; -} -.glyphicon-paperclip:before { - content: '\e142'; -} -.glyphicon-heart-empty:before { - content: '\e143'; -} -.glyphicon-link:before { - content: '\e144'; -} -.glyphicon-phone:before { - content: '\e145'; -} -.glyphicon-pushpin:before { - content: '\e146'; -} -.glyphicon-usd:before { - content: '\e148'; -} -.glyphicon-gbp:before { - content: '\e149'; -} -.glyphicon-sort:before { - content: '\e150'; -} -.glyphicon-sort-by-alphabet:before { - content: '\e151'; -} -.glyphicon-sort-by-alphabet-alt:before { - content: '\e152'; -} -.glyphicon-sort-by-order:before { - content: '\e153'; -} -.glyphicon-sort-by-order-alt:before { - content: '\e154'; -} -.glyphicon-sort-by-attributes:before { - content: '\e155'; -} -.glyphicon-sort-by-attributes-alt:before { - content: '\e156'; -} -.glyphicon-unchecked:before { - content: '\e157'; -} -.glyphicon-expand:before { - content: '\e158'; -} -.glyphicon-collapse-down:before { - content: '\e159'; -} -.glyphicon-collapse-up:before { - content: '\e160'; -} -.glyphicon-log-in:before { - content: '\e161'; -} -.glyphicon-flash:before { - content: '\e162'; -} -.glyphicon-log-out:before { - content: '\e163'; -} -.glyphicon-new-window:before { - content: '\e164'; -} -.glyphicon-record:before { - content: '\e165'; -} -.glyphicon-save:before { - content: '\e166'; -} -.glyphicon-open:before { - content: '\e167'; -} -.glyphicon-saved:before { - content: '\e168'; -} -.glyphicon-import:before { - content: '\e169'; -} -.glyphicon-export:before { - content: '\e170'; -} -.glyphicon-send:before { - content: '\e171'; -} -.glyphicon-floppy-disk:before { - content: '\e172'; -} -.glyphicon-floppy-saved:before { - content: '\e173'; -} -.glyphicon-floppy-remove:before { - content: '\e174'; -} -.glyphicon-floppy-save:before { - content: '\e175'; -} -.glyphicon-floppy-open:before { - content: '\e176'; -} -.glyphicon-credit-card:before { - content: '\e177'; -} -.glyphicon-transfer:before { - content: '\e178'; -} -.glyphicon-cutlery:before { - content: '\e179'; -} -.glyphicon-header:before { - content: '\e180'; -} -.glyphicon-compressed:before { - content: '\e181'; -} -.glyphicon-earphone:before { - content: '\e182'; -} -.glyphicon-phone-alt:before { - content: '\e183'; -} -.glyphicon-tower:before { - content: '\e184'; -} -.glyphicon-stats:before { - content: '\e185'; -} -.glyphicon-sd-video:before { - content: '\e186'; -} -.glyphicon-hd-video:before { - content: '\e187'; -} -.glyphicon-subtitles:before { - content: '\e188'; -} -.glyphicon-sound-stereo:before { - content: '\e189'; -} -.glyphicon-sound-dolby:before { - content: '\e190'; -} -.glyphicon-sound-5-1:before { - content: '\e191'; -} -.glyphicon-sound-6-1:before { - content: '\e192'; -} -.glyphicon-sound-7-1:before { - content: '\e193'; -} -.glyphicon-copyright-mark:before { - content: '\e194'; -} -.glyphicon-registration-mark:before { - content: '\e195'; -} -.glyphicon-cloud-download:before { - content: '\e197'; -} -.glyphicon-cloud-upload:before { - content: '\e198'; -} -.glyphicon-tree-conifer:before { - content: '\e199'; -} -.glyphicon-tree-deciduous:before { - content: '\e200'; -} -.glyphicon-cd:before { - content: '\e201'; -} -.glyphicon-save-file:before { - content: '\e202'; -} -.glyphicon-open-file:before { - content: '\e203'; -} -.glyphicon-level-up:before { - content: '\e204'; -} -.glyphicon-copy:before { - content: '\e205'; -} -.glyphicon-paste:before { - content: '\e206'; -} -.glyphicon-alert:before { - content: '\e209'; -} -.glyphicon-equalizer:before { - content: '\e210'; -} -.glyphicon-king:before { - content: '\e211'; -} -.glyphicon-queen:before { - content: '\e212'; -} -.glyphicon-pawn:before { - content: '\e213'; -} -.glyphicon-bishop:before { - content: '\e214'; -} -.glyphicon-knight:before { - content: '\e215'; -} -.glyphicon-baby-formula:before { - content: '\e216'; -} -.glyphicon-tent:before { - content: '\26fa'; -} -.glyphicon-blackboard:before { - content: '\e218'; -} -.glyphicon-bed:before { - content: '\e219'; -} -.glyphicon-apple:before { - content: '\f8ff'; -} -.glyphicon-erase:before { - content: '\e221'; -} -.glyphicon-hourglass:before { - content: '\231b'; -} -.glyphicon-lamp:before { - content: '\e223'; -} -.glyphicon-duplicate:before { - content: '\e224'; -} -.glyphicon-piggy-bank:before { - content: '\e225'; -} -.glyphicon-scissors:before { - content: '\e226'; -} -.glyphicon-bitcoin:before { - content: '\e227'; -} -.glyphicon-btc:before { - content: '\e227'; -} -.glyphicon-xbt:before { - content: '\e227'; -} -.glyphicon-yen:before { - content: '\00a5'; -} -.glyphicon-jpy:before { - content: '\00a5'; -} -.glyphicon-ruble:before { - content: '\20bd'; -} -.glyphicon-rub:before { - content: '\20bd'; -} -.glyphicon-scale:before { - content: '\e230'; -} -.glyphicon-ice-lolly:before { - content: '\e231'; -} -.glyphicon-ice-lolly-tasted:before { - content: '\e232'; -} -.glyphicon-education:before { - content: '\e233'; -} -.glyphicon-option-horizontal:before { - content: '\e234'; -} -.glyphicon-option-vertical:before { - content: '\e235'; -} -.glyphicon-menu-hamburger:before { - content: '\e236'; -} -.glyphicon-modal-window:before { - content: '\e237'; -} -.glyphicon-oil:before { - content: '\e238'; -} -.glyphicon-grain:before { - content: '\e239'; -} -.glyphicon-sunglasses:before { - content: '\e240'; -} -.glyphicon-text-size:before { - content: '\e241'; -} -.glyphicon-text-color:before { - content: '\e242'; -} -.glyphicon-text-background:before { - content: '\e243'; -} -.glyphicon-object-align-top:before { - content: '\e244'; -} -.glyphicon-object-align-bottom:before { - content: '\e245'; -} -.glyphicon-object-align-horizontal:before { - content: '\e246'; -} -.glyphicon-object-align-left:before { - content: '\e247'; -} -.glyphicon-object-align-vertical:before { - content: '\e248'; -} -.glyphicon-object-align-right:before { - content: '\e249'; -} -.glyphicon-triangle-right:before { - content: '\e250'; -} -.glyphicon-triangle-left:before { - content: '\e251'; -} -.glyphicon-triangle-bottom:before { - content: '\e252'; -} -.glyphicon-triangle-top:before { - content: '\e253'; -} -.glyphicon-console:before { - content: '\e254'; -} -.glyphicon-superscript:before { - content: '\e255'; -} -.glyphicon-subscript:before { - content: '\e256'; -} -.glyphicon-menu-left:before { - content: '\e257'; -} -.glyphicon-menu-right:before { - content: '\e258'; -} -.glyphicon-menu-down:before { - content: '\e259'; -} -.glyphicon-menu-up:before { - content: '\e260'; -} -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-size: 10px; - - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.42857143; - color: #333; - background-color: #fff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #337ab7; - text-decoration: none; -} -a:hover, -a:focus { - color: #23527c; - text-decoration: underline; -} -a:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 6px; -} -.img-thumbnail { - display: inline-block; - max-width: 100%; - height: auto; - padding: 4px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; -} -.img-circle { - border-radius: 50%; -} -hr { - margin-top: 20px; - margin-bottom: 20px; - border: 0; - border-top: 1px solid #eee; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} -[role='button'] { - cursor: pointer; -} -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: inherit; - font-weight: 500; - line-height: 1.1; - color: inherit; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #777; -} -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 20px; - margin-bottom: 10px; -} -h1 small, -.h1 small, -h2 small, -.h2 small, -h3 small, -.h3 small, -h1 .small, -.h1 .small, -h2 .small, -.h2 .small, -h3 .small, -.h3 .small { - font-size: 65%; -} -h4, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 10px; - margin-bottom: 10px; -} -h4 small, -.h4 small, -h5 small, -.h5 small, -h6 small, -.h6 small, -h4 .small, -.h4 .small, -h5 .small, -.h5 .small, -h6 .small, -.h6 .small { - font-size: 75%; -} -h1, -.h1 { - font-size: 36px; -} -h2, -.h2 { - font-size: 30px; -} -h3, -.h3 { - font-size: 24px; -} -h4, -.h4 { - font-size: 18px; -} -h5, -.h5 { - font-size: 14px; -} -h6, -.h6 { - font-size: 12px; -} -p { - margin: 0 0 10px; -} -.lead { - margin-bottom: 20px; - font-size: 16px; - font-weight: 300; - line-height: 1.4; -} -@media (min-width: 768px) { - .lead { - font-size: 21px; - } -} -small, -.small { - font-size: 85%; -} -mark, -.mark { - padding: 0.2em; - background-color: #fcf8e3; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -.text-justify { - text-align: justify; -} -.text-nowrap { - white-space: nowrap; -} -.text-lowercase { - text-transform: lowercase; -} -.text-uppercase { - text-transform: uppercase; -} -.text-capitalize { - text-transform: capitalize; -} -.text-muted { - color: #777; -} -.text-primary { - color: #337ab7; -} -a.text-primary:hover { - color: #286090; -} -.text-success { - color: #3c763d; -} -a.text-success:hover { - color: #2b542c; -} -.text-info { - color: #31708f; -} -a.text-info:hover { - color: #245269; -} -.text-warning { - color: #8a6d3b; -} -a.text-warning:hover { - color: #66512c; -} -.text-danger { - color: #a94442; -} -a.text-danger:hover { - color: #843534; -} -.bg-primary { - color: #fff; - background-color: #337ab7; -} -a.bg-primary:hover { - background-color: #286090; -} -.bg-success { - background-color: #dff0d8; -} -a.bg-success:hover { - background-color: #c1e2b3; -} -.bg-info { - background-color: #d9edf7; -} -a.bg-info:hover { - background-color: #afd9ee; -} -.bg-warning { - background-color: #fcf8e3; -} -a.bg-warning:hover { - background-color: #f7ecb5; -} -.bg-danger { - background-color: #f2dede; -} -a.bg-danger:hover { - background-color: #e4b9b9; -} -.page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 10px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - margin-left: -5px; - list-style: none; -} -.list-inline > li { - display: inline-block; - padding-right: 5px; - padding-left: 5px; -} -dl { - margin-top: 0; - margin-bottom: 20px; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - overflow: hidden; - clear: left; - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #777; -} -.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 10px 20px; - margin: 0 0 20px; - font-size: 17.5px; - border-left: 5px solid #eee; -} -blockquote p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #777; -} -blockquote footer:before, -blockquote small:before, -blockquote .small:before { - content: '\2014 \00A0'; -} -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - text-align: right; - border-right: 5px solid #eee; - border-left: 0; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small:after, -blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -address { - margin-bottom: 20px; - font-style: normal; - line-height: 1.42857143; -} -code, -kbd, -pre, -samp { - font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; -} -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - border-radius: 4px; -} -kbd { - padding: 2px 4px; - font-size: 90%; - color: #fff; - background-color: #333; - border-radius: 3px; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - -webkit-box-shadow: none; - box-shadow: none; -} -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 1.42857143; - color: #333; - word-break: break-all; - word-wrap: break-word; - background-color: #f5f5f5; - border: 1px solid #ccc; - border-radius: 4px; -} -pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -.container { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -@media (min-width: 768px) { - .container { - width: 750px; - } -} -@media (min-width: 992px) { - .container { - width: 970px; - } -} -@media (min-width: 1200px) { - .container { - width: 1170px; - } -} -.container-fluid { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -.row { - margin-right: -15px; - margin-left: -15px; -} -//.col-xs-1, -//.col-sm-1, -//.col-md-1, -//.col-lg-1, -//.col-xs-2, -//.col-sm-2, -//.col-md-2, -//.col-lg-2, -//.col-xs-3, -//.col-sm-3, -//.col-md-3, -//.col-lg-3, -//.col-xs-4, -//.col-sm-4, -//.col-md-4, -//.col-lg-4, -//.col-xs-5, -//.col-sm-5, -//.col-md-5, -//.col-lg-5, -//.col-xs-6, -//.col-sm-6, -//.col-md-6, -//.col-lg-6, -//.col-xs-7, -//.col-sm-7, -//.col-md-7, -//.col-lg-7, -//.col-xs-8, -//.col-sm-8, -//.col-md-8, -//.col-lg-8, -//.col-xs-9, -//.col-sm-9, -//.col-md-9, -//.col-lg-9, -//.col-xs-10, -//.col-sm-10, -//.col-md-10, -//.col-lg-10, -//.col-xs-11, -//.col-sm-11, -//.col-md-11, -//.col-lg-11, -//.col-xs-12, -//.col-sm-12, -//.col-md-12, -//.col-lg-12 { -// position: relative; -// min-height: 1px; -// padding-right: 15px; -// padding-left: 15px; -//} -//.col-xs-1, -//.col-xs-2, -//.col-xs-3, -//.col-xs-4, -//.col-xs-5, -//.col-xs-6, -//.col-xs-7, -//.col-xs-8, -//.col-xs-9, -//.col-xs-10, -//.col-xs-11, -//.col-xs-12 { -// float: left; -//} -//.col-xs-12 { -// width: 100%; -//} -//.col-xs-11 { -// width: 91.66666667%; -//} -//.col-xs-10 { -// width: 83.33333333%; -//} -//.col-xs-9 { -// width: 75%; -//} -//.col-xs-8 { -// width: 66.66666667%; -//} -//.col-xs-7 { -// width: 58.33333333%; -//} -//.col-xs-6 { -// width: 50%; -//} -//.col-xs-5 { -// width: 41.66666667%; -//} -//.col-xs-4 { -// width: 33.33333333%; -//} -//.col-xs-3 { -// width: 25%; -//} -//.col-xs-2 { -// width: 16.66666667%; -//} -//.col-xs-1 { -// width: 8.33333333%; -//} -//.col-xs-pull-12 { -// right: 100%; -//} -//.col-xs-pull-11 { -// right: 91.66666667%; -//} -//.col-xs-pull-10 { -// right: 83.33333333%; -//} -//.col-xs-pull-9 { -// right: 75%; -//} -//.col-xs-pull-8 { -// right: 66.66666667%; -//} -//.col-xs-pull-7 { -// right: 58.33333333%; -//} -//.col-xs-pull-6 { -// right: 50%; -//} -//.col-xs-pull-5 { -// right: 41.66666667%; -//} -//.col-xs-pull-4 { -// right: 33.33333333%; -//} -//.col-xs-pull-3 { -// right: 25%; -//} -//.col-xs-pull-2 { -// right: 16.66666667%; -//} -//.col-xs-pull-1 { -// right: 8.33333333%; -//} -//.col-xs-pull-0 { -// right: auto; -//} -//.col-xs-push-12 { -// left: 100%; -//} -//.col-xs-push-11 { -// left: 91.66666667%; -//} -//.col-xs-push-10 { -// left: 83.33333333%; -//} -//.col-xs-push-9 { -// left: 75%; -//} -//.col-xs-push-8 { -// left: 66.66666667%; -//} -//.col-xs-push-7 { -// left: 58.33333333%; -//} -//.col-xs-push-6 { -// left: 50%; -//} -//.col-xs-push-5 { -// left: 41.66666667%; -//} -//.col-xs-push-4 { -// left: 33.33333333%; -//} -//.col-xs-push-3 { -// left: 25%; -//} -//.col-xs-push-2 { -// left: 16.66666667%; -//} -//.col-xs-push-1 { -// left: 8.33333333%; -//} -//.col-xs-push-0 { -// left: auto; -//} -//.col-xs-offset-12 { -// margin-left: 100%; -//} -//.col-xs-offset-11 { -// margin-left: 91.66666667%; -//} -//.col-xs-offset-10 { -// margin-left: 83.33333333%; -//} -//.col-xs-offset-9 { -// margin-left: 75%; -//} -//.col-xs-offset-8 { -// margin-left: 66.66666667%; -//} -//.col-xs-offset-7 { -// margin-left: 58.33333333%; -//} -//.col-xs-offset-6 { -// margin-left: 50%; -//} -//.col-xs-offset-5 { -// margin-left: 41.66666667%; -//} -//.col-xs-offset-4 { -// margin-left: 33.33333333%; -//} -//.col-xs-offset-3 { -// margin-left: 25%; -//} -//.col-xs-offset-2 { -// margin-left: 16.66666667%; -//} -//.col-xs-offset-1 { -// margin-left: 8.33333333%; -//} -//.col-xs-offset-0 { -// margin-left: 0; -//} -//@media (min-width: 768px) { -// .col-sm-1, -// .col-sm-2, -// .col-sm-3, -// .col-sm-4, -// .col-sm-5, -// .col-sm-6, -// .col-sm-7, -// .col-sm-8, -// .col-sm-9, -// .col-sm-10, -// .col-sm-11, -// .col-sm-12 { -// float: left; -// } -// .col-sm-12 { -// width: 100%; -// } -// .col-sm-11 { -// width: 91.66666667%; -// } -// .col-sm-10 { -// width: 83.33333333%; -// } -// .col-sm-9 { -// width: 75%; -// } -// .col-sm-8 { -// width: 66.66666667%; -// } -// .col-sm-7 { -// width: 58.33333333%; -// } -// .col-sm-6 { -// width: 50%; -// } -// .col-sm-5 { -// width: 41.66666667%; -// } -// .col-sm-4 { -// width: 33.33333333%; -// } -// .col-sm-3 { -// width: 25%; -// } -// .col-sm-2 { -// width: 16.66666667%; -// } -// .col-sm-1 { -// width: 8.33333333%; -// } -// .col-sm-pull-12 { -// right: 100%; -// } -// .col-sm-pull-11 { -// right: 91.66666667%; -// } -// .col-sm-pull-10 { -// right: 83.33333333%; -// } -// .col-sm-pull-9 { -// right: 75%; -// } -// .col-sm-pull-8 { -// right: 66.66666667%; -// } -// .col-sm-pull-7 { -// right: 58.33333333%; -// } -// .col-sm-pull-6 { -// right: 50%; -// } -// .col-sm-pull-5 { -// right: 41.66666667%; -// } -// .col-sm-pull-4 { -// right: 33.33333333%; -// } -// .col-sm-pull-3 { -// right: 25%; -// } -// .col-sm-pull-2 { -// right: 16.66666667%; -// } -// .col-sm-pull-1 { -// right: 8.33333333%; -// } -// .col-sm-pull-0 { -// right: auto; -// } -// .col-sm-push-12 { -// left: 100%; -// } -// .col-sm-push-11 { -// left: 91.66666667%; -// } -// .col-sm-push-10 { -// left: 83.33333333%; -// } -// .col-sm-push-9 { -// left: 75%; -// } -// .col-sm-push-8 { -// left: 66.66666667%; -// } -// .col-sm-push-7 { -// left: 58.33333333%; -// } -// .col-sm-push-6 { -// left: 50%; -// } -// .col-sm-push-5 { -// left: 41.66666667%; -// } -// .col-sm-push-4 { -// left: 33.33333333%; -// } -// .col-sm-push-3 { -// left: 25%; -// } -// .col-sm-push-2 { -// left: 16.66666667%; -// } -// .col-sm-push-1 { -// left: 8.33333333%; -// } -// .col-sm-push-0 { -// left: auto; -// } -// .col-sm-offset-12 { -// margin-left: 100%; -// } -// .col-sm-offset-11 { -// margin-left: 91.66666667%; -// } -// .col-sm-offset-10 { -// margin-left: 83.33333333%; -// } -// .col-sm-offset-9 { -// margin-left: 75%; -// } -// .col-sm-offset-8 { -// margin-left: 66.66666667%; -// } -// .col-sm-offset-7 { -// margin-left: 58.33333333%; -// } -// .col-sm-offset-6 { -// margin-left: 50%; -// } -// .col-sm-offset-5 { -// margin-left: 41.66666667%; -// } -// .col-sm-offset-4 { -// margin-left: 33.33333333%; -// } -// .col-sm-offset-3 { -// margin-left: 25%; -// } -// .col-sm-offset-2 { -// margin-left: 16.66666667%; -// } -// .col-sm-offset-1 { -// margin-left: 8.33333333%; -// } -// .col-sm-offset-0 { -// margin-left: 0; -// } -//} -//@media (min-width: 992px) { -// .col-md-1, -// .col-md-2, -// .col-md-3, -// .col-md-4, -// .col-md-5, -// .col-md-6, -// .col-md-7, -// .col-md-8, -// .col-md-9, -// .col-md-10, -// .col-md-11, -// .col-md-12 { -// float: left; -// } -// .col-md-12 { -// width: 100%; -// } -// .col-md-11 { -// width: 91.66666667%; -// } -// .col-md-10 { -// width: 83.33333333%; -// } -// .col-md-9 { -// width: 75%; -// } -// .col-md-8 { -// width: 66.66666667%; -// } -// .col-md-7 { -// width: 58.33333333%; -// } -// .col-md-6 { -// width: 50%; -// } -// .col-md-5 { -// width: 41.66666667%; -// } -// .col-md-4 { -// width: 33.33333333%; -// } -// .col-md-3 { -// width: 25%; -// } -// .col-md-2 { -// width: 16.66666667%; -// } -// .col-md-1 { -// width: 8.33333333%; -// } -// .col-md-pull-12 { -// right: 100%; -// } -// .col-md-pull-11 { -// right: 91.66666667%; -// } -// .col-md-pull-10 { -// right: 83.33333333%; -// } -// .col-md-pull-9 { -// right: 75%; -// } -// .col-md-pull-8 { -// right: 66.66666667%; -// } -// .col-md-pull-7 { -// right: 58.33333333%; -// } -// .col-md-pull-6 { -// right: 50%; -// } -// .col-md-pull-5 { -// right: 41.66666667%; -// } -// .col-md-pull-4 { -// right: 33.33333333%; -// } -// .col-md-pull-3 { -// right: 25%; -// } -// .col-md-pull-2 { -// right: 16.66666667%; -// } -// .col-md-pull-1 { -// right: 8.33333333%; -// } -// .col-md-pull-0 { -// right: auto; -// } -// .col-md-push-12 { -// left: 100%; -// } -// .col-md-push-11 { -// left: 91.66666667%; -// } -// .col-md-push-10 { -// left: 83.33333333%; -// } -// .col-md-push-9 { -// left: 75%; -// } -// .col-md-push-8 { -// left: 66.66666667%; -// } -// .col-md-push-7 { -// left: 58.33333333%; -// } -// .col-md-push-6 { -// left: 50%; -// } -// .col-md-push-5 { -// left: 41.66666667%; -// } -// .col-md-push-4 { -// left: 33.33333333%; -// } -// .col-md-push-3 { -// left: 25%; -// } -// .col-md-push-2 { -// left: 16.66666667%; -// } -// .col-md-push-1 { -// left: 8.33333333%; -// } -// .col-md-push-0 { -// left: auto; -// } -// .col-md-offset-12 { -// margin-left: 100%; -// } -// .col-md-offset-11 { -// margin-left: 91.66666667%; -// } -// .col-md-offset-10 { -// margin-left: 83.33333333%; -// } -// .col-md-offset-9 { -// margin-left: 75%; -// } -// .col-md-offset-8 { -// margin-left: 66.66666667%; -// } -// .col-md-offset-7 { -// margin-left: 58.33333333%; -// } -// .col-md-offset-6 { -// margin-left: 50%; -// } -// .col-md-offset-5 { -// margin-left: 41.66666667%; -// } -// .col-md-offset-4 { -// margin-left: 33.33333333%; -// } -// .col-md-offset-3 { -// margin-left: 25%; -// } -// .col-md-offset-2 { -// margin-left: 16.66666667%; -// } -// .col-md-offset-1 { -// margin-left: 8.33333333%; -// } -// .col-md-offset-0 { -// margin-left: 0; -// } -//} -//@media (min-width: 1200px) { -// .col-lg-1, -// .col-lg-2, -// .col-lg-3, -// .col-lg-4, -// .col-lg-5, -// .col-lg-6, -// .col-lg-7, -// .col-lg-8, -// .col-lg-9, -// .col-lg-10, -// .col-lg-11, -// .col-lg-12 { -// float: left; -// } -// .col-lg-12 { -// width: 100%; -// } -// .col-lg-11 { -// width: 91.66666667%; -// } -// .col-lg-10 { -// width: 83.33333333%; -// } -// .col-lg-9 { -// width: 75%; -// } -// .col-lg-8 { -// width: 66.66666667%; -// } -// .col-lg-7 { -// width: 58.33333333%; -// } -// .col-lg-6 { -// width: 50%; -// } -// .col-lg-5 { -// width: 41.66666667%; -// } -// .col-lg-4 { -// width: 33.33333333%; -// } -// .col-lg-3 { -// width: 25%; -// } -// .col-lg-2 { -// width: 16.66666667%; -// } -// .col-lg-1 { -// width: 8.33333333%; -// } -// .col-lg-pull-12 { -// right: 100%; -// } -// .col-lg-pull-11 { -// right: 91.66666667%; -// } -// .col-lg-pull-10 { -// right: 83.33333333%; -// } -// .col-lg-pull-9 { -// right: 75%; -// } -// .col-lg-pull-8 { -// right: 66.66666667%; -// } -// .col-lg-pull-7 { -// right: 58.33333333%; -// } -// .col-lg-pull-6 { -// right: 50%; -// } -// .col-lg-pull-5 { -// right: 41.66666667%; -// } -// .col-lg-pull-4 { -// right: 33.33333333%; -// } -// .col-lg-pull-3 { -// right: 25%; -// } -// .col-lg-pull-2 { -// right: 16.66666667%; -// } -// .col-lg-pull-1 { -// right: 8.33333333%; -// } -// .col-lg-pull-0 { -// right: auto; -// } -// .col-lg-push-12 { -// left: 100%; -// } -// .col-lg-push-11 { -// left: 91.66666667%; -// } -// .col-lg-push-10 { -// left: 83.33333333%; -// } -// .col-lg-push-9 { -// left: 75%; -// } -// .col-lg-push-8 { -// left: 66.66666667%; -// } -// .col-lg-push-7 { -// left: 58.33333333%; -// } -// .col-lg-push-6 { -// left: 50%; -// } -// .col-lg-push-5 { -// left: 41.66666667%; -// } -// .col-lg-push-4 { -// left: 33.33333333%; -// } -// .col-lg-push-3 { -// left: 25%; -// } -// .col-lg-push-2 { -// left: 16.66666667%; -// } -// .col-lg-push-1 { -// left: 8.33333333%; -// } -// .col-lg-push-0 { -// left: auto; -// } -// .col-lg-offset-12 { -// margin-left: 100%; -// } -// .col-lg-offset-11 { -// margin-left: 91.66666667%; -// } -// .col-lg-offset-10 { -// margin-left: 83.33333333%; -// } -// .col-lg-offset-9 { -// margin-left: 75%; -// } -// .col-lg-offset-8 { -// margin-left: 66.66666667%; -// } -// .col-lg-offset-7 { -// margin-left: 58.33333333%; -// } -// .col-lg-offset-6 { -// margin-left: 50%; -// } -// .col-lg-offset-5 { -// margin-left: 41.66666667%; -// } -// .col-lg-offset-4 { -// margin-left: 33.33333333%; -// } -// .col-lg-offset-3 { -// margin-left: 25%; -// } -// .col-lg-offset-2 { -// margin-left: 16.66666667%; -// } -// .col-lg-offset-1 { -// margin-left: 8.33333333%; -// } -// .col-lg-offset-0 { -// margin-left: 0; -// } -//} -table { - background-color: transparent; -} -caption { - padding-top: 8px; - padding-bottom: 8px; - color: #777; - text-align: left; -} -th { - text-align: left; -} -.table { - width: 100%; - max-width: 100%; - margin-bottom: 20px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - padding: 8px; - line-height: 1.42857143; - vertical-align: top; - border-top: 1px solid #ddd; -} -.table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #ddd; -} -.table > caption + thead > tr:first-child > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #fff; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #f9f9f9; -} -.table-hover > tbody > tr:hover { - background-color: #f5f5f5; -} -table col[class*='col-'] { - position: static; - display: table-column; - float: none; -} -table td[class*='col-'], -table th[class*='col-'] { - position: static; - display: table-cell; - float: none; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #e8e8e8; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; -} -.table-responsive { - min-height: 0.01%; - overflow-x: auto; -} -@media screen and (max-width: 767px) { - .table-responsive { - width: 100%; - margin-bottom: 15px; - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #ddd; - } - .table-responsive > .table { - margin-bottom: 0; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; - color: #333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; -} -input[type='search'] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -input[type='radio'], -input[type='checkbox'] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; -} -input[type='file'] { - display: block; -} -input[type='range'] { - display: block; - width: 100%; -} -select[multiple], -select[size] { - height: auto; -} -input[type='file']:focus, -input[type='radio']:focus, -input[type='checkbox']:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -output { - display: block; - padding-top: 7px; - font-size: 14px; - line-height: 1.42857143; - color: #555; -} -//.form-control { -// display: block; -// width: 100%; -// height: 34px; -// padding: 6px 12px; -// font-size: 14px; -// line-height: 1.42857143; -// color: #555; -// background-color: #fff; -// background-image: none; -// border: 1px solid #ccc; -// border-radius: 4px; -// -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -// box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -// -webkit-transition: border-color ease-in-out 0.15s, -webkit-box-shadow ease-in-out 0.15s; -// -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; -// transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; -//} -//.form-control:focus { -// border-color: #66afe9; -// outline: 0; -// -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); -// box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); -//} -//.form-control::-moz-placeholder { -// color: #999; -// opacity: 1; -//} -//.form-control:-ms-input-placeholder { -// color: #999; -//} -//.form-control::-webkit-input-placeholder { -// color: #999; -//} -//.form-control[disabled], -//.form-control[readonly], -//fieldset[disabled] .form-control { -// background-color: #eee; -// opacity: 1; -//} -//.form-control[disabled], -//fieldset[disabled] .form-control { -// cursor: not-allowed; -//} -//textarea.form-control { -// height: auto; -//} -//input[type='search'] { -// -webkit-appearance: none; -//} -// @media screen and (-webkit-min-device-pixel-ratio: 0) { -// input[type='date'], -// input[type='time'], -// input[type='datetime-local'], -// input[type='month'] { -// line-height: 34px; -// } -// input[type='date'].input-sm, -// input[type='time'].input-sm, -// input[type='datetime-local'].input-sm, -// input[type='month'].input-sm, -// .input-group-sm input[type='date'], -// .input-group-sm input[type='time'], -// .input-group-sm input[type='datetime-local'], -// .input-group-sm input[type='month'] { -// line-height: 30px; -// } -// input[type='date'].input-lg, -// input[type='time'].input-lg, -// input[type='datetime-local'].input-lg, -// input[type='month'].input-lg, -// .input-group-lg input[type='date'], -// .input-group-lg input[type='time'], -// .input-group-lg input[type='datetime-local'], -// .input-group-lg input[type='month'] { -// line-height: 46px; -// } -// } -//.form-group { -// margin-bottom: 15px; -//} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 20px; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} -.radio input[type='radio'], -.radio-inline input[type='radio'], -.checkbox input[type='checkbox'], -.checkbox-inline input[type='checkbox'] { - position: absolute; - margin-top: 4px \9; - margin-left: -20px; -} -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} -.radio-inline, -.checkbox-inline { - position: relative; - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - vertical-align: middle; - cursor: pointer; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -input[type='radio'][disabled], -input[type='checkbox'][disabled], -input[type='radio'].disabled, -input[type='checkbox'].disabled, -fieldset[disabled] input[type='radio'], -fieldset[disabled] input[type='checkbox'] { - cursor: not-allowed; -} -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - cursor: not-allowed; -} -.form-control-static { - min-height: 34px; - padding-top: 7px; - padding-bottom: 7px; - margin-bottom: 0; -} -.form-control-static.input-lg, -.form-control-static.input-sm { - padding-right: 0; - padding-left: 0; -} -.input-sm { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-sm { - height: 30px; - line-height: 30px; -} -textarea.input-sm, -select[multiple].input-sm { - height: auto; -} -.form-group-sm .form-control { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.form-group-sm .form-control { - height: 30px; - line-height: 30px; -} -textarea.form-group-sm .form-control, -select[multiple].form-group-sm .form-control { - height: auto; -} -.form-group-sm .form-control-static { - height: 30px; - min-height: 32px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; -} -.input-lg { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-lg { - height: 46px; - line-height: 46px; -} -textarea.input-lg, -select[multiple].input-lg { - height: auto; -} -.form-group-lg .form-control { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.form-group-lg .form-control { - height: 46px; - line-height: 46px; -} -textarea.form-group-lg .form-control, -select[multiple].form-group-lg .form-control { - height: auto; -} -.form-group-lg .form-control-static { - height: 46px; - min-height: 38px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; -} -.has-feedback { - position: relative; -} -.has-feedback .form-control { - padding-right: 42.5px; -} -.form-control-feedback { - position: absolute; - top: 0; - right: 0; - z-index: 2; - display: block; - width: 34px; - height: 34px; - line-height: 34px; - text-align: center; - pointer-events: none; -} -.input-lg + .form-control-feedback { - width: 46px; - height: 46px; - line-height: 46px; -} -.input-sm + .form-control-feedback { - width: 30px; - height: 30px; - line-height: 30px; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #3c763d; -} -.has-success .form-control { - border-color: #3c763d; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-success .form-control:focus { - border-color: #2b542c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; -} -.has-success .input-group-addon { - color: #3c763d; - background-color: #dff0d8; - border-color: #3c763d; -} -.has-success .form-control-feedback { - color: #3c763d; -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #8a6d3b; -} -.has-warning .form-control { - border-color: #8a6d3b; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-warning .form-control:focus { - border-color: #66512c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; -} -.has-warning .input-group-addon { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #8a6d3b; -} -.has-warning .form-control-feedback { - color: #8a6d3b; -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #a94442; -} -.has-error .form-control { - border-color: #a94442; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-error .form-control:focus { - border-color: #843534; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; -} -.has-error .input-group-addon { - color: #a94442; - background-color: #f2dede; - border-color: #a94442; -} -.has-error .form-control-feedback { - color: #a94442; -} -.has-feedback label ~ .form-control-feedback { - top: 25px; -} -.has-feedback label.sr-only ~ .form-control-feedback { - top: 0; -} -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #737373; -} -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-static { - display: inline-block; - } - .form-inline .input-group { - display: inline-table; - vertical-align: middle; - } - .form-inline .input-group .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - .form-inline .radio input[type='radio'], - .form-inline .checkbox input[type='checkbox'] { - position: relative; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - padding-top: 7px; - margin-top: 0; - margin-bottom: 0; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 27px; -} -.form-horizontal .form-group { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .form-horizontal .control-label { - padding-top: 7px; - margin-bottom: 0; - text-align: right; - } -} -.form-horizontal .has-feedback .form-control-feedback { - right: 15px; -} -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 14.333333px; - } -} -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 6px; - } -} -.btn { - display: inline-block; - padding: 6px 12px; - margin-bottom: 0; - font-size: 14px; - font-weight: normal; - line-height: 1.42857143; - text-align: center; - white-space: nowrap; - vertical-align: middle; - -ms-touch-action: manipulation; - touch-action: manipulation; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus, -.btn.focus { - color: #333; - text-decoration: none; -} -.btn:active, -.btn.active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - pointer-events: none; - cursor: not-allowed; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; - opacity: 0.65; -} -.btn-default { - color: #333; - background-color: #fff; - border-color: #ccc; -} -.btn-default:hover, -.btn-default:focus, -.btn-default.focus, -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #fff; - border-color: #ccc; -} -.btn-default .badge { - color: #fff; - background-color: #333; -} -.btn-primary { - color: #fff; - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary:hover, -.btn-primary:focus, -.btn-primary.focus, -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #fff; - background-color: #286090; - border-color: #204d74; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary .badge { - color: #337ab7; - background-color: #fff; -} -.btn-success { - color: #fff; - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success:hover, -.btn-success:focus, -.btn-success.focus, -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #fff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success .badge { - color: #5cb85c; - background-color: #fff; -} -.btn-info { - color: #fff; - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info:hover, -.btn-info:focus, -.btn-info.focus, -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info .badge { - color: #5bc0de; - background-color: #fff; -} -.btn-warning { - color: #fff; - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning:hover, -.btn-warning:focus, -.btn-warning.focus, -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #fff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning .badge { - color: #f0ad4e; - background-color: #fff; -} -.btn-danger { - color: #fff; - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger:hover, -.btn-danger:focus, -.btn-danger.focus, -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger .badge { - color: #d9534f; - background-color: #fff; -} -.btn-link { - font-weight: normal; - color: #337ab7; - border-radius: 0; -} -.btn-link, -.btn-link:active, -.btn-link.active, -.btn-link[disabled], -fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-link, -.btn-link:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #23527c; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #777; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-xs, -.btn-group-xs > .btn { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type='submit'].btn-block, -input[type='reset'].btn-block, -input[type='button'].btn-block { - width: 100%; -} -.fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; -} -.collapse.in { - display: block; -} -tr.collapse.in { - display: table-row; -} -tbody.collapse.in { - display: table-row-group; -} -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition-timing-function: ease; - -o-transition-timing-function: ease; - transition-timing-function: ease; - -webkit-transition-duration: 0.35s; - -o-transition-duration: 0.35s; - transition-duration: 0.35s; - -webkit-transition-property: height, visibility; - -o-transition-property: height, visibility; - transition-property: height, visibility; -} -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px dashed; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} -.dropup, -.dropdown { - position: relative; -} -.dropdown-toggle:focus { - outline: 0; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - font-size: 14px; - text-align: left; - list-style: none; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857143; - color: #333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - color: #262626; - text-decoration: none; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - background-color: #337ab7; - outline: 0; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #777; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - cursor: not-allowed; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.open > .dropdown-menu { - display: block; -} -.open > a { - outline: 0; -} -.dropdown-menu-right { - right: 0; - left: auto; -} -.dropdown-menu-left { - right: auto; - left: 0; -} -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.42857143; - color: #777; - white-space: nowrap; -} -.dropdown-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - content: ''; - border-top: 0; - border-bottom: 4px solid; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - right: 0; - left: auto; - } - .navbar-right .dropdown-menu-left { - right: auto; - left: 0; - } -} -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - z-index: 2; -} -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; -} -.btn-toolbar { - margin-left: -5px; -} -.btn-toolbar .btn-group, -.btn-toolbar .input-group { - float: left; -} -.btn-toolbar > .btn, -.btn-toolbar > .btn-group, -.btn-toolbar > .input-group { - margin-left: 5px; -} -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} -.btn-group > .btn:first-child { - margin-left: 0; -} -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group > .btn-group { - float: left; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-right: 8px; - padding-left: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-right: 12px; - padding-left: 12px; -} -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn-group.open .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn .caret { - margin-left: 0; -} -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} -.dropup .btn-lg .caret { - border-width: 0 5px 5px; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; -} -.btn-group-vertical > .btn-group > .btn { - float: none; -} -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; -} -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-left-radius: 4px; -} -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} -.btn-group-justified > .btn, -.btn-group-justified > .btn-group { - display: table-cell; - float: none; - width: 1%; -} -.btn-group-justified > .btn-group .btn { - width: 100%; -} -.btn-group-justified > .btn-group .dropdown-menu { - left: auto; -} -[data-toggle='buttons'] > .btn input[type='radio'], -[data-toggle='buttons'] > .btn-group > .btn input[type='radio'], -[data-toggle='buttons'] > .btn input[type='checkbox'], -[data-toggle='buttons'] > .btn-group > .btn input[type='checkbox'] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} -.input-group { - position: relative; - display: table; - border-collapse: separate; -} -.input-group[class*='col-'] { - float: none; - padding-right: 0; - padding-left: 0; -} -.input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; -} -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-group-lg > .form-control, -select.input-group-lg > .input-group-addon, -select.input-group-lg > .input-group-btn > .btn { - height: 46px; - line-height: 46px; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].input-group-lg > .input-group-btn > .btn { - height: auto; -} -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-group-sm > .form-control, -select.input-group-sm > .input-group-addon, -select.input-group-sm > .input-group-btn > .btn { - height: 30px; - line-height: 30px; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; -} -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; -} -.input-group-addon { - padding: 6px 12px; - font-size: 14px; - font-weight: normal; - line-height: 1; - color: #555; - text-align: center; - background-color: #eee; - border: 1px solid #ccc; - border-radius: 4px; -} -.input-group-addon.input-sm { - padding: 5px 10px; - font-size: 12px; - border-radius: 3px; -} -.input-group-addon.input-lg { - padding: 10px 16px; - font-size: 18px; - border-radius: 6px; -} -.input-group-addon input[type='radio'], -.input-group-addon input[type='checkbox'] { - margin-top: 0; -} -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-group-addon:first-child { - border-right: 0; -} -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.input-group-addon:last-child { - border-left: 0; -} -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; -} -.input-group-btn > .btn { - position: relative; -} -.input-group-btn > .btn + .btn { - margin-left: -1px; -} -.input-group-btn > .btn:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - z-index: 2; -} -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group { - margin-right: -1px; -} -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group { - margin-left: -1px; -} -.nav { - padding-left: 0; - margin-bottom: 0; - list-style: none; -} -.nav > li { - position: relative; - display: block; -} -.nav > li > a { - position: relative; - display: block; - padding: 10px 15px; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li.disabled > a { - color: #777; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #777; - text-decoration: none; - cursor: not-allowed; - background-color: transparent; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #eee; - border-color: #337ab7; -} -.nav .nav-divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.nav > li > a > img { - max-width: none; -} -.nav-tabs { - border-bottom: 1px solid #ddd; -} -.nav-tabs > li { - float: left; - margin-bottom: -1px; -} -.nav-tabs > li > a { - margin-right: 2px; - line-height: 1.42857143; - border: 1px solid transparent; - border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover { - border-color: #eee #eee #ddd; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #555; - cursor: default; - background-color: #fff; - border: 1px solid #ddd; - border-bottom-color: transparent; -} -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} -.nav-tabs.nav-justified > li { - float: none; -} -.nav-tabs.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.nav-pills > li { - float: left; -} -.nav-pills > li > a { - border-radius: 4px; -} -.nav-pills > li + li { - margin-left: 2px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #fff; - background-color: #337ab7; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} -.nav-justified { - width: 100%; -} -.nav-justified > li { - float: none; -} -.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs-justified { - border-bottom: 0; -} -.nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs-justified > .active > a, -.nav-tabs-justified > .active > a:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.tab-content > .tab-pane { - display: none; -} -.tab-content > .active { - display: block; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar { - position: relative; - min-height: 50px; - margin-bottom: 20px; - border: 1px solid transparent; -} -@media (min-width: 768px) { - .navbar { - border-radius: 4px; - } -} -@media (min-width: 768px) { - .navbar-header { - float: left; - } -} -.navbar-collapse { - padding-right: 15px; - padding-left: 15px; - overflow-x: visible; - -webkit-overflow-scrolling: touch; - border-top: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); -} -.navbar-collapse.in { - overflow-y: auto; -} -@media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; - } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-right: 0; - padding-left: 0; - } -} -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} -@media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; - } -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; - } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; -} -.navbar-brand { - float: left; - height: 50px; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} -.navbar-brand > img { - display: block; -} -@media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-left: -15px; - } -} -.navbar-toggle { - position: relative; - float: right; - padding: 9px 10px; - margin-top: 8px; - margin-right: 15px; - margin-bottom: 8px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.navbar-toggle:focus { - outline: 0; -} -.navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; -} -.navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} -@media (min-width: 768px) { - .navbar-toggle { - display: none; - } -} -.navbar-nav { - margin: 7.5px -15px; -} -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 20px; -} -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} -@media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; - } - .navbar-nav > li { - float: left; - } - .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - } -} -.navbar-form { - padding: 10px 15px; - margin-top: 8px; - margin-right: -15px; - margin-bottom: 8px; - margin-left: -15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); -} -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .navbar-form .form-control-static { - display: inline-block; - } - .navbar-form .input-group { - display: inline-table; - vertical-align: middle; - } - .navbar-form .input-group .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; - } - .navbar-form .radio input[type='radio'], - .navbar-form .checkbox input[type='checkbox'] { - position: relative; - margin-left: 0; - } - .navbar-form .has-feedback .form-control-feedback { - top: 0; - } -} -@media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; - } - .navbar-form .form-group:last-child { - margin-bottom: 0; - } -} -@media (min-width: 768px) { - .navbar-form { - width: auto; - padding-top: 0; - padding-bottom: 0; - margin-right: 0; - margin-left: 0; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } -} -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - margin-bottom: 0; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.navbar-btn { - margin-top: 8px; - margin-bottom: 8px; -} -.navbar-btn.btn-sm { - margin-top: 10px; - margin-bottom: 10px; -} -.navbar-btn.btn-xs { - margin-top: 14px; - margin-bottom: 14px; -} -.navbar-text { - margin-top: 15px; - margin-bottom: 15px; -} -@media (min-width: 768px) { - .navbar-text { - float: left; - margin-right: 15px; - margin-left: 15px; - } -} -@media (min-width: 768px) { - .navbar-left { - float: left !important; - } - .navbar-right { - float: right !important; - margin-right: -15px; - } - .navbar-right ~ .navbar-right { - margin-right: 0; - } -} -.navbar-default { - background-color: #f8f8f8; - border-color: #e7e7e7; -} -.navbar-default .navbar-brand { - color: #777; -} -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #5e5e5e; - background-color: transparent; -} -.navbar-default .navbar-text { - color: #777; -} -.navbar-default .navbar-nav > li > a { - color: #777; -} -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #333; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #555; - background-color: #e7e7e7; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #ccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #ddd; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: #ddd; -} -.navbar-default .navbar-toggle .icon-bar { - background-color: #888; -} -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #e7e7e7; -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - color: #555; - background-color: #e7e7e7; -} -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #777; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555; - background-color: #e7e7e7; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #ccc; - background-color: transparent; - } -} -.navbar-default .navbar-link { - color: #777; -} -.navbar-default .navbar-link:hover { - color: #333; -} -.navbar-default .btn-link { - color: #777; -} -.navbar-default .btn-link:hover, -.navbar-default .btn-link:focus { - color: #333; -} -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #ccc; -} -.navbar-inverse { - background-color: #222; - border-color: #080808; -} -.navbar-inverse .navbar-brand { - color: #9d9d9d; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-text { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #fff; - background-color: #080808; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #333; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: #333; -} -.navbar-inverse .navbar-toggle .icon-bar { - background-color: #fff; -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: #101010; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - color: #fff; - background-color: #080808; -} -@media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #9d9d9d; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #fff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444; - background-color: transparent; - } -} -.navbar-inverse .navbar-link { - color: #9d9d9d; -} -.navbar-inverse .navbar-link:hover { - color: #fff; -} -.navbar-inverse .btn-link { - color: #9d9d9d; -} -.navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link:focus { - color: #fff; -} -.navbar-inverse .btn-link[disabled]:hover, -fieldset[disabled] .navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link[disabled]:focus, -fieldset[disabled] .navbar-inverse .btn-link:focus { - color: #444; -} -.breadcrumb { - padding: 8px 15px; - margin-bottom: 20px; - list-style: none; - background-color: #f5f5f5; - border-radius: 4px; -} -.breadcrumb > li { - display: inline-block; -} -.breadcrumb > li + li:before { - padding: 0 5px; - color: #ccc; - content: '/\00a0'; -} -.breadcrumb > .active { - color: #777; -} -.pagination { - display: inline-block; - padding-left: 0; - margin: 20px 0; - border-radius: 4px; -} -.pagination > li { - display: inline; -} -.pagination > li > a, -.pagination > li > span { - position: relative; - float: left; - padding: 6px 12px; - margin-left: -1px; - line-height: 1.42857143; - color: #337ab7; - text-decoration: none; - background-color: #fff; - border: 1px solid #ddd; -} -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - color: #23527c; - background-color: #eee; - border-color: #ddd; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 2; - color: #fff; - cursor: default; - background-color: #337ab7; - border-color: #337ab7; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - color: #777; - cursor: not-allowed; - background-color: #fff; - border-color: #ddd; -} -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 10px 16px; - font-size: 18px; -} -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-top-left-radius: 6px; - border-bottom-left-radius: 6px; -} -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-top-right-radius: 6px; - border-bottom-right-radius: 6px; -} -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 10px; - font-size: 12px; -} -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; -} -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; -} -.pager { - padding-left: 0; - margin: 20px 0; - text-align: center; - list-style: none; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #eee; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #777; - cursor: not-allowed; - background-color: #fff; -} -.label { - display: inline; - padding: 0.2em 0.6em 0.3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: 0.25em; -} -a.label:hover, -a.label:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label:empty { - display: none; -} -.btn .label { - position: relative; - top: -1px; -} -.label-default { - background-color: #777; -} -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #5e5e5e; -} -.label-primary { - background-color: #337ab7; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #286090; -} -.label-success { - background-color: #5cb85c; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #449d44; -} -.label-info { - background-color: #5bc0de; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; -} -.label-warning { - background-color: #f0ad4e; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #ec971f; -} -.label-danger { - background-color: #d9534f; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - background-color: #777; - border-radius: 10px; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -.btn-xs .badge, -.btn-group-xs > .btn .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #337ab7; - background-color: #fff; -} -.list-group-item > .badge { - float: right; -} -.list-group-item > .badge + .badge { - margin-right: 5px; -} -.nav-pills > li > a > .badge { - margin-left: 3px; -} -.jumbotron { - padding: 30px 15px; - margin-bottom: 30px; - color: inherit; - background-color: #eee; -} -.jumbotron h1, -.jumbotron .h1 { - color: inherit; -} -.jumbotron p { - margin-bottom: 15px; - font-size: 21px; - font-weight: 200; -} -.jumbotron > hr { - border-top-color: #d5d5d5; -} -.container .jumbotron, -.container-fluid .jumbotron { - border-radius: 6px; -} -.jumbotron .container { - max-width: 100%; -} -@media screen and (min-width: 768px) { - .jumbotron { - padding: 48px 0; - } - .container .jumbotron, - .container-fluid .jumbotron { - padding-right: 60px; - padding-left: 60px; - } - .jumbotron h1, - .jumbotron .h1 { - font-size: 63px; - } -} -.thumbnail { - display: block; - padding: 4px; - margin-bottom: 20px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: border 0.2s ease-in-out; - -o-transition: border 0.2s ease-in-out; - transition: border 0.2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-right: auto; - margin-left: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #337ab7; -} -.thumbnail .caption { - padding: 9px; - color: #333; -} -.alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 4px; -} -.alert h4 { - margin-top: 0; - color: inherit; -} -.alert .alert-link { - font-weight: bold; -} -.alert > p, -.alert > ul { - margin-bottom: 0; -} -.alert > p + p { - margin-top: 5px; -} -.alert-dismissable, -.alert-dismissible { - padding-right: 35px; -} -.alert-dismissable .close, -.alert-dismissible .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} -.alert-success { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.alert-success hr { - border-top-color: #c9e2b3; -} -.alert-success .alert-link { - color: #2b542c; -} -.alert-info { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.alert-info hr { - border-top-color: #a6e1ec; -} -.alert-info .alert-link { - color: #245269; -} -.alert-warning { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.alert-warning hr { - border-top-color: #f7e1b5; -} -.alert-warning .alert-link { - color: #66512c; -} -.alert-danger { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.alert-danger hr { - border-top-color: #e4b9c0; -} -.alert-danger .alert-link { - color: #843534; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-o-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - height: 20px; - margin-bottom: 20px; - overflow: hidden; - background-color: #f5f5f5; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -} -.progress-bar { - float: left; - width: 0; - height: 100%; - font-size: 12px; - line-height: 20px; - color: #fff; - text-align: center; - background-color: #337ab7; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-transition: width 0.6s ease; - -o-transition: width 0.6s ease; - transition: width 0.6s ease; -} -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: -webkit-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: -o-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - -webkit-background-size: 40px 40px; - background-size: 40px 40px; -} -.progress.active .progress-bar, -.progress-bar.active { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-bar-success { - background-color: #5cb85c; -} -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: -o-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); -} -.progress-bar-info { - background-color: #5bc0de; -} -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: -o-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); -} -.progress-bar-warning { - background-color: #f0ad4e; -} -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: -o-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); -} -.progress-bar-danger { - background-color: #d9534f; -} -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: -o-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); -} -.media { - margin-top: 15px; -} -.media:first-child { - margin-top: 0; -} -.media, -.media-body { - overflow: hidden; - zoom: 1; -} -.media-body { - width: 10000px; -} -.media-object { - display: block; -} -.media-right, -.media > .pull-right { - padding-left: 10px; -} -.media-left, -.media > .pull-left { - padding-right: 10px; -} -.media-left, -.media-right, -.media-body { - display: table-cell; - vertical-align: top; -} -.media-middle { - vertical-align: middle; -} -.media-bottom { - vertical-align: bottom; -} -.media-heading { - margin-top: 0; - margin-bottom: 5px; -} -.media-list { - padding-left: 0; - list-style: none; -} -.list-group { - padding-left: 0; - margin-bottom: 20px; -} -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid #ddd; -} -.list-group-item:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -a.list-group-item { - color: #555; -} -a.list-group-item .list-group-item-heading { - color: #333; -} -a.list-group-item:hover, -a.list-group-item:focus { - color: #555; - text-decoration: none; - background-color: #f5f5f5; -} -.list-group-item.disabled, -.list-group-item.disabled:hover, -.list-group-item.disabled:focus { - color: #777; - cursor: not-allowed; - background-color: #eee; -} -.list-group-item.disabled .list-group-item-heading, -.list-group-item.disabled:hover .list-group-item-heading, -.list-group-item.disabled:focus .list-group-item-heading { - color: inherit; -} -.list-group-item.disabled .list-group-item-text, -.list-group-item.disabled:hover .list-group-item-text, -.list-group-item.disabled:focus .list-group-item-text { - color: #777; -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading, -.list-group-item.active .list-group-item-heading > small, -.list-group-item.active:hover .list-group-item-heading > small, -.list-group-item.active:focus .list-group-item-heading > small, -.list-group-item.active .list-group-item-heading > .small, -.list-group-item.active:hover .list-group-item-heading > .small, -.list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; -} -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .list-group-item-text { - color: #c7ddef; -} -.list-group-item-success { - color: #3c763d; - background-color: #dff0d8; -} -a.list-group-item-success { - color: #3c763d; -} -a.list-group-item-success .list-group-item-heading { - color: inherit; -} -a.list-group-item-success:hover, -a.list-group-item-success:focus { - color: #3c763d; - background-color: #d0e9c6; -} -a.list-group-item-success.active, -a.list-group-item-success.active:hover, -a.list-group-item-success.active:focus { - color: #fff; - background-color: #3c763d; - border-color: #3c763d; -} -.list-group-item-info { - color: #31708f; - background-color: #d9edf7; -} -a.list-group-item-info { - color: #31708f; -} -a.list-group-item-info .list-group-item-heading { - color: inherit; -} -a.list-group-item-info:hover, -a.list-group-item-info:focus { - color: #31708f; - background-color: #c4e3f3; -} -a.list-group-item-info.active, -a.list-group-item-info.active:hover, -a.list-group-item-info.active:focus { - color: #fff; - background-color: #31708f; - border-color: #31708f; -} -.list-group-item-warning { - color: #8a6d3b; - background-color: #fcf8e3; -} -a.list-group-item-warning { - color: #8a6d3b; -} -a.list-group-item-warning .list-group-item-heading { - color: inherit; -} -a.list-group-item-warning:hover, -a.list-group-item-warning:focus { - color: #8a6d3b; - background-color: #faf2cc; -} -a.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus { - color: #fff; - background-color: #8a6d3b; - border-color: #8a6d3b; -} -.list-group-item-danger { - color: #a94442; - background-color: #f2dede; -} -a.list-group-item-danger { - color: #a94442; -} -a.list-group-item-danger .list-group-item-heading { - color: inherit; -} -a.list-group-item-danger:hover, -a.list-group-item-danger:focus { - color: #a94442; - background-color: #ebcccc; -} -a.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus { - color: #fff; - background-color: #a94442; - border-color: #a94442; -} -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} -.panel { - margin-bottom: 20px; - background-color: #fff; - border: 1px solid transparent; - border-radius: 4px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); -} -.panel-body { - padding: 15px; -} -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel-heading > .dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 16px; - color: inherit; -} -.panel-title > a, -.panel-title > small, -.panel-title > .small, -.panel-title > small > a, -.panel-title > .small > a { - color: inherit; -} -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .list-group, -.panel > .panel-collapse > .list-group { - margin-bottom: 0; -} -.panel > .list-group .list-group-item, -.panel > .panel-collapse > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; -} -.panel > .list-group:first-child .list-group-item:first-child, -.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .list-group:last-child .list-group-item:last-child, -.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.list-group + .panel-footer { - border-top-width: 0; -} -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; -} -.panel > .table caption, -.panel > .table-responsive > .table caption, -.panel > .panel-collapse > .table caption { - padding-right: 15px; - padding-left: 15px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 3px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 3px; -} -.panel > .panel-body + .table, -.panel > .panel-body + .table-responsive, -.panel > .table + .panel-body, -.panel > .table-responsive + .panel-body { - border-top: 1px solid #ddd; -} -.panel > .table > tbody:first-child > tr:first-child th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; -} -.panel > .table-responsive { - margin-bottom: 0; - border: 0; -} -.panel-group { - margin-bottom: 20px; -} -.panel-group .panel { - margin-bottom: 0; - border-radius: 4px; -} -.panel-group .panel + .panel { - margin-top: 5px; -} -.panel-group .panel-heading { - border-bottom: 0; -} -.panel-group .panel-heading + .panel-collapse > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - border-top: 1px solid #ddd; -} -.panel-group .panel-footer { - border-top: 0; -} -.panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #ddd; -} -.panel-default { - border-color: #ddd; -} -.panel-default > .panel-heading { - color: #333; - background-color: #f5f5f5; - border-color: #ddd; -} -.panel-default > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ddd; -} -.panel-default > .panel-heading .badge { - color: #f5f5f5; - background-color: #333; -} -.panel-default > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ddd; -} -.panel-primary { - border-color: #337ab7; -} -.panel-primary > .panel-heading { - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #337ab7; -} -.panel-primary > .panel-heading .badge { - color: #337ab7; - background-color: #fff; -} -.panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #337ab7; -} -.panel-success { - border-color: #d6e9c6; -} -.panel-success > .panel-heading { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.panel-success > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #d6e9c6; -} -.panel-success > .panel-heading .badge { - color: #dff0d8; - background-color: #3c763d; -} -.panel-success > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #d6e9c6; -} -.panel-info { - border-color: #bce8f1; -} -.panel-info > .panel-heading { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.panel-info > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #bce8f1; -} -.panel-info > .panel-heading .badge { - color: #d9edf7; - background-color: #31708f; -} -.panel-info > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #bce8f1; -} -.panel-warning { - border-color: #faebcc; -} -.panel-warning > .panel-heading { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.panel-warning > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #faebcc; -} -.panel-warning > .panel-heading .badge { - color: #fcf8e3; - background-color: #8a6d3b; -} -.panel-warning > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #faebcc; -} -.panel-danger { - border-color: #ebccd1; -} -.panel-danger > .panel-heading { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.panel-danger > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ebccd1; -} -.panel-danger > .panel-heading .badge { - color: #f2dede; - background-color: #a94442; -} -.panel-danger > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ebccd1; -} -.embed-responsive { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; -} -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; -} -.embed-responsive-16by9 { - padding-bottom: 56.25%; -} -.embed-responsive-4by3 { - padding-bottom: 75%; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} -.well-lg { - padding: 24px; - border-radius: 6px; -} -.well-sm { - padding: 9px; - border-radius: 3px; -} -.close { - float: right; - font-size: 21px; - font-weight: bold; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - filter: alpha(opacity=20); - opacity: 0.2; -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - filter: alpha(opacity=50); - opacity: 0.5; -} -button.close { - -webkit-appearance: none; - padding: 0; - cursor: pointer; - background: transparent; - border: 0; -} -.modal-open { - overflow: hidden; -} -.modal { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; - display: none; - overflow: hidden; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.modal.fade .modal-dialog { - -webkit-transition: -webkit-transform 0.3s ease-out; - -o-transition: -o-transform 0.3s ease-out; - transition: transform 0.3s ease-out; - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); -} -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} -.modal-content { - position: relative; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - outline: 0; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000; -} -.modal-backdrop.fade { - filter: alpha(opacity=0); - opacity: 0; -} -.modal-backdrop.in { - filter: alpha(opacity=50); - opacity: 0.5; -} -.modal-header { - min-height: 16.42857143px; - padding: 15px; - border-bottom: 1px solid #e5e5e5; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.42857143; -} -.modal-body { - position: relative; - padding: 15px; -} -.modal-footer { - padding: 15px; - text-align: right; - border-top: 1px solid #e5e5e5; -} -.modal-footer .btn + .btn { - margin-bottom: 0; - margin-left: 5px; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} -@media (min-width: 768px) { - .modal-dialog { - width: 600px; - margin: 30px auto; - } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - } - .modal-sm { - width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: 12px; - font-weight: normal; - line-height: 1.4; - filter: alpha(opacity=0); - opacity: 0; -} -.tooltip.in { - filter: alpha(opacity=90); - opacity: 0.9; -} -.tooltip.top { - padding: 5px 0; - margin-top: -3px; -} -.tooltip.right { - padding: 0 5px; - margin-left: 3px; -} -.tooltip.bottom { - padding: 5px 0; - margin-top: 3px; -} -.tooltip.left { - padding: 0 5px; - margin-left: -3px; -} -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #fff; - text-align: center; - text-decoration: none; - background-color: #000; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-left .tooltip-arrow { - right: 5px; - bottom: 0; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-right .tooltip-arrow { - bottom: 0; - left: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - right: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - left: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: none; - max-width: 276px; - padding: 1px; - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: 14px; - font-weight: normal; - line-height: 1.42857143; - text-align: left; - white-space: normal; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - padding: 8px 14px; - margin: 0; - font-size: 14px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: 5px 5px 0 0; -} -.popover-content { - padding: 9px 14px; -} -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover > .arrow { - border-width: 11px; -} -.popover > .arrow:after { - content: ''; - border-width: 10px; -} -.popover.top > .arrow { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, 0.25); - border-bottom-width: 0; -} -.popover.top > .arrow:after { - bottom: 1px; - margin-left: -10px; - content: ' '; - border-top-color: #fff; - border-bottom-width: 0; -} -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, 0.25); - border-left-width: 0; -} -.popover.right > .arrow:after { - bottom: -10px; - left: 1px; - content: ' '; - border-right-color: #fff; - border-left-width: 0; -} -.popover.bottom > .arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, 0.25); -} -.popover.bottom > .arrow:after { - top: 1px; - margin-left: -10px; - content: ' '; - border-top-width: 0; - border-bottom-color: #fff; -} -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, 0.25); -} -.popover.left > .arrow:after { - right: 1px; - bottom: -10px; - content: ' '; - border-right-width: 0; - border-left-color: #fff; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} -.carousel-inner > .item { - position: relative; - display: none; - -webkit-transition: 0.6s ease-in-out left; - -o-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -@media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - -webkit-transition: -webkit-transform 0.6s ease-in-out; - -o-transition: -o-transform 0.6s ease-in-out; - transition: transform 0.6s ease-in-out; - - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000; - perspective: 1000; - } - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - left: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - left: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - left: 0; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 15%; - font-size: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); - filter: alpha(opacity=50); - opacity: 0.5; -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: -webkit-gradient( - linear, - left top, - right top, - from(rgba(0, 0, 0, 0.5)), - to(rgba(0, 0, 0, 0.0001)) - ); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control.right { - right: 0; - left: auto; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: -webkit-gradient( - linear, - left top, - right top, - from(rgba(0, 0, 0, 0.0001)), - to(rgba(0, 0, 0, 0.5)) - ); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - filter: alpha(opacity=90); - outline: 0; - opacity: 0.9; -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - margin-top: -10px; - font-family: serif; - line-height: 1; -} -.carousel-control .icon-prev:before { - content: '\2039'; -} -.carousel-control .icon-next:before { - content: '\203a'; -} -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - padding-left: 0; - margin-left: -30%; - text-align: center; - list-style: none; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); - border: 1px solid #fff; - border-radius: 10px; -} -.carousel-indicators .active { - width: 12px; - height: 12px; - margin: 0; - background-color: #fff; -} -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); -} -.carousel-caption .btn { - text-shadow: none; -} -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -15px; - font-size: 30px; - } - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: -15px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-right: -15px; - } - .carousel-caption { - right: 20%; - left: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-footer:before, -.modal-footer:after { - display: table; - content: ' '; -} -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-footer:after { - clear: both; -} -.center-block { - display: block; - margin-right: auto; - margin-left: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-inline-block { - display: none !important; -} -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - table.visible-xs { - display: table; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} -@media (max-width: 767px) { - .visible-xs-block { - display: block !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline { - display: inline !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline-block { - display: inline-block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - table.visible-sm { - display: table; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-block { - display: block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline { - display: inline !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline-block { - display: inline-block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; - } - table.visible-md { - display: table; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-block { - display: block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline { - display: inline !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline-block { - display: inline-block !important; - } -} -@media (min-width: 1200px) { - .visible-lg { - display: block !important; - } - table.visible-lg { - display: table; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} -@media (min-width: 1200px) { - .visible-lg-block { - display: block !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline { - display: inline !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline-block { - display: inline-block !important; - } -} -@media (max-width: 767px) { - .hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md { - display: none !important; - } -} -@media (min-width: 1200px) { - .hidden-lg { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: block !important; - } - table.visible-print { - display: table; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.visible-print { - display: table-cell !important; - } -} -.visible-print-block { - display: none !important; -} -@media print { - .visible-print-block { - display: block !important; - } -} -.visible-print-inline { - display: none !important; -} -@media print { - .visible-print-inline { - display: inline !important; - } -} -.visible-print-inline-block { - display: none !important; -} -@media print { - .visible-print-inline-block { - display: inline-block !important; - } -} -@media print { - .hidden-print { - display: none !important; - } -} diff --git a/theme/styles/web/sass/core/_legacy/bootstrap/fonts/glyphicons-halflings-regular.woff b/theme/styles/web/sass/core/_legacy/bootstrap/fonts/glyphicons-halflings-regular.woff deleted file mode 100644 index 9e61285..0000000 Binary files a/theme/styles/web/sass/core/_legacy/bootstrap/fonts/glyphicons-halflings-regular.woff and /dev/null differ diff --git a/theme/styles/web/sass/core/_legacy/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/theme/styles/web/sass/core/_legacy/bootstrap/fonts/glyphicons-halflings-regular.woff2 deleted file mode 100644 index 64539b5..0000000 Binary files a/theme/styles/web/sass/core/_legacy/bootstrap/fonts/glyphicons-halflings-regular.woff2 and /dev/null differ diff --git a/theme/styles/web/sass/core/_variables.scss b/theme/styles/web/sass/core/_variables.scss deleted file mode 100644 index 5c864ad..0000000 --- a/theme/styles/web/sass/core/_variables.scss +++ /dev/null @@ -1,649 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -// -// ██████╗ █████╗ ███████╗██╗ ██████╗ -// ██╔══██╗██╔══██╗██╔════╝██║██╔════╝ -// ██████╔╝███████║███████╗██║██║ -// ██╔══██╗██╔══██║╚════██║██║██║ -// ██████╔╝██║ ██║███████║██║╚██████╗ -// ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝ -// - - -//== Gray Shades -//## Different gray shades to be used for our variables and components -$gray-darker: #222 !default; -$gray-dark: #333 !default; -$gray: #555 !default; -$gray-light: #888 !default; -$gray-primary: #d7d7d7 !default; -$gray-lighter: #eee !default; - - -//== Step 1: Brand Colors -$brand-default: #DDDDDD !default; -$brand-primary: #0595DB !default; -$brand-inverse: #252C36 !default; -$brand-info: #48B0F7 !default; -$brand-success: #76CA02 !default; -$brand-warning: #f99b1d !default; -$brand-danger: #ed1c24 !default; - -$brand-logo: false !default; -$brand-logo-height: 26px !default; -$brand-logo-width: 26px !default; // Only used for CSS brand logo - - - - - -//== Step 2: UI Customization - -// Default Font Size & Color -$font-size-default: 14px !default; -$font-color-default: #555 !default; - -// Global Border Color -$border-color-default: $gray-primary !default; -$border-radius-default: 4px !default; - -// Topbar -$topbar-bg: #FFF !default; -$topbar-minimalheight: 60px !default; -$topbar-border-color: $border-color-default !default; - -// Topbar mobile -$m-header-height: 45px !default; -$m-header-bg: $topbar-bg !default; -$m-header-color: #555 !default; -$m-header-title-size: 17px !default; - - -// Sidebar -$sidebar-bg: $brand-inverse !default; - -// Navbar Brand Name / For your company, product, or project name (used in layouts/base/) -$navbar-brand-name: $font-color-default !default; - -// Background Colors -$bg-color: #FFF !default; -$bg-color-secondary: #F5F8FD !default; // Background color that is used for specific page templates background - -// Default Link Color -$link-color: $brand-primary !default; -$link-hover-color: darken($link-color, 15%) !default; - - - - - -// -// █████╗ ██████╗ ██╗ ██╗ █████╗ ███╗ ██╗ ██████╗███████╗██████╗ -// ██╔══██╗██╔══██╗██║ ██║██╔══██╗████╗ ██║██╔════╝██╔════╝██╔══██╗ -// ███████║██║ ██║██║ ██║███████║██╔██╗ ██║██║ █████╗ ██║ ██║ -// ██╔══██║██║ ██║╚██╗ ██╔╝██╔══██║██║╚██╗██║██║ ██╔══╝ ██║ ██║ -// ██║ ██║██████╔╝ ╚████╔╝ ██║ ██║██║ ╚████║╚██████╗███████╗██████╔╝ -// ╚═╝ ╚═╝╚═════╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ -// - - -//== Typography -//## Change your font family, weight, line-height, headings and more (used in components/typography) - -// Font Family Import (Used for google font plugin in theme creater https://ux.mendix.com/theme-creator.html) -$font-family-import: "https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700" !default; -@if $font-family-import != false { - // Only import, if the import is set - @import url($font-family-import); -} - -// Font Family / False = fallback from Bootstrap (Helvetica Neue) -$font-family-base: 'Open Sans', sans-serif !default; - -// Font Sizes -$font-size-large: 16px !default; -$font-size-small: 12px !default; - -// Font Weights -$font-weight-light: 100 !default; -$font-weight-normal: normal !default; -$font-weight-semibold: 600 !default; -$font-weight-bold: bold !default; - -// Font Size Headers -$font-size-h1: 31px !default; -$font-size-h2: 26px !default; -$font-size-h3: 24px !default; -$font-size-h4: 18px !default; -$font-size-h5: $font-size-default !default; -$font-size-h6: 12px !default; - -// Font Weight Headers -$font-weight-header: $font-weight-normal !default; - -// Line Height -$line-height-base: 1.428571429 !default; - -// Spacing -$font-header-margin: 15px 0 30px 0 !default; - -// Text Colors -$font-color-header: #17347B !default; -$font-color-detail: $gray-light !default; - - - - - -//== Navigation -//## Used in components/navigation - -// Default Navigation styling -$navigation-item-height: 60px !default; -$navigation-item-padding: 5px 15px !default; - -$navigation-font-size: $font-size-default !default; -$navigation-sub-font-size: $font-size-small !default; -$navigation-glyph-size: 20px !default; // For glyphicons that you can select in the Mendix Modeler - -$navigation-bg: $brand-inverse !default; -$navigation-bg-hover: lighten($navigation-bg, 4) !default; -$navigation-bg-active: lighten($navigation-bg, 8) !default; -$navigation-color: #FFF !default; -$navigation-color-hover: #FFF !default; -$navigation-color-active: #FFF !default; - -$navigation-sub-bg: darken($navigation-bg, 4) !default; -$navigation-sub-bg-hover: $navigation-sub-bg !default; -$navigation-sub-bg-active: $navigation-sub-bg !default; -$navigation-sub-color: #AAA !default; -$navigation-sub-color-hover: $brand-primary !default; -$navigation-sub-color-active: $brand-primary !default; - -$navigation-border-color: $navigation-bg-hover !default; - -// Navigation Sidebar -$navsidebar-font-size: $font-size-default !default; -$navsidebar-sub-font-size: $font-size-small !default; -$navsidebar-glyph-size: 20px !default; // For glyphicons that you can select in the Mendix Modeler - -$navsidebar-bg: $sidebar-bg !default; -$navsidebar-bg-hover: lighten($navsidebar-bg, 4) !default; -$navsidebar-bg-active: lighten($navsidebar-bg, 8) !default; -$navsidebar-color: #FFF !default; -$navsidebar-color-hover: #FFF !default; -$navsidebar-color-active: #FFF !default; - -$navsidebar-sub-bg: darken($navsidebar-bg, 4) !default; -$navsidebar-sub-bg-hover: $navsidebar-sub-bg !default; -$navsidebar-sub-bg-active: $navsidebar-sub-bg !default; -$navsidebar-sub-color: #AAA !default; -$navsidebar-sub-color-hover: $brand-primary !default; -$navsidebar-sub-color-active: $brand-primary !default; - -$navsidebar-border-color: $navsidebar-bg-hover !default; - -// Navigation topbar -$navtopbar-font-size: $font-size-default !default; -$navtopbar-sub-font-size: $font-size-small !default; -$navtopbar-glyph-size: 1.2em !default; // For glyphicons that you can select in the Mendix Modeler - -$navtopbar-bg: $topbar-bg !default; -$navtopbar-bg-hover: darken($navtopbar-bg, 4) !default; -$navtopbar-bg-active: darken($navtopbar-bg, 8) !default; -$navtopbar-color: $font-color-default !default; -$navtopbar-color-hover: $navtopbar-color !default; -$navtopbar-color-active: $navtopbar-color !default; - -$navtopbar-sub-bg: lighten($navtopbar-bg, 4) !default; -$navtopbar-sub-bg-hover: $navtopbar-sub-bg !default; -$navtopbar-sub-bg-active: $navtopbar-sub-bg !default; -$navtopbar-sub-color: #AAA !default; -$navtopbar-sub-color-hover: $brand-primary !default; -$navtopbar-sub-color-active: $brand-primary !default; - -//## Used in layouts/base -$navtopbar-border-color: $topbar-border-color !default; - - - - -//== Form -//## Used in components/inputs - -// Values that can be used default | lined -$form-input-style: default !default; - -// Form Label -$form-label-color: #666 !default; -$form-label-size: $font-size-default !default; -$form-label-weight: $font-weight-semibold !default; -$form-label-gutter: 8px !default; - -// Form Input dimensions -$form-input-height: auto !default; -$form-input-padding-y: 8px !default; -$form-input-padding-x: 10px !default; -$form-input-font-size: $form-label-size !default; -$form-input-line-height: $line-height-base !default; -$form-input-border-radius: $border-radius-default !default; - -// Form Input styling -$form-input-bg: #FFF !default; -$form-input-bg-focus: #FFF !default; -$form-input-bg-hover: $gray-primary !default; -$form-input-bg-disabled: $gray-lighter !default; -$form-input-color: $font-color-default !default; -$form-input-focus-color: $form-input-color !default; -$form-input-disabled-color: $form-input-color !default; -$form-input-placeholder-color: $gray-light !default; -$form-input-border-color: $border-color-default !default; -$form-input-border-focus-color: $brand-primary !default; - -// Form Input Static styling -$form-input-static-border-color: #F0F0EE !default; - -// Form Group -$form-group-margin-bottom: 15px !default; -$form-group-gutter: 15px !default; - - - - -//== Buttons -//## Define background-color, border-color and text. Used in components/buttons - -// Default button style -$btn-font-size: 14px !default; -$btn-bordered: false !default; // Default value false, set to true if you want this effect -$btn-border-radius: $border-radius-default !default; - -// Button Background Color -$btn-default-bg: #FFF !default; -$btn-inverse-bg: $brand-inverse !default; -$btn-primary-bg: $brand-primary !default; -$btn-info-bg: $brand-info !default; -$btn-success-bg: $brand-success !default; -$btn-warning-bg: $brand-warning !default; -$btn-danger-bg: $brand-danger !default; - -// Button Border Color -$btn-default-border-color: $brand-default !default; -$btn-inverse-border-color: $btn-inverse-bg !default; -$btn-primary-border-color: $btn-primary-bg !default; -$btn-info-border-color: $btn-info-bg !default; -$btn-success-border-color: $btn-success-bg !default; -$btn-warning-border-color: $btn-warning-bg !default; -$btn-danger-border-color: $btn-danger-bg !default; - -// Button Text Color -$btn-default-color: $brand-primary !default; -$btn-inverse-color: #FFF !default; -$btn-primary-color: #FFF !default; -$btn-info-color: #FFF !default; -$btn-success-color: #FFF !default; -$btn-warning-color: #FFF !default; -$btn-danger-color: #FFF !default; - -// Button Background Color -$btn-default-bg-hover: $btn-default-border-color !default; -$btn-inverse-bg-hover: mix($btn-inverse-bg, white, 80%) !default; -$btn-primary-bg-hover: mix($btn-primary-bg, black, 80%) !default; -$btn-info-bg-hover: mix($btn-info-bg, black, 80%) !default; -$btn-success-bg-hover: mix($btn-success-bg, black, 80%) !default; -$btn-warning-bg-hover: mix($btn-warning-bg, black, 80%) !default; -$btn-danger-bg-hover: mix($btn-danger-bg, black, 80%) !default; -$btn-link-bg-hover: $gray-lighter !default; - - - - -//== Header blocks -//## Define look and feel over multible building blocks that serve as header -$header-bg-color: $bg-color-secondary !default; -$header-text-color: #FFF !default; -$header-text-color-detail: rgba(0,0,0, 0.2) !default; - - - - - -// -// ███████╗██╗ ██╗██████╗ ███████╗██████╗ ████████╗ -// ██╔════╝╚██╗██╔╝██╔══██╗██╔════╝██╔══██╗╚══██╔══╝ -// █████╗ ╚███╔╝ ██████╔╝█████╗ ██████╔╝ ██║ -// ██╔══╝ ██╔██╗ ██╔═══╝ ██╔══╝ ██╔══██╗ ██║ -// ███████╗██╔╝ ██╗██║ ███████╗██║ ██║ ██║ -// ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ -// - -//== Color variations -//## These variations are used to support several other variables and components - -// Color variations -$color-default-darker: mix($brand-default, black, 60%) !default; -$color-default-dark: mix($brand-default, black, 70%) !default; -$color-default-light: mix($brand-default, white, 60%) !default; -$color-default-lighter: mix($brand-default, white, 20%) !default; - -$color-inverse-darker: mix($brand-inverse, black, 60%) !default; -$color-inverse-dark: mix($brand-inverse, black, 70%) !default; -$color-inverse-light: mix($brand-inverse, white, 60%) !default; -$color-inverse-lighter: mix($brand-inverse, white, 20%) !default; - -$color-primary-darker: mix($brand-primary, black, 60%) !default; -$color-primary-dark: mix($brand-primary, black, 70%) !default; -$color-primary-light: mix($brand-primary, white, 60%) !default; -$color-primary-lighter: mix($brand-primary, white, 20%) !default; - -$color-info-darker: mix($brand-info, black, 60%) !default; -$color-info-dark: mix($brand-info, black, 70%) !default; -$color-info-light: mix($brand-info, white, 60%) !default; -$color-info-lighter: mix($brand-info, white, 20%) !default; - -$color-success-darker: mix($brand-success, black, 60%) !default; -$color-success-dark: mix($brand-success, black, 70%) !default; -$color-success-light: mix($brand-success, white, 60%) !default; -$color-success-lighter: mix($brand-success, white, 20%) !default; - -$color-warning-darker: mix($brand-warning, black, 60%) !default; -$color-warning-dark: mix($brand-warning, black, 70%) !default; -$color-warning-light: mix($brand-warning, white, 60%) !default; -$color-warning-lighter: mix($brand-warning, white, 20%) !default; - -$color-danger-darker: mix($brand-danger, black, 60%) !default; -$color-danger-dark: mix($brand-danger, black, 70%) !default; -$color-danger-light: mix($brand-danger, white, 60%) !default; -$color-danger-lighter: mix($brand-danger, white, 20%) !default; - -$brand-gradient: linear-gradient(152deg, #0CC7F0 0%, #087ECC 51%, #077AC9 55%, #0659B9 78%) !default; - - -//== Grids -//## Used for Datagrid, Templategrid, Listview & Tables (see components folder) - -// Default Border Colors -$grid-border-color: $border-color-default !default; - -// Spacing -// Default -$grid-padding-top: 15px !default; -$grid-padding-right: 15px !default; -$grid-padding-bottom: 15px !default; -$grid-padding-left: 15px !default; - -// Listview -$listview-padding-top: 15px !default; -$listview-padding-right: 15px !default; -$listview-padding-bottom: 15px !default; -$listview-padding-left: 15px !default; - -// Background Colors -$grid-bg: #FFF !default; -$grid-bg-header: transparent !default; // Grid Headers -$grid-bg-hover: mix($grid-border-color, #FFF, 20%) !default; -$grid-bg-selected: mix($grid-border-color, #FFF, 30%) !default; -$grid-bg-selected-hover: mix($grid-border-color, #FFF, 50%) !default; - -// Striped Background Color -$grid-bg-striped: mix($grid-border-color, #FFF, 10%) !default; - -// Background Footer Color -$grid-footer-bg: $gray-primary !default; - -// Text Color -$grid-selected-color: $font-color-default !default; - -// Paging Colors -$grid-paging-bg: transparent !default; -$grid-paging-bg-hover: transparent !default; -$grid-paging-border-color: transparent !default; -$grid-paging-border-color-hover: transparent !default; -$grid-paging-color: $gray-light !default; -$grid-paging-color-hover: $brand-primary !default; - - - - -//== Tabs -//## Default variables for Tab Container Widget (used in components/tabcontainer) - -// Text Color -$tabs-color: $font-color-detail !default; -$tabs-color-active: $font-color-default !default; -$tabs-lined-color-active: $brand-primary !default; - -// Border Color -$tabs-border-color: $border-color-default !default; -$tabs-lined-border-color: $brand-primary !default; - -// Background Color -$tabs-bg: #FFF !default; -$tabs-bg-hover: lighten($tabs-border-color,5) !default; -$tabs-bg-active: $brand-primary !default; - - - - -//== Modals -//## Default Mendix Modal, Blocking Modal and Login Modal (used in components/modals) - -// Background Color -$modal-header-bg: transparent !default; - -// Border Color -$modal-header-border-color: $border-color-default !default; - -// Text Color -$modal-header-color: $font-color-default !default; - - - - -//== Dataview -//## Default variables for Dataview Widget (used in components/dataview) - -// Controls -$dataview-controls-bg: transparent !default; -$dataview-controls-border-color: $border-color-default !default; - -// Empty Message -$dataview-emptymessage-bg: $bg-color !default; -$dataview-emptymessage-color: $font-color-default !default; - - - - -//== Alerts -//## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts) - -// Background Color -$alert-info-bg: $color-info-lighter !default; -$alert-success-bg: $color-success-lighter !default; -$alert-warning-bg: $color-warning-lighter !default; -$alert-danger-bg: $color-danger-lighter !default; - -// Text Color -$alert-info-color: $color-info-darker !default; -$alert-success-color: $color-success-darker !default; -$alert-warning-color: $color-warning-darker !default; -$alert-danger-color: $color-danger-darker !default; - -// Border Color -$alert-info-border-color: $color-info-dark !default; -$alert-success-border-color: $color-success-dark !default; -$alert-warning-border-color: $color-warning-dark !default; -$alert-danger-border-color: $color-danger-dark !default; - - - - -//== Labels -//## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels) - -// Background Color -$label-default-bg: $brand-default !default; -$label-primary-bg: $brand-primary !default; -$label-info-bg: $brand-info !default; -$label-inverse-bg: $brand-inverse !default; -$label-success-bg: $brand-success !default; -$label-warning-bg: $brand-warning !default; -$label-danger-bg: $brand-danger !default; - -// Border Color -$label-default-border-color: $brand-default !default; -$label-primary-border-color: $brand-primary !default; -$label-info-border-color: $brand-info !default; -$label-success-border-color: $brand-success !default; -$label-warning-border-color: $brand-warning !default; -$label-danger-border-color: $brand-danger !default; - -// Text Color -$label-default-color: $font-color-default !default; -$label-primary-color: #FFF !default; -$label-info-color: #FFF !default; -$label-inverse-color: #FFF !default; -$label-success-color: #FFF !default; -$label-warning-color: #FFF !default; -$label-danger-color: #FFF !default; - - - - -//== Groupbox -//## Default variables for Groupbox Widget (used in components/groupbox) - -// Background Color -$groupbox-default-bg: $brand-default !default; -$groupbox-inverse-bg: $brand-inverse !default; -$groupbox-primary-bg: $brand-primary !default; -$groupbox-info-bg: $brand-info !default; -$groupbox-success-bg: $brand-success !default; -$groupbox-warning-bg: $brand-warning !default; -$groupbox-danger-bg: $brand-danger !default; -$groupbox-white-bg: #FFF !default; - -// Text Color -$groupbox-default-color: $font-color-default !default; -$groupbox-inverse-color: #FFF !default; -$groupbox-primary-color: #FFF !default; -$groupbox-info-color: #FFF !default; -$groupbox-success-color: #FFF !default; -$groupbox-warning-color: #FFF !default; -$groupbox-danger-color: #FFF !default; -$groupbox-white-color: $font-color-default !default; - - - - -//== Callout (groupbox) Colors -//## Extended variables for Groupbox Widget (used in components/groupbox) - -// Text and Border Color -$callout-default-color: $font-color-default !default; -$callout-info-color: $brand-info !default; -$callout-success-color: $brand-success !default; -$callout-warning-color: $brand-warning !default; -$callout-danger-color: $brand-danger !default; - -// Background Color -$callout-default-bg: $color-default-lighter!default; -$callout-info-bg: $color-info-lighter !default; -$callout-success-bg: $color-success-lighter !default; -$callout-warning-bg: $color-warning-lighter !default; -$callout-danger-bg: $color-danger-lighter !default; - -//== Timeline -//## Extended variables for Timeline Widget -// Colors -$timeline-icon-color: $brand-primary; -$timeline-border-color: $border-color-default; - -$timeline-color-header: $font-color-header; -$timeline-color-detail: $font-color-detail; - -// Sizes -$timeline-icon-size: 18px; - -//== Spacing -//## Advanced layout options (used in base/mixins/default-spacing) - -// Small spacing -$spacing-small: 5px !default; - -// Medium spacing -$spacing-medium: 15px !default; -$t-spacing-medium: 15px !default; -$m-spacing-medium: 15px !default; - -// Large spacing -$spacing-large: 30px !default; -$t-spacing-large: 30px !default; -$m-spacing-large: 15px !default; - -// Layout spacing -$layout-spacing-top: 30px !default; -$layout-spacing-right: 30px !default; -$layout-spacing-bottom: 30px !default; -$layout-spacing-left: 30px !default; - -$t-layout-spacing-top: 30px !default; -$t-layout-spacing-right: 30px !default; -$t-layout-spacing-bottom: 30px !default; -$t-layout-spacing-left: 30px !default; - -$m-layout-spacing-top: 15px !default; -$m-layout-spacing-right: 15px !default; -$m-layout-spacing-bottom: 15px !default; -$m-layout-spacing-left: 15px !default; - -// Combined layout spacing -$layout-spacing: $layout-spacing-top $layout-spacing-right $layout-spacing-bottom $layout-spacing-left !default; -$m-layout-spacing: $m-layout-spacing-top $m-layout-spacing-right $m-layout-spacing-bottom $m-layout-spacing-left !default; -$t-layout-spacing: $t-layout-spacing-top $t-layout-spacing-right $t-layout-spacing-bottom $t-layout-spacing-left !default; - -// Gutter size -$gutter-size: 15px !default; - - - - - -//== Tables -//## Table spacing options (used in components/tables) - -$padding-table-cell-top: 8px !default; -$padding-table-cell-bottom: 8px !default; -$padding-table-cell-left: 8px !default; -$padding-table-cell-right: 8px !default; - - - - -//== Media queries breakpoints -//## Define the breakpoints at which your layout will change, adapting to different screen sizes. - -$screen-xs: 480px !default; -$screen-sm: 576px !default; -$screen-md: 768px !default; -$screen-lg: 992px !default; -$screen-xl: 1200px !default; - -// So media queries don't overlap when required, provide a maximum (used for max-width) -$screen-xs-max: ($screen-sm - 1) !default; -$screen-sm-max: ($screen-md - 1) !default; -$screen-md-max: ($screen-lg - 1) !default; -$screen-lg-max: ($screen-xl - 1) !default; - - -//== Settings -//## Enable or disable your desired framework features -// Use of !important -$important-flex: true !default; // ./base/flex.scss -$important-spacing: true !default; // ./base/spacing.scss -$important-helpers: true !default; // ./helpers/helperclasses.scss diff --git a/theme/styles/web/sass/core/base/_animation.scss b/theme/styles/web/sass/core/base/_animation.scss deleted file mode 100644 index 425d343..0000000 --- a/theme/styles/web/sass/core/base/_animation.scss +++ /dev/null @@ -1,55 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -@keyframes slideInUp { - from { - visibility: visible; - transform: translate3d(0, 100%, 0); - } - - to { - transform: translate3d(0, 0, 0); - } -} - -.animated { - animation-duration: 0.4s; - animation-fill-mode: both; -} - -.slideInUp { - animation-name: slideInUp; -} - -@keyframes slideInDown { - from { - visibility: visible; - transform: translate3d(0, -100%, 0); - } - - to { - transform: translate3d(0, 0, 0); - } -} - -.slideInDown { - animation-name: slideInDown; -} - -@keyframes fadeIn { - from { - opacity: 0; - } - - to { - opacity: 1; - } -} - -.fadeIn { - animation-name: fadeIn; -} diff --git a/theme/styles/web/sass/core/base/_base.scss b/theme/styles/web/sass/core/base/_base.scss deleted file mode 100644 index b9d4379..0000000 --- a/theme/styles/web/sass/core/base/_base.scss +++ /dev/null @@ -1,71 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Base - - Default settings -========================================================================== */ -html { - height: 100%; -} - -body { - min-height: 100%; - color: $font-color-default; - background-color: $bg-color; - font-family: $font-family-base; - font-size: $font-size-default; - font-weight: $font-weight-normal; - line-height: $line-height-base; -} - -a { - -moz-transition: 0.25s; - -o-transition: 0.25s; - -webkit-transition: 0.25s; - transition: 0.25s; - color: $link-color; - -webkit-backface-visibility: hidden; -} - -a:hover { - text-decoration: underline; - color: $link-hover-color; -} - -// Address `outline` inconsistency between Chrome and other browsers. -a:focus { - outline: thin dotted; -} - -// Improve readability when focused and also mouse hovered in all browsers -a:active, -a:hover { - outline: 0; -} - -// Removes large blue border in chrome on focus and active states -input:focus, -button:focus, -.mx-link:focus { - outline: 0; -} - -// Removes large blue border for tabindexes from widgets -div[tabindex] { - outline: 0; -} - -// Disabled State -.disabled, -[disabled] { - cursor: not-allowed; - // opacity: 0.65; - -webkit-box-shadow: none; - box-shadow: none; - filter: alpha(opacity=65); -} diff --git a/theme/styles/web/sass/core/base/_flex.scss b/theme/styles/web/sass/core/base/_flex.scss deleted file mode 100644 index 4f6364e..0000000 --- a/theme/styles/web/sass/core/base/_flex.scss +++ /dev/null @@ -1,180 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Flex - - Flex classes -========================================================================== */ -$important-flex-value: if($important-flex, ' !important', ''); - -// Flex layout -.flexcontainer { - display: flex; - overflow: hidden; - flex: 1; - flex-direction: row; - - .flexitem { - margin-right: $gutter-size; - - &:last-child { - margin-right: 0; - } - } - - .flexitem-main { - overflow: hidden; - flex: 1; - } -} - -// These classes define the order of the children -.flex-row { - flex-direction: row #{$important-flex-value}; -} - -.flex-column { - flex-direction: column #{$important-flex-value}; -} - -.flex-row-reverse { - flex-direction: row-reverse #{$important-flex-value}; -} - -.flex-column-reverse { - flex-direction: column-reverse #{$important-flex-value}; -} - -.flex-wrap { - flex-wrap: wrap #{$important-flex-value}; -} - -.flex-nowrap { - flex-wrap: nowrap #{$important-flex-value}; -} - -.flex-wrap-reverse { - flex-wrap: wrap-reverse #{$important-flex-value}; -} - -// Align children in both directions -.flex-center { - align-items: center #{$important-flex-value}; - justify-content: center #{$important-flex-value}; -} - -// These classes define the alignment of the children -.justify-content-start { - justify-content: flex-start #{$important-flex-value}; -} - -.justify-content-end { - justify-content: flex-end #{$important-flex-value}; -} - -.justify-content-center { - justify-content: center #{$important-flex-value}; -} - -.justify-content-between { - justify-content: space-between #{$important-flex-value}; -} - -.justify-content-around { - justify-content: space-around #{$important-flex-value}; -} - -.justify-content-evenly { - // Not Supported in IE11 - justify-content: space-evenly #{$important-flex-value}; -} - -.justify-content-stretch { - justify-content: stretch #{$important-flex-value}; -} - -/// These classes define the alignment of the children in the cross-direction -.align-children-start { - align-items: flex-start #{$important-flex-value}; -} - -.align-children-end { - align-items: flex-end #{$important-flex-value}; -} - -.align-children-center { - align-items: center #{$important-flex-value}; -} - -.align-children-baseline { - align-items: baseline #{$important-flex-value}; -} - -.align-children-stretch { - align-items: stretch #{$important-flex-value}; -} - -/// These classes define the alignment of the rows of children in the cross-direction -.align-content-start { - align-content: flex-start #{$important-flex-value}; -} - -.align-content-end { - align-content: flex-end #{$important-flex-value}; -} - -.align-content-center { - align-content: center #{$important-flex-value}; -} - -.align-content-between { - align-content: space-between #{$important-flex-value}; -} - -.align-content-around { - align-content: space-around #{$important-flex-value}; -} - -.align-content-stretch { - align-content: stretch #{$important-flex-value}; -} - -/// These classes allow the default alignment to be overridden for individual items -.align-self-auto { - align-self: auto #{$important-flex-value}; -} - -.align-self-start { - align-self: flex-start #{$important-flex-value}; -} - -.align-self-end { - align-self: flex-end #{$important-flex-value}; -} - -.align-self-center { - align-self: center #{$important-flex-value}; -} - -.align-self-baseline { - align-self: baseline #{$important-flex-value}; -} - -.align-self-stretch { - align-self: stretch #{$important-flex-value}; -} - -/// These classes define the percentage of available free space within a flex container a flex item will take. -@mixin flex-items($number) { - @for $i from 1 through $number { - .flexitem-#{$i} { - flex: #{$i} #{$i} 1%; - } - } -} - -@include flex-items($number: 12); diff --git a/theme/styles/web/sass/core/base/_login.scss b/theme/styles/web/sass/core/base/_login.scss deleted file mode 100644 index 6df8a0c..0000000 --- a/theme/styles/web/sass/core/base/_login.scss +++ /dev/null @@ -1,188 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -body { - height: 100%; -} - -.loginpage { - display: flex; - height: 100%; -} -.loginpage-logo { - position: absolute; - top: 30px; - right: 30px; - width: 120px; -} - -.loginpage-left { - display: none; -} - -.loginpage-right { - display: flex; - flex: 1; - flex-direction: column; - justify-content: space-around; -} -.loginpage-formwrapper { - width: 400px; - margin: 0 auto; -} -// Form -.loginpage-form { - .alert { - display: none; - } - - .btn { - border-radius: 40px; - } - - // Form label + input - .form-group { - width: 100%; - align-items: center; - - .control-label { - flex: 4; - margin-bottom: 0; - font-size: $font-size-default; - font-weight: 500; - } - - .inputwrapper { - flex: 8; - position: relative; - width: 100%; - - .glyphicon { - &:before { - -webkit-transition: color 0.4s; - -moz-transition: color 0.4s; - -o-transition: color 0.4s; - transition: color 0.4s; - } - - position: absolute; - top: 50%; - left: $form-input-padding-x; - -webkit-transform: translateY(-50%); - -moz-transform: translateY(-50%); - -ms-transform: translateY(-50%); - -o-transform: translateY(-50%); - transform: translateY(-50%); - - &-eye-open:hover, - &-eye-close:hover { - cursor: pointer; - color: $brand-primary; - } - } - - .form-control { - padding: $form-input-padding-y $form-input-padding-x $form-input-padding-y 45px; - } - - .form-control:focus ~ .glyphicon:before { - color: $brand-primary; - } - } - } -} -// Divider - only on login-with-sso.html -.loginpage-alternativelabel { - display: flex; - align-items: center; - flex-direction: row; - flex-wrap: nowrap; - justify-content: space-between; - margin: 25px 0px; - - hr { - flex: 1; - margin: 20px 0 20px 10px; - border: 0; - border-color: #d8d8d8; - border-top: 1px solid #eeeeee; - } -} - -.loginpage-signin { - color: #555555; -} - -// Show only on wide screens -@media screen and (min-width: $screen-xl) { - .loginpage-logo { - width: 150px; - } - - .loginpage-left { - position: relative; - display: block; - flex: 1; - width: 100%; - height: 100%; - } - // Image and clipping mask - .loginpage-image { - height: 100%; - animation: makePointer 1s ease-out both; - background: left / cover no-repeat url('../../../resources/work-do-more.jpeg'); // Microsoft EDGE - background: left / cover no-repeat - linear-gradient(to right, rgba($brand-primary, 0.9) 0%, rgba($brand-primary, 0.6) 100%), - left / cover no-repeat url('../../../resources/work-do-more.jpeg'); - background: left / cover no-repeat -moz-linear-gradient(left, rgba($brand-primary, 0.9) 0%, rgba( - $brand-primary, - 0.6 - ) - 100%), - left / cover no-repeat url('../../../resources/work-do-more.jpeg'); - background: left / cover no-repeat -webkit-gradient(linear, left bottom, right bottom, color-stop(0%, rgba($brand-primary, 0.9)), color-stop(100%, rgba($brand-primary, 0.6))), - left / cover no-repeat url('../../../resources/work-do-more.jpeg'); - background: left / cover no-repeat -webkit-linear-gradient(left, rgba($brand-primary, 0.9) 0%, rgba( - $brand-primary, - 0.6 - ) - 100%), - left / cover no-repeat url('../../../resources/work-do-more.jpeg'); - background: left / cover no-repeat -o-linear-gradient(left, rgba($brand-primary, 0.9) 0%, rgba( - $brand-primary, - 0.6 - ) - 100%), - left / cover no-repeat url('../../../resources/work-do-more.jpeg'); - background: left / cover no-repeat -ms-linear-gradient(left, rgba($brand-primary, 0.9) 0%, rgba( - $brand-primary, - 0.6 - ) - 100%), - left / cover no-repeat url('../../../resources/work-do-more.jpeg'); - -webkit-clip-path: polygon(0% 0%, 100% 0, 100% 50%, 100% 100%, 0% 100%); - clip-path: polygon(0% 0%, 100% 0, 100% 50%, 100% 100%, 0% 100%); - } - - .loginpage-formwrapper { - width: 400px; - } -} - -// Animate image clipping mask -@keyframes makePointer { - 100% { - -webkit-clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%); - clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%); - } -} -@-webkit-keyframes makePointer { - 100% { - -webkit-clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%); - clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%); - } -} diff --git a/theme/styles/web/sass/core/base/_reset.scss b/theme/styles/web/sass/core/base/_reset.scss deleted file mode 100644 index cd1f61e..0000000 --- a/theme/styles/web/sass/core/base/_reset.scss +++ /dev/null @@ -1,40 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -// Basic styling Scroll container -// .mx-scrollcontainer { -// .mx-scrollcontainer-wrapper { -// padding: 0; -// // Convert width to max-width when in scroll container to make sure you dont get scrollbars -// .mx-layoutgrid-fixed { -// width: 100%; -// margin: auto; -// @media (min-width: $screen-md) { -// max-width: 750px; -// } -// @media (min-width: $screen-lg) { -// max-width: 970px; -// } -// @media (min-width: $screen-xl) { -// max-width: 1170px; -// } -// } -// } -// } - -.mx-scrollcontainer .mx-placeholder { - width: 100%; - height: 100%; - .mx-layoutgrid, - .mx-layoutgrid-fluid { - @include layout-spacing($type: padding, $direction: all, $device: responsive); - .mx-layoutgrid, - .mx-layoutgrid-fluid { - padding: 0; - } - } -} diff --git a/theme/styles/web/sass/core/base/_spacing.scss b/theme/styles/web/sass/core/base/_spacing.scss deleted file mode 100644 index 4d020f9..0000000 --- a/theme/styles/web/sass/core/base/_spacing.scss +++ /dev/null @@ -1,217 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Spacing - - Spacing classes -========================================================================== */ -$important-spacing-value: if($important-spacing, ' !important', ''); - -// Spacing none -.spacing-inner-none { - padding: 0 #{$important-spacing-value}; -} - -.spacing-inner-top-none { - padding-top: 0 #{$important-spacing-value}; -} - -.spacing-inner-right-none { - padding-right: 0 #{$important-spacing-value}; -} - -.spacing-inner-bottom-none { - padding-bottom: 0 #{$important-spacing-value}; -} - -.spacing-inner-left-none { - padding-left: 0 #{$important-spacing-value}; -} - -.spacing-outer-none { - margin: 0 #{$important-spacing-value}; -} - -.spacing-outer-top-none { - margin-top: 0 #{$important-spacing-value}; -} - -.spacing-outer-right-none { - margin-right: 0 #{$important-spacing-value}; -} - -.spacing-outer-bottom-none { - margin-bottom: 0 #{$important-spacing-value}; -} - -.spacing-outer-left-none { - margin-left: 0 #{$important-spacing-value}; -} - -// Spacing small -.spacing-inner { - padding: $spacing-small #{$important-spacing-value}; -} - -.spacing-inner-top { - padding-top: $spacing-small #{$important-spacing-value}; -} - -.spacing-inner-right { - padding-right: $spacing-small #{$important-spacing-value}; -} - -.spacing-inner-bottom { - padding-bottom: $spacing-small #{$important-spacing-value}; -} - -.spacing-inner-left { - padding-left: $spacing-small #{$important-spacing-value}; -} - -.spacing-outer { - margin: $spacing-small #{$important-spacing-value}; -} - -.spacing-outer-top { - margin-top: $spacing-small #{$important-spacing-value}; -} - -.spacing-outer-right { - margin-right: $spacing-small #{$important-spacing-value}; -} - -.spacing-outer-bottom { - margin-bottom: $spacing-small #{$important-spacing-value}; -} - -.spacing-outer-left { - margin-left: $spacing-small #{$important-spacing-value}; -} - -// Spacing Medium -.spacing-inner-medium { - @include get-responsive-spacing-medium($type: padding, $direction: all, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-top-medium { - @include get-responsive-spacing-medium($type: padding, $direction: top, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-right-medium { - @include get-responsive-spacing-medium($type: padding, $direction: right, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-bottom-medium { - @include get-responsive-spacing-medium($type: padding, $direction: bottom, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-left-medium { - @include get-responsive-spacing-medium($type: padding, $direction: left, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-medium { - @include get-responsive-spacing-medium($type: margin, $direction: all, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-top-medium { - @include get-responsive-spacing-medium($type: margin, $direction: top, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-right-medium { - @include get-responsive-spacing-medium($type: margin, $direction: right, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-bottom-medium { - @include get-responsive-spacing-medium($type: margin, $direction: bottom, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-left-medium { - @include get-responsive-spacing-medium($type: margin, $direction: left, $is_important: #{$important-spacing-value}); -} - -// Spacing Large -.spacing-inner-large { - @include get-responsive-spacing-large($type: padding, $direction: all, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-top-large { - @include get-responsive-spacing-large($type: padding, $direction: top, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-right-large { - @include get-responsive-spacing-large($type: padding, $direction: right, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-bottom-large { - @include get-responsive-spacing-large($type: padding, $direction: bottom, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-left-large { - @include get-responsive-spacing-large($type: padding, $direction: left, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-large { - @include get-responsive-spacing-large($type: margin, $direction: all, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-top-large { - @include get-responsive-spacing-large($type: margin, $direction: top, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-right-large { - @include get-responsive-spacing-large($type: margin, $direction: right, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-bottom-large { - @include get-responsive-spacing-large($type: margin, $direction: bottom, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-left-large { - @include get-responsive-spacing-large($type: margin, $direction: left, $is_important: #{$important-spacing-value}); -} - -// Spacing layouts -.spacing-inner-layout { - @include layout-spacing($type: padding, $direction: all, $device: responsive, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-top-layout { - @include layout-spacing($type: padding, $direction: top, $device: responsive, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-right-layout { - @include layout-spacing($type: padding, $direction: right, $device: responsive, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-bottom-layout { - @include layout-spacing($type: padding, $direction: bottom, $device: responsive, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-left-layout { - @include layout-spacing($type: padding, $direction: left, $device: responsive, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-layout { - @include layout-spacing($type: margin, $direction: all, $device: responsive, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-top-layout { - @include layout-spacing($type: margin, $direction: top, $device: responsive, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-right-layout { - @include layout-spacing($type: margin, $direction: right, $device: responsive, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-bottom-layout { - @include layout-spacing($type: margin, $direction: bottom, $device: responsive, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-left-layout { - @include layout-spacing($type: margin, $direction: left, $device: responsive, $is_important: #{$important-spacing-value}); -} diff --git a/theme/styles/web/sass/core/base/mixins/_animations.scss b/theme/styles/web/sass/core/base/mixins/_animations.scss deleted file mode 100644 index 93bca3b..0000000 --- a/theme/styles/web/sass/core/base/mixins/_animations.scss +++ /dev/null @@ -1,54 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -@mixin transition( - $style: initial, - $delay: 0s, - $duration: 0.3s, - $property: all, - $timing-fucntion: cubic-bezier(0.4, 0, 0.2, 1) -) { - -webkit-transition: $property $duration $delay $timing-fucntion; - -moz-transition: $property $duration $delay $timing-fucntion; - -o-transition: $property $duration $delay $timing-fucntion; - transition: $property $duration $delay $timing-fucntion; - transform-style: $style; -} - -@mixin ripple($color: #000, $transparency: 10%, $scale: 10) { - position: relative; - overflow: hidden; - transform: translate3d(0, 0, 0); - - &:after { - content: ''; - display: block; - position: absolute; - width: 100%; - height: 100%; - top: 0; - left: 0; - pointer-events: none; - background-image: radial-gradient(circle, $color $transparency, transparent $transparency); - background-repeat: no-repeat; - background-position: 50%; - -webkit-transform: scale($scale, $scale); - transform: scale($scale, $scale); - opacity: 0; - -webkit-transition: transform 0.5s, opacity 1s; - -moz-transition: transform 0.5s, opacity 1s; - -o-transition: transform 0.5s, opacity 1s; - transition: transform 0.5s, opacity 1s; - } - - &:active:after { - -webkit-transform: scale(0, 0); - transform: scale(0, 0); - opacity: 0.1; - transition: 0s; - } -} diff --git a/theme/styles/web/sass/core/base/mixins/_buttons.scss b/theme/styles/web/sass/core/base/mixins/_buttons.scss deleted file mode 100644 index 3b59292..0000000 --- a/theme/styles/web/sass/core/base/mixins/_buttons.scss +++ /dev/null @@ -1,71 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -@mixin button-variant($color, $background, $border, $hover) { - color: $color; - border-color: $border; - background-color: $background; - - &:hover, - &:focus, - &:active, - &.active, - .open > &.dropdown-toggle { - color: $color; - border-color: $hover; - background-color: $hover; - } - &:active, - &.active, - .open > &.dropdown-toggle { - background-image: none; - } - &.disabled, - &[disabled], - &[aria-disabled], - fieldset[disabled] { - &, - &:hover, - &:focus, - &:active, - &.active { - border-color: $border; - background-color: $background; - } - } - // Button bordered - &.btn-bordered { - background-color: transparent; - @if $color != $btn-default-color { - color: $border; - } - - &:hover, - &:focus, - &:active, - &.active, - .open > &.dropdown-toggle { - color: $color; - border-color: $border; - background-color: $border; - } - } - // Button as link - &.btn-link { - text-decoration: none; - border-color: transparent; - background-color: transparent; - @if $color != $btn-default-color { - color: $background; - } - - &:hover { - border-color: $btn-link-bg-hover; - background-color: $btn-link-bg-hover; - } - } -} diff --git a/theme/styles/web/sass/core/base/mixins/_groupbox.scss b/theme/styles/web/sass/core/base/mixins/_groupbox.scss deleted file mode 100644 index 71581ec..0000000 --- a/theme/styles/web/sass/core/base/mixins/_groupbox.scss +++ /dev/null @@ -1,17 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -@mixin groupbox-variant($color, $background) { - > .mx-groupbox-header { - color: $color; - border-color: $background; - background: $background; - } - > .mx-groupbox-body { - border-color: $background; - } -} diff --git a/theme/styles/web/sass/core/base/mixins/_layout-spacing.scss b/theme/styles/web/sass/core/base/mixins/_layout-spacing.scss deleted file mode 100644 index 76aa983..0000000 --- a/theme/styles/web/sass/core/base/mixins/_layout-spacing.scss +++ /dev/null @@ -1,90 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -@mixin layout-spacing($type: padding, $direction: all, $device: responsive, $is_important: false) { - $suffix: ''; - @if $is_important != false { - $suffix: ' !important'; - } - @if $device==responsive { - @if $direction==all { - @media (max-width: $screen-sm-max) { - #{$type}: #{$m-layout-spacing}#{$suffix}; - } - @media (min-width: $screen-md) { - #{$type}: #{$t-layout-spacing}#{$suffix}; - } - @media (min-width: $screen-lg) { - #{$type}: #{$layout-spacing}#{$suffix}; - } - } @else if $direction==top { - @media (max-width: $screen-sm-max) { - #{$type}-top: #{$m-layout-spacing-top}#{$suffix}; - } - @media (min-width: $screen-md) { - #{$type}-top: #{$t-layout-spacing-top}#{$suffix}; - } - @media (min-width: $screen-lg) { - #{$type}-top: #{$layout-spacing-top}#{$suffix}; - } - } @else if $direction==right { - @media (max-width: $screen-sm-max) { - #{$type}-right: #{$m-layout-spacing-right}#{$suffix}; - } - @media (min-width: $screen-md) { - #{$type}-right: #{$t-layout-spacing-right}#{$suffix}; - } - @media (min-width: $screen-lg) { - #{$type}-right: #{$layout-spacing-right}#{$suffix}; - } - } @else if $direction==bottom { - @media (max-width: $screen-sm-max) { - #{$type}-bottom: #{$m-layout-spacing-bottom}#{$suffix}; - } - @media (min-width: $screen-md) { - #{$type}-bottom: #{$t-layout-spacing-bottom}#{$suffix}; - } - @media (min-width: $screen-lg) { - #{$type}-bottom: #{$layout-spacing-bottom}#{$suffix}; - } - } @else if $direction==left { - @media (max-width: $screen-sm-max) { - #{$type}-left: #{$m-layout-spacing-left}#{$suffix}; - } - @media (min-width: $screen-md) { - #{$type}-left: #{$t-layout-spacing-left}#{$suffix}; - } - @media (min-width: $screen-lg) { - #{$type}-left: #{$layout-spacing-left}#{$suffix}; - } - } - } @else if $device==tablet { - @if $direction==all { - #{$type}: #{$t-layout-spacing}#{$suffix}; - } @else if $direction==top { - #{$type}-top: #{$t-layout-spacing-top}#{$suffix}; - } @else if $direction==right { - #{$type}-right: #{$t-layout-spacing-right}#{$suffix}; - } @else if $direction==bottom { - #{$type}-bottom: #{$t-layout-spacing-bottom}#{$suffix}; - } @else if $direction==left { - #{$type}-left: #{$t-layout-spacing-left}#{$suffix}; - } - } @else if $device==mobile { - @if $direction==all { - #{$type}: #{$m-layout-spacing}#{$suffix}; - } @else if $direction==top { - #{$type}-top: #{$m-layout-spacing-top}#{$suffix}; - } @else if $direction==right { - #{$type}-right: #{$m-layout-spacing-right}#{$suffix}; - } @else if $direction==bottom { - #{$type}-bottom: #{$m-layout-spacing-bottom}#{$suffix}; - } @else if $direction==left { - #{$type}-left: #{$m-layout-spacing-left}#{$suffix}; - } - } -} diff --git a/theme/styles/web/sass/core/base/mixins/_spacing.scss b/theme/styles/web/sass/core/base/mixins/_spacing.scss deleted file mode 100644 index db1d055..0000000 --- a/theme/styles/web/sass/core/base/mixins/_spacing.scss +++ /dev/null @@ -1,66 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -@mixin get-responsive-spacing-large($type: padding, $direction: all, $is_important: false) { - $suffix: ''; - $dash: '-'; // Otherwise it will be interpreted as a minus symbol. Needed for the Gonzales PE version: 3.4.7 compiler (used by the Webmodeler) - - @if $is_important != false { - $suffix: ' !important'; - } - @if $direction==all { - @media (max-width: $screen-sm-max) { - #{$type}: #{$m-spacing-large}#{$suffix}; - } - @media (min-width: $screen-md) { - #{$type}: #{$t-spacing-large}#{$suffix}; - } - @media (min-width: $screen-lg) { - #{$type}: #{$spacing-large}#{$suffix}; - } - } @else { - @media (max-width: $screen-sm-max) { - #{$type}#{$dash}#{$direction}: #{$m-spacing-large}#{$suffix}; - } - @media (min-width: $screen-md) { - #{$type}#{$dash}#{$direction}: #{$t-spacing-large}#{$suffix}; - } - @media (min-width: $screen-lg) { - #{$type}#{$dash}#{$direction}: #{$spacing-large}#{$suffix}; - } - } -} - -@mixin get-responsive-spacing-medium($type: padding, $direction: all, $is_important: false) { - $suffix: ''; - $dash: '-'; // Otherwise it will be interpreted as a minus symbol. Needed for the Gonzales PE version: 3.4.7 compiler (used by the Webmodeler) - - @if $is_important != false { - $suffix: ' !important'; - } - @if $direction==all { - @media (max-width: $screen-sm-max) { - #{$type}: #{$m-spacing-medium}#{$suffix}; - } - @media (min-width: $screen-md) { - #{$type}: #{$t-spacing-medium}#{$suffix}; - } - @media (min-width: $screen-lg) { - #{$type}: #{$spacing-medium}#{$suffix}; - } - } @else { - @media (max-width: $screen-sm-max) { - #{$type}#{$dash}#{$direction}: #{$m-spacing-medium}#{$suffix}; - } - @media (min-width: $screen-md) { - #{$type}#{$dash}#{$direction}: #{$t-spacing-medium}#{$suffix}; - } - @media (min-width: $screen-lg) { - #{$type}#{$dash}#{$direction}: #{$spacing-medium}#{$suffix}; - } - } -} diff --git a/theme/styles/web/sass/core/helpers/_alerts.scss b/theme/styles/web/sass/core/helpers/_alerts.scss deleted file mode 100644 index 69fdab1..0000000 --- a/theme/styles/web/sass/core/helpers/_alerts.scss +++ /dev/null @@ -1,49 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Alerts - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -.alert-bordered { - border: 1px solid; -} - -// Color variations -.alert-success { - color: $alert-success-color; - border-color: $alert-success-border-color; - background-color: $alert-success-bg; -} - -.alert-info { - color: $alert-info-color; - border-color: $alert-info-border-color; - background-color: $alert-info-bg; -} - -.alert-warning { - color: $alert-warning-color; - border-color: $alert-warning-border-color; - background-color: $alert-warning-bg; -} - -.alert-danger { - color: $alert-danger-color; - border-color: $alert-danger-border-color; - background-color: $alert-danger-bg; -} - -//== State -//## Styling when component is in certain state -//-------------------------------------------------------------------------------------------------------------------// -.has-error .alert { - margin-top: 8px; - margin-bottom: 0; -} diff --git a/theme/styles/web/sass/core/helpers/_backgrounds.scss b/theme/styles/web/sass/core/helpers/_backgrounds.scss deleted file mode 100644 index 8c4a57b..0000000 --- a/theme/styles/web/sass/core/helpers/_backgrounds.scss +++ /dev/null @@ -1,164 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Backgrounds - - Different background components, all managed by variables -========================================================================== */ - -.background-main { - background-color: $bg-color !important; -} - -.background-secondary { - background-color: $bg-color-secondary !important; -} - -.background-default { - background-color: $brand-default !important; -} - -.background-default-darker { - background-color: $color-default-darker !important; -} - -.background-default-dark { - background-color: $color-default-dark !important; -} - -.background-default-light { - background-color: $color-default-light !important; -} - -.background-default-lighter { - background-color: $color-default-lighter !important; -} - -.background-inverse { - background-color: $brand-inverse !important; -} - -.background-inverse-darker { - background-color: $color-inverse-darker !important; -} - -.background-inverse-dark { - background-color: $color-inverse-dark !important; -} - -.background-inverse-light { - background-color: $color-inverse-light !important; -} - -.background-inverse-lighter { - background-color: $color-inverse-lighter !important; -} - -.background-primary { - background-color: $brand-primary !important; -} - -.background-primary-darker { - background-color: $color-primary-darker !important; -} - -.background-primary-dark { - background-color: $color-primary-dark !important; -} - -.background-primary-light { - background-color: $color-primary-light !important; -} - -.background-primary-lighter { - background-color: $color-primary-lighter !important; -} - -.background-info { - background-color: $brand-info !important; -} - -.background-info-darker { - background-color: $color-info-darker !important; -} - -.background-info-dark { - background-color: $color-info-dark !important; -} - -.background-info-light { - background-color: $color-info-light !important; -} - -.background-info-lighter { - background-color: $color-info-lighter !important; -} - -.background-success { - background-color: $brand-success !important; -} - -.background-success-darker { - background-color: $color-success-darker !important; -} - -.background-success-dark { - background-color: $color-success-dark !important; -} - -.background-success-light { - background-color: $color-success-light !important; -} - -.background-success-lighter { - background-color: $color-success-lighter !important; -} - -.background-warning { - background-color: $brand-warning !important; -} - -.background-warning-darker { - background-color: $color-warning-darker !important; -} - -.background-warning-dark { - background-color: $color-warning-dark !important; -} - -.background-warning-light { - background-color: $color-warning-light !important; -} - -.background-warning-lighter { - background-color: $color-warning-lighter !important; -} - -.background-danger { - background-color: $brand-danger !important; -} - -.background-danger-darker { - background-color: $color-danger-darker !important; -} - -.background-danger-dark { - background-color: $color-danger-dark !important; -} - -.background-danger-light { - background-color: $color-danger-light !important; -} - -.background-danger-lighter { - background-color: $color-danger-lighter !important; -} - -.background-brand-gradient { - background-image: $brand-gradient !important; -} diff --git a/theme/styles/web/sass/core/helpers/_buttons.scss b/theme/styles/web/sass/core/helpers/_buttons.scss deleted file mode 100644 index 87c8985..0000000 --- a/theme/styles/web/sass/core/helpers/_buttons.scss +++ /dev/null @@ -1,100 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Buttons - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Color variations -.btn, -.btn-default { - @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border-color, $btn-default-bg-hover); -} - -.btn-primary { - @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border-color, $btn-primary-bg-hover); -} - -.btn-inverse { - @include button-variant($btn-inverse-color, $btn-inverse-bg, $btn-inverse-border-color, $btn-inverse-bg-hover); -} - -.btn-success { - @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border-color, $btn-success-bg-hover); -} - -.btn-info { - @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border-color, $btn-info-bg-hover); -} - -.btn-warning { - @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border-color, $btn-warning-bg-hover); -} - -.btn-danger { - @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border-color, $btn-danger-bg-hover); -} - -// Button Sizes -.btn-lg { - font-size: $font-size-large; - img { - height: calc(#{$font-size-small} + 4px); - } -} - -.btn-sm { - font-size: $font-size-small; - img { - height: calc(#{$font-size-small} + 4px); - } -} - -// Button Image -.btn-image { - padding: 0; - vertical-align: middle; - border-style: none; - background-color: transparent; - img { - display: block; // or else the button doesn't get a width - height: auto; // Image set height - } - &:hover, - &:focus { - background-color: transparent; - } -} - -// Icon buttons -.btn-icon { - & > img, - & > .glyphicon { - margin: 0; - } -} - -.btn-icon-right { - & > img, - & > .glyphicon { - float: right; - margin-left: 5px; - } -} - -.btn-icon-top { - padding-right: 0; - padding-left: 0; - & > img, - & > .glyphicon { - display: block; - margin: 0 0 5px 0; - } -} - diff --git a/theme/styles/web/sass/core/helpers/_datagrids.scss b/theme/styles/web/sass/core/helpers/_datagrids.scss deleted file mode 100644 index f37c889..0000000 --- a/theme/styles/web/sass/core/helpers/_datagrids.scss +++ /dev/null @@ -1,157 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Datagrid Default - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Striped style -.datagrid-striped.mx-datagrid { - table { - th { - border-width: 0; - } - - tbody tr { - td { - border-top-width: 0; - } - - &:nth-child(odd) td { - background-color: $grid-bg-striped; - } - } - } -} - -// Bordered style -.datagrid-bordered.mx-datagrid { - table { - border: 1px solid; - - th { - border: 1px solid $grid-border-color; - } - - tbody tr { - td { - border: 1px solid $grid-border-color; - } - } - } - - tfoot { - > tr > th { - border-width: 0; - background-color: $grid-footer-bg; - } - - > tr > td { - border-width: 1px; - } - } -} - -// Transparent style so you can see the background -.datagrid-transparent.mx-datagrid { - table { - background-color: transparent; - - tbody tr { - &:nth-of-type(odd) { - background-color: transparent; - } - - td { - background-color: transparent; - } - } - } -} - -// Hover style activated -.datagrid-hover.mx-datagrid { - table { - tbody tr { - &:hover td { - background-color: $grid-bg-hover !important; - } - - &.selected:hover td { - background-color: $grid-bg-selected-hover !important; - } - } - } -} - -// Datagrid Row Sizes -.datagrid-lg.mx-datagrid { - table { - th { - padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2) ($grid-padding-left * 2); - } - - tbody tr { - td { - padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2) ($grid-padding-left * 2); - } - } - } -} - -.datagrid-sm.mx-datagrid { - table { - th { - padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2) ($grid-padding-left / 2); - } - - tbody tr { - td { - padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2) ($grid-padding-left/ 2); - } - } - } -} - -// Datagrid Full Search -// Default Mendix Datagrid Widget with adjusted search field. Only 1 search field is allowed -.datagrid-fullsearch.mx-grid { - .mx-grid-search-button { - @extend .btn-primary; - } - - .mx-grid-reset-button { - display: none; - } - - .mx-grid-search-item { - display: block; - } - - .mx-grid-search-label { - display: none; - } - - .mx-grid-searchbar { - .mx-grid-search-controls { - position: absolute; - right: 0; - } - - .mx-grid-search-input { - width: 80%; - padding-left: 0; - - .btn, - .form-control { - height: 35px; - font-size: 12px; - } - } - } -} diff --git a/theme/styles/web/sass/core/helpers/_groupbox.scss b/theme/styles/web/sass/core/helpers/_groupbox.scss deleted file mode 100644 index 2e71036..0000000 --- a/theme/styles/web/sass/core/helpers/_groupbox.scss +++ /dev/null @@ -1,147 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Groupbox - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Color variations -.groupbox-default { - @include groupbox-variant($groupbox-default-color, $groupbox-default-bg); -} - -.groupbox-primary { - @include groupbox-variant($groupbox-primary-color, $groupbox-primary-bg); -} - -.groupbox-inverse { - @include groupbox-variant($groupbox-inverse-color, $groupbox-inverse-bg); -} - -// Success appears as green -.groupbox-success { - @include groupbox-variant($groupbox-success-color, $groupbox-success-bg); -} - -// Info appears as blue-green -.groupbox-info { - @include groupbox-variant($groupbox-info-color, $groupbox-info-bg); -} - -// Warning appears as orange -.groupbox-warning { - @include groupbox-variant($groupbox-warning-color, $groupbox-warning-bg); -} - -// Danger and error appear as red -.groupbox-danger { - @include groupbox-variant($groupbox-danger-color, $groupbox-danger-bg); -} - -// white appears as full white -.groupbox-white { - @include groupbox-variant($groupbox-white-color, $groupbox-white-bg); -} - -.groupbox-transparent { - border-bottom: 1px solid $border-color-default; - > .mx-groupbox-header { - padding: 15px 0; - color: $gray-darker; - border-style: none; - background: transparent; - font-size: 16px; - font-weight: $font-weight-semibold; - } - .mx-groupbox-body { - padding: 15px 0; - border-style: none; - background-color: transparent; - } - .mx-groupbox-collapse-icon { - color: $brand-primary; - } -} - -// Header options -.groupbox-h1 > .mx-groupbox-header { - font-size: $font-size-h1; -} - -.groupbox-h2 > .mx-groupbox-header { - font-size: $font-size-h2; -} - -.groupbox-h3 > .mx-groupbox-header { - font-size: $font-size-h3; -} - -.groupbox-h4 > .mx-groupbox-header { - font-size: $font-size-h4; -} - -.groupbox-h5 > .mx-groupbox-header { - font-size: $font-size-h5; -} - -.groupbox-h6 > .mx-groupbox-header { - font-size: $font-size-h6; -} - -// Callout Look and Feel -.groupbox-callout { - > .mx-groupbox-header, - > .mx-groupbox-body { - border: 0; - background-color: $callout-info-bg; - } - .mx-groupbox-header + .mx-groupbox-body { - padding-top: 0; - } -} - -.groupbox-info.groupbox-callout { - > .mx-groupbox-header, - > .mx-groupbox-body { - background-color: $callout-info-bg; - } - > .mx-groupbox-header { - color: $callout-info-color; - } -} - -.groupbox-success.groupbox-callout { - > .mx-groupbox-header, - > .mx-groupbox-body { - background-color: $callout-success-bg; - } - > .mx-groupbox-header { - color: $callout-success-color; - } -} - -.groupbox-warning.groupbox-callout { - > .mx-groupbox-header, - > .mx-groupbox-body { - background-color: $callout-warning-bg; - } - > .mx-groupbox-header { - color: $callout-warning-color; - } -} - -.groupbox-danger.groupbox-callout { - > .mx-groupbox-header, - > .mx-groupbox-body { - background-color: $callout-danger-bg; - } - > .mx-groupbox-header { - color: $callout-danger-color; - } -} diff --git a/theme/styles/web/sass/core/helpers/_helperclasses.scss b/theme/styles/web/sass/core/helpers/_helperclasses.scss deleted file mode 100644 index b76b778..0000000 --- a/theme/styles/web/sass/core/helpers/_helperclasses.scss +++ /dev/null @@ -1,346 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Helpers - - Default Mendix Helpers -========================================================================== */ -$important-helpers-value: if($important-helpers, ' !important', ''); - -// Display properties -.d-none { - display: none #{$important-helpers-value}; -} - -.d-flex { - display: flex #{$important-helpers-value}; -} - -.d-inline-flex { - display: inline-flex #{$important-helpers-value}; -} - -.d-inline { - display: inline #{$important-helpers-value}; -} - -.d-inline-block { - display: inline-block #{$important-helpers-value}; -} - -.show, -.d-block { - display: block #{$important-helpers-value}; -} - -.table, -.d-table { - display: table #{$important-helpers-value}; -} - -.table-row, -.d-table-row { - display: table-row #{$important-helpers-value}; -} - -.table-cell, -.d-table-cell { - display: table-cell #{$important-helpers-value}; -} - -.hide, -.hidden { - display: none #{$important-helpers-value}; - visibility: hidden #{$important-helpers-value}; -} - -.invisible { - visibility: hidden #{$important-helpers-value}; -} - -.display-ie8-only:not([attr*=""]) { - display: none #{$important-helpers-value}; - padding: 0 #{$important-helpers-value}; -} - -.list-nostyle { - ul { - margin: 0 #{$important-helpers-value}; - padding: 0 #{$important-helpers-value}; - - li { - list-style-type: none #{$important-helpers-value}; - } - } -} - -.nowrap, -.nowrap * { - overflow: hidden #{$important-helpers-value}; - // Star for inside an element, IE8 span > a - white-space: nowrap #{$important-helpers-value}; - text-overflow: ellipsis #{$important-helpers-value}; -} - -// Render DIV as Table Cells -.table { - display: table #{$important-helpers-value}; -} - -.table-row { - display: table-row #{$important-helpers-value}; -} - -.table-cell { - display: table-cell #{$important-helpers-value}; -} - -// Quick floats -.pull-left { - float: left #{$important-helpers-value}; -} - -.pull-right { - float: right #{$important-helpers-value}; -} - -// Align options -.align-top { - vertical-align: top #{$important-helpers-value}; -} - -.align-middle { - vertical-align: middle #{$important-helpers-value}; -} - -.align-bottom { - vertical-align: bottom #{$important-helpers-value}; -} - -// Flex alignments -.row-left { - display: flex #{$important-helpers-value}; - align-items: center #{$important-helpers-value}; - flex-flow: row #{$important-helpers-value}; - justify-content: flex-start #{$important-helpers-value}; -} - -.row-center { - display: flex #{$important-helpers-value}; - align-items: center #{$important-helpers-value}; - flex-flow: row #{$important-helpers-value}; - justify-content: center #{$important-helpers-value}; -} - -.row-right { - display: flex #{$important-helpers-value}; - align-items: center #{$important-helpers-value}; - flex-flow: row #{$important-helpers-value}; - justify-content: flex-end #{$important-helpers-value}; -} - -.col-left { - display: flex #{$important-helpers-value}; - align-items: flex-start #{$important-helpers-value}; - flex-direction: column #{$important-helpers-value}; - justify-content: center #{$important-helpers-value}; -} - -.col-center { - display: flex #{$important-helpers-value}; - align-items: center #{$important-helpers-value}; - flex-direction: column #{$important-helpers-value}; - justify-content: center #{$important-helpers-value}; -} - -.col-right { - display: flex #{$important-helpers-value}; - align-items: flex-end #{$important-helpers-value}; - flex-direction: column #{$important-helpers-value}; - justify-content: center #{$important-helpers-value}; -} - -// Media -@media (max-width: $screen-sm-max) { - .hide-phone { - display: none #{$important-helpers-value}; - } -} - -@media (min-width: $screen-md) and (max-width: $screen-md-max) { - .hide-tablet { - display: none #{$important-helpers-value}; - } -} - -@media (min-width: $screen-lg) { - .hide-desktop { - display: none #{$important-helpers-value}; - } -} - - -@media (max-width: $screen-xs-max) { - .hide-xs, - .hidden-xs, - .d-xs-none { - display: none #{$important-helpers-value}; - } - .d-xs-flex { - display: flex #{$important-helpers-value}; - } - .d-xs-inline-flex { - display: inline-flex #{$important-helpers-value}; - } - .d-xs-inline { - display: inline #{$important-helpers-value}; - } - .d-xs-inline-block { - display: inline-block #{$important-helpers-value}; - } - .d-xs-block { - display: block #{$important-helpers-value}; - } - .d-xs-table { - display: table #{$important-helpers-value}; - } - .d-xs-table-row { - display: table-row #{$important-helpers-value}; - } - .d-xs-table-cell { - display: table-cell #{$important-helpers-value}; - } -} - -@media (min-width: $screen-sm) and (max-width: $screen-sm-max) { - .hide-sm, - .hidden-sm, - .d-sm-none { - display: none #{$important-helpers-value}; - } - .d-sm-flex { - display: flex #{$important-helpers-value}; - } - .d-sm-inline-flex { - display: inline-flex #{$important-helpers-value}; - } - .d-sm-inline { - display: inline #{$important-helpers-value}; - } - .d-sm-inline-block { - display: inline-block #{$important-helpers-value}; - } - .d-sm-block { - display: block #{$important-helpers-value}; - } - .d-sm-table { - display: table #{$important-helpers-value}; - } - .d-sm-table-row { - display: table-row #{$important-helpers-value}; - } - .d-sm-table-cell { - display: table-cell #{$important-helpers-value}; - } -} - -@media (min-width: $screen-md) and (max-width: $screen-md-max) { - .hide-md, - .hidden-md, - .d-md-none { - display: none #{$important-helpers-value}; - } - .d-md-flex { - display: flex #{$important-helpers-value}; - } - .d-md-inline-flex { - display: inline-flex #{$important-helpers-value}; - } - .d-md-inline { - display: inline #{$important-helpers-value}; - } - .d-md-inline-block { - display: inline-block #{$important-helpers-value}; - } - .d-md-block { - display: block #{$important-helpers-value}; - } - .d-md-table { - display: table #{$important-helpers-value}; - } - .d-md-table-row { - display: table-row #{$important-helpers-value}; - } - .d-md-table-cell { - display: table-cell #{$important-helpers-value}; - } -} - -@media (min-width: $screen-lg) and (max-width: $screen-xl) { - .hide-lg, - .hidden-lg, - .d-lg-none { - display: none #{$important-helpers-value}; - } - .d-lg-flex { - display: flex #{$important-helpers-value}; - } - .d-lg-inline-flex { - display: inline-flex #{$important-helpers-value}; - } - .d-lg-inline { - display: inline #{$important-helpers-value}; - } - .d-lg-inline-block { - display: inline-block #{$important-helpers-value}; - } - .d-lg-block { - display: block #{$important-helpers-value}; - } - .d-lg-table { - display: table #{$important-helpers-value}; - } - .d-lg-table-row { - display: table-row #{$important-helpers-value}; - } - .d-lg-table-cell { - display: table-cell #{$important-helpers-value}; - } -} - -@media (min-width: $screen-xl) { - .hide-xl, - .hidden-xl, - .d-xl-none { - display: none #{$important-helpers-value}; - } - .d-xl-flex { - display: flex #{$important-helpers-value}; - } - .d-xl-inline-flex { - display: inline-flex #{$important-helpers-value}; - } - .d-xl-inline { - display: inline #{$important-helpers-value}; - } - .d-xl-inline-block { - display: inline-block #{$important-helpers-value}; - } - .d-xl-block { - display: block #{$important-helpers-value}; - } - .d-xl-table { - display: table #{$important-helpers-value}; - } - .d-xl-table-row { - display: table-row #{$important-helpers-value}; - } - .d-xl-table-cell { - display: table-cell #{$important-helpers-value}; - } -} diff --git a/theme/styles/web/sass/core/helpers/_images.scss b/theme/styles/web/sass/core/helpers/_images.scss deleted file mode 100644 index 7a65cc6..0000000 --- a/theme/styles/web/sass/core/helpers/_images.scss +++ /dev/null @@ -1,52 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Images - - Default Mendix Image Widgets -========================================================================== */ - -img.img-rounded, -.img-rounded img { - border-radius: 6px; -} - -img.img-thumbnail, -.img-thumbnail img { - display: inline-block; - max-width: 100%; - height: auto; - padding: 4px; - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - border: 1px solid $brand-default; - border-radius: 4px; - background-color: #FFFFFF; - line-height: $line-height-base; -} - -img.img-circle, -.img-circle img { - border-radius: 50%; -} - -img.img-auto, -.img-auto img { - width: auto !important; - max-width: 100% !important; - height: auto !important; - max-height: 100% !important; -} - -img.img-center, -.img-center img { - margin-right: auto !important; - margin-left: auto !important; -} diff --git a/theme/styles/web/sass/core/helpers/_labels.scss b/theme/styles/web/sass/core/helpers/_labels.scss deleted file mode 100644 index ef798ba..0000000 --- a/theme/styles/web/sass/core/helpers/_labels.scss +++ /dev/null @@ -1,48 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Labels - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Color variations -.label-default { - color: $label-default-color; - background-color: $label-default-bg; -} - -.label-primary { - color: $label-primary-color; - background-color: $label-primary-bg; -} - -.label-success { - color: $label-success-color; - background-color: $label-success-bg; -} - -.label-inverse { - color: $label-inverse-color; - background-color: $label-inverse-bg; -} - -.label-info { - color: $label-info-color; - background-color: $label-info-bg; -} - -.label-warning { - color: $label-warning-color; - background-color: $label-warning-bg; -} - -.label-danger { - color: $label-danger-color; - background-color: $label-danger-bg; -} diff --git a/theme/styles/web/sass/core/helpers/_listview.scss b/theme/styles/web/sass/core/helpers/_listview.scss deleted file mode 100644 index f56a4f3..0000000 --- a/theme/styles/web/sass/core/helpers/_listview.scss +++ /dev/null @@ -1,302 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Listview - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Bordered -.listview-bordered.mx-listview { - & > ul > li { - border: 1px solid $grid-border-color; - border-top: 0; - - &:first-child { - border-top: 1px solid $grid-border-color; - border-radius: 0; - } - - &:last-child { - border-radius: 0; - } - } -} - -// Striped -.listview-striped.mx-listview { - & > ul > li:nth-child(2n + 1) { - background-color: $grid-bg-striped; - } -} - -// Items as seperated blocks -.listview-seperated.mx-listview { - & > ul > li { - margin-bottom: $gutter-size; - border-width: 1px; - border-style: solid; - border-radius: $border-radius-default; - } -} - -// Remove all styling -.listview-stylingless.mx-listview { - & > ul > li { - padding: 0; - cursor: default; - border: 0; - background-color: transparent; - - &:hover, - &:focus, - &:active { - background-color: transparent; - } - - &.selected { - background-color: transparent !important; - - &:hover, - &:focus, - &:active { - background-color: transparent !important; - } - } - } -} - -// Hover style activated -.listview-hover.mx-listview { - & > ul > li { - &:hover, - &:focus, - &:active { - background-color: $grid-bg-hover !important; - } - - &.selected { - &:hover, - &:focus, - &:active { - background-color: $grid-bg-selected-hover !important; - } - } - } -} - -// Templategrid Row Sizes -.listview-lg.mx-listview { - & > ul > li { - padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2) ($grid-padding-left * 2); - } -} - -.listview-sm.mx-listview { - & > ul > li { - padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2) ($grid-padding-left / 2); - } -} - -// Bootstrap columns -.mx-listview[class*='lv-col'] { - overflow: hidden; // For if it is not in a layout, to prevent scrollbars - & > ul { - display: block; // normal a table - margin-right: -1 * $gutter-size; - margin-left: -1 * $gutter-size; - - &::before, - &::after { - // clearfix - display: table; - clear: both; - content: ' '; - } - - & > li { - // bootstrap col - position: relative; - display: block; // normal a table - float: left; - min-height: 1px; - padding-right: $gutter-size; - padding-left: $gutter-size; - border: 0; - @media (max-width: $screen-md-max) { - width: 100% !important; - } - - & > .mx-dataview { - overflow: hidden; - } - } - } - - &.lv-col-xs-12 > ul > li { - width: 100% !important; - } - - &.lv-col-xs-11 > ul > li { - width: 91.66666667% !important; - } - - &.lv-col-xs-10 > ul > li { - width: 83.33333333% !important; - } - - &.lv-col-xs-9 > ul > li { - width: 75% !important; - } - - &.lv-col-xs-8 > ul > li { - width: 66.66666667% !important; - } - - &.lv-col-xs-7 > ul > li { - width: 58.33333333% !important; - } - - &.lv-col-xs-6 > ul > li { - width: 50% !important; - } - - &.lv-col-xs-5 > ul > li { - width: 41.66666667% !important; - } - - &.lv-col-xs-4 > ul > li { - width: 33.33333333% !important; - } - - &.lv-col-xs-3 > ul > li { - width: 25% !important; - } - - &.lv-col-xs-2 > ul > li { - width: 16.66666667% !important; - } - - &.lv-col-xs-1 > ul > li { - width: 8.33333333% !important; - } - - @media (min-width: $screen-md) { - &.lv-col-sm-12 > ul > li { - width: 100% !important; - } - &.lv-col-sm-11 > ul > li { - width: 91.66666667% !important; - } - &.lv-col-sm-10 > ul > li { - width: 83.33333333% !important; - } - &.lv-col-sm-9 > ul > li { - width: 75% !important; - } - &.lv-col-sm-8 > ul > li { - width: 66.66666667% !important; - } - &.lv-col-sm-7 > ul > li { - width: 58.33333333% !important; - } - &.lv-col-sm-6 > ul > li { - width: 50% !important; - } - &.lv-col-sm-5 > ul > li { - width: 41.66666667% !important; - } - &.lv-col-sm-4 > ul > li { - width: 33.33333333% !important; - } - &.lv-col-sm-3 > ul > li { - width: 25% !important; - } - &.lv-col-sm-2 > ul > li { - width: 16.66666667% !important; - } - &.lv-col-sm-1 > ul > li { - width: 8.33333333% !important; - } - } - @media (min-width: $screen-lg) { - &.lv-col-md-12 > ul > li { - width: 100% !important; - } - &.lv-col-md-11 > ul > li { - width: 91.66666667% !important; - } - &.lv-col-md-10 > ul > li { - width: 83.33333333% !important; - } - &.lv-col-md-9 > ul > li { - width: 75% !important; - } - &.lv-col-md-8 > ul > li { - width: 66.66666667% !important; - } - &.lv-col-md-7 > ul > li { - width: 58.33333333% !important; - } - &.lv-col-md-6 > ul > li { - width: 50% !important; - } - &.lv-col-md-5 > ul > li { - width: 41.66666667% !important; - } - &.lv-col-md-4 > ul > li { - width: 33.33333333% !important; - } - &.lv-col-md-3 > ul > li { - width: 25% !important; - } - &.lv-col-md-2 > ul > li { - width: 16.66666667% !important; - } - &.lv-col-md-1 > ul > li { - width: 16.66666667% !important; - } - } - @media (min-width: $screen-xl) { - &.lv-col-lg-12 > ul > li { - width: 100% !important; - } - &.lv-col-lg-11 > ul > li { - width: 91.66666667% !important; - } - &.lv-col-lg-10 > ul > li { - width: 83.33333333% !important; - } - &.lv-col-lg-9 > ul > li { - width: 75% !important; - } - &.lv-col-lg-8 > ul > li { - width: 66.66666667% !important; - } - &.lv-col-lg-7 > ul > li { - width: 58.33333333% !important; - } - &.lv-col-lg-6 > ul > li { - width: 50% !important; - } - &.lv-col-lg-5 > ul > li { - width: 41.66666667% !important; - } - &.lv-col-lg-4 > ul > li { - width: 33.33333333% !important; - } - &.lv-col-lg-3 > ul > li { - width: 25% !important; - } - &.lv-col-lg-2 > ul > li { - width: 16.66666667% !important; - } - &.lv-col-lg-1 > ul > li { - width: 8.33333333% !important; - } - } -} diff --git a/theme/styles/web/sass/core/helpers/_navigationbar.scss b/theme/styles/web/sass/core/helpers/_navigationbar.scss deleted file mode 100644 index b4fbad9..0000000 --- a/theme/styles/web/sass/core/helpers/_navigationbar.scss +++ /dev/null @@ -1,186 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Navigation - -//== Regions -//## Behavior in the different regions -========================================================================== */ -// When used in topbar -.region-topbar { - .mx-navbar { - background-color: $navtopbar-bg; - ul.nav { - /* Navigation item */ - & > li.mx-navbar-item > a { - color: $navtopbar-color; - font-size: $navtopbar-font-size; - - /* Dropdown arrow */ - .caret { - border-top-color: $navtopbar-color; - border-bottom-color: $navtopbar-color; - } - &:hover, - &:focus, - &.active { - color: $navtopbar-color-hover; - background-color: $navtopbar-bg-hover; - .caret { - border-top-color: $navtopbar-color-active; - border-bottom-color: $navtopbar-color-active; - } - } - &.active { - color: $navtopbar-color-active; - background-color: $navtopbar-bg-active; - } - - /* Dropdown */ - .mx-navbar-submenu::before { - border-color: transparent transparent $navtopbar-border-color transparent; - } - - // Image - .glyphicon { - font-size: $navtopbar-glyph-size; - } - } - - /* When hovering or the dropdown is open */ - & > .mx-navbar-item > a:hover, - & > .mx-navbar-item > a:focus, - & > .mx-navbar-item.active a, - & > .mx-navbar-item.open > a, - & > .mx-navbar-item.open > a:hover, - & > .mx-navbar-item.open > a:focus { - color: $navtopbar-color-hover; - background-color: $navtopbar-bg-hover; - .caret { - border-top-color: $navtopbar-color-hover; - border-bottom-color: $navtopbar-color-hover; - } - } - & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a { - color: $navtopbar-sub-color-active; - background-color: $navtopbar-sub-bg-active; - .caret { - border-top-color: $navtopbar-sub-color-active; - border-bottom-color: $navtopbar-sub-color-active; - } - } - } - @media (max-width: $screen-md) { - ul.nav > li.mx-navbar-item > a { - } - .mx-navbar-item.open .dropdown-menu { - background-color: $navtopbar-sub-bg; - & > li.mx-navbar-subitem > a { - color: $navtopbar-sub-color; - font-size: $navtopbar-sub-font-size; - &:hover, - &:focus { - color: $navtopbar-sub-color-hover; - background-color: $navtopbar-sub-bg-hover; - } - &.active { - color: $navtopbar-sub-color-active; - background-color: $navtopbar-sub-bg-active; - } - } - } - } - } -} - -// When used in sidebar -.region-sidebar { - .mx-navbar { - background-color: $navsidebar-bg; - ul.nav { - /* Navigation item */ - & > li.mx-navbar-item > a { - color: $navsidebar-color; - font-size: $navsidebar-font-size; - - /* Dropdown arrow */ - .caret { - border-top-color: $navsidebar-color; - border-bottom-color: $navsidebar-color; - } - &:hover, - &:focus, - &.active { - color: $navsidebar-color-hover; - background-color: $navsidebar-bg-hover; - .caret { - border-top-color: $navsidebar-color-active; - border-bottom-color: $navsidebar-color-active; - } - } - &.active { - color: $navsidebar-color-active; - background-color: $navsidebar-bg-active; - } - - /* Dropdown */ - .mx-navbar-submenu::before { - border-color: transparent transparent $navsidebar-border-color transparent; - } - - // Image - .glyphicon { - font-size: $navsidebar-glyph-size; - } - } - - /* When hovering or the dropdown is open */ - & > .mx-navbar-item > a:hover, - & > .mx-navbar-item > a:focus, - & > .mx-navbar-item.active a, - & > .mx-navbar-item.open > a, - & > .mx-navbar-item.open > a:hover, - & > .mx-navbar-item.open > a:focus { - color: $navsidebar-color-hover; - background-color: $navsidebar-bg-hover; - .caret { - border-top-color: $navsidebar-color-hover; - border-bottom-color: $navsidebar-color-hover; - } - } - & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a { - color: $navsidebar-sub-color-active; - background-color: $navsidebar-sub-bg-active; - .caret { - border-top-color: $navsidebar-sub-color-active; - border-bottom-color: $navsidebar-sub-color-active; - } - } - } - @media (max-width: $screen-md) { - ul.nav > li.mx-navbar-item > a { - } - .mx-navbar-item.open .dropdown-menu { - background-color: $navtopbar-sub-bg; - & > li.mx-navbar-subitem > a { - color: $navsidebar-sub-color; - font-size: $navsidebar-sub-font-size; - &:hover, - &:focus { - color: $navsidebar-sub-color-hover; - background-color: $navsidebar-sub-bg-hover; - } - &.active { - color: $navsidebar-sub-color-active; - background-color: $navsidebar-sub-bg-active; - } - } - } - } - } -} diff --git a/theme/styles/web/sass/core/helpers/_navigationtree.scss b/theme/styles/web/sass/core/helpers/_navigationtree.scss deleted file mode 100644 index 9037dbc..0000000 --- a/theme/styles/web/sass/core/helpers/_navigationtree.scss +++ /dev/null @@ -1,166 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Navigation - -//== Regions -//## Behavior in the different regions -========================================================================== */ -// When used in topbar -.region-topbar { - .mx-navigationtree { - background-color: $navtopbar-bg; - .navbar-inner > ul { - & > li { - & > a { - color: $navtopbar-color; - border-color: $navtopbar-border-color; - background-color: $navtopbar-bg; - font-size: $navtopbar-font-size; - .caret { - border-top-color: $navtopbar-color; - border-bottom-color: $navtopbar-color; - } - - .glyphicon { - font-size: $navtopbar-glyph-size; - } - } - a:hover, - a:focus, - a.active { - color: $navtopbar-color-hover; - background-color: $navtopbar-bg-hover; - .caret { - border-top-color: $navtopbar-color-active; - border-bottom-color: $navtopbar-color-active; - } - } - a.active { - color: $navtopbar-color-active; - border-left-color: $navtopbar-color-active; - background-color: $navtopbar-bg-active; - } - } - } - - /* Sub navigation item specific */ - li.mx-navigationtree-has-items { - & > ul { - background-color: $navtopbar-sub-bg; - li { - a { - color: $navtopbar-sub-color; - background-color: $navtopbar-sub-bg; - font-size: $navtopbar-sub-font-size; - &:hover, - &:focus, - &.active { - color: $navtopbar-sub-color-hover; - background-color: $navtopbar-sub-bg-hover; - } - &.active { - color: $navtopbar-sub-color-active; - background-color: $navtopbar-sub-bg-active; - } - } - } - } - } - } -} - -// When used in sidebar -.region-sidebar { - .mx-navigationtree { - background-color: $navsidebar-bg; - .navbar-inner > ul { - & > li { - & > a { - color: $navsidebar-color; - border-color: $navsidebar-border-color; - background-color: $navsidebar-bg; - font-size: $navsidebar-font-size; - .caret { - border-top-color: $navsidebar-color; - border-bottom-color: $navsidebar-color; - } - - .glyphicon { - font-size: $navsidebar-glyph-size; - } - } - a:hover, - a:focus, - a.active { - color: $navsidebar-color-hover; - background-color: $navsidebar-bg-hover; - .caret { - border-top-color: $navsidebar-color-active; - border-bottom-color: $navsidebar-color-active; - } - } - a.active { - color: $navsidebar-color-active; - border-left-color: $navsidebar-color-active; - background-color: $navsidebar-bg-active; - } - } - } - - /* Sub navigation item specific */ - li.mx-navigationtree-has-items { - & > ul { - background-color: $navsidebar-sub-bg; - li { - a { - color: $navsidebar-sub-color; - background-color: $navsidebar-sub-bg; - font-size: $navsidebar-sub-font-size; - &:hover, - &:focus, - &.active { - color: $navsidebar-sub-color-hover; - background-color: $navsidebar-sub-bg-hover; - } - &.active { - color: $navsidebar-sub-color-active; - background-color: $navsidebar-sub-bg-active; - } - } - } - } - } - } -} - - -//== Design Properties -//## Helper classes to change the look and feel of the component -//-------------------------------------------------------------------------------------------------------------------// -// Content Centerd text and icons -.nav-content-center-text-icons.mx-navigationtree { - .navbar-inner ul { - a { - flex-direction: column; - justify-content: center; - .glyphicon { - margin: 0 0 5px 0; - } - } - } -} - -// Content Centerd icons only -.nav-content-center.mx-navigationtree { - .navbar-inner ul { - a { - justify-content: center; - } - } -} diff --git a/theme/styles/web/sass/core/helpers/_simplemenubar.scss b/theme/styles/web/sass/core/helpers/_simplemenubar.scss deleted file mode 100644 index 1c6eaa8..0000000 --- a/theme/styles/web/sass/core/helpers/_simplemenubar.scss +++ /dev/null @@ -1,36 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Navigation - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Center text and icons -.bottom-nav-text-icons.mx-menubar { - ul.mx-menubar-list { - li.mx-menubar-item { - a { - flex-direction: column; - padding: 8px 8px 6px 8px; - line-height: normal; - font-size: 11px; - .glyphicon { - display: block; - margin: 0 0 5px 0; - font-size: 18px; - } - img { - display: block; - height: 18px; - margin: 0 0 5px 0; - } - } - } - } -} diff --git a/theme/styles/web/sass/core/helpers/_tabcontainer.scss b/theme/styles/web/sass/core/helpers/_tabcontainer.scss deleted file mode 100644 index 727c236..0000000 --- a/theme/styles/web/sass/core/helpers/_tabcontainer.scss +++ /dev/null @@ -1,164 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Tab Container - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Style as pills -.tab-pills.mx-tabcontainer { - & > .mx-tabcontainer-tabs { - border: 0; - & > li > a { - margin-right: 2px; - color: $tabs-color; - border: 1px solid $tabs-border-color; - border-radius: 4px; - &:hover, - &:focus { - background-color: $tabs-bg-hover; - } - } - & > li.active > a, - & > li.active > a:hover, - & > li.active > a:focus { - color: #FFFFFF; - border-color: $tabs-bg-active; - background-color: $tabs-bg-active; - } - } -} - -// Style with lines -.tab-lined.mx-tabcontainer { - & > .mx-tabcontainer-tabs { - border-width: 3px; - li { - margin-right: 30px; - margin-bottom: -3px; - & > a { - padding: 10px 0; - color: $tabs-color; - border: 0; - border-style: solid; - border-color: transparent; - border-bottom-width: 3px; - border-radius: 0; - &:hover, - &:focus { - color: $tabs-color; - border: 0; - border-color: transparent; - background: transparent; - } - } - &.active > a, - &.active > a:hover, - &.active > a:focus { - color: $tabs-lined-color-active; - border: 0; - border-bottom: 3px solid $tabs-lined-border-color; - background-color: transparent; - } - } - } -} - -// Justified style -// Lets your tabs take 100% of the width -.tab-justified.mx-tabcontainer { - & > .mx-tabcontainer-tabs { - width: 100%; - border-bottom: 0; - & > li { - display: table-cell; - float: none; - width: 1%; - margin: 0; - @media (max-width: $screen-sm-max) { - display: block; - width: 100%; - } - & > a { - text-align: center; - border-bottom: 1px solid $tabs-border-color; - } - } - & > li.active > a { - border-bottom-color: transparent; - border-radius: 4px; - @media (max-width: $screen-sm-max) { - border-bottom-color: $tabs-border-color; - } - } - } -} - -// Bordered -.tab-bordered.mx-tabcontainer { - & > .mx-tabcontainer-tabs { - margin: 0; - } - & > .mx-tabcontainer-content { - padding: 10px; - border-width: 0 1px 1px 1px; - border-style: solid; - border-color: $tabs-border-color; - background-color: #FFFFFF; - } -} - -// Wizard -.tab-wizard.mx-tabcontainer { - & > .mx-tabcontainer-tabs { - position: relative; - display: flex; - justify-content: space-between; - border-style: none; - - &::before { - position: absolute; - top: 16px; - display: block; - width: 100%; - height: 1px; - content: ""; - background-color: $tabs-border-color; - } - & > li { - position: relative; - float: none; - width: 100%; - text-align: center; - & > a { - width: 33px; - height: 33px; - margin: auto; - padding: 0; - text-align: center; - color: $brand-default; - border: 1px solid $tabs-border-color; - border-radius: 100%; - background-color: #FFFFFF; - font-size: 18px; - font-weight: bold; - line-height: 33px; - } - &.active { - & > a, - & > a:hover, - & > a:focus { - color: #FFFFFF; - border-color: $tabs-bg-active; - background-color: $tabs-bg-active; - } - } - } - } -} diff --git a/theme/styles/web/sass/core/helpers/_tables.scss b/theme/styles/web/sass/core/helpers/_tables.scss deleted file mode 100644 index b81f803..0000000 --- a/theme/styles/web/sass/core/helpers/_tables.scss +++ /dev/null @@ -1,206 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Tables - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Lined -table.table-lined.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > td { - border-width: 1px 0; - border-style: solid; - border-color: $grid-border-color; - } - } - } -} - -// Bordered -table.table-bordered.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > th, - > td { - border-width: 1px; - border-style: solid; - border-color: $grid-border-color; - } - } - } -} - -// Makes table compact -table.table-compact.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > th, - > td { - padding-top: 2px; - padding-bottom: 2px; - } - } - } -} - -// Remove padding on sides -table.table-sideless.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > td, - > th { - padding-right: 0; - } - > th:first-child, - > td:first-child { - padding-left: 0; - } - } - } -} - -// Remove all padding -table.table-spaceless.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > th, - > td { - padding: 0; - } - } - } -} - -// Tables Vertical -// Will remove unwanted paddings -table.table-vertical.mx-table { - > tbody { - // Table row - > tr { - // Table header - > th { - padding-bottom: 0; - > label { - padding: 0; - } - > div > label { - padding: 0; - } - } - } - } -} - -// Align content in middle -table.table-align-vertical-middle.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > th, - > td { - vertical-align: middle; - } - } - } -} - -// Compact labels -table.table-label-compact.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > th, - > td { - > label { - margin: 0; - padding: 0; - } - > div > label, - .mx-referenceselector-input-wrapper label { - margin: 0; - padding: 0; - } - } - } - } -} - -$height-row-s: 55px; -$height-row-m: 70px; -$height-row-l: 120px; -// Small rows -table.table-row-s.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > th, - > td { - height: $height-row-s; - } - } - } -} - -// Medium rows -table.table-row-m.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > th, - > td { - height: $height-row-m; - } - } - } -} - -// Large rows -table.table-row-l.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > th, - > td { - height: $height-row-l; - } - } - } -} - -// Makes the columns fixed -table.table-fixed { - table-layout: fixed; -} diff --git a/theme/styles/web/sass/core/helpers/_templategrids.scss b/theme/styles/web/sass/core/helpers/_templategrids.scss deleted file mode 100644 index 3cfa01c..0000000 --- a/theme/styles/web/sass/core/helpers/_templategrids.scss +++ /dev/null @@ -1,304 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Templategrid - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Make sure your content looks selectable -.templategrid-selectable.mx-templategrid { - .mx-templategrid-item { - cursor: pointer; - } -} - -// Lined -.templategrid-lined.mx-templategrid { - .mx-grid-content { - border-top-width: 2px; - border-top-style: solid; - border-top-color: $grid-border-color; - } - - .mx-templategrid-item { - border-top: 1px solid $grid-border-color; - border-right: none; - border-bottom: 1px solid $grid-border-color; - border-left: none; - } -} - -// Striped -.templategrid-striped.mx-templategrid { - .mx-templategrid-row:nth-child(odd) .mx-templategrid-item { - background-color: #F9F9F9; - } -} - -// Stylingless -.templategrid-stylingless.mx-templategrid { - .mx-templategrid-item { - padding: 0; - cursor: default; - border: 0; - background-color: transparent; - - &:hover { - background-color: transparent; - } - - &.selected { - background-color: transparent !important; - - &:hover { - background-color: transparent !important; - } - } - } -} - -// Transparent items -.templategrid-transparent.mx-templategrid { - .mx-templategrid-item { - border: 0; - background-color: transparent; - } -} - -// Hover -.templategrid-hover.mx-templategrid { - .mx-templategrid-item { - &:hover { - background-color: $grid-bg-hover !important; - } - - &.selected { - background-color: $grid-bg-selected !important; - - &:hover { - background-color: $grid-bg-selected-hover !important; - } - } - } -} - -// Templategrid Row Sizes -.templategrid-lg.mx-templategrid { - .mx-templategrid-item { - padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2) ($grid-padding-left * 2); - } -} - -.templategrid-sm.mx-templategrid { - .mx-templategrid-item { - padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2) ($grid-padding-left / 2); - } -} - -// Templategrid Layoutgrid styles -.mx-templategrid[class*="tg-col"] { - overflow: hidden; // For if it is not in a layout, to prevent scrollbars - .mx-templategrid-content-wrapper { - display: block; - } - - .mx-templategrid-row { - display: block; - margin-right: -1 * $gutter-size; - margin-left: -1 * $gutter-size; - - &::before, - &::after { - // clearfix - display: table; - clear: both; - content: " "; - } - } - - .mx-templategrid-item { - // bootstrap col - position: relative; - display: block; - float: left; - min-height: 1px; - padding-right: $gutter-size; - padding-left: $gutter-size; - border: 0; - @media (max-width: 992px) { - width: 100% !important; - } - - .mx-dataview { - overflow: hidden; - } - } - - &.tg-col-xs-12 .mx-templategrid-item { - width: 100% !important; - } - - &.tg-col-xs-11 .mx-templategrid-item { - width: 91.66666667% !important; - } - - &.tg-col-xs-10 .mx-templategrid-item { - width: 83.33333333% !important; - } - - &.tg-col-xs-9 .mx-templategrid-item { - width: 75% !important; - } - - &.tg-col-xs-8 .mx-templategrid-item { - width: 66.66666667% !important; - } - - &.tg-col-xs-7 .mx-templategrid-item { - width: 58.33333333% !important; - } - - &.tg-col-xs-6 .mx-templategrid-item { - width: 50% !important; - } - - &.tg-col-xs-5 .mx-templategrid-item { - width: 41.66666667% !important; - } - - &.tg-col-xs-4 .mx-templategrid-item { - width: 33.33333333% !important; - } - - &.tg-col-xs-3 .mx-templategrid-item { - width: 25% !important; - } - - &.tg-col-xs-2 .mx-templategrid-item { - width: 16.66666667% !important; - } - - &.tg-col-xs-1 .mx-templategrid-item { - width: 8.33333333% !important; - } - - @media (min-width: 768px) { - &.tg-col-sm-12 .mx-templategrid-item { - width: 100% !important; - } - &.tg-col-sm-11 .mx-templategrid-item { - width: 91.66666667% !important; - } - &.tg-col-sm-10 .mx-templategrid-item { - width: 83.33333333% !important; - } - &.tg-col-sm-9 .mx-templategrid-item { - width: 75% !important; - } - &.tg-col-sm-8 .mx-templategrid-item { - width: 66.66666667% !important; - } - &.tg-col-sm-7 .mx-templategrid-item { - width: 58.33333333% !important; - } - &.tg-col-sm-6 .mx-templategrid-item { - width: 50% !important; - } - &.tg-col-sm-5 .mx-templategrid-item { - width: 41.66666667% !important; - } - &.tg-col-sm-4 .mx-templategrid-item { - width: 33.33333333% !important; - } - &.tg-col-sm-3 .mx-templategrid-item { - width: 25% !important; - } - &.tg-col-sm-2 .mx-templategrid-item { - width: 16.66666667% !important; - } - &.tg-col-sm-1 .mx-templategrid-item { - width: 8.33333333% !important; - } - } - @media (min-width: 992px) { - &.tg-col-md-12 .mx-templategrid-item { - width: 100% !important; - } - &.tg-col-md-11 .mx-templategrid-item { - width: 91.66666667% !important; - } - &.tg-col-md-10 .mx-templategrid-item { - width: 83.33333333% !important; - } - &.tg-col-md-9 .mx-templategrid-item { - width: 75% !important; - } - &.tg-col-md-8 .mx-templategrid-item { - width: 66.66666667% !important; - } - &.tg-col-md-7 .mx-templategrid-item { - width: 58.33333333% !important; - } - &.tg-col-md-6 .mx-templategrid-item { - width: 50% !important; - } - &.tg-col-md-5 .mx-templategrid-item { - width: 41.66666667% !important; - } - &.tg-col-md-4 .mx-templategrid-item { - width: 33.33333333% !important; - } - &.tg-col-md-3 .mx-templategrid-item { - width: 25% !important; - } - &.tg-col-md-2 .mx-templategrid-item { - width: 16.66666667% !important; - } - &.tg-col-md-1 .mx-templategrid-item { - width: 8.33333333% !important; - } - } - @media (min-width: 1200px) { - &.tg-col-lg-12 .mx-templategrid-item { - width: 100% !important; - } - &.tg-col-lg-11 .mx-templategrid-item { - width: 91.66666667% !important; - } - &.tg-col-lg-10 .mx-templategrid-item { - width: 83.33333333% !important; - } - &.tg-col-lg-9 .mx-templategrid-item { - width: 75% !important; - } - &.tg-col-lg-8 .mx-templategrid-item { - width: 66.66666667% !important; - } - &.tg-col-lg-7 .mx-templategrid-item { - width: 58.33333333% !important; - } - &.tg-col-lg-6 .mx-templategrid-item { - width: 50% !important; - } - &.tg-col-lg-5 .mx-templategrid-item { - width: 41.66666667% !important; - } - &.tg-col-lg-4 .mx-templategrid-item { - width: 33.33333333% !important; - } - &.tg-col-lg-3 .mx-templategrid-item { - width: 25% !important; - } - &.tg-col-lg-2 .mx-templategrid-item { - width: 16.66666667% !important; - } - &.tg-col-lg-1 .mx-templategrid-item { - width: 8.33333333% !important; - } - } -} diff --git a/theme/styles/web/sass/core/helpers/_typography.scss b/theme/styles/web/sass/core/helpers/_typography.scss deleted file mode 100644 index cab8b63..0000000 --- a/theme/styles/web/sass/core/helpers/_typography.scss +++ /dev/null @@ -1,135 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Typography - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Text size -.text-small { - font-size: $font-size-small !important; -} - -.text-large { - font-size: $font-size-large !important; -} - -// Text Weights -.text-light, -.text-light > *, -.text-light label { - font-weight: $font-weight-light !important; -} - -.text-normal, -.text-normal > *, -.text-normal label { - font-weight: $font-weight-normal !important; -} - -.text-semibold, -.text-semibold > *, -.text-semibold label { - font-weight: $font-weight-semibold !important; -} - -.text-bold, -.text-bold > *, -.text-bold label { - font-weight: $font-weight-bold !important; -} - -// Color variations -.text-default, -.text-default:hover { - color: $font-color-default !important; -} - -.text-primary, -.text-primary:hover { - color: $brand-primary !important; -} - -.text-info, -.text-info:hover { - color: $brand-info !important; -} - -.text-success, -.text-success:hover { - color: $brand-success !important; -} - -.text-warning, -.text-warning:hover { - color: $brand-warning !important; -} - -.text-danger, -.text-danger:hover { - color: $brand-danger !important; -} - -.text-header { - color: $font-color-header !important; -} - -.text-detail { - color: $font-color-detail !important; -} - -.text-white { - color: #ffffff; -} - -// Alignment options -.text-left { - text-align: left !important; -} -.text-center { - text-align: center !important; -} -.text-right { - text-align: right !important; -} -.text-justify { - text-align: justify !important; -} - -// Transform options -.text-lowercase { - text-transform: lowercase !important; -} -.text-uppercase { - text-transform: uppercase !important; -} -.text-capitalize { - text-transform: capitalize !important; -} - -// Wrap options -.text-break { - word-break: break-all !important; - word-break: break-word !important; - -ms-word-break: break-all !important; - -webkit-hyphens: auto !important; - -moz-hyphens: auto !important; - hyphens: auto !important; -} - -.text-nowrap { - white-space: nowrap !important; -} - -.text-nowrap { - overflow: hidden !important; - max-width: 100% !important; - white-space: nowrap !important; - text-overflow: ellipsis !important; -} diff --git a/theme/styles/web/sass/core/manifest.json b/theme/styles/web/sass/core/manifest.json deleted file mode 100644 index 5ace500..0000000 --- a/theme/styles/web/sass/core/manifest.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "Atlas-UI-Framework", - "version": "2.6.3" -} \ No newline at end of file diff --git a/theme/styles/web/sass/core/widgets/_alerts.scss b/theme/styles/web/sass/core/widgets/_alerts.scss deleted file mode 100644 index 006ae6a..0000000 --- a/theme/styles/web/sass/core/widgets/_alerts.scss +++ /dev/null @@ -1,19 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Alerts - - Default Bootstrap Alert boxes. Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages -========================================================================== */ - -.alert { - margin-top: 0; // want to align it with padding of a page - padding: 15px; - border: 0; - border-radius: 4px; -} diff --git a/theme/styles/web/sass/core/widgets/_buttons.scss b/theme/styles/web/sass/core/widgets/_buttons.scss deleted file mode 100644 index c5cc4d0..0000000 --- a/theme/styles/web/sass/core/widgets/_buttons.scss +++ /dev/null @@ -1,96 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Buttons - - Default Bootstrap and Mendix Buttons -========================================================================== */ - -.btn, -.mx-button { - display: inline-block; - margin-bottom: 0; - padding: 0.6em 1em; - cursor: pointer; - -moz-user-select: none; - -ms-user-select: none; - -webkit-user-select: none; - user-select: none; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - -webkit-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - text-align: center; - vertical-align: middle; - white-space: nowrap; - color: $btn-default-color; - border: 1px solid $btn-default-border-color; - border-radius: $btn-border-radius; - background-color: $btn-default-bg; - background-image: none; - box-shadow: none; - text-shadow: none; - font-size: $btn-font-size; - line-height: $line-height-base; - - &:hover, - &:focus, - &:active, - &:active:focus { - outline: none; - box-shadow: none; - } - - &[aria-disabled] { - cursor: not-allowed; - pointer-events: none; - opacity: 0.65; - filter: alpha(opacity=65); - } - - @if $btn-bordered != false { - @extend .btn-bordered; - } -} - -// Mendix button link -.mx-link { - padding: 0; - color: $link-color; - - &[aria-disabled='true'] { - cursor: not-allowed; - pointer-events: none; - opacity: 0.65; - filter: alpha(opacity=65); - } -} - -// Images and icons in buttons -.btn, -.mx-button, -.mx-link { - img { - //height: auto; // MXUI override who set the height on 16px default - height: $font-size-default + 4px; - margin-right: 5px; - vertical-align: text-top; - } -} - -//== Phone specific -//-------------------------------------------------------------------------------------------------------------------// -.profile-phone { - .btn, - .mx-link { - &:active { - -webkit-transform: translateY(1px); - transform: translateY(1px); - } - } -} diff --git a/theme/styles/web/sass/core/widgets/_checkbox.scss b/theme/styles/web/sass/core/widgets/_checkbox.scss deleted file mode 100644 index 5534c72..0000000 --- a/theme/styles/web/sass/core/widgets/_checkbox.scss +++ /dev/null @@ -1,112 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Checkbox - - Default Mendix Checkbox Widget -========================================================================== */ - -.mx-checkbox.label-after { - flex-wrap: wrap; - - .control-label { - padding: 0; - } -} - -input[type='checkbox'] { - position: relative !important; //Remove after mxui merge - width: 16px; - height: 16px; - margin: 0 !important; // Remove after mxui merge - cursor: pointer; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; - - - &::-ms-check { - color: $form-input-border-color; - border-color: $form-input-border-color; - border-radius: $form-input-border-radius; - background-color: $form-input-bg; - } - - &:focus::-ms-check, - &:checked::-ms-check { - color: $form-input-border-focus-color; - border-color: $form-input-border-focus-color; - background-color: $form-input-bg-focus; - } - - &:before, - &:after { - position: absolute; - display: block; - transition: all 0.3s ease; - } - - &:before { - // Checkbox - width: 100%; - height: 100%; - content: ''; - border: 1px solid $form-input-border-color; - border-radius: $form-input-border-radius; - background-color: transparent; - } - - &:after { - // Checkmark - width: 8px; - height: 4px; - margin: 5px 4px; - transform: rotate(-45deg); - pointer-events: none; - border: 2px solid #FFFFFF; - border-top: 0; - border-right: 0; - } - - &:not(:disabled):not(:checked):hover:after { - content: ''; - border-color: $form-input-bg-hover; // color of checkmark on hover - } - - &:checked:before { - border-color: $form-input-border-focus-color; - background-color: $form-input-border-focus-color; - } - - &:checked:after { - content: ''; - } - - &:disabled:before { - background-color: $form-input-bg-disabled; - } - - &:checked:disabled:before { - border-color: transparent; - background-color: rgba($form-input-border-focus-color, 0.4); - } - - &:disabled:after, - &:checked:disabled:after { - border-color: $form-input-bg-disabled; - } - - & + .control-label { - margin-left: $form-label-gutter; - } -} diff --git a/theme/styles/web/sass/core/widgets/_datagrids.scss b/theme/styles/web/sass/core/widgets/_datagrids.scss deleted file mode 100644 index f0c1bdf..0000000 --- a/theme/styles/web/sass/core/widgets/_datagrids.scss +++ /dev/null @@ -1,76 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Datagrid Default - - Default Mendix Datagrid Widget. The datagrid shows a list of objects in a grid -========================================================================== */ - -.mx-datagrid { - table { - border-width: 0; - background-color: transparent; - /* Table header */ - th { - border-style: solid; - border-color: $grid-border-color; - border-top-width: 0; - border-right: 0; - border-bottom-width: 1px; - border-left: 0; - background-color: $grid-bg-header; - padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left; - vertical-align: middle; - .mx-datagrid-head-caption { - white-space: normal; - } - } - /* Table Body */ - tbody tr { - td { - @include transition(); - padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left; - vertical-align: middle; - border-width: 0; - border-color: $grid-border-color; - border-bottom-width: 1px; - border-bottom-style: solid; - background-color: $grid-bg; - &:focus { - outline: none; - } - /* Text without spaces */ - .mx-datagrid-data-wrapper { - text-overflow: ellipsis; - } - } - &.selected td, - &.selected:hover td { - color: $grid-selected-color; - background-color: $grid-bg-selected !important; - } - } - /* Table Footer */ - tfoot { - > tr > th { - padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left; - border-width: 0; - background-color: $grid-footer-bg; - } - > tr > td { - padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left; - border-width: 0; - background-color: $grid-bg; - font-weight: $font-weight-bold; - } - } - & *:focus { - outline: 0; - } - } -} \ No newline at end of file diff --git a/theme/styles/web/sass/core/widgets/_dataview.scss b/theme/styles/web/sass/core/widgets/_dataview.scss deleted file mode 100644 index bd4199d..0000000 --- a/theme/styles/web/sass/core/widgets/_dataview.scss +++ /dev/null @@ -1,45 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Dataview - - Default Mendix Dataview Widget. The data view is used for showing the contents of exactly one object -========================================================================== */ - -.mx-dataview { - /* Control bar */ - .mx-dataview-controls { - // Needed to clear the bootstrap columns (get float: left) - clear: both; - margin-top: 10px; - padding: 8px 0; - border-top: 1px solid $dataview-controls-border-color; - border-radius: 0; - background-color: $dataview-controls-bg; - /* Buttons */ - .mx-button { - margin-right: 0.3em; - margin-bottom: 0; - &:last-child { - margin-right: 0; - } - } - } - /* Dataview-content gives problems for nexted layout grid containers */ - > .mx-dataview-content > .mx-container-nested { - > .row { - margin-right: 0; - margin-left: 0; - } - } - /* Dataview empty message */ - .mx-dataview-message { - color: $dataview-emptymessage-color; - background: $dataview-emptymessage-bg; - } -} diff --git a/theme/styles/web/sass/core/widgets/_datepicker.scss b/theme/styles/web/sass/core/widgets/_datepicker.scss deleted file mode 100644 index 6f30417..0000000 --- a/theme/styles/web/sass/core/widgets/_datepicker.scss +++ /dev/null @@ -1,117 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Date Picker - - Default Mendix Date Picker Widget. -========================================================================== */ - -.mx-calendar { - /* (must be higher than popup z-index) */ - z-index: 10010 !important; - padding: 10px; - font-size: 12px; - background: $bg-color; - border-radius: $border-radius-default; - border: 1px solid $border-color-default; - box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.06); - .mx-calendar-month-header { - display: flex; - flex-direction: row; - justify-content: space-between; - margin: 0 3px 10px 3px; - } - .mx-calendar-month-next, - .mx-calendar-month-previous, - .mx-calendar-month-dropdown { - border: 0; - cursor: pointer; - background: transparent; - } - .mx-calendar-month-next, - .mx-calendar-month-previous { - &:hover { - color: $brand-primary; - } - } - .mx-calendar-month-dropdown { - display: flex; - align-items: center; - justify-content: center; - position: relative; - .mx-calendar-month-current:first-child { - margin-right: 10px; - } - } - th { - color: $brand-primary; - } - th, - td { - width: 35px; - height: 35px; - text-align: center; - } - td { - color: $font-color-default; - - &:hover { - cursor: pointer; - border-radius: 50%; - color: $brand-primary; - background-color: $brand-default; - } - } - .mx-calendar-day-month-next, - .mx-calendar-day-month-previous { - color: lighten($font-color-default, 45%); - } - .mx-calendar-day-selected, - .mx-calendar-day-selected:hover { - color: #fff; - border-radius: 50%; - background: $brand-primary; - } - - // - - .mx-calendar-year-switcher { - text-align: center; - margin-top: 10px; - color: lighten($brand-primary, 30%); - span.mx-calendar-year-selected { - color: $brand-primary; - margin-left: 10px; - margin-right: 10px; - } - span:hover { - cursor: pointer; - text-decoration: underline; - background-color: transparent; - } - } -} - -.mx-calendar-month-dropdown-options { - /* (must be higher than popup z-index) */ - z-index: 10020 !important; - position: absolute; - top: 25px; - padding: 2px 10px; - border-radius: $border-radius-default; - background-color: $bg-color; - div { - cursor: pointer; - font-size: 12px; - padding: 2px 0; - &:hover, - &:focus { - color: $brand-primary; - } - } -} diff --git a/theme/styles/web/sass/core/widgets/_glyphicons.scss b/theme/styles/web/sass/core/widgets/_glyphicons.scss deleted file mode 100644 index dccd16f..0000000 --- a/theme/styles/web/sass/core/widgets/_glyphicons.scss +++ /dev/null @@ -1,27 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Glyphicons - - Default Mendix Glyphicons -========================================================================== */ - -.mx-glyphicon { - &:before { - display: inline-block; - margin-top: -0.2em; - margin-right: 0.4555555em; - vertical-align: middle; - font-family: "Glyphicons Halflings"; - font-weight: $font-weight-normal; - font-style: normal; - line-height: inherit; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - } -} diff --git a/theme/styles/web/sass/core/widgets/_grid.scss b/theme/styles/web/sass/core/widgets/_grid.scss deleted file mode 100644 index 8bbf4ac..0000000 --- a/theme/styles/web/sass/core/widgets/_grid.scss +++ /dev/null @@ -1,72 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Grid - - Default Mendix Grid (used for Mendix Datagrid) -========================================================================== */ - -.mx-grid { - padding: 0px; - border: 0; - border-radius: 0; - .mx-grid-controlbar { - margin: 10px 0; - /* Paging */ - .mx-grid-pagingbar { - /* Buttons */ - .mx-button { - padding: 6px; - color: $grid-paging-color; - border-color: $grid-paging-border-color; - background-color: $grid-paging-bg; - &:hover { - color: $grid-paging-color-hover; - border-color: $grid-paging-border-color-hover; - background-color: $grid-paging-bg-hover; - } - } - /* Text Paging .. to .. to .. */ - .mx-grid-paging-status { - padding: 0 8px 8px; - } - } - } - .mx-grid-searchbar { - margin: 10px 0; - .mx-grid-search-item { - .mx-grid-search-label { - vertical-align: middle; - label { - padding-top: 5px; - } - } - .mx-grid-search-input { - display: inline-flex; - .form-control { - height: 28px; - font-size: 11px; - } - select.form-control { - padding: 3px; - vertical-align: middle; - } - .mx-button { - height: 28px; - padding-top: 2px; - padding-bottom: 2px; - } - } - } - } -} - -// Remove default border from grid inside a Mendix Dataview -.mx-dataview .mx-grid { - border: 0; -} diff --git a/theme/styles/web/sass/core/widgets/_groupbox.scss b/theme/styles/web/sass/core/widgets/_groupbox.scss deleted file mode 100644 index ab304dc..0000000 --- a/theme/styles/web/sass/core/widgets/_groupbox.scss +++ /dev/null @@ -1,40 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Groupbox - - Default Mendix Groupboxes -========================================================================== */ - -.mx-groupbox { - margin: 0; - > .mx-groupbox-header { - margin: 0; - color: $groupbox-default-color; - border-width: 1px 1px 0 1px; - border-style: solid; - border-color: $groupbox-default-bg; - background: $groupbox-default-bg; - font-size: $font-size-h5; - .mx-groupbox-collapse-icon { - margin-top: 0.1em; - } - } - > .mx-groupbox-body { - padding: 10px 15px; - border-width: 1px; - border-style: solid; - border-color: $groupbox-default-bg; - background-color: #FFFFFF; - } - .mx-groupbox-header + .mx-groupbox-body { - border-top: none; - } - &.collapsed > .mx-groupbox-header { - } -} \ No newline at end of file diff --git a/theme/styles/web/sass/core/widgets/_header.scss b/theme/styles/web/sass/core/widgets/_header.scss deleted file mode 100644 index b85e1ae..0000000 --- a/theme/styles/web/sass/core/widgets/_header.scss +++ /dev/null @@ -1,116 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Header - - Default Mendix Mobile Header -========================================================================== */ - -.mx-header { - z-index: 100; - display: flex; - width: 100%; - height: $m-header-height; - padding: 0; - text-align: initial; - color: $m-header-color; - border-bottom: 1px solid $border-color-default; - background-color: $m-header-bg; - box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14); - - // Reset mxui - div.mx-header-left, - div.mx-header-right { - position: relative; - top: initial; - right: initial; - left: initial; - display: flex; - align-items: center; - width: 25%; - height: 100%; - .mx-placeholder { - display: flex; - align-items: center; - height: 100%; - } - } - - div.mx-header-left .mx-placeholder { - order: 1; - .mx-placeholder { - justify-content: flex-start; - } - } - div.mx-header-center { - overflow: hidden; - flex: 1; - order: 2; - text-align: center; - - .mx-title { - overflow: hidden; - width: 100%; - margin: 0; - text-overflow: ellipsis; - color: $m-header-color; - font-size: $m-header-title-size; - line-height: $m-header-height; - } - } - div.mx-header-right { - order: 3; - .mx-placeholder { - justify-content: flex-end; - } - } - - // Content magic - .mx-link { - display: flex; - align-items: center; - height: 100%; - -webkit-transition: all 0.2s; - -moz-transition: all 0.2s; - transition: all 0.2s; - text-decoration: none; - .glyphicon { - top: 0; - font-size: 23px; - } - &:active { - -webkit-transform: translateY(1px); - transform: translateY(1px); - color: $link-hover-color; - } - } - - .mx-link, - .btn, - img { - padding: 0 8px; - } - - .mx-sidebartoggle { - font-size: 24px; - line-height: $m-header-height; - img { - height: 20px; - } - } -} - -// RTL support -body[dir='rtl'] { - .mx-header-left { - order: 3; - } - .mx-header-right { - order: 1; - } -} diff --git a/theme/styles/web/sass/core/widgets/_inputs.scss b/theme/styles/web/sass/core/widgets/_inputs.scss deleted file mode 100644 index 7c76e32..0000000 --- a/theme/styles/web/sass/core/widgets/_inputs.scss +++ /dev/null @@ -1,240 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Inputs - - The form-control class style all inputs -========================================================================== */ -.form-control { - display: flex; - flex: 1; - min-width: 50px; - height: $form-input-height; - padding: $form-input-padding-y $form-input-padding-x; - transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; - color: $form-input-color; - border: 1px solid $form-input-border-color; - border-radius: $form-input-border-radius; - background-color: $form-input-bg; - background-image: none; - box-shadow: none; - font-size: $form-input-font-size; - line-height: $form-input-line-height; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; - @if $form-input-style==lined { - @extend .form-control-lined; - } -} - -.form-control:not([readonly]):focus { - border-color: $form-input-border-focus-color; - outline: 0; - background-color: $form-input-bg-focus; - box-shadow: none; -} - -.form-control[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - opacity: 1; - background-color: #EEEEEE; -} - -.form-control[disabled], -fieldset[disabled] .form-control { - cursor: not-allowed; -} - -// Lined -.form-control-lined { - border: 0; - border-bottom: 1px solid $form-input-border-color; - border-radius: 0; - background-color: transparent; - - &:focus { - background-color: transparent; - } -} - -// Read only form control class -.form-control-static { - overflow: hidden; - flex: 1; - min-height: auto; - padding: $form-input-padding-y $form-input-padding-x; - border-bottom: 1px solid $form-input-static-border-color; - font-size: $form-input-font-size; - line-height: $form-input-line-height; - - & + .control-label { - margin-left: $form-label-gutter; - } -} - -// Dropdown input widget -select.form-control { - $arrow: "data:image/svg+xml;utf8,"; - padding-right: 30px; - background-image: url($arrow); - background-repeat: no-repeat; - background-position: calc(100% - #{$form-input-padding-x}) center; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; -} - -.form-control.mx-selectbox { - align-items: center; - flex-direction: row-reverse; - justify-content: space-between; -} - -// Not editable textarea, textarea will be rendered as a label -.mx-textarea .control-label { - height: auto; -} - -textarea.form-control { - flex-basis: auto; -} - -.mx-compound-control { - display: flex; - flex: 1; - flex-wrap: wrap; - max-width: 100%; - - .mx-validation-message { - flex-basis: 100%; - margin-top: 5px; - } -} - -// Form Group -.form-group { - display: flex; - flex-direction: row; - margin-bottom: $form-group-margin-bottom; - - & > div[class*='col-'] { - display: flex; - align-items: center; - flex-wrap: wrap; - } - - & > [class*='col-'] { - padding-right: $form-group-gutter; - padding-left: $form-group-gutter; - } - - // Alignment content - div[class*='textBox'] > .control-label, - div[class*='textArea'] > .control-label, - div[class*='datePicker'] > .control-label { - @extend .form-control-static; - } - - // Label - .control-label { - overflow: hidden; - margin-bottom: 5px; - text-overflow: ellipsis; - color: $form-label-color; - font-size: $form-label-size; - font-weight: $form-label-weight; - } - - .mx-validation-message { - flex-basis: 100%; - } - - &.no-columns:not(.label-after) { - flex-direction: column; - } -} - -.form-group.label-after { - .form-control-static { - flex: unset; - } - - .control-label { - margin-bottom: 0; - } -} - -.mx-dateinput, -.mx-referenceselector, -.mx-referencesetselector { - flex: 1; -} - -// Targets only webkit iOS devices -.dj_webkit.dj_ios .form-control { - transform: translateZ(0); -} - -@media only screen and (min-width: $screen-md) { - .form-horizontal { - .control-label { - margin-bottom: 0; - padding-top: $form-input-padding-y; - padding-bottom: $form-input-padding-y; - line-height: $form-input-line-height; - } - } -} - -@media only screen and (max-width: $screen-sm-max) { - .form-group { - flex-direction: column; - } -} - -@media only screen and (max-device-width: 1024px) and (-webkit-min-device-pixel-ratio: 0) { - // Fixes alignment bug on iPads / iPhones where datefield is not aligned vertically - input[type='date'], - input[type='time'], - input[type='datetime-local'], - input[type='month'] { - line-height: 1; - } - // Fix shrinking of date inputs because inability of setting a placeholder - input[type='time']:not(.has-value):before, - input[type='date']:not(.has-value):before, - input[type='month']:not(.has-value):before, - input[type='datetime-local']:not(.has-value):before { - margin-right: 0.5em; - content: attr(placeholder) !important; - color: #AAAAAA; - } - input[type='time'].has-value:before, - input[type='date'].has-value:before, - input[type='month'].has-value:before, - input[type='datetime-local'].has-value:before { - content: '' !important; - } -} - -@media (-ms-high-contrast: none), (-ms-high-contrast: active) { - // Target IE10+ - .form-group { - display: block; - } -} - -[dir='rtl'] { - // Dropdown input widget - select.form-control { - padding-right: 30px; - padding-left: 0; - background-position: #{$form-input-padding-x} center; - } -} diff --git a/theme/styles/web/sass/core/widgets/_labels.scss b/theme/styles/web/sass/core/widgets/_labels.scss deleted file mode 100644 index 344ba06..0000000 --- a/theme/styles/web/sass/core/widgets/_labels.scss +++ /dev/null @@ -1,30 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Labels - - Default labels combined with Bootstrap labels -========================================================================== */ - -.label { - display: inline-block; - padding: 0.2em 0.6em 0.3em; - text-align: center; - vertical-align: baseline; - white-space: nowrap; - color: #ffffff; - border-radius: 0.25em; - font-size: 100%; - line-height: 1; - margin: 0; - - .form-control-static { - all: unset; - font-weight: $font-weight-normal; - } -} diff --git a/theme/styles/web/sass/core/widgets/_layoutgrid.scss b/theme/styles/web/sass/core/widgets/_layoutgrid.scss deleted file mode 100644 index 9dbb564..0000000 --- a/theme/styles/web/sass/core/widgets/_layoutgrid.scss +++ /dev/null @@ -1,948 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Layout Grid - - Default Bootstrap containers -========================================================================== */ -.mx-layoutgrid { - width: 100%; - margin-right: auto; - margin-left: auto; - padding-right: $gutter-size; - padding-left: $gutter-size; -} - -// Row -.row { - display: flex; - flex-wrap: wrap; - margin-right: -$gutter-size; - margin-left: -$gutter-size; - - &::before, - &::after { - content: normal; - } -} - -.no-gutters { - margin-right: 0; - margin-left: 0; -} - -.no-gutters > .col, -.no-gutters > [class*="col-"] { - padding-right: 0; - padding-left: 0; -} - -// Columns -.col-1, -.col-2, -.col-3, -.col-4, -.col-5, -.col-6, -.col-7, -.col-8, -.col-9, -.col-10, -.col-11, -.col-12, -.col, -.col-auto, -.col-sm-1, -.col-sm-2, -.col-sm-3, -.col-sm-4, -.col-sm-5, -.col-sm-6, -.col-sm-7, -.col-sm-8, -.col-sm-9, -.col-sm-10, -.col-sm-11, -.col-sm-12, -.col-sm, -.col-sm-auto, -.col-md-1, -.col-md-2, -.col-md-3, -.col-md-4, -.col-md-5, -.col-md-6, -.col-md-7, -.col-md-8, -.col-md-9, -.col-md-10, -.col-md-11, -.col-md-12, -.col-md, -.col-md-auto, -.col-lg-1, -.col-lg-2, -.col-lg-3, -.col-lg-4, -.col-lg-5, -.col-lg-6, -.col-lg-7, -.col-lg-8, -.col-lg-9, -.col-lg-10, -.col-lg-11, -.col-lg-12, -.col-lg, -.col-lg-auto, -.col-xl-1, -.col-xl-2, -.col-xl-3, -.col-xl-4, -.col-xl-5, -.col-xl-6, -.col-xl-7, -.col-xl-8, -.col-xl-9, -.col-xl-10, -.col-xl-11, -.col-xl-12, -.col-xl, -.col-xl-auto { - position: relative; - width: 100%; - padding-right: $gutter-size; - padding-left: $gutter-size; -} - -.col { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; -} - -.col-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; -} - -.col-1 { - flex: 0 0 8.333333%; - max-width: 8.333333%; -} - -.col-2 { - flex: 0 0 16.666667%; - max-width: 16.666667%; -} - -.col-3 { - flex: 0 0 25%; - max-width: 25%; -} - -.col-4 { - flex: 0 0 33.333333%; - max-width: 33.333333%; -} - -.col-5 { - flex: 0 0 41.666667%; - max-width: 41.666667%; -} - -.col-6 { - flex: 0 0 50%; - max-width: 50%; -} - -.col-7 { - flex: 0 0 58.333333%; - max-width: 58.333333%; -} - -.col-8 { - flex: 0 0 66.666667%; - max-width: 66.666667%; -} - -.col-9 { - flex: 0 0 75%; - max-width: 75%; -} - -.col-10 { - flex: 0 0 83.333333%; - max-width: 83.333333%; -} - -.col-11 { - flex: 0 0 91.666667%; - max-width: 91.666667%; -} - -.col-12 { - flex: 0 0 100%; - max-width: 100%; -} - -.order-first { - order: -1; -} - -.order-last { - order: 13; -} - -.order-0 { - order: 0; -} - -.order-1 { - order: 1; -} - -.order-2 { - order: 2; -} - -.order-3 { - order: 3; -} - -.order-4 { - order: 4; -} - -.order-5 { - order: 5; -} - -.order-6 { - order: 6; -} - -.order-7 { - order: 7; -} - -.order-8 { - order: 8; -} - -.order-9 { - order: 9; -} - -.order-10 { - order: 10; -} - -.order-11 { - order: 11; -} - -.order-12 { - order: 12; -} - -.offset-1, -.col-offset-1 { - margin-left: 8.333333%; -} - -.offset-2, -.col-offset-2 { - margin-left: 16.666667%; -} - -.offset-3, -.col-offset-3 { - margin-left: 25%; -} - -.offset-4, -.col-offset-4 { - margin-left: 33.333333%; -} - -.offset-5, -.col-offset-5 { - margin-left: 41.666667%; -} - -.offset-6, -.col-offset-6 { - margin-left: 50%; -} - -.offset-7, -.col-offset-7 { - margin-left: 58.333333%; -} - -.offset-8, -.col-offset-8 { - margin-left: 66.666667%; -} - -.offset-9, -.col-offset-9 { - margin-left: 75%; -} - -.offset-10, -.col-offset-10 { - margin-left: 83.333333%; -} - -.offset-11, -.col-offset-11 { - margin-left: 91.666667%; -} - -// Responsiveness -@media (min-width: $screen-sm) { - .mx-layoutgrid-fixed { - max-width: 540px; - } -} - -@media (min-width: $screen-md) { - .mx-layoutgrid-fixed { - max-width: 720px; - } -} - -@media (min-width: $screen-lg) { - .mx-layoutgrid-fixed { - max-width: 960px; - } -} - -@media (min-width: $screen-xl) { - .mx-layoutgrid-fixed { - max-width: 1140px; - } -} - -@media (min-width: $screen-sm) { - .col-sm { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - .col-sm-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - .col-sm-1 { - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-sm-2 { - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-sm-3 { - flex: 0 0 25%; - max-width: 25%; - } - .col-sm-4 { - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-sm-5 { - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-sm-6 { - flex: 0 0 50%; - max-width: 50%; - } - .col-sm-7 { - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-sm-8 { - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-sm-9 { - flex: 0 0 75%; - max-width: 75%; - } - .col-sm-10 { - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-sm-11 { - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-sm-12 { - flex: 0 0 100%; - max-width: 100%; - } - .order-sm-first { - order: -1; - } - .order-sm-last { - order: 13; - } - .order-sm-0 { - order: 0; - } - .order-sm-1 { - order: 1; - } - .order-sm-2 { - order: 2; - } - .order-sm-3 { - order: 3; - } - .order-sm-4 { - order: 4; - } - .order-sm-5 { - order: 5; - } - .order-sm-6 { - order: 6; - } - .order-sm-7 { - order: 7; - } - .order-sm-8 { - order: 8; - } - .order-sm-9 { - order: 9; - } - .order-sm-10 { - order: 10; - } - .order-sm-11 { - order: 11; - } - .order-sm-12 { - order: 12; - } - .offset-sm-0, - .col-sm-offset-0 { - margin-left: 0; - } - .offset-sm-1, - .col-sm-offset-1 { - margin-left: 8.333333%; - } - .offset-sm-2, - .col-sm-offset-2 { - margin-left: 16.666667%; - } - .offset-sm-3, - .col-sm-offset-3 { - margin-left: 25%; - } - .offset-sm-4, - .col-sm-offset-4 { - margin-left: 33.333333%; - } - .offset-sm-5, - .col-sm-offset-5 { - margin-left: 41.666667%; - } - .offset-sm-6, - .col-sm-offset-6 { - margin-left: 50%; - } - .offset-sm-7, - .col-sm-offset-7 { - margin-left: 58.333333%; - } - .offset-sm-8, - .col-sm-offset-8 { - margin-left: 66.666667%; - } - .offset-sm-9, - .col-sm-offset-9 { - margin-left: 75%; - } - .offset-sm-10, - .col-sm-offset-10 { - margin-left: 83.333333%; - } - .offset-sm-11, - .col-sm-offset-11 { - margin-left: 91.666667%; - } -} - -@media (min-width: $screen-md) { - .col-md { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - .col-md-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - .col-md-1 { - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-md-2 { - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-md-3 { - flex: 0 0 25%; - max-width: 25%; - } - .col-md-4 { - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-md-5 { - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-md-6 { - flex: 0 0 50%; - max-width: 50%; - } - .col-md-7 { - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-md-8 { - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-md-9 { - flex: 0 0 75%; - max-width: 75%; - } - .col-md-10 { - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-md-11 { - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-md-12 { - flex: 0 0 100%; - max-width: 100%; - } - .order-md-first { - order: -1; - } - .order-md-last { - order: 13; - } - .order-md-0 { - order: 0; - } - .order-md-1 { - order: 1; - } - .order-md-2 { - order: 2; - } - .order-md-3 { - order: 3; - } - .order-md-4 { - order: 4; - } - .order-md-5 { - order: 5; - } - .order-md-6 { - order: 6; - } - .order-md-7 { - order: 7; - } - .order-md-8 { - order: 8; - } - .order-md-9 { - order: 9; - } - .order-md-10 { - order: 10; - } - .order-md-11 { - order: 11; - } - .order-md-12 { - order: 12; - } - .offset-md-0, - .col-md-offset-0 { - margin-left: 0; - } - .offset-md-1, - .col-md-offset-1 { - margin-left: 8.333333%; - } - .offset-md-2, - .col-md-offset-2 { - margin-left: 16.666667%; - } - .offset-md-3, - .col-md-offset-3 { - margin-left: 25%; - } - .offset-md-4, - .col-md-offset-4 { - margin-left: 33.333333%; - } - .offset-md-5, - .col-md-offset-5 { - margin-left: 41.666667%; - } - .offset-md-6, - .col-md-offset-6 { - margin-left: 50%; - } - .offset-md-7, - .col-md-offset-7 { - margin-left: 58.333333%; - } - .offset-md-8, - .col-md-offset-8 { - margin-left: 66.666667%; - } - .offset-md-9, - .col-md-offset-9 { - margin-left: 75%; - } - .offset-md-10, - .col-md-offset-10 { - margin-left: 83.333333%; - } - .offset-md-11, - .col-md-offset-11 { - margin-left: 91.666667%; - } -} - -@media (min-width: $screen-lg) { - .col-lg { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - .col-lg-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - .col-lg-1 { - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-lg-2 { - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-lg-3 { - flex: 0 0 25%; - max-width: 25%; - } - .col-lg-4 { - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-lg-5 { - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-lg-6 { - flex: 0 0 50%; - max-width: 50%; - } - .col-lg-7 { - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-lg-8 { - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-lg-9 { - flex: 0 0 75%; - max-width: 75%; - } - .col-lg-10 { - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-lg-11 { - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-lg-12 { - flex: 0 0 100%; - max-width: 100%; - } - .order-lg-first { - order: -1; - } - .order-lg-last { - order: 13; - } - .order-lg-0 { - order: 0; - } - .order-lg-1 { - order: 1; - } - .order-lg-2 { - order: 2; - } - .order-lg-3 { - order: 3; - } - .order-lg-4 { - order: 4; - } - .order-lg-5 { - order: 5; - } - .order-lg-6 { - order: 6; - } - .order-lg-7 { - order: 7; - } - .order-lg-8 { - order: 8; - } - .order-lg-9 { - order: 9; - } - .order-lg-10 { - order: 10; - } - .order-lg-11 { - order: 11; - } - .order-lg-12 { - order: 12; - } - .offset-lg-0, - .col-lg-offset-0 { - margin-left: 0; - } - .offset-lg-1, - .col-lg-offset-1 { - margin-left: 8.333333%; - } - .offset-lg-2, - .col-lg-offset-2 { - margin-left: 16.666667%; - } - .offset-lg-3, - .col-lg-offset-3 { - margin-left: 25%; - } - .offset-lg-4, - .col-lg-offset-4 { - margin-left: 33.333333%; - } - .offset-lg-5, - .col-lg-offset-5 { - margin-left: 41.666667%; - } - .offset-lg-6, - .col-lg-offset-6 { - margin-left: 50%; - } - .offset-lg-7, - .col-lg-offset-7 { - margin-left: 58.333333%; - } - .offset-lg-8, - .col-lg-offset-8 { - margin-left: 66.666667%; - } - .offset-lg-9, - .col-lg-offset-9 { - margin-left: 75%; - } - .offset-lg-10, - .col-lg-offset-10 { - margin-left: 83.333333%; - } - .offset-lg-11, - .col-lg-offset-11 { - margin-left: 91.666667%; - } -} - -@media (min-width: $screen-xl) { - .col-xl { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - .col-xl-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - .col-xl-1 { - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-xl-2 { - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-xl-3 { - flex: 0 0 25%; - max-width: 25%; - } - .col-xl-4 { - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-xl-5 { - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-xl-6 { - flex: 0 0 50%; - max-width: 50%; - } - .col-xl-7 { - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-xl-8 { - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-xl-9 { - flex: 0 0 75%; - max-width: 75%; - } - .col-xl-10 { - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-xl-11 { - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-xl-12 { - flex: 0 0 100%; - max-width: 100%; - } - .order-xl-first { - order: -1; - } - .order-xl-last { - order: 13; - } - .order-xl-0 { - order: 0; - } - .order-xl-1 { - order: 1; - } - .order-xl-2 { - order: 2; - } - .order-xl-3 { - order: 3; - } - .order-xl-4 { - order: 4; - } - .order-xl-5 { - order: 5; - } - .order-xl-6 { - order: 6; - } - .order-xl-7 { - order: 7; - } - .order-xl-8 { - order: 8; - } - .order-xl-9 { - order: 9; - } - .order-xl-10 { - order: 10; - } - .order-xl-11 { - order: 11; - } - .order-xl-12 { - order: 12; - } - .offset-xl-0, - .col-xl-offset-0 { - margin-left: 0; - } - .offset-xl-1, - .col-xl-offset-1 { - margin-left: 8.333333%; - } - .offset-xl-2, - .col-xl-offset-2 { - margin-left: 16.666667%; - } - .offset-xl-3, - .col-xl-offset-3 { - margin-left: 25%; - } - .offset-xl-4, - .col-xl-offset-4 { - margin-left: 33.333333%; - } - .offset-xl-5, - .col-xl-offset-5 { - margin-left: 41.666667%; - } - .offset-xl-6, - .col-xl-offset-6 { - margin-left: 50%; - } - .offset-xl-7, - .col-xl-offset-7 { - margin-left: 58.333333%; - } - .offset-xl-8, - .col-xl-offset-8 { - margin-left: 66.666667%; - } - .offset-xl-9, - .col-xl-offset-9 { - margin-left: 75%; - } - .offset-xl-10, - .col-xl-offset-10 { - margin-left: 83.333333%; - } - .offset-xl-11, - .col-xl-offset-11 { - margin-left: 91.666667%; - } -} diff --git a/theme/styles/web/sass/core/widgets/_listview.scss b/theme/styles/web/sass/core/widgets/_listview.scss deleted file mode 100644 index 0a0d367..0000000 --- a/theme/styles/web/sass/core/widgets/_listview.scss +++ /dev/null @@ -1,102 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Listview - - Default Mendix Listview Widget. The list view shows a list of objects arranged vertically. Each object is shown using a template -========================================================================== */ -.mx-listview { - // Remove widget padding - padding: 0; - /* Clear search button (overrides load more button stying) */ - // Search bar - .mx-listview-searchbar { - margin-bottom: $gutter-size; - - .btn { - width: auto; - } - } - - /* Load more button */ - & > .btn { - width: 100%; - margin: 10px auto; - } - - & > ul { - margin: 0; - - .mx-listview-empty { - border-style: none; - background-color: transparent; - } - - & > li { - @include transition(); - padding: $listview-padding-top $listview-padding-right $listview-padding-bottom $listview-padding-left; - border-width: 1px 0 0 0; - border-style: solid; - border-color: $grid-border-color; - background-color: $grid-bg; - - &:first-child { - border-radius: 0; // Reset mxui listview style - } - - &:last-child { - border-bottom: 1px solid $grid-border-color; - border-radius: 0; // Reset mxui listview style - } - - &:focus, - &:active { - outline: 0; - background-color: $grid-bg-hover; - } - - &.selected { - background-color: $grid-bg-selected; - } - } - } - - .mx-layoutgrid { - padding-top: 0 !important; - padding-bottom: 0 !important; - } -} - -//== Phone specific -//-------------------------------------------------------------------------------------------------------------------// -.profile-phone .mx-listview { - .mx-listview-searchbar { - margin-bottom: 3px; - background: #FFFFFF; - box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14); - - input { - padding: 14px 15px; - color: #555555; - border-style: none; - border-radius: 0; - box-shadow: none; - } - - .btn { - padding: 14px 15px; - color: inherit; - border-style: none; - } - } - - & > ul > li { - &:first-child { - border-top: none; - } - } -} diff --git a/theme/styles/web/sass/core/widgets/_modals.scss b/theme/styles/web/sass/core/widgets/_modals.scss deleted file mode 100644 index 4298f37..0000000 --- a/theme/styles/web/sass/core/widgets/_modals.scss +++ /dev/null @@ -1,123 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Modals - - Default Mendix Modals. Modals are streamlined, but flexible, dialog prompts with the minimum required functionality and smart defaults -========================================================================== */ -.modal-dialog { - .modal-content { - border: 1px solid $modal-header-border-color; - border-radius: 4px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - - .modal-header { - padding: 15px 20px; - border-bottom-color: $modal-header-border-color; - border-radius: 0; // Because of the class .mx-window-active in mxui.css - background-color: $modal-header-bg; - - h4 { - margin: 0; - color: $modal-header-color; - font-size: 16px; - font-weight: $font-weight-bold; - } - - .close { - margin-top: -3px; - opacity: 1; - /* For IE8 and earlier */ - color: $modal-header-color; - text-shadow: none; - filter: alpha(opacity=100); - } - } - - .modal-body { - padding: 20px; - } - - .modal-footer { - display: flex; - justify-content: flex-end; - margin-top: 0; - padding: 20px; - border-style: none; - } - } -} - -// Default Mendix Window Modal -.mx-window { - // If popup direct child is a dataview it gets the class mx-window-view - &.mx-window-view .mx-window-body { - overflow: hidden; // hide second scrollbar in edit page - padding: 0; - // Dataview in popup - > .mx-dataview > .mx-dataview-content, - > .mx-placeholder > .mx-dataview > .mx-dataview-content { - padding: 20px; - } - - > .mx-dataview > .mx-dataview-controls, - > .mx-placeholder > .mx-dataview > .mx-dataview-controls { - display: flex; - justify-content: flex-end; - margin: 0; - padding: 20px; - text-align: left; - border-top: 1px solid $modal-header-border-color; - } - } - - .mx-dataview-controls { - padding-bottom: 0; - } - - .mx-layoutgrid { - padding-right: 0; - padding-left: 0; - } -} - -// Login modal -.mx-login { - .modal-body { - padding: 0 15px; - } - - .modal-content { - input { - height: 56px; - padding: 12px 12px; - border: 1px solid #EEEEEE; - background: #EEEEEE; - box-shadow: none; - font-size: 16px; - - &:focus { - border-color: #66AFE9; - } - } - } - - .modal-header, - .modal-footer { - border: 0; - } - - button { - font-size: 16px; - } - - h4 { - color: #AAAAAA; - font-size: 20px; - font-weight: $font-weight-bold; - } -} diff --git a/theme/styles/web/sass/core/widgets/_navigationbar.scss b/theme/styles/web/sass/core/widgets/_navigationbar.scss deleted file mode 100644 index 7845cad..0000000 --- a/theme/styles/web/sass/core/widgets/_navigationbar.scss +++ /dev/null @@ -1,152 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Navigation - - Default Mendix Navigation Bar -========================================================================== */ -.mx-navbar { - margin: 0; - border-style: none; - border-radius: 0; - background-color: $navigation-bg; - - ul.nav { - margin: 0; // weird -margin if screen gets small (bootstrap) - - /* Navigation item */ - & > li.mx-navbar-item > a { - display: flex; - align-items: center; - min-height: $topbar-minimalheight; - padding: $navigation-item-padding; - vertical-align: middle; - color: $navigation-color; - border-radius: 0; - font-size: $navigation-font-size; - font-weight: $font-weight-normal; - - /* Dropdown arrow */ - .caret { - border-top-color: $navigation-color; - border-bottom-color: $navigation-color; - } - - &:hover, - &:focus, - &.active { - text-decoration: none; - color: $navigation-color-hover; - background-color: $navigation-bg-hover; - - .caret { - border-top-color: $navigation-color-active; - border-bottom-color: $navigation-color-active; - } - } - - &.active { - color: $navigation-color-active; - background-color: $navigation-bg-active; - } - - /* Dropdown */ - .mx-navbar-submenu::before { - position: absolute; - top: -9px; - left: 15px; - width: 0; - height: 0; - content: ''; - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - border-width: 0 9px 9px 9px; - border-style: solid; - border-color: transparent transparent $navigation-border-color transparent; - } - - // Image - img { - width: 20px; // Default size (so it looks good) - height: auto; - margin-right: 0.5em; - } - - .glyphicon { - top: 0; - margin-right: 0.5em; - vertical-align: middle; - font-size: $navigation-glyph-size; - } - } - - & > .mx-navbar-item.active a { - color: $navigation-color-active; - } - - /* When hovering or the dropdown is open */ - & > .mx-navbar-item > a:hover, - & > .mx-navbar-item > a:focus, - & > .mx-navbar-item.open > a, - & > .mx-navbar-item.open > a:hover, - & > .mx-navbar-item.open > a:focus { - text-decoration: none; - color: $navigation-color-hover; - background-color: $navigation-bg-hover; - - .caret { - border-top-color: $navigation-color-hover; - border-bottom-color: $navigation-color-hover; - } - } - - & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a { - color: $navigation-sub-color-active; - background-color: $navigation-sub-bg-active; - - .caret { - border-top-color: $navigation-sub-color-active; - border-bottom-color: $navigation-sub-color-active; - } - } - } - @media (max-width: $screen-md) { - ul.nav > li.mx-navbar-item > a { - padding: 10px 20px; - } - .mx-navbar-item.open .dropdown-menu { - padding: 0; - border-radius: 0; - background-color: $navigation-sub-bg; - - & > li.mx-navbar-subitem > a { - padding: 10px 20px; - color: $navigation-sub-color; - border-radius: 0; - font-size: $navigation-sub-font-size; - font-weight: $font-weight-normal; - - &:hover, - &:focus { - color: $navigation-sub-color-hover; - background-color: $navigation-sub-bg-hover; - } - - &.active { - color: $navigation-sub-color-active; - background-color: $navigation-sub-bg-active; - } - } - } - } - - /* remove focus */ - &:focus { - outline: 0; - } -} diff --git a/theme/styles/web/sass/core/widgets/_navigationlist.scss b/theme/styles/web/sass/core/widgets/_navigationlist.scss deleted file mode 100644 index 0b44c33..0000000 --- a/theme/styles/web/sass/core/widgets/_navigationlist.scss +++ /dev/null @@ -1,37 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Navigation List - - Default Mendix Navigation List Widget. A navigation list can be used to attach an action to an entire row. Such a row is called a navigation list item -========================================================================== */ -.mx-navigationlist { - margin: 0; - padding: 0; - list-style: none; - - li.mx-navigationlist-item { - @include transition(); - padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left; - border-width: 1px; - border-style: none none solid none; - border-color: $grid-border-color; - border-radius: 0; - background-color: $grid-bg; - - &:hover, - &:focus { - color: inherit; - background-color: $grid-bg-hover; - } - - &.active { - color: inherit; - background-color: $grid-bg-selected; - } - } -} diff --git a/theme/styles/web/sass/core/widgets/_navigationtree.scss b/theme/styles/web/sass/core/widgets/_navigationtree.scss deleted file mode 100644 index c5beb0e..0000000 --- a/theme/styles/web/sass/core/widgets/_navigationtree.scss +++ /dev/null @@ -1,111 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Navigation - - Default Mendix Navigation Tree -========================================================================== */ -.mx-navigationtree { - background-color: $navigation-bg; - - /* Every navigation item */ - .navbar-inner > ul { - margin: 0; - padding-left: 0; - & > li { - padding: 0; - border-style: none; - & > a { - display: flex; - align-items: center; - height: $navigation-item-height; - padding: $navigation-item-padding; - color: $navigation-color; - border-bottom: 1px solid $navigation-border-color; - border-radius: 0; - background-color: $navigation-bg; - text-shadow: none; - font-size: $navigation-font-size; - font-weight: $font-weight-normal; - .caret { - border-top-color: $navigation-color; - border-bottom-color: $navigation-color; - } - img { - width: 20px; // Default size - height: auto; - margin-right: 0.5em; - } - .glyphicon { - top: 0; - margin-right: 0.5em; - vertical-align: middle; - font-size: $navigation-glyph-size; - } - } - a:hover, - a:focus, - a.active { - text-decoration: none; - color: $navigation-color-hover; - background-color: $navigation-bg-hover; - .caret { - border-top-color: $navigation-color-active; - border-bottom-color: $navigation-color-active; - } - } - a.active { - color: $navigation-color-active; - border-left-color: $navigation-color-active; - background-color: $navigation-bg-active; - } - } - } - - /* Sub navigation item specific */ - li.mx-navigationtree-has-items { - & > ul { - margin: 0; - padding-left: 0; - background-color: $navigation-sub-bg; - li { - margin: 0; - padding: 0; - border: 0; - a { - padding: 12px 20px 12px 25px; - text-decoration: none; - color: $navigation-sub-color; - border: 0; - background-color: $navigation-sub-bg; - text-shadow: none; - font-size: $navigation-sub-font-size; - font-weight: $font-weight-normal; - - &:hover, - &:focus, - &.active { - color: $navigation-sub-color-hover; - outline: 0; - background-color: $navigation-sub-bg-hover; - } - &.active { - color: $navigation-sub-color-active; - border: 0; - background-color: $navigation-sub-bg-active; - } - } - } - } - } - - /* remove focus */ - &:focus { - outline: 0; - } -} diff --git a/theme/styles/web/sass/core/widgets/_popupmenu.scss b/theme/styles/web/sass/core/widgets/_popupmenu.scss deleted file mode 100644 index f286357..0000000 --- a/theme/styles/web/sass/core/widgets/_popupmenu.scss +++ /dev/null @@ -1,119 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Popup Menu - - Default Mendix Popup Menus -========================================================================== */ -.popupmenu { - position: relative; - display: inline-flex; -} - -.popupmenu-trigger { - cursor: pointer; -} - -.popupmenu-menu { - position: absolute; - z-index: 999; - display: none; - flex-direction: column; - width: max-content; - border-radius: 8px; - background-color: $bg-color; - box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05), 0 2px 16px 0 rgba(33, 43, 54, 0.08); - - &.popupmenu-position-left { - top: 0; - left: 0; - transform: translateX(-100%); - } - - &.popupmenu-position-right { - top: 0; - right: 0; - transform: translateX(100%); - } - - &.popupmenu-position-top { - top: 0; - transform: translateY(-100%); - } - - &.popupmenu-position-bottom { - bottom: 0; - transform: translateY(100%); - } - - .popupmenu-basic-item:first-child, - .popupmenu-custom-item:first-child { - border-top-left-radius: 8px; - border-top-right-radius: 8px; - } - - .popupmenu-basic-item:last-child, - .popupmenu-custom-item:last-child { - border-bottom-right-radius: 8px; - border-bottom-left-radius: 8px; - } -} - -.popupmenu-basic-divider { - width: 100%; - height: 1px; - background-color: $brand-default; -} - -.popupmenu-basic-item { - padding: 12px 16px; - color: $font-color-default; - font-size: 14px; - - &:hover, - &:focus, - &:active { - cursor: pointer; - border-color: $bg-color-secondary; - background-color: $bg-color-secondary; - } - - &-inverse { - color: $brand-inverse; - } - - &-primary { - color: $brand-primary; - } - - &-info { - color: $brand-info; - } - - &-success { - color: $brand-success; - } - - &-warning { - color: $brand-warning; - } - - &-danger { - color: $brand-danger; - } -} - -.popupmenu-custom-item { - &:hover, - &:focus, - &:active { - cursor: pointer; - border-color: $bg-color-secondary; - background-color: $bg-color-secondary; - } -} diff --git a/theme/styles/web/sass/core/widgets/_progress.scss b/theme/styles/web/sass/core/widgets/_progress.scss deleted file mode 100644 index bfdd31c..0000000 --- a/theme/styles/web/sass/core/widgets/_progress.scss +++ /dev/null @@ -1,64 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Progress - - Default Mendix Progress Widget. -========================================================================== */ - -.mx-progress { - color: $font-color-default; - background: $bg-color-secondary; - - .mx-progress-message { - color: $font-color-default; - } - - .mx-progress-indicator { - position: relative; - overflow: hidden; - width: 100%; - max-width: 100%; - height: 2px; - margin: auto; - padding: 0; - border-radius: 0; - background: $gray-lighter; - - &:before, - &:after { - position: absolute; - top: 0; - left: 0; - display: block; - width: 50%; - height: 2px; - content: ""; - transform: translate3d(-100%, 0, 0); - background: $brand-primary; - } - - &::before { - animation: loader 2s infinite; - } - - &::after { - animation: loader 2s -2s infinite; - } - } -} - - -@keyframes loader { - 0% { - transform: translate3d(-100%, 0, 0); - } - 100% { - transform: translate3d(200%, 0, 0); - } -} diff --git a/theme/styles/web/sass/core/widgets/_radiobuttons.scss b/theme/styles/web/sass/core/widgets/_radiobuttons.scss deleted file mode 100644 index 63d0b5b..0000000 --- a/theme/styles/web/sass/core/widgets/_radiobuttons.scss +++ /dev/null @@ -1,121 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Radio Buttons - - Default Mendix Radio Button Widget -========================================================================== */ -.mx-radiobuttons.inline .mx-radiogroup { - display: flex; - flex-direction: row; - - .radio { - margin: 0 20px 0 0; - } -} - -.mx-radiobuttons .radio:last-child { - margin-bottom: 0; -} - -.radio { - display: flex !important; // Remove after mxui merge - align-items: center; - margin-top: 0; -} - -input[type='radio'] { - position: relative !important; // Remove after mxui merge - width: 16px; - height: 16px; - margin: 0; - cursor: pointer; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; - - &::-ms-check { - color: $form-input-border-color; - border-color: $form-input-border-color; - background-color: $form-input-bg; - } - - &:focus::-ms-check, - &:checked::-ms-check { - color: $form-input-border-focus-color; - border-color: $form-input-border-focus-color; - background-color: $form-input-bg-focus; - } - - &:before, - &:after { - position: absolute; - display: block; - transition: all 0.3s ease-in-out; - border-radius: 50%; - } - - &:before { - width: 100%; - height: 100%; - content: ''; - border: 1px solid $form-input-border-color; - background-color: transparent; - } - - &:after { - top: 50%; - left: 50%; - width: 50%; - height: 50%; - transform: translate(-50%, -50%); - pointer-events: none; - background-color: $form-input-border-focus-color; - } - - &:not(:checked):after { - transform: translate(-50%, -50%) scale(0); - opacity: 0; - } - - &:not(:disabled):not(:checked):hover:after { - background-color: $form-input-bg-hover; - } - - &:checked:after, - &:not(:disabled):not(:checked):hover:after { - content: ''; - transform: translate(-50%, -50%) scale(1); - opacity: 1; - } - - &:checked:before { - border-color: $form-input-border-focus-color; - background-color: $form-input-bg; - } - - &:disabled:before { - background-color: $form-input-bg-disabled; - } - - &:checked:disabled:before { - border-color: rgba($form-input-border-focus-color, 0.4); - } - - &:checked:disabled:after { - background-color: rgba($form-input-border-focus-color, 0.4); - } - - & + label { - margin-left: $form-label-gutter; - } -} diff --git a/theme/styles/web/sass/core/widgets/_simplemenubar.scss b/theme/styles/web/sass/core/widgets/_simplemenubar.scss deleted file mode 100644 index a7f11a5..0000000 --- a/theme/styles/web/sass/core/widgets/_simplemenubar.scss +++ /dev/null @@ -1,226 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Navigation - - Default Mendix Simple Menu Bar -========================================================================== */ -.mx-menubar { - padding: 0; - background-color: $navigation-bg; - - ul.mx-menubar-list { - display: flex; - width: 100%; - min-height: 50px; - - li.mx-menubar-item { - margin: 0; - - > a { - display: flex; - overflow: hidden; - align-items: center; - justify-content: center; - height: 100%; - padding: $navigation-item-padding; - white-space: nowrap; - color: $navigation-color; - border-radius: 0; - font-size: $navigation-font-size; - font-weight: $font-weight-normal; - - img { - margin-right: 0.5em; - } - - .glyphicon { - top: -1px; - margin-right: 0.5em; - vertical-align: middle; - font-size: $navigation-glyph-size; - } - } - - a:hover, - a:focus, - &:hover a, - &:focus a, - &.active a { - text-decoration: none; - color: $navigation-color-hover; - background-color: $navigation-bg-hover; - } - - &.active a { - color: $navigation-color-active; - background-color: $navigation-bg-active; - } - } - } - - /* remove focus */ - &:focus { - outline: 0; - } -} - -// Vertical variation specifics -.mx-menubar-vertical { - background-color: $navigation-bg; - - ul.mx-menubar-list { - display: flex; - - li.mx-menubar-item { - display: block; - - a { - border-bottom: 1px solid $navigation-border-color; - } - } - } -} - -// Horizontal variation specifics -.mx-menubar-horizontal { - box-shadow: 2px 0 4px 0 rgba(0, 0, 0, 0.14); - - ul.mx-menubar-list { - li.mx-menubar-item { - width: auto; - - a { - width: 100%; - } - } - } - - /* Two menu items */ - &.menubar-col-6 ul.mx-menubar-list li.mx-menubar-item { - width: 50%; - } - - /* Three menu items */ - &.menubar-col-4 ul.mx-menubar-list li.mx-menubar-item { - width: 33.33333333%; - } - - /* Four menu items */ - &.menubar-col-3 ul.mx-menubar-list li.mx-menubar-item { - width: 25%; - } - - /* Five menu items */ - &.menubar-col-2 ul.mx-menubar-list li.mx-menubar-item { - width: 20%; - } -} - -//== Regions -//## Behavior in the different regions -//-------------------------------------------------------------------------------------------------------------------// -// When used in topbar -.region-topbar { - .mx-menubar { - background-color: $navtopbar-bg; - - ul.mx-menubar-list { - li.mx-menubar-item { - a { - color: $navtopbar-color; - font-size: $navtopbar-font-size; - - .glyphicon { - font-size: $navtopbar-glyph-size; - } - } - - a:hover, - a:focus, - &:hover a, - &:focus a, - &.active a { - color: $navtopbar-color-hover; - background-color: $navtopbar-bg-hover; - } - - &.active a { - color: $navtopbar-color-active; - background-color: $navtopbar-bg-active; - } - } - } - } - - // Vertical variation specifics - .mx-menubar-vertical { - background-color: $navtopbar-bg; - - ul.mx-menubar-list { - li.mx-menubar-item { - a { - height: $navigation-item-height; - border-color: $navtopbar-border-color; - } - } - } - } -} - -// When used in sidebar -.region-sidebar { - .mx-menubar { - background-color: $navsidebar-bg; - - ul.mx-menubar-list { - li.mx-menubar-item { - a { - color: $navsidebar-color; - font-size: $navsidebar-font-size; - - .glyphicon { - font-size: $navsidebar-glyph-size; - } - } - - a:hover, - a:focus, - &:hover a, - &:focus a, - &.active a { - color: $navsidebar-color-hover; - background-color: $navsidebar-bg-hover; - } - - &.active a { - color: $navsidebar-color-active; - background-color: $navsidebar-bg-active; - } - } - } - } - - // Vertical variation specifics - .mx-menubar-vertical { - background-color: $navsidebar-bg; - - ul.mx-menubar-list { - li.mx-menubar-item { - a { - border-color: $navsidebar-border-color; - } - } - } - } -} - -@supports (padding-bottom: env(safe-area-inset-bottom)) { - .mx-menubar { - padding-bottom: env(safe-area-inset-bottom); - } -} \ No newline at end of file diff --git a/theme/styles/web/sass/core/widgets/_tabcontainer.scss b/theme/styles/web/sass/core/widgets/_tabcontainer.scss deleted file mode 100644 index f6933b5..0000000 --- a/theme/styles/web/sass/core/widgets/_tabcontainer.scss +++ /dev/null @@ -1,97 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Tab Container - - Default Mendix Tab Container Widget. Tab containers are used to show information categorized into multiple tab pages. - This can be very useful if the amount of information that has to be displayed is larger than the amount of space on the screen -========================================================================== */ - -.mx-tabcontainer { - .mx-tabcontainer-tabs { - margin-bottom: 20px; - border-color: $tabs-border-color; - & > li > a { - margin-right: 0; - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - color: $tabs-color; - font-weight: $font-weight-normal; - &:hover, - &:focus { - background-color: $tabs-bg-hover; - } - } - & > li.active > a, - & > li.active > a:hover, - & > li.active > a:focus { - color: $tabs-color-active; - border: 1px solid $tabs-border-color; - border-bottom-color: transparent; - background-color: $tabs-bg; - } - } -} - -// Tab Styling Specific for mobile -.tab-mobile.mx-tabcontainer { - & > .mx-tabcontainer-tabs { - margin: 0; - text-align: center; - border-style: none; - background-color: $brand-primary; - li { - display: table-cell; - float: none; - width: 1%; - margin: 0; - text-align: center; - border-style: none; - border-radius: 0; - a { - padding: 15px; - text-transform: uppercase; - color: #FFFFFF; - border-width: 0 1px 0 0; - border-style: solid; - border-color: rgba(255, 255, 255, 0.3); - border-radius: 0; - font-size: 12px; - font-weight: $font-weight-normal; - &:hover, - &:focus { - background-color: inherit; - } - } - &:last-child a { - border-right: none; - } - &.active > a, - &.active > a:hover, - &.active > a:focus { - color: #FFFFFF; - border-style: none; - border-radius: 0; - background-color: mix($brand-primary, #000000, 80%); - } - } - } -} - -.mx-tabcontainer-badge { - margin-left: 8px; - border-radius: $font-size-small; - background-color: $label-primary-bg; - color: $label-primary-color; - font-size: $font-size-small; - font-weight: $font-weight-bold; - line-height: 1; - padding: 3px 7px; -} diff --git a/theme/styles/web/sass/core/widgets/_tables.scss b/theme/styles/web/sass/core/widgets/_tables.scss deleted file mode 100644 index 21c0c33..0000000 --- a/theme/styles/web/sass/core/widgets/_tables.scss +++ /dev/null @@ -1,79 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Tables - - Default Mendix Table Widget. Tables can be used to lend structure to a page. They contain a number of rows (tr) and columns, the intersection of which is called a cell (td). Each cell can contain widgets -========================================================================== */ - -th { - font-weight: $font-weight-bold; -} - -html body .mx-page table.mx-table { - th, - td { - &.nopadding { - padding: 0; - } - } -} - -table.mx-table { - > tbody { - /* Table row */ - > tr { - /* Table header */ - > th { - padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom $padding-table-cell-left;s - * { - color: $form-label-color; - font-weight: $font-weight-bold; - font-weight: $form-label-weight; - } - > label { - padding-top: 7px; - padding-bottom: 6px; // Aligns label in the middle if there is no input field next to it. - } - } - /* Table cells */ - > td { - padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom $padding-table-cell-left; - > div > label, - .mx-referenceselector-input-wrapper label { - padding-top: 7px; - padding-bottom: 6px; // Aligns label in the middle if there is no input field next to it. - } - } - } - } -} - -// Default Mendix Table Widget inside TemplateGrid -.mx-templategrid table.mx-table { - > tbody { - > tr { - > th, - > td { - padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom $padding-table-cell-left; - } - } - } -} - -// Default Mendix Table Widget inside Listview -.mx-list table.mx-table { - > tbody { - > tr { - > th, - > td { - padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom $padding-table-cell-left; - } - } - } -} diff --git a/theme/styles/web/sass/core/widgets/_templategrids.scss b/theme/styles/web/sass/core/widgets/_templategrids.scss deleted file mode 100644 index 35d6fce..0000000 --- a/theme/styles/web/sass/core/widgets/_templategrids.scss +++ /dev/null @@ -1,33 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Templategrid - - Default Mendix Templategrid Widget. The template grid shows a list of objects in a tile view. For example, a template grid can show a list of products. The template grid has a lot in common with the data grid. The main difference is that the objects are shown in templates (a sort of small data view) instead of rows -========================================================================== */ - -.mx-templategrid { - .mx-templategrid-content-wrapper { - table-layout: fixed; - } - .mx-templategrid-item { - padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left; - cursor: default; - background-color: $grid-bg; - &:hover { - background-color: transparent; - } - &.selected { - background-color: $grid-bg-selected !important; - } - } - .mx-layoutgrid { - padding-top: 0 !important; - padding-bottom: 0 !important; - } -} \ No newline at end of file diff --git a/theme/styles/web/sass/core/widgets/_timeline.scss b/theme/styles/web/sass/core/widgets/_timeline.scss deleted file mode 100644 index 638af7b..0000000 --- a/theme/styles/web/sass/core/widgets/_timeline.scss +++ /dev/null @@ -1,102 +0,0 @@ -.widget-timeline-date-header { - display: inline-block; - width: 110px; - overflow-wrap: break-word; - padding: 8px; - text-align: center; - border: 1px solid $timeline-border-color; - border-radius: 30px; -} - -.widget-timeline-events-wrapper { - display: flex; - flex: 1; - margin-left: 55px; - padding-top: 35px; - - ul { - padding: 0; - list-style: none; - margin-bottom: 0; - } -} - -.widget-timeline-title { - color: $timeline-color-header; - font-weight: 600; - margin: 0 0 10px 0; -} - -.widget-timeline-description { - color: $timeline-color-detail; -} - -.widget-timeline-event { - position: relative; - margin-left: $timeline-icon-size / 2; - padding-left: $spacing-large; - padding-bottom: 20px; - - &:not(:last-of-type) { - border-left: 1px solid $timeline-border-color; - } - - &.clickable { - cursor: pointer; - transition: background 0.8s; - - &:hover { - .widget-timeline-title { - color: #dadcde; - } - } - } -} - -.widget-timeline-icon-wrapper { - position: absolute; - top: 0; - left: 0; - display: flex; - justify-content: center; - align-items: center; - width: $timeline-icon-size; - height: $timeline-icon-size; - transform: translateX(-50%); - - .glyphicon { - font-size: $timeline-icon-size; - } - - img { - max-width: $timeline-icon-size; - max-height: $timeline-icon-size; - } -} - -.widget-timeline-content-wrapper { - .widget-timeline-date-time-wrapper { - margin-right: 15px; - } - - .widget-timeline-info-wrapper { - flex-direction: column; - } -} - -.widget-timeline-icon-circle { - width: 18px; - height: 18px; - border-radius: 50%; - background-color: $timeline-icon-color; -} - -.widget-timeline-no-divider { - padding-bottom: 0; - padding-top: 0; - margin-left: 0; -} - -.widget-timeline-flex-container { - display: flex; -} diff --git a/theme/styles/web/sass/core/widgets/_typography.scss b/theme/styles/web/sass/core/widgets/_typography.scss deleted file mode 100644 index 21fa8a0..0000000 --- a/theme/styles/web/sass/core/widgets/_typography.scss +++ /dev/null @@ -1,79 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Typography -========================================================================== */ - -p { - line-height: $line-height-base * 1.25; -} - -label { - padding-top: 0; -} - -.mx-title { - margin: $font-header-margin; - color: $font-color-header; - font-size: $font-size-h1; - font-weight: $font-weight-header; -} - -h1, -.h1, -.h1 > * { - font-size: $font-size-h1; -} - -h2, -.h2, -.h2 > * { - font-size: $font-size-h2; -} - -h3, -.h3, -.h3 > * { - font-size: $font-size-h3; -} - -h4, -.h4, -.h4 > * { - font-size: $font-size-h4; -} - -h5, -.h5, -.h5 > * { - font-size: $font-size-h5; -} - -h6, -.h6, -.h6 > * { - font-size: $font-size-h6; -} - -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - margin: $font-header-margin; - color: $font-color-header; - font-weight: $font-weight-header; - line-height: 1.3; -} \ No newline at end of file diff --git a/theme/styles/web/sass/core/widgetscustom/_dijit-widgets.scss b/theme/styles/web/sass/core/widgetscustom/_dijit-widgets.scss deleted file mode 100644 index cf859c1..0000000 --- a/theme/styles/web/sass/core/widgetscustom/_dijit-widgets.scss +++ /dev/null @@ -1,184 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* -* Mendix Documentation -* Special styles for presenting components -*/ - -/* -* Dijit Widgets -* -* Default Dojo Dijit Widgets -*/ - -/* - * Dijit Tooltip Widget - * - * Default tooltip used for Mendix widgets - */ - -.mx-tooltip { - .dijitTooltipContainer { - border-width: 1px; - border-color: $gray-light; - border-radius: 4px; - background: #ffffff; - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - .mx-tooltip-content { - padding: 10px; - } - .form-group { - margin-bottom: 5px; - } - } - .dijitTooltipConnector { - width: 0; - height: 0; - margin-left: -10px; - border-width: 10px 10px 10px 0; - border-style: solid; - border-color: transparent; - border-right-color: $gray-light; - } -} - -/* - * Dijit Border Container - * - * Used in Mendix as split pane containers - */ - -.dijitBorderContainer { - padding: 5px; - background-color: #fcfcfc; - .dijitSplitterV, - .dijitGutterV { - width: 5px; - border: 0; - background: #fcfcfc; - } - .dijitSplitterH, - .dijitGutterH { - height: 5px; - border: 0; - background: #fcfcfc; - } - .dijitSplitterH { - .dijitSplitterThumb { - top: 2px; - width: 19px; - height: 1px; - background: #b0b0b0; - } - } - .dijitSplitterV { - .dijitSplitterThumb { - left: 2px; - width: 1px; - height: 19px; - background: #b0b0b0; - } - } - .dijitSplitContainer-child, - .dijitBorderContainer-child { - border: 1px solid #cccccc; - } - .dijitBorderContainer-dijitTabContainerTop, - .dijitBorderContainer-dijitTabContainerBottom, - .dijitBorderContainer-dijitTabContainerLeft, - .dijitBorderContainer-dijitTabContainerRight { - border: none; - } - .dijitBorderContainer-dijitBorderContainer { - padding: 0; - border: none; - } - .dijitSplitterActive { - /* For IE8 and earlier */ - margin: 0; - opacity: 0.6; - background-color: #aaaaaa; - background-image: none; - font-size: 1px; - filter: alpha(opacity=60); - } - .dijitSplitContainer-dijitContentPane, - .dijitBorderContainer-dijitContentPane { - padding: 5px; - background-color: #ffffff; - } -} - -/* - * Dijit Menu Popup - * - * Used in datepickers and calendar widgets - */ - -.dijitMenuPopup { - margin-top: 10px; - .dijitMenu { - display: block; - width: 200px !important; - margin-top: 0; // No top margin because there is no parent with margin bottom - padding: 12px 10px; - border-radius: 3px; - background: $brand-inverse; - &:after { - position: absolute; - bottom: 100%; - left: 20px; - width: 0; - height: 0; - margin-left: -10px; - content: ' '; - pointer-events: none; - border: medium solid transparent; - border-width: 10px; - border-bottom-color: $brand-inverse; - } - // Menu item - .dijitMenuItem { - background: transparent; - .dijitMenuItemLabel { - display: block; - overflow: hidden; - width: 180px !important; - padding: 10px; - text-overflow: ellipsis; - color: #ffffff; - border-radius: 3px; - } - // Hover - &.dijitMenuItemHover { - background: none; - .dijitMenuItemLabel { - background: $brand-primary; - } - } - } - // New label - .tg_newlabelmenuitem { - .dijitMenuItemLabel { - font-weight: $font-weight-bold; - } - } - // Seperator - .dijitMenuSeparator { - td { - padding: 0; - border-bottom-width: 3px; - } - .dijitMenuSeparatorIconCell { - > div { - margin: 0; //override dijit styling - } - } - } - } -} diff --git a/theme/styles/web/sass/core/widgetscustom/_progress-bar-theme.scss b/theme/styles/web/sass/core/widgetscustom/_progress-bar-theme.scss deleted file mode 100644 index 7309a06..0000000 --- a/theme/styles/web/sass/core/widgetscustom/_progress-bar-theme.scss +++ /dev/null @@ -1,43 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* Based on https://github.com/mendixlabs/star-rating/blob/v1.1.1/src/ui/StarRating.scss */ -div.widget-progress-bar .progress-bar-default { - background-color: $brand-default; -} - -div.widget-progress-bar .progress-bar-primary { - background-color: $brand-primary; -} - -div.widget-progress-bar .progress-bar-success { - background-color: $brand-success; -} - -div.widget-progress-bar .progress-bar-info { - background-color: $brand-info; -} - -div.widget-progress-bar .progress-bar-warning { - background-color: $brand-warning; -} - -div.widget-progress-bar .progress-bar-danger { - background-color: $brand-danger; -} - -div.widget-progress-bar .progress-bar-inverse { - background-color: $brand-inverse; -} - -div.widget-progress-bar-alert.widget-progress-bar-text-contrast .progress-bar { - color: $color-danger-darker; -} - -div.widget-progress-bar-text-contrast .progress-bar { - color: $font-color-default; -} diff --git a/theme/styles/web/sass/core/widgetscustom/_progress-circle-theme.scss b/theme/styles/web/sass/core/widgetscustom/_progress-circle-theme.scss deleted file mode 100644 index 0c0b385..0000000 --- a/theme/styles/web/sass/core/widgetscustom/_progress-circle-theme.scss +++ /dev/null @@ -1,65 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* Based on https://github.com/mendixlabs/progress-circle/tree/master/src/ui/_progress-circle-theme.scss */ -path.widget-progress-circle-path { - stroke: $brand-primary; -} - -.widget-progress-circle-primary { - path.widget-progress-circle-path { - stroke: $brand-primary; - } - .progressbar-text { - color: $brand-primary !important; - } -} - -.widget-progress-circle-info { - path.widget-progress-circle-path { - stroke: $brand-info; - } - .progressbar-text { - color: $brand-info !important; - } -} - -.widget-progress-circle-success { - path.widget-progress-circle-path { - stroke: $brand-success; - } - .progressbar-text { - color: $brand-success !important; - } -} - -.widget-progress-circle-warning { - path.widget-progress-circle-path { - stroke: $brand-warning; - } - .progressbar-text { - color: $brand-warning !important; - } -} - -.widget-progress-circle-danger { - path.widget-progress-circle-path { - stroke: $brand-danger; - } - .progressbar-text { - color: $brand-danger !important; - } -} - -.widget-progress-circle-inverse { - path.widget-progress-circle-path { - stroke: $brand-inverse; - } - .progressbar-text { - color: $brand-inverse !important; - } -} diff --git a/theme/styles/web/sass/core/widgetscustom/_range-slider-theme.scss b/theme/styles/web/sass/core/widgetscustom/_range-slider-theme.scss deleted file mode 100644 index 0da429b..0000000 --- a/theme/styles/web/sass/core/widgetscustom/_range-slider-theme.scss +++ /dev/null @@ -1,59 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -// Based on https://github.com/mendixlabs/range-slider/tree/master/src/ui/_range-slider-theme.scss - -div.widget-range-slider { - .rc-slider-handle, - .rc-slider-dot-active { - border-color: $brand-default; - - &:active { - border-color: $brand-default; - box-shadow: none; - } - - &:hover { - border-color: $brand-default; - } - } - - &.has-error { - .rc-slider-track, - .rc-slider-rail { - background-color: $brand-danger; - } - } -} - -div.widget-range-slider-primary .rc-slider-track { - background-color: $brand-primary; -} - -div.widget-range-slider-info .rc-slider-track { - background-color: $brand-info; -} - -div.widget-range-slider-success .rc-slider-track { - background-color: $brand-success; -} - -div.widget-range-slider-warning .rc-slider-track { - background-color: $brand-warning; -} - -div.widget-range-slider-danger .rc-slider-track { - background-color: $brand-danger; -} - -div.widget-range-slider-inverse .rc-slider-track { - background-color: $brand-inverse; -} - -.rc-slider-tooltip { - z-index: 999; -} \ No newline at end of file diff --git a/theme/styles/web/sass/core/widgetscustom/_slider-theme.scss b/theme/styles/web/sass/core/widgetscustom/_slider-theme.scss deleted file mode 100644 index 951b79a..0000000 --- a/theme/styles/web/sass/core/widgetscustom/_slider-theme.scss +++ /dev/null @@ -1,52 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -// Based on https://github.com/mendixlabs/slider/tree/master/src/ui/_slider-theme.scss - -div.widget-slider { - .rc-slider-handle, - .rc-slider-dot-active { - border-color: $brand-default; - &:active { - border-color: $brand-default; - } - &:hover { - border-color: $brand-default; - } - } - - &.has-error { - .rc-slider-track, - .rc-slider-rail { - background-color: $brand-danger; - } - } -} - -div.widget-slider-primary .rc-slider-track { - background-color: $brand-primary; -} - -div.widget-slider-info .rc-slider-track { - background-color: $brand-info; -} - -div.widget-slider-success .rc-slider-track { - background-color: $brand-success; -} - -div.widget-slider-warning .rc-slider-track { - background-color: $brand-warning; -} - -div.widget-slider-danger .rc-slider-track { - background-color: $brand-danger; -} - -div.widget-slider-inverse .rc-slider-track { - background-color: $brand-inverse; -} diff --git a/theme/styles/web/sass/core/widgetscustom/_star-rating-theme.scss b/theme/styles/web/sass/core/widgetscustom/_star-rating-theme.scss deleted file mode 100644 index 91eeb86..0000000 --- a/theme/styles/web/sass/core/widgetscustom/_star-rating-theme.scss +++ /dev/null @@ -1,35 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* Based on https://github.com/mendixlabs/star-rating/blob/v1.1.1/src/ui/StarRating.scss */ -span.widget-star-rating-full-default { - color: $brand-default; -} - -span.widget-star-rating-full-primary { - color: $brand-primary; -} - -span.widget-star-rating-full-success { - color: $brand-success; -} - -span.widget-star-rating-full-info { - color: $brand-info; -} - -span.widget-star-rating-full-warning { - color: $brand-warning; -} - -span.widget-star-rating-full-danger { - color: $brand-danger; -} - -span.widget-star-rating-full-inverse { - color: $brand-inverse; -} diff --git a/theme/styles/web/sass/core/widgetscustom/_switchwidget.scss b/theme/styles/web/sass/core/widgetscustom/_switchwidget.scss deleted file mode 100644 index 14dd591..0000000 --- a/theme/styles/web/sass/core/widgetscustom/_switchwidget.scss +++ /dev/null @@ -1,157 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -$default-android-color: #6FBEB5; -$default-ios-color: rgb(100, 189, 99); - -@mixin bootstrap-style-ios($brand-style) { - border-color: $brand-style; - background-color: $brand-style; - box-shadow: $brand-style 0 0 0 16px inset; -} - -@mixin bootstrap-style-android($brand-style) { - background-color: lighten($brand-style, 10%); -} - -@mixin ios { - .widget-switch-btn-wrapper { - &.checked { - &.widget-switch-btn-wrapper-default { - @include bootstrap-style-ios($default-ios-color); - } - - &.widget-switch-btn-wrapper-success { - @include bootstrap-style-ios($brand-success); - } - - &.widget-switch-btn-wrapper-info { - @include bootstrap-style-ios($brand-info); - } - - &.widget-switch-btn-wrapper-primary { - @include bootstrap-style-ios($brand-primary); - } - - &.widget-switch-btn-wrapper-warning { - @include bootstrap-style-ios($brand-warning); - } - - &.widget-switch-btn-wrapper-danger { - @include bootstrap-style-ios($brand-danger); - } - - &.widget-switch-btn-wrapper-inverse { - @include bootstrap-style-ios($brand-inverse); - } - } - } -} - -@mixin android { - .widget-switch-btn-wrapper { - &.checked { - &.widget-switch-btn-wrapper-default { - @include bootstrap-style-android($default-android-color); - - .widget-switch-btn { - background: $default-android-color; - } - } - - &.widget-switch-btn-wrapper-success { - @include bootstrap-style-android($brand-success); - - .widget-switch-btn { - background: $brand-success; - } - } - - &.widget-switch-btn-wrapper-info { - @include bootstrap-style-android($brand-info); - - .widget-switch-btn { - background: $brand-info; - } - } - - &.widget-switch-btn-wrapper-primary { - @include bootstrap-style-android($brand-primary); - - .widget-switch-btn { - background: $brand-primary; - } - } - - &.widget-switch-btn-wrapper-warning { - @include bootstrap-style-android($brand-warning); - - .widget-switch-btn { - background: $brand-warning; - } - } - - &.widget-switch-btn-wrapper-danger { - @include bootstrap-style-android($brand-danger); - - .widget-switch-btn { - background: $brand-danger; - } - } - - &.widget-switch-btn-wrapper-inverse { - @include bootstrap-style-android($brand-inverse); - - .widget-switch-btn { - background: $brand-inverse; - } - } - } - } -} - -.widget-switch-btn-wrapper { - &:focus { - outline: 1px solid $brand-primary; - } -} - -div { - &.widget-switch { - &.iOS { - @include ios; - } - - &.android { - @include android; - } - - &.auto { - @include ios; - } - } -} - -html { - div { - &.dj_android { - .widget-switch { - &.auto { - @include android; - } - } - } - - &.dj_ios { - .widget-switch { - &.auto { - @include ios; - } - } - } - } -} diff --git a/theme/styles/web/sass/main.scss b/theme/styles/web/sass/main.scss deleted file mode 100644 index 53f45f9..0000000 --- a/theme/styles/web/sass/main.scss +++ /dev/null @@ -1,104 +0,0 @@ -// Utilities -@import 'core/_legacy/bootstrap/bootstrap'; -@import 'core/_legacy/bootstrap/bootstrap-rtl'; -@import 'core/_legacy/mxui'; - -// Custom variables -@import 'app/custom-variables'; - -//================================== CORE ==================================\\ - -// Default variables -@import 'core/variables'; - -// Base -@import 'core/base/mixins/animations'; -@import 'core/base/mixins/spacing'; -@import 'core/base/mixins/layout-spacing'; -@import 'core/base/mixins/buttons'; -@import 'core/base/mixins/groupbox'; -@import 'core/base/animation'; -@import 'core/base/flex'; -@import 'core/base/spacing'; -@import 'core/base/reset'; -@import 'core/base/base'; -@import 'core/base/login'; - -// Widgets -@import 'core/widgets/inputs'; -@import 'core/widgets/alerts'; -@import 'core/helpers/alerts'; -@import 'core/helpers/backgrounds'; -@import 'core/widgets/buttons'; -@import 'core/helpers/buttons'; -@import 'core/widgets/checkbox'; -@import 'core/widgets/grid'; -@import 'core/widgets/datagrids'; -@import 'core/helpers/datagrids'; -@import 'core/widgets/dataview'; -@import 'core/widgets/datepicker'; -@import 'core/widgets/header'; -@import 'core/widgets/glyphicons'; -@import 'core/widgets/groupbox'; -@import 'core/helpers/groupbox'; -@import 'core/helpers/images'; -@import 'core/widgets/labels'; -@import 'core/helpers/labels'; -@import 'core/widgets/listview'; -@import 'core/helpers/listview'; -@import 'core/widgets/modals'; -@import 'core/widgets/navigationbar'; -@import 'core/helpers/navigationbar'; -@import 'core/widgets/navigationlist'; -@import 'core/widgets/navigationtree'; -@import 'core/helpers/navigationtree'; -@import 'core/widgets/popupmenu'; -@import 'core/widgets/simplemenubar'; -@import 'core/helpers/simplemenubar'; -@import 'core/widgets/radiobuttons'; -@import 'core/widgets/tabcontainer'; -@import 'core/helpers/tabcontainer'; -@import 'core/widgets/tables'; -@import 'core/helpers/tables'; -@import 'core/widgets/templategrids'; -@import 'core/helpers/templategrids'; -@import 'core/widgets/typography'; -@import 'core/helpers/typography'; -@import 'core/widgets/layoutgrid'; -@import 'core/widgets/progress'; -@import 'core/widgets/timeline'; -@import 'core/helpers/helperclasses'; - -// Custom widgets -@import 'core/widgetscustom/dijit-widgets'; -@import 'core/widgetscustom/progress-bar-theme'; -@import 'core/widgetscustom/progress-circle-theme'; -@import 'core/widgetscustom/range-slider-theme'; -@import 'core/widgetscustom/slider-theme'; -@import 'core/widgetscustom/star-rating-theme'; -@import 'core/widgetscustom/switchwidget'; - -//================================= CUSTOM =================================\\ - -// Building blocks -@import 'ui_resources/atlas_ui_resources/buildingblocks/breadcrumb'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/card'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/chat'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/controlgroup'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/pageblocks'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/pageheader'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/heroheader'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/formblock'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/master-detail'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/userprofile'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/wizard'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/timeline'; - -// Layouts -@import 'ui_resources/atlas_ui_resources/layouts/layout-atlas'; -@import 'ui_resources/atlas_ui_resources/layouts/layout-atlas-phone'; -@import 'ui_resources/atlas_ui_resources/layouts/layout-atlas-responsive'; -@import 'ui_resources/atlas_ui_resources/layouts/layout-atlas-tablet'; - -// Custom -@import 'app/custom'; diff --git a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_breadcrumb.scss b/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_breadcrumb.scss deleted file mode 100644 index b5655be..0000000 --- a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_breadcrumb.scss +++ /dev/null @@ -1,44 +0,0 @@ -/* ========================================================================== - Breadcrumbs - -========================================================================== */ -.breadcrumb { - //reset - margin: 0; - padding: 0; - border-radius: 0; - background-color: transparent; - font-size: $font-size-default; -} - -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -.breadcrumb-item { - display: inline-block; - margin: 0; - &:last-child { - color: $font-color-default; - a { - text-decoration: none; - } - } -} -.breadcrumb-item + .breadcrumb-item { - &::before { - display: inline-block; - padding-right: 10px; - padding-left: 10px; - content: "/"; - color: $gray-light; - } -} - -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -.breadcrumb-large { - font-size: $font-size-h3; -} -.breadcrumb-underline { - padding-bottom: $gutter-size; - border-bottom: 1px solid $border-color-default; -} diff --git a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_card.scss b/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_card.scss deleted file mode 100644 index ddfc68d..0000000 --- a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_card.scss +++ /dev/null @@ -1,337 +0,0 @@ -/* ========================================================================== - Cards - -========================================================================== */ -.card { - padding: 30px; - border: 1px solid $border-color-default; - border-radius: $border-radius-default; - background-color: #FFFFFF; -} - -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -.card-title { - margin-top: 0; -} - -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -.cardaction { - .card-image { - .glyphicon { - font-size: 58px; - } - } -} - -.cardmetrics { - .card-title { - margin-bottom: 0; - } - - .figurecontent { - } - - .card-image { - width: 100px; - height: auto; - // If btn - &.btn { - width: 100px; - height: 100px; - padding: 0; - cursor: default; - pointer-events: none; - font-size: 40px; - } - } - - .card-counter { - margin: 0; - font-size: 64px; - } - - .card-morebutton { - } -} - -.cardinfo { - .card-text { - margin-bottom: $spacing-large; - } -} - -// Used in card info -.textwithicon { - overflow: hidden; - max-width: 100%; - margin-bottom: 15px; - text-overflow: ellipsis; - - .textwithicon-icon, - .textwithicon-text { - display: inline-block; - vertical-align: middle; - } - - .textwithicon-icon { - margin-right: 15px; - padding: 0; - color: $brand-primary; // class .text-primary - border: 0; - background: transparent; - font-size: 23px; - } - - .textwithicon-text { - } -} - -// Used in card info -.socialprofiles { - .socialprofiles-title { - display: block; - margin-bottom: 10px; - font-weight: bold; // class text-bold - } - - .socialprofiles-button { - width: 24px; - height: 24px; - margin-right: 15px; - padding: 0; - border-radius: 24px; - - .glyphicon { - margin: 0; - } - } -} - - -.cardtabs { - padding: 0; -} - -.cardtabs-tabs { - margin: 0; - - ul.mx-tabcontainer-tabs { - display: flex; - margin: 0; - background-color: mix($tabs-border-color, #FFFFFF, 20%); - - li { - flex: 1 1 auto; - text-align: center; - - a, - a:hover, - a:focus { - border-top-width: 0; - border-right-width: 1px; - border-left-width: 0; - } - - &:first-child a { - border-radius: $border-radius-default 0 0 0; - } - - &:last-child a { - border-radius: 0 $border-radius-default 0 0; - } - } - } - - .mx-tabcontainer-pane { - @include get-responsive-spacing-large($type: padding, $direction: all); - } -} - -.carduser { - .card-controls { - } - - .card-title { - } - - .card-detail { - } -} - -.cardgraph { - .card-title { - } -} - -.cardchart { - .card-title { - } -} - -.cardproduct { - padding: 0; - -} - -.cardproduct-header { - position: relative; - overflow: hidden; - height: 200px; - - .card-image { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: auto; - } - -} - -.cardproduct-overlay { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - padding: 20px 30px; - background: rgba(0, 0, 0, 0.60); - -} - -.cardproduct-overlay-category, -.cardproduct-overlay-title { - margin: 0; - color: #FFFFFF; -} - -.cardproduct-footer .col { - padding: 20px 30px; - - .widget-star-rating-font { - font-size: 20px; - } -} - -.cardproduct-name { - margin: 0; -} - -.cardproduct-btn { - display: flex; - align-items: center; - height: 100%; - padding: 30px; - border-left: 1px solid $border-color-default; -} - -.cardproduct2 { - @extend .cardproduct; - - .cardproduct-header { - &::after { - position: absolute; - bottom: 0; - left: 0; - display: block; - width: 100%; - padding: 20px 30px; - content: ""; - background: rgba(0, 0, 0, 0.60); - background: -moz-linear-gradient(top, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 2%, rgba(0, 0, 0, 0.99) 99%, rgba(0, 0, 0, 1) 100%); - background: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 2%, rgba(0, 0, 0, 0.99) 99%, rgba(0, 0, 0, 1) 100%); - background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 2%, rgba(0, 0, 0, 0.99) 99%, rgba(0, 0, 0, 1) 100%); - } - } -} - - -.cardproduct3 { - @extend .cardproduct; - - .cardproduct-header { - height: 320px; - - img { - width: 100%; - height: 100%; - object-fit: cover; - } - - } - - .cardproduct-overlay { - min-height: 100px; - padding: 30px; - background: -moz-linear-gradient(top, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 8%, rgba(0, 0, 0, 0.99) 121%, rgba(0, 0, 0, 1) 100%); - background: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 8%, rgba(0, 0, 0, 0.99) 121%, rgba(0, 0, 0, 1) 100%); - background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 8%, rgba(0, 0, 0, 0.99) 121%, rgba(0, 0, 0, 1) 100%); - font-size: $font-size-default; - } -} - -.cardshopping { -} - -.carduserlist { -} - -.cardstatus { - padding: 20px; - - .card-linkicon { - font-size: 30px; - } - - .cardstatus-status { - margin-bottom: 5px; - } -} - -.cardpayment { -} - -.cardprogress { -} - -.cardprogress-state { - width: 80px; - height: 80px; - padding: 0; - cursor: default; - pointer-events: none; - border-radius: 100%; - font-size: 28px; -} - -.cardhighlight { - border-top: 4px solid $brand-primary; -} - -.cardchat { - overflow: hidden; - padding: 0; - - .chat { - height: 400px; - } -} - -@media screen and (max-width: $screen-md-max) { - .widget-charts:not([height]), - .widget-charts-line:not([height]) { - padding-bottom: 80% !important; - } -} - - -@media screen and (max-width: $screen-lg-max) { - .cardprogress { - .cardprogress-state { - width: 60px; - height: 60px; - font-size: 24px; - } - } -} diff --git a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_chat.scss b/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_chat.scss deleted file mode 100644 index 4dba229..0000000 --- a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_chat.scss +++ /dev/null @@ -1,148 +0,0 @@ -/* ========================================================================== - Chats - -========================================================================== */ -.chat { - display: flex; - flex-direction: column; - height: 100%; - background-color: $bg-color-secondary; -} - -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -.chat-content { - display: flex; - overflow: auto; - flex: 1; - flex-direction: column; - justify-content: flex-end; - - .chat-list { - position: relative; - overflow: auto; - - ul { - display: flex; - flex-direction: column-reverse; - margin-bottom: $m-spacing-large; - } - - li { - padding: 15px 30px; - animation: fadeIn 0.2s; - background-color: transparent; - animation-fill-mode: both; - - &, - &:last-child { - border: 0; - } - } - - .mx-listview-loadMore { - position: absolute; - top: 0; - right: 0; - left: 0; - display: block; - width: 50%; - margin: 15px auto; - color: #FFFFFF; - background-color: $brand-primary; - box-shadow: 0 2px 20px 0 rgba(0, 0, 0, 0.05); - } - } -} - - -.chat-message { - display: flex; -} - -.chat-avatar { - margin: 0 20px 0 0; - border-radius: 50%; -} - -.chat-message-content { - display: inline-flex; - flex-direction: column; -} - -.chat-message-balloon { - position: relative; - display: flex; - flex-direction: column; - padding: 10px 15px; - border-radius: 5px; - background-color: $bg-color; - - &::after { - position: absolute; - top: 10px; - right: 100%; - width: 0; - height: 0; - content: ''; - border: 10px solid transparent; - border-top: 0; - border-right-color: $bg-color; - border-left: 0; - } -} - -.chat-message-time { - padding-top: 2px; - - .form-control-static { - border: 0; - } -} - -.chat-footer { - z-index: 1; - padding: $m-spacing-large; - background-color: $bg-color; - box-shadow: 0 2px 20px 0 rgba(0, 0, 0, 0.05); -} - -.chat-input { - display: flex; - - .chat-textbox { - flex: 1; - margin-right: $spacing-large; - margin-bottom: 0; - - .form-control { - border: 0; - } - } -} - -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -.chat-message-self { - justify-content: flex-end; - - .chat-avatar { - margin: 0 0 0 20px; - } - - .chat-message-balloon { - background-color: $color-primary-lighter; - - &::after { - left: 100%; - border: 10px solid transparent; - border-top: 0; - border-right: 0; - border-left-color: $color-primary-lighter; - } - } - - .chat-message-time { - text-align: right; - } -} diff --git a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_formblock.scss b/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_formblock.scss deleted file mode 100644 index 9ecfc2f..0000000 --- a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_formblock.scss +++ /dev/null @@ -1,15 +0,0 @@ -/* ========================================================================== - Form Block - - Used in default forms -========================================================================== */ -.formblock { -} - -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -.formblock-title { - margin-bottom: $gutter-size; - padding-bottom: $gutter-size; - border-bottom: 1px solid $border-color-default; -} diff --git a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_heroheader.scss b/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_heroheader.scss deleted file mode 100644 index f00c387..0000000 --- a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_heroheader.scss +++ /dev/null @@ -1,99 +0,0 @@ -/* ========================================================================== - Pageheader - -========================================================================== */ -.heroheader { - border-bottom: 1px solid $border-color-default; - background: $header-bg-color; -} - -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -.heroheader-title { - margin: 0 0 10px 0; -} - -.heroheader-subtitle { - margin: 0; - padding: 0 15px; - - &::before { - display: block; - max-width: 330px; - height: 1px; - margin: auto auto 10px auto; - content: ""; - background-color: lighten($border-color-default, 4); - } -} - -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -.heroheader1 { - background-image: $brand-gradient; - - .heroheader-title { - margin-bottom: 10px; - color: #FFFFFF; - } - - .heroheader-subtitle { - padding: 0; - color: #FFFFFF; - - &::before { - display: none; - } - } -} - -.heroheadermap { - padding: 0 !important; -} - -.heroheadermap-controls { - padding: $spacing-large; - background: $header-bg-color; -} - -.heroheaderproduct { - position: relative; - overflow: hidden; - height: 300px; - background-color: #000000; - - .heroheaderproduct-backgroundimage { - position: absolute; - z-index: 0; - top: 0; - width: 100%; - opacity: 0.7; - filter: blur(5px); - } - - .heroheaderproduct-overlay { - position: absolute; - z-index: 1; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - } -} - -.heroheaderexpense { - .heroheaderexpense-title { - font-size: 72px; - } - - .heroheaderexpense-type { - align-items: center; - - &::before { - flex-grow: 1; - height: 1px; - margin-right: 10px; - content: ""; - background-color: #D2D2D2; - } - } -} diff --git a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_master-detail.scss b/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_master-detail.scss deleted file mode 100644 index 2422239..0000000 --- a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_master-detail.scss +++ /dev/null @@ -1,46 +0,0 @@ -/* ========================================================================== - Master Detail - - A list with a listening dataview -========================================================================== */ -.masterdetail { - .masterdetail-master { - .controlgroup { - margin-bottom: $gutter-size; - } - - @media (max-width: $screen-lg) { - @include layout-spacing($type: margin, $direction: bottom, $device: responsive); - } - - @media (min-width: $screen-lg) { - border-right: 1px solid $border-color-default; - - .mx-listview-searchbar { - margin: $gutter-size; - } - .controlgroup { - padding: $gutter-size; - border-bottom: 1px solid $border-color-default; - } - } - } - - .masterdetail-detail { - @media (min-width: $screen-lg) { - @include layout-spacing($type: padding, $direction: all, $device: responsive); - } - } -} - -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -.masterdetailvertical { - .masterdetail-master { - @include layout-spacing($type: margin, $direction: bottom, $device: responsive); - } - - .masterdetail-detail { - @include layout-spacing($type: padding, $direction: top, $device: responsive); - } -} diff --git a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_pageheader.scss b/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_pageheader.scss deleted file mode 100644 index 3425161..0000000 --- a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_pageheader.scss +++ /dev/null @@ -1,59 +0,0 @@ -/* ========================================================================== - Pageheader -========================================================================== */ - -//== Default -//-------------------------------------------------------------------------------------------------------------------// -.pageheader { - border-bottom: 1px solid $border-color-default; - background: $header-bg-color; -} - -// Check if it is part of a inner layoutgrid -.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .pageheader { - @include get-responsive-spacing-large($type: margin, $direction: bottom); - @include get-responsive-spacing-large($type: padding, $direction: bottom); - background: transparent; -} - -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -.pageheader-type { - margin: 0; -} - -.pageheader-title { - margin: 0; -} - -.pageheader-subtitle { - margin: 0; -} - -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -.pageheaderwithcontrols { - .controlgroup { - } -} - -.pageheaderwithimage { - .pageheader-image { - } - .figurecontent { - } -} - -.pageheaderwithimageandcontrols { -} - -.pageheaderwithsearch { - .pageheader-title { - margin-bottom: 1em; - } -} - -.pageheaderwithbreadcrumb { - .breadcrumb { - } -} diff --git a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_timeline.scss b/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_timeline.scss deleted file mode 100644 index 63f4d65..0000000 --- a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_timeline.scss +++ /dev/null @@ -1,46 +0,0 @@ -// Timeline -.timeline { - .timeline-header { - display: inline-block; - width: 110px; - padding: 8px; - text-align: center; - border: 1px solid $border-color-default; - border-radius: 30px; - } -} -.timeline-itemwrapper.mx-listview { - margin-bottom: 0; - margin-left: 55px; - padding: $spacing-large 0; - border-left: 1px solid $border-color-default; - & > ul > li { - position: relative; - padding-left: ($gutter-size * 2); - - &::before { - position: absolute; - top: 5px; - left: -5px; - display: block; - width: 10px; - height: 10px; - content: ''; - border-radius: 50%; - background-color: $brand-primary; - } - } - li + li { - margin-top: $spacing-large; - } -} - -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -.timeline2 { - .timeline-itemwrapper.mx-listview { - & > ul > li { - padding-left: $gutter-size; - } - } -} diff --git a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_userprofile.scss b/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_userprofile.scss deleted file mode 100644 index c4544a9..0000000 --- a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_userprofile.scss +++ /dev/null @@ -1,12 +0,0 @@ -/* ========================================================================== - User profile blocks - - -========================================================================== */ -.userprofile { - .userprofile-img { - } - .userprofile-title { - } - .userprofile-subtitle { - } -} \ No newline at end of file diff --git a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_wizard.scss b/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_wizard.scss deleted file mode 100644 index 37df48d..0000000 --- a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_wizard.scss +++ /dev/null @@ -1,137 +0,0 @@ -$wizard-step-number-size: 60px; -$wizard-step-height: 50px; - -.wizard { - display: flex; - justify-content: space-between; - .wizard-step { - position: relative; - width: 100%; - text-align: center; - &::before { - position: absolute; - z-index: -1; - top: $wizard-step-number-size / 2; - display: block; - width: 100%; - height: 2px; - content: ""; - background-color: $border-color-default; - } - .wizard-step-number { - width: $wizard-step-number-size; - height: $wizard-step-number-size; - border-color: $border-color-default; - border-radius: 50%; - background-color: #FFFFFF; - font-size: 20px; - } - .wizard-step-text { - display: block; - margin-top: 15px; - } - } - - - // States - .wizard-step-active { - .wizard-step-number { - color: #FFFFFF; - border-color: $brand-primary; - background-color: $brand-primary; - } - .wizard-step-text { - color: $brand-primary; - } - } - .wizard-step-visited { - .wizard-step-number { - color: #FFFFFF; - border-color: $brand-success; - background-color: $brand-success; - } - .wizard-step-text { - } - } -} - -.wizardprogress { - display: flex; - justify-content: space-between; - - .wizard-step-text { - width: 100%; - } - - .wizard-step { - position: relative; - width: 100%; - height: $wizard-step-height; - margin-left: 0 - ($wizard-step-height / 2); - padding-left: ($wizard-step-height / 2); - border: 1px solid $border-color-default; - background: #FFFFFF; - - a { - display: block; - overflow: hidden; - width: 100%; - height: 100%; - padding: 14px; - white-space: nowrap; - text-decoration: none; - text-overflow: ellipsis; - color: $font-color-default; - } - &::before, - &::after { - position: absolute; - z-index: 1; - left: 100%; - margin-left: 0 - ($wizard-step-height / 2); - content: " "; - border-style: solid; - border-color: transparent; - } - &::after { - top: 1px; - border-width: (($wizard-step-height / 2) - 1); - border-left-color: #FFFFFF; - } - &::before { - top: 0; - border-width: $wizard-step-height / 2; - border-left-color: $border-color-default; - } - - &:first-child { - margin-left: 0; - padding-left: 0; - border-radius: 5px 0 0 5px; - } - - &:last-child { - border-radius: 0 5px 5px 0; - &::before, - &::after { - display: none; - } - } - } - // States - .wizard-step-active { - background: $brand-primary; - a { - text-decoration: none; - color: #FFFFFF; - } - &::after { - border-left-color: $brand-primary; - } - } - .wizard-step-visited { - a { - color: $link-color; - } - } -} diff --git a/theme/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas-phone.scss b/theme/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas-phone.scss deleted file mode 100644 index f9d6e9d..0000000 --- a/theme/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas-phone.scss +++ /dev/null @@ -1,16 +0,0 @@ -/* ========================================================================== - Atlas layout - - Extra styling for phone layouts -========================================================================== */ -.layout-atlas-phone { - .region-topbar { - min-height: $m-header-height; - border-style: none; - background-color: $m-header-bg; - - &::before { - display: none; - } - } -} diff --git a/theme/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas-responsive.scss b/theme/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas-responsive.scss deleted file mode 100644 index cc0f4c7..0000000 --- a/theme/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas-responsive.scss +++ /dev/null @@ -1,154 +0,0 @@ -/* ========================================================================== - Atlas layout - - Extra styling for responsive layouts -========================================================================== */ -.layout-atlas-responsive-default { - $sidebar-width: 60px; - - @media (min-width: $screen-md) { - .mx-scrollcontainer:not(.mx-scrollcontainer-open) > .region-sidebar { - width: $sidebar-width !important; - - .mx-scrollcontainer-wrapper > .mx-navigationtree ul li { - &.mx-navigationtree-has-items:hover { - a { - background-color: $navsidebar-sub-bg; - } - - ul { - position: absolute; - z-index: 100; - top: 0; - bottom: 0; - left: $sidebar-width; - display: block; - overflow-y: auto; - min-width: 200px; - padding-top: 10px; - } - } - - &.mx-navigationtree-collapsed, - &.mx-navigationtree-has-items { - ul { - display: none; - } - } - } - } - } - - - .mx-scrollcontainer-slide { - - &.mx-scrollcontainer-open > .region-sidebar { - width: $sidebar-width !important; - } - } - - // Push aside for mobile - @media (max-width: $screen-sm-max) { - .mx-scrollcontainer-open:not(.mx-scrollcontainer-slide) { - width: 1100px; - } - - .mx-scrollcontainer-slide .toggle-btn { - display: inline-block !important; - } - } - - // Sidebar - .region-sidebar { - .toggle-btn { - width: $sidebar-width; - height: 60px; - border-color: transparent; - border-radius: 0; - background: transparent; - } - - .mx-scrollcontainer-wrapper > .mx-navigationtree { - .navbar-inner > ul > li { - & > a { - height: $sidebar-width; - // Glyph icon - .glyphicon { - display: flex; - align-items: center; - justify-content: center; - width: 40px; - height: 40px; - margin-left: -5px; - padding: 10px; - border-radius: 3px; - } - - &.active { - .glyphicon { - background: $brand-primary; - } - } - } - } - } - } - - // Topbar - .region-topbar { - } -} - -// Topbar variant -.layout-atlas-responsive-topbar { - .mx-scrollcontainer-slide, - .mx-scrollcontainer-push { - &:not(.mx-scrollcontainer-open) > .region-sidebar { - visibility: hidden; - } - } -} - -// All responsive layouts -.layout-atlas-responsive-default, -.layout-atlas-responsive-topbar { - // Topbar - .region-topbar { - .toggle-btn { - display: none; - - @media (max-width: $screen-sm-max) { - display: inline-block; - } - } - } - - .mx-scrollcontainer-slide { - &:not(.mx-scrollcontainer-open) > .region-sidebar { - overflow: hidden; - } - - &.mx-scrollcontainer-open > .region-sidebar { - - & > .mx-scrollcontainer-wrapper { - position: relative; - } - } - - .region-sidebar > .mx-scrollcontainer-wrapper { - z-index: 2; - background-color: inherit; - } - } -} - -// Fix Safari issue of sidebar disappearing -.profile-tablet { - .mx-scrollcontainer:not(.mx-scrollcontainer-open) > .region-sidebar { - overflow-y: hidden; - - .mx-scrollcontainer-wrapper { - overflow: visible; - } - } -} diff --git a/theme/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas-tablet.scss b/theme/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas-tablet.scss deleted file mode 100644 index dfa318e..0000000 --- a/theme/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas-tablet.scss +++ /dev/null @@ -1,8 +0,0 @@ -/* ========================================================================== - Atlas layout - - Extra styling for tablet layouts -========================================================================== */ -.layout-atlas-tablet { - // tablet -} diff --git a/theme/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas.scss b/theme/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas.scss deleted file mode 100644 index 150f73d..0000000 --- a/theme/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas.scss +++ /dev/null @@ -1,111 +0,0 @@ -/* ========================================================================== - Atlas layout - - The core stucture of all atlas layouts -========================================================================== */ -.layout-atlas { - // Toggle button - .toggle-btn > .glyphicon { - margin: 0; - } - - // Sidebar - .region-sidebar { - background-color: $navsidebar-bg; - - .mx-navigationtree .navbar-inner > ul > li > a { - padding: 0 15px; - - .glyphicon { - margin-right: 10px; - } - } - .toggle-btn { - border-color: transparent; - border-radius: 0; - background: transparent; - } - } - - // Topbar - .region-topbar { - position: relative; - z-index: 1; // Show dropshadow - min-height: $topbar-minimalheight; - border-bottom: 1px solid $navtopbar-border-color; - background-color: $navtopbar-bg; - box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14); - - &::before { - z-index: 1; - display: block; - width: 100%; - height: 4px; - content: ""; - background-color: $brand-primary; - } - // Topbar Content - .topbar-content { - display: flex; - align-items: center; - min-height: $topbar-minimalheight; - } - - // Toggle btn - .toggle-btn { - margin-right: 15px; - padding: 5px; - } - - // For your company, product, or project name - .navbar-brand { - display: inline-block; - // reset bootstrap - float: none; - height: auto; - padding: 0; - line-height: inherit; - - img { - display: inline-block; - @if $brand-logo !=false { - width: 0; - height: 0; - padding: ($brand-logo-height / 2) ($brand-logo-width / 2); - background-image: url($brand-logo); - background-repeat: no-repeat; - background-position: left center; - background-size: $brand-logo-width; - } @else { - width: auto; - height: $brand-logo-height; - } - } - - a { - margin-left: 5px; - color: $navbar-brand-name; - font-size: 20px; - - &:hover, - &:focus { - text-decoration: none; - } - } - } - - .mx-navbar { - display: inline-block; - margin-left: $gutter-size; - vertical-align: middle; - background: transparent; - - & > .mx-navbar-item { - & > a { - margin-top: 5px; - padding: 0 20px; - } - } - } - } -} diff --git a/theme/tsconfig.json b/theme/tsconfig.json deleted file mode 100644 index d4829e8..0000000 --- a/theme/tsconfig.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": "./", - "module": "es2015", - "target": "esnext", - "typeRoots": [ - "./node_modules/@types" - ], - "types": [ - "react-native", - "react-native-device-info" - ], - "paths": { - "react-native": [ - "./node_modules/@types/react-native" - ], - "react-native-device-info": [ - "./node_modules/react-native-device-info/lib/typescript" - ] - }, - "lib": [ - "es2017" - ], - "noEmitOnError": true, - "sourceMap": false, - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "removeComments": false, - "allowJs": true, - "checkJs": true, - "declaration": false, - "noLib": false, - "watch": false, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true, - "strict": true, - "strictFunctionTypes": false, - "skipLibCheck": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "moduleResolution": "node", - "outDir": "./styles/native/js", - "newLine": "CRLF" - }, - "include": [ - "./styles/native/**/*.ts" - ] -} diff --git a/theme/web/custom-variables.scss b/theme/web/custom-variables.scss new file mode 100644 index 0000000..04a84ce --- /dev/null +++ b/theme/web/custom-variables.scss @@ -0,0 +1,719 @@ +// +// ██████╗ █████╗ ███████╗██╗ ██████╗ +// ██╔══██╗██╔══██╗██╔════╝██║██╔════╝ +// ██████╔╝███████║███████╗██║██║ +// ██╔══██╗██╔══██║╚════██║██║██║ +// ██████╔╝██║ ██║███████║██║╚██████╗ +// ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝ +// + +//== Gray Shades +//## Different gray shades to be used for our variables and components +$gray-darker: #0a1325; +$gray-dark: #474e5c; +$gray: #787d87; +$gray-light: #a9acb3; +$gray-primary: #e7e7e9; +$gray-lighter: #f8f8f8; + +//== Step 1: Brand Colors +$brand-default: $gray-primary; +$brand-primary: #264ae5; +$brand-success: #3cb33d; +$brand-warning: #eca51c; +$brand-danger: #e33f4e; + +$brand-logo: false; +$brand-logo-height: 32px; +$brand-logo-width: 32px; // Only used for CSS brand logo + +//== Step 2: UI Customization + +// Default Font Size & Color +$font-size-default: 14px; +$font-color-default: #0a1325; + +// Global Border Color +$border-color-default: #ced0d3; +$border-radius-default: 4px; + +// Topbar +$topbar-bg: #020557; +$topbar-minimalheight: 48px; +$topbar-border-color: $border-color-default; + +// Sidebar +$sidebar-bg: #24276c; + +// Topbar mobile +$m-header-height: 45px; +$m-header-bg: $topbar-bg; +$m-header-color: #fff; +$m-header-title-size: 16px; + +// Navbar Brand Name / For your company, product, or project name (used in layouts/base/) +$navbar-brand-name: #fff; + +// Background Colors +// Backgrounds +$bg-color: #f8f8f8; +$bg-color-secondary: #fff; + +// Default Link Color +$link-color: $brand-primary; +$link-hover-color: darken($link-color, 15%); + +// +// █████╗ ██████╗ ██╗ ██╗ █████╗ ███╗ ██╗ ██████╗███████╗██████╗ +// ██╔══██╗██╔══██╗██║ ██║██╔══██╗████╗ ██║██╔════╝██╔════╝██╔══██╗ +// ███████║██║ ██║██║ ██║███████║██╔██╗ ██║██║ █████╗ ██║ ██║ +// ██╔══██║██║ ██║╚██╗ ██╔╝██╔══██║██║╚██╗██║██║ ██╔══╝ ██║ ██║ +// ██║ ██║██████╔╝ ╚████╔╝ ██║ ██║██║ ╚████║╚██████╗███████╗██████╔╝ +// ╚═╝ ╚═╝╚═════╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ +// + +//== Typography +//## Change your font family, weight, line-height, headings and more (used in components/typography) + +// Font Family Import (Used for google font plugin in theme creater) +$font-family-import: "resources/fonts/open-sans/open-sans.css"; + +// Font Family / False = fallback from Bootstrap (Helvetica Neue) +$font-family-base: "Open Sans", sans-serif; + +// Font Sizes +$font-size-large: 18px; +$font-size-small: 12px; + +// Font Weights +$font-weight-light: 100; +$font-weight-normal: normal; +$font-weight-semibold: 600; +$font-weight-bold: bold; + +// Font Size Headers +$font-size-h1: 31px; +$font-size-h2: 26px; +$font-size-h3: 24px; +$font-size-h4: 18px; +$font-size-h5: $font-size-default; +$font-size-h6: 12px; + +// Font Weight Headers +$font-weight-header: $font-weight-semibold; + +// Line Height +$line-height-base: 1.428571429; + +// Spacing +$font-header-margin: 0 0 8px 0; + +// Text Colors +$font-color-detail: #6c717e; +$font-color-header: #0a1325; + +//== Navigation +//## Used in components/navigation + +// Default Navigation styling +$navigation-item-height: unset; +$navigation-item-padding: 8px; + +$navigation-font-size: 14px; +$navigation-sub-font-size: $font-size-small; +$navigation-glyph-size: 20px; // For glyphicons that you can select in the Mendix Modeler + +$navigation-color: #fff; +$navigation-color-hover: #fff; +$navigation-color-active: #fff; + +$navigation-sub-color: #fff; +$navigation-sub-color-hover: #fff; +$navigation-sub-color-active: #fff; + +// Navigation Sidebar +$navsidebar-bg: $sidebar-bg; +$navsidebar-bg-hover: darken($navsidebar-bg, 10%); +$navsidebar-bg-active: darken($navsidebar-bg, 10%); + +$navsidebar-sub-bg: $navsidebar-bg-hover; +$navsidebar-sub-bg-hover: $navsidebar-bg; +$navsidebar-sub-bg-active: $navsidebar-bg; + +$navsidebar-border-color: $navsidebar-bg-hover; + +$navsidebar-font-size: $font-size-default; +$navsidebar-sub-font-size: $font-size-small; +$navsidebar-glyph-size: 20px; // For glyphicons that you can select in the Mendix Modeler + +$navsidebar-color: #fff; +$navsidebar-color-hover: #fff; +$navsidebar-color-active: #fff; + +$navsidebar-sub-color: #fff; +$navsidebar-sub-color-hover: #fff; +$navsidebar-sub-color-active: #fff; + +$navsidebar-width-closed: 52px; +$navsidebar-width-open: 232px; + +// Navigation topbar +$navtopbar-font-size: $font-size-default; +$navtopbar-sub-font-size: $font-size-small; +$navtopbar-glyph-size: 1.2em; // For glyphicons that you can select in the Mendix Modeler + +$navtopbar-bg: $topbar-bg; +$navtopbar-bg-hover: mix($topbar-bg, white, 85%); +$navtopbar-bg-active: mix($topbar-bg, white, 85%); +$navtopbar-color: #fff; +$navtopbar-color-hover: $navtopbar-color; +$navtopbar-color-active: $navtopbar-color; + +$navtopbar-sub-bg: $topbar-bg; +$navtopbar-sub-bg-hover: $navtopbar-bg-hover; +$navtopbar-sub-bg-active: $navtopbar-bg-hover; +$navtopbar-sub-color: #fff; +$navtopbar-sub-color-hover: #fff; +$navtopbar-sub-color-active: #fff; + +//## Used in layouts/base +$navtopbar-border-color: $topbar-border-color; + +//== Form +//## Used in components/inputs + +// Values that can be used default | lined +$form-input-style: default; + +// Form Label +$form-label-color: $font-color-default; +$form-label-size: $font-size-default; +$form-label-weight: $font-weight-semibold; +$form-label-gutter: 8px; + +// Form Input dimensions +$form-input-height: auto; +$form-input-padding-y: 8px; +$form-input-padding-x: 8px; +$form-input-static-padding-y: 8px; +$form-input-static-padding-x: 0; +$form-input-font-size: $form-label-size; +$form-input-line-height: $line-height-base; +$form-input-border-radius: $border-radius-default; + +// Form Input styling +$form-input-bg: #fff; +$form-input-bg-focus: #fff; +$form-input-bg-hover: $gray-primary; +$form-input-bg-disabled: $bg-color; +$form-input-color: $font-color-default; +$form-input-focus-color: $form-input-color; +$form-input-disabled-color: #9da1a8; +$form-input-placeholder-color: #6c717c; +$form-input-border-color: $gray-primary; +$form-input-border-focus-color: $brand-primary; + +// Form Input Static styling +$form-input-static-border-color: $gray-primary; + +// Form Group +$form-group-margin-bottom: 16px; +$form-group-gutter: 16px; + +//== Buttons +//## Define background-color, border-color and text. Used in components/buttons + +// Default button style +$btn-font-size: 14px; +$btn-bordered: false; // Default value false, set to true if you want this effect +$btn-border-radius: $border-radius-default; + +// Button Background Color +$btn-default-bg: #fff; +$btn-primary-bg: $brand-primary; +$btn-success-bg: $brand-success; +$btn-warning-bg: $brand-warning; +$btn-danger-bg: $brand-danger; + +// Button Border Color +$btn-default-border-color: $gray-primary; +$btn-primary-border-color: $brand-primary; +$btn-success-border-color: $brand-success; +$btn-warning-border-color: $brand-warning; +$btn-danger-border-color: $brand-danger; + +// Button Text Color +$btn-default-color: $brand-primary; +$btn-primary-color: #fff; +$btn-success-color: #fff; +$btn-warning-color: #fff; +$btn-danger-color: #fff; + +// Button Icon Color +$btn-default-icon-color: $gray; + +// Button Background Color +$btn-default-bg-hover: $btn-default-border-color; +$btn-primary-bg-hover: mix($btn-primary-bg, black, 80%); +$btn-success-bg-hover: mix($btn-success-bg, black, 80%); +$btn-warning-bg-hover: mix($btn-warning-bg, black, 80%); +$btn-danger-bg-hover: mix($btn-danger-bg, black, 80%); +$btn-link-bg-hover: $gray-lighter; + +//== Header blocks +//## Define look and feel over multible building blocks that serve as header + +$header-min-height: 240px; +$header-bg-color: $brand-primary; +$header-bgimage-filter: brightness(60%); +$header-text-color: #fff; +$header-text-color-detail: rgba(0, 0, 0, 0.2); + +// +// ███████╗██╗ ██╗██████╗ ███████╗██████╗ ████████╗ +// ██╔════╝╚██╗██╔╝██╔══██╗██╔════╝██╔══██╗╚══██╔══╝ +// █████╗ ╚███╔╝ ██████╔╝█████╗ ██████╔╝ ██║ +// ██╔══╝ ██╔██╗ ██╔═══╝ ██╔══╝ ██╔══██╗ ██║ +// ███████╗██╔╝ ██╗██║ ███████╗██║ ██║ ██║ +// ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ +// + +//== Color variations +//## These variations are used to support several other variables and components + +// Color variations +$color-default-darker: mix($brand-default, black, 60%); +$color-default-dark: mix($brand-default, black, 70%); +$color-default-light: mix($brand-default, white, 40%); +$color-default-lighter: mix($brand-default, white, 20%); + +$color-primary-darker: mix($brand-primary, black, 60%); +$color-primary-dark: mix($brand-primary, black, 70%); +$color-primary-light: mix($brand-primary, white, 40%); +$color-primary-lighter: mix($brand-primary, white, 20%); + +$color-success-darker: mix($brand-success, black, 60%); +$color-success-dark: mix($brand-success, black, 70%); +$color-success-light: mix($brand-success, white, 40%); +$color-success-lighter: mix($brand-success, white, 20%); + +$color-warning-darker: mix($brand-warning, black, 60%); +$color-warning-dark: mix($brand-warning, black, 70%); +$color-warning-light: mix($brand-warning, white, 40%); +$color-warning-lighter: mix($brand-warning, white, 20%); + +$color-danger-darker: mix($brand-danger, black, 60%); +$color-danger-dark: mix($brand-danger, black, 70%); +$color-danger-light: mix($brand-danger, white, 40%); +$color-danger-lighter: mix($brand-danger, white, 20%); + +$brand-gradient: linear-gradient(to right top, #264ae5, #2239c5, #1b29a6, #111988, #03096c); + +//== Grids +//## Used for Datagrid, Templategrid, Listview & Tables (see components folder) + +// Default Border Colors +$grid-border-color: $border-color-default; + +// Spacing +// Default +$grid-padding-top: 16px; +$grid-padding-right: 16px; +$grid-padding-bottom: 16px; +$grid-padding-left: 16px; + +// Listview +$listview-padding-top: 16px; +$listview-padding-right: 16px; +$listview-padding-bottom: 16px; +$listview-padding-left: 16px; + +// Background Colors +$grid-bg: transparent; +$grid-bg-header: transparent; // Grid Headers +$grid-bg-hover: mix($grid-border-color, #fff, 20%); +$grid-bg-selected: mix($grid-border-color, #fff, 30%); +$grid-bg-selected-hover: mix($grid-border-color, #fff, 50%); + +// Striped Background Color +$grid-bg-striped: mix($grid-border-color, #fff, 10%); + +// Background Footer Color +$grid-footer-bg: $gray-primary; + +// Text Color +$grid-selected-color: $font-color-default; + +// Paging Colors +$grid-paging-bg: transparent; +$grid-paging-bg-hover: transparent; +$grid-paging-border-color: transparent; +$grid-paging-border-color-hover: transparent; +$grid-paging-color: $gray-light; +$grid-paging-color-hover: $brand-primary; + +//== Tabs +//## Default variables for Tab Container Widget (used in components/tabcontainer) + +// Text Color +$tabs-color: $font-color-detail; +$tabs-color-active: $font-color-default; +$tabs-lined-color-active: $font-color-default; + +$tabs-lined-border-width: 3px; + +// Border Color +$tabs-border-color: $border-color-default; +$tabs-lined-border-color: $brand-primary; + +// Background Color +$tabs-bg: transparent; +$tabs-bg-pills: #e7e7e9; +$tabs-bg-hover: lighten($tabs-border-color, 5); +$tabs-bg-active: $brand-primary; + +//== Modals +//## Default Mendix Modal, Blocking Modal and Login Modal (used in components/modals) + +// Background Color +$modal-header-bg: transparent; + +// Border Color +$modal-header-border-color: $border-color-default; + +// Text Color +$modal-header-color: $font-color-default; + +//== Dataview +//## Default variables for Dataview Widget (used in components/dataview) + +// Controls +$dataview-controls-bg: transparent; +$dataview-controls-border-color: $border-color-default; + +// Empty Message +$dataview-emptymessage-bg: $bg-color; +$dataview-emptymessage-color: $font-color-default; + +//== Alerts +//## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts) + +// Background Color +$alert-success-bg: $color-success-lighter; +$alert-warning-bg: $color-warning-lighter; +$alert-danger-bg: $color-danger-lighter; + +// Text Color +$alert-success-color: $color-success-darker; +$alert-warning-color: $color-warning-darker; +$alert-danger-color: $color-danger-darker; + +// Border Color +$alert-success-border-color: $color-success-dark; +$alert-warning-border-color: $color-warning-dark; +$alert-danger-border-color: $color-danger-dark; + +//== Wizard + +$wizard-step-height: 48px; +$wizard-step-number-size: 64px; +$wizard-step-number-font-size: $font-size-h3; + +//Wizard step states +$wizard-default-bg: #fff; +$wizard-default-color: #fff; +$wizard-default-step-color: $font-color-default; +$wizard-default-border-color: $border-color-default; + +$wizard-active-bg: $color-primary-lighter; +$wizard-active-color: $color-primary-dark; +$wizard-active-step-color: $color-primary-dark; +$wizard-active-border-color: $color-primary-dark; + +$wizard-visited-bg: $color-success-lighter; +$wizard-visited-color: $color-success-dark; +$wizard-visited-step-color: $color-success-dark; +$wizard-visited-border-color: $color-success-dark; + +//== Labels +//## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels) + +// Background Color +$label-default-bg: $brand-default; +$label-primary-bg: $brand-primary; +$label-success-bg: $brand-success; +$label-warning-bg: $brand-warning; +$label-danger-bg: $brand-danger; + +// Border Color +$label-default-border-color: $brand-default; +$label-primary-border-color: $brand-primary; +$label-success-border-color: $brand-success; +$label-warning-border-color: $brand-warning; +$label-danger-border-color: $brand-danger; + +// Text Color +$label-default-color: $font-color-default; +$label-primary-color: #fff; +$label-success-color: #fff; +$label-warning-color: #fff; +$label-danger-color: #fff; + +//== Groupbox +//## Default variables for Groupbox Widget (used in components/groupbox) + +// Background Color +$groupbox-default-bg: $gray-primary; +$groupbox-primary-bg: $brand-primary; +$groupbox-success-bg: $brand-success; +$groupbox-warning-bg: $brand-warning; +$groupbox-danger-bg: $brand-danger; +$groupbox-white-bg: #fff; + +// Text Color +$groupbox-default-color: $font-color-default; +$groupbox-primary-color: #fff; +$groupbox-success-color: #fff; +$groupbox-warning-color: #fff; +$groupbox-danger-color: #fff; +$groupbox-white-color: $font-color-default; + +//== Callout (groupbox) Colors +//## Extended variables for Groupbox Widget (used in components/groupbox) + +// Text and Border Color +$callout-default-color: $font-color-default; +$callout-success-color: $brand-success; +$callout-warning-color: $brand-warning; +$callout-danger-color: $brand-danger; + +// Background Color +$callout-default-bg: $color-default-lighter; +$callout-success-bg: $color-success-lighter; +$callout-warning-bg: $color-warning-lighter; +$callout-danger-bg: $color-danger-lighter; + +//== Timeline +//## Extended variables for Timeline Widget +// Colors +$timeline-icon-color: $brand-primary; +$timeline-border-color: $border-color-default; +$timeline-event-time-color: $brand-primary; + +// Sizes +$timeline-icon-size: 18px; +$timeline-image-size: 36px; + +//Timeline grouping +$timeline-grouping-size: 120px; +$timeline-grouping-border-radius: 30px; +$timeline-grouping-border-color: $timeline-border-color; + +//== Accordions +//## Extended variables for Accordion Widget + +// Default +$accordion-header-default-bg: $bg-color-secondary; +$accordion-header-default-bg-hover: $bg-color; +$accordion-header-default-color: $font-color-header; +$accordion-default-border-color: $border-color-default; + +$accordion-bg-striped: $grid-bg-striped; +$accordion-bg-striped-hover: $grid-bg-selected; + +// Semantic background colors +$accordion-header-primary-bg: $btn-primary-bg; +$accordion-header-secondary-bg: $btn-default-bg; +$accordion-header-success-bg: $btn-success-bg; +$accordion-header-warning-bg: $btn-warning-bg; +$accordion-header-danger-bg: $btn-danger-bg; + +$accordion-header-primary-bg-hover: $btn-primary-bg-hover; +$accordion-header-secondary-bg-hover: $btn-default-bg-hover; +$accordion-header-success-bg-hover: $btn-success-bg-hover; +$accordion-header-warning-bg-hover: $btn-warning-bg-hover; +$accordion-header-danger-bg-hover: $btn-danger-bg-hover; + +// Semantic text colors +$accordion-header-primary-color: $btn-primary-color; +$accordion-header-secondary-color: $btn-default-color; +$accordion-header-success-color: $btn-success-color; +$accordion-header-warning-color: $btn-warning-color; +$accordion-header-danger-color: $btn-danger-color; + +// Semantic border colors +$accordion-primary-border-color: $btn-primary-border-color; +$accordion-secondary-border-color: $btn-default-border-color; +$accordion-success-border-color: $btn-success-border-color; +$accordion-warning-border-color: $btn-warning-border-color; +$accordion-danger-border-color: $btn-danger-border-color; + +//== Spacing +//## Advanced layout options (used in base/mixins/default-spacing) + +// Smallest spacing +$spacing-smallest: 2px; + +// Smaller spacing +$spacing-smaller: 4px; + +// Small spacing +$spacing-small: 8px; + +// Medium spacing +$spacing-medium: 16px; +$t-spacing-medium: 16px; +$m-spacing-medium: 16px; + +// Large spacing +$spacing-large: 24px; +$t-spacing-large: 24px; +$m-spacing-large: 16px; + +// Larger spacing +$spacing-larger: 32px; + +// Largest spacing +$spacing-largest: 48px; + +// Layout spacing +$layout-spacing-top: 24px; +$layout-spacing-right: 24px; +$layout-spacing-bottom: 24px; +$layout-spacing-left: 24px; + +$t-layout-spacing-top: 24px; +$t-layout-spacing-right: 24px; +$t-layout-spacing-bottom: 24px; +$t-layout-spacing-left: 24px; + +$m-layout-spacing-top: 16px; +$m-layout-spacing-right: 16px; +$m-layout-spacing-bottom: 16px; +$m-layout-spacing-left: 16px; + +// Combined layout spacing +$layout-spacing: $layout-spacing-top $layout-spacing-right $layout-spacing-bottom $layout-spacing-left; +$m-layout-spacing: $m-layout-spacing-top $m-layout-spacing-right $m-layout-spacing-bottom $m-layout-spacing-left; +$t-layout-spacing: $t-layout-spacing-top $t-layout-spacing-right $t-layout-spacing-bottom $t-layout-spacing-left; + +// Gutter size +$gutter-size: 8px; + +//== Tables +//## Table spacing options (used in components/tables) + +$padding-table-cell-top: 8px; +$padding-table-cell-bottom: 8px; +$padding-table-cell-left: 8px; +$padding-table-cell-right: 8px; + +//== Media queries breakpoints +//## Define the breakpoints at which your layout will change, adapting to different screen sizes. + +$screen-xs: 480px; +$screen-sm: 576px; +$screen-md: 768px; +$screen-lg: 992px; +$screen-xl: 1200px; + +// So media queries don't overlap when required, provide a maximum (used for max-width) +$screen-xs-max: calc(#{$screen-sm} - 1px); +$screen-sm-max: calc(#{$screen-md} - 1px); +$screen-md-max: calc(#{$screen-lg} - 1px); +$screen-lg-max: calc(#{$screen-xl} - 1px); + +//== Settings +//## Enable or disable your desired framework features +// Use of !important +$important-flex: true; // ./base/flex.scss +$important-spacing: true; // ./base/spacing.scss +$important-helpers: true; // ./helpers/helperclasses.scss + +//===== Legacy variables ===== + +//== Step 1: Brand Colors +$brand-inverse: #24276c; +$brand-info: #0086d9; + +//== Step 2: UI Customization + +//== Buttons +//## Define background-color, border-color and text. Used in components/buttons + +// Button Background Color +$btn-inverse-bg: $brand-inverse; +$btn-info-bg: $brand-info; + +// Button Border Color +$btn-inverse-border-color: $brand-inverse; +$btn-info-border-color: $brand-info; + +// Button Text Color +$btn-inverse-color: #fff; +$btn-info-color: #fff; + +// Button Background Color +$btn-inverse-bg-hover: mix($btn-inverse-bg, white, 80%); +$btn-info-bg-hover: mix($btn-info-bg, black, 80%); + +//== Color variations +//## These variations are used to support several other variables and components + +// Color variations +$color-inverse-darker: mix($brand-inverse, black, 60%); +$color-inverse-dark: mix($brand-inverse, black, 70%); +$color-inverse-light: mix($brand-inverse, white, 60%); +$color-inverse-lighter: mix($brand-inverse, white, 20%); + +$color-info-darker: mix($brand-info, black, 60%); +$color-info-dark: mix($brand-info, black, 70%); +$color-info-light: mix($brand-info, white, 60%); +$color-info-lighter: mix($brand-info, white, 20%); + +//== Alerts +//## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts) + +// Background Color +$alert-info-bg: $color-primary-lighter; + +// Text Color +$alert-info-color: $color-primary-darker; + +// Border Color +$alert-info-border-color: $color-primary-dark; + +//== Labels +//## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels) + +// Background Color +$label-info-bg: $brand-info; +$label-inverse-bg: $brand-inverse; + +// Border Color +$label-info-border-color: $brand-info; +$label-inverse-border-color: $brand-inverse; + +// Text Color +$label-info-color: #fff; +$label-inverse-color: #fff; + +//== Groupbox +//## Default variables for Groupbox Widget (used in components/groupbox) + +// Background Color +$groupbox-inverse-bg: $brand-inverse; +$groupbox-info-bg: $brand-info; + +// Text Color +$groupbox-inverse-color: #fff; +$groupbox-info-color: #fff; + +//== Callout (groupbox) Colors +//## Extended variables for Groupbox Widget (used in components/groupbox) + +// Text and Border Color +$callout-info-color: $brand-info; + +// Background Color +$callout-info-bg: $color-info-lighter; diff --git a/theme/web/exclusion-variables.scss b/theme/web/exclusion-variables.scss new file mode 100644 index 0000000..97e8207 --- /dev/null +++ b/theme/web/exclusion-variables.scss @@ -0,0 +1,80 @@ +//== Core style exclusion +$exclude-bootstrap: false; +$exclude-mxui: false; +$exclude-animations: false; +$exclude-flex: false; +$exclude-spacing: false; +$exclude-base: false; +$exclude-login: false; + +//== Widget style exclusion +$exclude-accordion: false; +$exclude-accordion-helpers: false; +$exclude-background-helpers: false; +$exclude-badge: false; +$exclude-badge-button: false; +$exclude-badge-button-helpers: false; +$exclude-barcode-scanner: false; +$exclude-button: false; +$exclude-button-helpers: false; +$exclude-check-box: false; +$exclude-custom-dijit-widget: false; +$exclude-custom-switch: false; +$exclude-data-grid: false; +$exclude-data-grid-helpers: false; +$exclude-data-view: false; +$exclude-data-picker: false; +$exclude-gallery: false; +$exclude-gallery-helpers: false; +$exclude-glyphicon: false; +$exclude-grid: false; +$exclude-group-box: false; +$exclude-group-box-helpers: false; +$exclude-header: false; +$exclude-helper-classes: false; +$exclude-input: false; +$exclude-image-helpers: false; +$exclude-label: false; +$exclude-label-helpers: false; +$exclude-layout-grid: false; +$exclude-list-view: false; +$exclude-list-view-helpers: false; +$exclude-modal: false; +$exclude-navigation-bar: false; +$exclude-navigation-bar-helpers: false; +$exclude-navigation-list: false; +$exclude-navigation-tree: false; +$exclude-navigation-tree-helpers: false; +$exclude-pagination: false; +$exclude-pop-up-menu: false; +$exclude-progress: false; +$exclude-progress-bar: false; +$exclude-progress-bar-helpers: false; +$exclude-progress-circle: false; +$exclude-progress-circle-helpers: false; +$exclude-radio-button: false; +$exclude-range-slider: false; +$exclude-range-slider-helpers: false; +$exclude-rating: false; +$exclude-rating-helpers: false; +$exclude-simple-menu-bar: false; +$exclude-simple-menu-bar-helpers: false; +$exclude-slider: false; +$exclude-slider-helpers: false; +$exclude-table: false; +$exclude-table-helpers: false; +$exclude-tab-container: false; +$exclude-tab-container-helpers: false; +$exclude-template-grid: false; +$exclude-template-grid-helpers: false; +$exclude-timeline: false; +$exclude-tree-node: false; +$exclude-tree-node-helpers: false; +$exclude-typography: false; +$exclude-typography-helpers: false; + +//== Layouts style exclusion +$exclude-layout-atlas: false; +$exclude-layout-atlas-phone: false; +$exclude-layout-atlas-responsive: false; +$exclude-layout-atlas-tablet: false; diff --git a/theme/web/login-with-mendixsso-automatically.html b/theme/web/login-with-mendixsso-automatically.html new file mode 100644 index 0000000..bdf4655 --- /dev/null +++ b/theme/web/login-with-mendixsso-automatically.html @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/theme/web/login-with-mendixsso-button.html b/theme/web/login-with-mendixsso-button.html new file mode 100644 index 0000000..a1b8c1c --- /dev/null +++ b/theme/web/login-with-mendixsso-button.html @@ -0,0 +1,88 @@ + + + + + Login + + + + {{themecss}} {{appicons}} {{manifest}} {{startupimages}} + + + +
    +
    +
    +
    +
    +
    +

    Sign in

    +
    +
    +
    +
    + +
    + + +
    +
    +
    + +
    + + +
    +
    + +
    + +
    +
    Or sign in with
    +
    +
    + + + + + + +
    +
    + +
    + + + + + + diff --git a/theme/web/login.html b/theme/web/login.html new file mode 100644 index 0000000..dc487c1 --- /dev/null +++ b/theme/web/login.html @@ -0,0 +1,78 @@ + + + + + Login + + + + {{themecss}} {{appicons}} {{manifest}} {{startupimages}} + + + +
    +
    +
    +
    +
    +
    +

    Sign in

    +
    +
    +
    +
    + +
    + + +
    +
    +
    + +
    + + +
    +
    + +
    + +
    +
    + +
    + + + + + + diff --git a/theme/logo.png b/theme/web/logo.png similarity index 100% rename from theme/logo.png rename to theme/web/logo.png diff --git a/theme/styles/web/sass/app/_custom.scss b/theme/web/main.scss similarity index 100% rename from theme/styles/web/sass/app/_custom.scss rename to theme/web/main.scss diff --git a/theme/manifest-overrides.webmanifest b/theme/web/manifest-overrides.webmanifest similarity index 100% rename from theme/manifest-overrides.webmanifest rename to theme/web/manifest-overrides.webmanifest diff --git a/theme/robots.txt b/theme/web/robots.txt similarity index 100% rename from theme/robots.txt rename to theme/web/robots.txt diff --git a/theme/web/settings.json b/theme/web/settings.json new file mode 100644 index 0000000..9dbd93b --- /dev/null +++ b/theme/web/settings.json @@ -0,0 +1,3 @@ +{ + "cssFiles": ["theme.compiled.css"] +} diff --git a/theme_old/.prettierrc b/theme_old/.prettierrc deleted file mode 100644 index a46f75f..0000000 --- a/theme_old/.prettierrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "singleQuote": false, - "printWidth": 120, - "proseWrap": "always", - "tabWidth": 4, - "useTabs": false, - "trailingComma": "all", - "bracketSpacing": true, - "semi": true, - "arrowParens": "avoid" -} diff --git a/theme_old/.stylelintrc b/theme_old/.stylelintrc deleted file mode 100644 index 62c30a6..0000000 --- a/theme_old/.stylelintrc +++ /dev/null @@ -1,32 +0,0 @@ -{ - "extends": "stylelint-config-standard", - "rules": { - "indentation": 4, - "string-quotes": "double", - "no-duplicate-selectors": true, - "color-hex-case": "upper", - "color-hex-length": "short", - "selector-combinator-space-after": "always", - "selector-attribute-operator-space-before": "always", - "selector-attribute-operator-space-after": "always", - "selector-attribute-brackets-space-inside": "always", - "declaration-block-trailing-semicolon": "always", - "declaration-colon-space-before": "never", - "declaration-colon-space-after": "always", - "number-leading-zero": "never", - "function-url-quotes": "always", - "font-family-name-quotes": "always-unless-keyword", - "comment-whitespace-inside": "always", - "comment-empty-line-before": "always", - "rule-empty-line-before": "always-multi-line", - "selector-pseudo-element-colon-notation": "single", - "media-feature-range-operator-space-after": "always", - "media-feature-colon-space-after": "always", - "no-descending-specificity": null, - "declaration-colon-newline-after": null, - "value-list-comma-newline-after": null, - "at-rule-no-unknown": [true, { - "ignoreAtRules": ["function", "if", "each", "include", "mixin"] - }] - } -} diff --git a/theme_old/LICENSE b/theme_old/LICENSE deleted file mode 100644 index 476061e..0000000 --- a/theme_old/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 Mendix - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/theme_old/README.md b/theme_old/README.md deleted file mode 100644 index 91312ab..0000000 --- a/theme_old/README.md +++ /dev/null @@ -1,96 +0,0 @@ -# For Atlas 3 UI go [here](https://github.com/mendix/widgets-resources/tree/master/packages/theming/atlas) - -We are always improving our code base with new technologies. Thus we moved our new atlas 3 theme package to our [monorepo](https://github.com/mendix/widgets-resources) - -## Mendix Atlas 2 UI - -Mendix Atlas UI is the foundation of making beautiful apps with Mendix. For more information about the framework go to -[here](https://atlas.mendix.com/). - -### Useful tools -- [Compile SCSS to CSS with Calypso](https://docs.mendix.com/howto/front-end/calypso) -- [Visually update the design properties for web and native](https://jeltemx.github.io/mendix-dpt/) -- [Inspect and update styles in the Make it Native app with the React Native Debugger](https://docs.mendix.com/howto/mobile/native-debug) - -#### Structure - -Mendix is capable of creating beautiful and user-friendly UI. Our Atlas UI framework demonstrates some of its -possibilities. Here you will find a basic overview of our framework. - -``` -theme/ -├── styles/ -| ├── native/ -| | ├── ts/ // Will not be in the Atlas UI Resources module -| | ├── js/ -| | ├── app/ -| | | ├── _custom-variables.js -| | | └── _custom.js -| | ├── core/ -| |     |   ├── base/ -| |     |   ├── helpers/ -| | | ├── widgets/ -| |    |  | _variables.js -| |    |  └── manifest.json -| | ├── ui_resources/ -| |     |   └── atlas_ui_resources/ -| |     |   ├── buildingblocks/ -| |     |   └── layouts/ -| | └── main.js -| └── web/ -| ├── css/ -| │ ├── * all output files -| └── sass/ -| ├── app/ -| | ├── _custom-variables.scss -| | └── _custom.scss -| ├── core/ -|       |   ├── _legacy/ -|       |   ├── base/ -|       |   ├── helpers/ -| | ├── widgets/ -| | ├── widgetscustom/ -|      |   | _variables.scss -|      |  └── manifest.json -| ├── ui_resources/ -|       |   └── atlas_ui_resources/ -|       |   ├── buildingblocks/ -|       |   └── layouts/ -| └── main.scss -├── * index files -├── * assets -├── * settings*.json (Design Properties) -└── styles.js -``` - -#### App - -The app folder contains all custom styling. We recommend users to only use this directory for any custom styling. - -When you want to customize something, you should first check if you can accomplish your goal by changing variables. -These variables can be found in _styles/web/sass/core/variables.scss_ or _styles/native/core/variables.js_. If you want -to change any core variable, copy it to _../app/\_custom-variables.(scss|js)_ and change it there. It will then -overwrite the core variable. This will make updating Atlas UI much easier in the future. - -#### Core - -The core folder is the heart of Atlas UI. This folder includes base styling, widget styling & additional helper classes. -The core widget styling is split in to two parts. The widget folder includes the default widget styling, as it will look -out of the box. The helpers folder will include design properties and extra classes to change that default styling. - -#### UI Resources - -THe UI Resources folder will contain any styling related to Building Blocks, Page Templates and Layouts. - -Building blocks are created with Widgets. For example _cards_ or _headers_ are building blocks. A building block could -be an image, a title, and a button, assembled together into one UI block. - -Page Templates are created with Building Blocks and Widgets. Page Templates are an example of how a page could look -like. - -Layouts are created with widgets. They are mainly used for navigation or user experiences which need to be consistent -between pages. - -## License - -MIT diff --git a/theme_old/com.mendix.charts.json b/theme_old/com.mendix.charts.json deleted file mode 100644 index 0967ef4..0000000 --- a/theme_old/com.mendix.charts.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/theme_old/components.json b/theme_old/components.json deleted file mode 100644 index df42ffa..0000000 --- a/theme_old/components.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "files": { - "css": ["styles/web/css/main.css"], - "js": ["mxclientsystem/mxui/mxui.js"] - }, - "cachebust": "{{cachebust}}" -} diff --git a/theme_old/index-rtl.html b/theme_old/index-rtl.html deleted file mode 100644 index fa89bca..0000000 --- a/theme_old/index-rtl.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - Mendix - - - - {{themecss}} - {{appicons}} - {{manifest}} - {{startupimages}} - - - -
    - - - - diff --git a/theme_old/index.html b/theme_old/index.html deleted file mode 100644 index ce29e6b..0000000 --- a/theme_old/index.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - Mendix - - - - {{themecss}} - {{appicons}} - {{manifest}} - {{startupimages}} - - - - -
    - - - - - diff --git a/theme_old/login-with-sso.html b/theme_old/login-with-sso.html deleted file mode 100644 index 46c961c..0000000 --- a/theme_old/login-with-sso.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - Login - - - - {{themecss}} - {{appicons}} - {{manifest}} - {{startupimages}} - - - - -
    -
    -
    -
    -
    -
    -

    Sign in

    -
    -
    -
    -
    - -
    - - -
    -
    -
    - -
    - - -
    -
    - -
    - -
    -
    Or sign in with
    -
    -
    - - - - - - -
    -
    - -
    - - - - - - diff --git a/theme_old/login.html b/theme_old/login.html deleted file mode 100644 index aed07bc..0000000 --- a/theme_old/login.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Login - - - - {{themecss}} - {{appicons}} - {{manifest}} - {{startupimages}} - - - - -
    -
    -
    -
    -
    -
    -

    Sign in

    -
    -
    -
    -
    - -
    - - -
    -
    -
    - -
    - - -
    -
    - -
    - -
    -
    - -
    - - - - - - diff --git a/theme_old/logo.png b/theme_old/logo.png deleted file mode 100644 index e49703b..0000000 Binary files a/theme_old/logo.png and /dev/null differ diff --git a/theme_old/manifest-overrides.webmanifest b/theme_old/manifest-overrides.webmanifest deleted file mode 100644 index 10161cd..0000000 --- a/theme_old/manifest-overrides.webmanifest +++ /dev/null @@ -1,3 +0,0 @@ -{ - "background_color": "#FFFFFF" -} diff --git a/theme_old/package.json b/theme_old/package.json deleted file mode 100644 index 15b8b35..0000000 --- a/theme_old/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "atlas-ui-framework", - "version": "2.6.3", - "description": "Mendix Atlas UI is the foundation of making beautiful apps with Mendix. For more information about the framework go to https://atlas.mendix.com.", - "main": "", - "scripts": { - "bump:patch": "node ./scripts/bump-patch.js", - "bump:minor": "node ./scripts/bump-minor.js", - "bump:major": "node ./scripts/bump-major.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/mendix/Atlas-UI-Framework.git" - }, - "author": "Mendix", - "license": "MIT", - "bugs": { - "url": "https://github.com/mendix/Atlas-UI-Framework/issues" - }, - "homepage": "https://github.com/mendix/Atlas-UI-Framework#readme", - "devDependencies": { - "@types/react-native": "^0.61.19", - "react-native-device-info": "^5.5.3" - }, - "dependencies": {} -} diff --git a/theme_old/resources/work-do-more.jpeg b/theme_old/resources/work-do-more.jpeg deleted file mode 100644 index 5aa1de2..0000000 Binary files a/theme_old/resources/work-do-more.jpeg and /dev/null differ diff --git a/theme_old/robots.txt b/theme_old/robots.txt deleted file mode 100644 index 46169db..0000000 --- a/theme_old/robots.txt +++ /dev/null @@ -1,4 +0,0 @@ -# For more information, see https://support.google.com/webmasters/answer/6062608?hl=en&ref_topic=6061961 - -User-agent: * -Disallow: diff --git a/theme_old/scripts/bump-major.js b/theme_old/scripts/bump-major.js deleted file mode 100644 index 2bb584e..0000000 --- a/theme_old/scripts/bump-major.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getVersionFilePaths, readVersionFiles } = require("./lib/readFile.js"); -const { writeVersionFiles } = require("./lib/writeFile.js"); - -(() => { - const paths = getVersionFilePaths(); - const files = readVersionFiles(paths); - const versionNumbers = files.pkg.version.split("."); - const majorNumber = Number(versionNumbers[1]) + 1; - const majorVersion = majorNumber + "." + 0 + "." + 0; - files.pkg.version = files.manifest.ts.version = files.manifest.js.version = files.manifest.sass.version = majorVersion; - writeVersionFiles(files, paths); -})(); diff --git a/theme_old/scripts/bump-minor.js b/theme_old/scripts/bump-minor.js deleted file mode 100644 index e4e9ac3..0000000 --- a/theme_old/scripts/bump-minor.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getVersionFilePaths, readVersionFiles } = require("./lib/readFile.js"); -const { writeVersionFiles } = require("./lib/writeFile.js"); - -(() => { - const paths = getVersionFilePaths(); - const files = readVersionFiles(paths); - const versionNumbers = files.pkg.version.split("."); - const minorNumber = Number(versionNumbers[1]) + 1; - const minorVersion = versionNumbers[0] + "." + minorNumber + "." + 0; - files.pkg.version = files.manifest.ts.version = files.manifest.js.version = files.manifest.sass.version = minorVersion; - writeVersionFiles(files, paths); -})(); diff --git a/theme_old/scripts/bump-patch.js b/theme_old/scripts/bump-patch.js deleted file mode 100644 index 52e7baa..0000000 --- a/theme_old/scripts/bump-patch.js +++ /dev/null @@ -1,12 +0,0 @@ -const { getVersionFilePaths, readVersionFiles } = require("./lib/readFile.js"); -const { writeVersionFiles } = require("./lib/writeFile.js"); - -(() => { - const paths = getVersionFilePaths(); - const files = readVersionFiles(paths); - const versionNumbers = files.pkg.version.split("."); - const patchedNumber = Number(versionNumbers[2]) + 1; - const patchedVersion = versionNumbers[0] + "." + versionNumbers[1] + "." + patchedNumber; - files.pkg.version = files.manifest.ts.version = files.manifest.js.version = files.manifest.sass.version = patchedVersion; - writeVersionFiles(files, paths); -})(); diff --git a/theme_old/scripts/lib/readFile.js b/theme_old/scripts/lib/readFile.js deleted file mode 100644 index 50f0a8c..0000000 --- a/theme_old/scripts/lib/readFile.js +++ /dev/null @@ -1,20 +0,0 @@ -const path = require("path"); - -module.exports.getVersionFilePaths = () => ({ - pkg: path.join(process.cwd(), "package.json"), - manifest: { - ts: path.join(process.cwd(), "styles", "native", "ts", "core", "manifest.json"), - js: path.join(process.cwd(), "styles", "native", "js", "core", "manifest.json"), - sass: path.join(process.cwd(), "styles", "web", "sass", "core", "manifest.json"), - }, -}); - -module.exports.readVersionFiles = paths => ({ - pkg: require(paths.pkg), - manifest: { - ts: require(paths.manifest.ts), - js: require(paths.manifest.js), - sass: require(paths.manifest.sass), - }, -}); - diff --git a/theme_old/scripts/lib/writeFile.js b/theme_old/scripts/lib/writeFile.js deleted file mode 100644 index fb35779..0000000 --- a/theme_old/scripts/lib/writeFile.js +++ /dev/null @@ -1,8 +0,0 @@ -const fs = require("fs"); - -module.exports.writeVersionFiles = (files, paths) => { - fs.writeFileSync(paths.pkg, JSON.stringify(files.pkg, null, 4)); - fs.writeFileSync(paths.manifest.js, JSON.stringify(files.manifest.js, null, 4)); - fs.writeFileSync(paths.manifest.ts, JSON.stringify(files.manifest.ts, null, 4)); - fs.writeFileSync(paths.manifest.sass, JSON.stringify(files.manifest.sass, null, 4)); -}; diff --git a/theme_old/settings-native.json b/theme_old/settings-native.json deleted file mode 100644 index d31c9b1..0000000 --- a/theme_old/settings-native.json +++ /dev/null @@ -1,1764 +0,0 @@ -{ - "designProperties": { - "Document": [ - { - "name": "Spacing top", - "type": "Dropdown", - "description": "The spacing above this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerTopSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerTopMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerTopLarger" - } - ] - }, - { - "name": "Spacing bottom", - "type": "Dropdown", - "description": "The spacing below this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerBottomSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerBottomMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerBottomLarger" - } - ] - }, - { - "name": "Spacing left", - "type": "Dropdown", - "description": "The spacing to the left of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerLeftSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerLeftMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerLeftLarger" - } - ] - }, - { - "name": "Spacing right", - "type": "Dropdown", - "description": "The spacing to the right of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerRightSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerRightMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerRightLarger" - } - ] - }, - { - "name": "Background color", - "type": "Dropdown", - "description": "Change the background color of the container.", - "options": [ - { - "name": "Primary", - "class": "backgroundPrimary" - }, - { - "name": "Secondary", - "class": "backgroundSecondary" - }, - { - "name": "Brand Primary", - "class": "backgroundBrandPrimary" - }, - { - "name": "Brand Success", - "class": "backgroundBrandSuccess" - }, - { - "name": "Brand Warning", - "class": "backgroundBrandWarning" - }, - { - "name": "Brand Danger", - "class": "backgroundBrandDanger" - } - ] - }, - { - "name": "Render children horizontal", - "type": "Toggle", - "description": "Determines the direction in which children are rendered.", - "class": "flexRow" - }, - { - "name": "Wrap children", - "type": "Toggle", - "description": "Determines if children can flow into multiple lines if they hit the end of the container.", - "class": "flexWrap" - }, - { - "name": "Align children", - "type": "Dropdown", - "description": "Align children in the opposite direction.", - "options": [ - { - "name": "Start", - "class": "alignChildrenStart" - }, - { - "name": "Center", - "class": "alignChildrenCenter" - }, - { - "name": "End", - "class": "alignChildrenEnd" - }, - { - "name": "Stretch", - "class": "alignChildrenStretch" - }, - { - "name": "Baseline", - "class": "alignChildrenBaseline" - } - ] - }, - { - "name": "Justify content", - "type": "Dropdown", - "description": "Justify content in the active direction.", - "options": [ - { - "name": "Start", - "class": "justifyContentStart" - }, - { - "name": "Center", - "class": "justifyContentCenter" - }, - { - "name": "End", - "class": "justifyContentEnd" - }, - { - "name": "Space between", - "class": "justifyContentSpaceBetween" - }, - { - "name": "Space around", - "class": "justifyContentSpaceAround" - }, - { - "name": "Space evenly", - "class": "justifyContentSpaceEvenly" - } - ] - } - ], - "Page": [ - { - "name": "Hide header bottom border", - "type": "Toggle", - "description": "Hide the bottom border (iOS) and elevation (Android) of the header.", - "class": "pageHeaderBorderNone" - } - ], - "Widget": [ - { - "name": "Spacing top", - "type": "Dropdown", - "description": "The spacing above this element.", - "options": [ - { - "name": "Smallest", - "class": "spacingOuterTopSmallest" - }, - { - "name": "Small", - "class": "spacingOuterTopSmaller" - }, - { - "name": "Medium", - "class": "spacingOuterTopMedium" - }, - { - "name": "Large", - "class": "spacingOuterTopLarger" - }, - { - "name": "Largest", - "class": "spacingOuterTopLargest" - } - ] - }, - { - "name": "Spacing bottom", - "type": "Dropdown", - "description": "The spacing below this element.", - "options": [ - { - "name": "Smallest", - "class": "spacingOuterBottomSmallest" - }, - { - "name": "Small", - "class": "spacingOuterBottomSmaller" - }, - { - "name": "Medium", - "class": "spacingOuterBottomMedium" - }, - { - "name": "Large", - "class": "spacingOuterBottomLarger" - }, - { - "name": "Largest", - "class": "spacingOuterBottomLargest" - } - ] - }, - { - "name": "Spacing left", - "type": "Dropdown", - "description": "The spacing to the left of this element.", - "options": [ - { - "name": "Smallest", - "class": "spacingOuterLeftSmallest" - }, - { - "name": "Small", - "class": "spacingOuterLeftSmaller" - }, - { - "name": "Medium", - "class": "spacingOuterLeftMedium" - }, - { - "name": "Large", - "class": "spacingOuterLeftLarger" - }, - { - "name": "Largest", - "class": "spacingOuterLeftLargest" - } - ] - }, - { - "name": "Spacing right", - "type": "Dropdown", - "description": "The spacing to the right of this element.", - "options": [ - { - "name": "Smallest", - "class": "spacingOuterRightSmallest" - }, - { - "name": "Small", - "class": "spacingOuterRightSmaller" - }, - { - "name": "Medium", - "class": "spacingOuterRightMedium" - }, - { - "name": "Large", - "class": "spacingOuterRightLarger" - }, - { - "name": "Largest", - "class": "spacingOuterRightLargest" - } - ] - } - ], - "DivContainer": [ - { - "name": "Spacing top", - "type": "Dropdown", - "description": "The spacing above this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerTopSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerTopMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerTopLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterTopSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterTopMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterTopLarger" - } - ] - }, - { - "name": "Spacing bottom", - "type": "Dropdown", - "description": "The spacing below this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerBottomSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerBottomMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerBottomLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterBottomSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterBottomMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterBottomLarger" - } - ] - }, - { - "name": "Spacing left", - "type": "Dropdown", - "description": "The spacing to the left of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerLeftSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerLeftMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerLeftLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterLeftSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterLeftMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterLeftLarger" - } - ] - }, - { - "name": "Spacing right", - "type": "Dropdown", - "description": "The spacing to the right of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerRightSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerRightMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerRightLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterRightSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterRightMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterRightLarger" - } - ] - }, - { - "name": "Size", - "type": "Dropdown", - "description": "Change the size of the widget relative to its sibling(s).", - "options": [ - { - "name": "Maximum space", - "class": "flexMain" - }, - { - "name": "Minimum space", - "class": "flexItem" - } - ] - }, - { - "name": "Background color", - "type": "Dropdown", - "description": "Change the background color of the container.", - "options": [ - { - "name": "Primary", - "class": "backgroundPrimary" - }, - { - "name": "Secondary", - "class": "backgroundSecondary" - }, - { - "name": "Brand Primary", - "class": "backgroundBrandPrimary" - }, - { - "name": "Brand Success", - "class": "backgroundBrandSuccess" - }, - { - "name": "Brand Warning", - "class": "backgroundBrandWarning" - }, - { - "name": "Brand Danger", - "class": "backgroundBrandDanger" - } - ] - }, - { - "name": "Align", - "type": "Dropdown", - "description": "Aligns the element. This overrides 'Align children' of the parent.", - "options": [ - { - "name": "Start", - "class": "alignSelfStart" - }, - { - "name": "Center", - "class": "alignSelfCenter" - }, - { - "name": "End", - "class": "alignSelfEnd" - }, - { - "name": "Stretch", - "class": "alignSelfStretch" - }, - { - "name": "Baseline", - "class": "alignSelfBaseline" - } - ] - }, - { - "name": "Render children horizontal", - "type": "Toggle", - "description": "Determines the direction in which children are rendered.", - "class": "flexRow" - }, - { - "name": "Wrap children", - "type": "Toggle", - "description": "Determines if children can flow into multiple lines if they hit the end of the container.", - "class": "flexWrap" - }, - { - "name": "Align children", - "type": "Dropdown", - "description": "Align children in the opposite direction.", - "options": [ - { - "name": "Start", - "class": "alignChildrenStart" - }, - { - "name": "Center", - "class": "alignChildrenCenter" - }, - { - "name": "End", - "class": "alignChildrenEnd" - }, - { - "name": "Stretch", - "class": "alignChildrenStretch" - }, - { - "name": "Baseline", - "class": "alignChildrenBaseline" - } - ] - }, - { - "name": "Justify content", - "type": "Dropdown", - "description": "Justify content in the active direction.", - "options": [ - { - "name": "Start", - "class": "justifyContentStart" - }, - { - "name": "Center", - "class": "justifyContentCenter" - }, - { - "name": "End", - "class": "justifyContentEnd" - }, - { - "name": "Space between", - "class": "justifyContentSpaceBetween" - }, - { - "name": "Space around", - "class": "justifyContentSpaceAround" - }, - { - "name": "Space evenly", - "class": "justifyContentSpaceEvenly" - } - ] - } - ], - "ScrollContainer": [ - { - "name": "Spacing top", - "type": "Dropdown", - "description": "The spacing above this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerTopSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerTopMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerTopLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterTopSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterTopMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterTopLarger" - } - ] - }, - { - "name": "Spacing bottom", - "type": "Dropdown", - "description": "The spacing below this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerBottomSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerBottomMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerBottomLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterBottomSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterBottomMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterBottomLarger" - } - ] - }, - { - "name": "Spacing left", - "type": "Dropdown", - "description": "The spacing to the left of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerLeftSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerLeftMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerLeftLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterLeftSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterLeftMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterLeftLarger" - } - ] - }, - { - "name": "Spacing right", - "type": "Dropdown", - "description": "The spacing to the right of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerRightSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerRightMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerRightLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterRightSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterRightMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterRightLarger" - } - ] - }, - { - "name": "Size", - "type": "Dropdown", - "description": "Change the size of the widget relative to its sibling(s).", - "options": [ - { - "name": "Maximum space", - "class": "flexMain" - }, - { - "name": "Minimum space", - "class": "flexItem" - } - ] - }, - { - "name": "Background color", - "type": "Dropdown", - "description": "Change the background color of the container.", - "options": [ - { - "name": "Primary", - "class": "backgroundPrimary" - }, - { - "name": "Secondary", - "class": "backgroundSecondary" - }, - { - "name": "Brand Primary", - "class": "backgroundBrandPrimary" - }, - { - "name": "Brand Success", - "class": "backgroundBrandSuccess" - }, - { - "name": "Brand Warning", - "class": "backgroundBrandWarning" - }, - { - "name": "Brand Danger", - "class": "backgroundBrandDanger" - } - ] - }, - { - "name": "Align", - "type": "Dropdown", - "description": "Aligns the element. This overrides 'Align children' of the parent.", - "options": [ - { - "name": "Start", - "class": "alignSelfStart" - }, - { - "name": "Center", - "class": "alignSelfCenter" - }, - { - "name": "End", - "class": "alignSelfEnd" - }, - { - "name": "Stretch", - "class": "alignSelfStretch" - }, - { - "name": "Baseline", - "class": "alignSelfBaseline" - } - ] - }, - { - "name": "Render children horizontal", - "type": "Toggle", - "description": "Determines the direction in which children are rendered.", - "class": "flexRow" - }, - { - "name": "Wrap children", - "type": "Toggle", - "description": "Determines if children can flow into multiple lines if they hit the end of the container.", - "class": "flexWrap" - }, - { - "name": "Align children", - "type": "Dropdown", - "description": "Align children in the opposite direction.", - "options": [ - { - "name": "Start", - "class": "alignChildrenStart" - }, - { - "name": "Center", - "class": "alignChildrenCenter" - }, - { - "name": "End", - "class": "alignChildrenEnd" - }, - { - "name": "Stretch", - "class": "alignChildrenStretch" - }, - { - "name": "Baseline", - "class": "alignChildrenBaseline" - } - ] - }, - { - "name": "Justify content", - "type": "Dropdown", - "description": "Justify content in the active direction.", - "options": [ - { - "name": "Start", - "class": "justifyContentStart" - }, - { - "name": "Center", - "class": "justifyContentCenter" - }, - { - "name": "End", - "class": "justifyContentEnd" - }, - { - "name": "Space between", - "class": "justifyContentSpaceBetween" - }, - { - "name": "Space around", - "class": "justifyContentSpaceAround" - } - ] - } - ], - "ActionButton": [ - { - "name": "Button style", - "type": "Dropdown", - "description": "Style of the button", - "options": [ - { - "name": "Secondary", - "class": "btnSecondary" - }, - { - "name": "Success", - "class": "btnSuccess" - }, - { - "name": "Warning", - "class": "btnWarning" - }, - { - "name": "Danger", - "class": "btnDanger" - }, - { - "name": "Inversed", - "class": "btnPrimaryInversed" - } - ] - }, - { - "name": "Align", - "type": "Dropdown", - "description": "Aligns the element. This overrides 'Align children' of the parent.", - "options": [ - { - "name": "Start", - "class": "alignSelfStart" - }, - { - "name": "Center", - "class": "alignSelfCenter" - }, - { - "name": "End", - "class": "alignSelfEnd" - }, - { - "name": "Stretch", - "class": "alignSelfStretch" - }, - { - "name": "Baseline", - "class": "alignSelfBaseline" - } - ] - } - ], - "Image": [ - { - "name": "Avatar", - "type": "Toggle", - "description": "Create an avatar image.", - "class": "avatar" - } - ], - "DynamicImage": [ - { - "name": "Avatar", - "type": "Toggle", - "description": "Create an avatar image.", - "class": "avatar" - } - ], - "DynamicText": [ - { - "name": "Color", - "type": "Dropdown", - "description": "Change the color of text.", - "options": [ - { - "name": "Brand primary", - "class": "textPrimary" - }, - { - "name": "Brand success", - "class": "textSuccess" - }, - { - "name": "Brand warning", - "class": "textWarning" - }, - { - "name": "Brand danger", - "class": "textDanger" - }, - { - "name": "White", - "class": "textWhite" - }, - { - "name": "Contrast lowest", - "class": "textContrastLowest" - }, - { - "name": "Contrast lower", - "class": "textContrastLower" - }, - { - "name": "Contrast low", - "class": "textContrastLow" - }, - { - "name": "Contrast default", - "class": "textContrastDefault" - }, - { - "name": "Contrast high", - "class": "textContrastHigh" - }, - { - "name": "Contrast higher", - "class": "textContrastHigher" - }, - { - "name": "Contrast highest", - "class": "textContrastHighest" - } - ] - }, - { - "name": "Size", - "type": "Dropdown", - "description": "Make the text smaller or larger.", - "options": [ - { - "name": "Small", - "class": "textSmall" - }, - { - "name": "Large", - "class": "textLarge" - } - ] - }, - { - "name": "Weight", - "type": "Dropdown", - "description": "Emphasize the text with a heavier or lighter font weight", - "options": [ - { - "name": "Light", - "class": "textLight" - }, - { - "name": "Default", - "class": "textNormal" - }, - { - "name": "Semibold", - "class": "textSemiBold" - }, - { - "name": "Bold", - "class": "textBold" - } - ] - }, - { - "name": "Alignment", - "type": "Dropdown", - "description": "Align the text.", - "options": [ - { - "name": "Left", - "class": "textLeft" - }, - { - "name": "Center", - "class": "textCenter" - }, - { - "name": "Right", - "class": "textRight" - } - ] - } - ], - "ListView": [ - { - "name": "List item divider", - "type": "Dropdown", - "description": "Give each list item a border.", - "options": [ - { - "name": "Vertical", - "class": "listItemBorderBottom" - }, - { - "name": "Horizontal", - "class": "listItemBorderRight" - } - ] - } - ], - "TabContainer": [ - { - "name": "Tab bar scroll", - "type": "Toggle", - "description": "Enable horizontal scroll for the tab bar.", - "class": "tabContainerScroll" - } - ], - "TextBox": [ - { - "name": "Capitalize", - "type": "Dropdown", - "description": "Change the capitalization of the input.", - "options": [ - { - "name": "None", - "class": "textInputCapitalizeNone" - }, - { - "name": "Characters", - "class": "textInputCapitalizeCharacters" - }, - { - "name": "Words", - "class": "textInputCapitalizeWords" - }, - { - "name": "Sentences", - "class": "textInputCapitalizeSentences" - } - ] - } - ], - "TextArea": [ - { - "name": "Capitalize", - "type": "Dropdown", - "description": "Change the capitalization of the input.", - "options": [ - { - "name": "None", - "class": "textInputCapitalizeNone" - }, - { - "name": "Characters", - "class": "textInputCapitalizeCharacters" - }, - { - "name": "Words", - "class": "textInputCapitalizeWords" - }, - { - "name": "Sentences", - "class": "textInputCapitalizeSentences" - } - ] - } - ], - "com.mendix.widget.native.activityindicator.ActivityIndicator": [ - { - "name": "Activity indicator style", - "type": "Dropdown", - "description": "Style of the Activity indicator.", - "options": [ - { - "name": "Success", - "class": "activityIndicatorSuccess" - }, - { - "name": "Warning", - "class": "activityIndicatorWarning" - }, - { - "name": "Danger", - "class": "activityIndicatorDanger" - } - ] - } - ], - "com.mendix.widget.native.animation.Animation": [ - { - "name": "Spacing top", - "type": "Dropdown", - "description": "The spacing above this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerTopSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerTopMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerTopLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterTopSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterTopMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterTopLarger" - } - ] - }, - { - "name": "Spacing bottom", - "type": "Dropdown", - "description": "The spacing below this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerBottomSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerBottomMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerBottomLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterBottomSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterBottomMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterBottomLarger" - } - ] - }, - { - "name": "Spacing left", - "type": "Dropdown", - "description": "The spacing to the left of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerLeftSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerLeftMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerLeftLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterLeftSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterLeftMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterLeftLarger" - } - ] - }, - { - "name": "Spacing right", - "type": "Dropdown", - "description": "The spacing to the right of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerRightSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerRightMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerRightLarger" - }, - { - "name": "Outer small", - "class": "spacingOuterRightSmaller" - }, - { - "name": "Outer medium", - "class": "spacingOuterRightMedium" - }, - { - "name": "Outer large", - "class": "spacingOuterRightLarger" - } - ] - }, - { - "name": "Size", - "type": "Dropdown", - "description": "Change the size of the widget relative to its sibling(s).", - "options": [ - { - "name": "Maximum space", - "class": "flexMain" - }, - { - "name": "Minimum space", - "class": "flexItem" - } - ] - }, - { - "name": "Background color", - "type": "Dropdown", - "description": "Change the background color of the container.", - "options": [ - { - "name": "Primary", - "class": "backgroundPrimary" - }, - { - "name": "Secondary", - "class": "backgroundSecondary" - }, - { - "name": "Brand Primary", - "class": "backgroundBrandPrimary" - }, - { - "name": "Brand Success", - "class": "backgroundBrandSuccess" - }, - { - "name": "Brand Warning", - "class": "backgroundBrandWarning" - }, - { - "name": "Brand Danger", - "class": "backgroundBrandDanger" - } - ] - }, - { - "name": "Align", - "type": "Dropdown", - "description": "Aligns the element. This overrides 'Align children' of the parent.", - "options": [ - { - "name": "Stretch", - "class": "alignSelfStretch" - }, - { - "name": "Start", - "class": "alignSelfStart" - }, - { - "name": "Center", - "class": "alignSelfCenter" - }, - { - "name": "End", - "class": "alignSelfEnd" - } - ] - }, - { - "name": "Render children horizontal", - "type": "Toggle", - "description": "Determines the direction in which children are rendered.", - "class": "flexRow" - }, - { - "name": "Wrap children", - "type": "Toggle", - "description": "Determines if children can flow into multiple lines if they hit the end of the container.", - "class": "flexWrap" - }, - { - "name": "Align children", - "type": "Dropdown", - "description": "Align children in the opposite direction.", - "options": [ - { - "name": "Start", - "class": "alignChildrenStart" - }, - { - "name": "Center", - "class": "alignChildrenCenter" - }, - { - "name": "End", - "class": "alignChildrenEnd" - }, - { - "name": "Stretch", - "class": "alignChildrenStretch" - } - ] - }, - { - "name": "Justify children", - "type": "Dropdown", - "description": "Justify children in the active direction.", - "options": [ - { - "name": "Center", - "class": "justifyChildrenCenter" - }, - { - "name": "End", - "class": "justifyChildrenEnd" - }, - { - "name": "Space between", - "class": "justifyChildrenSpaceBetween" - }, - { - "name": "Space around", - "class": "justifyChildrenSpaceAround" - } - ] - } - ], - "com.mendix.widget.native.badge.Badge": [ - { - "name": "Badge style", - "type": "Dropdown", - "description": "Style of the Badge.", - "options": [ - { - "name": "Primary", - "class": "badgePrimary" - }, - { - "name": "Success", - "class": "badgeSuccess" - }, - { - "name": "Warning", - "class": "badgeWarning" - }, - { - "name": "Danger", - "class": "badgeDanger" - } - ] - } - ], - "com.mendix.widget.native.floatingactionbutton.FloatingActionButton": [ - { - "name": "Style", - "type": "Dropdown", - "description": "Style of the Floating Action Button.", - "options": [ - { - "name": "Success", - "class": "floatingActionButtonSuccess" - }, - { - "name": "Warning", - "class": "floatingActionButtonWarning" - }, - { - "name": "Danger", - "class": "floatingActionButtonDanger" - } - ] - } - ], - "com.mendix.widget.native.linechart.LineChart": [ - { - "name": "Chart size", - "type": "Dropdown", - "description": "Size of the chart.", - "options": [ - { - "name": "Square", - "class": "lineChartSquare" - }, - { - "name": "Maximum space", - "class": "lineChartMaxSpace" - } - ] - } - ], - "com.mendix.widget.native.listviewswipe.ListViewSwipe": [ - { - "name": "Panel size", - "type": "Dropdown", - "description": "Size of the left and right panel.", - "options": [ - { - "name": "Small", - "class": "listViewSwipeSmallPanels" - }, - { - "name": "Large", - "class": "listViewSwipeLargePanels" - } - ] - } - ], - "com.mendix.widget.native.maps.Maps": [ - { - "name": "Maps size", - "type": "Dropdown", - "description": "Size of the maps.", - "options": [ - { - "name": "Square", - "class": "mapsSquare" - }, - { - "name": "Maximum space", - "class": "mapsMaxSpace" - } - ] - }, - { - "name": "Maps marker style", - "type": "Dropdown", - "description": "Style of the marker.", - "options": [ - { - "name": "Success", - "class": "mapsSuccess" - }, - { - "name": "Warning", - "class": "mapsWarning" - }, - { - "name": "Danger", - "class": "mapsDanger" - } - ] - } - ], - "com.mendix.widget.native.progressbar.ProgressBar": [ - { - "name": "Progress bar style", - "type": "Dropdown", - "description": "Style of the progress bar.", - "options": [ - { - "name": "Success", - "class": "progressBarSuccess" - }, - { - "name": "Warning", - "class": "progressBarWarning" - }, - { - "name": "Danger", - "class": "progressBarDanger" - } - ] - }, - { - "name": "Progress bar size", - "type": "Dropdown", - "description": "Size of the progress bar.", - "options": [ - { - "name": "Small", - "class": "progressBarSmall" - }, - { - "name": "Large", - "class": "progressBarLarge" - } - ] - } - ], - "com.mendix.widget.native.progresscircle.ProgressCircle": [ - { - "name": "Progress circle style", - "type": "Dropdown", - "description": "Style of the progress circle.", - "options": [ - { - "name": "Success", - "class": "progressCircleSuccess" - }, - { - "name": "Warning", - "class": "progressCircleWarning" - }, - { - "name": "Danger", - "class": "progressCircleDanger" - } - ] - } - ], - "com.mendix.widget.native.rangeslider.RangeSlider": [ - { - "name": "Range Slider style", - "type": "Dropdown", - "description": "Style of the range slider.", - "options": [ - { - "name": "Success", - "class": "rangeSliderSuccess" - }, - { - "name": "Warning", - "class": "rangeSliderWarning" - }, - { - "name": "Danger", - "class": "rangeSliderDanger" - } - ] - } - ], - "com.mendix.widget.native.safeareaview.SafeAreaView": [ - { - "name": "Spacing top", - "type": "Dropdown", - "description": "The spacing above this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerTopSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerTopMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerTopLarger" - } - ] - }, - { - "name": "Spacing bottom", - "type": "Dropdown", - "description": "The spacing below this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerBottomSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerBottomMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerBottomLarger" - } - ] - }, - { - "name": "Spacing left", - "type": "Dropdown", - "description": "The spacing to the left of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerLeftSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerLeftMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerLeftLarger" - } - ] - }, - { - "name": "Spacing right", - "type": "Dropdown", - "description": "The spacing to the right of this element.", - "options": [ - { - "name": "Inner small", - "class": "spacingInnerRightSmaller" - }, - { - "name": "Inner medium", - "class": "spacingInnerRightMedium" - }, - { - "name": "Inner large", - "class": "spacingInnerRightLarger" - } - ] - }, - { - "name": "Background color", - "type": "Dropdown", - "description": "Change the background color of the container.", - "options": [ - { - "name": "Primary", - "class": "backgroundPrimary" - }, - { - "name": "Secondary", - "class": "backgroundSecondary" - }, - { - "name": "Brand Primary", - "class": "backgroundBrandPrimary" - }, - { - "name": "Brand Success", - "class": "backgroundBrandSuccess" - }, - { - "name": "Brand Warning", - "class": "backgroundBrandWarning" - }, - { - "name": "Brand Danger", - "class": "backgroundBrandDanger" - } - ] - }, - { - "name": "Render children horizontal", - "type": "Toggle", - "description": "Determines the direction in which children are rendered.", - "class": "flexRow" - }, - { - "name": "Wrap children", - "type": "Toggle", - "description": "Determines if children can flow into multiple lines if they hit the end of the container.", - "class": "flexWrap" - }, - { - "name": "Align children", - "type": "Dropdown", - "description": "Align children in the opposite direction.", - "options": [ - { - "name": "Start", - "class": "alignChildrenStart" - }, - { - "name": "Center", - "class": "alignChildrenCenter" - }, - { - "name": "End", - "class": "alignChildrenEnd" - }, - { - "name": "Stretch", - "class": "alignChildrenStretch" - }, - { - "name": "Baseline", - "class": "alignChildrenBaseline" - } - ] - }, - { - "name": "Justify content", - "type": "Dropdown", - "description": "Justify content in the active direction.", - "options": [ - { - "name": "Start", - "class": "justifyContentStart" - }, - { - "name": "Center", - "class": "justifyContentCenter" - }, - { - "name": "End", - "class": "justifyContentEnd" - }, - { - "name": "Space between", - "class": "justifyContentSpaceBetween" - }, - { - "name": "Space around", - "class": "justifyContentSpaceAround" - }, - { - "name": "Space evenly", - "class": "justifyContentSpaceEvenly" - } - ] - } - ], - "com.mendix.widget.native.slider.Slider": [ - { - "name": "Slider style", - "type": "Dropdown", - "description": "Style of the slider.", - "options": [ - { - "name": "Success", - "class": "sliderSuccess" - }, - { - "name": "Warning", - "class": "sliderWarning" - }, - { - "name": "Danger", - "class": "sliderDanger" - } - ] - } - ] - } -} diff --git a/theme_old/settings.json b/theme_old/settings.json deleted file mode 100644 index f616bed..0000000 --- a/theme_old/settings.json +++ /dev/null @@ -1,753 +0,0 @@ -{ - "pageTemplates": "WebModeler", - "cssFiles": [ - "styles/web/css/main.css" - ], - "designProperties": { - "Widget": [ - { - "name": "Spacing top", - "type": "Dropdown", - "description": "The spacing above this element.", - "options": [ - { - "name": "None", - "class": "spacing-outer-top-none" - }, - { - "name": "Small", - "class": "spacing-outer-top" - }, - { - "name": "Medium", - "class": "spacing-outer-top-medium" - }, - { - "name": "Large", - "class": "spacing-outer-top-large" - } - ] - }, - { - "name": "Spacing bottom", - "type": "Dropdown", - "description": "The spacing below this element.", - "options": [ - { - "name": "None", - "class": "spacing-outer-bottom-none" - }, - { - "name": "Small", - "class": "spacing-outer-bottom" - }, - { - "name": "Medium", - "class": "spacing-outer-bottom-medium" - }, - { - "name": "Large", - "class": "spacing-outer-bottom-large" - } - ] - }, - { - "name": "Spacing left", - "type": "Dropdown", - "description": "The spacing to the left of this element.", - "options": [ - { - "name": "None", - "class": "spacing-outer-left-none" - }, - { - "name": "Small", - "class": "spacing-outer-left" - }, - { - "name": "Medium", - "class": "spacing-outer-left-medium" - }, - { - "name": "Large", - "class": "spacing-outer-left-large" - } - ] - }, - { - "name": "Spacing right", - "type": "Dropdown", - "description": "The spacing to the right of this element.", - "options": [ - { - "name": "None", - "class": "spacing-outer-right-none" - }, - { - "name": "Small", - "class": "spacing-outer-right" - }, - { - "name": "Medium", - "class": "spacing-outer-right-medium" - }, - { - "name": "Large", - "class": "spacing-outer-right-large" - } - ] - }, - { - "name": "Align self", - "oldNames": [ - "Align Self" - ], - "type": "Dropdown", - "description": "Float the element to the left or to the right.", - "options": [ - { - "name": "Left", - "class": "pull-left" - }, - { - "name": "Right", - "class": "pull-right" - } - ] - }, - { - "name": "Hide on phone", - "oldNames": [ - "Hide On Phone" - ], - "type": "Toggle", - "description": "Hide element on phone.", - "class": "hide-phone" - }, - { - "name": "Hide on tablet", - "oldNames": [ - "Hide On Tablet" - ], - "type": "Toggle", - "description": "Hide element on tablet.", - "class": "hide-tablet" - }, - { - "name": "Hide on desktop", - "oldNames": [ - "Hide On Desktop" - ], - "type": "Toggle", - "description": "Hide element on desktop.", - "class": "hide-desktop" - } - ], - "DivContainer": [ - { - "name": "Align content", - "type": "Dropdown", - "description": "Align content of this element left, right or center it. Align elements inside the container as a row or as a column.", - "options": [ - { - "name": "Left align as a row", - "oldNames": [ - "Left align as row" - ], - "class": "row-left" - }, - { - "name": "Center align as a row", - "oldNames": [ - "Center align as row" - ], - "class": "row-center" - }, - { - "name": "Right align as a row", - "oldNames": [ - "Right align as row" - ], - "class": "row-right" - }, - { - "name": "Left align as a column", - "oldNames": [ - "Left align as column" - ], - "class": "col-left" - }, - { - "name": "Center align as a column", - "oldNames": [ - "Center align as column" - ], - "class": "col-center" - }, - { - "name": "Right align as a column", - "oldNames": [ - "Right align as column" - ], - "class": "col-right" - } - ] - }, - { - "name": "Background color", - "type": "Dropdown", - "description": "Change the background color of the container.", - "options": [ - { - "name": "Brand Default", - "oldNames": [ - "Default" - ], - "class": "background-default" - }, - { - "name": "Brand Primary", - "oldNames": [ - "Primary" - ], - "class": "background-primary" - }, - { - "name": "Brand Inverse", - "oldNames": [ - "Inverse" - ], - "class": "background-inverse" - }, - { - "name": "Brand Info", - "oldNames": [ - "Info" - ], - "class": "background-info" - }, - { - "name": "Brand Success", - "oldNames": [ - "Success" - ], - "class": "background-success" - }, - { - "name": "Brand Warning", - "oldNames": [ - "Warning" - ], - "class": "background-warning" - }, - { - "name": "Brand Danger", - "oldNames": [ - "Danger" - ], - "class": "background-danger" - }, - { - "name": "Background Default", - "class": "background-main" - }, - { - "name": "Background Dashboard", - "class": "background-secondary" - } - ] - } - ], - "Button": [ - { - "name": "Size", - "type": "Dropdown", - "description": "Size of the buttons", - "options": [ - { - "name": "Small", - "class": "btn-sm" - }, - { - "name": "Large", - "class": "btn-lg" - } - ] - }, - { - "name": "Full width", - "type": "Toggle", - "description": "Extend the button to the full width of the container it is placed in.", - "class": "btn-block" - }, - { - "name": "Border", - "oldNames": [ - "Bordered" - ], - "type": "Toggle", - "description": "Style the button with a transparent background, a colored border, and colored text.", - "class": "btn-bordered" - }, - { - "name": "Align icon", - "type": "Dropdown", - "description": "Place the icon to the right or on top of the button.", - "options": [ - { - "name": "Right", - "class": "btn-icon-right" - }, - { - "name": "Top", - "class": "btn-icon-top" - } - ] - } - ], - "ListView": [ - { - "name": "Style", - "type": "Dropdown", - "description": "Change the appearance of rows in the list view.", - "options": [ - { - "name": "Striped", - "class": "listview-striped" - }, - { - "name": "Bordered", - "class": "listview-bordered" - }, - { - "name": "Lined", - "class": "listview-lined" - }, - { - "name": "No Styling", - "class": "listview-stylingless" - } - ] - }, - { - "name": "Hover style", - "type": "Toggle", - "description": "Highlight a row when hovering over it. Only useful when the row is clickable.", - "class": "listview-hover" - }, - { - "name": "Row Size", - "type": "Dropdown", - "description": "Change the row spacing of the list view.", - "options": [ - { - "name": "Small", - "class": "listview-sm" - }, - { - "name": "Large", - "class": "listview-lg" - } - ] - } - ], - "DataGrid": [ - { - "name": "Style", - "type": "Dropdown", - "description": "Choose one of the following styles to change the appearance of the data grid.", - "options": [ - { - "name": "Striped", - "class": "datagrid-striped" - }, - { - "name": "Bordered", - "class": "datagrid-bordered" - }, - { - "name": "Lined", - "class": "datagrid-lined" - } - ] - }, - { - "name": "Hover style", - "type": "Toggle", - "description": "Enable data grid hover to make the rows hoverable.", - "class": "datagrid-hover" - }, - { - "name": "Row size", - "type": "Dropdown", - "description": "Increase or decrease the row spacing of the data grid row.", - "options": [ - { - "name": "Small", - "class": "datagrid-sm" - }, - { - "name": "Large", - "class": "datagrid-lg" - } - ] - } - ], - "TemplateGrid": [ - { - "name": "Style", - "type": "Dropdown", - "description": "Choose one of the following styles to change the appearance of the template grid.", - "options": [ - { - "name": "Striped", - "class": "templategrid-striped" - }, - { - "name": "Bordered", - "class": "templategrid-bordered" - }, - { - "name": "Lined", - "class": "templategrid-lined" - }, - { - "name": "No styling", - "class": "templategrid-stylingless" - } - ] - }, - { - "name": "Hover style", - "type": "Toggle", - "description": "Enable template grid hover to make the rows hoverable.", - "class": "templategrid-hover" - } - ], - "GroupBox": [ - { - "name": "Style", - "type": "Dropdown", - "description": "Choose one of the following styles to change the appearance of the groupbox.", - "options": [ - { - "name": "Brand Default", - "oldNames": [ - "Default" - ], - "class": "groupbox-default" - }, - { - "name": "Brand Primary", - "oldNames": [ - "Primary" - ], - "class": "groupbox-primary" - }, - { - "name": "Brand Inverse", - "oldNames": [ - "Inverse" - ], - "class": "groupbox-inverse" - }, - { - "name": "Brand Info", - "oldNames": [ - "Info" - ], - "class": "groupbox-info" - }, - { - "name": "Brand Success", - "oldNames": [ - "Success" - ], - "class": "groupbox-success" - }, - { - "name": "Brand Warning", - "oldNames": [ - "Warning" - ], - "class": "groupbox-warning" - }, - { - "name": "Brand Danger", - "oldNames": [ - "Danger" - ], - "class": "groupbox-danger" - }, - { - "name": "Transparent", - "class": "groupbox-transparent" - } - ] - }, - { - "name": "Callout style", - "type": "Toggle", - "description": "Enable the groupbox callout functionality to highlight the importance of the groupbox.", - "class": "groupbox-callout" - } - ], - "StaticImageViewer": [ - { - "name": "Style", - "type": "Dropdown", - "description": "Choose the style of your image.", - "options": [ - { - "name": "Rounded", - "class": "img-rounded" - }, - { - "name": "Thumbnail", - "class": "img-thumbnail" - }, - { - "name": "Circle", - "class": "img-circle" - } - ] - }, - { - "name": "Center", - "type": "Toggle", - "description": "Align the image in the center of an element.", - "class": "img-center" - } - ], - "DynamicImageViewer": [ - { - "name": "Style", - "type": "Dropdown", - "description": "Choose the style of your image.", - "options": [ - { - "name": "Rounded", - "class": "img-rounded" - }, - { - "name": "Thumbnail", - "class": "img-thumbnail" - }, - { - "name": "Circle", - "class": "img-circle" - } - ] - }, - { - "name": "Center", - "type": "Toggle", - "description": "Align the image in the center of an element.", - "class": "img-center" - } - ], - "Label": [ - { - "name": "Style", - "type": "Dropdown", - "description": "Change the appearance of a label.", - "options": [ - { - "name": "Brand Default", - "oldNames": [ - "Default" - ], - "class": "label-default" - }, - { - "name": "Brand Primary", - "oldNames": [ - "Primary" - ], - "class": "label-primary" - }, - { - "name": "Brand Inverse", - "oldNames": [ - "Inverse" - ], - "class": "label-inverse" - }, - { - "name": "Brand Info", - "oldNames": [ - "Info" - ], - "class": "label-info" - }, - { - "name": "Brand Success", - "oldNames": [ - "Success" - ], - "class": "label-success" - }, - { - "name": "Brand Warning", - "oldNames": [ - "Warning" - ], - "class": "label-warning" - }, - { - "name": "Brand Danger", - "oldNames": [ - "Danger" - ], - "class": "label-danger" - } - ] - } - ], - "DynamicText": [ - { - "name": "Font Weight", - "oldNames": [ - "Weight" - ], - "type": "Dropdown", - "description": "Emphasize the text with a heavier or lighter font weight", - "options": [ - { - "name": "Light", - "class": "text-light" - }, - { - "name": "Normal", - "class": "text-normal" - }, - { - "name": "Semibold", - "class": "text-semibold" - }, - { - "name": "Bold", - "class": "text-bold" - } - ] - }, - { - "name": "Color", - "type": "Dropdown", - "description": "Change the color of text.", - "options": [ - { - "name": "Header color", - "class": "text-header" - }, - { - "name": "Detail color", - "class": "text-detail" - }, - { - "name": "Brand Default", - "oldNames": [ - "Default" - ], - "class": "text-default" - }, - { - "name": "Brand Primary", - "oldNames": [ - "Primary" - ], - "class": "text-primary" - }, - { - "name": "Brand Inverse", - "oldNames": [ - "Inverse" - ], - "class": "text-inverse" - }, - { - "name": "Brand Info", - "oldNames": [ - "Info" - ], - "class": "text-info" - }, - { - "name": "Brand Success", - "oldNames": [ - "Success" - ], - "class": "text-success" - }, - { - "name": "Brand Warning", - "oldNames": [ - "Warning" - ], - "class": "text-warning" - }, - { - "name": "Brand Danger", - "oldNames": [ - "Danger" - ], - "class": "text-danger" - } - ] - }, - { - "name": "Alignment", - "type": "Dropdown", - "description": "Align the text.", - "options": [ - { - "name": "Left", - "class": "text-left d-block" - }, - { - "name": "Center", - "class": "text-center d-block" - }, - { - "name": "Right", - "class": "text-right d-block" - } - ] - }, - { - "name": "Transform", - "type": "Dropdown", - "description": "Change the letter case of the text.", - "options": [ - { - "name": "Lowercase", - "class": "text-lowercase" - }, - { - "name": "Uppercase", - "class": "text-uppercase" - }, - { - "name": "Capitalize", - "class": "text-capitalize" - } - ] - }, - { - "name": "Wrap options", - "type": "Dropdown", - "description": "Break long words and sentences into multiple lines.", - "options": [ - { - "name": "Wrap", - "class": "text-break" - }, - { - "name": "No Wrap", - "class": "text-nowrap" - } - ] - } - ] - } -} diff --git a/theme_old/styles.js b/theme_old/styles.js deleted file mode 100644 index 5836d58..0000000 --- a/theme_old/styles.js +++ /dev/null @@ -1,12 +0,0 @@ -import * as custom from "./styles/native/app/custom"; -import mergeobjects from "./styles/native/core/helpers/_functions/mergeobjects"; -import * as main from "./styles/native/main"; - -Object.keys(custom).forEach(key => { - if (main[key]) { - Object.assign(main[key], mergeobjects(main[key], custom[key])); - delete custom[key]; - } -}); - -module.exports = { ...main, ...custom }; diff --git a/theme_old/styles/native/app/custom-variables.js b/theme_old/styles/native/app/custom-variables.js deleted file mode 100644 index 80db3a2..0000000 --- a/theme_old/styles/native/app/custom-variables.js +++ /dev/null @@ -1,279 +0,0 @@ -import { NativeModules, Platform } from "react-native"; -import adjustFont from "../core/helpers/_functions/adjustfont"; -import { anyColorToRgbString, setColorBasedOnBackground, setContrastScale, } from "../core/helpers/_functions/convertcolors"; -/* - -==> You can find a copy of the core variables below. (From styles/native/core/variables.js) -==> You can freely change any value in this file. -==> DO NOT change the core variable file (or any other file in core), as that makes updating Atlas a lot harder in the future. - -*/ -//== Global variables -//## Variables to be used during styling -//-------------------------------------------------------------------------------------------------------------------// -// Brand Style -export const brand = { - primary: "#0595DB", - success: "#76CA02", - warning: "#f99b1d", - danger: "#ed1c24", - primaryLight: `rgba(${anyColorToRgbString("#0595DB")}, 0.14)`, - successLight: `rgba(${anyColorToRgbString("#76CA02")}, 0.14)`, - warningLight: `rgba(${anyColorToRgbString("#f99b1d")}, 0.14)`, - dangerLight: `rgba(${anyColorToRgbString("#ed1c24")}, 0.14)`, -}; -// -// Dark Mode - Inherits OS theme if possible -export const darkMode = NativeModules && NativeModules.RNDarkMode && NativeModules.RNDarkMode.initialMode - ? NativeModules.RNDarkMode.initialMode === "dark" - : false; -// -// Background Colors -const backgroundColor = darkMode ? "#000" : "#FFF"; -const backgroundSecondaryContrast = darkMode ? 0.11 : 0.03; -// -export const background = { - primary: backgroundColor, - secondary: setContrastScale(backgroundSecondaryContrast, backgroundColor), - gray: "#c6c6cc", - brandPrimary: brand.primary, - brandSuccess: brand.success, - brandWarning: brand.warning, - brandDanger: brand.danger, -}; -// -// Contrast (Gray) colors based on background.primary -export const contrast = { - highest: setContrastScale(0.95, background.primary), - higher: setContrastScale(0.8, background.primary), - high: setContrastScale(0.65, background.primary), - regular: setContrastScale(0.5, background.primary), - low: setContrastScale(0.35, background.primary), - lower: setContrastScale(0.2, background.primary), - lowest: setContrastScale(0.05, background.primary), -}; -// -// Border Style -export const border = { - color: setContrastScale(0.17, background.primary), - width: 1, - radius: 5, -}; -// -// Font Styles -export const font = { - size: adjustFont(14), - sizeSmall: adjustFont(12), - sizeLarge: adjustFont(18), - sizeH1: adjustFont(31), - sizeH2: adjustFont(26), - sizeH3: adjustFont(24), - sizeH4: adjustFont(18), - sizeH5: adjustFont(14), - sizeH6: adjustFont(12), - color: setColorBasedOnBackground(background.primary), - colorDisabled: "#9DA1A8", - labelColorDisabled: "#474E5C", - weightLight: "100", - weightNormal: "normal", - weightSemiBold: "600", - weightBold: "bold", - family: Platform.select({ ios: "System", android: "normal" }), -}; -// -// Spacing -export const spacing = { - smallest: 5, - smaller: 10, - small: 15, - regular: 20, - large: 25, - larger: 30, - largest: 40, -}; -// -// Button Styles -export const button = { - fontSize: font.sizeSmall, - fontSizeLarge: font.size, - fontWeight: font.weightBold, - fontSizeIcon: font.sizeSmall, - fontSizeIconLarge: font.size, - borderRadius: border.radius, - paddingVertical: spacing.smaller, - paddingHorizontal: spacing.regular, - header: { - color: contrast.highest, - borderColor: "transparent", - backgroundColor: "transparent", - fontSize: font.sizeSmall, - fontSizeIcon: font.sizeSmall, - paddingLeft: 0, - paddingRight: 10, - }, - primary: { - color: "#FFF", - colorDisabled: font.colorDisabled, - borderColor: brand.primary, - borderColorDisabled: border.color, - backgroundColor: brand.primary, - backgroundColorDisabled: border.color, - }, - secondary: { - color: brand.primary, - borderColor: brand.primary, - backgroundColor: "transparent", - inversedColor: "#FFF", - }, - success: { - color: "#FFF", - borderColor: brand.success, - backgroundColor: brand.success, - }, - warning: { - color: "#FFF", - borderColor: brand.warning, - backgroundColor: brand.warning, - }, - danger: { - color: "#FFF", - borderColor: brand.danger, - backgroundColor: brand.danger, - }, -}; -// -// Input Styles -export const input = { - // Colors - color: font.color, - colorDisabled: font.colorDisabled, - errorColor: brand.danger, - labelColor: font.color, - labelColorDisabled: font.labelColorDisabled, - borderColor: contrast.lower, - borderColorFocused: "", - backgroundColor: background.primary, - backgroundColorDisabled: contrast.lowest, - selectionColor: contrast.lower, - placeholderTextColor: contrast.regular, - underlineColorAndroid: "transparent", - inputContainerUnderlayColor: `rgba(${anyColorToRgbString(contrast.low)},0.4)`, - // Sizes - fontSize: font.size, - fontFamily: font.family, - borderWidth: border.width, - borderRadius: border.radius, - // Alignment - textAlign: "left", - paddingHorizontal: spacing.smaller, - paddingVertical: spacing.small, -}; -// -// Navigation Styles -export const navigation = { - statusBar: { - backgroundColor: background.primary, - barStyle: darkMode ? "light-content" : "dark-content", - }, - topBar: { - backgroundColor: background.primary, - backButtonColor: contrast.highest, - titleColor: contrast.highest, - titleFontSize: Platform.select({ android: font.sizeH4, ios: font.sizeH5 }), - }, - bottomBar: { - color: contrast.high, - selectedTextColor: contrast.high, - selectedIconColor: brand.primary, - backgroundColor: background.primary, - fontSize: font.sizeSmall, - iconSize: font.sizeSmall, - }, - progressOverlay: { - color: font.color, - activityIndicatorColor: font.color, - backgroundColor: `rgba(0, 0, 0, 0.5)`, - containerBackgroundColor: background.secondary, - fontSize: font.size, - borderRadius: border.radius, - elevation: 1.5, - shadowColor: "#000", - shadowOpacity: 0.1, - shadowRadius: 10, - }, -}; -// -// Badge Styles -export const badge = { - fontWeight: font.weightBold, - borderRadius: 30, - paddingVertical: 3, - paddingHorizontal: spacing.smaller, - default: { - color: contrast.higher, - backgroundColor: contrast.lower, - }, - primary: { - color: brand.primary, - backgroundColor: brand.primaryLight, - }, - success: { - color: brand.success, - backgroundColor: brand.successLight, - }, - warning: { - color: brand.warning, - backgroundColor: brand.warningLight, - }, - danger: { - color: brand.danger, - backgroundColor: brand.dangerLight, - }, -}; -// -// Tabcontainer Styles -export const tabContainer = { - tabBar: { - pressColor: contrast.lower, - backgroundColor: background.primary, - }, - indicator: { - backgroundColor: brand.primary, - height: Platform.select({ ios: 2, android: 2 }), - }, - label: { - color: contrast.highest, - fontWeight: font.weightBold, - textTransform: "uppercase", - }, - activeLabel: { - color: brand.primary, - fontWeight: font.weightBold, - textTransform: "uppercase", - }, - badgeContainer: { - borderRadius: badge.borderRadius, - backgroundColor: badge.default.backgroundColor, - paddingVertical: badge.paddingVertical, - paddingHorizontal: badge.paddingHorizontal, - marginLeft: 8, - }, - badgeCaption: { - fontSize: font.size, - color: badge.default.color, - fontWeight: badge.fontWeight, - }, -}; -// -// ListView Styles -export const listView = { - border: { - color: border.color, - width: border.width, - }, -}; -// -// Layoutgrid Styles -export const layoutGrid = { - gutterSize: 15, -}; diff --git a/theme_old/styles/native/core/base/flex.js b/theme_old/styles/native/core/base/flex.js deleted file mode 100644 index dd1edff..0000000 --- a/theme_old/styles/native/core/base/flex.js +++ /dev/null @@ -1,203 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -*/ -//== Flex layout -export const flexMain = { - container: { - // flex 1 will take all available space not taken by flexItems. - flex: 1, - }, -}; -export const flexItem = { - container: { - // When flex is -1, the component is normally sized according width and height. - // However, if there's not enough space, the component will shrink to its minWidth and minHeight - flex: -1, - }, -}; -export const flexRow = { - container: { - flexDirection: "row", - }, -}; -export const flexColumn = { - container: { - flexDirection: "column", - }, -}; -export const flexRowReverse = { - container: { - flexDirection: "row-reverse", - }, -}; -export const flexColumnReverse = { - container: { - flexDirection: "column-reverse", - }, -}; -export const flexWrap = { - container: { - // flexWrap controls whether children can wrap around after they hit the end of a flex container. - flexWrap: "wrap", - }, -}; -export const justifyContentStart = { - container: { - // justifyContent aligns children in the main direction. - // For example, if children are flowing vertically, justifyContent controls how they align vertically. - justifyContent: "flex-start", - }, -}; -export const justifyContentCenter = { - container: { - // justifyContent aligns children in the main direction. - // For example, if children are flowing vertically, justifyContent controls how they align vertically. - justifyContent: "center", - }, -}; -export const justifyContentEnd = { - container: { - // justifyContent aligns children in the main direction. - // For example, if children are flowing vertically, justifyContent controls how they align vertically. - justifyContent: "flex-end", - }, -}; -export const justifyContentSpaceBetween = { - container: { - // justifyContent aligns children in the main direction. - // For example, if children are flowing vertically, justifyContent controls how they align vertically. - justifyContent: "space-between", - }, -}; -export const justifyContentSpaceAround = { - container: { - // justifyContent aligns children in the main direction. - // For example, if children are flowing vertically, justifyContent controls how they align vertically. - justifyContent: "space-around", - }, -}; -export const justifyContentSpaceEvenly = { - container: { - // justifyContent aligns children in the main direction. - // For example, if children are flowing vertically, justifyContent controls how they align vertically. - justifyContent: "space-evenly", - }, -}; -export const alignChildrenStart = { - container: { - // alignItems aligns children in the cross direction. - // For example, if children are flowing vertically, alignItems controls how they align horizontally. - alignItems: "flex-start", - }, -}; -export const alignChildrenCenter = { - container: { - // alignItems aligns children in the cross direction. - // For example, if children are flowing vertically, alignItems controls how they align horizontally. - alignItems: "center", - }, -}; -export const alignChildrenEnd = { - container: { - // alignItems aligns children in the cross direction. - // For example, if children are flowing vertically, alignItems controls how they align horizontally. - alignItems: "flex-end", - }, -}; -export const alignChildrenStretch = { - container: { - // alignItems aligns children in the cross direction. - // For example, if children are flowing vertically, alignItems controls how they align horizontally. - alignItems: "stretch", - }, -}; -export const alignChildrenBaseline = { - container: { - // alignContent aligns children in the cross direction. - // For example, if children are flowing vertically, alignContent controls how they align horizontally. - alignItems: "baseline", - }, -}; -export const childrenCenter = { - container: { - ...justifyContentCenter.container, - ...alignChildrenCenter.container, - }, -}; -export const alignContentStart = { - container: { - // alignContent aligns rows of children in the cross direction. - // For example, if children are flowing vertically, alignContent controls how they align horizontally. - alignContent: "flex-start", - }, -}; -export const alignContentCenter = { - container: { - // alignContent aligns rows of children in the cross direction. - // For example, if children are flowing vertically, alignContent controls how they align horizontally. - alignContent: "center", - }, -}; -export const alignContentEnd = { - container: { - // alignContent aligns rows of children in the cross direction. - // For example, if children are flowing vertically, alignContent controls how they align horizontally. - alignContent: "flex-end", - }, -}; -export const alignContentStretch = { - container: { - // alignContent aligns rows of children in the cross direction. - // For example, if children are flowing vertically, alignContent controls how they align horizontally. - alignContent: "stretch", - }, -}; -export const alignContentSpaceAround = { - container: { - // alignContent aligns rows of children in the cross direction. - // For example, if children are flowing vertically, alignContent controls how they align horizontally. - alignContent: "space-around", - }, -}; -export const alignContentSpaceBetween = { - container: { - // alignContent aligns rows of children in the cross direction. - // For example, if children are flowing vertically, alignContent controls how they align horizontally. - alignContent: "space-between", - }, -}; -export const alignSelfStart = { - container: { - // controls how a child aligns in the cross direction, overriding the alignItems of the parent. - alignSelf: "flex-start", - }, -}; -export const alignSelfCenter = { - container: { - // controls how a child aligns in the cross direction, overriding the alignItems of the parent. - alignSelf: "center", - }, -}; -export const alignSelfEnd = { - container: { - // controls how a child aligns in the cross direction, overriding the alignItems of the parent. - alignSelf: "flex-end", - }, -}; -export const alignSelfStretch = { - container: { - // controls how a child aligns in the cross direction, overriding the alignItems of the parent. - alignSelf: "stretch", - }, -}; -export const alignSelfBaseline = { - container: { - // controls how a child aligns in the cross direction, overriding the alignItems of the parent. - alignSelf: "baseline", - }, -}; diff --git a/theme_old/styles/native/core/base/spacing.js b/theme_old/styles/native/core/base/spacing.js deleted file mode 100644 index 13a72e2..0000000 --- a/theme_old/styles/native/core/base/spacing.js +++ /dev/null @@ -1,503 +0,0 @@ -import { spacing } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -*/ -//== Inner Spacing -export const spacingInnerSmallest = { - container: { - padding: spacing.smallest, - }, -}; -export const spacingInnerVerticalSmallest = { - container: { - paddingVertical: spacing.smallest, - }, -}; -export const spacingInnerHorizontalSmallest = { - container: { - paddingHorizontal: spacing.smallest, - }, -}; -export const spacingInnerTopSmallest = { - container: { - paddingTop: spacing.smallest, - }, -}; -export const spacingInnerRightSmallest = { - container: { - paddingRight: spacing.smallest, - }, -}; -export const spacingInnerLeftSmallest = { - container: { - paddingLeft: spacing.smallest, - }, -}; -export const spacingInnerBottomSmallest = { - container: { - paddingBottom: spacing.smallest, - }, -}; -export const spacingInnerSmaller = { - container: { - padding: spacing.smaller, - }, -}; -export const spacingInnerVerticalSmaller = { - container: { - paddingVertical: spacing.smaller, - }, -}; -export const spacingInnerHorizontalSmaller = { - container: { - paddingHorizontal: spacing.smaller, - }, -}; -export const spacingInnerTopSmaller = { - container: { - paddingTop: spacing.smaller, - }, -}; -export const spacingInnerRightSmaller = { - container: { - paddingRight: spacing.smaller, - }, -}; -export const spacingInnerLeftSmaller = { - container: { - paddingLeft: spacing.smaller, - }, -}; -export const spacingInnerBottomSmaller = { - container: { - paddingBottom: spacing.smaller, - }, -}; -export const spacingInnerSmall = { - container: { - padding: spacing.small, - }, -}; -export const spacingInnerVerticalSmall = { - container: { - paddingVertical: spacing.small, - }, -}; -export const spacingInnerHorizontalSmall = { - container: { - paddingHorizontal: spacing.small, - }, -}; -export const spacingInnerTopSmall = { - container: { - paddingTop: spacing.small, - }, -}; -export const spacingInnerRightSmall = { - container: { - paddingRight: spacing.small, - }, -}; -export const spacingInnerLeftSmall = { - container: { - paddingLeft: spacing.small, - }, -}; -export const spacingInnerBottomSmall = { - container: { - paddingBottom: spacing.small, - }, -}; -export const spacingInnerMedium = { - container: { - padding: spacing.regular, - }, -}; -export const spacingInnerVerticalMedium = { - container: { - paddingVertical: spacing.regular, - }, -}; -export const spacingInnerHorizontalMedium = { - container: { - paddingHorizontal: spacing.regular, - }, -}; -export const spacingInnerTopMedium = { - container: { - paddingTop: spacing.regular, - }, -}; -export const spacingInnerRightMedium = { - container: { - paddingRight: spacing.regular, - }, -}; -export const spacingInnerLeftMedium = { - container: { - paddingLeft: spacing.regular, - }, -}; -export const spacingInnerBottomMedium = { - container: { - paddingBottom: spacing.regular, - }, -}; -export const spacingInnerLarge = { - container: { - padding: spacing.large, - }, -}; -export const spacingInnerVerticalLarge = { - container: { - paddingVertical: spacing.large, - }, -}; -export const spacingInnerHorizontalLarge = { - container: { - paddingHorizontal: spacing.large, - }, -}; -export const spacingInnerTopLarge = { - container: { - paddingTop: spacing.large, - }, -}; -export const spacingInnerRightLarge = { - container: { - paddingRight: spacing.large, - }, -}; -export const spacingInnerLeftLarge = { - container: { - paddingLeft: spacing.large, - }, -}; -export const spacingInnerBottomLarge = { - container: { - paddingBottom: spacing.large, - }, -}; -export const spacingInnerLarger = { - container: { - padding: spacing.larger, - }, -}; -export const spacingInnerVerticalLarger = { - container: { - paddingVertical: spacing.larger, - }, -}; -export const spacingInnerHorizontalLarger = { - container: { - paddingHorizontal: spacing.larger, - }, -}; -export const spacingInnerTopLarger = { - container: { - paddingTop: spacing.larger, - }, -}; -export const spacingInnerRightLarger = { - container: { - paddingRight: spacing.larger, - }, -}; -export const spacingInnerLeftLarger = { - container: { - paddingLeft: spacing.larger, - }, -}; -export const spacingInnerBottomLarger = { - container: { - paddingBottom: spacing.larger, - }, -}; -export const spacingInnerLargest = { - container: { - padding: spacing.largest, - }, -}; -export const spacingInnerVerticalLargest = { - container: { - paddingVertical: spacing.largest, - }, -}; -export const spacingInnerHorizontalLargest = { - container: { - paddingHorizontal: spacing.largest, - }, -}; -export const spacingInnerTopLargest = { - container: { - paddingTop: spacing.largest, - }, -}; -export const spacingInnerRightLargest = { - container: { - paddingRight: spacing.largest, - }, -}; -export const spacingInnerLeftLargest = { - container: { - paddingLeft: spacing.largest, - }, -}; -export const spacingInnerBottomLargest = { - container: { - paddingBottom: spacing.largest, - }, -}; -// -// -//== Outer Spacing -export const spacingOuterSmallest = { - container: { - margin: spacing.smallest, - }, -}; -export const spacingOuterVerticalSmallest = { - container: { - marginVertical: spacing.smallest, - }, -}; -export const spacingOuterHorizontalSmallest = { - container: { - marginHorizontal: spacing.smallest, - }, -}; -export const spacingOuterTopSmallest = { - container: { - marginTop: spacing.smallest, - }, -}; -export const spacingOuterRightSmallest = { - container: { - marginRight: spacing.smallest, - }, -}; -export const spacingOuterLeftSmallest = { - container: { - marginLeft: spacing.smallest, - }, -}; -export const spacingOuterBottomSmallest = { - container: { - marginBottom: spacing.smallest, - }, -}; -export const spacingOuterSmaller = { - container: { - margin: spacing.smaller, - }, -}; -export const spacingOuterVerticalSmaller = { - container: { - marginVertical: spacing.smaller, - }, -}; -export const spacingOuterHorizontalSmaller = { - container: { - marginHorizontal: spacing.smaller, - }, -}; -export const spacingOuterTopSmaller = { - container: { - marginTop: spacing.smaller, - }, -}; -export const spacingOuterRightSmaller = { - container: { - marginRight: spacing.smaller, - }, -}; -export const spacingOuterLeftSmaller = { - container: { - marginLeft: spacing.smaller, - }, -}; -export const spacingOuterBottomSmaller = { - container: { - marginBottom: spacing.smaller, - }, -}; -export const spacingOuterSmall = { - container: { - margin: spacing.small, - }, -}; -export const spacingOuterVerticalSmall = { - container: { - marginVertical: spacing.small, - }, -}; -export const spacingOuterHorizontalSmall = { - container: { - marginHorizontal: spacing.small, - }, -}; -export const spacingOuterTopSmall = { - container: { - marginTop: spacing.small, - }, -}; -export const spacingOuterRightSmall = { - container: { - marginRight: spacing.small, - }, -}; -export const spacingOuterLeftSmall = { - container: { - marginLeft: spacing.small, - }, -}; -export const spacingOuterBottomSmall = { - container: { - marginBottom: spacing.small, - }, -}; -export const spacingOuterMedium = { - container: { - margin: spacing.regular, - }, -}; -export const spacingOuterVerticalMedium = { - container: { - marginVertical: spacing.regular, - }, -}; -export const spacingOuterHorizontalMedium = { - container: { - marginHorizontal: spacing.regular, - }, -}; -export const spacingOuterTopMedium = { - container: { - marginTop: spacing.regular, - }, -}; -export const spacingOuterRightMedium = { - container: { - marginRight: spacing.regular, - }, -}; -export const spacingOuterLeftMedium = { - container: { - marginLeft: spacing.regular, - }, -}; -export const spacingOuterBottomMedium = { - container: { - marginBottom: spacing.regular, - }, -}; -export const spacingOuterLarge = { - container: { - margin: spacing.large, - }, -}; -export const spacingOuterVerticalLarge = { - container: { - marginVertical: spacing.large, - }, -}; -export const spacingOuterHorizontalLarge = { - container: { - marginHorizontal: spacing.large, - }, -}; -export const spacingOuterTopLarge = { - container: { - marginTop: spacing.large, - }, -}; -export const spacingOuterRightLarge = { - container: { - marginRight: spacing.large, - }, -}; -export const spacingOuterLeftLarge = { - container: { - marginLeft: spacing.large, - }, -}; -export const spacingOuterBottomLarge = { - container: { - marginBottom: spacing.large, - }, -}; -export const spacingOuterLarger = { - container: { - margin: spacing.larger, - }, -}; -export const spacingOuterVerticalLarger = { - container: { - marginVertical: spacing.larger, - }, -}; -export const spacingOuterHorizontalLarger = { - container: { - marginHorizontal: spacing.larger, - }, -}; -export const spacingOuterTopLarger = { - container: { - marginTop: spacing.larger, - }, -}; -export const spacingOuterRightLarger = { - container: { - marginRight: spacing.larger, - }, -}; -export const spacingOuterLeftLarger = { - container: { - marginLeft: spacing.larger, - }, -}; -export const spacingOuterBottomLarger = { - container: { - marginBottom: spacing.larger, - }, -}; -export const spacingOuterLargest = { - container: { - margin: spacing.largest, - }, -}; -export const spacingOuterVerticalLargest = { - container: { - marginVertical: spacing.largest, - }, -}; -export const spacingOuterHorizontalLargest = { - container: { - marginHorizontal: spacing.largest, - }, -}; -export const spacingOuterTopLargest = { - container: { - marginTop: spacing.largest, - }, -}; -export const spacingOuterRightLargest = { - container: { - marginRight: spacing.largest, - }, -}; -export const spacingOuterLeftLargest = { - container: { - marginLeft: spacing.largest, - }, -}; -export const spacingOuterBottomLargest = { - container: { - marginBottom: spacing.largest, - }, -}; diff --git a/theme_old/styles/native/core/helpers/_functions/adjustfont.js b/theme_old/styles/native/core/helpers/_functions/adjustfont.js deleted file mode 100644 index 7c8efe1..0000000 --- a/theme_old/styles/native/core/helpers/_functions/adjustfont.js +++ /dev/null @@ -1,59 +0,0 @@ -import { Dimensions, PixelRatio } from "react-native"; -const { height, width } = Dimensions.get("window"); -const pixelRatio = PixelRatio.get(); -/** - * - * Adjust the font size based on the screen size - * - * @param {number} size Font size - * - * @return {number} Returns adjusted font size - */ -function adjustFont(size) { - if (pixelRatio === 2) { - // iphone 5s and older Androids - if (width < 360) - return size * 0.95; - // iphone 5 - if (height < 667) - return size; - // iphone 6-6s - else if (height >= 667 && height <= 735) - return size * 1.15; - // older phablets - return size * 1.25; - } - if (pixelRatio === 3) { - // catch Android font scaling on small machines - // where pixel ratio / font scale ratio => 3:3 - if (width <= 360) - return size; - // Catch other weird android width sizings - if (height < 667) - return size * 1.15; - // catch in-between size Androids and scale font up - if (height >= 667 && height <= 735) - return size * 1.2; - // catch larger devices - // ie iphone 6s plus / 7 plus / mi note - return size * 1.27; - } - if (pixelRatio === 3.5) { - // catch Android font scaling on small machines - // where pixel ratio / font scale ratio => 3:3 - if (width <= 360) - return size; - // Catch other smaller android height sizings - if (height < 667) - return size * 1.2; - // catch in-between size Androids and scale font up - if (height >= 667 && height <= 735) - return size * 1.25; - // catch larger phablet devices - return size * 1.4; - } - // if older device ie pixelRatio !== 2 || 3 || 3.5 - return size; -} -// -export { adjustFont as default, height, width }; diff --git a/theme_old/styles/native/core/helpers/_functions/colorwords.js b/theme_old/styles/native/core/helpers/_functions/colorwords.js deleted file mode 100644 index 3c4cb0f..0000000 --- a/theme_old/styles/native/core/helpers/_functions/colorwords.js +++ /dev/null @@ -1,153 +0,0 @@ -// -const colors = { - aliceblue: { r: 240, g: 248, b: 255 }, - antiquewhite: { r: 250, g: 235, b: 215 }, - aqua: { r: 0, g: 255, b: 255 }, - aquamarine: { r: 127, g: 255, b: 212 }, - azure: { r: 240, g: 255, b: 255 }, - beige: { r: 245, g: 245, b: 220 }, - bisque: { r: 255, g: 228, b: 196 }, - black: { r: 0, g: 0, b: 0 }, - blanchedalmond: { r: 255, g: 235, b: 205 }, - blue: { r: 0, g: 0, b: 255 }, - blueviolet: { r: 138, g: 43, b: 226 }, - brown: { r: 165, g: 42, b: 42 }, - burlywood: { r: 222, g: 184, b: 135 }, - cadetblue: { r: 95, g: 158, b: 160 }, - chartreuse: { r: 127, g: 255, b: 0 }, - chocolate: { r: 210, g: 105, b: 30 }, - coral: { r: 255, g: 127, b: 80 }, - cornflowerblue: { r: 100, g: 149, b: 237 }, - cornsilk: { r: 255, g: 248, b: 220 }, - crimson: { r: 220, g: 20, b: 60 }, - cyan: { r: 0, g: 255, b: 255 }, - darkblue: { r: 0, g: 0, b: 139 }, - darkcyan: { r: 0, g: 139, b: 139 }, - darkgoldenrod: { r: 184, g: 134, b: 11 }, - darkgray: { r: 169, g: 169, b: 169 }, - darkgreen: { r: 0, g: 100, b: 0 }, - darkgrey: { r: 169, g: 169, b: 169 }, - darkkhaki: { r: 189, g: 183, b: 107 }, - darkmagenta: { r: 139, g: 0, b: 139 }, - darkolivegreen: { r: 85, g: 107, b: 47 }, - darkorange: { r: 255, g: 140, b: 0 }, - darkorchid: { r: 153, g: 50, b: 204 }, - darkred: { r: 139, g: 0, b: 0 }, - darksalmon: { r: 233, g: 150, b: 122 }, - darkseagreen: { r: 143, g: 188, b: 143 }, - darkslateblue: { r: 72, g: 61, b: 139 }, - darkslategray: { r: 47, g: 79, b: 79 }, - darkslategrey: { r: 47, g: 79, b: 79 }, - darkturquoise: { r: 0, g: 206, b: 209 }, - darkviolet: { r: 148, g: 0, b: 211 }, - deeppink: { r: 255, g: 20, b: 147 }, - deepskyblue: { r: 0, g: 191, b: 255 }, - dimgray: { r: 105, g: 105, b: 105 }, - dimgrey: { r: 105, g: 105, b: 105 }, - dodgerblue: { r: 30, g: 144, b: 255 }, - firebrick: { r: 178, g: 34, b: 34 }, - floralwhite: { r: 255, g: 250, b: 240 }, - forestgreen: { r: 34, g: 139, b: 34 }, - fuchsia: { r: 255, g: 0, b: 255 }, - gainsboro: { r: 220, g: 220, b: 220 }, - ghostwhite: { r: 248, g: 248, b: 255 }, - gold: { r: 255, g: 215, b: 0 }, - goldenrod: { r: 218, g: 165, b: 32 }, - gray: { r: 128, g: 128, b: 128 }, - green: { r: 0, g: 128, b: 0 }, - greenyellow: { r: 173, g: 255, b: 47 }, - grey: { r: 128, g: 128, b: 128 }, - honeydew: { r: 240, g: 255, b: 240 }, - hotpink: { r: 255, g: 105, b: 180 }, - indianred: { r: 205, g: 92, b: 92 }, - indigo: { r: 75, g: 0, b: 130 }, - ivory: { r: 255, g: 255, b: 240 }, - khaki: { r: 240, g: 230, b: 140 }, - lavender: { r: 230, g: 230, b: 250 }, - lavenderblush: { r: 255, g: 240, b: 245 }, - lawngreen: { r: 124, g: 252, b: 0 }, - lemonchiffon: { r: 255, g: 250, b: 205 }, - lightblue: { r: 173, g: 216, b: 230 }, - lightcoral: { r: 240, g: 128, b: 128 }, - lightcyan: { r: 224, g: 255, b: 255 }, - lightgoldenrodyellow: { r: 250, g: 250, b: 210 }, - lightgray: { r: 211, g: 211, b: 211 }, - lightgreen: { r: 144, g: 238, b: 144 }, - lightgrey: { r: 211, g: 211, b: 211 }, - lightpink: { r: 255, g: 182, b: 193 }, - lightsalmon: { r: 255, g: 160, b: 122 }, - lightseagreen: { r: 32, g: 178, b: 170 }, - lightskyblue: { r: 135, g: 206, b: 250 }, - lightslategray: { r: 119, g: 136, b: 153 }, - lightslategrey: { r: 119, g: 136, b: 153 }, - lightsteelblue: { r: 176, g: 196, b: 222 }, - lightyellow: { r: 255, g: 255, b: 224 }, - lime: { r: 0, g: 255, b: 0 }, - limegreen: { r: 50, g: 205, b: 50 }, - linen: { r: 250, g: 240, b: 230 }, - magenta: { r: 255, g: 0, b: 255 }, - maroon: { r: 128, g: 0, b: 0 }, - mediumaquamarine: { r: 102, g: 205, b: 170 }, - mediumblue: { r: 0, g: 0, b: 205 }, - mediumorchid: { r: 186, g: 85, b: 211 }, - mediumpurple: { r: 147, g: 112, b: 219 }, - mediumseagreen: { r: 60, g: 179, b: 113 }, - mediumslateblue: { r: 123, g: 104, b: 238 }, - mediumspringgreen: { r: 0, g: 250, b: 154 }, - mediumturquoise: { r: 72, g: 209, b: 204 }, - mediumvioletred: { r: 199, g: 21, b: 133 }, - midnightblue: { r: 25, g: 25, b: 112 }, - mintcream: { r: 245, g: 255, b: 250 }, - mistyrose: { r: 255, g: 228, b: 225 }, - moccasin: { r: 255, g: 228, b: 181 }, - navajowhite: { r: 255, g: 222, b: 173 }, - navy: { r: 0, g: 0, b: 128 }, - oldlace: { r: 253, g: 245, b: 230 }, - olive: { r: 128, g: 128, b: 0 }, - olivedrab: { r: 107, g: 142, b: 35 }, - orange: { r: 255, g: 165, b: 0 }, - orangered: { r: 255, g: 69, b: 0 }, - orchid: { r: 218, g: 112, b: 214 }, - palegoldenrod: { r: 238, g: 232, b: 170 }, - palegreen: { r: 152, g: 251, b: 152 }, - paleturquoise: { r: 175, g: 238, b: 238 }, - palevioletred: { r: 219, g: 112, b: 147 }, - papayawhip: { r: 255, g: 239, b: 213 }, - peachpuff: { r: 255, g: 218, b: 185 }, - peru: { r: 205, g: 133, b: 63 }, - pink: { r: 255, g: 192, b: 203 }, - plum: { r: 221, g: 160, b: 221 }, - powderblue: { r: 176, g: 224, b: 230 }, - purple: { r: 128, g: 0, b: 128 }, - rebeccapurple: { r: 102, g: 51, b: 153 }, - red: { r: 255, g: 0, b: 0 }, - rosybrown: { r: 188, g: 143, b: 143 }, - royalblue: { r: 65, g: 105, b: 225 }, - saddlebrown: { r: 139, g: 69, b: 19 }, - salmon: { r: 250, g: 128, b: 114 }, - sandybrown: { r: 244, g: 164, b: 96 }, - seagreen: { r: 46, g: 139, b: 87 }, - seashell: { r: 255, g: 245, b: 238 }, - sienna: { r: 160, g: 82, b: 45 }, - silver: { r: 192, g: 192, b: 192 }, - skyblue: { r: 135, g: 206, b: 235 }, - slateblue: { r: 106, g: 90, b: 205 }, - slategray: { r: 112, g: 128, b: 144 }, - slategrey: { r: 112, g: 128, b: 144 }, - snow: { r: 255, g: 250, b: 250 }, - springgreen: { r: 0, g: 255, b: 127 }, - steelblue: { r: 70, g: 130, b: 180 }, - tan: { r: 210, g: 180, b: 140 }, - teal: { r: 0, g: 128, b: 128 }, - thistle: { r: 216, g: 191, b: 216 }, - tomato: { r: 255, g: 99, b: 71 }, - turquoise: { r: 64, g: 224, b: 208 }, - violet: { r: 238, g: 130, b: 238 }, - wheat: { r: 245, g: 222, b: 179 }, - white: { r: 255, g: 255, b: 255 }, - whitesmoke: { r: 245, g: 245, b: 245 }, - yellow: { r: 255, g: 255, b: 0 }, - yellowgreen: { r: 154, g: 205, b: 50 }, -}; -// -export default colors; diff --git a/theme_old/styles/native/core/helpers/_functions/convertcolors.js b/theme_old/styles/native/core/helpers/_functions/convertcolors.js deleted file mode 100644 index d24f483..0000000 --- a/theme_old/styles/native/core/helpers/_functions/convertcolors.js +++ /dev/null @@ -1,228 +0,0 @@ -import colors from "./colorwords.js"; -/** - * - * Converts RGB color to HEX - * - * @param {number || string} r Accepts RGB as string || Accepts R as string or number - * @param {number || string} g Accepts G as string or number - * @param {number || string} b Accepts B as string or number - * - * @return {string} Returns HEX color - */ -function RgbToHex(r, g, b) { - if (typeof r === "string" && !g && !b) { - const color = r.replace(/rgb[(]|[)]/gm, ""); - [r, g, b] = color.split(","); - } - return "#" + ((1 << 24) + (Number(r) << 16) + (Number(g) << 8) + Number(b)).toString(16).slice(1); -} -/** - * - * Converts HEX or HEX Alpha to RGB - * - * @param {string} hex Accepts HEX color - * - * @return {object} Returns RGB color; {r,g,b} - */ -function hexToRgb(hex) { - hex = hex.substring(1); - hex = hex.length === 3 || hex.length === 4 ? [...hex].map(x => x + x).join("") : hex; - return rgbaToRgb({ - r: parseInt("0x" + hex[0] + hex[1], 16), - g: parseInt("0x" + hex[2] + hex[3], 16), - b: parseInt("0x" + hex[4] + hex[5], 16), - a: parseInt("0x" + hex[6] + hex[7], 16) / 255 || 1, - }); -} -/** - * - * Converts any color format to RGB string - * - * @param {string} anyColor Accepts any color format - * - * @return {string} Returns RGB color; `r,g,b` - */ -export function anyColorToRgbString(anyColor) { - const { r, g, b } = checkColor(anyColor); - return [r, g, b].join(","); -} -/** - * - * Converts HSL to RGB color - * - * @param {string} hsl Accepts HSL color - * - * @return {object} Returns RGB color; {r,g,b} - */ -function hslToRgb(hsl) { - let hslArray = hsl.replace(/hsla?[(]|[%]|[)]/gm, "").split(",").map(x => x.trim()); - let h = hslArray[0], s = Number(hslArray[1]) / 100, l = Number(hslArray[2]) / 100, a = 1; - // Strip label and convert to degrees (if necessary) - if (~h.indexOf("deg")) - h = h.substr(0, h.length - 3); - else if (~h.indexOf("rad")) - h = Math.round(Number(h.substr(0, h.length - 3)) * (180 / Math.PI)); - else if (~h.indexOf("turn")) - h = Math.round(Number(h.substr(0, h.length - 4)) * 360); - h = Number(h); - if (h >= 360) - h %= 360; // Keep hue fraction of 360 if h is higher than 360 - let r = 255, g = 255, b = 255; - const c = (1 - Math.abs(2 * l - 1)) * s; // chroma -> color intensity - const x = c * (1 - Math.abs(((h / 60) % 2) - 1)); // Second largest component (first being chroma) - const m = l - c / 2; // Amount to add to each channel to match lightness - if (0 <= h && h < 60) { - r = c; - g = x; - b = 0; - } - else if (60 <= h && h < 120) { - r = x; - g = c; - b = 0; - } - else if (120 <= h && h < 180) { - r = 0; - g = c; - b = x; - } - else if (180 <= h && h < 240) { - r = 0; - g = x; - b = c; - } - else if (240 <= h && h < 300) { - r = x; - g = 0; - b = c; - } - else if (300 <= h && h < 360) { - r = c; - g = 0; - b = x; - } - return rgbaToRgb({ - r: Math.round((r + m) * 255), - g: Math.round((g + m) * 255), - b: Math.round((b + m) * 255), - a, - }); -} -/** - * - * Convert RGB string with HEX or Word inside to RGB object - * - * @param {string} rgb Accepts RGB color as string - * - * @return {object} Returns RGB color; {r,g,b} - */ -function rgbStringToRgb(rgb) { - const color = rgb.replace(/rgb[(]|[)]/gm, ""); - // if RGB has hex color definition - if (~rgb.indexOf("#")) - return hexToRgb(color); - // if RGB has word color definition - else if (!(/\d/).test(rgb)) - return colors[color.toLowerCase()]; - // if RGB has RGB color definition - else { - const [r, g, b] = color.split(","); - [r, g, b].forEach(x => x.trim()); - return { r: Number(r), g: Number(g), b: Number(b) }; - } -} -/** - * - * Converts RGB Alpha to RGB object - * - * @param {string} rgba Accepts RGB Alpha color - * - * @return {object} Returns RGB color; {r,g,b} - */ -function rgbaToRgb(rgba) { - let newAlpha = 1; - let RGB = typeof rgba === "object" ? rgba : { r: 255, g: 255, b: 255 }; - const calc = (val) => Math.round(newAlpha * (val / 255) * 255); // Calc best color contrast values - // const calc = val => Math.round((RGB.a * (val / 255) + (RGB.a * ( 0 / 255))) * 255); // Calc best color contrast values - if (typeof rgba === "string") { - const val = rgba.replace(/rgba[(]|[)]/gm, ""); - const color = val.slice(0, val.lastIndexOf(",")).trim(); - const alpha = Number(val.slice(val.lastIndexOf(",") + 1).trim()); - // if RGBA has HEX color definition - if (color[0] === "#") - RGB = hexToRgb(color); - // if RGBA has word color definition - else if (!(/\d/).test(color)) - RGB = colors[color.toLowerCase()]; - // if RGBA has RGB color definition - else { - const [r, g, b] = color.split(","); - [r, g, b].forEach(x => Number(x.trim())); - RGB = { r: Number(r), g: Number(g), b: Number(b) }; - } - // RGB.a = alpha; - newAlpha = alpha === 1 ? 1 : Number((1 - alpha).toPrecision(2)); - } - return { r: calc(RGB.r), g: calc(RGB.g), b: calc(RGB.b) }; -} -/** - * - * Check what color format is being used. - * - * @param {string} color Accepts any color format - * - * @return {object} Returns RGB color; {r,g,b} - */ -function checkColor(color) { - if (color in colors) - return colors[color.toLowerCase()]; - else if (color[0] === "#") - return hexToRgb(color); - else if (~color.indexOf("hsl")) - return hslToRgb(color); - else if (~color.indexOf("rgba")) - return rgbaToRgb(color); - else if (~color.indexOf("rgb")) - return rgbStringToRgb(color); - return { r: 255, g: 255, b: 255 }; -} -/** - * - * Set best contrast color based on a (background) color - * - * @param {string} color Accepts any color format - * - * @return {string} Returns RGB Alpha color - */ -export function setColorBasedOnBackground(color) { - const c = checkColor(color); - const RGB = typeof c === "object" ? c : { r: 255, g: 255, b: 255 }; - // https://www.w3.org/TR/AERT/#color-contrast - const o = Math.round((RGB.r * 299 + RGB.g * 587 + RGB.b * 114) / 1000); - return o > 125 ? "rgba(0,0,0,.87)" : "rgba(255,255,255,.87)"; -} -/** - * - * Expects a color and a contrast value between 0 and 1.' - * It will look at the supplied color's brightness and will start the contrast scale either from #000 (black) or #FFF (white). - * This function will work best when you supply a very dark or very bright color. - * It will return a gray color with the desired contrast which is based on the specified color. - * - * @param {string} color Accepts any color format - * @param {number} contrast Accepts a value between 0 and 1 - * - * @return {string} Returns HEX color - */ -export function setContrastScale(contrast, color) { - if (contrast > 1) - contrast = 1; - if (contrast < 0) - contrast = 0; - const max = 256; - const c = checkColor(color); - const { r, g, b } = typeof c === "object" ? c : { r: 255, g: 255, b: 255 }; - // https://www.w3.org/TR/AERT/#color-contrast - const brightness = Math.round((r * 299 + g * 587 + b * 114) / 1000); - const value = Math.round(brightness > max / 2 ? max - max * contrast : max * contrast); - return RgbToHex(value, value, value); -} diff --git a/theme_old/styles/native/core/helpers/_functions/device.js b/theme_old/styles/native/core/helpers/_functions/device.js deleted file mode 100644 index a44011c..0000000 --- a/theme_old/styles/native/core/helpers/_functions/device.js +++ /dev/null @@ -1,24 +0,0 @@ -import { Platform } from "react-native"; -import DeviceInfo from "react-native-device-info"; -// -const isiPhoneModelWithNotch = () => { - const model = DeviceInfo.getDeviceId(); - if (model.includes("iPhone")) { - switch (model) { - case "iPhone10,6": // iPhone X GSM - case "iPhone11,2": // iPhone XS - case "iPhone11,4": // iPhone XS Max - case "iPhone11,6": // iPhone XS Max Global - case "iPhone11,8": // Iphone XR - case "iPhone12,1": // Iphone 11 - case "iPhone12,3": // Iphone 11 Pro - case "iPhone12,5": // Iphone 11 Pro Max - return true; - default: - return false; - } - } - return false; -}; -// -export const isIphoneWithNotch = DeviceInfo.hasNotch() || (Platform.OS === "ios" && isiPhoneModelWithNotch()); diff --git a/theme_old/styles/native/core/helpers/_functions/mergeobjects.js b/theme_old/styles/native/core/helpers/_functions/mergeobjects.js deleted file mode 100644 index 0590b3e..0000000 --- a/theme_old/styles/native/core/helpers/_functions/mergeobjects.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Merge 2 objects - * This function will look at every object property of the second object and will override the matching property in the first object - * - * @param {object[]} sources Array of 2 objects - * - * @return {object} Returns merged object - * - */ -export default function (...sources) { - function mergeDeep(target, ...sources) { - function isObject(item) { - return item && typeof item === "object" && !Array.isArray(item); - } - if (!sources.length) - return target; - const source = sources.shift(); - if (isObject(target) && isObject(source)) { - Object.keys(source).forEach((key) => { - if (isObject(source[key])) { - if (!target[key]) - Object.assign(target, { [key]: {} }); - mergeDeep(target[key], source[key]); - } - else { - Object.assign(target, { [key]: source[key] }); - } - }); - } - return mergeDeep(target, ...sources); - } - return mergeDeep({}, ...sources); -} diff --git a/theme_old/styles/native/core/helpers/_functions/shadeblendconvert.js b/theme_old/styles/native/core/helpers/_functions/shadeblendconvert.js deleted file mode 100644 index aeb99be..0000000 --- a/theme_old/styles/native/core/helpers/_functions/shadeblendconvert.js +++ /dev/null @@ -1,94 +0,0 @@ -/** - * Blend two colors or add a shade to color - * Colors can be: - * HEX => (#FFFFFF / #FFF) - * RGB => rgb(255,255,255) - * RGBA => rgba(255,255,255, 0.8) - * - * Usage: - * shade => shadeBlendConvert(-0.5, "#FFF") // Makes #FFF 50% darker - * shade => shadeBlendConvert(0.5, "#000") // Makes #000 50% lighter - * shade => shadeBlendConvert(0.5, "#000", "c") // Makes #000 50% lighter and converts HEX to RGB - * blend => shadeBlendConvert(0.2, "rgb(0,0,0)", "rgb(0,200,0)") // rgb(0,0,0) + rgb(0,200,0) + 20% Blend will become rgb(0,40,0) - * blend => shadeBlendConvert(-0.2, "rgb(0,0,0)", "rgb(0,200,0)") // rgb(0,0,0) + rgb(0,200,0) + -20% Blend will become rgb(0,160,0) - * blend => shadeBlendConvert(0.75, "rgb(200,60,20)", "#67DAF0") // rgb(200,60,20) + #67DAF0 + 75% Blend will become #7fb3b9 - * - * - * @param {number} c Amount of change. Value between -1 and 1 - * @param {string} fromValue HEX / RGB / RGBA Color - * @param {string} toValue HEX / RGB / RGBA Color to blend with. If (to === 'c') return value will be RGB Color - * - * @return {string} Returns HEX color or RGB color if parameter to === 'c' - * - */ -export function shadeBlendConvert(c, fromValue, toValue = undefined) { - if (typeof c != "number" || - c < -1 || - c > 1 || - typeof fromValue != "string" || - (fromValue[0] != "r" && fromValue[0] != "#") || - (toValue && typeof toValue != "string")) - return "red"; //ErrorCheck - const sbcRip = (value) => { - const l = value.length, RGB = []; - if (l > 9) { - const d = value.split(","); - if (d.length < 3 || d.length > 4) - return null; //ErrorCheck - (RGB[0] = i(d[0].split("(")[1])), - (RGB[1] = i(d[1])), - (RGB[2] = i(d[2])), - (RGB[3] = d[3] ? parseFloat(d[3]) : -1); - } - else { - let hex = ""; - if (l == 8 || l == 6 || l < 4) - return null; //ErrorCheck - if (l == 4 || l == 5) - hex = "#" + value[1] + value[1] + value[2] + value[2] + value[3] + value[3] + (l > 4 ? value[4] + "" + value[4] : ""); //3 or 4 digit - let d = i(hex.slice(1), 16); - RGB[0] = (d >> 16) & 255; - RGB[1] = (d >> 8) & 255; - RGB[2] = d & 255; - RGB[3] = -1; - if (l == 9 || l == 5) { - RGB[3] = r((RGB[2] / 255) * 10000) / 10000; - RGB[2] = RGB[1]; - RGB[1] = RGB[0]; - RGB[0] = (d >> 24) & 255; - } - } - return RGB; - }; - let i = parseInt, r = Math.round, th = fromValue.length > 9, h = typeof toValue == "string" ? (toValue.length > 9 ? true : toValue == "c" ? !th : false) : th, b = c < 0, p = b ? c * -1 : c, to = toValue && toValue != "c" ? toValue : b ? "#000000" : "#FFFFFF", f = sbcRip(fromValue), t = sbcRip(to); - if (!f || !t) - return "red"; //ErrorCheck - if (h) - return ("rgb" + - (f[3] > -1 || t[3] > -1 ? "a(" : "(") + - r((t[0] - f[0]) * p + f[0]) + - "," + - r((t[1] - f[1]) * p + f[1]) + - "," + - r((t[2] - f[2]) * p + f[2]) + - (f[3] < 0 && t[3] < 0 - ? ")" - : "," + - (f[3] > -1 && t[3] > -1 ? r(((t[3] - f[3]) * p + f[3]) * 10000) / 10000 : t[3] < 0 ? f[3] : t[3]) + - ")")); - else - return ("#" + - (0x100000000 + - r((t[0] - f[0]) * p + f[0]) * 0x1000000 + - r((t[1] - f[1]) * p + f[1]) * 0x10000 + - r((t[2] - f[2]) * p + f[2]) * 0x100 + - (f[3] > -1 && t[3] > -1 - ? r(((t[3] - f[3]) * p + f[3]) * 255) - : t[3] > -1 - ? r(t[3] * 255) - : f[3] > -1 - ? r(f[3] * 255) - : 255)) - .toString(16) - .slice(1, f[3] > -1 || t[3] > -1 ? undefined : -2)); -} diff --git a/theme_old/styles/native/core/helpers/activityindicator.js b/theme_old/styles/native/core/helpers/activityindicator.js deleted file mode 100644 index 97ac202..0000000 --- a/theme_old/styles/native/core/helpers/activityindicator.js +++ /dev/null @@ -1,30 +0,0 @@ -import { brand } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Activity Indicator - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Activity indicator Colors -export const activityIndicatorSuccess = { - indicator: { - color: brand.success, - }, -}; -export const activityIndicatorWarning = { - indicator: { - color: brand.warning, - }, -}; -export const activityIndicatorDanger = { - indicator: { - color: brand.danger, - }, -}; diff --git a/theme_old/styles/native/core/helpers/badge.js b/theme_old/styles/native/core/helpers/badge.js deleted file mode 100644 index d224531..0000000 --- a/theme_old/styles/native/core/helpers/badge.js +++ /dev/null @@ -1,47 +0,0 @@ -import { badge } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Badge - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Badge Colors -export const badgePrimary = { - container: { - backgroundColor: badge.primary.backgroundColor, - }, - caption: { - color: badge.primary.color, - }, -}; -export const badgeSuccess = { - container: { - backgroundColor: badge.success.backgroundColor, - }, - caption: { - color: badge.success.color, - }, -}; -export const badgeWarning = { - container: { - backgroundColor: badge.warning.backgroundColor, - }, - caption: { - color: badge.warning.color, - }, -}; -export const badgeDanger = { - container: { - backgroundColor: badge.danger.backgroundColor, - }, - caption: { - color: badge.danger.color, - }, -}; diff --git a/theme_old/styles/native/core/helpers/barchart.js b/theme_old/styles/native/core/helpers/barchart.js deleted file mode 100644 index 834992c..0000000 --- a/theme_old/styles/native/core/helpers/barchart.js +++ /dev/null @@ -1,11 +0,0 @@ -export const barChartSquare = { - chart: { - aspectRatio: 1 - } -}; -export const barChartMaxSpace = { - chart: { - flex: 1, - aspectRatio: undefined - } -}; diff --git a/theme_old/styles/native/core/helpers/buttons.js b/theme_old/styles/native/core/helpers/buttons.js deleted file mode 100644 index 80e7c6b..0000000 --- a/theme_old/styles/native/core/helpers/buttons.js +++ /dev/null @@ -1,208 +0,0 @@ -import { brand, button, contrast, font } from "../variables"; -import merge from "./_functions/mergeobjects"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Button - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Button Colors -export const btnSecondary = { - container: { - borderColor: button.secondary.borderColor, - backgroundColor: button.secondary.backgroundColor, - }, - icon: { - color: button.secondary.color, - }, - caption: { - color: button.secondary.color, - }, -}; -export const btnSuccess = { - container: { - borderColor: button.success.borderColor, - backgroundColor: button.success.backgroundColor, - }, - icon: { - color: button.success.color, - }, - caption: { - color: button.success.color, - }, -}; -export const btnWarning = { - container: { - borderColor: button.warning.borderColor, - backgroundColor: button.warning.backgroundColor, - }, - icon: { - color: button.warning.color, - }, - caption: { - color: button.warning.color, - }, -}; -export const btnDanger = { - container: { - borderColor: button.danger.borderColor, - backgroundColor: button.danger.backgroundColor, - }, - icon: { - color: button.danger.color, - }, - caption: { - color: button.danger.color, - }, -}; -export const btnPrimaryInversed = { - container: { - borderColor: button.primary.color, - backgroundColor: button.primary.color, - }, - icon: { - color: button.primary.backgroundColor, - }, - caption: { - color: button.primary.backgroundColor, - }, -}; -// -//== Extra Classes -//## Helper classes to change the look and feel of the widget -//-------------------------------------------------------------------------------------------------------------------// -export const btnSecondaryInversed = { - container: { - borderColor: button.secondary.inversedColor, - backgroundColor: button.secondary.backgroundColor, - }, - icon: { - color: button.secondary.inversedColor, - }, - caption: { - color: button.secondary.inversedColor, - }, -}; -// -// Button Icon Only -export const btnIcon = { - container: { - borderWidth: 0, - backgroundColor: "transparent", - paddingVertical: 0, - paddingHorizontal: 0, - }, - icon: { - color: font.color, - }, - caption: { - fontSize: 0, - }, -}; -export const btnIconPrimary = merge(btnIcon, { - icon: { - color: button.primary.backgroundColor, - }, -}); -export const btnIconSecondary = merge(btnIcon, { - icon: { - color: contrast.low, - }, -}); -export const btnIconSuccess = merge(btnIcon, { - icon: { - color: button.success.backgroundColor, - }, -}); -export const btnIconWarning = merge(btnIcon, { - icon: { - color: button.warning.backgroundColor, - }, -}); -export const btnIconDanger = merge(btnIcon, { - icon: { - color: button.danger.backgroundColor, - }, -}); -export const btnIconWhite = merge(btnIcon, { - icon: { - color: "#FFF", - }, -}); -// -export const btnIconGrayRounded = { - container: { - height: 80, - width: 80, - padding: 10, - borderRadius: 20, - borderWidth: 0, - backgroundColor: contrast.lowest, - }, - icon: { - size: 30, - color: contrast.high, - }, - caption: { - fontSize: 0, - }, -}; -// -// Round Button Icon With Background -export const btnIconPrimaryBackground = { - container: { - width: 40, - height: 40, - borderRadius: 20, - paddingVertical: 0, - paddingHorizontal: 0, - }, - icon: { - width: "100%", - height: "100%", - alignItems: "center", - justifyContent: "center", - size: button.fontSizeIconLarge, - color: button.primary.color, - }, -}; -// -// -// Text only -export const btnAsText = { - container: { - maxHeight: 22, - borderWidth: 0, - borderRadius: 0, - rippleColor: contrast.lowest, - backgroundColor: "transparent", - paddingVertical: 0, - paddingHorizontal: 0, - }, - icon: { - color: brand.primary, - size: button.fontSizeIcon, - }, - caption: { - color: brand.primary, - fontWeight: font.weightSemiBold, - fontSize: button.fontSize, - }, -}; -// -// Button sizes -export const btnLarge = { - icon: { - size: button.fontSizeIconLarge, - }, - caption: { - fontSize: button.fontSizeLarge, - }, -}; diff --git a/theme_old/styles/native/core/helpers/floatingactionbutton.js b/theme_old/styles/native/core/helpers/floatingactionbutton.js deleted file mode 100644 index 5d37bed..0000000 --- a/theme_old/styles/native/core/helpers/floatingactionbutton.js +++ /dev/null @@ -1,30 +0,0 @@ -import { brand } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Floating Action Button - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Floating Action Button Colors -export const floatingActionButtonSuccess = { - button: { - backgroundColor: brand.success, - }, -}; -export const floatingActionButtonWarning = { - button: { - backgroundColor: brand.warning, - }, -}; -export const floatingActionButtonDanger = { - button: { - backgroundColor: brand.danger, - }, -}; diff --git a/theme_old/styles/native/core/helpers/helperclasses.js b/theme_old/styles/native/core/helpers/helperclasses.js deleted file mode 100644 index 50ba7fb..0000000 --- a/theme_old/styles/native/core/helpers/helperclasses.js +++ /dev/null @@ -1,73 +0,0 @@ -import { Platform } from "react-native"; -import { background, border } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -*/ -// Hide on Android -export const hideOnAndroid = { - container: { - display: Platform.select({ ios: "flex", android: "none" }), - }, -}; -// Hide on iOS -export const hideOnIos = { - container: { - display: Platform.select({ ios: "none", android: "flex" }), - }, -}; -// -//== Background Colors -export const backgroundPrimary = { - container: { - backgroundColor: background.primary, - }, -}; -export const backgroundSecondary = { - container: { - backgroundColor: background.secondary, - }, -}; -export const backgroundBrandPrimary = { - container: { - backgroundColor: background.brandPrimary, - }, -}; -export const backgroundBrandSuccess = { - container: { - backgroundColor: background.brandSuccess, - }, -}; -export const backgroundBrandWarning = { - container: { - backgroundColor: background.brandWarning, - }, -}; -export const backgroundBrandDanger = { - container: { - backgroundColor: background.brandDanger, - }, -}; -export const backgroundGray = { - container: { - backgroundColor: background.gray, - }, -}; -// -// borders -export const borderTop = { - container: { - borderColor: border.color, - borderTopWidth: border.width, - }, -}; -export const borderBottom = { - container: { - borderColor: border.color, - borderBottomWidth: border.width, - }, -}; diff --git a/theme_old/styles/native/core/helpers/images.js b/theme_old/styles/native/core/helpers/images.js deleted file mode 100644 index cdfaaa2..0000000 --- a/theme_old/styles/native/core/helpers/images.js +++ /dev/null @@ -1,55 +0,0 @@ -import { border } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Image - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// -// -//== Extra Classes -//## Helper classes to change the look and feel of the widget -//-------------------------------------------------------------------------------------------------------------------// -// Image Sizes -export const thumbnail = { - image: { - width: "100%", - height: "auto", - aspectRatio: 1, - borderRadius: border.radius, - }, -}; -export const avatarSmall = { - image: { - width: 60, - height: 60, - borderRadius: 30, - }, -}; -export const avatarMedium = { - image: { - width: 80, - height: 80, - borderRadius: 40, - }, -}; -export const avatarLarge = { - image: { - width: 120, - height: 120, - borderRadius: 60, - }, -}; -export const inputIcon = { - image: { - width: 30, - height: 30, - }, -}; diff --git a/theme_old/styles/native/core/helpers/linechart.js b/theme_old/styles/native/core/helpers/linechart.js deleted file mode 100644 index 32eabbd..0000000 --- a/theme_old/styles/native/core/helpers/linechart.js +++ /dev/null @@ -1,11 +0,0 @@ -export const lineChartSquare = { - chart: { - aspectRatio: 1 - } -}; -export const lineChartMaxSpace = { - chart: { - flex: 1, - aspectRatio: undefined - } -}; diff --git a/theme_old/styles/native/core/helpers/listviews.js b/theme_old/styles/native/core/helpers/listviews.js deleted file mode 100644 index 8d98e1f..0000000 --- a/theme_old/styles/native/core/helpers/listviews.js +++ /dev/null @@ -1,41 +0,0 @@ -import { listView } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - List View - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// List item dividers -export const listItemBorderBottom = { - listItem: { - borderColor: listView.border.color, - borderBottomWidth: listView.border.width, - }, -}; -export const listItemBorderRight = { - listItem: { - borderColor: listView.border.color, - borderRightWidth: listView.border.width, - }, -}; -// -//== Extra Classes -//## Helper classes to change the look and feel of the widget -//-------------------------------------------------------------------------------------------------------------------// -export const listItemIconSmall = { - icon: { - size: 16, - }, -}; -export const listItemIconLarge = { - icon: { - size: 24, - }, -}; diff --git a/theme_old/styles/native/core/helpers/listviewswipe.js b/theme_old/styles/native/core/helpers/listviewswipe.js deleted file mode 100644 index 5f09712..0000000 --- a/theme_old/styles/native/core/helpers/listviewswipe.js +++ /dev/null @@ -1,37 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - List View Swipe - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -export const listViewSwipeSmallPanels = { - leftAction: { - // PanelSize & All ViewStyle properties are allowed - panelSize: 150, - }, - rightAction: { - // PanelSize & All ViewStyle properties are allowed - panelSize: 150, - }, -}; -export const listViewSwipeLargePanels = { - leftAction: { - // PanelSize & All ViewStyle properties are allowed - panelSize: 250, - }, - rightAction: { - // PanelSize & All ViewStyle properties are allowed - panelSize: 250, - }, -}; -// -//== Extra Classes -//## Helper classes to change the look and feel of the widget -//-------------------------------------------------------------------------------------------------------------------// diff --git a/theme_old/styles/native/core/helpers/maps.js b/theme_old/styles/native/core/helpers/maps.js deleted file mode 100644 index 20d3491..0000000 --- a/theme_old/styles/native/core/helpers/maps.js +++ /dev/null @@ -1,54 +0,0 @@ -import { border, brand } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Maps - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Maps Colors -export const mapsSuccess = { - marker: { - color: brand.success, - }, -}; -export const mapsWarning = { - marker: { - color: brand.warning, - }, -}; -export const mapsDanger = { - marker: { - color: brand.danger, - }, -}; -// -// Maps Size -export const mapsSquare = { - container: { - aspectRatio: 1 / 1, - }, -}; -export const mapsMaxSpace = { - container: { - flex: 1, - aspectRatio: undefined, - }, -}; -// -//== Extra Classes -//## Helper classes to change the look and feel of the widget -//-------------------------------------------------------------------------------------------------------------------// -// Maps Shape -export const mapsRounded = { - container: { - borderRadius: border.radius, - overflow: "hidden", - }, -}; diff --git a/theme_old/styles/native/core/helpers/progressbar.js b/theme_old/styles/native/core/helpers/progressbar.js deleted file mode 100644 index 92298fc..0000000 --- a/theme_old/styles/native/core/helpers/progressbar.js +++ /dev/null @@ -1,58 +0,0 @@ -import { Platform } from "react-native"; -import { anyColorToRgbString } from "./_functions/convertcolors"; -import { brand } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Progress Bar - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Progress Bar Color -export const progressBarSuccess = { - bar: { - borderColor: Platform.select({ ios: brand.success }), - backgroundColor: Platform.select({ android: `rgba(${anyColorToRgbString(brand.success)},0.2)` }), - }, - fill: { - backgroundColor: brand.success, - }, -}; -export const progressBarWarning = { - bar: { - borderColor: Platform.select({ ios: brand.warning }), - backgroundColor: Platform.select({ android: `rgba(${anyColorToRgbString(brand.warning)},0.2)` }), - }, - fill: { - backgroundColor: brand.warning, - }, -}; -export const progressBarDanger = { - bar: { - borderColor: Platform.select({ ios: brand.danger }), - backgroundColor: Platform.select({ android: `rgba(${anyColorToRgbString(brand.danger)},0.2)` }), - }, - fill: { - backgroundColor: brand.danger, - }, -}; -// -// Progress Bar Size -export const progressBarSmall = { - bar: { - height: 3, - borderRadius: Platform.select({ ios: 2 }), - }, -}; -export const progressBarLarge = { - bar: { - height: 10, - borderRadius: Platform.select({ ios: 8 }), - }, -}; diff --git a/theme_old/styles/native/core/helpers/progresscircle.js b/theme_old/styles/native/core/helpers/progresscircle.js deleted file mode 100644 index 393f0d7..0000000 --- a/theme_old/styles/native/core/helpers/progresscircle.js +++ /dev/null @@ -1,60 +0,0 @@ -import { brand, contrast, font } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Progress Circle - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Progress Circle Color -export const progressCircleSuccess = { - fill: { - backgroundColor: brand.success, - }, - text: { - color: contrast.regular, - }, -}; -export const progressCircleWarning = { - fill: { - backgroundColor: brand.warning, - }, - text: { - color: contrast.regular, - }, -}; -export const progressCircleDanger = { - fill: { - backgroundColor: brand.danger, - }, - text: { - color: contrast.regular, - }, -}; -export const progressCircleGray = { - fill: { - backgroundColor: contrast.regular, - }, - text: { - color: contrast.regular, - }, -}; -// -// Sizes -export const progressCircleSmall = { - circle: { - size: 50, - }, - fill: { - width: 3, - }, - text: { - fontSize: font.sizeSmall, - }, -}; diff --git a/theme_old/styles/native/core/helpers/rangeslider.js b/theme_old/styles/native/core/helpers/rangeslider.js deleted file mode 100644 index 09d0e58..0000000 --- a/theme_old/styles/native/core/helpers/rangeslider.js +++ /dev/null @@ -1,18 +0,0 @@ -import { sliderDanger, sliderSuccess, sliderWarning } from "./slider"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Range Slider - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Range Slider Color -export const rangeSliderSuccess = sliderSuccess; -export const rangeSliderWarning = sliderWarning; -export const rangeSliderDanger = sliderDanger; diff --git a/theme_old/styles/native/core/helpers/slider.js b/theme_old/styles/native/core/helpers/slider.js deleted file mode 100644 index e1f9443..0000000 --- a/theme_old/styles/native/core/helpers/slider.js +++ /dev/null @@ -1,40 +0,0 @@ -import { Platform } from "react-native"; -import { brand, contrast } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Slider - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Slider Color -export const sliderSuccess = { - highlight: { - backgroundColor: brand.success, - }, - highlightDisabled: { - backgroundColor: Platform.select({ ios: brand.success, android: contrast.low }), - }, -}; -export const sliderWarning = { - highlight: { - backgroundColor: brand.warning, - }, - highlightDisabled: { - backgroundColor: Platform.select({ ios: brand.warning, android: contrast.low }), - }, -}; -export const sliderDanger = { - highlight: { - backgroundColor: brand.danger, - }, - highlightDisabled: { - backgroundColor: Platform.select({ ios: brand.danger, android: contrast.low }), - }, -}; diff --git a/theme_old/styles/native/core/helpers/tabcontainer.js b/theme_old/styles/native/core/helpers/tabcontainer.js deleted file mode 100644 index 2d64f41..0000000 --- a/theme_old/styles/native/core/helpers/tabcontainer.js +++ /dev/null @@ -1,33 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Tab Container - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Enable scroll for the tab bar -export const tabContainerScroll = { - tabBar: { - scrollEnabled: true, - }, -}; -// -//== Extra Classes -//## Helper classes to change the look and feel of the widget -//-------------------------------------------------------------------------------------------------------------------// -// Tab container as content of page -export const tabContainerMinimal = { - container: { - backgroundColor: "transparent", - }, - tabBar: { - backgroundColor: "transparent", - elevation: 0, - }, -}; diff --git a/theme_old/styles/native/core/helpers/textbox.js b/theme_old/styles/native/core/helpers/textbox.js deleted file mode 100644 index ad07594..0000000 --- a/theme_old/styles/native/core/helpers/textbox.js +++ /dev/null @@ -1,34 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Text Box - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Text Box Color -export const textInputCapitalizeNone = { - input: { - autoCapitalize: "none", - }, -}; -export const textInputCapitalizeCharacters = { - input: { - autoCapitalize: "characters", - }, -}; -export const textInputCapitalizeWords = { - input: { - autoCapitalize: "words", - }, -}; -export const textInputCapitalizeSentences = { - input: { - autoCapitalize: "sentences", - }, -}; diff --git a/theme_old/styles/native/core/helpers/typography.js b/theme_old/styles/native/core/helpers/typography.js deleted file mode 100644 index b960e00..0000000 --- a/theme_old/styles/native/core/helpers/typography.js +++ /dev/null @@ -1,150 +0,0 @@ -import { brand, contrast, font } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Text - -//== Design Properties -//## Helper classes to change the look and feel of the widget -========================================================================== */ -// Text Colors -export const textPrimary = { - text: { - color: brand.primary, - }, -}; -export const textSuccess = { - text: { - color: brand.success, - }, -}; -export const textWarning = { - text: { - color: brand.warning, - }, -}; -export const textDanger = { - text: { - color: brand.danger, - }, -}; -export const textWhite = { - text: { - color: "#FFF", - }, -}; -// -export const textContrastLowest = { - text: { - color: contrast.lowest, - }, -}; -export const textContrastLower = { - text: { - color: contrast.lower, - }, -}; -export const textContrastLow = { - text: { - color: contrast.low, - }, -}; -export const textContrastDefault = { - text: { - color: contrast.regular, - }, -}; -export const textContrastHigh = { - text: { - color: contrast.high, - }, -}; -export const textContrastHigher = { - text: { - color: contrast.higher, - }, -}; -export const textContrastHighest = { - text: { - color: contrast.highest, - }, -}; -// -// Text Alignment -export const textLeft = { - text: { - textAlign: "left", - }, -}; -export const textCenter = { - text: { - textAlign: "center", - }, -}; -export const textRight = { - text: { - textAlign: "right", - }, -}; -// -// Text Weights -export const textLight = { - text: { - fontWeight: font.weightLight, - }, -}; -export const textNormal = { - text: { - fontWeight: font.weightNormal, - }, -}; -export const textSemiBold = { - text: { - fontWeight: font.weightSemiBold, - }, -}; -export const textBold = { - text: { - fontWeight: font.weightBold, - }, -}; -// -// Text Sizes -export const textSmall = { - text: { - fontSize: font.sizeSmall, - lineHeight: font.sizeSmall + 2, - }, -}; -export const textLarge = { - text: { - fontSize: font.sizeLarge, - lineHeight: font.sizeLarge + 2, - }, -}; -// -//== Extra Classes -//## Helper classes to change the look and feel of the widget -//-------------------------------------------------------------------------------------------------------------------// -// -// Text Transformations -export const textLowercase = { - text: { - textTransform: "lowercase", - }, -}; -export const textUppercase = { - text: { - textTransform: "uppercase", - }, -}; -export const textCapitalize = { - text: { - textTransform: "capitalize", - }, -}; diff --git a/theme_old/styles/native/core/manifest.json b/theme_old/styles/native/core/manifest.json deleted file mode 100644 index cddd493..0000000 --- a/theme_old/styles/native/core/manifest.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "Atlas-UI-Framework", - "version": "2.6.7" -} \ No newline at end of file diff --git a/theme_old/styles/native/core/variables.js b/theme_old/styles/native/core/variables.js deleted file mode 100644 index 7d8a092..0000000 --- a/theme_old/styles/native/core/variables.js +++ /dev/null @@ -1,287 +0,0 @@ -import { Platform } from "react-native"; -import * as custom from "../app/custom-variables"; -import adjustFont, { height, width } from "./helpers/_functions/adjustfont"; -import { anyColorToRgbString, setColorBasedOnBackground, setContrastScale } from "./helpers/_functions/convertcolors"; -import merge from "./helpers/_functions/mergeobjects"; -// -// -//== Global variables -//## Variables to be used during styling -//-------------------------------------------------------------------------------------------------------------------// -// System defined read-only values -export const deviceHeight = height; -export const deviceWidth = width; -// -// Brand Style -let brand = { - primary: "#0595DB", - success: "#76CA02", - warning: "#f99b1d", - danger: "#ed1c24", - primaryLight: `rgba(${anyColorToRgbString("#0595DB")}, 0.14)`, - successLight: `rgba(${anyColorToRgbString("#76CA02")}, 0.14)`, - warningLight: `rgba(${anyColorToRgbString("#f99b1d")}, 0.14)`, - dangerLight: `rgba(${anyColorToRgbString("#ed1c24")}, 0.14)`, -}; -brand = merge(brand, custom.brand || {}); -// -// Background colors -let background = { - primary: "#FFF", - secondary: setContrastScale(0.03, "#FFF"), - gray: "#c6c6cc", - brandPrimary: brand.primary, - brandSuccess: brand.success, - brandWarning: brand.warning, - brandDanger: brand.danger, -}; -background = merge(background, custom.background || {}); -// -// Contrast (Gray) colors based on background.primary -let contrast = { - highest: setContrastScale(0.95, background.primary), - higher: setContrastScale(0.8, background.primary), - high: setContrastScale(0.65, background.primary), - regular: setContrastScale(0.5, background.primary), - low: setContrastScale(0.35, background.primary), - lower: setContrastScale(0.2, background.primary), - lowest: setContrastScale(0.05, background.primary), -}; -contrast = merge(contrast, custom.contrast || {}); -// -// Border Style -let border = { - color: setContrastScale(0.17, background.primary), - width: 1, - radius: 5, -}; -border = merge(border, custom.border || {}); -// -// Font Styles -let font = { - size: adjustFont(14), - sizeSmall: adjustFont(12), - sizeLarge: adjustFont(18), - sizeH1: adjustFont(31), - sizeH2: adjustFont(26), - sizeH3: adjustFont(24), - sizeH4: adjustFont(18), - sizeH5: adjustFont(14), - sizeH6: adjustFont(12), - color: setColorBasedOnBackground(background.primary), - colorDisabled: "#9DA1A8", - labelColorDisabled: "#474E5C", - weightLight: "100", - weightNormal: "normal", - weightSemiBold: "600", - weightBold: "bold", - family: Platform.select({ ios: "System", android: "normal" }), -}; -font = merge(font, custom.font || {}); -// -// Spacing -let spacing = { - smallest: 5, - smaller: 10, - small: 15, - regular: 20, - large: 25, - larger: 30, - largest: 40, -}; -spacing = merge(spacing, custom.spacing || {}); -// -// Button Styles -let button = { - fontSize: font.sizeSmall, - fontSizeLarge: font.size, - fontWeight: font.weightBold, - fontSizeIcon: font.sizeSmall, - fontSizeIconLarge: font.size, - borderRadius: border.radius, - paddingVertical: spacing.smaller, - paddingHorizontal: spacing.regular, - header: { - color: contrast.highest, - borderColor: "transparent", - backgroundColor: "transparent", - fontSize: font.sizeSmall, - fontSizeIcon: font.sizeSmall, - paddingLeft: 0, - paddingRight: 10, - }, - primary: { - color: "#FFF", - colorDisabled: font.colorDisabled, - borderColor: brand.primary, - borderColorDisabled: border.color, - backgroundColor: brand.primary, - backgroundColorDisabled: border.color, - }, - secondary: { - color: brand.primary, - borderColor: brand.primary, - backgroundColor: "transparent", - inversedColor: "#FFF", - }, - success: { - color: "#FFF", - borderColor: brand.success, - backgroundColor: brand.success, - }, - warning: { - color: "#FFF", - borderColor: brand.warning, - backgroundColor: brand.warning, - }, - danger: { - color: "#FFF", - borderColor: brand.danger, - backgroundColor: brand.danger, - }, -}; -button = merge(button, custom.button || {}); -// -//Input Styles -let input = { - // Colors - color: font.color, - colorDisabled: font.colorDisabled, - errorColor: brand.danger, - labelColor: font.color, - labelColorDisabled: font.labelColorDisabled, - borderColor: contrast.lower, - borderColorFocused: brand.primary, - backgroundColor: background.primary, - backgroundColorDisabled: background.secondary, - selectionColor: contrast.lower, - placeholderTextColor: contrast.regular, - underlineColorAndroid: "transparent", - inputContainerUnderlayColor: `rgba(${anyColorToRgbString(contrast.low)},0.4)`, - // Sizes - fontSize: font.size, - fontFamily: font.family, - borderWidth: border.width, - borderRadius: border.radius, - // Alignment - textAlign: "left", - paddingHorizontal: spacing.smaller, - paddingVertical: spacing.small, -}; -input = merge(input, custom.input || {}); -// -// Navigation Styles -let navigation = { - statusBar: { - backgroundColor: background.primary, - barStyle: custom.darkMode ? "light-content" : "dark-content", - }, - topBar: { - backgroundColor: background.primary, - backButtonColor: contrast.highest, - titleColor: contrast.highest, - titleFontSize: Platform.select({ android: font.sizeH4, ios: font.sizeH5 }), - }, - bottomBar: { - color: contrast.high, - selectedTextColor: contrast.high, - selectedIconColor: brand.primary, - backgroundColor: background.primary, - fontSize: font.sizeSmall, - iconSize: font.sizeSmall, - }, - progressOverlay: { - color: font.color, - activityIndicatorColor: font.color, - backgroundColor: `rgba(0, 0, 0, 0.5)`, - containerBackgroundColor: background.secondary, - fontSize: font.size, - borderRadius: border.radius, - elevation: 1.5, - shadowColor: "#000", - shadowOpacity: 0.1, - shadowRadius: 10, - }, -}; -navigation = merge(navigation, custom.navigation || {}); -// -// Badge Styles -let badge = { - fontWeight: font.weightBold, - borderRadius: 30, - paddingVertical: 3, - paddingHorizontal: spacing.smaller, - default: { - color: contrast.higher, - backgroundColor: contrast.lower, - }, - primary: { - color: brand.primary, - backgroundColor: brand.primaryLight, - }, - success: { - color: brand.success, - backgroundColor: brand.successLight, - }, - warning: { - color: brand.warning, - backgroundColor: brand.warningLight, - }, - danger: { - color: brand.danger, - backgroundColor: brand.dangerLight, - }, -}; -badge = merge(badge, custom.badge || {}); -// -// Tabcontainer Styles -let tabContainer = { - tabBar: { - pressColor: contrast.lower, - backgroundColor: background.primary, - }, - indicator: { - backgroundColor: brand.primary, - height: Platform.select({ ios: 2, android: 2 }), - }, - label: { - color: contrast.highest, - fontWeight: font.weightBold, - textTransform: "uppercase", - }, - activeLabel: { - color: brand.primary, - fontWeight: font.weightBold, - textTransform: "uppercase", - }, - badgeContainer: { - borderRadius: badge.borderRadius, - backgroundColor: badge.default.backgroundColor, - paddingVertical: badge.paddingVertical, - paddingHorizontal: badge.paddingHorizontal, - marginLeft: 8 - }, - badgeCaption: { - fontSize: font.size, - color: badge.default.color, - fontWeight: badge.fontWeight, - } -}; -tabContainer = merge(tabContainer, custom.tabContainer || {}); -// -// Listview Styles -let listView = { - border: { - color: border.color, - width: border.width, - }, -}; -listView = merge(listView, custom.listView || {}); -// -// Layoutgrid Styles -let layoutGrid = { - gutterSize: 15, -}; -layoutGrid = merge(layoutGrid, custom.layoutGrid || {}); -// -export { brand, background, border, contrast, font, spacing, button, input, navigation, tabContainer, listView, layoutGrid, badge, }; diff --git a/theme_old/styles/native/core/widgets/activityindicator.js b/theme_old/styles/native/core/widgets/activityindicator.js deleted file mode 100644 index 088542b..0000000 --- a/theme_old/styles/native/core/widgets/activityindicator.js +++ /dev/null @@ -1,23 +0,0 @@ -import { brand } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Activity Indicator - - Default Class For Mendix Activity Indicator Widget -========================================================================== */ -export const com_mendix_widget_native_activityindicator_ActivityIndicator = { - container: { - // All ViewStyle properties are allowed - }, - indicator: { - // Color and size are allowed - color: brand.primary, - size: "large", - }, -}; diff --git a/theme_old/styles/native/core/widgets/animation.js b/theme_old/styles/native/core/widgets/animation.js deleted file mode 100644 index bfef391..0000000 --- a/theme_old/styles/native/core/widgets/animation.js +++ /dev/null @@ -1,15 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Animation - - Default Class For Mendix Animation Widget -========================================================================== */ -export const com_mendix_widget_native_animation_Animation = { - container: {}, -}; diff --git a/theme_old/styles/native/core/widgets/backgroundimage.js b/theme_old/styles/native/core/widgets/backgroundimage.js deleted file mode 100644 index bd79f14..0000000 --- a/theme_old/styles/native/core/widgets/backgroundimage.js +++ /dev/null @@ -1,19 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. -// -/* ========================================================================== - Background Image - - Default Class For Mendix Background Image Widget -========================================================================== */ -export const com_mendix_widget_native_backgroundimage_BackgroundImage = { - container: { - // All ViewStyle properties are allowed - }, - image: { - // svgColor and all ImageStyle properties are allowed - }, -}; diff --git a/theme_old/styles/native/core/widgets/badge.js b/theme_old/styles/native/core/widgets/badge.js deleted file mode 100644 index d34de33..0000000 --- a/theme_old/styles/native/core/widgets/badge.js +++ /dev/null @@ -1,29 +0,0 @@ -import { badge, font } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Badge - - Default Class For Mendix Badge Widget -========================================================================== */ -export const com_mendix_widget_native_badge_Badge = { - container: { - // All ViewStyle properties are allowed - borderRadius: badge.borderRadius, - backgroundColor: badge.default.backgroundColor, - paddingVertical: badge.paddingVertical, - paddingHorizontal: badge.paddingHorizontal, - }, - caption: { - // All TextStyle properties are allowed - color: badge.default.color, - fontFamily: font.family, - fontWeight: badge.fontWeight, - marginTop: -1, - }, -}; diff --git a/theme_old/styles/native/core/widgets/barchart.js b/theme_old/styles/native/core/widgets/barchart.js deleted file mode 100644 index cfcf64d..0000000 --- a/theme_old/styles/native/core/widgets/barchart.js +++ /dev/null @@ -1,169 +0,0 @@ -import { border, brand, font, spacing } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Line Chart - - Default Class For Mendix Line Chart Widget -========================================================================== */ -// eslint-disable-next-line @typescript-eslint/camelcase -export const com_mendix_widget_native_barchart_BarChart = { - container: { - // All ViewStyle properties are allowed - }, - errorMessage: { - // All TextStyle properties are allowed - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal - }, - chart: { - // All ViewStyle properties are allowed - }, - grid: { - /* - Allowed properties: - - backgroundColor (string) - - dashArray (string) - - lineColor (string) - - padding (number) - - paddingBottom (number) - - paddingHorizontal (number) - - paddingLeft (number) - - paddingRight (number) - - paddingTop (number) - - paddingVertical (number) - - width (number) - */ - lineColor: border.color, - paddingBottom: 32, - paddingLeft: 32, - paddingRight: 8, - paddingTop: 8 - }, - xAxis: { - /* - Allowed properties: - - color (string) - - dashArray (string) - - fontFamily (string) - - fontSize (number) - - fontStyle ("normal" or "italic") - - fontWeight ("normal" or "bold" or "100" or "200" or "300" or "400" or "500" or "600" or "700" or "800" or "900") - - lineColor (string) - - width (number) - */ - color: font.color, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - lineColor: border.color, - label: { - /* - All TextStyle properties are allowed and: - - relativePositionGrid ("bottom" or "right") - */ - color: font.color, - alignSelf: "center", - marginHorizontal: 0, - marginVertical: spacing.smallest, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - relativePositionGrid: "bottom" - }, - }, - yAxis: { - /* - Allowed properties: - - color (string) - - dashArray (string) - - fontFamily (string) - - fontSize (number) - - fontStyle ("normal" or "italic") - - fontWeight ("normal" or "bold" or "100" or "200" or "300" or "400" or "500" or "600" or "700" or "800" or "900") - - lineColor (string) - - width (number) - */ - color: font.color, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - lineColor: border.color, - label: { - /* - All TextStyle properties are allowed and: - - relativePositionGrid ("top" or "left") - */ - color: font.color, - marginHorizontal: 0, - marginVertical: spacing.smallest, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - relativePositionGrid: "top" - }, - }, - bars: { - /* - Allowed properties: - - barColorPalette (string with array of colors separated by ';') - - barsOffset (number) - - */ - barColorPalette: Object.values(brand) - .map((color, index, brandColors) => (index === brandColors.length - 1 ? color : `${color};`)) - .join(""), - barsOffset: 20, - customBarStyles: { - your_static_or_dynamic_attribute_value: { - bar: { - /* - Allowed properties: - - ending (number) - - barColor (string) - - width (number) - */ - }, - label: { - /* - Allowed properties: - - fontFamily (string) - - fontSize (number) - - fontStyle ("normal" or "italic") - - fontWeight ("normal" or "bold" or "100" or "200" or "300" or "400" or "500" or "600" or "700" or "800" or "900") - */ - } - } - } - }, - legend: { - container: { - // All ViewStyle properties are allowed - justifyContent: "flex-start", - marginHorizontal: 0, - marginVertical: spacing.smallest - }, - item: { - // All ViewStyle properties are allowed - padding: 0, - paddingRight: spacing.smaller - }, - indicator: { - // All ViewStyle properties are allowed - marginRight: spacing.smallest - }, - label: { - // All TextStyle properties are allowed - color: font.color, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal - } - } -}; diff --git a/theme_old/styles/native/core/widgets/bottomsheet.js b/theme_old/styles/native/core/widgets/bottomsheet.js deleted file mode 100644 index f4e3177..0000000 --- a/theme_old/styles/native/core/widgets/bottomsheet.js +++ /dev/null @@ -1,67 +0,0 @@ -import { background, border, brand, contrast, font } from "../variables"; -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. -// -/* ========================================================================== - Bottom Sheet - - Default Class For Mendix Bottom Sheet Widget -========================================================================== */ -export const com_mendix_widget_native_bottomsheet_BottomSheet = { - container: { - // All ViewStyle properties are allowed - backgroundColor: background.primary, - borderRadius: border.radius, - elevation: 20, - shadowColor: "#000", - shadowOpacity: 0.1, - shadowRadius: 6, - shadowOffset: { - width: 0, - height: -4, - }, - }, - containerWhenExpandedFullscreen: { - // All ViewStyle properties are allowed - height: "100%", - alignSelf: "stretch", - backgroundColor: background.primary, - }, - modal: { - // All ViewStyle properties are allowed - margin: 0, - justifyContent: "flex-end", - }, - modalItems: { - container: { - // rippleColor & All TextStyle properties are allowed - height: 50, - marginTop: 0, - rippleColor: contrast.lower, - backgroundColor: background.primary, - }, - defaultStyle: { - // All TextStyle properties are allowed - fontSize: 16, - color: font.color, - }, - primaryStyle: { - // All TextStyle properties are allowed - fontSize: 16, - color: brand.primary, - }, - dangerStyle: { - // All TextStyle properties are allowed - fontSize: 16, - color: brand.danger, - }, - customStyle: { - // All TextStyle properties are allowed - fontSize: 16, - color: font.color, - }, - }, -}; diff --git a/theme_old/styles/native/core/widgets/buttons.js b/theme_old/styles/native/core/widgets/buttons.js deleted file mode 100644 index 7813ea6..0000000 --- a/theme_old/styles/native/core/widgets/buttons.js +++ /dev/null @@ -1,72 +0,0 @@ -import { button, contrast, font } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Button - - Default Class For Mendix Button Widget -========================================================================== */ -export const ActionButton = { - container: { - // Ripplecolor and all ViewStyle properties are allowed - borderWidth: 1, - borderStyle: "solid", - rippleColor: contrast.lowest, - borderColor: button.primary.borderColor, - backgroundColor: button.primary.backgroundColor, - alignItems: "center", - justifyContent: "center", - borderRadius: button.borderRadius, - paddingVertical: button.paddingVertical, - paddingHorizontal: button.paddingHorizontal, - }, - containerDisabled: { - // All ViewStyle properties are allowed - borderColor: button.primary.borderColorDisabled, - backgroundColor: button.primary.backgroundColorDisabled, - }, - icon: { - // size and color are allowed - color: button.primary.color, - size: button.fontSizeIcon, - }, - iconDisabled: { - // size and color are allowed - color: button.primary.colorDisabled, - }, - caption: { - // All TextStyle properties are allowed - color: button.primary.color, - fontSize: button.fontSize, - fontFamily: font.family, - fontWeight: button.fontWeight, - }, - captionDisabled: { - // All TextStyle properties are allowed - color: button.primary.colorDisabled, - }, -}; -// -// Default style for button inside a header -export const ActionButtonHeader = { - container: { - borderColor: button.header.borderColor, - backgroundColor: button.header.backgroundColor, - paddingLeft: button.header.paddingLeft, - paddingRight: button.header.paddingRight, - }, - icon: { - color: button.header.color, - size: button.header.fontSizeIcon, - }, - caption: { - color: button.header.color, - fontSize: button.header.fontSize, - fontFamily: font.family, - }, -}; diff --git a/theme_old/styles/native/core/widgets/carousel.js b/theme_old/styles/native/core/widgets/carousel.js deleted file mode 100644 index 09b071e..0000000 --- a/theme_old/styles/native/core/widgets/carousel.js +++ /dev/null @@ -1,119 +0,0 @@ -import { brand, contrast, font, spacing } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Button - - Default Class For Mendix Carousel Widget -========================================================================== */ -// Card -const carouselFullWidthLayout = { - slideItem: { - // All ViewStyle properties are allowed - height: 250, - }, - inactiveSlideItem: { - // Only opacity and scale are allowed - }, - pagination: { - container: { - // All ViewStyle properties are allowed - position: "absolute", - bottom: 0, - width: "100%", - justifyContent: "center", - paddingHorizontal: spacing.regular, - paddingBottom: spacing.regular, - }, - text: { - // All TextStyle properties are allowed - color: "#FFF", - fontSize: font.size, - fontFamily: font.family, - textAlign: "center", - textShadowColor: "#888", - textShadowRadius: 3, - textShadowOffset: { - width: 0, - height: 1, - }, - }, - dotContainerStyle: { - // All ViewStyle properties are allowed - marginHorizontal: 3, - }, - dotStyle: { - // Color and all ViewStyle properties are allowed - color: "#FFF", - }, - inactiveDotStyle: { - // Only opacity, scale and color are allowed - color: "rgba(255, 255, 255, 0.45)", - scale: 1, - }, - }, -}; -const carouselCardLayout = { - slideItem: { - // All ViewStyle properties are allowed - width: "70%", - height: 250, - padding: 8, - paddingBottom: spacing.regular, - elevation: 1.5, - shadowColor: "#000", - shadowOpacity: 0.5, - shadowRadius: 6, - shadowOffset: { - width: 0, - height: 4, - }, - }, - inactiveSlideItem: { - // Only opacity and scale are allowed - opacity: .8, - }, - pagination: { - container: { - // All ViewStyle properties are allowed - paddingHorizontal: spacing.regular, - paddingBottom: spacing.smaller, - }, - text: { - // All TextStyle properties are allowed - color: font.color, - fontSize: font.size, - fontFamily: font.family, - textAlign: "center", - }, - dotContainerStyle: { - // All ViewStyle properties are allowed - marginHorizontal: 3, - }, - dotStyle: { - // Color and all ViewStyle properties are allowed - color: brand.primary, - }, - inactiveDotStyle: { - // Only opacity, scale and color are allowed - color: contrast.lower, - scale: 1, - }, - }, -}; -export const com_mendix_widget_native_carousel_Carousel = { - container: { - // All ViewStyle properties are allowed - }, - fullWidthLayout: carouselFullWidthLayout, - cardLayout: carouselCardLayout, - activityIndicator: { - // Only color is allowed - color: font.color, - }, -}; diff --git a/theme_old/styles/native/core/widgets/checkbox.js b/theme_old/styles/native/core/widgets/checkbox.js deleted file mode 100644 index bcfa729..0000000 --- a/theme_old/styles/native/core/widgets/checkbox.js +++ /dev/null @@ -1,86 +0,0 @@ -import { Platform } from "react-native"; -import { background, border, brand, contrast, font, spacing } from "../variables"; -import { TextBox, TextBoxVertical } from "./textbox"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - CheckBox - - Default Class For Mendix CheckBox Widget -========================================================================== */ -export const CheckBox = { - container: { - // All ViewStyle properties are allowed - ...TextBox.container, - paddingVertical: spacing.smallest, - justifyContent: "center", - }, - containerDisabled: { - // All ViewStyle properties are allowed - ...TextBox.containerDisabled - }, - label: { - // numberOfLines and all TextStyle properties are allowed - ...TextBox.label, - }, - labelDisabled: { - // All TextStyle properties are allowed - ...TextBox.labelDisabled - }, - input: { - // thumbColorOn, thumbColorOff, trackColorOn, trackColorOff and all TextStyle properties are allowed - backgroundColor: "transparent", - marginRight: Platform.select({ android: -3 }), - thumbColorOn: background.primary, - trackColorOn: brand.success, - thumbColorOff: contrast.regular, - trackColorOff: contrast.lower, - }, - inputDisabled: { - // thumbColorOn, thumbColorOff, trackColorOn, trackColorOff and all TextStyle properties are allowed - thumbColorOn: background.secondary, - trackColorOn: font.colorDisabled, - thumbColorOff: background.secondary, - trackColorOff: border.color, - }, - inputError: { - // thumbColorOn, thumbColorOff, trackColorOn, trackColorOff and all TextStyle properties are allowed - ...TextBox.inputError, - thumbColorOn: background.primary, - trackColorOn: brand.danger, - thumbColorOff: contrast.regular, - trackColorOff: brand.danger, - }, - validationMessage: { - // All TextStyle properties are allowed - ...TextBox.validationMessage, - alignSelf: "stretch", - }, -}; -export const CheckBoxVertical = { - container: TextBoxVertical.container, - containerDisabled: TextBoxVertical.containerDisabled, - label: TextBoxVertical.label, - labelDisabled: TextBoxVertical.labelDisabled, - input: { - ...CheckBox.input, - alignSelf: "flex-start", - }, - inputDisabled: CheckBox.inputDisabled, - inputError: { - ...TextBoxVertical.inputError, - thumbColorOn: background.primary, - trackColorOn: brand.danger, - thumbColorOff: contrast.regular, - trackColorOff: brand.danger, - }, - validationMessage: { - ...TextBoxVertical.validationMessage, - alignSelf: "stretch", - }, -}; diff --git a/theme_old/styles/native/core/widgets/colorpicker.js b/theme_old/styles/native/core/widgets/colorpicker.js deleted file mode 100644 index 020e2e3..0000000 --- a/theme_old/styles/native/core/widgets/colorpicker.js +++ /dev/null @@ -1,20 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Color Picker - - Default Class For Mendix Color Picker Widget -========================================================================== */ -export const com_mendix_widget_native_colorpicker_ColorPicker = { - container: { - // All ViewStyle properties are allowed - }, - thumbnail: { - // All ViewStyle properties are allowed - }, -}; diff --git a/theme_old/styles/native/core/widgets/container.js b/theme_old/styles/native/core/widgets/container.js deleted file mode 100644 index ed3553a..0000000 --- a/theme_old/styles/native/core/widgets/container.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Container - - Default Class For Mendix Container Widget -========================================================================== */ -export const Container = { - container: { - // rippleColor & all ViewStyle properties are allowed - }, - containerDisabled: { - // All ViewStyle properties are allowed - opacity: 0.6 - } -}; -export const ScrollContainer = { - container: { - // All ViewStyle properties are allowed - }, -}; diff --git a/theme_old/styles/native/core/widgets/datepicker.js b/theme_old/styles/native/core/widgets/datepicker.js deleted file mode 100644 index a30e2d3..0000000 --- a/theme_old/styles/native/core/widgets/datepicker.js +++ /dev/null @@ -1,84 +0,0 @@ -import { background, font, input } from "../variables"; -import { TextBox, TextBoxVertical } from "./textbox"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Date Picker - - Default Class For Mendix Date Picker Widget -========================================================================== */ -export const DatePicker = { - container: { - // All ViewStyle properties are allowed - ...TextBox.container, - }, - containerDisabled: { - // All ViewStyle properties are allowed - ...TextBox.containerDisabled - }, - label: { - // numberOfLines and all TextStyle properties are allowed - ...TextBox.label, - }, - labelDisabled: { - // All TextStyle properties are allowed - ...TextBox.labelDisabled - }, - pickerIOS: { - // All ViewStyle properties & "color" (type: string) are allowed - backgroundColor: background.primary, - color: font.color, - }, - pickerBackdropIOS: { - // All ViewStyle properties are allowed - }, - pickerTopIOS: { - // All ViewStyle properties are allowed - backgroundColor: background.primary, - }, - value: { - // All TextStyle properties are allowed - color: input.color, - borderColor: input.borderColor, - backgroundColor: input.backgroundColor, - fontSize: input.fontSize, - fontFamily: font.family, - borderWidth: input.borderWidth, - borderRadius: input.borderRadius, - paddingHorizontal: input.paddingHorizontal, - paddingVertical: input.paddingVertical, - }, - valueDisabled: { - // All TextStyle properties are allowed - backgroundColor: input.backgroundColorDisabled, - color: input.colorDisabled - }, - placeholder: { - // All TextStyle properties are allowed - color: input.placeholderTextColor, - }, - placeholderDisabled: { - // All TextStyle properties are allowed - color: input.colorDisabled - }, - validationMessage: { - // All TextStyle properties are allowed - ...TextBox.validationMessage, - }, -}; -export const DatePickerVertical = { - container: TextBoxVertical.container, - containerDisabled: TextBoxVertical.containerDisabled, - label: TextBoxVertical.label, - labelDisabled: TextBoxVertical.labelDisabled, - value: DatePicker.value, - valueDisabled: DatePicker.valueDisabled, - placeholder: DatePicker.placeholder, - placeholderDisabled: DatePicker.placeholderDisabled, - validationMessage: TextBoxVertical.validationMessage, -}; diff --git a/theme_old/styles/native/core/widgets/dropdown.js b/theme_old/styles/native/core/widgets/dropdown.js deleted file mode 100644 index 3a03dc6..0000000 --- a/theme_old/styles/native/core/widgets/dropdown.js +++ /dev/null @@ -1,141 +0,0 @@ -import { border, contrast, font, input } from "../variables"; -import { TextBox, TextBoxVertical } from "./textbox"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Drop Down - - Default Class For Mendix Drop Down Widget -========================================================================== */ -export const DropDown = { - container: { - // All ViewStyle properties are allowed - ...TextBox.container, - }, - containerDisabled: { - // All ViewStyle properties are allowed - ...TextBox.containerDisabled - }, - label: { - // numberOfLines and all TextStyle properties are allowed - ...TextBox.label, - }, - labelDisabled: { - // All TextStyle properties are allowed - ...TextBox.labelDisabled - }, - value: { - // All TextStyle properties & placeholderTextColor are allowed - color: input.color, - fontSize: input.fontSize, - fontFamily: input.fontFamily, - placeholderTextColor: input.placeholderTextColor, - }, - validationMessage: { - // All TextStyle properties are allowed - ...TextBox.validationMessage, - }, - /* New dropdown styles start */ - valueFocused: { - // All TextStyle properties are allowed - }, - valueDisabled: { - // All TextStyle properties are allowed - ...TextBox.inputDisabled - }, - valueContainer: { - // All ViewStyle properties & rippleColor are allowed - flexDirection: "row", - justifyContent: "space-between", - alignItems: "center", - borderWidth: input.borderWidth, - borderRadius: input.borderRadius, - borderColor: input.borderColor, - paddingHorizontal: input.paddingHorizontal, - paddingVertical: input.paddingVertical, - backgroundColor: input.backgroundColor, - }, - valueContainerFocused: { - // All ViewStyle properties are allowed - ...TextBox.inputFocused - }, - valueContainerDisabled: { - // All ViewStyle properties are allowed - }, - menuWrapper: { - // All ViewStyle properties are allowed - borderRadius: border.radius, - shadowColor: "#000", - shadowOpacity: 0.2, - shadowRadius: 10, - elevation: 16, - backgroundColor: input.backgroundColor, - }, - itemContainer: { - // All ViewStyle properties & rippleColor & activeOpacity & underlayColor are allowed - maxWidth: 500, - paddingVertical: 6, - paddingHorizontal: 16, - backgroundColor: input.backgroundColor, - underlayColor: input.inputContainerUnderlayColor, - }, - iconStyle: { - // All TextStyle properties are allowed - color: input.color - }, - item: { - // All TextStlye properties are allowed - color: input.color, - }, - selectedItem: { - // All TextStlye properties are allowed - fontWeight: font.weightBold, - }, - selectedItemContainer: { - // All ViewStyle properties are allowed - backgroundColor: contrast.lowest, - }, - /* New dropdown styles end */ - useUniformDesign: true, - /* Old dropdown styles start */ - pickerIOS: { - // All ViewStyle properties are allowed - backgroundColor: input.backgroundColor, - }, - pickerItemIOS: { - // All TextStyle properties are allowed - }, - pickerBackdropIOS: { - // All ViewStyle properties are allowed - }, - pickerTopIOS: { - // All ViewStyle properties are allowed - backgroundColor: input.backgroundColor, - }, -}; -export const DropDownVertical = { - container: TextBoxVertical.container, - containerDisabled: TextBoxVertical.containerDisabled, - label: TextBoxVertical.label, - labelDisabled: TextBoxVertical.labelDisabled, - value: DropDown.value, - valueFocused: DropDown.valueFocused, - validationMessage: TextBoxVertical.validationMessage, - valueContainer: DropDown.valueContainer, - valueContainerFocused: DropDown.valueContainerFocused, - valueContainerDisabled: DropDown.valueContainerDisabled, - menuWrapper: DropDown.menuWrapper, - itemContainer: DropDown.itemContainer, - item: DropDown.item, - iconStyle: DropDown.iconStyle, - useUniformDesign: DropDown.useUniformDesign, - pickerIOS: DropDown.pickerIOS, - pickerItemIOS: DropDown.pickerItemIOS, - pickerBackdropIOS: DropDown.pickerBackdropIOS, - pickerTopIOS: DropDown.pickerTopIOS, -}; diff --git a/theme_old/styles/native/core/widgets/feedback.js b/theme_old/styles/native/core/widgets/feedback.js deleted file mode 100644 index f1c2d82..0000000 --- a/theme_old/styles/native/core/widgets/feedback.js +++ /dev/null @@ -1,85 +0,0 @@ -import { Platform } from "react-native"; -import { background, border, brand, button, contrast, font, input } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Feedback - - Default Class For Mendix Feedback Widget -========================================================================== */ -export const com_mendix_widget_native_feedback_Feedback = { - floatingButton: { - // All ViewStyle properties are allowed - borderRadius: 0, - backgroundColor: background.secondary, - borderTopLeftRadius: button.borderRadius, - borderBottomLeftRadius: button.borderRadius, - elevation: 1.5, - shadowColor: "#000", - shadowOpacity: 0.2, - shadowRadius: 10, - shadowOffset: { - width: 0, - height: 2, - }, - }, - dialog: { - // All ViewStyle properties are allowed - backgroundColor: background.primary, - }, - title: { - // All TextStyle properties are allowed - color: font.color, - fontFamily: font.family, - }, - textAreaInput: { - // All TextStyle properties are allowed - color: input.color, - borderColor: input.borderColor, - backgroundColor: input.backgroundColor, - selectionColor: input.selectionColor, - placeholderTextColor: input.placeholderTextColor, - underlineColorAndroid: input.underlineColorAndroid, - height: 100, - fontSize: input.fontSize, - fontFamily: input.fontFamily, - borderRadius: input.borderRadius, - borderTopWidth: input.borderWidth, - borderBottomWidth: input.borderWidth, - borderWidth: Platform.select({ android: border.width }), - textAlignVertical: "top", - paddingVertical: input.paddingVertical, - paddingHorizontal: input.paddingHorizontal, - }, - switchLabel: { - // All TextStyle properties are allowed - color: input.color, - fontSize: input.fontSize, - fontFamily: input.fontFamily, - }, - switchInput: { - // thumbColorOn, thumbColorOff, trackColorOn, trackColorOff and all TextStyle properties are allowed - margin: 0, - padding: 0, - marginRight: Platform.select({ ios: 0, android: -5 }), - thumbColorOn: background.primary, - trackColorOn: brand.success, - thumbColorOff: contrast.regular, - trackColorOff: contrast.lower, - }, - button: { - // Just these 3 properties are allowed - color: brand.primary, - borderColor: border.color, - borderWidth: border.width, - }, - activityIndicator: { - // Only color is allowed - color: font.color, - }, -}; diff --git a/theme_old/styles/native/core/widgets/floatingactionbutton.js b/theme_old/styles/native/core/widgets/floatingactionbutton.js deleted file mode 100644 index 56f0a3b..0000000 --- a/theme_old/styles/native/core/widgets/floatingactionbutton.js +++ /dev/null @@ -1,77 +0,0 @@ -import { background, brand, contrast, font } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Floating Action Button - - Default Class For Mendix Floating Action Button Widget -========================================================================== */ -export const com_mendix_widget_native_floatingactionbutton_FloatingActionButton = { - container: { - // All ViewStyle properties are allowed - margin: 30, - }, - button: { - // Size, ripplecolor and all ViewStyle properties are allowed - size: 50, - height: 50, - width: 50, - rippleColor: contrast.lowest, - backgroundColor: brand.primary, - borderRadius: 25, - elevation: 2, - shadowColor: "#000", - shadowOpacity: 0.3, - shadowRadius: 4, - shadowOffset: { - width: 0, - height: 2, - }, - }, - buttonIcon: { - // Size and color are allowed - size: font.sizeLarge, - color: contrast.lowest, - }, - secondaryButton: { - // Size and all ViewStyle properties are allowed - size: 30, - backgroundColor: background.secondary, - elevation: 2, - shadowColor: "#000", - shadowOpacity: 0.3, - shadowRadius: 4, - shadowOffset: { - width: 0, - height: 2, - }, - }, - secondaryButtonIcon: { - // Size and color are allowed - size: font.sizeSmall, - color: contrast.high, - }, - secondaryButtonCaption: { - // All TextStyle properties are allowed - color: font.color, - fontSize: font.size, - lineHeight: font.size, - fontFamily: font.family, - }, - secondaryButtonCaptionContainer: { - // All ViewStyle properties are allowed - marginHorizontal: 5, - elevation: 2, - shadowOpacity: 0.3, - shadowRadius: 4, - shadowOffset: { - width: 0, - height: 2, - }, - }, -}; diff --git a/theme_old/styles/native/core/widgets/images.js b/theme_old/styles/native/core/widgets/images.js deleted file mode 100644 index ff418a2..0000000 --- a/theme_old/styles/native/core/widgets/images.js +++ /dev/null @@ -1,51 +0,0 @@ -import { contrast } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Image - - Default Class For Mendix Image Widgets -========================================================================== */ -export const Image = { - container: { - // rippleColor & all ViewStyle properties are allowed - rippleColor: contrast.lowest, - }, - containerDisabled: { - // All ViewStyle properties are allowed - }, - image: { - // All ImageStyle properties are allowed - maxWidth: "100%", - maxHeight: "100%", - resizeMode: "cover", - }, - imageDisabled: { - // All ImageStyle properties are allowed - opacity: 0.6 - } -}; -export const ImageViewer = { - container: { - // RippleColor & All ViewStyle properties are allowed - rippleColor: contrast.lowest, - }, - containerDisabled: { - // All ViewStyle properties are allowed - }, - image: { - // All ImageStyle properties are allowed - maxWidth: "100%", - maxHeight: "100%", - resizeMode: "cover", - }, - imageDisabled: { - // All ImageStyle properties are allowed - opacity: 0.6 - } -}; diff --git a/theme_old/styles/native/core/widgets/introscreen.js b/theme_old/styles/native/core/widgets/introscreen.js deleted file mode 100644 index 86db1d5..0000000 --- a/theme_old/styles/native/core/widgets/introscreen.js +++ /dev/null @@ -1,122 +0,0 @@ -import { isIphoneWithNotch } from "../helpers/_functions/device"; -import { background, button, contrast, font, spacing } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Intro Screen - - Default Class For Mendix Intro Screen Widget -========================================================================== */ -// Button styles when the chose to show the indicator above the buttons -export const introScreenButtonPaginationAbove = { - container: { - // Ripplecolor and all ViewStyle properties are allowed - flexDirection: "row", - alignSelf: "stretch", - alignItems: "center", - justifyContent: "center", - paddingVertical: spacing.regular, - backgroundColor: button.primary.backgroundColor, - }, - icon: { - // Size and color are allowed - color: button.primary.color, - size: button.fontSizeIcon, - }, - caption: { - // All TextStyle properties are allowed - color: button.primary.color, - fontSize: button.fontSize, - fontFamily: font.family, - fontWeight: font.weightBold, - textTransform: "uppercase", - paddingHorizontal: spacing.smallest, - }, -}; -// Button styles when the chose to show the indicator between the buttons -export const introScreenButtonPaginationBetween = { - container: { - // Ripplecolor and all ViewStyle properties are allowed - flexDirection: "row", - alignItems: "center", - justifyContent: "center", - }, - icon: { - // Size and color are allowed - color: font.color, - size: button.fontSizeIcon, - }, - caption: { - // All TextStyle properties are allowed - color: font.color, - fontSize: button.fontSize, - fontFamily: font.family, - fontWeight: font.weightBold, - textTransform: "uppercase", - paddingHorizontal: spacing.smallest, - }, -}; -// Default styles -export const com_mendix_widget_native_introscreen_IntroScreen = { - fullscreenContainer: { - // All ViewStyle properties are allowed - backgroundColor: background.primary, - }, - popupContainer: { - // All ViewStyle properties are allowed - paddingVertical: 150, - paddingHorizontal: 50, - backgroundColor: `rgba(0, 0, 0, 0.5)`, - }, - // Pagination styles - paginationContainer: { - // All ViewStyle properties are allowed - position: "absolute", - left: 0, - right: 0, - bottom: isIphoneWithNotch ? 22 : 0, - justifyContent: "space-between", - alignItems: "center", - }, - paginationText: { - // All TextStyle properties are allowed - color: font.color, - fontSize: font.size, - fontFamily: font.family, - }, - dotStyle: { - // All ViewStyle properties are allowed - backgroundColor: contrast.lower, - transform: [{ scale: 0.5 }], - }, - activeDotStyle: { - // All ViewStyle properties are allowed - backgroundColor: background.brandPrimary, - }, - // Button styles - paginationAbove: { - buttonsContainer: { - // All ViewStyle properties are allowed - flex: 1, - marginTop: 30, - flexDirection: "row", - justifyContent: "center", - width: "100%", - }, - buttonSkip: introScreenButtonPaginationAbove, - buttonPrevious: introScreenButtonPaginationAbove, - buttonNext: introScreenButtonPaginationAbove, - buttonDone: introScreenButtonPaginationAbove, - }, - paginationBetween: { - buttonSkip: introScreenButtonPaginationBetween, - buttonPrevious: introScreenButtonPaginationBetween, - buttonNext: introScreenButtonPaginationBetween, - buttonDone: introScreenButtonPaginationBetween, - }, -}; diff --git a/theme_old/styles/native/core/widgets/layoutgrid.js b/theme_old/styles/native/core/widgets/layoutgrid.js deleted file mode 100644 index 3a73aca..0000000 --- a/theme_old/styles/native/core/widgets/layoutgrid.js +++ /dev/null @@ -1,121 +0,0 @@ -import { layoutGrid } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Intro Screen - - Default Class For Mendix Layoutgrid Widget -========================================================================== */ -export const LayoutGrid = { - container: {}, -}; -export const row = { - container: { - flexDirection: "row", - flexWrap: "wrap", - marginHorizontal: -layoutGrid.gutterSize, - }, -}; -export const col = { - container: { - flex: 1, - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const colFitToContent = { - container: { - flex: -1, - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col1 = { - container: { - flexBasis: "8.333%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col2 = { - container: { - flexBasis: "16.666%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col3 = { - container: { - flexBasis: "25%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col4 = { - container: { - flexBasis: "33.333%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col5 = { - container: { - flexBasis: "41.666%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col6 = { - container: { - flexBasis: "50%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col7 = { - container: { - flexBasis: "58.333%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col8 = { - container: { - flexBasis: "66.666%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col9 = { - container: { - flexBasis: "75%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col10 = { - container: { - flexBasis: "83.333%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col11 = { - container: { - flexBasis: "91.666%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const col12 = { - container: { - flexBasis: "100%", - paddingHorizontal: layoutGrid.gutterSize, - }, -}; -export const noGutters = { - container: { - paddingLeft: 0, - paddingRight: 0, - paddingHorizontal: 0, - }, -}; -export const noGuttersRow = { - container: { - marginLeft: 0, - marginRight: 0, - marginHorizontal: 0, - }, -}; diff --git a/theme_old/styles/native/core/widgets/linechart.js b/theme_old/styles/native/core/widgets/linechart.js deleted file mode 100644 index b26ccfa..0000000 --- a/theme_old/styles/native/core/widgets/linechart.js +++ /dev/null @@ -1,169 +0,0 @@ -import { border, brand, font, spacing } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Line Chart - - Default Class For Mendix Line Chart Widget -========================================================================== */ -// eslint-disable-next-line @typescript-eslint/camelcase -export const com_mendix_widget_native_linechart_LineChart = { - container: { - // All ViewStyle properties are allowed - }, - errorMessage: { - // All TextStyle properties are allowed - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - }, - chart: { - // All ViewStyle properties are allowed - }, - grid: { - /* - Allowed properties: - - backgroundColor (string) - - dashArray (string) - - lineColor (string) - - lineWidth (number) - - padding (number) - - paddingBottom (number) - - paddingHorizontal (number) - - paddingLeft (number) - - paddingRight (number) - - paddingTop (number) - - paddingVertical (number) - */ - lineColor: border.color, - paddingBottom: 32, - paddingLeft: 32, - paddingRight: 8, - paddingTop: 8, - }, - xAxis: { - /* - Allowed properties: - - color (string) - - dashArray (string) - - fontFamily (string) - - fontSize (number) - - fontStyle ("normal" or "italic") - - fontWeight ("normal" or "bold" or "100" or "200" or "300" or "400" or "500" or "600" or "700" or "800" or "900") - - lineColor (string) - - lineWidth (number) - */ - color: font.color, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - lineColor: border.color, - label: { - /* - All TextStyle properties are allowed and: - - relativePositionGrid ("bottom" or "right") - */ - color: font.color, - alignSelf: "center", - marginHorizontal: 0, - marginVertical: spacing.smallest, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - relativePositionGrid: "bottom" - }, - }, - yAxis: { - /* - Allowed properties: - - color (string) - - dashArray (string) - - fontFamily (string) - - fontSize (number) - - fontStyle ("normal" or "italic") - - fontWeight ("normal" or "bold" or "100" or "200" or "300" or "400" or "500" or "600" or "700" or "800" or "900") - - lineColor (string) - - lineWidth (number) - */ - color: font.color, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - lineColor: border.color, - label: { - /* - All TextStyle properties are allowed and: - - relativePositionGrid ("top" or "left") - */ - color: font.color, - marginHorizontal: 0, - marginVertical: spacing.smallest, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - relativePositionGrid: "top" - }, - }, - lines: { - /* - Allowed properties: - - lineColorPalette (string with array of colors separated by ';') - */ - lineColorPalette: Object.values(brand) - .map((color, index, brandColors) => (index === brandColors.length - 1 ? color : `${color};`)) - .join(""), - customLineStyles: { - any_custom_line_style_name: { - line: { - /* - Allowed properties: - - dashArray (string) - - ending ("flat" or "round") - - lineColor (string) - - lineWidth (number) - */ - }, - markers: { - /* - Allowed properties: - - backgroundColor (string) - - borderColor (string) - - borderWidth (number) - - display ("false" or "underneath" or "onTop") - - size (number) - - symbol ("circle" or "diamond" or "plus" or "minus" or "square" or "star" or "triangleDown" or "triangleUp") - */ - } - } - } - }, - legend: { - container: { - // All ViewStyle properties are allowed - justifyContent: "flex-start", - marginHorizontal: 0, - marginVertical: spacing.smallest, - }, - item: { - // All ViewStyle properties are allowed - padding: 0, - paddingRight: spacing.smaller, - }, - indicator: { - // All ViewStyle properties are allowed - marginRight: spacing.smallest, - }, - label: { - // All TextStyle properties are allowed - color: font.color, - fontFamily: font.family, - fontSize: font.sizeSmall, - fontWeight: font.weightNormal, - }, - } -}; diff --git a/theme_old/styles/native/core/widgets/listviews.js b/theme_old/styles/native/core/widgets/listviews.js deleted file mode 100644 index fc45243..0000000 --- a/theme_old/styles/native/core/widgets/listviews.js +++ /dev/null @@ -1,24 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - List View - - Default Class For Mendix List View Widget -========================================================================== */ -export const ListView = { - container: { - // numColumns & all ViewStyle properties are allowed - }, - listItem: { - // All ViewStyle properties are allowed - }, - listItemDisabled: { - // All ViewStyle properties are allowed - opacity: 0.6 - }, -}; diff --git a/theme_old/styles/native/core/widgets/listviewswipe.js b/theme_old/styles/native/core/widgets/listviewswipe.js deleted file mode 100644 index 7adec6e..0000000 --- a/theme_old/styles/native/core/widgets/listviewswipe.js +++ /dev/null @@ -1,38 +0,0 @@ -import { background } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - List View Swipe - - Default Class For Mendix List View Swipe Widget -========================================================================== */ -export const com_mendix_widget_native_listviewswipe_ListViewSwipe = { - container: { - // All ViewStyle properties are allowed - flex: 1, - alignItems: "stretch", - justifyContent: "space-between", - backgroundColor: background.primary, - }, - leftAction: { - // PanelSize & All ViewStyle properties are allowed - panelSize: 200, - flex: 1, - flexDirection: "row", - alignItems: "stretch", - backgroundColor: background.primary, - }, - rightAction: { - // PanelSize & All ViewStyle properties are allowed - panelSize: 200, - flex: 1, - flexDirection: "row", - alignItems: "stretch", - backgroundColor: background.primary, - }, -}; diff --git a/theme_old/styles/native/core/widgets/maps.js b/theme_old/styles/native/core/widgets/maps.js deleted file mode 100644 index 3036260..0000000 --- a/theme_old/styles/native/core/widgets/maps.js +++ /dev/null @@ -1,33 +0,0 @@ -import { brand } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Maps - - Default Class For Mendix Maps Widget -========================================================================== */ -export const com_mendix_widget_native_maps_Maps = { - container: { - // All ViewStyle properties are allowed - flex: 1, - maxWidth: "100%", - aspectRatio: 4 / 2, - }, - loadingOverlay: { - // All ViewStyle properties are allowed - }, - loadingIndicator: { - // Only color is allowed - color: brand.primary, - }, - marker: { - // Only color & opacity are allowed - color: brand.primary, - opacity: 1, - }, -}; diff --git a/theme_old/styles/native/core/widgets/navigation.js b/theme_old/styles/native/core/widgets/navigation.js deleted file mode 100644 index 276ab40..0000000 --- a/theme_old/styles/native/core/widgets/navigation.js +++ /dev/null @@ -1,75 +0,0 @@ -import { font, navigation, spacing } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - BottomBar / ProgressOverlay - - Default Class For Mendix BottomBar and ProgressOverlay -========================================================================== */ -export const navigationStyle = { - bottomBar: { - container: { - // All ViewStyle properties are allowed - backgroundColor: navigation.bottomBar.backgroundColor, - }, - label: { - // All TextStyle properties are allowed - color: navigation.bottomBar.color, - fontFamily: font.family, - fontSize: navigation.bottomBar.fontSize, - }, - selectedLabel: { - // All TextStyle properties are allowed - color: navigation.bottomBar.selectedTextColor, - fontFamily: font.family, - fontSize: navigation.bottomBar.fontSize, - }, - icon: { - // All TextStyle properties are allowed - color: navigation.bottomBar.color, - fontSize: navigation.bottomBar.iconSize, - }, - selectedIcon: { - // All TextStyle properties are allowed - color: navigation.bottomBar.selectedIconColor, - fontSize: navigation.bottomBar.iconSize, - }, - }, - progressOverlay: { - background: { - // All ViewStyle properties are allowed - backgroundColor: navigation.progressOverlay.backgroundColor, - }, - container: { - // All ViewStyle properties are allowed - backgroundColor: navigation.progressOverlay.containerBackgroundColor, - paddingHorizontal: spacing.largest, - paddingVertical: spacing.large, - borderRadius: navigation.progressOverlay.borderRadius, - elevation: navigation.progressOverlay.elevation, - shadowColor: navigation.progressOverlay.shadowColor, - shadowOpacity: navigation.progressOverlay.shadowOpacity, - shadowRadius: navigation.progressOverlay.shadowRadius, - shadowOffset: { - width: 0, - height: 2, - }, - }, - activityIndicator: { - // Color, Size & All ViewStyle properties are allowed - color: navigation.progressOverlay.activityIndicatorColor, - }, - text: { - // All TextStyle properties are allowed - color: navigation.progressOverlay.color, - marginTop: spacing.small, - fontFamily: font.family, - fontSize: navigation.progressOverlay.fontSize, - }, - }, -}; diff --git a/theme_old/styles/native/core/widgets/pagetitle.js b/theme_old/styles/native/core/widgets/pagetitle.js deleted file mode 100644 index bdc4c87..0000000 --- a/theme_old/styles/native/core/widgets/pagetitle.js +++ /dev/null @@ -1,24 +0,0 @@ -import { font } from "../variables"; -import { TextHeading1 } from "./typography"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Page Title - - Default Class For Mendix Page Title Widget -========================================================================== */ -export const PageTitle = { - container: { - // All ViewStyle properties are allowed - }, - text: { - // All TextStyle properties are allowed - ...TextHeading1.text, - color: font.color, - }, -}; diff --git a/theme_old/styles/native/core/widgets/popupmenu.js b/theme_old/styles/native/core/widgets/popupmenu.js deleted file mode 100644 index dc0cd18..0000000 --- a/theme_old/styles/native/core/widgets/popupmenu.js +++ /dev/null @@ -1,58 +0,0 @@ -import { background, brand, contrast, font } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Popup Menu - - Default Class For Mendix Popup Menu Widget -========================================================================== */ -export const com_mendix_widget_native_popupmenu_PopupMenu = { - container: { - // All ViewStyle properties are allowed - borderRadius: 10, - shadowColor: "#000", - shadowOpacity: 0.2, - shadowRadius: 10, - elevation: 16, - backgroundColor: background.primary, - }, - custom: { - container: { - // All ViewStyle properties are allowed - }, - itemStyle: { - rippleColor: contrast.lower, - }, - }, - basic: { - dividerColor: font.color, - container: { - // All ViewStyle properties are allowed - height: 40, - }, - itemStyle: { - ellipsizeMode: "tail", - rippleColor: contrast.lower, - defaultStyle: { - // All TextStyle properties are allowed - color: font.color, - }, - primaryStyle: { - // All TextStyle properties are allowed - color: brand.primary, - }, - dangerStyle: { - // All TextStyle properties are allowed - color: brand.danger, - }, - customStyle: { - // All TextStyle properties are allowed - }, - }, - }, -}; diff --git a/theme_old/styles/native/core/widgets/progressbar.js b/theme_old/styles/native/core/widgets/progressbar.js deleted file mode 100644 index 0725d94..0000000 --- a/theme_old/styles/native/core/widgets/progressbar.js +++ /dev/null @@ -1,44 +0,0 @@ -import { Platform } from "react-native"; -import { anyColorToRgbString } from "../helpers/_functions/convertcolors"; -import { brand, font, input } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Progress Bar - - Default Class For Mendix Progress Bar Widget -========================================================================== */ -export const com_mendix_widget_native_progressbar_ProgressBar = { - container: { - // All ViewStyle properties are allowed - alignSelf: "stretch", - }, - bar: { - // All ViewStyle properties are allowed - ...Platform.select({ - ios: { - borderColor: brand.primary, - }, - android: { - borderRadius: 0, - borderWidth: 0, - backgroundColor: `rgba(${anyColorToRgbString(brand.primary)},0.2)`, - }, - }), - }, - fill: { - //Only the backgroundColor property is allowed - backgroundColor: brand.primary, - }, - validationMessage: { - // All TextStyle properties are allowed - color: input.errorColor, - fontSize: font.size, - fontFamily: font.family, - }, -}; diff --git a/theme_old/styles/native/core/widgets/progresscircle.js b/theme_old/styles/native/core/widgets/progresscircle.js deleted file mode 100644 index 522a5eb..0000000 --- a/theme_old/styles/native/core/widgets/progresscircle.js +++ /dev/null @@ -1,42 +0,0 @@ -import { brand, contrast, font, input } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Progress Circle - - Default Class For Mendix Progress Circle Widget -========================================================================== */ -export const com_mendix_widget_native_progresscircle_ProgressCircle = { - container: { - // All ViewStyle properties are allowed - }, - circle: { - // Only the size & borderWidth & borderColor properties are allowed - size: 80, - borderWidth: 0, - }, - fill: { - // Only the width & backgroundColor & lineCapRounded properties are allowed - backgroundColor: brand.primary, - width: 5, - lineCapRounded: true, - }, - text: { - // All TextStyle properties are allowed - color: contrast.regular, - fontSize: font.size, - fontWeight: font.weightSemiBold, - fontFamily: font.family, - }, - validationMessage: { - // All TextStyle properties are allowed - color: input.errorColor, - fontSize: font.size, - fontFamily: font.family, - }, -}; diff --git a/theme_old/styles/native/core/widgets/qrcode.js b/theme_old/styles/native/core/widgets/qrcode.js deleted file mode 100644 index c7f8113..0000000 --- a/theme_old/styles/native/core/widgets/qrcode.js +++ /dev/null @@ -1,24 +0,0 @@ -import { background, contrast } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - QR Code - - Default Class For Mendix QR Code Widget -========================================================================== */ -export const com_mendix_widget_native_qrcode_QRCode = { - container: { - // All ViewStyle properties are allowed - }, - qrcode: { - // Only size, color and backgroundColor are allowed - size: 100, - color: contrast.highest, - backgroundColor: background.primary, - }, -}; diff --git a/theme_old/styles/native/core/widgets/rangeslider.js b/theme_old/styles/native/core/widgets/rangeslider.js deleted file mode 100644 index 7e43104..0000000 --- a/theme_old/styles/native/core/widgets/rangeslider.js +++ /dev/null @@ -1,14 +0,0 @@ -import { com_mendix_widget_native_slider_Slider as Slider } from "./slider"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Range Slider - - Default Class For Mendix Range Slider Widget -========================================================================== */ -export const com_mendix_widget_native_rangeslider_RangeSlider = Slider; diff --git a/theme_old/styles/native/core/widgets/rating.js b/theme_old/styles/native/core/widgets/rating.js deleted file mode 100644 index 7ab06d9..0000000 --- a/theme_old/styles/native/core/widgets/rating.js +++ /dev/null @@ -1,27 +0,0 @@ -import { spacing } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Rating - - Default Class For Mendix Rating Widget -========================================================================== */ -export const com_mendix_widget_native_rating_Rating = { - container: { - // All ViewStyle properties are allowed - }, - containerDisabled: { - // All ViewStyle properties are allowed - opacity: 0.5, - }, - icon: { - // Size, color, selectedColor & all ViewStyle properties are allowed - size: 30, - marginRight: spacing.smaller, - }, -}; diff --git a/theme_old/styles/native/core/widgets/referenceselector.js b/theme_old/styles/native/core/widgets/referenceselector.js deleted file mode 100644 index a406c64..0000000 --- a/theme_old/styles/native/core/widgets/referenceselector.js +++ /dev/null @@ -1,143 +0,0 @@ -import { border, contrast, font, input } from "../variables"; -import { DropDownVertical } from "./dropdown"; -import { TextBox, TextBoxVertical } from "./textbox"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Reference Selector - - Default Class For Mendix Reference Selector Widget -========================================================================== */ -export const ReferenceSelector = { - container: { - // All ViewStyle properties are allowed - ...TextBox.container, - }, - containerDisabled: { - // All ViewStyle properties are allowed - ...TextBox.containerDisabled, - }, - label: { - // numberOfLines and all TextStyle properties are allowed - ...TextBox.label, - }, - labelDisabled: { - // All TextStyle properties are allowed - ...TextBox.labelDisabled, - }, - value: { - // All TextStyle properties & placeholderTextColor are allowed - color: input.color, - fontSize: input.fontSize, - fontFamily: input.fontFamily, - overflow: "hidden", - placeholderTextColor: input.placeholderTextColor, - }, - validationMessage: { - // All TextStyle properties are allowed - ...TextBox.validationMessage, - }, - /* New dropdown styles start */ - valueFocused: { - // All TextStyle properties are allowed - }, - valueDisabled: { - // All TextStyle properties are allowed - ...TextBox.inputDisabled, - }, - valueContainer: { - // All ViewStyle properties & rippleColor are allowed - flexDirection: "row", - justifyContent: "space-between", - alignItems: "center", - borderWidth: input.borderWidth, - borderRadius: input.borderRadius, - borderColor: input.borderColor, - paddingHorizontal: input.paddingHorizontal, - paddingVertical: input.paddingVertical, - backgroundColor: input.backgroundColor, - }, - valueContainerFocused: { - // All ViewStyle properties are allowed - ...TextBox.inputFocused, - }, - valueContainerDisabled: { - // All ViewStyle properties are allowed - }, - menuWrapper: { - // All ViewStyle properties are allowed - borderRadius: border.radius, - shadowColor: "#000", - shadowOpacity: 0.2, - shadowRadius: 10, - elevation: 16, - backgroundColor: input.backgroundColor, - }, - itemContainer: { - // All ViewStyle properties & rippleColor & activeOpacity & underlayColor are allowed - maxWidth: 500, - paddingVertical: 6, - paddingHorizontal: 16, - backgroundColor: input.backgroundColor, - underlayColor: input.inputContainerUnderlayColor, - }, - iconStyle: { - // All TextStyle properties are allowed - color: input.color, - }, - item: { - // All TextStyle properties are allowed - color: input.color, - }, - selectedItem: { - // All TextStyle properties are allowed - fontWeight: font.weightBold, - }, - selectedItemContainer: { - // All ViewStyle properties are allowed - backgroundColor: contrast.lowest, - }, - /* New dropdown styles end */ - useUniformDesign: true, - /* Old dropdown styles start */ - pickerIOS: { - // All ViewStyle properties are allowed - backgroundColor: input.backgroundColor, - }, - pickerItemIOS: { - // All TextStyle properties are allowed - }, - pickerBackdropIOS: { - // All ViewStyle properties are allowed - }, - pickerTopIOS: { - // All ViewStyle properties are allowed - backgroundColor: input.backgroundColor, - }, -}; -export const ReferenceSelectorVertical = { - container: TextBoxVertical.container, - containerDisabled: TextBoxVertical.containerDisabled, - label: TextBoxVertical.label, - labelDisabled: TextBoxVertical.labelDisabled, - value: DropDownVertical.value, - valueFocused: DropDownVertical.valueFocused, - validationMessage: TextBoxVertical.validationMessage, - valueContainer: DropDownVertical.valueContainer, - valueContainerFocused: DropDownVertical.valueContainerFocused, - valueContainerDisabled: DropDownVertical.valueContainerDisabled, - menuWrapper: DropDownVertical.menuWrapper, - itemContainer: DropDownVertical.itemContainer, - item: DropDownVertical.item, - iconStyle: DropDownVertical.iconStyle, - useUniformDesign: DropDownVertical.useUniformDesign, - pickerIOS: DropDownVertical.pickerIOS, - pickerItemIOS: DropDownVertical.pickerItemIOS, - pickerBackdropIOS: DropDownVertical.pickerBackdropIOS, - pickerTopIOS: DropDownVertical.pickerTopIOS, -}; diff --git a/theme_old/styles/native/core/widgets/safeareaview.js b/theme_old/styles/native/core/widgets/safeareaview.js deleted file mode 100644 index dd81a25..0000000 --- a/theme_old/styles/native/core/widgets/safeareaview.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Container - - Default Class For Mendix Safe Area View Widget -========================================================================== */ -export const com_mendix_widget_native_safeareaview_SafeAreaView = { - container: { - // All ViewStyle properties are allowed - }, -}; diff --git a/theme_old/styles/native/core/widgets/slider.js b/theme_old/styles/native/core/widgets/slider.js deleted file mode 100644 index 65e3df4..0000000 --- a/theme_old/styles/native/core/widgets/slider.js +++ /dev/null @@ -1,96 +0,0 @@ -import { Platform } from "react-native"; -import { background, border, brand, contrast, font, input } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Slider - - Default Class For Mendix Slider Widget -========================================================================== */ -export const com_mendix_widget_native_slider_Slider = { - container: { - // All ViewStyle properties are allowed - alignSelf: "stretch", - }, - track: { - // All ViewStyle properties are allowed - backgroundColor: contrast.lower, - }, - trackDisabled: { - // All ViewStyle properties are allowed - backgroundColor: contrast.lower, - opacity: Platform.select({ ios: 0.4 }), - }, - highlight: { - // All ViewStyle properties are allowed - backgroundColor: brand.primary, - }, - highlightDisabled: { - // All ViewStyle properties are allowed - backgroundColor: Platform.select({ ios: brand.primary, android: contrast.low }), - }, - marker: { - // All ViewStyle properties are allowed - backgroundColor: background.secondary, - ...Platform.select({ - ios: { - width: 30, - height: 30, - shadowColor: "#000", - shadowOpacity: 0.2, - borderColor: contrast.lowest, - shadowOffset: { width: 0, height: 1 }, - }, - android: { - width: 20, - height: 20, - borderRadius: 10, - elevation: 3, - borderColor: border.color, - }, - }), - }, - markerActive: { - // All ViewStyle properties are allowed - ...Platform.select({ - android: { - borderWidth: 0, - width: 34, - height: 34, - borderRadius: 17, - }, - }), - }, - markerDisabled: { - // All ViewStyle properties are allowed - ...Platform.select({ - ios: { - borderColor: contrast.lowest, - backgroundColor: background.secondary, - shadowColor: "#000", - shadowOpacity: 0.2, - shadowOffset: { width: 0, height: 1 }, - }, - android: { - marginTop: 1, - borderColor: background.primary, - backgroundColor: contrast.low, - borderWidth: 3, - width: 14, - height: 14, - borderRadius: 7, - }, - }), - }, - validationMessage: { - // All TextStyle properties are allowed - color: input.errorColor, - fontSize: font.size, - fontFamily: font.family, - }, -}; diff --git a/theme_old/styles/native/core/widgets/tabcontainer.js b/theme_old/styles/native/core/widgets/tabcontainer.js deleted file mode 100644 index ec0f8f0..0000000 --- a/theme_old/styles/native/core/widgets/tabcontainer.js +++ /dev/null @@ -1,67 +0,0 @@ -import { font, spacing, tabContainer } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Tab Container - - Default Class For Mendix Tab Container Widget -========================================================================== */ -export const TabContainer = { - container: { - // All ViewStyle properties are allowed - flex: 1, - }, - tabBar: { - // bounces, pressColor, pressOpacity, scrollEnabled and all ViewStyle properties are allowed - bounces: true, - pressColor: tabContainer.tabBar.pressColor, - pressOpacity: 0.8, - backgroundColor: tabContainer.tabBar.backgroundColor, - scrollEnabled: false, - paddingVertical: spacing.smaller, - }, - indicator: { - // All ViewStyle properties are allowed - backgroundColor: tabContainer.indicator.backgroundColor, - height: tabContainer.indicator.height, - }, - tab: { - // All ViewStyle properties are allowed - paddingVertical: spacing.smaller, - }, - label: { - // All TextStyle properties are allowed - color: tabContainer.label.color, - fontFamily: font.family, - fontWeight: tabContainer.label.fontWeight, - textTransform: tabContainer.label.textTransform, - }, - activeLabel: { - // All TextStyle properties are allowed - color: tabContainer.activeLabel.color, - fontFamily: font.family, - fontWeight: tabContainer.activeLabel.fontWeight, - textTransform: tabContainer.activeLabel.textTransform, - }, - badgeContainer: { - // All ViewStyle properties are allowed - borderRadius: tabContainer.badgeContainer.borderRadius, - backgroundColor: tabContainer.badgeContainer.backgroundColor, - paddingVertical: tabContainer.badgeContainer.paddingVertical, - paddingHorizontal: tabContainer.badgeContainer.paddingHorizontal, - marginLeft: tabContainer.badgeContainer.marginLeft - }, - badgeCaption: { - // All TextStyle properties are allowed - fontSize: tabContainer.badgeCaption.fontSize, - color: tabContainer.badgeCaption.color, - fontFamily: font.family, - fontWeight: tabContainer.badgeCaption.fontWeight, - marginTop: -1, - } -}; diff --git a/theme_old/styles/native/core/widgets/textarea.js b/theme_old/styles/native/core/widgets/textarea.js deleted file mode 100644 index 452d63b..0000000 --- a/theme_old/styles/native/core/widgets/textarea.js +++ /dev/null @@ -1,73 +0,0 @@ -import { input } from "../variables"; -import { TextBox, TextBoxVertical } from "./textbox"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Text Area - - Default Class For Mendix Text Area Widget -========================================================================== */ -export const TextArea = { - container: { - // All ViewStyle properties are allowed - ...TextBox.container, - }, - containerDisabled: { - // All ViewStyle properties are allowed - ...TextBox.containerDisabled, - }, - label: { - // numberOfLines and all TextStyle properties are allowed - ...TextBox.label, - height: "100%", - textAlignVertical: "top", - paddingVertical: input.paddingVertical, - }, - labelDisabled: { - // All ViewStyle properties are allowed - ...TextBox.labelDisabled - }, - input: { - // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed - ...TextBox.input, - textAlignVertical: "top", - paddingTop: input.paddingVertical, - }, - inputDisabled: { - // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed - ...TextBox.inputDisabled - }, - inputError: { - // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed - ...TextBox.inputError, - }, - inputFocused: { - // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed - ...TextBox.inputFocused, - }, - validationMessage: { - // All TextStyle properties are allowed - ...TextBox.validationMessage, - }, -}; -export const TextAreaVertical = { - container: TextBoxVertical.container, - containerDisabled: TextBoxVertical.containerDisabled, - label: { - ...TextBoxVertical.label, - height: undefined, - paddingVertical: undefined, - textAlignVertical: undefined, - }, - labelDisabled: TextBoxVertical.labelDisabled, - input: TextBoxVertical.input, - inputDisabled: TextBoxVertical.inputDisabled, - inputError: TextBoxVertical.inputError, - inputFocused: TextBoxVertical.inputFocused, - validationMessage: TextBoxVertical.validationMessage, -}; diff --git a/theme_old/styles/native/core/widgets/textbox.js b/theme_old/styles/native/core/widgets/textbox.js deleted file mode 100644 index e410c62..0000000 --- a/theme_old/styles/native/core/widgets/textbox.js +++ /dev/null @@ -1,100 +0,0 @@ -import { font, input, spacing } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Text Box - - Default Class For Mendix Text Box Widget -========================================================================== */ -export const TextBox = { - container: { - // All ViewStyle properties are allowed - }, - containerDisabled: { - // All ViewStyle properties are allowed - }, - label: { - // numberOfLines and all TextStyle properties are allowed - numberOfLines: 1, - color: input.labelColor, - fontSize: input.fontSize, - fontFamily: font.family, - textAlign: input.textAlign, - marginRight: spacing.small, - }, - labelDisabled: { - // TextStyle properties are allowed - color: input.labelColorDisabled, - }, - input: { - // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed - color: input.color, - borderColor: input.borderColor, - backgroundColor: input.backgroundColor, - selectionColor: input.selectionColor, - placeholderTextColor: input.placeholderTextColor, - fontSize: input.fontSize, - fontFamily: input.fontFamily, - borderWidth: input.borderWidth, - borderRadius: input.borderRadius, - paddingHorizontal: input.paddingHorizontal, - paddingVertical: input.paddingVertical, - }, - inputDisabled: { - // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed - backgroundColor: input.backgroundColorDisabled, - color: input.colorDisabled, - }, - inputError: { - // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed - color: input.errorColor, - borderColor: input.errorColor, - placeholderTextColor: input.errorColor, - underlineColorAndroid: input.underlineColorAndroid, - }, - inputFocused: { - // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed - borderColor: input.borderColorFocused - }, - validationMessage: { - // All TextStyle properties are allowed - color: input.errorColor, - fontSize: font.size, - fontFamily: font.family, - }, -}; -export const TextBoxVertical = { - container: {}, - containerDisabled: TextBox.containerDisabled, - label: { - numberOfLines: 1, - color: input.labelColor, - fontSize: input.fontSize, - fontFamily: font.family, - textAlign: input.textAlign, - marginBottom: spacing.smallest, - }, - labelDisabled: TextBox.labelDisabled, - input: { - color: input.color, - borderColor: input.borderColor, - backgroundColor: input.backgroundColor, - selectionColor: input.selectionColor, - placeholderTextColor: input.placeholderTextColor, - fontSize: input.fontSize, - fontFamily: input.fontFamily, - borderRadius: input.borderRadius, - borderWidth: input.borderWidth, - paddingHorizontal: input.paddingHorizontal, - paddingVertical: input.paddingVertical, - }, - inputFocused: TextBox.inputFocused, - inputDisabled: TextBox.inputDisabled, - inputError: TextBox.inputError, - validationMessage: TextBox.validationMessage, -}; diff --git a/theme_old/styles/native/core/widgets/togglebuttons.js b/theme_old/styles/native/core/widgets/togglebuttons.js deleted file mode 100644 index 1a618e2..0000000 --- a/theme_old/styles/native/core/widgets/togglebuttons.js +++ /dev/null @@ -1,59 +0,0 @@ -import { Platform } from "react-native"; -import { background, brand, contrast, font, input } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Segmented Controls - - Default Class For Mendix Segmented Controls Widget -========================================================================== */ -export const com_mendix_widget_native_togglebuttons_ToggleButtons = { - container: { - // All ViewStyle properties are allowed - alignSelf: "stretch", - }, - containerDisabled: { - opacity: 0.6, - alignSelf: "stretch", - }, - button: { - // All ViewStyle properties are allowed - backgroundColor: background.primary, - borderColor: Platform.select({ ios: brand.primary, android: contrast.lower }), - }, - text: { - // All TextStyle properties are allowed - color: Platform.select({ ios: brand.primary, android: contrast.high }), - fontSize: font.size, - fontFamily: font.family, - }, - activeButton: { - // All ViewStyle properties are allowed - ...Platform.select({ - ios: { - backgroundColor: brand.primary, - borderColor: brand.primary, - }, - android: { - backgroundColor: brand.primary, - borderColor: brand.primary, - }, - }), - }, - activeButtonText: { - // All TextStyle properties are allowed - fontSize: font.size, - fontFamily: font.family, - }, - validationMessage: { - // All TextStyle properties are allowed - color: input.errorColor, - fontSize: font.size, - fontFamily: font.family, - }, -}; diff --git a/theme_old/styles/native/core/widgets/typography.js b/theme_old/styles/native/core/widgets/typography.js deleted file mode 100644 index 5dd872a..0000000 --- a/theme_old/styles/native/core/widgets/typography.js +++ /dev/null @@ -1,79 +0,0 @@ -import { font } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Text - - Default Class For Mendix Text Widget -========================================================================== */ -export const Text = { - container: { - // All ViewStyle properties are allowed - }, - text: { - // numberOfLines & All TextStyle properties are allowed - color: font.color, - fontSize: font.size, - fontFamily: font.family, - lineHeight: font.size + 2, - }, -}; -export const TextHeading1 = { - container: {}, - text: { - fontWeight: font.weightSemiBold, - fontSize: font.sizeH1, - fontFamily: font.family, - lineHeight: font.sizeH1, - }, -}; -export const TextHeading2 = { - container: {}, - text: { - fontWeight: font.weightSemiBold, - fontSize: font.sizeH2, - fontFamily: font.family, - lineHeight: font.sizeH2, - }, -}; -export const TextHeading3 = { - container: {}, - text: { - fontWeight: font.weightSemiBold, - fontSize: font.sizeH3, - fontFamily: font.family, - lineHeight: font.sizeH3, - }, -}; -export const TextHeading4 = { - container: {}, - text: { - fontWeight: font.weightSemiBold, - fontSize: font.sizeH4, - fontFamily: font.family, - lineHeight: font.sizeH4, - }, -}; -export const TextHeading5 = { - container: {}, - text: { - fontWeight: font.weightSemiBold, - fontSize: font.sizeH5, - fontFamily: font.family, - lineHeight: font.sizeH5, - }, -}; -export const TextHeading6 = { - container: {}, - text: { - fontWeight: font.weightSemiBold, - fontSize: font.sizeH6, - fontFamily: font.family, - lineHeight: font.sizeH6, - }, -}; diff --git a/theme_old/styles/native/core/widgets/videoplayer.js b/theme_old/styles/native/core/widgets/videoplayer.js deleted file mode 100644 index 3e47b5e..0000000 --- a/theme_old/styles/native/core/widgets/videoplayer.js +++ /dev/null @@ -1,23 +0,0 @@ -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Video Player - - Default Class For Mendix Video Player Widget -========================================================================== */ -export const com_mendix_widget_native_videoplayer_VideoPlayer = { - container: { - // All ViewStyle properties are allowed - }, - indicator: { - // Only the backgroundColor property is allowed - }, - video: { - // All ViewStyle properties are allowed - }, -}; diff --git a/theme_old/styles/native/core/widgets/webview.js b/theme_old/styles/native/core/widgets/webview.js deleted file mode 100644 index a8078f0..0000000 --- a/theme_old/styles/native/core/widgets/webview.js +++ /dev/null @@ -1,26 +0,0 @@ -import { font } from "../variables"; -/* - -DISCLAIMER: -Do not change this file because it is core styling. -Customizing core files will make updating Atlas much more difficult in the future. -To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. - -========================================================================== - Web View - - Default Class For Mendix Web View Widget -========================================================================== */ -export const com_mendix_widget_native_webview_WebView = { - container: { - // All ViewStyle properties are allowed - }, - errorContainer: { - // All ViewStyle properties are allowed - }, - errorText: { - // All TextStyle properties are allowed - fontSize: font.size, - fontFamily: font.family, - }, -}; diff --git a/theme_old/styles/native/main.js b/theme_old/styles/native/main.js deleted file mode 100644 index 9cbc8fd..0000000 --- a/theme_old/styles/native/main.js +++ /dev/null @@ -1,84 +0,0 @@ -//================================== CORE ==================================\\ -// -// -// Base -export * from "./core/base/flex"; -export * from "./core/base/spacing"; -// -// -// Components -export * from "./core/widgets/activityindicator"; -export * from "./core/helpers/activityindicator"; -export * from "./core/widgets/animation"; -export * from "./core/widgets/backgroundimage"; -export * from "./core/widgets/badge"; -export * from "./core/helpers/badge"; -export * from "./core/widgets/bottomsheet"; -export * from "./core/widgets/buttons"; -export * from "./core/helpers/buttons"; -export * from "./core/widgets/carousel"; -export * from "./core/widgets/checkbox"; -export * from "./core/widgets/colorpicker"; -export * from "./core/widgets/container"; -export * from "./core/widgets/datepicker"; -export * from "./core/widgets/dropdown"; -export * from "./core/widgets/feedback"; -export * from "./core/widgets/floatingactionbutton"; -export * from "./core/helpers/floatingactionbutton"; -export * from "./core/widgets/images"; -export * from "./core/helpers/images"; -export * from "./core/widgets/introscreen"; -export * from "./core/widgets/layoutgrid"; -export * from "./core/widgets/linechart"; -export * from "./core/helpers/linechart"; -export * from "./core/widgets/barchart"; -export * from "./core/helpers/barchart"; -export * from "./core/widgets/listviews"; -export * from "./core/helpers/listviews"; -export * from "./core/widgets/listviewswipe"; -export * from "./core/helpers/listviewswipe"; -export * from "./core/widgets/maps"; -export * from "./core/helpers/maps"; -export * from "./core/widgets/navigation"; -export * from "./core/widgets/pagetitle"; -export * from "./core/widgets/progressbar"; -export * from "./core/helpers/progressbar"; -export * from "./core/widgets/progresscircle"; -export * from "./core/helpers/progresscircle"; -export * from "./core/widgets/popupmenu"; -export * from "./core/widgets/qrcode"; -export * from "./core/widgets/rangeslider"; -export * from "./core/helpers/rangeslider"; -export * from "./core/widgets/rating"; -export * from "./core/widgets/referenceselector"; -export * from "./core/widgets/safeareaview"; -export * from "./core/widgets/slider"; -export * from "./core/helpers/slider"; -export * from "./core/widgets/tabcontainer"; -export * from "./core/helpers/tabcontainer"; -export * from "./core/widgets/textarea"; -export * from "./core/widgets/textbox"; -export * from "./core/helpers/textbox"; -export * from "./core/widgets/togglebuttons"; -export * from "./core/widgets/typography"; -export * from "./core/helpers/typography"; -export * from "./core/widgets/videoplayer"; -export * from "./core/widgets/webview"; -export * from "./core/helpers/helperclasses"; -// -// -//================================= CUSTOM =================================\\ -// -// Layouts -export * from "./ui_resources/atlas_ui_resources/layouts/layout"; -// -// -// Page Templates -export * from "./ui_resources/atlas_ui_resources/pagetemplates/page"; -export * from "./ui_resources/atlas_ui_resources/pagetemplates/maps"; -export * from "./ui_resources/atlas_ui_resources/pagetemplates/inspectiondetails"; -// -// -// Building blocks -export * from "./ui_resources/atlas_ui_resources/buildingblocks/card"; -export * from "./ui_resources/atlas_ui_resources/buildingblocks/header"; diff --git a/theme_old/styles/native/ui_resources/atlas_ui_resources/buildingblocks/card.js b/theme_old/styles/native/ui_resources/atlas_ui_resources/buildingblocks/card.js deleted file mode 100644 index d025639..0000000 --- a/theme_old/styles/native/ui_resources/atlas_ui_resources/buildingblocks/card.js +++ /dev/null @@ -1,100 +0,0 @@ -import { Platform } from "react-native"; -import { background, border, contrast, spacing } from "../../../core/variables"; -/* -========================================================================== - Cards - -========================================================================== -*/ -export const card = { - container: { - borderRadius: border.radius, - backgroundColor: background.primary, - marginBottom: spacing.regular, - ...Platform.select({ - android: { - borderWidth: 1, - borderColor: contrast.lowest, - }, - }), - elevation: 1.5, - shadowColor: "#000", - shadowOpacity: 0.1, - shadowRadius: 10, - shadowOffset: { - width: 0, - height: 2, - }, - }, -}; -// -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -export const cardImage = { - container: { - overflow: "hidden", - borderTopLeftRadius: border.radius, - borderTopRightRadius: border.radius, - }, - image: { - width: "100%", - height: 200, - resizeMode: "cover", - }, -}; -export const cardImageFull = { - container: { - ...cardImage.container, - borderBottomLeftRadius: border.radius, - borderBottomRightRadius: border.radius, - }, - image: { - width: "100%", - height: 300, - resizeMode: "cover", - }, -}; -export const cardBody = { - container: { - position: "absolute", - end: 0, - start: 0, - bottom: 0, - backgroundColor: "transparent", - }, -}; -// -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -// Card Action -export const cardAction = { - container: { - maxWidth: "100%", - aspectRatio: 1, - borderWidth: 1, - borderColor: border.color, - borderRadius: border.radius, - padding: spacing.regular, - alignItems: "center", - }, -}; -export const cardActionImage = { - image: { - maxHeight: 70, - resizeMode: "contain", - }, -}; -// -//-------------------------------------------------------------------------------------------------------------------// -// Card Payment -export const cardPaymentImage = { - container: { - flex: -1, - maxHeight: 250, - }, - image: { - width: "100%", - maxHeight: 250, - resizeMode: "contain", - }, -}; diff --git a/theme_old/styles/native/ui_resources/atlas_ui_resources/buildingblocks/header.js b/theme_old/styles/native/ui_resources/atlas_ui_resources/buildingblocks/header.js deleted file mode 100644 index 8df718e..0000000 --- a/theme_old/styles/native/ui_resources/atlas_ui_resources/buildingblocks/header.js +++ /dev/null @@ -1,55 +0,0 @@ -import { Platform } from "react-native"; -import { background, border, contrast, spacing } from "../../../core/variables"; -/* -========================================================================== - Cards - -========================================================================== -*/ -export const header = { - container: { - borderRadius: border.radius, - backgroundColor: background.primary, - marginBottom: spacing.regular, - ...Platform.select({ - android: { - borderWidth: 1, - borderColor: contrast.lowest, - }, - }), - }, -}; -// -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -export const headerImageFull = { - container: { - overflow: "hidden", - }, - image: { - width: "100%", - height: 250, - resizeMode: "cover", - }, -}; -export const headerImageOverlay = { - container: { - zIndex: 10, - width: "100%", - height: "100%", - position: "absolute", - backgroundColor: "rgba(0,0,0,0.4)", - }, -}; -export const headerBody = { - container: { - bottom: 0, - zIndex: 11, - width: "100%", - position: "absolute", - backgroundColor: "transparent", - }, -}; -// -//== Variations -//-------------------------------------------------------------------------------------------------------------------// diff --git a/theme_old/styles/native/ui_resources/atlas_ui_resources/layouts/layout.js b/theme_old/styles/native/ui_resources/atlas_ui_resources/layouts/layout.js deleted file mode 100644 index 1b53995..0000000 --- a/theme_old/styles/native/ui_resources/atlas_ui_resources/layouts/layout.js +++ /dev/null @@ -1,56 +0,0 @@ -import { NativeModules } from "react-native"; -import { darkMode } from "../../../app/custom-variables.js"; -import { background, font, navigation } from "../../../core/variables"; -/* -========================================================================== - TopBar / BottomBar / ProgressOverlay - - Default Class For Mendix TopBar, BottomBar and ProgressOverlay -========================================================================== -*/ -// backgroundColor of the native iOS statusbar can not be changed. -// To fix this we change the barStyle of the statusbar if OS theme is dark and app theme is light (And the other way around). -const isOSDarkMode = NativeModules && NativeModules.RNDarkMode && NativeModules.RNDarkMode.initialMode && NativeModules.RNDarkMode.initialMode === "dark"; -const statusBarStyle = !darkMode && isOSDarkMode ? - "dark-content" : - darkMode && !isOSDarkMode ? "light-content" : navigation.statusBar.barStyle; -// -export const Layout = { - sidebar: { - // All ViewStyle properties are allowed - }, - statusBar: { - // Only backgroundColor and barStyle are allowed - backgroundColor: navigation.statusBar.backgroundColor, - barStyle: statusBarStyle, - }, - header: { - container: { - // All ViewStyle properties are allowed - backgroundColor: navigation.topBar.backgroundColor, - borderBottomWidth: undefined, - }, - title: { - // All TextStyle properties are allowed - color: navigation.topBar.titleColor, - fontSize: navigation.topBar.titleFontSize, - fontFamily: font.family, - fontWeight: font.weightBold, - }, - backButtonText: { - // All TextStyle properties are allowed - color: navigation.topBar.backButtonColor, - fontFamily: font.family, - }, - backButtonIcon: { - // All ImageStyle properties are allowed - tintColor: navigation.topBar.backButtonColor, - }, - }, - container: { - // All ViewStyle properties are allowed - backgroundColor: background.primary, - }, -}; -// -export const Page = Layout; diff --git a/theme_old/styles/native/ui_resources/atlas_ui_resources/pagetemplates/inspectiondetails.js b/theme_old/styles/native/ui_resources/atlas_ui_resources/pagetemplates/inspectiondetails.js deleted file mode 100644 index 7878669..0000000 --- a/theme_old/styles/native/ui_resources/atlas_ui_resources/pagetemplates/inspectiondetails.js +++ /dev/null @@ -1,29 +0,0 @@ -/* -========================================================================== - Inspection details - -========================================================================== -*/ -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -export const carouselCardImage = { - container: { - borderRadius: 10, - overflow: "hidden", - }, - image: { - width: "100%", - height: "100%", - }, -}; -export const carouselFullWidthImage = { - container: {}, - image: { - width: "100%", - height: "100%", - }, -}; -// -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -// diff --git a/theme_old/styles/native/ui_resources/atlas_ui_resources/pagetemplates/maps.js b/theme_old/styles/native/ui_resources/atlas_ui_resources/pagetemplates/maps.js deleted file mode 100644 index c861db7..0000000 --- a/theme_old/styles/native/ui_resources/atlas_ui_resources/pagetemplates/maps.js +++ /dev/null @@ -1,71 +0,0 @@ -import { background, border, contrast, spacing } from "../../../core/variables.js"; -/* -========================================================================== - Maps - -========================================================================== -*/ -// -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -export const mapsBackground = { - container: { - position: "absolute", - height: "100%", - width: "100%", - zIndex: 0, - }, -}; -export const mapsFooter = { - container: { - bottom: 0, - position: "absolute", - }, -}; -export const mapsFooterSendLocation = { - container: { - flex: 1, - alignSelf: "flex-end", - backgroundColor: background.primary, - padding: spacing.regular, - margin: spacing.regular, - borderRadius: border.radius, - elevation: 4, - shadowColor: contrast.lower, - shadowOpacity: 0.8, - shadowRadius: 8, - shadowOffset: { - width: 0, - height: 2, - }, - }, -}; -export const mapsList = { - container: { - paddingHorizontal: spacing.regular, - }, -}; -export const mapsListItemImage = { - container: { - backgroundColor: background.primary, - borderRadius: border.radius, - marginVertical: spacing.regular, - marginLeft: spacing.smallest, - marginRight: spacing.regular, - elevation: 4, - shadowColor: contrast.lower, - shadowOpacity: 0.8, - shadowRadius: 8, - shadowOffset: { - width: 0, - height: 2, - }, - }, - image: { - borderRadius: border.radius, - }, -}; -// -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -// diff --git a/theme_old/styles/native/ui_resources/atlas_ui_resources/pagetemplates/page.js b/theme_old/styles/native/ui_resources/atlas_ui_resources/pagetemplates/page.js deleted file mode 100644 index 0e3bcc2..0000000 --- a/theme_old/styles/native/ui_resources/atlas_ui_resources/pagetemplates/page.js +++ /dev/null @@ -1,39 +0,0 @@ -/* -========================================================================== - Page - -========================================================================== -*/ -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -// -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -// -export const pageHeaderBorderNone = { - sidebar: { - // All ViewStyle properties are allowed - }, - statusBar: { - // Only backgroundColor and barStyle are allowed - }, - header: { - container: { - // All ViewStyle properties are allowed - elevation: 0, - borderBottomWidth: undefined, - }, - title: { - // All TextStyle properties are allowed - }, - backButtonText: { - // All TextStyle properties are allowed - }, - backButtonIcon: { - // All ImageStyle properties are allowed - }, - }, - container: { - // All ViewStyle properties are allowed - }, -}; diff --git a/theme_old/styles/web/css/fonts/glyphicons-halflings-regular.woff b/theme_old/styles/web/css/fonts/glyphicons-halflings-regular.woff deleted file mode 100644 index 9e61285..0000000 Binary files a/theme_old/styles/web/css/fonts/glyphicons-halflings-regular.woff and /dev/null differ diff --git a/theme_old/styles/web/css/fonts/glyphicons-halflings-regular.woff2 b/theme_old/styles/web/css/fonts/glyphicons-halflings-regular.woff2 deleted file mode 100644 index 64539b5..0000000 Binary files a/theme_old/styles/web/css/fonts/glyphicons-halflings-regular.woff2 and /dev/null differ diff --git a/theme_old/styles/web/css/main.css b/theme_old/styles/web/css/main.css deleted file mode 100644 index 66189f4..0000000 --- a/theme_old/styles/web/css/main.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v3.3.4 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700");@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700");@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700");html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{margin:0.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type='button'],input[type='reset'],input[type='submit']{-webkit-appearance:button;cursor:pointer}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type='checkbox'],input[type='radio']{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type='number']::-webkit-inner-spin-button,input[type='number']::-webkit-outer-spin-button{height:auto}input[type='search']{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type='search']::-webkit-search-cancel-button,input[type='search']::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:0.35em 0.625em 0.75em;margin:0 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{color:#000 !important;text-shadow:none !important;background:transparent !important;-webkit-box-shadow:none !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^='#']:after,a[href^='javascript:']:after{content:''}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url("./fonts/glyphicons-halflings-regular.woff2") format("woff2"),url("./fonts/glyphicons-halflings-regular.woff") format("woff")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:'\2a'}.glyphicon-plus:before{content:'\2b'}.glyphicon-euro:before,.glyphicon-eur:before{content:'\20ac'}.glyphicon-minus:before{content:'\2212'}.glyphicon-cloud:before{content:'\2601'}.glyphicon-envelope:before{content:'\2709'}.glyphicon-pencil:before{content:'\270f'}.glyphicon-glass:before{content:'\e001'}.glyphicon-music:before{content:'\e002'}.glyphicon-search:before{content:'\e003'}.glyphicon-heart:before{content:'\e005'}.glyphicon-star:before{content:'\e006'}.glyphicon-star-empty:before{content:'\e007'}.glyphicon-user:before{content:'\e008'}.glyphicon-film:before{content:'\e009'}.glyphicon-th-large:before{content:'\e010'}.glyphicon-th:before{content:'\e011'}.glyphicon-th-list:before{content:'\e012'}.glyphicon-ok:before{content:'\e013'}.glyphicon-remove:before{content:'\e014'}.glyphicon-zoom-in:before{content:'\e015'}.glyphicon-zoom-out:before{content:'\e016'}.glyphicon-off:before{content:'\e017'}.glyphicon-signal:before{content:'\e018'}.glyphicon-cog:before{content:'\e019'}.glyphicon-trash:before{content:'\e020'}.glyphicon-home:before{content:'\e021'}.glyphicon-file:before{content:'\e022'}.glyphicon-time:before{content:'\e023'}.glyphicon-road:before{content:'\e024'}.glyphicon-download-alt:before{content:'\e025'}.glyphicon-download:before{content:'\e026'}.glyphicon-upload:before{content:'\e027'}.glyphicon-inbox:before{content:'\e028'}.glyphicon-play-circle:before{content:'\e029'}.glyphicon-repeat:before{content:'\e030'}.glyphicon-refresh:before{content:'\e031'}.glyphicon-list-alt:before{content:'\e032'}.glyphicon-lock:before{content:'\e033'}.glyphicon-flag:before{content:'\e034'}.glyphicon-headphones:before{content:'\e035'}.glyphicon-volume-off:before{content:'\e036'}.glyphicon-volume-down:before{content:'\e037'}.glyphicon-volume-up:before{content:'\e038'}.glyphicon-qrcode:before{content:'\e039'}.glyphicon-barcode:before{content:'\e040'}.glyphicon-tag:before{content:'\e041'}.glyphicon-tags:before{content:'\e042'}.glyphicon-book:before{content:'\e043'}.glyphicon-bookmark:before{content:'\e044'}.glyphicon-print:before{content:'\e045'}.glyphicon-camera:before{content:'\e046'}.glyphicon-font:before{content:'\e047'}.glyphicon-bold:before{content:'\e048'}.glyphicon-italic:before{content:'\e049'}.glyphicon-text-height:before{content:'\e050'}.glyphicon-text-width:before{content:'\e051'}.glyphicon-align-left:before{content:'\e052'}.glyphicon-align-center:before{content:'\e053'}.glyphicon-align-right:before{content:'\e054'}.glyphicon-align-justify:before{content:'\e055'}.glyphicon-list:before{content:'\e056'}.glyphicon-indent-left:before{content:'\e057'}.glyphicon-indent-right:before{content:'\e058'}.glyphicon-facetime-video:before{content:'\e059'}.glyphicon-picture:before{content:'\e060'}.glyphicon-map-marker:before{content:'\e062'}.glyphicon-adjust:before{content:'\e063'}.glyphicon-tint:before{content:'\e064'}.glyphicon-edit:before{content:'\e065'}.glyphicon-share:before{content:'\e066'}.glyphicon-check:before{content:'\e067'}.glyphicon-move:before{content:'\e068'}.glyphicon-step-backward:before{content:'\e069'}.glyphicon-fast-backward:before{content:'\e070'}.glyphicon-backward:before{content:'\e071'}.glyphicon-play:before{content:'\e072'}.glyphicon-pause:before{content:'\e073'}.glyphicon-stop:before{content:'\e074'}.glyphicon-forward:before{content:'\e075'}.glyphicon-fast-forward:before{content:'\e076'}.glyphicon-step-forward:before{content:'\e077'}.glyphicon-eject:before{content:'\e078'}.glyphicon-chevron-left:before{content:'\e079'}.glyphicon-chevron-right:before{content:'\e080'}.glyphicon-plus-sign:before{content:'\e081'}.glyphicon-minus-sign:before{content:'\e082'}.glyphicon-remove-sign:before{content:'\e083'}.glyphicon-ok-sign:before{content:'\e084'}.glyphicon-question-sign:before{content:'\e085'}.glyphicon-info-sign:before{content:'\e086'}.glyphicon-screenshot:before{content:'\e087'}.glyphicon-remove-circle:before{content:'\e088'}.glyphicon-ok-circle:before{content:'\e089'}.glyphicon-ban-circle:before{content:'\e090'}.glyphicon-arrow-left:before{content:'\e091'}.glyphicon-arrow-right:before{content:'\e092'}.glyphicon-arrow-up:before{content:'\e093'}.glyphicon-arrow-down:before{content:'\e094'}.glyphicon-share-alt:before{content:'\e095'}.glyphicon-resize-full:before{content:'\e096'}.glyphicon-resize-small:before{content:'\e097'}.glyphicon-exclamation-sign:before{content:'\e101'}.glyphicon-gift:before{content:'\e102'}.glyphicon-leaf:before{content:'\e103'}.glyphicon-fire:before{content:'\e104'}.glyphicon-eye-open:before{content:'\e105'}.glyphicon-eye-close:before{content:'\e106'}.glyphicon-warning-sign:before{content:'\e107'}.glyphicon-plane:before{content:'\e108'}.glyphicon-calendar:before{content:'\e109'}.glyphicon-random:before{content:'\e110'}.glyphicon-comment:before{content:'\e111'}.glyphicon-magnet:before{content:'\e112'}.glyphicon-chevron-up:before{content:'\e113'}.glyphicon-chevron-down:before{content:'\e114'}.glyphicon-retweet:before{content:'\e115'}.glyphicon-shopping-cart:before{content:'\e116'}.glyphicon-folder-close:before{content:'\e117'}.glyphicon-folder-open:before{content:'\e118'}.glyphicon-resize-vertical:before{content:'\e119'}.glyphicon-resize-horizontal:before{content:'\e120'}.glyphicon-hdd:before{content:'\e121'}.glyphicon-bullhorn:before{content:'\e122'}.glyphicon-bell:before{content:'\e123'}.glyphicon-certificate:before{content:'\e124'}.glyphicon-thumbs-up:before{content:'\e125'}.glyphicon-thumbs-down:before{content:'\e126'}.glyphicon-hand-right:before{content:'\e127'}.glyphicon-hand-left:before{content:'\e128'}.glyphicon-hand-up:before{content:'\e129'}.glyphicon-hand-down:before{content:'\e130'}.glyphicon-circle-arrow-right:before{content:'\e131'}.glyphicon-circle-arrow-left:before{content:'\e132'}.glyphicon-circle-arrow-up:before{content:'\e133'}.glyphicon-circle-arrow-down:before{content:'\e134'}.glyphicon-globe:before{content:'\e135'}.glyphicon-wrench:before{content:'\e136'}.glyphicon-tasks:before{content:'\e137'}.glyphicon-filter:before{content:'\e138'}.glyphicon-briefcase:before{content:'\e139'}.glyphicon-fullscreen:before{content:'\e140'}.glyphicon-dashboard:before{content:'\e141'}.glyphicon-paperclip:before{content:'\e142'}.glyphicon-heart-empty:before{content:'\e143'}.glyphicon-link:before{content:'\e144'}.glyphicon-phone:before{content:'\e145'}.glyphicon-pushpin:before{content:'\e146'}.glyphicon-usd:before{content:'\e148'}.glyphicon-gbp:before{content:'\e149'}.glyphicon-sort:before{content:'\e150'}.glyphicon-sort-by-alphabet:before{content:'\e151'}.glyphicon-sort-by-alphabet-alt:before{content:'\e152'}.glyphicon-sort-by-order:before{content:'\e153'}.glyphicon-sort-by-order-alt:before{content:'\e154'}.glyphicon-sort-by-attributes:before{content:'\e155'}.glyphicon-sort-by-attributes-alt:before{content:'\e156'}.glyphicon-unchecked:before{content:'\e157'}.glyphicon-expand:before{content:'\e158'}.glyphicon-collapse-down:before{content:'\e159'}.glyphicon-collapse-up:before{content:'\e160'}.glyphicon-log-in:before{content:'\e161'}.glyphicon-flash:before{content:'\e162'}.glyphicon-log-out:before{content:'\e163'}.glyphicon-new-window:before{content:'\e164'}.glyphicon-record:before{content:'\e165'}.glyphicon-save:before{content:'\e166'}.glyphicon-open:before{content:'\e167'}.glyphicon-saved:before{content:'\e168'}.glyphicon-import:before{content:'\e169'}.glyphicon-export:before{content:'\e170'}.glyphicon-send:before{content:'\e171'}.glyphicon-floppy-disk:before{content:'\e172'}.glyphicon-floppy-saved:before{content:'\e173'}.glyphicon-floppy-remove:before{content:'\e174'}.glyphicon-floppy-save:before{content:'\e175'}.glyphicon-floppy-open:before{content:'\e176'}.glyphicon-credit-card:before{content:'\e177'}.glyphicon-transfer:before{content:'\e178'}.glyphicon-cutlery:before{content:'\e179'}.glyphicon-header:before{content:'\e180'}.glyphicon-compressed:before{content:'\e181'}.glyphicon-earphone:before{content:'\e182'}.glyphicon-phone-alt:before{content:'\e183'}.glyphicon-tower:before{content:'\e184'}.glyphicon-stats:before{content:'\e185'}.glyphicon-sd-video:before{content:'\e186'}.glyphicon-hd-video:before{content:'\e187'}.glyphicon-subtitles:before{content:'\e188'}.glyphicon-sound-stereo:before{content:'\e189'}.glyphicon-sound-dolby:before{content:'\e190'}.glyphicon-sound-5-1:before{content:'\e191'}.glyphicon-sound-6-1:before{content:'\e192'}.glyphicon-sound-7-1:before{content:'\e193'}.glyphicon-copyright-mark:before{content:'\e194'}.glyphicon-registration-mark:before{content:'\e195'}.glyphicon-cloud-download:before{content:'\e197'}.glyphicon-cloud-upload:before{content:'\e198'}.glyphicon-tree-conifer:before{content:'\e199'}.glyphicon-tree-deciduous:before{content:'\e200'}.glyphicon-cd:before{content:'\e201'}.glyphicon-save-file:before{content:'\e202'}.glyphicon-open-file:before{content:'\e203'}.glyphicon-level-up:before{content:'\e204'}.glyphicon-copy:before{content:'\e205'}.glyphicon-paste:before{content:'\e206'}.glyphicon-alert:before{content:'\e209'}.glyphicon-equalizer:before{content:'\e210'}.glyphicon-king:before{content:'\e211'}.glyphicon-queen:before{content:'\e212'}.glyphicon-pawn:before{content:'\e213'}.glyphicon-bishop:before{content:'\e214'}.glyphicon-knight:before{content:'\e215'}.glyphicon-baby-formula:before{content:'\e216'}.glyphicon-tent:before{content:'\26fa'}.glyphicon-blackboard:before{content:'\e218'}.glyphicon-bed:before{content:'\e219'}.glyphicon-apple:before{content:'\f8ff'}.glyphicon-erase:before{content:'\e221'}.glyphicon-hourglass:before{content:'\231b'}.glyphicon-lamp:before{content:'\e223'}.glyphicon-duplicate:before{content:'\e224'}.glyphicon-piggy-bank:before{content:'\e225'}.glyphicon-scissors:before{content:'\e226'}.glyphicon-bitcoin:before{content:'\e227'}.glyphicon-btc:before{content:'\e227'}.glyphicon-xbt:before{content:'\e227'}.glyphicon-yen:before{content:'\00a5'}.glyphicon-jpy:before{content:'\00a5'}.glyphicon-ruble:before{content:'\20bd'}.glyphicon-rub:before{content:'\20bd'}.glyphicon-scale:before{content:'\e230'}.glyphicon-ice-lolly:before{content:'\e231'}.glyphicon-ice-lolly-tasted:before{content:'\e232'}.glyphicon-education:before{content:'\e233'}.glyphicon-option-horizontal:before{content:'\e234'}.glyphicon-option-vertical:before{content:'\e235'}.glyphicon-menu-hamburger:before{content:'\e236'}.glyphicon-modal-window:before{content:'\e237'}.glyphicon-oil:before{content:'\e238'}.glyphicon-grain:before{content:'\e239'}.glyphicon-sunglasses:before{content:'\e240'}.glyphicon-text-size:before{content:'\e241'}.glyphicon-text-color:before{content:'\e242'}.glyphicon-text-background:before{content:'\e243'}.glyphicon-object-align-top:before{content:'\e244'}.glyphicon-object-align-bottom:before{content:'\e245'}.glyphicon-object-align-horizontal:before{content:'\e246'}.glyphicon-object-align-left:before{content:'\e247'}.glyphicon-object-align-vertical:before{content:'\e248'}.glyphicon-object-align-right:before{content:'\e249'}.glyphicon-triangle-right:before{content:'\e250'}.glyphicon-triangle-left:before{content:'\e251'}.glyphicon-triangle-bottom:before{content:'\e252'}.glyphicon-triangle-top:before{content:'\e253'}.glyphicon-console:before{content:'\e254'}.glyphicon-superscript:before{content:'\e255'}.glyphicon-subscript:before{content:'\e256'}.glyphicon-menu-left:before{content:'\e257'}.glyphicon-menu-right:before{content:'\e258'}.glyphicon-menu-down:before{content:'\e259'}.glyphicon-menu-up:before{content:'\e260'}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role='button']{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{padding:0.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo, Monaco, Consolas, 'Courier New', monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*='col-']{position:static;display:table-column;float:none}table td[class*='col-'],table th[class*='col-']{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{min-height:0.01%;overflow-x:auto}@media screen and (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type='search']{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type='radio'],input[type='checkbox']{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type='file']{display:block}input[type='range']{display:block;width:100%}select[multiple],select[size]{height:auto}input[type='file']:focus,input[type='radio']:focus,input[type='checkbox']:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type='radio'],.radio-inline input[type='radio'],.checkbox input[type='checkbox'],.checkbox-inline input[type='checkbox']{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:normal;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type='radio'][disabled],input[type='checkbox'][disabled],input[type='radio'].disabled,input[type='checkbox'].disabled,fieldset[disabled] input[type='radio'],fieldset[disabled] input[type='checkbox']{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static,.form-group div[class*='textBox']>.control-label,.form-group div[class*='textArea']>.control-label,.form-group div[class*='datePicker']>.control-label{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-group div[class*='textBox']>.input-lg.control-label,.form-group div[class*='textArea']>.input-lg.control-label,.form-group div[class*='datePicker']>.input-lg.control-label,.form-control-static.input-sm,.form-group div[class*='textBox']>.input-sm.control-label,.form-group div[class*='textArea']>.input-sm.control-label,.form-group div[class*='datePicker']>.input-sm.control-label{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.form-group-sm .form-control{height:30px;line-height:30px}textarea.form-group-sm .form-control,select[multiple].form-group-sm .form-control{height:auto}.form-group-sm .form-control-static,.form-group-sm .form-group div[class*='textBox']>.control-label,.form-group .form-group-sm div[class*='textBox']>.control-label,.form-group-sm .form-group div[class*='textArea']>.control-label,.form-group .form-group-sm div[class*='textArea']>.control-label,.form-group-sm .form-group div[class*='datePicker']>.control-label,.form-group .form-group-sm div[class*='datePicker']>.control-label{height:30px;min-height:32px;padding:5px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.form-group-lg .form-control{height:46px;line-height:46px}textarea.form-group-lg .form-control,select[multiple].form-group-lg .form-control{height:auto}.form-group-lg .form-control-static,.form-group-lg .form-group div[class*='textBox']>.control-label,.form-group .form-group-lg div[class*='textBox']>.control-label,.form-group-lg .form-group div[class*='textArea']>.control-label,.form-group .form-group-lg div[class*='textArea']>.control-label,.form-group-lg .form-group div[class*='datePicker']>.control-label,.form-group .form-group-lg div[class*='datePicker']>.control-label{height:46px;min-height:38px;padding:10px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width: 768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static,.form-inline .form-group div[class*='textBox']>.control-label,.form-group .form-inline div[class*='textBox']>.control-label,.form-inline .form-group div[class*='textArea']>.control-label,.form-group .form-inline div[class*='textArea']>.control-label,.form-inline .form-group div[class*='datePicker']>.control-label,.form-group .form-inline div[class*='datePicker']>.control-label{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type='radio'],.form-inline .checkbox input[type='checkbox']{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:14.333333px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:0.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary,.datagrid-fullsearch.mx-grid .mx-grid-search-button{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.datagrid-fullsearch.mx-grid .mx-grid-search-button:hover,.btn-primary:focus,.datagrid-fullsearch.mx-grid .mx-grid-search-button:focus,.btn-primary.focus,.datagrid-fullsearch.mx-grid .focus.mx-grid-search-button,.btn-primary:active,.datagrid-fullsearch.mx-grid .mx-grid-search-button:active,.btn-primary.active,.datagrid-fullsearch.mx-grid .active.mx-grid-search-button,.open>.dropdown-toggle.btn-primary,.datagrid-fullsearch.mx-grid .open>.dropdown-toggle.mx-grid-search-button{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.datagrid-fullsearch.mx-grid .mx-grid-search-button:active,.btn-primary.active,.datagrid-fullsearch.mx-grid .active.mx-grid-search-button,.open>.dropdown-toggle.btn-primary,.datagrid-fullsearch.mx-grid .open>.dropdown-toggle.mx-grid-search-button{background-image:none}.btn-primary.disabled,.datagrid-fullsearch.mx-grid .disabled.mx-grid-search-button,.btn-primary[disabled],.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled],fieldset[disabled] .btn-primary,fieldset[disabled] .datagrid-fullsearch.mx-grid .mx-grid-search-button,.datagrid-fullsearch.mx-grid fieldset[disabled] .mx-grid-search-button,.btn-primary.disabled:hover,.datagrid-fullsearch.mx-grid .disabled.mx-grid-search-button:hover,.btn-primary[disabled]:hover,.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled]:hover,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .datagrid-fullsearch.mx-grid .mx-grid-search-button:hover,.datagrid-fullsearch.mx-grid fieldset[disabled] .mx-grid-search-button:hover,.btn-primary.disabled:focus,.datagrid-fullsearch.mx-grid .disabled.mx-grid-search-button:focus,.btn-primary[disabled]:focus,.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled]:focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .datagrid-fullsearch.mx-grid .mx-grid-search-button:focus,.datagrid-fullsearch.mx-grid fieldset[disabled] .mx-grid-search-button:focus,.btn-primary.disabled.focus,.datagrid-fullsearch.mx-grid .disabled.focus.mx-grid-search-button,.btn-primary[disabled].focus,.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled].focus,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .datagrid-fullsearch.mx-grid .focus.mx-grid-search-button,.datagrid-fullsearch.mx-grid fieldset[disabled] .focus.mx-grid-search-button,.btn-primary.disabled:active,.datagrid-fullsearch.mx-grid .disabled.mx-grid-search-button:active,.btn-primary[disabled]:active,.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled]:active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .datagrid-fullsearch.mx-grid .mx-grid-search-button:active,.datagrid-fullsearch.mx-grid fieldset[disabled] .mx-grid-search-button:active,.btn-primary.disabled.active,.datagrid-fullsearch.mx-grid .disabled.active.mx-grid-search-button,.btn-primary[disabled].active,.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled].active,fieldset[disabled] .btn-primary.active,fieldset[disabled] .datagrid-fullsearch.mx-grid .active.mx-grid-search-button,.datagrid-fullsearch.mx-grid fieldset[disabled] .active.mx-grid-search-button{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge,.datagrid-fullsearch.mx-grid .mx-grid-search-button .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:normal;color:#337ab7;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type='submit'].btn-block,input[type='reset'].btn-block,input[type='button'].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:'';border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle='buttons']>.btn input[type='radio'],[data-toggle='buttons']>.btn-group>.btn input[type='radio'],[data-toggle='buttons']>.btn input[type='checkbox'],[data-toggle='buttons']>.btn-group>.btn input[type='checkbox']{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*='col-']{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type='radio'],.input-group-addon input[type='checkbox']{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width: 768px){.navbar{border-radius:4px}}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static,.navbar-form .form-group div[class*='textBox']>.control-label,.form-group .navbar-form div[class*='textBox']>.control-label,.navbar-form .form-group div[class*='textArea']>.control-label,.form-group .navbar-form div[class*='textArea']>.control-label,.navbar-form .form-group div[class*='datePicker']>.control-label,.form-group .navbar-form div[class*='datePicker']>.control-label{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type='radio'],.navbar-form .checkbox input[type='checkbox']{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:'/\00a0'}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:0.2em 0.6em 0.3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:0.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:0.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:0.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:transparent;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out;-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%)}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:0.5}.modal-header{min-height:16.42857143px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:12px;font-weight:normal;line-height:1.4;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:0.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:14px;font-weight:normal;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:'';border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:' ';border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:' ';border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:' ';border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:' ';border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d), (-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform 0.6s ease-in-out;-o-transition:-o-transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.next,.carousel-inner>.item.active.right{left:0;-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{left:0;-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{left:0;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);filter:alpha(opacity=50);opacity:0.5}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:0.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width: 768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:' '}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width: 767px){.visible-xs-block{display:block !important}}@media (max-width: 767px){.visible-xs-inline{display:inline !important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width: 1200px){.visible-lg-block{display:block !important}}@media (min-width: 1200px){.visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}[dir='rtl'] .flip.text-left{text-align:right}[dir='rtl'] .flip.text-right{text-align:left}[dir='rtl'] .list-unstyled{padding-right:0;padding-left:initial}[dir='rtl'] .list-inline{padding-right:0;padding-left:initial;margin-right:-5px;margin-left:0}[dir='rtl'] dd{margin-right:0;margin-left:initial}@media (min-width: 768px){[dir='rtl'] .dl-horizontal dt{float:right;clear:right;text-align:left}[dir='rtl'] .dl-horizontal dd{margin-right:180px;margin-left:0}}[dir='rtl'] blockquote{border-right:5px solid #eeeeee;border-left:0}[dir='rtl'] .blockquote-reverse,[dir='rtl'] blockquote.pull-left{padding-left:15px;padding-right:0;border-left:5px solid #eeeeee;border-right:0;text-align:left}[dir='rtl'] .col-xs-1,[dir='rtl'] .col-sm-1,[dir='rtl'] .col-md-1,[dir='rtl'] .col-lg-1,[dir='rtl'] .col-xs-2,[dir='rtl'] .col-sm-2,[dir='rtl'] .col-md-2,[dir='rtl'] .col-lg-2,[dir='rtl'] .col-xs-3,[dir='rtl'] .col-sm-3,[dir='rtl'] .col-md-3,[dir='rtl'] .col-lg-3,[dir='rtl'] .col-xs-4,[dir='rtl'] .col-sm-4,[dir='rtl'] .col-md-4,[dir='rtl'] .col-lg-4,[dir='rtl'] .col-xs-5,[dir='rtl'] .col-sm-5,[dir='rtl'] .col-md-5,[dir='rtl'] .col-lg-5,[dir='rtl'] .col-xs-6,[dir='rtl'] .col-sm-6,[dir='rtl'] .col-md-6,[dir='rtl'] .col-lg-6,[dir='rtl'] .col-xs-7,[dir='rtl'] .col-sm-7,[dir='rtl'] .col-md-7,[dir='rtl'] .col-lg-7,[dir='rtl'] .col-xs-8,[dir='rtl'] .col-sm-8,[dir='rtl'] .col-md-8,[dir='rtl'] .col-lg-8,[dir='rtl'] .col-xs-9,[dir='rtl'] .col-sm-9,[dir='rtl'] .col-md-9,[dir='rtl'] .col-lg-9,[dir='rtl'] .col-xs-10,[dir='rtl'] .col-sm-10,[dir='rtl'] .col-md-10,[dir='rtl'] .col-lg-10,[dir='rtl'] .col-xs-11,[dir='rtl'] .col-sm-11,[dir='rtl'] .col-md-11,[dir='rtl'] .col-lg-11,[dir='rtl'] .col-xs-12,[dir='rtl'] .col-sm-12,[dir='rtl'] .col-md-12,[dir='rtl'] .col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}[dir='rtl'] .col-xs-1,[dir='rtl'] .col-xs-2,[dir='rtl'] .col-xs-3,[dir='rtl'] .col-xs-4,[dir='rtl'] .col-xs-5,[dir='rtl'] .col-xs-6,[dir='rtl'] .col-xs-7,[dir='rtl'] .col-xs-8,[dir='rtl'] .col-xs-9,[dir='rtl'] .col-xs-10,[dir='rtl'] .col-xs-11,[dir='rtl'] .col-xs-12{float:right}[dir='rtl'] .col-xs-12{width:100%}[dir='rtl'] .col-xs-11{width:91.66666667%}[dir='rtl'] .col-xs-10{width:83.33333333%}[dir='rtl'] .col-xs-9{width:75%}[dir='rtl'] .col-xs-8{width:66.66666667%}[dir='rtl'] .col-xs-7{width:58.33333333%}[dir='rtl'] .col-xs-6{width:50%}[dir='rtl'] .col-xs-5{width:41.66666667%}[dir='rtl'] .col-xs-4{width:33.33333333%}[dir='rtl'] .col-xs-3{width:25%}[dir='rtl'] .col-xs-2{width:16.66666667%}[dir='rtl'] .col-xs-1{width:8.33333333%}[dir='rtl'] .col-xs-pull-12{left:100%;right:auto}[dir='rtl'] .col-xs-pull-11{left:91.66666667%;right:auto}[dir='rtl'] .col-xs-pull-10{left:83.33333333%;right:auto}[dir='rtl'] .col-xs-pull-9{left:75%;right:auto}[dir='rtl'] .col-xs-pull-8{left:66.66666667%;right:auto}[dir='rtl'] .col-xs-pull-7{left:58.33333333%;right:auto}[dir='rtl'] .col-xs-pull-6{left:50%;right:auto}[dir='rtl'] .col-xs-pull-5{left:41.66666667%;right:auto}[dir='rtl'] .col-xs-pull-4{left:33.33333333%;right:auto}[dir='rtl'] .col-xs-pull-3{left:25%;right:auto}[dir='rtl'] .col-xs-pull-2{left:16.66666667%;right:auto}[dir='rtl'] .col-xs-pull-1{left:8.33333333%;right:auto}[dir='rtl'] .col-xs-pull-0{left:auto;right:auto}[dir='rtl'] .col-xs-push-12{right:100%;left:0}[dir='rtl'] .col-xs-push-11{right:91.66666667%;left:0}[dir='rtl'] .col-xs-push-10{right:83.33333333%;left:0}[dir='rtl'] .col-xs-push-9{right:75%;left:0}[dir='rtl'] .col-xs-push-8{right:66.66666667%;left:0}[dir='rtl'] .col-xs-push-7{right:58.33333333%;left:0}[dir='rtl'] .col-xs-push-6{right:50%;left:0}[dir='rtl'] .col-xs-push-5{right:41.66666667%;left:0}[dir='rtl'] .col-xs-push-4{right:33.33333333%;left:0}[dir='rtl'] .col-xs-push-3{right:25%;left:0}[dir='rtl'] .col-xs-push-2{right:16.66666667%;left:0}[dir='rtl'] .col-xs-push-1{right:8.33333333%;left:0}[dir='rtl'] .col-xs-push-0{right:auto;left:0}[dir='rtl'] .col-xs-offset-12{margin-right:100%;margin-left:0}[dir='rtl'] .col-xs-offset-11{margin-right:91.66666667%;margin-left:0}[dir='rtl'] .col-xs-offset-10{margin-right:83.33333333%;margin-left:0}[dir='rtl'] .col-xs-offset-9{margin-right:75%;margin-left:0}[dir='rtl'] .col-xs-offset-8{margin-right:66.66666667%;margin-left:0}[dir='rtl'] .col-xs-offset-7{margin-right:58.33333333%;margin-left:0}[dir='rtl'] .col-xs-offset-6{margin-right:50%;margin-left:0}[dir='rtl'] .col-xs-offset-5{margin-right:41.66666667%;margin-left:0}[dir='rtl'] .col-xs-offset-4{margin-right:33.33333333%;margin-left:0}[dir='rtl'] .col-xs-offset-3{margin-right:25%;margin-left:0}[dir='rtl'] .col-xs-offset-2{margin-right:16.66666667%;margin-left:0}[dir='rtl'] .col-xs-offset-1{margin-right:8.33333333%;margin-left:0}[dir='rtl'] .col-xs-offset-0{margin-right:0%;margin-left:0}@media (min-width: 768px){[dir='rtl'] .col-sm-1,[dir='rtl'] .col-sm-2,[dir='rtl'] .col-sm-3,[dir='rtl'] .col-sm-4,[dir='rtl'] .col-sm-5,[dir='rtl'] .col-sm-6,[dir='rtl'] .col-sm-7,[dir='rtl'] .col-sm-8,[dir='rtl'] .col-sm-9,[dir='rtl'] .col-sm-10,[dir='rtl'] .col-sm-11,[dir='rtl'] .col-sm-12{float:right}[dir='rtl'] .col-sm-12{width:100%}[dir='rtl'] .col-sm-11{width:91.66666667%}[dir='rtl'] .col-sm-10{width:83.33333333%}[dir='rtl'] .col-sm-9{width:75%}[dir='rtl'] .col-sm-8{width:66.66666667%}[dir='rtl'] .col-sm-7{width:58.33333333%}[dir='rtl'] .col-sm-6{width:50%}[dir='rtl'] .col-sm-5{width:41.66666667%}[dir='rtl'] .col-sm-4{width:33.33333333%}[dir='rtl'] .col-sm-3{width:25%}[dir='rtl'] .col-sm-2{width:16.66666667%}[dir='rtl'] .col-sm-1{width:8.33333333%}[dir='rtl'] .col-sm-pull-12{left:100%;right:auto}[dir='rtl'] .col-sm-pull-11{left:91.66666667%;right:auto}[dir='rtl'] .col-sm-pull-10{left:83.33333333%;right:auto}[dir='rtl'] .col-sm-pull-9{left:75%;right:auto}[dir='rtl'] .col-sm-pull-8{left:66.66666667%;right:auto}[dir='rtl'] .col-sm-pull-7{left:58.33333333%;right:auto}[dir='rtl'] .col-sm-pull-6{left:50%;right:auto}[dir='rtl'] .col-sm-pull-5{left:41.66666667%;right:auto}[dir='rtl'] .col-sm-pull-4{left:33.33333333%;right:auto}[dir='rtl'] .col-sm-pull-3{left:25%;right:auto}[dir='rtl'] .col-sm-pull-2{left:16.66666667%;right:auto}[dir='rtl'] .col-sm-pull-1{left:8.33333333%;right:auto}[dir='rtl'] .col-sm-pull-0{left:auto;right:auto}[dir='rtl'] .col-sm-push-12{right:100%;left:0}[dir='rtl'] .col-sm-push-11{right:91.66666667%;left:0}[dir='rtl'] .col-sm-push-10{right:83.33333333%;left:0}[dir='rtl'] .col-sm-push-9{right:75%;left:0}[dir='rtl'] .col-sm-push-8{right:66.66666667%;left:0}[dir='rtl'] .col-sm-push-7{right:58.33333333%;left:0}[dir='rtl'] .col-sm-push-6{right:50%;left:0}[dir='rtl'] .col-sm-push-5{right:41.66666667%;left:0}[dir='rtl'] .col-sm-push-4{right:33.33333333%;left:0}[dir='rtl'] .col-sm-push-3{right:25%;left:0}[dir='rtl'] .col-sm-push-2{right:16.66666667%;left:0}[dir='rtl'] .col-sm-push-1{right:8.33333333%;left:0}[dir='rtl'] .col-sm-push-0{right:auto;left:0}[dir='rtl'] .col-sm-offset-12{margin-right:100%;margin-left:0}[dir='rtl'] .col-sm-offset-11{margin-right:91.66666667%;margin-left:0}[dir='rtl'] .col-sm-offset-10{margin-right:83.33333333%;margin-left:0}[dir='rtl'] .col-sm-offset-9{margin-right:75%;margin-left:0}[dir='rtl'] .col-sm-offset-8{margin-right:66.66666667%;margin-left:0}[dir='rtl'] .col-sm-offset-7{margin-right:58.33333333%;margin-left:0}[dir='rtl'] .col-sm-offset-6{margin-right:50%;margin-left:0}[dir='rtl'] .col-sm-offset-5{margin-right:41.66666667%;margin-left:0}[dir='rtl'] .col-sm-offset-4{margin-right:33.33333333%;margin-left:0}[dir='rtl'] .col-sm-offset-3{margin-right:25%;margin-left:0}[dir='rtl'] .col-sm-offset-2{margin-right:16.66666667%;margin-left:0}[dir='rtl'] .col-sm-offset-1{margin-right:8.33333333%;margin-left:0}[dir='rtl'] .col-sm-offset-0{margin-right:0%;margin-left:0}}@media (min-width: 992px){[dir='rtl'] .col-md-1,[dir='rtl'] .col-md-2,[dir='rtl'] .col-md-3,[dir='rtl'] .col-md-4,[dir='rtl'] .col-md-5,[dir='rtl'] .col-md-6,[dir='rtl'] .col-md-7,[dir='rtl'] .col-md-8,[dir='rtl'] .col-md-9,[dir='rtl'] .col-md-10,[dir='rtl'] .col-md-11,[dir='rtl'] .col-md-12{float:right}[dir='rtl'] .col-md-12{width:100%}[dir='rtl'] .col-md-11{width:91.66666667%}[dir='rtl'] .col-md-10{width:83.33333333%}[dir='rtl'] .col-md-9{width:75%}[dir='rtl'] .col-md-8{width:66.66666667%}[dir='rtl'] .col-md-7{width:58.33333333%}[dir='rtl'] .col-md-6{width:50%}[dir='rtl'] .col-md-5{width:41.66666667%}[dir='rtl'] .col-md-4{width:33.33333333%}[dir='rtl'] .col-md-3{width:25%}[dir='rtl'] .col-md-2{width:16.66666667%}[dir='rtl'] .col-md-1{width:8.33333333%}[dir='rtl'] .col-md-pull-12{left:100%;right:auto}[dir='rtl'] .col-md-pull-11{left:91.66666667%;right:auto}[dir='rtl'] .col-md-pull-10{left:83.33333333%;right:auto}[dir='rtl'] .col-md-pull-9{left:75%;right:auto}[dir='rtl'] .col-md-pull-8{left:66.66666667%;right:auto}[dir='rtl'] .col-md-pull-7{left:58.33333333%;right:auto}[dir='rtl'] .col-md-pull-6{left:50%;right:auto}[dir='rtl'] .col-md-pull-5{left:41.66666667%;right:auto}[dir='rtl'] .col-md-pull-4{left:33.33333333%;right:auto}[dir='rtl'] .col-md-pull-3{left:25%;right:auto}[dir='rtl'] .col-md-pull-2{left:16.66666667%;right:auto}[dir='rtl'] .col-md-pull-1{left:8.33333333%;right:auto}[dir='rtl'] .col-md-pull-0{left:auto;right:auto}[dir='rtl'] .col-md-push-12{right:100%;left:0}[dir='rtl'] .col-md-push-11{right:91.66666667%;left:0}[dir='rtl'] .col-md-push-10{right:83.33333333%;left:0}[dir='rtl'] .col-md-push-9{right:75%;left:0}[dir='rtl'] .col-md-push-8{right:66.66666667%;left:0}[dir='rtl'] .col-md-push-7{right:58.33333333%;left:0}[dir='rtl'] .col-md-push-6{right:50%;left:0}[dir='rtl'] .col-md-push-5{right:41.66666667%;left:0}[dir='rtl'] .col-md-push-4{right:33.33333333%;left:0}[dir='rtl'] .col-md-push-3{right:25%;left:0}[dir='rtl'] .col-md-push-2{right:16.66666667%;left:0}[dir='rtl'] .col-md-push-1{right:8.33333333%;left:0}[dir='rtl'] .col-md-push-0{right:auto;left:0}[dir='rtl'] .col-md-offset-12{margin-right:100%;margin-left:0}[dir='rtl'] .col-md-offset-11{margin-right:91.66666667%;margin-left:0}[dir='rtl'] .col-md-offset-10{margin-right:83.33333333%;margin-left:0}[dir='rtl'] .col-md-offset-9{margin-right:75%;margin-left:0}[dir='rtl'] .col-md-offset-8{margin-right:66.66666667%;margin-left:0}[dir='rtl'] .col-md-offset-7{margin-right:58.33333333%;margin-left:0}[dir='rtl'] .col-md-offset-6{margin-right:50%;margin-left:0}[dir='rtl'] .col-md-offset-5{margin-right:41.66666667%;margin-left:0}[dir='rtl'] .col-md-offset-4{margin-right:33.33333333%;margin-left:0}[dir='rtl'] .col-md-offset-3{margin-right:25%;margin-left:0}[dir='rtl'] .col-md-offset-2{margin-right:16.66666667%;margin-left:0}[dir='rtl'] .col-md-offset-1{margin-right:8.33333333%;margin-left:0}[dir='rtl'] .col-md-offset-0{margin-right:0%;margin-left:0}}@media (min-width: 1200px){[dir='rtl'] .col-lg-1,[dir='rtl'] .col-lg-2,[dir='rtl'] .col-lg-3,[dir='rtl'] .col-lg-4,[dir='rtl'] .col-lg-5,[dir='rtl'] .col-lg-6,[dir='rtl'] .col-lg-7,[dir='rtl'] .col-lg-8,[dir='rtl'] .col-lg-9,[dir='rtl'] .col-lg-10,[dir='rtl'] .col-lg-11,[dir='rtl'] .col-lg-12{float:right}[dir='rtl'] .col-lg-12{width:100%}[dir='rtl'] .col-lg-11{width:91.66666667%}[dir='rtl'] .col-lg-10{width:83.33333333%}[dir='rtl'] .col-lg-9{width:75%}[dir='rtl'] .col-lg-8{width:66.66666667%}[dir='rtl'] .col-lg-7{width:58.33333333%}[dir='rtl'] .col-lg-6{width:50%}[dir='rtl'] .col-lg-5{width:41.66666667%}[dir='rtl'] .col-lg-4{width:33.33333333%}[dir='rtl'] .col-lg-3{width:25%}[dir='rtl'] .col-lg-2{width:16.66666667%}[dir='rtl'] .col-lg-1{width:8.33333333%}[dir='rtl'] .col-lg-pull-12{left:100%;right:auto}[dir='rtl'] .col-lg-pull-11{left:91.66666667%;right:auto}[dir='rtl'] .col-lg-pull-10{left:83.33333333%;right:auto}[dir='rtl'] .col-lg-pull-9{left:75%;right:auto}[dir='rtl'] .col-lg-pull-8{left:66.66666667%;right:auto}[dir='rtl'] .col-lg-pull-7{left:58.33333333%;right:auto}[dir='rtl'] .col-lg-pull-6{left:50%;right:auto}[dir='rtl'] .col-lg-pull-5{left:41.66666667%;right:auto}[dir='rtl'] .col-lg-pull-4{left:33.33333333%;right:auto}[dir='rtl'] .col-lg-pull-3{left:25%;right:auto}[dir='rtl'] .col-lg-pull-2{left:16.66666667%;right:auto}[dir='rtl'] .col-lg-pull-1{left:8.33333333%;right:auto}[dir='rtl'] .col-lg-pull-0{left:auto;right:auto}[dir='rtl'] .col-lg-push-12{right:100%;left:0}[dir='rtl'] .col-lg-push-11{right:91.66666667%;left:0}[dir='rtl'] .col-lg-push-10{right:83.33333333%;left:0}[dir='rtl'] .col-lg-push-9{right:75%;left:0}[dir='rtl'] .col-lg-push-8{right:66.66666667%;left:0}[dir='rtl'] .col-lg-push-7{right:58.33333333%;left:0}[dir='rtl'] .col-lg-push-6{right:50%;left:0}[dir='rtl'] .col-lg-push-5{right:41.66666667%;left:0}[dir='rtl'] .col-lg-push-4{right:33.33333333%;left:0}[dir='rtl'] .col-lg-push-3{right:25%;left:0}[dir='rtl'] .col-lg-push-2{right:16.66666667%;left:0}[dir='rtl'] .col-lg-push-1{right:8.33333333%;left:0}[dir='rtl'] .col-lg-push-0{right:auto;left:0}[dir='rtl'] .col-lg-offset-12{margin-right:100%;margin-left:0}[dir='rtl'] .col-lg-offset-11{margin-right:91.66666667%;margin-left:0}[dir='rtl'] .col-lg-offset-10{margin-right:83.33333333%;margin-left:0}[dir='rtl'] .col-lg-offset-9{margin-right:75%;margin-left:0}[dir='rtl'] .col-lg-offset-8{margin-right:66.66666667%;margin-left:0}[dir='rtl'] .col-lg-offset-7{margin-right:58.33333333%;margin-left:0}[dir='rtl'] .col-lg-offset-6{margin-right:50%;margin-left:0}[dir='rtl'] .col-lg-offset-5{margin-right:41.66666667%;margin-left:0}[dir='rtl'] .col-lg-offset-4{margin-right:33.33333333%;margin-left:0}[dir='rtl'] .col-lg-offset-3{margin-right:25%;margin-left:0}[dir='rtl'] .col-lg-offset-2{margin-right:16.66666667%;margin-left:0}[dir='rtl'] .col-lg-offset-1{margin-right:8.33333333%;margin-left:0}[dir='rtl'] .col-lg-offset-0{margin-right:0%;margin-left:0}}[dir='rtl'] caption{text-align:right}[dir='rtl'] th:not(.mx-left-aligned){text-align:right}@media screen and (max-width: 767px){[dir='rtl'] .table-responsive>.table-bordered{border:0}[dir='rtl'] .table-responsive>.table-bordered>thead>tr>th:first-child,[dir='rtl'] .table-responsive>.table-bordered>tbody>tr>th:first-child,[dir='rtl'] .table-responsive>.table-bordered>tfoot>tr>th:first-child,[dir='rtl'] .table-responsive>.table-bordered>thead>tr>td:first-child,[dir='rtl'] .table-responsive>.table-bordered>tbody>tr>td:first-child,[dir='rtl'] .table-responsive>.table-bordered>tfoot>tr>td:first-child{border-right:0;border-left:initial}[dir='rtl'] .table-responsive>.table-bordered>thead>tr>th:last-child,[dir='rtl'] .table-responsive>.table-bordered>tbody>tr>th:last-child,[dir='rtl'] .table-responsive>.table-bordered>tfoot>tr>th:last-child,[dir='rtl'] .table-responsive>.table-bordered>thead>tr>td:last-child,[dir='rtl'] .table-responsive>.table-bordered>tbody>tr>td:last-child,[dir='rtl'] .table-responsive>.table-bordered>tfoot>tr>td:last-child{border-left:0;border-right:initial}}[dir='rtl'] .radio label,[dir='rtl'] .checkbox label{padding-right:20px;padding-left:initial}[dir='rtl'] .radio input[type='radio'],[dir='rtl'] .radio-inline input[type='radio'],[dir='rtl'] .checkbox input[type='checkbox'],[dir='rtl'] .checkbox-inline input[type='checkbox']{margin-right:-20px;margin-left:auto}[dir='rtl'] .radio-inline,[dir='rtl'] .checkbox-inline{padding-right:20px;padding-left:0}[dir='rtl'] .radio-inline+.radio-inline,[dir='rtl'] .checkbox-inline+.checkbox-inline{margin-right:10px;margin-left:0}[dir='rtl'] .has-feedback .form-control{padding-left:42.5px;padding-right:12px}[dir='rtl'] .form-control-feedback{left:0;right:auto}@media (min-width: 768px){[dir='rtl'] .form-inline label{padding-right:0;padding-left:initial}[dir='rtl'] .form-inline .radio input[type='radio'],[dir='rtl'] .form-inline .checkbox input[type='checkbox']{margin-right:0;margin-left:auto}}@media (min-width: 768px){[dir='rtl'] .form-horizontal .control-label{text-align:left}}[dir='rtl'] .form-horizontal .has-feedback .form-control-feedback{left:15px;right:auto}[dir='rtl'] .caret{margin-right:2px;margin-left:0}[dir='rtl'] .dropdown-menu{right:0;left:auto;float:left;text-align:right}[dir='rtl'] .dropdown-menu.pull-right{left:0;right:auto;float:right}[dir='rtl'] .dropdown-menu-right{left:auto;right:0}[dir='rtl'] .dropdown-menu-left{left:0;right:auto}@media (min-width: 768px){[dir='rtl'] .navbar-right .dropdown-menu{left:auto;right:0}[dir='rtl'] .navbar-right .dropdown-menu-left{left:0;right:auto}}[dir='rtl'] .btn-group>.btn,[dir='rtl'] .btn-group-vertical>.btn{float:right}[dir='rtl'] .btn-group .btn+.btn,[dir='rtl'] .btn-group .btn+.btn-group,[dir='rtl'] .btn-group .btn-group+.btn,[dir='rtl'] .btn-group .btn-group+.btn-group{margin-right:-1px;margin-left:0px}[dir='rtl'] .btn-toolbar{margin-right:-5px;margin-left:0px}[dir='rtl'] .btn-toolbar .btn-group,[dir='rtl'] .btn-toolbar .input-group{float:right}[dir='rtl'] .btn-toolbar>.btn,[dir='rtl'] .btn-toolbar>.btn-group,[dir='rtl'] .btn-toolbar>.input-group{margin-right:5px;margin-left:0px}[dir='rtl'] .btn-group>.btn:first-child{margin-right:0}[dir='rtl'] .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:0;border-top-left-radius:0}[dir='rtl'] .btn-group>.btn:last-child:not(:first-child),[dir='rtl'] .btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:4px;border-bottom-left-radius:4px;border-bottom-right-radius:0;border-top-right-radius:0}[dir='rtl'] .btn-group>.btn-group{float:right}[dir='rtl'] .btn-group.btn-group-justified>.btn,[dir='rtl'] .btn-group.btn-group-justified>.btn-group{float:none}[dir='rtl'] .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}[dir='rtl'] .btn-group>.btn-group:first-child>.btn:last-child,[dir='rtl'] .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:0;border-top-left-radius:0}[dir='rtl'] .btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px;border-bottom-right-radius:0;border-top-right-radius:0}[dir='rtl'] .btn .caret{margin-right:0}[dir='rtl'] .btn-group-vertical>.btn+.btn,[dir='rtl'] .btn-group-vertical>.btn+.btn-group,[dir='rtl'] .btn-group-vertical>.btn-group+.btn,[dir='rtl'] .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-right:0}[dir='rtl'] .input-group .form-control{float:right}[dir='rtl'] .input-group .form-control:first-child,[dir='rtl'] .input-group-addon:first-child,[dir='rtl'] .input-group-btn:first-child>.btn,[dir='rtl'] .input-group-btn:first-child>.btn-group>.btn,[dir='rtl'] .input-group-btn:first-child>.dropdown-toggle,[dir='rtl'] .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),[dir='rtl'] .input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:4px;border-top-right-radius:4px;border-bottom-left-radius:0;border-top-left-radius:0}[dir='rtl'] .input-group-addon:first-child{border-left:0px;border-right:1px solid}[dir='rtl'] .input-group .form-control:last-child,[dir='rtl'] .input-group-addon:last-child,[dir='rtl'] .input-group-btn:last-child>.btn,[dir='rtl'] .input-group-btn:last-child>.btn-group>.btn,[dir='rtl'] .input-group-btn:last-child>.dropdown-toggle,[dir='rtl'] .input-group-btn:first-child>.btn:not(:first-child),[dir='rtl'] .input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-top-right-radius:0}[dir='rtl'] .input-group-addon:last-child{border-left-width:1px;border-left-style:solid;border-right:0px}[dir='rtl'] .input-group-btn>.btn+.btn{margin-right:-1px;margin-left:auto}[dir='rtl'] .input-group-btn:first-child>.btn,[dir='rtl'] .input-group-btn:first-child>.btn-group{margin-left:-1px;margin-right:auto}[dir='rtl'] .input-group-btn:last-child>.btn,[dir='rtl'] .input-group-btn:last-child>.btn-group{margin-right:-1px;margin-left:auto}[dir='rtl'] .nav{padding-right:0;padding-left:initial}[dir='rtl'] .nav-tabs>li{float:right}[dir='rtl'] .nav-tabs>li>a{margin-left:auto;margin-right:-2px;border-radius:4px 4px 0 0}[dir='rtl'] .nav-pills>li{float:right}[dir='rtl'] .nav-pills>li>a{border-radius:4px}[dir='rtl'] .nav-pills>li+li{margin-right:2px;margin-left:auto}[dir='rtl'] .nav-stacked>li{float:none}[dir='rtl'] .nav-stacked>li+li{margin-right:0;margin-left:auto}[dir='rtl'] .nav-justified>.dropdown .dropdown-menu{right:auto}[dir='rtl'] .nav-tabs-justified>li>a{margin-left:0;margin-right:auto}@media (min-width: 768px){[dir='rtl'] .nav-tabs-justified>li>a{border-radius:4px 4px 0 0}}@media (min-width: 768px){[dir='rtl'] .navbar-header{float:right}}[dir='rtl'] .navbar-collapse{padding-right:15px;padding-left:15px}[dir='rtl'] .navbar-brand{float:right}@media (min-width: 768px){[dir='rtl'] .navbar>.container .navbar-brand,[dir='rtl'] .navbar>.container-fluid .navbar-brand{margin-right:-15px;margin-left:auto}}[dir='rtl'] .navbar-toggle{float:left;margin-left:15px;margin-right:auto}@media (max-width: 767px){[dir='rtl'] .navbar-nav .open .dropdown-menu>li>a,[dir='rtl'] .navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 25px 5px 15px}}@media (min-width: 768px){[dir='rtl'] .navbar-nav{float:right}[dir='rtl'] .navbar-nav>li{float:right}}@media (min-width: 768px){[dir='rtl'] .navbar-left.flip{float:right !important}[dir='rtl'] .navbar-right:last-child{margin-left:-15px;margin-right:auto}[dir='rtl'] .navbar-right.flip{float:left !important;margin-left:-15px;margin-right:auto}[dir='rtl'] .navbar-right .dropdown-menu{left:0;right:auto}}@media (min-width: 768px){[dir='rtl'] .navbar-text{float:right}[dir='rtl'] .navbar-text.navbar-right:last-child{margin-left:0;margin-right:auto}}[dir='rtl'] .pagination{padding-right:0}[dir='rtl'] .pagination>li>a,[dir='rtl'] .pagination>li>span{float:right;margin-right:-1px;margin-left:0px}[dir='rtl'] .pagination>li:first-child>a,[dir='rtl'] .pagination>li:first-child>span{margin-left:0;border-bottom-right-radius:4px;border-top-right-radius:4px;border-bottom-left-radius:0;border-top-left-radius:0}[dir='rtl'] .pagination>li:last-child>a,[dir='rtl'] .pagination>li:last-child>span{margin-right:-1px;border-bottom-left-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-top-right-radius:0}[dir='rtl'] .pager{padding-right:0;padding-left:initial}[dir='rtl'] .pager .next>a,[dir='rtl'] .pager .next>span{float:left}[dir='rtl'] .pager .previous>a,[dir='rtl'] .pager .previous>span{float:right}[dir='rtl'] .nav-pills>li>a>.badge{margin-left:0px;margin-right:3px}[dir='rtl'] .list-group-item>.badge{float:left}[dir='rtl'] .list-group-item>.badge+.badge{margin-left:5px;margin-right:auto}[dir='rtl'] .alert-dismissable,[dir='rtl'] .alert-dismissible{padding-left:35px;padding-right:15px}[dir='rtl'] .alert-dismissable .close,[dir='rtl'] .alert-dismissible .close{right:auto;left:-21px}[dir='rtl'] .progress-bar{float:right}[dir='rtl'] .media>.pull-left{margin-right:10px}[dir='rtl'] .media>.pull-left.flip{margin-right:0;margin-left:10px}[dir='rtl'] .media>.pull-right{margin-left:10px}[dir='rtl'] .media>.pull-right.flip{margin-left:0;margin-right:10px}[dir='rtl'] .media-right,[dir='rtl'] .media>.pull-right{padding-right:10px;padding-left:initial}[dir='rtl'] .media-left,[dir='rtl'] .media>.pull-left{padding-left:10px;padding-right:initial}[dir='rtl'] .media-list{padding-right:0;padding-left:initial;list-style:none}[dir='rtl'] .list-group{padding-right:0;padding-left:initial}[dir='rtl'] .panel>.table:first-child>thead:first-child>tr:first-child td:first-child,[dir='rtl'] .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,[dir='rtl'] .panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,[dir='rtl'] .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,[dir='rtl'] .panel>.table:first-child>thead:first-child>tr:first-child th:first-child,[dir='rtl'] .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,[dir='rtl'] .panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,[dir='rtl'] .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-right-radius:3px;border-top-left-radius:0}[dir='rtl'] .panel>.table:first-child>thead:first-child>tr:first-child td:last-child,[dir='rtl'] .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,[dir='rtl'] .panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,[dir='rtl'] .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,[dir='rtl'] .panel>.table:first-child>thead:first-child>tr:first-child th:last-child,[dir='rtl'] .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,[dir='rtl'] .panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,[dir='rtl'] .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-left-radius:3px;border-top-right-radius:0}[dir='rtl'] .panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,[dir='rtl'] .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,[dir='rtl'] .panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,[dir='rtl'] .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,[dir='rtl'] .panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,[dir='rtl'] .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,[dir='rtl'] .panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,[dir='rtl'] .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px;border-top-right-radius:0}[dir='rtl'] .panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,[dir='rtl'] .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,[dir='rtl'] .panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,[dir='rtl'] .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,[dir='rtl'] .panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,[dir='rtl'] .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,[dir='rtl'] .panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,[dir='rtl'] .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px;border-top-left-radius:0}[dir='rtl'] .panel>.table-bordered>thead>tr>th:first-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>thead>tr>th:first-child,[dir='rtl'] .panel>.table-bordered>tbody>tr>th:first-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,[dir='rtl'] .panel>.table-bordered>tfoot>tr>th:first-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,[dir='rtl'] .panel>.table-bordered>thead>tr>td:first-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,[dir='rtl'] .panel>.table-bordered>tbody>tr>td:first-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,[dir='rtl'] .panel>.table-bordered>tfoot>tr>td:first-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-right:0;border-left:none}[dir='rtl'] .panel>.table-bordered>thead>tr>th:last-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>thead>tr>th:last-child,[dir='rtl'] .panel>.table-bordered>tbody>tr>th:last-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,[dir='rtl'] .panel>.table-bordered>tfoot>tr>th:last-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,[dir='rtl'] .panel>.table-bordered>thead>tr>td:last-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,[dir='rtl'] .panel>.table-bordered>tbody>tr>td:last-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,[dir='rtl'] .panel>.table-bordered>tfoot>tr>td:last-child,[dir='rtl'] .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:none;border-left:0}[dir='rtl'] .embed-responsive .embed-responsive-item,[dir='rtl'] .embed-responsive iframe,[dir='rtl'] .embed-responsive embed,[dir='rtl'] .embed-responsive object{right:0;left:auto}[dir='rtl'] .close{float:left}[dir='rtl'] .modal-footer{text-align:left}[dir='rtl'] .modal-footer.flip{text-align:right}[dir='rtl'] .modal-footer .btn+.btn{margin-left:auto;margin-right:5px}[dir='rtl'] .modal-footer .btn-group .btn+.btn{margin-right:-1px;margin-left:auto}[dir='rtl'] .modal-footer .btn-block+.btn-block{margin-right:0;margin-left:auto}[dir='rtl'] .popover{left:auto;text-align:right}[dir='rtl'] .popover.top>.arrow{right:50%;left:auto;margin-right:-11px;margin-left:auto}[dir='rtl'] .popover.top>.arrow:after{margin-right:-10px;margin-left:auto}[dir='rtl'] .popover.bottom>.arrow{right:50%;left:auto;margin-right:-11px;margin-left:auto}[dir='rtl'] .popover.bottom>.arrow:after{margin-right:-10px;margin-left:auto}[dir='rtl'] .carousel-control{right:0;bottom:0}[dir='rtl'] .carousel-control.left{right:auto;left:0;background-image:-webkit-linear-gradient(left, color-stop(rgba(0,0,0,0.5) 0%), color-stop(rgba(0,0,0,0.0001) 100%));background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}[dir='rtl'] .carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, color-stop(rgba(0,0,0,0.0001) 0%), color-stop(rgba(0,0,0,0.5) 100%));background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}[dir='rtl'] .carousel-control .icon-prev,[dir='rtl'] .carousel-control .glyphicon-chevron-left{left:50%;right:auto;margin-right:-10px}[dir='rtl'] .carousel-control .icon-next,[dir='rtl'] .carousel-control .glyphicon-chevron-right{right:50%;left:auto;margin-left:-10px}[dir='rtl'] .carousel-indicators{right:50%;left:0;margin-right:-30%;margin-left:0;padding-left:0}@media screen and (min-width: 768px){[dir='rtl'] .carousel-control .glyphicon-chevron-left,[dir='rtl'] .carousel-control .icon-prev{margin-left:0;margin-right:-15px}[dir='rtl'] .carousel-control .glyphicon-chevron-right,[dir='rtl'] .carousel-control .icon-next{margin-left:0;margin-right:-15px}[dir='rtl'] .carousel-caption{left:20%;right:20%;padding-bottom:30px}}[dir='rtl'] .pull-right.flip{float:left !important}[dir='rtl'] .pull-left.flip{float:right !important}.dijitReset{margin:0;border:0;padding:0;font:inherit;line-height:normal;color:inherit}.dj_a11y .dijitReset{-moz-appearance:none}.dijitInline{display:inline-block;border:0;padding:0;vertical-align:middle}table.dijitInline{display:inline-table;box-sizing:content-box;-moz-box-sizing:content-box}.dijitHidden{position:absolute;visibility:hidden}.dijitHidden *{visibility:hidden !important}.dijitVisible{display:block !important;position:relative;visibility:visible}.dj_ie6 .dijitComboBox .dijitInputContainer,.dijitInputContainer{overflow:hidden;float:none !important;position:relative}.dj_ie7 .dijitInputContainer{float:left !important;clear:left;display:inline-block !important}.dj_ie .dijitSelect input,.dj_ie input.dijitTextBox,.dj_ie .dijitTextBox input{font-size:100%}.dijitSelect .dijitButtonText{float:left;vertical-align:top}TABLE.dijitSelect{padding:0 !important;border-collapse:separate}.dijitTextBox .dijitSpinnerButtonContainer,.dijitTextBox .dijitArrowButtonContainer,.dijitValidationTextBox .dijitValidationContainer{float:right;text-align:center}.dijitSelect input.dijitInputField,.dijitTextBox input.dijitInputField{padding-left:0 !important;padding-right:0 !important}.dijitValidationTextBox .dijitValidationContainer{display:none}.dijitTeeny{font-size:1px;line-height:1px}.dijitOffScreen{position:absolute !important;left:-10000px !important;top:-10000px !important}.dijitPopup{position:absolute;background-color:transparent;margin:0;border:0;padding:0;-webkit-overflow-scrolling:touch}.dijitPositionOnly{padding:0 !important;border:0 !important;background-color:transparent !important;background-image:none !important;height:auto !important;width:auto !important}.dijitNonPositionOnly{float:none !important;position:static !important;margin:0 0 0 0 !important;vertical-align:middle !important}.dijitBackgroundIframe{position:absolute;left:0;top:0;width:100%;height:100%;z-index:-1;border:0;padding:0;margin:0}.dijitDisplayNone{display:none !important}.dijitContainer{overflow:hidden}.dj_a11y .dijitIcon,.dj_a11y div.dijitArrowButtonInner,.dj_a11y span.dijitArrowButtonInner,.dj_a11y img.dijitArrowButtonInner,.dj_a11y .dijitCalendarIncrementControl,.dj_a11y .dijitTreeExpando{display:none}.dijitSpinner div.dijitArrowButtonInner{display:block}.dj_a11y .dijitA11ySideArrow{display:inline !important;cursor:pointer}.dj_a11y .dijitCalendarDateLabel{padding:1px;border:0px !important}.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel{border-style:solid !important;border-width:1px !important;padding:0}.dj_a11y .dijitCalendarDateTemplate{padding-bottom:0.1em !important;border:0px !important}.dj_a11y .dijitButtonNode{border:black outset medium !important;padding:0 !important}.dj_a11y .dijitArrowButton{padding:0 !important}.dj_a11y .dijitButtonContents{margin:0.15em}.dj_a11y .dijitTextBoxReadOnly .dijitInputField,.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode{border-style:outset !important;border-width:medium !important;border-color:#999 !important;color:#999 !important}.dijitButtonNode *{vertical-align:middle}.dijitSelect .dijitArrowButtonInner,.dijitButtonNode .dijitArrowButtonInner{background:no-repeat center;width:12px;height:12px;direction:ltr}.dijitLeft{background-position:left top;background-repeat:no-repeat}.dijitStretch{white-space:nowrap;background-repeat:repeat-x}.dijitRight{background-position:right top;background-repeat:no-repeat}.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode{opacity:0.5}.dijitToggleButton,.dijitButton,.dijitDropDownButton,.dijitComboButton{margin:0.2em;vertical-align:middle}.dijitButtonContents{display:block}td.dijitButtonContents{display:table-cell}.dijitButtonNode img{vertical-align:middle}.dijitToolbar .dijitComboButton{border-collapse:separate}.dijitToolbar .dijitToggleButton,.dijitToolbar .dijitButton,.dijitToolbar .dijitDropDownButton,.dijitToolbar .dijitComboButton{margin:0}.dijitToolbar .dijitButtonContents{padding:1px 2px}.dj_webkit .dijitToolbar .dijitDropDownButton{padding-left:0.3em}.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner{padding:0}.dijitSelect{border:1px solid gray}.dijitButtonNode{border:1px solid gray;margin:0;line-height:normal;vertical-align:middle;text-align:center;white-space:nowrap}.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer{line-height:inherit}.dijitTextBox .dijitButtonNode{border-width:0}.dijitSelect,.dijitSelect *,.dijitButtonNode,.dijitButtonNode *{cursor:pointer;-webkit-tap-highlight-color:transparent}.dj_ie .dijitButtonNode{zoom:1}.dj_ie .dijitButtonNode button{overflow:visible}div.dijitArrowButton{float:right}.dijitTextBox{border:solid black 1px;width:15em;vertical-align:middle}.dijitTextBoxReadOnly,.dijitTextBoxDisabled{color:gray}.dj_safari .dijitTextBoxDisabled input{color:#B0B0B0}.dj_safari textarea.dijitTextAreaDisabled{color:#333}.dj_gecko .dijitTextBoxReadOnly input.dijitInputField,.dj_gecko .dijitTextBoxDisabled input{-moz-user-input:none}.dijitPlaceHolder{color:#AAAAAA;font-style:italic;position:absolute;top:0;left:0;white-space:nowrap;pointer-events:none}.dijitTimeTextBox{width:8em}.dijitTextBox input:focus{outline:none}.dijitTextBoxFocused{outline:5px -webkit-focus-ring-color}.dijitSelect input,.dijitTextBox input{float:left}.dj_ie6 input.dijitTextBox,.dj_ie6 .dijitTextBox input{float:none}.dijitInputInner{border:0 !important;background-color:transparent !important;width:100% !important;padding-left:0 !important;padding-right:0 !important;margin-left:0 !important;margin-right:0 !important}.dj_a11y .dijitTextBox input{margin:0 !important}.dijitValidationTextBoxError input.dijitValidationInner,.dijitSelect input,.dijitTextBox input.dijitArrowButtonInner{text-indent:-2em !important;direction:ltr !important;text-align:left !important;height:auto !important}.dj_ie .dijitSelect input,.dj_ie .dijitTextBox input,.dj_ie input.dijitTextBox{overflow-y:visible;line-height:normal}.dijitSelect .dijitSelectLabel span{line-height:100%}.dj_ie .dijitSelect .dijitSelectLabel{line-height:normal}.dj_ie6 .dijitSelect .dijitSelectLabel,.dj_ie7 .dijitSelect .dijitSelectLabel,.dj_ie8 .dijitSelect .dijitSelectLabel,.dj_iequirks .dijitSelect .dijitSelectLabel,.dijitSelect td,.dj_ie6 .dijitSelect input,.dj_iequirks .dijitSelect input,.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie6 .dijitTextBox input,.dj_ie6 input.dijitTextBox,.dj_iequirks .dijitTextBox input.dijitValidationInner,.dj_iequirks .dijitTextBox input.dijitArrowButtonInner,.dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner,.dj_iequirks .dijitTextBox input.dijitInputInner,.dj_iequirks input.dijitTextBox{line-height:100%}.dj_a11y input.dijitValidationInner,.dj_a11y input.dijitArrowButtonInner{text-indent:0 !important;width:1em !important;color:black !important}.dijitValidationTextBoxError .dijitValidationContainer{display:inline;cursor:default}.dijitSpinner .dijitSpinnerButtonContainer,.dijitComboBox .dijitArrowButtonContainer{border-width:0 0 0 1px !important}.dj_a11y .dijitSelect .dijitArrowButtonContainer,.dijitToolbar .dijitComboBox .dijitArrowButtonContainer{border-width:0 !important}.dijitComboBoxMenu{list-style-type:none}.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode{border-width:0}.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode{clear:both}.dj_ie .dijitToolbar .dijitComboBox{vertical-align:middle}.dijitTextBox .dijitSpinnerButtonContainer{width:1em;position:relative !important;overflow:hidden}.dijitSpinner .dijitSpinnerButtonInner{width:1em;visibility:hidden !important;overflow-x:hidden}.dijitComboBox .dijitButtonNode,.dijitSpinnerButtonContainer .dijitButtonNode{border-width:0}.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode{border-width:0px !important;border-style:solid !important}.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,.dj_a11y .dijitSpinner .dijitArrowButtonInner,.dj_a11y .dijitSpinnerButtonContainer input{width:1em !important}.dj_a11y .dijitSpinner .dijitArrowButtonInner{margin:0 auto !important}.dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField{padding-left:0.3em !important;padding-right:0.3em !important;margin-left:0.3em !important;margin-right:0.3em !important;width:1.4em !important}.dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField{padding-left:0 !important;padding-right:0 !important;width:1em !important}.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField{margin-left:0.1em !important;margin-right:0.1em !important;width:1em !important}.dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField{margin-left:0 !important;margin-right:0 !important;width:2em !important}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton{padding:0;position:absolute !important;right:0;float:none;height:50%;width:100%;bottom:auto;left:0;right:auto}.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton{width:auto}.dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton{overflow:visible !important}.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton{top:50%;border-top-width:1px !important}.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton{top:0}.dijitSpinner .dijitArrowButtonInner{margin:auto;overflow-x:hidden;height:100% !important}.dj_iequirks .dijitSpinner .dijitArrowButtonInner{height:auto !important}.dijitSpinner .dijitArrowButtonInner .dijitInputField{-moz-transform:scale(0.5);-moz-transform-origin:center top;-webkit-transform:scale(0.5);-webkit-transform-origin:center top;-o-transform:scale(0.5);-o-transform-origin:center top;transform:scale(0.5);transform-origin:left top;padding-top:0;padding-bottom:0;padding-left:0 !important;padding-right:0 !important;width:100%;visibility:hidden}.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField{zoom:50%}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner{overflow:hidden}.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton{width:100%}.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton{width:1em}.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField{vertical-align:top;visibility:visible}.dj_a11y .dijitSpinnerButtonContainer{width:1em}.dijitCheckBox,.dijitRadio,.dijitCheckBoxInput{padding:0;border:0;width:16px;height:16px;background-position:center center;background-repeat:no-repeat;overflow:hidden}.dijitCheckBox input,.dijitRadio input{margin:0;padding:0;display:block}.dijitCheckBoxInput{opacity:0}.dj_ie .dijitCheckBoxInput{filter:alpha(opacity=0)}.dj_a11y .dijitCheckBox,.dj_a11y .dijitRadio{width:auto !important;height:auto !important}.dj_a11y .dijitCheckBoxInput{opacity:1;filter:none;width:auto;height:auto}.dj_a11y .dijitFocusedLabel{border:1px dotted;outline:0px !important}.dijitProgressBar{z-index:0}.dijitProgressBarEmpty{position:relative;overflow:hidden;border:1px solid black;z-index:0}.dijitProgressBarFull{position:absolute;overflow:hidden;z-index:-1;top:0;width:100%}.dj_ie6 .dijitProgressBarFull{height:1.6em}.dijitProgressBarTile{position:absolute;overflow:hidden;top:0;left:0;bottom:0;right:0;margin:0;padding:0;width:100%;height:auto;background-color:#aaa;background-attachment:fixed}.dj_a11y .dijitProgressBarTile{border-width:2px;border-style:solid;background-color:transparent !important}.dj_ie6 .dijitProgressBarTile{position:static;height:1.6em}.dijitProgressBarIndeterminateHighContrastImage{display:none}.dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage{display:block;position:absolute;top:0;bottom:0;margin:0;padding:0;width:100%;height:auto}.dijitProgressBarLabel{display:block;position:static;width:100%;text-align:center;background-color:transparent !important}.dijitTooltip{position:absolute;z-index:2000;display:block;left:0;top:-10000px;overflow:visible}.dijitTooltipContainer{border:solid black 2px;background:#b8b5b5;color:black;font-size:small}.dijitTooltipFocusNode{padding:2px 2px 2px 2px}.dijitTooltipConnector{position:absolute}.dj_a11y .dijitTooltipConnector{display:none}.dijitTooltipData{display:none}.dijitLayoutContainer{position:relative;display:block;overflow:hidden}.dijitAlignTop,.dijitAlignBottom,.dijitAlignLeft,.dijitAlignRight{position:absolute;overflow:hidden}body .dijitAlignClient{position:absolute}.dijitBorderContainer,.dijitBorderContainerNoGutter{position:relative;overflow:hidden;z-index:0}.dijitBorderContainerPane,.dijitBorderContainerNoGutterPane{position:absolute !important;z-index:2}.dijitBorderContainer>.dijitTextArea{resize:none}.dijitGutter{position:absolute;font-size:1px}.dijitSplitter{position:absolute;overflow:hidden;z-index:10;background-color:#fff;border-color:gray;border-style:solid;border-width:0}.dj_ie .dijitSplitter{z-index:1}.dijitSplitterActive{z-index:11 !important}.dijitSplitterCover{position:absolute;z-index:-1;top:0;left:0;width:100%;height:100%}.dijitSplitterCoverActive{z-index:3 !important}.dj_ie .dijitSplitterCover{background:white;opacity:0}.dj_ie6 .dijitSplitterCover,.dj_ie7 .dijitSplitterCover,.dj_ie8 .dijitSplitterCover{filter:alpha(opacity=0)}.dijitSplitterH{height:7px;border-top:1px;border-bottom:1px;cursor:row-resize;-webkit-tap-highlight-color:transparent}.dijitSplitterV{width:7px;border-left:1px;border-right:1px;cursor:col-resize;-webkit-tap-highlight-color:transparent}.dijitSplitContainer{position:relative;overflow:hidden;display:block}.dijitSplitPane{position:absolute}.dijitSplitContainerSizerH,.dijitSplitContainerSizerV{position:absolute;font-size:1px;background-color:ThreeDFace;border:1px solid;border-color:ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;margin:0}.dijitSplitContainerSizerH .thumb,.dijitSplitterV .dijitSplitterThumb{overflow:hidden;position:absolute;top:49%}.dijitSplitContainerSizerV .thumb,.dijitSplitterH .dijitSplitterThumb{position:absolute;left:49%}.dijitSplitterShadow,.dijitSplitContainerVirtualSizerH,.dijitSplitContainerVirtualSizerV{font-size:1px;background-color:ThreeDShadow;-moz-opacity:0.5;opacity:0.5;filter:Alpha(Opacity=50);margin:0}.dijitSplitContainerSizerH,.dijitSplitContainerVirtualSizerH{cursor:col-resize}.dijitSplitContainerSizerV,.dijitSplitContainerVirtualSizerV{cursor:row-resize}.dj_a11y .dijitSplitterH{border-top:1px solid #d3d3d3 !important;border-bottom:1px solid #d3d3d3 !important}.dj_a11y .dijitSplitterV{border-left:1px solid #d3d3d3 !important;border-right:1px solid #d3d3d3 !important}.dijitContentPane{display:block;overflow:auto;-webkit-overflow-scrolling:touch}.dijitContentPaneSingleChild{overflow:hidden}.dijitContentPaneLoading .dijitIconLoading,.dijitContentPaneError .dijitIconError{margin-right:9px}.dijitTitlePane{display:block;overflow:hidden}.dijitFieldset{border:1px solid gray}.dijitTitlePaneTitle,.dijitFieldsetTitle{cursor:pointer;-webkit-tap-highlight-color:transparent}.dijitTitlePaneTitleFixedOpen,.dijitTitlePaneTitleFixedClosed,.dijitFieldsetTitleFixedOpen,.dijitFieldsetTitleFixedClosed{cursor:default}.dijitTitlePaneTitle *{vertical-align:middle}.dijitTitlePane .dijitArrowNodeInner,.dijitFieldset .dijitArrowNodeInner{display:none}.dj_a11y .dijitTitlePane .dijitArrowNodeInner,.dj_a11y .dijitFieldset .dijitArrowNodeInner{display:inline;font-family:monospace}.dj_a11y .dijitTitlePane .dijitArrowNode,.dj_a11y .dijitFieldset .dijitArrowNode{display:none}.dijitTitlePaneTitleFixedOpen .dijitArrowNode,.dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner,.dijitTitlePaneTitleFixedClosed .dijitArrowNode,.dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner,.dijitFieldsetTitleFixedOpen .dijitArrowNode,.dijitFieldsetTitleFixedOpen .dijitArrowNodeInner,.dijitFieldsetTitleFixedClosed .dijitArrowNode,.dijitFieldsetTitleFixedClosed .dijitArrowNodeInner{display:none !important}.dj_ie6 .dijitTitlePaneContentOuter,.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle{zoom:1}.dijitColorPalette{border:1px solid #999;background:#fff;position:relative}.dijitColorPalette .dijitPaletteTable{padding:2px 3px 3px 3px;position:relative;overflow:hidden;outline:0;border-collapse:separate}.dj_ie6 .dijitColorPalette .dijitPaletteTable,.dj_ie7 .dijitColorPalette .dijitPaletteTable,.dj_iequirks .dijitColorPalette .dijitPaletteTable{padding:0;margin:2px 3px 3px 3px}.dijitColorPalette .dijitPaletteCell{font-size:1px;vertical-align:middle;text-align:center;background:none}.dijitColorPalette .dijitPaletteImg{padding:1px;border:1px solid #999;margin:2px 1px;cursor:default;font-size:1px}.dj_gecko .dijitColorPalette .dijitPaletteImg{padding-bottom:0}.dijitColorPalette .dijitColorPaletteSwatch{width:14px;height:12px}.dijitPaletteTable td{padding:0}.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg{border:1px solid #000}.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg{border:2px solid #000;margin:1px 0}.dj_a11y .dijitColorPalette .dijitPaletteTable,.dj_a11y .dijitColorPalette .dijitPaletteTable *{background-color:transparent !important}.dijitAccordionContainer{border:1px solid #b7b7b7;border-top:0 !important}.dijitAccordionTitle{cursor:pointer;-webkit-tap-highlight-color:transparent}.dijitAccordionTitleSelected{cursor:default}.dijitAccordionTitle .arrowTextUp,.dijitAccordionTitle .arrowTextDown{display:none;font-size:0.65em;font-weight:normal !important}.dj_a11y .dijitAccordionTitle .arrowTextUp,.dj_a11y .dijitAccordionTitleSelected .arrowTextDown{display:inline}.dj_a11y .dijitAccordionTitleSelected .arrowTextUp{display:none}.dijitAccordionChildWrapper{overflow:hidden}.dijitCalendarContainer table{width:auto;clear:both}.dijitCalendarContainer th,.dijitCalendarContainer td{padding:0;vertical-align:middle}.dijitCalendarMonthContainer{text-align:center}.dijitCalendarDecrementArrow{float:left}.dijitCalendarIncrementArrow{float:right}.dijitCalendarYearLabel{white-space:nowrap}.dijitCalendarNextYear{margin:0 0 0 0.55em}.dijitCalendarPreviousYear{margin:0 0.55em 0 0}.dijitCalendarIncrementControl{vertical-align:middle}.dijitCalendarIncrementControl,.dijitCalendarDateTemplate,.dijitCalendarMonthLabel,.dijitCalendarPreviousYear,.dijitCalendarNextYear{cursor:pointer;-webkit-tap-highlight-color:transparent}.dijitCalendarDisabledDate{color:gray;text-decoration:line-through;cursor:default}.dijitSpacer{position:relative;height:1px;overflow:hidden;visibility:hidden}.dijitCalendarMonthMenu .dijitCalendarMonthLabel{text-align:center}.dijitMenu{border:1px solid black;background-color:white}.dijitMenuTable{border-collapse:collapse;border-width:0;background-color:white}.dj_webkit .dijitMenuTable td[colspan="2"]{border-right:hidden}.dijitMenuItem{text-align:left;white-space:nowrap;padding:.1em .2em;cursor:pointer;-webkit-tap-highlight-color:transparent}.dijitMenuItem:focus{outline:none}.dijitMenuPassive .dijitMenuItemHover,.dijitMenuItemSelected{background-color:black;color:white}.dijitMenuItemIcon,.dijitMenuExpand{background-repeat:no-repeat}.dijitMenuItemDisabled *{opacity:0.5;cursor:default}.dj_ie .dj_a11y .dijitMenuItemDisabled,.dj_ie .dj_a11y .dijitMenuItemDisabled *,.dj_ie .dijitMenuItemDisabled *{color:gray;filter:alpha(opacity=35)}.dijitMenuItemLabel{vertical-align:middle}.dj_a11y .dijitMenuItemSelected{border:1px dotted black !important}.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel{border-width:1px;border-style:solid}.dj_ie8 .dj_a11y .dijitMenuItemLabel{position:static}.dijitMenuExpandA11y{display:none}.dj_a11y .dijitMenuExpandA11y{display:inline}.dijitMenuSeparator td{border:0;padding:0}.dijitMenuSeparatorTop{height:50%;margin:0;margin-top:3px;font-size:1px}.dijitMenuSeparatorBottom{height:50%;margin:0;margin-bottom:3px;font-size:1px}.dijitMenuItemIconChar{display:none;visibility:hidden}.dj_a11y .dijitMenuItemIconChar{display:inline}.dijitCheckedMenuItemChecked .dijitMenuItemIconChar,.dijitRadioMenuItemChecked .dijitMenuItemIconChar{visibility:visible}.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem{margin:0}.dijitStackController .dijitToggleButtonChecked *{cursor:default}.dijitTabContainer{z-index:0;overflow:visible}.dj_ie6 .dijitTabContainer{overflow:hidden}.dijitTabContainerNoLayout{width:100%}.dijitTabContainerBottom-tabs,.dijitTabContainerTop-tabs,.dijitTabContainerLeft-tabs,.dijitTabContainerRight-tabs{z-index:1;overflow:visible !important}.dijitTabController{z-index:1}.dijitTabContainerBottom-container,.dijitTabContainerTop-container,.dijitTabContainerLeft-container,.dijitTabContainerRight-container{z-index:0;overflow:hidden;border:1px solid black}.nowrapTabStrip{width:50000px;display:block;position:relative;text-align:left;z-index:1}.dijitTabListWrapper{overflow:hidden;z-index:1}.dj_a11y .tabStripButton img{display:none}.dijitTabContainerTop-tabs{border-bottom:1px solid black}.dijitTabContainerTop-container{border-top:0}.dijitTabContainerLeft-tabs{border-right:1px solid black;float:left}.dijitTabContainerLeft-container{border-left:0}.dijitTabContainerBottom-tabs{border-top:1px solid black}.dijitTabContainerBottom-container{border-bottom:0}.dijitTabContainerRight-tabs{border-left:1px solid black;float:left}.dijitTabContainerRight-container{border-right:0}div.dijitTabDisabled,.dj_ie div.dijitTabDisabled{cursor:auto}.dijitTab{position:relative;cursor:pointer;-webkit-tap-highlight-color:transparent;white-space:nowrap;z-index:3}.dijitTab *{vertical-align:middle}.dijitTabChecked{cursor:default}.dijitTabContainerTop-tabs .dijitTab{top:1px}.dijitTabContainerBottom-tabs .dijitTab{top:-1px}.dijitTabContainerLeft-tabs .dijitTab{left:1px}.dijitTabContainerRight-tabs .dijitTab{left:-1px}.dijitTabContainerTop-tabs .dijitTab,.dijitTabContainerBottom-tabs .dijitTab{display:inline-block}.tabStripButton{z-index:12}.dijitTabButtonDisabled .tabStripButton{display:none}.dijitTabCloseButton{margin-left:1em}.dijitTabCloseText{display:none}.dijitTab .tabLabel{min-height:15px;display:inline-block}.dijitNoIcon{display:none}.dj_ie6 .dijitTab .dijitNoIcon{display:inline;height:15px;width:1px}.dj_a11y .dijitTabCloseButton{background-image:none !important;width:auto !important;height:auto !important}.dj_a11y .dijitTabCloseText{display:inline}.dijitTabPane,.dijitStackContainer-child,.dijitAccordionContainer-child{border:none !important}.dijitInlineEditBoxDisplayMode{border:1px solid transparent;cursor:text}.dj_a11y .dijitInlineEditBoxDisplayMode,.dj_ie6 .dijitInlineEditBoxDisplayMode{border:none}.dijitInlineEditBoxDisplayModeHover,.dj_a11y .dijitInlineEditBoxDisplayModeHover,.dj_ie6 .dijitInlineEditBoxDisplayModeHover{background-color:#e2ebf2;border:solid 1px black}.dijitInlineEditBoxDisplayModeDisabled{cursor:default}.dijitTree{overflow:auto;-webkit-tap-highlight-color:transparent}.dijitTreeContainer{float:left}.dijitTreeIndent{width:19px}.dijitTreeRow,.dijitTreeContent{white-space:nowrap}.dj_ie .dijitTreeLabel:focus{outline:1px dotted black}.dijitTreeRow img{vertical-align:middle}.dijitTreeContent{cursor:default}.dijitExpandoText{display:none}.dj_a11y .dijitExpandoText{display:inline;padding-left:10px;padding-right:10px;font-family:monospace;border-style:solid;border-width:thin;cursor:pointer}.dijitTreeLabel{margin:0 4px}.dijitDialog{position:absolute;z-index:999;overflow:hidden}.dijitDialogTitleBar{cursor:move}.dijitDialogFixed .dijitDialogTitleBar{cursor:default}.dijitDialogCloseIcon{cursor:pointer;-webkit-tap-highlight-color:transparent}.dijitDialogPaneContent{-webkit-overflow-scrolling:touch}.dijitDialogUnderlayWrapper{position:absolute;left:0;top:0;z-index:998;display:none;background:transparent !important}.dijitDialogUnderlay{background:#eee;opacity:0.5}.dj_ie .dijitDialogUnderlay{filter:alpha(opacity=50)}.dj_a11y .dijitSpinnerButtonContainer,.dj_a11y .dijitDialog{opacity:1 !important;background-color:white !important}.dijitDialog .closeText{display:none;position:absolute}.dj_a11y .dijitDialog .closeText{display:inline}.dijitSliderMoveable{z-index:99;position:absolute !important;display:block;vertical-align:middle}.dijitSliderMoveableH{right:0}.dijitSliderMoveableV{right:50%}.dj_a11y div.dijitSliderImageHandle,.dijitSliderImageHandle{margin:0;padding:0;position:relative !important;border:8px solid gray;width:0;height:0;cursor:pointer;-webkit-tap-highlight-color:transparent}.dj_iequirks .dj_a11y .dijitSliderImageHandle{font-size:0}.dj_ie7 .dijitSliderImageHandle{overflow:hidden}.dj_ie7 .dj_a11y .dijitSliderImageHandle{overflow:visible}.dj_a11y .dijitSliderFocused .dijitSliderImageHandle{border:4px solid #000;height:8px;width:8px}.dijitSliderImageHandleV{top:-8px;right:-50%}.dijitSliderImageHandleH{left:50%;top:-5px;vertical-align:top}.dijitSliderBar{border-style:solid;border-color:black;cursor:pointer;-webkit-tap-highlight-color:transparent}.dijitSliderBarContainerV{position:relative;height:100%;z-index:1}.dijitSliderBarContainerH{position:relative;z-index:1}.dijitSliderBarH{height:4px;border-width:1px 0}.dijitSliderBarV{width:4px;border-width:0 1px}.dijitSliderProgressBar{background-color:red;z-index:1}.dijitSliderProgressBarV{position:static !important;height:0;vertical-align:top;text-align:left}.dijitSliderProgressBarH{position:absolute !important;width:0;vertical-align:middle;overflow:visible}.dijitSliderRemainingBar{overflow:hidden;background-color:transparent;z-index:1}.dijitSliderRemainingBarV{height:100%;text-align:left}.dijitSliderRemainingBarH{width:100% !important}.dijitSliderBumper{overflow:hidden;z-index:1}.dijitSliderBumperV{width:4px;height:8px;border-width:0 1px}.dijitSliderBumperH{width:8px;height:4px;border-width:1px 0}.dijitSliderBottomBumper,.dijitSliderLeftBumper{background-color:red}.dijitSliderTopBumper,.dijitSliderRightBumper{background-color:transparent}.dijitSliderDecoration{text-align:center}.dijitSliderDecorationC,.dijitSliderDecorationV{position:relative}.dijitSliderDecorationH{width:100%}.dijitSliderDecorationV{height:100%;white-space:nowrap}.dijitSliderButton{font-family:monospace;margin:0;padding:0;display:block}.dj_a11y .dijitSliderButtonInner{visibility:visible !important}.dijitSliderButtonContainer{text-align:center;height:0}.dijitSliderButtonContainer *{cursor:pointer;-webkit-tap-highlight-color:transparent}.dijitSlider .dijitButtonNode{padding:0;display:block}.dijitRuleContainer{position:relative;overflow:visible}.dijitRuleContainerV{height:100%;line-height:0;float:left;text-align:left}.dj_opera .dijitRuleContainerV{line-height:2%}.dj_ie .dijitRuleContainerV{line-height:normal}.dj_gecko .dijitRuleContainerV{margin:0 0 1px 0}.dijitRuleMark{position:absolute;border:1px solid black;line-height:0;height:100%}.dijitRuleMarkH{width:0;border-top-width:0 !important;border-bottom-width:0 !important;border-left-width:0 !important}.dijitRuleLabelContainer{position:absolute}.dijitRuleLabelContainerH{text-align:center;display:inline-block}.dijitRuleLabelH{position:relative;left:-50%}.dijitRuleLabelV{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dijitRuleMarkV{height:0;border-right-width:0 !important;border-bottom-width:0 !important;border-left-width:0 !important;width:100%;left:0}.dj_ie .dijitRuleLabelContainerV{margin-top:-.55em}.dj_a11y .dijitSliderReadOnly,.dj_a11y .dijitSliderDisabled{opacity:0.6}.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar{filter:alpha(opacity=40)}.dj_a11y .dijitSlider .dijitSliderButtonContainer div{font-family:monospace;font-size:1em;line-height:1em;height:auto;width:auto;margin:0 4px}.dj_a11y .dijitButtonContents .dijitButtonText,.dj_a11y .dijitTab .tabLabel{display:inline !important}.dj_a11y .dijitSelect .dijitButtonText{display:inline-block !important}.dijitTextArea{width:100%;overflow-y:auto}.dijitTextArea[cols]{width:auto}.dj_ie .dijitTextAreaCols{width:auto}.dijitExpandingTextArea{resize:none}.dijitToolbarSeparator{height:18px;width:5px;padding:0 1px;margin:0}.dijitIEFixedToolbar{position:absolute;top:expression(eval((document.documentElement||document.body).scrollTop))}.dijitEditor{display:block}.dijitEditorDisabled,.dijitEditorReadOnly{color:gray}.dijitTimePicker{background-color:white}.dijitTimePickerItem{cursor:pointer;-webkit-tap-highlight-color:transparent}.dijitTimePickerItemHover{background-color:gray;color:white}.dijitTimePickerItemSelected{font-weight:bold;color:#333;background-color:#b7cdee}.dijitTimePickerItemDisabled{color:gray;text-decoration:line-through}.dijitTimePickerItemInner{text-align:center;border:0;padding:2px 8px 2px 8px}.dijitTimePickerTick,.dijitTimePickerMarker{border-bottom:1px solid gray}.dijitTimePicker .dijitDownArrowButton{border-top:none !important}.dijitTimePickerTick{color:#CCC}.dijitTimePickerMarker{color:black;background-color:#CCC}.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner{border:solid 4px black}.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner{border:dashed 4px black}.dijitToggleButtonIconChar{display:none !important}.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar{display:inline !important;visibility:hidden}.dj_ie6 .dijitToggleButtonIconChar,.dj_ie6 .tabStripButton .dijitButtonText{font-family:"Arial Unicode MS"}.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar{display:inline !important;visibility:visible !important}.dijitArrowButtonChar{display:none !important}.dj_a11y .dijitArrowButtonChar{display:inline !important}.dj_a11y .dijitDropDownButton .dijitArrowButtonInner,.dj_a11y .dijitComboButton .dijitArrowButtonInner{display:none !important}.dj_a11y .dijitSelect{border-collapse:separate !important;border-width:1px;border-style:solid}.dj_ie .dijitSelect{vertical-align:middle}.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie8 .dijitSelect .dijitButtonText{vertical-align:top}.dj_ie6 .dijitTextBox .dijitInputContainer,.dj_iequirks .dijitTextBox .dijitInputContainer,.dj_ie6 .dijitTextBox .dijitArrowButtonInner,.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,.dijitSelect .dijitSelectLabel{vertical-align:baseline}.dijitNumberTextBox{text-align:left;direction:ltr}.dijitNumberTextBox .dijitInputInner{text-align:inherit}.dijitNumberTextBox input.dijitInputInner,.dijitCurrencyTextBox input.dijitInputInner,.dijitSpinner input.dijitInputInner{text-align:right}.dj_ie8 .dijitNumberTextBox input.dijitInputInner,.dj_ie9 .dijitNumberTextBox input.dijitInputInner,.dj_ie8 .dijitCurrencyTextBox input.dijitInputInner,.dj_ie9 .dijitCurrencyTextBox input.dijitInputInner,.dj_ie8 .dijitSpinner input.dijitInputInner,.dj_ie9 .dijitSpinner input.dijitInputInner{padding-right:1px !important}.dijitToolbar .dijitSelect{margin:0}.dj_webkit .dijitToolbar .dijitSelect{padding-left:0.3em}.dijitSelect .dijitButtonContents{padding:0;white-space:nowrap;text-align:left;border-style:none solid none none;border-width:1px}.dijitSelectFixedWidth .dijitButtonContents{width:100%}.dijitSelectMenu .dijitMenuItemIcon{display:none}.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel{position:static}.dijitSelectLabel *{vertical-align:baseline}.dijitSelectSelectedOption *{font-weight:bold}.dijitSelectMenu{border-width:1px}.dijitForceStatic{position:static !important}.dijitReadOnly *,.dijitDisabled *,.dijitReadOnly,.dijitDisabled{cursor:default}.dojoDndItem{padding:2px;-webkit-touch-callout:none;-webkit-user-select:none}.dojoDndHorizontal .dojoDndItem{display:inline-block}.dojoDndItemBefore,.dojoDndItemAfter{border:0px solid #369}.dojoDndItemBefore{border-width:2px 0 0 0;padding:0 2px 2px 2px}.dojoDndItemAfter{border-width:0 0 2px 0;padding:2px 2px 0 2px}.dojoDndHorizontal .dojoDndItemBefore{border-width:0 0 0 2px;padding:2px 2px 2px 0}.dojoDndHorizontal .dojoDndItemAfter{border-width:0 2px 0 0;padding:2px 0 2px 2px}.dojoDndItemOver{cursor:pointer}.dj_gecko .dijitArrowButtonInner INPUT,.dj_gecko INPUT.dijitArrowButtonInner{-moz-user-focus:ignore}.dijitFocused .dijitMenuItemShortcutKey{text-decoration:underline}.dijitBorderContainer{height:350px}.dijitTooltipContainer{background:#fff;border:1px solid #ccc;border-radius:6px}.dijitContentPane{box-sizing:content-box;overflow:auto !important}.mx-dataview-content,.mx-scrollcontainer-wrapper:not(.mx-scrollcontainer-nested),.mx-tabcontainer-content,.mx-grid-content{-webkit-overflow-scrolling:touch}html,body,#content{height:100%}#content>.mx-page{width:100%;min-height:100%}.mx-left-aligned{text-align:left}.mx-right-aligned{text-align:right}.mx-center-aligned{text-align:center}.mx-table{width:100%}.mx-table th,.mx-table td{padding:8px;vertical-align:top}.mx-table th.nopadding,.mx-table td.nopadding{padding:0}.mx-offscreen{position:relative;height:0;overflow:hidden}.mx-ie-event-shield{position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1}.mx-swipe-navigation-progress{position:absolute;height:54px;width:54px;top:calc(50% - 27px);left:calc(50% - 27px);background:url(data:image/gif;base64,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)}input[type="checkbox"]{margin:9px 0}.mx-checkbox input[type="checkbox"]{margin-left:0;margin-right:8px;position:static}.form-vertical .form-group.mx-checkbox input[type="checkbox"]{display:block}.form-vertical .form-group.mx-checkbox.label-after input[type="checkbox"]{display:inline-block}.form-horizontal .form-group.no-columns{padding-left:15px;padding-right:15px}.mx-radiobuttons.inline .radio{display:inline-block;margin-right:20px}.mx-radiobuttons .radio input[type="radio"]{position:static;margin-right:8px;margin-left:0}.mx-radiobuttons .radio label{padding-left:0}.alert{margin-top:8px;margin-bottom:10px;white-space:pre-line}.mx-compound-control{display:flex}.mx-compound-control button{margin-left:5px}[dir="rtl"] .mx-compound-control button{margin-left:0;margin-right:5px}.mx-tooltip{margin:10px}.mx-tooltip-content{width:400px;overflow-y:auto}.mx-tooltip-prepare{height:24px;padding:8px;background:transparent url(data:image/gif;base64,R0lGODlhGAAYAMQdAKXZ8nfF64TL7QuX3Fe45zaq4hOb3fL6/fr9/rri9dXt+ZrU8Cym4Umy5cHl9uPz+2K86Oj1/Nzw+rDd9M3q+JDQ72rA6iOi3+34/ECu48jo9x2f3gWV2////wAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUJFNkU4NEZCNEVDMTFFODk3MDBBNUU1RUM4Qjg3QTUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RUJFNkU4NTBCNEVDMTFFODk3MDBBNUU1RUM4Qjg3QTUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFQkU2RTg0REI0RUMxMUU4OTcwMEE1RTVFQzhCODdBNSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFQkU2RTg0RUI0RUMxMUU4OTcwMEE1RTVFQzhCODdBNSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6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) no-repeat scroll center center}.mx-tooltip-content .table th,.mx-tooltip-content .table td{padding:2px 8px}.mx-tabcontainer-pane{height:100%}.mx-tabcontainer-content.loading{min-height:48px;background:url(data:image/gif;base64,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) no-repeat center center;background-size:32px 32px}.mx-tabcontainer-tabs{margin-bottom:8px}.mx-tabcontainer-tabs li{position:relative}.mx-tabcontainer-indicator{position:absolute;background:#f2dede;border-radius:8px;color:#b94a48;top:0px;right:-5px;width:16px;height:16px;line-height:16px;text-align:center;vertical-align:middle;font-size:10px;font-weight:600;z-index:1}.mx-grid{padding:8px;overflow:hidden}.mx-grid-controlbar,.mx-grid-searchbar{display:flex;justify-content:space-between;flex-wrap:wrap}.mx-grid-controlbar .mx-button,.mx-grid-search-controls .mx-button{margin-bottom:8px}.mx-grid-search-controls .mx-button+.mx-button,.mx-grid-controlbar .mx-button+.mx-button{margin-left:0.3em}[dir="rtl"] .mx-grid-search-controls .mx-button+.mx-button,[dir="rtl"] .mx-grid-controlbar .mx-button+.mx-button{margin-left:0;margin-right:0.3em}.mx-grid-pagingbar,.mx-grid-search-controls{display:flex;white-space:nowrap;align-items:baseline;margin-left:auto}.mx-grid-toolbar,.mx-grid-search-inputs{margin-right:5px;flex:1}[dir="rtl"] .mx-grid-toolbar,[dir="rtl"] .mx-grid-search-inputs{margin-left:5px;margin-right:0px}[dir="rtl"] .mx-grid-pagingbar,[dir="rtl"] .mx-grid-search-controls{margin-left:0px;margin-right:auto}.mx-grid-paging-status{padding:0 8px 5px}.mx-grid-search-item{display:inline-block;vertical-align:top;margin-bottom:8px}.mx-grid-search-label{width:110px;padding:0 5px;text-align:right;display:inline-block;vertical-align:top;overflow:hidden}[dir="rtl"] .mx-grid-search-label{text-align:left}.mx-grid-search-input{width:150px;padding:0 5px;display:inline-block;vertical-align:top}.mx-grid-search-message{flex-basis:100%}.mx-dataview .mx-grid{border:1px solid #ddd;border-radius:3px}.mx-calendar{z-index:1000}.mx-calendar-month-dropdown-options{position:absolute}.mx-calendar,.mx-calendar-month-dropdown{user-select:none}.mx-calendar-month-current{display:inline-block}.mx-calendar-month-spacer{position:relative;height:0px;overflow:hidden;visibility:hidden}.mx-calendar,.mx-calendar-month-dropdown-options{border:1px solid lightgrey;background-color:white}.mx-datagrid tr{cursor:pointer}.mx-datagrid tr.mx-datagrid-row-empty{cursor:default}.mx-datagrid table{width:100%;max-width:100%;table-layout:fixed;margin-bottom:0}.mx-datagrid th,.mx-datagrid td{padding:8px;line-height:1.42857143;vertical-align:bottom;border:1px solid #ddd}.mx-datagrid th{position:relative;border-bottom-width:2px}.mx-datagrid-head-caption{overflow:hidden;white-space:nowrap}.mx-datagrid-sort-icon{float:right;padding-left:5px}[dir="rtl"] .mx-datagrid-sort-icon{float:left;padding:0 5px 0 0}.mx-datagrid-column-resizer{position:absolute;top:0;left:-6px;width:10px;height:100%;cursor:col-resize}[dir="rtl"] .mx-datagrid-column-resizer{left:auto;right:-6px}.mx-datagrid tbody tr:first-child td{border-top:none}.mx-datagrid tbody .selected td{background-color:#eee}.mx-datagrid-data-wrapper{overflow:hidden;white-space:nowrap}.mx-datagrid tbody img{max-width:16px;max-height:16px}.mx-datagrid input,.mx-datagrid select,.mx-datagrid textarea{cursor:auto}.mx-datagrid tfoot th,.mx-datagrid tfoot td{padding:3px 8px}.mx-datagrid tfoot th{border-top:1px solid #ddd}.mx-datagrid.mx-content-loading .mx-content-loader{display:inline-block;width:90%;animation:placeholderGradient 1s linear infinite;border-radius:4px;background:#F5F5F5;background:repeating-linear-gradient(to right, #f5f5f5 0%, #f5f5f5 5%, #F9F9F9 50%, #f5f5f5 95%, #f5f5f5 100%);background-size:200px 100px;animation-fill-mode:both}@keyframes placeholderGradient{0%{background-position:100px 0}100%{background-position:-100px 0}}.mx-datagrid-table-resizing th,.mx-datagrid-table-resizing td{cursor:col-resize !important}.mx-templategrid-content-wrapper{display:table;width:100%;border-collapse:collapse;box-sizing:border-box}.mx-templategrid-row{display:table-row}.mx-templategrid-item{padding:5px;display:table-cell;border:1px solid #ddd;cursor:pointer;box-sizing:border-box}.mx-templategrid-empty{display:table-cell}.mx-templategrid-item.selected{background-color:#f5f5f5}.mx-templategrid-item .mx-table th,.mx-templategrid-item .mx-table td{padding:2px 8px}.mx-scrollcontainer-horizontal{width:100%;display:table;table-layout:fixed}.mx-scrollcontainer-horizontal>div{display:table-cell;vertical-align:top}.mx-scrollcontainer-nested{padding:0}.mx-scrollcontainer-fixed>.mx-scrollcontainer-middle>.mx-scrollcontainer-wrapper,.mx-scrollcontainer-fixed>.mx-scrollcontainer-left>.mx-scrollcontainer-wrapper,.mx-scrollcontainer-fixed>.mx-scrollcontainer-center>.mx-scrollcontainer-wrapper,.mx-scrollcontainer-fixed>.mx-scrollcontainer-right>.mx-scrollcontainer-wrapper{overflow:auto}.mx-scrollcontainer-move-in{transition:left 250ms ease-out}.mx-scrollcontainer-move-out{transition:left 250ms ease-in}.mx-scrollcontainer-shrink .mx-scrollcontainer-toggleable{transition-property:width}.mx-scrollcontainer-toggleable{background-color:#fff}.mx-scrollcontainer-push{position:relative}.mx-scrollcontainer-shrink>.mx-scrollcontainer-toggleable{overflow:hidden}.mx-scrollcontainer-push.mx-scrollcontainer-open>div,.mx-scrollcontainer-slide.mx-scrollcontainer-open>div{pointer-events:none}.mx-scrollcontainer-push.mx-scrollcontainer-open>.mx-scrollcontainer-toggleable,.mx-scrollcontainer-slide.mx-scrollcontainer-open>.mx-scrollcontainer-toggleable{pointer-events:auto}.mx-navbar-item img,.mx-navbar-subitem img{height:16px}.mx-navigationtree .navbar-inner{padding-left:0;padding-right:0}.mx-navigationtree ul{list-style:none}.mx-navigationtree ul li{border-bottom:1px solid #dfe6ea}.mx-navigationtree li:last-child{border-style:none}.mx-navigationtree a{display:block;padding:5px 10px;color:#777;text-shadow:0 1px 0 #fff;text-decoration:none}.mx-navigationtree a.active{color:#FFF;text-shadow:none;background:#3498DB;border-radius:3px}.mx-navigationtree .mx-navigationtree-collapsed ul{display:none}.mx-navigationtree ul{margin:0;padding:0}.mx-navigationtree ul li{padding:5px 0}.mx-navigationtree ul li ul{padding:0;margin-left:10px}.mx-navigationtree ul li ul li{margin-left:8px;padding:5px 0}[dir="rtl"] .mx-navigationtree ul li ul li{margin-left:auto;margin-right:8px}.mx-navigationtree ul li ul li ul li{font-size:10px;padding-top:3px;padding-bottom:3px}.mx-navigationtree ul li ul li ul li img{vertical-align:top}.mx-link img,.mx-button img{height:16px}.mx-link{padding:6px 12px;display:inline-block}.mx-groupbox{margin-bottom:10px}.mx-groupbox-header{margin:0;padding:10px 15px;color:#eee;background:#333;font-size:inherit;line-height:inherit;border-radius:4px 4px 0 0}.mx-groupbox-collapsible>.mx-groupbox-header{cursor:pointer}.mx-groupbox.collapsed>.mx-groupbox-header{border-radius:4px}.mx-groupbox-body{padding:8px;border:1px solid #ddd;border-radius:4px}.mx-groupbox.collapsed>.mx-groupbox-body{display:none}.mx-groupbox-header+.mx-groupbox-body{border-top:none;border-radius:0 0 4px 4px}.mx-groupbox-collapse-icon{float:right}[dir="rtl"] .mx-groupbox-collapse-icon{float:left}.mx-dataview{position:relative}.mx-dataview-controls{padding:19px 20px 12px;background-color:#f5f5f5;border-top:1px solid #eee}.mx-dataview-controls .mx-button{margin-bottom:8px}.mx-dataview-controls .mx-button+.mx-button{margin-left:0.3em}.mx-dataview-message{background:#fff;position:absolute;top:0;right:0;bottom:0;left:0}.mx-dataview-message>div{display:table;width:100%;height:100%}.mx-dataview-message>div>p{display:table-cell;text-align:center;vertical-align:middle}.mx-window-view .mx-window-body{padding:0}.mx-window-view .mx-window-body>.mx-dataview>.mx-dataview-content,.mx-window-view .mx-window-body>.mx-placeholder>.mx-dataview>.mx-dataview-content{padding:15px}.mx-window-view .mx-window-body>.mx-dataview>.mx-dataview-controls,.mx-window-view .mx-window-body>.mx-placeholder>.mx-dataview>.mx-dataview-controls{border-radius:0px 0px 6px 6px}.mx-dialog{position:fixed;left:auto;right:auto;padding:0;width:500px;margin:0}.mx-dialog-header{cursor:move}.mx-dialog-body{overflow:auto}.mx-window{position:fixed;left:auto;right:auto;padding:0;width:600px;margin:0}.mx-window-content{height:100%;overflow:hidden}.mx-window-active .mx-window-header{background-color:#f5f5f5;border-radius:6px 6px 0 0}.mx-window-header{cursor:move}.mx-window-body{overflow:auto}.mx-dropdown-list *{cursor:pointer}.mx-dropdown-list img{width:35px;vertical-align:middle;margin-right:10px}[dir="rtl"] .mx-dropdown-list img{margin-left:10px;margin-right:auto}.mx-dropdown-list{padding:0;list-style:none}.mx-dropdown-list>li{padding:5px 10px 10px;border:1px #ddd;border-style:solid solid none;background-color:#fff}.mx-dropdown-list>li:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.mx-dropdown-list>li:last-child{border-bottom-style:solid;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.mx-dropdown-list-striped>li:nth-child(2n+1){background:#f9f9f9}.mx-dropdown-list>li:hover{background:#f5f5f5}.mx-header{position:relative;padding:9px;background:#333;text-align:center}.mx-header-center{display:inline-block;color:#eee;line-height:30px}body[dir="ltr"] .mx-header-left,body[dir="rtl"] .mx-header-right{position:absolute;top:9px;left:9px}body[dir="ltr"] .mx-header-right,body[dir="rtl"] .mx-header-left{position:absolute;top:9px;right:9px}.mx-title{margin-bottom:0px;margin-top:0px}.mx-listview{padding:8px}.mx-listview>ul{padding:0px;list-style:none}.mx-listview-clickable>ul>li{cursor:pointer}.mx-listview-empty{color:#999;text-align:center}.mx-listview .mx-listview-loading{padding:10px;line-height:0;text-align:center}.mx-listview-searchbar{display:flex;margin-bottom:10px}.mx-listview-searchbar>input{width:100%}.mx-listview-searchbar>button{margin-left:5px}[dir="rtl"] .mx-listview-searchbar>button{margin-left:0;margin-right:5px}.mx-listview-selection{display:table-cell;vertical-align:middle;padding:0 15px 0 5px}[dir="rtl"] .mx-listview-selection{padding:0 5px 0 15px}.mx-listview-selectable .mx-listview-content{display:table-cell;vertical-align:middle;width:100%}.mx-listview .selected{background:#def}.mx-listview .mx-table th,.mx-listview .mx-table td{padding:2px}.mx-login .form-control{margin-top:10px}.mx-menubar{padding:8px}.mx-menubar-icon{height:16px}.mx-menubar-more-icon{display:inline-block;width:16px;height:16px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKNJREFUeNpi/P//P8NgAUwMgwiMOmbUMaOOGXXMqGNGHTPYHMOCTfDs2bMeQKoOiI1BXCBuMjY23kFrdYzoTQigRm8gtQWLG0OBBqyhlTpc0dSOIxTraKwOq2PUcWhWp7E6rI65iUPzTRqrw+qYGhyam2isDtMxwES1CUgFAfFxqBCIDkJPbNRWhzU3jRZ6o44ZdcyoY0YdM+qYUccMUscABBgAUXpEjE/Bs/IAAAAASUVORK5CYII=) no-repeat center center;background-size:16px 16px;vertical-align:middle}.mx-navigationlist{padding:8px}.mx-navigationlist li:hover,.mx-navigationlist li:focus,.mx-navigationlist li.active{color:#FFF;background-color:#3498DB}.mx-navigationlist *{cursor:pointer}.mx-navigationlist .table th,.mx-navigationlist .table td{padding:2px}.mx-progress{position:fixed;top:30%;left:0;right:0;margin:auto;width:250px;max-width:90%;background:#333;opacity:0.8;z-index:5000;border-radius:4px;padding:20px 15px;transition:opacity 0.4s ease-in-out}.mx-progress-hidden{opacity:0}.mx-progress-message{color:#fff;text-align:center;margin-bottom:15px}.mx-progress-empty .mx-progress-message{display:none}.mx-progress-indicator{width:70px;height:10px;margin:auto;background:url(data:image/gif;base64,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)}.mx-reload-notification{position:fixed;z-index:1001;top:0;width:100%;padding:1rem;border:1px solid #048acd;background-color:#0494dc;box-shadow:0 5px 20px rgba(1,37,55,0.16);color:white;text-align:center;font-size:14px}.mx-resizer-n,.mx-resizer-s{position:absolute;left:0;width:100%;height:10px}.mx-resizer-n{top:-5px;cursor:n-resize}.mx-resizer-s{bottom:-5px;cursor:s-resize}.mx-resizer-e,.mx-resizer-w{position:absolute;top:0;width:10px;height:100%}.mx-resizer-e{right:-5px;cursor:e-resize}.mx-resizer-w{left:-5px;cursor:w-resize}.mx-resizer-nw,.mx-resizer-ne,.mx-resizer-sw,.mx-resizer-se{position:absolute;width:20px;height:20px}.mx-resizer-nw,.mx-resizer-ne{top:-5px}.mx-resizer-sw,.mx-resizer-se{bottom:-5px}.mx-resizer-nw,.mx-resizer-sw{left:-5px}.mx-resizer-ne,.mx-resizer-se{right:-5px}.mx-resizer-nw{cursor:nw-resize}.mx-resizer-ne{cursor:ne-resize}.mx-resizer-sw{cursor:sw-resize}.mx-resizer-se{cursor:se-resize}.mx-text{white-space:pre-line}.mx-textarea textarea{resize:none;overflow-y:hidden}.mx-textarea .mx-textarea-noresize{height:auto;resize:vertical;overflow-y:auto}.mx-textarea .mx-textarea-counter{font-size:smaller}.mx-textarea .form-control-static,.mx-textarea .form-group div[class*='textBox']>.control-label,.form-group .mx-textarea div[class*='textBox']>.control-label,.mx-textarea .form-group div[class*='textArea']>.control-label,.form-group .mx-textarea div[class*='textArea']>.control-label,.mx-textarea .form-group div[class*='datePicker']>.control-label,.form-group .mx-textarea div[class*='datePicker']>.control-label{white-space:pre-line}.mx-underlay{position:fixed;top:0;width:100%;height:100%;z-index:1000;opacity:0.5;background-color:#333}.mx-imagezoom{position:absolute;display:table;width:100%;height:100%;background-color:#999}.mx-imagezoom-wrapper{display:table-cell;text-align:center;vertical-align:middle}.mx-imagezoom-image{max-width:none}.mx-dropdown li{padding:3px 20px;cursor:pointer}.mx-dropdown label{padding:0;color:#333;white-space:nowrap;cursor:pointer}.mx-dropdown input{margin:0;vertical-align:middle;cursor:pointer}.mx-dropdown .selected{background:#f8f8f8}.mx-demouserswitcher{position:fixed;top:0;right:0;width:360px;height:100%;z-index:20000;box-shadow:-1px 0 5px rgba(28,59,86,0.2)}.mx-demouserswitcher-content{padding:80px 40px 20px;height:100%;color:#387ea2;font-size:14px;overflow:auto;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOgAAABgCAYAAAAXSj7NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MzkwOTREMDQ2NEYxMUU0QTQ4MUI5NTNGMUQ3QzE5NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0MzkwOTREMTQ2NEYxMUU0QTQ4MUI5NTNGMUQ3QzE5NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0REMyMUZGNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0REMyMjAwNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+g1tRlwAAEFFJREFUeNrsnYl3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) top right no-repeat #1b3149;background-attachment:local}.mx-demouserswitcher ul{padding:0;margin-top:25px;list-style-type:none;border-top:1px solid #496076}.mx-demouserswitcher a{display:block;padding:10px 0;color:#387ea2;border-bottom:1px solid #496076}.mx-demouserswitcher h2{margin:20px 0 5px;color:#5bc4fe;font-size:28px}.mx-demouserswitcher h3{margin:0 0 2px;color:#5bc4fe;font-size:18px;font-weight:normal;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mx-demouserswitcher .active h3{color:#11efdb}.mx-demouserswitcher p{margin-bottom:0}.mx-demouserswitcher-toggle{position:absolute;top:25%;left:-35px;width:35px;height:38px;margin-top:-40px;cursor:pointer;border-top-left-radius:3px;border-bottom-left-radius:3px;box-shadow:-1px 0 5px rgba(28,59,86,0.2);background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NERDMjFGRDQ2NEMxMUU0QTQ4MUI5NTNGMUQ3QzE5NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NERDMjFGRTQ2NEMxMUU0QTQ4MUI5NTNGMUQ3QzE5NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0REMyMUZCNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0REMyMUZDNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+1ZovNAAAAWdJREFUeNqM1M0rRFEYx/E7Y5qIQpOUbIiymQWysBgvJVJK2VgryZQtKSULZelPsB0LZaNZjJUNK1FskJqUvCS3NAsZc3zP9NziOOfeeepTc8/c8+vc8xZTSnmOakEGKdzgDBXXy54OMsSwjpL6W9cYsrxfZWvcUu7y0VdLUCc+VXgd2oLixpfOIOmF17TtHTOozYuupCxAaNB9DUEfeDUbE8bzEXxZerP00l8hh3LUiHTIMr6N9j2ksYoihv/1deyLSVzKKm1jEW+WfZV2Lf8gskjIcwcWpOM++pHCFPLosgWtoCyd7jCPOjzhGHHLyDPY1achaJhDxRj6rBwJXUuoN0IG8IIv7OiGBjxadvAITuT3rex6c0SbKASflnUcBT3JTThAjyWkGUVsBEEFR5CerzXpNIacrFIrJnCBB3muBvkhB1TP27hM/Lvx3zl6gxHqu6c74kiU8IxGjKJdLrrT3xfdjwADAJaMxP2bvD2BAAAAAElFTkSuQmCC) center center no-repeat #1b3149}.mx-master-detail-screen{top:0;left:0;overflow:auto;width:100%;height:100%;position:absolute;background-color:white;will-change:transform}.mx-master-detail-screen .mx-master-detail-details{padding:15px}.mx-master-detail-screen-header{position:relative;overflow:auto;border-bottom:1px solid #ccc;background-color:#f7f7f7}.mx-master-detail-screen-header-caption{text-align:center;font-size:17px;line-height:24px;font-weight:600}.mx-master-detail-screen-header-close{position:absolute;left:0;top:0;height:100%;width:50px;border:none;background:transparent;color:#007aff}body[dir="rtl"] .mx-master-detail-screen-header-close{right:0;left:auto}.mx-master-detail-screen-header-close::before{content:"\2039";font-size:52px;line-height:24px}.mx-master-detail-content-fix{height:100vh;overflow:hidden}.mx-master-detail-content-hidden{transform:translateX(-200%)}body[dir="rtl"] .mx-master-detail-content-hidden{transform:translateX(200%)}.reportingReport{padding:5px;border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.reportingReportParameter th{text-align:right}.reportingDateRange table{width:100%;table-layout:fixed}.reportingDateRange th{padding:5px;text-align:right;background-color:#eee}.reportingDateRange td{padding:5px}.mx-reportmatrix table{width:100%;max-width:100%;table-layout:fixed;margin-bottom:0}.mx-reportmatrix th,.mx-reportmatrix td{padding:8px;line-height:1.42857143;vertical-align:bottom;border:1px solid #ddd}.mx-reportmatrix tbody tr:first-child td{border-top:none}.mx-reportmatrix tbody tr:nth-child(2n+1) td{background-color:#f9f9f9}.mx-reportmatrix tbody img{max-width:16px;max-height:16px}@media all and (-ms-high-contrast: none), (-ms-high-contrast: active){.dijitInline{zoom:1;display:inline;vertical-align:auto}.dj_ie6 .dijitComboBox .dijitInputContainer,.dijitInputContainer{zoom:1}.dijitRight{display:inline}.dijitButtonNode{vertical-align:auto}.dijitTextBox{overflow:hidden}.dijitPlaceHolder{filter:""}.dijitValidationTextBoxError input.dijitValidationInner,.dijitSelect input,.dijitTextBox input.dijitArrowButtonInner{text-indent:0 !important;letter-spacing:-5em !important;text-align:right !important}.dj_a11y input.dijitValidationInner,.dj_a11y input.dijitArrowButtonInner{text-align:left !important}.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton{bottom:50%}.dijitTabContainerTop-tabs .dijitTab,.dijitTabContainerBottom-tabs .dijitTab{zoom:1;display:inline}.dojoDndHorizontal .dojoDndItem{display:inline}}@keyframes slideInUp{from{visibility:visible;transform:translate3d(0, 100%, 0)}to{transform:translate3d(0, 0, 0)}}.animated{animation-duration:0.4s;animation-fill-mode:both}.slideInUp{animation-name:slideInUp}@keyframes slideInDown{from{visibility:visible;transform:translate3d(0, -100%, 0)}to{transform:translate3d(0, 0, 0)}}.slideInDown{animation-name:slideInDown}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.fadeIn{animation-name:fadeIn}.flexcontainer{display:flex;overflow:hidden;flex:1;flex-direction:row}.flexcontainer .flexitem{margin-right:15px}.flexcontainer .flexitem:last-child{margin-right:0}.flexcontainer .flexitem-main{overflow:hidden;flex:1}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-center{align-items:center !important;justify-content:center !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.justify-content-stretch{justify-content:stretch !important}.align-children-start{align-items:flex-start !important}.align-children-end{align-items:flex-end !important}.align-children-center{align-items:center !important}.align-children-baseline{align-items:baseline !important}.align-children-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.flexitem-1{flex:1 1 1%}.flexitem-2{flex:2 2 1%}.flexitem-3{flex:3 3 1%}.flexitem-4{flex:4 4 1%}.flexitem-5{flex:5 5 1%}.flexitem-6{flex:6 6 1%}.flexitem-7{flex:7 7 1%}.flexitem-8{flex:8 8 1%}.flexitem-9{flex:9 9 1%}.flexitem-10{flex:10 10 1%}.flexitem-11{flex:11 11 1%}.flexitem-12{flex:12 12 1%}.spacing-inner-none{padding:0 !important}.spacing-inner-top-none{padding-top:0 !important}.spacing-inner-right-none{padding-right:0 !important}.spacing-inner-bottom-none{padding-bottom:0 !important}.spacing-inner-left-none{padding-left:0 !important}.spacing-outer-none{margin:0 !important}.spacing-outer-top-none{margin-top:0 !important}.spacing-outer-right-none{margin-right:0 !important}.spacing-outer-bottom-none{margin-bottom:0 !important}.spacing-outer-left-none{margin-left:0 !important}.spacing-inner{padding:5px !important}.spacing-inner-top{padding-top:5px !important}.spacing-inner-right{padding-right:5px !important}.spacing-inner-bottom{padding-bottom:5px !important}.spacing-inner-left{padding-left:5px !important}.spacing-outer{margin:5px !important}.spacing-outer-top{margin-top:5px !important}.spacing-outer-right{margin-right:5px !important}.spacing-outer-bottom{margin-bottom:5px !important}.spacing-outer-left{margin-left:5px !important}@media (max-width: 767px){.spacing-inner-medium{padding:15px !important}}@media (min-width: 768px){.spacing-inner-medium{padding:15px !important}}@media (min-width: 992px){.spacing-inner-medium{padding:15px !important}}@media (max-width: 767px){.spacing-inner-top-medium{padding-top:15px !important}}@media (min-width: 768px){.spacing-inner-top-medium{padding-top:15px !important}}@media (min-width: 992px){.spacing-inner-top-medium{padding-top:15px !important}}@media (max-width: 767px){.spacing-inner-right-medium{padding-right:15px !important}}@media (min-width: 768px){.spacing-inner-right-medium{padding-right:15px !important}}@media (min-width: 992px){.spacing-inner-right-medium{padding-right:15px !important}}@media (max-width: 767px){.spacing-inner-bottom-medium{padding-bottom:15px !important}}@media (min-width: 768px){.spacing-inner-bottom-medium{padding-bottom:15px !important}}@media (min-width: 992px){.spacing-inner-bottom-medium{padding-bottom:15px !important}}@media (max-width: 767px){.spacing-inner-left-medium{padding-left:15px !important}}@media (min-width: 768px){.spacing-inner-left-medium{padding-left:15px !important}}@media (min-width: 992px){.spacing-inner-left-medium{padding-left:15px !important}}@media (max-width: 767px){.spacing-outer-medium{margin:15px !important}}@media (min-width: 768px){.spacing-outer-medium{margin:15px !important}}@media (min-width: 992px){.spacing-outer-medium{margin:15px !important}}@media (max-width: 767px){.spacing-outer-top-medium{margin-top:15px !important}}@media (min-width: 768px){.spacing-outer-top-medium{margin-top:15px !important}}@media (min-width: 992px){.spacing-outer-top-medium{margin-top:15px !important}}@media (max-width: 767px){.spacing-outer-right-medium{margin-right:15px !important}}@media (min-width: 768px){.spacing-outer-right-medium{margin-right:15px !important}}@media (min-width: 992px){.spacing-outer-right-medium{margin-right:15px !important}}@media (max-width: 767px){.spacing-outer-bottom-medium{margin-bottom:15px !important}}@media (min-width: 768px){.spacing-outer-bottom-medium{margin-bottom:15px !important}}@media (min-width: 992px){.spacing-outer-bottom-medium{margin-bottom:15px !important}}@media (max-width: 767px){.spacing-outer-left-medium{margin-left:15px !important}}@media (min-width: 768px){.spacing-outer-left-medium{margin-left:15px !important}}@media (min-width: 992px){.spacing-outer-left-medium{margin-left:15px !important}}@media (max-width: 767px){.spacing-inner-large{padding:15px !important}}@media (min-width: 768px){.spacing-inner-large{padding:30px !important}}@media (min-width: 992px){.spacing-inner-large{padding:30px !important}}@media (max-width: 767px){.spacing-inner-top-large{padding-top:15px !important}}@media (min-width: 768px){.spacing-inner-top-large{padding-top:30px !important}}@media (min-width: 992px){.spacing-inner-top-large{padding-top:30px !important}}@media (max-width: 767px){.spacing-inner-right-large{padding-right:15px !important}}@media (min-width: 768px){.spacing-inner-right-large{padding-right:30px !important}}@media (min-width: 992px){.spacing-inner-right-large{padding-right:30px !important}}@media (max-width: 767px){.spacing-inner-bottom-large{padding-bottom:15px !important}}@media (min-width: 768px){.spacing-inner-bottom-large{padding-bottom:30px !important}}@media (min-width: 992px){.spacing-inner-bottom-large{padding-bottom:30px !important}}@media (max-width: 767px){.spacing-inner-left-large{padding-left:15px !important}}@media (min-width: 768px){.spacing-inner-left-large{padding-left:30px !important}}@media (min-width: 992px){.spacing-inner-left-large{padding-left:30px !important}}@media (max-width: 767px){.spacing-outer-large{margin:15px !important}}@media (min-width: 768px){.spacing-outer-large{margin:30px !important}}@media (min-width: 992px){.spacing-outer-large{margin:30px !important}}@media (max-width: 767px){.spacing-outer-top-large{margin-top:15px !important}}@media (min-width: 768px){.spacing-outer-top-large{margin-top:30px !important}}@media (min-width: 992px){.spacing-outer-top-large{margin-top:30px !important}}@media (max-width: 767px){.spacing-outer-right-large{margin-right:15px !important}}@media (min-width: 768px){.spacing-outer-right-large{margin-right:30px !important}}@media (min-width: 992px){.spacing-outer-right-large{margin-right:30px !important}}@media (max-width: 767px){.spacing-outer-bottom-large{margin-bottom:15px !important}}@media (min-width: 768px){.spacing-outer-bottom-large{margin-bottom:30px !important}}@media (min-width: 992px){.spacing-outer-bottom-large{margin-bottom:30px !important}}@media (max-width: 767px){.spacing-outer-left-large{margin-left:15px !important}}@media (min-width: 768px){.spacing-outer-left-large{margin-left:30px !important}}@media (min-width: 992px){.spacing-outer-left-large{margin-left:30px !important}}@media (max-width: 767px){.spacing-inner-layout{padding:15px 15px 15px 15px !important}}@media (min-width: 768px){.spacing-inner-layout{padding:30px 30px 30px 30px !important}}@media (min-width: 992px){.spacing-inner-layout{padding:30px 30px 30px 30px !important}}@media (max-width: 767px){.spacing-inner-top-layout{padding-top:15px !important}}@media (min-width: 768px){.spacing-inner-top-layout{padding-top:30px !important}}@media (min-width: 992px){.spacing-inner-top-layout{padding-top:30px !important}}@media (max-width: 767px){.spacing-inner-right-layout{padding-right:15px !important}}@media (min-width: 768px){.spacing-inner-right-layout{padding-right:30px !important}}@media (min-width: 992px){.spacing-inner-right-layout{padding-right:30px !important}}@media (max-width: 767px){.spacing-inner-bottom-layout{padding-bottom:15px !important}}@media (min-width: 768px){.spacing-inner-bottom-layout{padding-bottom:30px !important}}@media (min-width: 992px){.spacing-inner-bottom-layout{padding-bottom:30px !important}}@media (max-width: 767px){.spacing-inner-left-layout{padding-left:15px !important}}@media (min-width: 768px){.spacing-inner-left-layout{padding-left:30px !important}}@media (min-width: 992px){.spacing-inner-left-layout{padding-left:30px !important}}@media (max-width: 767px){.spacing-outer-layout{margin:15px 15px 15px 15px !important}}@media (min-width: 768px){.spacing-outer-layout{margin:30px 30px 30px 30px !important}}@media (min-width: 992px){.spacing-outer-layout{margin:30px 30px 30px 30px !important}}@media (max-width: 767px){.spacing-outer-top-layout{margin-top:15px !important}}@media (min-width: 768px){.spacing-outer-top-layout{margin-top:30px !important}}@media (min-width: 992px){.spacing-outer-top-layout{margin-top:30px !important}}@media (max-width: 767px){.spacing-outer-right-layout{margin-right:15px !important}}@media (min-width: 768px){.spacing-outer-right-layout{margin-right:30px !important}}@media (min-width: 992px){.spacing-outer-right-layout{margin-right:30px !important}}@media (max-width: 767px){.spacing-outer-bottom-layout{margin-bottom:15px !important}}@media (min-width: 768px){.spacing-outer-bottom-layout{margin-bottom:30px !important}}@media (min-width: 992px){.spacing-outer-bottom-layout{margin-bottom:30px !important}}@media (max-width: 767px){.spacing-outer-left-layout{margin-left:15px !important}}@media (min-width: 768px){.spacing-outer-left-layout{margin-left:30px !important}}@media (min-width: 992px){.spacing-outer-left-layout{margin-left:30px !important}}.mx-scrollcontainer .mx-placeholder{width:100%;height:100%}@media (max-width: 767px){.mx-scrollcontainer .mx-placeholder .mx-layoutgrid,.mx-scrollcontainer .mx-placeholder .mx-layoutgrid-fluid{padding:15px 15px 15px 15px}}@media (min-width: 768px){.mx-scrollcontainer .mx-placeholder .mx-layoutgrid,.mx-scrollcontainer .mx-placeholder .mx-layoutgrid-fluid{padding:30px 30px 30px 30px}}@media (min-width: 992px){.mx-scrollcontainer .mx-placeholder .mx-layoutgrid,.mx-scrollcontainer .mx-placeholder .mx-layoutgrid-fluid{padding:30px 30px 30px 30px}}.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .mx-layoutgrid,.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .mx-layoutgrid-fluid,.mx-scrollcontainer .mx-placeholder .mx-layoutgrid-fluid .mx-layoutgrid,.mx-scrollcontainer .mx-placeholder .mx-layoutgrid-fluid .mx-layoutgrid-fluid{padding:0}html{height:100%}body{min-height:100%;color:#555;background-color:#fff;font-family:"Open Sans",sans-serif;font-size:14px;font-weight:normal;line-height:1.42857}a{-moz-transition:0.25s;-o-transition:0.25s;-webkit-transition:0.25s;transition:0.25s;color:#0595DB;-webkit-backface-visibility:hidden}a:hover{text-decoration:underline;color:#036290}a:focus{outline:thin dotted}a:active,a:hover{outline:0}input:focus,button:focus,.mx-link:focus{outline:0}div[tabindex]{outline:0}.disabled,[disabled]{cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none;filter:alpha(opacity=65)}body{height:100%}.loginpage{display:flex;height:100%}.loginpage-logo{position:absolute;top:30px;right:30px;width:120px}.loginpage-left{display:none}.loginpage-right{display:flex;flex:1;flex-direction:column;justify-content:space-around}.loginpage-formwrapper{width:400px;margin:0 auto}.loginpage-form .alert{display:none}.loginpage-form .btn{border-radius:40px}.loginpage-form .form-group{width:100%;align-items:center}.loginpage-form .form-group .control-label{flex:4;margin-bottom:0;font-size:14px;font-weight:500}.loginpage-form .form-group .inputwrapper{flex:8;position:relative;width:100%}.loginpage-form .form-group .inputwrapper .glyphicon{position:absolute;top:50%;left:10px;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}.loginpage-form .form-group .inputwrapper .glyphicon:before{-webkit-transition:color 0.4s;-moz-transition:color 0.4s;-o-transition:color 0.4s;transition:color 0.4s}.loginpage-form .form-group .inputwrapper .glyphicon-eye-open:hover,.loginpage-form .form-group .inputwrapper .glyphicon-eye-close:hover{cursor:pointer;color:#0595DB}.loginpage-form .form-group .inputwrapper .form-control{padding:8px 10px 8px 45px}.loginpage-form .form-group .inputwrapper .form-control:focus ~ .glyphicon:before{color:#0595DB}.loginpage-alternativelabel{display:flex;align-items:center;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;margin:25px 0px}.loginpage-alternativelabel hr{flex:1;margin:20px 0 20px 10px;border:0;border-color:#d8d8d8;border-top:1px solid #eeeeee}.loginpage-signin{color:#555555}@media screen and (min-width: 1200px){.loginpage-logo{width:150px}.loginpage-left{position:relative;display:block;flex:1;width:100%;height:100%}.loginpage-image{height:100%;animation:makePointer 1s ease-out both;background:left/cover no-repeat url("../../../resources/work-do-more.jpeg");background:left/cover no-repeat linear-gradient(to right, rgba(5,149,219,0.9) 0%, rgba(5,149,219,0.6) 100%),left/cover no-repeat url("../../../resources/work-do-more.jpeg");background:left/cover no-repeat -moz-linear-gradient(left, rgba(5,149,219,0.9) 0%, rgba(5,149,219,0.6) 100%),left/cover no-repeat url("../../../resources/work-do-more.jpeg");background:left/cover no-repeat -webkit-gradient(linear, left bottom, right bottom, color-stop(0%, rgba(5,149,219,0.9)), color-stop(100%, rgba(5,149,219,0.6))),left/cover no-repeat url("../../../resources/work-do-more.jpeg");background:left/cover no-repeat -webkit-linear-gradient(left, rgba(5,149,219,0.9) 0%, rgba(5,149,219,0.6) 100%),left/cover no-repeat url("../../../resources/work-do-more.jpeg");background:left/cover no-repeat -o-linear-gradient(left, rgba(5,149,219,0.9) 0%, rgba(5,149,219,0.6) 100%),left/cover no-repeat url("../../../resources/work-do-more.jpeg");background:left/cover no-repeat -ms-linear-gradient(left, rgba(5,149,219,0.9) 0%, rgba(5,149,219,0.6) 100%),left/cover no-repeat url("../../../resources/work-do-more.jpeg");-webkit-clip-path:polygon(0% 0%, 100% 0, 100% 50%, 100% 100%, 0% 100%);clip-path:polygon(0% 0%, 100% 0, 100% 50%, 100% 100%, 0% 100%)}.loginpage-formwrapper{width:400px}}@keyframes makePointer{100%{-webkit-clip-path:polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);clip-path:polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%)}}@-webkit-keyframes makePointer{100%{-webkit-clip-path:polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);clip-path:polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%)}}.form-control{display:flex;flex:1;min-width:50px;height:auto;padding:8px 10px;transition:border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;color:#555;border:1px solid #D7D7D7;border-radius:4px;background-color:#fff;background-image:none;box-shadow:none;font-size:14px;line-height:1.42857;appearance:none;-moz-appearance:none;-webkit-appearance:none}.form-control:not([readonly]):focus{border-color:#0595DB;outline:0;background-color:#fff;box-shadow:none}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{opacity:1;background-color:#EEEEEE}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}.form-control-lined{border:0;border-bottom:1px solid #D7D7D7;border-radius:0;background-color:transparent}.form-control-lined:focus{background-color:transparent}.form-control-static,.form-group div[class*='textBox']>.control-label,.form-group div[class*='textArea']>.control-label,.form-group div[class*='datePicker']>.control-label{overflow:hidden;flex:1;min-height:auto;padding:8px 10px;border-bottom:1px solid #F0F0EE;font-size:14px;line-height:1.42857}.form-control-static+.control-label,.form-group div[class*='textBox']>.control-label+.control-label,.form-group div[class*='textArea']>.control-label+.control-label,.form-group div[class*='datePicker']>.control-label+.control-label{margin-left:8px}select.form-control{padding-right:30px;background-image:url("data:image/svg+xml;utf8,");background-repeat:no-repeat;background-position:calc(100% - 10px) center;appearance:none;-moz-appearance:none;-webkit-appearance:none}.form-control.mx-selectbox{align-items:center;flex-direction:row-reverse;justify-content:space-between}.mx-textarea .control-label{height:auto}textarea.form-control{flex-basis:auto}.mx-compound-control{display:flex;flex:1;flex-wrap:wrap;max-width:100%}.mx-compound-control .mx-validation-message{flex-basis:100%;margin-top:5px}.form-group{display:flex;flex-direction:row;margin-bottom:15px}.form-group>div[class*='col-']{display:flex;align-items:center;flex-wrap:wrap}.form-group>[class*='col-']{padding-right:15px;padding-left:15px}.form-group .control-label{overflow:hidden;margin-bottom:5px;text-overflow:ellipsis;color:#666;font-size:14px;font-weight:600}.form-group .mx-validation-message{flex-basis:100%}.form-group.no-columns:not(.label-after){flex-direction:column}.form-group.label-after .form-control-static,.form-group.label-after div[class*='textBox']>.control-label,.form-group.label-after div[class*='textArea']>.control-label,.form-group.label-after div[class*='datePicker']>.control-label{flex:unset}.form-group.label-after .control-label{margin-bottom:0}.mx-dateinput,.mx-referenceselector,.mx-referencesetselector{flex:1}.dj_webkit.dj_ios .form-control{transform:translateZ(0)}@media only screen and (min-width: 768px){.form-horizontal .control-label{margin-bottom:0;padding-top:8px;padding-bottom:8px;line-height:1.42857}}@media only screen and (max-width: 767px){.form-group{flex-direction:column}}@media only screen and (max-device-width: 1024px) and (-webkit-min-device-pixel-ratio: 0){input[type='date'],input[type='time'],input[type='datetime-local'],input[type='month']{line-height:1}input[type='time']:not(.has-value):before,input[type='date']:not(.has-value):before,input[type='month']:not(.has-value):before,input[type='datetime-local']:not(.has-value):before{margin-right:0.5em;content:attr(placeholder) !important;color:#AAAAAA}input[type='time'].has-value:before,input[type='date'].has-value:before,input[type='month'].has-value:before,input[type='datetime-local'].has-value:before{content:'' !important}}@media (-ms-high-contrast: none), (-ms-high-contrast: active){.form-group{display:block}}[dir='rtl'] select.form-control{padding-right:30px;padding-left:0;background-position:10px center}.alert{margin-top:0;padding:15px;border:0;border-radius:4px}.alert-bordered{border:1px solid}.alert-success{color:#477901;border-color:#538d01;background-color:#e4f4cc}.alert-info{color:#2b6a94;border-color:#327bad;background-color:#daeffd}.alert-warning{color:#955d11;border-color:#ae6d14;background-color:#feebd2}.alert-danger{color:#8e1116;border-color:#a61419;background-color:#fbd2d3}.has-error .alert{margin-top:8px;margin-bottom:0}.background-main{background-color:#fff !important}.background-secondary{background-color:#F5F8FD !important}.background-default{background-color:#ddd !important}.background-default-darker{background-color:#858585 !important}.background-default-dark{background-color:#9b9b9b !important}.background-default-light{background-color:#ebebeb !important}.background-default-lighter{background-color:#f8f8f8 !important}.background-inverse{background-color:#252C36 !important}.background-inverse-darker{background-color:#161a20 !important}.background-inverse-dark{background-color:#1a1f26 !important}.background-inverse-light{background-color:#7c8086 !important}.background-inverse-lighter{background-color:#d3d5d7 !important}.background-primary{background-color:#0595DB !important}.background-primary-darker{background-color:#035983 !important}.background-primary-dark{background-color:#046899 !important}.background-primary-light{background-color:#69bfe9 !important}.background-primary-lighter{background-color:#cdeaf8 !important}.background-info{background-color:#48B0F7 !important}.background-info-darker{background-color:#2b6a94 !important}.background-info-dark{background-color:#327bad !important}.background-info-light{background-color:#91d0fa !important}.background-info-lighter{background-color:#daeffd !important}.background-success{background-color:#76CA02 !important}.background-success-darker{background-color:#477901 !important}.background-success-dark{background-color:#538d01 !important}.background-success-light{background-color:#addf67 !important}.background-success-lighter{background-color:#e4f4cc !important}.background-warning{background-color:#F99B1D !important}.background-warning-darker{background-color:#955d11 !important}.background-warning-dark{background-color:#ae6d14 !important}.background-warning-light{background-color:#fbc377 !important}.background-warning-lighter{background-color:#feebd2 !important}.background-danger{background-color:#ED1C24 !important}.background-danger-darker{background-color:#8e1116 !important}.background-danger-dark{background-color:#a61419 !important}.background-danger-light{background-color:#f4777c !important}.background-danger-lighter{background-color:#fbd2d3 !important}.background-brand-gradient{background-image:linear-gradient(152deg, #0CC7F0 0%, #087ECC 51%, #077AC9 55%, #0659B9 78%) !important}.btn,.mx-button{display:inline-block;margin-bottom:0;padding:0.6em 1em;cursor:pointer;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;text-align:center;vertical-align:middle;white-space:nowrap;color:#0595DB;border:1px solid #ddd;border-radius:4px;background-color:#fff;background-image:none;box-shadow:none;text-shadow:none;font-size:14px;line-height:1.42857}.btn:hover,.btn:focus,.btn:active,.btn:active:focus,.mx-button:hover,.mx-button:focus,.mx-button:active,.mx-button:active:focus{outline:none;box-shadow:none}.btn[aria-disabled],.mx-button[aria-disabled]{cursor:not-allowed;pointer-events:none;opacity:0.65;filter:alpha(opacity=65)}.mx-link{padding:0;color:#0595DB}.mx-link[aria-disabled='true']{cursor:not-allowed;pointer-events:none;opacity:0.65;filter:alpha(opacity=65)}.btn img,.mx-button img,.mx-link img{height:18px;margin-right:5px;vertical-align:text-top}.profile-phone .btn:active,.profile-phone .mx-link:active{-webkit-transform:translateY(1px);transform:translateY(1px)}.btn,.btn-default{color:#0595DB;border-color:#ddd;background-color:#fff}.btn:hover,.btn:focus,.btn:active,.btn.active,.open>.btn.dropdown-toggle,.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#0595DB;border-color:#ddd;background-color:#ddd}.btn:active,.btn.active,.open>.btn.dropdown-toggle,.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{background-image:none}.btn.disabled,.btn.disabled:hover,.btn.disabled:focus,.btn.disabled:active,.btn.disabled.active,.btn[disabled],.btn[disabled]:hover,.btn[disabled]:focus,.btn[disabled]:active,.btn[disabled].active,.btn[aria-disabled],.btn[aria-disabled]:hover,.btn[aria-disabled]:focus,.btn[aria-disabled]:active,.btn[aria-disabled].active,.btn fieldset[disabled],.btn fieldset[disabled]:hover,.btn fieldset[disabled]:focus,.btn fieldset[disabled]:active,.btn fieldset[disabled].active,.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled]:active,.btn-default[disabled].active,.btn-default[aria-disabled],.btn-default[aria-disabled]:hover,.btn-default[aria-disabled]:focus,.btn-default[aria-disabled]:active,.btn-default[aria-disabled].active,.btn-default fieldset[disabled],.btn-default fieldset[disabled]:hover,.btn-default fieldset[disabled]:focus,.btn-default fieldset[disabled]:active,.btn-default fieldset[disabled].active{border-color:#ddd;background-color:#fff}.btn.btn-bordered,.btn-default.btn-bordered{background-color:transparent}.btn.btn-bordered:hover,.btn.btn-bordered:focus,.btn.btn-bordered:active,.btn.btn-bordered.active,.open>.btn.btn-bordered.dropdown-toggle,.btn-default.btn-bordered:hover,.btn-default.btn-bordered:focus,.btn-default.btn-bordered:active,.btn-default.btn-bordered.active,.open>.btn-default.btn-bordered.dropdown-toggle{color:#0595DB;border-color:#ddd;background-color:#ddd}.btn.btn-link,.btn-default.btn-link{text-decoration:none;border-color:transparent;background-color:transparent}.btn.btn-link:hover,.btn-default.btn-link:hover{border-color:#eee;background-color:#eee}.btn-primary,.datagrid-fullsearch.mx-grid .mx-grid-search-button{color:#fff;border-color:#0595DB;background-color:#0595DB}.btn-primary:hover,.datagrid-fullsearch.mx-grid .mx-grid-search-button:hover,.btn-primary:focus,.datagrid-fullsearch.mx-grid .mx-grid-search-button:focus,.btn-primary:active,.datagrid-fullsearch.mx-grid .mx-grid-search-button:active,.btn-primary.active,.datagrid-fullsearch.mx-grid .active.mx-grid-search-button,.open>.btn-primary.dropdown-toggle,.datagrid-fullsearch.mx-grid .open>.dropdown-toggle.mx-grid-search-button{color:#fff;border-color:#0477af;background-color:#0477af}.btn-primary:active,.datagrid-fullsearch.mx-grid .mx-grid-search-button:active,.btn-primary.active,.datagrid-fullsearch.mx-grid .active.mx-grid-search-button,.open>.btn-primary.dropdown-toggle,.datagrid-fullsearch.mx-grid .open>.dropdown-toggle.mx-grid-search-button{background-image:none}.btn-primary.disabled,.datagrid-fullsearch.mx-grid .disabled.mx-grid-search-button,.btn-primary.disabled:hover,.datagrid-fullsearch.mx-grid .disabled.mx-grid-search-button:hover,.btn-primary.disabled:focus,.datagrid-fullsearch.mx-grid .disabled.mx-grid-search-button:focus,.btn-primary.disabled:active,.datagrid-fullsearch.mx-grid .disabled.mx-grid-search-button:active,.btn-primary.disabled.active,.datagrid-fullsearch.mx-grid .disabled.active.mx-grid-search-button,.btn-primary[disabled],.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled],.btn-primary[disabled]:hover,.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled]:hover,.btn-primary[disabled]:focus,.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled]:focus,.btn-primary[disabled]:active,.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled]:active,.btn-primary[disabled].active,.datagrid-fullsearch.mx-grid .mx-grid-search-button[disabled].active,.btn-primary[aria-disabled],.datagrid-fullsearch.mx-grid .mx-grid-search-button[aria-disabled],.btn-primary[aria-disabled]:hover,.datagrid-fullsearch.mx-grid .mx-grid-search-button[aria-disabled]:hover,.btn-primary[aria-disabled]:focus,.datagrid-fullsearch.mx-grid .mx-grid-search-button[aria-disabled]:focus,.btn-primary[aria-disabled]:active,.datagrid-fullsearch.mx-grid .mx-grid-search-button[aria-disabled]:active,.btn-primary[aria-disabled].active,.datagrid-fullsearch.mx-grid .mx-grid-search-button[aria-disabled].active,.btn-primary fieldset[disabled],.datagrid-fullsearch.mx-grid .mx-grid-search-button fieldset[disabled],.btn-primary fieldset[disabled]:hover,.datagrid-fullsearch.mx-grid .mx-grid-search-button fieldset[disabled]:hover,.btn-primary fieldset[disabled]:focus,.datagrid-fullsearch.mx-grid .mx-grid-search-button fieldset[disabled]:focus,.btn-primary fieldset[disabled]:active,.datagrid-fullsearch.mx-grid .mx-grid-search-button fieldset[disabled]:active,.btn-primary fieldset[disabled].active,.datagrid-fullsearch.mx-grid .mx-grid-search-button fieldset[disabled].active{border-color:#0595DB;background-color:#0595DB}.btn-primary.btn-bordered,.datagrid-fullsearch.mx-grid .btn-bordered.mx-grid-search-button{background-color:transparent;color:#0595DB}.btn-primary.btn-bordered:hover,.datagrid-fullsearch.mx-grid .btn-bordered.mx-grid-search-button:hover,.btn-primary.btn-bordered:focus,.datagrid-fullsearch.mx-grid .btn-bordered.mx-grid-search-button:focus,.btn-primary.btn-bordered:active,.datagrid-fullsearch.mx-grid .btn-bordered.mx-grid-search-button:active,.btn-primary.btn-bordered.active,.datagrid-fullsearch.mx-grid .btn-bordered.active.mx-grid-search-button,.open>.btn-primary.btn-bordered.dropdown-toggle,.datagrid-fullsearch.mx-grid .open>.btn-bordered.dropdown-toggle.mx-grid-search-button{color:#fff;border-color:#0595DB;background-color:#0595DB}.btn-primary.btn-link,.datagrid-fullsearch.mx-grid .btn-link.mx-grid-search-button{text-decoration:none;border-color:transparent;background-color:transparent;color:#0595DB}.btn-primary.btn-link:hover,.datagrid-fullsearch.mx-grid .btn-link.mx-grid-search-button:hover{border-color:#eee;background-color:#eee}.btn-inverse{color:#fff;border-color:#252C36;background-color:#252C36}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.open>.btn-inverse.dropdown-toggle{color:#fff;border-color:#51565e;background-color:#51565e}.btn-inverse:active,.btn-inverse.active,.open>.btn-inverse.dropdown-toggle{background-image:none}.btn-inverse.disabled,.btn-inverse.disabled:hover,.btn-inverse.disabled:focus,.btn-inverse.disabled:active,.btn-inverse.disabled.active,.btn-inverse[disabled],.btn-inverse[disabled]:hover,.btn-inverse[disabled]:focus,.btn-inverse[disabled]:active,.btn-inverse[disabled].active,.btn-inverse[aria-disabled],.btn-inverse[aria-disabled]:hover,.btn-inverse[aria-disabled]:focus,.btn-inverse[aria-disabled]:active,.btn-inverse[aria-disabled].active,.btn-inverse fieldset[disabled],.btn-inverse fieldset[disabled]:hover,.btn-inverse fieldset[disabled]:focus,.btn-inverse fieldset[disabled]:active,.btn-inverse fieldset[disabled].active{border-color:#252C36;background-color:#252C36}.btn-inverse.btn-bordered{background-color:transparent;color:#252C36}.btn-inverse.btn-bordered:hover,.btn-inverse.btn-bordered:focus,.btn-inverse.btn-bordered:active,.btn-inverse.btn-bordered.active,.open>.btn-inverse.btn-bordered.dropdown-toggle{color:#fff;border-color:#252C36;background-color:#252C36}.btn-inverse.btn-link{text-decoration:none;border-color:transparent;background-color:transparent;color:#252C36}.btn-inverse.btn-link:hover{border-color:#eee;background-color:#eee}.btn-success{color:#fff;border-color:#76CA02;background-color:#76CA02}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;border-color:#5ea202;background-color:#5ea202}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled]:active,.btn-success[disabled].active,.btn-success[aria-disabled],.btn-success[aria-disabled]:hover,.btn-success[aria-disabled]:focus,.btn-success[aria-disabled]:active,.btn-success[aria-disabled].active,.btn-success fieldset[disabled],.btn-success fieldset[disabled]:hover,.btn-success fieldset[disabled]:focus,.btn-success fieldset[disabled]:active,.btn-success fieldset[disabled].active{border-color:#76CA02;background-color:#76CA02}.btn-success.btn-bordered{background-color:transparent;color:#76CA02}.btn-success.btn-bordered:hover,.btn-success.btn-bordered:focus,.btn-success.btn-bordered:active,.btn-success.btn-bordered.active,.open>.btn-success.btn-bordered.dropdown-toggle{color:#fff;border-color:#76CA02;background-color:#76CA02}.btn-success.btn-link{text-decoration:none;border-color:transparent;background-color:transparent;color:#76CA02}.btn-success.btn-link:hover{border-color:#eee;background-color:#eee}.btn-info{color:#fff;border-color:#48B0F7;background-color:#48B0F7}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;border-color:#3a8dc6;background-color:#3a8dc6}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled]:active,.btn-info[disabled].active,.btn-info[aria-disabled],.btn-info[aria-disabled]:hover,.btn-info[aria-disabled]:focus,.btn-info[aria-disabled]:active,.btn-info[aria-disabled].active,.btn-info fieldset[disabled],.btn-info fieldset[disabled]:hover,.btn-info fieldset[disabled]:focus,.btn-info fieldset[disabled]:active,.btn-info fieldset[disabled].active{border-color:#48B0F7;background-color:#48B0F7}.btn-info.btn-bordered{background-color:transparent;color:#48B0F7}.btn-info.btn-bordered:hover,.btn-info.btn-bordered:focus,.btn-info.btn-bordered:active,.btn-info.btn-bordered.active,.open>.btn-info.btn-bordered.dropdown-toggle{color:#fff;border-color:#48B0F7;background-color:#48B0F7}.btn-info.btn-link{text-decoration:none;border-color:transparent;background-color:transparent;color:#48B0F7}.btn-info.btn-link:hover{border-color:#eee;background-color:#eee}.btn-warning{color:#fff;border-color:#F99B1D;background-color:#F99B1D}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;border-color:#c77c17;background-color:#c77c17}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled]:active,.btn-warning[disabled].active,.btn-warning[aria-disabled],.btn-warning[aria-disabled]:hover,.btn-warning[aria-disabled]:focus,.btn-warning[aria-disabled]:active,.btn-warning[aria-disabled].active,.btn-warning fieldset[disabled],.btn-warning fieldset[disabled]:hover,.btn-warning fieldset[disabled]:focus,.btn-warning fieldset[disabled]:active,.btn-warning fieldset[disabled].active{border-color:#F99B1D;background-color:#F99B1D}.btn-warning.btn-bordered{background-color:transparent;color:#F99B1D}.btn-warning.btn-bordered:hover,.btn-warning.btn-bordered:focus,.btn-warning.btn-bordered:active,.btn-warning.btn-bordered.active,.open>.btn-warning.btn-bordered.dropdown-toggle{color:#fff;border-color:#F99B1D;background-color:#F99B1D}.btn-warning.btn-link{text-decoration:none;border-color:transparent;background-color:transparent;color:#F99B1D}.btn-warning.btn-link:hover{border-color:#eee;background-color:#eee}.btn-danger{color:#fff;border-color:#ED1C24;background-color:#ED1C24}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;border-color:#be161d;background-color:#be161d}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled]:active,.btn-danger[disabled].active,.btn-danger[aria-disabled],.btn-danger[aria-disabled]:hover,.btn-danger[aria-disabled]:focus,.btn-danger[aria-disabled]:active,.btn-danger[aria-disabled].active,.btn-danger fieldset[disabled],.btn-danger fieldset[disabled]:hover,.btn-danger fieldset[disabled]:focus,.btn-danger fieldset[disabled]:active,.btn-danger fieldset[disabled].active{border-color:#ED1C24;background-color:#ED1C24}.btn-danger.btn-bordered{background-color:transparent;color:#ED1C24}.btn-danger.btn-bordered:hover,.btn-danger.btn-bordered:focus,.btn-danger.btn-bordered:active,.btn-danger.btn-bordered.active,.open>.btn-danger.btn-bordered.dropdown-toggle{color:#fff;border-color:#ED1C24;background-color:#ED1C24}.btn-danger.btn-link{text-decoration:none;border-color:transparent;background-color:transparent;color:#ED1C24}.btn-danger.btn-link:hover{border-color:#eee;background-color:#eee}.btn-lg{font-size:16px}.btn-lg img{height:calc(12px + 4px)}.btn-sm{font-size:12px}.btn-sm img{height:calc(12px + 4px)}.btn-image{padding:0;vertical-align:middle;border-style:none;background-color:transparent}.btn-image img{display:block;height:auto}.btn-image:hover,.btn-image:focus{background-color:transparent}.btn-icon>img,.btn-icon>.glyphicon{margin:0}.btn-icon-right>img,.btn-icon-right>.glyphicon{float:right;margin-left:5px}.btn-icon-top{padding-right:0;padding-left:0}.btn-icon-top>img,.btn-icon-top>.glyphicon{display:block;margin:0 0 5px 0}.mx-checkbox.label-after{flex-wrap:wrap}.mx-checkbox.label-after .control-label{padding:0}input[type="checkbox"]{position:relative !important;width:16px;height:16px;margin:0 !important;cursor:pointer;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;-webkit-user-select:none;user-select:none;appearance:none;-moz-appearance:none;-webkit-appearance:none}input[type='checkbox']::-ms-check{color:#D7D7D7;border-color:#D7D7D7;border-radius:4px;background-color:#fff}input[type='checkbox']:focus::-ms-check,input[type='checkbox']:checked::-ms-check{color:#0595DB;border-color:#0595DB;background-color:#fff}input[type='checkbox']:before,input[type='checkbox']:after{position:absolute;display:block;transition:all 0.3s ease}input[type='checkbox']:before{width:100%;height:100%;content:'';border:1px solid #D7D7D7;border-radius:4px;background-color:transparent}input[type='checkbox']:after{width:8px;height:4px;margin:5px 4px;transform:rotate(-45deg);pointer-events:none;border:2px solid #FFFFFF;border-top:0;border-right:0}input[type='checkbox']:not(:disabled):not(:checked):hover:after{content:'';border-color:#D7D7D7}input[type='checkbox']:checked:before{border-color:#0595DB;background-color:#0595DB}input[type='checkbox']:checked:after{content:''}input[type='checkbox']:disabled:before{background-color:#eee}input[type='checkbox']:checked:disabled:before{border-color:transparent;background-color:rgba(5,149,219,0.4)}input[type='checkbox']:disabled:after,input[type='checkbox']:checked:disabled:after{border-color:#eee}input[type='checkbox']+.control-label{margin-left:8px}.mx-grid{padding:0px;border:0;border-radius:0}.mx-grid .mx-grid-controlbar{margin:10px 0}.mx-grid .mx-grid-controlbar .mx-grid-pagingbar .mx-button{padding:6px;color:#888;border-color:rgba(0,0,0,0);background-color:rgba(0,0,0,0)}.mx-grid .mx-grid-controlbar .mx-grid-pagingbar .mx-button:hover{color:#0595DB;border-color:rgba(0,0,0,0);background-color:rgba(0,0,0,0)}.mx-grid .mx-grid-controlbar .mx-grid-pagingbar .mx-grid-paging-status{padding:0 8px 8px}.mx-grid .mx-grid-searchbar{margin:10px 0}.mx-grid .mx-grid-searchbar .mx-grid-search-item .mx-grid-search-label{vertical-align:middle}.mx-grid .mx-grid-searchbar .mx-grid-search-item .mx-grid-search-label label{padding-top:5px}.mx-grid .mx-grid-searchbar .mx-grid-search-item .mx-grid-search-input{display:inline-flex}.mx-grid .mx-grid-searchbar .mx-grid-search-item .mx-grid-search-input .form-control{height:28px;font-size:11px}.mx-grid .mx-grid-searchbar .mx-grid-search-item .mx-grid-search-input select.form-control{padding:3px;vertical-align:middle}.mx-grid .mx-grid-searchbar .mx-grid-search-item .mx-grid-search-input .mx-button{height:28px;padding-top:2px;padding-bottom:2px}.mx-dataview .mx-grid{border:0}.mx-datagrid table{border-width:0;background-color:transparent}.mx-datagrid table th{border-style:solid;border-color:#D7D7D7;border-top-width:0;border-right:0;border-bottom-width:1px;border-left:0;background-color:rgba(0,0,0,0);padding:15px 15px 15px 15px;vertical-align:middle}.mx-datagrid table th .mx-datagrid-head-caption{white-space:normal}.mx-datagrid table tbody tr td{-webkit-transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);-moz-transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);-o-transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);transform-style:initial;padding:15px 15px 15px 15px;vertical-align:middle;border-width:0;border-color:#D7D7D7;border-bottom-width:1px;border-bottom-style:solid;background-color:#fff}.mx-datagrid table tbody tr td:focus{outline:none}.mx-datagrid table tbody tr td .mx-datagrid-data-wrapper{text-overflow:ellipsis}.mx-datagrid table tbody tr.selected td,.mx-datagrid table tbody tr.selected:hover td{color:#555;background-color:#f3f3f3 !important}.mx-datagrid table tfoot>tr>th{padding:15px 15px 15px 15px;border-width:0;background-color:#D7D7D7}.mx-datagrid table tfoot>tr>td{padding:15px 15px 15px 15px;border-width:0;background-color:#fff;font-weight:bold}.mx-datagrid table *:focus{outline:0}.datagrid-striped.mx-datagrid table th{border-width:0}.datagrid-striped.mx-datagrid table tbody tr td{border-top-width:0}.datagrid-striped.mx-datagrid table tbody tr:nth-child(odd) td{background-color:#fbfbfb}.datagrid-bordered.mx-datagrid table{border:1px solid}.datagrid-bordered.mx-datagrid table th{border:1px solid #D7D7D7}.datagrid-bordered.mx-datagrid table tbody tr td{border:1px solid #D7D7D7}.datagrid-bordered.mx-datagrid tfoot>tr>th{border-width:0;background-color:#D7D7D7}.datagrid-bordered.mx-datagrid tfoot>tr>td{border-width:1px}.datagrid-transparent.mx-datagrid table{background-color:transparent}.datagrid-transparent.mx-datagrid table tbody tr:nth-of-type(odd){background-color:transparent}.datagrid-transparent.mx-datagrid table tbody tr td{background-color:transparent}.datagrid-hover.mx-datagrid table tbody tr:hover td{background-color:#f7f7f7 !important}.datagrid-hover.mx-datagrid table tbody tr.selected:hover td{background-color:#ebebeb !important}.datagrid-lg.mx-datagrid table th{padding:30px 30px 30px 30px}.datagrid-lg.mx-datagrid table tbody tr td{padding:30px 30px 30px 30px}.datagrid-sm.mx-datagrid table th{padding:7.5px 7.5px 7.5px 7.5px}.datagrid-sm.mx-datagrid table tbody tr td{padding:7.5px 7.5px 7.5px 7.5px}.datagrid-fullsearch.mx-grid .mx-grid-reset-button{display:none}.datagrid-fullsearch.mx-grid .mx-grid-search-item{display:block}.datagrid-fullsearch.mx-grid .mx-grid-search-label{display:none}.datagrid-fullsearch.mx-grid .mx-grid-searchbar .mx-grid-search-controls{position:absolute;right:0}.datagrid-fullsearch.mx-grid .mx-grid-searchbar .mx-grid-search-input{width:80%;padding-left:0}.datagrid-fullsearch.mx-grid .mx-grid-searchbar .mx-grid-search-input .btn,.datagrid-fullsearch.mx-grid .mx-grid-searchbar .mx-grid-search-input .form-control{height:35px;font-size:12px}.mx-dataview .mx-dataview-controls{clear:both;margin-top:10px;padding:8px 0;border-top:1px solid #D7D7D7;border-radius:0;background-color:rgba(0,0,0,0)}.mx-dataview .mx-dataview-controls .mx-button{margin-right:0.3em;margin-bottom:0}.mx-dataview .mx-dataview-controls .mx-button:last-child{margin-right:0}.mx-dataview>.mx-dataview-content>.mx-container-nested>.row{margin-right:0;margin-left:0}.mx-dataview .mx-dataview-message{color:#555;background:#fff}.mx-calendar{z-index:10010 !important;padding:10px;font-size:12px;background:#fff;border-radius:4px;border:1px solid #D7D7D7;box-shadow:0 2px 10px 0 rgba(0,0,0,0.06)}.mx-calendar .mx-calendar-month-header{display:flex;flex-direction:row;justify-content:space-between;margin:0 3px 10px 3px}.mx-calendar .mx-calendar-month-next,.mx-calendar .mx-calendar-month-previous,.mx-calendar .mx-calendar-month-dropdown{border:0;cursor:pointer;background:transparent}.mx-calendar .mx-calendar-month-next:hover,.mx-calendar .mx-calendar-month-previous:hover{color:#0595DB}.mx-calendar .mx-calendar-month-dropdown{display:flex;align-items:center;justify-content:center;position:relative}.mx-calendar .mx-calendar-month-dropdown .mx-calendar-month-current:first-child{margin-right:10px}.mx-calendar th{color:#0595DB}.mx-calendar th,.mx-calendar td{width:35px;height:35px;text-align:center}.mx-calendar td{color:#555}.mx-calendar td:hover{cursor:pointer;border-radius:50%;color:#0595DB;background-color:#ddd}.mx-calendar .mx-calendar-day-month-next,.mx-calendar .mx-calendar-day-month-previous{color:#c8c8c8}.mx-calendar .mx-calendar-day-selected,.mx-calendar .mx-calendar-day-selected:hover{color:#fff;border-radius:50%;background:#0595DB}.mx-calendar .mx-calendar-year-switcher{text-align:center;margin-top:10px;color:#7dd2fc}.mx-calendar .mx-calendar-year-switcher span.mx-calendar-year-selected{color:#0595DB;margin-left:10px;margin-right:10px}.mx-calendar .mx-calendar-year-switcher span:hover{cursor:pointer;text-decoration:underline;background-color:transparent}.mx-calendar-month-dropdown-options{z-index:10020 !important;position:absolute;top:25px;padding:2px 10px;border-radius:4px;background-color:#fff}.mx-calendar-month-dropdown-options div{cursor:pointer;font-size:12px;padding:2px 0}.mx-calendar-month-dropdown-options div:hover,.mx-calendar-month-dropdown-options div:focus{color:#0595DB}.mx-header{z-index:100;display:flex;width:100%;height:45px;padding:0;text-align:initial;color:#555;border-bottom:1px solid #D7D7D7;background-color:#fff;box-shadow:0 1px 4px 0 rgba(0,0,0,0.14)}.mx-header div.mx-header-left,.mx-header div.mx-header-right{position:relative;top:initial;right:initial;left:initial;display:flex;align-items:center;width:25%;height:100%}.mx-header div.mx-header-left .mx-placeholder,.mx-header div.mx-header-right .mx-placeholder{display:flex;align-items:center;height:100%}.mx-header div.mx-header-left .mx-placeholder{order:1}.mx-header div.mx-header-left .mx-placeholder .mx-placeholder{justify-content:flex-start}.mx-header div.mx-header-center{overflow:hidden;flex:1;order:2;text-align:center}.mx-header div.mx-header-center .mx-title{overflow:hidden;width:100%;margin:0;text-overflow:ellipsis;color:#555;font-size:17px;line-height:45px}.mx-header div.mx-header-right{order:3}.mx-header div.mx-header-right .mx-placeholder{justify-content:flex-end}.mx-header .mx-link{display:flex;align-items:center;height:100%;-webkit-transition:all 0.2s;-moz-transition:all 0.2s;transition:all 0.2s;text-decoration:none}.mx-header .mx-link .glyphicon{top:0;font-size:23px}.mx-header .mx-link:active{-webkit-transform:translateY(1px);transform:translateY(1px);color:#036290}.mx-header .mx-link,.mx-header .btn,.mx-header img{padding:0 8px}.mx-header .mx-sidebartoggle{font-size:24px;line-height:45px}.mx-header .mx-sidebartoggle img{height:20px}body[dir='rtl'] .mx-header-left{order:3}body[dir='rtl'] .mx-header-right{order:1}.mx-glyphicon:before{display:inline-block;margin-top:-0.2em;margin-right:0.4555555em;vertical-align:middle;font-family:"Glyphicons Halflings";font-weight:normal;font-style:normal;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.mx-groupbox{margin:0}.mx-groupbox>.mx-groupbox-header{margin:0;color:#555;border-width:1px 1px 0 1px;border-style:solid;border-color:#ddd;background:#ddd;font-size:14px}.mx-groupbox>.mx-groupbox-header .mx-groupbox-collapse-icon{margin-top:0.1em}.mx-groupbox>.mx-groupbox-body{padding:10px 15px;border-width:1px;border-style:solid;border-color:#ddd;background-color:#FFFFFF}.mx-groupbox .mx-groupbox-header+.mx-groupbox-body{border-top:none}.groupbox-default>.mx-groupbox-header{color:#555;border-color:#ddd;background:#ddd}.groupbox-default>.mx-groupbox-body{border-color:#ddd}.groupbox-primary>.mx-groupbox-header{color:#fff;border-color:#0595DB;background:#0595DB}.groupbox-primary>.mx-groupbox-body{border-color:#0595DB}.groupbox-inverse>.mx-groupbox-header{color:#fff;border-color:#252C36;background:#252C36}.groupbox-inverse>.mx-groupbox-body{border-color:#252C36}.groupbox-success>.mx-groupbox-header{color:#fff;border-color:#76CA02;background:#76CA02}.groupbox-success>.mx-groupbox-body{border-color:#76CA02}.groupbox-info>.mx-groupbox-header{color:#fff;border-color:#48B0F7;background:#48B0F7}.groupbox-info>.mx-groupbox-body{border-color:#48B0F7}.groupbox-warning>.mx-groupbox-header{color:#fff;border-color:#F99B1D;background:#F99B1D}.groupbox-warning>.mx-groupbox-body{border-color:#F99B1D}.groupbox-danger>.mx-groupbox-header{color:#fff;border-color:#ED1C24;background:#ED1C24}.groupbox-danger>.mx-groupbox-body{border-color:#ED1C24}.groupbox-white>.mx-groupbox-header{color:#555;border-color:#fff;background:#fff}.groupbox-white>.mx-groupbox-body{border-color:#fff}.groupbox-transparent{border-bottom:1px solid #D7D7D7}.groupbox-transparent>.mx-groupbox-header{padding:15px 0;color:#222;border-style:none;background:transparent;font-size:16px;font-weight:600}.groupbox-transparent .mx-groupbox-body{padding:15px 0;border-style:none;background-color:transparent}.groupbox-transparent .mx-groupbox-collapse-icon{color:#0595DB}.groupbox-h1>.mx-groupbox-header{font-size:31px}.groupbox-h2>.mx-groupbox-header{font-size:26px}.groupbox-h3>.mx-groupbox-header{font-size:24px}.groupbox-h4>.mx-groupbox-header{font-size:18px}.groupbox-h5>.mx-groupbox-header{font-size:14px}.groupbox-h6>.mx-groupbox-header{font-size:12px}.groupbox-callout>.mx-groupbox-header,.groupbox-callout>.mx-groupbox-body{border:0;background-color:#daeffd}.groupbox-callout .mx-groupbox-header+.mx-groupbox-body{padding-top:0}.groupbox-info.groupbox-callout>.mx-groupbox-header,.groupbox-info.groupbox-callout>.mx-groupbox-body{background-color:#daeffd}.groupbox-info.groupbox-callout>.mx-groupbox-header{color:#48B0F7}.groupbox-success.groupbox-callout>.mx-groupbox-header,.groupbox-success.groupbox-callout>.mx-groupbox-body{background-color:#e4f4cc}.groupbox-success.groupbox-callout>.mx-groupbox-header{color:#76CA02}.groupbox-warning.groupbox-callout>.mx-groupbox-header,.groupbox-warning.groupbox-callout>.mx-groupbox-body{background-color:#feebd2}.groupbox-warning.groupbox-callout>.mx-groupbox-header{color:#F99B1D}.groupbox-danger.groupbox-callout>.mx-groupbox-header,.groupbox-danger.groupbox-callout>.mx-groupbox-body{background-color:#fbd2d3}.groupbox-danger.groupbox-callout>.mx-groupbox-header{color:#ED1C24}img.img-rounded,.img-rounded img{border-radius:6px}img.img-thumbnail,.img-thumbnail img{display:inline-block;max-width:100%;height:auto;padding:4px;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;border:1px solid #ddd;border-radius:4px;background-color:#FFFFFF;line-height:1.42857}img.img-circle,.img-circle img{border-radius:50%}img.img-auto,.img-auto img{width:auto !important;max-width:100% !important;height:auto !important;max-height:100% !important}img.img-center,.img-center img{margin-right:auto !important;margin-left:auto !important}.label{display:inline-block;padding:0.2em 0.6em 0.3em;text-align:center;vertical-align:baseline;white-space:nowrap;color:#ffffff;border-radius:0.25em;font-size:100%;line-height:1;margin:0}.label .form-control-static,.label .form-group div[class*='textBox']>.control-label,.form-group .label div[class*='textBox']>.control-label,.label .form-group div[class*='textArea']>.control-label,.form-group .label div[class*='textArea']>.control-label,.label .form-group div[class*='datePicker']>.control-label,.form-group .label div[class*='datePicker']>.control-label{all:unset;font-weight:normal}.label-default{color:#555;background-color:#ddd}.label-primary{color:#fff;background-color:#0595DB}.label-success{color:#fff;background-color:#76CA02}.label-inverse{color:#fff;background-color:#252C36}.label-info{color:#fff;background-color:#48B0F7}.label-warning{color:#fff;background-color:#F99B1D}.label-danger{color:#fff;background-color:#ED1C24}.mx-listview{padding:0}.mx-listview .mx-listview-searchbar{margin-bottom:15px}.mx-listview .mx-listview-searchbar .btn{width:auto}.mx-listview>.btn{width:100%;margin:10px auto}.mx-listview>ul{margin:0}.mx-listview>ul .mx-listview-empty{border-style:none;background-color:transparent}.mx-listview>ul>li{-webkit-transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);-moz-transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);-o-transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);transform-style:initial;padding:15px 15px 15px 15px;border-width:1px 0 0 0;border-style:solid;border-color:#D7D7D7;background-color:#fff}.mx-listview>ul>li:first-child{border-radius:0}.mx-listview>ul>li:last-child{border-bottom:1px solid #D7D7D7;border-radius:0}.mx-listview>ul>li:focus,.mx-listview>ul>li:active{outline:0;background-color:#f7f7f7}.mx-listview>ul>li.selected{background-color:#f3f3f3}.mx-listview .mx-layoutgrid{padding-top:0 !important;padding-bottom:0 !important}.profile-phone .mx-listview .mx-listview-searchbar{margin-bottom:3px;background:#FFFFFF;box-shadow:0 1px 4px 0 rgba(0,0,0,0.14)}.profile-phone .mx-listview .mx-listview-searchbar input{padding:14px 15px;color:#555555;border-style:none;border-radius:0;box-shadow:none}.profile-phone .mx-listview .mx-listview-searchbar .btn{padding:14px 15px;color:inherit;border-style:none}.profile-phone .mx-listview>ul>li:first-child{border-top:none}.listview-bordered.mx-listview>ul>li{border:1px solid #D7D7D7;border-top:0}.listview-bordered.mx-listview>ul>li:first-child{border-top:1px solid #D7D7D7;border-radius:0}.listview-bordered.mx-listview>ul>li:last-child{border-radius:0}.listview-striped.mx-listview>ul>li:nth-child(2n+1){background-color:#fbfbfb}.listview-seperated.mx-listview>ul>li{margin-bottom:15px;border-width:1px;border-style:solid;border-radius:4px}.listview-stylingless.mx-listview>ul>li{padding:0;cursor:default;border:0;background-color:transparent}.listview-stylingless.mx-listview>ul>li:hover,.listview-stylingless.mx-listview>ul>li:focus,.listview-stylingless.mx-listview>ul>li:active{background-color:transparent}.listview-stylingless.mx-listview>ul>li.selected{background-color:transparent !important}.listview-stylingless.mx-listview>ul>li.selected:hover,.listview-stylingless.mx-listview>ul>li.selected:focus,.listview-stylingless.mx-listview>ul>li.selected:active{background-color:transparent !important}.listview-hover.mx-listview>ul>li:hover,.listview-hover.mx-listview>ul>li:focus,.listview-hover.mx-listview>ul>li:active{background-color:#f7f7f7 !important}.listview-hover.mx-listview>ul>li.selected:hover,.listview-hover.mx-listview>ul>li.selected:focus,.listview-hover.mx-listview>ul>li.selected:active{background-color:#ebebeb !important}.listview-lg.mx-listview>ul>li{padding:30px 30px 30px 30px}.listview-sm.mx-listview>ul>li{padding:7.5px 7.5px 7.5px 7.5px}.mx-listview[class*='lv-col']{overflow:hidden}.mx-listview[class*='lv-col']>ul{display:block;margin-right:-15px;margin-left:-15px}.mx-listview[class*='lv-col']>ul::before,.mx-listview[class*='lv-col']>ul::after{display:table;clear:both;content:' '}.mx-listview[class*='lv-col']>ul>li{position:relative;display:block;float:left;min-height:1px;padding-right:15px;padding-left:15px;border:0}@media (max-width: 991px){.mx-listview[class*='lv-col']>ul>li{width:100% !important}}.mx-listview[class*='lv-col']>ul>li>.mx-dataview{overflow:hidden}.mx-listview[class*='lv-col'].lv-col-xs-12>ul>li{width:100% !important}.mx-listview[class*='lv-col'].lv-col-xs-11>ul>li{width:91.66666667% !important}.mx-listview[class*='lv-col'].lv-col-xs-10>ul>li{width:83.33333333% !important}.mx-listview[class*='lv-col'].lv-col-xs-9>ul>li{width:75% !important}.mx-listview[class*='lv-col'].lv-col-xs-8>ul>li{width:66.66666667% !important}.mx-listview[class*='lv-col'].lv-col-xs-7>ul>li{width:58.33333333% !important}.mx-listview[class*='lv-col'].lv-col-xs-6>ul>li{width:50% !important}.mx-listview[class*='lv-col'].lv-col-xs-5>ul>li{width:41.66666667% !important}.mx-listview[class*='lv-col'].lv-col-xs-4>ul>li{width:33.33333333% !important}.mx-listview[class*='lv-col'].lv-col-xs-3>ul>li{width:25% !important}.mx-listview[class*='lv-col'].lv-col-xs-2>ul>li{width:16.66666667% !important}.mx-listview[class*='lv-col'].lv-col-xs-1>ul>li{width:8.33333333% !important}@media (min-width: 768px){.mx-listview[class*='lv-col'].lv-col-sm-12>ul>li{width:100% !important}.mx-listview[class*='lv-col'].lv-col-sm-11>ul>li{width:91.66666667% !important}.mx-listview[class*='lv-col'].lv-col-sm-10>ul>li{width:83.33333333% !important}.mx-listview[class*='lv-col'].lv-col-sm-9>ul>li{width:75% !important}.mx-listview[class*='lv-col'].lv-col-sm-8>ul>li{width:66.66666667% !important}.mx-listview[class*='lv-col'].lv-col-sm-7>ul>li{width:58.33333333% !important}.mx-listview[class*='lv-col'].lv-col-sm-6>ul>li{width:50% !important}.mx-listview[class*='lv-col'].lv-col-sm-5>ul>li{width:41.66666667% !important}.mx-listview[class*='lv-col'].lv-col-sm-4>ul>li{width:33.33333333% !important}.mx-listview[class*='lv-col'].lv-col-sm-3>ul>li{width:25% !important}.mx-listview[class*='lv-col'].lv-col-sm-2>ul>li{width:16.66666667% !important}.mx-listview[class*='lv-col'].lv-col-sm-1>ul>li{width:8.33333333% !important}}@media (min-width: 992px){.mx-listview[class*='lv-col'].lv-col-md-12>ul>li{width:100% !important}.mx-listview[class*='lv-col'].lv-col-md-11>ul>li{width:91.66666667% !important}.mx-listview[class*='lv-col'].lv-col-md-10>ul>li{width:83.33333333% !important}.mx-listview[class*='lv-col'].lv-col-md-9>ul>li{width:75% !important}.mx-listview[class*='lv-col'].lv-col-md-8>ul>li{width:66.66666667% !important}.mx-listview[class*='lv-col'].lv-col-md-7>ul>li{width:58.33333333% !important}.mx-listview[class*='lv-col'].lv-col-md-6>ul>li{width:50% !important}.mx-listview[class*='lv-col'].lv-col-md-5>ul>li{width:41.66666667% !important}.mx-listview[class*='lv-col'].lv-col-md-4>ul>li{width:33.33333333% !important}.mx-listview[class*='lv-col'].lv-col-md-3>ul>li{width:25% !important}.mx-listview[class*='lv-col'].lv-col-md-2>ul>li{width:16.66666667% !important}.mx-listview[class*='lv-col'].lv-col-md-1>ul>li{width:16.66666667% !important}}@media (min-width: 1200px){.mx-listview[class*='lv-col'].lv-col-lg-12>ul>li{width:100% !important}.mx-listview[class*='lv-col'].lv-col-lg-11>ul>li{width:91.66666667% !important}.mx-listview[class*='lv-col'].lv-col-lg-10>ul>li{width:83.33333333% !important}.mx-listview[class*='lv-col'].lv-col-lg-9>ul>li{width:75% !important}.mx-listview[class*='lv-col'].lv-col-lg-8>ul>li{width:66.66666667% !important}.mx-listview[class*='lv-col'].lv-col-lg-7>ul>li{width:58.33333333% !important}.mx-listview[class*='lv-col'].lv-col-lg-6>ul>li{width:50% !important}.mx-listview[class*='lv-col'].lv-col-lg-5>ul>li{width:41.66666667% !important}.mx-listview[class*='lv-col'].lv-col-lg-4>ul>li{width:33.33333333% !important}.mx-listview[class*='lv-col'].lv-col-lg-3>ul>li{width:25% !important}.mx-listview[class*='lv-col'].lv-col-lg-2>ul>li{width:16.66666667% !important}.mx-listview[class*='lv-col'].lv-col-lg-1>ul>li{width:8.33333333% !important}}.modal-dialog .modal-content{border:1px solid #D7D7D7;border-radius:4px;box-shadow:0 2px 4px rgba(0,0,0,0.2)}.modal-dialog .modal-content .modal-header{padding:15px 20px;border-bottom-color:#D7D7D7;border-radius:0;background-color:rgba(0,0,0,0)}.modal-dialog .modal-content .modal-header h4{margin:0;color:#555;font-size:16px;font-weight:bold}.modal-dialog .modal-content .modal-header .close{margin-top:-3px;opacity:1;color:#555;text-shadow:none;filter:alpha(opacity=100)}.modal-dialog .modal-content .modal-body{padding:20px}.modal-dialog .modal-content .modal-footer{display:flex;justify-content:flex-end;margin-top:0;padding:20px;border-style:none}.mx-window.mx-window-view .mx-window-body{overflow:hidden;padding:0}.mx-window.mx-window-view .mx-window-body>.mx-dataview>.mx-dataview-content,.mx-window.mx-window-view .mx-window-body>.mx-placeholder>.mx-dataview>.mx-dataview-content{padding:20px}.mx-window.mx-window-view .mx-window-body>.mx-dataview>.mx-dataview-controls,.mx-window.mx-window-view .mx-window-body>.mx-placeholder>.mx-dataview>.mx-dataview-controls{display:flex;justify-content:flex-end;margin:0;padding:20px;text-align:left;border-top:1px solid #D7D7D7}.mx-window .mx-dataview-controls{padding-bottom:0}.mx-window .mx-layoutgrid{padding-right:0;padding-left:0}.mx-login .modal-body{padding:0 15px}.mx-login .modal-content input{height:56px;padding:12px 12px;border:1px solid #EEEEEE;background:#EEEEEE;box-shadow:none;font-size:16px}.mx-login .modal-content input:focus{border-color:#66AFE9}.mx-login .modal-header,.mx-login .modal-footer{border:0}.mx-login button{font-size:16px}.mx-login h4{color:#AAAAAA;font-size:20px;font-weight:bold}.mx-navbar{margin:0;border-style:none;border-radius:0;background-color:#252C36}.mx-navbar ul.nav{margin:0}.mx-navbar ul.nav>li.mx-navbar-item>a{display:flex;align-items:center;min-height:60px;padding:5px 15px;vertical-align:middle;color:#fff;border-radius:0;font-size:14px;font-weight:normal}.mx-navbar ul.nav>li.mx-navbar-item>a .caret{border-top-color:#fff;border-bottom-color:#fff}.mx-navbar ul.nav>li.mx-navbar-item>a:hover,.mx-navbar ul.nav>li.mx-navbar-item>a:focus,.mx-navbar ul.nav>li.mx-navbar-item>a.active{text-decoration:none;color:#fff;background-color:#2d3642}.mx-navbar ul.nav>li.mx-navbar-item>a:hover .caret,.mx-navbar ul.nav>li.mx-navbar-item>a:focus .caret,.mx-navbar ul.nav>li.mx-navbar-item>a.active .caret{border-top-color:#fff;border-bottom-color:#fff}.mx-navbar ul.nav>li.mx-navbar-item>a.active{color:#fff;background-color:#36404e}.mx-navbar ul.nav>li.mx-navbar-item>a .mx-navbar-submenu::before{position:absolute;top:-9px;left:15px;width:0;height:0;content:'';-webkit-transform:rotate(360deg);transform:rotate(360deg);border-width:0 9px 9px 9px;border-style:solid;border-color:transparent transparent #2d3642 transparent}.mx-navbar ul.nav>li.mx-navbar-item>a img{width:20px;height:auto;margin-right:0.5em}.mx-navbar ul.nav>li.mx-navbar-item>a .glyphicon{top:0;margin-right:0.5em;vertical-align:middle;font-size:20px}.mx-navbar ul.nav>.mx-navbar-item.active a{color:#fff}.mx-navbar ul.nav>.mx-navbar-item>a:hover,.mx-navbar ul.nav>.mx-navbar-item>a:focus,.mx-navbar ul.nav>.mx-navbar-item.open>a,.mx-navbar ul.nav>.mx-navbar-item.open>a:hover,.mx-navbar ul.nav>.mx-navbar-item.open>a:focus{text-decoration:none;color:#fff;background-color:#2d3642}.mx-navbar ul.nav>.mx-navbar-item>a:hover .caret,.mx-navbar ul.nav>.mx-navbar-item>a:focus .caret,.mx-navbar ul.nav>.mx-navbar-item.open>a .caret,.mx-navbar ul.nav>.mx-navbar-item.open>a:hover .caret,.mx-navbar ul.nav>.mx-navbar-item.open>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.mx-navbar ul.nav>.mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem.active a{color:#0595DB;background-color:#1d222a}.mx-navbar ul.nav>.mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem.active a .caret{border-top-color:#0595DB;border-bottom-color:#0595DB}@media (max-width: 768px){.mx-navbar ul.nav>li.mx-navbar-item>a{padding:10px 20px}.mx-navbar .mx-navbar-item.open .dropdown-menu{padding:0;border-radius:0;background-color:#1d222a}.mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a{padding:10px 20px;color:#AAA;border-radius:0;font-size:12px;font-weight:normal}.mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a:hover,.mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a:focus{color:#0595DB;background-color:#1d222a}.mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a.active{color:#0595DB;background-color:#1d222a}}.mx-navbar:focus{outline:0}.region-topbar .mx-navbar{background-color:#fff}.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a{color:#555;font-size:14px}.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a .caret{border-top-color:#555;border-bottom-color:#555}.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a:hover,.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a:focus,.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a.active{color:#555;background-color:#f5f5f5}.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a:hover .caret,.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a:focus .caret,.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a.active .caret{border-top-color:#555;border-bottom-color:#555}.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a.active{color:#555;background-color:#ebebeb}.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a .mx-navbar-submenu::before{border-color:transparent transparent #D7D7D7 transparent}.region-topbar .mx-navbar ul.nav>li.mx-navbar-item>a .glyphicon{font-size:1.2em}.region-topbar .mx-navbar ul.nav>.mx-navbar-item>a:hover,.region-topbar .mx-navbar ul.nav>.mx-navbar-item>a:focus,.region-topbar .mx-navbar ul.nav>.mx-navbar-item.active a,.region-topbar .mx-navbar ul.nav>.mx-navbar-item.open>a,.region-topbar .mx-navbar ul.nav>.mx-navbar-item.open>a:hover,.region-topbar .mx-navbar ul.nav>.mx-navbar-item.open>a:focus{color:#555;background-color:#f5f5f5}.region-topbar .mx-navbar ul.nav>.mx-navbar-item>a:hover .caret,.region-topbar .mx-navbar ul.nav>.mx-navbar-item>a:focus .caret,.region-topbar .mx-navbar ul.nav>.mx-navbar-item.active a .caret,.region-topbar .mx-navbar ul.nav>.mx-navbar-item.open>a .caret,.region-topbar .mx-navbar ul.nav>.mx-navbar-item.open>a:hover .caret,.region-topbar .mx-navbar ul.nav>.mx-navbar-item.open>a:focus .caret{border-top-color:#555;border-bottom-color:#555}.region-topbar .mx-navbar ul.nav>.mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem.active a{color:#0595DB;background-color:#fff}.region-topbar .mx-navbar ul.nav>.mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem.active a .caret{border-top-color:#0595DB;border-bottom-color:#0595DB}@media (max-width: 768px){.region-topbar .mx-navbar .mx-navbar-item.open .dropdown-menu{background-color:#fff}.region-topbar .mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a{color:#AAA;font-size:12px}.region-topbar .mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a:hover,.region-topbar .mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a:focus{color:#0595DB;background-color:#fff}.region-topbar .mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a.active{color:#0595DB;background-color:#fff}}.region-sidebar .mx-navbar{background-color:#252C36}.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a{color:#fff;font-size:14px}.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a .caret{border-top-color:#fff;border-bottom-color:#fff}.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a:hover,.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a:focus,.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a.active{color:#fff;background-color:#2d3642}.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a:hover .caret,.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a:focus .caret,.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a.active .caret{border-top-color:#fff;border-bottom-color:#fff}.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a.active{color:#fff;background-color:#36404e}.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a .mx-navbar-submenu::before{border-color:transparent transparent #2d3642 transparent}.region-sidebar .mx-navbar ul.nav>li.mx-navbar-item>a .glyphicon{font-size:20px}.region-sidebar .mx-navbar ul.nav>.mx-navbar-item>a:hover,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item>a:focus,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.active a,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.open>a,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.open>a:hover,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.open>a:focus{color:#fff;background-color:#2d3642}.region-sidebar .mx-navbar ul.nav>.mx-navbar-item>a:hover .caret,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item>a:focus .caret,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.active a .caret,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.open>a .caret,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.open>a:hover .caret,.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.open>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem.active a{color:#0595DB;background-color:#1d222a}.region-sidebar .mx-navbar ul.nav>.mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem.active a .caret{border-top-color:#0595DB;border-bottom-color:#0595DB}@media (max-width: 768px){.region-sidebar .mx-navbar .mx-navbar-item.open .dropdown-menu{background-color:#fff}.region-sidebar .mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a{color:#AAA;font-size:12px}.region-sidebar .mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a:hover,.region-sidebar .mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a:focus{color:#0595DB;background-color:#1d222a}.region-sidebar .mx-navbar .mx-navbar-item.open .dropdown-menu>li.mx-navbar-subitem>a.active{color:#0595DB;background-color:#1d222a}}.mx-navigationlist{margin:0;padding:0;list-style:none}.mx-navigationlist li.mx-navigationlist-item{-webkit-transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);-moz-transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);-o-transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);transition:all .3s 0s cubic-bezier(0.4, 0, 0.2, 1);transform-style:initial;padding:15px 15px 15px 15px;border-width:1px;border-style:none none solid none;border-color:#D7D7D7;border-radius:0;background-color:#fff}.mx-navigationlist li.mx-navigationlist-item:hover,.mx-navigationlist li.mx-navigationlist-item:focus{color:inherit;background-color:#f7f7f7}.mx-navigationlist li.mx-navigationlist-item.active{color:inherit;background-color:#f3f3f3}.mx-navigationtree{background-color:#252C36}.mx-navigationtree .navbar-inner>ul{margin:0;padding-left:0}.mx-navigationtree .navbar-inner>ul>li{padding:0;border-style:none}.mx-navigationtree .navbar-inner>ul>li>a{display:flex;align-items:center;height:60px;padding:5px 15px;color:#fff;border-bottom:1px solid #2d3642;border-radius:0;background-color:#252C36;text-shadow:none;font-size:14px;font-weight:normal}.mx-navigationtree .navbar-inner>ul>li>a .caret{border-top-color:#fff;border-bottom-color:#fff}.mx-navigationtree .navbar-inner>ul>li>a img{width:20px;height:auto;margin-right:0.5em}.mx-navigationtree .navbar-inner>ul>li>a .glyphicon{top:0;margin-right:0.5em;vertical-align:middle;font-size:20px}.mx-navigationtree .navbar-inner>ul>li a:hover,.mx-navigationtree .navbar-inner>ul>li a:focus,.mx-navigationtree .navbar-inner>ul>li a.active{text-decoration:none;color:#fff;background-color:#2d3642}.mx-navigationtree .navbar-inner>ul>li a:hover .caret,.mx-navigationtree .navbar-inner>ul>li a:focus .caret,.mx-navigationtree .navbar-inner>ul>li a.active .caret{border-top-color:#fff;border-bottom-color:#fff}.mx-navigationtree .navbar-inner>ul>li a.active{color:#fff;border-left-color:#fff;background-color:#36404e}.mx-navigationtree li.mx-navigationtree-has-items>ul{margin:0;padding-left:0;background-color:#1d222a}.mx-navigationtree li.mx-navigationtree-has-items>ul li{margin:0;padding:0;border:0}.mx-navigationtree li.mx-navigationtree-has-items>ul li a{padding:12px 20px 12px 25px;text-decoration:none;color:#AAA;border:0;background-color:#1d222a;text-shadow:none;font-size:12px;font-weight:normal}.mx-navigationtree li.mx-navigationtree-has-items>ul li a:hover,.mx-navigationtree li.mx-navigationtree-has-items>ul li a:focus,.mx-navigationtree li.mx-navigationtree-has-items>ul li a.active{color:#0595DB;outline:0;background-color:#1d222a}.mx-navigationtree li.mx-navigationtree-has-items>ul li a.active{color:#0595DB;border:0;background-color:#1d222a}.mx-navigationtree:focus{outline:0}.region-topbar .mx-navigationtree{background-color:#fff}.region-topbar .mx-navigationtree .navbar-inner>ul>li>a{color:#555;border-color:#D7D7D7;background-color:#fff;font-size:14px}.region-topbar .mx-navigationtree .navbar-inner>ul>li>a .caret{border-top-color:#555;border-bottom-color:#555}.region-topbar .mx-navigationtree .navbar-inner>ul>li>a .glyphicon{font-size:1.2em}.region-topbar .mx-navigationtree .navbar-inner>ul>li a:hover,.region-topbar .mx-navigationtree .navbar-inner>ul>li a:focus,.region-topbar .mx-navigationtree .navbar-inner>ul>li a.active{color:#555;background-color:#f5f5f5}.region-topbar .mx-navigationtree .navbar-inner>ul>li a:hover .caret,.region-topbar .mx-navigationtree .navbar-inner>ul>li a:focus .caret,.region-topbar .mx-navigationtree .navbar-inner>ul>li a.active .caret{border-top-color:#555;border-bottom-color:#555}.region-topbar .mx-navigationtree .navbar-inner>ul>li a.active{color:#555;border-left-color:#555;background-color:#ebebeb}.region-topbar .mx-navigationtree li.mx-navigationtree-has-items>ul{background-color:#fff}.region-topbar .mx-navigationtree li.mx-navigationtree-has-items>ul li a{color:#AAA;background-color:#fff;font-size:12px}.region-topbar .mx-navigationtree li.mx-navigationtree-has-items>ul li a:hover,.region-topbar .mx-navigationtree li.mx-navigationtree-has-items>ul li a:focus,.region-topbar .mx-navigationtree li.mx-navigationtree-has-items>ul li a.active{color:#0595DB;background-color:#fff}.region-topbar .mx-navigationtree li.mx-navigationtree-has-items>ul li a.active{color:#0595DB;background-color:#fff}.region-sidebar .mx-navigationtree{background-color:#252C36}.region-sidebar .mx-navigationtree .navbar-inner>ul>li>a{color:#fff;border-color:#2d3642;background-color:#252C36;font-size:14px}.region-sidebar .mx-navigationtree .navbar-inner>ul>li>a .caret{border-top-color:#fff;border-bottom-color:#fff}.region-sidebar .mx-navigationtree .navbar-inner>ul>li>a .glyphicon{font-size:20px}.region-sidebar .mx-navigationtree .navbar-inner>ul>li a:hover,.region-sidebar .mx-navigationtree .navbar-inner>ul>li a:focus,.region-sidebar .mx-navigationtree .navbar-inner>ul>li a.active{color:#fff;background-color:#2d3642}.region-sidebar .mx-navigationtree .navbar-inner>ul>li a:hover .caret,.region-sidebar .mx-navigationtree .navbar-inner>ul>li a:focus .caret,.region-sidebar .mx-navigationtree .navbar-inner>ul>li a.active .caret{border-top-color:#fff;border-bottom-color:#fff}.region-sidebar .mx-navigationtree .navbar-inner>ul>li a.active{color:#fff;border-left-color:#fff;background-color:#36404e}.region-sidebar .mx-navigationtree li.mx-navigationtree-has-items>ul{background-color:#1d222a}.region-sidebar .mx-navigationtree li.mx-navigationtree-has-items>ul li a{color:#AAA;background-color:#1d222a;font-size:12px}.region-sidebar .mx-navigationtree li.mx-navigationtree-has-items>ul li a:hover,.region-sidebar .mx-navigationtree li.mx-navigationtree-has-items>ul li a:focus,.region-sidebar .mx-navigationtree li.mx-navigationtree-has-items>ul li a.active{color:#0595DB;background-color:#1d222a}.region-sidebar .mx-navigationtree li.mx-navigationtree-has-items>ul li a.active{color:#0595DB;background-color:#1d222a}.nav-content-center-text-icons.mx-navigationtree .navbar-inner ul a{flex-direction:column;justify-content:center}.nav-content-center-text-icons.mx-navigationtree .navbar-inner ul a .glyphicon{margin:0 0 5px 0}.nav-content-center.mx-navigationtree .navbar-inner ul a{justify-content:center}.popupmenu{position:relative;display:inline-flex}.popupmenu-trigger{cursor:pointer}.popupmenu-menu{position:absolute;z-index:999;display:none;flex-direction:column;width:max-content;border-radius:8px;background-color:#fff;box-shadow:0 2px 20px 1px rgba(5,15,129,0.05),0 2px 16px 0 rgba(33,43,54,0.08)}.popupmenu-menu.popupmenu-position-left{top:0;left:0;transform:translateX(-100%)}.popupmenu-menu.popupmenu-position-right{top:0;right:0;transform:translateX(100%)}.popupmenu-menu.popupmenu-position-top{top:0;transform:translateY(-100%)}.popupmenu-menu.popupmenu-position-bottom{bottom:0;transform:translateY(100%)}.popupmenu-menu .popupmenu-basic-item:first-child,.popupmenu-menu .popupmenu-custom-item:first-child{border-top-left-radius:8px;border-top-right-radius:8px}.popupmenu-menu .popupmenu-basic-item:last-child,.popupmenu-menu .popupmenu-custom-item:last-child{border-bottom-right-radius:8px;border-bottom-left-radius:8px}.popupmenu-basic-divider{width:100%;height:1px;background-color:#ddd}.popupmenu-basic-item{padding:12px 16px;color:#555;font-size:14px}.popupmenu-basic-item:hover,.popupmenu-basic-item:focus,.popupmenu-basic-item:active{cursor:pointer;border-color:#F5F8FD;background-color:#F5F8FD}.popupmenu-basic-item-inverse{color:#252C36}.popupmenu-basic-item-primary{color:#0595DB}.popupmenu-basic-item-info{color:#48B0F7}.popupmenu-basic-item-success{color:#76CA02}.popupmenu-basic-item-warning{color:#F99B1D}.popupmenu-basic-item-danger{color:#ED1C24}.popupmenu-custom-item:hover,.popupmenu-custom-item:focus,.popupmenu-custom-item:active{cursor:pointer;border-color:#F5F8FD;background-color:#F5F8FD}.mx-menubar{padding:0;background-color:#252C36}.mx-menubar ul.mx-menubar-list{display:flex;width:100%;min-height:50px}.mx-menubar ul.mx-menubar-list li.mx-menubar-item{margin:0}.mx-menubar ul.mx-menubar-list li.mx-menubar-item>a{display:flex;overflow:hidden;align-items:center;justify-content:center;height:100%;padding:5px 15px;white-space:nowrap;color:#fff;border-radius:0;font-size:14px;font-weight:normal}.mx-menubar ul.mx-menubar-list li.mx-menubar-item>a img{margin-right:0.5em}.mx-menubar ul.mx-menubar-list li.mx-menubar-item>a .glyphicon{top:-1px;margin-right:0.5em;vertical-align:middle;font-size:20px}.mx-menubar ul.mx-menubar-list li.mx-menubar-item a:hover,.mx-menubar ul.mx-menubar-list li.mx-menubar-item a:focus,.mx-menubar ul.mx-menubar-list li.mx-menubar-item:hover a,.mx-menubar ul.mx-menubar-list li.mx-menubar-item:focus a,.mx-menubar ul.mx-menubar-list li.mx-menubar-item.active a{text-decoration:none;color:#fff;background-color:#2d3642}.mx-menubar ul.mx-menubar-list li.mx-menubar-item.active a{color:#fff;background-color:#36404e}.mx-menubar:focus{outline:0}.mx-menubar-vertical{background-color:#252C36}.mx-menubar-vertical ul.mx-menubar-list{display:flex}.mx-menubar-vertical ul.mx-menubar-list li.mx-menubar-item{display:block}.mx-menubar-vertical ul.mx-menubar-list li.mx-menubar-item a{border-bottom:1px solid #2d3642}.mx-menubar-horizontal{box-shadow:2px 0 4px 0 rgba(0,0,0,0.14)}.mx-menubar-horizontal ul.mx-menubar-list li.mx-menubar-item{width:auto}.mx-menubar-horizontal ul.mx-menubar-list li.mx-menubar-item a{width:100%}.mx-menubar-horizontal.menubar-col-6 ul.mx-menubar-list li.mx-menubar-item{width:50%}.mx-menubar-horizontal.menubar-col-4 ul.mx-menubar-list li.mx-menubar-item{width:33.33333333%}.mx-menubar-horizontal.menubar-col-3 ul.mx-menubar-list li.mx-menubar-item{width:25%}.mx-menubar-horizontal.menubar-col-2 ul.mx-menubar-list li.mx-menubar-item{width:20%}.region-topbar .mx-menubar{background-color:#fff}.region-topbar .mx-menubar ul.mx-menubar-list li.mx-menubar-item a{color:#555;font-size:14px}.region-topbar .mx-menubar ul.mx-menubar-list li.mx-menubar-item a .glyphicon{font-size:1.2em}.region-topbar .mx-menubar ul.mx-menubar-list li.mx-menubar-item a:hover,.region-topbar .mx-menubar ul.mx-menubar-list li.mx-menubar-item a:focus,.region-topbar .mx-menubar ul.mx-menubar-list li.mx-menubar-item:hover a,.region-topbar .mx-menubar ul.mx-menubar-list li.mx-menubar-item:focus a,.region-topbar .mx-menubar ul.mx-menubar-list li.mx-menubar-item.active a{color:#555;background-color:#f5f5f5}.region-topbar .mx-menubar ul.mx-menubar-list li.mx-menubar-item.active a{color:#555;background-color:#ebebeb}.region-topbar .mx-menubar-vertical{background-color:#fff}.region-topbar .mx-menubar-vertical ul.mx-menubar-list li.mx-menubar-item a{height:60px;border-color:#D7D7D7}.region-sidebar .mx-menubar{background-color:#252C36}.region-sidebar .mx-menubar ul.mx-menubar-list li.mx-menubar-item a{color:#fff;font-size:14px}.region-sidebar .mx-menubar ul.mx-menubar-list li.mx-menubar-item a .glyphicon{font-size:20px}.region-sidebar .mx-menubar ul.mx-menubar-list li.mx-menubar-item a:hover,.region-sidebar .mx-menubar ul.mx-menubar-list li.mx-menubar-item a:focus,.region-sidebar .mx-menubar ul.mx-menubar-list li.mx-menubar-item:hover a,.region-sidebar .mx-menubar ul.mx-menubar-list li.mx-menubar-item:focus a,.region-sidebar .mx-menubar ul.mx-menubar-list li.mx-menubar-item.active a{color:#fff;background-color:#2d3642}.region-sidebar .mx-menubar ul.mx-menubar-list li.mx-menubar-item.active a{color:#fff;background-color:#36404e}.region-sidebar .mx-menubar-vertical{background-color:#252C36}.region-sidebar .mx-menubar-vertical ul.mx-menubar-list li.mx-menubar-item a{border-color:#2d3642}@supports (padding-bottom: env(safe-area-inset-bottom)){.mx-menubar{padding-bottom:env(safe-area-inset-bottom)}}.bottom-nav-text-icons.mx-menubar ul.mx-menubar-list li.mx-menubar-item a{flex-direction:column;padding:8px 8px 6px 8px;line-height:normal;font-size:11px}.bottom-nav-text-icons.mx-menubar ul.mx-menubar-list li.mx-menubar-item a .glyphicon{display:block;margin:0 0 5px 0;font-size:18px}.bottom-nav-text-icons.mx-menubar ul.mx-menubar-list li.mx-menubar-item a img{display:block;height:18px;margin:0 0 5px 0}.mx-radiobuttons.inline .mx-radiogroup{display:flex;flex-direction:row}.mx-radiobuttons.inline .mx-radiogroup .radio{margin:0 20px 0 0}.mx-radiobuttons .radio:last-child{margin-bottom:0}.radio{display:flex !important;align-items:center;margin-top:0}input[type='radio']{position:relative !important;width:16px;height:16px;margin:0;cursor:pointer;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;-webkit-user-select:none;user-select:none;appearance:none;-moz-appearance:none;-webkit-appearance:none}input[type='radio']::-ms-check{color:#D7D7D7;border-color:#D7D7D7;background-color:#fff}input[type='radio']:focus::-ms-check,input[type='radio']:checked::-ms-check{color:#0595DB;border-color:#0595DB;background-color:#fff}input[type='radio']:before,input[type='radio']:after{position:absolute;display:block;transition:all 0.3s ease-in-out;border-radius:50%}input[type='radio']:before{width:100%;height:100%;content:'';border:1px solid #D7D7D7;background-color:transparent}input[type='radio']:after{top:50%;left:50%;width:50%;height:50%;transform:translate(-50%, -50%);pointer-events:none;background-color:#0595DB}input[type='radio']:not(:checked):after{transform:translate(-50%, -50%) scale(0);opacity:0}input[type='radio']:not(:disabled):not(:checked):hover:after{background-color:#D7D7D7}input[type='radio']:checked:after,input[type='radio']:not(:disabled):not(:checked):hover:after{content:'';transform:translate(-50%, -50%) scale(1);opacity:1}input[type='radio']:checked:before{border-color:#0595DB;background-color:#fff}input[type='radio']:disabled:before{background-color:#eee}input[type='radio']:checked:disabled:before{border-color:rgba(5,149,219,0.4)}input[type='radio']:checked:disabled:after{background-color:rgba(5,149,219,0.4)}input[type='radio']+label{margin-left:8px}.mx-tabcontainer .mx-tabcontainer-tabs{margin-bottom:20px;border-color:#D7D7D7}.mx-tabcontainer .mx-tabcontainer-tabs>li>a{margin-right:0;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;color:#888;font-weight:normal}.mx-tabcontainer .mx-tabcontainer-tabs>li>a:hover,.mx-tabcontainer .mx-tabcontainer-tabs>li>a:focus{background-color:#e4e4e4}.mx-tabcontainer .mx-tabcontainer-tabs>li.active>a,.mx-tabcontainer .mx-tabcontainer-tabs>li.active>a:hover,.mx-tabcontainer .mx-tabcontainer-tabs>li.active>a:focus{color:#555;border:1px solid #D7D7D7;border-bottom-color:transparent;background-color:#fff}.tab-mobile.mx-tabcontainer>.mx-tabcontainer-tabs{margin:0;text-align:center;border-style:none;background-color:#0595DB}.tab-mobile.mx-tabcontainer>.mx-tabcontainer-tabs li{display:table-cell;float:none;width:1%;margin:0;text-align:center;border-style:none;border-radius:0}.tab-mobile.mx-tabcontainer>.mx-tabcontainer-tabs li a{padding:15px;text-transform:uppercase;color:#FFFFFF;border-width:0 1px 0 0;border-style:solid;border-color:rgba(255,255,255,0.3);border-radius:0;font-size:12px;font-weight:normal}.tab-mobile.mx-tabcontainer>.mx-tabcontainer-tabs li a:hover,.tab-mobile.mx-tabcontainer>.mx-tabcontainer-tabs li a:focus{background-color:inherit}.tab-mobile.mx-tabcontainer>.mx-tabcontainer-tabs li:last-child a{border-right:none}.tab-mobile.mx-tabcontainer>.mx-tabcontainer-tabs li.active>a,.tab-mobile.mx-tabcontainer>.mx-tabcontainer-tabs li.active>a:hover,.tab-mobile.mx-tabcontainer>.mx-tabcontainer-tabs li.active>a:focus{color:#FFFFFF;border-style:none;border-radius:0;background-color:#0477af}.mx-tabcontainer-badge{margin-left:8px;border-radius:12px;background-color:#0595DB;color:#fff;font-size:12px;font-weight:bold;line-height:1;padding:3px 7px}.tab-pills.mx-tabcontainer>.mx-tabcontainer-tabs{border:0}.tab-pills.mx-tabcontainer>.mx-tabcontainer-tabs>li>a{margin-right:2px;color:#888;border:1px solid #D7D7D7;border-radius:4px}.tab-pills.mx-tabcontainer>.mx-tabcontainer-tabs>li>a:hover,.tab-pills.mx-tabcontainer>.mx-tabcontainer-tabs>li>a:focus{background-color:#e4e4e4}.tab-pills.mx-tabcontainer>.mx-tabcontainer-tabs>li.active>a,.tab-pills.mx-tabcontainer>.mx-tabcontainer-tabs>li.active>a:hover,.tab-pills.mx-tabcontainer>.mx-tabcontainer-tabs>li.active>a:focus{color:#FFFFFF;border-color:#0595DB;background-color:#0595DB}.tab-lined.mx-tabcontainer>.mx-tabcontainer-tabs{border-width:3px}.tab-lined.mx-tabcontainer>.mx-tabcontainer-tabs li{margin-right:30px;margin-bottom:-3px}.tab-lined.mx-tabcontainer>.mx-tabcontainer-tabs li>a{padding:10px 0;color:#888;border:0;border-style:solid;border-color:transparent;border-bottom-width:3px;border-radius:0}.tab-lined.mx-tabcontainer>.mx-tabcontainer-tabs li>a:hover,.tab-lined.mx-tabcontainer>.mx-tabcontainer-tabs li>a:focus{color:#888;border:0;border-color:transparent;background:transparent}.tab-lined.mx-tabcontainer>.mx-tabcontainer-tabs li.active>a,.tab-lined.mx-tabcontainer>.mx-tabcontainer-tabs li.active>a:hover,.tab-lined.mx-tabcontainer>.mx-tabcontainer-tabs li.active>a:focus{color:#0595DB;border:0;border-bottom:3px solid #0595DB;background-color:transparent}.tab-justified.mx-tabcontainer>.mx-tabcontainer-tabs{width:100%;border-bottom:0}.tab-justified.mx-tabcontainer>.mx-tabcontainer-tabs>li{display:table-cell;float:none;width:1%;margin:0}@media (max-width: 767px){.tab-justified.mx-tabcontainer>.mx-tabcontainer-tabs>li{display:block;width:100%}}.tab-justified.mx-tabcontainer>.mx-tabcontainer-tabs>li>a{text-align:center;border-bottom:1px solid #D7D7D7}.tab-justified.mx-tabcontainer>.mx-tabcontainer-tabs>li.active>a{border-bottom-color:transparent;border-radius:4px}@media (max-width: 767px){.tab-justified.mx-tabcontainer>.mx-tabcontainer-tabs>li.active>a{border-bottom-color:#D7D7D7}}.tab-bordered.mx-tabcontainer>.mx-tabcontainer-tabs{margin:0}.tab-bordered.mx-tabcontainer>.mx-tabcontainer-content{padding:10px;border-width:0 1px 1px 1px;border-style:solid;border-color:#D7D7D7;background-color:#FFFFFF}.tab-wizard.mx-tabcontainer>.mx-tabcontainer-tabs{position:relative;display:flex;justify-content:space-between;border-style:none}.tab-wizard.mx-tabcontainer>.mx-tabcontainer-tabs::before{position:absolute;top:16px;display:block;width:100%;height:1px;content:"";background-color:#D7D7D7}.tab-wizard.mx-tabcontainer>.mx-tabcontainer-tabs>li{position:relative;float:none;width:100%;text-align:center}.tab-wizard.mx-tabcontainer>.mx-tabcontainer-tabs>li>a{width:33px;height:33px;margin:auto;padding:0;text-align:center;color:#ddd;border:1px solid #D7D7D7;border-radius:100%;background-color:#FFFFFF;font-size:18px;font-weight:bold;line-height:33px}.tab-wizard.mx-tabcontainer>.mx-tabcontainer-tabs>li.active>a,.tab-wizard.mx-tabcontainer>.mx-tabcontainer-tabs>li.active>a:hover,.tab-wizard.mx-tabcontainer>.mx-tabcontainer-tabs>li.active>a:focus{color:#FFFFFF;border-color:#0595DB;background-color:#0595DB}th{font-weight:bold}html body .mx-page table.mx-table th.nopadding,html body .mx-page table.mx-table td.nopadding{padding:0}table.mx-table>tbody>tr>th{padding:8px 8px 8px 8px}table.mx-table>tbody>tr>th s *{color:#666;font-weight:bold;font-weight:600}table.mx-table>tbody>tr>th>label{padding-top:7px;padding-bottom:6px}table.mx-table>tbody>tr>td{padding:8px 8px 8px 8px}table.mx-table>tbody>tr>td>div>label,table.mx-table>tbody>tr>td .mx-referenceselector-input-wrapper label{padding-top:7px;padding-bottom:6px}.mx-templategrid table.mx-table>tbody>tr>th,.mx-templategrid table.mx-table>tbody>tr>td{padding:8px 8px 8px 8px}.mx-list table.mx-table>tbody>tr>th,.mx-list table.mx-table>tbody>tr>td{padding:8px 8px 8px 8px}table.table-lined.mx-table>tbody>tr>td{border-width:1px 0;border-style:solid;border-color:#D7D7D7}table.table-bordered.mx-table>tbody>tr>th,table.table-bordered.mx-table>tbody>tr>td{border-width:1px;border-style:solid;border-color:#D7D7D7}table.table-compact.mx-table>tbody>tr>th,table.table-compact.mx-table>tbody>tr>td{padding-top:2px;padding-bottom:2px}table.table-sideless.mx-table>tbody>tr>td,table.table-sideless.mx-table>tbody>tr>th{padding-right:0}table.table-sideless.mx-table>tbody>tr>th:first-child,table.table-sideless.mx-table>tbody>tr>td:first-child{padding-left:0}table.table-spaceless.mx-table>tbody>tr>th,table.table-spaceless.mx-table>tbody>tr>td{padding:0}table.table-vertical.mx-table>tbody>tr>th{padding-bottom:0}table.table-vertical.mx-table>tbody>tr>th>label{padding:0}table.table-vertical.mx-table>tbody>tr>th>div>label{padding:0}table.table-align-vertical-middle.mx-table>tbody>tr>th,table.table-align-vertical-middle.mx-table>tbody>tr>td{vertical-align:middle}table.table-label-compact.mx-table>tbody>tr>th>label,table.table-label-compact.mx-table>tbody>tr>td>label{margin:0;padding:0}table.table-label-compact.mx-table>tbody>tr>th>div>label,table.table-label-compact.mx-table>tbody>tr>th .mx-referenceselector-input-wrapper label,table.table-label-compact.mx-table>tbody>tr>td>div>label,table.table-label-compact.mx-table>tbody>tr>td .mx-referenceselector-input-wrapper label{margin:0;padding:0}table.table-row-s.mx-table>tbody>tr>th,table.table-row-s.mx-table>tbody>tr>td{height:55px}table.table-row-m.mx-table>tbody>tr>th,table.table-row-m.mx-table>tbody>tr>td{height:70px}table.table-row-l.mx-table>tbody>tr>th,table.table-row-l.mx-table>tbody>tr>td{height:120px}table.table-fixed{table-layout:fixed}.mx-templategrid .mx-templategrid-content-wrapper{table-layout:fixed}.mx-templategrid .mx-templategrid-item{padding:15px 15px 15px 15px;cursor:default;background-color:#fff}.mx-templategrid .mx-templategrid-item:hover{background-color:transparent}.mx-templategrid .mx-templategrid-item.selected{background-color:#f3f3f3 !important}.mx-templategrid .mx-layoutgrid{padding-top:0 !important;padding-bottom:0 !important}.templategrid-selectable.mx-templategrid .mx-templategrid-item{cursor:pointer}.templategrid-lined.mx-templategrid .mx-grid-content{border-top-width:2px;border-top-style:solid;border-top-color:#D7D7D7}.templategrid-lined.mx-templategrid .mx-templategrid-item{border-top:1px solid #D7D7D7;border-right:none;border-bottom:1px solid #D7D7D7;border-left:none}.templategrid-striped.mx-templategrid .mx-templategrid-row:nth-child(odd) .mx-templategrid-item{background-color:#F9F9F9}.templategrid-stylingless.mx-templategrid .mx-templategrid-item{padding:0;cursor:default;border:0;background-color:transparent}.templategrid-stylingless.mx-templategrid .mx-templategrid-item:hover{background-color:transparent}.templategrid-stylingless.mx-templategrid .mx-templategrid-item.selected{background-color:transparent !important}.templategrid-stylingless.mx-templategrid .mx-templategrid-item.selected:hover{background-color:transparent !important}.templategrid-transparent.mx-templategrid .mx-templategrid-item{border:0;background-color:transparent}.templategrid-hover.mx-templategrid .mx-templategrid-item:hover{background-color:#f7f7f7 !important}.templategrid-hover.mx-templategrid .mx-templategrid-item.selected{background-color:#f3f3f3 !important}.templategrid-hover.mx-templategrid .mx-templategrid-item.selected:hover{background-color:#ebebeb !important}.templategrid-lg.mx-templategrid .mx-templategrid-item{padding:30px 30px 30px 30px}.templategrid-sm.mx-templategrid .mx-templategrid-item{padding:7.5px 7.5px 7.5px 7.5px}.mx-templategrid[class*="tg-col"]{overflow:hidden}.mx-templategrid[class*="tg-col"] .mx-templategrid-content-wrapper{display:block}.mx-templategrid[class*="tg-col"] .mx-templategrid-row{display:block;margin-right:-15px;margin-left:-15px}.mx-templategrid[class*="tg-col"] .mx-templategrid-row::before,.mx-templategrid[class*="tg-col"] .mx-templategrid-row::after{display:table;clear:both;content:" "}.mx-templategrid[class*="tg-col"] .mx-templategrid-item{position:relative;display:block;float:left;min-height:1px;padding-right:15px;padding-left:15px;border:0}@media (max-width: 992px){.mx-templategrid[class*="tg-col"] .mx-templategrid-item{width:100% !important}}.mx-templategrid[class*="tg-col"] .mx-templategrid-item .mx-dataview{overflow:hidden}.mx-templategrid[class*="tg-col"].tg-col-xs-12 .mx-templategrid-item{width:100% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-11 .mx-templategrid-item{width:91.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-10 .mx-templategrid-item{width:83.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-9 .mx-templategrid-item{width:75% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-8 .mx-templategrid-item{width:66.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-7 .mx-templategrid-item{width:58.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-6 .mx-templategrid-item{width:50% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-5 .mx-templategrid-item{width:41.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-4 .mx-templategrid-item{width:33.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-3 .mx-templategrid-item{width:25% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-2 .mx-templategrid-item{width:16.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-xs-1 .mx-templategrid-item{width:8.33333333% !important}@media (min-width: 768px){.mx-templategrid[class*="tg-col"].tg-col-sm-12 .mx-templategrid-item{width:100% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-11 .mx-templategrid-item{width:91.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-10 .mx-templategrid-item{width:83.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-9 .mx-templategrid-item{width:75% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-8 .mx-templategrid-item{width:66.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-7 .mx-templategrid-item{width:58.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-6 .mx-templategrid-item{width:50% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-5 .mx-templategrid-item{width:41.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-4 .mx-templategrid-item{width:33.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-3 .mx-templategrid-item{width:25% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-2 .mx-templategrid-item{width:16.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-sm-1 .mx-templategrid-item{width:8.33333333% !important}}@media (min-width: 992px){.mx-templategrid[class*="tg-col"].tg-col-md-12 .mx-templategrid-item{width:100% !important}.mx-templategrid[class*="tg-col"].tg-col-md-11 .mx-templategrid-item{width:91.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-md-10 .mx-templategrid-item{width:83.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-md-9 .mx-templategrid-item{width:75% !important}.mx-templategrid[class*="tg-col"].tg-col-md-8 .mx-templategrid-item{width:66.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-md-7 .mx-templategrid-item{width:58.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-md-6 .mx-templategrid-item{width:50% !important}.mx-templategrid[class*="tg-col"].tg-col-md-5 .mx-templategrid-item{width:41.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-md-4 .mx-templategrid-item{width:33.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-md-3 .mx-templategrid-item{width:25% !important}.mx-templategrid[class*="tg-col"].tg-col-md-2 .mx-templategrid-item{width:16.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-md-1 .mx-templategrid-item{width:8.33333333% !important}}@media (min-width: 1200px){.mx-templategrid[class*="tg-col"].tg-col-lg-12 .mx-templategrid-item{width:100% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-11 .mx-templategrid-item{width:91.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-10 .mx-templategrid-item{width:83.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-9 .mx-templategrid-item{width:75% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-8 .mx-templategrid-item{width:66.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-7 .mx-templategrid-item{width:58.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-6 .mx-templategrid-item{width:50% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-5 .mx-templategrid-item{width:41.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-4 .mx-templategrid-item{width:33.33333333% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-3 .mx-templategrid-item{width:25% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-2 .mx-templategrid-item{width:16.66666667% !important}.mx-templategrid[class*="tg-col"].tg-col-lg-1 .mx-templategrid-item{width:8.33333333% !important}}p{line-height:1.78571}label{padding-top:0}.mx-title{margin:15px 0 30px 0;color:#17347B;font-size:31px;font-weight:normal}h1,.h1,.h1>*{font-size:31px}h2,.h2,.h2>*{font-size:26px}h3,.h3,.h3>*{font-size:24px}h4,.h4,.h4>*{font-size:18px}h5,.h5,.h5>*{font-size:14px}h6,.h6,.h6>*{font-size:12px}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin:15px 0 30px 0;color:#17347B;font-weight:normal;line-height:1.3}.text-small{font-size:12px !important}.text-large{font-size:16px !important}.text-light,.text-light>*,.text-light label{font-weight:100 !important}.text-normal,.text-normal>*,.text-normal label{font-weight:normal !important}.text-semibold,.text-semibold>*,.text-semibold label{font-weight:600 !important}.text-bold,.text-bold>*,.text-bold label{font-weight:bold !important}.text-default,.text-default:hover{color:#555 !important}.text-primary,.text-primary:hover{color:#0595DB !important}.text-info,.text-info:hover{color:#48B0F7 !important}.text-success,.text-success:hover{color:#76CA02 !important}.text-warning,.text-warning:hover{color:#F99B1D !important}.text-danger,.text-danger:hover{color:#ED1C24 !important}.text-header{color:#17347B !important}.text-detail{color:#888 !important}.text-white{color:#ffffff}.text-left{text-align:left !important}.text-center{text-align:center !important}.text-right{text-align:right !important}.text-justify{text-align:justify !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-break{word-break:break-all !important;word-break:break-word !important;-ms-word-break:break-all !important;-webkit-hyphens:auto !important;-moz-hyphens:auto !important;hyphens:auto !important}.text-nowrap{white-space:nowrap !important}.text-nowrap{overflow:hidden !important;max-width:100% !important;white-space:nowrap !important;text-overflow:ellipsis !important}.mx-layoutgrid{width:100%;margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.row::before,.row::after{content:normal}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm,.col-sm-auto,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md,.col-md-auto,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg,.col-lg-auto,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.333333%;max-width:8.333333%}.col-2{flex:0 0 16.666667%;max-width:16.666667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.333333%;max-width:33.333333%}.col-5{flex:0 0 41.666667%;max-width:41.666667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.333333%;max-width:58.333333%}.col-8{flex:0 0 66.666667%;max-width:66.666667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.333333%;max-width:83.333333%}.col-11{flex:0 0 91.666667%;max-width:91.666667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1,.col-offset-1{margin-left:8.333333%}.offset-2,.col-offset-2{margin-left:16.666667%}.offset-3,.col-offset-3{margin-left:25%}.offset-4,.col-offset-4{margin-left:33.333333%}.offset-5,.col-offset-5{margin-left:41.666667%}.offset-6,.col-offset-6{margin-left:50%}.offset-7,.col-offset-7{margin-left:58.333333%}.offset-8,.col-offset-8{margin-left:66.666667%}.offset-9,.col-offset-9{margin-left:75%}.offset-10,.col-offset-10{margin-left:83.333333%}.offset-11,.col-offset-11{margin-left:91.666667%}@media (min-width: 576px){.mx-layoutgrid-fixed{max-width:540px}}@media (min-width: 768px){.mx-layoutgrid-fixed{max-width:720px}}@media (min-width: 992px){.mx-layoutgrid-fixed{max-width:960px}}@media (min-width: 1200px){.mx-layoutgrid-fixed{max-width:1140px}}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0,.col-sm-offset-0{margin-left:0}.offset-sm-1,.col-sm-offset-1{margin-left:8.333333%}.offset-sm-2,.col-sm-offset-2{margin-left:16.666667%}.offset-sm-3,.col-sm-offset-3{margin-left:25%}.offset-sm-4,.col-sm-offset-4{margin-left:33.333333%}.offset-sm-5,.col-sm-offset-5{margin-left:41.666667%}.offset-sm-6,.col-sm-offset-6{margin-left:50%}.offset-sm-7,.col-sm-offset-7{margin-left:58.333333%}.offset-sm-8,.col-sm-offset-8{margin-left:66.666667%}.offset-sm-9,.col-sm-offset-9{margin-left:75%}.offset-sm-10,.col-sm-offset-10{margin-left:83.333333%}.offset-sm-11,.col-sm-offset-11{margin-left:91.666667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0,.col-md-offset-0{margin-left:0}.offset-md-1,.col-md-offset-1{margin-left:8.333333%}.offset-md-2,.col-md-offset-2{margin-left:16.666667%}.offset-md-3,.col-md-offset-3{margin-left:25%}.offset-md-4,.col-md-offset-4{margin-left:33.333333%}.offset-md-5,.col-md-offset-5{margin-left:41.666667%}.offset-md-6,.col-md-offset-6{margin-left:50%}.offset-md-7,.col-md-offset-7{margin-left:58.333333%}.offset-md-8,.col-md-offset-8{margin-left:66.666667%}.offset-md-9,.col-md-offset-9{margin-left:75%}.offset-md-10,.col-md-offset-10{margin-left:83.333333%}.offset-md-11,.col-md-offset-11{margin-left:91.666667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0,.col-lg-offset-0{margin-left:0}.offset-lg-1,.col-lg-offset-1{margin-left:8.333333%}.offset-lg-2,.col-lg-offset-2{margin-left:16.666667%}.offset-lg-3,.col-lg-offset-3{margin-left:25%}.offset-lg-4,.col-lg-offset-4{margin-left:33.333333%}.offset-lg-5,.col-lg-offset-5{margin-left:41.666667%}.offset-lg-6,.col-lg-offset-6{margin-left:50%}.offset-lg-7,.col-lg-offset-7{margin-left:58.333333%}.offset-lg-8,.col-lg-offset-8{margin-left:66.666667%}.offset-lg-9,.col-lg-offset-9{margin-left:75%}.offset-lg-10,.col-lg-offset-10{margin-left:83.333333%}.offset-lg-11,.col-lg-offset-11{margin-left:91.666667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0,.col-xl-offset-0{margin-left:0}.offset-xl-1,.col-xl-offset-1{margin-left:8.333333%}.offset-xl-2,.col-xl-offset-2{margin-left:16.666667%}.offset-xl-3,.col-xl-offset-3{margin-left:25%}.offset-xl-4,.col-xl-offset-4{margin-left:33.333333%}.offset-xl-5,.col-xl-offset-5{margin-left:41.666667%}.offset-xl-6,.col-xl-offset-6{margin-left:50%}.offset-xl-7,.col-xl-offset-7{margin-left:58.333333%}.offset-xl-8,.col-xl-offset-8{margin-left:66.666667%}.offset-xl-9,.col-xl-offset-9{margin-left:75%}.offset-xl-10,.col-xl-offset-10{margin-left:83.333333%}.offset-xl-11,.col-xl-offset-11{margin-left:91.666667%}}.mx-progress{color:#555;background:#F5F8FD}.mx-progress .mx-progress-message{color:#555}.mx-progress .mx-progress-indicator{position:relative;overflow:hidden;width:100%;max-width:100%;height:2px;margin:auto;padding:0;border-radius:0;background:#eee}.mx-progress .mx-progress-indicator:before,.mx-progress .mx-progress-indicator:after{position:absolute;top:0;left:0;display:block;width:50%;height:2px;content:"";transform:translate3d(-100%, 0, 0);background:#0595DB}.mx-progress .mx-progress-indicator::before{animation:loader 2s infinite}.mx-progress .mx-progress-indicator::after{animation:loader 2s -2s infinite}@keyframes loader{0%{transform:translate3d(-100%, 0, 0)}100%{transform:translate3d(200%, 0, 0)}}.widget-timeline-date-header{display:inline-block;width:110px;overflow-wrap:break-word;padding:8px;text-align:center;border:1px solid #D7D7D7;border-radius:30px}.widget-timeline-events-wrapper{display:flex;flex:1;margin-left:55px;padding-top:35px}.widget-timeline-events-wrapper ul{padding:0;list-style:none;margin-bottom:0}.widget-timeline-title{color:#17347B;font-weight:600;margin:0 0 10px 0}.widget-timeline-description{color:#888}.widget-timeline-event{position:relative;margin-left:9px;padding-left:30px;padding-bottom:20px}.widget-timeline-event:not(:last-of-type){border-left:1px solid #D7D7D7}.widget-timeline-event.clickable{cursor:pointer;transition:background 0.8s}.widget-timeline-event.clickable:hover .widget-timeline-title{color:#dadcde}.widget-timeline-icon-wrapper{position:absolute;top:0;left:0;display:flex;justify-content:center;align-items:center;width:18px;height:18px;transform:translateX(-50%)}.widget-timeline-icon-wrapper .glyphicon{font-size:18px}.widget-timeline-icon-wrapper img{max-width:18px;max-height:18px}.widget-timeline-content-wrapper .widget-timeline-date-time-wrapper{margin-right:15px}.widget-timeline-content-wrapper .widget-timeline-info-wrapper{flex-direction:column}.widget-timeline-icon-circle{width:18px;height:18px;border-radius:50%;background-color:#0595DB}.widget-timeline-no-divider{padding-bottom:0;padding-top:0;margin-left:0}.widget-timeline-flex-container{display:flex}.d-none{display:none !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.show,.d-block{display:block !important}.table,.d-table{display:table !important}.table-row,.d-table-row{display:table-row !important}.table-cell,.d-table-cell{display:table-cell !important}.hide,.hidden{display:none !important;visibility:hidden !important}.invisible{visibility:hidden !important}.display-ie8-only:not([attr*=""]){display:none !important;padding:0 !important}.list-nostyle ul{margin:0 !important;padding:0 !important}.list-nostyle ul li{list-style-type:none !important}.nowrap,.nowrap *{overflow:hidden !important;white-space:nowrap !important;text-overflow:ellipsis !important}.table{display:table !important}.table-row{display:table-row !important}.table-cell{display:table-cell !important}.pull-left{float:left !important}.pull-right{float:right !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.row-left{display:flex !important;align-items:center !important;flex-flow:row !important;justify-content:flex-start !important}.row-center{display:flex !important;align-items:center !important;flex-flow:row !important;justify-content:center !important}.row-right{display:flex !important;align-items:center !important;flex-flow:row !important;justify-content:flex-end !important}.col-left{display:flex !important;align-items:flex-start !important;flex-direction:column !important;justify-content:center !important}.col-center{display:flex !important;align-items:center !important;flex-direction:column !important;justify-content:center !important}.col-right{display:flex !important;align-items:flex-end !important;flex-direction:column !important;justify-content:center !important}@media (max-width: 767px){.hide-phone{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hide-tablet{display:none !important}}@media (min-width: 992px){.hide-desktop{display:none !important}}@media (max-width: 575px){.hide-xs,.hidden-xs,.d-xs-none{display:none !important}.d-xs-flex{display:flex !important}.d-xs-inline-flex{display:inline-flex !important}.d-xs-inline{display:inline !important}.d-xs-inline-block{display:inline-block !important}.d-xs-block{display:block !important}.d-xs-table{display:table !important}.d-xs-table-row{display:table-row !important}.d-xs-table-cell{display:table-cell !important}}@media (min-width: 576px) and (max-width: 767px){.hide-sm,.hidden-sm,.d-sm-none{display:none !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.hide-md,.hidden-md,.d-md-none{display:none !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1200px){.hide-lg,.hidden-lg,.d-lg-none{display:none !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}}@media (min-width: 1200px){.hide-xl,.hidden-xl,.d-xl-none{display:none !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}}.mx-tooltip .dijitTooltipContainer{border-width:1px;border-color:#888;border-radius:4px;background:#ffffff;box-shadow:0 6px 12px rgba(0,0,0,0.175)}.mx-tooltip .dijitTooltipContainer .mx-tooltip-content{padding:10px}.mx-tooltip .dijitTooltipContainer .form-group{margin-bottom:5px}.mx-tooltip .dijitTooltipConnector{width:0;height:0;margin-left:-10px;border-width:10px 10px 10px 0;border-style:solid;border-color:transparent;border-right-color:#888}.dijitBorderContainer{padding:5px;background-color:#fcfcfc}.dijitBorderContainer .dijitSplitterV,.dijitBorderContainer .dijitGutterV{width:5px;border:0;background:#fcfcfc}.dijitBorderContainer .dijitSplitterH,.dijitBorderContainer .dijitGutterH{height:5px;border:0;background:#fcfcfc}.dijitBorderContainer .dijitSplitterH .dijitSplitterThumb{top:2px;width:19px;height:1px;background:#b0b0b0}.dijitBorderContainer .dijitSplitterV .dijitSplitterThumb{left:2px;width:1px;height:19px;background:#b0b0b0}.dijitBorderContainer .dijitSplitContainer-child,.dijitBorderContainer .dijitBorderContainer-child{border:1px solid #cccccc}.dijitBorderContainer .dijitBorderContainer-dijitTabContainerTop,.dijitBorderContainer .dijitBorderContainer-dijitTabContainerBottom,.dijitBorderContainer .dijitBorderContainer-dijitTabContainerLeft,.dijitBorderContainer .dijitBorderContainer-dijitTabContainerRight{border:none}.dijitBorderContainer .dijitBorderContainer-dijitBorderContainer{padding:0;border:none}.dijitBorderContainer .dijitSplitterActive{margin:0;opacity:0.6;background-color:#aaaaaa;background-image:none;font-size:1px;filter:alpha(opacity=60)}.dijitBorderContainer .dijitSplitContainer-dijitContentPane,.dijitBorderContainer .dijitBorderContainer-dijitContentPane{padding:5px;background-color:#ffffff}.dijitMenuPopup{margin-top:10px}.dijitMenuPopup .dijitMenu{display:block;width:200px !important;margin-top:0;padding:12px 10px;border-radius:3px;background:#252C36}.dijitMenuPopup .dijitMenu:after{position:absolute;bottom:100%;left:20px;width:0;height:0;margin-left:-10px;content:' ';pointer-events:none;border:medium solid transparent;border-width:10px;border-bottom-color:#252C36}.dijitMenuPopup .dijitMenu .dijitMenuItem{background:transparent}.dijitMenuPopup .dijitMenu .dijitMenuItem .dijitMenuItemLabel{display:block;overflow:hidden;width:180px !important;padding:10px;text-overflow:ellipsis;color:#ffffff;border-radius:3px}.dijitMenuPopup .dijitMenu .dijitMenuItem.dijitMenuItemHover{background:none}.dijitMenuPopup .dijitMenu .dijitMenuItem.dijitMenuItemHover .dijitMenuItemLabel{background:#0595DB}.dijitMenuPopup .dijitMenu .tg_newlabelmenuitem .dijitMenuItemLabel{font-weight:bold}.dijitMenuPopup .dijitMenu .dijitMenuSeparator td{padding:0;border-bottom-width:3px}.dijitMenuPopup .dijitMenu .dijitMenuSeparator .dijitMenuSeparatorIconCell>div{margin:0}div.widget-progress-bar .progress-bar-default{background-color:#ddd}div.widget-progress-bar .progress-bar-primary{background-color:#0595DB}div.widget-progress-bar .progress-bar-success{background-color:#76CA02}div.widget-progress-bar .progress-bar-info{background-color:#48B0F7}div.widget-progress-bar .progress-bar-warning{background-color:#F99B1D}div.widget-progress-bar .progress-bar-danger{background-color:#ED1C24}div.widget-progress-bar .progress-bar-inverse{background-color:#252C36}div.widget-progress-bar-alert.widget-progress-bar-text-contrast .progress-bar{color:#8e1116}div.widget-progress-bar-text-contrast .progress-bar{color:#555}path.widget-progress-circle-path{stroke:#0595DB}.widget-progress-circle-primary path.widget-progress-circle-path{stroke:#0595DB}.widget-progress-circle-primary .progressbar-text{color:#0595DB !important}.widget-progress-circle-info path.widget-progress-circle-path{stroke:#48B0F7}.widget-progress-circle-info .progressbar-text{color:#48B0F7 !important}.widget-progress-circle-success path.widget-progress-circle-path{stroke:#76CA02}.widget-progress-circle-success .progressbar-text{color:#76CA02 !important}.widget-progress-circle-warning path.widget-progress-circle-path{stroke:#F99B1D}.widget-progress-circle-warning .progressbar-text{color:#F99B1D !important}.widget-progress-circle-danger path.widget-progress-circle-path{stroke:#ED1C24}.widget-progress-circle-danger .progressbar-text{color:#ED1C24 !important}.widget-progress-circle-inverse path.widget-progress-circle-path{stroke:#252C36}.widget-progress-circle-inverse .progressbar-text{color:#252C36 !important}div.widget-range-slider .rc-slider-handle,div.widget-range-slider .rc-slider-dot-active{border-color:#ddd}div.widget-range-slider .rc-slider-handle:active,div.widget-range-slider .rc-slider-dot-active:active{border-color:#ddd;box-shadow:none}div.widget-range-slider .rc-slider-handle:hover,div.widget-range-slider .rc-slider-dot-active:hover{border-color:#ddd}div.widget-range-slider.has-error .rc-slider-track,div.widget-range-slider.has-error .rc-slider-rail{background-color:#ED1C24}div.widget-range-slider-primary .rc-slider-track{background-color:#0595DB}div.widget-range-slider-info .rc-slider-track{background-color:#48B0F7}div.widget-range-slider-success .rc-slider-track{background-color:#76CA02}div.widget-range-slider-warning .rc-slider-track{background-color:#F99B1D}div.widget-range-slider-danger .rc-slider-track{background-color:#ED1C24}div.widget-range-slider-inverse .rc-slider-track{background-color:#252C36}.rc-slider-tooltip{z-index:999}div.widget-slider .rc-slider-handle,div.widget-slider .rc-slider-dot-active{border-color:#ddd}div.widget-slider .rc-slider-handle:active,div.widget-slider .rc-slider-dot-active:active{border-color:#ddd}div.widget-slider .rc-slider-handle:hover,div.widget-slider .rc-slider-dot-active:hover{border-color:#ddd}div.widget-slider.has-error .rc-slider-track,div.widget-slider.has-error .rc-slider-rail{background-color:#ED1C24}div.widget-slider-primary .rc-slider-track{background-color:#0595DB}div.widget-slider-info .rc-slider-track{background-color:#48B0F7}div.widget-slider-success .rc-slider-track{background-color:#76CA02}div.widget-slider-warning .rc-slider-track{background-color:#F99B1D}div.widget-slider-danger .rc-slider-track{background-color:#ED1C24}div.widget-slider-inverse .rc-slider-track{background-color:#252C36}span.widget-star-rating-full-default{color:#ddd}span.widget-star-rating-full-primary{color:#0595DB}span.widget-star-rating-full-success{color:#76CA02}span.widget-star-rating-full-info{color:#48B0F7}span.widget-star-rating-full-warning{color:#F99B1D}span.widget-star-rating-full-danger{color:#ED1C24}span.widget-star-rating-full-inverse{color:#252C36}.widget-switch-btn-wrapper:focus{outline:1px solid #0595DB}div.widget-switch.iOS .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-default{border-color:#64bd63;background-color:#64bd63;box-shadow:#64bd63 0 0 0 16px inset}div.widget-switch.iOS .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-success{border-color:#76CA02;background-color:#76CA02;box-shadow:#76CA02 0 0 0 16px inset}div.widget-switch.iOS .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-info{border-color:#48B0F7;background-color:#48B0F7;box-shadow:#48B0F7 0 0 0 16px inset}div.widget-switch.iOS .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-primary{border-color:#0595DB;background-color:#0595DB;box-shadow:#0595DB 0 0 0 16px inset}div.widget-switch.iOS .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-warning{border-color:#F99B1D;background-color:#F99B1D;box-shadow:#F99B1D 0 0 0 16px inset}div.widget-switch.iOS .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-danger{border-color:#ED1C24;background-color:#ED1C24;box-shadow:#ED1C24 0 0 0 16px inset}div.widget-switch.iOS .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-inverse{border-color:#252C36;background-color:#252C36;box-shadow:#252C36 0 0 0 16px inset}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-default{background-color:#92cec7}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-default .widget-switch-btn{background:#6FBEB5}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-success{background-color:#94fd03}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-success .widget-switch-btn{background:#76CA02}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-info{background-color:#79c5f9}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-info .widget-switch-btn{background:#48B0F7}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-primary{background-color:#19b0fa}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-primary .widget-switch-btn{background:#0595DB}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-warning{background-color:#fab14f}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-warning .widget-switch-btn{background:#F99B1D}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-danger{background-color:#f14b52}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-danger .widget-switch-btn{background:#ED1C24}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-inverse{background-color:#3a4554}div.widget-switch.android .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-inverse .widget-switch-btn{background:#252C36}div.widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-default{border-color:#64bd63;background-color:#64bd63;box-shadow:#64bd63 0 0 0 16px inset}div.widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-success{border-color:#76CA02;background-color:#76CA02;box-shadow:#76CA02 0 0 0 16px inset}div.widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-info{border-color:#48B0F7;background-color:#48B0F7;box-shadow:#48B0F7 0 0 0 16px inset}div.widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-primary{border-color:#0595DB;background-color:#0595DB;box-shadow:#0595DB 0 0 0 16px inset}div.widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-warning{border-color:#F99B1D;background-color:#F99B1D;box-shadow:#F99B1D 0 0 0 16px inset}div.widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-danger{border-color:#ED1C24;background-color:#ED1C24;box-shadow:#ED1C24 0 0 0 16px inset}div.widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-inverse{border-color:#252C36;background-color:#252C36;box-shadow:#252C36 0 0 0 16px inset}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-default{background-color:#92cec7}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-default .widget-switch-btn{background:#6FBEB5}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-success{background-color:#94fd03}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-success .widget-switch-btn{background:#76CA02}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-info{background-color:#79c5f9}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-info .widget-switch-btn{background:#48B0F7}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-primary{background-color:#19b0fa}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-primary .widget-switch-btn{background:#0595DB}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-warning{background-color:#fab14f}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-warning .widget-switch-btn{background:#F99B1D}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-danger{background-color:#f14b52}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-danger .widget-switch-btn{background:#ED1C24}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-inverse{background-color:#3a4554}html div.dj_android .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-inverse .widget-switch-btn{background:#252C36}html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-default{border-color:#64bd63;background-color:#64bd63;box-shadow:#64bd63 0 0 0 16px inset}html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-success{border-color:#76CA02;background-color:#76CA02;box-shadow:#76CA02 0 0 0 16px inset}html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-info{border-color:#48B0F7;background-color:#48B0F7;box-shadow:#48B0F7 0 0 0 16px inset}html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-primary{border-color:#0595DB;background-color:#0595DB;box-shadow:#0595DB 0 0 0 16px inset}html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-warning{border-color:#F99B1D;background-color:#F99B1D;box-shadow:#F99B1D 0 0 0 16px inset}html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-danger{border-color:#ED1C24;background-color:#ED1C24;box-shadow:#ED1C24 0 0 0 16px inset}html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-switch-btn-wrapper-inverse{border-color:#252C36;background-color:#252C36;box-shadow:#252C36 0 0 0 16px inset}.breadcrumb{margin:0;padding:0;border-radius:0;background-color:transparent;font-size:14px}.breadcrumb-item{display:inline-block;margin:0}.breadcrumb-item:last-child{color:#555}.breadcrumb-item:last-child a{text-decoration:none}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:10px;padding-left:10px;content:"/";color:#888}.breadcrumb-large{font-size:24px}.breadcrumb-underline{padding-bottom:15px;border-bottom:1px solid #D7D7D7}.card{padding:30px;border:1px solid #D7D7D7;border-radius:4px;background-color:#FFFFFF}.card-title{margin-top:0}.cardaction .card-image .glyphicon{font-size:58px}.cardmetrics .card-title{margin-bottom:0}.cardmetrics .card-image{width:100px;height:auto}.cardmetrics .card-image.btn{width:100px;height:100px;padding:0;cursor:default;pointer-events:none;font-size:40px}.cardmetrics .card-counter{margin:0;font-size:64px}.cardinfo .card-text{margin-bottom:30px}.textwithicon{overflow:hidden;max-width:100%;margin-bottom:15px;text-overflow:ellipsis}.textwithicon .textwithicon-icon,.textwithicon .textwithicon-text{display:inline-block;vertical-align:middle}.textwithicon .textwithicon-icon{margin-right:15px;padding:0;color:#0595DB;border:0;background:transparent;font-size:23px}.socialprofiles .socialprofiles-title{display:block;margin-bottom:10px;font-weight:bold}.socialprofiles .socialprofiles-button{width:24px;height:24px;margin-right:15px;padding:0;border-radius:24px}.socialprofiles .socialprofiles-button .glyphicon{margin:0}.cardtabs{padding:0}.cardtabs-tabs{margin:0}.cardtabs-tabs ul.mx-tabcontainer-tabs{display:flex;margin:0;background-color:#f7f7f7}.cardtabs-tabs ul.mx-tabcontainer-tabs li{flex:1 1 auto;text-align:center}.cardtabs-tabs ul.mx-tabcontainer-tabs li a,.cardtabs-tabs ul.mx-tabcontainer-tabs li a:hover,.cardtabs-tabs ul.mx-tabcontainer-tabs li a:focus{border-top-width:0;border-right-width:1px;border-left-width:0}.cardtabs-tabs ul.mx-tabcontainer-tabs li:first-child a{border-radius:4px 0 0 0}.cardtabs-tabs ul.mx-tabcontainer-tabs li:last-child a{border-radius:0 4px 0 0}@media (max-width: 767px){.cardtabs-tabs .mx-tabcontainer-pane{padding:15px}}@media (min-width: 768px){.cardtabs-tabs .mx-tabcontainer-pane{padding:30px}}@media (min-width: 992px){.cardtabs-tabs .mx-tabcontainer-pane{padding:30px}}.cardproduct,.cardproduct2,.cardproduct3{padding:0}.cardproduct-header{position:relative;overflow:hidden;height:200px}.cardproduct-header .card-image{position:absolute;top:0;left:0;width:100%;height:auto}.cardproduct-overlay{position:absolute;bottom:0;left:0;width:100%;padding:20px 30px;background:rgba(0,0,0,0.6)}.cardproduct-overlay-category,.cardproduct-overlay-title{margin:0;color:#FFFFFF}.cardproduct-footer .col{padding:20px 30px}.cardproduct-footer .col .widget-star-rating-font{font-size:20px}.cardproduct-name{margin:0}.cardproduct-btn{display:flex;align-items:center;height:100%;padding:30px;border-left:1px solid #D7D7D7}.cardproduct2 .cardproduct-header::after{position:absolute;bottom:0;left:0;display:block;width:100%;padding:20px 30px;content:"";background:rgba(0,0,0,0.6);background:-moz-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(250,250,250,0) 2%, rgba(0,0,0,0.99) 99%, #000 100%);background:-webkit-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(250,250,250,0) 2%, rgba(0,0,0,0.99) 99%, #000 100%);background:linear-gradient(to bottom, rgba(255,255,255,0) 0%, rgba(250,250,250,0) 2%, rgba(0,0,0,0.99) 99%, #000 100%)}.cardproduct3 .cardproduct-header{height:320px}.cardproduct3 .cardproduct-header img{width:100%;height:100%;object-fit:cover}.cardproduct3 .cardproduct-overlay{min-height:100px;padding:30px;background:-moz-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(250,250,250,0) 8%, rgba(0,0,0,0.99) 121%, #000 100%);background:-webkit-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(250,250,250,0) 8%, rgba(0,0,0,0.99) 121%, #000 100%);background:linear-gradient(to bottom, rgba(255,255,255,0) 0%, rgba(250,250,250,0) 8%, rgba(0,0,0,0.99) 121%, #000 100%);font-size:14px}.cardstatus{padding:20px}.cardstatus .card-linkicon{font-size:30px}.cardstatus .cardstatus-status{margin-bottom:5px}.cardprogress-state{width:80px;height:80px;padding:0;cursor:default;pointer-events:none;border-radius:100%;font-size:28px}.cardhighlight{border-top:4px solid #0595DB}.cardchat{overflow:hidden;padding:0}.cardchat .chat{height:400px}@media screen and (max-width: 991px){.widget-charts:not([height]),.widget-charts-line:not([height]){padding-bottom:80% !important}}@media screen and (max-width: 1199px){.cardprogress .cardprogress-state{width:60px;height:60px;font-size:24px}}.chat{display:flex;flex-direction:column;height:100%;background-color:#F5F8FD}.chat-content{display:flex;overflow:auto;flex:1;flex-direction:column;justify-content:flex-end}.chat-content .chat-list{position:relative;overflow:auto}.chat-content .chat-list ul{display:flex;flex-direction:column-reverse;margin-bottom:15px}.chat-content .chat-list li{padding:15px 30px;animation:fadeIn 0.2s;background-color:transparent;animation-fill-mode:both}.chat-content .chat-list li,.chat-content .chat-list li:last-child{border:0}.chat-content .chat-list .mx-listview-loadMore{position:absolute;top:0;right:0;left:0;display:block;width:50%;margin:15px auto;color:#FFFFFF;background-color:#0595DB;box-shadow:0 2px 20px 0 rgba(0,0,0,0.05)}.chat-message{display:flex}.chat-avatar{margin:0 20px 0 0;border-radius:50%}.chat-message-content{display:inline-flex;flex-direction:column}.chat-message-balloon{position:relative;display:flex;flex-direction:column;padding:10px 15px;border-radius:5px;background-color:#fff}.chat-message-balloon::after{position:absolute;top:10px;right:100%;width:0;height:0;content:'';border:10px solid transparent;border-top:0;border-right-color:#fff;border-left:0}.chat-message-time{padding-top:2px}.chat-message-time .form-control-static,.chat-message-time .form-group div[class*='textBox']>.control-label,.form-group .chat-message-time div[class*='textBox']>.control-label,.chat-message-time .form-group div[class*='textArea']>.control-label,.form-group .chat-message-time div[class*='textArea']>.control-label,.chat-message-time .form-group div[class*='datePicker']>.control-label,.form-group .chat-message-time div[class*='datePicker']>.control-label{border:0}.chat-footer{z-index:1;padding:15px;background-color:#fff;box-shadow:0 2px 20px 0 rgba(0,0,0,0.05)}.chat-input{display:flex}.chat-input .chat-textbox{flex:1;margin-right:30px;margin-bottom:0}.chat-input .chat-textbox .form-control{border:0}.chat-message-self{justify-content:flex-end}.chat-message-self .chat-avatar{margin:0 0 0 20px}.chat-message-self .chat-message-balloon{background-color:#cdeaf8}.chat-message-self .chat-message-balloon::after{left:100%;border:10px solid transparent;border-top:0;border-right:0;border-left-color:#cdeaf8}.chat-message-self .chat-message-time{text-align:right}.controlgroup .btn,.controlgroup .btn-group{margin-right:5px;margin-bottom:5px}.controlgroup .btn:last-child,.controlgroup .btn-group:last-child{margin-right:0}.controlgroup .btn .btn,.controlgroup .btn-group .btn{margin-right:0;margin-bottom:0}.controlgroup .btn-group .btn+.btn{margin-left:-1px}.fullpageblock{position:relative;height:100%;min-height:100%}.fullpageblock .fullheight{height:100% !important}.fullpageblock .fullheight>.mx-dataview-content{height:inherit !important}.fullpageblock .fullpage-overlay{position:absolute;z-index:10;bottom:0;left:0;width:100%}.pageheader{border-bottom:1px solid #D7D7D7;background:#F5F8FD}.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .pageheader{background:transparent}@media (max-width: 767px){.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .pageheader{margin-bottom:15px}}@media (min-width: 768px){.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .pageheader{margin-bottom:30px}}@media (min-width: 992px){.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .pageheader{margin-bottom:30px}}@media (max-width: 767px){.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .pageheader{padding-bottom:15px}}@media (min-width: 768px){.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .pageheader{padding-bottom:30px}}@media (min-width: 992px){.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .pageheader{padding-bottom:30px}}.pageheader-type{margin:0}.pageheader-title{margin:0}.pageheader-subtitle{margin:0}.pageheaderwithsearch .pageheader-title{margin-bottom:1em}.heroheader{border-bottom:1px solid #D7D7D7;background:#F5F8FD}.heroheader-title{margin:0 0 10px 0}.heroheader-subtitle{margin:0;padding:0 15px}.heroheader-subtitle::before{display:block;max-width:330px;height:1px;margin:auto auto 10px auto;content:"";background-color:#e1e1e1}.heroheader1{background-image:linear-gradient(152deg, #0CC7F0 0%, #087ECC 51%, #077AC9 55%, #0659B9 78%)}.heroheader1 .heroheader-title{margin-bottom:10px;color:#FFFFFF}.heroheader1 .heroheader-subtitle{padding:0;color:#FFFFFF}.heroheader1 .heroheader-subtitle::before{display:none}.heroheadermap{padding:0 !important}.heroheadermap-controls{padding:30px;background:#F5F8FD}.heroheaderproduct{position:relative;overflow:hidden;height:300px;background-color:#000000}.heroheaderproduct .heroheaderproduct-backgroundimage{position:absolute;z-index:0;top:0;width:100%;opacity:0.7;filter:blur(5px)}.heroheaderproduct .heroheaderproduct-overlay{position:absolute;z-index:1;top:50%;left:50%;transform:translate(-50%, -50%)}.heroheaderexpense .heroheaderexpense-title{font-size:72px}.heroheaderexpense .heroheaderexpense-type{align-items:center}.heroheaderexpense .heroheaderexpense-type::before{flex-grow:1;height:1px;margin-right:10px;content:"";background-color:#D2D2D2}.formblock-title{margin-bottom:15px;padding-bottom:15px;border-bottom:1px solid #D7D7D7}.masterdetail .masterdetail-master .controlgroup{margin-bottom:15px}@media (max-width: 992px) and (max-width: 767px){.masterdetail .masterdetail-master{margin-bottom:15px}}@media (max-width: 992px) and (min-width: 768px){.masterdetail .masterdetail-master{margin-bottom:30px}}@media (max-width: 992px) and (min-width: 992px){.masterdetail .masterdetail-master{margin-bottom:30px}}@media (min-width: 992px){.masterdetail .masterdetail-master{border-right:1px solid #D7D7D7}.masterdetail .masterdetail-master .mx-listview-searchbar{margin:15px}.masterdetail .masterdetail-master .controlgroup{padding:15px;border-bottom:1px solid #D7D7D7}}@media (min-width: 992px) and (max-width: 767px){.masterdetail .masterdetail-detail{padding:15px 15px 15px 15px}}@media (min-width: 992px) and (min-width: 768px){.masterdetail .masterdetail-detail{padding:30px 30px 30px 30px}}@media (min-width: 992px) and (min-width: 992px){.masterdetail .masterdetail-detail{padding:30px 30px 30px 30px}}@media (max-width: 767px){.masterdetailvertical .masterdetail-master{margin-bottom:15px}}@media (min-width: 768px){.masterdetailvertical .masterdetail-master{margin-bottom:30px}}@media (min-width: 992px){.masterdetailvertical .masterdetail-master{margin-bottom:30px}}@media (max-width: 767px){.masterdetailvertical .masterdetail-detail{padding-top:15px}}@media (min-width: 768px){.masterdetailvertical .masterdetail-detail{padding-top:30px}}@media (min-width: 992px){.masterdetailvertical .masterdetail-detail{padding-top:30px}}.wizard{display:flex;justify-content:space-between}.wizard .wizard-step{position:relative;width:100%;text-align:center}.wizard .wizard-step::before{position:absolute;z-index:-1;top:30px;display:block;width:100%;height:2px;content:"";background-color:#D7D7D7}.wizard .wizard-step .wizard-step-number{width:60px;height:60px;border-color:#D7D7D7;border-radius:50%;background-color:#FFFFFF;font-size:20px}.wizard .wizard-step .wizard-step-text{display:block;margin-top:15px}.wizard .wizard-step-active .wizard-step-number{color:#FFFFFF;border-color:#0595DB;background-color:#0595DB}.wizard .wizard-step-active .wizard-step-text{color:#0595DB}.wizard .wizard-step-visited .wizard-step-number{color:#FFFFFF;border-color:#76CA02;background-color:#76CA02}.wizardprogress{display:flex;justify-content:space-between}.wizardprogress .wizard-step-text{width:100%}.wizardprogress .wizard-step{position:relative;width:100%;height:50px;margin-left:-25px;padding-left:25px;border:1px solid #D7D7D7;background:#FFFFFF}.wizardprogress .wizard-step a{display:block;overflow:hidden;width:100%;height:100%;padding:14px;white-space:nowrap;text-decoration:none;text-overflow:ellipsis;color:#555}.wizardprogress .wizard-step::before,.wizardprogress .wizard-step::after{position:absolute;z-index:1;left:100%;margin-left:-25px;content:" ";border-style:solid;border-color:transparent}.wizardprogress .wizard-step::after{top:1px;border-width:24px;border-left-color:#FFFFFF}.wizardprogress .wizard-step::before{top:0;border-width:25px;border-left-color:#D7D7D7}.wizardprogress .wizard-step:first-child{margin-left:0;padding-left:0;border-radius:5px 0 0 5px}.wizardprogress .wizard-step:last-child{border-radius:0 5px 5px 0}.wizardprogress .wizard-step:last-child::before,.wizardprogress .wizard-step:last-child::after{display:none}.wizardprogress .wizard-step-active{background:#0595DB}.wizardprogress .wizard-step-active a{text-decoration:none;color:#FFFFFF}.wizardprogress .wizard-step-active::after{border-left-color:#0595DB}.wizardprogress .wizard-step-visited a{color:#0595DB}.timeline .timeline-header{display:inline-block;width:110px;padding:8px;text-align:center;border:1px solid #D7D7D7;border-radius:30px}.timeline-itemwrapper.mx-listview{margin-bottom:0;margin-left:55px;padding:30px 0;border-left:1px solid #D7D7D7}.timeline-itemwrapper.mx-listview>ul>li{position:relative;padding-left:30px}.timeline-itemwrapper.mx-listview>ul>li::before{position:absolute;top:5px;left:-5px;display:block;width:10px;height:10px;content:'';border-radius:50%;background-color:#0595DB}.timeline-itemwrapper.mx-listview li+li{margin-top:30px}.timeline2 .timeline-itemwrapper.mx-listview>ul>li{padding-left:15px}.layout-atlas .toggle-btn>.glyphicon{margin:0}.layout-atlas .region-sidebar{background-color:#252C36}.layout-atlas .region-sidebar .mx-navigationtree .navbar-inner>ul>li>a{padding:0 15px}.layout-atlas .region-sidebar .mx-navigationtree .navbar-inner>ul>li>a .glyphicon{margin-right:10px}.layout-atlas .region-sidebar .toggle-btn{border-color:transparent;border-radius:0;background:transparent}.layout-atlas .region-topbar{position:relative;z-index:1;min-height:60px;border-bottom:1px solid #D7D7D7;background-color:#fff;box-shadow:0 1px 4px 0 rgba(0,0,0,0.14)}.layout-atlas .region-topbar::before{z-index:1;display:block;width:100%;height:4px;content:"";background-color:#0595DB}.layout-atlas .region-topbar .topbar-content{display:flex;align-items:center;min-height:60px}.layout-atlas .region-topbar .toggle-btn{margin-right:15px;padding:5px}.layout-atlas .region-topbar .navbar-brand{display:inline-block;float:none;height:auto;padding:0;line-height:inherit}.layout-atlas .region-topbar .navbar-brand img{display:inline-block;width:auto;height:30px}.layout-atlas .region-topbar .navbar-brand a{margin-left:5px;color:#D7D7D7;font-size:20px}.layout-atlas .region-topbar .navbar-brand a:hover,.layout-atlas .region-topbar .navbar-brand a:focus{text-decoration:none}.layout-atlas .region-topbar .mx-navbar{display:inline-block;margin-left:15px;vertical-align:middle;background:transparent}.layout-atlas .region-topbar .mx-navbar>.mx-navbar-item>a{margin-top:5px;padding:0 20px}.layout-atlas-phone .region-topbar{min-height:45px;border-style:none;background-color:#fff}.layout-atlas-phone .region-topbar::before{display:none}@media (min-width: 768px){.layout-atlas-responsive-default .mx-scrollcontainer:not(.mx-scrollcontainer-open)>.region-sidebar{width:60px !important}.layout-atlas-responsive-default .mx-scrollcontainer:not(.mx-scrollcontainer-open)>.region-sidebar .mx-scrollcontainer-wrapper>.mx-navigationtree ul li.mx-navigationtree-has-items:hover a{background-color:#1d222a}.layout-atlas-responsive-default .mx-scrollcontainer:not(.mx-scrollcontainer-open)>.region-sidebar .mx-scrollcontainer-wrapper>.mx-navigationtree ul li.mx-navigationtree-has-items:hover ul{position:absolute;z-index:100;top:0;bottom:0;left:60px;display:block;overflow-y:auto;min-width:200px;padding-top:10px}.layout-atlas-responsive-default .mx-scrollcontainer:not(.mx-scrollcontainer-open)>.region-sidebar .mx-scrollcontainer-wrapper>.mx-navigationtree ul li.mx-navigationtree-collapsed ul,.layout-atlas-responsive-default .mx-scrollcontainer:not(.mx-scrollcontainer-open)>.region-sidebar .mx-scrollcontainer-wrapper>.mx-navigationtree ul li.mx-navigationtree-has-items ul{display:none}}.layout-atlas-responsive-default .mx-scrollcontainer-slide.mx-scrollcontainer-open>.region-sidebar{width:60px !important}@media (max-width: 767px){.layout-atlas-responsive-default .mx-scrollcontainer-open:not(.mx-scrollcontainer-slide){width:1100px}.layout-atlas-responsive-default .mx-scrollcontainer-slide .toggle-btn{display:inline-block !important}}.layout-atlas-responsive-default .region-sidebar .toggle-btn{width:60px;height:60px;border-color:transparent;border-radius:0;background:transparent}.layout-atlas-responsive-default .region-sidebar .mx-scrollcontainer-wrapper>.mx-navigationtree .navbar-inner>ul>li>a{height:60px}.layout-atlas-responsive-default .region-sidebar .mx-scrollcontainer-wrapper>.mx-navigationtree .navbar-inner>ul>li>a .glyphicon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;margin-left:-5px;padding:10px;border-radius:3px}.layout-atlas-responsive-default .region-sidebar .mx-scrollcontainer-wrapper>.mx-navigationtree .navbar-inner>ul>li>a.active .glyphicon{background:#0595DB}.layout-atlas-responsive-topbar .mx-scrollcontainer-slide:not(.mx-scrollcontainer-open)>.region-sidebar,.layout-atlas-responsive-topbar .mx-scrollcontainer-push:not(.mx-scrollcontainer-open)>.region-sidebar{visibility:hidden}.layout-atlas-responsive-default .region-topbar .toggle-btn,.layout-atlas-responsive-topbar .region-topbar .toggle-btn{display:none}@media (max-width: 767px){.layout-atlas-responsive-default .region-topbar .toggle-btn,.layout-atlas-responsive-topbar .region-topbar .toggle-btn{display:inline-block}}.layout-atlas-responsive-default .mx-scrollcontainer-slide:not(.mx-scrollcontainer-open)>.region-sidebar,.layout-atlas-responsive-topbar .mx-scrollcontainer-slide:not(.mx-scrollcontainer-open)>.region-sidebar{overflow:hidden}.layout-atlas-responsive-default .mx-scrollcontainer-slide.mx-scrollcontainer-open>.region-sidebar>.mx-scrollcontainer-wrapper,.layout-atlas-responsive-topbar .mx-scrollcontainer-slide.mx-scrollcontainer-open>.region-sidebar>.mx-scrollcontainer-wrapper{position:relative}.layout-atlas-responsive-default .mx-scrollcontainer-slide .region-sidebar>.mx-scrollcontainer-wrapper,.layout-atlas-responsive-topbar .mx-scrollcontainer-slide .region-sidebar>.mx-scrollcontainer-wrapper{z-index:2;background-color:inherit}.profile-tablet .mx-scrollcontainer:not(.mx-scrollcontainer-open)>.region-sidebar{overflow-y:hidden}.profile-tablet .mx-scrollcontainer:not(.mx-scrollcontainer-open)>.region-sidebar .mx-scrollcontainer-wrapper{overflow:visible} - -/*# sourceMappingURL=main.css.map */ diff --git a/theme_old/styles/web/css/main.css.map b/theme_old/styles/web/css/main.css.map deleted file mode 100644 index 2f6d31b..0000000 --- a/theme_old/styles/web/css/main.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"main.css","sources":["main.scss","core/_legacy/bootstrap/_bootstrap.scss","core/_legacy/bootstrap/_bootstrap-rtl.scss","core/_legacy/_mxui.scss","app/_custom-variables.scss","core/_variables.scss","core/base/mixins/_animations.scss","core/base/mixins/_spacing.scss","core/base/mixins/_layout-spacing.scss","core/base/mixins/_buttons.scss","core/base/mixins/_groupbox.scss","core/base/_animation.scss","core/base/_flex.scss","core/base/_spacing.scss","core/base/_reset.scss","core/base/_base.scss","core/base/_login.scss","core/widgets/_inputs.scss","core/widgets/_alerts.scss","core/helpers/_alerts.scss","core/helpers/_backgrounds.scss","core/widgets/_buttons.scss","core/helpers/_buttons.scss","core/widgets/_checkbox.scss","core/widgets/_grid.scss","core/widgets/_datagrids.scss","core/helpers/_datagrids.scss","core/widgets/_dataview.scss","core/widgets/_datepicker.scss","core/widgets/_header.scss","core/widgets/_glyphicons.scss","core/widgets/_groupbox.scss","core/helpers/_groupbox.scss","core/helpers/_images.scss","core/widgets/_labels.scss","core/helpers/_labels.scss","core/widgets/_listview.scss","core/helpers/_listview.scss","core/widgets/_modals.scss","core/widgets/_navigationbar.scss","core/helpers/_navigationbar.scss","core/widgets/_navigationlist.scss","core/widgets/_navigationtree.scss","core/helpers/_navigationtree.scss","core/widgets/_popupmenu.scss","core/widgets/_simplemenubar.scss","core/helpers/_simplemenubar.scss","core/widgets/_radiobuttons.scss","core/widgets/_tabcontainer.scss","core/helpers/_tabcontainer.scss","core/widgets/_tables.scss","core/helpers/_tables.scss","core/widgets/_templategrids.scss","core/helpers/_templategrids.scss","core/widgets/_typography.scss","core/helpers/_typography.scss","core/widgets/_layoutgrid.scss","core/widgets/_progress.scss","core/widgets/_timeline.scss","core/helpers/_helperclasses.scss","core/widgetscustom/_dijit-widgets.scss","core/widgetscustom/_progress-bar-theme.scss","core/widgetscustom/_progress-circle-theme.scss","core/widgetscustom/_range-slider-theme.scss","core/widgetscustom/_slider-theme.scss","core/widgetscustom/_star-rating-theme.scss","core/widgetscustom/_switchwidget.scss","ui_resources/atlas_ui_resources/buildingblocks/_breadcrumb.scss","ui_resources/atlas_ui_resources/buildingblocks/_card.scss","ui_resources/atlas_ui_resources/buildingblocks/_chat.scss","ui_resources/atlas_ui_resources/buildingblocks/_controlgroup.scss","ui_resources/atlas_ui_resources/buildingblocks/_pageblocks.scss","ui_resources/atlas_ui_resources/buildingblocks/_pageheader.scss","ui_resources/atlas_ui_resources/buildingblocks/_heroheader.scss","ui_resources/atlas_ui_resources/buildingblocks/_formblock.scss","ui_resources/atlas_ui_resources/buildingblocks/_master-detail.scss","ui_resources/atlas_ui_resources/buildingblocks/_userprofile.scss","ui_resources/atlas_ui_resources/buildingblocks/_wizard.scss","ui_resources/atlas_ui_resources/buildingblocks/_timeline.scss","ui_resources/atlas_ui_resources/layouts/_layout-atlas.scss","ui_resources/atlas_ui_resources/layouts/_layout-atlas-phone.scss","ui_resources/atlas_ui_resources/layouts/_layout-atlas-responsive.scss","ui_resources/atlas_ui_resources/layouts/_layout-atlas-tablet.scss","app/_custom.scss"],"sourcesContent":["// Utilities\n@import 'core/_legacy/bootstrap/bootstrap';\n@import 'core/_legacy/bootstrap/bootstrap-rtl';\n@import 'core/_legacy/mxui';\n\n// Custom variables\n@import 'app/custom-variables';\n\n//================================== CORE ==================================\\\\\n\n// Default variables\n@import 'core/variables';\n\n// Base\n@import 'core/base/mixins/animations';\n@import 'core/base/mixins/spacing';\n@import 'core/base/mixins/layout-spacing';\n@import 'core/base/mixins/buttons';\n@import 'core/base/mixins/groupbox';\n@import 'core/base/animation';\n@import 'core/base/flex';\n@import 'core/base/spacing';\n@import 'core/base/reset';\n@import 'core/base/base';\n@import 'core/base/login';\n\n// Widgets\n@import 'core/widgets/inputs';\n@import 'core/widgets/alerts';\n@import 'core/helpers/alerts';\n@import 'core/helpers/backgrounds';\n@import 'core/widgets/buttons';\n@import 'core/helpers/buttons';\n@import 'core/widgets/checkbox';\n@import 'core/widgets/grid';\n@import 'core/widgets/datagrids';\n@import 'core/helpers/datagrids';\n@import 'core/widgets/dataview';\n@import 'core/widgets/datepicker';\n@import 'core/widgets/header';\n@import 'core/widgets/glyphicons';\n@import 'core/widgets/groupbox';\n@import 'core/helpers/groupbox';\n@import 'core/helpers/images';\n@import 'core/widgets/labels';\n@import 'core/helpers/labels';\n@import 'core/widgets/listview';\n@import 'core/helpers/listview';\n@import 'core/widgets/modals';\n@import 'core/widgets/navigationbar';\n@import 'core/helpers/navigationbar';\n@import 'core/widgets/navigationlist';\n@import 'core/widgets/navigationtree';\n@import 'core/helpers/navigationtree';\n@import 'core/widgets/popupmenu';\n@import 'core/widgets/simplemenubar';\n@import 'core/helpers/simplemenubar';\n@import 'core/widgets/radiobuttons';\n@import 'core/widgets/tabcontainer';\n@import 'core/helpers/tabcontainer';\n@import 'core/widgets/tables';\n@import 'core/helpers/tables';\n@import 'core/widgets/templategrids';\n@import 'core/helpers/templategrids';\n@import 'core/widgets/typography';\n@import 'core/helpers/typography';\n@import 'core/widgets/layoutgrid';\n@import 'core/widgets/progress';\n@import 'core/widgets/timeline';\n@import 'core/helpers/helperclasses';\n\n// Custom widgets\n@import 'core/widgetscustom/dijit-widgets';\n@import 'core/widgetscustom/progress-bar-theme';\n@import 'core/widgetscustom/progress-circle-theme';\n@import 'core/widgetscustom/range-slider-theme';\n@import 'core/widgetscustom/slider-theme';\n@import 'core/widgetscustom/star-rating-theme';\n@import 'core/widgetscustom/switchwidget';\n\n//================================= CUSTOM =================================\\\\\n\n// Building blocks\n@import 'ui_resources/atlas_ui_resources/buildingblocks/breadcrumb';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/card';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/chat';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/controlgroup';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/pageblocks';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/pageheader';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/heroheader';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/formblock';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/master-detail';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/userprofile';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/wizard';\n@import 'ui_resources/atlas_ui_resources/buildingblocks/timeline';\n\n// Layouts\n@import 'ui_resources/atlas_ui_resources/layouts/layout-atlas';\n@import 'ui_resources/atlas_ui_resources/layouts/layout-atlas-phone';\n@import 'ui_resources/atlas_ui_resources/layouts/layout-atlas-responsive';\n@import 'ui_resources/atlas_ui_resources/layouts/layout-atlas-tablet';\n\n// Custom\n@import 'app/custom';\n","/*!\n * Bootstrap v3.3.4 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\nhtml {\n font-family: sans-serif;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n margin: 0.67em 0;\n font-size: 2em;\n}\nmark {\n color: #000;\n background: #ff0;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n height: 0;\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n margin: 0;\n font: inherit;\n color: inherit;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type='button'],\ninput[type='reset'],\ninput[type='submit'] {\n -webkit-appearance: button;\n cursor: pointer;\n}\n//button[disabled],\n//html input[disabled] {\n// cursor: default;\n//}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type='checkbox'],\ninput[type='radio'] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n padding: 0;\n}\ninput[type='number']::-webkit-inner-spin-button,\ninput[type='number']::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type='search'] {\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n -webkit-appearance: textfield;\n}\ninput[type='search']::-webkit-search-cancel-button,\ninput[type='search']::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n padding: 0.35em 0.625em 0.75em;\n margin: 0 2px;\n border: 1px solid #c0c0c0;\n}\nlegend {\n padding: 0;\n border: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-spacing: 0;\n border-collapse: collapse;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n color: #000 !important;\n text-shadow: none !important;\n background: transparent !important;\n -webkit-box-shadow: none !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: ' (' attr(href) ')';\n }\n abbr[title]:after {\n content: ' (' attr(title) ')';\n }\n a[href^='#']:after,\n a[href^='javascript:']:after {\n content: '';\n }\n pre,\n blockquote {\n border: 1px solid #999;\n\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n select {\n background: #fff !important;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('./fonts/glyphicons-halflings-regular.woff2') format('woff2'),\n url('./fonts/glyphicons-halflings-regular.woff') format('woff');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: '\\2a';\n}\n.glyphicon-plus:before {\n content: '\\2b';\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: '\\20ac';\n}\n.glyphicon-minus:before {\n content: '\\2212';\n}\n.glyphicon-cloud:before {\n content: '\\2601';\n}\n.glyphicon-envelope:before {\n content: '\\2709';\n}\n.glyphicon-pencil:before {\n content: '\\270f';\n}\n.glyphicon-glass:before {\n content: '\\e001';\n}\n.glyphicon-music:before {\n content: '\\e002';\n}\n.glyphicon-search:before {\n content: '\\e003';\n}\n.glyphicon-heart:before {\n content: '\\e005';\n}\n.glyphicon-star:before {\n content: '\\e006';\n}\n.glyphicon-star-empty:before {\n content: '\\e007';\n}\n.glyphicon-user:before {\n content: '\\e008';\n}\n.glyphicon-film:before {\n content: '\\e009';\n}\n.glyphicon-th-large:before {\n content: '\\e010';\n}\n.glyphicon-th:before {\n content: '\\e011';\n}\n.glyphicon-th-list:before {\n content: '\\e012';\n}\n.glyphicon-ok:before {\n content: '\\e013';\n}\n.glyphicon-remove:before {\n content: '\\e014';\n}\n.glyphicon-zoom-in:before {\n content: '\\e015';\n}\n.glyphicon-zoom-out:before {\n content: '\\e016';\n}\n.glyphicon-off:before {\n content: '\\e017';\n}\n.glyphicon-signal:before {\n content: '\\e018';\n}\n.glyphicon-cog:before {\n content: '\\e019';\n}\n.glyphicon-trash:before {\n content: '\\e020';\n}\n.glyphicon-home:before {\n content: '\\e021';\n}\n.glyphicon-file:before {\n content: '\\e022';\n}\n.glyphicon-time:before {\n content: '\\e023';\n}\n.glyphicon-road:before {\n content: '\\e024';\n}\n.glyphicon-download-alt:before {\n content: '\\e025';\n}\n.glyphicon-download:before {\n content: '\\e026';\n}\n.glyphicon-upload:before {\n content: '\\e027';\n}\n.glyphicon-inbox:before {\n content: '\\e028';\n}\n.glyphicon-play-circle:before {\n content: '\\e029';\n}\n.glyphicon-repeat:before {\n content: '\\e030';\n}\n.glyphicon-refresh:before {\n content: '\\e031';\n}\n.glyphicon-list-alt:before {\n content: '\\e032';\n}\n.glyphicon-lock:before {\n content: '\\e033';\n}\n.glyphicon-flag:before {\n content: '\\e034';\n}\n.glyphicon-headphones:before {\n content: '\\e035';\n}\n.glyphicon-volume-off:before {\n content: '\\e036';\n}\n.glyphicon-volume-down:before {\n content: '\\e037';\n}\n.glyphicon-volume-up:before {\n content: '\\e038';\n}\n.glyphicon-qrcode:before {\n content: '\\e039';\n}\n.glyphicon-barcode:before {\n content: '\\e040';\n}\n.glyphicon-tag:before {\n content: '\\e041';\n}\n.glyphicon-tags:before {\n content: '\\e042';\n}\n.glyphicon-book:before {\n content: '\\e043';\n}\n.glyphicon-bookmark:before {\n content: '\\e044';\n}\n.glyphicon-print:before {\n content: '\\e045';\n}\n.glyphicon-camera:before {\n content: '\\e046';\n}\n.glyphicon-font:before {\n content: '\\e047';\n}\n.glyphicon-bold:before {\n content: '\\e048';\n}\n.glyphicon-italic:before {\n content: '\\e049';\n}\n.glyphicon-text-height:before {\n content: '\\e050';\n}\n.glyphicon-text-width:before {\n content: '\\e051';\n}\n.glyphicon-align-left:before {\n content: '\\e052';\n}\n.glyphicon-align-center:before {\n content: '\\e053';\n}\n.glyphicon-align-right:before {\n content: '\\e054';\n}\n.glyphicon-align-justify:before {\n content: '\\e055';\n}\n.glyphicon-list:before {\n content: '\\e056';\n}\n.glyphicon-indent-left:before {\n content: '\\e057';\n}\n.glyphicon-indent-right:before {\n content: '\\e058';\n}\n.glyphicon-facetime-video:before {\n content: '\\e059';\n}\n.glyphicon-picture:before {\n content: '\\e060';\n}\n.glyphicon-map-marker:before {\n content: '\\e062';\n}\n.glyphicon-adjust:before {\n content: '\\e063';\n}\n.glyphicon-tint:before {\n content: '\\e064';\n}\n.glyphicon-edit:before {\n content: '\\e065';\n}\n.glyphicon-share:before {\n content: '\\e066';\n}\n.glyphicon-check:before {\n content: '\\e067';\n}\n.glyphicon-move:before {\n content: '\\e068';\n}\n.glyphicon-step-backward:before {\n content: '\\e069';\n}\n.glyphicon-fast-backward:before {\n content: '\\e070';\n}\n.glyphicon-backward:before {\n content: '\\e071';\n}\n.glyphicon-play:before {\n content: '\\e072';\n}\n.glyphicon-pause:before {\n content: '\\e073';\n}\n.glyphicon-stop:before {\n content: '\\e074';\n}\n.glyphicon-forward:before {\n content: '\\e075';\n}\n.glyphicon-fast-forward:before {\n content: '\\e076';\n}\n.glyphicon-step-forward:before {\n content: '\\e077';\n}\n.glyphicon-eject:before {\n content: '\\e078';\n}\n.glyphicon-chevron-left:before {\n content: '\\e079';\n}\n.glyphicon-chevron-right:before {\n content: '\\e080';\n}\n.glyphicon-plus-sign:before {\n content: '\\e081';\n}\n.glyphicon-minus-sign:before {\n content: '\\e082';\n}\n.glyphicon-remove-sign:before {\n content: '\\e083';\n}\n.glyphicon-ok-sign:before {\n content: '\\e084';\n}\n.glyphicon-question-sign:before {\n content: '\\e085';\n}\n.glyphicon-info-sign:before {\n content: '\\e086';\n}\n.glyphicon-screenshot:before {\n content: '\\e087';\n}\n.glyphicon-remove-circle:before {\n content: '\\e088';\n}\n.glyphicon-ok-circle:before {\n content: '\\e089';\n}\n.glyphicon-ban-circle:before {\n content: '\\e090';\n}\n.glyphicon-arrow-left:before {\n content: '\\e091';\n}\n.glyphicon-arrow-right:before {\n content: '\\e092';\n}\n.glyphicon-arrow-up:before {\n content: '\\e093';\n}\n.glyphicon-arrow-down:before {\n content: '\\e094';\n}\n.glyphicon-share-alt:before {\n content: '\\e095';\n}\n.glyphicon-resize-full:before {\n content: '\\e096';\n}\n.glyphicon-resize-small:before {\n content: '\\e097';\n}\n.glyphicon-exclamation-sign:before {\n content: '\\e101';\n}\n.glyphicon-gift:before {\n content: '\\e102';\n}\n.glyphicon-leaf:before {\n content: '\\e103';\n}\n.glyphicon-fire:before {\n content: '\\e104';\n}\n.glyphicon-eye-open:before {\n content: '\\e105';\n}\n.glyphicon-eye-close:before {\n content: '\\e106';\n}\n.glyphicon-warning-sign:before {\n content: '\\e107';\n}\n.glyphicon-plane:before {\n content: '\\e108';\n}\n.glyphicon-calendar:before {\n content: '\\e109';\n}\n.glyphicon-random:before {\n content: '\\e110';\n}\n.glyphicon-comment:before {\n content: '\\e111';\n}\n.glyphicon-magnet:before {\n content: '\\e112';\n}\n.glyphicon-chevron-up:before {\n content: '\\e113';\n}\n.glyphicon-chevron-down:before {\n content: '\\e114';\n}\n.glyphicon-retweet:before {\n content: '\\e115';\n}\n.glyphicon-shopping-cart:before {\n content: '\\e116';\n}\n.glyphicon-folder-close:before {\n content: '\\e117';\n}\n.glyphicon-folder-open:before {\n content: '\\e118';\n}\n.glyphicon-resize-vertical:before {\n content: '\\e119';\n}\n.glyphicon-resize-horizontal:before {\n content: '\\e120';\n}\n.glyphicon-hdd:before {\n content: '\\e121';\n}\n.glyphicon-bullhorn:before {\n content: '\\e122';\n}\n.glyphicon-bell:before {\n content: '\\e123';\n}\n.glyphicon-certificate:before {\n content: '\\e124';\n}\n.glyphicon-thumbs-up:before {\n content: '\\e125';\n}\n.glyphicon-thumbs-down:before {\n content: '\\e126';\n}\n.glyphicon-hand-right:before {\n content: '\\e127';\n}\n.glyphicon-hand-left:before {\n content: '\\e128';\n}\n.glyphicon-hand-up:before {\n content: '\\e129';\n}\n.glyphicon-hand-down:before {\n content: '\\e130';\n}\n.glyphicon-circle-arrow-right:before {\n content: '\\e131';\n}\n.glyphicon-circle-arrow-left:before {\n content: '\\e132';\n}\n.glyphicon-circle-arrow-up:before {\n content: '\\e133';\n}\n.glyphicon-circle-arrow-down:before {\n content: '\\e134';\n}\n.glyphicon-globe:before {\n content: '\\e135';\n}\n.glyphicon-wrench:before {\n content: '\\e136';\n}\n.glyphicon-tasks:before {\n content: '\\e137';\n}\n.glyphicon-filter:before {\n content: '\\e138';\n}\n.glyphicon-briefcase:before {\n content: '\\e139';\n}\n.glyphicon-fullscreen:before {\n content: '\\e140';\n}\n.glyphicon-dashboard:before {\n content: '\\e141';\n}\n.glyphicon-paperclip:before {\n content: '\\e142';\n}\n.glyphicon-heart-empty:before {\n content: '\\e143';\n}\n.glyphicon-link:before {\n content: '\\e144';\n}\n.glyphicon-phone:before {\n content: '\\e145';\n}\n.glyphicon-pushpin:before {\n content: '\\e146';\n}\n.glyphicon-usd:before {\n content: '\\e148';\n}\n.glyphicon-gbp:before {\n content: '\\e149';\n}\n.glyphicon-sort:before {\n content: '\\e150';\n}\n.glyphicon-sort-by-alphabet:before {\n content: '\\e151';\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: '\\e152';\n}\n.glyphicon-sort-by-order:before {\n content: '\\e153';\n}\n.glyphicon-sort-by-order-alt:before {\n content: '\\e154';\n}\n.glyphicon-sort-by-attributes:before {\n content: '\\e155';\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: '\\e156';\n}\n.glyphicon-unchecked:before {\n content: '\\e157';\n}\n.glyphicon-expand:before {\n content: '\\e158';\n}\n.glyphicon-collapse-down:before {\n content: '\\e159';\n}\n.glyphicon-collapse-up:before {\n content: '\\e160';\n}\n.glyphicon-log-in:before {\n content: '\\e161';\n}\n.glyphicon-flash:before {\n content: '\\e162';\n}\n.glyphicon-log-out:before {\n content: '\\e163';\n}\n.glyphicon-new-window:before {\n content: '\\e164';\n}\n.glyphicon-record:before {\n content: '\\e165';\n}\n.glyphicon-save:before {\n content: '\\e166';\n}\n.glyphicon-open:before {\n content: '\\e167';\n}\n.glyphicon-saved:before {\n content: '\\e168';\n}\n.glyphicon-import:before {\n content: '\\e169';\n}\n.glyphicon-export:before {\n content: '\\e170';\n}\n.glyphicon-send:before {\n content: '\\e171';\n}\n.glyphicon-floppy-disk:before {\n content: '\\e172';\n}\n.glyphicon-floppy-saved:before {\n content: '\\e173';\n}\n.glyphicon-floppy-remove:before {\n content: '\\e174';\n}\n.glyphicon-floppy-save:before {\n content: '\\e175';\n}\n.glyphicon-floppy-open:before {\n content: '\\e176';\n}\n.glyphicon-credit-card:before {\n content: '\\e177';\n}\n.glyphicon-transfer:before {\n content: '\\e178';\n}\n.glyphicon-cutlery:before {\n content: '\\e179';\n}\n.glyphicon-header:before {\n content: '\\e180';\n}\n.glyphicon-compressed:before {\n content: '\\e181';\n}\n.glyphicon-earphone:before {\n content: '\\e182';\n}\n.glyphicon-phone-alt:before {\n content: '\\e183';\n}\n.glyphicon-tower:before {\n content: '\\e184';\n}\n.glyphicon-stats:before {\n content: '\\e185';\n}\n.glyphicon-sd-video:before {\n content: '\\e186';\n}\n.glyphicon-hd-video:before {\n content: '\\e187';\n}\n.glyphicon-subtitles:before {\n content: '\\e188';\n}\n.glyphicon-sound-stereo:before {\n content: '\\e189';\n}\n.glyphicon-sound-dolby:before {\n content: '\\e190';\n}\n.glyphicon-sound-5-1:before {\n content: '\\e191';\n}\n.glyphicon-sound-6-1:before {\n content: '\\e192';\n}\n.glyphicon-sound-7-1:before {\n content: '\\e193';\n}\n.glyphicon-copyright-mark:before {\n content: '\\e194';\n}\n.glyphicon-registration-mark:before {\n content: '\\e195';\n}\n.glyphicon-cloud-download:before {\n content: '\\e197';\n}\n.glyphicon-cloud-upload:before {\n content: '\\e198';\n}\n.glyphicon-tree-conifer:before {\n content: '\\e199';\n}\n.glyphicon-tree-deciduous:before {\n content: '\\e200';\n}\n.glyphicon-cd:before {\n content: '\\e201';\n}\n.glyphicon-save-file:before {\n content: '\\e202';\n}\n.glyphicon-open-file:before {\n content: '\\e203';\n}\n.glyphicon-level-up:before {\n content: '\\e204';\n}\n.glyphicon-copy:before {\n content: '\\e205';\n}\n.glyphicon-paste:before {\n content: '\\e206';\n}\n.glyphicon-alert:before {\n content: '\\e209';\n}\n.glyphicon-equalizer:before {\n content: '\\e210';\n}\n.glyphicon-king:before {\n content: '\\e211';\n}\n.glyphicon-queen:before {\n content: '\\e212';\n}\n.glyphicon-pawn:before {\n content: '\\e213';\n}\n.glyphicon-bishop:before {\n content: '\\e214';\n}\n.glyphicon-knight:before {\n content: '\\e215';\n}\n.glyphicon-baby-formula:before {\n content: '\\e216';\n}\n.glyphicon-tent:before {\n content: '\\26fa';\n}\n.glyphicon-blackboard:before {\n content: '\\e218';\n}\n.glyphicon-bed:before {\n content: '\\e219';\n}\n.glyphicon-apple:before {\n content: '\\f8ff';\n}\n.glyphicon-erase:before {\n content: '\\e221';\n}\n.glyphicon-hourglass:before {\n content: '\\231b';\n}\n.glyphicon-lamp:before {\n content: '\\e223';\n}\n.glyphicon-duplicate:before {\n content: '\\e224';\n}\n.glyphicon-piggy-bank:before {\n content: '\\e225';\n}\n.glyphicon-scissors:before {\n content: '\\e226';\n}\n.glyphicon-bitcoin:before {\n content: '\\e227';\n}\n.glyphicon-btc:before {\n content: '\\e227';\n}\n.glyphicon-xbt:before {\n content: '\\e227';\n}\n.glyphicon-yen:before {\n content: '\\00a5';\n}\n.glyphicon-jpy:before {\n content: '\\00a5';\n}\n.glyphicon-ruble:before {\n content: '\\20bd';\n}\n.glyphicon-rub:before {\n content: '\\20bd';\n}\n.glyphicon-scale:before {\n content: '\\e230';\n}\n.glyphicon-ice-lolly:before {\n content: '\\e231';\n}\n.glyphicon-ice-lolly-tasted:before {\n content: '\\e232';\n}\n.glyphicon-education:before {\n content: '\\e233';\n}\n.glyphicon-option-horizontal:before {\n content: '\\e234';\n}\n.glyphicon-option-vertical:before {\n content: '\\e235';\n}\n.glyphicon-menu-hamburger:before {\n content: '\\e236';\n}\n.glyphicon-modal-window:before {\n content: '\\e237';\n}\n.glyphicon-oil:before {\n content: '\\e238';\n}\n.glyphicon-grain:before {\n content: '\\e239';\n}\n.glyphicon-sunglasses:before {\n content: '\\e240';\n}\n.glyphicon-text-size:before {\n content: '\\e241';\n}\n.glyphicon-text-color:before {\n content: '\\e242';\n}\n.glyphicon-text-background:before {\n content: '\\e243';\n}\n.glyphicon-object-align-top:before {\n content: '\\e244';\n}\n.glyphicon-object-align-bottom:before {\n content: '\\e245';\n}\n.glyphicon-object-align-horizontal:before {\n content: '\\e246';\n}\n.glyphicon-object-align-left:before {\n content: '\\e247';\n}\n.glyphicon-object-align-vertical:before {\n content: '\\e248';\n}\n.glyphicon-object-align-right:before {\n content: '\\e249';\n}\n.glyphicon-triangle-right:before {\n content: '\\e250';\n}\n.glyphicon-triangle-left:before {\n content: '\\e251';\n}\n.glyphicon-triangle-bottom:before {\n content: '\\e252';\n}\n.glyphicon-triangle-top:before {\n content: '\\e253';\n}\n.glyphicon-console:before {\n content: '\\e254';\n}\n.glyphicon-superscript:before {\n content: '\\e255';\n}\n.glyphicon-subscript:before {\n content: '\\e256';\n}\n.glyphicon-menu-left:before {\n content: '\\e257';\n}\n.glyphicon-menu-right:before {\n content: '\\e258';\n}\n.glyphicon-menu-down:before {\n content: '\\e259';\n}\n.glyphicon-menu-up:before {\n content: '\\e260';\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n display: inline-block;\n max-width: 100%;\n height: auto;\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role='button'] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n margin-left: -5px;\n list-style: none;\n}\n.list-inline > li {\n display: inline-block;\n padding-right: 5px;\n padding-left: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n overflow: hidden;\n clear: left;\n text-align: right;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n text-align: right;\n border-right: 5px solid #eee;\n border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n color: #333;\n word-break: break-all;\n word-wrap: break-word;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n.row {\n margin-right: -15px;\n margin-left: -15px;\n}\n//.col-xs-1,\n//.col-sm-1,\n//.col-md-1,\n//.col-lg-1,\n//.col-xs-2,\n//.col-sm-2,\n//.col-md-2,\n//.col-lg-2,\n//.col-xs-3,\n//.col-sm-3,\n//.col-md-3,\n//.col-lg-3,\n//.col-xs-4,\n//.col-sm-4,\n//.col-md-4,\n//.col-lg-4,\n//.col-xs-5,\n//.col-sm-5,\n//.col-md-5,\n//.col-lg-5,\n//.col-xs-6,\n//.col-sm-6,\n//.col-md-6,\n//.col-lg-6,\n//.col-xs-7,\n//.col-sm-7,\n//.col-md-7,\n//.col-lg-7,\n//.col-xs-8,\n//.col-sm-8,\n//.col-md-8,\n//.col-lg-8,\n//.col-xs-9,\n//.col-sm-9,\n//.col-md-9,\n//.col-lg-9,\n//.col-xs-10,\n//.col-sm-10,\n//.col-md-10,\n//.col-lg-10,\n//.col-xs-11,\n//.col-sm-11,\n//.col-md-11,\n//.col-lg-11,\n//.col-xs-12,\n//.col-sm-12,\n//.col-md-12,\n//.col-lg-12 {\n// position: relative;\n// min-height: 1px;\n// padding-right: 15px;\n// padding-left: 15px;\n//}\n//.col-xs-1,\n//.col-xs-2,\n//.col-xs-3,\n//.col-xs-4,\n//.col-xs-5,\n//.col-xs-6,\n//.col-xs-7,\n//.col-xs-8,\n//.col-xs-9,\n//.col-xs-10,\n//.col-xs-11,\n//.col-xs-12 {\n// float: left;\n//}\n//.col-xs-12 {\n// width: 100%;\n//}\n//.col-xs-11 {\n// width: 91.66666667%;\n//}\n//.col-xs-10 {\n// width: 83.33333333%;\n//}\n//.col-xs-9 {\n// width: 75%;\n//}\n//.col-xs-8 {\n// width: 66.66666667%;\n//}\n//.col-xs-7 {\n// width: 58.33333333%;\n//}\n//.col-xs-6 {\n// width: 50%;\n//}\n//.col-xs-5 {\n// width: 41.66666667%;\n//}\n//.col-xs-4 {\n// width: 33.33333333%;\n//}\n//.col-xs-3 {\n// width: 25%;\n//}\n//.col-xs-2 {\n// width: 16.66666667%;\n//}\n//.col-xs-1 {\n// width: 8.33333333%;\n//}\n//.col-xs-pull-12 {\n// right: 100%;\n//}\n//.col-xs-pull-11 {\n// right: 91.66666667%;\n//}\n//.col-xs-pull-10 {\n// right: 83.33333333%;\n//}\n//.col-xs-pull-9 {\n// right: 75%;\n//}\n//.col-xs-pull-8 {\n// right: 66.66666667%;\n//}\n//.col-xs-pull-7 {\n// right: 58.33333333%;\n//}\n//.col-xs-pull-6 {\n// right: 50%;\n//}\n//.col-xs-pull-5 {\n// right: 41.66666667%;\n//}\n//.col-xs-pull-4 {\n// right: 33.33333333%;\n//}\n//.col-xs-pull-3 {\n// right: 25%;\n//}\n//.col-xs-pull-2 {\n// right: 16.66666667%;\n//}\n//.col-xs-pull-1 {\n// right: 8.33333333%;\n//}\n//.col-xs-pull-0 {\n// right: auto;\n//}\n//.col-xs-push-12 {\n// left: 100%;\n//}\n//.col-xs-push-11 {\n// left: 91.66666667%;\n//}\n//.col-xs-push-10 {\n// left: 83.33333333%;\n//}\n//.col-xs-push-9 {\n// left: 75%;\n//}\n//.col-xs-push-8 {\n// left: 66.66666667%;\n//}\n//.col-xs-push-7 {\n// left: 58.33333333%;\n//}\n//.col-xs-push-6 {\n// left: 50%;\n//}\n//.col-xs-push-5 {\n// left: 41.66666667%;\n//}\n//.col-xs-push-4 {\n// left: 33.33333333%;\n//}\n//.col-xs-push-3 {\n// left: 25%;\n//}\n//.col-xs-push-2 {\n// left: 16.66666667%;\n//}\n//.col-xs-push-1 {\n// left: 8.33333333%;\n//}\n//.col-xs-push-0 {\n// left: auto;\n//}\n//.col-xs-offset-12 {\n// margin-left: 100%;\n//}\n//.col-xs-offset-11 {\n// margin-left: 91.66666667%;\n//}\n//.col-xs-offset-10 {\n// margin-left: 83.33333333%;\n//}\n//.col-xs-offset-9 {\n// margin-left: 75%;\n//}\n//.col-xs-offset-8 {\n// margin-left: 66.66666667%;\n//}\n//.col-xs-offset-7 {\n// margin-left: 58.33333333%;\n//}\n//.col-xs-offset-6 {\n// margin-left: 50%;\n//}\n//.col-xs-offset-5 {\n// margin-left: 41.66666667%;\n//}\n//.col-xs-offset-4 {\n// margin-left: 33.33333333%;\n//}\n//.col-xs-offset-3 {\n// margin-left: 25%;\n//}\n//.col-xs-offset-2 {\n// margin-left: 16.66666667%;\n//}\n//.col-xs-offset-1 {\n// margin-left: 8.33333333%;\n//}\n//.col-xs-offset-0 {\n// margin-left: 0;\n//}\n//@media (min-width: 768px) {\n// .col-sm-1,\n// .col-sm-2,\n// .col-sm-3,\n// .col-sm-4,\n// .col-sm-5,\n// .col-sm-6,\n// .col-sm-7,\n// .col-sm-8,\n// .col-sm-9,\n// .col-sm-10,\n// .col-sm-11,\n// .col-sm-12 {\n// float: left;\n// }\n// .col-sm-12 {\n// width: 100%;\n// }\n// .col-sm-11 {\n// width: 91.66666667%;\n// }\n// .col-sm-10 {\n// width: 83.33333333%;\n// }\n// .col-sm-9 {\n// width: 75%;\n// }\n// .col-sm-8 {\n// width: 66.66666667%;\n// }\n// .col-sm-7 {\n// width: 58.33333333%;\n// }\n// .col-sm-6 {\n// width: 50%;\n// }\n// .col-sm-5 {\n// width: 41.66666667%;\n// }\n// .col-sm-4 {\n// width: 33.33333333%;\n// }\n// .col-sm-3 {\n// width: 25%;\n// }\n// .col-sm-2 {\n// width: 16.66666667%;\n// }\n// .col-sm-1 {\n// width: 8.33333333%;\n// }\n// .col-sm-pull-12 {\n// right: 100%;\n// }\n// .col-sm-pull-11 {\n// right: 91.66666667%;\n// }\n// .col-sm-pull-10 {\n// right: 83.33333333%;\n// }\n// .col-sm-pull-9 {\n// right: 75%;\n// }\n// .col-sm-pull-8 {\n// right: 66.66666667%;\n// }\n// .col-sm-pull-7 {\n// right: 58.33333333%;\n// }\n// .col-sm-pull-6 {\n// right: 50%;\n// }\n// .col-sm-pull-5 {\n// right: 41.66666667%;\n// }\n// .col-sm-pull-4 {\n// right: 33.33333333%;\n// }\n// .col-sm-pull-3 {\n// right: 25%;\n// }\n// .col-sm-pull-2 {\n// right: 16.66666667%;\n// }\n// .col-sm-pull-1 {\n// right: 8.33333333%;\n// }\n// .col-sm-pull-0 {\n// right: auto;\n// }\n// .col-sm-push-12 {\n// left: 100%;\n// }\n// .col-sm-push-11 {\n// left: 91.66666667%;\n// }\n// .col-sm-push-10 {\n// left: 83.33333333%;\n// }\n// .col-sm-push-9 {\n// left: 75%;\n// }\n// .col-sm-push-8 {\n// left: 66.66666667%;\n// }\n// .col-sm-push-7 {\n// left: 58.33333333%;\n// }\n// .col-sm-push-6 {\n// left: 50%;\n// }\n// .col-sm-push-5 {\n// left: 41.66666667%;\n// }\n// .col-sm-push-4 {\n// left: 33.33333333%;\n// }\n// .col-sm-push-3 {\n// left: 25%;\n// }\n// .col-sm-push-2 {\n// left: 16.66666667%;\n// }\n// .col-sm-push-1 {\n// left: 8.33333333%;\n// }\n// .col-sm-push-0 {\n// left: auto;\n// }\n// .col-sm-offset-12 {\n// margin-left: 100%;\n// }\n// .col-sm-offset-11 {\n// margin-left: 91.66666667%;\n// }\n// .col-sm-offset-10 {\n// margin-left: 83.33333333%;\n// }\n// .col-sm-offset-9 {\n// margin-left: 75%;\n// }\n// .col-sm-offset-8 {\n// margin-left: 66.66666667%;\n// }\n// .col-sm-offset-7 {\n// margin-left: 58.33333333%;\n// }\n// .col-sm-offset-6 {\n// margin-left: 50%;\n// }\n// .col-sm-offset-5 {\n// margin-left: 41.66666667%;\n// }\n// .col-sm-offset-4 {\n// margin-left: 33.33333333%;\n// }\n// .col-sm-offset-3 {\n// margin-left: 25%;\n// }\n// .col-sm-offset-2 {\n// margin-left: 16.66666667%;\n// }\n// .col-sm-offset-1 {\n// margin-left: 8.33333333%;\n// }\n// .col-sm-offset-0 {\n// margin-left: 0;\n// }\n//}\n//@media (min-width: 992px) {\n// .col-md-1,\n// .col-md-2,\n// .col-md-3,\n// .col-md-4,\n// .col-md-5,\n// .col-md-6,\n// .col-md-7,\n// .col-md-8,\n// .col-md-9,\n// .col-md-10,\n// .col-md-11,\n// .col-md-12 {\n// float: left;\n// }\n// .col-md-12 {\n// width: 100%;\n// }\n// .col-md-11 {\n// width: 91.66666667%;\n// }\n// .col-md-10 {\n// width: 83.33333333%;\n// }\n// .col-md-9 {\n// width: 75%;\n// }\n// .col-md-8 {\n// width: 66.66666667%;\n// }\n// .col-md-7 {\n// width: 58.33333333%;\n// }\n// .col-md-6 {\n// width: 50%;\n// }\n// .col-md-5 {\n// width: 41.66666667%;\n// }\n// .col-md-4 {\n// width: 33.33333333%;\n// }\n// .col-md-3 {\n// width: 25%;\n// }\n// .col-md-2 {\n// width: 16.66666667%;\n// }\n// .col-md-1 {\n// width: 8.33333333%;\n// }\n// .col-md-pull-12 {\n// right: 100%;\n// }\n// .col-md-pull-11 {\n// right: 91.66666667%;\n// }\n// .col-md-pull-10 {\n// right: 83.33333333%;\n// }\n// .col-md-pull-9 {\n// right: 75%;\n// }\n// .col-md-pull-8 {\n// right: 66.66666667%;\n// }\n// .col-md-pull-7 {\n// right: 58.33333333%;\n// }\n// .col-md-pull-6 {\n// right: 50%;\n// }\n// .col-md-pull-5 {\n// right: 41.66666667%;\n// }\n// .col-md-pull-4 {\n// right: 33.33333333%;\n// }\n// .col-md-pull-3 {\n// right: 25%;\n// }\n// .col-md-pull-2 {\n// right: 16.66666667%;\n// }\n// .col-md-pull-1 {\n// right: 8.33333333%;\n// }\n// .col-md-pull-0 {\n// right: auto;\n// }\n// .col-md-push-12 {\n// left: 100%;\n// }\n// .col-md-push-11 {\n// left: 91.66666667%;\n// }\n// .col-md-push-10 {\n// left: 83.33333333%;\n// }\n// .col-md-push-9 {\n// left: 75%;\n// }\n// .col-md-push-8 {\n// left: 66.66666667%;\n// }\n// .col-md-push-7 {\n// left: 58.33333333%;\n// }\n// .col-md-push-6 {\n// left: 50%;\n// }\n// .col-md-push-5 {\n// left: 41.66666667%;\n// }\n// .col-md-push-4 {\n// left: 33.33333333%;\n// }\n// .col-md-push-3 {\n// left: 25%;\n// }\n// .col-md-push-2 {\n// left: 16.66666667%;\n// }\n// .col-md-push-1 {\n// left: 8.33333333%;\n// }\n// .col-md-push-0 {\n// left: auto;\n// }\n// .col-md-offset-12 {\n// margin-left: 100%;\n// }\n// .col-md-offset-11 {\n// margin-left: 91.66666667%;\n// }\n// .col-md-offset-10 {\n// margin-left: 83.33333333%;\n// }\n// .col-md-offset-9 {\n// margin-left: 75%;\n// }\n// .col-md-offset-8 {\n// margin-left: 66.66666667%;\n// }\n// .col-md-offset-7 {\n// margin-left: 58.33333333%;\n// }\n// .col-md-offset-6 {\n// margin-left: 50%;\n// }\n// .col-md-offset-5 {\n// margin-left: 41.66666667%;\n// }\n// .col-md-offset-4 {\n// margin-left: 33.33333333%;\n// }\n// .col-md-offset-3 {\n// margin-left: 25%;\n// }\n// .col-md-offset-2 {\n// margin-left: 16.66666667%;\n// }\n// .col-md-offset-1 {\n// margin-left: 8.33333333%;\n// }\n// .col-md-offset-0 {\n// margin-left: 0;\n// }\n//}\n//@media (min-width: 1200px) {\n// .col-lg-1,\n// .col-lg-2,\n// .col-lg-3,\n// .col-lg-4,\n// .col-lg-5,\n// .col-lg-6,\n// .col-lg-7,\n// .col-lg-8,\n// .col-lg-9,\n// .col-lg-10,\n// .col-lg-11,\n// .col-lg-12 {\n// float: left;\n// }\n// .col-lg-12 {\n// width: 100%;\n// }\n// .col-lg-11 {\n// width: 91.66666667%;\n// }\n// .col-lg-10 {\n// width: 83.33333333%;\n// }\n// .col-lg-9 {\n// width: 75%;\n// }\n// .col-lg-8 {\n// width: 66.66666667%;\n// }\n// .col-lg-7 {\n// width: 58.33333333%;\n// }\n// .col-lg-6 {\n// width: 50%;\n// }\n// .col-lg-5 {\n// width: 41.66666667%;\n// }\n// .col-lg-4 {\n// width: 33.33333333%;\n// }\n// .col-lg-3 {\n// width: 25%;\n// }\n// .col-lg-2 {\n// width: 16.66666667%;\n// }\n// .col-lg-1 {\n// width: 8.33333333%;\n// }\n// .col-lg-pull-12 {\n// right: 100%;\n// }\n// .col-lg-pull-11 {\n// right: 91.66666667%;\n// }\n// .col-lg-pull-10 {\n// right: 83.33333333%;\n// }\n// .col-lg-pull-9 {\n// right: 75%;\n// }\n// .col-lg-pull-8 {\n// right: 66.66666667%;\n// }\n// .col-lg-pull-7 {\n// right: 58.33333333%;\n// }\n// .col-lg-pull-6 {\n// right: 50%;\n// }\n// .col-lg-pull-5 {\n// right: 41.66666667%;\n// }\n// .col-lg-pull-4 {\n// right: 33.33333333%;\n// }\n// .col-lg-pull-3 {\n// right: 25%;\n// }\n// .col-lg-pull-2 {\n// right: 16.66666667%;\n// }\n// .col-lg-pull-1 {\n// right: 8.33333333%;\n// }\n// .col-lg-pull-0 {\n// right: auto;\n// }\n// .col-lg-push-12 {\n// left: 100%;\n// }\n// .col-lg-push-11 {\n// left: 91.66666667%;\n// }\n// .col-lg-push-10 {\n// left: 83.33333333%;\n// }\n// .col-lg-push-9 {\n// left: 75%;\n// }\n// .col-lg-push-8 {\n// left: 66.66666667%;\n// }\n// .col-lg-push-7 {\n// left: 58.33333333%;\n// }\n// .col-lg-push-6 {\n// left: 50%;\n// }\n// .col-lg-push-5 {\n// left: 41.66666667%;\n// }\n// .col-lg-push-4 {\n// left: 33.33333333%;\n// }\n// .col-lg-push-3 {\n// left: 25%;\n// }\n// .col-lg-push-2 {\n// left: 16.66666667%;\n// }\n// .col-lg-push-1 {\n// left: 8.33333333%;\n// }\n// .col-lg-push-0 {\n// left: auto;\n// }\n// .col-lg-offset-12 {\n// margin-left: 100%;\n// }\n// .col-lg-offset-11 {\n// margin-left: 91.66666667%;\n// }\n// .col-lg-offset-10 {\n// margin-left: 83.33333333%;\n// }\n// .col-lg-offset-9 {\n// margin-left: 75%;\n// }\n// .col-lg-offset-8 {\n// margin-left: 66.66666667%;\n// }\n// .col-lg-offset-7 {\n// margin-left: 58.33333333%;\n// }\n// .col-lg-offset-6 {\n// margin-left: 50%;\n// }\n// .col-lg-offset-5 {\n// margin-left: 41.66666667%;\n// }\n// .col-lg-offset-4 {\n// margin-left: 33.33333333%;\n// }\n// .col-lg-offset-3 {\n// margin-left: 25%;\n// }\n// .col-lg-offset-2 {\n// margin-left: 16.66666667%;\n// }\n// .col-lg-offset-1 {\n// margin-left: 8.33333333%;\n// }\n// .col-lg-offset-0 {\n// margin-left: 0;\n// }\n//}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*='col-'] {\n position: static;\n display: table-column;\n float: none;\n}\ntable td[class*='col-'],\ntable th[class*='col-'] {\n position: static;\n display: table-cell;\n float: none;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n min-height: 0.01%;\n overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type='search'] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type='radio'],\ninput[type='checkbox'] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type='file'] {\n display: block;\n}\ninput[type='range'] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type='file']:focus,\ninput[type='radio']:focus,\ninput[type='checkbox']:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555;\n}\n//.form-control {\n// display: block;\n// width: 100%;\n// height: 34px;\n// padding: 6px 12px;\n// font-size: 14px;\n// line-height: 1.42857143;\n// color: #555;\n// background-color: #fff;\n// background-image: none;\n// border: 1px solid #ccc;\n// border-radius: 4px;\n// -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n// box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n// -webkit-transition: border-color ease-in-out 0.15s, -webkit-box-shadow ease-in-out 0.15s;\n// -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n// transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n//}\n//.form-control:focus {\n// border-color: #66afe9;\n// outline: 0;\n// -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n// box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n//}\n//.form-control::-moz-placeholder {\n// color: #999;\n// opacity: 1;\n//}\n//.form-control:-ms-input-placeholder {\n// color: #999;\n//}\n//.form-control::-webkit-input-placeholder {\n// color: #999;\n//}\n//.form-control[disabled],\n//.form-control[readonly],\n//fieldset[disabled] .form-control {\n// background-color: #eee;\n// opacity: 1;\n//}\n//.form-control[disabled],\n//fieldset[disabled] .form-control {\n// cursor: not-allowed;\n//}\n//textarea.form-control {\n// height: auto;\n//}\n//input[type='search'] {\n// -webkit-appearance: none;\n//}\n// @media screen and (-webkit-min-device-pixel-ratio: 0) {\n// input[type='date'],\n// input[type='time'],\n// input[type='datetime-local'],\n// input[type='month'] {\n// line-height: 34px;\n// }\n// input[type='date'].input-sm,\n// input[type='time'].input-sm,\n// input[type='datetime-local'].input-sm,\n// input[type='month'].input-sm,\n// .input-group-sm input[type='date'],\n// .input-group-sm input[type='time'],\n// .input-group-sm input[type='datetime-local'],\n// .input-group-sm input[type='month'] {\n// line-height: 30px;\n// }\n// input[type='date'].input-lg,\n// input[type='time'].input-lg,\n// input[type='datetime-local'].input-lg,\n// input[type='month'].input-lg,\n// .input-group-lg input[type='date'],\n// .input-group-lg input[type='time'],\n// .input-group-lg input[type='datetime-local'],\n// .input-group-lg input[type='month'] {\n// line-height: 46px;\n// }\n// }\n//.form-group {\n// margin-bottom: 15px;\n//}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type='radio'],\n.radio-inline input[type='radio'],\n.checkbox input[type='checkbox'],\n.checkbox-inline input[type='checkbox'] {\n position: absolute;\n margin-top: 4px \\9;\n margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n vertical-align: middle;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type='radio'][disabled],\ninput[type='checkbox'][disabled],\ninput[type='radio'].disabled,\ninput[type='checkbox'].disabled,\nfieldset[disabled] input[type='radio'],\nfieldset[disabled] input[type='checkbox'] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n min-height: 34px;\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-right: 0;\n padding-left: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.form-group-sm .form-control {\n height: 30px;\n line-height: 30px;\n}\ntextarea.form-group-sm .form-control,\nselect[multiple].form-group-sm .form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.form-group-lg .form-control {\n height: 46px;\n line-height: 46px;\n}\ntextarea.form-group-lg .form-control,\nselect[multiple].form-group-lg .form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n background-color: #f2dede;\n border-color: #a94442;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type='radio'],\n .form-inline .checkbox input[type='checkbox'] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n padding-top: 7px;\n margin-top: 0;\n margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n padding-top: 7px;\n margin-bottom: 0;\n text-align: right;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 14.333333px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n }\n}\n.btn {\n display: inline-block;\n padding: 6px 12px;\n margin-bottom: 0;\n font-size: 14px;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n outline: 0;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n pointer-events: none;\n cursor: not-allowed;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n opacity: 0.65;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus,\n.btn-default.focus,\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:hover,\n.btn-primary:focus,\n.btn-primary.focus,\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:hover,\n.btn-success:focus,\n.btn-success.focus,\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:hover,\n.btn-info:focus,\n.btn-info.focus,\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:hover,\n.btn-warning:focus,\n.btn-warning.focus,\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:hover,\n.btn-danger:focus,\n.btn-danger.focus,\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n font-weight: normal;\n color: #337ab7;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type='submit'].btn-block,\ninput[type='reset'].btn-block,\ninput[type='button'].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-timing-function: ease;\n -o-transition-timing-function: ease;\n transition-timing-function: ease;\n -webkit-transition-duration: 0.35s;\n -o-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-property: height, visibility;\n -o-transition-property: height, visibility;\n transition-property: height, visibility;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n font-size: 14px;\n text-align: left;\n list-style: none;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n color: #262626;\n text-decoration: none;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n background-color: #337ab7;\n outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n content: '';\n border-top: 0;\n border-bottom: 4px solid;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n right: 0;\n left: auto;\n }\n .navbar-right .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-right: 8px;\n padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-right: 12px;\n padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n display: table-cell;\n float: none;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle='buttons'] > .btn input[type='radio'],\n[data-toggle='buttons'] > .btn-group > .btn input[type='radio'],\n[data-toggle='buttons'] > .btn input[type='checkbox'],\n[data-toggle='buttons'] > .btn-group > .btn input[type='checkbox'] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*='col-'] {\n float: none;\n padding-right: 0;\n padding-left: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555;\n text-align: center;\n background-color: #eee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type='radio'],\n.input-group-addon input[type='checkbox'] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n margin-left: -1px;\n}\n.nav {\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eee;\n}\n.nav > li.disabled > a {\n color: #777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777;\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eee #eee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555;\n cursor: default;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n padding-right: 15px;\n padding-left: 15px;\n overflow-x: visible;\n -webkit-overflow-scrolling: touch;\n border-top: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-right: 0;\n padding-left: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n height: 50px;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n padding: 9px 10px;\n margin-top: 8px;\n margin-right: 15px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n padding: 10px 15px;\n margin-top: 8px;\n margin-right: -15px;\n margin-bottom: 8px;\n margin-left: -15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type='radio'],\n .navbar-form .checkbox input[type='checkbox'] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n padding-top: 0;\n padding-bottom: 0;\n margin-right: 0;\n margin-left: 0;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-right: 15px;\n margin-left: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n color: #fff;\n background-color: #080808;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n padding: 0 5px;\n color: #ccc;\n content: '/\\00a0';\n}\n.breadcrumb > .active {\n color: #777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n margin-left: -1px;\n line-height: 1.42857143;\n color: #337ab7;\n text-decoration: none;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n color: #23527c;\n background-color: #eee;\n border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 2;\n color: #fff;\n cursor: default;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777;\n cursor: not-allowed;\n background-color: #fff;\n border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-top-left-radius: 6px;\n border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n text-align: center;\n list-style: none;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777;\n cursor: not-allowed;\n background-color: #fff;\n}\n.label {\n display: inline;\n padding: 0.2em 0.6em 0.3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n background-color: #777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding: 30px 15px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding: 48px 0;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-right: 60px;\n padding-left: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-right: auto;\n margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@-o-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n height: 20px;\n margin-bottom: 20px;\n overflow: hidden;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: -o-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n -webkit-background-size: 40px 40px;\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: -o-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: -o-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: -o-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: -o-linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-image: linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n overflow: hidden;\n zoom: 1;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n padding-left: 0;\n margin-bottom: 20px;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\na.list-group-item:focus {\n color: #555;\n text-decoration: none;\n background-color: #f5f5f5;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n color: #777;\n cursor: not-allowed;\n background-color: #eee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\na.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\na.list-group-item-success.active:hover,\na.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\na.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\na.list-group-item-info.active:hover,\na.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\na.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\na.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-right: 15px;\n padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n margin-bottom: 0;\n border: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n filter: alpha(opacity=20);\n opacity: 0.2;\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n filter: alpha(opacity=50);\n opacity: 0.5;\n}\nbutton.close {\n -webkit-appearance: none;\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n outline: 0;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n.modal-backdrop.fade {\n filter: alpha(opacity=0);\n opacity: 0;\n}\n.modal-backdrop.in {\n filter: alpha(opacity=50);\n opacity: 0.5;\n}\n.modal-header {\n min-height: 16.42857143px;\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-bottom: 0;\n margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n font-size: 12px;\n font-weight: normal;\n line-height: 1.4;\n filter: alpha(opacity=0);\n opacity: 0;\n}\n.tooltip.in {\n filter: alpha(opacity=90);\n opacity: 0.9;\n}\n.tooltip.top {\n padding: 5px 0;\n margin-top: -3px;\n}\n.tooltip.right {\n padding: 0 5px;\n margin-left: 3px;\n}\n.tooltip.bottom {\n padding: 5px 0;\n margin-top: 3px;\n}\n.tooltip.left {\n padding: 0 5px;\n margin-left: -3px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n text-decoration: none;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n right: 5px;\n bottom: 0;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n font-size: 14px;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: left;\n white-space: normal;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n padding: 8px 14px;\n margin: 0;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n content: '';\n border-width: 10px;\n}\n.popover.top > .arrow {\n bottom: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-color: #999;\n border-top-color: rgba(0, 0, 0, 0.25);\n border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n bottom: 1px;\n margin-left: -10px;\n content: ' ';\n border-top-color: #fff;\n border-bottom-width: 0;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-right-color: #999;\n border-right-color: rgba(0, 0, 0, 0.25);\n border-left-width: 0;\n}\n.popover.right > .arrow:after {\n bottom: -10px;\n left: 1px;\n content: ' ';\n border-right-color: #fff;\n border-left-width: 0;\n}\n.popover.bottom > .arrow {\n top: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.popover.bottom > .arrow:after {\n top: 1px;\n margin-left: -10px;\n content: ' ';\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n right: 1px;\n bottom: -10px;\n content: ' ';\n border-right-width: 0;\n border-left-color: #fff;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n.carousel-inner > .item {\n position: relative;\n display: none;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000;\n perspective: 1000;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n left: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n left: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n left: 0;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 15%;\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n filter: alpha(opacity=50);\n opacity: 0.5;\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -webkit-gradient(\n linear,\n left top,\n right top,\n from(rgba(0, 0, 0, 0.5)),\n to(rgba(0, 0, 0, 0.0001))\n );\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n background-repeat: repeat-x;\n}\n.carousel-control.right {\n right: 0;\n left: auto;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -webkit-gradient(\n linear,\n left top,\n right top,\n from(rgba(0, 0, 0, 0.0001)),\n to(rgba(0, 0, 0, 0.5))\n );\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n color: #fff;\n text-decoration: none;\n filter: alpha(opacity=90);\n outline: 0;\n opacity: 0.9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n margin-top: -10px;\n font-family: serif;\n line-height: 1;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n padding-left: 0;\n margin-left: -30%;\n text-align: center;\n list-style: none;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n border: 1px solid #fff;\n border-radius: 10px;\n}\n.carousel-indicators .active {\n width: 12px;\n height: 12px;\n margin: 0;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -15px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -15px;\n }\n .carousel-caption {\n right: 20%;\n left: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n display: table;\n content: ' ';\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-right: auto;\n margin-left: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n","/*******************************************************************************\n * bootstrap-rtl (version 3.3.4)\n * Author: Morteza Ansarinia (http://github.com/morteza)\n * Created on: August 13,2015\n * Project: bootstrap-rtl\n * Copyright: Unlicensed Public Domain\n *******************************************************************************/\n\n[dir='rtl'] {\n .flip.text-left {\n text-align: right;\n }\n .flip.text-right {\n text-align: left;\n }\n .list-unstyled {\n padding-right: 0;\n padding-left: initial;\n }\n .list-inline {\n padding-right: 0;\n padding-left: initial;\n margin-right: -5px;\n margin-left: 0;\n }\n dd {\n margin-right: 0;\n margin-left: initial;\n }\n @media (min-width: 768px) {\n .dl-horizontal dt {\n float: right;\n clear: right;\n text-align: left;\n }\n .dl-horizontal dd {\n margin-right: 180px;\n margin-left: 0;\n }\n }\n blockquote {\n border-right: 5px solid #eeeeee;\n border-left: 0;\n }\n .blockquote-reverse,\n blockquote.pull-left {\n padding-left: 15px;\n padding-right: 0;\n border-left: 5px solid #eeeeee;\n border-right: 0;\n text-align: left;\n }\n .col-xs-1,\n .col-sm-1,\n .col-md-1,\n .col-lg-1,\n .col-xs-2,\n .col-sm-2,\n .col-md-2,\n .col-lg-2,\n .col-xs-3,\n .col-sm-3,\n .col-md-3,\n .col-lg-3,\n .col-xs-4,\n .col-sm-4,\n .col-md-4,\n .col-lg-4,\n .col-xs-5,\n .col-sm-5,\n .col-md-5,\n .col-lg-5,\n .col-xs-6,\n .col-sm-6,\n .col-md-6,\n .col-lg-6,\n .col-xs-7,\n .col-sm-7,\n .col-md-7,\n .col-lg-7,\n .col-xs-8,\n .col-sm-8,\n .col-md-8,\n .col-lg-8,\n .col-xs-9,\n .col-sm-9,\n .col-md-9,\n .col-lg-9,\n .col-xs-10,\n .col-sm-10,\n .col-md-10,\n .col-lg-10,\n .col-xs-11,\n .col-sm-11,\n .col-md-11,\n .col-lg-11,\n .col-xs-12,\n .col-sm-12,\n .col-md-12,\n .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n }\n .col-xs-1,\n .col-xs-2,\n .col-xs-3,\n .col-xs-4,\n .col-xs-5,\n .col-xs-6,\n .col-xs-7,\n .col-xs-8,\n .col-xs-9,\n .col-xs-10,\n .col-xs-11,\n .col-xs-12 {\n float: right;\n }\n .col-xs-12 {\n width: 100%;\n }\n .col-xs-11 {\n width: 91.66666667%;\n }\n .col-xs-10 {\n width: 83.33333333%;\n }\n .col-xs-9 {\n width: 75%;\n }\n .col-xs-8 {\n width: 66.66666667%;\n }\n .col-xs-7 {\n width: 58.33333333%;\n }\n .col-xs-6 {\n width: 50%;\n }\n .col-xs-5 {\n width: 41.66666667%;\n }\n .col-xs-4 {\n width: 33.33333333%;\n }\n .col-xs-3 {\n width: 25%;\n }\n .col-xs-2 {\n width: 16.66666667%;\n }\n .col-xs-1 {\n width: 8.33333333%;\n }\n .col-xs-pull-12 {\n left: 100%;\n right: auto;\n }\n .col-xs-pull-11 {\n left: 91.66666667%;\n right: auto;\n }\n .col-xs-pull-10 {\n left: 83.33333333%;\n right: auto;\n }\n .col-xs-pull-9 {\n left: 75%;\n right: auto;\n }\n .col-xs-pull-8 {\n left: 66.66666667%;\n right: auto;\n }\n .col-xs-pull-7 {\n left: 58.33333333%;\n right: auto;\n }\n .col-xs-pull-6 {\n left: 50%;\n right: auto;\n }\n .col-xs-pull-5 {\n left: 41.66666667%;\n right: auto;\n }\n .col-xs-pull-4 {\n left: 33.33333333%;\n right: auto;\n }\n .col-xs-pull-3 {\n left: 25%;\n right: auto;\n }\n .col-xs-pull-2 {\n left: 16.66666667%;\n right: auto;\n }\n .col-xs-pull-1 {\n left: 8.33333333%;\n right: auto;\n }\n .col-xs-pull-0 {\n left: auto;\n right: auto;\n }\n .col-xs-push-12 {\n right: 100%;\n left: 0;\n }\n .col-xs-push-11 {\n right: 91.66666667%;\n left: 0;\n }\n .col-xs-push-10 {\n right: 83.33333333%;\n left: 0;\n }\n .col-xs-push-9 {\n right: 75%;\n left: 0;\n }\n .col-xs-push-8 {\n right: 66.66666667%;\n left: 0;\n }\n .col-xs-push-7 {\n right: 58.33333333%;\n left: 0;\n }\n .col-xs-push-6 {\n right: 50%;\n left: 0;\n }\n .col-xs-push-5 {\n right: 41.66666667%;\n left: 0;\n }\n .col-xs-push-4 {\n right: 33.33333333%;\n left: 0;\n }\n .col-xs-push-3 {\n right: 25%;\n left: 0;\n }\n .col-xs-push-2 {\n right: 16.66666667%;\n left: 0;\n }\n .col-xs-push-1 {\n right: 8.33333333%;\n left: 0;\n }\n .col-xs-push-0 {\n right: auto;\n left: 0;\n }\n .col-xs-offset-12 {\n margin-right: 100%;\n margin-left: 0;\n }\n .col-xs-offset-11 {\n margin-right: 91.66666667%;\n margin-left: 0;\n }\n .col-xs-offset-10 {\n margin-right: 83.33333333%;\n margin-left: 0;\n }\n .col-xs-offset-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .col-xs-offset-8 {\n margin-right: 66.66666667%;\n margin-left: 0;\n }\n .col-xs-offset-7 {\n margin-right: 58.33333333%;\n margin-left: 0;\n }\n .col-xs-offset-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .col-xs-offset-5 {\n margin-right: 41.66666667%;\n margin-left: 0;\n }\n .col-xs-offset-4 {\n margin-right: 33.33333333%;\n margin-left: 0;\n }\n .col-xs-offset-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .col-xs-offset-2 {\n margin-right: 16.66666667%;\n margin-left: 0;\n }\n .col-xs-offset-1 {\n margin-right: 8.33333333%;\n margin-left: 0;\n }\n .col-xs-offset-0 {\n margin-right: 0%;\n margin-left: 0;\n }\n @media (min-width: 768px) {\n .col-sm-1,\n .col-sm-2,\n .col-sm-3,\n .col-sm-4,\n .col-sm-5,\n .col-sm-6,\n .col-sm-7,\n .col-sm-8,\n .col-sm-9,\n .col-sm-10,\n .col-sm-11,\n .col-sm-12 {\n float: right;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n left: 100%;\n right: auto;\n }\n .col-sm-pull-11 {\n left: 91.66666667%;\n right: auto;\n }\n .col-sm-pull-10 {\n left: 83.33333333%;\n right: auto;\n }\n .col-sm-pull-9 {\n left: 75%;\n right: auto;\n }\n .col-sm-pull-8 {\n left: 66.66666667%;\n right: auto;\n }\n .col-sm-pull-7 {\n left: 58.33333333%;\n right: auto;\n }\n .col-sm-pull-6 {\n left: 50%;\n right: auto;\n }\n .col-sm-pull-5 {\n left: 41.66666667%;\n right: auto;\n }\n .col-sm-pull-4 {\n left: 33.33333333%;\n right: auto;\n }\n .col-sm-pull-3 {\n left: 25%;\n right: auto;\n }\n .col-sm-pull-2 {\n left: 16.66666667%;\n right: auto;\n }\n .col-sm-pull-1 {\n left: 8.33333333%;\n right: auto;\n }\n .col-sm-pull-0 {\n left: auto;\n right: auto;\n }\n .col-sm-push-12 {\n right: 100%;\n left: 0;\n }\n .col-sm-push-11 {\n right: 91.66666667%;\n left: 0;\n }\n .col-sm-push-10 {\n right: 83.33333333%;\n left: 0;\n }\n .col-sm-push-9 {\n right: 75%;\n left: 0;\n }\n .col-sm-push-8 {\n right: 66.66666667%;\n left: 0;\n }\n .col-sm-push-7 {\n right: 58.33333333%;\n left: 0;\n }\n .col-sm-push-6 {\n right: 50%;\n left: 0;\n }\n .col-sm-push-5 {\n right: 41.66666667%;\n left: 0;\n }\n .col-sm-push-4 {\n right: 33.33333333%;\n left: 0;\n }\n .col-sm-push-3 {\n right: 25%;\n left: 0;\n }\n .col-sm-push-2 {\n right: 16.66666667%;\n left: 0;\n }\n .col-sm-push-1 {\n right: 8.33333333%;\n left: 0;\n }\n .col-sm-push-0 {\n right: auto;\n left: 0;\n }\n .col-sm-offset-12 {\n margin-right: 100%;\n margin-left: 0;\n }\n .col-sm-offset-11 {\n margin-right: 91.66666667%;\n margin-left: 0;\n }\n .col-sm-offset-10 {\n margin-right: 83.33333333%;\n margin-left: 0;\n }\n .col-sm-offset-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .col-sm-offset-8 {\n margin-right: 66.66666667%;\n margin-left: 0;\n }\n .col-sm-offset-7 {\n margin-right: 58.33333333%;\n margin-left: 0;\n }\n .col-sm-offset-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .col-sm-offset-5 {\n margin-right: 41.66666667%;\n margin-left: 0;\n }\n .col-sm-offset-4 {\n margin-right: 33.33333333%;\n margin-left: 0;\n }\n .col-sm-offset-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .col-sm-offset-2 {\n margin-right: 16.66666667%;\n margin-left: 0;\n }\n .col-sm-offset-1 {\n margin-right: 8.33333333%;\n margin-left: 0;\n }\n .col-sm-offset-0 {\n margin-right: 0%;\n margin-left: 0;\n }\n }\n @media (min-width: 992px) {\n .col-md-1,\n .col-md-2,\n .col-md-3,\n .col-md-4,\n .col-md-5,\n .col-md-6,\n .col-md-7,\n .col-md-8,\n .col-md-9,\n .col-md-10,\n .col-md-11,\n .col-md-12 {\n float: right;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n left: 100%;\n right: auto;\n }\n .col-md-pull-11 {\n left: 91.66666667%;\n right: auto;\n }\n .col-md-pull-10 {\n left: 83.33333333%;\n right: auto;\n }\n .col-md-pull-9 {\n left: 75%;\n right: auto;\n }\n .col-md-pull-8 {\n left: 66.66666667%;\n right: auto;\n }\n .col-md-pull-7 {\n left: 58.33333333%;\n right: auto;\n }\n .col-md-pull-6 {\n left: 50%;\n right: auto;\n }\n .col-md-pull-5 {\n left: 41.66666667%;\n right: auto;\n }\n .col-md-pull-4 {\n left: 33.33333333%;\n right: auto;\n }\n .col-md-pull-3 {\n left: 25%;\n right: auto;\n }\n .col-md-pull-2 {\n left: 16.66666667%;\n right: auto;\n }\n .col-md-pull-1 {\n left: 8.33333333%;\n right: auto;\n }\n .col-md-pull-0 {\n left: auto;\n right: auto;\n }\n .col-md-push-12 {\n right: 100%;\n left: 0;\n }\n .col-md-push-11 {\n right: 91.66666667%;\n left: 0;\n }\n .col-md-push-10 {\n right: 83.33333333%;\n left: 0;\n }\n .col-md-push-9 {\n right: 75%;\n left: 0;\n }\n .col-md-push-8 {\n right: 66.66666667%;\n left: 0;\n }\n .col-md-push-7 {\n right: 58.33333333%;\n left: 0;\n }\n .col-md-push-6 {\n right: 50%;\n left: 0;\n }\n .col-md-push-5 {\n right: 41.66666667%;\n left: 0;\n }\n .col-md-push-4 {\n right: 33.33333333%;\n left: 0;\n }\n .col-md-push-3 {\n right: 25%;\n left: 0;\n }\n .col-md-push-2 {\n right: 16.66666667%;\n left: 0;\n }\n .col-md-push-1 {\n right: 8.33333333%;\n left: 0;\n }\n .col-md-push-0 {\n right: auto;\n left: 0;\n }\n .col-md-offset-12 {\n margin-right: 100%;\n margin-left: 0;\n }\n .col-md-offset-11 {\n margin-right: 91.66666667%;\n margin-left: 0;\n }\n .col-md-offset-10 {\n margin-right: 83.33333333%;\n margin-left: 0;\n }\n .col-md-offset-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .col-md-offset-8 {\n margin-right: 66.66666667%;\n margin-left: 0;\n }\n .col-md-offset-7 {\n margin-right: 58.33333333%;\n margin-left: 0;\n }\n .col-md-offset-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .col-md-offset-5 {\n margin-right: 41.66666667%;\n margin-left: 0;\n }\n .col-md-offset-4 {\n margin-right: 33.33333333%;\n margin-left: 0;\n }\n .col-md-offset-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .col-md-offset-2 {\n margin-right: 16.66666667%;\n margin-left: 0;\n }\n .col-md-offset-1 {\n margin-right: 8.33333333%;\n margin-left: 0;\n }\n .col-md-offset-0 {\n margin-right: 0%;\n margin-left: 0;\n }\n }\n @media (min-width: 1200px) {\n .col-lg-1,\n .col-lg-2,\n .col-lg-3,\n .col-lg-4,\n .col-lg-5,\n .col-lg-6,\n .col-lg-7,\n .col-lg-8,\n .col-lg-9,\n .col-lg-10,\n .col-lg-11,\n .col-lg-12 {\n float: right;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n left: 100%;\n right: auto;\n }\n .col-lg-pull-11 {\n left: 91.66666667%;\n right: auto;\n }\n .col-lg-pull-10 {\n left: 83.33333333%;\n right: auto;\n }\n .col-lg-pull-9 {\n left: 75%;\n right: auto;\n }\n .col-lg-pull-8 {\n left: 66.66666667%;\n right: auto;\n }\n .col-lg-pull-7 {\n left: 58.33333333%;\n right: auto;\n }\n .col-lg-pull-6 {\n left: 50%;\n right: auto;\n }\n .col-lg-pull-5 {\n left: 41.66666667%;\n right: auto;\n }\n .col-lg-pull-4 {\n left: 33.33333333%;\n right: auto;\n }\n .col-lg-pull-3 {\n left: 25%;\n right: auto;\n }\n .col-lg-pull-2 {\n left: 16.66666667%;\n right: auto;\n }\n .col-lg-pull-1 {\n left: 8.33333333%;\n right: auto;\n }\n .col-lg-pull-0 {\n left: auto;\n right: auto;\n }\n .col-lg-push-12 {\n right: 100%;\n left: 0;\n }\n .col-lg-push-11 {\n right: 91.66666667%;\n left: 0;\n }\n .col-lg-push-10 {\n right: 83.33333333%;\n left: 0;\n }\n .col-lg-push-9 {\n right: 75%;\n left: 0;\n }\n .col-lg-push-8 {\n right: 66.66666667%;\n left: 0;\n }\n .col-lg-push-7 {\n right: 58.33333333%;\n left: 0;\n }\n .col-lg-push-6 {\n right: 50%;\n left: 0;\n }\n .col-lg-push-5 {\n right: 41.66666667%;\n left: 0;\n }\n .col-lg-push-4 {\n right: 33.33333333%;\n left: 0;\n }\n .col-lg-push-3 {\n right: 25%;\n left: 0;\n }\n .col-lg-push-2 {\n right: 16.66666667%;\n left: 0;\n }\n .col-lg-push-1 {\n right: 8.33333333%;\n left: 0;\n }\n .col-lg-push-0 {\n right: auto;\n left: 0;\n }\n .col-lg-offset-12 {\n margin-right: 100%;\n margin-left: 0;\n }\n .col-lg-offset-11 {\n margin-right: 91.66666667%;\n margin-left: 0;\n }\n .col-lg-offset-10 {\n margin-right: 83.33333333%;\n margin-left: 0;\n }\n .col-lg-offset-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .col-lg-offset-8 {\n margin-right: 66.66666667%;\n margin-left: 0;\n }\n .col-lg-offset-7 {\n margin-right: 58.33333333%;\n margin-left: 0;\n }\n .col-lg-offset-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .col-lg-offset-5 {\n margin-right: 41.66666667%;\n margin-left: 0;\n }\n .col-lg-offset-4 {\n margin-right: 33.33333333%;\n margin-left: 0;\n }\n .col-lg-offset-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .col-lg-offset-2 {\n margin-right: 16.66666667%;\n margin-left: 0;\n }\n .col-lg-offset-1 {\n margin-right: 8.33333333%;\n margin-left: 0;\n }\n .col-lg-offset-0 {\n margin-right: 0%;\n margin-left: 0;\n }\n }\n caption {\n text-align: right;\n }\n th:not(.mx-left-aligned) {\n text-align: right;\n }\n @media screen and (max-width: 767px) {\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-right: 0;\n border-left: initial;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-left: 0;\n border-right: initial;\n }\n }\n .radio label,\n .checkbox label {\n padding-right: 20px;\n padding-left: initial;\n }\n .radio input[type='radio'],\n .radio-inline input[type='radio'],\n .checkbox input[type='checkbox'],\n .checkbox-inline input[type='checkbox'] {\n margin-right: -20px;\n margin-left: auto;\n }\n .radio-inline,\n .checkbox-inline {\n padding-right: 20px;\n padding-left: 0;\n }\n .radio-inline + .radio-inline,\n .checkbox-inline + .checkbox-inline {\n margin-right: 10px;\n margin-left: 0;\n }\n .has-feedback .form-control {\n padding-left: 42.5px;\n padding-right: 12px;\n }\n .form-control-feedback {\n left: 0;\n right: auto;\n }\n @media (min-width: 768px) {\n .form-inline label {\n padding-right: 0;\n padding-left: initial;\n }\n .form-inline .radio input[type='radio'],\n .form-inline .checkbox input[type='checkbox'] {\n margin-right: 0;\n margin-left: auto;\n }\n }\n @media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: left;\n }\n }\n .form-horizontal .has-feedback .form-control-feedback {\n left: 15px;\n right: auto;\n }\n .caret {\n margin-right: 2px;\n margin-left: 0;\n }\n .dropdown-menu {\n right: 0;\n left: auto;\n float: left;\n text-align: right;\n }\n .dropdown-menu.pull-right {\n left: 0;\n right: auto;\n float: right;\n }\n .dropdown-menu-right {\n left: auto;\n right: 0;\n }\n .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n @media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n }\n .btn-group > .btn,\n .btn-group-vertical > .btn {\n float: right;\n }\n .btn-group .btn + .btn,\n .btn-group .btn + .btn-group,\n .btn-group .btn-group + .btn,\n .btn-group .btn-group + .btn-group {\n margin-right: -1px;\n margin-left: 0px;\n }\n .btn-toolbar {\n margin-right: -5px;\n margin-left: 0px;\n }\n .btn-toolbar .btn-group,\n .btn-toolbar .input-group {\n float: right;\n }\n .btn-toolbar > .btn,\n .btn-toolbar > .btn-group,\n .btn-toolbar > .input-group {\n margin-right: 5px;\n margin-left: 0px;\n }\n .btn-group > .btn:first-child {\n margin-right: 0;\n }\n .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n .btn-group > .btn:last-child:not(:first-child),\n .btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n .btn-group > .btn-group {\n float: right;\n }\n .btn-group.btn-group-justified > .btn,\n .btn-group.btn-group-justified > .btn-group {\n float: none;\n }\n .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n }\n .btn-group > .btn-group:first-child > .btn:last-child,\n .btn-group > .btn-group:first-child > .dropdown-toggle {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n .btn-group > .btn-group:last-child > .btn:first-child {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n .btn .caret {\n margin-right: 0;\n }\n .btn-group-vertical > .btn + .btn,\n .btn-group-vertical > .btn + .btn-group,\n .btn-group-vertical > .btn-group + .btn,\n .btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-right: 0;\n }\n .input-group .form-control {\n float: right;\n }\n .input-group .form-control:first-child,\n .input-group-addon:first-child,\n .input-group-btn:first-child > .btn,\n .input-group-btn:first-child > .btn-group > .btn,\n .input-group-btn:first-child > .dropdown-toggle,\n .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n .input-group-addon:first-child {\n border-left: 0px;\n border-right: 1px solid;\n }\n .input-group .form-control:last-child,\n .input-group-addon:last-child,\n .input-group-btn:last-child > .btn,\n .input-group-btn:last-child > .btn-group > .btn,\n .input-group-btn:last-child > .dropdown-toggle,\n .input-group-btn:first-child > .btn:not(:first-child),\n .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n .input-group-addon:last-child {\n border-left-width: 1px;\n border-left-style: solid;\n border-right: 0px;\n }\n .input-group-btn > .btn + .btn {\n margin-right: -1px;\n margin-left: auto;\n }\n .input-group-btn:first-child > .btn,\n .input-group-btn:first-child > .btn-group {\n margin-left: -1px;\n margin-right: auto;\n }\n .input-group-btn:last-child > .btn,\n .input-group-btn:last-child > .btn-group {\n margin-right: -1px;\n margin-left: auto;\n }\n .nav {\n padding-right: 0;\n padding-left: initial;\n }\n .nav-tabs > li {\n float: right;\n }\n .nav-tabs > li > a {\n margin-left: auto;\n margin-right: -2px;\n border-radius: 4px 4px 0 0;\n }\n .nav-pills > li {\n float: right;\n }\n .nav-pills > li > a {\n border-radius: 4px;\n }\n .nav-pills > li + li {\n margin-right: 2px;\n margin-left: auto;\n }\n .nav-stacked > li {\n float: none;\n }\n .nav-stacked > li + li {\n margin-right: 0;\n margin-left: auto;\n }\n .nav-justified > .dropdown .dropdown-menu {\n right: auto;\n }\n .nav-tabs-justified > li > a {\n margin-left: 0;\n margin-right: auto;\n }\n @media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-radius: 4px 4px 0 0;\n }\n }\n @media (min-width: 768px) {\n .navbar-header {\n float: right;\n }\n }\n .navbar-collapse {\n padding-right: 15px;\n padding-left: 15px;\n }\n .navbar-brand {\n float: right;\n }\n @media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-right: -15px;\n margin-left: auto;\n }\n }\n .navbar-toggle {\n float: left;\n margin-left: 15px;\n margin-right: auto;\n }\n @media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 25px 5px 15px;\n }\n }\n @media (min-width: 768px) {\n .navbar-nav {\n float: right;\n }\n .navbar-nav > li {\n float: right;\n }\n }\n @media (min-width: 768px) {\n .navbar-left.flip {\n float: right !important;\n }\n .navbar-right:last-child {\n margin-left: -15px;\n margin-right: auto;\n }\n .navbar-right.flip {\n float: left !important;\n margin-left: -15px;\n margin-right: auto;\n }\n .navbar-right .dropdown-menu {\n left: 0;\n right: auto;\n }\n }\n @media (min-width: 768px) {\n .navbar-text {\n float: right;\n }\n .navbar-text.navbar-right:last-child {\n margin-left: 0;\n margin-right: auto;\n }\n }\n .pagination {\n padding-right: 0;\n }\n .pagination > li > a,\n .pagination > li > span {\n float: right;\n margin-right: -1px;\n margin-left: 0px;\n }\n .pagination > li:first-child > a,\n .pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n .pagination > li:last-child > a,\n .pagination > li:last-child > span {\n margin-right: -1px;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n .pager {\n padding-right: 0;\n padding-left: initial;\n }\n .pager .next > a,\n .pager .next > span {\n float: left;\n }\n .pager .previous > a,\n .pager .previous > span {\n float: right;\n }\n .nav-pills > li > a > .badge {\n margin-left: 0px;\n margin-right: 3px;\n }\n .list-group-item > .badge {\n float: left;\n }\n .list-group-item > .badge + .badge {\n margin-left: 5px;\n margin-right: auto;\n }\n .alert-dismissable,\n .alert-dismissible {\n padding-left: 35px;\n padding-right: 15px;\n }\n .alert-dismissable .close,\n .alert-dismissible .close {\n right: auto;\n left: -21px;\n }\n .progress-bar {\n float: right;\n }\n .media > .pull-left {\n margin-right: 10px;\n }\n .media > .pull-left.flip {\n margin-right: 0;\n margin-left: 10px;\n }\n .media > .pull-right {\n margin-left: 10px;\n }\n .media > .pull-right.flip {\n margin-left: 0;\n margin-right: 10px;\n }\n .media-right,\n .media > .pull-right {\n padding-right: 10px;\n padding-left: initial;\n }\n .media-left,\n .media > .pull-left {\n padding-left: 10px;\n padding-right: initial;\n }\n .media-list {\n padding-right: 0;\n padding-left: initial;\n list-style: none;\n }\n .list-group {\n padding-right: 0;\n padding-left: initial;\n }\n .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 0;\n }\n .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 0;\n }\n .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n border-top-right-radius: 0;\n }\n .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n border-top-left-radius: 0;\n }\n .panel > .table-bordered > thead > tr > th:first-child,\n .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n .panel > .table-bordered > tbody > tr > th:first-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .panel > .table-bordered > tfoot > tr > th:first-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .panel > .table-bordered > thead > tr > td:first-child,\n .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n .panel > .table-bordered > tbody > tr > td:first-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .panel > .table-bordered > tfoot > tr > td:first-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-right: 0;\n border-left: none;\n }\n .panel > .table-bordered > thead > tr > th:last-child,\n .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n .panel > .table-bordered > tbody > tr > th:last-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .panel > .table-bordered > tfoot > tr > th:last-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .panel > .table-bordered > thead > tr > td:last-child,\n .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n .panel > .table-bordered > tbody > tr > td:last-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .panel > .table-bordered > tfoot > tr > td:last-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: none;\n border-left: 0;\n }\n .embed-responsive .embed-responsive-item,\n .embed-responsive iframe,\n .embed-responsive embed,\n .embed-responsive object {\n right: 0;\n left: auto;\n }\n .close {\n float: left;\n }\n .modal-footer {\n text-align: left;\n }\n .modal-footer.flip {\n text-align: right;\n }\n .modal-footer .btn + .btn {\n margin-left: auto;\n margin-right: 5px;\n }\n .modal-footer .btn-group .btn + .btn {\n margin-right: -1px;\n margin-left: auto;\n }\n .modal-footer .btn-block + .btn-block {\n margin-right: 0;\n margin-left: auto;\n }\n .popover {\n left: auto;\n text-align: right;\n }\n .popover.top > .arrow {\n right: 50%;\n left: auto;\n margin-right: -11px;\n margin-left: auto;\n }\n .popover.top > .arrow:after {\n margin-right: -10px;\n margin-left: auto;\n }\n .popover.bottom > .arrow {\n right: 50%;\n left: auto;\n margin-right: -11px;\n margin-left: auto;\n }\n .popover.bottom > .arrow:after {\n margin-right: -10px;\n margin-left: auto;\n }\n .carousel-control {\n right: 0;\n bottom: 0;\n }\n .carousel-control.left {\n right: auto;\n left: 0;\n background-image: -webkit-linear-gradient(\n left,\n color-stop(rgba(0, 0, 0, 0.5) 0%),\n color-stop(rgba(0, 0, 0, 0.0001) 100%)\n );\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n }\n .carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(\n left,\n color-stop(rgba(0, 0, 0, 0.0001) 0%),\n color-stop(rgba(0, 0, 0, 0.5) 100%)\n );\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n }\n .carousel-control .icon-prev,\n .carousel-control .glyphicon-chevron-left {\n left: 50%;\n right: auto;\n margin-right: -10px;\n }\n .carousel-control .icon-next,\n .carousel-control .glyphicon-chevron-right {\n right: 50%;\n left: auto;\n margin-left: -10px;\n }\n .carousel-indicators {\n right: 50%;\n left: 0;\n margin-right: -30%;\n margin-left: 0;\n padding-left: 0;\n }\n @media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: 0;\n margin-right: -15px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-left: 0;\n margin-right: -15px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n }\n .pull-right.flip {\n float: left !important;\n }\n .pull-left.flip {\n float: right !important;\n }\n}\n","/* @preserve\n Copyright (c) 2005-2016, Mendix bv. All rights reserved.\n See mxclientsystem/licenses.txt for third party licenses that apply.\n*/\n\n\n/*\n\tEssential styles that themes can inherit.\n\tIn other words, works but doesn't look great.\n*/\n\n\n\n/****\n\t\tGENERIC PIECES\n ****/\n\n .dijitReset {\n\t/* Use this style to null out padding, margin, border in your template elements\n\t\tso that page specific styles don't break them.\n\t\t- Use in all TABLE, TR and TD tags.\n\t*/\n\tmargin:0;\n\tborder:0;\n\tpadding:0;\n\tfont: inherit;\n\tline-height:normal;\n\tcolor: inherit;\n}\n.dj_a11y .dijitReset {\n\t-moz-appearance: none; /* remove predefined high-contrast styling in Firefox */\n}\n\n.dijitInline {\n\t/* To inline block elements.\n\t\tSimilar to InlineBox below, but this has fewer side-effects in Moz.\n\t\tAlso, apparently works on a DIV as well as a FIELDSET.\n\t*/\n\tdisplay:inline-block;\t\t\t/* webkit and FF3 */\n\tborder:0;\n\tpadding:0;\n\tvertical-align:middle;\n}\n\ntable.dijitInline {\n\t/* To inline tables with a given width set */\n\tdisplay:inline-table;\n\tbox-sizing: content-box; -moz-box-sizing: content-box;\n}\n\n.dijitHidden {\n\t/* To hide unselected panes in StackContainer etc. */\n\tposition: absolute; /* remove from normal document flow to simulate display: none */\n\tvisibility: hidden; /* hide element from view, but don't break scrolling, see #18612 */\n}\n.dijitHidden * {\n\tvisibility: hidden !important; /* hide visibility:visible descendants of class=dijitHidden nodes, see #18799 */\n}\n\n.dijitVisible {\n\t/* To show selected pane in StackContainer etc. */\n\tdisplay: block !important;\t/* override user's display:none setting via style setting or indirectly via class */\n\tposition: relative;\t\t\t/* to support setting width/height, see #2033 */\n\tvisibility: visible;\n}\n\n.dj_ie6 .dijitComboBox .dijitInputContainer,\n.dijitInputContainer {\n\t/* for positioning of placeHolder */\n\toverflow: hidden;\n\tfloat: none !important; /* needed to squeeze the INPUT in */\n\tposition: relative;\n}\n.dj_ie7 .dijitInputContainer {\n\tfloat: left !important; /* needed by IE to squeeze the INPUT in */\n\tclear: left;\n\tdisplay: inline-block !important; /* to fix wrong text alignment in textdir=rtl text box */\n}\n\n.dj_ie .dijitSelect input,\n.dj_ie input.dijitTextBox,\n.dj_ie .dijitTextBox input {\n\tfont-size: 100%;\n}\n.dijitSelect .dijitButtonText {\n\tfloat: left;\n\tvertical-align: top;\n}\nTABLE.dijitSelect {\n\tpadding: 0 !important; /* messes up border alignment */\n\tborder-collapse: separate; /* so jsfiddle works with Normalized CSS checked */\n}\n.dijitTextBox .dijitSpinnerButtonContainer,\n.dijitTextBox .dijitArrowButtonContainer,\n.dijitValidationTextBox .dijitValidationContainer {\n\tfloat: right;\n\ttext-align: center;\n}\n.dijitSelect input.dijitInputField,\n.dijitTextBox input.dijitInputField {\n\t/* override unreasonable user styling of buttons and icons */\n\tpadding-left: 0 !important;\n\tpadding-right: 0 !important;\n}\n.dijitValidationTextBox .dijitValidationContainer {\n\tdisplay: none;\n}\n\n.dijitTeeny {\n\tfont-size:1px;\n\tline-height:1px;\n}\n\n.dijitOffScreen { /* these class attributes should supersede any inline positioning style */\n\tposition: absolute !important;\n\tleft: -10000px !important;\n\ttop: -10000px !important;\n}\n\n/*\n * Popup items have a wrapper div (dijitPopup)\n * with the real popup inside, and maybe an iframe too\n */\n.dijitPopup {\n\tposition: absolute;\n\tbackground-color: transparent;\n\tmargin: 0;\n\tborder: 0;\n\tpadding: 0;\n\t-webkit-overflow-scrolling: touch;\n}\n\n.dijitPositionOnly {\n\t/* Null out all position-related properties */\n\tpadding: 0 !important;\n\tborder: 0 !important;\n\tbackground-color: transparent !important;\n\tbackground-image: none !important;\n\theight: auto !important;\n\twidth: auto !important;\n}\n\n.dijitNonPositionOnly {\n\t/* Null position-related properties */\n\tfloat: none !important;\n\tposition: static !important;\n\tmargin: 0 0 0 0 !important;\n\tvertical-align: middle !important;\n}\n\n.dijitBackgroundIframe {\n\t/* iframe used to prevent problems with PDF or other applets overlaying menus etc */\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: -1;\n\tborder: 0;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.dijitDisplayNone {\n\t/* hide something. Use this as a class rather than element.style so another class can override */\n\tdisplay:none !important;\n}\n\n.dijitContainer {\n\t/* for all layout containers */\n\toverflow: hidden;\t/* need on IE so something can be reduced in size, and so scrollbars aren't temporarily displayed when resizing */\n}\n\n/****\n\t\tA11Y\n ****/\n.dj_a11y .dijitIcon,\n.dj_a11y div.dijitArrowButtonInner, /* is this only for Spinner? if so, it should be deleted */\n.dj_a11y span.dijitArrowButtonInner,\n.dj_a11y img.dijitArrowButtonInner,\n.dj_a11y .dijitCalendarIncrementControl,\n.dj_a11y .dijitTreeExpando {\n\t/* hide icon nodes in high contrast mode; when necessary they will be replaced by character equivalents\n\t * exception for input.dijitArrowButtonInner, because the icon and character are controlled by the same node */\n\tdisplay: none;\n}\n.dijitSpinner div.dijitArrowButtonInner {\n\tdisplay: block; /* override previous rule */\n}\n\n.dj_a11y .dijitA11ySideArrow {\n\tdisplay: inline !important; /* display text instead */\n\tcursor: pointer;\n}\n\n/*\n * Since we can't use shading in a11y mode, and since the underline indicates today's date,\n * use a border to show the selected date.\n * Avoid screen jitter when switching selected date by compensating for the selected node's\n * border w/padding on other nodes.\n */\n.dj_a11y .dijitCalendarDateLabel {\n\tpadding: 1px;\n\tborder: 0px !important;\n}\n.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {\n\tborder-style: solid !important;\n\tborder-width: 1px !important;\n\tpadding: 0;\n}\n.dj_a11y .dijitCalendarDateTemplate {\n\tpadding-bottom: 0.1em !important;\t/* otherwise bottom border doesn't appear on IE */\n\tborder: 0px !important;\n}\n.dj_a11y .dijitButtonNode {\n\tborder: black outset medium !important;\n\n\t/* In claro, hovering a toolbar button reduces padding and adds a border.\n\t * Not needed in a11y mode since Toolbar buttons always have a border.\n\t */\n\tpadding: 0 !important;\n}\n.dj_a11y .dijitArrowButton {\n\tpadding: 0 !important;\n}\n\n.dj_a11y .dijitButtonContents {\n\tmargin: 0.15em; /* Margin needed to make focus outline visible */\n}\n\n.dj_a11y .dijitTextBoxReadOnly .dijitInputField,\n.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode {\n\tborder-style: outset!important;\n\tborder-width: medium!important;\n\tborder-color: #999 !important;\n\tcolor:#999 !important;\n}\n\n/* button inner contents - labels, icons etc. */\n.dijitButtonNode * {\n\tvertical-align: middle;\n}\n.dijitSelect .dijitArrowButtonInner,\n.dijitButtonNode .dijitArrowButtonInner {\n\t/* the arrow icon node */\n\tbackground: no-repeat center;\n\twidth: 12px;\n\theight: 12px;\n\tdirection: ltr; /* needed by IE/RTL */\n}\n\n/****\n\t3-element borders: ( dijitLeft + dijitStretch + dijitRight )\n\tThese were added for rounded corners on dijit.form.*Button but never actually used.\n ****/\n\n.dijitLeft {\n\t/* Left part of a 3-element border */\n\tbackground-position:left top;\n\tbackground-repeat:no-repeat;\n}\n\n.dijitStretch {\n\t/* Middle (stretchy) part of a 3-element border */\n\twhite-space:nowrap;\t\t\t/* MOW: move somewhere else */\n\tbackground-repeat:repeat-x;\n}\n\n.dijitRight {\n\t/* Right part of a 3-element border */\n\tbackground-position:right top;\n\tbackground-repeat:no-repeat;\n}\n\n/* Buttons */\n.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode {\n\topacity: 0.5;\n}\n\n.dijitToggleButton,\n.dijitButton,\n.dijitDropDownButton,\n.dijitComboButton {\n\t/* outside of button */\n\tmargin: 0.2em;\n\tvertical-align: middle;\n}\n\n.dijitButtonContents {\n\tdisplay: block;\t\t/* to make focus border rectangular */\n}\ntd.dijitButtonContents {\n\tdisplay: table-cell;\t/* but don't affect Select, ComboButton */\n}\n\n.dijitButtonNode img {\n\t/* make text and images line up cleanly */\n\tvertical-align:middle;\n\t/*margin-bottom:.2em;*/\n}\n\n.dijitToolbar .dijitComboButton {\n\t/* because Toolbar only draws a border around the hovered thing */\n\tborder-collapse: separate;\n}\n\n.dijitToolbar .dijitToggleButton,\n.dijitToolbar .dijitButton,\n.dijitToolbar .dijitDropDownButton,\n.dijitToolbar .dijitComboButton {\n\tmargin: 0;\n}\n\n.dijitToolbar .dijitButtonContents {\n\t/* just because it used to be this way */\n\tpadding: 1px 2px;\n}\n\n\n.dj_webkit .dijitToolbar .dijitDropDownButton {\n\tpadding-left: 0.3em;\n}\n.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {\n\tpadding:0;\n}\n\n.dijitSelect {\n\tborder:1px solid gray;\n}\n.dijitButtonNode {\n\t/* Node that is acting as a button -- may or may not be a BUTTON element */\n\tborder:1px solid gray;\n\tmargin:0;\n\tline-height:normal;\n\tvertical-align: middle;\n\ttext-align:center;\n\twhite-space: nowrap;\n}\n.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {\n\t/* apparent WebKit bug where messing with the font coupled with line-height:normal X 2 (dijitReset & dijitButtonNode)\n\tcan be different than just a single line-height:normal, visible in InlineEditBox/Spinner */\n\tline-height:inherit;\n}\n.dijitTextBox .dijitButtonNode {\n\tborder-width: 0;\n}\n\n.dijitSelect,\n.dijitSelect *,\n.dijitButtonNode,\n.dijitButtonNode * {\n\tcursor: pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n\n.dj_ie .dijitButtonNode {\n\t/* ensure hasLayout */\n\tzoom: 1;\n}\n\n.dj_ie .dijitButtonNode button {\n\t/*\n\t\tdisgusting hack to get rid of spurious padding around button elements\n\t\ton IE. MSIE is truly the web's boat anchor.\n\t*/\n\toverflow: visible;\n}\n\ndiv.dijitArrowButton {\n\tfloat: right;\n}\n\n/******\n\tTextBox related.\n\tEverything that has an \n*******/\n\n.dijitTextBox {\n\tborder: solid black 1px;\n\twidth: 15em;\t/* need to set default size on outer node since inner nodes say and
    . user can override */\n\tvertical-align: middle;\n}\n\n.dijitTextBoxReadOnly,\n.dijitTextBoxDisabled {\n\tcolor: gray;\n}\n.dj_safari .dijitTextBoxDisabled input {\n\tcolor: #B0B0B0; /* because Safari lightens disabled input/textarea no matter what color you specify */\n}\n.dj_safari textarea.dijitTextAreaDisabled {\n\tcolor: #333; /* because Safari lightens disabled input/textarea no matter what color you specify */\n}\n.dj_gecko .dijitTextBoxReadOnly input.dijitInputField, /* disable arrow and validation presentation inputs but allow real input for text selection */\n.dj_gecko .dijitTextBoxDisabled input {\n\t-moz-user-input: none; /* prevent focus of disabled textbox buttons */\n}\n\n.dijitPlaceHolder {\n\t/* hint text that appears in a textbox until user starts typing */\n\tcolor: #AAAAAA;\n\tfont-style: italic;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twhite-space: nowrap;\n\tpointer-events: none; /* so cut/paste context menu shows up when right clicking */\n}\n\n.dijitTimeTextBox {\n\twidth: 8em;\n}\n\n/* rules for webkit to deal with fuzzy blue focus border */\n.dijitTextBox input:focus {\n\toutline: none;\t/* blue fuzzy line looks wrong on combobox or something w/validation icon showing */\n}\n.dijitTextBoxFocused {\n\toutline: 5px -webkit-focus-ring-color;\n}\n\n.dijitSelect input,\n.dijitTextBox input {\n\tfloat: left; /* needed by IE to remove secret margin */\n}\n.dj_ie6 input.dijitTextBox,\n.dj_ie6 .dijitTextBox input {\n\tfloat: none;\n}\n.dijitInputInner {\n\t/* for when an is embedded inside an inline-block
    with a size and border */\n\tborder:0 !important;\n\tbackground-color:transparent !important;\n\twidth:100% !important;\n\t/* IE dislikes horizontal tweaking combined with width:100% so punish everyone for consistency */\n\tpadding-left: 0 !important;\n\tpadding-right: 0 !important;\n\tmargin-left: 0 !important;\n\tmargin-right: 0 !important;\n}\n.dj_a11y .dijitTextBox input {\n\tmargin: 0 !important;\n}\n.dijitValidationTextBoxError input.dijitValidationInner,\n.dijitSelect input,\n.dijitTextBox input.dijitArrowButtonInner {\n\t/* used to display arrow icon/validation icon, or in arrow character in high contrast mode.\n\t * The css below is a trick to hide the character in non-high-contrast mode\n\t */\n\ttext-indent: -2em !important;\n\tdirection: ltr !important;\n\ttext-align: left !important;\n\theight: auto !important;\n}\n.dj_ie .dijitSelect input,\n.dj_ie .dijitTextBox input,\n.dj_ie input.dijitTextBox {\n\toverflow-y: visible; /* inputs need help expanding when padding is added or line-height is adjusted */\n\tline-height: normal; /* strict mode */\n}\n.dijitSelect .dijitSelectLabel span {\n\tline-height: 100%;\n}\n.dj_ie .dijitSelect .dijitSelectLabel {\n\tline-height: normal;\n}\n.dj_ie6 .dijitSelect .dijitSelectLabel,\n.dj_ie7 .dijitSelect .dijitSelectLabel,\n.dj_ie8 .dijitSelect .dijitSelectLabel,\n.dj_iequirks .dijitSelect .dijitSelectLabel,\n.dijitSelect td,\n.dj_ie6 .dijitSelect input,\n.dj_iequirks .dijitSelect input,\n.dj_ie6 .dijitSelect .dijitValidationContainer,\n.dj_ie6 .dijitTextBox input,\n.dj_ie6 input.dijitTextBox,\n.dj_iequirks .dijitTextBox input.dijitValidationInner,\n.dj_iequirks .dijitTextBox input.dijitArrowButtonInner,\n.dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner,\n.dj_iequirks .dijitTextBox input.dijitInputInner,\n.dj_iequirks input.dijitTextBox {\n\tline-height: 100%; /* IE7 problem where the icon is vertically way too low w/o this */\n}\n.dj_a11y input.dijitValidationInner,\n.dj_a11y input.dijitArrowButtonInner {\n\t/* (in high contrast mode) revert rules from above so character displays */\n\ttext-indent: 0 !important;\n\twidth: 1em !important;\n\tcolor: black !important;\n}\n.dijitValidationTextBoxError .dijitValidationContainer {\n\tdisplay: inline;\n\tcursor: default;\n}\n\n/* ComboBox & Spinner */\n\n.dijitSpinner .dijitSpinnerButtonContainer,\n.dijitComboBox .dijitArrowButtonContainer {\n\t/* dividing line between input area and up/down button(s) for ComboBox and Spinner */\n\tborder-width: 0 0 0 1px !important; /* !important needed due to wayward \".theme .dijitButtonNode\" rules */\n}\n.dj_a11y .dijitSelect .dijitArrowButtonContainer,\n.dijitToolbar .dijitComboBox .dijitArrowButtonContainer {\n\t/* overrides above rule plus mirror-image rule in dijit_rtl.css to have no divider when ComboBox in Toolbar */\n\tborder-width: 0 !important;\n}\n\n.dijitComboBoxMenu {\n\t/* Drop down menu is implemented as
    • ... but we don't want circles before each item */\n\tlist-style-type: none;\n}\n.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {\n\t/* dividing line between input area and up/down button(s) for ComboBox and Spinner */\n\tborder-width: 0;\n}\n.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {\n\tclear: both; /* IE workaround */\n}\n\n.dj_ie .dijitToolbar .dijitComboBox {\n\t/* make combobox buttons align properly with other buttons in a toolbar */\n\tvertical-align: middle;\n}\n\n/* Spinner */\n\n.dijitTextBox .dijitSpinnerButtonContainer {\n\twidth: 1em;\n\tposition: relative !important;\n\toverflow: hidden;\n}\n.dijitSpinner .dijitSpinnerButtonInner {\n\twidth:1em;\n\tvisibility:hidden !important; /* just a sizing element */\n\toverflow-x:hidden;\n}\n.dijitComboBox .dijitButtonNode,\n.dijitSpinnerButtonContainer .dijitButtonNode {\n\tborder-width: 0;\n}\n.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode {\n\tborder-width: 0px !important;\n\tborder-style: solid !important;\n}\n.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,\n.dj_a11y .dijitSpinner .dijitArrowButtonInner,\n.dj_a11y .dijitSpinnerButtonContainer input {\n\twidth: 1em !important;\n}\n.dj_a11y .dijitSpinner .dijitArrowButtonInner {\n\tmargin: 0 auto !important; /* should auto-center */\n}\n.dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n\tpadding-left: 0.3em !important;\n\tpadding-right: 0.3em !important;\n\tmargin-left: 0.3em !important;\n\tmargin-right: 0.3em !important;\n\twidth: 1.4em !important;\n}\n.dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n\tpadding-left: 0 !important; /* manually center INPUT: character is .5em and total width = 1em */\n\tpadding-right: 0 !important;\n\twidth: 1em !important;\n}\n.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n\tmargin-left: 0.1em !important;\n\tmargin-right: 0.1em !important;\n\twidth: 1em !important;\n}\n.dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n\tmargin-left: 0 !important;\n\tmargin-right: 0 !important;\n\twidth: 2em !important;\n}\n.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {\n\t/* note: .dijitInputLayoutContainer makes this rule override .dijitArrowButton settings\n\t * for dijit.form.Button\n\t */\n\tpadding: 0;\n\tposition: absolute !important;\n\tright: 0;\n\tfloat: none;\n\theight: 50%;\n\twidth: 100%;\n\tbottom: auto;\n\tleft: 0;\n\tright: auto;\n}\n.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {\n\twidth: auto;\n}\n.dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton {\n\toverflow: visible !important;\n}\n.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {\n\ttop: 50%;\n\tborder-top-width: 1px !important;\n}\n.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {\n\ttop: 0;\n}\n.dijitSpinner .dijitArrowButtonInner {\n\tmargin: auto;\n\toverflow-x: hidden;\n\theight: 100% !important;\n}\n.dj_iequirks .dijitSpinner .dijitArrowButtonInner {\n\theight: auto !important;\n}\n.dijitSpinner .dijitArrowButtonInner .dijitInputField {\n\t-moz-transform: scale(0.5);\n\t-moz-transform-origin: center top;\n\t-webkit-transform: scale(0.5);\n\t-webkit-transform-origin: center top;\n\t-o-transform: scale(0.5);\n\t-o-transform-origin: center top;\n\ttransform: scale(0.5);\n\ttransform-origin: left top;\n\tpadding-top: 0;\n\tpadding-bottom: 0;\n\tpadding-left: 0 !important;\n\tpadding-right: 0 !important;\n\twidth: 100%;\n\tvisibility: hidden;\n}\n.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n\tzoom: 50%; /* emulate transform: scale(0.5) */\n}\n.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {\n\toverflow: hidden;\n}\n\n.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {\n\twidth: 100%;\n}\n.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {\n\twidth: 1em; /* matches .dj_a11y .dijitTextBox .dijitSpinnerButtonContainer rule - 100% is the whole screen width in quirks */\n}\n.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n\tvertical-align:top;\n\tvisibility: visible;\n}\n.dj_a11y .dijitSpinnerButtonContainer {\n\twidth: 1em;\n}\n\n/****\n\t\tdijit.form.CheckBox\n \t &\n \t\tdijit.form.RadioButton\n ****/\n\n.dijitCheckBox,\n.dijitRadio,\n.dijitCheckBoxInput {\n\tpadding: 0;\n\tborder: 0;\n\twidth: 16px;\n\theight: 16px;\n\tbackground-position:center center;\n\tbackground-repeat:no-repeat;\n\toverflow: hidden;\n}\n\n.dijitCheckBox input,\n.dijitRadio input {\n\tmargin: 0;\n\tpadding: 0;\n\tdisplay: block;\n}\n\n.dijitCheckBoxInput {\n\t/* place the actual input on top, but invisible */\n\topacity: 0;\n}\n\n.dj_ie .dijitCheckBoxInput {\n\tfilter: alpha(opacity=0);\n}\n\n.dj_a11y .dijitCheckBox,\n.dj_a11y .dijitRadio {\n\t/* in a11y mode we display the native checkbox (not the icon), so don't restrict the size */\n\twidth: auto !important;\n\theight: auto !important;\n}\n.dj_a11y .dijitCheckBoxInput {\n\topacity: 1;\n\tfilter: none;\n\twidth: auto;\n\theight: auto;\n}\n\n.dj_a11y .dijitFocusedLabel {\n\t/* for checkboxes or radio buttons in high contrast mode, use border rather than outline to indicate focus (outline does not work in FF)*/\n\tborder: 1px dotted;\n\toutline: 0px !important;\n}\n\n/****\n\t\tdijit.ProgressBar\n ****/\n\n.dijitProgressBar {\n z-index: 0; /* so z-index settings below have no effect outside of the ProgressBar */\n}\n.dijitProgressBarEmpty {\n\t/* outer container and background of the bar that's not finished yet*/\n\tposition:relative;overflow:hidden;\n\tborder:1px solid black; \t/* a11y: border necessary for high-contrast mode */\n\tz-index:0;\t\t\t/* establish a stacking context for this progress bar */\n}\n\n.dijitProgressBarFull {\n\t/* outer container for background of bar that is finished */\n\tposition:absolute;\n\toverflow:hidden;\n\tz-index:-1;\n\ttop:0;\n\twidth:100%;\n}\n.dj_ie6 .dijitProgressBarFull {\n\theight:1.6em;\n}\n\n.dijitProgressBarTile {\n\t/* inner container for finished portion */\n\tposition:absolute;\n\toverflow:hidden;\n\ttop:0;\n\tleft:0;\n\tbottom:0;\n\tright:0;\n\tmargin:0;\n\tpadding:0;\n\twidth: 100%; /* needed for IE/quirks */\n\theight:auto;\n\tbackground-color:#aaa;\n\tbackground-attachment: fixed;\n}\n\n.dj_a11y .dijitProgressBarTile {\n\t/* a11y: The border provides visibility in high-contrast mode */\n\tborder-width:2px;\n\tborder-style:solid;\n\tbackground-color:transparent !important;\n}\n\n.dj_ie6 .dijitProgressBarTile {\n\t/* width:auto works in IE6 with position:static but not position:absolute */\n\tposition:static;\n\t/* height:auto or 100% does not work in IE6 */\n\theight:1.6em;\n}\n\n.dijitProgressBarIndeterminate .dijitProgressBarTile {\n\t/* animated gif for 'indeterminate' mode */\n}\n\n.dijitProgressBarIndeterminateHighContrastImage {\n\tdisplay:none;\n}\n\n.dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {\n\tdisplay:block;\n\tposition:absolute;\n\ttop:0;\n\tbottom:0;\n\tmargin:0;\n\tpadding:0;\n\twidth:100%;\n\theight:auto;\n}\n\n.dijitProgressBarLabel {\n\tdisplay:block;\n\tposition:static;\n\twidth:100%;\n\ttext-align:center;\n\tbackground-color:transparent !important;\n}\n\n/****\n\t\tdijit.Tooltip\n ****/\n\n.dijitTooltip {\n\tposition: absolute;\n\tz-index: 2000;\n\tdisplay: block;\n\t/* make visible but off screen */\n\tleft: 0;\n\ttop: -10000px;\n\toverflow: visible;\n}\n\n.dijitTooltipContainer {\n\tborder: solid black 2px;\n\tbackground: #b8b5b5;\n\tcolor: black;\n\tfont-size: small;\n}\n\n.dijitTooltipFocusNode {\n\tpadding: 2px 2px 2px 2px;\n}\n\n.dijitTooltipConnector {\n\tposition: absolute;\n}\n.dj_a11y .dijitTooltipConnector {\n\tdisplay: none;\t/* won't show b/c it's background-image; hide to avoid border gap */\n}\n\n.dijitTooltipData {\n\tdisplay:none;\n}\n\n/* Layout widgets. This is essential CSS to make layout work (it isn't \"styling\" CSS)\n make sure that the position:absolute in dijitAlign* overrides other classes */\n\n.dijitLayoutContainer {\n\tposition: relative;\n\tdisplay: block;\n\toverflow: hidden;\n}\n\n.dijitAlignTop,\n.dijitAlignBottom,\n.dijitAlignLeft,\n.dijitAlignRight {\n\tposition: absolute;\n\toverflow: hidden;\n}\n\nbody .dijitAlignClient { position: absolute; }\n\n/*\n * BorderContainer\n *\n * .dijitBorderContainer is a stylized layout where panes have border and margin.\n * .dijitBorderContainerNoGutter is a raw layout.\n */\n.dijitBorderContainer, .dijitBorderContainerNoGutter {\n\tposition:relative;\n\toverflow: hidden;\n z-index: 0; /* so z-index settings below have no effect outside of the BorderContainer */\n}\n\n.dijitBorderContainerPane,\n.dijitBorderContainerNoGutterPane {\n\tposition: absolute !important;\t/* !important to override position:relative in dijitTabContainer etc. */\n\tz-index: 2;\t\t/* above the splitters so that off-by-one browser errors don't cover up border of pane */\n}\n\n.dijitBorderContainer > .dijitTextArea {\n\t/* On Safari, for SimpleTextArea inside a BorderContainer,\n\t\tdon't want to display the grip to resize */\n\tresize: none;\n}\n\n.dijitGutter {\n\t/* gutter is just a place holder for empty space between panes in BorderContainer */\n\tposition: absolute;\n\tfont-size: 1px;\t\t/* needed by IE6 even though div is empty, otherwise goes to 15px */\n}\n\n/* SplitContainer\n\n\t'V' == container that splits vertically (up/down)\n\t'H' = horizontal (left/right)\n*/\n\n.dijitSplitter {\n\tposition: absolute;\n\toverflow: hidden;\n\tz-index: 10;\t\t/* above the panes so that splitter focus is visible on FF, see #7583*/\n\tbackground-color: #fff;\n\tborder-color: gray;\n\tborder-style: solid;\n\tborder-width: 0;\n}\n.dj_ie .dijitSplitter {\n\tz-index: 1;\t/* behind the panes so that pane borders aren't obscured see test_Gui.html/[14392] */\n}\n\n.dijitSplitterActive {\n\tz-index: 11 !important;\n}\n\n.dijitSplitterCover {\n\tposition:absolute;\n\tz-index:-1;\n\ttop:0;\n\tleft:0;\n\twidth:100%;\n\theight:100%;\n}\n\n.dijitSplitterCoverActive {\n\tz-index:3 !important;\n}\n\n/* #6945: stop mouse events */\n.dj_ie .dijitSplitterCover {\n\tbackground: white;\n\topacity: 0;\n}\n.dj_ie6 .dijitSplitterCover,\n.dj_ie7 .dijitSplitterCover,\n.dj_ie8 .dijitSplitterCover {\n\tfilter: alpha(opacity=0);\n}\n\n.dijitSplitterH {\n\theight: 7px;\n\tborder-top:1px;\n\tborder-bottom:1px;\n\tcursor: row-resize;\n\t-webkit-tap-highlight-color: transparent;\n}\n.dijitSplitterV {\n\twidth: 7px;\n\tborder-left:1px;\n\tborder-right:1px;\n\tcursor: col-resize;\n\t-webkit-tap-highlight-color: transparent;\n}\n.dijitSplitContainer {\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: block;\n}\n\n.dijitSplitPane {\n\tposition: absolute;\n}\n\n.dijitSplitContainerSizerH,\n.dijitSplitContainerSizerV {\n\tposition:absolute;\n\tfont-size: 1px;\n\tbackground-color: ThreeDFace;\n\tborder: 1px solid;\n\tborder-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;\n\tmargin: 0;\n}\n\n.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb {\n\toverflow:hidden;\n\tposition:absolute;\n\ttop:49%;\n}\n\n.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb {\n\tposition:absolute;\n\tleft:49%;\n}\n\n.dijitSplitterShadow,\n.dijitSplitContainerVirtualSizerH,\n.dijitSplitContainerVirtualSizerV {\n\tfont-size: 1px;\n\tbackground-color: ThreeDShadow;\n\t-moz-opacity: 0.5;\n\topacity: 0.5;\n\tfilter: Alpha(Opacity=50);\n\tmargin: 0;\n}\n\n.dijitSplitContainerSizerH, .dijitSplitContainerVirtualSizerH {\n\tcursor: col-resize;\n}\n\n.dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {\n\tcursor: row-resize;\n}\n\n.dj_a11y .dijitSplitterH {\n\tborder-top:1px solid #d3d3d3 !important;\n\tborder-bottom:1px solid #d3d3d3 !important;\n}\n.dj_a11y .dijitSplitterV {\n\tborder-left:1px solid #d3d3d3 !important;\n\tborder-right:1px solid #d3d3d3 !important;\n}\n\n/* ContentPane */\n\n.dijitContentPane {\n\tdisplay: block;\n\toverflow: auto;\t/* if we don't have this (or overflow:hidden), then Widget.resizeTo() doesn't make sense for ContentPane */\n\t-webkit-overflow-scrolling: touch;\n}\n\n.dijitContentPaneSingleChild {\n\t/*\n\t * if the ContentPane holds a single layout widget child which is being sized to match the content pane,\n\t * then the ContentPane should never get a scrollbar (but it does due to browser bugs, see #9449\n\t */\n\toverflow: hidden;\n}\n\n.dijitContentPaneLoading .dijitIconLoading,\n.dijitContentPaneError .dijitIconError {\n\tmargin-right: 9px;\n}\n\n/* TitlePane and Fieldset */\n\n.dijitTitlePane {\n\tdisplay: block;\n\toverflow: hidden;\n}\n.dijitFieldset {\n\tborder: 1px solid gray;\n}\n.dijitTitlePaneTitle, .dijitFieldsetTitle {\n\tcursor: pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n.dijitTitlePaneTitleFixedOpen, .dijitTitlePaneTitleFixedClosed,\n.dijitFieldsetTitleFixedOpen, .dijitFieldsetTitleFixedClosed {\n\t/* TitlePane or Fieldset that cannot be toggled */\n\tcursor: default;\n}\n.dijitTitlePaneTitle * {\n\tvertical-align: middle;\n}\n.dijitTitlePane .dijitArrowNodeInner, .dijitFieldset .dijitArrowNodeInner {\n\t/* normally, hide arrow text in favor of icon */\n\tdisplay: none;\n}\n.dj_a11y .dijitTitlePane .dijitArrowNodeInner, .dj_a11y .dijitFieldset .dijitArrowNodeInner {\n\t/* ... except in a11y mode, then show text arrow */\n\tdisplay: inline;\n\tfont-family: monospace;\t\t/* because - and + are different widths */\n}\n.dj_a11y .dijitTitlePane .dijitArrowNode, .dj_a11y .dijitFieldset .dijitArrowNode {\n\t/* ... and hide icon (TODO: just point dijitIcon class on the icon, and it hides automatically) */\n\tdisplay: none;\n}\n.dijitTitlePaneTitleFixedOpen .dijitArrowNode, .dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner,\n.dijitTitlePaneTitleFixedClosed .dijitArrowNode, .dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner,\n.dijitFieldsetTitleFixedOpen .dijitArrowNode, .dijitFieldsetTitleFixedOpen .dijitArrowNodeInner,\n.dijitFieldsetTitleFixedClosed .dijitArrowNode, .dijitFieldsetTitleFixedClosed .dijitArrowNodeInner {\n\t/* don't show the open close icon or text arrow; it makes the user think the pane is closable */\n\tdisplay: none !important;\t/* !important to override above a11y rules to show text arrow */\n}\n\n.dj_ie6 .dijitTitlePaneContentOuter,\n.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {\n\t/* force hasLayout to ensure borders etc, show up */\n\tzoom: 1;\n}\n\n/* Color Palette\n * Sizes designed so that table cell positions match icons in underlying image,\n * which appear at 20x20 intervals.\n */\n\n.dijitColorPalette {\n\tborder: 1px solid #999;\n\tbackground: #fff;\n\tposition: relative;\n}\n\n.dijitColorPalette .dijitPaletteTable {\n\t/* Table that holds the palette cells, and overlays image file with color swatches.\n\t * padding/margin to align table with image.\n\t */\n\tpadding: 2px 3px 3px 3px;\n\tposition: relative;\n\toverflow: hidden;\n\toutline: 0;\n\tborder-collapse: separate;\n}\n.dj_ie6 .dijitColorPalette .dijitPaletteTable,\n.dj_ie7 .dijitColorPalette .dijitPaletteTable,\n.dj_iequirks .dijitColorPalette .dijitPaletteTable {\n\t/* using padding above so that focus border isn't cutoff on moz/webkit,\n\t * but using margin on IE because padding doesn't seem to work\n\t */\n\tpadding: 0;\n\tmargin: 2px 3px 3px 3px;\n}\n\n.dijitColorPalette .dijitPaletteCell {\n\t/*
    in the */\n\tfont-size: 1px;\n\tvertical-align: middle;\n\ttext-align: center;\n\tbackground: none;\n}\n.dijitColorPalette .dijitPaletteImg {\n\t/* Called dijitPaletteImg for back-compat, this actually wraps the color swatch with a border and padding */\n\tpadding: 1px;\t\t/* white area between gray border and color swatch */\n\tborder: 1px solid #999;\n\tmargin: 2px 1px;\n\tcursor: default;\n\tfont-size: 1px;\t\t/* prevent from getting bigger just to hold a character */\n}\n.dj_gecko .dijitColorPalette .dijitPaletteImg {\n\tpadding-bottom: 0;\t/* workaround rendering glitch on FF, it adds an extra pixel at the bottom */\n}\n.dijitColorPalette .dijitColorPaletteSwatch {\n\t/* the actual part where the color is */\n\twidth: 14px;\n\theight: 12px;\n}\n.dijitPaletteTable td {\n\t\tpadding: 0;\n}\n.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {\n\t/* hovered color swatch */\n\tborder: 1px solid #000;\n}\n\n.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,\n.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {\n\tborder: 2px solid #000;\n\tmargin: 1px 0;\t/* reduce margin to compensate for increased border */\n}\n\n\n.dj_a11y .dijitColorPalette .dijitPaletteTable,\n.dj_a11y .dijitColorPalette .dijitPaletteTable * {\n\t/* table cells are to catch events, but the swatches are in the PaletteImg behind the table */\n\tbackground-color: transparent !important;\n}\n\n/* AccordionContainer */\n\n.dijitAccordionContainer {\n\tborder:1px solid #b7b7b7;\n\tborder-top:0 !important;\n}\n.dijitAccordionTitle {\n\tcursor: pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n.dijitAccordionTitleSelected {\n\tcursor: default;\n}\n\n/* images off, high-contrast mode styles */\n.dijitAccordionTitle .arrowTextUp,\n.dijitAccordionTitle .arrowTextDown {\n\tdisplay: none;\n\tfont-size: 0.65em;\n\tfont-weight: normal !important;\n}\n\n.dj_a11y .dijitAccordionTitle .arrowTextUp,\n.dj_a11y .dijitAccordionTitleSelected .arrowTextDown {\n\tdisplay: inline;\n}\n\n.dj_a11y .dijitAccordionTitleSelected .arrowTextUp {\n\tdisplay: none;\n}\n\n.dijitAccordionChildWrapper {\n\t/* this is the node whose height is adjusted */\n\toverflow: hidden;\n}\n\n/* Calendar */\n\n.dijitCalendarContainer table {\n\twidth: auto;\t/* in case user has specified a width for the TABLE nodes, see #10553 */\n\tclear: both; /* clear margin created for left/right month arrows; needed on IE10 for CalendarLite */\n}\n.dijitCalendarContainer th, .dijitCalendarContainer td {\n\tpadding: 0;\n\tvertical-align: middle;\n}\n\n.dijitCalendarMonthContainer {\n\ttext-align: center;\n}\n.dijitCalendarDecrementArrow {\n\tfloat: left;\n}\n.dijitCalendarIncrementArrow {\n\tfloat: right;\n}\n\n.dijitCalendarYearLabel {\n white-space: nowrap; /* make sure previous, current, and next year appear on same row */\n}\n\n.dijitCalendarNextYear {\n\tmargin:0 0 0 0.55em;\n}\n\n.dijitCalendarPreviousYear {\n\tmargin:0 0.55em 0 0;\n}\n\n.dijitCalendarIncrementControl {\n\tvertical-align: middle;\n}\n\n.dijitCalendarIncrementControl,\n.dijitCalendarDateTemplate,\n.dijitCalendarMonthLabel,\n.dijitCalendarPreviousYear,\n.dijitCalendarNextYear {\n\tcursor: pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n\n.dijitCalendarDisabledDate {\n\tcolor: gray;\n\ttext-decoration: line-through;\n\tcursor: default;\n}\n\n.dijitSpacer {\n\t/* don't display it, but make it affect the width */\n \tposition: relative;\n \theight: 1px;\n \toverflow: hidden;\n \tvisibility: hidden;\n}\n\n/* Styling for month drop down list */\n\n.dijitCalendarMonthMenu .dijitCalendarMonthLabel {\n\ttext-align:center;\n}\n\n/* Menu */\n\n.dijitMenu {\n\tborder:1px solid black;\n\tbackground-color:white;\n}\n.dijitMenuTable {\n\tborder-collapse:collapse;\n\tborder-width:0;\n\tbackground-color:white;\n}\n\n/* workaround for webkit bug #8427, remove this when it is fixed upstream */\n.dj_webkit .dijitMenuTable td[colspan=\"2\"]{\n\tborder-right:hidden;\n}\n\n.dijitMenuItem {\n\ttext-align: left;\n\twhite-space: nowrap;\n\tpadding:.1em .2em;\n\tcursor:pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n\n/*\nNo need to show a focus border since it's obvious from the shading, and there's a .dj_a11y .dijitMenuItemSelected\nrule below that handles the high contrast case when there's no shading.\nHiding the focus border also works around webkit bug https://code.google.com/p/chromium/issues/detail?id=125779.\n*/\n.dijitMenuItem:focus {\n\toutline: none\n}\n\n.dijitMenuPassive .dijitMenuItemHover,\n.dijitMenuItemSelected {\n\t/*\n\t * dijitMenuItemHover refers to actual mouse over\n\t * dijitMenuItemSelected is used after a menu has been \"activated\" by\n\t * clicking it, tabbing into it, or being opened from a parent menu,\n\t * and denotes that the menu item has focus or that focus is on a child\n\t * menu\n\t */\n\tbackground-color:black;\n\tcolor:white;\n}\n\n.dijitMenuItemIcon, .dijitMenuExpand {\n\tbackground-repeat: no-repeat;\n}\n\n.dijitMenuItemDisabled * {\n\t/* for a disabled menu item, just set it to mostly transparent */\n\topacity:0.5;\n\tcursor:default;\n}\n.dj_ie .dj_a11y .dijitMenuItemDisabled,\n.dj_ie .dj_a11y .dijitMenuItemDisabled *,\n.dj_ie .dijitMenuItemDisabled * {\n\tcolor: gray;\n\tfilter: alpha(opacity=35);\n}\n\n.dijitMenuItemLabel {\n\tvertical-align: middle;\n}\n\n.dj_a11y .dijitMenuItemSelected {\n\tborder: 1px dotted black !important;\t/* for 2.0 use outline instead, to prevent jitter */\n}\n\n.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel {\n\tborder-width: 1px;\n\tborder-style: solid;\n}\n.dj_ie8 .dj_a11y .dijitMenuItemLabel {\n\tposition:static;\n}\n\n.dijitMenuExpandA11y {\n\tdisplay: none;\n}\n.dj_a11y .dijitMenuExpandA11y {\n\tdisplay: inline;\n}\n\n.dijitMenuSeparator td {\n\tborder: 0;\n\tpadding: 0;\n}\n\n/* separator can be two pixels -- set border of either one to 0 to have only one */\n.dijitMenuSeparatorTop {\n\theight: 50%;\n\tmargin: 0;\n\tmargin-top:3px;\n\tfont-size: 1px;\n}\n\n.dijitMenuSeparatorBottom {\n\theight: 50%;\n\tmargin: 0;\n\tmargin-bottom:3px;\n\tfont-size: 1px;\n}\n\n/* CheckedMenuItem and RadioMenuItem */\n.dijitMenuItemIconChar {\n\tdisplay: none;\t\t/* don't display except in high contrast mode */\n\tvisibility: hidden;\t/* for high contrast mode when menuitem is unchecked: leave space for when it is checked */\n}\n.dj_a11y .dijitMenuItemIconChar {\n\tdisplay: inline;\t/* display character in high contrast mode, since icon doesn't show */\n}\n.dijitCheckedMenuItemChecked .dijitMenuItemIconChar,\n.dijitRadioMenuItemChecked .dijitMenuItemIconChar {\n\tvisibility: visible; /* menuitem is checked */\n}\n.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem {\n\t/* so bottom border of MenuBar appears on IE7 in high-contrast mode */\n\tmargin: 0;\n}\n\n/* StackContainer */\n\n.dijitStackController .dijitToggleButtonChecked * {\n\tcursor: default;\t/* because pressing it has no effect */\n}\n\n/***\nTabContainer\n\nMain class hierarchy:\n\n.dijitTabContainer - the whole TabContainer\n .dijitTabController / .dijitTabListContainer-top - wrapper for tab buttons, scroll buttons\n\t .dijitTabListWrapper / .dijitTabContainerTopStrip - outer wrapper for tab buttons (normal width)\n\t\t.nowrapTabStrip / .dijitTabContainerTop-tabs - inner wrapper for tab buttons (50K width)\n .dijitTabPaneWrapper - wrapper for content panes, has all borders except the one between content and tabs\n***/\n\n.dijitTabContainer {\n z-index: 0; /* so z-index settings below have no effect outside of the TabContainer */\n overflow: visible; /* prevent off-by-one-pixel errors from hiding bottom border (opposite tab labels) */\n}\n.dj_ie6 .dijitTabContainer {\n /* workaround IE6 problem when tall content overflows TabContainer, see editor/test_FullScreen.html */\n overflow: hidden;\n\n}\n.dijitTabContainerNoLayout {\n\twidth: 100%;\t/* otherwise ScrollingTabController goes to 50K pixels wide */\n}\n\n.dijitTabContainerBottom-tabs,\n.dijitTabContainerTop-tabs,\n.dijitTabContainerLeft-tabs,\n.dijitTabContainerRight-tabs {\n z-index: 1;\n\toverflow: visible !important; /* so tabs can cover up border adjacent to container */\n}\n\n.dijitTabController {\n z-index: 1;\n}\n.dijitTabContainerBottom-container,\n.dijitTabContainerTop-container,\n.dijitTabContainerLeft-container,\n.dijitTabContainerRight-container {\n\tz-index:0;\n\toverflow: hidden;\n\tborder: 1px solid black;\n}\n.nowrapTabStrip {\n\twidth: 50000px;\n\tdisplay: block;\n\tposition: relative;\n text-align: left; /* just in case ancestor has non-standard setting */\n z-index: 1;\n}\n.dijitTabListWrapper {\n\toverflow: hidden;\n z-index: 1;\n}\n\n.dj_a11y .tabStripButton img {\n\t/* hide the icons (or rather the empty space where they normally appear) because text will appear instead */\n\tdisplay: none;\n}\n\n.dijitTabContainerTop-tabs {\n\tborder-bottom: 1px solid black;\n}\n.dijitTabContainerTop-container {\n\tborder-top: 0;\n}\n\n.dijitTabContainerLeft-tabs {\n\tborder-right: 1px solid black;\n\tfloat: left; /* needed for IE7 RTL mode */\n}\n.dijitTabContainerLeft-container {\n\tborder-left: 0;\n}\n\n.dijitTabContainerBottom-tabs {\n\tborder-top: 1px solid black;\n}\n.dijitTabContainerBottom-container {\n\tborder-bottom: 0;\n}\n\n.dijitTabContainerRight-tabs {\n\tborder-left: 1px solid black;\n\tfloat: left; /* needed for IE7 RTL mode */\n}\n.dijitTabContainerRight-container {\n\tborder-right: 0;\n}\n\ndiv.dijitTabDisabled, .dj_ie div.dijitTabDisabled {\n\tcursor: auto;\n}\n\n.dijitTab {\n\tposition:relative;\n\tcursor:pointer;\n\t-webkit-tap-highlight-color: transparent;\n\twhite-space:nowrap;\n\tz-index:3;\n}\n.dijitTab * {\n\t/* make tab icons and close icon line up w/text */\n\tvertical-align: middle;\n}\n.dijitTabChecked {\n\tcursor: default;\t/* because clicking will have no effect */\n}\n\n.dijitTabContainerTop-tabs .dijitTab {\n\ttop: 1px;\t/* to overlap border on .dijitTabContainerTop-tabs */\n}\n.dijitTabContainerBottom-tabs .dijitTab {\n\ttop: -1px;\t/* to overlap border on .dijitTabContainerBottom-tabs */\n}\n.dijitTabContainerLeft-tabs .dijitTab {\n\tleft: 1px;\t/* to overlap border on .dijitTabContainerLeft-tabs */\n}\n.dijitTabContainerRight-tabs .dijitTab {\n\tleft: -1px;\t/* to overlap border on .dijitTabContainerRight-tabs */\n}\n\n\n.dijitTabContainerTop-tabs .dijitTab,\n.dijitTabContainerBottom-tabs .dijitTab {\n\t/* Inline-block */\n\tdisplay:inline-block;\t\t\t/* webkit and FF3 */\n}\n\n.tabStripButton {\n\tz-index: 12;\n}\n\n.dijitTabButtonDisabled .tabStripButton {\n\tdisplay: none;\n}\n\n\n.dijitTabCloseButton {\n\tmargin-left: 1em;\n}\n\n.dijitTabCloseText {\n\tdisplay:none;\n}\n\n.dijitTab .tabLabel {\n\t/* make sure tabs w/close button and w/out close button are same height, even w/small (<15px) font.\n\t * assumes <=15px height for close button icon.\n\t */\n\tmin-height: 15px;\n\tdisplay: inline-block;\n}\n.dijitNoIcon {\n\t/* applied to / node when there is no icon specified */\n\tdisplay: none;\n}\n.dj_ie6 .dijitTab .dijitNoIcon {\n\t/* because min-height (on .tabLabel, above) doesn't work on IE6 */\n\tdisplay: inline;\n\theight: 15px;\n\twidth: 1px;\n}\n\n/* images off, high-contrast mode styles */\n\n.dj_a11y .dijitTabCloseButton {\n\tbackground-image: none !important;\n\twidth: auto !important;\n\theight: auto !important;\n}\n\n.dj_a11y .dijitTabCloseText {\n\tdisplay: inline;\n}\n\n.dijitTabPane,\n.dijitStackContainer-child,\n.dijitAccordionContainer-child {\n\t/* children of TabContainer, StackContainer, and AccordionContainer shouldn't have borders\n\t * b/c a border is already there from the TabContainer/StackContainer/AccordionContainer itself.\n\t */\n border: none !important;\n}\n\n/* InlineEditBox */\n.dijitInlineEditBoxDisplayMode {\n\tborder: 1px solid transparent;\t/* so keyline (border) on hover can appear without screen jump */\n\tcursor: text;\n}\n\n.dj_a11y .dijitInlineEditBoxDisplayMode,\n.dj_ie6 .dijitInlineEditBoxDisplayMode {\n\t/* except that IE6 doesn't support transparent borders, nor does high contrast mode */\n\tborder: none;\n}\n\n.dijitInlineEditBoxDisplayModeHover,\n.dj_a11y .dijitInlineEditBoxDisplayModeHover,\n.dj_ie6 .dijitInlineEditBoxDisplayModeHover {\n\t/* An InlineEditBox in view mode (click this to edit the text) */\n\tbackground-color: #e2ebf2;\n\tborder: solid 1px black;\n}\n\n.dijitInlineEditBoxDisplayModeDisabled {\n\tcursor: default;\n}\n\n/* Tree */\n.dijitTree {\n\toverflow: auto;\t/* for scrollbars when Tree has a height setting, and to prevent wrapping around float elements, see #11491 */\n\t-webkit-tap-highlight-color: transparent;\n}\n\n.dijitTreeContainer {\n\tfloat: left;\t/* for correct highlighting during horizontal scroll, see #16132 */\n}\n\n.dijitTreeIndent {\n\t/* amount to indent each tree node (relative to parent node) */\n\twidth: 19px;\n}\n\n.dijitTreeRow, .dijitTreeContent {\n\twhite-space: nowrap;\n}\n\n.dj_ie .dijitTreeLabel:focus {\n\t/* workaround IE9 behavior where down arrowing through TreeNodes doesn't show focus outline */\n\toutline: 1px dotted black;\n}\n\n.dijitTreeRow img {\n\t/* make the expando and folder icons line up with the label */\n\tvertical-align: middle;\n}\n\n.dijitTreeContent {\n cursor: default;\n}\n\n.dijitExpandoText {\n\tdisplay: none;\n}\n\n.dj_a11y .dijitExpandoText {\n\tdisplay: inline;\n\tpadding-left: 10px;\n\tpadding-right: 10px;\n\tfont-family: monospace;\n\tborder-style: solid;\n\tborder-width: thin;\n\tcursor: pointer;\n}\n\n.dijitTreeLabel {\n\tmargin: 0 4px;\n}\n\n/* Dialog */\n\n.dijitDialog {\n\tposition: absolute;\n\tz-index: 999;\n\toverflow: hidden;\t/* override overflow: auto; from ContentPane to make dragging smoother */\n}\n\n.dijitDialogTitleBar {\n\tcursor: move;\n}\n.dijitDialogFixed .dijitDialogTitleBar {\n\tcursor:default;\n}\n.dijitDialogCloseIcon {\n\tcursor: pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n.dijitDialogPaneContent {\n\t-webkit-overflow-scrolling: touch;\n}\n.dijitDialogUnderlayWrapper {\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\tz-index: 998;\n\tdisplay: none;\n\tbackground: transparent !important;\n}\n\n.dijitDialogUnderlay {\n\tbackground: #eee;\n\topacity: 0.5;\n}\n\n.dj_ie .dijitDialogUnderlay {\n\tfilter: alpha(opacity=50);\n}\n\n/* images off, high-contrast mode styles */\n.dj_a11y .dijitSpinnerButtonContainer,\n.dj_a11y .dijitDialog {\n\topacity: 1 !important;\n\tbackground-color: white !important;\n}\n\n.dijitDialog .closeText {\n\tdisplay:none;\n\t/* for the onhover border in high contrast on IE: */\n\tposition:absolute;\n}\n\n.dj_a11y .dijitDialog .closeText {\n\tdisplay:inline;\n}\n\n/* Slider */\n\n.dijitSliderMoveable {\n\tz-index:99;\n\tposition:absolute !important;\n\tdisplay:block;\n\tvertical-align:middle;\n}\n\n.dijitSliderMoveableH {\n\tright:0;\n}\n.dijitSliderMoveableV {\n\tright:50%;\n}\n\n.dj_a11y div.dijitSliderImageHandle,\n.dijitSliderImageHandle {\n\tmargin:0;\n\tpadding:0;\n\tposition:relative !important;\n\tborder:8px solid gray;\n\twidth:0;\n\theight:0;\n\tcursor: pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n.dj_iequirks .dj_a11y .dijitSliderImageHandle {\n\tfont-size: 0;\n}\n.dj_ie7 .dijitSliderImageHandle {\n\toverflow: hidden; /* IE7 workaround to make slider handle VISIBLE in non-a11y mode */\n}\n.dj_ie7 .dj_a11y .dijitSliderImageHandle {\n\toverflow: visible; /* IE7 workaround to make slider handle VISIBLE in a11y mode */\n}\n.dj_a11y .dijitSliderFocused .dijitSliderImageHandle {\n\tborder:4px solid #000;\n\theight:8px;\n\twidth:8px;\n}\n\n.dijitSliderImageHandleV {\n\ttop:-8px;\n\tright: -50%;\n}\n\n.dijitSliderImageHandleH {\n\tleft:50%;\n\ttop:-5px;\n\tvertical-align:top;\n}\n\n.dijitSliderBar {\n\tborder-style:solid;\n\tborder-color:black;\n\tcursor: pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n\n.dijitSliderBarContainerV {\n\tposition:relative;\n\theight:100%;\n\tz-index:1;\n}\n\n.dijitSliderBarContainerH {\n\tposition:relative;\n\tz-index:1;\n}\n\n.dijitSliderBarH {\n\theight:4px;\n\tborder-width:1px 0;\n}\n\n.dijitSliderBarV {\n\twidth:4px;\n\tborder-width:0 1px;\n}\n\n.dijitSliderProgressBar {\n\tbackground-color:red;\n\tz-index:1;\n}\n\n.dijitSliderProgressBarV {\n\tposition:static !important;\n\theight:0;\n\tvertical-align:top;\n\ttext-align:left;\n}\n\n.dijitSliderProgressBarH {\n\tposition:absolute !important;\n\twidth:0;\n\tvertical-align:middle;\n\toverflow:visible;\n}\n\n.dijitSliderRemainingBar {\n\toverflow:hidden;\n\tbackground-color:transparent;\n\tz-index:1;\n}\n\n.dijitSliderRemainingBarV {\n\theight:100%;\n\ttext-align:left;\n}\n\n.dijitSliderRemainingBarH {\n\twidth:100% !important;\n}\n\n/* the slider bumper is the space consumed by the slider handle when it hangs over an edge */\n.dijitSliderBumper {\n\toverflow:hidden;\n\tz-index:1;\n}\n\n.dijitSliderBumperV {\n\twidth:4px;\n\theight:8px;\n\tborder-width:0 1px;\n}\n\n.dijitSliderBumperH {\n\twidth:8px;\n\theight:4px;\n\tborder-width:1px 0;\n}\n\n.dijitSliderBottomBumper,\n.dijitSliderLeftBumper {\n\tbackground-color:red;\n}\n\n.dijitSliderTopBumper,\n.dijitSliderRightBumper {\n\tbackground-color:transparent;\n}\n\n.dijitSliderDecoration {\n\ttext-align:center;\n}\n\n.dijitSliderDecorationC,\n.dijitSliderDecorationV {\n\tposition: relative; /* needed for IE+quirks+RTL+vertical (rendering bug) but add everywhere for custom styling consistency but this messes up IE horizontal sliders */\n}\n\n.dijitSliderDecorationH {\n\twidth: 100%;\n}\n\n.dijitSliderDecorationV {\n\theight: 100%;\n\twhite-space: nowrap;\n}\n\n.dijitSliderButton {\n\tfont-family:monospace;\n\tmargin:0;\n\tpadding:0;\n\tdisplay:block;\n}\n\n.dj_a11y .dijitSliderButtonInner {\n\tvisibility:visible !important;\n}\n\n.dijitSliderButtonContainer {\n\ttext-align:center;\n\theight:0;\t/* ??? */\n}\n.dijitSliderButtonContainer * {\n\tcursor: pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n\n.dijitSlider .dijitButtonNode {\n\tpadding:0;\n\tdisplay:block;\n}\n\n.dijitRuleContainer {\n\tposition:relative;\n\toverflow:visible;\n}\n\n.dijitRuleContainerV {\n\theight:100%;\n\tline-height:0;\n\tfloat:left;\n\ttext-align:left;\n}\n\n.dj_opera .dijitRuleContainerV {\n\tline-height:2%;\n}\n\n.dj_ie .dijitRuleContainerV {\n\tline-height:normal;\n}\n\n.dj_gecko .dijitRuleContainerV {\n\tmargin:0 0 1px 0; /* mozilla bug workaround for float:left,height:100% block elements */\n}\n\n.dijitRuleMark {\n\tposition:absolute;\n\tborder:1px solid black;\n\tline-height:0;\n\theight:100%;\n}\n\n.dijitRuleMarkH {\n\twidth:0;\n\tborder-top-width:0 !important;\n\tborder-bottom-width:0 !important;\n\tborder-left-width:0 !important;\n}\n\n.dijitRuleLabelContainer {\n\tposition:absolute;\n}\n\n.dijitRuleLabelContainerH {\n\ttext-align:center;\n\tdisplay:inline-block;\n}\n\n.dijitRuleLabelH {\n\tposition:relative;\n\tleft:-50%;\n}\n\n.dijitRuleLabelV {\n\t/* so that long labels don't overflow to multiple rows, or overwrite slider itself */\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\toverflow: hidden;\n}\n\n.dijitRuleMarkV {\n\theight:0;\n\tborder-right-width:0 !important;\n\tborder-bottom-width:0 !important;\n\tborder-left-width:0 !important;\n\twidth:100%;\n\tleft:0;\n}\n\n.dj_ie .dijitRuleLabelContainerV {\n\tmargin-top:-.55em;\n}\n\n.dj_a11y .dijitSliderReadOnly,\n.dj_a11y .dijitSliderDisabled {\n\topacity:0.6;\n}\n.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,\n.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar {\n\tfilter: alpha(opacity=40);\n}\n\n/* + and - Slider buttons: override theme settings to display icons */\n.dj_a11y .dijitSlider .dijitSliderButtonContainer div {\n\tfont-family: monospace; /* otherwise hyphen is larger and more vertically centered */\n\tfont-size: 1em;\n\tline-height: 1em;\n\theight: auto;\n\twidth: auto;\n\tmargin: 0 4px;\n}\n\n/* Icon-only buttons (often in toolbars) still display the text in high-contrast mode */\n.dj_a11y .dijitButtonContents .dijitButtonText,\n.dj_a11y .dijitTab .tabLabel {\n\tdisplay: inline !important;\n}\n.dj_a11y .dijitSelect .dijitButtonText {\n\tdisplay: inline-block !important;\n}\n\n/* TextArea, SimpleTextArea */\n.dijitTextArea {\n\twidth:100%;\n\toverflow-y: auto;\t/* w/out this IE's SimpleTextArea goes to overflow: scroll */\n}\n.dijitTextArea[cols] {\n\twidth:auto; /* SimpleTextArea cols */\n}\n.dj_ie .dijitTextAreaCols {\n\twidth:auto;\n}\n\n.dijitExpandingTextArea {\n\t/* for auto exanding textarea (called Textarea currently, rename for 2.0) don't want to display the grip to resize */\n\tresize: none;\n}\n\n\n/* Toolbar\n * Note that other toolbar rules (for objects in toolbars) are scattered throughout this file.\n */\n\n.dijitToolbarSeparator {\n\theight: 18px;\n\twidth: 5px;\n\tpadding: 0 1px;\n\tmargin: 0;\n}\n\n/* Editor */\n.dijitIEFixedToolbar {\n\tposition:absolute;\n\t/* top:0; */\n\ttop: expression(eval((document.documentElement||document.body).scrollTop));\n}\n\n.dijitEditor {\n\tdisplay: block;\t/* prevents glitch on FF with InlineEditBox, see #8404 */\n}\n\n.dijitEditorDisabled,\n.dijitEditorReadOnly {\n\tcolor: gray;\n}\n\n/* TimePicker */\n\n.dijitTimePicker {\n\tbackground-color: white;\n}\n.dijitTimePickerItem {\n\tcursor:pointer;\n\t-webkit-tap-highlight-color: transparent;\n}\n.dijitTimePickerItemHover {\n\tbackground-color:gray;\n\tcolor:white;\n}\n.dijitTimePickerItemSelected {\n\tfont-weight:bold;\n\tcolor:#333;\n\tbackground-color:#b7cdee;\n}\n.dijitTimePickerItemDisabled {\n\tcolor:gray;\n\ttext-decoration:line-through;\n}\n\n.dijitTimePickerItemInner {\n\ttext-align:center;\n\tborder:0;\n\tpadding:2px 8px 2px 8px;\n}\n\n.dijitTimePickerTick,\n.dijitTimePickerMarker {\n\tborder-bottom:1px solid gray;\n}\n\n.dijitTimePicker .dijitDownArrowButton {\n\tborder-top: none !important;\n}\n\n.dijitTimePickerTick {\n\tcolor:#CCC;\n}\n\n.dijitTimePickerMarker {\n\tcolor:black;\n\tbackground-color:#CCC;\n}\n\n.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {\n\tborder: solid 4px black;\n}\n.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {\n\tborder: dashed 4px black;\n}\n\n\n.dijitToggleButtonIconChar {\n\t/* character (instead of icon) to show that ToggleButton is checked */\n\tdisplay:none !important;\n}\n.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar {\n\tdisplay:inline !important;\n\tvisibility:hidden;\n}\n.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {\n\tfont-family: \"Arial Unicode MS\";\t/* otherwise the a11y character (checkmark, arrow, etc.) appears as a box */\n}\n.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {\n\tdisplay: inline !important; /* In high contrast mode, display the check symbol */\n\tvisibility:visible !important;\n}\n\n.dijitArrowButtonChar {\n\tdisplay:none !important;\n}\n.dj_a11y .dijitArrowButtonChar {\n\tdisplay:inline !important;\n}\n\n.dj_a11y .dijitDropDownButton .dijitArrowButtonInner,\n.dj_a11y .dijitComboButton .dijitArrowButtonInner {\n\tdisplay:none !important;\n}\n\n/* Select */\n.dj_a11y .dijitSelect {\n\tborder-collapse: separate !important;\n\tborder-width: 1px;\n\tborder-style: solid;\n}\n.dj_ie .dijitSelect {\n\tvertical-align: middle; /* Set this back for what we hack in dijit inline */\n}\n.dj_ie6 .dijitSelect .dijitValidationContainer,\n.dj_ie8 .dijitSelect .dijitButtonText {\n\tvertical-align: top;\n}\n.dj_ie6 .dijitTextBox .dijitInputContainer,\n.dj_iequirks .dijitTextBox .dijitInputContainer,\n.dj_ie6 .dijitTextBox .dijitArrowButtonInner,\n.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,\n.dijitSelect .dijitSelectLabel {\n\tvertical-align: baseline;\n}\n\n.dijitNumberTextBox {\n\ttext-align: left;\n\tdirection: ltr;\n}\n\n.dijitNumberTextBox .dijitInputInner {\n\ttext-align: inherit; /* input */\n}\n\n.dijitNumberTextBox input.dijitInputInner,\n.dijitCurrencyTextBox input.dijitInputInner,\n.dijitSpinner input.dijitInputInner {\n\ttext-align: right;\n}\n\n.dj_ie8 .dijitNumberTextBox input.dijitInputInner, .dj_ie9 .dijitNumberTextBox input.dijitInputInner,\n.dj_ie8 .dijitCurrencyTextBox input.dijitInputInner, .dj_ie9 .dijitCurrencyTextBox input.dijitInputInner,\n.dj_ie8 .dijitSpinner input.dijitInputInner, .dj_ie9 .dijitSpinner input.dijitInputInner {\n\t/* workaround bug where caret invisible in empty textboxes */\n\tpadding-right: 1px !important;\n}\n\n.dijitToolbar .dijitSelect {\n\tmargin: 0;\n}\n.dj_webkit .dijitToolbar .dijitSelect {\n\tpadding-left: 0.3em;\n}\n.dijitSelect .dijitButtonContents {\n\tpadding: 0;\n\twhite-space: nowrap;\n\ttext-align: left;\n\tborder-style: none solid none none;\n\tborder-width: 1px;\n}\n.dijitSelectFixedWidth .dijitButtonContents {\n\twidth: 100%;\n}\n\n.dijitSelectMenu .dijitMenuItemIcon {\n\t/* avoid blank area in left side of menu (since we have no icons) */\n\tdisplay:none;\n}\n.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,\n.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {\n\t/* Set back to static due to bug in ie6/ie7 - See Bug #9651 */\n\tposition: static;\n}\n\n/* Fix the baseline of our label (for multi-size font elements) */\n.dijitSelectLabel *\n{\n\tvertical-align: baseline;\n}\n\n/* Styling for the currently-selected option (rich text can mess this up) */\n.dijitSelectSelectedOption * {\n\tfont-weight: bold;\n}\n\n/* Fix the styling of the dropdown menu to be more combobox-like */\n.dijitSelectMenu {\n\tborder-width: 1px;\n}\n\n/* Used in cases, such as FullScreen plugin, when we need to force stuff to static positioning. */\n.dijitForceStatic {\n\tposition: static !important;\n}\n\n/**** Disabled cursor *****/\n.dijitReadOnly *,\n.dijitDisabled *,\n.dijitReadOnly,\n.dijitDisabled {\n\t/* a region the user would be able to click on, but it's disabled */\n\tcursor: default;\n}\n\n/* Drag and Drop */\n.dojoDndItem {\n padding: 2px; /* will be replaced by border during drag over (dojoDndItemBefore, dojoDndItemAfter) */\n\n\t/* Prevent magnifying-glass text selection icon to appear on mobile webkit as it causes a touchout event */\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none; /* Disable selection/Copy of UIWebView */\n}\n.dojoDndHorizontal .dojoDndItem {\n /* make contents of horizontal container be side by side, rather than vertical */\n display: inline-block;\n}\n\n.dojoDndItemBefore,\n.dojoDndItemAfter {\n\tborder: 0px solid #369;\n}\n.dojoDndItemBefore {\n border-width: 2px 0 0 0;\n padding: 0 2px 2px 2px;\n}\n.dojoDndItemAfter {\n border-width: 0 0 2px 0;\n padding: 2px 2px 0 2px;\n}\n.dojoDndHorizontal .dojoDndItemBefore {\n border-width: 0 0 0 2px;\n padding: 2px 2px 2px 0;\n}\n.dojoDndHorizontal .dojoDndItemAfter {\n border-width: 0 2px 0 0;\n padding: 2px 0 2px 2px;\n}\n\n.dojoDndItemOver {\n\tcursor:pointer;\n}\n.dj_gecko .dijitArrowButtonInner INPUT,\n.dj_gecko INPUT.dijitArrowButtonInner {\n\t-moz-user-focus:ignore;\n}\n.dijitFocused .dijitMenuItemShortcutKey {\n\ttext-decoration: underline;\n}\n\n/* Dijit custom styling */\n.dijitBorderContainer {\n height: 350px;\n}\n.dijitTooltipContainer {\n background: #fff;\n border: 1px solid #ccc;\n border-radius: 6px;\n}\n.dijitContentPane {\n box-sizing: content-box;\n overflow: auto !important; /* Widgets like the data grid pass their scroll\n offset to the parent if there is not enough room to display a scroll bar\n in the widget itself, so do not hide the overflow. */\n}\n\n/* Global Bootstrap changes */\n\n/* Client defaults and helpers */\n.mx-dataview-content, .mx-scrollcontainer-wrapper:not(.mx-scrollcontainer-nested), .mx-tabcontainer-content, .mx-grid-content {\n -webkit-overflow-scrolling: touch;\n}\nhtml, body, #content {\n height: 100%;\n}\n#content > .mx-page {\n width: 100%;\n min-height: 100%;\n}\n\n.mx-left-aligned {\n text-align: left;\n}\n.mx-right-aligned {\n text-align: right;\n}\n.mx-center-aligned {\n text-align: center;\n}\n\n.mx-table {\n width: 100%;\n}\n.mx-table th,\n.mx-table td {\n padding: 8px;\n vertical-align: top;\n}\n.mx-table th.nopadding,\n.mx-table td.nopadding {\n\tpadding: 0;\n}\n\n.mx-offscreen {\n /* When position relative is not set IE doesn't properly render when this class is removed\n * with the effect that elements are not displayed or are not clickable.\n */\n position: relative;\n height: 0;\n overflow: hidden;\n}\n\n.mx-ie-event-shield {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n}\n\n.mx-swipe-navigation-progress {\n position: absolute;\n height: 54px;\n width: 54px;\n top: calc(50% - 27px);\n left: calc(50% - 27px);\n background: url(data:image/gif;base64,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);\n}\n\n\n/* Bacause we use checkboxes without labels, align them with other widgets. */\ninput[type=\"checkbox\"] {\n margin: 9px 0;\n}\n\n.mx-checkbox input[type=\"checkbox\"] {\n margin-left: 0;\n margin-right: 8px;\n position: static;\n}\n\n.form-vertical .form-group.mx-checkbox input[type=\"checkbox\"] {\n display: block;\n}\n\n.form-vertical .form-group.mx-checkbox.label-after input[type=\"checkbox\"] {\n display: inline-block;\n}\n\n.form-horizontal .form-group.no-columns {\n padding-left: 15px;\n padding-right: 15px;\n}\n\n.mx-radiobuttons.inline .radio {\n display: inline-block;\n margin-right: 20px;\n}\n\n.mx-radiobuttons .radio input[type=\"radio\"] {\n /* Reset bootstrap rules */\n position: static;\n margin-right: 8px;\n margin-left: 0;\n}\n\n.mx-radiobuttons .radio label {\n /* Reset bootstrap rules */\n padding-left: 0;\n}\n\n.alert {\n margin-top: 8px;\n margin-bottom: 10px;\n white-space: pre-line;\n}\n\n.mx-compound-control {\n display: flex;\n}\n\n.mx-compound-control button {\n margin-left: 5px;\n}\n\n[dir=\"rtl\"] .mx-compound-control button {\n margin-left: 0;\n margin-right: 5px;\n}\n\n.mx-tooltip {\n margin: 10px;\n}\n.mx-tooltip-content {\n width: 400px;\n overflow-y: auto;\n}\n.mx-tooltip-prepare {\n height: 24px;\n padding: 8px;\n background: transparent url(data:image/gif;base64,R0lGODlhGAAYAMQdAKXZ8nfF64TL7QuX3Fe45zaq4hOb3fL6/fr9/rri9dXt+ZrU8Cym4Umy5cHl9uPz+2K86Oj1/Nzw+rDd9M3q+JDQ72rA6iOi3+34/ECu48jo9x2f3gWV2////wAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUJFNkU4NEZCNEVDMTFFODk3MDBBNUU1RUM4Qjg3QTUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RUJFNkU4NTBCNEVDMTFFODk3MDBBNUU1RUM4Qjg3QTUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFQkU2RTg0REI0RUMxMUU4OTcwMEE1RTVFQzhCODdBNSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFQkU2RTg0RUI0RUMxMUU4OTcwMEE1RTVFQzhCODdBNSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6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) no-repeat scroll center center;\n}\n.mx-tooltip-content .table th,\n.mx-tooltip-content .table td {\n padding: 2px 8px;\n}\n\n.mx-tabcontainer-pane {\n height: 100%;\n}\n.mx-tabcontainer-content.loading {\n min-height: 48px;\n background: url(data:image/gif;base64,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) no-repeat center center;\n background-size: 32px 32px;\n}\n.mx-tabcontainer-tabs {\n margin-bottom: 8px;\n}\n.mx-tabcontainer-tabs li {\n position: relative;\n}\n.mx-tabcontainer-indicator {\n position: absolute;\n background: #f2dede;\n border-radius: 8px;\n color: #b94a48;\n top: 0px;\n right: -5px;\n width: 16px;\n height: 16px;\n line-height: 16px;\n text-align: center;\n vertical-align: middle;\n font-size: 10px;\n font-weight: 600;\n z-index: 1; /* indicator should not hide behind other tab */\n}\n\n/* base structure */\n.mx-grid {\n padding: 8px;\n overflow: hidden; /* to prevent any margin from escaping grid and foobaring our size calculations */\n}\n.mx-grid-controlbar, .mx-grid-searchbar {\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n}\n.mx-grid-controlbar .mx-button,\n.mx-grid-search-controls .mx-button {\n margin-bottom: 8px;\n}\n\n.mx-grid-search-controls .mx-button + .mx-button,\n.mx-grid-controlbar .mx-button + .mx-button {\n margin-left: 0.3em;\n}\n\n[dir=\"rtl\"] .mx-grid-search-controls .mx-button + .mx-button,\n[dir=\"rtl\"] .mx-grid-controlbar .mx-button + .mx-button {\n margin-left: 0;\n margin-right: 0.3em;\n}\n\n.mx-grid-pagingbar,\n.mx-grid-search-controls {\n display: flex;\n white-space: nowrap;\n align-items: baseline;\n margin-left: auto;\n}\n\n.mx-grid-toolbar, .mx-grid-search-inputs {\n margin-right: 5px;\n flex: 1;\n}\n\n[dir=\"rtl\"] .mx-grid-toolbar,\n[dir=\"rtl\"] .mx-grid-search-inputs {\n margin-left: 5px;\n margin-right: 0px;\n}\n[dir=\"rtl\"] .mx-grid-pagingbar,\n[dir=\"rtl\"] .mx-grid-search-controls {\n margin-left: 0px;\n margin-right: auto;\n}\n\n.mx-grid-paging-status {\n padding: 0 8px 5px;\n}\n\n/* search fields */\n.mx-grid-search-item {\n display: inline-block;\n vertical-align: top;\n margin-bottom: 8px;\n}\n.mx-grid-search-label {\n width: 110px;\n padding: 0 5px;\n text-align: right;\n display: inline-block;\n vertical-align: top;\n overflow: hidden;\n}\n[dir=\"rtl\"] .mx-grid-search-label {\n text-align: left;\n}\n.mx-grid-search-input {\n width: 150px;\n padding: 0 5px;\n display: inline-block;\n vertical-align: top;\n}\n.mx-grid-search-message {\n flex-basis: 100%;\n}\n\n/* widget combinations */\n.mx-dataview .mx-grid {\n border: 1px solid #ddd;\n border-radius: 3px;\n}\n\n.mx-calendar {\n z-index: 1000;\n}\n\n.mx-calendar-month-dropdown-options {\n position: absolute;\n}\n\n.mx-calendar, .mx-calendar-month-dropdown {\n user-select: none;\n}\n\n.mx-calendar-month-current {\n display: inline-block;\n}\n\n.mx-calendar-month-spacer {\n position: relative;\n height: 0px;\n overflow: hidden;\n visibility: hidden;\n}\n\n.mx-calendar, .mx-calendar-month-dropdown-options {\n border: 1px solid lightgrey;\n background-color: white;\n}\n\n.mx-datagrid tr {\n cursor: pointer;\n}\n\n.mx-datagrid tr.mx-datagrid-row-empty {\n cursor: default;\n}\n\n.mx-datagrid table {\n width: 100%;\n max-width: 100%;\n table-layout: fixed;\n margin-bottom: 0;\n}\n\n.mx-datagrid th, .mx-datagrid td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: bottom;\n border: 1px solid #ddd;\n}\n\n/* head */\n.mx-datagrid th {\n position: relative; /* Required for the positioning of the column resizers */\n border-bottom-width: 2px;\n}\n.mx-datagrid-head-caption {\n overflow: hidden;\n white-space: nowrap;\n}\n.mx-datagrid-sort-icon {\n float: right;\n padding-left: 5px;\n}\n[dir=\"rtl\"] .mx-datagrid-sort-icon {\n float: left;\n padding: 0 5px 0 0;\n}\n.mx-datagrid-column-resizer {\n position: absolute;\n top: 0;\n left: -6px;\n width: 10px;\n height: 100%;\n cursor: col-resize;\n}\n[dir=\"rtl\"] .mx-datagrid-column-resizer {\n left: auto;\n right: -6px;\n}\n\n/* body */\n.mx-datagrid tbody tr:first-child td {\n border-top: none;\n}\n//.mx-datagrid tbody tr:nth-child(2n+1) td {\n// background-color: #f9f9f9;\n//}\n.mx-datagrid tbody .selected td {\n background-color: #eee;\n}\n.mx-datagrid-data-wrapper {\n overflow: hidden;\n white-space: nowrap;\n}\n.mx-datagrid tbody img {\n max-width: 16px;\n max-height: 16px;\n}\n.mx-datagrid input,\n.mx-datagrid select,\n.mx-datagrid textarea {\n cursor: auto;\n}\n\n/* foot */\n.mx-datagrid tfoot th,\n.mx-datagrid tfoot td {\n padding: 3px 8px;\n}\n.mx-datagrid tfoot th {\n border-top: 1px solid #ddd;\n}\n.mx-datagrid.mx-content-loading .mx-content-loader {\n display: inline-block;\n width: 90%;\n animation: placeholderGradient 1s linear infinite;\n border-radius: 4px;\n background: #F5F5F5;\n background: repeating-linear-gradient(to right, #F5F5F5 0%, #F5F5F5 5%, #F9F9F9 50%, #F5F5F5 95%, #F5F5F5 100%);\n background-size: 200px 100px;\n animation-fill-mode: both;\n}\n@keyframes placeholderGradient {\n 0% { background-position: 100px 0; }\n 100% { background-position: -100px 0; }\n}\n\n.mx-datagrid-table-resizing th,\n.mx-datagrid-table-resizing td {\n cursor: col-resize !important;\n}\n\n.mx-templategrid-content-wrapper {\n display: table;\n width: 100%;\n border-collapse: collapse;\n box-sizing: border-box;\n}\n.mx-templategrid-row {\n display: table-row;\n}\n.mx-templategrid-item {\n padding: 5px;\n display: table-cell;\n border: 1px solid #ddd;\n cursor: pointer;\n box-sizing: border-box;\n}\n.mx-templategrid-empty {\n display: table-cell;\n}\n.mx-templategrid-item.selected {\n background-color: #f5f5f5;\n}\n.mx-templategrid-item .mx-table th,\n.mx-templategrid-item .mx-table td {\n padding: 2px 8px;\n}\n\n.mx-scrollcontainer-horizontal {\n width: 100%;\n display: table;\n table-layout: fixed;\n}\n.mx-scrollcontainer-horizontal > div {\n display: table-cell;\n vertical-align: top;\n}\n//.mx-scrollcontainer-wrapper {\n// padding: 10px;\n//}\n.mx-scrollcontainer-nested {\n padding: 0;\n}\n.mx-scrollcontainer-fixed > .mx-scrollcontainer-middle > .mx-scrollcontainer-wrapper,\n.mx-scrollcontainer-fixed > .mx-scrollcontainer-left > .mx-scrollcontainer-wrapper,\n.mx-scrollcontainer-fixed > .mx-scrollcontainer-center > .mx-scrollcontainer-wrapper,\n.mx-scrollcontainer-fixed > .mx-scrollcontainer-right > .mx-scrollcontainer-wrapper {\n overflow: auto;\n}\n\n.mx-scrollcontainer-move-in {\n transition: left 250ms ease-out;\n}\n.mx-scrollcontainer-move-out {\n transition: left 250ms ease-in;\n}\n.mx-scrollcontainer-shrink .mx-scrollcontainer-toggleable {\n transition-property: width;\n}\n\n.mx-scrollcontainer-toggleable {\n background-color: #fff;\n}\n//.mx-scrollcontainer-slide > .mx-scrollcontainer-toggleable > .mx-scrollcontainer-wrapper {\n// position: relative;\n// z-index: 1;\n// background-color: inherit;\n//}\n.mx-scrollcontainer-push {\n position: relative;\n}\n.mx-scrollcontainer-shrink > .mx-scrollcontainer-toggleable {\n overflow: hidden;\n}\n.mx-scrollcontainer-push.mx-scrollcontainer-open > div,\n.mx-scrollcontainer-slide.mx-scrollcontainer-open > div {\n pointer-events: none;\n}\n.mx-scrollcontainer-push.mx-scrollcontainer-open > .mx-scrollcontainer-toggleable,\n.mx-scrollcontainer-slide.mx-scrollcontainer-open > .mx-scrollcontainer-toggleable {\n pointer-events: auto;\n}\n\n.mx-navbar-item img,\n.mx-navbar-subitem img {\n height: 16px;\n}\n\n\n.mx-navigationtree .navbar-inner {\n padding-left: 0;\n padding-right: 0;\n}\n.mx-navigationtree ul {\n list-style: none;\n}\n.mx-navigationtree ul li {\n border-bottom: 1px solid #dfe6ea;\n}\n.mx-navigationtree li:last-child {\n border-style: none;\n}\n.mx-navigationtree a {\n display: block;\n padding: 5px 10px;\n color: #777;\n text-shadow: 0 1px 0 #fff;\n text-decoration: none;\n}\n.mx-navigationtree a.active {\n color: #FFF;\n text-shadow: none;\n background: #3498DB;\n border-radius: 3px;\n}\n.mx-navigationtree .mx-navigationtree-collapsed ul {\n display: none;\n}\n.mx-navigationtree ul {\n margin: 0;\n padding: 0;\n}\n.mx-navigationtree ul li {\n padding: 5px 0;\n}\n.mx-navigationtree ul li ul {\n padding: 0;\n margin-left: 10px;\n}\n.mx-navigationtree ul li ul li {\n margin-left: 8px;\n padding: 5px 0;\n}\n[dir=\"rtl\"] .mx-navigationtree ul li ul li {\n margin-left: auto;\n margin-right: 8px;\n}\n.mx-navigationtree ul li ul li ul li {\n font-size: 10px;\n padding-top: 3px;\n padding-bottom: 3px;\n}\n.mx-navigationtree ul li ul li ul li img {\n vertical-align: top;\n}\n\n.mx-link img,\n.mx-button img {\n height: 16px;\n}\n.mx-link {\n padding: 6px 12px;\n display: inline-block;\n}\n\n.mx-groupbox {\n margin-bottom: 10px;\n}\n.mx-groupbox-header {\n margin: 0;\n padding: 10px 15px;\n color: #eee;\n background: #333;\n font-size: inherit;\n line-height: inherit;\n border-radius: 4px 4px 0 0;\n}\n.mx-groupbox-collapsible > .mx-groupbox-header {\n cursor: pointer;\n}\n.mx-groupbox.collapsed > .mx-groupbox-header {\n border-radius: 4px;\n}\n.mx-groupbox-body {\n padding: 8px;\n border: 1px solid #ddd;\n border-radius: 4px;\n}\n.mx-groupbox.collapsed > .mx-groupbox-body {\n display: none;\n}\n.mx-groupbox-header + .mx-groupbox-body {\n border-top: none;\n border-radius: 0 0 4px 4px;\n}\n.mx-groupbox-collapse-icon {\n float: right;\n}\n[dir=\"rtl\"] .mx-groupbox-collapse-icon {\n float: left;\n}\n\n.mx-dataview {\n position: relative;\n}\n.mx-dataview-controls {\n padding: 19px 20px 12px;\n background-color: #f5f5f5;\n border-top: 1px solid #eee;\n}\n\n.mx-dataview-controls .mx-button {\n margin-bottom: 8px;\n}\n\n.mx-dataview-controls .mx-button + .mx-button {\n margin-left: 0.3em;\n}\n\n.mx-dataview-message {\n background: #fff;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.mx-dataview-message > div {\n display: table;\n width: 100%;\n height: 100%;\n}\n.mx-dataview-message > div > p {\n display: table-cell;\n text-align: center;\n vertical-align: middle;\n}\n\n/* Top-level data view in window is a special case, handle it as such. */\n.mx-window-view .mx-window-body {\n padding: 0;\n}\n.mx-window-view .mx-window-body > .mx-dataview > .mx-dataview-content,\n.mx-window-view .mx-window-body > .mx-placeholder > .mx-dataview > .mx-dataview-content {\n padding: 15px;\n}\n.mx-window-view .mx-window-body > .mx-dataview > .mx-dataview-controls,\n.mx-window-view .mx-window-body > .mx-placeholder > .mx-dataview > .mx-dataview-controls {\n border-radius: 0px 0px 6px 6px;\n}\n\n.mx-dialog {\n position: fixed;\n left: auto;\n right: auto;\n padding: 0;\n width: 500px;\n /* If the margin is set to auto, IE9 reports the calculated value of the\n * margin as the actual value. Other browsers will just report 0. Eliminate\n * this difference by setting margin to 0 for every browser. */\n margin: 0;\n}\n.mx-dialog-header {\n cursor: move;\n}\n.mx-dialog-body {\n overflow: auto;\n}\n\n.mx-window {\n position: fixed;\n left: auto;\n right: auto;\n padding: 0;\n width: 600px;\n /* If the margin is set to auto, IE9 reports the calculated value of the\n * margin as the actual value. Other browsers will just report 0. Eliminate\n * this difference by setting margin to 0 for every browser. */\n margin: 0;\n}\n.mx-window-content {\n height: 100%;\n overflow: hidden;\n}\n.mx-window-active .mx-window-header {\n background-color: #f5f5f5;\n border-radius: 6px 6px 0 0;\n}\n.mx-window-header {\n cursor: move;\n}\n.mx-window-body {\n overflow: auto;\n}\n\n.mx-dropdown-list * {\n cursor: pointer;\n}\n.mx-dropdown-list img {\n width: 35px;\n vertical-align: middle;\n margin-right: 10px;\n}\n[dir=\"rtl\"] .mx-dropdown-list img {\n margin-left: 10px;\n margin-right: auto;\n}\n\n.mx-dropdown-list {\n padding: 0;\n list-style: none;\n}\n.mx-dropdown-list > li {\n padding: 5px 10px 10px;\n border: 1px #ddd;\n border-style: solid solid none;\n background-color: #fff;\n}\n.mx-dropdown-list > li:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n}\n.mx-dropdown-list > li:last-child {\n border-bottom-style: solid;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.mx-dropdown-list-striped > li:nth-child(2n+1) {\n background: #f9f9f9;\n}\n.mx-dropdown-list > li:hover {\n background: #f5f5f5;\n}\n\n.mx-header {\n position: relative;\n padding: 9px;\n background: #333;\n text-align: center;\n}\n.mx-header-center {\n display: inline-block;\n color: #eee;\n line-height: 30px; /* height of buttons */\n}\nbody[dir=\"ltr\"] .mx-header-left,\nbody[dir=\"rtl\"] .mx-header-right {\n position: absolute;\n top: 9px;\n left: 9px;\n}\nbody[dir=\"ltr\"] .mx-header-right,\nbody[dir=\"rtl\"] .mx-header-left {\n position: absolute;\n top: 9px;\n right: 9px;\n}\n\n.mx-title {\n margin-bottom: 0px;\n margin-top: 0px;\n}\n\n.mx-listview {\n padding: 8px;\n}\n.mx-listview > ul {\n padding: 0px;\n list-style: none;\n}\n// .mx-listview > ul > li {\n// padding: 5px 10px 10px;\n// border: 1px #ddd;\n// border-style: solid solid none;\n// background-color: #fff;\n// outline: none;\n// }\n// .mx-listview > ul > li:first-child {\n// border-top-left-radius: 4px;\n// border-top-right-radius: 4px;\n// }\n// .mx-listview > ul > li:last-child {\n// border-bottom-style: solid;\n// border-bottom-left-radius: 4px;\n// border-bottom-right-radius: 4px;\n// }\n//.mx-listview li:nth-child(2n+1) {\n// background: #f9f9f9;\n//}\n//.mx-listview li:nth-child(2n+1):hover {\n// background: #f5f5f5;\n//}\n.mx-listview > ul > li.selected {\n// background: #eee;\n}\n.mx-listview-clickable > ul > li {\n cursor: pointer;\n}\n.mx-listview-empty {\n color: #999;\n text-align: center;\n}\n.mx-listview .mx-listview-loading {\n padding: 10px;\n line-height: 0;\n text-align: center;\n}\n.mx-listview-searchbar {\n display: flex;\n margin-bottom: 10px;\n}\n.mx-listview-searchbar > input {\n width: 100%;\n}\n.mx-listview-searchbar > button {\n margin-left: 5px;\n}\n[dir=\"rtl\"] .mx-listview-searchbar > button {\n margin-left: 0;\n margin-right: 5px;\n}\n.mx-listview-selection {\n display: table-cell;\n vertical-align: middle;\n padding: 0 15px 0 5px;\n}\n[dir=\"rtl\"] .mx-listview-selection {\n padding: 0 5px 0 15px;\n}\n.mx-listview-selectable .mx-listview-content {\n display: table-cell;\n vertical-align: middle;\n width: 100%;\n}\n.mx-listview .selected {\n background: #def;\n}\n.mx-listview .mx-table th,\n.mx-listview .mx-table td {\n padding: 2px;\n}\n\n.mx-login .form-control {\n margin-top: 10px;\n}\n\n.mx-menubar {\n padding: 8px;\n}\n.mx-menubar-icon {\n height: 16px;\n}\n.mx-menubar-more-icon {\n display: inline-block;\n width: 16px;\n height: 16px;\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKNJREFUeNpi/P//P8NgAUwMgwiMOmbUMaOOGXXMqGNGHTPYHMOCTfDs2bMeQKoOiI1BXCBuMjY23kFrdYzoTQigRm8gtQWLG0OBBqyhlTpc0dSOIxTraKwOq2PUcWhWp7E6rI65iUPzTRqrw+qYGhyam2isDtMxwES1CUgFAfFxqBCIDkJPbNRWhzU3jRZ6o44ZdcyoY0YdM+qYUccMUscABBgAUXpEjE/Bs/IAAAAASUVORK5CYII=) no-repeat center center;\n background-size: 16px 16px;\n vertical-align: middle;\n}\n\n.mx-navigationlist {\n padding: 8px;\n}\n.mx-navigationlist li:hover,\n.mx-navigationlist li:focus,\n.mx-navigationlist li.active {\n color: #FFF;\n background-color: #3498DB;\n}\n.mx-navigationlist * {\n cursor: pointer;\n}\n.mx-navigationlist .table th,\n.mx-navigationlist .table td {\n padding: 2px;\n}\n\n.mx-progress {\n position: fixed;\n top: 30%;\n left: 0;\n right: 0;\n margin: auto;\n width: 250px;\n max-width: 90%;\n background: #333;\n opacity: 0.8;\n z-index: 5000;\n border-radius: 4px;\n padding: 20px 15px;\n transition: opacity 0.4s ease-in-out;\n}\n.mx-progress-hidden {\n opacity: 0;\n}\n.mx-progress-message {\n color: #fff;\n text-align: center;\n margin-bottom: 15px;\n}\n.mx-progress-empty .mx-progress-message {\n display: none;\n}\n.mx-progress-indicator {\n width: 70px;\n height: 10px;\n margin: auto;\n background: url(data:image/gif;base64,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);\n}\n\n.mx-reload-notification {\n position: fixed;\n z-index: 1001;\n top: 0;\n width: 100%;\n padding: 1rem;\n\n border: 1px solid hsl(200, 96%, 41%);\n background-color: hsl(200, 96%, 44%);\n\n box-shadow: 0 5px 20px rgba(1, 37, 55, 0.16);\n color: white;\n\n text-align: center;\n font-size: 14px;\n}\n\n.mx-resizer-n,\n.mx-resizer-s {\n position: absolute;\n left: 0;\n width: 100%;\n height: 10px;\n}\n.mx-resizer-n {\n top: -5px;\n cursor: n-resize;\n}\n.mx-resizer-s {\n bottom: -5px;\n cursor: s-resize;\n}\n\n.mx-resizer-e,\n.mx-resizer-w {\n position: absolute;\n top: 0;\n width: 10px;\n height: 100%;\n}\n.mx-resizer-e {\n right: -5px;\n cursor: e-resize;\n}\n.mx-resizer-w {\n left: -5px;\n cursor: w-resize;\n}\n\n.mx-resizer-nw,\n.mx-resizer-ne,\n.mx-resizer-sw,\n.mx-resizer-se {\n position: absolute;\n width: 20px;\n height: 20px;\n}\n\n.mx-resizer-nw,\n.mx-resizer-ne {\n top: -5px;\n}\n.mx-resizer-sw,\n.mx-resizer-se {\n bottom: -5px;\n}\n.mx-resizer-nw,\n.mx-resizer-sw {\n left: -5px;\n}\n.mx-resizer-ne,\n.mx-resizer-se {\n right: -5px;\n}\n\n.mx-resizer-nw {\n cursor: nw-resize;\n}\n.mx-resizer-ne {\n cursor: ne-resize;\n}\n.mx-resizer-sw {\n cursor: sw-resize;\n}\n.mx-resizer-se {\n cursor: se-resize;\n}\n\n.mx-text {\n white-space: pre-line;\n}\n\n.mx-textarea textarea {\n resize: none;\n overflow-y: hidden;\n}\n.mx-textarea .mx-textarea-noresize {\n height: auto;\n resize: vertical;\n overflow-y: auto;\n}\n.mx-textarea .mx-textarea-counter {\n font-size: smaller;\n}\n.mx-textarea .form-control-static {\n white-space: pre-line;\n}\n\n.mx-underlay {\n position: fixed;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 1000;\n opacity: 0.5;\n background-color: #333;\n}\n\n.mx-imagezoom {\n position: absolute;\n display: table;\n width: 100%;\n height: 100%;\n background-color: #999;\n}\n.mx-imagezoom-wrapper {\n display: table-cell;\n text-align: center;\n vertical-align: middle;\n}\n.mx-imagezoom-image {\n max-width: none;\n}\n\n.mx-dropdown li {\n padding: 3px 20px;\n cursor: pointer;\n}\n.mx-dropdown label {\n padding: 0;\n color: #333;\n white-space: nowrap;\n cursor: pointer;\n}\n.mx-dropdown input {\n margin: 0;\n vertical-align: middle;\n cursor: pointer;\n}\n.mx-dropdown .selected {\n background: #f8f8f8;\n}\n//.mx-selectbox {\n// text-align: left;\n//}\n//.mx-selectbox-caret-wrapper {\n// float: right;\n// height: 100%;\n//}\n\n.mx-demouserswitcher {\n position: fixed;\n top: 0;\n right: 0;\n width: 360px;\n height: 100%;\n z-index: 20000;\n box-shadow: -1px 0 5px rgba(28,59,86,.2);\n}\n.mx-demouserswitcher-content {\n padding: 80px 40px 20px;\n height: 100%;\n color: #387ea2;\n font-size: 14px;\n overflow: auto;\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOgAAABgCAYAAAAXSj7NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MzkwOTREMDQ2NEYxMUU0QTQ4MUI5NTNGMUQ3QzE5NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0MzkwOTREMTQ2NEYxMUU0QTQ4MUI5NTNGMUQ3QzE5NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0REMyMUZGNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0REMyMjAwNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+g1tRlwAAEFFJREFUeNrsnYl3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) top right no-repeat #1b3149;\n /* background-attachement local is not supported on IE8\n * when this is part of background the complete background is ignored */\n background-attachment: local;\n}\n.mx-demouserswitcher ul {\n padding: 0;\n margin-top: 25px;\n list-style-type: none;\n border-top: 1px solid #496076;\n}\n.mx-demouserswitcher a {\n display: block;\n padding: 10px 0;\n color: #387ea2;\n border-bottom: 1px solid #496076;\n}\n.mx-demouserswitcher h2 {\n margin: 20px 0 5px;\n color: #5bc4fe;\n font-size: 28px;\n}\n.mx-demouserswitcher h3 {\n margin: 0 0 2px;\n color: #5bc4fe;\n font-size: 18px;\n font-weight: normal;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.mx-demouserswitcher .active h3 {\n color: #11efdb;\n}\n.mx-demouserswitcher p {\n margin-bottom: 0;\n}\n.mx-demouserswitcher-toggle {\n position: absolute;\n top: 25%;\n left: -35px;\n width: 35px;\n height: 38px;\n margin-top: -40px;\n cursor: pointer;\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n box-shadow: -1px 0 5px rgba(28,59,86,.2);\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NERDMjFGRDQ2NEMxMUU0QTQ4MUI5NTNGMUQ3QzE5NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NERDMjFGRTQ2NEMxMUU0QTQ4MUI5NTNGMUQ3QzE5NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0REMyMUZCNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0REMyMUZDNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+1ZovNAAAAWdJREFUeNqM1M0rRFEYx/E7Y5qIQpOUbIiymQWysBgvJVJK2VgryZQtKSULZelPsB0LZaNZjJUNK1FskJqUvCS3NAsZc3zP9NziOOfeeepTc8/c8+vc8xZTSnmOakEGKdzgDBXXy54OMsSwjpL6W9cYsrxfZWvcUu7y0VdLUCc+VXgd2oLixpfOIOmF17TtHTOozYuupCxAaNB9DUEfeDUbE8bzEXxZerP00l8hh3LUiHTIMr6N9j2ksYoihv/1deyLSVzKKm1jEW+WfZV2Lf8gskjIcwcWpOM++pHCFPLosgWtoCyd7jCPOjzhGHHLyDPY1achaJhDxRj6rBwJXUuoN0IG8IIv7OiGBjxadvAITuT3rex6c0SbKASflnUcBT3JTThAjyWkGUVsBEEFR5CerzXpNIacrFIrJnCBB3muBvkhB1TP27hM/Lvx3zl6gxHqu6c74kiU8IxGjKJdLrrT3xfdjwADAJaMxP2bvD2BAAAAAElFTkSuQmCC) center center no-repeat #1b3149;\n}\n\n/* master details screen for mobile */\n.mx-master-detail-screen {\n top: 0;\n left: 0;\n overflow: auto;\n width: 100%;\n height: 100%;\n position: absolute;\n background-color: white;\n will-change: transform;\n}\n\n.mx-master-detail-screen .mx-master-detail-details {\n padding: 15px;\n}\n\n.mx-master-detail-screen-header {\n position: relative;\n overflow: auto;\n border-bottom: 1px solid #ccc;\n background-color: #f7f7f7;\n}\n\n.mx-master-detail-screen-header-caption {\n text-align: center;\n font-size: 17px;\n line-height: 24px;\n font-weight: 600;\n}\n\n.mx-master-detail-screen-header-close {\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n width: 50px;\n border: none;\n background: transparent;\n color: #007aff;\n}\n\nbody[dir=\"rtl\"] .mx-master-detail-screen-header-close {\n right: 0;\n left: auto;\n}\n\n.mx-master-detail-screen-header-close::before {\n content: \"\\2039\";\n font-size: 52px;\n line-height: 24px;\n}\n\n/* classes for content page */\n.mx-master-detail-content-fix {\n height: 100vh;\n overflow: hidden;\n}\n\n.mx-master-detail-content-hidden {\n transform: translateX(-200%);\n}\n\nbody[dir=\"rtl\"] .mx-master-detail-content-hidden {\n transform: translateX(200%);\n}\n.reportingReport {\n padding: 5px;\n border: 1px solid #ddd;\n -webkit-border-radius: 3px;\n -moz-border-radius: 3px;\n border-radius: 3px;\n}\n\n.reportingReportParameter th {\n text-align: right;\n}\n\n.reportingDateRange table {\n width: 100%;\n table-layout: fixed;\n}\n.reportingDateRange th {\n padding: 5px;\n text-align: right;\n background-color: #eee;\n}\n.reportingDateRange td {\n padding: 5px;\n}\n\n.mx-reportmatrix table {\n width: 100%;\n max-width: 100%;\n table-layout: fixed;\n margin-bottom: 0;\n}\n\n.mx-reportmatrix th, .mx-reportmatrix td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: bottom;\n border: 1px solid #ddd;\n}\n\n.mx-reportmatrix tbody tr:first-child td {\n border-top: none;\n}\n\n.mx-reportmatrix tbody tr:nth-child(2n+1) td {\n background-color: #f9f9f9;\n}\n\n.mx-reportmatrix tbody img {\n max-width: 16px;\n max-height: 16px;\n}\n\n@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\n .dijitInline {\n zoom: 1; /* set hasLayout:true to mimic inline-block */\n display:inline; /* don't use .dj_ie since that increases the priority */\n vertical-align: auto;\t/* makes TextBox,Button line up w/native counterparts on IE6 */\n }\n\n .dj_ie6 .dijitComboBox .dijitInputContainer,\n .dijitInputContainer {\n zoom: 1;\n }\n\n .dijitRight {\n /* Right part of a 3-element border */\n display:inline;\t\t\t\t/* IE7 sizes to outer size w/o this */\n }\n\n .dijitButtonNode {\n vertical-align: auto;\n }\n\n .dijitTextBox {\n overflow: hidden; /* #6027, #6067 */\n }\n\n .dijitPlaceHolder {\n filter: \"\"; /* make this show up in IE6 after the rendering of the widget */\n }\n\n .dijitValidationTextBoxError input.dijitValidationInner,\n .dijitSelect input,\n .dijitTextBox input.dijitArrowButtonInner {\n text-indent: 0 !important;\n letter-spacing: -5em !important;\n text-align: right !important;\n }\n\n .dj_a11y input.dijitValidationInner,\n .dj_a11y input.dijitArrowButtonInner {\n text-align: left !important;\n }\n\n .dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {\n bottom: 50%;\t/* otherwise (on some machines) top arrow icon too close to splitter border (IE6/7) */\n }\n\n .dijitTabContainerTop-tabs .dijitTab,\n .dijitTabContainerBottom-tabs .dijitTab {\n zoom: 1; /* set hasLayout:true to mimic inline-block */\n display:inline; /* don't use .dj_ie since that increases the priority */\n }\n\n .dojoDndHorizontal .dojoDndItem {\n /* make contents of horizontal container be side by side, rather than vertical */\n display: inline;\n }\n}\n\n\n\n/* WARNING: IE9 limits nested imports to three levels deep: http://jorgealbaladejo.com/2011/05/28/internet-explorer-limits-nested-import-css-statements */\n\n/* dijit base */\n\n/* mendix base */\n\n/* widgets */\n\n/* reporting */\n\n\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9kb2pvL2Rpaml0L3RoZW1lcy9kaWppdC5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS9iYXNlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL2Zvcm1zLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9Ub29sdGlwLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9UYWJDb250YWluZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L19HcmlkLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9DYWxlbmRhci5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvRGF0YUdyaWQuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RlbXBsYXRlR3JpZC5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvU2Nyb2xsQ29udGFpbmVyLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9OYXZiYXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L05hdmlnYXRpb25UcmVlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9CdXR0b24uY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0dyb3VwQm94LmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9EYXRhVmlldy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvRGlhbG9nLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9XaW5kb3cuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0Ryb3BEb3duLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9IZWFkZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RpdGxlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9MaXN0Vmlldy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvTG9naW5EaWFsb2cuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L01lbnVCYXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L05hdmlnYXRpb25MaXN0LmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9Qcm9ncmVzcy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvUmVsb2FkTm90aWZpY2F0aW9uLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9SZXNpemFibGUuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RleHQuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RleHRBcmVhLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9VbmRlcmxheS5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvSW1hZ2Vab29tLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9TZWxlY3RCb3guY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0RlbW9Vc2VyU3dpdGNoZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L01hc3RlckRldGFpbC5jc3MiLCJ3ZWJwYWNrOi8vLy4vcmVwb3J0aW5nL3VpL3dpZGdldC9SZXBvcnQuY3NzIiwid2VicGFjazovLy8uL3JlcG9ydGluZy91aS93aWRnZXQvUmVwb3J0UGFyYW1ldGVyLmNzcyIsIndlYnBhY2s6Ly8vLi9yZXBvcnRpbmcvdWkvd2lkZ2V0L0RhdGVSYW5nZS5jc3MiLCJ3ZWJwYWNrOi8vLy4vcmVwb3J0aW5nL3VpL3dpZGdldC9SZXBvcnRNYXRyaXguY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvbXh1aS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7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QUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsd0JBQXdCO0FBQ3hCLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHlDQUF5QztBQUN4RDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixvQkFBb0I7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQsMEJBQTBCO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsYUFBYTtBQUNiLGFBQWEsd0RBQXdEO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQjtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdnNFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7O0FDOUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUN6REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOztBQzdCQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JGQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQzFCQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhCQUE4QjtBQUN0QyxVQUFVLCtCQUErQjtBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUN0R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyREE7QUFDQTtBQUNBO0FBQ0E7OztBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0VBO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DOztBQy9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JFQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7QUMvREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDO0FDaEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDekJBOztBQUVBOztBQUVBOztBQUVBOztBQUVBIiwiZmlsZSI6Im14dWkvdWkvbXh1aS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuXHRFc3NlbnRpYWwgc3R5bGVzIHRoYXQgdGhlbWVzIGNhbiBpbmhlcml0LlxuXHRJbiBvdGhlciB3b3Jkcywgd29ya3MgYnV0IGRvZXNuJ3QgbG9vayBncmVhdC5cbiovXG5cblxuXG4vKioqKlxuXHRcdEdFTkVSSUMgUElFQ0VTXG4gKioqKi9cblxuLmRpaml0UmVzZXQge1xuXHQvKiBVc2UgdGhpcyBzdHlsZSB0byBudWxsIG91dCBwYWRkaW5nLCBtYXJnaW4sIGJvcmRlciBpbiB5b3VyIHRlbXBsYXRlIGVsZW1lbnRzXG5cdFx0c28gdGhhdCBwYWdlIHNwZWNpZmljIHN0eWxlcyBkb24ndCBicmVhayB0aGVtLlxuXHRcdC0gVXNlIGluIGFsbCBUQUJMRSwgVFIgYW5kIFREIHRhZ3MuXG5cdCovXG5cdG1hcmdpbjowO1xuXHRib3JkZXI6MDtcblx0cGFkZGluZzowO1xuXHRmb250OiBpbmhlcml0O1xuXHRsaW5lLWhlaWdodDpub3JtYWw7XG5cdGNvbG9yOiBpbmhlcml0O1xufVxuLmRqX2ExMXkgLmRpaml0UmVzZXQge1xuXHQtbW96LWFwcGVhcmFuY2U6IG5vbmU7IC8qIHJlbW92ZSBwcmVkZWZpbmVkIGhpZ2gtY29udHJhc3Qgc3R5bGluZyBpbiBGaXJlZm94ICovXG59XG5cbi5kaWppdElubGluZSB7XG5cdC8qICBUbyBpbmxpbmUgYmxvY2sgZWxlbWVudHMuXG5cdFx0U2ltaWxhciB0byBJbmxpbmVCb3ggYmVsb3csIGJ1dCB0aGlzIGhhcyBmZXdlciBzaWRlLWVmZmVjdHMgaW4gTW96LlxuXHRcdEFsc28sIGFwcGFyZW50bHkgd29ya3Mgb24gYSBESVYgYXMgd2VsbCBhcyBhIEZJRUxEU0VULlxuXHQqL1xuXHRkaXNwbGF5OmlubGluZS1ibG9jaztcdFx0XHQvKiB3ZWJraXQgYW5kIEZGMyAqL1xuXHQjem9vbTogMTsgLyogc2V0IGhhc0xheW91dDp0cnVlIHRvIG1pbWljIGlubGluZS1ibG9jayAqL1xuXHQjZGlzcGxheTppbmxpbmU7IC8qIGRvbid0IHVzZSAuZGpfaWUgc2luY2UgdGhhdCBpbmNyZWFzZXMgdGhlIHByaW9yaXR5ICovXG5cdGJvcmRlcjowO1xuXHRwYWRkaW5nOjA7XG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0I3ZlcnRpY2FsLWFsaWduOiBhdXRvO1x0LyogbWFrZXMgVGV4dEJveCxCdXR0b24gbGluZSB1cCB3L25hdGl2ZSBjb3VudGVycGFydHMgb24gSUU2ICovXG59XG5cbnRhYmxlLmRpaml0SW5saW5lIHtcblx0LyogVG8gaW5saW5lIHRhYmxlcyB3aXRoIGEgZ2l2ZW4gd2lkdGggc2V0ICovXG5cdGRpc3BsYXk6aW5saW5lLXRhYmxlO1xuXHRib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbn1cblxuLmRpaml0SGlkZGVuIHtcblx0LyogVG8gaGlkZSB1bnNlbGVjdGVkIHBhbmVzIGluIFN0YWNrQ29udGFpbmVyIGV0Yy4gKi9cblx0cG9zaXRpb246IGFic29sdXRlOyAvKiByZW1vdmUgZnJvbSBub3JtYWwgZG9jdW1lbnQgZmxvdyB0byBzaW11bGF0ZSBkaXNwbGF5OiBub25lICovXG5cdHZpc2liaWxpdHk6IGhpZGRlbjsgLyogaGlkZSBlbGVtZW50IGZyb20gdmlldywgYnV0IGRvbid0IGJyZWFrIHNjcm9sbGluZywgc2VlICMxODYxMiAqL1xufVxuLmRpaml0SGlkZGVuICoge1xuXHR2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsgLyogaGlkZSB2aXNpYmlsaXR5OnZpc2libGUgZGVzY2VuZGFudHMgb2YgY2xhc3M9ZGlqaXRIaWRkZW4gbm9kZXMsIHNlZSAjMTg3OTkgKi9cbn1cblxuLmRpaml0VmlzaWJsZSB7XG5cdC8qIFRvIHNob3cgc2VsZWN0ZWQgcGFuZSBpbiBTdGFja0NvbnRhaW5lciBldGMuICovXG5cdGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XHQvKiBvdmVycmlkZSB1c2VyJ3MgZGlzcGxheTpub25lIHNldHRpbmcgdmlhIHN0eWxlIHNldHRpbmcgb3IgaW5kaXJlY3RseSB2aWEgY2xhc3MgKi9cblx0cG9zaXRpb246IHJlbGF0aXZlO1x0XHRcdC8qIHRvIHN1cHBvcnQgc2V0dGluZyB3aWR0aC9oZWlnaHQsIHNlZSAjMjAzMyAqL1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuXG4uZGpfaWU2IC5kaWppdENvbWJvQm94IC5kaWppdElucHV0Q29udGFpbmVyLFxuLmRpaml0SW5wdXRDb250YWluZXIge1xuXHQvKiBmb3IgcG9zaXRpb25pbmcgb2YgcGxhY2VIb2xkZXIgKi9cblx0I3pvb206IDE7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IC8qIG5lZWRlZCB0byBzcXVlZXplIHRoZSBJTlBVVCBpbiAqL1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uZGpfaWU3IC5kaWppdElucHV0Q29udGFpbmVyIHtcblx0ZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgLyogbmVlZGVkIGJ5IElFIHRvIHNxdWVlemUgdGhlIElOUFVUIGluICovXG5cdGNsZWFyOiBsZWZ0O1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgLyogdG8gZml4IHdyb25nIHRleHQgYWxpZ25tZW50IGluIHRleHRkaXI9cnRsIHRleHQgYm94ICovXG59XG5cbi5kal9pZSAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWUgaW5wdXQuZGlqaXRUZXh0Qm94LFxuLmRqX2llIC5kaWppdFRleHRCb3ggaW5wdXQge1xuXHRmb250LXNpemU6IDEwMCU7XG59XG4uZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uVGV4dCB7XG5cdGZsb2F0OiBsZWZ0O1xuXHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuVEFCTEUuZGlqaXRTZWxlY3Qge1xuXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IC8qIG1lc3NlcyB1cCBib3JkZXIgYWxpZ25tZW50ICovXG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IC8qIHNvIGpzZmlkZGxlIHdvcmtzIHdpdGggTm9ybWFsaXplZCBDU1MgY2hlY2tlZCAqL1xufVxuLmRpaml0VGV4dEJveCAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyLFxuLmRpaml0VGV4dEJveCAuZGlqaXRBcnJvd0J1dHRvbkNvbnRhaW5lcixcbi5kaWppdFZhbGlkYXRpb25UZXh0Qm94IC5kaWppdFZhbGlkYXRpb25Db250YWluZXIge1xuXHRmbG9hdDogcmlnaHQ7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5kaWppdFNlbGVjdCBpbnB1dC5kaWppdElucHV0RmllbGQsXG4uZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRGaWVsZCB7XG5cdC8qIG92ZXJyaWRlIHVucmVhc29uYWJsZSB1c2VyIHN0eWxpbmcgb2YgYnV0dG9ucyBhbmQgaWNvbnMgKi9cblx0cGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcbn1cbi5kaWppdFZhbGlkYXRpb25UZXh0Qm94IC5kaWppdFZhbGlkYXRpb25Db250YWluZXIge1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4uZGlqaXRUZWVueSB7XG5cdGZvbnQtc2l6ZToxcHg7XG5cdGxpbmUtaGVpZ2h0OjFweDtcbn1cblxuLmRpaml0T2ZmU2NyZWVuIHsgLyogdGhlc2UgY2xhc3MgYXR0cmlidXRlcyBzaG91bGQgc3VwZXJzZWRlIGFueSBpbmxpbmUgcG9zaXRpb25pbmcgc3R5bGUgKi9cblx0cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG5cdGxlZnQ6IC0xMDAwMHB4ICFpbXBvcnRhbnQ7XG5cdHRvcDogLTEwMDAwcHggIWltcG9ydGFudDtcbn1cblxuLypcbiAqIFBvcHVwIGl0ZW1zIGhhdmUgYSB3cmFwcGVyIGRpdiAoZGlqaXRQb3B1cClcbiAqIHdpdGggdGhlIHJlYWwgcG9wdXAgaW5zaWRlLCBhbmQgbWF5YmUgYW4gaWZyYW1lIHRvb1xuICovXG4uZGlqaXRQb3B1cCB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdG1hcmdpbjogMDtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xuXHQtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbi5kaWppdFBvc2l0aW9uT25seSB7XG5cdC8qIE51bGwgb3V0IGFsbCBwb3NpdGlvbi1yZWxhdGVkIHByb3BlcnRpZXMgKi9cblx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xuXHRib3JkZXI6IDAgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcblx0d2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmRpaml0Tm9uUG9zaXRpb25Pbmx5IHtcblx0LyogTnVsbCBwb3NpdGlvbi1yZWxhdGVkIHByb3BlcnRpZXMgKi9cblx0ZmxvYXQ6IG5vbmUgIWltcG9ydGFudDtcblx0cG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50O1xuXHRtYXJnaW46IDAgMCAwIDAgIWltcG9ydGFudDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50O1xufVxuXG4uZGlqaXRCYWNrZ3JvdW5kSWZyYW1lIHtcblx0LyogaWZyYW1lIHVzZWQgdG8gcHJldmVudCBwcm9ibGVtcyB3aXRoIFBERiBvciBvdGhlciBhcHBsZXRzIG92ZXJsYXlpbmcgbWVudXMgZXRjICovXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0bGVmdDogMDtcblx0dG9wOiAwO1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xuXHR6LWluZGV4OiAtMTtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdERpc3BsYXlOb25lIHtcblx0LyogaGlkZSBzb21ldGhpbmcuICBVc2UgdGhpcyBhcyBhIGNsYXNzIHJhdGhlciB0aGFuIGVsZW1lbnQuc3R5bGUgc28gYW5vdGhlciBjbGFzcyBjYW4gb3ZlcnJpZGUgKi9cblx0ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdENvbnRhaW5lciB7XG5cdC8qIGZvciBhbGwgbGF5b3V0IGNvbnRhaW5lcnMgKi9cblx0b3ZlcmZsb3c6IGhpZGRlbjtcdC8qIG5lZWQgb24gSUUgc28gc29tZXRoaW5nIGNhbiBiZSByZWR1Y2VkIGluIHNpemUsIGFuZCBzbyBzY3JvbGxiYXJzIGFyZW4ndCB0ZW1wb3JhcmlseSBkaXNwbGF5ZWQgd2hlbiByZXNpemluZyAqL1xufVxuXG4vKioqKlxuXHRcdEExMVlcbiAqKioqL1xuLmRqX2ExMXkgLmRpaml0SWNvbixcbi5kal9hMTF5IGRpdi5kaWppdEFycm93QnV0dG9uSW5uZXIsIC8qIGlzIHRoaXMgb25seSBmb3IgU3Bpbm5lcj8gIGlmIHNvLCBpdCBzaG91bGQgYmUgZGVsZXRlZCAqL1xuLmRqX2ExMXkgc3Bhbi5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGpfYTExeSBpbWcuZGlqaXRBcnJvd0J1dHRvbklubmVyLFxuLmRqX2ExMXkgLmRpaml0Q2FsZW5kYXJJbmNyZW1lbnRDb250cm9sLFxuLmRqX2ExMXkgLmRpaml0VHJlZUV4cGFuZG8ge1xuXHQvKiBoaWRlIGljb24gbm9kZXMgaW4gaGlnaCBjb250cmFzdCBtb2RlOyB3aGVuIG5lY2Vzc2FyeSB0aGV5IHdpbGwgYmUgcmVwbGFjZWQgYnkgY2hhcmFjdGVyIGVxdWl2YWxlbnRzXG5cdCAqIGV4Y2VwdGlvbiBmb3IgaW5wdXQuZGlqaXRBcnJvd0J1dHRvbklubmVyLCBiZWNhdXNlIHRoZSBpY29uIGFuZCBjaGFyYWN0ZXIgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIHNhbWUgbm9kZSAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRpaml0U3Bpbm5lciBkaXYuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0ZGlzcGxheTogYmxvY2s7IC8qIG92ZXJyaWRlIHByZXZpb3VzIHJ1bGUgKi9cbn1cblxuLmRqX2ExMXkgLmRpaml0QTExeVNpZGVBcnJvdyB7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyAvKiBkaXNwbGF5IHRleHQgaW5zdGVhZCAqL1xuXHRjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qXG4gKiBTaW5jZSB3ZSBjYW4ndCB1c2Ugc2hhZGluZyBpbiBhMTF5IG1vZGUsIGFuZCBzaW5jZSB0aGUgdW5kZXJsaW5lIGluZGljYXRlcyB0b2RheSdzIGRhdGUsXG4gKiB1c2UgYSBib3JkZXIgdG8gc2hvdyB0aGUgc2VsZWN0ZWQgZGF0ZS5cbiAqIEF2b2lkIHNjcmVlbiBqaXR0ZXIgd2hlbiBzd2l0Y2hpbmcgc2VsZWN0ZWQgZGF0ZSBieSBjb21wZW5zYXRpbmcgZm9yIHRoZSBzZWxlY3RlZCBub2RlJ3NcbiAqIGJvcmRlciB3L3BhZGRpbmcgb24gb3RoZXIgbm9kZXMuXG4gKi9cbi5kal9hMTF5IC5kaWppdENhbGVuZGFyRGF0ZUxhYmVsIHtcblx0cGFkZGluZzogMXB4O1xuXHRib3JkZXI6IDBweCAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0Q2FsZW5kYXJTZWxlY3RlZERhdGUgLmRpaml0Q2FsZW5kYXJEYXRlTGFiZWwge1xuXHRib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG5cdGJvcmRlci13aWR0aDogMXB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmc6IDA7XG59XG4uZGpfYTExeSAuZGlqaXRDYWxlbmRhckRhdGVUZW1wbGF0ZSB7XG5cdHBhZGRpbmctYm90dG9tOiAwLjFlbSAhaW1wb3J0YW50O1x0Lyogb3RoZXJ3aXNlIGJvdHRvbSBib3JkZXIgZG9lc24ndCBhcHBlYXIgb24gSUUgKi9cblx0Ym9yZGVyOiAwcHggIWltcG9ydGFudDtcbn1cbi5kal9hMTF5IC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXI6IGJsYWNrIG91dHNldCBtZWRpdW0gIWltcG9ydGFudDtcblxuXHQvKiBJbiBjbGFybywgaG92ZXJpbmcgYSB0b29sYmFyIGJ1dHRvbiByZWR1Y2VzIHBhZGRpbmcgYW5kIGFkZHMgYSBib3JkZXIuXG5cdCAqIE5vdCBuZWVkZWQgaW4gYTExeSBtb2RlIHNpbmNlIFRvb2xiYXIgYnV0dG9ucyBhbHdheXMgaGF2ZSBhIGJvcmRlci5cblx0ICovXG5cdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbn1cbi5kal9hMTF5IC5kaWppdEFycm93QnV0dG9uIHtcblx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXRCdXR0b25Db250ZW50cyB7XG5cdG1hcmdpbjogMC4xNWVtOyAvKiBNYXJnaW4gbmVlZGVkIHRvIG1ha2UgZm9jdXMgb3V0bGluZSB2aXNpYmxlICovXG59XG5cbi5kal9hMTF5IC5kaWppdFRleHRCb3hSZWFkT25seSAuZGlqaXRJbnB1dEZpZWxkLFxuLmRqX2ExMXkgLmRpaml0VGV4dEJveFJlYWRPbmx5IC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItc3R5bGU6IG91dHNldCFpbXBvcnRhbnQ7XG5cdGJvcmRlci13aWR0aDogbWVkaXVtIWltcG9ydGFudDtcblx0Ym9yZGVyLWNvbG9yOiAjOTk5ICFpbXBvcnRhbnQ7XG5cdGNvbG9yOiM5OTkgIWltcG9ydGFudDtcbn1cblxuLyogYnV0dG9uIGlubmVyIGNvbnRlbnRzIC0gbGFiZWxzLCBpY29ucyBldGMuICovXG4uZGlqaXRCdXR0b25Ob2RlICoge1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmRpaml0U2VsZWN0IC5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGlqaXRCdXR0b25Ob2RlIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHQvKiB0aGUgYXJyb3cgaWNvbiBub2RlICovXG5cdGJhY2tncm91bmQ6IG5vLXJlcGVhdCBjZW50ZXI7XG5cdHdpZHRoOiAxMnB4O1xuXHRoZWlnaHQ6IDEycHg7XG5cdGRpcmVjdGlvbjogbHRyOyAvKiBuZWVkZWQgYnkgSUUvUlRMICovXG59XG5cbi8qKioqXG5cdDMtZWxlbWVudCBib3JkZXJzOiAgKCBkaWppdExlZnQgKyBkaWppdFN0cmV0Y2ggKyBkaWppdFJpZ2h0IClcblx0VGhlc2Ugd2VyZSBhZGRlZCBmb3Igcm91bmRlZCBjb3JuZXJzIG9uIGRpaml0LmZvcm0uKkJ1dHRvbiBidXQgbmV2ZXIgYWN0dWFsbHkgdXNlZC5cbiAqKioqL1xuXG4uZGlqaXRMZWZ0IHtcblx0LyogTGVmdCBwYXJ0IG9mIGEgMy1lbGVtZW50IGJvcmRlciAqL1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgdG9wO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG59XG5cbi5kaWppdFN0cmV0Y2gge1xuXHQvKiBNaWRkbGUgKHN0cmV0Y2h5KSBwYXJ0IG9mIGEgMy1lbGVtZW50IGJvcmRlciAqL1xuXHR3aGl0ZS1zcGFjZTpub3dyYXA7XHRcdFx0LyogTU9XOiBtb3ZlIHNvbWV3aGVyZSBlbHNlICovXG5cdGJhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O1xufVxuXG4uZGlqaXRSaWdodCB7XG5cdC8qIFJpZ2h0IHBhcnQgb2YgYSAzLWVsZW1lbnQgYm9yZGVyICovXG5cdCNkaXNwbGF5OmlubGluZTtcdFx0XHRcdC8qIElFNyBzaXplcyB0byBvdXRlciBzaXplIHcvbyB0aGlzICovXG5cdGJhY2tncm91bmQtcG9zaXRpb246cmlnaHQgdG9wO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG59XG5cbi8qIEJ1dHRvbnMgKi9cbi5kal9nZWNrbyAuZGpfYTExeSAuZGlqaXRCdXR0b25EaXNhYmxlZCAuZGlqaXRCdXR0b25Ob2RlIHtcblx0b3BhY2l0eTogMC41O1xufVxuXG4uZGlqaXRUb2dnbGVCdXR0b24sXG4uZGlqaXRCdXR0b24sXG4uZGlqaXREcm9wRG93bkJ1dHRvbixcbi5kaWppdENvbWJvQnV0dG9uIHtcblx0Lyogb3V0c2lkZSBvZiBidXR0b24gKi9cblx0bWFyZ2luOiAwLjJlbTtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRkaXNwbGF5OiBibG9jaztcdFx0LyogdG8gbWFrZSBmb2N1cyBib3JkZXIgcmVjdGFuZ3VsYXIgKi9cbn1cbnRkLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRkaXNwbGF5OiB0YWJsZS1jZWxsO1x0LyogYnV0IGRvbid0IGFmZmVjdCBTZWxlY3QsIENvbWJvQnV0dG9uICovXG59XG5cbi5kaWppdEJ1dHRvbk5vZGUgaW1nIHtcblx0LyogbWFrZSB0ZXh0IGFuZCBpbWFnZXMgbGluZSB1cCBjbGVhbmx5ICovXG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0LyptYXJnaW4tYm90dG9tOi4yZW07Ki9cbn1cblxuLmRpaml0VG9vbGJhciAuZGlqaXRDb21ib0J1dHRvbiB7XG5cdC8qIGJlY2F1c2UgVG9vbGJhciBvbmx5IGRyYXdzIGEgYm9yZGVyIGFyb3VuZCB0aGUgaG92ZXJlZCB0aGluZyAqL1xuXHRib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xufVxuXG4uZGlqaXRUb29sYmFyIC5kaWppdFRvZ2dsZUJ1dHRvbixcbi5kaWppdFRvb2xiYXIgLmRpaml0QnV0dG9uLFxuLmRpaml0VG9vbGJhciAuZGlqaXREcm9wRG93bkJ1dHRvbixcbi5kaWppdFRvb2xiYXIgLmRpaml0Q29tYm9CdXR0b24ge1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdFRvb2xiYXIgLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHQvKiBqdXN0IGJlY2F1c2UgaXQgdXNlZCB0byBiZSB0aGlzIHdheSAqL1xuXHRwYWRkaW5nOiAxcHggMnB4O1xufVxuXG5cbi5kal93ZWJraXQgLmRpaml0VG9vbGJhciAuZGlqaXREcm9wRG93bkJ1dHRvbiB7XG5cdHBhZGRpbmctbGVmdDogMC4zZW07XG59XG4uZGpfZ2Vja28gLmRpaml0VG9vbGJhciAuZGlqaXRCdXR0b25Ob2RlOjotbW96LWZvY3VzLWlubmVyIHtcblx0cGFkZGluZzowO1xufVxuXG4uZGlqaXRTZWxlY3Qge1xuXHRib3JkZXI6MXB4IHNvbGlkIGdyYXk7XG59XG4uZGlqaXRCdXR0b25Ob2RlIHtcblx0LyogTm9kZSB0aGF0IGlzIGFjdGluZyBhcyBhIGJ1dHRvbiAtLSBtYXkgb3IgbWF5IG5vdCBiZSBhIEJVVFRPTiBlbGVtZW50ICovXG5cdGJvcmRlcjoxcHggc29saWQgZ3JheTtcblx0bWFyZ2luOjA7XG5cdGxpbmUtaGVpZ2h0Om5vcm1hbDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0I3ZlcnRpY2FsLWFsaWduOiBhdXRvO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5kal93ZWJraXQgLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIHtcblx0LyogYXBwYXJlbnQgV2ViS2l0IGJ1ZyB3aGVyZSBtZXNzaW5nIHdpdGggdGhlIGZvbnQgY291cGxlZCB3aXRoIGxpbmUtaGVpZ2h0Om5vcm1hbCBYIDIgKGRpaml0UmVzZXQgJiBkaWppdEJ1dHRvbk5vZGUpXG5cdGNhbiBiZSBkaWZmZXJlbnQgdGhhbiBqdXN0IGEgc2luZ2xlIGxpbmUtaGVpZ2h0Om5vcm1hbCwgdmlzaWJsZSBpbiBJbmxpbmVFZGl0Qm94L1NwaW5uZXIgKi9cblx0bGluZS1oZWlnaHQ6aW5oZXJpdDtcbn1cbi5kaWppdFRleHRCb3ggLmRpaml0QnV0dG9uTm9kZSB7XG5cdGJvcmRlci13aWR0aDogMDtcbn1cblxuLmRpaml0U2VsZWN0LFxuLmRpaml0U2VsZWN0ICosXG4uZGlqaXRCdXR0b25Ob2RlLFxuLmRpaml0QnV0dG9uTm9kZSAqIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGpfaWUgLmRpaml0QnV0dG9uTm9kZSB7XG5cdC8qIGVuc3VyZSBoYXNMYXlvdXQgKi9cblx0em9vbTogMTtcbn1cblxuLmRqX2llIC5kaWppdEJ1dHRvbk5vZGUgYnV0dG9uIHtcblx0Lypcblx0XHRkaXNndXN0aW5nIGhhY2sgdG8gZ2V0IHJpZCBvZiBzcHVyaW91cyBwYWRkaW5nIGFyb3VuZCBidXR0b24gZWxlbWVudHNcblx0XHRvbiBJRS4gTVNJRSBpcyB0cnVseSB0aGUgd2ViJ3MgYm9hdCBhbmNob3IuXG5cdCovXG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG5kaXYuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdGZsb2F0OiByaWdodDtcbn1cblxuLyoqKioqKlxuXHRUZXh0Qm94IHJlbGF0ZWQuXG5cdEV2ZXJ5dGhpbmcgdGhhdCBoYXMgYW4gPGlucHV0PlxuKioqKioqKi9cblxuLmRpaml0VGV4dEJveCB7XG5cdGJvcmRlcjogc29saWQgYmxhY2sgMXB4O1xuXHQjb3ZlcmZsb3c6IGhpZGRlbjsgLyogIzYwMjcsICM2MDY3ICovXG5cdHdpZHRoOiAxNWVtO1x0LyogbmVlZCB0byBzZXQgZGVmYXVsdCBzaXplIG9uIG91dGVyIG5vZGUgc2luY2UgaW5uZXIgbm9kZXMgc2F5IDxpbnB1dCBzdHlsZT1cIndpZHRoOjEwMCVcIj4gYW5kIDx0ZCB3aWR0aD0xMDAlPi4gIHVzZXIgY2FuIG92ZXJyaWRlICovXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kaWppdFRleHRCb3hSZWFkT25seSxcbi5kaWppdFRleHRCb3hEaXNhYmxlZCB7XG5cdGNvbG9yOiBncmF5O1xufVxuLmRqX3NhZmFyaSAuZGlqaXRUZXh0Qm94RGlzYWJsZWQgaW5wdXQge1xuXHRjb2xvcjogI0IwQjBCMDsgLyogYmVjYXVzZSBTYWZhcmkgbGlnaHRlbnMgZGlzYWJsZWQgaW5wdXQvdGV4dGFyZWEgbm8gbWF0dGVyIHdoYXQgY29sb3IgeW91IHNwZWNpZnkgKi9cbn1cbi5kal9zYWZhcmkgdGV4dGFyZWEuZGlqaXRUZXh0QXJlYURpc2FibGVkIHtcblx0Y29sb3I6ICMzMzM7IC8qIGJlY2F1c2UgU2FmYXJpIGxpZ2h0ZW5zIGRpc2FibGVkIGlucHV0L3RleHRhcmVhIG5vIG1hdHRlciB3aGF0IGNvbG9yIHlvdSBzcGVjaWZ5ICovXG59XG4uZGpfZ2Vja28gLmRpaml0VGV4dEJveFJlYWRPbmx5IGlucHV0LmRpaml0SW5wdXRGaWVsZCwgLyogZGlzYWJsZSBhcnJvdyBhbmQgdmFsaWRhdGlvbiBwcmVzZW50YXRpb24gaW5wdXRzIGJ1dCBhbGxvdyByZWFsIGlucHV0IGZvciB0ZXh0IHNlbGVjdGlvbiAqL1xuLmRqX2dlY2tvIC5kaWppdFRleHRCb3hEaXNhYmxlZCBpbnB1dCB7XG5cdC1tb3otdXNlci1pbnB1dDogbm9uZTsgLyogcHJldmVudCBmb2N1cyBvZiBkaXNhYmxlZCB0ZXh0Ym94IGJ1dHRvbnMgKi9cbn1cblxuLmRpaml0UGxhY2VIb2xkZXIge1xuXHQvKiBoaW50IHRleHQgdGhhdCBhcHBlYXJzIGluIGEgdGV4dGJveCB1bnRpbCB1c2VyIHN0YXJ0cyB0eXBpbmcgKi9cblx0Y29sb3I6ICNBQUFBQUE7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdCNmaWx0ZXI6IFwiXCI7IC8qIG1ha2UgdGhpcyBzaG93IHVwIGluIElFNiBhZnRlciB0aGUgcmVuZGVyaW5nIG9mIHRoZSB3aWRnZXQgKi9cblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0cG9pbnRlci1ldmVudHM6IG5vbmU7ICAgLyogc28gY3V0L3Bhc3RlIGNvbnRleHQgbWVudSBzaG93cyB1cCB3aGVuIHJpZ2h0IGNsaWNraW5nICovXG59XG5cbi5kaWppdFRpbWVUZXh0Qm94IHtcblx0d2lkdGg6IDhlbTtcbn1cblxuLyogcnVsZXMgZm9yIHdlYmtpdCB0byBkZWFsIHdpdGggZnV6enkgYmx1ZSBmb2N1cyBib3JkZXIgKi9cbi5kaWppdFRleHRCb3ggaW5wdXQ6Zm9jdXMge1xuXHRvdXRsaW5lOiBub25lO1x0LyogYmx1ZSBmdXp6eSBsaW5lIGxvb2tzIHdyb25nIG9uIGNvbWJvYm94IG9yIHNvbWV0aGluZyB3L3ZhbGlkYXRpb24gaWNvbiBzaG93aW5nICovXG59XG4uZGlqaXRUZXh0Qm94Rm9jdXNlZCB7XG5cdG91dGxpbmU6IDVweCAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG59XG5cbi5kaWppdFNlbGVjdCBpbnB1dCxcbi5kaWppdFRleHRCb3ggaW5wdXQge1xuXHRmbG9hdDogbGVmdDsgLyogbmVlZGVkIGJ5IElFIHRvIHJlbW92ZSBzZWNyZXQgbWFyZ2luICovXG59XG4uZGpfaWU2IGlucHV0LmRpaml0VGV4dEJveCxcbi5kal9pZTYgLmRpaml0VGV4dEJveCBpbnB1dCB7XG5cdGZsb2F0OiBub25lO1xufVxuLmRpaml0SW5wdXRJbm5lciB7XG5cdC8qIGZvciB3aGVuIGFuIDxpbnB1dD4gaXMgZW1iZWRkZWQgaW5zaWRlIGFuIGlubGluZS1ibG9jayA8ZGl2PiB3aXRoIGEgc2l6ZSBhbmQgYm9yZGVyICovXG5cdGJvcmRlcjowICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0d2lkdGg6MTAwJSAhaW1wb3J0YW50O1xuXHQvKiBJRSBkaXNsaWtlcyBob3Jpem9udGFsIHR3ZWFraW5nIGNvbWJpbmVkIHdpdGggd2lkdGg6MTAwJSBzbyBwdW5pc2ggZXZlcnlvbmUgZm9yIGNvbnNpc3RlbmN5ICovXG5cdHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0VGV4dEJveCBpbnB1dCB7XG5cdG1hcmdpbjogMCAhaW1wb3J0YW50O1xufVxuLmRpaml0VmFsaWRhdGlvblRleHRCb3hFcnJvciBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kaWppdFNlbGVjdCBpbnB1dCxcbi5kaWppdFRleHRCb3ggaW5wdXQuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0LyogPGlucHV0PiB1c2VkIHRvIGRpc3BsYXkgYXJyb3cgaWNvbi92YWxpZGF0aW9uIGljb24sIG9yIGluIGFycm93IGNoYXJhY3RlciBpbiBoaWdoIGNvbnRyYXN0IG1vZGUuXG5cdCAqIFRoZSBjc3MgYmVsb3cgaXMgYSB0cmljayB0byBoaWRlIHRoZSBjaGFyYWN0ZXIgaW4gbm9uLWhpZ2gtY29udHJhc3QgbW9kZVxuXHQgKi9cblx0dGV4dC1pbmRlbnQ6IC0yZW0gIWltcG9ydGFudDtcblx0ZGlyZWN0aW9uOiBsdHIgIWltcG9ydGFudDtcblx0dGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcblx0I3RleHQtaW5kZW50OiAwICFpbXBvcnRhbnQ7XG5cdCNsZXR0ZXItc3BhY2luZzogLTVlbSAhaW1wb3J0YW50O1xuXHQjdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDtcbn1cbi5kal9pZSAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWUgLmRpaml0VGV4dEJveCBpbnB1dCxcbi5kal9pZSBpbnB1dC5kaWppdFRleHRCb3gge1xuXHRvdmVyZmxvdy15OiB2aXNpYmxlOyAvKiBpbnB1dHMgbmVlZCBoZWxwIGV4cGFuZGluZyB3aGVuIHBhZGRpbmcgaXMgYWRkZWQgb3IgbGluZS1oZWlnaHQgaXMgYWRqdXN0ZWQgKi9cblx0bGluZS1oZWlnaHQ6IG5vcm1hbDsgLyogc3RyaWN0IG1vZGUgKi9cbn1cbi5kaWppdFNlbGVjdCAuZGlqaXRTZWxlY3RMYWJlbCBzcGFuIHtcblx0bGluZS1oZWlnaHQ6IDEwMCU7XG59XG4uZGpfaWUgLmRpaml0U2VsZWN0IC5kaWppdFNlbGVjdExhYmVsIHtcblx0bGluZS1oZWlnaHQ6IG5vcm1hbDtcbn1cbi5kal9pZTYgLmRpaml0U2VsZWN0IC5kaWppdFNlbGVjdExhYmVsLFxuLmRqX2llNyAuZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwsXG4uZGpfaWU4IC5kaWppdFNlbGVjdCAuZGlqaXRTZWxlY3RMYWJlbCxcbi5kal9pZXF1aXJrcyAuZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwsXG4uZGlqaXRTZWxlY3QgdGQsXG4uZGpfaWU2IC5kaWppdFNlbGVjdCBpbnB1dCxcbi5kal9pZXF1aXJrcyAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWU2IC5kaWppdFNlbGVjdCAuZGlqaXRWYWxpZGF0aW9uQ29udGFpbmVyLFxuLmRqX2llNiAuZGlqaXRUZXh0Qm94IGlucHV0LFxuLmRqX2llNiBpbnB1dC5kaWppdFRleHRCb3gsXG4uZGpfaWVxdWlya3MgLmRpaml0VGV4dEJveCBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kal9pZXF1aXJrcyAuZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0QXJyb3dCdXR0b25Jbm5lcixcbi5kal9pZXF1aXJrcyAuZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0U3Bpbm5lckJ1dHRvbklubmVyLFxuLmRqX2llcXVpcmtzIC5kaWppdFRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRqX2llcXVpcmtzIGlucHV0LmRpaml0VGV4dEJveCB7XG5cdGxpbmUtaGVpZ2h0OiAxMDAlOyAvKiBJRTcgcHJvYmxlbSB3aGVyZSB0aGUgaWNvbiBpcyB2ZXJ0aWNhbGx5IHdheSB0b28gbG93IHcvbyB0aGlzICovXG59XG4uZGpfYTExeSBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kal9hMTF5IGlucHV0LmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdC8qIChpbiBoaWdoIGNvbnRyYXN0IG1vZGUpIHJldmVydCBydWxlcyBmcm9tIGFib3ZlIHNvIGNoYXJhY3RlciBkaXNwbGF5cyAqL1xuXHR0ZXh0LWluZGVudDogMCAhaW1wb3J0YW50O1xuXHR3aWR0aDogMWVtICFpbXBvcnRhbnQ7XG5cdCN0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG5cdGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xufVxuLmRpaml0VmFsaWRhdGlvblRleHRCb3hFcnJvciAuZGlqaXRWYWxpZGF0aW9uQ29udGFpbmVyIHtcblx0ZGlzcGxheTogaW5saW5lO1xuXHRjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi8qIENvbWJvQm94ICYgU3Bpbm5lciAqL1xuXG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGlqaXRDb21ib0JveCAuZGlqaXRBcnJvd0J1dHRvbkNvbnRhaW5lciB7XG5cdC8qIGRpdmlkaW5nIGxpbmUgYmV0d2VlbiBpbnB1dCBhcmVhIGFuZCB1cC9kb3duIGJ1dHRvbihzKSBmb3IgQ29tYm9Cb3ggYW5kIFNwaW5uZXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwIDAgMCAxcHggIWltcG9ydGFudDsgLyogIWltcG9ydGFudCBuZWVkZWQgZHVlIHRvIHdheXdhcmQgXCIudGhlbWUgLmRpaml0QnV0dG9uTm9kZVwiIHJ1bGVzICovXG59XG4uZGpfYTExeSAuZGlqaXRTZWxlY3QgLmRpaml0QXJyb3dCdXR0b25Db250YWluZXIsXG4uZGlqaXRUb29sYmFyIC5kaWppdENvbWJvQm94IC5kaWppdEFycm93QnV0dG9uQ29udGFpbmVyIHtcblx0Lyogb3ZlcnJpZGVzIGFib3ZlIHJ1bGUgcGx1cyBtaXJyb3ItaW1hZ2UgcnVsZSBpbiBkaWppdF9ydGwuY3NzIHRvIGhhdmUgbm8gZGl2aWRlciB3aGVuIENvbWJvQm94IGluIFRvb2xiYXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdENvbWJvQm94TWVudSB7XG5cdC8qIERyb3AgZG93biBtZW51IGlzIGltcGxlbWVudGVkIGFzIDx1bD4gPGxpLz4gPGxpLz4gLi4uIGJ1dCB3ZSBkb24ndCB3YW50IGNpcmNsZXMgYmVmb3JlIGVhY2ggaXRlbSAqL1xuXHRsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QnV0dG9uTm9kZSB7XG5cdC8qIGRpdmlkaW5nIGxpbmUgYmV0d2VlbiBpbnB1dCBhcmVhIGFuZCB1cC9kb3duIGJ1dHRvbihzKSBmb3IgQ29tYm9Cb3ggYW5kIFNwaW5uZXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwO1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdFNwaW5uZXIgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRCdXR0b25Ob2RlIHtcblx0Y2xlYXI6IGJvdGg7IC8qIElFIHdvcmthcm91bmQgKi9cbn1cblxuLmRqX2llIC5kaWppdFRvb2xiYXIgLmRpaml0Q29tYm9Cb3gge1xuXHQvKiBtYWtlIGNvbWJvYm94IGJ1dHRvbnMgYWxpZ24gcHJvcGVybHkgd2l0aCBvdGhlciBidXR0b25zIGluIGEgdG9vbGJhciAqL1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4vKiBTcGlubmVyICovXG5cbi5kaWppdFRleHRCb3ggLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciB7XG5cdHdpZHRoOiAxZW07XG5cdHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uSW5uZXIge1xuXHR3aWR0aDoxZW07XG5cdHZpc2liaWxpdHk6aGlkZGVuICFpbXBvcnRhbnQ7IC8qIGp1c3QgYSBzaXppbmcgZWxlbWVudCAqL1xuXHRvdmVyZmxvdy14OmhpZGRlbjtcbn1cbi5kaWppdENvbWJvQm94IC5kaWppdEJ1dHRvbk5vZGUsXG4uZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItd2lkdGg6IDA7XG59XG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItd2lkdGg6IDBweCAhaW1wb3J0YW50O1xuXHRib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRUZXh0Qm94IC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIGlucHV0IHtcblx0d2lkdGg6IDFlbSAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0bWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsgLyogc2hvdWxkIGF1dG8tY2VudGVyICovXG59XG4uZGpfaWUgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRwYWRkaW5nLWxlZnQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwLjNlbSAhaW1wb3J0YW50O1xuXHRtYXJnaW4tcmlnaHQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdHdpZHRoOiAxLjRlbSAhaW1wb3J0YW50O1xufVxuLmRqX2llNyAuZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIgLmRpaml0SW5wdXRGaWVsZCB7XG5cdHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OyAvKiBtYW51YWxseSBjZW50ZXIgSU5QVVQ6IGNoYXJhY3RlciBpcyAuNWVtIGFuZCB0b3RhbCB3aWR0aCA9IDFlbSAqL1xuXHRwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG5cdHdpZHRoOiAxZW0gIWltcG9ydGFudDtcbn1cbi5kal9pZTYgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRtYXJnaW4tbGVmdDogMC4xZW0gIWltcG9ydGFudDtcblx0bWFyZ2luLXJpZ2h0OiAwLjFlbSAhaW1wb3J0YW50O1xuXHR3aWR0aDogMWVtICFpbXBvcnRhbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xuXHRtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcblx0d2lkdGg6IDJlbSAhaW1wb3J0YW50O1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEFycm93QnV0dG9uIHtcblx0Lyogbm90ZTogLmRpaml0SW5wdXRMYXlvdXRDb250YWluZXIgbWFrZXMgdGhpcyBydWxlIG92ZXJyaWRlIC5kaWppdEFycm93QnV0dG9uIHNldHRpbmdzXG5cdCAqIGZvciBkaWppdC5mb3JtLkJ1dHRvblxuXHQgKi9cblx0cGFkZGluZzogMDtcblx0cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG5cdHJpZ2h0OiAwO1xuXHRmbG9hdDogbm9uZTtcblx0aGVpZ2h0OiA1MCU7XG5cdHdpZHRoOiAxMDAlO1xuXHRib3R0b206IGF1dG87XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiBhdXRvO1xufVxuLmRqX2llcXVpcmtzIC5kaWppdFNwaW5uZXIgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdHdpZHRoOiBhdXRvO1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0RG93bkFycm93QnV0dG9uIHtcblx0dG9wOiA1MCU7XG5cdGJvcmRlci10b3Atd2lkdGg6IDFweCAhaW1wb3J0YW50O1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdFVwQXJyb3dCdXR0b24ge1xuXHQjYm90dG9tOiA1MCU7XHQvKiBvdGhlcndpc2UgKG9uIHNvbWUgbWFjaGluZXMpIHRvcCBhcnJvdyBpY29uIHRvbyBjbG9zZSB0byBzcGxpdHRlciBib3JkZXIgKElFNi83KSAqL1xuXHR0b3A6IDA7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHRtYXJnaW46IGF1dG87XG5cdG92ZXJmbG93LXg6IGhpZGRlbjtcblx0aGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0aGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIgLmRpaml0SW5wdXRGaWVsZCB7XG5cdC1tb3otdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHQtbW96LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciB0b3A7XG5cdC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHQtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciB0b3A7XG5cdC1vLXRyYW5zZm9ybTogc2NhbGUoMC41KTtcblx0LW8tdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIHRvcDtcblx0dHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHR0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDtcblx0cGFkZGluZy10b3A6IDA7XG5cdHBhZGRpbmctYm90dG9tOiAwO1xuXHRwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcblx0cGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xuXHR3aWR0aDogMTAwJTtcblx0dmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLmRqX2llIC5kaWppdFNwaW5uZXIgLmRpaml0QXJyb3dCdXR0b25Jbm5lciAuZGlqaXRJbnB1dEZpZWxkIHtcblx0em9vbTogNTAlOyAvKiBlbXVsYXRlIHRyYW5zZm9ybTogc2NhbGUoMC41KSAqL1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QXJyb3dCdXR0b24ge1xuXHR3aWR0aDogMTAwJTtcbn1cbi5kal9pZXF1aXJrcyAuZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QXJyb3dCdXR0b24ge1xuXHR3aWR0aDogMWVtOyAvKiBtYXRjaGVzIC5kal9hMTF5IC5kaWppdFRleHRCb3ggLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciBydWxlIC0gMTAwJSBpcyB0aGUgd2hvbGUgc2NyZWVuIHdpZHRoIGluIHF1aXJrcyAqL1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHR2ZXJ0aWNhbC1hbGlnbjp0b3A7XG5cdHZpc2liaWxpdHk6IHZpc2libGU7XG59XG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIHtcblx0d2lkdGg6IDFlbTtcbn1cblxuLyoqKipcblx0XHRkaWppdC5mb3JtLkNoZWNrQm94XG4gXHQgJlxuICBcdFx0ZGlqaXQuZm9ybS5SYWRpb0J1dHRvblxuICoqKiovXG5cbi5kaWppdENoZWNrQm94LFxuLmRpaml0UmFkaW8sXG4uZGlqaXRDaGVja0JveElucHV0IHtcblx0cGFkZGluZzogMDtcblx0Ym9yZGVyOiAwO1xuXHR3aWR0aDogMTZweDtcblx0aGVpZ2h0OiAxNnB4O1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciBjZW50ZXI7XG5cdGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRpaml0Q2hlY2tCb3ggaW5wdXQsXG4uZGlqaXRSYWRpbyBpbnB1dCB7XG5cdG1hcmdpbjogMDtcblx0cGFkZGluZzogMDtcblx0ZGlzcGxheTogYmxvY2s7XG59XG5cbi5kaWppdENoZWNrQm94SW5wdXQge1xuXHQvKiBwbGFjZSB0aGUgYWN0dWFsIGlucHV0IG9uIHRvcCwgYnV0IGludmlzaWJsZSAqL1xuXHRvcGFjaXR5OiAwO1xufVxuXG4uZGpfaWUgLmRpaml0Q2hlY2tCb3hJbnB1dCB7XG5cdGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTtcbn1cblxuLmRqX2ExMXkgLmRpaml0Q2hlY2tCb3gsXG4uZGpfYTExeSAuZGlqaXRSYWRpbyB7XG5cdC8qIGluIGExMXkgbW9kZSB3ZSBkaXNwbGF5IHRoZSBuYXRpdmUgY2hlY2tib3ggKG5vdCB0aGUgaWNvbiksIHNvIGRvbid0IHJlc3RyaWN0IHRoZSBzaXplICovXG5cdHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG5cdGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0Q2hlY2tCb3hJbnB1dCB7XG5cdG9wYWNpdHk6IDE7XG5cdGZpbHRlcjogbm9uZTtcblx0d2lkdGg6IGF1dG87XG5cdGhlaWdodDogYXV0bztcbn1cblxuLmRqX2ExMXkgLmRpaml0Rm9jdXNlZExhYmVsIHtcblx0LyogZm9yIGNoZWNrYm94ZXMgb3IgcmFkaW8gYnV0dG9ucyBpbiBoaWdoIGNvbnRyYXN0IG1vZGUsIHVzZSBib3JkZXIgcmF0aGVyIHRoYW4gb3V0bGluZSB0byBpbmRpY2F0ZSBmb2N1cyAob3V0bGluZSBkb2VzIG5vdCB3b3JrIGluIEZGKSovXG5cdGJvcmRlcjogMXB4IGRvdHRlZDtcblx0b3V0bGluZTogMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi8qKioqXG5cdFx0ZGlqaXQuUHJvZ3Jlc3NCYXJcbiAqKioqL1xuXG4uZGlqaXRQcm9ncmVzc0JhciB7XG4gICAgei1pbmRleDogMDsgLyogc28gei1pbmRleCBzZXR0aW5ncyBiZWxvdyBoYXZlIG5vIGVmZmVjdCBvdXRzaWRlIG9mIHRoZSBQcm9ncmVzc0JhciAqL1xufVxuLmRpaml0UHJvZ3Jlc3NCYXJFbXB0eSB7XG5cdC8qIG91dGVyIGNvbnRhaW5lciBhbmQgYmFja2dyb3VuZCBvZiB0aGUgYmFyIHRoYXQncyBub3QgZmluaXNoZWQgeWV0Ki9cblx0cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO1xuXHRib3JkZXI6MXB4IHNvbGlkIGJsYWNrOyBcdC8qIGExMXk6IGJvcmRlciBuZWNlc3NhcnkgZm9yIGhpZ2gtY29udHJhc3QgbW9kZSAqL1xuXHR6LWluZGV4OjA7XHRcdFx0LyogZXN0YWJsaXNoIGEgc3RhY2tpbmcgY29udGV4dCBmb3IgdGhpcyBwcm9ncmVzcyBiYXIgKi9cbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJGdWxsIHtcblx0Lyogb3V0ZXIgY29udGFpbmVyIGZvciBiYWNrZ3JvdW5kIG9mIGJhciB0aGF0IGlzIGZpbmlzaGVkICovXG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHRvdmVyZmxvdzpoaWRkZW47XG5cdHotaW5kZXg6LTE7XG5cdHRvcDowO1xuXHR3aWR0aDoxMDAlO1xufVxuLmRqX2llNiAuZGlqaXRQcm9ncmVzc0JhckZ1bGwge1xuXHRoZWlnaHQ6MS42ZW07XG59XG5cbi5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGlubmVyIGNvbnRhaW5lciBmb3IgZmluaXNoZWQgcG9ydGlvbiAqL1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHR0b3A6MDtcblx0bGVmdDowO1xuXHRib3R0b206MDtcblx0cmlnaHQ6MDtcblx0bWFyZ2luOjA7XG5cdHBhZGRpbmc6MDtcblx0d2lkdGg6IDEwMCU7ICAgIC8qIG5lZWRlZCBmb3IgSUUvcXVpcmtzICovXG5cdGhlaWdodDphdXRvO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiNhYWE7XG5cdGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7XG59XG5cbi5kal9hMTF5IC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGExMXk6ICBUaGUgYm9yZGVyIHByb3ZpZGVzIHZpc2liaWxpdHkgaW4gaGlnaC1jb250cmFzdCBtb2RlICovXG5cdGJvcmRlci13aWR0aDoycHg7XG5cdGJvcmRlci1zdHlsZTpzb2xpZDtcblx0YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4uZGpfaWU2IC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIHdpZHRoOmF1dG8gd29ya3MgaW4gSUU2IHdpdGggcG9zaXRpb246c3RhdGljIGJ1dCBub3QgcG9zaXRpb246YWJzb2x1dGUgKi9cblx0cG9zaXRpb246c3RhdGljO1xuXHQvKiBoZWlnaHQ6YXV0byBvciAxMDAlIGRvZXMgbm90IHdvcmsgaW4gSUU2ICovXG5cdGhlaWdodDoxLjZlbTtcbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJJbmRldGVybWluYXRlIC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGFuaW1hdGVkIGdpZiBmb3IgJ2luZGV0ZXJtaW5hdGUnIG1vZGUgKi9cbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJJbmRldGVybWluYXRlSGlnaENvbnRyYXN0SW1hZ2Uge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi5kal9hMTF5IC5kaWppdFByb2dyZXNzQmFySW5kZXRlcm1pbmF0ZSAuZGlqaXRQcm9ncmVzc0JhckluZGV0ZXJtaW5hdGVIaWdoQ29udHJhc3RJbWFnZSB7XG5cdGRpc3BsYXk6YmxvY2s7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHR0b3A6MDtcblx0Ym90dG9tOjA7XG5cdG1hcmdpbjowO1xuXHRwYWRkaW5nOjA7XG5cdHdpZHRoOjEwMCU7XG5cdGhlaWdodDphdXRvO1xufVxuXG4uZGlqaXRQcm9ncmVzc0JhckxhYmVsIHtcblx0ZGlzcGxheTpibG9jaztcblx0cG9zaXRpb246c3RhdGljO1xuXHR3aWR0aDoxMDAlO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4vKioqKlxuXHRcdGRpaml0LlRvb2x0aXBcbiAqKioqL1xuXG4uZGlqaXRUb29sdGlwIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiAyMDAwO1xuXHRkaXNwbGF5OiBibG9jaztcblx0LyogbWFrZSB2aXNpYmxlIGJ1dCBvZmYgc2NyZWVuICovXG5cdGxlZnQ6IDA7XG5cdHRvcDogLTEwMDAwcHg7XG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4uZGlqaXRUb29sdGlwQ29udGFpbmVyIHtcblx0Ym9yZGVyOiBzb2xpZCBibGFjayAycHg7XG5cdGJhY2tncm91bmQ6ICNiOGI1YjU7XG5cdGNvbG9yOiBibGFjaztcblx0Zm9udC1zaXplOiBzbWFsbDtcbn1cblxuLmRpaml0VG9vbHRpcEZvY3VzTm9kZSB7XG5cdHBhZGRpbmc6IDJweCAycHggMnB4IDJweDtcbn1cblxuLmRpaml0VG9vbHRpcENvbm5lY3RvciB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbi5kal9hMTF5IC5kaWppdFRvb2x0aXBDb25uZWN0b3Ige1xuXHRkaXNwbGF5OiBub25lO1x0Lyogd29uJ3Qgc2hvdyBiL2MgaXQncyBiYWNrZ3JvdW5kLWltYWdlOyBoaWRlIHRvIGF2b2lkIGJvcmRlciBnYXAgKi9cbn1cblxuLmRpaml0VG9vbHRpcERhdGEge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi8qIExheW91dCB3aWRnZXRzLiBUaGlzIGlzIGVzc2VudGlhbCBDU1MgdG8gbWFrZSBsYXlvdXQgd29yayAoaXQgaXNuJ3QgXCJzdHlsaW5nXCIgQ1NTKVxuICAgbWFrZSBzdXJlIHRoYXQgdGhlIHBvc2l0aW9uOmFic29sdXRlIGluIGRpaml0QWxpZ24qIG92ZXJyaWRlcyBvdGhlciBjbGFzc2VzICovXG5cbi5kaWppdExheW91dENvbnRhaW5lciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5kaWppdEFsaWduVG9wLFxuLmRpaml0QWxpZ25Cb3R0b20sXG4uZGlqaXRBbGlnbkxlZnQsXG4uZGlqaXRBbGlnblJpZ2h0IHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5ib2R5IC5kaWppdEFsaWduQ2xpZW50IHsgcG9zaXRpb246IGFic29sdXRlOyB9XG5cbi8qXG4gKiBCb3JkZXJDb250YWluZXJcbiAqXG4gKiAuZGlqaXRCb3JkZXJDb250YWluZXIgaXMgYSBzdHlsaXplZCBsYXlvdXQgd2hlcmUgcGFuZXMgaGF2ZSBib3JkZXIgYW5kIG1hcmdpbi5cbiAqIC5kaWppdEJvcmRlckNvbnRhaW5lck5vR3V0dGVyIGlzIGEgcmF3IGxheW91dC5cbiAqL1xuLmRpaml0Qm9yZGVyQ29udGFpbmVyLCAuZGlqaXRCb3JkZXJDb250YWluZXJOb0d1dHRlciB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuICAgIHotaW5kZXg6IDA7IC8qIHNvIHotaW5kZXggc2V0dGluZ3MgYmVsb3cgaGF2ZSBubyBlZmZlY3Qgb3V0c2lkZSBvZiB0aGUgQm9yZGVyQ29udGFpbmVyICovXG59XG5cbi5kaWppdEJvcmRlckNvbnRhaW5lclBhbmUsXG4uZGlqaXRCb3JkZXJDb250YWluZXJOb0d1dHRlclBhbmUge1xuXHRwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcdC8qICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgcG9zaXRpb246cmVsYXRpdmUgaW4gZGlqaXRUYWJDb250YWluZXIgZXRjLiAqL1xuXHR6LWluZGV4OiAyO1x0XHQvKiBhYm92ZSB0aGUgc3BsaXR0ZXJzIHNvIHRoYXQgb2ZmLWJ5LW9uZSBicm93c2VyIGVycm9ycyBkb24ndCBjb3ZlciB1cCBib3JkZXIgb2YgcGFuZSAqL1xufVxuXG4uZGlqaXRCb3JkZXJDb250YWluZXIgPiAuZGlqaXRUZXh0QXJlYSB7XG5cdC8qIE9uIFNhZmFyaSwgZm9yIFNpbXBsZVRleHRBcmVhIGluc2lkZSBhIEJvcmRlckNvbnRhaW5lcixcblx0XHRkb24ndCB3YW50IHRvIGRpc3BsYXkgdGhlIGdyaXAgdG8gcmVzaXplICovXG5cdHJlc2l6ZTogbm9uZTtcbn1cblxuLmRpaml0R3V0dGVyIHtcblx0LyogZ3V0dGVyIGlzIGp1c3QgYSBwbGFjZSBob2xkZXIgZm9yIGVtcHR5IHNwYWNlIGJldHdlZW4gcGFuZXMgaW4gQm9yZGVyQ29udGFpbmVyICovXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0Zm9udC1zaXplOiAxcHg7XHRcdC8qIG5lZWRlZCBieSBJRTYgZXZlbiB0aG91Z2ggZGl2IGlzIGVtcHR5LCBvdGhlcndpc2UgZ29lcyB0byAxNXB4ICovXG59XG5cbi8qIFNwbGl0Q29udGFpbmVyXG5cblx0J1YnID09IGNvbnRhaW5lciB0aGF0IHNwbGl0cyB2ZXJ0aWNhbGx5ICh1cC9kb3duKVxuXHQnSCcgPSBob3Jpem9udGFsIChsZWZ0L3JpZ2h0KVxuKi9cblxuLmRpaml0U3BsaXR0ZXIge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHotaW5kZXg6IDEwO1x0XHQvKiBhYm92ZSB0aGUgcGFuZXMgc28gdGhhdCBzcGxpdHRlciBmb2N1cyBpcyB2aXNpYmxlIG9uIEZGLCBzZWUgIzc1ODMqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRib3JkZXItY29sb3I6IGdyYXk7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogMDtcbn1cbi5kal9pZSAuZGlqaXRTcGxpdHRlciB7XG5cdHotaW5kZXg6IDE7XHQvKiBiZWhpbmQgdGhlIHBhbmVzIHNvIHRoYXQgcGFuZSBib3JkZXJzIGFyZW4ndCBvYnNjdXJlZCBzZWUgdGVzdF9HdWkuaHRtbC9bMTQzOTJdICovXG59XG5cbi5kaWppdFNwbGl0dGVyQWN0aXZlIHtcblx0ei1pbmRleDogMTEgIWltcG9ydGFudDtcbn1cblxuLmRpaml0U3BsaXR0ZXJDb3ZlciB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHR6LWluZGV4Oi0xO1xuXHR0b3A6MDtcblx0bGVmdDowO1xuXHR3aWR0aDoxMDAlO1xuXHRoZWlnaHQ6MTAwJTtcbn1cblxuLmRpaml0U3BsaXR0ZXJDb3ZlckFjdGl2ZSB7XG5cdHotaW5kZXg6MyAhaW1wb3J0YW50O1xufVxuXG4vKiAjNjk0NTogc3RvcCBtb3VzZSBldmVudHMgKi9cbi5kal9pZSAuZGlqaXRTcGxpdHRlckNvdmVyIHtcblx0YmFja2dyb3VuZDogd2hpdGU7XG5cdG9wYWNpdHk6IDA7XG59XG4uZGpfaWU2IC5kaWppdFNwbGl0dGVyQ292ZXIsXG4uZGpfaWU3IC5kaWppdFNwbGl0dGVyQ292ZXIsXG4uZGpfaWU4IC5kaWppdFNwbGl0dGVyQ292ZXIge1xuXHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7XG59XG5cbi5kaWppdFNwbGl0dGVySCB7XG5cdGhlaWdodDogN3B4O1xuXHRib3JkZXItdG9wOjFweDtcblx0Ym9yZGVyLWJvdHRvbToxcHg7XG5cdGN1cnNvcjogcm93LXJlc2l6ZTtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5kaWppdFNwbGl0dGVyViB7XG5cdHdpZHRoOiA3cHg7XG5cdGJvcmRlci1sZWZ0OjFweDtcblx0Ym9yZGVyLXJpZ2h0OjFweDtcblx0Y3Vyc29yOiBjb2wtcmVzaXplO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0U3BsaXRDb250YWluZXIge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uZGlqaXRTcGxpdFBhbmUge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJILFxuLmRpaml0U3BsaXRDb250YWluZXJTaXplclYge1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0Zm9udC1zaXplOiAxcHg7XG5cdGJhY2tncm91bmQtY29sb3I6IFRocmVlREZhY2U7XG5cdGJvcmRlcjogMXB4IHNvbGlkO1xuXHRib3JkZXItY29sb3I6IFRocmVlREhpZ2hsaWdodCBUaHJlZURTaGFkb3cgVGhyZWVEU2hhZG93IFRocmVlREhpZ2hsaWdodDtcblx0bWFyZ2luOiAwO1xufVxuXG4uZGlqaXRTcGxpdENvbnRhaW5lclNpemVySCAudGh1bWIsIC5kaWppdFNwbGl0dGVyViAuZGlqaXRTcGxpdHRlclRodW1iIHtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0dG9wOjQ5JTtcbn1cblxuLmRpaml0U3BsaXRDb250YWluZXJTaXplclYgLnRodW1iLCAuZGlqaXRTcGxpdHRlckggLmRpaml0U3BsaXR0ZXJUaHVtYiB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHRsZWZ0OjQ5JTtcbn1cblxuLmRpaml0U3BsaXR0ZXJTaGFkb3csXG4uZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplckgsXG4uZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplclYge1xuXHRmb250LXNpemU6IDFweDtcblx0YmFja2dyb3VuZC1jb2xvcjogVGhyZWVEU2hhZG93O1xuXHQtbW96LW9wYWNpdHk6IDAuNTtcblx0b3BhY2l0eTogMC41O1xuXHRmaWx0ZXI6IEFscGhhKE9wYWNpdHk9NTApO1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJILCAuZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplckgge1xuXHRjdXJzb3I6IGNvbC1yZXNpemU7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJWLCAuZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplclYge1xuXHRjdXJzb3I6IHJvdy1yZXNpemU7XG59XG5cbi5kal9hMTF5IC5kaWppdFNwbGl0dGVySCB7XG5cdGJvcmRlci10b3A6MXB4IHNvbGlkICNkM2QzZDMgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2QzZDNkMyAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0U3BsaXR0ZXJWIHtcblx0Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkM2QzZDMgIWltcG9ydGFudDtcblx0Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZDNkM2QzICFpbXBvcnRhbnQ7XG59XG5cbi8qIENvbnRlbnRQYW5lICovXG5cbi5kaWppdENvbnRlbnRQYW5lIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG92ZXJmbG93OiBhdXRvO1x0LyogaWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIChvciBvdmVyZmxvdzpoaWRkZW4pLCB0aGVuIFdpZGdldC5yZXNpemVUbygpIGRvZXNuJ3QgbWFrZSBzZW5zZSBmb3IgQ29udGVudFBhbmUgKi9cblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG4uZGlqaXRDb250ZW50UGFuZVNpbmdsZUNoaWxkIHtcblx0Lypcblx0ICogaWYgdGhlIENvbnRlbnRQYW5lIGhvbGRzIGEgc2luZ2xlIGxheW91dCB3aWRnZXQgY2hpbGQgd2hpY2ggaXMgYmVpbmcgc2l6ZWQgdG8gbWF0Y2ggdGhlIGNvbnRlbnQgcGFuZSxcblx0ICogdGhlbiB0aGUgQ29udGVudFBhbmUgc2hvdWxkIG5ldmVyIGdldCBhIHNjcm9sbGJhciAoYnV0IGl0IGRvZXMgZHVlIHRvIGJyb3dzZXIgYnVncywgc2VlICM5NDQ5XG5cdCAqL1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZGlqaXRDb250ZW50UGFuZUxvYWRpbmcgLmRpaml0SWNvbkxvYWRpbmcsXG4uZGlqaXRDb250ZW50UGFuZUVycm9yIC5kaWppdEljb25FcnJvciB7XG5cdG1hcmdpbi1yaWdodDogOXB4O1xufVxuXG4vKiBUaXRsZVBhbmUgYW5kIEZpZWxkc2V0ICovXG5cbi5kaWppdFRpdGxlUGFuZSB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuLmRpaml0RmllbGRzZXQge1xuXHRib3JkZXI6IDFweCBzb2xpZCBncmF5O1xufVxuLmRpaml0VGl0bGVQYW5lVGl0bGUsIC5kaWppdEZpZWxkc2V0VGl0bGUge1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uZGlqaXRUaXRsZVBhbmVUaXRsZUZpeGVkT3BlbiwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZENsb3NlZCxcbi5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZE9wZW4sIC5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZENsb3NlZCB7XG5cdC8qIFRpdGxlUGFuZSBvciBGaWVsZHNldCB0aGF0IGNhbm5vdCBiZSB0b2dnbGVkICovXG5cdGN1cnNvcjogZGVmYXVsdDtcbn1cbi5kaWppdFRpdGxlUGFuZVRpdGxlICoge1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZUlubmVyLCAuZGlqaXRGaWVsZHNldCAuZGlqaXRBcnJvd05vZGVJbm5lciB7XG5cdC8qIG5vcm1hbGx5LCBoaWRlIGFycm93IHRleHQgaW4gZmF2b3Igb2YgaWNvbiAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRqX2ExMXkgLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZUlubmVyLCAuZGpfYTExeSAuZGlqaXRGaWVsZHNldCAuZGlqaXRBcnJvd05vZGVJbm5lciB7XG5cdC8qIC4uLiBleGNlcHQgaW4gYTExeSBtb2RlLCB0aGVuIHNob3cgdGV4dCBhcnJvdyAqL1xuXHRkaXNwbGF5OiBpbmxpbmU7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XHRcdC8qIGJlY2F1c2UgLSBhbmQgKyBhcmUgZGlmZmVyZW50IHdpZHRocyAqL1xufVxuLmRqX2ExMXkgLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZSwgLmRqX2ExMXkgLmRpaml0RmllbGRzZXQgLmRpaml0QXJyb3dOb2RlIHtcblx0LyogLi4uIGFuZCBoaWRlIGljb24gKFRPRE86IGp1c3QgcG9pbnQgZGlqaXRJY29uIGNsYXNzIG9uIHRoZSBpY29uLCBhbmQgaXQgaGlkZXMgYXV0b21hdGljYWxseSkgKi9cblx0ZGlzcGxheTogbm9uZTtcbn1cbi5kaWppdFRpdGxlUGFuZVRpdGxlRml4ZWRPcGVuIC5kaWppdEFycm93Tm9kZSwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZE9wZW4gLmRpaml0QXJyb3dOb2RlSW5uZXIsXG4uZGlqaXRUaXRsZVBhbmVUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZSwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZENsb3NlZCAuZGlqaXRBcnJvd05vZGVJbm5lcixcbi5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZE9wZW4gLmRpaml0QXJyb3dOb2RlLCAuZGlqaXRGaWVsZHNldFRpdGxlRml4ZWRPcGVuIC5kaWppdEFycm93Tm9kZUlubmVyLFxuLmRpaml0RmllbGRzZXRUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZSwgLmRpaml0RmllbGRzZXRUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZUlubmVyIHtcblx0LyogZG9uJ3Qgc2hvdyB0aGUgb3BlbiBjbG9zZSBpY29uIG9yIHRleHQgYXJyb3c7IGl0IG1ha2VzIHRoZSB1c2VyIHRoaW5rIHRoZSBwYW5lIGlzIGNsb3NhYmxlICovXG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcdC8qICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgYWJvdmUgYTExeSBydWxlcyB0byBzaG93IHRleHQgYXJyb3cgKi9cbn1cblxuLmRqX2llNiAuZGlqaXRUaXRsZVBhbmVDb250ZW50T3V0ZXIsXG4uZGpfaWU2IC5kaWppdFRpdGxlUGFuZSAuZGlqaXRUaXRsZVBhbmVUaXRsZSB7XG5cdC8qIGZvcmNlIGhhc0xheW91dCB0byBlbnN1cmUgYm9yZGVycyBldGMsIHNob3cgdXAgKi9cblx0em9vbTogMTtcbn1cblxuLyogQ29sb3IgUGFsZXR0ZVxuICogU2l6ZXMgZGVzaWduZWQgc28gdGhhdCB0YWJsZSBjZWxsIHBvc2l0aW9ucyBtYXRjaCBpY29ucyBpbiB1bmRlcmx5aW5nIGltYWdlLFxuICogd2hpY2ggYXBwZWFyIGF0IDIweDIwIGludGVydmFscy5cbiAqL1xuXG4uZGlqaXRDb2xvclBhbGV0dGUge1xuXHRib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuXHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUge1xuXHQvKiBUYWJsZSB0aGF0IGhvbGRzIHRoZSBwYWxldHRlIGNlbGxzLCBhbmQgb3ZlcmxheXMgaW1hZ2UgZmlsZSB3aXRoIGNvbG9yIHN3YXRjaGVzLlxuXHQgKiBwYWRkaW5nL21hcmdpbiB0byBhbGlnbiB0YWJsZSB3aXRoIGltYWdlLlxuXHQgKi9cblx0cGFkZGluZzogMnB4IDNweCAzcHggM3B4O1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdG91dGxpbmU6IDA7XG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG59XG4uZGpfaWU2IC5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUsXG4uZGpfaWU3IC5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUsXG4uZGpfaWVxdWlya3MgLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVUYWJsZSB7XG5cdC8qIHVzaW5nIHBhZGRpbmcgYWJvdmUgc28gdGhhdCBmb2N1cyBib3JkZXIgaXNuJ3QgY3V0b2ZmIG9uIG1vei93ZWJraXQsXG5cdCAqIGJ1dCB1c2luZyBtYXJnaW4gb24gSUUgYmVjYXVzZSBwYWRkaW5nIGRvZXNuJ3Qgc2VlbSB0byB3b3JrXG5cdCAqL1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDJweCAzcHggM3B4IDNweDtcbn1cblxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVDZWxsIHtcblx0LyogPHRkPiBpbiB0aGUgPHRhYmxlPiAqL1xuXHRmb250LXNpemU6IDFweDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRiYWNrZ3JvdW5kOiBub25lO1xufVxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVJbWcge1xuXHQvKiBDYWxsZWQgZGlqaXRQYWxldHRlSW1nIGZvciBiYWNrLWNvbXBhdCwgdGhpcyBhY3R1YWxseSB3cmFwcyB0aGUgY29sb3Igc3dhdGNoIHdpdGggYSBib3JkZXIgYW5kIHBhZGRpbmcgKi9cblx0cGFkZGluZzogMXB4O1x0XHQvKiB3aGl0ZSBhcmVhIGJldHdlZW4gZ3JheSBib3JkZXIgYW5kIGNvbG9yIHN3YXRjaCAqL1xuXHRib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuXHRtYXJnaW46IDJweCAxcHg7XG5cdGN1cnNvcjogZGVmYXVsdDtcblx0Zm9udC1zaXplOiAxcHg7XHRcdC8qIHByZXZlbnQgPHNwYW4+IGZyb20gZ2V0dGluZyBiaWdnZXIganVzdCB0byBob2xkIGEgY2hhcmFjdGVyICovXG59XG4uZGpfZ2Vja28gLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVJbWcge1xuXHRwYWRkaW5nLWJvdHRvbTogMDtcdC8qIHdvcmthcm91bmQgcmVuZGVyaW5nIGdsaXRjaCBvbiBGRiwgaXQgYWRkcyBhbiBleHRyYSBwaXhlbCBhdCB0aGUgYm90dG9tICovXG59XG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0Q29sb3JQYWxldHRlU3dhdGNoIHtcblx0LyogdGhlIGFjdHVhbCBwYXJ0IHdoZXJlIHRoZSBjb2xvciBpcyAqL1xuXHR3aWR0aDogMTRweDtcblx0aGVpZ2h0OiAxMnB4O1xufVxuLmRpaml0UGFsZXR0ZVRhYmxlIHRkIHtcblx0XHRwYWRkaW5nOiAwO1xufVxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVDZWxsOmhvdmVyIC5kaWppdFBhbGV0dGVJbWcge1xuXHQvKiBob3ZlcmVkIGNvbG9yIHN3YXRjaCAqL1xuXHRib3JkZXI6IDFweCBzb2xpZCAjMDAwO1xufVxuXG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZUNlbGw6YWN0aXZlIC5kaWppdFBhbGV0dGVJbWcsXG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZVRhYmxlIC5kaWppdFBhbGV0dGVDZWxsU2VsZWN0ZWQgLmRpaml0UGFsZXR0ZUltZyB7XG5cdGJvcmRlcjogMnB4IHNvbGlkICMwMDA7XG5cdG1hcmdpbjogMXB4IDA7XHQvKiByZWR1Y2UgbWFyZ2luIHRvIGNvbXBlbnNhdGUgZm9yIGluY3JlYXNlZCBib3JkZXIgKi9cbn1cblxuXG4uZGpfYTExeSAuZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZVRhYmxlLFxuLmRqX2ExMXkgLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVUYWJsZSAqIHtcblx0LyogdGFibGUgY2VsbHMgYXJlIHRvIGNhdGNoIGV2ZW50cywgYnV0IHRoZSBzd2F0Y2hlcyBhcmUgaW4gdGhlIFBhbGV0dGVJbWcgYmVoaW5kIHRoZSB0YWJsZSAqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4vKiBBY2NvcmRpb25Db250YWluZXIgKi9cblxuLmRpaml0QWNjb3JkaW9uQ29udGFpbmVyIHtcblx0Ym9yZGVyOjFweCBzb2xpZCAjYjdiN2I3O1xuXHRib3JkZXItdG9wOjAgIWltcG9ydGFudDtcbn1cbi5kaWppdEFjY29yZGlvblRpdGxlIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0QWNjb3JkaW9uVGl0bGVTZWxlY3RlZCB7XG5cdGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLyogaW1hZ2VzIG9mZiwgaGlnaC1jb250cmFzdCBtb2RlIHN0eWxlcyAqL1xuLmRpaml0QWNjb3JkaW9uVGl0bGUgLmFycm93VGV4dFVwLFxuLmRpaml0QWNjb3JkaW9uVGl0bGUgLmFycm93VGV4dERvd24ge1xuXHRkaXNwbGF5OiBub25lO1xuXHRmb250LXNpemU6IDAuNjVlbTtcblx0Zm9udC13ZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZSAuYXJyb3dUZXh0VXAsXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZVNlbGVjdGVkIC5hcnJvd1RleHREb3duIHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZVNlbGVjdGVkIC5hcnJvd1RleHRVcCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5kaWppdEFjY29yZGlvbkNoaWxkV3JhcHBlciB7XG5cdC8qIHRoaXMgaXMgdGhlIG5vZGUgd2hvc2UgaGVpZ2h0IGlzIGFkanVzdGVkICovXG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIENhbGVuZGFyICovXG5cbi5kaWppdENhbGVuZGFyQ29udGFpbmVyIHRhYmxlIHtcblx0d2lkdGg6IGF1dG87XHQvKiBpbiBjYXNlIHVzZXIgaGFzIHNwZWNpZmllZCBhIHdpZHRoIGZvciB0aGUgVEFCTEUgbm9kZXMsIHNlZSAjMTA1NTMgKi9cblx0Y2xlYXI6IGJvdGg7ICAgIC8qIGNsZWFyIG1hcmdpbiBjcmVhdGVkIGZvciBsZWZ0L3JpZ2h0IG1vbnRoIGFycm93czsgbmVlZGVkIG9uIElFMTAgZm9yIENhbGVuZGFyTGl0ZSAqL1xufVxuLmRpaml0Q2FsZW5kYXJDb250YWluZXIgdGgsIC5kaWppdENhbGVuZGFyQ29udGFpbmVyIHRkIHtcblx0cGFkZGluZzogMDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmRpaml0Q2FsZW5kYXJNb250aENvbnRhaW5lciB7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5kaWppdENhbGVuZGFyRGVjcmVtZW50QXJyb3cge1xuXHRmbG9hdDogbGVmdDtcbn1cbi5kaWppdENhbGVuZGFySW5jcmVtZW50QXJyb3cge1xuXHRmbG9hdDogcmlnaHQ7XG59XG5cbi5kaWppdENhbGVuZGFyWWVhckxhYmVsIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyAgICAvKiBtYWtlIHN1cmUgcHJldmlvdXMsIGN1cnJlbnQsIGFuZCBuZXh0IHllYXIgYXBwZWFyIG9uIHNhbWUgcm93ICovXG59XG5cbi5kaWppdENhbGVuZGFyTmV4dFllYXIge1xuXHRtYXJnaW46MCAwIDAgMC41NWVtO1xufVxuXG4uZGlqaXRDYWxlbmRhclByZXZpb3VzWWVhciB7XG5cdG1hcmdpbjowIDAuNTVlbSAwIDA7XG59XG5cbi5kaWppdENhbGVuZGFySW5jcmVtZW50Q29udHJvbCB7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kaWppdENhbGVuZGFySW5jcmVtZW50Q29udHJvbCxcbi5kaWppdENhbGVuZGFyRGF0ZVRlbXBsYXRlLFxuLmRpaml0Q2FsZW5kYXJNb250aExhYmVsLFxuLmRpaml0Q2FsZW5kYXJQcmV2aW91c1llYXIsXG4uZGlqaXRDYWxlbmRhck5leHRZZWFyIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGlqaXRDYWxlbmRhckRpc2FibGVkRGF0ZSB7XG5cdGNvbG9yOiBncmF5O1xuXHR0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4uZGlqaXRTcGFjZXIge1xuXHQvKiBkb24ndCBkaXNwbGF5IGl0LCBidXQgbWFrZSBpdCBhZmZlY3QgdGhlIHdpZHRoICovXG4gIFx0cG9zaXRpb246IHJlbGF0aXZlO1xuICBcdGhlaWdodDogMXB4O1xuICBcdG92ZXJmbG93OiBoaWRkZW47XG4gIFx0dmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4vKiBTdHlsaW5nIGZvciBtb250aCBkcm9wIGRvd24gbGlzdCAqL1xuXG4uZGlqaXRDYWxlbmRhck1vbnRoTWVudSAuZGlqaXRDYWxlbmRhck1vbnRoTGFiZWwge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcbn1cblxuLyogTWVudSAqL1xuXG4uZGlqaXRNZW51IHtcblx0Ym9yZGVyOjFweCBzb2xpZCBibGFjaztcblx0YmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtcbn1cbi5kaWppdE1lbnVUYWJsZSB7XG5cdGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtcblx0Ym9yZGVyLXdpZHRoOjA7XG5cdGJhY2tncm91bmQtY29sb3I6d2hpdGU7XG59XG5cbi8qIHdvcmthcm91bmQgZm9yIHdlYmtpdCBidWcgIzg0MjcsIHJlbW92ZSB0aGlzIHdoZW4gaXQgaXMgZml4ZWQgdXBzdHJlYW0gKi9cbi5kal93ZWJraXQgLmRpaml0TWVudVRhYmxlIHRkW2NvbHNwYW49XCIyXCJde1xuXHRib3JkZXItcmlnaHQ6aGlkZGVuO1xufVxuXG4uZGlqaXRNZW51SXRlbSB7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdHBhZGRpbmc6LjFlbSAuMmVtO1xuXHRjdXJzb3I6cG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLypcbk5vIG5lZWQgdG8gc2hvdyBhIGZvY3VzIGJvcmRlciBzaW5jZSBpdCdzIG9idmlvdXMgZnJvbSB0aGUgc2hhZGluZywgYW5kIHRoZXJlJ3MgYSAuZGpfYTExeSAuZGlqaXRNZW51SXRlbVNlbGVjdGVkXG5ydWxlIGJlbG93IHRoYXQgaGFuZGxlcyB0aGUgaGlnaCBjb250cmFzdCBjYXNlIHdoZW4gdGhlcmUncyBubyBzaGFkaW5nLlxuSGlkaW5nIHRoZSBmb2N1cyBib3JkZXIgYWxzbyB3b3JrcyBhcm91bmQgd2Via2l0IGJ1ZyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTI1Nzc5LlxuKi9cbi5kaWppdE1lbnVJdGVtOmZvY3VzIHtcblx0b3V0bGluZTogbm9uZVxufVxuXG4uZGlqaXRNZW51UGFzc2l2ZSAuZGlqaXRNZW51SXRlbUhvdmVyLFxuLmRpaml0TWVudUl0ZW1TZWxlY3RlZCB7XG5cdC8qXG5cdCAqIGRpaml0TWVudUl0ZW1Ib3ZlciByZWZlcnMgdG8gYWN0dWFsIG1vdXNlIG92ZXJcblx0ICogZGlqaXRNZW51SXRlbVNlbGVjdGVkIGlzIHVzZWQgYWZ0ZXIgYSBtZW51IGhhcyBiZWVuIFwiYWN0aXZhdGVkXCIgYnlcblx0ICogY2xpY2tpbmcgaXQsIHRhYmJpbmcgaW50byBpdCwgb3IgYmVpbmcgb3BlbmVkIGZyb20gYSBwYXJlbnQgbWVudSxcblx0ICogYW5kIGRlbm90ZXMgdGhhdCB0aGUgbWVudSBpdGVtIGhhcyBmb2N1cyBvciB0aGF0IGZvY3VzIGlzIG9uIGEgY2hpbGRcblx0ICogbWVudVxuXHQgKi9cblx0YmFja2dyb3VuZC1jb2xvcjpibGFjaztcblx0Y29sb3I6d2hpdGU7XG59XG5cbi5kaWppdE1lbnVJdGVtSWNvbiwgLmRpaml0TWVudUV4cGFuZCB7XG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5cbi5kaWppdE1lbnVJdGVtRGlzYWJsZWQgKiB7XG5cdC8qIGZvciBhIGRpc2FibGVkIG1lbnUgaXRlbSwganVzdCBzZXQgaXQgdG8gbW9zdGx5IHRyYW5zcGFyZW50ICovXG5cdG9wYWNpdHk6MC41O1xuXHRjdXJzb3I6ZGVmYXVsdDtcbn1cbi5kal9pZSAuZGpfYTExeSAuZGlqaXRNZW51SXRlbURpc2FibGVkLFxuLmRqX2llIC5kal9hMTF5IC5kaWppdE1lbnVJdGVtRGlzYWJsZWQgKixcbi5kal9pZSAuZGlqaXRNZW51SXRlbURpc2FibGVkICoge1xuXHRjb2xvcjogZ3JheTtcblx0ZmlsdGVyOiBhbHBoYShvcGFjaXR5PTM1KTtcbn1cblxuLmRpaml0TWVudUl0ZW1MYWJlbCB7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kal9hMTF5IC5kaWppdE1lbnVJdGVtU2VsZWN0ZWQge1xuXHRib3JkZXI6IDFweCBkb3R0ZWQgYmxhY2sgIWltcG9ydGFudDtcdC8qIGZvciAyLjAgdXNlIG91dGxpbmUgaW5zdGVhZCwgdG8gcHJldmVudCBqaXR0ZXIgKi9cbn1cblxuLmRqX2ExMXkgLmRpaml0TWVudUl0ZW1TZWxlY3RlZCAuZGlqaXRNZW51SXRlbUxhYmVsIHtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG59XG4uZGpfaWU4IC5kal9hMTF5IC5kaWppdE1lbnVJdGVtTGFiZWwge1xuXHRwb3NpdGlvbjpzdGF0aWM7XG59XG5cbi5kaWppdE1lbnVFeHBhbmRBMTF5IHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbi5kal9hMTF5IC5kaWppdE1lbnVFeHBhbmRBMTF5IHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGlqaXRNZW51U2VwYXJhdG9yIHRkIHtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xufVxuXG4vKiBzZXBhcmF0b3IgY2FuIGJlIHR3byBwaXhlbHMgLS0gc2V0IGJvcmRlciBvZiBlaXRoZXIgb25lIHRvIDAgdG8gaGF2ZSBvbmx5IG9uZSAqL1xuLmRpaml0TWVudVNlcGFyYXRvclRvcCB7XG5cdGhlaWdodDogNTAlO1xuXHRtYXJnaW46IDA7XG5cdG1hcmdpbi10b3A6M3B4O1xuXHRmb250LXNpemU6IDFweDtcbn1cblxuLmRpaml0TWVudVNlcGFyYXRvckJvdHRvbSB7XG5cdGhlaWdodDogNTAlO1xuXHRtYXJnaW46IDA7XG5cdG1hcmdpbi1ib3R0b206M3B4O1xuXHRmb250LXNpemU6IDFweDtcbn1cblxuLyogQ2hlY2tlZE1lbnVJdGVtIGFuZCBSYWRpb01lbnVJdGVtICovXG4uZGlqaXRNZW51SXRlbUljb25DaGFyIHtcblx0ZGlzcGxheTogbm9uZTtcdFx0LyogZG9uJ3QgZGlzcGxheSBleGNlcHQgaW4gaGlnaCBjb250cmFzdCBtb2RlICovXG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcdC8qIGZvciBoaWdoIGNvbnRyYXN0IG1vZGUgd2hlbiBtZW51aXRlbSBpcyB1bmNoZWNrZWQ6IGxlYXZlIHNwYWNlIGZvciB3aGVuIGl0IGlzIGNoZWNrZWQgKi9cbn1cbi5kal9hMTF5IC5kaWppdE1lbnVJdGVtSWNvbkNoYXIge1xuXHRkaXNwbGF5OiBpbmxpbmU7XHQvKiBkaXNwbGF5IGNoYXJhY3RlciBpbiBoaWdoIGNvbnRyYXN0IG1vZGUsIHNpbmNlIGljb24gZG9lc24ndCBzaG93ICovXG59XG4uZGlqaXRDaGVja2VkTWVudUl0ZW1DaGVja2VkIC5kaWppdE1lbnVJdGVtSWNvbkNoYXIsXG4uZGlqaXRSYWRpb01lbnVJdGVtQ2hlY2tlZCAuZGlqaXRNZW51SXRlbUljb25DaGFyIHtcblx0dmlzaWJpbGl0eTogdmlzaWJsZTsgLyogbWVudWl0ZW0gaXMgY2hlY2tlZCAqL1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdE1lbnVCYXIgLmRpaml0TWVudUl0ZW0ge1xuXHQvKiBzbyBib3R0b20gYm9yZGVyIG9mIE1lbnVCYXIgYXBwZWFycyBvbiBJRTcgaW4gaGlnaC1jb250cmFzdCBtb2RlICovXG5cdG1hcmdpbjogMDtcbn1cblxuLyogU3RhY2tDb250YWluZXIgKi9cblxuLmRpaml0U3RhY2tDb250cm9sbGVyIC5kaWppdFRvZ2dsZUJ1dHRvbkNoZWNrZWQgKiB7XG5cdGN1cnNvcjogZGVmYXVsdDtcdC8qIGJlY2F1c2UgcHJlc3NpbmcgaXQgaGFzIG5vIGVmZmVjdCAqL1xufVxuXG4vKioqXG5UYWJDb250YWluZXJcblxuTWFpbiBjbGFzcyBoaWVyYXJjaHk6XG5cbi5kaWppdFRhYkNvbnRhaW5lciAtIHRoZSB3aG9sZSBUYWJDb250YWluZXJcbiAgIC5kaWppdFRhYkNvbnRyb2xsZXIgLyAuZGlqaXRUYWJMaXN0Q29udGFpbmVyLXRvcCAtIHdyYXBwZXIgZm9yIHRhYiBidXR0b25zLCBzY3JvbGwgYnV0dG9uc1xuXHQgLmRpaml0VGFiTGlzdFdyYXBwZXIgLyAuZGlqaXRUYWJDb250YWluZXJUb3BTdHJpcCAtIG91dGVyIHdyYXBwZXIgZm9yIHRhYiBidXR0b25zIChub3JtYWwgd2lkdGgpXG5cdFx0Lm5vd3JhcFRhYlN0cmlwIC8gLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgLSBpbm5lciB3cmFwcGVyIGZvciB0YWIgYnV0dG9ucyAoNTBLIHdpZHRoKVxuICAgLmRpaml0VGFiUGFuZVdyYXBwZXIgLSB3cmFwcGVyIGZvciBjb250ZW50IHBhbmVzLCBoYXMgYWxsIGJvcmRlcnMgZXhjZXB0IHRoZSBvbmUgYmV0d2VlbiBjb250ZW50IGFuZCB0YWJzXG4qKiovXG5cbi5kaWppdFRhYkNvbnRhaW5lciB7XG4gICAgei1pbmRleDogMDsgLyogc28gei1pbmRleCBzZXR0aW5ncyBiZWxvdyBoYXZlIG5vIGVmZmVjdCBvdXRzaWRlIG9mIHRoZSBUYWJDb250YWluZXIgKi9cbiAgICBvdmVyZmxvdzogdmlzaWJsZTsgLyogcHJldmVudCBvZmYtYnktb25lLXBpeGVsIGVycm9ycyBmcm9tIGhpZGluZyBib3R0b20gYm9yZGVyIChvcHBvc2l0ZSB0YWIgbGFiZWxzKSAqL1xufVxuLmRqX2llNiAuZGlqaXRUYWJDb250YWluZXIge1xuICAgIC8qIHdvcmthcm91bmQgSUU2IHByb2JsZW0gd2hlbiB0YWxsIGNvbnRlbnQgb3ZlcmZsb3dzIFRhYkNvbnRhaW5lciwgc2VlIGVkaXRvci90ZXN0X0Z1bGxTY3JlZW4uaHRtbCAqL1xuICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxufVxuLmRpaml0VGFiQ29udGFpbmVyTm9MYXlvdXQge1xuXHR3aWR0aDogMTAwJTtcdC8qIG90aGVyd2lzZSBTY3JvbGxpbmdUYWJDb250cm9sbGVyIGdvZXMgdG8gNTBLIHBpeGVscyB3aWRlICovXG59XG5cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzLFxuLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMsXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMsXG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIHtcbiAgICB6LWluZGV4OiAxO1xuXHRvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OyAgLyogc28gdGFicyBjYW4gY292ZXIgdXAgYm9yZGVyIGFkamFjZW50IHRvIGNvbnRhaW5lciAqL1xufVxuXG4uZGlqaXRUYWJDb250cm9sbGVyIHtcbiAgICB6LWluZGV4OiAxO1xufVxuLmRpaml0VGFiQ29udGFpbmVyQm90dG9tLWNvbnRhaW5lcixcbi5kaWppdFRhYkNvbnRhaW5lclRvcC1jb250YWluZXIsXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LWNvbnRhaW5lcixcbi5kaWppdFRhYkNvbnRhaW5lclJpZ2h0LWNvbnRhaW5lciB7XG5cdHotaW5kZXg6MDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7XG59XG4ubm93cmFwVGFiU3RyaXAge1xuXHR3aWR0aDogNTAwMDBweDtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0OyAgLyoganVzdCBpbiBjYXNlIGFuY2VzdG9yIGhhcyBub24tc3RhbmRhcmQgc2V0dGluZyAqL1xuICAgIHotaW5kZXg6IDE7XG59XG4uZGlqaXRUYWJMaXN0V3JhcHBlciB7XG5cdG92ZXJmbG93OiBoaWRkZW47XG4gICAgei1pbmRleDogMTtcbn1cblxuLmRqX2ExMXkgLnRhYlN0cmlwQnV0dG9uIGltZyB7XG5cdC8qIGhpZGUgdGhlIGljb25zIChvciByYXRoZXIgdGhlIGVtcHR5IHNwYWNlIHdoZXJlIHRoZXkgbm9ybWFsbHkgYXBwZWFyKSBiZWNhdXNlIHRleHQgd2lsbCBhcHBlYXIgaW5zdGVhZCAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJUb3AtdGFicyB7XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjaztcbn1cbi5kaWppdFRhYkNvbnRhaW5lclRvcC1jb250YWluZXIge1xuXHRib3JkZXItdG9wOiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMge1xuXHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBibGFjaztcblx0ZmxvYXQ6IGxlZnQ7ICAgIC8qIG5lZWRlZCBmb3IgSUU3IFJUTCBtb2RlICovXG59XG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LWNvbnRhaW5lciB7XG5cdGJvcmRlci1sZWZ0OiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJCb3R0b20tdGFicyB7XG5cdGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjaztcbn1cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS1jb250YWluZXIge1xuXHRib3JkZXItYm90dG9tOiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIHtcblx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCBibGFjaztcblx0ZmxvYXQ6IGxlZnQ7ICAgIC8qIG5lZWRlZCBmb3IgSUU3IFJUTCBtb2RlICovXG59XG4uZGlqaXRUYWJDb250YWluZXJSaWdodC1jb250YWluZXIge1xuXHRib3JkZXItcmlnaHQ6IDA7XG59XG5cbmRpdi5kaWppdFRhYkRpc2FibGVkLCAuZGpfaWUgZGl2LmRpaml0VGFiRGlzYWJsZWQge1xuXHRjdXJzb3I6IGF1dG87XG59XG5cbi5kaWppdFRhYiB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRjdXJzb3I6cG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcblx0d2hpdGUtc3BhY2U6bm93cmFwO1xuXHR6LWluZGV4OjM7XG59XG4uZGlqaXRUYWIgKiB7XG5cdC8qIG1ha2UgdGFiIGljb25zIGFuZCBjbG9zZSBpY29uIGxpbmUgdXAgdy90ZXh0ICovXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4uZGlqaXRUYWJDaGVja2VkIHtcblx0Y3Vyc29yOiBkZWZhdWx0O1x0LyogYmVjYXVzZSBjbGlja2luZyB3aWxsIGhhdmUgbm8gZWZmZWN0ICovXG59XG5cbi5kaWppdFRhYkNvbnRhaW5lclRvcC10YWJzIC5kaWppdFRhYiB7XG5cdHRvcDogMXB4O1x0LyogdG8gb3ZlcmxhcCBib3JkZXIgb24gLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgKi9cbn1cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzIC5kaWppdFRhYiB7XG5cdHRvcDogLTFweDtcdC8qIHRvIG92ZXJsYXAgYm9yZGVyIG9uIC5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzICovXG59XG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMgLmRpaml0VGFiIHtcblx0bGVmdDogMXB4O1x0LyogdG8gb3ZlcmxhcCBib3JkZXIgb24gLmRpaml0VGFiQ29udGFpbmVyTGVmdC10YWJzICovXG59XG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIC5kaWppdFRhYiB7XG5cdGxlZnQ6IC0xcHg7XHQvKiB0byBvdmVybGFwIGJvcmRlciBvbiAuZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzICovXG59XG5cblxuLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgLmRpaml0VGFiLFxuLmRpaml0VGFiQ29udGFpbmVyQm90dG9tLXRhYnMgLmRpaml0VGFiIHtcblx0LyogSW5saW5lLWJsb2NrICovXG5cdGRpc3BsYXk6aW5saW5lLWJsb2NrO1x0XHRcdC8qIHdlYmtpdCBhbmQgRkYzICovXG5cdCN6b29tOiAxOyAvKiBzZXQgaGFzTGF5b3V0OnRydWUgdG8gbWltaWMgaW5saW5lLWJsb2NrICovXG5cdCNkaXNwbGF5OmlubGluZTsgLyogZG9uJ3QgdXNlIC5kal9pZSBzaW5jZSB0aGF0IGluY3JlYXNlcyB0aGUgcHJpb3JpdHkgKi9cbn1cblxuLnRhYlN0cmlwQnV0dG9uIHtcblx0ei1pbmRleDogMTI7XG59XG5cbi5kaWppdFRhYkJ1dHRvbkRpc2FibGVkIC50YWJTdHJpcEJ1dHRvbiB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cblxuLmRpaml0VGFiQ2xvc2VCdXR0b24ge1xuXHRtYXJnaW4tbGVmdDogMWVtO1xufVxuXG4uZGlqaXRUYWJDbG9zZVRleHQge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi5kaWppdFRhYiAudGFiTGFiZWwge1xuXHQvKiBtYWtlIHN1cmUgdGFicyB3L2Nsb3NlIGJ1dHRvbiBhbmQgdy9vdXQgY2xvc2UgYnV0dG9uIGFyZSBzYW1lIGhlaWdodCwgZXZlbiB3L3NtYWxsICg8MTVweCkgZm9udC5cblx0ICogYXNzdW1lcyA8PTE1cHggaGVpZ2h0IGZvciBjbG9zZSBidXR0b24gaWNvbi5cblx0ICovXG5cdG1pbi1oZWlnaHQ6IDE1cHg7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5kaWppdE5vSWNvbiB7XG5cdC8qIGFwcGxpZWQgdG8gPGltZz4vPHNwYW4+IG5vZGUgd2hlbiB0aGVyZSBpcyBubyBpY29uIHNwZWNpZmllZCAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRqX2llNiAuZGlqaXRUYWIgLmRpaml0Tm9JY29uIHtcblx0LyogYmVjYXVzZSBtaW4taGVpZ2h0IChvbiAudGFiTGFiZWwsIGFib3ZlKSBkb2Vzbid0IHdvcmsgb24gSUU2ICovXG5cdGRpc3BsYXk6IGlubGluZTtcblx0aGVpZ2h0OiAxNXB4O1xuXHR3aWR0aDogMXB4O1xufVxuXG4vKiBpbWFnZXMgb2ZmLCBoaWdoLWNvbnRyYXN0IG1vZGUgc3R5bGVzICovXG5cbi5kal9hMTF5IC5kaWppdFRhYkNsb3NlQnV0dG9uIHtcblx0YmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuXHR3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmRqX2ExMXkgLmRpaml0VGFiQ2xvc2VUZXh0IHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGlqaXRUYWJQYW5lLFxuLmRpaml0U3RhY2tDb250YWluZXItY2hpbGQsXG4uZGlqaXRBY2NvcmRpb25Db250YWluZXItY2hpbGQge1xuXHQvKiBjaGlsZHJlbiBvZiBUYWJDb250YWluZXIsIFN0YWNrQ29udGFpbmVyLCBhbmQgQWNjb3JkaW9uQ29udGFpbmVyIHNob3VsZG4ndCBoYXZlIGJvcmRlcnNcblx0ICogYi9jIGEgYm9yZGVyIGlzIGFscmVhZHkgdGhlcmUgZnJvbSB0aGUgVGFiQ29udGFpbmVyL1N0YWNrQ29udGFpbmVyL0FjY29yZGlvbkNvbnRhaW5lciBpdHNlbGYuXG5cdCAqL1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBJbmxpbmVFZGl0Qm94ICovXG4uZGlqaXRJbmxpbmVFZGl0Qm94RGlzcGxheU1vZGUge1xuXHRib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcdC8qIHNvIGtleWxpbmUgKGJvcmRlcikgb24gaG92ZXIgY2FuIGFwcGVhciB3aXRob3V0IHNjcmVlbiBqdW1wICovXG5cdGN1cnNvcjogdGV4dDtcbn1cblxuLmRqX2ExMXkgLmRpaml0SW5saW5lRWRpdEJveERpc3BsYXlNb2RlLFxuLmRqX2llNiAuZGlqaXRJbmxpbmVFZGl0Qm94RGlzcGxheU1vZGUge1xuXHQvKiBleGNlcHQgdGhhdCBJRTYgZG9lc24ndCBzdXBwb3J0IHRyYW5zcGFyZW50IGJvcmRlcnMsIG5vciBkb2VzIGhpZ2ggY29udHJhc3QgbW9kZSAqL1xuXHRib3JkZXI6IG5vbmU7XG59XG5cbi5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZUhvdmVyLFxuLmRqX2ExMXkgLmRpaml0SW5saW5lRWRpdEJveERpc3BsYXlNb2RlSG92ZXIsXG4uZGpfaWU2IC5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZUhvdmVyIHtcblx0LyogQW4gSW5saW5lRWRpdEJveCBpbiB2aWV3IG1vZGUgKGNsaWNrIHRoaXMgdG8gZWRpdCB0aGUgdGV4dCkgKi9cblx0YmFja2dyb3VuZC1jb2xvcjogI2UyZWJmMjtcblx0Ym9yZGVyOiBzb2xpZCAxcHggYmxhY2s7XG59XG5cbi5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZURpc2FibGVkIHtcblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKiBUcmVlICovXG4uZGlqaXRUcmVlIHtcblx0b3ZlcmZsb3c6IGF1dG87XHQvKiBmb3Igc2Nyb2xsYmFycyB3aGVuIFRyZWUgaGFzIGEgaGVpZ2h0IHNldHRpbmcsIGFuZCB0byBwcmV2ZW50IHdyYXBwaW5nIGFyb3VuZCBmbG9hdCBlbGVtZW50cywgc2VlICMxMTQ5MSAqL1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGlqaXRUcmVlQ29udGFpbmVyIHtcblx0ZmxvYXQ6IGxlZnQ7XHQvKiBmb3IgY29ycmVjdCBoaWdobGlnaHRpbmcgZHVyaW5nIGhvcml6b250YWwgc2Nyb2xsLCBzZWUgIzE2MTMyICovXG59XG5cbi5kaWppdFRyZWVJbmRlbnQge1xuXHQvKiBhbW91bnQgdG8gaW5kZW50IGVhY2ggdHJlZSBub2RlIChyZWxhdGl2ZSB0byBwYXJlbnQgbm9kZSkgKi9cblx0d2lkdGg6IDE5cHg7XG59XG5cbi5kaWppdFRyZWVSb3csIC5kaWppdFRyZWVDb250ZW50IHtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmRqX2llIC5kaWppdFRyZWVMYWJlbDpmb2N1cyB7XG5cdC8qIHdvcmthcm91bmQgSUU5IGJlaGF2aW9yIHdoZXJlIGRvd24gYXJyb3dpbmcgdGhyb3VnaCBUcmVlTm9kZXMgZG9lc24ndCBzaG93IGZvY3VzIG91dGxpbmUgKi9cblx0b3V0bGluZTogMXB4IGRvdHRlZCBibGFjaztcbn1cblxuLmRpaml0VHJlZVJvdyBpbWcge1xuXHQvKiBtYWtlIHRoZSBleHBhbmRvIGFuZCBmb2xkZXIgaWNvbnMgbGluZSB1cCB3aXRoIHRoZSBsYWJlbCAqL1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uZGlqaXRUcmVlQ29udGVudCB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4uZGlqaXRFeHBhbmRvVGV4dCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5kal9hMTF5IC5kaWppdEV4cGFuZG9UZXh0IHtcblx0ZGlzcGxheTogaW5saW5lO1xuXHRwYWRkaW5nLWxlZnQ6IDEwcHg7XG5cdHBhZGRpbmctcmlnaHQ6IDEwcHg7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogdGhpbjtcblx0Y3Vyc29yOiBwb2ludGVyO1xufVxuXG4uZGlqaXRUcmVlTGFiZWwge1xuXHRtYXJnaW46IDAgNHB4O1xufVxuXG4vKiBEaWFsb2cgKi9cblxuLmRpaml0RGlhbG9nIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiA5OTk7XG5cdG92ZXJmbG93OiBoaWRkZW47XHQvKiBvdmVycmlkZSBvdmVyZmxvdzogYXV0bzsgZnJvbSBDb250ZW50UGFuZSB0byBtYWtlIGRyYWdnaW5nIHNtb290aGVyICovXG59XG5cbi5kaWppdERpYWxvZ1RpdGxlQmFyIHtcblx0Y3Vyc29yOiBtb3ZlO1xufVxuLmRpaml0RGlhbG9nRml4ZWQgLmRpaml0RGlhbG9nVGl0bGVCYXIge1xuXHRjdXJzb3I6ZGVmYXVsdDtcbn1cbi5kaWppdERpYWxvZ0Nsb3NlSWNvbiB7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5kaWppdERpYWxvZ1BhbmVDb250ZW50IHtcblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuLmRpaml0RGlhbG9nVW5kZXJsYXlXcmFwcGVyIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRsZWZ0OiAwO1xuXHR0b3A6IDA7XG5cdHotaW5kZXg6IDk5ODtcblx0ZGlzcGxheTogbm9uZTtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn1cblxuLmRpaml0RGlhbG9nVW5kZXJsYXkge1xuXHRiYWNrZ3JvdW5kOiAjZWVlO1xuXHRvcGFjaXR5OiAwLjU7XG59XG5cbi5kal9pZSAuZGlqaXREaWFsb2dVbmRlcmxheSB7XG5cdGZpbHRlcjogYWxwaGEob3BhY2l0eT01MCk7XG59XG5cbi8qIGltYWdlcyBvZmYsIGhpZ2gtY29udHJhc3QgbW9kZSBzdHlsZXMgKi9cbi5kal9hMTF5IC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGpfYTExeSAuZGlqaXREaWFsb2cge1xuXHRvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdERpYWxvZyAuY2xvc2VUZXh0IHtcblx0ZGlzcGxheTpub25lO1xuXHQvKiBmb3IgdGhlIG9uaG92ZXIgYm9yZGVyIGluIGhpZ2ggY29udHJhc3Qgb24gSUU6ICovXG5cdHBvc2l0aW9uOmFic29sdXRlO1xufVxuXG4uZGpfYTExeSAuZGlqaXREaWFsb2cgLmNsb3NlVGV4dCB7XG5cdGRpc3BsYXk6aW5saW5lO1xufVxuXG4vKiBTbGlkZXIgKi9cblxuLmRpaml0U2xpZGVyTW92ZWFibGUge1xuXHR6LWluZGV4Ojk5O1xuXHRwb3NpdGlvbjphYnNvbHV0ZSAhaW1wb3J0YW50O1xuXHRkaXNwbGF5OmJsb2NrO1xuXHR2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG59XG5cbi5kaWppdFNsaWRlck1vdmVhYmxlSCB7XG5cdHJpZ2h0OjA7XG59XG4uZGlqaXRTbGlkZXJNb3ZlYWJsZVYge1xuXHRyaWdodDo1MCU7XG59XG5cbi5kal9hMTF5IGRpdi5kaWppdFNsaWRlckltYWdlSGFuZGxlLFxuLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRtYXJnaW46MDtcblx0cGFkZGluZzowO1xuXHRwb3NpdGlvbjpyZWxhdGl2ZSAhaW1wb3J0YW50O1xuXHRib3JkZXI6OHB4IHNvbGlkIGdyYXk7XG5cdHdpZHRoOjA7XG5cdGhlaWdodDowO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRqX2ExMXkgLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRmb250LXNpemU6IDA7XG59XG4uZGpfaWU3IC5kaWppdFNsaWRlckltYWdlSGFuZGxlIHtcblx0b3ZlcmZsb3c6IGhpZGRlbjsgLyogSUU3IHdvcmthcm91bmQgdG8gbWFrZSBzbGlkZXIgaGFuZGxlIFZJU0lCTEUgaW4gbm9uLWExMXkgbW9kZSAqL1xufVxuLmRqX2llNyAuZGpfYTExeSAuZGlqaXRTbGlkZXJJbWFnZUhhbmRsZSB7XG5cdG92ZXJmbG93OiB2aXNpYmxlOyAvKiBJRTcgd29ya2Fyb3VuZCB0byBtYWtlIHNsaWRlciBoYW5kbGUgVklTSUJMRSBpbiBhMTF5IG1vZGUgKi9cbn1cbi5kal9hMTF5IC5kaWppdFNsaWRlckZvY3VzZWQgLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRib3JkZXI6NHB4IHNvbGlkICMwMDA7XG5cdGhlaWdodDo4cHg7XG5cdHdpZHRoOjhweDtcbn1cblxuLmRpaml0U2xpZGVySW1hZ2VIYW5kbGVWIHtcblx0dG9wOi04cHg7XG5cdHJpZ2h0OiAtNTAlO1xufVxuXG4uZGlqaXRTbGlkZXJJbWFnZUhhbmRsZUgge1xuXHRsZWZ0OjUwJTtcblx0dG9wOi01cHg7XG5cdHZlcnRpY2FsLWFsaWduOnRvcDtcbn1cblxuLmRpaml0U2xpZGVyQmFyIHtcblx0Ym9yZGVyLXN0eWxlOnNvbGlkO1xuXHRib3JkZXItY29sb3I6YmxhY2s7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmRpaml0U2xpZGVyQmFyQ29udGFpbmVyViB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRoZWlnaHQ6MTAwJTtcblx0ei1pbmRleDoxO1xufVxuXG4uZGlqaXRTbGlkZXJCYXJDb250YWluZXJIIHtcblx0cG9zaXRpb246cmVsYXRpdmU7XG5cdHotaW5kZXg6MTtcbn1cblxuLmRpaml0U2xpZGVyQmFySCB7XG5cdGhlaWdodDo0cHg7XG5cdGJvcmRlci13aWR0aDoxcHggMDtcbn1cblxuLmRpaml0U2xpZGVyQmFyViB7XG5cdHdpZHRoOjRweDtcblx0Ym9yZGVyLXdpZHRoOjAgMXB4O1xufVxuXG4uZGlqaXRTbGlkZXJQcm9ncmVzc0JhciB7XG5cdGJhY2tncm91bmQtY29sb3I6cmVkO1xuXHR6LWluZGV4OjE7XG59XG5cbi5kaWppdFNsaWRlclByb2dyZXNzQmFyViB7XG5cdHBvc2l0aW9uOnN0YXRpYyAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6MDtcblx0dmVydGljYWwtYWxpZ246dG9wO1xuXHR0ZXh0LWFsaWduOmxlZnQ7XG59XG5cbi5kaWppdFNsaWRlclByb2dyZXNzQmFySCB7XG5cdHBvc2l0aW9uOmFic29sdXRlICFpbXBvcnRhbnQ7XG5cdHdpZHRoOjA7XG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0b3ZlcmZsb3c6dmlzaWJsZTtcbn1cblxuLmRpaml0U2xpZGVyUmVtYWluaW5nQmFyIHtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O1xuXHR6LWluZGV4OjE7XG59XG5cbi5kaWppdFNsaWRlclJlbWFpbmluZ0JhclYge1xuXHRoZWlnaHQ6MTAwJTtcblx0dGV4dC1hbGlnbjpsZWZ0O1xufVxuXG4uZGlqaXRTbGlkZXJSZW1haW5pbmdCYXJIIHtcblx0d2lkdGg6MTAwJSAhaW1wb3J0YW50O1xufVxuXG4vKiB0aGUgc2xpZGVyIGJ1bXBlciBpcyB0aGUgc3BhY2UgY29uc3VtZWQgYnkgdGhlIHNsaWRlciBoYW5kbGUgd2hlbiBpdCBoYW5ncyBvdmVyIGFuIGVkZ2UgKi9cbi5kaWppdFNsaWRlckJ1bXBlciB7XG5cdG92ZXJmbG93OmhpZGRlbjtcblx0ei1pbmRleDoxO1xufVxuXG4uZGlqaXRTbGlkZXJCdW1wZXJWIHtcblx0d2lkdGg6NHB4O1xuXHRoZWlnaHQ6OHB4O1xuXHRib3JkZXItd2lkdGg6MCAxcHg7XG59XG5cbi5kaWppdFNsaWRlckJ1bXBlckgge1xuXHR3aWR0aDo4cHg7XG5cdGhlaWdodDo0cHg7XG5cdGJvcmRlci13aWR0aDoxcHggMDtcbn1cblxuLmRpaml0U2xpZGVyQm90dG9tQnVtcGVyLFxuLmRpaml0U2xpZGVyTGVmdEJ1bXBlciB7XG5cdGJhY2tncm91bmQtY29sb3I6cmVkO1xufVxuXG4uZGlqaXRTbGlkZXJUb3BCdW1wZXIsXG4uZGlqaXRTbGlkZXJSaWdodEJ1bXBlciB7XG5cdGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7XG59XG5cbi5kaWppdFNsaWRlckRlY29yYXRpb24ge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvbkMsXG4uZGlqaXRTbGlkZXJEZWNvcmF0aW9uViB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogbmVlZGVkIGZvciBJRStxdWlya3MrUlRMK3ZlcnRpY2FsIChyZW5kZXJpbmcgYnVnKSBidXQgYWRkIGV2ZXJ5d2hlcmUgZm9yIGN1c3RvbSBzdHlsaW5nIGNvbnNpc3RlbmN5IGJ1dCB0aGlzIG1lc3NlcyB1cCBJRSBob3Jpem9udGFsIHNsaWRlcnMgKi9cbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvbkgge1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvblYge1xuXHRoZWlnaHQ6IDEwMCU7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5kaWppdFNsaWRlckJ1dHRvbiB7XG5cdGZvbnQtZmFtaWx5Om1vbm9zcGFjZTtcblx0bWFyZ2luOjA7XG5cdHBhZGRpbmc6MDtcblx0ZGlzcGxheTpibG9jaztcbn1cblxuLmRqX2ExMXkgLmRpaml0U2xpZGVyQnV0dG9uSW5uZXIge1xuXHR2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0U2xpZGVyQnV0dG9uQ29udGFpbmVyIHtcblx0dGV4dC1hbGlnbjpjZW50ZXI7XG5cdGhlaWdodDowO1x0LyogPz8/ICovXG59XG4uZGlqaXRTbGlkZXJCdXR0b25Db250YWluZXIgKiB7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmRpaml0U2xpZGVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRwYWRkaW5nOjA7XG5cdGRpc3BsYXk6YmxvY2s7XG59XG5cbi5kaWppdFJ1bGVDb250YWluZXIge1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0b3ZlcmZsb3c6dmlzaWJsZTtcbn1cblxuLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRoZWlnaHQ6MTAwJTtcblx0bGluZS1oZWlnaHQ6MDtcblx0ZmxvYXQ6bGVmdDtcblx0dGV4dC1hbGlnbjpsZWZ0O1xufVxuXG4uZGpfb3BlcmEgLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRsaW5lLWhlaWdodDoyJTtcbn1cblxuLmRqX2llIC5kaWppdFJ1bGVDb250YWluZXJWIHtcblx0bGluZS1oZWlnaHQ6bm9ybWFsO1xufVxuXG4uZGpfZ2Vja28gLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRtYXJnaW46MCAwIDFweCAwOyAvKiBtb3ppbGxhIGJ1ZyB3b3JrYXJvdW5kIGZvciBmbG9hdDpsZWZ0LGhlaWdodDoxMDAlIGJsb2NrIGVsZW1lbnRzICovXG59XG5cbi5kaWppdFJ1bGVNYXJrIHtcblx0cG9zaXRpb246YWJzb2x1dGU7XG5cdGJvcmRlcjoxcHggc29saWQgYmxhY2s7XG5cdGxpbmUtaGVpZ2h0OjA7XG5cdGhlaWdodDoxMDAlO1xufVxuXG4uZGlqaXRSdWxlTWFya0gge1xuXHR3aWR0aDowO1xuXHRib3JkZXItdG9wLXdpZHRoOjAgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbS13aWR0aDowICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1sZWZ0LXdpZHRoOjAgIWltcG9ydGFudDtcbn1cblxuLmRpaml0UnVsZUxhYmVsQ29udGFpbmVyIHtcblx0cG9zaXRpb246YWJzb2x1dGU7XG59XG5cbi5kaWppdFJ1bGVMYWJlbENvbnRhaW5lckgge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0ZGlzcGxheTppbmxpbmUtYmxvY2s7XG59XG5cbi5kaWppdFJ1bGVMYWJlbEgge1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0bGVmdDotNTAlO1xufVxuXG4uZGlqaXRSdWxlTGFiZWxWIHtcblx0Lyogc28gdGhhdCBsb25nIGxhYmVscyBkb24ndCBvdmVyZmxvdyB0byBtdWx0aXBsZSByb3dzLCBvciBvdmVyd3JpdGUgc2xpZGVyIGl0c2VsZiAqL1xuXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRpaml0UnVsZU1hcmtWIHtcblx0aGVpZ2h0OjA7XG5cdGJvcmRlci1yaWdodC13aWR0aDowICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1ib3R0b20td2lkdGg6MCAhaW1wb3J0YW50O1xuXHRib3JkZXItbGVmdC13aWR0aDowICFpbXBvcnRhbnQ7XG5cdHdpZHRoOjEwMCU7XG5cdGxlZnQ6MDtcbn1cblxuLmRqX2llIC5kaWppdFJ1bGVMYWJlbENvbnRhaW5lclYge1xuXHRtYXJnaW4tdG9wOi0uNTVlbTtcbn1cblxuLmRqX2ExMXkgLmRpaml0U2xpZGVyUmVhZE9ubHksXG4uZGpfYTExeSAuZGlqaXRTbGlkZXJEaXNhYmxlZCB7XG5cdG9wYWNpdHk6MC42O1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdFNsaWRlclJlYWRPbmx5IC5kaWppdFNsaWRlckJhcixcbi5kal9pZSAuZGpfYTExeSAuZGlqaXRTbGlkZXJEaXNhYmxlZCAuZGlqaXRTbGlkZXJCYXIge1xuXHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NDApO1xufVxuXG4vKiArIGFuZCAtIFNsaWRlciBidXR0b25zOiBvdmVycmlkZSB0aGVtZSBzZXR0aW5ncyB0byBkaXNwbGF5IGljb25zICovXG4uZGpfYTExeSAuZGlqaXRTbGlkZXIgLmRpaml0U2xpZGVyQnV0dG9uQ29udGFpbmVyIGRpdiB7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IC8qIG90aGVyd2lzZSBoeXBoZW4gaXMgbGFyZ2VyIGFuZCBtb3JlIHZlcnRpY2FsbHkgY2VudGVyZWQgKi9cblx0Zm9udC1zaXplOiAxZW07XG5cdGxpbmUtaGVpZ2h0OiAxZW07XG5cdGhlaWdodDogYXV0bztcblx0d2lkdGg6IGF1dG87XG5cdG1hcmdpbjogMCA0cHg7XG59XG5cbi8qIEljb24tb25seSBidXR0b25zIChvZnRlbiBpbiB0b29sYmFycykgc3RpbGwgZGlzcGxheSB0aGUgdGV4dCBpbiBoaWdoLWNvbnRyYXN0IG1vZGUgKi9cbi5kal9hMTF5IC5kaWppdEJ1dHRvbkNvbnRlbnRzIC5kaWppdEJ1dHRvblRleHQsXG4uZGpfYTExeSAuZGlqaXRUYWIgLnRhYkxhYmVsIHtcblx0ZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uVGV4dCB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xufVxuXG4vKiBUZXh0QXJlYSwgU2ltcGxlVGV4dEFyZWEgKi9cbi5kaWppdFRleHRBcmVhIHtcblx0d2lkdGg6MTAwJTtcblx0b3ZlcmZsb3cteTogYXV0bztcdC8qIHcvb3V0IHRoaXMgSUUncyBTaW1wbGVUZXh0QXJlYSBnb2VzIHRvIG92ZXJmbG93OiBzY3JvbGwgKi9cbn1cbi5kaWppdFRleHRBcmVhW2NvbHNdIHtcblx0d2lkdGg6YXV0bzsgLyogU2ltcGxlVGV4dEFyZWEgY29scyAqL1xufVxuLmRqX2llIC5kaWppdFRleHRBcmVhQ29scyB7XG5cdHdpZHRoOmF1dG87XG59XG5cbi5kaWppdEV4cGFuZGluZ1RleHRBcmVhIHtcblx0LyogZm9yIGF1dG8gZXhhbmRpbmcgdGV4dGFyZWEgKGNhbGxlZCBUZXh0YXJlYSBjdXJyZW50bHksIHJlbmFtZSBmb3IgMi4wKSBkb24ndCB3YW50IHRvIGRpc3BsYXkgdGhlIGdyaXAgdG8gcmVzaXplICovXG5cdHJlc2l6ZTogbm9uZTtcbn1cblxuXG4vKiBUb29sYmFyXG4gKiBOb3RlIHRoYXQgb3RoZXIgdG9vbGJhciBydWxlcyAoZm9yIG9iamVjdHMgaW4gdG9vbGJhcnMpIGFyZSBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGlzIGZpbGUuXG4gKi9cblxuLmRpaml0VG9vbGJhclNlcGFyYXRvciB7XG5cdGhlaWdodDogMThweDtcblx0d2lkdGg6IDVweDtcblx0cGFkZGluZzogMCAxcHg7XG5cdG1hcmdpbjogMDtcbn1cblxuLyogRWRpdG9yICovXG4uZGlqaXRJRUZpeGVkVG9vbGJhciB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHQvKiB0b3A6MDsgKi9cblx0dG9wOiBleHByZXNzaW9uKGV2YWwoKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8ZG9jdW1lbnQuYm9keSkuc2Nyb2xsVG9wKSk7XG59XG5cbi5kaWppdEVkaXRvciB7XG5cdGRpc3BsYXk6IGJsb2NrO1x0LyogcHJldmVudHMgZ2xpdGNoIG9uIEZGIHdpdGggSW5saW5lRWRpdEJveCwgc2VlICM4NDA0ICovXG59XG5cbi5kaWppdEVkaXRvckRpc2FibGVkLFxuLmRpaml0RWRpdG9yUmVhZE9ubHkge1xuXHRjb2xvcjogZ3JheTtcbn1cblxuLyogVGltZVBpY2tlciAqL1xuXG4uZGlqaXRUaW1lUGlja2VyIHtcblx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG4uZGlqaXRUaW1lUGlja2VySXRlbSB7XG5cdGN1cnNvcjpwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0VGltZVBpY2tlckl0ZW1Ib3ZlciB7XG5cdGJhY2tncm91bmQtY29sb3I6Z3JheTtcblx0Y29sb3I6d2hpdGU7XG59XG4uZGlqaXRUaW1lUGlja2VySXRlbVNlbGVjdGVkIHtcblx0Zm9udC13ZWlnaHQ6Ym9sZDtcblx0Y29sb3I6IzMzMztcblx0YmFja2dyb3VuZC1jb2xvcjojYjdjZGVlO1xufVxuLmRpaml0VGltZVBpY2tlckl0ZW1EaXNhYmxlZCB7XG5cdGNvbG9yOmdyYXk7XG5cdHRleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2g7XG59XG5cbi5kaWppdFRpbWVQaWNrZXJJdGVtSW5uZXIge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0Ym9yZGVyOjA7XG5cdHBhZGRpbmc6MnB4IDhweCAycHggOHB4O1xufVxuXG4uZGlqaXRUaW1lUGlja2VyVGljayxcbi5kaWppdFRpbWVQaWNrZXJNYXJrZXIge1xuXHRib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmF5O1xufVxuXG4uZGlqaXRUaW1lUGlja2VyIC5kaWppdERvd25BcnJvd0J1dHRvbiB7XG5cdGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0VGltZVBpY2tlclRpY2sge1xuXHRjb2xvcjojQ0NDO1xufVxuXG4uZGlqaXRUaW1lUGlja2VyTWFya2VyIHtcblx0Y29sb3I6YmxhY2s7XG5cdGJhY2tncm91bmQtY29sb3I6I0NDQztcbn1cblxuLmRqX2ExMXkgLmRpaml0VGltZVBpY2tlckl0ZW1TZWxlY3RlZCAuZGlqaXRUaW1lUGlja2VySXRlbUlubmVyIHtcblx0Ym9yZGVyOiBzb2xpZCA0cHggYmxhY2s7XG59XG4uZGpfYTExeSAuZGlqaXRUaW1lUGlja2VySXRlbUhvdmVyIC5kaWppdFRpbWVQaWNrZXJJdGVtSW5uZXIge1xuXHRib3JkZXI6IGRhc2hlZCA0cHggYmxhY2s7XG59XG5cblxuLmRpaml0VG9nZ2xlQnV0dG9uSWNvbkNoYXIge1xuXHQvKiBjaGFyYWN0ZXIgKGluc3RlYWQgb2YgaWNvbikgdG8gc2hvdyB0aGF0IFRvZ2dsZUJ1dHRvbiBpcyBjaGVja2VkICovXG5cdGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0VG9nZ2xlQnV0dG9uIC5kaWppdFRvZ2dsZUJ1dHRvbkljb25DaGFyIHtcblx0ZGlzcGxheTppbmxpbmUgIWltcG9ydGFudDtcblx0dmlzaWJpbGl0eTpoaWRkZW47XG59XG4uZGpfaWU2IC5kaWppdFRvZ2dsZUJ1dHRvbkljb25DaGFyLCAuZGpfaWU2IC50YWJTdHJpcEJ1dHRvbiAuZGlqaXRCdXR0b25UZXh0IHtcblx0Zm9udC1mYW1pbHk6IFwiQXJpYWwgVW5pY29kZSBNU1wiO1x0Lyogb3RoZXJ3aXNlIHRoZSBhMTF5IGNoYXJhY3RlciAoY2hlY2ttYXJrLCBhcnJvdywgZXRjLikgYXBwZWFycyBhcyBhIGJveCAqL1xufVxuLmRqX2ExMXkgLmRpaml0VG9nZ2xlQnV0dG9uQ2hlY2tlZCAuZGlqaXRUb2dnbGVCdXR0b25JY29uQ2hhciB7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyAvKiBJbiBoaWdoIGNvbnRyYXN0IG1vZGUsIGRpc3BsYXkgdGhlIGNoZWNrIHN5bWJvbCAqL1xuXHR2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0QXJyb3dCdXR0b25DaGFyIHtcblx0ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRBcnJvd0J1dHRvbkNoYXIge1xuXHRkaXNwbGF5OmlubGluZSAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXREcm9wRG93bkJ1dHRvbiAuZGlqaXRBcnJvd0J1dHRvbklubmVyLFxuLmRqX2ExMXkgLmRpaml0Q29tYm9CdXR0b24gLmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBTZWxlY3QgKi9cbi5kal9hMTF5IC5kaWppdFNlbGVjdCB7XG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGUgIWltcG9ydGFudDtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG59XG4uZGpfaWUgLmRpaml0U2VsZWN0IHtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTsgLyogU2V0IHRoaXMgYmFjayBmb3Igd2hhdCB3ZSBoYWNrIGluIGRpaml0IGlubGluZSAqL1xufVxuLmRqX2llNiAuZGlqaXRTZWxlY3QgLmRpaml0VmFsaWRhdGlvbkNvbnRhaW5lcixcbi5kal9pZTggLmRpaml0U2VsZWN0IC5kaWppdEJ1dHRvblRleHQge1xuXHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLmRqX2llNiAuZGlqaXRUZXh0Qm94IC5kaWppdElucHV0Q29udGFpbmVyLFxuLmRqX2llcXVpcmtzIC5kaWppdFRleHRCb3ggLmRpaml0SW5wdXRDb250YWluZXIsXG4uZGpfaWU2IC5kaWppdFRleHRCb3ggLmRpaml0QXJyb3dCdXR0b25Jbm5lcixcbi5kal9pZTYgLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uSW5uZXIsXG4uZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwge1xuXHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi5kaWppdE51bWJlclRleHRCb3gge1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRkaXJlY3Rpb246IGx0cjtcbn1cblxuLmRpaml0TnVtYmVyVGV4dEJveCAuZGlqaXRJbnB1dElubmVyIHtcblx0dGV4dC1hbGlnbjogaW5oZXJpdDsgLyogaW5wdXQgKi9cbn1cblxuLmRpaml0TnVtYmVyVGV4dEJveCBpbnB1dC5kaWppdElucHV0SW5uZXIsXG4uZGlqaXRDdXJyZW5jeVRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRpaml0U3Bpbm5lciBpbnB1dC5kaWppdElucHV0SW5uZXIge1xuXHR0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLmRqX2llOCAuZGlqaXROdW1iZXJUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXROdW1iZXJUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lcixcbi5kal9pZTggLmRpaml0Q3VycmVuY3lUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXRDdXJyZW5jeVRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRqX2llOCAuZGlqaXRTcGlubmVyIGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXRTcGlubmVyIGlucHV0LmRpaml0SW5wdXRJbm5lciB7XG5cdC8qIHdvcmthcm91bmQgYnVnIHdoZXJlIGNhcmV0IGludmlzaWJsZSBpbiBlbXB0eSB0ZXh0Ym94ZXMgKi9cblx0cGFkZGluZy1yaWdodDogMXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdFRvb2xiYXIgLmRpaml0U2VsZWN0IHtcblx0bWFyZ2luOiAwO1xufVxuLmRqX3dlYmtpdCAuZGlqaXRUb29sYmFyIC5kaWppdFNlbGVjdCB7XG5cdHBhZGRpbmctbGVmdDogMC4zZW07XG59XG4uZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRwYWRkaW5nOiAwO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRib3JkZXItc3R5bGU6IG5vbmUgc29saWQgbm9uZSBub25lO1xuXHRib3JkZXItd2lkdGg6IDFweDtcbn1cbi5kaWppdFNlbGVjdEZpeGVkV2lkdGggLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLmRpaml0U2VsZWN0TWVudSAuZGlqaXRNZW51SXRlbUljb24ge1xuXHQvKiBhdm9pZCBibGFuayBhcmVhIGluIGxlZnQgc2lkZSBvZiBtZW51IChzaW5jZSB3ZSBoYXZlIG5vIGljb25zKSAqL1xuXHRkaXNwbGF5Om5vbmU7XG59XG4uZGpfaWU2IC5kaWppdFNlbGVjdE1lbnUgLmRpaml0TWVudUl0ZW1MYWJlbCxcbi5kal9pZTcgLmRpaml0U2VsZWN0TWVudSAuZGlqaXRNZW51SXRlbUxhYmVsIHtcblx0LyogU2V0IGJhY2sgdG8gc3RhdGljIGR1ZSB0byBidWcgaW4gaWU2L2llNyAtIFNlZSBCdWcgIzk2NTEgKi9cblx0cG9zaXRpb246IHN0YXRpYztcbn1cblxuLyogRml4IHRoZSBiYXNlbGluZSBvZiBvdXIgbGFiZWwgKGZvciBtdWx0aS1zaXplIGZvbnQgZWxlbWVudHMpICovXG4uZGlqaXRTZWxlY3RMYWJlbCAqXG57XG5cdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuLyogU3R5bGluZyBmb3IgdGhlIGN1cnJlbnRseS1zZWxlY3RlZCBvcHRpb24gKHJpY2ggdGV4dCBjYW4gbWVzcyB0aGlzIHVwKSAqL1xuLmRpaml0U2VsZWN0U2VsZWN0ZWRPcHRpb24gKiB7XG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKiBGaXggdGhlIHN0eWxpbmcgb2YgdGhlIGRyb3Bkb3duIG1lbnUgdG8gYmUgbW9yZSBjb21ib2JveC1saWtlICovXG4uZGlqaXRTZWxlY3RNZW51IHtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG59XG5cbi8qIFVzZWQgaW4gY2FzZXMsIHN1Y2ggYXMgRnVsbFNjcmVlbiBwbHVnaW4sIHdoZW4gd2UgbmVlZCB0byBmb3JjZSBzdHVmZiB0byBzdGF0aWMgcG9zaXRpb25pbmcuICovXG4uZGlqaXRGb3JjZVN0YXRpYyB7XG5cdHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDtcbn1cblxuLyoqKiogRGlzYWJsZWQgY3Vyc29yICoqKioqL1xuLmRpaml0UmVhZE9ubHkgKixcbi5kaWppdERpc2FibGVkICosXG4uZGlqaXRSZWFkT25seSxcbi5kaWppdERpc2FibGVkIHtcblx0LyogYSByZWdpb24gdGhlIHVzZXIgd291bGQgYmUgYWJsZSB0byBjbGljayBvbiwgYnV0IGl0J3MgZGlzYWJsZWQgKi9cblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKiBEcmFnIGFuZCBEcm9wICovXG4uZG9qb0RuZEl0ZW0ge1xuICAgIHBhZGRpbmc6IDJweDsgIC8qIHdpbGwgYmUgcmVwbGFjZWQgYnkgYm9yZGVyIGR1cmluZyBkcmFnIG92ZXIgKGRvam9EbmRJdGVtQmVmb3JlLCBkb2pvRG5kSXRlbUFmdGVyKSAqL1xuXG5cdC8qIFByZXZlbnQgbWFnbmlmeWluZy1nbGFzcyB0ZXh0IHNlbGVjdGlvbiBpY29uIHRvIGFwcGVhciBvbiBtb2JpbGUgd2Via2l0IGFzIGl0IGNhdXNlcyBhIHRvdWNob3V0IGV2ZW50ICovXG5cdC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcblx0LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgLyogRGlzYWJsZSBzZWxlY3Rpb24vQ29weSBvZiBVSVdlYlZpZXcgKi9cbn1cbi5kb2pvRG5kSG9yaXpvbnRhbCAuZG9qb0RuZEl0ZW0ge1xuICAgIC8qIG1ha2UgY29udGVudHMgb2YgaG9yaXpvbnRhbCBjb250YWluZXIgYmUgc2lkZSBieSBzaWRlLCByYXRoZXIgdGhhbiB2ZXJ0aWNhbCAqL1xuICAgICNkaXNwbGF5OiBpbmxpbmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZG9qb0RuZEl0ZW1CZWZvcmUsXG4uZG9qb0RuZEl0ZW1BZnRlciB7XG5cdGJvcmRlcjogMHB4IHNvbGlkICMzNjk7XG59XG4uZG9qb0RuZEl0ZW1CZWZvcmUge1xuICAgIGJvcmRlci13aWR0aDogMnB4IDAgMCAwO1xuICAgIHBhZGRpbmc6IDAgMnB4IDJweCAycHg7XG59XG4uZG9qb0RuZEl0ZW1BZnRlciB7XG4gICAgYm9yZGVyLXdpZHRoOiAwIDAgMnB4IDA7XG4gICAgcGFkZGluZzogMnB4IDJweCAwIDJweDtcbn1cbi5kb2pvRG5kSG9yaXpvbnRhbCAuZG9qb0RuZEl0ZW1CZWZvcmUge1xuICAgIGJvcmRlci13aWR0aDogMCAwIDAgMnB4O1xuICAgIHBhZGRpbmc6IDJweCAycHggMnB4IDA7XG59XG4uZG9qb0RuZEhvcml6b250YWwgLmRvam9EbmRJdGVtQWZ0ZXIge1xuICAgIGJvcmRlci13aWR0aDogMCAycHggMCAwO1xuICAgIHBhZGRpbmc6IDJweCAwIDJweCAycHg7XG59XG5cbi5kb2pvRG5kSXRlbU92ZXIge1xuXHRjdXJzb3I6cG9pbnRlcjtcbn1cbi5kal9nZWNrbyAuZGlqaXRBcnJvd0J1dHRvbklubmVyIElOUFVULFxuLmRqX2dlY2tvIElOUFVULmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdC1tb3otdXNlci1mb2N1czppZ25vcmU7XG59XG4uZGlqaXRGb2N1c2VkIC5kaWppdE1lbnVJdGVtU2hvcnRjdXRLZXkge1xuXHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbiIsIi8qIERpaml0IGN1c3RvbSBzdHlsaW5nICovXG4uZGlqaXRCb3JkZXJDb250YWluZXIge1xuICAgIGhlaWdodDogMzUwcHg7XG59XG4uZGlqaXRUb29sdGlwQ29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xufVxuLmRpaml0Q29udGVudFBhbmUge1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7IC8qIFdpZGdldHMgbGlrZSB0aGUgZGF0YSBncmlkIHBhc3MgdGhlaXIgc2Nyb2xsXG4gICAgb2Zmc2V0IHRvIHRoZSBwYXJlbnQgaWYgdGhlcmUgaXMgbm90IGVub3VnaCByb29tIHRvIGRpc3BsYXkgYSBzY3JvbGwgYmFyXG4gICAgaW4gdGhlIHdpZGdldCBpdHNlbGYsIHNvIGRvIG5vdCBoaWRlIHRoZSBvdmVyZmxvdy4gKi9cbn1cblxuLyogR2xvYmFsIEJvb3RzdHJhcCBjaGFuZ2VzICovXG5cbi8qIENsaWVudCBkZWZhdWx0cyBhbmQgaGVscGVycyAqL1xuLm14LWRhdGF2aWV3LWNvbnRlbnQsIC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcjpub3QoLm14LXNjcm9sbGNvbnRhaW5lci1uZXN0ZWQpLCAubXgtdGFiY29udGFpbmVyLWNvbnRlbnQsIC5teC1ncmlkLWNvbnRlbnQge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cbmh0bWwsIGJvZHksICNjb250ZW50IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG4jY29udGVudCA+IC5teC1wYWdlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xufVxuXG4ubXgtbGVmdC1hbGlnbmVkIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LXJpZ2h0LWFsaWduZWQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuLm14LWNlbnRlci1hbGlnbmVkIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5teC10YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtdGFibGUgdGgsXG4ubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLm14LXRhYmxlIHRoLm5vcGFkZGluZyxcbi5teC10YWJsZSB0ZC5ub3BhZGRpbmcge1xuXHRwYWRkaW5nOiAwO1xufVxuXG4ubXgtb2Zmc2NyZWVuIHtcbiAgICAvKiBXaGVuIHBvc2l0aW9uIHJlbGF0aXZlIGlzIG5vdCBzZXQgSUUgZG9lc24ndCBwcm9wZXJseSByZW5kZXIgd2hlbiB0aGlzIGNsYXNzIGlzIHJlbW92ZWRcbiAgICAgKiB3aXRoIHRoZSBlZmZlY3QgdGhhdCBlbGVtZW50cyBhcmUgbm90IGRpc3BsYXllZCBvciBhcmUgbm90IGNsaWNrYWJsZS5cbiAgICAqL1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLm14LWllLWV2ZW50LXNoaWVsZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAtMTtcbn1cblxuLm14LXN3aXBlLW5hdmlnYXRpb24tcHJvZ3Jlc3Mge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBoZWlnaHQ6IDU0cHg7XG4gICAgd2lkdGg6IDU0cHg7XG4gICAgdG9wOiBjYWxjKDUwJSAtIDI3cHgpO1xuICAgIGxlZnQ6IGNhbGMoNTAlIC0gMjdweCk7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaE5nQTJBUE1BQVAvLy93QUFBSGg0ZUJ3Y0hBNE9EdGpZMkZSVVZOemMzTVRFeEVoSVNJcUtpZ0FBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQWtLQUFBQUlmNGFRM0psWVhSbFpDQjNhWFJvSUdGcVlYaHNiMkZrTG1sdVptOEFJZjhMVGtWVVUwTkJVRVV5TGpBREFRQUFBQ3dBQUFBQU5nQTJBQUFFeXhESVNhdTlPT3ZOdS85Z0tJNWt5U0VKUVNTSTZVcUtLaFBLV3lMejNOcGltcXNKbnVnM0U0YUlNaVBJOXdzcVBUamlUbGt3cUF3RlRDeFhleFlHczBIMmdnSk9MWUxCUURDeTVnd213WXg5SkpyQXNzSFFYc0tyOUNGdU0zQWxjakowSUFkK0JBTUhMbWxySkFkdUJvNVBsNWlabXB1Y25aNmZjV3FJbUpDamFIT1poaXFtRkl1QWw2NFpzWml6RjZvRXJFSzN1Uk9sbTc2Z3djTER4TVhHeDhYQWo2SWt1NCtvSXJVazBoL1UwV0Vqem5IUUlzcWhrY2pCM3NuY3hkYkM1K0xseWN6aDdrOFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRNRU1oSnE3MDQ2ODI3LzJBb2ptUnBubVZoRUlSUm9HY3hzT3p3d3VSS3N3Wk83anZmQ0VnVGluUzduaEYwbU5FR2h3c2l3VW9nbHBTRHpoQzFLSWlLa1dBd0VKZ1FSTllWSk5pWlNkUjBJdVNzbGRKRlVKMHd1T01KSVcwMGJ5TnhSSE9CWklRamFHbHJXQnhmUUdHUUhsTlZqNVdhbTV5ZG5wOUxZMldib29zV2dpeW1RcWdFcWhON2ZaQ3dHYk95TzdFWHJLNDR1aHFscElxZ3dzUEV4Y2JIeU1lL0tNc2l2U2JQZExjbnRkSlAxTlBPYmlmUmlhUE13Y25DemNyYnlOWEc2TVhkeHVUaTd6NFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRPRU1oSnE3MDQ2ODI3LzJBb2ptUnBubWlxQXNJd0NLc3BFRFFCeCtOUUV3T2U3ejFmYUZhN0NVR3QxMUZZTU5BTUJWTFNTQ3JvYW9Qb2NFY1ZPWGNFZytoS0M1TEF0VEhRaEthSmlMUnU2THNUdjEzeTBJSE1PeXc5QjE4R2ZuK0Zob2VJaVlvWkNBazBDUWlMRmdwb0NobFRSd2h0QkpFV2NEWkNqbTBKRjN4bU1adHVGcVpDcVFRWG4za29vbWlrc0hpWm01MlNBSlJnbHJ3VGpZKzd3Y2JIeU1uS0U1Z296VzljSjdFL1dDZXNhdFVtMTF0RjB0RWp6eks0eTRuaHh0UEkyOGJxd2VqSTV1VHhKaEVBSWZrRUNRb0FBQUFzQUFBQUFEWUFOZ0FBQk1zUXlFbXJ2VGpyemJ2L1lDaU9aR21lYUtvQ3dqQUlxeWtRTkFISDQxQVRBNTd2UFY5b1Zyc0pRYTNYY1lsS0dtV3VKM0luRlJGcDFZNnVGaXh0YVYzUWwzY2FoejlYMnltZDdUaFRiNlo4VHEvYjcvaTh2R0NnR1FvYWNVSUZab0FYYkVkOU93UUdHR1pIaXpXT1FKQ1JCQmlJUW9vN2paaFJTd2RtQjNvVUI0b0dvNlNxcTZ5dE1RZ0pOQWtJckFxUkNpT0NJd2lXQkxSVFJTV3hsZ2toanlTOU5NYVV5TWxEVk1LOXhVT2ZKYnlXdjNxMmk3aEx1aFd3c3RsQ21hdkg1c3lyNWVyVnJ1NDRFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWlaY2dVR05BWUZKSk1pQldhZ1E0TWxuVHNFQmlLTElxczFya0Ftc1RSV3FDU3FPNjFXa1JrSUNUUUpDQmNIWmdkSENyRUt4cW9HeVVJSXRnVEZlc0syQ1h2VXQzcmNCSHZZc2RwNjA3Yldlc3VyelpYQncrZ2lFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWdTQ0FrMENRaVdDanMwQ3BRSW9qV2ZKWk1kbktjRUNhcURJSzQxWGtBaHREUzJYQ0d0cDdBa2p4Nm1ycW5Ca1NLaG9xUVhCUVkwQmdWTG01M0dGUVZtMHBUUG9nYVZ0Tit1bGR3NzNwUUhaZ2VXQjl3RzZwa29FUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2dktVU0Nsa0RnTFFvN05BcC9Fd2lDTlg1Q2NSWjdpQVFKaTFRWGp6VkNacFNWQkpkQUY0NklrVDVzRjRlUGlxSlJHWUdDaElXR2puMnVzck8wdFhZRkJqUUdCYlFGWnJ4UVNpSzVnZ1l5a3lHVkpwakpqOHVkSWNRN3hpV2pJUWRtQjJ1cEl3ZkVCdHEySG95ejFyUE01OURseUxUazR1OHBFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3a1JDVm9Db1dtOWhCTEZqcWFBZGhEVEdyUGtOSDZTV1VLQ3UvTjJ3cldTcmhiOG9HbHFZQWljSFpPSU5ETUhHOTdlWFhvZFVsTlZWbGRnUzRhS2k0eU5qbzhGQmpRR0JZOFhCV3MwQTVWUVhSbVNVd2FkWlJob1VKazhwV0duY2hlZ082SkNlRFlZQjZnREIxYWVHUWVnQnJtV3djTER4TVhHeDF5QUtic2lzNEVnemo5c0o3ZlNtdFN0UTZReTI4M0tLTXpJamVIRTBjYlY1OW5sM2NYazR1OG9FUUE3KTtcbn1cblxuIiwiLyogQmFjYXVzZSB3ZSB1c2UgY2hlY2tib3hlcyB3aXRob3V0IGxhYmVscywgYWxpZ24gdGhlbSB3aXRoIG90aGVyIHdpZGdldHMuICovXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgIG1hcmdpbjogOXB4IDA7XG59XG5cbi5teC1jaGVja2JveCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG59XG5cbi5mb3JtLXZlcnRpY2FsIC5mb3JtLWdyb3VwLm14LWNoZWNrYm94IGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5mb3JtLXZlcnRpY2FsIC5mb3JtLWdyb3VwLm14LWNoZWNrYm94LmxhYmVsLWFmdGVyIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLm5vLWNvbHVtbnMge1xuICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xufVxuXG4ubXgtcmFkaW9idXR0b25zLmlubGluZSAucmFkaW8ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG59XG5cbi5teC1yYWRpb2J1dHRvbnMgLnJhZGlvIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgLyogUmVzZXQgYm9vdHN0cmFwIHJ1bGVzICovXG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLm14LXJhZGlvYnV0dG9ucyAucmFkaW8gbGFiZWwge1xuICAgIC8qIFJlc2V0IGJvb3RzdHJhcCBydWxlcyAqL1xuICAgIHBhZGRpbmctbGVmdDogMDtcbn1cblxuLmFsZXJ0IHtcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XG59XG5cbi5teC1jb21wb3VuZC1jb250cm9sIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xufVxuXG4ubXgtY29tcG91bmQtY29udHJvbCBidXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG59XG5cbltkaXI9XCJydGxcIl0gLm14LWNvbXBvdW5kLWNvbnRyb2wgYnV0dG9uIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbiIsIi5teC10b29sdGlwIHtcbiAgICBtYXJnaW46IDEwcHg7XG59XG4ubXgtdG9vbHRpcC1jb250ZW50IHtcbiAgICB3aWR0aDogNDAwcHg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbn1cbi5teC10b29sdGlwLXByZXBhcmUge1xuICAgIGhlaWdodDogMjRweDtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEdBQVlBTVFkQUtYWjhuZkY2NFRMN1F1WDNGZTQ1emFxNGhPYjNmTDYvZnI5L3JyaTlkWHQrWnJVOEN5bTRVbXk1Y0hsOXVQeisySzg2T2oxL056dytyRGQ5TTNxK0pEUTcyckE2aU9pMyszNC9FQ3U0OGpvOXgyZjNnV1YyLy8vL3dBQUFBQUFBQ0gvQzA1RlZGTkRRVkJGTWk0d0F3RUFBQUFoL3d0WVRWQWdSR0YwWVZoTlVEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVFF3SURjNUxqRTJNRFExTVN3Z01qQXhOeTh3TlM4d05pMHdNVG93T0RveU1TQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRnZ0tFMWhZMmx1ZEc5emFDa2lJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZSVUpGTmtVNE5FWkNORVZETVRGRk9EazNNREJCTlVVMVJVTTRRamczUVRVaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlJVSkZOa1U0TlRCQ05FVkRNVEZGT0RrM01EQkJOVVUxUlVNNFFqZzNRVFVpUGlBOGVHMXdUVTA2UkdWeWFYWmxaRVp5YjIwZ2MzUlNaV1k2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRwRlFrVTJSVGcwUkVJMFJVTXhNVVU0T1Rjd01FRTFSVFZGUXpoQ09EZEJOU0lnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBGUWtVMlJUZzBSVUkwUlVNeE1VVTRPVGN3TUVFMVJUVkZRemhDT0RkQk5TSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QZ0gvL3YzOCsvcjUrUGYyOWZUejh2SHc3Kzd0N092cTZlam41dVhrNCtMaDROL2UzZHpiMnRuWTE5YlYxTlBTMGREUHpzM015OHJKeU1mR3hjVER3c0hBdjc2OXZMdTZ1YmkzdHJXMHM3S3hzSyt1cmF5cnFxbW9wNmFscEtPaW9hQ2ZucDJjbTVxWm1KZVdsWlNUa3BHUWo0Nk5qSXVLaVlpSGhvV0VnNEtCZ0g5K2ZYeDdlbmw0ZDNaMWRITnljWEJ2Ym0xc2EycHBhR2RtWldSalltRmdYMTVkWEZ0YVdWaFhWbFZVVTFKUlVFOU9UVXhMU2tsSVIwWkZSRU5DUVVBL1BqMDhPem81T0RjMk5UUXpNakV3THk0dExDc3FLU2duSmlVa0l5SWhJQjhlSFJ3Ykdoa1lGeFlWRkJNU0VSQVBEZzBNQ3dvSkNBY0dCUVFEQWdFQUFDSDVCQVVFQUIwQUxBQUFBQUFZQUJnQUFBVWNZQ2VPWkdtZWFLcXViT3UrY0N6UGRHM2ZlSzd2Zk8vL3dPQXJCQUFoK1FRRkJBQWRBQ3dBQUFBQUFRQUJBQUFGQTJBWEFnQWgrUVFGQkFBZEFDd1VBQXdBQVFBQ0FBQUZBeURUaEFBaCtRUUZCQUFkQUN3VEFBc0FBZ0FHQUFBRkMyQVhkRnhuZE1UUU1WMElBQ0g1QkFVRUFCMEFMQkVBQ3dBRUFBZ0FBQVVSWUNjMllpbHlvcldkVm1jTnA4aTBYUWdBSWZrRUJRUUFIUUFzRHdBT0FBWUFCZ0FBQlE5Z0ozYUJNWjRqaDQ0V0I0bkZjSVlBSWZrRUNRUUFIUUFzRFFBUEFBZ0FCZ0FBQlJGZ0o0NGRSSGJCcVlvcEdRd2NPUmhxQ0FBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRkxXQW5qbVJwbm1pcXJtenJ2bkFzejNSdDMzaXVrOEpnRHdRYlIyaWhCVGlOV1c4WTR6aDlHaGxnUnkyRkFBQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZNMkFuam1ScG5taXFybXpydm5Bc3ozUnQzMmh6YzN0U0M3emFZT2VvY1NBMFlNWlZJUWtHd1JhUVE2VjJpaklBYnFzS0FRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZObUFuam1ScG5taXFybXpydm5Bc3ozUnQzMmh6Yy90VVY3eWFJV01MMGppRVZRVUZMS3dDSEVPcFlqQ3lNcHlzbGloYjRMNnJFQUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGT21BbmptUnBubWlxcm16cnZuQXN6M1J0MzJoemN6dFFWN3phcG1BTG1vQXNqZzdGTUI0NWpGV0RzeWxWTnM1VmdjUHRFbU8rQ202c0NnRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCVDlnSjQ1a2FaNW9xcTVzNjc1d0xNOTBiZDhvY1hPQ3plMm14c2ExWVp4K0xRN2cxRUNxT0prVWc3TkljWXlxNXJDMGdicW1uSENZc1lRdGU3aDBLZ1FBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQlVSZ0o0NWthWjVvcXE1czY3NXdMTTkwYmQ4b1lRWXdKNVNjbmluNElwSVlGOWNsV1ZvWVY1ekZLZk5FY1RLcFN4WElURkc3SXkyMnhlQ1l6eGNwVFBxajRONm9FQUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGU21BbmptUnBubWlxcm16cnZuQXN6M1ROYm5iQXdZUzV2NXdBcWZKekZVZEhWckt6WWJnWU9OK2t4YW1jQ2dQV29KRGFaRk9EYUtyQWNaWVlIRzVydzJtN04xWllSUmkzMlZjaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVlBZQ2VPWkdtZWFLcXViT3UrY0N6UDVVYlFJb2QzZ3I3N3JodkpBbXh4TEtVaVM5bmhURjVNQThQRk1KaDZMbzdneEJpd0JsUFV4cHNhYkZZTVRwaVVYcXNFQm81OGJ0akN0aGI3YnI4S0FRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZVMkFuam1ScG5taXFybXpydmpETFhERXBjRFZwWlBtSTk1MGJVUFJ6UVVxUVlvdHpKQ2xaejhsenhabVVEQVZYd1hDYW9yeWRDM2Rsb0tFTTQzTWFkZUZrU3dXT2VSVXdjTzU0UXlBbU9BcUdnQzBoQUNINUJBVUVBQjBBTEFBQUFBQVlBQmdBQUFWWFlDZU9aR21lYUtxdWJMdHVsbnNhaG14dXRVMEduRjRPRFIrcEp4VHhpaUpDemhYNzJRYUVIZEUxSFZWWkhNQXY0OG9NVE1jV0ozRENzUXliMUdBNSs2bzJIRzRwdzBtekFnTU9aNURmazIwQlVYOUloQzBoQUNINUJBa0VBQjBBTEFJQUF3QVVBQk1BQUFVL1lDZUsxdENNYUpweWhPcU93L2JPOUd6VmM0dnY5YzJuc2w5QVpQaDFpajZqY3JRUW5YYlBEc1E0SFFWcFYxUld0VTFGUjE5WDlWZ1VqV20rWkNvRUFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVmJZQ2VPWkdtZWFLcU9GckdpeE1CeHpHc2FuR3VidzdhZkJ0K3ZST0FNVGJsanlhaGtNWnVkaG5BWEtFbUhtOFp5K0JRdHVpL09ZcWw3RlUvZ1ZQSTJUVzBNcVo1cU0xamh5cU1pM0R6amJEWjllRFlRRFZwalVJZy9JUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGWUdBbmptUnBubWlxaWxXWFpjUnFFaHczWE5jZ2t3WUg3U2ZPQlhneURJa2xHdExrVzVZNFRoSkJGeFZsamtCQjZZcThaRXBVWUpnRkpYSmFwT1lPVXBhMlY1eVl5U2k3R0ZKQzFlVmRWSlBZZHpJME5qZ0ROWEpFQkYrSVZZMUFJUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGWldBbmptUnBubWlxaWtKWEZNUnFOaHhuTUlWUngvTEFXYWFBck1OaERGRUQ0M0hHV1o1K3pwS2dHUzBacXFTQ2Npa2NhWjA0RXVHNk5QQkcxR01hRFJ4YTFpS2F1bkZLeWhpRFZGSEZnSnQ4YlNSdmVUSTBOZ3dNT2h4MFRnUXZIUzFZa2xFaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVm1ZQ2VPWkdtZWFLcUtRY01VeldwbUhMZDF4VlpuY2pjTUFWUGdwMXB3Q2lyR0RUVkE5azZad1JQRm1aNENWV3Vwc2RTT1h0cmdWMXRna0xqV1RZeVVmYlpISExFTU81UDJCanhUVTFhd240NHFCVzhtQzBSQ2hpczBOZ1U1TzFZdFptdGVrNU1oQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFWbllDZU9aR21lYUtxS1FYWmQyV29XSEhkMURWTVhjc1VOSjRHQnMrTHdVclFLeWlpam5RcEFXY2R3NGdTa3FBQVJlM0p4VDdkdngwS0NmYjBqTk5aTTJtTGRJeXRXTzR2S0JzY1NjK1ZjNXA5d1ZYWWtBUU9CS0RRMkdTNDdYeTB2SFZkaWs1UWlJUUFoK1FRRkJBQWRBQ3dBQUFBQUdBQVlBQUFGYm1BbmptUnBubWlxaWxheGJjVnFNaHpIZEExdHl3Sm5uQUlEUjZEaVpGUVpUc29vUzU0WVAxbkhjQ3NOcFNJbHlhTEZjZ0trUWhWcjJwQkZpOUttY1c2WVIrSXpJMGJxU3UxWm9qZFJnbUtwSjB3clRpaUNLSVFvUFZFbFFYZ29PZ3dOT1RWalVpMW1kR2VhbXlVaEFDSDVCQVVFQUIwQUxBSUFBZ0FVQUJRQUFBVmJZQ2VPa01HZG5BR05MSWx5dy9DdWJjZWNXWjJkVEhzYk5aYXBKNEtrZ2kwVDdZU3NNWTI1Sm10WDRraWRKdXVWaFJwc1dUTFlkeFRXamsrbXNTZ0ZIVk03ekcvY0NMd3FSei9wMElmVDhZSkdYV1VjTkVoVktDbzFJUUFoK1FRRkJBQWRBQ3dCQUFFQUZnQVdBQUFGWjJBbmptUFZCV1NxbmdaSGNnYTZqc2JyMG5OMTEyVEZjNmFVNnpZYnBtckVXY2ZGTzRrRXloSFUyYWsxbzlYc0VydHlCYm1xWUpKN1E0MnhMaG00MlBsaVRUc3QxeXBTYzZkcUpGa3VHazVWQWtZcE9pSlhiVDlLVnh4Smhpb0JMUytOVVNaMktpRUFJZmtFQ1FRQUhRQXNBUUFCQUJZQUZnQUFCV3BnSjQ2aWxWMVgxazFrUzE2Y3kxMHUyY1MxeURVMU0zSUVFZ0hYOGRsR3dWcXl3L3ZsY2tSYVovbE1TbVBFcDY0VHM0aW8ycVJKcXoyUm42aHpMcVd1cWI1dEtyWTk3MGpCU3BHVTI5Nk9tbE01UzRBaVJseFVReU9HTmxreWhDNHdNbnRrSmlncUxDNGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVYrWUNlT1pHbWVwVlZjVjlaTjZMbHhkRTF2OGRqWWZOM0VEQnVFQkxFeFRqdmE4RlNrL1VxMW5DaEttbkdXdVNadVJKVjJ1aGFsbDh1eGlESzBNZG5WdWFUVlg4NUY1T2JBNC9NTzJnNm5zZU5ZVWsxbVUyOWVYUjFXZ1NoYUpBdUlLSkFkU1ZlTVBpZEJrRTAwUnlpVVBaZFNWajFiYWhZWkxCbUVkM0FoQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFXQllDZU9aR21lcFZWY1Y5Rk42TGx4ZEUxdjhkallmTjNFakpyQlpLZ3hUanRhVE9BejFYS2lKMm5HRVVDakhOeUlOcngyaXB5UlJlbnRNRGtXVVlGY3ByazZGN2FYZGhIRncrVU9YUzIvdXJkVlpXY2tYR1ZnVTMweE55UUxVamsxQ3lWSmdTZG5IRDhtUVlVa0FtQWNSeWlUUFUxUVZEMWFaU29zQldsNXJoMGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVdDWUNlT1pHbWVwVlZjVjlGTjZMbHhkRTF2OGRqWWZOM0VqTnJGZEtreFRqdk9JRGVnL1VxMFphN1Q1SlJtMXFub1JxSU50WjFpdG1PaGdVYzBpNmhnUG5kb3JuRDc3QldKM1cvT2x6MEd3OUY5VXdCcEloTjFZSGNqV0hRY09GMUtXbFVtU1FNQU1WVlBKVUdISXdCaUhFY29TVDAybVRGWVBZNW5LaXd1TUhodUlRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZlbUFuam1ScG5xV1ZNVXlHdmhjbnovTDFqZzJ0ejgxYnpLNVNabFk0NVRpR20wSFdLOG1TdDg2U1U0cFJvNklhU1JiRURxOGRpd3k3NVZoRVgvS0lLMktNMVIwWm8vMVd5OUYxTWpzTDF2ZjNYaklUSTFaMkhEWmxVRXA1SWtlS0oxTk5KVCtBSTE4Y1JTaEhPelNTTUp5SGNHRXJMUjJEb25BaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVjlZQ2VPWkdtZVpkQXdUSU8rRnlmUDh2V09CRDFjMTBBVHI4SU1Zb0xNQ3FjY3h3YVRBVXUxbXlqR0tWR2xvMmlXUThSMmpGVlJRT2JkQmtRTnpxQXM4bzBZUzNZbnhoREJtV1Y2ZHMzMnVUcGpZV1ZrVzExWVlDUlhYbHBiZUUyQ09Jd25WRThsUWpLR0kyQWNTQzg2UEQ0elhsUTBrbGhuTEg5eWNpRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCWDFnSjQ1a2FaNWwwQlJGZzc0TUo4OHk4NDRFZlhYWlJST3ZqR3h3RWd4a21WT09rd3pLZ0NYa1RTVGtsR0xFcWVob0c4bTBwSzhvSUFaM1pBRlJnN016ZDN5akF0UE40eFJFY25yOUxtTFQ0V05sWUdoZUhBSnVnbGhtWEZGelUxVW1TMDBvVlZBbFZWa2xSbEl2T2hrOU5HQXhORE5kWmlvZExYcDZJUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGZ0dBbmptUnBucVhRRkZrbm9HakJ6ZlJjd0NORUR4M1JaUU1hQk5hWWJWQ2JXZU9rNCtCNnM5UE05K3hFU2JKanRaTzhqYTViQUZqQTRXMUZ3WmVJMHpyL25LSU1oK3BteCtGdWdoM2FQc3ZwWlc0ZFFTUmdXNFpaWjEwbFUxVjZlRG1OTUk5REprVWNXaVpKa0ZJekF4aytRRUpWTWpVMFhtY3ZHYUNDclIwaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVjZZQ2VPWkdtZXBkQmxHWUcrR1NmUGN2YU8xcnk1UWJmTmxoZEJWa0FWWks2VDdOWUpMRTJ5SHJQekhNV0swODdSTnFwbXF3TE9KanY2cVVTY0pIbG81WkJKSEc1TVNuWnkyZThPSGoxK203dHViMTVYWkZzbFVWK0JKRG1LS0U0Y1FTWkRIRmdtUjJrM09qd0VQMTR3TkRSY1pDb3NIV2Q1YnlFQUlma0VDUVFBSFFBc0FBQUFBQmdBR0FBQUJYcGdKNDVrYVo1bDFXVk5wNkpueHMzMG5NRmpRQmR1RnhTMEFJd3dHeFpSbkFGT05PQUlTOGRsSnlxU0VhUWk0bTFFbFVZckhCNVdCQ1J4eG1hSXFNRjVqY0d0RGh2TmpVK2ZZOTBJTEI2WHVXZG9WRlpqV2xDQlhvaG1Ta3ROZUNSRUhGY25rWk1uT2pNOEtqOUJVakkxTkZ0b0VBMHRiblJqSVFBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRmdHQW5qbVJwbmlaRWRCYnFObHdzeDQwN0NyR3hkbE5IR0RHQkM4SVp1QUlEam90anNJbUF3bExST1VxV1lBR3FLTUNwalpqYUVaREUyWVU3U3BFbGZhNXdXajcydVN3aXlNTjBFYWR5N3JoSEMzZGFIQXRmVFdkakkxaGhYRjVmUmxwV0ptQk9pU2xGV1NkSUhCQXVPRXc3UFQ4eFdqQXpNbzVoRml0d2ZYMGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVYxWUNlT1pHbWVwa1YwQWVvU1hDekhxeXRXOFVWTzNSWGJIWTdCWnVCWVRqZ2QwSGNTQWtmRkV1dzVXbkJxSW82UzJ1T1FPQzF1ZGhUd2lqc1RzR2g2RG1MTlozaTVIUXpYei9PUjlzd2NzYmxYSlU1VVVTVkpUejRWS0VJTEtBdEZSeWc0ZXlNOFBuQTJNRE15V0Z3QkJDc0FkR0loQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFWellDZU9aR21lWmdCMUFlb1NBeWZQQStHU2NWWldHVGZjQWM3bGR1RzBUaHpkclZQZ25BYkRwZWp5SXhHYzBoSEhOaG9vczUxTVZZUUZrMGRCcy9ZSUtaczVxN082QXhlbDUyNU9SVjF4ZTlWaVZtNVNXeVZRWUZSSUJWSk5LRUZSS0VWSEtEazdQV00zTURNMFhHWXFjWE5xSVFBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRmQyQW5qbVJwbm1iUVdkMkVvdERBY1lZeEQ5QkxEZ05oRWp4ZGdKUFJaVGlxRThlbkUzRk9nMkpUbEJtVVl0TmRidFRMam9Da3AzY2s3Z2pLWTQ1Z1pCaXpSNWEydTJOZ09lZWQ4Z1R0NWJoRVhXTmdPMjQ0SlZGZVZTWUxTMU1FZkdGU0tFZE5QRXdrUUZaVE1UTTFOMXRqYXl4L2VGa2hBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVZvWUNlT1pHbWVwdEFGYU50WkJtY3dUR3hZN21nWXA3QzdBZzdFQmVHMGpMa1ZzbVFZSmpzUUhnbjIxT0YwVlpKVXRNd3VmVm1kU3NRSWswZUJzcG5CRW0yejcyNjFheGhYd1NNcTNOU3NSazl5UnloQlRpaEZkaWMvS1lvNU1ESTBObVlkS20yU1dTRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCV3hnSjQ1a2FaNW0xUVZvdXhvYzB6UU1aN0N1YURBb1k3Z1ZUazRnUkJWekhjN0VaQkFnUllJZktjQjdpcW9qcVZWSE9tNlBGZXlXb1JJMXRxT3pDSWZ1cUsvdERubmt0WG9OaTdaMjFXYXdkVTVQVVNkMUxZVWlRWUVvUkRrN1BYc3RBVEF5TkRaL1ZwZHhUeUVBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQldOZ0o0NWthWjVtMVFsbzJ3V2IwWFJRWTJ5Qk8yN3oyV3c2ZzY0alJCa2NRK0xFQkV5S21xTkF6emw5T2tsUTRuVlVGRldwcXRWMkJCa0p5bU8wZDl5cGRxL3ZyRE1yM1g2MThOUGJaVmlhRm50NkN5NDhLRDlKTURJME5qaGpLaXhzV3lFQUlma0VDUVFBSFFBc0FBQUFBQmdBR0FBQUJWaGdKNDVrYVo3bTBnbG91MjdGMmxuRjVwSTJhdVV0M3dNb24wc29JZzVMQXN1dHBNUXRUYjdZa3lRVk5hZldFUXRMMnNxNDN5ejQycWxpemNhYmtMeGtkOUxCRTd5VUJzeUxhcmYxUG9JcFdUVmdJaXdxZ2xnaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVlpZQ2VPWkdtZXA5QUJhTnN4aE5xcGpPeSt0c25jeGQzMUtLQlBTTnI1UnNaUjdyaE1Ia1ZPd3BQVUlDMmZyT21wSXVKcVI5N1pWenlTZnF2SXNaTThiV3JYSXFKTFRxS2I3TVdyU0FCSHdUb0xZbjArWGdwalV5RUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCVkZnSjQ1a2FaNW5oYTVqWm9sSloyVXNTYVBBdlJKMXg2Ty9YdERXSTVZQVJaS3FsVFNLWHMxb2JTSmFTcSttbUlpSzVjcXVVSkd1T2NhYXlqVzBMemtzdFUvdmtwclpxOUNRSFdURzJ1U2JleUVBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQlVsZ0o0NWthWjVuaGE0anBJcE9CN0Vrd2Rwc1FIYzYydSsvMms0NExNcU1MZVF1cHV4TVJJdW05QlNGVGErZGwyaW01R0pMdUdLWUZNeXR5dEt4U2IzeWlpcnU0clA2WllVQUFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVTVZQ2VPWkdtZUo0Q3VZMUNxS2l1Nk1ydlVkNjJiOU43dnRaOFBTQ3dtUkxHaU1yVkVKWnZMMzdNcGxGV2hwWnpOaW0zeGxxcGpseFVDQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFVM1lDZU9aR21lNklTdTRtSzY3RmpGTkoyc2Q2M0g4MTdEUHFCdlNDeUtWRVdrY1lrUzZweE1VUys2azFCWDAxT1dCWVhxbE5kVENBQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZMR0Fuam1ScG5taXFvdFBxdm5Bc3oySkxxL2F0Ny96cDlNRGdLQmNqQ284OHhVdXBNNmFjVHRnUGFRb0JBQ0g1QkFVRUFCMEFMQUFBQUFBWUFCZ0FBQVVqWUNlT1pHbWVhS3F1Yk91K2NMeFNjbTNmZUk3VGV0L3p2cUJ3eUFLV2pDOGtNUVFBT3c9PSkgbm8tcmVwZWF0IHNjcm9sbCBjZW50ZXIgY2VudGVyO1xufVxuLm14LXRvb2x0aXAtY29udGVudCAudGFibGUgdGgsXG4ubXgtdG9vbHRpcC1jb250ZW50IC50YWJsZSB0ZCB7XG4gICAgcGFkZGluZzogMnB4IDhweDtcbn1cbiIsIi5teC10YWJjb250YWluZXItcGFuZSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuLm14LXRhYmNvbnRhaW5lci1jb250ZW50LmxvYWRpbmcge1xuICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaE5nQTJBUE1BQVAvLy93QUFBSGg0ZUJ3Y0hBNE9EdGpZMkZSVVZOemMzTVRFeEVoSVNJcUtpZ0FBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQWtLQUFBQUlmNGFRM0psWVhSbFpDQjNhWFJvSUdGcVlYaHNiMkZrTG1sdVptOEFJZjhMVGtWVVUwTkJVRVV5TGpBREFRQUFBQ3dBQUFBQU5nQTJBQUFFeXhESVNhdTlPT3ZOdS85Z0tJNWt5U0VKUVNTSTZVcUtLaFBLV3lMejNOcGltcXNKbnVnM0U0YUlNaVBJOXdzcVBUamlUbGt3cUF3RlRDeFhleFlHczBIMmdnSk9MWUxCUURDeTVnd213WXg5SkpyQXNzSFFYc0tyOUNGdU0zQWxjakowSUFkK0JBTUhMbWxySkFkdUJvNVBsNWlabXB1Y25aNmZjV3FJbUpDamFIT1poaXFtRkl1QWw2NFpzWml6RjZvRXJFSzN1Uk9sbTc2Z3djTER4TVhHeDhYQWo2SWt1NCtvSXJVazBoL1UwV0Vqem5IUUlzcWhrY2pCM3NuY3hkYkM1K0xseWN6aDdrOFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRNRU1oSnE3MDQ2ODI3LzJBb2ptUnBubVZoRUlSUm9HY3hzT3p3d3VSS3N3Wk83anZmQ0VnVGluUzduaEYwbU5FR2h3c2l3VW9nbHBTRHpoQzFLSWlLa1dBd0VKZ1FSTllWSk5pWlNkUjBJdVNzbGRKRlVKMHd1T01KSVcwMGJ5TnhSSE9CWklRamFHbHJXQnhmUUdHUUhsTlZqNVdhbTV5ZG5wOUxZMldib29zV2dpeW1RcWdFcWhON2ZaQ3dHYk95TzdFWHJLNDR1aHFscElxZ3dzUEV4Y2JIeU1lL0tNc2l2U2JQZExjbnRkSlAxTlBPYmlmUmlhUE13Y25DemNyYnlOWEc2TVhkeHVUaTd6NFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRPRU1oSnE3MDQ2ODI3LzJBb2ptUnBubWlxQXNJd0NLc3BFRFFCeCtOUUV3T2U3ejFmYUZhN0NVR3QxMUZZTU5BTUJWTFNTQ3JvYW9Qb2NFY1ZPWGNFZytoS0M1TEF0VEhRaEthSmlMUnU2THNUdjEzeTBJSE1PeXc5QjE4R2ZuK0Zob2VJaVlvWkNBazBDUWlMRmdwb0NobFRSd2h0QkpFV2NEWkNqbTBKRjN4bU1adHVGcVpDcVFRWG4za29vbWlrc0hpWm01MlNBSlJnbHJ3VGpZKzd3Y2JIeU1uS0U1Z296VzljSjdFL1dDZXNhdFVtMTF0RjB0RWp6eks0eTRuaHh0UEkyOGJxd2VqSTV1VHhKaEVBSWZrRUNRb0FBQUFzQUFBQUFEWUFOZ0FBQk1zUXlFbXJ2VGpyemJ2L1lDaU9aR21lYUtvQ3dqQUlxeWtRTkFISDQxQVRBNTd2UFY5b1Zyc0pRYTNYY1lsS0dtV3VKM0luRlJGcDFZNnVGaXh0YVYzUWwzY2FoejlYMnltZDdUaFRiNlo4VHEvYjcvaTh2R0NnR1FvYWNVSUZab0FYYkVkOU93UUdHR1pIaXpXT1FKQ1JCQmlJUW9vN2paaFJTd2RtQjNvVUI0b0dvNlNxcTZ5dE1RZ0pOQWtJckFxUkNpT0NJd2lXQkxSVFJTV3hsZ2toanlTOU5NYVV5TWxEVk1LOXhVT2ZKYnlXdjNxMmk3aEx1aFd3c3RsQ21hdkg1c3lyNWVyVnJ1NDRFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWlaY2dVR05BWUZKSk1pQldhZ1E0TWxuVHNFQmlLTElxczFya0Ftc1RSV3FDU3FPNjFXa1JrSUNUUUpDQmNIWmdkSENyRUt4cW9HeVVJSXRnVEZlc0syQ1h2VXQzcmNCSHZZc2RwNjA3Yldlc3VyelpYQncrZ2lFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWdTQ0FrMENRaVdDanMwQ3BRSW9qV2ZKWk1kbktjRUNhcURJSzQxWGtBaHREUzJYQ0d0cDdBa2p4Nm1ycW5Ca1NLaG9xUVhCUVkwQmdWTG01M0dGUVZtMHBUUG9nYVZ0Tit1bGR3NzNwUUhaZ2VXQjl3RzZwa29FUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2dktVU0Nsa0RnTFFvN05BcC9Fd2lDTlg1Q2NSWjdpQVFKaTFRWGp6VkNacFNWQkpkQUY0NklrVDVzRjRlUGlxSlJHWUdDaElXR2puMnVzck8wdFhZRkJqUUdCYlFGWnJ4UVNpSzVnZ1l5a3lHVkpwakpqOHVkSWNRN3hpV2pJUWRtQjJ1cEl3ZkVCdHEySG95ejFyUE01OURseUxUazR1OHBFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3a1JDVm9Db1dtOWhCTEZqcWFBZGhEVEdyUGtOSDZTV1VLQ3UvTjJ3cldTcmhiOG9HbHFZQWljSFpPSU5ETUhHOTdlWFhvZFVsTlZWbGRnUzRhS2k0eU5qbzhGQmpRR0JZOFhCV3MwQTVWUVhSbVNVd2FkWlJob1VKazhwV0duY2hlZ082SkNlRFlZQjZnREIxYWVHUWVnQnJtV3djTER4TVhHeDF5QUtic2lzNEVnemo5c0o3ZlNtdFN0UTZReTI4M0tLTXpJamVIRTBjYlY1OW5sM2NYazR1OG9FUUE3KSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDMycHggMzJweDtcbn1cbi5teC10YWJjb250YWluZXItdGFicyB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLm14LXRhYmNvbnRhaW5lci10YWJzIGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ubXgtdGFiY29udGFpbmVyLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQ6ICNmMmRlZGU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGNvbG9yOiAjYjk0YTQ4O1xuICAgIHRvcDogMHB4O1xuICAgIHJpZ2h0OiAtNXB4O1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB6LWluZGV4OiAxOyAvKiBpbmRpY2F0b3Igc2hvdWxkIG5vdCBoaWRlIGJlaGluZCBvdGhlciB0YWIgKi9cbn1cbiIsIi8qIGJhc2Ugc3RydWN0dXJlICovXG4ubXgtZ3JpZCB7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47IC8qIHRvIHByZXZlbnQgYW55IG1hcmdpbiBmcm9tIGVzY2FwaW5nIGdyaWQgYW5kIGZvb2JhcmluZyBvdXIgc2l6ZSBjYWxjdWxhdGlvbnMgKi9cbn1cbi5teC1ncmlkLWNvbnRyb2xiYXIsIC5teC1ncmlkLXNlYXJjaGJhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uLFxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIC5teC1idXR0b24ge1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIC5teC1idXR0b24gKyAubXgtYnV0dG9uLFxuLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uICsgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuM2VtO1xufVxuXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXNlYXJjaC1jb250cm9scyAubXgtYnV0dG9uICsgLm14LWJ1dHRvbixcbltkaXI9XCJydGxcIl0gLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uICsgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjNlbTtcbn1cblxuLm14LWdyaWQtcGFnaW5nYmFyLFxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG4ubXgtZ3JpZC10b29sYmFyLCAubXgtZ3JpZC1zZWFyY2gtaW5wdXRzIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBmbGV4OiAxO1xufVxuXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXRvb2xiYXIsXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXNlYXJjaC1pbnB1dHMge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAwcHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXBhZ2luZ2JhcixcbltkaXI9XCJydGxcIl0gLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIHtcbiAgICBtYXJnaW4tbGVmdDogMHB4O1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbn1cblxuLm14LWdyaWQtcGFnaW5nLXN0YXR1cyB7XG4gICAgcGFkZGluZzogMCA4cHggNXB4O1xufVxuXG4vKiBzZWFyY2ggZmllbGRzICovXG4ubXgtZ3JpZC1zZWFyY2gtaXRlbSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLm14LWdyaWQtc2VhcmNoLWxhYmVsIHtcbiAgICB3aWR0aDogMTEwcHg7XG4gICAgcGFkZGluZzogMCA1cHg7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbltkaXI9XCJydGxcIl0gLm14LWdyaWQtc2VhcmNoLWxhYmVsIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LWdyaWQtc2VhcmNoLWlucHV0IHtcbiAgICB3aWR0aDogMTUwcHg7XG4gICAgcGFkZGluZzogMCA1cHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4ubXgtZ3JpZC1zZWFyY2gtbWVzc2FnZSB7XG4gICAgZmxleC1iYXNpczogMTAwJTtcbn1cblxuLyogd2lkZ2V0IGNvbWJpbmF0aW9ucyAqL1xuLm14LWRhdGF2aWV3IC5teC1ncmlkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbiIsIi5teC1jYWxlbmRhciB7XG4gICAgei1pbmRleDogMTAwMDtcbn1cblxuLm14LWNhbGVuZGFyLW1vbnRoLWRyb3Bkb3duLW9wdGlvbnMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuLm14LWNhbGVuZGFyLCAubXgtY2FsZW5kYXItbW9udGgtZHJvcGRvd24ge1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4ubXgtY2FsZW5kYXItbW9udGgtY3VycmVudCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ubXgtY2FsZW5kYXItbW9udGgtc3BhY2VyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAwcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi5teC1jYWxlbmRhciwgLm14LWNhbGVuZGFyLW1vbnRoLWRyb3Bkb3duLW9wdGlvbnMge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JleTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbiIsIi5teC1kYXRhZ3JpZCB0ciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubXgtZGF0YWdyaWQgdHIubXgtZGF0YWdyaWQtcm93LWVtcHR5IHtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi5teC1kYXRhZ3JpZCB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm14LWRhdGFncmlkIHRoLCAubXgtZGF0YWdyaWQgdGQge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG59XG5cbi8qIGhlYWQgKi9cbi5teC1kYXRhZ3JpZCB0aCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyAvKiBSZXF1aXJlZCBmb3IgdGhlIHBvc2l0aW9uaW5nIG9mIHRoZSBjb2x1bW4gcmVzaXplcnMgKi9cbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7XG59XG4ubXgtZGF0YWdyaWQtaGVhZC1jYXB0aW9uIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ubXgtZGF0YWdyaWQtc29ydC1pY29uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgcGFkZGluZy1sZWZ0OiA1cHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kYXRhZ3JpZC1zb3J0LWljb24ge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBhZGRpbmc6IDAgNXB4IDAgMDtcbn1cbi5teC1kYXRhZ3JpZC1jb2x1bW4tcmVzaXplciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtNnB4O1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBjdXJzb3I6IGNvbC1yZXNpemU7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kYXRhZ3JpZC1jb2x1bW4tcmVzaXplciB7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogLTZweDtcbn1cblxuLyogYm9keSAqL1xuLm14LWRhdGFncmlkIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRkIHtcbiAgICBib3JkZXItdG9wOiBub25lO1xufVxuLm14LWRhdGFncmlkIHRib2R5IHRyOm50aC1jaGlsZCgybisxKSB0ZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTtcbn1cbi5teC1kYXRhZ3JpZCB0Ym9keSAuc2VsZWN0ZWQgdGQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7XG59XG4ubXgtZGF0YWdyaWQtZGF0YS13cmFwcGVyIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ubXgtZGF0YWdyaWQgdGJvZHkgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDE2cHg7XG4gICAgbWF4LWhlaWdodDogMTZweDtcbn1cbi5teC1kYXRhZ3JpZCBpbnB1dCxcbi5teC1kYXRhZ3JpZCBzZWxlY3QsXG4ubXgtZGF0YWdyaWQgdGV4dGFyZWEge1xuICAgIGN1cnNvcjogYXV0bztcbn1cblxuLyogZm9vdCAqL1xuLm14LWRhdGFncmlkIHRmb290IHRoLFxuLm14LWRhdGFncmlkIHRmb290IHRkIHtcbiAgICBwYWRkaW5nOiAzcHggOHB4O1xufVxuLm14LWRhdGFncmlkIHRmb290IHRoIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbn1cbi5teC1kYXRhZ3JpZC5teC1jb250ZW50LWxvYWRpbmcgLm14LWNvbnRlbnQtbG9hZGVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDkwJTtcbiAgICBhbmltYXRpb246IHBsYWNlaG9sZGVyR3JhZGllbnQgMXMgbGluZWFyIGluZmluaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiAjRjVGNUY1O1xuICAgIGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNGNUY1RjUgMCUsICNGNUY1RjUgNSUsICNGOUY5RjkgNTAlLCAjRjVGNUY1IDk1JSwgI0Y1RjVGNSAxMDAlKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMHB4IDEwMHB4O1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG59XG5Aa2V5ZnJhbWVzIHBsYWNlaG9sZGVyR3JhZGllbnQge1xuICAgIDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwcHggMDsgfVxuICAgIDEwMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTAwcHggMDsgfVxufVxuXG4ubXgtZGF0YWdyaWQtdGFibGUtcmVzaXppbmcgdGgsXG4ubXgtZGF0YWdyaWQtdGFibGUtcmVzaXppbmcgdGQge1xuICAgIGN1cnNvcjogY29sLXJlc2l6ZSAhaW1wb3J0YW50O1xufVxuIiwiLm14LXRlbXBsYXRlZ3JpZC1jb250ZW50LXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5teC10ZW1wbGF0ZWdyaWQtcm93IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG59XG4ubXgtdGVtcGxhdGVncmlkLWl0ZW0ge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ubXgtdGVtcGxhdGVncmlkLWVtcHR5IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xufVxuLm14LXRlbXBsYXRlZ3JpZC1pdGVtLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xufVxuLm14LXRlbXBsYXRlZ3JpZC1pdGVtIC5teC10YWJsZSB0aCxcbi5teC10ZW1wbGF0ZWdyaWQtaXRlbSAubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDJweCA4cHg7XG59XG4iLCIubXgtc2Nyb2xsY29udGFpbmVyLWhvcml6b250YWwge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG59XG4ubXgtc2Nyb2xsY29udGFpbmVyLWhvcml6b250YWwgPiBkaXYge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItd3JhcHBlciB7XG4gICAgcGFkZGluZzogMTBweDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItbmVzdGVkIHtcbiAgICBwYWRkaW5nOiAwO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1maXhlZCA+IC5teC1zY3JvbGxjb250YWluZXItbWlkZGxlID4gLm14LXNjcm9sbGNvbnRhaW5lci13cmFwcGVyLFxuLm14LXNjcm9sbGNvbnRhaW5lci1maXhlZCA+IC5teC1zY3JvbGxjb250YWluZXItbGVmdCA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcixcbi5teC1zY3JvbGxjb250YWluZXItZml4ZWQgPiAubXgtc2Nyb2xsY29udGFpbmVyLWNlbnRlciA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcixcbi5teC1zY3JvbGxjb250YWluZXItZml4ZWQgPiAubXgtc2Nyb2xsY29udGFpbmVyLXJpZ2h0ID4gLm14LXNjcm9sbGNvbnRhaW5lci13cmFwcGVyIHtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cblxuLm14LXNjcm9sbGNvbnRhaW5lci1tb3ZlLWluIHtcbiAgICB0cmFuc2l0aW9uOiBsZWZ0IDI1MG1zIGVhc2Utb3V0O1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1tb3ZlLW91dCB7XG4gICAgdHJhbnNpdGlvbjogbGVmdCAyNTBtcyBlYXNlLWluO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zaHJpbmsgLm14LXNjcm9sbGNvbnRhaW5lci10b2dnbGVhYmxlIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB3aWR0aDtcbn1cblxuLm14LXNjcm9sbGNvbnRhaW5lci10b2dnbGVhYmxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zbGlkZSA+IC5teC1zY3JvbGxjb250YWluZXItdG9nZ2xlYWJsZSA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItcHVzaCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zaHJpbmsgPiAubXgtc2Nyb2xsY29udGFpbmVyLXRvZ2dsZWFibGUge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubXgtc2Nyb2xsY29udGFpbmVyLXB1c2gubXgtc2Nyb2xsY29udGFpbmVyLW9wZW4gPiBkaXYsXG4ubXgtc2Nyb2xsY29udGFpbmVyLXNsaWRlLm14LXNjcm9sbGNvbnRhaW5lci1vcGVuID4gZGl2IHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5teC1zY3JvbGxjb250YWluZXItcHVzaC5teC1zY3JvbGxjb250YWluZXItb3BlbiA+IC5teC1zY3JvbGxjb250YWluZXItdG9nZ2xlYWJsZSxcbi5teC1zY3JvbGxjb250YWluZXItc2xpZGUubXgtc2Nyb2xsY29udGFpbmVyLW9wZW4gPiAubXgtc2Nyb2xsY29udGFpbmVyLXRvZ2dsZWFibGUge1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuIiwiLm14LW5hdmJhci1pdGVtIGltZyxcbi5teC1uYXZiYXItc3ViaXRlbSBpbWcge1xuICAgIGhlaWdodDogMTZweDtcbn1cblxuIiwiLm14LW5hdmlnYXRpb250cmVlIC5uYXZiYXItaW5uZXIge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RmZTZlYTtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSBsaTpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgY29sb3I6ICM3Nzc7XG4gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgYS5hY3RpdmUge1xuICAgIGNvbG9yOiAjRkZGO1xuICAgIHRleHQtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICMzNDk4REI7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xufVxuLm14LW5hdmlnYXRpb250cmVlIC5teC1uYXZpZ2F0aW9udHJlZS1jb2xsYXBzZWQgdWwge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgdWwge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHtcbiAgICBwYWRkaW5nOiA1cHggMDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICBwYWRkaW5nOiA1cHggMDtcbn1cbltkaXI9XCJydGxcIl0gLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHVsIGxpIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB1bCBsaSB7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIHBhZGRpbmctdG9wOiAzcHg7XG4gICAgcGFkZGluZy1ib3R0b206IDNweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB1bCBsaSBpbWcge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4iLCIubXgtbGluayBpbWcsXG4ubXgtYnV0dG9uIGltZyB7XG4gICAgaGVpZ2h0OiAxNnB4O1xufVxuLm14LWxpbmsge1xuICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbiIsIi5teC1ncm91cGJveCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbi5teC1ncm91cGJveC1oZWFkZXIge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gICAgY29sb3I6ICNlZWU7XG4gICAgYmFja2dyb3VuZDogIzMzMztcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4IDRweCAwIDA7XG59XG4ubXgtZ3JvdXBib3gtY29sbGFwc2libGUgPiAubXgtZ3JvdXBib3gtaGVhZGVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZ3JvdXBib3guY29sbGFwc2VkID4gLm14LWdyb3VwYm94LWhlYWRlciB7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuLm14LWdyb3VwYm94LWJvZHkge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cbi5teC1ncm91cGJveC5jb2xsYXBzZWQgPiAubXgtZ3JvdXBib3gtYm9keSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbi5teC1ncm91cGJveC1oZWFkZXIgKyAubXgtZ3JvdXBib3gtYm9keSB7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgNHB4IDRweDtcbn1cbi5teC1ncm91cGJveC1jb2xsYXBzZS1pY29uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG59XG5bZGlyPVwicnRsXCJdIC5teC1ncm91cGJveC1jb2xsYXBzZS1pY29uIHtcbiAgICBmbG9hdDogbGVmdDtcbn1cbiIsIi5teC1kYXRhdmlldyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm14LWRhdGF2aWV3LWNvbnRyb2xzIHtcbiAgICBwYWRkaW5nOiAxOXB4IDIwcHggMTJweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVlO1xufVxuXG4ubXgtZGF0YXZpZXctY29udHJvbHMgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuXG4ubXgtZGF0YXZpZXctY29udHJvbHMgLm14LWJ1dHRvbiArIC5teC1idXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjNlbTtcbn1cblxuLm14LWRhdGF2aWV3LW1lc3NhZ2Uge1xuICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbn1cbi5teC1kYXRhdmlldy1tZXNzYWdlID4gZGl2IHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG4ubXgtZGF0YXZpZXctbWVzc2FnZSA+IGRpdiA+IHAge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi8qIFRvcC1sZXZlbCBkYXRhIHZpZXcgaW4gd2luZG93IGlzIGEgc3BlY2lhbCBjYXNlLCBoYW5kbGUgaXQgYXMgc3VjaC4gKi9cbi5teC13aW5kb3ctdmlldyAubXgtd2luZG93LWJvZHkge1xuICAgIHBhZGRpbmc6IDA7XG59XG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRlbnQsXG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LXBsYWNlaG9sZGVyID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDE1cHg7XG59XG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRyb2xzLFxuLm14LXdpbmRvdy12aWV3IC5teC13aW5kb3ctYm9keSA+IC5teC1wbGFjZWhvbGRlciA+IC5teC1kYXRhdmlldyA+IC5teC1kYXRhdmlldy1jb250cm9scyB7XG4gICAgYm9yZGVyLXJhZGl1czogMHB4IDBweCA2cHggNnB4O1xufVxuIiwiLm14LWRpYWxvZyB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogNTAwcHg7XG4gICAgLyogSWYgdGhlIG1hcmdpbiBpcyBzZXQgdG8gYXV0bywgSUU5IHJlcG9ydHMgdGhlIGNhbGN1bGF0ZWQgdmFsdWUgb2YgdGhlXG4gICAgICogbWFyZ2luIGFzIHRoZSBhY3R1YWwgdmFsdWUuIE90aGVyIGJyb3dzZXJzIHdpbGwganVzdCByZXBvcnQgMC4gRWxpbWluYXRlXG4gICAgICogdGhpcyBkaWZmZXJlbmNlIGJ5IHNldHRpbmcgbWFyZ2luIHRvIDAgZm9yIGV2ZXJ5IGJyb3dzZXIuICovXG4gICAgbWFyZ2luOiAwO1xufVxuLm14LWRpYWxvZy1oZWFkZXIge1xuICAgIGN1cnNvcjogbW92ZTtcbn1cbi5teC1kaWFsb2ctYm9keSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG59XG4iLCIubXgtd2luZG93IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiA2MDBweDtcbiAgICAvKiBJZiB0aGUgbWFyZ2luIGlzIHNldCB0byBhdXRvLCBJRTkgcmVwb3J0cyB0aGUgY2FsY3VsYXRlZCB2YWx1ZSBvZiB0aGVcbiAgICAgKiBtYXJnaW4gYXMgdGhlIGFjdHVhbCB2YWx1ZS4gT3RoZXIgYnJvd3NlcnMgd2lsbCBqdXN0IHJlcG9ydCAwLiBFbGltaW5hdGVcbiAgICAgKiB0aGlzIGRpZmZlcmVuY2UgYnkgc2V0dGluZyBtYXJnaW4gdG8gMCBmb3IgZXZlcnkgYnJvd3Nlci4gKi9cbiAgICBtYXJnaW46IDA7XG59XG4ubXgtd2luZG93LWNvbnRlbnQge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm14LXdpbmRvdy1hY3RpdmUgLm14LXdpbmRvdy1oZWFkZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4IDZweCAwIDA7XG59XG4ubXgtd2luZG93LWhlYWRlciB7XG4gICAgY3Vyc29yOiBtb3ZlO1xufVxuLm14LXdpbmRvdy1ib2R5IHtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cbiIsIi5teC1kcm9wZG93bi1saXN0ICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1kcm9wZG93bi1saXN0IGltZyB7XG4gICAgd2lkdGg6IDM1cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kcm9wZG93bi1saXN0IGltZyB7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4ubXgtZHJvcGRvd24tbGlzdCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LWRyb3Bkb3duLWxpc3QgPiBsaSB7XG4gICAgcGFkZGluZzogNXB4IDEwcHggMTBweDtcbiAgICBib3JkZXI6IDFweCAjZGRkO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLm14LWRyb3Bkb3duLWxpc3QgPiBsaTpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG59XG4ubXgtZHJvcGRvd24tbGlzdCA+IGxpOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xufVxuLm14LWRyb3Bkb3duLWxpc3Qtc3RyaXBlZCA+IGxpOm50aC1jaGlsZCgybisxKSB7XG4gICAgYmFja2dyb3VuZDogI2Y5ZjlmOTtcbn1cbi5teC1kcm9wZG93bi1saXN0ID4gbGk6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7XG59XG4iLCIubXgtaGVhZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogOXB4O1xuICAgIGJhY2tncm91bmQ6ICMzMzM7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm14LWhlYWRlci1jZW50ZXIge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjb2xvcjogI2VlZTtcbiAgICBsaW5lLWhlaWdodDogMzBweDsgLyogaGVpZ2h0IG9mIGJ1dHRvbnMgKi9cbn1cbmJvZHlbZGlyPVwibHRyXCJdIC5teC1oZWFkZXItbGVmdCxcbmJvZHlbZGlyPVwicnRsXCJdIC5teC1oZWFkZXItcmlnaHQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDlweDtcbiAgICBsZWZ0OiA5cHg7XG59XG5ib2R5W2Rpcj1cImx0clwiXSAubXgtaGVhZGVyLXJpZ2h0LFxuYm9keVtkaXI9XCJydGxcIl0gLm14LWhlYWRlci1sZWZ0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA5cHg7XG4gICAgcmlnaHQ6IDlweDtcbn1cbiIsIi5teC10aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICAgIG1hcmdpbi10b3A6IDBweDtcbn1cbiIsIi5teC1saXN0dmlldyB7XG4gICAgcGFkZGluZzogOHB4O1xufVxuLm14LWxpc3R2aWV3ID4gdWwge1xuICAgIHBhZGRpbmc6IDBweDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LWxpc3R2aWV3ID4gdWwgPiBsaSB7XG4gICAgcGFkZGluZzogNXB4IDEwcHggMTBweDtcbiAgICBib3JkZXI6IDFweCAjZGRkO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG4ubXgtbGlzdHZpZXcgPiB1bCA+IGxpOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcbn1cbi5teC1saXN0dmlldyA+IHVsID4gbGk6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7XG59XG4ubXgtbGlzdHZpZXcgbGk6bnRoLWNoaWxkKDJuKzEpIHtcbiAgICBiYWNrZ3JvdW5kOiAjZjlmOWY5O1xufVxuLm14LWxpc3R2aWV3IGxpOm50aC1jaGlsZCgybisxKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcbn1cbi5teC1saXN0dmlldyA+IHVsID4gbGkuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNlZWU7XG59XG4ubXgtbGlzdHZpZXctY2xpY2thYmxlIHVsICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1saXN0dmlldy1lbXB0eSB7XG4gICAgY29sb3I6ICM5OTk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm14LWxpc3R2aWV3IC5teC1saXN0dmlldy1sb2FkaW5nIHtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5teC1saXN0dmlldy1zZWFyY2hiYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbi5teC1saXN0dmlldy1zZWFyY2hiYXIgPiBpbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtbGlzdHZpZXctc2VhcmNoYmFyID4gYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xufVxuW2Rpcj1cInJ0bFwiXSAubXgtbGlzdHZpZXctc2VhcmNoYmFyID4gYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbi5teC1saXN0dmlldy1zZWxlY3Rpb24ge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwYWRkaW5nOiAwIDE1cHggMCA1cHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1saXN0dmlldy1zZWxlY3Rpb24ge1xuICAgIHBhZGRpbmc6IDAgNXB4IDAgMTVweDtcbn1cbi5teC1saXN0dmlldy1zZWxlY3RhYmxlIC5teC1saXN0dmlldy1jb250ZW50IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtbGlzdHZpZXcgLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kOiAjZGVmO1xufVxuLm14LWxpc3R2aWV3IC5teC10YWJsZSB0aCxcbi5teC1saXN0dmlldyAubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDJweDtcbn1cbiIsIi5teC1sb2dpbiAuZm9ybS1jb250cm9sIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xufVxuIiwiLm14LW1lbnViYXIge1xuICAgIHBhZGRpbmc6IDhweDtcbn1cbi5teC1tZW51YmFyLWljb24ge1xuICAgIGhlaWdodDogMTZweDtcbn1cbi5teC1tZW51YmFyLW1vcmUtaWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDTUFBQUFqQ0FZQUFBQWUyYk5aQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFLTkpSRUZVZU5waS9QLy9QOE5nQVV3TWd3aU1PbWJVTWFPT0dYWE1xR05HSFRQWUhNT0NUZkRzMmJNZVFLb09pSTFCWENCdU1qWTIza0ZyZFl6b1RRaWdSbThndFFXTEcwT0JCcXlobFRwYzBkU09JeFRyYUt3T3EyUFVjV2hXcDdFNnJJNjVpVVB6VFJxcncrcVlHaHlhbTJpc0R0TXh3RVMxQ1VnRkFmRnhxQkNJRGtKUGJOUldoelUzalJaNm80NFpkY3lvWTBZZE0rcVlVY2NNVXNjQUJCZ0FVWHBFakUvQnMvSUFBQUFBU1VWT1JLNUNZSUk9KSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDE2cHggMTZweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuIiwiLm14LW5hdmlnYXRpb25saXN0IHtcbiAgICBwYWRkaW5nOiA4cHg7XG59XG4ubXgtbmF2aWdhdGlvbmxpc3QgbGk6aG92ZXIsXG4ubXgtbmF2aWdhdGlvbmxpc3QgbGk6Zm9jdXMsXG4ubXgtbmF2aWdhdGlvbmxpc3QgbGkuYWN0aXZlIHtcbiAgICBjb2xvcjogI0ZGRjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ5OERCO1xufVxuLm14LW5hdmlnYXRpb25saXN0ICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1uYXZpZ2F0aW9ubGlzdCAudGFibGUgdGgsXG4ubXgtbmF2aWdhdGlvbmxpc3QgLnRhYmxlIHRkIHtcbiAgICBwYWRkaW5nOiAycHg7XG59XG4iLCIubXgtcHJvZ3Jlc3Mge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDMwJTtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIG1hcmdpbjogYXV0bztcbiAgICB3aWR0aDogMjUwcHg7XG4gICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgYmFja2dyb3VuZDogIzMzMztcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgei1pbmRleDogNTAwMDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgcGFkZGluZzogMjBweCAxNXB4O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC40cyBlYXNlLWluLW91dDtcbn1cbi5teC1wcm9ncmVzcy1oaWRkZW4ge1xuICAgIG9wYWNpdHk6IDA7XG59XG4ubXgtcHJvZ3Jlc3MtbWVzc2FnZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG59XG4ubXgtcHJvZ3Jlc3MtZW1wdHkgLm14LXByb2dyZXNzLW1lc3NhZ2Uge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4ubXgtcHJvZ3Jlc3MtaW5kaWNhdG9yIHtcbiAgICB3aWR0aDogNzBweDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhSZ0FLQU1RQUFEbzZPb0dCZ1ZwYVduQndjSTZPanF5c3JGSlNVbVJrWkQ4L1AweE1UTTdPenFlbnAxaFlXRjFkWFVoSVNISnljb2VIaDB0TFMxZFhWNmlvcU0vUHoyVmxaVDA5UFRjM04wQkFRSVdGaGRiVzFseGNYSzJ0clVGQlFUTXpNd0FBQUNIL0MwNUZWRk5EUVZCRk1pNHdBd0VBQUFBaCtRUUVEQUFBQUN3QUFBQUFSZ0FLQUFBRms2RG5YUmFHV1plb3JxU0pybkI3cHJBcXY3VjQweDdRL1VCQXpnZjhDV3ZFNGhHV0RBNkx4aEVVeU5OTmYxWHBOWHU1ZHJoZWt0Y0NzNHpMNTVYNVNsYVBNVjRNREg2VnIraFR1d29QMVl2NFJTWnhjNE4zaFh1SGYzRnJVMjBxakZDT0lwQkZraDZVUUphWVB5aGhNWjRzb0RhaVZsczlVMHNyVFZGSXFFOVFxU3FySFVzN09Ub2xNN2NqdVRnNXRyZkFJUUFoK1FRRURBQUFBQ3dBQUFBQUNnQUtBQUFGSktEbkhZV2lGSWZvUVZyclFxTXJhK1RzbG5acjV0ckpvN3dVYXdZVFZRb1VDa29VQWdBaCtRUUVEQUFBQUN3QUFBQUFHUUFLQUFBRldhRG5NY1N5RUpLb3JrZWhLTVdoUGx4dFA2c0thWHdQZVJLYmtNUElIWHBJellFd3RCRnloV1N2c0dqV0ZqbUZsS2VvV3JFcjdWYkJ0RDVYMFcyQllTVWF0MG9QYllqTGVYYkpuNGcwbVJDS2RpSVZCUlFVTVNJaEFDSDVCQVFNQUFBQUxBQUFBQUFvQUFvQUFBV0tvT2NsUXhBTWthaXVETEVzaExUT1I2RW94YUUyV2U4M005R0RReXcrZ2g2SVpzbUVlQ0srYUNZeGt4U3ZIQWFOeWRVY0JsTGZZRWJBRmdtelFwZFpDSVI3Z2RuQ1RGek1GT3Vsd3YyT3IrWjBkaXQ0ZVFwZ2IyTXJaWFJvSzJwNUJRbHZVek1NZEZsYmVUbzhVa0JCUTFoSFFVcGRUaUlrSmdOVVNCNHRFeE1FV3F3VkJSUVVPU0loQUNINUJBUU1BQUFBTEFBQUFBQTNBQW9BQUFXOG9PY2hoaUFZaUtpdXlSQUVRN1RPRExFc2hEU3ZSNkVvaFlQS3NTa2FIVHRQSThOc05wSVBqblQ2U0VJMDJDeGtaT3h1VXF0SWM1eEp6Q1RUTkljeE8yVGZtb1BCYXpUTUJ1VG1ZRVpRVHdrekJYQlpCUUowUlFJekFYbE1BVE1MZmxJTE13cURXQXFHaDRrcmk0eU9LNUNSa3l1VmxncHpoM1lyZUl4N0szMlJnQ3VDbGdVSWgxOHpDWXhsTkpGcmJaWnhIa1JlU0R0TFpFODdVV3BWTzFkd1d5SVlKU2RnU1MwdkEyWkpIalVURXdSczNoVUZGQlJCSWlFQUlma0VCQXdBQUFBc0FBQUFBRVlBQ2dBQUJmQ2c1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkROSzhNc1N3RXlVNTFLQ2dVaFlNSzBHazZBVVBIWmtwMURCdVpyTFl4ZkhDKzRNY1FvaW1iSVNPbnVwTmlVZDhiMlNxaXJXY1NNd2w0ejJITURtYUJHZ2NXYTA0V013WndWQVl6QTNaYUF6TUVmR0FFTXdXQ1pnVVloazBZTXdLTFV3SXpBWkJaQVRNTGxWOExNd3FhWlFxZG5xQXJvcU9sSzZlb3FpdXNyYThyc2JJS2haNklLNHFqalN1UHFKSXJsSzJYSzVteUJSZWViRE1JbzNFMHFIY3pESzE5ZjdLREhreHJVRHRTY0ZZN1dIWmNPMTU4WWp0a2dtZ2lKRXlnR0NJQ2d3c1ljb2JVdURFQUQ4RWVFeVlROEVPd1FnRUtGSktJQ0FFQUlma0VCQXdBQUFBc0R3QUFBRGNBQ2dBQUJicWc1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkROSzhNc1N3RWlRclFLUm9CTzQ5ancydzZrbzJNZE5wSVBqalk3R05rN0haU3JLWjRJMXRGcHVoTVlpYkp1amtNaTlkb21SbkdUY05za0o0T1pnUnZXUVFZYzBVWU13SjRUQUl6QVgxU0FUTUxnbGdMaFlhSUs0cUxqU3VQa0pJcmxKVUxjb1oxSzNlTGVpdDhrSDhyZ1pVRUY0WmZNd2lMWkRTUWFqTU1sWEFlUkY1SU8wdGpUenRSYVZVN1YyOWJJaVFtS0VraUdDNHdaVWsxTndOcjJEMFRFd1FNSWlFQUlma0VCQXdBQUFBc0hnQUFBQ2dBQ2dBQUJZZWc1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkRwQUpkN3dNemtXTkRMRHFDbmtabXlXeU1mTkJPaWxXc2JtU3JDSE9iU1ZpaVBzdk1ZQzBhWmdNdWM0QUI5ekF6UVprb21BWFV5MERiRFYvSjUzVXJkM2dCWDI1aUsyUnpaeXRwZUFNWGJsSXpDSE5YTkhoZEhqeFJRRUZEVmtkQlNseE9JaVFtS0VnaUdDNHdXRWcxTndNSklpRUFJZmtFQkF3QUFBQXNMUUFBQUJrQUNnQUFCVldnNTEwV2hsbVhxSzZJSVFnR29nSmRiUU9yNm14ODc0eTJZQ2ZGNmhrM0NJdlFac2taamowRFpsbkQ1QVJRbm1CS3RhNndXWUdTMmx3OXM0WUxkWmhEWkpFZW1oQ1g4K3lPUHhISmhLcXJNQzR3TWg0aEFDSDVCQVFNQUFBQUxEd0FBQUFLQUFvQUFBVWlvT2RkRm9aWmwrZ0JYZXNDb3l0MzVPeVdkbXZtM2NtanZCUnJCaE9SVENoUkNBQTcpO1xufVxuIiwiLm14LXJlbG9hZC1ub3RpZmljYXRpb24ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiAxMDAxO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxcmVtO1xuXG4gICAgYm9yZGVyOiAxcHggc29saWQgaHNsKDIwMCwgOTYlLCA0MSUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgyMDAsIDk2JSwgNDQlKTtcblxuICAgIGJveC1zaGFkb3c6IDAgNXB4IDIwcHggcmdiYSgxLCAzNywgNTUsIDAuMTYpO1xuICAgIGNvbG9yOiB3aGl0ZTtcblxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDE0cHg7XG59XG4iLCIubXgtcmVzaXplci1uLFxuLm14LXJlc2l6ZXItcyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMHB4O1xufVxuLm14LXJlc2l6ZXItbiB7XG4gICAgdG9wOiAtNXB4O1xuICAgIGN1cnNvcjogbi1yZXNpemU7XG59XG4ubXgtcmVzaXplci1zIHtcbiAgICBib3R0b206IC01cHg7XG4gICAgY3Vyc29yOiBzLXJlc2l6ZTtcbn1cblxuLm14LXJlc2l6ZXItZSxcbi5teC1yZXNpemVyLXcge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuLm14LXJlc2l6ZXItZSB7XG4gICAgcmlnaHQ6IC01cHg7XG4gICAgY3Vyc29yOiBlLXJlc2l6ZTtcbn1cbi5teC1yZXNpemVyLXcge1xuICAgIGxlZnQ6IC01cHg7XG4gICAgY3Vyc29yOiB3LXJlc2l6ZTtcbn1cblxuLm14LXJlc2l6ZXItbncsXG4ubXgtcmVzaXplci1uZSxcbi5teC1yZXNpemVyLXN3LFxuLm14LXJlc2l6ZXItc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XG59XG5cbi5teC1yZXNpemVyLW53LFxuLm14LXJlc2l6ZXItbmUge1xuICAgIHRvcDogLTVweDtcbn1cbi5teC1yZXNpemVyLXN3LFxuLm14LXJlc2l6ZXItc2Uge1xuICAgIGJvdHRvbTogLTVweDtcbn1cbi5teC1yZXNpemVyLW53LFxuLm14LXJlc2l6ZXItc3cge1xuICAgIGxlZnQ6IC01cHg7XG59XG4ubXgtcmVzaXplci1uZSxcbi5teC1yZXNpemVyLXNlIHtcbiAgICByaWdodDogLTVweDtcbn1cblxuLm14LXJlc2l6ZXItbncge1xuICAgIGN1cnNvcjogbnctcmVzaXplO1xufVxuLm14LXJlc2l6ZXItbmUge1xuICAgIGN1cnNvcjogbmUtcmVzaXplO1xufVxuLm14LXJlc2l6ZXItc3cge1xuICAgIGN1cnNvcjogc3ctcmVzaXplO1xufVxuLm14LXJlc2l6ZXItc2Uge1xuICAgIGN1cnNvcjogc2UtcmVzaXplO1xufVxuIiwiLm14LXRleHQge1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbn1cbiIsIi5teC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiBub25lO1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbn1cbi5teC10ZXh0YXJlYSAubXgtdGV4dGFyZWEtbm9yZXNpemUge1xuICAgIGhlaWdodDogYXV0bztcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG59XG4ubXgtdGV4dGFyZWEgLm14LXRleHRhcmVhLWNvdW50ZXIge1xuICAgIGZvbnQtc2l6ZTogc21hbGxlcjtcbn1cbi5teC10ZXh0YXJlYSAuZm9ybS1jb250cm9sLXN0YXRpYyB7XG4gICAgd2hpdGUtc3BhY2U6IHByZS1saW5lO1xufVxuIiwiLm14LXVuZGVybGF5IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xufVxuIiwiLm14LWltYWdlem9vbSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5O1xufVxuLm14LWltYWdlem9vbS13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLm14LWltYWdlem9vbS1pbWFnZSB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xufVxuIiwiLm14LWRyb3Bkb3duIGxpIHtcbiAgICBwYWRkaW5nOiAzcHggMjBweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZHJvcGRvd24gbGFiZWwge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY29sb3I6ICMzMzM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZHJvcGRvd24gaW5wdXQge1xuICAgIG1hcmdpbjogMDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1kcm9wZG93biAuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNmOGY4Zjg7XG59XG4ubXgtc2VsZWN0Ym94IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LXNlbGVjdGJveC1jYXJldC13cmFwcGVyIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuIiwiLm14LWRlbW91c2Vyc3dpdGNoZXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMzYwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDIwMDAwO1xuICAgIGJveC1zaGFkb3c6IC0xcHggMCA1cHggcmdiYSgyOCw1OSw4NiwuMik7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlci1jb250ZW50IHtcbiAgICBwYWRkaW5nOiA4MHB4IDQwcHggMjBweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgY29sb3I6ICMzODdlYTI7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU9nQUFBQmdDQVlBQUFBWFNqN05BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQXlScFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TXkxak1ERXhJRFkyTGpFME5UWTJNU3dnTWpBeE1pOHdNaTh3TmkweE5EbzFOam95TnlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVOVE5pQW9UV0ZqYVc1MGIzTm9LU0lnZUcxd1RVMDZTVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG8wTXprd09UUkVNRFEyTkVZeE1VVTBRVFE0TVVJNU5UTkdNVVEzUXpFNU55SWdlRzF3VFUwNlJHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEbzBNemt3T1RSRU1UUTJORVl4TVVVMFFUUTRNVUk1TlROR01VUTNRekU1TnlJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qYzBSRU15TVVaR05EWTBRekV4UlRSQk5EZ3hRamsxTTBZeFJEZERNVGszSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pjMFJFTXlNakF3TkRZMFF6RXhSVFJCTkRneFFqazFNMFl4UkRkRE1UazNJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrZzF0Umx3QUFFRkZKUkVGVWVOcnNuWWwzVmNVZHgyZHU4ckpESUpDd0NnalZhclZvc1ZYYzZqbldubnBJUWxKV2w2T0NyUFlma2gxY2l1d2xMRm81dFQzbFZKUlZFVVVFUlFRSlM0Q1FRRWpDUzk3MCs1Mlo5M0lUREd1Uzk4ajcvVGp6N3IyL2U5OTlaTzU4N205K003K1owY05YYnNxS2FUTmVLVlZvbEttT0tiWDM5RXNWS2wxRVY2MklLSzN3QjV1SGNZZy8zM3lDNHgybS9FMmpSRVNTTE1HSmw4dXZZcnNIaWR1aFNBK21Vd2FZaWhsUk0zSEdPdXp1Wlg0Zy9SbHBpdDY4TkZ1S2gwalNEWWd4emxBTVc3V3BDQmIwNlJqTmlEWUh6azZ2UEpaMm1iRnArYStKTEN4b0hyYm5vVnB0eW1lZGxXSWlrblJBS1VOWFZRMERvT01BcUlKMlg4MzB5cFBwQitteVFsL2xIWTNES0xaYlRmbnNMNldvaUNRZFVNcmdWVlZqQWVoSWFHTXhaWGFlbi83WGMybVpNWnVYVm1MenFGSTJmL1lCMm85TTJleW9GQm1ScEFKS0tWbTk4UkZvUndCUUZzZ2RnTFErVFNFZEIwQkxzWnNCUUd1d3Y4NlV6VGtqeFVZa3FZQlNpbGR2SEFkQWgyRzNDUloxUisyMFNRM3BDZW1TZ2RpVUFkQlJBTFFGKzl1UWRnTlVhZVVWU1I2Z2xBR3IvL0U0Tm9NQWFBTjgweDExMHlZMXBXMUdiVmxDdi9SMy92QVE5amVac3JsWHBBaUpkS2NFTnpqUDdoZFU3VlErMGhOOTFxeVBwR3RHd2Yrc3dvYmRNWmVRSGtENm05Nnk2SDRwUWlKSnM2RGVpa1pnUVIrSEJTMUNsYmZXYVBQWjVhbFRXdFBYa2k0dXNGVmVaUjV3Q3ZhZm1vOU42YnlyVXB4RWVoeFFTdjgxRzNJQUtDQTFoUUQwSFBaM1hVbGpTQjJvaTU3QjVua0FpbHFJdVlEOWpZRDB1QlFwa1I0SGxGSzRaa01lQUIwUFFQTUI2TmxXWlhZM1Q1MGFTM05JaXdIb2l3QjBqSEw5TWJ1UVBoRnJLdExqZ0ZMZ2crWUQwUEdnTWcrQW5zRjJUelROSWJXWnVIVWhxcnpxOS82dzFqWWdsYzcvVVlxWFNJOENTaWxZdTQ0VzlDa0F5bXJ2S2ZpbmUxdW5URE1DNmNJaDJQd0o2VmNBbFBteEY5YjFYMmJDL0NZcFppSTlCaWdsRDVDMnVyamRiQUJhRGRVK2dUUnNUWTJ6cHRxMitQNFRrSDRqT1NQU1k0QlNzdGV1TFFDZ1R3UFFMQnhXd3ovZFo2Wk1GMGd0cEF0S3NIa0JnTWE3WVk0QTJnL05oTGRxSlhkRWVnUlFTb1NRYXNQV3pBZ0FQVVZMQ2toamtxMCtjejljOEFRMlR5TDFVeTVzY2p2U0RvRGFLcmtqMHUyQVVqTFdyV0cvNEZNQWxPTW56K0NPZTh6a2x3VFNOa2laTHhNQTZDTmV4UzZaandEcEVja2RrVzRIMUVPYUQwQ2Z3bTRPN3NqeGs0UlVyRVE3VU4rK2p5OHlwSHU5Nmp1a2p3SHFCY2tka1c0RjFONW8zV3FHQTQ3SEhmT1VEUTgwdTgza2x3WFNhMEY5RnBzL0lQVlZkcnlwK3N4WGU2VzFWNlQ3QUUxQXFnMzlybndmWGJNTGtNb1l5bXNoemNYbUw4cU9ON1hDb1B2L0lPMEZxT0llaUhRUG9QYUc2MWZsT1F0aGFDSHE4QXM3emFSWG1pV3JmeEhVVWI3YUcyL3Q1Y0NFYmVLZmluUWJvQjdTSE44WDJCKy93SEdrbndOU0daclZPYWkveGVZeHBGRmU5Wk5peU9DRXR5UzJWd0R0bnE1THZmNkRMRnZvdE9HQVovaFhCcEMrZWtteS9JYitLV0V0OGFyRFNQOEdxS2NsZHdUUTdvQTBFNy9BUWM2RGZUL2dia0I2WHJMOXVwQnE1VUlHQ1dxaGNrSDRqRVQ2TDBDdGtSd1NRTHYrUnphczVOdytuRDRscG9MWUY2Ynl0V3JKK2h1Q0NqZEJ2YURhZ3ZBOXFCcWd6aGRRQmRDdWh2VHY3S2dmQVVENWd3Y0I2VkhKL3BzQ2xZMXR6M2tmMVQ0eWIxRzNBMVNaczFjQTdWSkl4d0xRa2Q0Z0hIV2d2aTd4dTdjRXFuNHNaRkhwbzM0S1VLVXhTUUR0b2gvYytONFFWMjJ6djN0S2FmV0ZxWGhkQWhwdUd0UUZCUFdQb2FvdnM1S0EvZy9waUNtZEx5ODhBZlNPSVdYd09BTWFzZ0RvUmV6dk1oVnZTRi9wcllIS1lJZW5rZTREb0lPOG1sWGVuVGo3bFNtZEp3RWlBdWlkUVBwdXZ2V3JORnNxRGNQY2RnTFNlbmtrdDVHWFd4YzhZMEZWeXJzUG1uM09YQXhxRjBDVnJpMEI5TFlocFFYbDhncTBBQzJLWTBvclpzak03YmNQS2h2aXhtSnZqRmZSZFRpbzJMMGxFNW9Kb0xmOW42aDZoMzJsdy8xVUlkOEMwaC9rMGR3SnFBdHBTVG5wK0VNaExhdS91NUVPbU5LNUVwZ3ZnTjR5cEhqekcxZEYwK29rOXZlYmlUT2w4ZWpPUUdXZ0EwZk9qTURSQ0srK0NwLzFBTFpmbXJLNUp5U1hCTkJiZ0hURllNVVJIbHBGQUdpZHJacE5uTmtvajZrcllGM0V5Q1NtKzFYaWtXdXVYTWVsRmZlYnNqbmlxd3FnTndWcEhnQmw1RkYvKzdaWFpvK1orS2FFQjNZZHFNVUE5RkZ2VmUveGFnNXhvMXZ4RlhTSFpKbEZBZlQ2LzZsTkt6SUJKZ3ZSRU8rWEhnU2tFbm5VMWZtOFpUR0h1VDNTd1ZkbEZmZ1FmVldrbzZaOHRyZ1pBbWhub0M1SDRURWp2RjlhYmYzUzhsa3Q4dGk2SEZUT216UlcyVVdoOUppMktqQUhrdXR2bFdzSlBvYThGMWdGMEk2UUxodGlDNDlXV1FDMHdmcWw1YlBFWCtvMldKZjBBNkQwVlVjck8zK1NqcDlxeFA1M09FZGdmMENOUmw2VUFtZ0MwbHlVRTFyVFltWDc5c3dCVkwya0JiSzc4MzN6RXVTMy9vMXlBOGtkcks2NHdFZlZkRGtZQzN6WVRKd3BMOHgwQnJTdHdDeWxYM3FQTHlYSFVWNitObVhpSS9WUTNoZmg4MEZrL1JoblhST1dsUS9qRkk2UFlJOE5UVCtiaWhreXIxSTZBdW9MQ254U3d5cFlnREp5R2Z0N1Rka2NDUkhzNlJxTjBteGdZdklOVEFucjJvejlZOHExQ2g4MUZXK2NreHhMSTBCOTFhdkErNlVEVUNyNHR2NEdrQjZUeDVrTVdKZHJWd1cyalV0czBCc1JzcTY4NGhMMFA5a2Fqd08zeGxTK0ppTnVlak9nb1FZTnh2SEcrL0k0Ync4NzNHVnR6bVErazZvVnVUNFdlTFNIZFdBb01JSWZET1Evb1dMQno2d09RMWN0c3o3MlVrQWRwSXM1bFFvYk1qaEZTQ09BWlFpYlZLdFNCdGgzKzNyTE9zcUhHN29KMFdKQi9BcldnR284cktkd0xWKzBaMlErNVY0Q3FJYzBSN2wrdkVIZUVUcUtsL1VoVXpwWEdwQlM3Vmx0ZkkvRERJY0QwT0hLTnZqcFVhR3pjVDgyNXNNUUFhcytBeDBEL1dzQ3BldlNiWm5MWGdGb0NOUnd3RDJiL3I4QXBIV0NSUW8vc3cwcmFVcUxMYlJLRHdXTWpNY2UxdWJISnFCbHErQlZEMm9OZEJmd3hRc1pTbk1GZ3d0WHBrNXBFa0R2Q2tnWGNRVEhRNjRCaVc5aXc3NjY3MDNwUEdtWXVGdWU0Zm9QTXF6dmFxZHIxU1dBa2RYaVlvRFp6NE5xb1NYWkdSN2tER01IcWRkQ1YwOUxpLzJMZ2RGczNlZHhQYTY2Y25aNjVWMFJYUEhraXUyWitMdnp0VkY5ZWgyZ2lZZThkWkdiUmRDOWZpOHFOaUNWenBQdW1MdFlNdGF0eWZLZ011Qy9DREFXQWRBaXhhM1JPUTVlRHpDM1JzY3RiOXdlTjBGM09YQWhqQTJFRnNlMHZFM2FUcTZ1bTNDdVVSdE4vemVLL1didGZPU3IwTVZDOTJvKzlPcUw3ZnA2SDM1L1c0RC9VN1pPL0xvT3NNMENaTmhxNkRsQ1MwZXd6Y1YxT2REeC81dURxN0d2OHFETGc0N1Yvd0p0MjFPMG5iK3gxd0xxSVVYVnlUeWc3QUs2ZHNRR1Y3cUdOWjB2SGVtOVRQcXNXYy9DM1E5UUZhTFFzeFpWQ1BnNHdWcGZIUGZWZGtFdmxVRm9BMTkxMWlHSTQ1K0JyVmJHd1ZZSnRQVzFzRnRkK0Y2MEJTRkE3ZFpDMW5hWDBIVWQ3aGZTYVJzdGh4ZUlVZlg2K2NXZjI3UEdmeG9kUDhKV3U3MlkxYnR6aVd2dE9XTkxmZnc2NC8vRmRIdy9acjhUaTkveG11KzA3Y2V2aVlYMEhmZGpmcjhWKzYzdDlQRy9NUDZ5TVNyeFZ6TmxYL2JXMU9wb1JiOVVMYmwxMTE3YnlYSGlDWVpmWnAzcE81N3JvTHZ6MTg2MUtuTVQxNFIxNWdiWG1jN3VwYS96M2M3T2RhSnZhOFc5d2JYdGZGQjFuU3F1dWdrTG1nTmRRVUNMcFRRdFZXN2dMRyt1dDFxd2FMQnVSc1BhcVlqZFY1cGZoU1hVR2FGNzBaSUhIUUJsOGJ3YUFyUlZXOHRMQkRRdE5NTWpvOVpTRzFwc1o3bHhkYU5tNzROUnNPaWFzZWFYdlRXM3hUa3pMVjZ2elFYN0FTbG5zMmZrQzZ0RXo2ck14dStSQjBkVU5FZGFldE5IbW55NmF5UkltMGNUemF0QitsVFppQmI3a3VNc2VNK3BTRk94bEZzUkFUUjFRTjJQengzS2RZNjdWY0V6bThhcHpPWnNLUTRpS2RlTzBwc2JpVzc0eDMrNGdGVmVocVRSNTRDUFlEalc4YmlaOEpaMHlZZ0lvQ2tDS1dkbzU0aU1JYjQxb2hicGEwQjZVWXFIaUFDYU9xQnlYbDVhMC9pYW5Cd1EvaTFBbGVCN0VRRTBkVUI5bXpHOUkrTWVLOUozaXZQeFNMVlhSQUJOR1VnNTN2UkJaVVBOckxEdjlLQ3NjQzBpZ0tZV3FFT1ZuWXZIOXAxU3pucFFaUTRlRVFFMGhVQmxueWtqa2ZLOGY4b1pBZzREVkJsb0xDS0FwZ2lrakxwNlNDVkNCcmthbS9vZTZVZUFLbE5RaWdpZ0tRSXFBN0RaZnpyRXEyaEZqOUNxQWxRSndoY1JRRk1FMUJMdm41WjRGY2Nqc3NYM3BMVDRpZ2lncVFNcUc1TFlMVFBRcXk1NVVFOExxQ0lDYU9xQVN0K1U4K3dNOEtwNlgvVTlKYUNLQ0tDcEErcG83NThXdFZsVWZkaUJPbDh5VzBRQVRSRlE2WjhPZGFEcWVOV1hyYjdWQUZVYWswUUUwTlFCVlE4SlZYMjVZdmdQeXFqanBuUytEQllYRVVCVEE5UUZJNzFGZFkxSmhxdUhxeCtaQUtwTTBpd2lnS1lJcUlSMEJBQ056K1JBSzNxQ3kvbVowbmtOa2tNaUFtZ3FaUHpXQlFSMGxFb0U1TnNaenhpTXozVTNhd0NyWkpLSUFKb0NvREl5NlY2L2JrbGNMbmxRVHdKVThWTUZVSkhrZzdxUXNiN3NvcUZsalhmUlJIMzE5eWRUT3ZleTVKSUFLcElhc0RMZ1liaUhWZmx1bXZOSXg3ajZseW1iSzkwMEFxaElDb0JhcU5xVzdYTmliSEErcDJNNUFWREZxZ3FnSXNrSGRaRmZ4Vm9OQnFBRFEyZHFQYXpWcG15T2ROVUlvQ0pKZjJCYkZ0RS92Y2Y1cWJyQXE5bVFkTnI3cStkTTJXeDVxQUtvU1BKaFhVdy9sZjJxZzBKYUxtMVFEVXQ3MHBUUGxxbERCVkNSRkFBMTExdFZWSC8xQU8rclVoajRjQkk2d0RwTC9GVUJWQ1Q1c0M3aFVvdkR1SDZtY3NzdXFsQ3cvaWttd0NycnBBcWdJa2wvdUp1WERGUnVPWG5DV2hBNjAyQmhOWW9ydnRXWmlXOUtaZ21nSXNtRmRTbGg5ZU5VN2NLMjhXb3cxNkxrZEtKbkZFTU1KODZVeUNVQlZDUzVzQzRyc3JBYU93U3VNTFNJTGdNZ3p1SDRETTZkTlJVenJraHVDYUFpeVN3QW01YWg2cXZaQ2x5c3dwRkxiWTFNTlRobUVQOTVVL0dHOUxVS29DTEpnM1U1NDRFQnF5N3gxalUzQWF4RDlxSUg5anlPYWszbDYxSWRGa0JGa2xZNHFsYjBkVmJWZHQyRSsxcUphOHdCcXhramZJSEpWTDRtRTNnTG9DTEpnZlVkcnNaTzMzV0FiUlZPaEJ3bS9GY1VwS0FlMk5aNlM0dXR2bXdtdlNLWko0Q0s5SGpCMmZndWdlM25yU3ZCTFFHZ3JwbXA3YXFvQTlWYTJqb2dYR2Ntdjl3b3VTZUFpdlE0c08vQmxBWjlBV2gvSFBiMzhCWjBxQlpUb2haV1oyWHJzVjhQZllPWk1sMkcwQW1nSWoxYXVEYXNqSVJnN1FjUTZkUG1ocXJGWVgvMkNtR0ZEV1pJNHFWQTZVc0VOenAxYWt3QUZSSHBxUUszL29Nc2ZIS2NLMU5mR3pSaFZKODRySUcvTG5EZ21zQUZValJrdUxWdkdqS01qWUpxZ0w2eGJ0cmtxQUFxSXRMZGhYRGRhbktaajcwK2dRdEp4RmIzSWJpQkJ6ZkRYd3RBUGNCVzN4SzRlWWFiQXFPNWJmUkFOMnUzNmx3ejlNMm5YNnE0SzYzdytCWGJBd0ZVSkdVbHNuYXRCbkE1QUM0L3d3S3M4Z0VvdDNtQnF5cEhFaGEzUGJpSlNqVDFnWnZiQ2RCcXprVWNoWTdIVVczWGVOVlJmNzVGRzgxdUl1T09OZThZWmZVYjMydnRjTytXUTYrKzJBNmNoOS9meHAvTTFDWitsZjNNME81ckVmd21WUkZ0VCtsTWZHVGFZNlBwQm1UaW9peXY1M0dXTWpwYjIvTUNxTWhkS29Wck5tUTZVRlV1QU1peFd3ZHVGZ3AzTm81em9NOEtQRnR4Yk9NdzZ3N1ZhdjFMa0p2UTkwSjYzY2tMb1FPZzdWNFV2NlR2N0Q0QWxQc3hBVlNrMTh2UVZWVzBTckJJT3N0YnM0aTNaaEZ2aGVQV2pEWHB3QjNyd0ZvNW83QzErakJFc0pUV0lvWjF4bG5oZG9DMmF0ZngxSUxmdEZ0M2JQVnhxMjJ0dWJmYVVhKy9Da0NiZDg3NFkvVC9BZ3dBMk1pN0hkQWUraWtBQUFBQVNVVk9SSzVDWUlJPSkgdG9wIHJpZ2h0IG5vLXJlcGVhdCAjMWIzMTQ5O1xuICAgIC8qIGJhY2tncm91bmQtYXR0YWNoZW1lbnQgbG9jYWwgaXMgbm90IHN1cHBvcnRlZCBvbiBJRThcbiAgICAgKiB3aGVuIHRoaXMgaXMgcGFydCBvZiBiYWNrZ3JvdW5kIHRoZSBjb21wbGV0ZSBiYWNrZ3JvdW5kIGlzIGlnbm9yZWQgKi9cbiAgICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGxvY2FsO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXIgdWwge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luLXRvcDogMjVweDtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM0OTYwNzY7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgY29sb3I6ICMzODdlYTI7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM0OTYwNzY7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBoMiB7XG4gICAgbWFyZ2luOiAyMHB4IDAgNXB4O1xuICAgIGNvbG9yOiAjNWJjNGZlO1xuICAgIGZvbnQtc2l6ZTogMjhweDtcbn1cbi5teC1kZW1vdXNlcnN3aXRjaGVyIGgzIHtcbiAgICBtYXJnaW46IDAgMCAycHg7XG4gICAgY29sb3I6ICM1YmM0ZmU7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXIgLmFjdGl2ZSBoMyB7XG4gICAgY29sb3I6ICMxMWVmZGI7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXItdG9nZ2xlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAyNSU7XG4gICAgbGVmdDogLTM1cHg7XG4gICAgd2lkdGg6IDM1cHg7XG4gICAgaGVpZ2h0OiAzOHB4O1xuICAgIG1hcmdpbi10b3A6IC00MHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4O1xuICAgIGJveC1zaGFkb3c6IC0xcHggMCA1cHggcmdiYSgyOCw1OSw4NiwuMik7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQklBQUFBU0NBWUFBQUJXem81WEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeVJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNeTFqTURFeElEWTJMakUwTlRZMk1Td2dNakF4TWk4d01pOHdOaTB4TkRvMU5qb3lOeUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTmlBb1RXRmphVzUwYjNOb0tTSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEbzNORVJETWpGR1JEUTJORU14TVVVMFFUUTRNVUk1TlROR01VUTNRekU1TnlJZ2VHMXdUVTA2Ukc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvM05FUkRNakZHUlRRMk5FTXhNVVUwUVRRNE1VSTVOVE5HTVVRM1F6RTVOeUkrSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pjMFJFTXlNVVpDTkRZMFF6RXhSVFJCTkRneFFqazFNMFl4UkRkRE1UazNJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPamMwUkVNeU1VWkRORFkwUXpFeFJUUkJORGd4UWprMU0wWXhSRGRETVRrM0lpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCsxWm92TkFBQUFXZEpSRUZVZU5xTTFNMHJSRkVZeC9FN1k1cUlRcE9VYklpeW1RV3lzQmd2SlZKSzJWZ3J5WlF0S1NVTFplbFBzQjBMWmFOWmpKVU5LMUZza0pxVXZDUzNOQXNaYzN6UDlOemlPT2ZlZWVwVGM4L2M4K3ZjOHhaVFNubU9ha0VHS2R6Z0RCWFh5NTRPTXNTd2pwTDZXOWNZc3J4ZlpXdmNVdTd5MFZkTFVDYytWWGdkMm9MaXhwZk9JT21GMTdUdEhUT296WXV1cEN4QWFOQjlEVUVmZURVYkU4YnpFWHhaZXJQMDBsOGhoM0xVaUhUSU1yNk45ajJrc1lvaWh2LzFkZXlMU1Z6S0ttMWpFVytXZlpWMkxmOGdza2pJY3djV3BPTSsrcEhDRlBMb3NnV3RvQ3lkN2pDUE9qemhHSEhMeURQWTFhY2hhSmhEeFJqNnJCd0pYVXVvTjBJRzhJSXY3T2lHQmp4YWR2QUlUdVQzcmV4NmMwU2JLQVNmbG5VY0JUM0pUVGhBanlXa0dVVnNCRUVGUjVDZXJ6WHBOSWFjckZJckpuQ0JCM211QnZraEIxVFAyN2hNL0x2eDN6bDZneEhxdTZjNzRraVU4SXhHaktKZExyclQzeGZkandBREFKYU14UDJidkQyQkFBQUFBRWxGVGtTdVFtQ0MpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0ICMxYjMxNDk7XG59XG4iLCIvKiBtYXN0ZXIgZGV0YWlscyBzY3JlZW4gZm9yIG1vYmlsZSAqL1xuLm14LW1hc3Rlci1kZXRhaWwtc2NyZWVuIHtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLXNjcmVlbiAubXgtbWFzdGVyLWRldGFpbC1kZXRhaWxzIHtcbiAgICBwYWRkaW5nOiAxNXB4O1xufVxuXG4ubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNztcbn1cblxuLm14LW1hc3Rlci1kZXRhaWwtc2NyZWVuLWhlYWRlci1jYXB0aW9uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxN3B4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLXNjcmVlbi1oZWFkZXItY2xvc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDUwcHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiAjMDA3YWZmO1xufVxuXG5ib2R5W2Rpcj1cInJ0bFwiXSAubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyLWNsb3NlIHtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0OiBhdXRvO1xufVxuXG4ubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyLWNsb3NlOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFwyMDM5XCI7XG4gICAgZm9udC1zaXplOiA1MnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xufVxuXG4vKiBjbGFzc2VzIGZvciBjb250ZW50IHBhZ2UgKi9cbi5teC1tYXN0ZXItZGV0YWlsLWNvbnRlbnQtZml4IHtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLWNvbnRlbnQtaGlkZGVuIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMCUpO1xufVxuXG5ib2R5W2Rpcj1cInJ0bFwiXSAubXgtbWFzdGVyLWRldGFpbC1jb250ZW50LWhpZGRlbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwMCUpO1xufSIsIi5yZXBvcnRpbmdSZXBvcnQge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbiIsIi5yZXBvcnRpbmdSZXBvcnRQYXJhbWV0ZXIgdGgge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuIiwiLnJlcG9ydGluZ0RhdGVSYW5nZSB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbn1cbi5yZXBvcnRpbmdEYXRlUmFuZ2UgdGgge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xufVxuLnJlcG9ydGluZ0RhdGVSYW5nZSB0ZCB7XG4gICAgcGFkZGluZzogNXB4O1xufVxuIiwiLm14LXJlcG9ydG1hdHJpeCB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0aCwgLm14LXJlcG9ydG1hdHJpeCB0ZCB7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzO1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZCB7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0Ym9keSB0cjpudGgtY2hpbGQoMm4rMSkgdGQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG59XG5cbi5teC1yZXBvcnRtYXRyaXggdGJvZHkgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDE2cHg7XG4gICAgbWF4LWhlaWdodDogMTZweDtcbn1cbiIsIi8qIFdBUk5JTkc6IElFOSBsaW1pdHMgbmVzdGVkIGltcG9ydHMgdG8gdGhyZWUgbGV2ZWxzIGRlZXA6IGh0dHA6Ly9qb3JnZWFsYmFsYWRlam8uY29tLzIwMTEvMDUvMjgvaW50ZXJuZXQtZXhwbG9yZXItbGltaXRzLW5lc3RlZC1pbXBvcnQtY3NzLXN0YXRlbWVudHMgKi9cblxuLyogZGlqaXQgYmFzZSAqL1xuXG4vKiBtZW5kaXggYmFzZSAqL1xuXG4vKiB3aWRnZXRzICovXG5cbi8qIHJlcG9ydGluZyAqL1xuIl0sInNvdXJjZVJvb3QiOiIifQ==*/\n","//== Gray Shades\n//## Different gray shades to be used for our variables and components\n$gray-darker: #222222;\n$gray-dark: #333333;\n$gray: #555555;\n$gray-light: #888888;\n$gray-primary: #D7D7D7;\n$gray-lighter: #EEEEEE;\n\n//== Step 1: Brand Colors\n$brand-default: #DDDDDD;\n$brand-primary: #0595DB;\n$brand-inverse: #252C36;\n$brand-info: #48B0F7;\n$brand-success: #76CA02;\n$brand-warning: #F99B1D;\n$brand-danger: #ED1C24;\n\n// Used for other variables\n$default-border-color: $gray-primary;\n\n//== Step 3: Typography\n$font-family-import: \"https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700\";\n@if $font-family-import != false {\n // Only import, if the import is set\n @import url($font-family-import);\n}\n$font-family-base: \"Open Sans\", sans-serif;\n$font-base-size: 14px;\n$font-base-color: #555555;\n$link-color: $brand-primary;\n$font-size-h1: 31px;\n$font-size-h2: 26px;\n$font-size-h3: 24px;\n$font-size-h4: 18px;\n$font-color-detail: $gray-light;\n$font-color-headers: #17347B;\n\n//== Step 2: UI Customization\n\n// Topbar\n$topbar-bg: #FFFFFF;\n$navtopbar-border-color: $default-border-color;\n$topbar-border-color: $navtopbar-border-color;\n$topbar-minimalheight: 60px;\n$navtopbar-color: $font-base-color;\n$navbar-brand-name: $default-border-color;\n$brand-logo: false;\n$brand-logo-height: 30px;\n$brand-logo-width: 30px;\n\n// Sidebar\n$sidebar-bg: $brand-inverse;\n$navsidebar-color: #FFFFFF;\n$navsidebar-color-hover: $navsidebar-color;\n\n// Backgrounds\n$bg-color: #FFFFFF;\n$bg-color-secondary: #F5F8FD;\n\n// == Old variables used in theme customizer to the new lib variables\n$font-size-default: $font-base-size;\n$font-color-default: $font-base-color;\n$border-color-default: $default-border-color;\n$font-color-header:\t\t\t\t $font-color-headers;\n\n\n//== Settings\n//## Enable or disable your desired framework features\n// Use of !important\n$important-flex: true; // ./base/flex.scss\n$important-spacing: true; // ./base/spacing.scss\n$important-helpers: true; // ./helpers/helperclasses.scss\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n//\n// ██████╗ █████╗ ███████╗██╗ ██████╗\n// ██╔══██╗██╔══██╗██╔════╝██║██╔════╝\n// ██████╔╝███████║███████╗██║██║\n// ██╔══██╗██╔══██║╚════██║██║██║\n// ██████╔╝██║ ██║███████║██║╚██████╗\n// ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝\n//\n\n\n//== Gray Shades\n//## Different gray shades to be used for our variables and components\n$gray-darker: #222 !default;\n$gray-dark: #333 !default;\n$gray: #555 !default;\n$gray-light: #888 !default;\n$gray-primary: #d7d7d7 !default;\n$gray-lighter: #eee !default;\n\n\n//== Step 1: Brand Colors\n$brand-default: #DDDDDD !default;\n$brand-primary: #0595DB !default;\n$brand-inverse: #252C36 !default;\n$brand-info: #48B0F7 !default;\n$brand-success: #76CA02 !default;\n$brand-warning: #f99b1d !default;\n$brand-danger: #ed1c24 !default;\n\n$brand-logo:\t\t\t\t\t\t\tfalse !default;\n$brand-logo-height:\t\t\t\t\t\t26px !default;\n$brand-logo-width:\t\t\t\t\t\t26px !default; // Only used for CSS brand logo\n\n\n\n\n\n//== Step 2: UI Customization\n\n// Default Font Size & Color\n$font-size-default: 14px !default;\n$font-color-default: #555 !default;\n\n// Global Border Color\n$border-color-default: $gray-primary !default;\n$border-radius-default: 4px !default;\n\n// Topbar\n$topbar-bg: #FFF !default;\n$topbar-minimalheight: 60px !default;\n$topbar-border-color: $border-color-default !default;\n\n// Topbar mobile\n$m-header-height: \t45px !default;\n$m-header-bg: $topbar-bg !default;\n$m-header-color: #555 !default;\n$m-header-title-size: 17px !default;\n\n\n// Sidebar\n$sidebar-bg: $brand-inverse !default;\n\n// Navbar Brand Name / For your company, product, or project name (used in layouts/base/)\n$navbar-brand-name: $font-color-default !default;\n\n// Background Colors\n$bg-color: #FFF !default;\n$bg-color-secondary: #F5F8FD !default; // Background color that is used for specific page templates background\n\n// Default Link Color\n$link-color: $brand-primary !default;\n$link-hover-color: darken($link-color, 15%) !default;\n\n\n\n\n\n//\n// █████╗ ██████╗ ██╗ ██╗ █████╗ ███╗ ██╗ ██████╗███████╗██████╗\n// ██╔══██╗██╔══██╗██║ ██║██╔══██╗████╗ ██║██╔════╝██╔════╝██╔══██╗\n// ███████║██║ ██║██║ ██║███████║██╔██╗ ██║██║ █████╗ ██║ ██║\n// ██╔══██║██║ ██║╚██╗ ██╔╝██╔══██║██║╚██╗██║██║ ██╔══╝ ██║ ██║\n// ██║ ██║██████╔╝ ╚████╔╝ ██║ ██║██║ ╚████║╚██████╗███████╗██████╔╝\n// ╚═╝ ╚═╝╚═════╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝\n//\n\n\n//== Typography\n//## Change your font family, weight, line-height, headings and more (used in components/typography)\n\n// Font Family Import (Used for google font plugin in theme creater https://ux.mendix.com/theme-creator.html)\n$font-family-import: \"https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700\" !default;\n@if $font-family-import != false {\n // Only import, if the import is set\n @import url($font-family-import);\n}\n\n// Font Family / False = fallback from Bootstrap (Helvetica Neue)\n$font-family-base: 'Open Sans', sans-serif !default;\n\n// Font Sizes\n$font-size-large: 16px !default;\n$font-size-small: 12px !default;\n\n// Font Weights\n$font-weight-light: 100 !default;\n$font-weight-normal: normal !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: bold !default;\n\n// Font Size Headers\n$font-size-h1: 31px !default;\n$font-size-h2: 26px !default;\n$font-size-h3: 24px !default;\n$font-size-h4: 18px !default;\n$font-size-h5: $font-size-default !default;\n$font-size-h6: 12px !default;\n\n// Font Weight Headers\n$font-weight-header: $font-weight-normal !default;\n\n// Line Height\n$line-height-base: 1.428571429 !default;\n\n// Spacing\n$font-header-margin:\t\t\t\t\t15px 0 30px 0 !default;\n\n// Text Colors\n$font-color-header:\t\t\t\t #17347B !default;\n$font-color-detail: $gray-light !default;\n\n\n\n\n\n//== Navigation\n//## Used in components/navigation\n\n// Default Navigation styling\n$navigation-item-height: 60px !default;\n$navigation-item-padding: 5px 15px !default;\n\n$navigation-font-size: $font-size-default !default;\n$navigation-sub-font-size: $font-size-small !default;\n$navigation-glyph-size: 20px !default; // For glyphicons that you can select in the Mendix Modeler\n\n$navigation-bg: $brand-inverse !default;\n$navigation-bg-hover: lighten($navigation-bg, 4) !default;\n$navigation-bg-active: lighten($navigation-bg, 8) !default;\n$navigation-color: #FFF !default;\n$navigation-color-hover: #FFF !default;\n$navigation-color-active: #FFF !default;\n\n$navigation-sub-bg: darken($navigation-bg, 4) !default;\n$navigation-sub-bg-hover: $navigation-sub-bg !default;\n$navigation-sub-bg-active: $navigation-sub-bg !default;\n$navigation-sub-color: #AAA !default;\n$navigation-sub-color-hover: $brand-primary !default;\n$navigation-sub-color-active: $brand-primary !default;\n\n$navigation-border-color: $navigation-bg-hover !default;\n\n// Navigation Sidebar\n$navsidebar-font-size: $font-size-default !default;\n$navsidebar-sub-font-size: $font-size-small !default;\n$navsidebar-glyph-size: 20px !default; // For glyphicons that you can select in the Mendix Modeler\n\n$navsidebar-bg: $sidebar-bg !default;\n$navsidebar-bg-hover: lighten($navsidebar-bg, 4) !default;\n$navsidebar-bg-active: lighten($navsidebar-bg, 8) !default;\n$navsidebar-color: #FFF !default;\n$navsidebar-color-hover: #FFF !default;\n$navsidebar-color-active: #FFF !default;\n\n$navsidebar-sub-bg: darken($navsidebar-bg, 4) !default;\n$navsidebar-sub-bg-hover: $navsidebar-sub-bg !default;\n$navsidebar-sub-bg-active: $navsidebar-sub-bg !default;\n$navsidebar-sub-color: #AAA !default;\n$navsidebar-sub-color-hover: $brand-primary !default;\n$navsidebar-sub-color-active: $brand-primary !default;\n\n$navsidebar-border-color: $navsidebar-bg-hover !default;\n\n// Navigation topbar\n$navtopbar-font-size: $font-size-default !default;\n$navtopbar-sub-font-size: $font-size-small !default;\n$navtopbar-glyph-size: 1.2em !default; // For glyphicons that you can select in the Mendix Modeler\n\n$navtopbar-bg: $topbar-bg !default;\n$navtopbar-bg-hover: darken($navtopbar-bg, 4) !default;\n$navtopbar-bg-active: darken($navtopbar-bg, 8) !default;\n$navtopbar-color: $font-color-default !default;\n$navtopbar-color-hover: $navtopbar-color !default;\n$navtopbar-color-active: $navtopbar-color !default;\n\n$navtopbar-sub-bg: lighten($navtopbar-bg, 4) !default;\n$navtopbar-sub-bg-hover: $navtopbar-sub-bg !default;\n$navtopbar-sub-bg-active: $navtopbar-sub-bg !default;\n$navtopbar-sub-color: #AAA !default;\n$navtopbar-sub-color-hover: $brand-primary !default;\n$navtopbar-sub-color-active: $brand-primary !default;\n\n//## Used in layouts/base\n$navtopbar-border-color: $topbar-border-color !default;\n\n\n\n\n//== Form\n//## Used in components/inputs\n\n// Values that can be used default | lined\n$form-input-style: default !default;\n\n// Form Label\n$form-label-color: #666 !default;\n$form-label-size: $font-size-default !default;\n$form-label-weight: $font-weight-semibold !default;\n$form-label-gutter: 8px !default;\n\n// Form Input dimensions\n$form-input-height: auto !default;\n$form-input-padding-y: 8px !default;\n$form-input-padding-x: 10px !default;\n$form-input-font-size: $form-label-size !default;\n$form-input-line-height: $line-height-base !default;\n$form-input-border-radius: $border-radius-default !default;\n\n// Form Input styling\n$form-input-bg: #FFF !default;\n$form-input-bg-focus: #FFF !default;\n$form-input-bg-hover: $gray-primary !default;\n$form-input-bg-disabled: $gray-lighter !default;\n$form-input-color: $font-color-default !default;\n$form-input-focus-color: $form-input-color !default;\n$form-input-disabled-color: $form-input-color !default;\n$form-input-placeholder-color: $gray-light !default;\n$form-input-border-color: $border-color-default !default;\n$form-input-border-focus-color: $brand-primary !default;\n\n// Form Input Static styling\n$form-input-static-border-color:\t\t#F0F0EE !default;\n\n// Form Group\n$form-group-margin-bottom: 15px !default;\n$form-group-gutter: 15px !default;\n\n\n\n\n//== Buttons\n//## Define background-color, border-color and text. Used in components/buttons\n\n// Default button style\n$btn-font-size: 14px !default;\n$btn-bordered: false !default; // Default value false, set to true if you want this effect\n$btn-border-radius: $border-radius-default !default;\n\n// Button Background Color\n$btn-default-bg: #FFF !default;\n$btn-inverse-bg: $brand-inverse !default;\n$btn-primary-bg: $brand-primary !default;\n$btn-info-bg: $brand-info !default;\n$btn-success-bg: $brand-success !default;\n$btn-warning-bg: $brand-warning !default;\n$btn-danger-bg: $brand-danger !default;\n\n// Button Border Color\n$btn-default-border-color: $brand-default !default;\n$btn-inverse-border-color: $btn-inverse-bg !default;\n$btn-primary-border-color: $btn-primary-bg !default;\n$btn-info-border-color: $btn-info-bg !default;\n$btn-success-border-color: $btn-success-bg !default;\n$btn-warning-border-color: $btn-warning-bg !default;\n$btn-danger-border-color: $btn-danger-bg !default;\n\n// Button Text Color\n$btn-default-color: $brand-primary !default;\n$btn-inverse-color: #FFF !default;\n$btn-primary-color: #FFF !default;\n$btn-info-color: #FFF !default;\n$btn-success-color: #FFF !default;\n$btn-warning-color: #FFF !default;\n$btn-danger-color: #FFF !default;\n\n// Button Background Color\n$btn-default-bg-hover: $btn-default-border-color !default;\n$btn-inverse-bg-hover: mix($btn-inverse-bg, white, 80%) !default;\n$btn-primary-bg-hover: mix($btn-primary-bg, black, 80%) !default;\n$btn-info-bg-hover: mix($btn-info-bg, black, 80%) !default;\n$btn-success-bg-hover: mix($btn-success-bg, black, 80%) !default;\n$btn-warning-bg-hover: mix($btn-warning-bg, black, 80%) !default;\n$btn-danger-bg-hover: mix($btn-danger-bg, black, 80%) !default;\n$btn-link-bg-hover: $gray-lighter !default;\n\n\n\n\n//== Header blocks\n//## Define look and feel over multible building blocks that serve as header\n$header-bg-color: $bg-color-secondary !default;\n$header-text-color: #FFF !default;\n$header-text-color-detail: rgba(0,0,0, 0.2) !default;\n\n\n\n\n\n//\n// ███████╗██╗ ██╗██████╗ ███████╗██████╗ ████████╗\n// ██╔════╝╚██╗██╔╝██╔══██╗██╔════╝██╔══██╗╚══██╔══╝\n// █████╗ ╚███╔╝ ██████╔╝█████╗ ██████╔╝ ██║\n// ██╔══╝ ██╔██╗ ██╔═══╝ ██╔══╝ ██╔══██╗ ██║\n// ███████╗██╔╝ ██╗██║ ███████╗██║ ██║ ██║\n// ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝\n//\n\n//== Color variations\n//## These variations are used to support several other variables and components\n\n// Color variations\n$color-default-darker: mix($brand-default, black, 60%) !default;\n$color-default-dark: mix($brand-default, black, 70%) !default;\n$color-default-light: mix($brand-default, white, 60%) !default;\n$color-default-lighter: mix($brand-default, white, 20%) !default;\n\n$color-inverse-darker: mix($brand-inverse, black, 60%) !default;\n$color-inverse-dark: mix($brand-inverse, black, 70%) !default;\n$color-inverse-light: mix($brand-inverse, white, 60%) !default;\n$color-inverse-lighter: mix($brand-inverse, white, 20%) !default;\n\n$color-primary-darker: mix($brand-primary, black, 60%) !default;\n$color-primary-dark: mix($brand-primary, black, 70%) !default;\n$color-primary-light: mix($brand-primary, white, 60%) !default;\n$color-primary-lighter: mix($brand-primary, white, 20%) !default;\n\n$color-info-darker: mix($brand-info, black, 60%) !default;\n$color-info-dark: mix($brand-info, black, 70%) !default;\n$color-info-light: mix($brand-info, white, 60%) !default;\n$color-info-lighter: mix($brand-info, white, 20%) !default;\n\n$color-success-darker: mix($brand-success, black, 60%) !default;\n$color-success-dark: mix($brand-success, black, 70%) !default;\n$color-success-light: mix($brand-success, white, 60%) !default;\n$color-success-lighter: mix($brand-success, white, 20%) !default;\n\n$color-warning-darker: mix($brand-warning, black, 60%) !default;\n$color-warning-dark: mix($brand-warning, black, 70%) !default;\n$color-warning-light: mix($brand-warning, white, 60%) !default;\n$color-warning-lighter: mix($brand-warning, white, 20%) !default;\n\n$color-danger-darker: mix($brand-danger, black, 60%) !default;\n$color-danger-dark: mix($brand-danger, black, 70%) !default;\n$color-danger-light: mix($brand-danger, white, 60%) !default;\n$color-danger-lighter: mix($brand-danger, white, 20%) !default;\n\n$brand-gradient: linear-gradient(152deg, #0CC7F0 0%, #087ECC 51%, #077AC9 55%, #0659B9 78%) !default;\n\n\n//== Grids\n//## Used for Datagrid, Templategrid, Listview & Tables (see components folder)\n\n// Default Border Colors\n$grid-border-color: $border-color-default !default;\n\n// Spacing\n// Default\n$grid-padding-top: 15px !default;\n$grid-padding-right: 15px !default;\n$grid-padding-bottom: 15px !default;\n$grid-padding-left: 15px !default;\n\n// Listview\n$listview-padding-top: 15px !default;\n$listview-padding-right: 15px !default;\n$listview-padding-bottom: 15px !default;\n$listview-padding-left: 15px !default;\n\n// Background Colors\n$grid-bg: #FFF !default;\n$grid-bg-header: transparent !default; // Grid Headers\n$grid-bg-hover: mix($grid-border-color, #FFF, 20%) !default;\n$grid-bg-selected: mix($grid-border-color, #FFF, 30%) !default;\n$grid-bg-selected-hover: mix($grid-border-color, #FFF, 50%) !default;\n\n// Striped Background Color\n$grid-bg-striped: mix($grid-border-color, #FFF, 10%) !default;\n\n// Background Footer Color\n$grid-footer-bg: $gray-primary !default;\n\n// Text Color\n$grid-selected-color: $font-color-default !default;\n\n// Paging Colors\n$grid-paging-bg: transparent !default;\n$grid-paging-bg-hover: transparent !default;\n$grid-paging-border-color: transparent !default;\n$grid-paging-border-color-hover: transparent !default;\n$grid-paging-color: $gray-light !default;\n$grid-paging-color-hover: $brand-primary !default;\n\n\n\n\n//== Tabs\n//## Default variables for Tab Container Widget (used in components/tabcontainer)\n\n// Text Color\n$tabs-color: $font-color-detail !default;\n$tabs-color-active: $font-color-default !default;\n$tabs-lined-color-active: $brand-primary !default;\n\n// Border Color\n$tabs-border-color: $border-color-default !default;\n$tabs-lined-border-color: $brand-primary !default;\n\n// Background Color\n$tabs-bg: #FFF !default;\n$tabs-bg-hover: lighten($tabs-border-color,5) !default;\n$tabs-bg-active: $brand-primary !default;\n\n\n\n\n//== Modals\n//## Default Mendix Modal, Blocking Modal and Login Modal (used in components/modals)\n\n// Background Color\n$modal-header-bg: transparent !default;\n\n// Border Color\n$modal-header-border-color: $border-color-default !default;\n\n// Text Color\n$modal-header-color: $font-color-default !default;\n\n\n\n\n//== Dataview\n//## Default variables for Dataview Widget (used in components/dataview)\n\n// Controls\n$dataview-controls-bg: transparent !default;\n$dataview-controls-border-color: $border-color-default !default;\n\n// Empty Message\n$dataview-emptymessage-bg: $bg-color !default;\n$dataview-emptymessage-color: $font-color-default !default;\n\n\n\n\n//== Alerts\n//## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts)\n\n// Background Color\n$alert-info-bg: $color-info-lighter !default;\n$alert-success-bg: $color-success-lighter !default;\n$alert-warning-bg: $color-warning-lighter !default;\n$alert-danger-bg: $color-danger-lighter !default;\n\n// Text Color\n$alert-info-color: $color-info-darker !default;\n$alert-success-color: $color-success-darker !default;\n$alert-warning-color: $color-warning-darker !default;\n$alert-danger-color: $color-danger-darker !default;\n\n// Border Color\n$alert-info-border-color: $color-info-dark !default;\n$alert-success-border-color: $color-success-dark !default;\n$alert-warning-border-color: $color-warning-dark !default;\n$alert-danger-border-color: $color-danger-dark !default;\n\n\n\n\n//== Labels\n//## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels)\n\n// Background Color\n$label-default-bg: $brand-default !default;\n$label-primary-bg: $brand-primary !default;\n$label-info-bg: $brand-info !default;\n$label-inverse-bg: $brand-inverse !default;\n$label-success-bg: $brand-success !default;\n$label-warning-bg: $brand-warning !default;\n$label-danger-bg: $brand-danger !default;\n\n// Border Color\n$label-default-border-color: $brand-default !default;\n$label-primary-border-color: $brand-primary !default;\n$label-info-border-color: $brand-info !default;\n$label-success-border-color: $brand-success !default;\n$label-warning-border-color: $brand-warning !default;\n$label-danger-border-color: $brand-danger !default;\n\n// Text Color\n$label-default-color: $font-color-default !default;\n$label-primary-color: #FFF !default;\n$label-info-color: #FFF !default;\n$label-inverse-color: #FFF !default;\n$label-success-color: #FFF !default;\n$label-warning-color: #FFF !default;\n$label-danger-color: #FFF !default;\n\n\n\n\n//== Groupbox\n//## Default variables for Groupbox Widget (used in components/groupbox)\n\n// Background Color\n$groupbox-default-bg: $brand-default !default;\n$groupbox-inverse-bg: $brand-inverse !default;\n$groupbox-primary-bg: $brand-primary !default;\n$groupbox-info-bg: $brand-info !default;\n$groupbox-success-bg: $brand-success !default;\n$groupbox-warning-bg: $brand-warning !default;\n$groupbox-danger-bg: $brand-danger !default;\n$groupbox-white-bg: #FFF !default;\n\n// Text Color\n$groupbox-default-color: $font-color-default !default;\n$groupbox-inverse-color: #FFF !default;\n$groupbox-primary-color: #FFF !default;\n$groupbox-info-color: #FFF !default;\n$groupbox-success-color: #FFF !default;\n$groupbox-warning-color: #FFF !default;\n$groupbox-danger-color: #FFF !default;\n$groupbox-white-color: $font-color-default !default;\n\n\n\n\n//== Callout (groupbox) Colors\n//## Extended variables for Groupbox Widget (used in components/groupbox)\n\n// Text and Border Color\n$callout-default-color: $font-color-default !default;\n$callout-info-color: $brand-info !default;\n$callout-success-color: $brand-success !default;\n$callout-warning-color: $brand-warning !default;\n$callout-danger-color: $brand-danger !default;\n\n// Background Color\n$callout-default-bg: $color-default-lighter!default;\n$callout-info-bg: $color-info-lighter !default;\n$callout-success-bg: $color-success-lighter !default;\n$callout-warning-bg: $color-warning-lighter !default;\n$callout-danger-bg: $color-danger-lighter !default;\n\n//== Timeline\n//## Extended variables for Timeline Widget\n// Colors\n$timeline-icon-color: $brand-primary;\n$timeline-border-color: $border-color-default;\n\n$timeline-color-header: $font-color-header;\n$timeline-color-detail: $font-color-detail;\n\n// Sizes\n$timeline-icon-size: 18px;\n\n//== Spacing\n//## Advanced layout options (used in base/mixins/default-spacing)\n\n// Small spacing\n$spacing-small: 5px !default;\n\n// Medium spacing\n$spacing-medium: 15px !default;\n$t-spacing-medium: 15px !default;\n$m-spacing-medium: 15px !default;\n\n// Large spacing\n$spacing-large: 30px !default;\n$t-spacing-large: 30px !default;\n$m-spacing-large: 15px !default;\n\n// Layout spacing\n$layout-spacing-top: 30px !default;\n$layout-spacing-right: 30px !default;\n$layout-spacing-bottom: 30px !default;\n$layout-spacing-left: 30px !default;\n\n$t-layout-spacing-top: 30px !default;\n$t-layout-spacing-right: 30px !default;\n$t-layout-spacing-bottom: 30px !default;\n$t-layout-spacing-left: 30px !default;\n\n$m-layout-spacing-top: 15px !default;\n$m-layout-spacing-right: 15px !default;\n$m-layout-spacing-bottom: 15px !default;\n$m-layout-spacing-left: 15px !default;\n\n// Combined layout spacing\n$layout-spacing: $layout-spacing-top $layout-spacing-right $layout-spacing-bottom $layout-spacing-left !default;\n$m-layout-spacing: $m-layout-spacing-top $m-layout-spacing-right $m-layout-spacing-bottom $m-layout-spacing-left !default;\n$t-layout-spacing: $t-layout-spacing-top $t-layout-spacing-right $t-layout-spacing-bottom $t-layout-spacing-left !default;\n\n// Gutter size\n$gutter-size: 15px !default;\n\n\n\n\n\n//== Tables\n//## Table spacing options (used in components/tables)\n\n$padding-table-cell-top: 8px !default;\n$padding-table-cell-bottom: 8px !default;\n$padding-table-cell-left: 8px !default;\n$padding-table-cell-right: 8px !default;\n\n\n\n\n//== Media queries breakpoints\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n$screen-xs: 480px !default;\n$screen-sm: 576px !default;\n$screen-md: 768px !default;\n$screen-lg: 992px !default;\n$screen-xl: 1200px !default;\n\n// So media queries don't overlap when required, provide a maximum (used for max-width)\n$screen-xs-max: ($screen-sm - 1) !default;\n$screen-sm-max: ($screen-md - 1) !default;\n$screen-md-max: ($screen-lg - 1) !default;\n$screen-lg-max: ($screen-xl - 1) !default;\n\n\n//== Settings\n//## Enable or disable your desired framework features\n// Use of !important\n$important-flex: true !default; // ./base/flex.scss\n$important-spacing: true !default; // ./base/spacing.scss\n$important-helpers: true !default; // ./helpers/helperclasses.scss\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin transition(\n $style: initial,\n $delay: 0s,\n $duration: 0.3s,\n $property: all,\n $timing-fucntion: cubic-bezier(0.4, 0, 0.2, 1)\n) {\n -webkit-transition: $property $duration $delay $timing-fucntion;\n -moz-transition: $property $duration $delay $timing-fucntion;\n -o-transition: $property $duration $delay $timing-fucntion;\n transition: $property $duration $delay $timing-fucntion;\n transform-style: $style;\n}\n\n@mixin ripple($color: #000, $transparency: 10%, $scale: 10) {\n position: relative;\n overflow: hidden;\n transform: translate3d(0, 0, 0);\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n pointer-events: none;\n background-image: radial-gradient(circle, $color $transparency, transparent $transparency);\n background-repeat: no-repeat;\n background-position: 50%;\n -webkit-transform: scale($scale, $scale);\n transform: scale($scale, $scale);\n opacity: 0;\n -webkit-transition: transform 0.5s, opacity 1s;\n -moz-transition: transform 0.5s, opacity 1s;\n -o-transition: transform 0.5s, opacity 1s;\n transition: transform 0.5s, opacity 1s;\n }\n\n &:active:after {\n -webkit-transform: scale(0, 0);\n transform: scale(0, 0);\n opacity: 0.1;\n transition: 0s;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin get-responsive-spacing-large($type: padding, $direction: all, $is_important: false) {\n $suffix: '';\n $dash: '-'; // Otherwise it will be interpreted as a minus symbol. Needed for the Gonzales PE version: 3.4.7 compiler (used by the Webmodeler)\n\n @if $is_important != false {\n $suffix: ' !important';\n }\n @if $direction==all {\n @media (max-width: $screen-sm-max) {\n #{$type}: #{$m-spacing-large}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}: #{$t-spacing-large}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}: #{$spacing-large}#{$suffix};\n }\n } @else {\n @media (max-width: $screen-sm-max) {\n #{$type}#{$dash}#{$direction}: #{$m-spacing-large}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}#{$dash}#{$direction}: #{$t-spacing-large}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}#{$dash}#{$direction}: #{$spacing-large}#{$suffix};\n }\n }\n}\n\n@mixin get-responsive-spacing-medium($type: padding, $direction: all, $is_important: false) {\n $suffix: '';\n $dash: '-'; // Otherwise it will be interpreted as a minus symbol. Needed for the Gonzales PE version: 3.4.7 compiler (used by the Webmodeler)\n\n @if $is_important != false {\n $suffix: ' !important';\n }\n @if $direction==all {\n @media (max-width: $screen-sm-max) {\n #{$type}: #{$m-spacing-medium}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}: #{$t-spacing-medium}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}: #{$spacing-medium}#{$suffix};\n }\n } @else {\n @media (max-width: $screen-sm-max) {\n #{$type}#{$dash}#{$direction}: #{$m-spacing-medium}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}#{$dash}#{$direction}: #{$t-spacing-medium}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}#{$dash}#{$direction}: #{$spacing-medium}#{$suffix};\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin layout-spacing($type: padding, $direction: all, $device: responsive, $is_important: false) {\n $suffix: '';\n @if $is_important != false {\n $suffix: ' !important';\n }\n @if $device==responsive {\n @if $direction==all {\n @media (max-width: $screen-sm-max) {\n #{$type}: #{$m-layout-spacing}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}: #{$t-layout-spacing}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}: #{$layout-spacing}#{$suffix};\n }\n } @else if $direction==top {\n @media (max-width: $screen-sm-max) {\n #{$type}-top: #{$m-layout-spacing-top}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}-top: #{$t-layout-spacing-top}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}-top: #{$layout-spacing-top}#{$suffix};\n }\n } @else if $direction==right {\n @media (max-width: $screen-sm-max) {\n #{$type}-right: #{$m-layout-spacing-right}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}-right: #{$t-layout-spacing-right}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}-right: #{$layout-spacing-right}#{$suffix};\n }\n } @else if $direction==bottom {\n @media (max-width: $screen-sm-max) {\n #{$type}-bottom: #{$m-layout-spacing-bottom}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}-bottom: #{$t-layout-spacing-bottom}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}-bottom: #{$layout-spacing-bottom}#{$suffix};\n }\n } @else if $direction==left {\n @media (max-width: $screen-sm-max) {\n #{$type}-left: #{$m-layout-spacing-left}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}-left: #{$t-layout-spacing-left}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}-left: #{$layout-spacing-left}#{$suffix};\n }\n }\n } @else if $device==tablet {\n @if $direction==all {\n #{$type}: #{$t-layout-spacing}#{$suffix};\n } @else if $direction==top {\n #{$type}-top: #{$t-layout-spacing-top}#{$suffix};\n } @else if $direction==right {\n #{$type}-right: #{$t-layout-spacing-right}#{$suffix};\n } @else if $direction==bottom {\n #{$type}-bottom: #{$t-layout-spacing-bottom}#{$suffix};\n } @else if $direction==left {\n #{$type}-left: #{$t-layout-spacing-left}#{$suffix};\n }\n } @else if $device==mobile {\n @if $direction==all {\n #{$type}: #{$m-layout-spacing}#{$suffix};\n } @else if $direction==top {\n #{$type}-top: #{$m-layout-spacing-top}#{$suffix};\n } @else if $direction==right {\n #{$type}-right: #{$m-layout-spacing-right}#{$suffix};\n } @else if $direction==bottom {\n #{$type}-bottom: #{$m-layout-spacing-bottom}#{$suffix};\n } @else if $direction==left {\n #{$type}-left: #{$m-layout-spacing-left}#{$suffix};\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin button-variant($color, $background, $border, $hover) {\n color: $color;\n border-color: $border;\n background-color: $background;\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open > &.dropdown-toggle {\n color: $color;\n border-color: $hover;\n background-color: $hover;\n }\n &:active,\n &.active,\n .open > &.dropdown-toggle {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n &[aria-disabled],\n fieldset[disabled] {\n &,\n &:hover,\n &:focus,\n &:active,\n &.active {\n border-color: $border;\n background-color: $background;\n }\n }\n // Button bordered\n &.btn-bordered {\n background-color: transparent;\n @if $color != $btn-default-color {\n color: $border;\n }\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open > &.dropdown-toggle {\n color: $color;\n border-color: $border;\n background-color: $border;\n }\n }\n // Button as link\n &.btn-link {\n text-decoration: none;\n border-color: transparent;\n background-color: transparent;\n @if $color != $btn-default-color {\n color: $background;\n }\n\n &:hover {\n border-color: $btn-link-bg-hover;\n background-color: $btn-link-bg-hover;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin groupbox-variant($color, $background) {\n > .mx-groupbox-header {\n color: $color;\n border-color: $background;\n background: $background;\n }\n > .mx-groupbox-body {\n border-color: $background;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@keyframes slideInUp {\n from {\n visibility: visible;\n transform: translate3d(0, 100%, 0);\n }\n\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n\n.animated {\n animation-duration: 0.4s;\n animation-fill-mode: both;\n}\n\n.slideInUp {\n animation-name: slideInUp;\n}\n\n@keyframes slideInDown {\n from {\n visibility: visible;\n transform: translate3d(0, -100%, 0);\n }\n\n to {\n transform: translate3d(0, 0, 0);\n }\n}\n\n.slideInDown {\n animation-name: slideInDown;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n.fadeIn {\n animation-name: fadeIn;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Flex\n\n Flex classes\n========================================================================== */\n$important-flex-value: if($important-flex, ' !important', '');\n\n// Flex layout\n.flexcontainer {\n display: flex;\n overflow: hidden;\n flex: 1;\n flex-direction: row;\n\n .flexitem {\n margin-right: $gutter-size;\n\n &:last-child {\n margin-right: 0;\n }\n }\n\n .flexitem-main {\n overflow: hidden;\n flex: 1;\n }\n}\n\n// These classes define the order of the children\n.flex-row {\n flex-direction: row #{$important-flex-value};\n}\n\n.flex-column {\n flex-direction: column #{$important-flex-value};\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse #{$important-flex-value};\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse #{$important-flex-value};\n}\n\n.flex-wrap {\n flex-wrap: wrap #{$important-flex-value};\n}\n\n.flex-nowrap {\n flex-wrap: nowrap #{$important-flex-value};\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse #{$important-flex-value};\n}\n\n// Align children in both directions\n.flex-center {\n align-items: center #{$important-flex-value};\n justify-content: center #{$important-flex-value};\n}\n\n// These classes define the alignment of the children\n.justify-content-start {\n justify-content: flex-start #{$important-flex-value};\n}\n\n.justify-content-end {\n justify-content: flex-end #{$important-flex-value};\n}\n\n.justify-content-center {\n justify-content: center #{$important-flex-value};\n}\n\n.justify-content-between {\n justify-content: space-between #{$important-flex-value};\n}\n\n.justify-content-around {\n justify-content: space-around #{$important-flex-value};\n}\n\n.justify-content-evenly {\n // Not Supported in IE11\n justify-content: space-evenly #{$important-flex-value};\n}\n\n.justify-content-stretch {\n justify-content: stretch #{$important-flex-value};\n}\n\n/// These classes define the alignment of the children in the cross-direction\n.align-children-start {\n align-items: flex-start #{$important-flex-value};\n}\n\n.align-children-end {\n align-items: flex-end #{$important-flex-value};\n}\n\n.align-children-center {\n align-items: center #{$important-flex-value};\n}\n\n.align-children-baseline {\n align-items: baseline #{$important-flex-value};\n}\n\n.align-children-stretch {\n align-items: stretch #{$important-flex-value};\n}\n\n/// These classes define the alignment of the rows of children in the cross-direction\n.align-content-start {\n align-content: flex-start #{$important-flex-value};\n}\n\n.align-content-end {\n align-content: flex-end #{$important-flex-value};\n}\n\n.align-content-center {\n align-content: center #{$important-flex-value};\n}\n\n.align-content-between {\n align-content: space-between #{$important-flex-value};\n}\n\n.align-content-around {\n align-content: space-around #{$important-flex-value};\n}\n\n.align-content-stretch {\n align-content: stretch #{$important-flex-value};\n}\n\n/// These classes allow the default alignment to be overridden for individual items\n.align-self-auto {\n align-self: auto #{$important-flex-value};\n}\n\n.align-self-start {\n align-self: flex-start #{$important-flex-value};\n}\n\n.align-self-end {\n align-self: flex-end #{$important-flex-value};\n}\n\n.align-self-center {\n align-self: center #{$important-flex-value};\n}\n\n.align-self-baseline {\n align-self: baseline #{$important-flex-value};\n}\n\n.align-self-stretch {\n align-self: stretch #{$important-flex-value};\n}\n\n/// These classes define the percentage of available free space within a flex container a flex item will take.\n@mixin flex-items($number) {\n @for $i from 1 through $number {\n .flexitem-#{$i} {\n flex: #{$i} #{$i} 1%;\n }\n }\n}\n\n@include flex-items($number: 12);\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Spacing\n\n Spacing classes\n========================================================================== */\n$important-spacing-value: if($important-spacing, ' !important', '');\n\n// Spacing none\n.spacing-inner-none {\n padding: 0 #{$important-spacing-value};\n}\n\n.spacing-inner-top-none {\n padding-top: 0 #{$important-spacing-value};\n}\n\n.spacing-inner-right-none {\n padding-right: 0 #{$important-spacing-value};\n}\n\n.spacing-inner-bottom-none {\n padding-bottom: 0 #{$important-spacing-value};\n}\n\n.spacing-inner-left-none {\n padding-left: 0 #{$important-spacing-value};\n}\n\n.spacing-outer-none {\n margin: 0 #{$important-spacing-value};\n}\n\n.spacing-outer-top-none {\n margin-top: 0 #{$important-spacing-value};\n}\n\n.spacing-outer-right-none {\n margin-right: 0 #{$important-spacing-value};\n}\n\n.spacing-outer-bottom-none {\n margin-bottom: 0 #{$important-spacing-value};\n}\n\n.spacing-outer-left-none {\n margin-left: 0 #{$important-spacing-value};\n}\n\n// Spacing small\n.spacing-inner {\n padding: $spacing-small #{$important-spacing-value};\n}\n\n.spacing-inner-top {\n padding-top: $spacing-small #{$important-spacing-value};\n}\n\n.spacing-inner-right {\n padding-right: $spacing-small #{$important-spacing-value};\n}\n\n.spacing-inner-bottom {\n padding-bottom: $spacing-small #{$important-spacing-value};\n}\n\n.spacing-inner-left {\n padding-left: $spacing-small #{$important-spacing-value};\n}\n\n.spacing-outer {\n margin: $spacing-small #{$important-spacing-value};\n}\n\n.spacing-outer-top {\n margin-top: $spacing-small #{$important-spacing-value};\n}\n\n.spacing-outer-right {\n margin-right: $spacing-small #{$important-spacing-value};\n}\n\n.spacing-outer-bottom {\n margin-bottom: $spacing-small #{$important-spacing-value};\n}\n\n.spacing-outer-left {\n margin-left: $spacing-small #{$important-spacing-value};\n}\n\n// Spacing Medium\n.spacing-inner-medium {\n @include get-responsive-spacing-medium($type: padding, $direction: all, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-top-medium {\n @include get-responsive-spacing-medium($type: padding, $direction: top, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-right-medium {\n @include get-responsive-spacing-medium($type: padding, $direction: right, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-bottom-medium {\n @include get-responsive-spacing-medium($type: padding, $direction: bottom, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-left-medium {\n @include get-responsive-spacing-medium($type: padding, $direction: left, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-medium {\n @include get-responsive-spacing-medium($type: margin, $direction: all, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-top-medium {\n @include get-responsive-spacing-medium($type: margin, $direction: top, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-right-medium {\n @include get-responsive-spacing-medium($type: margin, $direction: right, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-bottom-medium {\n @include get-responsive-spacing-medium($type: margin, $direction: bottom, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-left-medium {\n @include get-responsive-spacing-medium($type: margin, $direction: left, $is_important: #{$important-spacing-value});\n}\n\n// Spacing Large\n.spacing-inner-large {\n @include get-responsive-spacing-large($type: padding, $direction: all, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-top-large {\n @include get-responsive-spacing-large($type: padding, $direction: top, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-right-large {\n @include get-responsive-spacing-large($type: padding, $direction: right, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-bottom-large {\n @include get-responsive-spacing-large($type: padding, $direction: bottom, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-left-large {\n @include get-responsive-spacing-large($type: padding, $direction: left, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-large {\n @include get-responsive-spacing-large($type: margin, $direction: all, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-top-large {\n @include get-responsive-spacing-large($type: margin, $direction: top, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-right-large {\n @include get-responsive-spacing-large($type: margin, $direction: right, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-bottom-large {\n @include get-responsive-spacing-large($type: margin, $direction: bottom, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-left-large {\n @include get-responsive-spacing-large($type: margin, $direction: left, $is_important: #{$important-spacing-value});\n}\n\n// Spacing layouts\n.spacing-inner-layout {\n @include layout-spacing($type: padding, $direction: all, $device: responsive, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-top-layout {\n @include layout-spacing($type: padding, $direction: top, $device: responsive, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-right-layout {\n @include layout-spacing($type: padding, $direction: right, $device: responsive, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-bottom-layout {\n @include layout-spacing($type: padding, $direction: bottom, $device: responsive, $is_important: #{$important-spacing-value});\n}\n\n.spacing-inner-left-layout {\n @include layout-spacing($type: padding, $direction: left, $device: responsive, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-layout {\n @include layout-spacing($type: margin, $direction: all, $device: responsive, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-top-layout {\n @include layout-spacing($type: margin, $direction: top, $device: responsive, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-right-layout {\n @include layout-spacing($type: margin, $direction: right, $device: responsive, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-bottom-layout {\n @include layout-spacing($type: margin, $direction: bottom, $device: responsive, $is_important: #{$important-spacing-value});\n}\n\n.spacing-outer-left-layout {\n @include layout-spacing($type: margin, $direction: left, $device: responsive, $is_important: #{$important-spacing-value});\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n// Basic styling Scroll container\n// .mx-scrollcontainer {\n// .mx-scrollcontainer-wrapper {\n// padding: 0;\n// // Convert width to max-width when in scroll container to make sure you dont get scrollbars\n// .mx-layoutgrid-fixed {\n// width: 100%;\n// margin: auto;\n// @media (min-width: $screen-md) {\n// max-width: 750px;\n// }\n// @media (min-width: $screen-lg) {\n// max-width: 970px;\n// }\n// @media (min-width: $screen-xl) {\n// max-width: 1170px;\n// }\n// }\n// }\n// }\n\n.mx-scrollcontainer .mx-placeholder {\n width: 100%;\n height: 100%;\n .mx-layoutgrid,\n .mx-layoutgrid-fluid {\n @include layout-spacing($type: padding, $direction: all, $device: responsive);\n .mx-layoutgrid,\n .mx-layoutgrid-fluid {\n padding: 0;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Base\n\n Default settings\n========================================================================== */\nhtml {\n height: 100%;\n}\n\nbody {\n min-height: 100%;\n color: $font-color-default;\n background-color: $bg-color;\n font-family: $font-family-base;\n font-size: $font-size-default;\n font-weight: $font-weight-normal;\n line-height: $line-height-base;\n}\n\na {\n -moz-transition: 0.25s;\n -o-transition: 0.25s;\n -webkit-transition: 0.25s;\n transition: 0.25s;\n color: $link-color;\n -webkit-backface-visibility: hidden;\n}\n\na:hover {\n text-decoration: underline;\n color: $link-hover-color;\n}\n\n// Address `outline` inconsistency between Chrome and other browsers.\na:focus {\n outline: thin dotted;\n}\n\n// Improve readability when focused and also mouse hovered in all browsers\na:active,\na:hover {\n outline: 0;\n}\n\n// Removes large blue border in chrome on focus and active states\ninput:focus,\nbutton:focus,\n.mx-link:focus {\n outline: 0;\n}\n\n// Removes large blue border for tabindexes from widgets\ndiv[tabindex] {\n outline: 0;\n}\n\n// Disabled State\n.disabled,\n[disabled] {\n cursor: not-allowed;\n // opacity: 0.65;\n -webkit-box-shadow: none;\n box-shadow: none;\n filter: alpha(opacity=65);\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\nbody {\n height: 100%;\n}\n\n.loginpage {\n display: flex;\n height: 100%;\n}\n.loginpage-logo {\n position: absolute;\n top: 30px;\n right: 30px;\n width: 120px;\n}\n\n.loginpage-left {\n display: none;\n}\n\n.loginpage-right {\n display: flex;\n flex: 1;\n flex-direction: column;\n justify-content: space-around;\n}\n.loginpage-formwrapper {\n width: 400px;\n margin: 0 auto;\n}\n// Form\n.loginpage-form {\n .alert {\n display: none;\n }\n\n .btn {\n border-radius: 40px;\n }\n\n // Form label + input\n .form-group {\n width: 100%;\n align-items: center;\n\n .control-label {\n flex: 4;\n margin-bottom: 0;\n font-size: $font-size-default;\n font-weight: 500;\n }\n\n .inputwrapper {\n flex: 8;\n position: relative;\n width: 100%;\n\n .glyphicon {\n &:before {\n -webkit-transition: color 0.4s;\n -moz-transition: color 0.4s;\n -o-transition: color 0.4s;\n transition: color 0.4s;\n }\n\n position: absolute;\n top: 50%;\n left: $form-input-padding-x;\n -webkit-transform: translateY(-50%);\n -moz-transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n -o-transform: translateY(-50%);\n transform: translateY(-50%);\n\n &-eye-open:hover,\n &-eye-close:hover {\n cursor: pointer;\n color: $brand-primary;\n }\n }\n\n .form-control {\n padding: $form-input-padding-y $form-input-padding-x $form-input-padding-y 45px;\n }\n\n .form-control:focus ~ .glyphicon:before {\n color: $brand-primary;\n }\n }\n }\n}\n// Divider - only on login-with-sso.html\n.loginpage-alternativelabel {\n display: flex;\n align-items: center;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n margin: 25px 0px;\n\n hr {\n flex: 1;\n margin: 20px 0 20px 10px;\n border: 0;\n border-color: #d8d8d8;\n border-top: 1px solid #eeeeee;\n }\n}\n\n.loginpage-signin {\n color: #555555;\n}\n\n// Show only on wide screens\n@media screen and (min-width: $screen-xl) {\n .loginpage-logo {\n width: 150px;\n }\n\n .loginpage-left {\n position: relative;\n display: block;\n flex: 1;\n width: 100%;\n height: 100%;\n }\n // Image and clipping mask\n .loginpage-image {\n height: 100%;\n animation: makePointer 1s ease-out both;\n background: left / cover no-repeat url('../../../resources/work-do-more.jpeg'); // Microsoft EDGE\n background: left / cover no-repeat\n linear-gradient(to right, rgba($brand-primary, 0.9) 0%, rgba($brand-primary, 0.6) 100%),\n left / cover no-repeat url('../../../resources/work-do-more.jpeg');\n background: left / cover no-repeat -moz-linear-gradient(left, rgba($brand-primary, 0.9) 0%, rgba(\n $brand-primary,\n 0.6\n )\n 100%),\n left / cover no-repeat url('../../../resources/work-do-more.jpeg');\n background: left / cover no-repeat -webkit-gradient(linear, left bottom, right bottom, color-stop(0%, rgba($brand-primary, 0.9)), color-stop(100%, rgba($brand-primary, 0.6))),\n left / cover no-repeat url('../../../resources/work-do-more.jpeg');\n background: left / cover no-repeat -webkit-linear-gradient(left, rgba($brand-primary, 0.9) 0%, rgba(\n $brand-primary,\n 0.6\n )\n 100%),\n left / cover no-repeat url('../../../resources/work-do-more.jpeg');\n background: left / cover no-repeat -o-linear-gradient(left, rgba($brand-primary, 0.9) 0%, rgba(\n $brand-primary,\n 0.6\n )\n 100%),\n left / cover no-repeat url('../../../resources/work-do-more.jpeg');\n background: left / cover no-repeat -ms-linear-gradient(left, rgba($brand-primary, 0.9) 0%, rgba(\n $brand-primary,\n 0.6\n )\n 100%),\n left / cover no-repeat url('../../../resources/work-do-more.jpeg');\n -webkit-clip-path: polygon(0% 0%, 100% 0, 100% 50%, 100% 100%, 0% 100%);\n clip-path: polygon(0% 0%, 100% 0, 100% 50%, 100% 100%, 0% 100%);\n }\n\n .loginpage-formwrapper {\n width: 400px;\n }\n}\n\n// Animate image clipping mask\n@keyframes makePointer {\n 100% {\n -webkit-clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);\n clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);\n }\n}\n@-webkit-keyframes makePointer {\n 100% {\n -webkit-clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);\n clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Inputs\n\n The form-control class style all inputs\n========================================================================== */\n.form-control {\n display: flex;\n flex: 1;\n min-width: 50px;\n height: $form-input-height;\n padding: $form-input-padding-y $form-input-padding-x;\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n color: $form-input-color;\n border: 1px solid $form-input-border-color;\n border-radius: $form-input-border-radius;\n background-color: $form-input-bg;\n background-image: none;\n box-shadow: none;\n font-size: $form-input-font-size;\n line-height: $form-input-line-height;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n @if $form-input-style==lined {\n @extend .form-control-lined;\n }\n}\n\n.form-control:not([readonly]):focus {\n border-color: $form-input-border-focus-color;\n outline: 0;\n background-color: $form-input-bg-focus;\n box-shadow: none;\n}\n\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n opacity: 1;\n background-color: #EEEEEE;\n}\n\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\n\n// Lined\n.form-control-lined {\n border: 0;\n border-bottom: 1px solid $form-input-border-color;\n border-radius: 0;\n background-color: transparent;\n\n &:focus {\n background-color: transparent;\n }\n}\n\n// Read only form control class\n.form-control-static {\n overflow: hidden;\n flex: 1;\n min-height: auto;\n padding: $form-input-padding-y $form-input-padding-x;\n border-bottom: 1px solid $form-input-static-border-color;\n font-size: $form-input-font-size;\n line-height: $form-input-line-height;\n\n & + .control-label {\n margin-left: $form-label-gutter;\n }\n}\n\n// Dropdown input widget\nselect.form-control {\n $arrow: \"data:image/svg+xml;utf8,\";\n padding-right: 30px;\n background-image: url($arrow);\n background-repeat: no-repeat;\n background-position: calc(100% - #{$form-input-padding-x}) center;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n}\n\n.form-control.mx-selectbox {\n align-items: center;\n flex-direction: row-reverse;\n justify-content: space-between;\n}\n\n// Not editable textarea, textarea will be rendered as a label\n.mx-textarea .control-label {\n height: auto;\n}\n\ntextarea.form-control {\n flex-basis: auto;\n}\n\n.mx-compound-control {\n display: flex;\n flex: 1;\n flex-wrap: wrap;\n max-width: 100%;\n\n .mx-validation-message {\n flex-basis: 100%;\n margin-top: 5px;\n }\n}\n\n// Form Group\n.form-group {\n display: flex;\n flex-direction: row;\n margin-bottom: $form-group-margin-bottom;\n\n & > div[class*='col-'] {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n }\n\n & > [class*='col-'] {\n padding-right: $form-group-gutter;\n padding-left: $form-group-gutter;\n }\n\n // Alignment content\n div[class*='textBox'] > .control-label,\n div[class*='textArea'] > .control-label,\n div[class*='datePicker'] > .control-label {\n @extend .form-control-static;\n }\n\n // Label\n .control-label {\n overflow: hidden;\n margin-bottom: 5px;\n text-overflow: ellipsis;\n color: $form-label-color;\n font-size: $form-label-size;\n font-weight: $form-label-weight;\n }\n\n .mx-validation-message {\n flex-basis: 100%;\n }\n\n &.no-columns:not(.label-after) {\n flex-direction: column;\n }\n}\n\n.form-group.label-after {\n .form-control-static {\n flex: unset;\n }\n\n .control-label {\n margin-bottom: 0;\n }\n}\n\n.mx-dateinput,\n.mx-referenceselector,\n.mx-referencesetselector {\n flex: 1;\n}\n\n// Targets only webkit iOS devices\n.dj_webkit.dj_ios .form-control {\n transform: translateZ(0);\n}\n\n@media only screen and (min-width: $screen-md) {\n .form-horizontal {\n .control-label {\n margin-bottom: 0;\n padding-top: $form-input-padding-y;\n padding-bottom: $form-input-padding-y;\n line-height: $form-input-line-height;\n }\n }\n}\n\n@media only screen and (max-width: $screen-sm-max) {\n .form-group {\n flex-direction: column;\n }\n}\n\n@media only screen and (max-device-width: 1024px) and (-webkit-min-device-pixel-ratio: 0) {\n // Fixes alignment bug on iPads / iPhones where datefield is not aligned vertically\n input[type='date'],\n input[type='time'],\n input[type='datetime-local'],\n input[type='month'] {\n line-height: 1;\n }\n // Fix shrinking of date inputs because inability of setting a placeholder\n input[type='time']:not(.has-value):before,\n input[type='date']:not(.has-value):before,\n input[type='month']:not(.has-value):before,\n input[type='datetime-local']:not(.has-value):before {\n margin-right: 0.5em;\n content: attr(placeholder) !important;\n color: #AAAAAA;\n }\n input[type='time'].has-value:before,\n input[type='date'].has-value:before,\n input[type='month'].has-value:before,\n input[type='datetime-local'].has-value:before {\n content: '' !important;\n }\n}\n\n@media (-ms-high-contrast: none), (-ms-high-contrast: active) {\n // Target IE10+\n .form-group {\n display: block;\n }\n}\n\n[dir='rtl'] {\n // Dropdown input widget\n select.form-control {\n padding-right: 30px;\n padding-left: 0;\n background-position: #{$form-input-padding-x} center;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Alerts\n\n Default Bootstrap Alert boxes. Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages\n========================================================================== */\n\n.alert {\n margin-top: 0; // want to align it with padding of a page\n padding: 15px;\n border: 0;\n border-radius: 4px;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Alerts\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n.alert-bordered {\n border: 1px solid;\n}\n\n// Color variations\n.alert-success {\n color: $alert-success-color;\n border-color: $alert-success-border-color;\n background-color: $alert-success-bg;\n}\n\n.alert-info {\n color: $alert-info-color;\n border-color: $alert-info-border-color;\n background-color: $alert-info-bg;\n}\n\n.alert-warning {\n color: $alert-warning-color;\n border-color: $alert-warning-border-color;\n background-color: $alert-warning-bg;\n}\n\n.alert-danger {\n color: $alert-danger-color;\n border-color: $alert-danger-border-color;\n background-color: $alert-danger-bg;\n}\n\n//== State\n//## Styling when component is in certain state\n//-------------------------------------------------------------------------------------------------------------------//\n.has-error .alert {\n margin-top: 8px;\n margin-bottom: 0;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Backgrounds\n\n Different background components, all managed by variables\n========================================================================== */\n\n.background-main {\n background-color: $bg-color !important;\n}\n\n.background-secondary {\n background-color: $bg-color-secondary !important;\n}\n\n.background-default {\n background-color: $brand-default !important;\n}\n\n.background-default-darker {\n background-color: $color-default-darker !important;\n}\n\n.background-default-dark {\n background-color: $color-default-dark !important;\n}\n\n.background-default-light {\n background-color: $color-default-light !important;\n}\n\n.background-default-lighter {\n background-color: $color-default-lighter !important;\n}\n\n.background-inverse {\n background-color: $brand-inverse !important;\n}\n\n.background-inverse-darker {\n background-color: $color-inverse-darker !important;\n}\n\n.background-inverse-dark {\n background-color: $color-inverse-dark !important;\n}\n\n.background-inverse-light {\n background-color: $color-inverse-light !important;\n}\n\n.background-inverse-lighter {\n background-color: $color-inverse-lighter !important;\n}\n\n.background-primary {\n background-color: $brand-primary !important;\n}\n\n.background-primary-darker {\n background-color: $color-primary-darker !important;\n}\n\n.background-primary-dark {\n background-color: $color-primary-dark !important;\n}\n\n.background-primary-light {\n background-color: $color-primary-light !important;\n}\n\n.background-primary-lighter {\n background-color: $color-primary-lighter !important;\n}\n\n.background-info {\n background-color: $brand-info !important;\n}\n\n.background-info-darker {\n background-color: $color-info-darker !important;\n}\n\n.background-info-dark {\n background-color: $color-info-dark !important;\n}\n\n.background-info-light {\n background-color: $color-info-light !important;\n}\n\n.background-info-lighter {\n background-color: $color-info-lighter !important;\n}\n\n.background-success {\n background-color: $brand-success !important;\n}\n\n.background-success-darker {\n background-color: $color-success-darker !important;\n}\n\n.background-success-dark {\n background-color: $color-success-dark !important;\n}\n\n.background-success-light {\n background-color: $color-success-light !important;\n}\n\n.background-success-lighter {\n background-color: $color-success-lighter !important;\n}\n\n.background-warning {\n background-color: $brand-warning !important;\n}\n\n.background-warning-darker {\n background-color: $color-warning-darker !important;\n}\n\n.background-warning-dark {\n background-color: $color-warning-dark !important;\n}\n\n.background-warning-light {\n background-color: $color-warning-light !important;\n}\n\n.background-warning-lighter {\n background-color: $color-warning-lighter !important;\n}\n\n.background-danger {\n background-color: $brand-danger !important;\n}\n\n.background-danger-darker {\n background-color: $color-danger-darker !important;\n}\n\n.background-danger-dark {\n background-color: $color-danger-dark !important;\n}\n\n.background-danger-light {\n background-color: $color-danger-light !important;\n}\n\n.background-danger-lighter {\n background-color: $color-danger-lighter !important;\n}\n\n.background-brand-gradient {\n background-image: $brand-gradient !important;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Buttons\n\n Default Bootstrap and Mendix Buttons\n========================================================================== */\n\n.btn,\n.mx-button {\n display: inline-block;\n margin-bottom: 0;\n padding: 0.6em 1em;\n cursor: pointer;\n -moz-user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n -moz-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n -webkit-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n text-align: center;\n vertical-align: middle;\n white-space: nowrap;\n color: $btn-default-color;\n border: 1px solid $btn-default-border-color;\n border-radius: $btn-border-radius;\n background-color: $btn-default-bg;\n background-image: none;\n box-shadow: none;\n text-shadow: none;\n font-size: $btn-font-size;\n line-height: $line-height-base;\n\n &:hover,\n &:focus,\n &:active,\n &:active:focus {\n outline: none;\n box-shadow: none;\n }\n\n &[aria-disabled] {\n cursor: not-allowed;\n pointer-events: none;\n opacity: 0.65;\n filter: alpha(opacity=65);\n }\n\n @if $btn-bordered != false {\n @extend .btn-bordered;\n }\n}\n\n// Mendix button link\n.mx-link {\n padding: 0;\n color: $link-color;\n\n &[aria-disabled='true'] {\n cursor: not-allowed;\n pointer-events: none;\n opacity: 0.65;\n filter: alpha(opacity=65);\n }\n}\n\n// Images and icons in buttons\n.btn,\n.mx-button,\n.mx-link {\n img {\n //height: auto; // MXUI override who set the height on 16px default\n height: $font-size-default + 4px;\n margin-right: 5px;\n vertical-align: text-top;\n }\n}\n\n//== Phone specific\n//-------------------------------------------------------------------------------------------------------------------//\n.profile-phone {\n .btn,\n .mx-link {\n &:active {\n -webkit-transform: translateY(1px);\n transform: translateY(1px);\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Buttons\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Color variations\n.btn,\n.btn-default {\n @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border-color, $btn-default-bg-hover);\n}\n\n.btn-primary {\n @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border-color, $btn-primary-bg-hover);\n}\n\n.btn-inverse {\n @include button-variant($btn-inverse-color, $btn-inverse-bg, $btn-inverse-border-color, $btn-inverse-bg-hover);\n}\n\n.btn-success {\n @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border-color, $btn-success-bg-hover);\n}\n\n.btn-info {\n @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border-color, $btn-info-bg-hover);\n}\n\n.btn-warning {\n @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border-color, $btn-warning-bg-hover);\n}\n\n.btn-danger {\n @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border-color, $btn-danger-bg-hover);\n}\n\n// Button Sizes\n.btn-lg {\n font-size: $font-size-large;\n img {\n height: calc(#{$font-size-small} + 4px);\n }\n}\n\n.btn-sm {\n font-size: $font-size-small;\n img {\n height: calc(#{$font-size-small} + 4px);\n }\n}\n\n// Button Image\n.btn-image {\n padding: 0;\n vertical-align: middle;\n border-style: none;\n background-color: transparent;\n img {\n display: block; // or else the button doesn't get a width\n height: auto; // Image set height\n }\n &:hover,\n &:focus {\n background-color: transparent;\n }\n}\n\n// Icon buttons\n.btn-icon {\n & > img,\n & > .glyphicon {\n margin: 0;\n }\n}\n\n.btn-icon-right {\n & > img,\n & > .glyphicon {\n float: right;\n margin-left: 5px;\n }\n}\n\n.btn-icon-top {\n padding-right: 0;\n padding-left: 0;\n & > img,\n & > .glyphicon {\n display: block;\n margin: 0 0 5px 0;\n }\n}\n\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Checkbox\n\n Default Mendix Checkbox Widget\n========================================================================== */\n\n.mx-checkbox.label-after {\n flex-wrap: wrap;\n\n .control-label {\n padding: 0;\n }\n}\n\ninput[type='checkbox'] {\n position: relative !important; //Remove after mxui merge\n width: 16px;\n height: 16px;\n margin: 0 !important; // Remove after mxui merge\n cursor: pointer;\n -moz-user-select: none;\n -ms-user-select: none;\n -o-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n\n\n &::-ms-check {\n color: $form-input-border-color;\n border-color: $form-input-border-color;\n border-radius: $form-input-border-radius;\n background-color: $form-input-bg;\n }\n\n &:focus::-ms-check,\n &:checked::-ms-check {\n color: $form-input-border-focus-color;\n border-color: $form-input-border-focus-color;\n background-color: $form-input-bg-focus;\n }\n\n &:before,\n &:after {\n position: absolute;\n display: block;\n transition: all 0.3s ease;\n }\n\n &:before {\n // Checkbox\n width: 100%;\n height: 100%;\n content: '';\n border: 1px solid $form-input-border-color;\n border-radius: $form-input-border-radius;\n background-color: transparent;\n }\n\n &:after {\n // Checkmark\n width: 8px;\n height: 4px;\n margin: 5px 4px;\n transform: rotate(-45deg);\n pointer-events: none;\n border: 2px solid #FFFFFF;\n border-top: 0;\n border-right: 0;\n }\n\n &:not(:disabled):not(:checked):hover:after {\n content: '';\n border-color: $form-input-bg-hover; // color of checkmark on hover\n }\n\n &:checked:before {\n border-color: $form-input-border-focus-color;\n background-color: $form-input-border-focus-color;\n }\n\n &:checked:after {\n content: '';\n }\n\n &:disabled:before {\n background-color: $form-input-bg-disabled;\n }\n\n &:checked:disabled:before {\n border-color: transparent;\n background-color: rgba($form-input-border-focus-color, 0.4);\n }\n\n &:disabled:after,\n &:checked:disabled:after {\n border-color: $form-input-bg-disabled;\n }\n\n & + .control-label {\n margin-left: $form-label-gutter;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Grid\n\n Default Mendix Grid (used for Mendix Datagrid)\n========================================================================== */\n\n.mx-grid {\n padding: 0px;\n border: 0;\n border-radius: 0;\n .mx-grid-controlbar {\n margin: 10px 0;\n /* Paging */\n .mx-grid-pagingbar {\n /* Buttons */\n .mx-button {\n padding: 6px;\n color: $grid-paging-color;\n border-color: $grid-paging-border-color;\n background-color: $grid-paging-bg;\n &:hover {\n color: $grid-paging-color-hover;\n border-color: $grid-paging-border-color-hover;\n background-color: $grid-paging-bg-hover;\n }\n }\n /* Text Paging .. to .. to .. */\n .mx-grid-paging-status {\n padding: 0 8px 8px;\n }\n }\n }\n .mx-grid-searchbar {\n margin: 10px 0;\n .mx-grid-search-item {\n .mx-grid-search-label {\n vertical-align: middle;\n label {\n padding-top: 5px;\n }\n }\n .mx-grid-search-input {\n display: inline-flex;\n .form-control {\n height: 28px;\n font-size: 11px;\n }\n select.form-control {\n padding: 3px;\n vertical-align: middle;\n }\n .mx-button {\n height: 28px;\n padding-top: 2px;\n padding-bottom: 2px;\n }\n }\n }\n }\n}\n\n// Remove default border from grid inside a Mendix Dataview\n.mx-dataview .mx-grid {\n border: 0;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Datagrid Default\n\n Default Mendix Datagrid Widget. The datagrid shows a list of objects in a grid\n========================================================================== */\n\n.mx-datagrid {\n table {\n border-width: 0;\n background-color: transparent;\n /* Table header */\n th {\n border-style: solid;\n border-color: $grid-border-color;\n border-top-width: 0;\n border-right: 0;\n border-bottom-width: 1px;\n border-left: 0;\n background-color: $grid-bg-header;\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n vertical-align: middle;\n .mx-datagrid-head-caption {\n white-space: normal;\n }\n }\n /* Table Body */\n tbody tr {\n td {\n @include transition();\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n vertical-align: middle;\n border-width: 0;\n border-color: $grid-border-color;\n border-bottom-width: 1px;\n border-bottom-style: solid;\n background-color: $grid-bg;\n &:focus {\n outline: none;\n }\n /* Text without spaces */\n .mx-datagrid-data-wrapper {\n text-overflow: ellipsis;\n }\n }\n &.selected td,\n &.selected:hover td {\n color: $grid-selected-color;\n background-color: $grid-bg-selected !important;\n }\n }\n /* Table Footer */\n tfoot {\n > tr > th {\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n border-width: 0;\n background-color: $grid-footer-bg;\n }\n > tr > td {\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n border-width: 0;\n background-color: $grid-bg;\n font-weight: $font-weight-bold;\n }\n }\n & *:focus {\n outline: 0;\n }\n }\n}","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Datagrid Default\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Striped style\n.datagrid-striped.mx-datagrid {\n table {\n th {\n border-width: 0;\n }\n\n tbody tr {\n td {\n border-top-width: 0;\n }\n\n &:nth-child(odd) td {\n background-color: $grid-bg-striped;\n }\n }\n }\n}\n\n// Bordered style\n.datagrid-bordered.mx-datagrid {\n table {\n border: 1px solid;\n\n th {\n border: 1px solid $grid-border-color;\n }\n\n tbody tr {\n td {\n border: 1px solid $grid-border-color;\n }\n }\n }\n\n tfoot {\n > tr > th {\n border-width: 0;\n background-color: $grid-footer-bg;\n }\n\n > tr > td {\n border-width: 1px;\n }\n }\n}\n\n// Transparent style so you can see the background\n.datagrid-transparent.mx-datagrid {\n table {\n background-color: transparent;\n\n tbody tr {\n &:nth-of-type(odd) {\n background-color: transparent;\n }\n\n td {\n background-color: transparent;\n }\n }\n }\n}\n\n// Hover style activated\n.datagrid-hover.mx-datagrid {\n table {\n tbody tr {\n &:hover td {\n background-color: $grid-bg-hover !important;\n }\n\n &.selected:hover td {\n background-color: $grid-bg-selected-hover !important;\n }\n }\n }\n}\n\n// Datagrid Row Sizes\n.datagrid-lg.mx-datagrid {\n table {\n th {\n padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2) ($grid-padding-left * 2);\n }\n\n tbody tr {\n td {\n padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2) ($grid-padding-left * 2);\n }\n }\n }\n}\n\n.datagrid-sm.mx-datagrid {\n table {\n th {\n padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2) ($grid-padding-left / 2);\n }\n\n tbody tr {\n td {\n padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2) ($grid-padding-left/ 2);\n }\n }\n }\n}\n\n// Datagrid Full Search\n// Default Mendix Datagrid Widget with adjusted search field. Only 1 search field is allowed\n.datagrid-fullsearch.mx-grid {\n .mx-grid-search-button {\n @extend .btn-primary;\n }\n\n .mx-grid-reset-button {\n display: none;\n }\n\n .mx-grid-search-item {\n display: block;\n }\n\n .mx-grid-search-label {\n display: none;\n }\n\n .mx-grid-searchbar {\n .mx-grid-search-controls {\n position: absolute;\n right: 0;\n }\n\n .mx-grid-search-input {\n width: 80%;\n padding-left: 0;\n\n .btn,\n .form-control {\n height: 35px;\n font-size: 12px;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Dataview\n\n Default Mendix Dataview Widget. The data view is used for showing the contents of exactly one object\n========================================================================== */\n\n.mx-dataview {\n /* Control bar */\n .mx-dataview-controls {\n // Needed to clear the bootstrap columns (get float: left)\n clear: both;\n margin-top: 10px;\n padding: 8px 0;\n border-top: 1px solid $dataview-controls-border-color;\n border-radius: 0;\n background-color: $dataview-controls-bg;\n /* Buttons */\n .mx-button {\n margin-right: 0.3em;\n margin-bottom: 0;\n &:last-child {\n margin-right: 0;\n }\n }\n }\n /* Dataview-content gives problems for nexted layout grid containers */\n > .mx-dataview-content > .mx-container-nested {\n > .row {\n margin-right: 0;\n margin-left: 0;\n }\n }\n /* Dataview empty message */\n .mx-dataview-message {\n color: $dataview-emptymessage-color;\n background: $dataview-emptymessage-bg;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Date Picker\n \n Default Mendix Date Picker Widget.\n========================================================================== */\n\n.mx-calendar {\n /* (must be higher than popup z-index) */\n z-index: 10010 !important;\n padding: 10px;\n font-size: 12px;\n background: $bg-color;\n border-radius: $border-radius-default;\n border: 1px solid $border-color-default;\n box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.06);\n .mx-calendar-month-header {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n margin: 0 3px 10px 3px;\n }\n .mx-calendar-month-next,\n .mx-calendar-month-previous,\n .mx-calendar-month-dropdown {\n border: 0;\n cursor: pointer;\n background: transparent;\n }\n .mx-calendar-month-next,\n .mx-calendar-month-previous {\n &:hover {\n color: $brand-primary;\n }\n }\n .mx-calendar-month-dropdown {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n .mx-calendar-month-current:first-child {\n margin-right: 10px;\n }\n }\n th {\n color: $brand-primary;\n }\n th,\n td {\n width: 35px;\n height: 35px;\n text-align: center;\n }\n td {\n color: $font-color-default;\n\n &:hover {\n cursor: pointer;\n border-radius: 50%;\n color: $brand-primary;\n background-color: $brand-default;\n }\n }\n .mx-calendar-day-month-next,\n .mx-calendar-day-month-previous {\n color: lighten($font-color-default, 45%);\n }\n .mx-calendar-day-selected,\n .mx-calendar-day-selected:hover {\n color: #fff;\n border-radius: 50%;\n background: $brand-primary;\n }\n\n //\n\n .mx-calendar-year-switcher {\n text-align: center;\n margin-top: 10px;\n color: lighten($brand-primary, 30%);\n span.mx-calendar-year-selected {\n color: $brand-primary;\n margin-left: 10px;\n margin-right: 10px;\n }\n span:hover {\n cursor: pointer;\n text-decoration: underline;\n background-color: transparent;\n }\n }\n}\n\n.mx-calendar-month-dropdown-options {\n /* (must be higher than popup z-index) */\n z-index: 10020 !important;\n position: absolute;\n top: 25px;\n padding: 2px 10px;\n border-radius: $border-radius-default;\n background-color: $bg-color;\n div {\n cursor: pointer;\n font-size: 12px;\n padding: 2px 0;\n &:hover,\n &:focus {\n color: $brand-primary;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Header\n\n Default Mendix Mobile Header\n========================================================================== */\n\n.mx-header {\n z-index: 100;\n display: flex;\n width: 100%;\n height: $m-header-height;\n padding: 0;\n text-align: initial;\n color: $m-header-color;\n border-bottom: 1px solid $border-color-default;\n background-color: $m-header-bg;\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14);\n\n // Reset mxui\n div.mx-header-left,\n div.mx-header-right {\n position: relative;\n top: initial;\n right: initial;\n left: initial;\n display: flex;\n align-items: center;\n width: 25%;\n height: 100%;\n .mx-placeholder {\n display: flex;\n align-items: center;\n height: 100%;\n }\n }\n\n div.mx-header-left .mx-placeholder {\n order: 1;\n .mx-placeholder {\n justify-content: flex-start;\n }\n }\n div.mx-header-center {\n overflow: hidden;\n flex: 1;\n order: 2;\n text-align: center;\n\n .mx-title {\n overflow: hidden;\n width: 100%;\n margin: 0;\n text-overflow: ellipsis;\n color: $m-header-color;\n font-size: $m-header-title-size;\n line-height: $m-header-height;\n }\n }\n div.mx-header-right {\n order: 3;\n .mx-placeholder {\n justify-content: flex-end;\n }\n }\n\n // Content magic\n .mx-link {\n display: flex;\n align-items: center;\n height: 100%;\n -webkit-transition: all 0.2s;\n -moz-transition: all 0.2s;\n transition: all 0.2s;\n text-decoration: none;\n .glyphicon {\n top: 0;\n font-size: 23px;\n }\n &:active {\n -webkit-transform: translateY(1px);\n transform: translateY(1px);\n color: $link-hover-color;\n }\n }\n\n .mx-link,\n .btn,\n img {\n padding: 0 8px;\n }\n\n .mx-sidebartoggle {\n font-size: 24px;\n line-height: $m-header-height;\n img {\n height: 20px;\n }\n }\n}\n\n// RTL support\nbody[dir='rtl'] {\n .mx-header-left {\n order: 3;\n }\n .mx-header-right {\n order: 1;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Glyphicons\n\n Default Mendix Glyphicons\n========================================================================== */\n\n.mx-glyphicon {\n &:before {\n display: inline-block;\n margin-top: -0.2em;\n margin-right: 0.4555555em;\n vertical-align: middle;\n font-family: \"Glyphicons Halflings\";\n font-weight: $font-weight-normal;\n font-style: normal;\n line-height: inherit;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Groupbox\n\n Default Mendix Groupboxes\n========================================================================== */\n\n.mx-groupbox {\n margin: 0;\n > .mx-groupbox-header {\n margin: 0;\n color: $groupbox-default-color;\n border-width: 1px 1px 0 1px;\n border-style: solid;\n border-color: $groupbox-default-bg;\n background: $groupbox-default-bg;\n font-size: $font-size-h5;\n .mx-groupbox-collapse-icon {\n margin-top: 0.1em;\n }\n }\n > .mx-groupbox-body {\n padding: 10px 15px;\n border-width: 1px;\n border-style: solid;\n border-color: $groupbox-default-bg;\n background-color: #FFFFFF;\n }\n .mx-groupbox-header + .mx-groupbox-body {\n border-top: none;\n }\n &.collapsed > .mx-groupbox-header {\n }\n}","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Groupbox\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Color variations\n.groupbox-default {\n @include groupbox-variant($groupbox-default-color, $groupbox-default-bg);\n}\n\n.groupbox-primary {\n @include groupbox-variant($groupbox-primary-color, $groupbox-primary-bg);\n}\n\n.groupbox-inverse {\n @include groupbox-variant($groupbox-inverse-color, $groupbox-inverse-bg);\n}\n\n// Success appears as green\n.groupbox-success {\n @include groupbox-variant($groupbox-success-color, $groupbox-success-bg);\n}\n\n// Info appears as blue-green\n.groupbox-info {\n @include groupbox-variant($groupbox-info-color, $groupbox-info-bg);\n}\n\n// Warning appears as orange\n.groupbox-warning {\n @include groupbox-variant($groupbox-warning-color, $groupbox-warning-bg);\n}\n\n// Danger and error appear as red\n.groupbox-danger {\n @include groupbox-variant($groupbox-danger-color, $groupbox-danger-bg);\n}\n\n// white appears as full white\n.groupbox-white {\n @include groupbox-variant($groupbox-white-color, $groupbox-white-bg);\n}\n\n.groupbox-transparent {\n border-bottom: 1px solid $border-color-default;\n > .mx-groupbox-header {\n padding: 15px 0;\n color: $gray-darker;\n border-style: none;\n background: transparent;\n font-size: 16px;\n font-weight: $font-weight-semibold;\n }\n .mx-groupbox-body {\n padding: 15px 0;\n border-style: none;\n background-color: transparent;\n }\n .mx-groupbox-collapse-icon {\n color: $brand-primary;\n }\n}\n\n// Header options\n.groupbox-h1 > .mx-groupbox-header {\n font-size: $font-size-h1;\n}\n\n.groupbox-h2 > .mx-groupbox-header {\n font-size: $font-size-h2;\n}\n\n.groupbox-h3 > .mx-groupbox-header {\n font-size: $font-size-h3;\n}\n\n.groupbox-h4 > .mx-groupbox-header {\n font-size: $font-size-h4;\n}\n\n.groupbox-h5 > .mx-groupbox-header {\n font-size: $font-size-h5;\n}\n\n.groupbox-h6 > .mx-groupbox-header {\n font-size: $font-size-h6;\n}\n\n// Callout Look and Feel\n.groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n border: 0;\n background-color: $callout-info-bg;\n }\n .mx-groupbox-header + .mx-groupbox-body {\n padding-top: 0;\n }\n}\n\n.groupbox-info.groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n background-color: $callout-info-bg;\n }\n > .mx-groupbox-header {\n color: $callout-info-color;\n }\n}\n\n.groupbox-success.groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n background-color: $callout-success-bg;\n }\n > .mx-groupbox-header {\n color: $callout-success-color;\n }\n}\n\n.groupbox-warning.groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n background-color: $callout-warning-bg;\n }\n > .mx-groupbox-header {\n color: $callout-warning-color;\n }\n}\n\n.groupbox-danger.groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n background-color: $callout-danger-bg;\n }\n > .mx-groupbox-header {\n color: $callout-danger-color;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Images\n\n Default Mendix Image Widgets\n========================================================================== */\n\nimg.img-rounded,\n.img-rounded img {\n border-radius: 6px;\n}\n\nimg.img-thumbnail,\n.img-thumbnail img {\n display: inline-block;\n max-width: 100%;\n height: auto;\n padding: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -moz-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n border: 1px solid $brand-default;\n border-radius: 4px;\n background-color: #FFFFFF;\n line-height: $line-height-base;\n}\n\nimg.img-circle,\n.img-circle img {\n border-radius: 50%;\n}\n\nimg.img-auto,\n.img-auto img {\n width: auto !important;\n max-width: 100% !important;\n height: auto !important;\n max-height: 100% !important;\n}\n\nimg.img-center,\n.img-center img {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Labels\n\n Default labels combined with Bootstrap labels\n========================================================================== */\n\n.label {\n display: inline-block;\n padding: 0.2em 0.6em 0.3em;\n text-align: center;\n vertical-align: baseline;\n white-space: nowrap;\n color: #ffffff;\n border-radius: 0.25em;\n font-size: 100%;\n line-height: 1;\n margin: 0;\n\n .form-control-static {\n all: unset;\n font-weight: $font-weight-normal;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Labels\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Color variations\n.label-default {\n color: $label-default-color;\n background-color: $label-default-bg;\n}\n\n.label-primary {\n color: $label-primary-color;\n background-color: $label-primary-bg;\n}\n\n.label-success {\n color: $label-success-color;\n background-color: $label-success-bg;\n}\n\n.label-inverse {\n color: $label-inverse-color;\n background-color: $label-inverse-bg;\n}\n\n.label-info {\n color: $label-info-color;\n background-color: $label-info-bg;\n}\n\n.label-warning {\n color: $label-warning-color;\n background-color: $label-warning-bg;\n}\n\n.label-danger {\n color: $label-danger-color;\n background-color: $label-danger-bg;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Listview\n\n Default Mendix Listview Widget. The list view shows a list of objects arranged vertically. Each object is shown using a template\n========================================================================== */\n.mx-listview {\n // Remove widget padding\n padding: 0;\n /* Clear search button (overrides load more button stying) */\n // Search bar\n .mx-listview-searchbar {\n margin-bottom: $gutter-size;\n\n .btn {\n width: auto;\n }\n }\n\n /* Load more button */\n & > .btn {\n width: 100%;\n margin: 10px auto;\n }\n\n & > ul {\n margin: 0;\n\n .mx-listview-empty {\n border-style: none;\n background-color: transparent;\n }\n\n & > li {\n @include transition();\n padding: $listview-padding-top $listview-padding-right $listview-padding-bottom $listview-padding-left;\n border-width: 1px 0 0 0;\n border-style: solid;\n border-color: $grid-border-color;\n background-color: $grid-bg;\n\n &:first-child {\n border-radius: 0; // Reset mxui listview style\n }\n\n &:last-child {\n border-bottom: 1px solid $grid-border-color;\n border-radius: 0; // Reset mxui listview style\n }\n\n &:focus,\n &:active {\n outline: 0;\n background-color: $grid-bg-hover;\n }\n\n &.selected {\n background-color: $grid-bg-selected;\n }\n }\n }\n\n .mx-layoutgrid {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n}\n\n//== Phone specific\n//-------------------------------------------------------------------------------------------------------------------//\n.profile-phone .mx-listview {\n .mx-listview-searchbar {\n margin-bottom: 3px;\n background: #FFFFFF;\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14);\n\n input {\n padding: 14px 15px;\n color: #555555;\n border-style: none;\n border-radius: 0;\n box-shadow: none;\n }\n\n .btn {\n padding: 14px 15px;\n color: inherit;\n border-style: none;\n }\n }\n\n & > ul > li {\n &:first-child {\n border-top: none;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Listview\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Bordered\n.listview-bordered.mx-listview {\n & > ul > li {\n border: 1px solid $grid-border-color;\n border-top: 0;\n\n &:first-child {\n border-top: 1px solid $grid-border-color;\n border-radius: 0;\n }\n\n &:last-child {\n border-radius: 0;\n }\n }\n}\n\n// Striped\n.listview-striped.mx-listview {\n & > ul > li:nth-child(2n + 1) {\n background-color: $grid-bg-striped;\n }\n}\n\n// Items as seperated blocks\n.listview-seperated.mx-listview {\n & > ul > li {\n margin-bottom: $gutter-size;\n border-width: 1px;\n border-style: solid;\n border-radius: $border-radius-default;\n }\n}\n\n// Remove all styling\n.listview-stylingless.mx-listview {\n & > ul > li {\n padding: 0;\n cursor: default;\n border: 0;\n background-color: transparent;\n\n &:hover,\n &:focus,\n &:active {\n background-color: transparent;\n }\n\n &.selected {\n background-color: transparent !important;\n\n &:hover,\n &:focus,\n &:active {\n background-color: transparent !important;\n }\n }\n }\n}\n\n// Hover style activated\n.listview-hover.mx-listview {\n & > ul > li {\n &:hover,\n &:focus,\n &:active {\n background-color: $grid-bg-hover !important;\n }\n\n &.selected {\n &:hover,\n &:focus,\n &:active {\n background-color: $grid-bg-selected-hover !important;\n }\n }\n }\n}\n\n// Templategrid Row Sizes\n.listview-lg.mx-listview {\n & > ul > li {\n padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2) ($grid-padding-left * 2);\n }\n}\n\n.listview-sm.mx-listview {\n & > ul > li {\n padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2) ($grid-padding-left / 2);\n }\n}\n\n// Bootstrap columns\n.mx-listview[class*='lv-col'] {\n overflow: hidden; // For if it is not in a layout, to prevent scrollbars\n & > ul {\n display: block; // normal a table\n margin-right: -1 * $gutter-size;\n margin-left: -1 * $gutter-size;\n\n &::before,\n &::after {\n // clearfix\n display: table;\n clear: both;\n content: ' ';\n }\n\n & > li {\n // bootstrap col\n position: relative;\n display: block; // normal a table\n float: left;\n min-height: 1px;\n padding-right: $gutter-size;\n padding-left: $gutter-size;\n border: 0;\n @media (max-width: $screen-md-max) {\n width: 100% !important;\n }\n\n & > .mx-dataview {\n overflow: hidden;\n }\n }\n }\n\n &.lv-col-xs-12 > ul > li {\n width: 100% !important;\n }\n\n &.lv-col-xs-11 > ul > li {\n width: 91.66666667% !important;\n }\n\n &.lv-col-xs-10 > ul > li {\n width: 83.33333333% !important;\n }\n\n &.lv-col-xs-9 > ul > li {\n width: 75% !important;\n }\n\n &.lv-col-xs-8 > ul > li {\n width: 66.66666667% !important;\n }\n\n &.lv-col-xs-7 > ul > li {\n width: 58.33333333% !important;\n }\n\n &.lv-col-xs-6 > ul > li {\n width: 50% !important;\n }\n\n &.lv-col-xs-5 > ul > li {\n width: 41.66666667% !important;\n }\n\n &.lv-col-xs-4 > ul > li {\n width: 33.33333333% !important;\n }\n\n &.lv-col-xs-3 > ul > li {\n width: 25% !important;\n }\n\n &.lv-col-xs-2 > ul > li {\n width: 16.66666667% !important;\n }\n\n &.lv-col-xs-1 > ul > li {\n width: 8.33333333% !important;\n }\n\n @media (min-width: $screen-md) {\n &.lv-col-sm-12 > ul > li {\n width: 100% !important;\n }\n &.lv-col-sm-11 > ul > li {\n width: 91.66666667% !important;\n }\n &.lv-col-sm-10 > ul > li {\n width: 83.33333333% !important;\n }\n &.lv-col-sm-9 > ul > li {\n width: 75% !important;\n }\n &.lv-col-sm-8 > ul > li {\n width: 66.66666667% !important;\n }\n &.lv-col-sm-7 > ul > li {\n width: 58.33333333% !important;\n }\n &.lv-col-sm-6 > ul > li {\n width: 50% !important;\n }\n &.lv-col-sm-5 > ul > li {\n width: 41.66666667% !important;\n }\n &.lv-col-sm-4 > ul > li {\n width: 33.33333333% !important;\n }\n &.lv-col-sm-3 > ul > li {\n width: 25% !important;\n }\n &.lv-col-sm-2 > ul > li {\n width: 16.66666667% !important;\n }\n &.lv-col-sm-1 > ul > li {\n width: 8.33333333% !important;\n }\n }\n @media (min-width: $screen-lg) {\n &.lv-col-md-12 > ul > li {\n width: 100% !important;\n }\n &.lv-col-md-11 > ul > li {\n width: 91.66666667% !important;\n }\n &.lv-col-md-10 > ul > li {\n width: 83.33333333% !important;\n }\n &.lv-col-md-9 > ul > li {\n width: 75% !important;\n }\n &.lv-col-md-8 > ul > li {\n width: 66.66666667% !important;\n }\n &.lv-col-md-7 > ul > li {\n width: 58.33333333% !important;\n }\n &.lv-col-md-6 > ul > li {\n width: 50% !important;\n }\n &.lv-col-md-5 > ul > li {\n width: 41.66666667% !important;\n }\n &.lv-col-md-4 > ul > li {\n width: 33.33333333% !important;\n }\n &.lv-col-md-3 > ul > li {\n width: 25% !important;\n }\n &.lv-col-md-2 > ul > li {\n width: 16.66666667% !important;\n }\n &.lv-col-md-1 > ul > li {\n width: 16.66666667% !important;\n }\n }\n @media (min-width: $screen-xl) {\n &.lv-col-lg-12 > ul > li {\n width: 100% !important;\n }\n &.lv-col-lg-11 > ul > li {\n width: 91.66666667% !important;\n }\n &.lv-col-lg-10 > ul > li {\n width: 83.33333333% !important;\n }\n &.lv-col-lg-9 > ul > li {\n width: 75% !important;\n }\n &.lv-col-lg-8 > ul > li {\n width: 66.66666667% !important;\n }\n &.lv-col-lg-7 > ul > li {\n width: 58.33333333% !important;\n }\n &.lv-col-lg-6 > ul > li {\n width: 50% !important;\n }\n &.lv-col-lg-5 > ul > li {\n width: 41.66666667% !important;\n }\n &.lv-col-lg-4 > ul > li {\n width: 33.33333333% !important;\n }\n &.lv-col-lg-3 > ul > li {\n width: 25% !important;\n }\n &.lv-col-lg-2 > ul > li {\n width: 16.66666667% !important;\n }\n &.lv-col-lg-1 > ul > li {\n width: 8.33333333% !important;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Modals\n\n Default Mendix Modals. Modals are streamlined, but flexible, dialog prompts with the minimum required functionality and smart defaults\n========================================================================== */\n.modal-dialog {\n .modal-content {\n border: 1px solid $modal-header-border-color;\n border-radius: 4px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n\n .modal-header {\n padding: 15px 20px;\n border-bottom-color: $modal-header-border-color;\n border-radius: 0; // Because of the class .mx-window-active in mxui.css\n background-color: $modal-header-bg;\n\n h4 {\n margin: 0;\n color: $modal-header-color;\n font-size: 16px;\n font-weight: $font-weight-bold;\n }\n\n .close {\n margin-top: -3px;\n opacity: 1;\n /* For IE8 and earlier */\n color: $modal-header-color;\n text-shadow: none;\n filter: alpha(opacity=100);\n }\n }\n\n .modal-body {\n padding: 20px;\n }\n\n .modal-footer {\n display: flex;\n justify-content: flex-end;\n margin-top: 0;\n padding: 20px;\n border-style: none;\n }\n }\n}\n\n// Default Mendix Window Modal\n.mx-window {\n // If popup direct child is a dataview it gets the class mx-window-view\n &.mx-window-view .mx-window-body {\n overflow: hidden; // hide second scrollbar in edit page\n padding: 0;\n // Dataview in popup\n > .mx-dataview > .mx-dataview-content,\n > .mx-placeholder > .mx-dataview > .mx-dataview-content {\n padding: 20px;\n }\n\n > .mx-dataview > .mx-dataview-controls,\n > .mx-placeholder > .mx-dataview > .mx-dataview-controls {\n display: flex;\n justify-content: flex-end;\n margin: 0;\n padding: 20px;\n text-align: left;\n border-top: 1px solid $modal-header-border-color;\n }\n }\n\n .mx-dataview-controls {\n padding-bottom: 0;\n }\n\n .mx-layoutgrid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n// Login modal\n.mx-login {\n .modal-body {\n padding: 0 15px;\n }\n\n .modal-content {\n input {\n height: 56px;\n padding: 12px 12px;\n border: 1px solid #EEEEEE;\n background: #EEEEEE;\n box-shadow: none;\n font-size: 16px;\n\n &:focus {\n border-color: #66AFE9;\n }\n }\n }\n\n .modal-header,\n .modal-footer {\n border: 0;\n }\n\n button {\n font-size: 16px;\n }\n\n h4 {\n color: #AAAAAA;\n font-size: 20px;\n font-weight: $font-weight-bold;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Navigation\n\n Default Mendix Navigation Bar\n========================================================================== */\n.mx-navbar {\n margin: 0;\n border-style: none;\n border-radius: 0;\n background-color: $navigation-bg;\n\n ul.nav {\n margin: 0; // weird -margin if screen gets small (bootstrap)\n\n /* Navigation item */\n & > li.mx-navbar-item > a {\n display: flex;\n align-items: center;\n min-height: $topbar-minimalheight;\n padding: $navigation-item-padding;\n vertical-align: middle;\n color: $navigation-color;\n border-radius: 0;\n font-size: $navigation-font-size;\n font-weight: $font-weight-normal;\n\n /* Dropdown arrow */\n .caret {\n border-top-color: $navigation-color;\n border-bottom-color: $navigation-color;\n }\n\n &:hover,\n &:focus,\n &.active {\n text-decoration: none;\n color: $navigation-color-hover;\n background-color: $navigation-bg-hover;\n\n .caret {\n border-top-color: $navigation-color-active;\n border-bottom-color: $navigation-color-active;\n }\n }\n\n &.active {\n color: $navigation-color-active;\n background-color: $navigation-bg-active;\n }\n\n /* Dropdown */\n .mx-navbar-submenu::before {\n position: absolute;\n top: -9px;\n left: 15px;\n width: 0;\n height: 0;\n content: '';\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n border-width: 0 9px 9px 9px;\n border-style: solid;\n border-color: transparent transparent $navigation-border-color transparent;\n }\n\n // Image\n img {\n width: 20px; // Default size (so it looks good)\n height: auto;\n margin-right: 0.5em;\n }\n\n .glyphicon {\n top: 0;\n margin-right: 0.5em;\n vertical-align: middle;\n font-size: $navigation-glyph-size;\n }\n }\n\n & > .mx-navbar-item.active a {\n color: $navigation-color-active;\n }\n\n /* When hovering or the dropdown is open */\n & > .mx-navbar-item > a:hover,\n & > .mx-navbar-item > a:focus,\n & > .mx-navbar-item.open > a,\n & > .mx-navbar-item.open > a:hover,\n & > .mx-navbar-item.open > a:focus {\n text-decoration: none;\n color: $navigation-color-hover;\n background-color: $navigation-bg-hover;\n\n .caret {\n border-top-color: $navigation-color-hover;\n border-bottom-color: $navigation-color-hover;\n }\n }\n\n & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a {\n color: $navigation-sub-color-active;\n background-color: $navigation-sub-bg-active;\n\n .caret {\n border-top-color: $navigation-sub-color-active;\n border-bottom-color: $navigation-sub-color-active;\n }\n }\n }\n @media (max-width: $screen-md) {\n ul.nav > li.mx-navbar-item > a {\n padding: 10px 20px;\n }\n .mx-navbar-item.open .dropdown-menu {\n padding: 0;\n border-radius: 0;\n background-color: $navigation-sub-bg;\n\n & > li.mx-navbar-subitem > a {\n padding: 10px 20px;\n color: $navigation-sub-color;\n border-radius: 0;\n font-size: $navigation-sub-font-size;\n font-weight: $font-weight-normal;\n\n &:hover,\n &:focus {\n color: $navigation-sub-color-hover;\n background-color: $navigation-sub-bg-hover;\n }\n\n &.active {\n color: $navigation-sub-color-active;\n background-color: $navigation-sub-bg-active;\n }\n }\n }\n }\n\n /* remove focus */\n &:focus {\n outline: 0;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Navigation\n\n//== Regions\n//## Behavior in the different regions\n========================================================================== */\n// When used in topbar\n.region-topbar {\n .mx-navbar {\n background-color: $navtopbar-bg;\n ul.nav {\n /* Navigation item */\n & > li.mx-navbar-item > a {\n color: $navtopbar-color;\n font-size: $navtopbar-font-size;\n\n /* Dropdown arrow */\n .caret {\n border-top-color: $navtopbar-color;\n border-bottom-color: $navtopbar-color;\n }\n &:hover,\n &:focus,\n &.active {\n color: $navtopbar-color-hover;\n background-color: $navtopbar-bg-hover;\n .caret {\n border-top-color: $navtopbar-color-active;\n border-bottom-color: $navtopbar-color-active;\n }\n }\n &.active {\n color: $navtopbar-color-active;\n background-color: $navtopbar-bg-active;\n }\n\n /* Dropdown */\n .mx-navbar-submenu::before {\n border-color: transparent transparent $navtopbar-border-color transparent;\n }\n\n // Image\n .glyphicon {\n font-size: $navtopbar-glyph-size;\n }\n }\n\n /* When hovering or the dropdown is open */\n & > .mx-navbar-item > a:hover,\n & > .mx-navbar-item > a:focus,\n & > .mx-navbar-item.active a,\n & > .mx-navbar-item.open > a,\n & > .mx-navbar-item.open > a:hover,\n & > .mx-navbar-item.open > a:focus {\n color: $navtopbar-color-hover;\n background-color: $navtopbar-bg-hover;\n .caret {\n border-top-color: $navtopbar-color-hover;\n border-bottom-color: $navtopbar-color-hover;\n }\n }\n & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a {\n color: $navtopbar-sub-color-active;\n background-color: $navtopbar-sub-bg-active;\n .caret {\n border-top-color: $navtopbar-sub-color-active;\n border-bottom-color: $navtopbar-sub-color-active;\n }\n }\n }\n @media (max-width: $screen-md) {\n ul.nav > li.mx-navbar-item > a {\n }\n .mx-navbar-item.open .dropdown-menu {\n background-color: $navtopbar-sub-bg;\n & > li.mx-navbar-subitem > a {\n color: $navtopbar-sub-color;\n font-size: $navtopbar-sub-font-size;\n &:hover,\n &:focus {\n color: $navtopbar-sub-color-hover;\n background-color: $navtopbar-sub-bg-hover;\n }\n &.active {\n color: $navtopbar-sub-color-active;\n background-color: $navtopbar-sub-bg-active;\n }\n }\n }\n }\n }\n}\n\n// When used in sidebar\n.region-sidebar {\n .mx-navbar {\n background-color: $navsidebar-bg;\n ul.nav {\n /* Navigation item */\n & > li.mx-navbar-item > a {\n color: $navsidebar-color;\n font-size: $navsidebar-font-size;\n\n /* Dropdown arrow */\n .caret {\n border-top-color: $navsidebar-color;\n border-bottom-color: $navsidebar-color;\n }\n &:hover,\n &:focus,\n &.active {\n color: $navsidebar-color-hover;\n background-color: $navsidebar-bg-hover;\n .caret {\n border-top-color: $navsidebar-color-active;\n border-bottom-color: $navsidebar-color-active;\n }\n }\n &.active {\n color: $navsidebar-color-active;\n background-color: $navsidebar-bg-active;\n }\n\n /* Dropdown */\n .mx-navbar-submenu::before {\n border-color: transparent transparent $navsidebar-border-color transparent;\n }\n\n // Image\n .glyphicon {\n font-size: $navsidebar-glyph-size;\n }\n }\n\n /* When hovering or the dropdown is open */\n & > .mx-navbar-item > a:hover,\n & > .mx-navbar-item > a:focus,\n & > .mx-navbar-item.active a,\n & > .mx-navbar-item.open > a,\n & > .mx-navbar-item.open > a:hover,\n & > .mx-navbar-item.open > a:focus {\n color: $navsidebar-color-hover;\n background-color: $navsidebar-bg-hover;\n .caret {\n border-top-color: $navsidebar-color-hover;\n border-bottom-color: $navsidebar-color-hover;\n }\n }\n & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a {\n color: $navsidebar-sub-color-active;\n background-color: $navsidebar-sub-bg-active;\n .caret {\n border-top-color: $navsidebar-sub-color-active;\n border-bottom-color: $navsidebar-sub-color-active;\n }\n }\n }\n @media (max-width: $screen-md) {\n ul.nav > li.mx-navbar-item > a {\n }\n .mx-navbar-item.open .dropdown-menu {\n background-color: $navtopbar-sub-bg;\n & > li.mx-navbar-subitem > a {\n color: $navsidebar-sub-color;\n font-size: $navsidebar-sub-font-size;\n &:hover,\n &:focus {\n color: $navsidebar-sub-color-hover;\n background-color: $navsidebar-sub-bg-hover;\n }\n &.active {\n color: $navsidebar-sub-color-active;\n background-color: $navsidebar-sub-bg-active;\n }\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Navigation List\n \n Default Mendix Navigation List Widget. A navigation list can be used to attach an action to an entire row. Such a row is called a navigation list item\n========================================================================== */\n.mx-navigationlist {\n margin: 0;\n padding: 0;\n list-style: none;\n \n li.mx-navigationlist-item {\n @include transition();\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n border-width: 1px;\n border-style: none none solid none;\n border-color: $grid-border-color;\n border-radius: 0;\n background-color: $grid-bg;\n\n &:hover,\n &:focus {\n color: inherit;\n background-color: $grid-bg-hover;\n }\n\n &.active {\n color: inherit;\n background-color: $grid-bg-selected;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Navigation\n\n Default Mendix Navigation Tree\n========================================================================== */\n.mx-navigationtree {\n background-color: $navigation-bg;\n\n /* Every navigation item */\n .navbar-inner > ul {\n margin: 0;\n padding-left: 0;\n & > li {\n padding: 0;\n border-style: none;\n & > a {\n display: flex;\n align-items: center;\n height: $navigation-item-height;\n padding: $navigation-item-padding;\n color: $navigation-color;\n border-bottom: 1px solid $navigation-border-color;\n border-radius: 0;\n background-color: $navigation-bg;\n text-shadow: none;\n font-size: $navigation-font-size;\n font-weight: $font-weight-normal;\n .caret {\n border-top-color: $navigation-color;\n border-bottom-color: $navigation-color;\n }\n img {\n width: 20px; // Default size\n height: auto;\n margin-right: 0.5em;\n }\n .glyphicon {\n top: 0;\n margin-right: 0.5em;\n vertical-align: middle;\n font-size: $navigation-glyph-size;\n }\n }\n a:hover,\n a:focus,\n a.active {\n text-decoration: none;\n color: $navigation-color-hover;\n background-color: $navigation-bg-hover;\n .caret {\n border-top-color: $navigation-color-active;\n border-bottom-color: $navigation-color-active;\n }\n }\n a.active {\n color: $navigation-color-active;\n border-left-color: $navigation-color-active;\n background-color: $navigation-bg-active;\n }\n }\n }\n\n /* Sub navigation item specific */\n li.mx-navigationtree-has-items {\n & > ul {\n margin: 0;\n padding-left: 0;\n background-color: $navigation-sub-bg;\n li {\n margin: 0;\n padding: 0;\n border: 0;\n a {\n padding: 12px 20px 12px 25px;\n text-decoration: none;\n color: $navigation-sub-color;\n border: 0;\n background-color: $navigation-sub-bg;\n text-shadow: none;\n font-size: $navigation-sub-font-size;\n font-weight: $font-weight-normal;\n\n &:hover,\n &:focus,\n &.active {\n color: $navigation-sub-color-hover;\n outline: 0;\n background-color: $navigation-sub-bg-hover;\n }\n &.active {\n color: $navigation-sub-color-active;\n border: 0;\n background-color: $navigation-sub-bg-active;\n }\n }\n }\n }\n }\n\n /* remove focus */\n &:focus {\n outline: 0;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Navigation\n\n//== Regions\n//## Behavior in the different regions\n========================================================================== */\n// When used in topbar\n.region-topbar {\n .mx-navigationtree {\n background-color: $navtopbar-bg;\n .navbar-inner > ul {\n & > li {\n & > a {\n color: $navtopbar-color;\n border-color: $navtopbar-border-color;\n background-color: $navtopbar-bg;\n font-size: $navtopbar-font-size;\n .caret {\n border-top-color: $navtopbar-color;\n border-bottom-color: $navtopbar-color;\n }\n\n .glyphicon {\n font-size: $navtopbar-glyph-size;\n }\n }\n a:hover,\n a:focus,\n a.active {\n color: $navtopbar-color-hover;\n background-color: $navtopbar-bg-hover;\n .caret {\n border-top-color: $navtopbar-color-active;\n border-bottom-color: $navtopbar-color-active;\n }\n }\n a.active {\n color: $navtopbar-color-active;\n border-left-color: $navtopbar-color-active;\n background-color: $navtopbar-bg-active;\n }\n }\n }\n\n /* Sub navigation item specific */\n li.mx-navigationtree-has-items {\n & > ul {\n background-color: $navtopbar-sub-bg;\n li {\n a {\n color: $navtopbar-sub-color;\n background-color: $navtopbar-sub-bg;\n font-size: $navtopbar-sub-font-size;\n &:hover,\n &:focus,\n &.active {\n color: $navtopbar-sub-color-hover;\n background-color: $navtopbar-sub-bg-hover;\n }\n &.active {\n color: $navtopbar-sub-color-active;\n background-color: $navtopbar-sub-bg-active;\n }\n }\n }\n }\n }\n }\n}\n\n// When used in sidebar\n.region-sidebar {\n .mx-navigationtree {\n background-color: $navsidebar-bg;\n .navbar-inner > ul {\n & > li {\n & > a {\n color: $navsidebar-color;\n border-color: $navsidebar-border-color;\n background-color: $navsidebar-bg;\n font-size: $navsidebar-font-size;\n .caret {\n border-top-color: $navsidebar-color;\n border-bottom-color: $navsidebar-color;\n }\n\n .glyphicon {\n font-size: $navsidebar-glyph-size;\n }\n }\n a:hover,\n a:focus,\n a.active {\n color: $navsidebar-color-hover;\n background-color: $navsidebar-bg-hover;\n .caret {\n border-top-color: $navsidebar-color-active;\n border-bottom-color: $navsidebar-color-active;\n }\n }\n a.active {\n color: $navsidebar-color-active;\n border-left-color: $navsidebar-color-active;\n background-color: $navsidebar-bg-active;\n }\n }\n }\n\n /* Sub navigation item specific */\n li.mx-navigationtree-has-items {\n & > ul {\n background-color: $navsidebar-sub-bg;\n li {\n a {\n color: $navsidebar-sub-color;\n background-color: $navsidebar-sub-bg;\n font-size: $navsidebar-sub-font-size;\n &:hover,\n &:focus,\n &.active {\n color: $navsidebar-sub-color-hover;\n background-color: $navsidebar-sub-bg-hover;\n }\n &.active {\n color: $navsidebar-sub-color-active;\n background-color: $navsidebar-sub-bg-active;\n }\n }\n }\n }\n }\n }\n}\n\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n//-------------------------------------------------------------------------------------------------------------------//\n// Content Centerd text and icons\n.nav-content-center-text-icons.mx-navigationtree {\n .navbar-inner ul {\n a {\n flex-direction: column;\n justify-content: center;\n .glyphicon {\n margin: 0 0 5px 0;\n }\n }\n }\n}\n\n// Content Centerd icons only\n.nav-content-center.mx-navigationtree {\n .navbar-inner ul {\n a {\n justify-content: center;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Popup Menu\n\n Default Mendix Popup Menus\n========================================================================== */\n.popupmenu {\n position: relative;\n display: inline-flex;\n}\n\n.popupmenu-trigger {\n cursor: pointer;\n}\n\n.popupmenu-menu {\n position: absolute;\n z-index: 999;\n display: none;\n flex-direction: column;\n width: max-content;\n border-radius: 8px;\n background-color: $bg-color;\n box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05), 0 2px 16px 0 rgba(33, 43, 54, 0.08);\n\n &.popupmenu-position-left {\n top: 0;\n left: 0;\n transform: translateX(-100%);\n }\n\n &.popupmenu-position-right {\n top: 0;\n right: 0;\n transform: translateX(100%);\n }\n\n &.popupmenu-position-top {\n top: 0;\n transform: translateY(-100%);\n }\n\n &.popupmenu-position-bottom {\n bottom: 0;\n transform: translateY(100%);\n }\n\n .popupmenu-basic-item:first-child,\n .popupmenu-custom-item:first-child {\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n }\n\n .popupmenu-basic-item:last-child,\n .popupmenu-custom-item:last-child {\n border-bottom-right-radius: 8px;\n border-bottom-left-radius: 8px;\n }\n}\n\n.popupmenu-basic-divider {\n width: 100%;\n height: 1px;\n background-color: $brand-default;\n}\n\n.popupmenu-basic-item {\n padding: 12px 16px;\n color: $font-color-default;\n font-size: 14px;\n\n &:hover,\n &:focus,\n &:active {\n cursor: pointer;\n border-color: $bg-color-secondary;\n background-color: $bg-color-secondary;\n }\n\n &-inverse {\n color: $brand-inverse;\n }\n\n &-primary {\n color: $brand-primary;\n }\n\n &-info {\n color: $brand-info;\n }\n\n &-success {\n color: $brand-success;\n }\n\n &-warning {\n color: $brand-warning;\n }\n\n &-danger {\n color: $brand-danger;\n }\n}\n\n.popupmenu-custom-item {\n &:hover,\n &:focus,\n &:active {\n cursor: pointer;\n border-color: $bg-color-secondary;\n background-color: $bg-color-secondary;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Navigation\n\n Default Mendix Simple Menu Bar\n========================================================================== */\n.mx-menubar {\n padding: 0;\n background-color: $navigation-bg;\n\n ul.mx-menubar-list {\n display: flex;\n width: 100%;\n min-height: 50px;\n\n li.mx-menubar-item {\n margin: 0;\n\n > a {\n display: flex;\n overflow: hidden;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: $navigation-item-padding;\n white-space: nowrap;\n color: $navigation-color;\n border-radius: 0;\n font-size: $navigation-font-size;\n font-weight: $font-weight-normal;\n\n img {\n margin-right: 0.5em;\n }\n\n .glyphicon {\n top: -1px;\n margin-right: 0.5em;\n vertical-align: middle;\n font-size: $navigation-glyph-size;\n }\n }\n\n a:hover,\n a:focus,\n &:hover a,\n &:focus a,\n &.active a {\n text-decoration: none;\n color: $navigation-color-hover;\n background-color: $navigation-bg-hover;\n }\n\n &.active a {\n color: $navigation-color-active;\n background-color: $navigation-bg-active;\n }\n }\n }\n\n /* remove focus */\n &:focus {\n outline: 0;\n }\n}\n\n// Vertical variation specifics\n.mx-menubar-vertical {\n background-color: $navigation-bg;\n\n ul.mx-menubar-list {\n display: flex;\n\n li.mx-menubar-item {\n display: block;\n\n a {\n border-bottom: 1px solid $navigation-border-color;\n }\n }\n }\n}\n\n// Horizontal variation specifics\n.mx-menubar-horizontal {\n box-shadow: 2px 0 4px 0 rgba(0, 0, 0, 0.14);\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n width: auto;\n\n a {\n width: 100%;\n }\n }\n }\n\n /* Two menu items */\n &.menubar-col-6 ul.mx-menubar-list li.mx-menubar-item {\n width: 50%;\n }\n\n /* Three menu items */\n &.menubar-col-4 ul.mx-menubar-list li.mx-menubar-item {\n width: 33.33333333%;\n }\n\n /* Four menu items */\n &.menubar-col-3 ul.mx-menubar-list li.mx-menubar-item {\n width: 25%;\n }\n\n /* Five menu items */\n &.menubar-col-2 ul.mx-menubar-list li.mx-menubar-item {\n width: 20%;\n }\n}\n\n//== Regions\n//## Behavior in the different regions\n//-------------------------------------------------------------------------------------------------------------------//\n// When used in topbar\n.region-topbar {\n .mx-menubar {\n background-color: $navtopbar-bg;\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n a {\n color: $navtopbar-color;\n font-size: $navtopbar-font-size;\n\n .glyphicon {\n font-size: $navtopbar-glyph-size;\n }\n }\n\n a:hover,\n a:focus,\n &:hover a,\n &:focus a,\n &.active a {\n color: $navtopbar-color-hover;\n background-color: $navtopbar-bg-hover;\n }\n\n &.active a {\n color: $navtopbar-color-active;\n background-color: $navtopbar-bg-active;\n }\n }\n }\n }\n\n // Vertical variation specifics\n .mx-menubar-vertical {\n background-color: $navtopbar-bg;\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n a {\n height: $navigation-item-height;\n border-color: $navtopbar-border-color;\n }\n }\n }\n }\n}\n\n// When used in sidebar\n.region-sidebar {\n .mx-menubar {\n background-color: $navsidebar-bg;\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n a {\n color: $navsidebar-color;\n font-size: $navsidebar-font-size;\n\n .glyphicon {\n font-size: $navsidebar-glyph-size;\n }\n }\n\n a:hover,\n a:focus,\n &:hover a,\n &:focus a,\n &.active a {\n color: $navsidebar-color-hover;\n background-color: $navsidebar-bg-hover;\n }\n\n &.active a {\n color: $navsidebar-color-active;\n background-color: $navsidebar-bg-active;\n }\n }\n }\n }\n\n // Vertical variation specifics\n .mx-menubar-vertical {\n background-color: $navsidebar-bg;\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n a {\n border-color: $navsidebar-border-color;\n }\n }\n }\n }\n}\n\n@supports (padding-bottom: env(safe-area-inset-bottom)) {\n .mx-menubar {\n padding-bottom: env(safe-area-inset-bottom);\n }\n}","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Navigation\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Center text and icons\n.bottom-nav-text-icons.mx-menubar {\n ul.mx-menubar-list {\n li.mx-menubar-item {\n a {\n flex-direction: column;\n padding: 8px 8px 6px 8px;\n line-height: normal;\n font-size: 11px;\n .glyphicon {\n display: block;\n margin: 0 0 5px 0;\n font-size: 18px;\n }\n img {\n display: block;\n height: 18px;\n margin: 0 0 5px 0;\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Radio Buttons\n\n Default Mendix Radio Button Widget\n========================================================================== */\n.mx-radiobuttons.inline .mx-radiogroup {\n display: flex;\n flex-direction: row;\n\n .radio {\n margin: 0 20px 0 0;\n }\n}\n\n.mx-radiobuttons .radio:last-child {\n margin-bottom: 0;\n}\n\n.radio {\n display: flex !important; // Remove after mxui merge\n align-items: center;\n margin-top: 0;\n}\n\ninput[type='radio'] {\n position: relative !important; // Remove after mxui merge\n width: 16px;\n height: 16px;\n margin: 0;\n cursor: pointer;\n -moz-user-select: none;\n -ms-user-select: none;\n -o-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n\n &::-ms-check {\n color: $form-input-border-color;\n border-color: $form-input-border-color;\n background-color: $form-input-bg;\n }\n\n &:focus::-ms-check,\n &:checked::-ms-check {\n color: $form-input-border-focus-color;\n border-color: $form-input-border-focus-color;\n background-color: $form-input-bg-focus;\n }\n\n &:before,\n &:after {\n position: absolute;\n display: block;\n transition: all 0.3s ease-in-out;\n border-radius: 50%;\n }\n\n &:before {\n width: 100%;\n height: 100%;\n content: '';\n border: 1px solid $form-input-border-color;\n background-color: transparent;\n }\n\n &:after {\n top: 50%;\n left: 50%;\n width: 50%;\n height: 50%;\n transform: translate(-50%, -50%);\n pointer-events: none;\n background-color: $form-input-border-focus-color;\n }\n\n &:not(:checked):after {\n transform: translate(-50%, -50%) scale(0);\n opacity: 0;\n }\n\n &:not(:disabled):not(:checked):hover:after {\n background-color: $form-input-bg-hover;\n }\n\n &:checked:after,\n &:not(:disabled):not(:checked):hover:after {\n content: '';\n transform: translate(-50%, -50%) scale(1);\n opacity: 1;\n }\n\n &:checked:before {\n border-color: $form-input-border-focus-color;\n background-color: $form-input-bg;\n }\n\n &:disabled:before {\n background-color: $form-input-bg-disabled;\n }\n\n &:checked:disabled:before {\n border-color: rgba($form-input-border-focus-color, 0.4);\n }\n\n &:checked:disabled:after {\n background-color: rgba($form-input-border-focus-color, 0.4);\n }\n\n & + label {\n margin-left: $form-label-gutter;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Tab Container\n\n Default Mendix Tab Container Widget. Tab containers are used to show information categorized into multiple tab pages.\n This can be very useful if the amount of information that has to be displayed is larger than the amount of space on the screen\n========================================================================== */\n\n.mx-tabcontainer {\n .mx-tabcontainer-tabs {\n margin-bottom: 20px;\n border-color: $tabs-border-color;\n & > li > a {\n margin-right: 0;\n -webkit-transition: all 0.2s ease-in-out;\n -moz-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n color: $tabs-color;\n font-weight: $font-weight-normal;\n &:hover,\n &:focus {\n background-color: $tabs-bg-hover;\n }\n }\n & > li.active > a,\n & > li.active > a:hover,\n & > li.active > a:focus {\n color: $tabs-color-active;\n border: 1px solid $tabs-border-color;\n border-bottom-color: transparent;\n background-color: $tabs-bg;\n }\n }\n}\n\n// Tab Styling Specific for mobile\n.tab-mobile.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n margin: 0;\n text-align: center;\n border-style: none;\n background-color: $brand-primary;\n li {\n display: table-cell;\n float: none;\n width: 1%;\n margin: 0;\n text-align: center;\n border-style: none;\n border-radius: 0;\n a {\n padding: 15px;\n text-transform: uppercase;\n color: #FFFFFF;\n border-width: 0 1px 0 0;\n border-style: solid;\n border-color: rgba(255, 255, 255, 0.3);\n border-radius: 0;\n font-size: 12px;\n font-weight: $font-weight-normal;\n &:hover,\n &:focus {\n background-color: inherit;\n }\n }\n &:last-child a {\n border-right: none;\n }\n &.active > a,\n &.active > a:hover,\n &.active > a:focus {\n color: #FFFFFF;\n border-style: none;\n border-radius: 0;\n background-color: mix($brand-primary, #000000, 80%);\n }\n }\n }\n}\n\n.mx-tabcontainer-badge {\n margin-left: 8px;\n border-radius: $font-size-small;\n background-color: $label-primary-bg;\n color: $label-primary-color;\n font-size: $font-size-small;\n font-weight: $font-weight-bold;\n line-height: 1;\n padding: 3px 7px;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Tab Container\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Style as pills\n.tab-pills.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n border: 0;\n & > li > a {\n margin-right: 2px;\n color: $tabs-color;\n border: 1px solid $tabs-border-color;\n border-radius: 4px;\n &:hover,\n &:focus {\n background-color: $tabs-bg-hover;\n }\n }\n & > li.active > a,\n & > li.active > a:hover,\n & > li.active > a:focus {\n color: #FFFFFF;\n border-color: $tabs-bg-active;\n background-color: $tabs-bg-active;\n }\n }\n}\n\n// Style with lines\n.tab-lined.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n border-width: 3px;\n li {\n margin-right: 30px;\n margin-bottom: -3px;\n & > a {\n padding: 10px 0;\n color: $tabs-color;\n border: 0;\n border-style: solid;\n border-color: transparent;\n border-bottom-width: 3px;\n border-radius: 0;\n &:hover,\n &:focus {\n color: $tabs-color;\n border: 0;\n border-color: transparent;\n background: transparent;\n }\n }\n &.active > a,\n &.active > a:hover,\n &.active > a:focus {\n color: $tabs-lined-color-active;\n border: 0;\n border-bottom: 3px solid $tabs-lined-border-color;\n background-color: transparent;\n }\n }\n }\n}\n\n// Justified style\n// Lets your tabs take 100% of the width\n.tab-justified.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n width: 100%;\n border-bottom: 0;\n & > li {\n display: table-cell;\n float: none;\n width: 1%;\n margin: 0;\n @media (max-width: $screen-sm-max) {\n display: block;\n width: 100%;\n }\n & > a {\n text-align: center;\n border-bottom: 1px solid $tabs-border-color;\n }\n }\n & > li.active > a {\n border-bottom-color: transparent;\n border-radius: 4px;\n @media (max-width: $screen-sm-max) {\n border-bottom-color: $tabs-border-color;\n }\n }\n }\n}\n\n// Bordered\n.tab-bordered.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n margin: 0;\n }\n & > .mx-tabcontainer-content {\n padding: 10px;\n border-width: 0 1px 1px 1px;\n border-style: solid;\n border-color: $tabs-border-color;\n background-color: #FFFFFF;\n }\n}\n\n// Wizard\n.tab-wizard.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n position: relative;\n display: flex;\n justify-content: space-between;\n border-style: none;\n\n &::before {\n position: absolute;\n top: 16px;\n display: block;\n width: 100%;\n height: 1px;\n content: \"\";\n background-color: $tabs-border-color;\n }\n & > li {\n position: relative;\n float: none;\n width: 100%;\n text-align: center;\n & > a {\n width: 33px;\n height: 33px;\n margin: auto;\n padding: 0;\n text-align: center;\n color: $brand-default;\n border: 1px solid $tabs-border-color;\n border-radius: 100%;\n background-color: #FFFFFF;\n font-size: 18px;\n font-weight: bold;\n line-height: 33px;\n }\n &.active {\n & > a,\n & > a:hover,\n & > a:focus {\n color: #FFFFFF;\n border-color: $tabs-bg-active;\n background-color: $tabs-bg-active;\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Tables\n\n Default Mendix Table Widget. Tables can be used to lend structure to a page. They contain a number of rows (tr) and columns, the intersection of which is called a cell (td). Each cell can contain widgets\n========================================================================== */\n\nth {\n font-weight: $font-weight-bold;\n}\n\nhtml body .mx-page table.mx-table {\n th,\n td {\n &.nopadding {\n padding: 0;\n }\n }\n}\n\ntable.mx-table {\n > tbody {\n /* Table row */\n > tr {\n /* Table header */\n > th {\n padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom $padding-table-cell-left;s\n * {\n color: $form-label-color;\n font-weight: $font-weight-bold;\n font-weight: $form-label-weight;\n }\n > label {\n padding-top: 7px;\n padding-bottom: 6px; // Aligns label in the middle if there is no input field next to it.\n }\n }\n /* Table cells */\n > td {\n padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom $padding-table-cell-left;\n > div > label,\n .mx-referenceselector-input-wrapper label {\n padding-top: 7px;\n padding-bottom: 6px; // Aligns label in the middle if there is no input field next to it.\n }\n }\n }\n }\n}\n\n// Default Mendix Table Widget inside TemplateGrid\n.mx-templategrid table.mx-table {\n > tbody {\n > tr {\n > th,\n > td {\n padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom $padding-table-cell-left;\n }\n }\n }\n}\n\n// Default Mendix Table Widget inside Listview\n.mx-list table.mx-table {\n > tbody {\n > tr {\n > th,\n > td {\n padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom $padding-table-cell-left;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Tables\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Lined\ntable.table-lined.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > td {\n border-width: 1px 0;\n border-style: solid;\n border-color: $grid-border-color;\n }\n }\n }\n}\n\n// Bordered\ntable.table-bordered.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n border-width: 1px;\n border-style: solid;\n border-color: $grid-border-color;\n }\n }\n }\n}\n\n// Makes table compact\ntable.table-compact.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n padding-top: 2px;\n padding-bottom: 2px;\n }\n }\n }\n}\n\n// Remove padding on sides\ntable.table-sideless.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > td,\n > th {\n padding-right: 0;\n }\n > th:first-child,\n > td:first-child {\n padding-left: 0;\n }\n }\n }\n}\n\n// Remove all padding\ntable.table-spaceless.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n padding: 0;\n }\n }\n }\n}\n\n// Tables Vertical\n// Will remove unwanted paddings\ntable.table-vertical.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n > th {\n padding-bottom: 0;\n > label {\n padding: 0;\n }\n > div > label {\n padding: 0;\n }\n }\n }\n }\n}\n\n// Align content in middle\ntable.table-align-vertical-middle.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n vertical-align: middle;\n }\n }\n }\n}\n\n// Compact labels\ntable.table-label-compact.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n > label {\n margin: 0;\n padding: 0;\n }\n > div > label,\n .mx-referenceselector-input-wrapper label {\n margin: 0;\n padding: 0;\n }\n }\n }\n }\n}\n\n$height-row-s: 55px;\n$height-row-m: 70px;\n$height-row-l: 120px;\n// Small rows\ntable.table-row-s.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n height: $height-row-s;\n }\n }\n }\n}\n\n// Medium rows\ntable.table-row-m.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n height: $height-row-m;\n }\n }\n }\n}\n\n// Large rows\ntable.table-row-l.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n height: $height-row-l;\n }\n }\n }\n}\n\n// Makes the columns fixed\ntable.table-fixed {\n table-layout: fixed;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Templategrid\n\n Default Mendix Templategrid Widget. The template grid shows a list of objects in a tile view. For example, a template grid can show a list of products. The template grid has a lot in common with the data grid. The main difference is that the objects are shown in templates (a sort of small data view) instead of rows\n========================================================================== */\n\n.mx-templategrid {\n .mx-templategrid-content-wrapper {\n table-layout: fixed;\n }\n .mx-templategrid-item {\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n cursor: default;\n background-color: $grid-bg;\n &:hover {\n background-color: transparent;\n }\n &.selected {\n background-color: $grid-bg-selected !important;\n }\n }\n .mx-layoutgrid {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n}","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Templategrid\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Make sure your content looks selectable\n.templategrid-selectable.mx-templategrid {\n .mx-templategrid-item {\n cursor: pointer;\n }\n}\n\n// Lined\n.templategrid-lined.mx-templategrid {\n .mx-grid-content {\n border-top-width: 2px;\n border-top-style: solid;\n border-top-color: $grid-border-color;\n }\n\n .mx-templategrid-item {\n border-top: 1px solid $grid-border-color;\n border-right: none;\n border-bottom: 1px solid $grid-border-color;\n border-left: none;\n }\n}\n\n// Striped\n.templategrid-striped.mx-templategrid {\n .mx-templategrid-row:nth-child(odd) .mx-templategrid-item {\n background-color: #F9F9F9;\n }\n}\n\n// Stylingless\n.templategrid-stylingless.mx-templategrid {\n .mx-templategrid-item {\n padding: 0;\n cursor: default;\n border: 0;\n background-color: transparent;\n\n &:hover {\n background-color: transparent;\n }\n\n &.selected {\n background-color: transparent !important;\n\n &:hover {\n background-color: transparent !important;\n }\n }\n }\n}\n\n// Transparent items\n.templategrid-transparent.mx-templategrid {\n .mx-templategrid-item {\n border: 0;\n background-color: transparent;\n }\n}\n\n// Hover\n.templategrid-hover.mx-templategrid {\n .mx-templategrid-item {\n &:hover {\n background-color: $grid-bg-hover !important;\n }\n\n &.selected {\n background-color: $grid-bg-selected !important;\n\n &:hover {\n background-color: $grid-bg-selected-hover !important;\n }\n }\n }\n}\n\n// Templategrid Row Sizes\n.templategrid-lg.mx-templategrid {\n .mx-templategrid-item {\n padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2) ($grid-padding-left * 2);\n }\n}\n\n.templategrid-sm.mx-templategrid {\n .mx-templategrid-item {\n padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2) ($grid-padding-left / 2);\n }\n}\n\n// Templategrid Layoutgrid styles\n.mx-templategrid[class*=\"tg-col\"] {\n overflow: hidden; // For if it is not in a layout, to prevent scrollbars\n .mx-templategrid-content-wrapper {\n display: block;\n }\n\n .mx-templategrid-row {\n display: block;\n margin-right: -1 * $gutter-size;\n margin-left: -1 * $gutter-size;\n\n &::before,\n &::after {\n // clearfix\n display: table;\n clear: both;\n content: \" \";\n }\n }\n\n .mx-templategrid-item {\n // bootstrap col\n position: relative;\n display: block;\n float: left;\n min-height: 1px;\n padding-right: $gutter-size;\n padding-left: $gutter-size;\n border: 0;\n @media (max-width: 992px) {\n width: 100% !important;\n }\n\n .mx-dataview {\n overflow: hidden;\n }\n }\n\n &.tg-col-xs-12 .mx-templategrid-item {\n width: 100% !important;\n }\n\n &.tg-col-xs-11 .mx-templategrid-item {\n width: 91.66666667% !important;\n }\n\n &.tg-col-xs-10 .mx-templategrid-item {\n width: 83.33333333% !important;\n }\n\n &.tg-col-xs-9 .mx-templategrid-item {\n width: 75% !important;\n }\n\n &.tg-col-xs-8 .mx-templategrid-item {\n width: 66.66666667% !important;\n }\n\n &.tg-col-xs-7 .mx-templategrid-item {\n width: 58.33333333% !important;\n }\n\n &.tg-col-xs-6 .mx-templategrid-item {\n width: 50% !important;\n }\n\n &.tg-col-xs-5 .mx-templategrid-item {\n width: 41.66666667% !important;\n }\n\n &.tg-col-xs-4 .mx-templategrid-item {\n width: 33.33333333% !important;\n }\n\n &.tg-col-xs-3 .mx-templategrid-item {\n width: 25% !important;\n }\n\n &.tg-col-xs-2 .mx-templategrid-item {\n width: 16.66666667% !important;\n }\n\n &.tg-col-xs-1 .mx-templategrid-item {\n width: 8.33333333% !important;\n }\n\n @media (min-width: 768px) {\n &.tg-col-sm-12 .mx-templategrid-item {\n width: 100% !important;\n }\n &.tg-col-sm-11 .mx-templategrid-item {\n width: 91.66666667% !important;\n }\n &.tg-col-sm-10 .mx-templategrid-item {\n width: 83.33333333% !important;\n }\n &.tg-col-sm-9 .mx-templategrid-item {\n width: 75% !important;\n }\n &.tg-col-sm-8 .mx-templategrid-item {\n width: 66.66666667% !important;\n }\n &.tg-col-sm-7 .mx-templategrid-item {\n width: 58.33333333% !important;\n }\n &.tg-col-sm-6 .mx-templategrid-item {\n width: 50% !important;\n }\n &.tg-col-sm-5 .mx-templategrid-item {\n width: 41.66666667% !important;\n }\n &.tg-col-sm-4 .mx-templategrid-item {\n width: 33.33333333% !important;\n }\n &.tg-col-sm-3 .mx-templategrid-item {\n width: 25% !important;\n }\n &.tg-col-sm-2 .mx-templategrid-item {\n width: 16.66666667% !important;\n }\n &.tg-col-sm-1 .mx-templategrid-item {\n width: 8.33333333% !important;\n }\n }\n @media (min-width: 992px) {\n &.tg-col-md-12 .mx-templategrid-item {\n width: 100% !important;\n }\n &.tg-col-md-11 .mx-templategrid-item {\n width: 91.66666667% !important;\n }\n &.tg-col-md-10 .mx-templategrid-item {\n width: 83.33333333% !important;\n }\n &.tg-col-md-9 .mx-templategrid-item {\n width: 75% !important;\n }\n &.tg-col-md-8 .mx-templategrid-item {\n width: 66.66666667% !important;\n }\n &.tg-col-md-7 .mx-templategrid-item {\n width: 58.33333333% !important;\n }\n &.tg-col-md-6 .mx-templategrid-item {\n width: 50% !important;\n }\n &.tg-col-md-5 .mx-templategrid-item {\n width: 41.66666667% !important;\n }\n &.tg-col-md-4 .mx-templategrid-item {\n width: 33.33333333% !important;\n }\n &.tg-col-md-3 .mx-templategrid-item {\n width: 25% !important;\n }\n &.tg-col-md-2 .mx-templategrid-item {\n width: 16.66666667% !important;\n }\n &.tg-col-md-1 .mx-templategrid-item {\n width: 8.33333333% !important;\n }\n }\n @media (min-width: 1200px) {\n &.tg-col-lg-12 .mx-templategrid-item {\n width: 100% !important;\n }\n &.tg-col-lg-11 .mx-templategrid-item {\n width: 91.66666667% !important;\n }\n &.tg-col-lg-10 .mx-templategrid-item {\n width: 83.33333333% !important;\n }\n &.tg-col-lg-9 .mx-templategrid-item {\n width: 75% !important;\n }\n &.tg-col-lg-8 .mx-templategrid-item {\n width: 66.66666667% !important;\n }\n &.tg-col-lg-7 .mx-templategrid-item {\n width: 58.33333333% !important;\n }\n &.tg-col-lg-6 .mx-templategrid-item {\n width: 50% !important;\n }\n &.tg-col-lg-5 .mx-templategrid-item {\n width: 41.66666667% !important;\n }\n &.tg-col-lg-4 .mx-templategrid-item {\n width: 33.33333333% !important;\n }\n &.tg-col-lg-3 .mx-templategrid-item {\n width: 25% !important;\n }\n &.tg-col-lg-2 .mx-templategrid-item {\n width: 16.66666667% !important;\n }\n &.tg-col-lg-1 .mx-templategrid-item {\n width: 8.33333333% !important;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Typography\n========================================================================== */\n\np {\n line-height: $line-height-base * 1.25;\n}\n\nlabel {\n padding-top: 0;\n}\n\n.mx-title {\n margin: $font-header-margin;\n color: $font-color-header;\n font-size: $font-size-h1;\n font-weight: $font-weight-header;\n}\n\nh1,\n.h1,\n.h1 > * {\n font-size: $font-size-h1;\n}\n\nh2,\n.h2,\n.h2 > * {\n font-size: $font-size-h2;\n}\n\nh3,\n.h3,\n.h3 > * {\n font-size: $font-size-h3;\n}\n\nh4,\n.h4,\n.h4 > * {\n font-size: $font-size-h4;\n}\n\nh5,\n.h5,\n.h5 > * {\n font-size: $font-size-h5;\n}\n\nh6,\n.h6,\n.h6 > * {\n font-size: $font-size-h6;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n margin: $font-header-margin;\n color: $font-color-header;\n font-weight: $font-weight-header;\n line-height: 1.3;\n}","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Typography\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// Text size\n.text-small {\n font-size: $font-size-small !important;\n}\n\n.text-large {\n font-size: $font-size-large !important;\n}\n\n// Text Weights\n.text-light,\n.text-light > *,\n.text-light label {\n font-weight: $font-weight-light !important;\n}\n\n.text-normal,\n.text-normal > *,\n.text-normal label {\n font-weight: $font-weight-normal !important;\n}\n\n.text-semibold,\n.text-semibold > *,\n.text-semibold label {\n font-weight: $font-weight-semibold !important;\n}\n\n.text-bold,\n.text-bold > *,\n.text-bold label {\n font-weight: $font-weight-bold !important;\n}\n\n// Color variations\n.text-default,\n.text-default:hover {\n color: $font-color-default !important;\n}\n\n.text-primary,\n.text-primary:hover {\n color: $brand-primary !important;\n}\n\n.text-info,\n.text-info:hover {\n color: $brand-info !important;\n}\n\n.text-success,\n.text-success:hover {\n color: $brand-success !important;\n}\n\n.text-warning,\n.text-warning:hover {\n color: $brand-warning !important;\n}\n\n.text-danger,\n.text-danger:hover {\n color: $brand-danger !important;\n}\n\n.text-header {\n color: $font-color-header !important;\n}\n\n.text-detail {\n color: $font-color-detail !important;\n}\n\n.text-white {\n color: #ffffff;\n}\n\n// Alignment options\n.text-left {\n text-align: left !important;\n}\n.text-center {\n text-align: center !important;\n}\n.text-right {\n text-align: right !important;\n}\n.text-justify {\n text-align: justify !important;\n}\n\n// Transform options\n.text-lowercase {\n text-transform: lowercase !important;\n}\n.text-uppercase {\n text-transform: uppercase !important;\n}\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n// Wrap options\n.text-break {\n word-break: break-all !important;\n word-break: break-word !important;\n -ms-word-break: break-all !important;\n -webkit-hyphens: auto !important;\n -moz-hyphens: auto !important;\n hyphens: auto !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-nowrap {\n overflow: hidden !important;\n max-width: 100% !important;\n white-space: nowrap !important;\n text-overflow: ellipsis !important;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Layout Grid\n\n Default Bootstrap containers\n========================================================================== */\n.mx-layoutgrid {\n width: 100%;\n margin-right: auto;\n margin-left: auto;\n padding-right: $gutter-size;\n padding-left: $gutter-size;\n}\n\n// Row\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -$gutter-size;\n margin-left: -$gutter-size;\n\n &::before,\n &::after {\n content: normal;\n }\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n// Columns\n.col-1,\n.col-2,\n.col-3,\n.col-4,\n.col-5,\n.col-6,\n.col-7,\n.col-8,\n.col-9,\n.col-10,\n.col-11,\n.col-12,\n.col,\n.col-auto,\n.col-sm-1,\n.col-sm-2,\n.col-sm-3,\n.col-sm-4,\n.col-sm-5,\n.col-sm-6,\n.col-sm-7,\n.col-sm-8,\n.col-sm-9,\n.col-sm-10,\n.col-sm-11,\n.col-sm-12,\n.col-sm,\n.col-sm-auto,\n.col-md-1,\n.col-md-2,\n.col-md-3,\n.col-md-4,\n.col-md-5,\n.col-md-6,\n.col-md-7,\n.col-md-8,\n.col-md-9,\n.col-md-10,\n.col-md-11,\n.col-md-12,\n.col-md,\n.col-md-auto,\n.col-lg-1,\n.col-lg-2,\n.col-lg-3,\n.col-lg-4,\n.col-lg-5,\n.col-lg-6,\n.col-lg-7,\n.col-lg-8,\n.col-lg-9,\n.col-lg-10,\n.col-lg-11,\n.col-lg-12,\n.col-lg,\n.col-lg-auto,\n.col-xl-1,\n.col-xl-2,\n.col-xl-3,\n.col-xl-4,\n.col-xl-5,\n.col-xl-6,\n.col-xl-7,\n.col-xl-8,\n.col-xl-9,\n.col-xl-10,\n.col-xl-11,\n.col-xl-12,\n.col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n padding-right: $gutter-size;\n padding-left: $gutter-size;\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-first {\n order: -1;\n}\n\n.order-last {\n order: 13;\n}\n\n.order-0 {\n order: 0;\n}\n\n.order-1 {\n order: 1;\n}\n\n.order-2 {\n order: 2;\n}\n\n.order-3 {\n order: 3;\n}\n\n.order-4 {\n order: 4;\n}\n\n.order-5 {\n order: 5;\n}\n\n.order-6 {\n order: 6;\n}\n\n.order-7 {\n order: 7;\n}\n\n.order-8 {\n order: 8;\n}\n\n.order-9 {\n order: 9;\n}\n\n.order-10 {\n order: 10;\n}\n\n.order-11 {\n order: 11;\n}\n\n.order-12 {\n order: 12;\n}\n\n.offset-1,\n.col-offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2,\n.col-offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3,\n.col-offset-3 {\n margin-left: 25%;\n}\n\n.offset-4,\n.col-offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5,\n.col-offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6,\n.col-offset-6 {\n margin-left: 50%;\n}\n\n.offset-7,\n.col-offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8,\n.col-offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9,\n.col-offset-9 {\n margin-left: 75%;\n}\n\n.offset-10,\n.col-offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11,\n.col-offset-11 {\n margin-left: 91.666667%;\n}\n\n// Responsiveness\n@media (min-width: $screen-sm) {\n .mx-layoutgrid-fixed {\n max-width: 540px;\n }\n}\n\n@media (min-width: $screen-md) {\n .mx-layoutgrid-fixed {\n max-width: 720px;\n }\n}\n\n@media (min-width: $screen-lg) {\n .mx-layoutgrid-fixed {\n max-width: 960px;\n }\n}\n\n@media (min-width: $screen-xl) {\n .mx-layoutgrid-fixed {\n max-width: 1140px;\n }\n}\n\n@media (min-width: $screen-sm) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n order: -1;\n }\n .order-sm-last {\n order: 13;\n }\n .order-sm-0 {\n order: 0;\n }\n .order-sm-1 {\n order: 1;\n }\n .order-sm-2 {\n order: 2;\n }\n .order-sm-3 {\n order: 3;\n }\n .order-sm-4 {\n order: 4;\n }\n .order-sm-5 {\n order: 5;\n }\n .order-sm-6 {\n order: 6;\n }\n .order-sm-7 {\n order: 7;\n }\n .order-sm-8 {\n order: 8;\n }\n .order-sm-9 {\n order: 9;\n }\n .order-sm-10 {\n order: 10;\n }\n .order-sm-11 {\n order: 11;\n }\n .order-sm-12 {\n order: 12;\n }\n .offset-sm-0,\n .col-sm-offset-0 {\n margin-left: 0;\n }\n .offset-sm-1,\n .col-sm-offset-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2,\n .col-sm-offset-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3,\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .offset-sm-4,\n .col-sm-offset-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5,\n .col-sm-offset-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6,\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .offset-sm-7,\n .col-sm-offset-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8,\n .col-sm-offset-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9,\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .offset-sm-10,\n .col-sm-offset-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11,\n .col-sm-offset-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: $screen-md) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n order: -1;\n }\n .order-md-last {\n order: 13;\n }\n .order-md-0 {\n order: 0;\n }\n .order-md-1 {\n order: 1;\n }\n .order-md-2 {\n order: 2;\n }\n .order-md-3 {\n order: 3;\n }\n .order-md-4 {\n order: 4;\n }\n .order-md-5 {\n order: 5;\n }\n .order-md-6 {\n order: 6;\n }\n .order-md-7 {\n order: 7;\n }\n .order-md-8 {\n order: 8;\n }\n .order-md-9 {\n order: 9;\n }\n .order-md-10 {\n order: 10;\n }\n .order-md-11 {\n order: 11;\n }\n .order-md-12 {\n order: 12;\n }\n .offset-md-0,\n .col-md-offset-0 {\n margin-left: 0;\n }\n .offset-md-1,\n .col-md-offset-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2,\n .col-md-offset-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3,\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .offset-md-4,\n .col-md-offset-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5,\n .col-md-offset-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6,\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .offset-md-7,\n .col-md-offset-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8,\n .col-md-offset-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9,\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .offset-md-10,\n .col-md-offset-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11,\n .col-md-offset-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: $screen-lg) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n order: -1;\n }\n .order-lg-last {\n order: 13;\n }\n .order-lg-0 {\n order: 0;\n }\n .order-lg-1 {\n order: 1;\n }\n .order-lg-2 {\n order: 2;\n }\n .order-lg-3 {\n order: 3;\n }\n .order-lg-4 {\n order: 4;\n }\n .order-lg-5 {\n order: 5;\n }\n .order-lg-6 {\n order: 6;\n }\n .order-lg-7 {\n order: 7;\n }\n .order-lg-8 {\n order: 8;\n }\n .order-lg-9 {\n order: 9;\n }\n .order-lg-10 {\n order: 10;\n }\n .order-lg-11 {\n order: 11;\n }\n .order-lg-12 {\n order: 12;\n }\n .offset-lg-0,\n .col-lg-offset-0 {\n margin-left: 0;\n }\n .offset-lg-1,\n .col-lg-offset-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2,\n .col-lg-offset-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3,\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .offset-lg-4,\n .col-lg-offset-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5,\n .col-lg-offset-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6,\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .offset-lg-7,\n .col-lg-offset-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8,\n .col-lg-offset-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9,\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .offset-lg-10,\n .col-lg-offset-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11,\n .col-lg-offset-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: $screen-xl) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n order: -1;\n }\n .order-xl-last {\n order: 13;\n }\n .order-xl-0 {\n order: 0;\n }\n .order-xl-1 {\n order: 1;\n }\n .order-xl-2 {\n order: 2;\n }\n .order-xl-3 {\n order: 3;\n }\n .order-xl-4 {\n order: 4;\n }\n .order-xl-5 {\n order: 5;\n }\n .order-xl-6 {\n order: 6;\n }\n .order-xl-7 {\n order: 7;\n }\n .order-xl-8 {\n order: 8;\n }\n .order-xl-9 {\n order: 9;\n }\n .order-xl-10 {\n order: 10;\n }\n .order-xl-11 {\n order: 11;\n }\n .order-xl-12 {\n order: 12;\n }\n .offset-xl-0,\n .col-xl-offset-0 {\n margin-left: 0;\n }\n .offset-xl-1,\n .col-xl-offset-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2,\n .col-xl-offset-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3,\n .col-xl-offset-3 {\n margin-left: 25%;\n }\n .offset-xl-4,\n .col-xl-offset-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5,\n .col-xl-offset-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6,\n .col-xl-offset-6 {\n margin-left: 50%;\n }\n .offset-xl-7,\n .col-xl-offset-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8,\n .col-xl-offset-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9,\n .col-xl-offset-9 {\n margin-left: 75%;\n }\n .offset-xl-10,\n .col-xl-offset-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11,\n .col-xl-offset-11 {\n margin-left: 91.666667%;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Progress\n\n Default Mendix Progress Widget.\n========================================================================== */\n\n.mx-progress {\n color: $font-color-default;\n background: $bg-color-secondary;\n\n .mx-progress-message {\n color: $font-color-default;\n }\n\n .mx-progress-indicator {\n position: relative;\n overflow: hidden;\n width: 100%;\n max-width: 100%;\n height: 2px;\n margin: auto;\n padding: 0;\n border-radius: 0;\n background: $gray-lighter;\n\n &:before,\n &:after {\n position: absolute;\n top: 0;\n left: 0;\n display: block;\n width: 50%;\n height: 2px;\n content: \"\";\n transform: translate3d(-100%, 0, 0);\n background: $brand-primary;\n }\n\n &::before {\n animation: loader 2s infinite;\n }\n\n &::after {\n animation: loader 2s -2s infinite;\n }\n }\n}\n\n\n@keyframes loader {\n 0% {\n transform: translate3d(-100%, 0, 0);\n }\n 100% {\n transform: translate3d(200%, 0, 0);\n }\n}\n",".widget-timeline-date-header {\n display: inline-block;\n width: 110px;\n overflow-wrap: break-word;\n padding: 8px;\n text-align: center;\n border: 1px solid $timeline-border-color;\n border-radius: 30px;\n}\n\n.widget-timeline-events-wrapper {\n display: flex;\n flex: 1;\n margin-left: 55px;\n padding-top: 35px;\n\n ul {\n padding: 0;\n list-style: none;\n margin-bottom: 0;\n }\n}\n\n.widget-timeline-title {\n color: $timeline-color-header;\n font-weight: 600;\n margin: 0 0 10px 0;\n}\n\n.widget-timeline-description {\n color: $timeline-color-detail;\n}\n\n.widget-timeline-event {\n position: relative;\n margin-left: $timeline-icon-size / 2;\n padding-left: $spacing-large;\n padding-bottom: 20px;\n\n &:not(:last-of-type) {\n border-left: 1px solid $timeline-border-color;\n }\n\n &.clickable {\n cursor: pointer;\n transition: background 0.8s;\n\n &:hover {\n .widget-timeline-title {\n color: #dadcde;\n }\n }\n }\n}\n\n.widget-timeline-icon-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n width: $timeline-icon-size;\n height: $timeline-icon-size;\n transform: translateX(-50%);\n\n .glyphicon {\n font-size: $timeline-icon-size;\n }\n\n img {\n max-width: $timeline-icon-size;\n max-height: $timeline-icon-size;\n }\n}\n\n.widget-timeline-content-wrapper {\n .widget-timeline-date-time-wrapper {\n margin-right: 15px;\n }\n\n .widget-timeline-info-wrapper {\n flex-direction: column;\n }\n}\n\n.widget-timeline-icon-circle {\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background-color: $timeline-icon-color;\n}\n\n.widget-timeline-no-divider {\n padding-bottom: 0;\n padding-top: 0;\n margin-left: 0;\n}\n\n.widget-timeline-flex-container {\n display: flex;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Helpers\n\n Default Mendix Helpers\n========================================================================== */\n$important-helpers-value: if($important-helpers, ' !important', '');\n\n// Display properties\n.d-none {\n display: none #{$important-helpers-value};\n}\n\n.d-flex {\n display: flex #{$important-helpers-value};\n}\n\n.d-inline-flex {\n display: inline-flex #{$important-helpers-value};\n}\n\n.d-inline {\n display: inline #{$important-helpers-value};\n}\n\n.d-inline-block {\n display: inline-block #{$important-helpers-value};\n}\n\n.show,\n.d-block {\n display: block #{$important-helpers-value};\n}\n\n.table,\n.d-table {\n display: table #{$important-helpers-value};\n}\n\n.table-row,\n.d-table-row {\n display: table-row #{$important-helpers-value};\n}\n\n.table-cell,\n.d-table-cell {\n display: table-cell #{$important-helpers-value};\n}\n\n.hide,\n.hidden {\n display: none #{$important-helpers-value};\n visibility: hidden #{$important-helpers-value};\n}\n\n.invisible {\n visibility: hidden #{$important-helpers-value};\n}\n\n.display-ie8-only:not([attr*=\"\"]) {\n display: none #{$important-helpers-value};\n padding: 0 #{$important-helpers-value};\n}\n\n.list-nostyle {\n ul {\n margin: 0 #{$important-helpers-value};\n padding: 0 #{$important-helpers-value};\n\n li {\n list-style-type: none #{$important-helpers-value};\n }\n }\n}\n\n.nowrap,\n.nowrap * {\n overflow: hidden #{$important-helpers-value};\n // Star for inside an element, IE8 span > a\n white-space: nowrap #{$important-helpers-value};\n text-overflow: ellipsis #{$important-helpers-value};\n}\n\n// Render DIV as Table Cells\n.table {\n display: table #{$important-helpers-value};\n}\n\n.table-row {\n display: table-row #{$important-helpers-value};\n}\n\n.table-cell {\n display: table-cell #{$important-helpers-value};\n}\n\n// Quick floats\n.pull-left {\n float: left #{$important-helpers-value};\n}\n\n.pull-right {\n float: right #{$important-helpers-value};\n}\n\n// Align options\n.align-top {\n vertical-align: top #{$important-helpers-value};\n}\n\n.align-middle {\n vertical-align: middle #{$important-helpers-value};\n}\n\n.align-bottom {\n vertical-align: bottom #{$important-helpers-value};\n}\n\n// Flex alignments\n.row-left {\n display: flex #{$important-helpers-value};\n align-items: center #{$important-helpers-value};\n flex-flow: row #{$important-helpers-value};\n justify-content: flex-start #{$important-helpers-value};\n}\n\n.row-center {\n display: flex #{$important-helpers-value};\n align-items: center #{$important-helpers-value};\n flex-flow: row #{$important-helpers-value};\n justify-content: center #{$important-helpers-value};\n}\n\n.row-right {\n display: flex #{$important-helpers-value};\n align-items: center #{$important-helpers-value};\n flex-flow: row #{$important-helpers-value};\n justify-content: flex-end #{$important-helpers-value};\n}\n\n.col-left {\n display: flex #{$important-helpers-value};\n align-items: flex-start #{$important-helpers-value};\n flex-direction: column #{$important-helpers-value};\n justify-content: center #{$important-helpers-value};\n}\n\n.col-center {\n display: flex #{$important-helpers-value};\n align-items: center #{$important-helpers-value};\n flex-direction: column #{$important-helpers-value};\n justify-content: center #{$important-helpers-value};\n}\n\n.col-right {\n display: flex #{$important-helpers-value};\n align-items: flex-end #{$important-helpers-value};\n flex-direction: column #{$important-helpers-value};\n justify-content: center #{$important-helpers-value};\n}\n\n// Media\n@media (max-width: $screen-sm-max) {\n .hide-phone {\n display: none #{$important-helpers-value};\n }\n}\n\n@media (min-width: $screen-md) and (max-width: $screen-md-max) {\n .hide-tablet {\n display: none #{$important-helpers-value};\n }\n}\n\n@media (min-width: $screen-lg) {\n .hide-desktop {\n display: none #{$important-helpers-value};\n }\n}\n\n\n@media (max-width: $screen-xs-max) {\n .hide-xs,\n .hidden-xs,\n .d-xs-none {\n display: none #{$important-helpers-value};\n }\n .d-xs-flex {\n display: flex #{$important-helpers-value};\n }\n .d-xs-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-xs-inline {\n display: inline #{$important-helpers-value};\n }\n .d-xs-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-xs-block {\n display: block #{$important-helpers-value};\n }\n .d-xs-table {\n display: table #{$important-helpers-value};\n }\n .d-xs-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-xs-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n}\n\n@media (min-width: $screen-sm) and (max-width: $screen-sm-max) {\n .hide-sm,\n .hidden-sm,\n .d-sm-none {\n display: none #{$important-helpers-value};\n }\n .d-sm-flex {\n display: flex #{$important-helpers-value};\n }\n .d-sm-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-sm-inline {\n display: inline #{$important-helpers-value};\n }\n .d-sm-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-sm-block {\n display: block #{$important-helpers-value};\n }\n .d-sm-table {\n display: table #{$important-helpers-value};\n }\n .d-sm-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-sm-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n}\n\n@media (min-width: $screen-md) and (max-width: $screen-md-max) {\n .hide-md,\n .hidden-md,\n .d-md-none {\n display: none #{$important-helpers-value};\n }\n .d-md-flex {\n display: flex #{$important-helpers-value};\n }\n .d-md-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-md-inline {\n display: inline #{$important-helpers-value};\n }\n .d-md-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-md-block {\n display: block #{$important-helpers-value};\n }\n .d-md-table {\n display: table #{$important-helpers-value};\n }\n .d-md-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-md-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n}\n\n@media (min-width: $screen-lg) and (max-width: $screen-xl) {\n .hide-lg,\n .hidden-lg,\n .d-lg-none {\n display: none #{$important-helpers-value};\n }\n .d-lg-flex {\n display: flex #{$important-helpers-value};\n }\n .d-lg-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-lg-inline {\n display: inline #{$important-helpers-value};\n }\n .d-lg-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-lg-block {\n display: block #{$important-helpers-value};\n }\n .d-lg-table {\n display: table #{$important-helpers-value};\n }\n .d-lg-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-lg-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n}\n\n@media (min-width: $screen-xl) {\n .hide-xl,\n .hidden-xl,\n .d-xl-none {\n display: none #{$important-helpers-value};\n }\n .d-xl-flex {\n display: flex #{$important-helpers-value};\n }\n .d-xl-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-xl-inline {\n display: inline #{$important-helpers-value};\n }\n .d-xl-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-xl-block {\n display: block #{$important-helpers-value};\n }\n .d-xl-table {\n display: table #{$important-helpers-value};\n }\n .d-xl-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-xl-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/*\n* Mendix Documentation\n* Special styles for presenting components\n*/\n\n/*\n* Dijit Widgets\n*\n* Default Dojo Dijit Widgets\n*/\n\n/*\n * Dijit Tooltip Widget\n *\n * Default tooltip used for Mendix widgets\n */\n\n.mx-tooltip {\n .dijitTooltipContainer {\n border-width: 1px;\n border-color: $gray-light;\n border-radius: 4px;\n background: #ffffff;\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n .mx-tooltip-content {\n padding: 10px;\n }\n .form-group {\n margin-bottom: 5px;\n }\n }\n .dijitTooltipConnector {\n width: 0;\n height: 0;\n margin-left: -10px;\n border-width: 10px 10px 10px 0;\n border-style: solid;\n border-color: transparent;\n border-right-color: $gray-light;\n }\n}\n\n/*\n * Dijit Border Container\n *\n * Used in Mendix as split pane containers\n */\n\n.dijitBorderContainer {\n padding: 5px;\n background-color: #fcfcfc;\n .dijitSplitterV,\n .dijitGutterV {\n width: 5px;\n border: 0;\n background: #fcfcfc;\n }\n .dijitSplitterH,\n .dijitGutterH {\n height: 5px;\n border: 0;\n background: #fcfcfc;\n }\n .dijitSplitterH {\n .dijitSplitterThumb {\n top: 2px;\n width: 19px;\n height: 1px;\n background: #b0b0b0;\n }\n }\n .dijitSplitterV {\n .dijitSplitterThumb {\n left: 2px;\n width: 1px;\n height: 19px;\n background: #b0b0b0;\n }\n }\n .dijitSplitContainer-child,\n .dijitBorderContainer-child {\n border: 1px solid #cccccc;\n }\n .dijitBorderContainer-dijitTabContainerTop,\n .dijitBorderContainer-dijitTabContainerBottom,\n .dijitBorderContainer-dijitTabContainerLeft,\n .dijitBorderContainer-dijitTabContainerRight {\n border: none;\n }\n .dijitBorderContainer-dijitBorderContainer {\n padding: 0;\n border: none;\n }\n .dijitSplitterActive {\n /* For IE8 and earlier */\n margin: 0;\n opacity: 0.6;\n background-color: #aaaaaa;\n background-image: none;\n font-size: 1px;\n filter: alpha(opacity=60);\n }\n .dijitSplitContainer-dijitContentPane,\n .dijitBorderContainer-dijitContentPane {\n padding: 5px;\n background-color: #ffffff;\n }\n}\n\n/*\n * Dijit Menu Popup\n *\n * Used in datepickers and calendar widgets\n */\n\n.dijitMenuPopup {\n margin-top: 10px;\n .dijitMenu {\n display: block;\n width: 200px !important;\n margin-top: 0; // No top margin because there is no parent with margin bottom\n padding: 12px 10px;\n border-radius: 3px;\n background: $brand-inverse;\n &:after {\n position: absolute;\n bottom: 100%;\n left: 20px;\n width: 0;\n height: 0;\n margin-left: -10px;\n content: ' ';\n pointer-events: none;\n border: medium solid transparent;\n border-width: 10px;\n border-bottom-color: $brand-inverse;\n }\n // Menu item\n .dijitMenuItem {\n background: transparent;\n .dijitMenuItemLabel {\n display: block;\n overflow: hidden;\n width: 180px !important;\n padding: 10px;\n text-overflow: ellipsis;\n color: #ffffff;\n border-radius: 3px;\n }\n // Hover\n &.dijitMenuItemHover {\n background: none;\n .dijitMenuItemLabel {\n background: $brand-primary;\n }\n }\n }\n // New label\n .tg_newlabelmenuitem {\n .dijitMenuItemLabel {\n font-weight: $font-weight-bold;\n }\n }\n // Seperator\n .dijitMenuSeparator {\n td {\n padding: 0;\n border-bottom-width: 3px;\n }\n .dijitMenuSeparatorIconCell {\n > div {\n margin: 0; //override dijit styling\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* Based on https://github.com/mendixlabs/star-rating/blob/v1.1.1/src/ui/StarRating.scss */\ndiv.widget-progress-bar .progress-bar-default {\n background-color: $brand-default;\n}\n\ndiv.widget-progress-bar .progress-bar-primary {\n background-color: $brand-primary;\n}\n\ndiv.widget-progress-bar .progress-bar-success {\n background-color: $brand-success;\n}\n\ndiv.widget-progress-bar .progress-bar-info {\n background-color: $brand-info;\n}\n\ndiv.widget-progress-bar .progress-bar-warning {\n background-color: $brand-warning;\n}\n\ndiv.widget-progress-bar .progress-bar-danger {\n background-color: $brand-danger;\n}\n\ndiv.widget-progress-bar .progress-bar-inverse {\n background-color: $brand-inverse;\n}\n\ndiv.widget-progress-bar-alert.widget-progress-bar-text-contrast .progress-bar {\n color: $color-danger-darker;\n}\n\ndiv.widget-progress-bar-text-contrast .progress-bar {\n color: $font-color-default;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* Based on https://github.com/mendixlabs/progress-circle/tree/master/src/ui/_progress-circle-theme.scss */\npath.widget-progress-circle-path {\n stroke: $brand-primary;\n}\n\n.widget-progress-circle-primary {\n path.widget-progress-circle-path {\n stroke: $brand-primary;\n }\n .progressbar-text {\n color: $brand-primary !important;\n }\n}\n\n.widget-progress-circle-info {\n path.widget-progress-circle-path {\n stroke: $brand-info;\n }\n .progressbar-text {\n color: $brand-info !important;\n }\n}\n\n.widget-progress-circle-success {\n path.widget-progress-circle-path {\n stroke: $brand-success;\n }\n .progressbar-text {\n color: $brand-success !important;\n }\n}\n\n.widget-progress-circle-warning {\n path.widget-progress-circle-path {\n stroke: $brand-warning;\n }\n .progressbar-text {\n color: $brand-warning !important;\n }\n}\n\n.widget-progress-circle-danger {\n path.widget-progress-circle-path {\n stroke: $brand-danger;\n }\n .progressbar-text {\n color: $brand-danger !important;\n }\n}\n\n.widget-progress-circle-inverse {\n path.widget-progress-circle-path {\n stroke: $brand-inverse;\n }\n .progressbar-text {\n color: $brand-inverse !important;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n// Based on https://github.com/mendixlabs/range-slider/tree/master/src/ui/_range-slider-theme.scss\n\ndiv.widget-range-slider {\n .rc-slider-handle,\n .rc-slider-dot-active {\n border-color: $brand-default;\n\n &:active {\n border-color: $brand-default;\n box-shadow: none;\n }\n\n &:hover {\n border-color: $brand-default;\n }\n }\n\n &.has-error {\n .rc-slider-track,\n .rc-slider-rail {\n background-color: $brand-danger;\n }\n }\n}\n\ndiv.widget-range-slider-primary .rc-slider-track {\n background-color: $brand-primary;\n}\n\ndiv.widget-range-slider-info .rc-slider-track {\n background-color: $brand-info;\n}\n\ndiv.widget-range-slider-success .rc-slider-track {\n background-color: $brand-success;\n}\n\ndiv.widget-range-slider-warning .rc-slider-track {\n background-color: $brand-warning;\n}\n\ndiv.widget-range-slider-danger .rc-slider-track {\n background-color: $brand-danger;\n}\n\ndiv.widget-range-slider-inverse .rc-slider-track {\n background-color: $brand-inverse;\n}\n\n.rc-slider-tooltip {\n z-index: 999;\n}","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n// Based on https://github.com/mendixlabs/slider/tree/master/src/ui/_slider-theme.scss\n\ndiv.widget-slider {\n .rc-slider-handle,\n .rc-slider-dot-active {\n border-color: $brand-default;\n &:active {\n border-color: $brand-default;\n }\n &:hover {\n border-color: $brand-default;\n }\n }\n\n &.has-error {\n .rc-slider-track,\n .rc-slider-rail {\n background-color: $brand-danger;\n }\n }\n}\n\ndiv.widget-slider-primary .rc-slider-track {\n background-color: $brand-primary;\n}\n\ndiv.widget-slider-info .rc-slider-track {\n background-color: $brand-info;\n}\n\ndiv.widget-slider-success .rc-slider-track {\n background-color: $brand-success;\n}\n\ndiv.widget-slider-warning .rc-slider-track {\n background-color: $brand-warning;\n}\n\ndiv.widget-slider-danger .rc-slider-track {\n background-color: $brand-danger;\n}\n\ndiv.widget-slider-inverse .rc-slider-track {\n background-color: $brand-inverse;\n}\n","//\r\n// DISCLAIMER:\r\n// Do not change this file because it is core styling.\r\n// Customizing core files will make updating Atlas much more difficult in the future.\r\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\r\n//\r\n\r\n/* Based on https://github.com/mendixlabs/star-rating/blob/v1.1.1/src/ui/StarRating.scss */\r\nspan.widget-star-rating-full-default {\r\n color: $brand-default;\r\n}\r\n\r\nspan.widget-star-rating-full-primary {\r\n color: $brand-primary;\r\n}\r\n\r\nspan.widget-star-rating-full-success {\r\n color: $brand-success;\r\n}\r\n\r\nspan.widget-star-rating-full-info {\r\n color: $brand-info;\r\n}\r\n\r\nspan.widget-star-rating-full-warning {\r\n color: $brand-warning;\r\n}\r\n\r\nspan.widget-star-rating-full-danger {\r\n color: $brand-danger;\r\n}\r\n\r\nspan.widget-star-rating-full-inverse {\r\n color: $brand-inverse;\r\n}\r\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n$default-android-color: #6FBEB5;\n$default-ios-color: rgb(100, 189, 99);\n\n@mixin bootstrap-style-ios($brand-style) {\n border-color: $brand-style;\n background-color: $brand-style;\n box-shadow: $brand-style 0 0 0 16px inset;\n}\n\n@mixin bootstrap-style-android($brand-style) {\n background-color: lighten($brand-style, 10%);\n}\n\n@mixin ios {\n .widget-switch-btn-wrapper {\n &.checked {\n &.widget-switch-btn-wrapper-default {\n @include bootstrap-style-ios($default-ios-color);\n }\n\n &.widget-switch-btn-wrapper-success {\n @include bootstrap-style-ios($brand-success);\n }\n\n &.widget-switch-btn-wrapper-info {\n @include bootstrap-style-ios($brand-info);\n }\n\n &.widget-switch-btn-wrapper-primary {\n @include bootstrap-style-ios($brand-primary);\n }\n\n &.widget-switch-btn-wrapper-warning {\n @include bootstrap-style-ios($brand-warning);\n }\n\n &.widget-switch-btn-wrapper-danger {\n @include bootstrap-style-ios($brand-danger);\n }\n\n &.widget-switch-btn-wrapper-inverse {\n @include bootstrap-style-ios($brand-inverse);\n }\n }\n }\n}\n\n@mixin android {\n .widget-switch-btn-wrapper {\n &.checked {\n &.widget-switch-btn-wrapper-default {\n @include bootstrap-style-android($default-android-color);\n\n .widget-switch-btn {\n background: $default-android-color;\n }\n }\n\n &.widget-switch-btn-wrapper-success {\n @include bootstrap-style-android($brand-success);\n\n .widget-switch-btn {\n background: $brand-success;\n }\n }\n\n &.widget-switch-btn-wrapper-info {\n @include bootstrap-style-android($brand-info);\n\n .widget-switch-btn {\n background: $brand-info;\n }\n }\n\n &.widget-switch-btn-wrapper-primary {\n @include bootstrap-style-android($brand-primary);\n\n .widget-switch-btn {\n background: $brand-primary;\n }\n }\n\n &.widget-switch-btn-wrapper-warning {\n @include bootstrap-style-android($brand-warning);\n\n .widget-switch-btn {\n background: $brand-warning;\n }\n }\n\n &.widget-switch-btn-wrapper-danger {\n @include bootstrap-style-android($brand-danger);\n\n .widget-switch-btn {\n background: $brand-danger;\n }\n }\n\n &.widget-switch-btn-wrapper-inverse {\n @include bootstrap-style-android($brand-inverse);\n\n .widget-switch-btn {\n background: $brand-inverse;\n }\n }\n }\n }\n}\n\n.widget-switch-btn-wrapper {\n &:focus {\n outline: 1px solid $brand-primary;\n }\n}\n\ndiv {\n &.widget-switch {\n &.iOS {\n @include ios;\n }\n\n &.android {\n @include android;\n }\n\n &.auto {\n @include ios;\n }\n }\n}\n\nhtml {\n div {\n &.dj_android {\n .widget-switch {\n &.auto {\n @include android;\n }\n }\n }\n\n &.dj_ios {\n .widget-switch {\n &.auto {\n @include ios;\n }\n }\n }\n }\n}\n","/* ==========================================================================\n Breadcrumbs\n\n========================================================================== */\n.breadcrumb {\n //reset\n margin: 0;\n padding: 0;\n border-radius: 0;\n background-color: transparent;\n font-size: $font-size-default;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.breadcrumb-item {\n display: inline-block;\n margin: 0;\n &:last-child {\n color: $font-color-default;\n a {\n text-decoration: none;\n }\n }\n}\n.breadcrumb-item + .breadcrumb-item {\n &::before {\n display: inline-block;\n padding-right: 10px;\n padding-left: 10px;\n content: \"/\";\n color: $gray-light;\n }\n}\n\n//== Variations \n//-------------------------------------------------------------------------------------------------------------------//\n.breadcrumb-large {\n font-size: $font-size-h3;\n}\n.breadcrumb-underline {\n padding-bottom: $gutter-size;\n border-bottom: 1px solid $border-color-default;\n}\n","/* ==========================================================================\n Cards\n\n========================================================================== */\n.card {\n padding: 30px;\n border: 1px solid $border-color-default;\n border-radius: $border-radius-default;\n background-color: #FFFFFF;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.card-title {\n margin-top: 0;\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.cardaction {\n .card-image {\n .glyphicon {\n font-size: 58px;\n }\n }\n}\n\n.cardmetrics {\n .card-title {\n margin-bottom: 0;\n }\n\n .figurecontent {\n }\n\n .card-image {\n width: 100px;\n height: auto;\n // If btn\n &.btn {\n width: 100px;\n height: 100px;\n padding: 0;\n cursor: default;\n pointer-events: none;\n font-size: 40px;\n }\n }\n\n .card-counter {\n margin: 0;\n font-size: 64px;\n }\n\n .card-morebutton {\n }\n}\n\n.cardinfo {\n .card-text {\n margin-bottom: $spacing-large;\n }\n}\n\n// Used in card info\n.textwithicon {\n overflow: hidden;\n max-width: 100%;\n margin-bottom: 15px;\n text-overflow: ellipsis;\n\n .textwithicon-icon,\n .textwithicon-text {\n display: inline-block;\n vertical-align: middle;\n }\n\n .textwithicon-icon {\n margin-right: 15px;\n padding: 0;\n color: $brand-primary; // class .text-primary\n border: 0;\n background: transparent;\n font-size: 23px;\n }\n\n .textwithicon-text {\n }\n}\n\n// Used in card info\n.socialprofiles {\n .socialprofiles-title {\n display: block;\n margin-bottom: 10px;\n font-weight: bold; // class text-bold\n }\n\n .socialprofiles-button {\n width: 24px;\n height: 24px;\n margin-right: 15px;\n padding: 0;\n border-radius: 24px;\n\n .glyphicon {\n margin: 0;\n }\n }\n}\n\n\n.cardtabs {\n padding: 0;\n}\n\n.cardtabs-tabs {\n margin: 0;\n\n ul.mx-tabcontainer-tabs {\n display: flex;\n margin: 0;\n background-color: mix($tabs-border-color, #FFFFFF, 20%);\n\n li {\n flex: 1 1 auto;\n text-align: center;\n\n a,\n a:hover,\n a:focus {\n border-top-width: 0;\n border-right-width: 1px;\n border-left-width: 0;\n }\n\n &:first-child a {\n border-radius: $border-radius-default 0 0 0;\n }\n\n &:last-child a {\n border-radius: 0 $border-radius-default 0 0;\n }\n }\n }\n\n .mx-tabcontainer-pane {\n @include get-responsive-spacing-large($type: padding, $direction: all);\n }\n}\n\n.carduser {\n .card-controls {\n }\n\n .card-title {\n }\n\n .card-detail {\n }\n}\n\n.cardgraph {\n .card-title {\n }\n}\n\n.cardchart {\n .card-title {\n }\n}\n\n.cardproduct {\n padding: 0;\n\n}\n\n.cardproduct-header {\n position: relative;\n overflow: hidden;\n height: 200px;\n\n .card-image {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: auto;\n }\n\n}\n\n.cardproduct-overlay {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n padding: 20px 30px;\n background: rgba(0, 0, 0, 0.60);\n\n}\n\n.cardproduct-overlay-category,\n.cardproduct-overlay-title {\n margin: 0;\n color: #FFFFFF;\n}\n\n.cardproduct-footer .col {\n padding: 20px 30px;\n\n .widget-star-rating-font {\n font-size: 20px;\n }\n}\n\n.cardproduct-name {\n margin: 0;\n}\n\n.cardproduct-btn {\n display: flex;\n align-items: center;\n height: 100%;\n padding: 30px;\n border-left: 1px solid $border-color-default;\n}\n\n.cardproduct2 {\n @extend .cardproduct;\n\n .cardproduct-header {\n &::after {\n position: absolute;\n bottom: 0;\n left: 0;\n display: block;\n width: 100%;\n padding: 20px 30px;\n content: \"\";\n background: rgba(0, 0, 0, 0.60);\n background: -moz-linear-gradient(top, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 2%, rgba(0, 0, 0, 0.99) 99%, rgba(0, 0, 0, 1) 100%);\n background: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 2%, rgba(0, 0, 0, 0.99) 99%, rgba(0, 0, 0, 1) 100%);\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 2%, rgba(0, 0, 0, 0.99) 99%, rgba(0, 0, 0, 1) 100%);\n }\n }\n}\n\n\n.cardproduct3 {\n @extend .cardproduct;\n\n .cardproduct-header {\n height: 320px;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n }\n\n .cardproduct-overlay {\n min-height: 100px;\n padding: 30px;\n background: -moz-linear-gradient(top, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 8%, rgba(0, 0, 0, 0.99) 121%, rgba(0, 0, 0, 1) 100%);\n background: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 8%, rgba(0, 0, 0, 0.99) 121%, rgba(0, 0, 0, 1) 100%);\n background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 8%, rgba(0, 0, 0, 0.99) 121%, rgba(0, 0, 0, 1) 100%);\n font-size: $font-size-default;\n }\n}\n\n.cardshopping {\n}\n\n.carduserlist {\n}\n\n.cardstatus {\n padding: 20px;\n\n .card-linkicon {\n font-size: 30px;\n }\n\n .cardstatus-status {\n margin-bottom: 5px;\n }\n}\n\n.cardpayment {\n}\n\n.cardprogress {\n}\n\n.cardprogress-state {\n width: 80px;\n height: 80px;\n padding: 0;\n cursor: default;\n pointer-events: none;\n border-radius: 100%;\n font-size: 28px;\n}\n\n.cardhighlight {\n border-top: 4px solid $brand-primary;\n}\n\n.cardchat {\n overflow: hidden;\n padding: 0;\n\n .chat {\n height: 400px;\n }\n}\n\n@media screen and (max-width: $screen-md-max) {\n .widget-charts:not([height]),\n .widget-charts-line:not([height]) {\n padding-bottom: 80% !important;\n }\n}\n\n\n@media screen and (max-width: $screen-lg-max) {\n .cardprogress {\n .cardprogress-state {\n width: 60px;\n height: 60px;\n font-size: 24px;\n }\n }\n}\n","/* ==========================================================================\n Chats\n\n========================================================================== */\n.chat {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: $bg-color-secondary;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.chat-content {\n display: flex;\n overflow: auto;\n flex: 1;\n flex-direction: column;\n justify-content: flex-end;\n\n .chat-list {\n position: relative;\n overflow: auto;\n\n ul {\n display: flex;\n flex-direction: column-reverse;\n margin-bottom: $m-spacing-large;\n }\n\n li {\n padding: 15px 30px;\n animation: fadeIn 0.2s;\n background-color: transparent;\n animation-fill-mode: both;\n\n &,\n &:last-child {\n border: 0;\n }\n }\n\n .mx-listview-loadMore {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n display: block;\n width: 50%;\n margin: 15px auto;\n color: #FFFFFF;\n background-color: $brand-primary;\n box-shadow: 0 2px 20px 0 rgba(0, 0, 0, 0.05);\n }\n }\n}\n\n\n.chat-message {\n display: flex;\n}\n\n.chat-avatar {\n margin: 0 20px 0 0;\n border-radius: 50%;\n}\n\n.chat-message-content {\n display: inline-flex;\n flex-direction: column;\n}\n\n.chat-message-balloon {\n position: relative;\n display: flex;\n flex-direction: column;\n padding: 10px 15px;\n border-radius: 5px;\n background-color: $bg-color;\n\n &::after {\n position: absolute;\n top: 10px;\n right: 100%;\n width: 0;\n height: 0;\n content: '';\n border: 10px solid transparent;\n border-top: 0;\n border-right-color: $bg-color;\n border-left: 0;\n }\n}\n\n.chat-message-time {\n padding-top: 2px;\n\n .form-control-static {\n border: 0;\n }\n}\n\n.chat-footer {\n z-index: 1;\n padding: $m-spacing-large;\n background-color: $bg-color;\n box-shadow: 0 2px 20px 0 rgba(0, 0, 0, 0.05);\n}\n\n.chat-input {\n display: flex;\n\n .chat-textbox {\n flex: 1;\n margin-right: $spacing-large;\n margin-bottom: 0;\n\n .form-control {\n border: 0;\n }\n }\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.chat-message-self {\n justify-content: flex-end;\n\n .chat-avatar {\n margin: 0 0 0 20px;\n }\n\n .chat-message-balloon {\n background-color: $color-primary-lighter;\n\n &::after {\n left: 100%;\n border: 10px solid transparent;\n border-top: 0;\n border-right: 0;\n border-left-color: $color-primary-lighter;\n }\n }\n\n .chat-message-time {\n text-align: right;\n }\n}\n","/* ==========================================================================\n Control Group\n \n A group of buttons next to eachother\n========================================================================== */\n.controlgroup {\n .btn,\n .btn-group {\n margin-right: $spacing-small;\n margin-bottom: $spacing-small;\n\n &:last-child {\n margin-right: 0;\n }\n .btn {\n margin-right: 0;\n margin-bottom: 0;\n }\n }\n .btn-group {\n .btn + .btn {\n margin-left: -1px;\n }\n }\n}\n","/* ==========================================================================\n Full page blocks\n\n Blocks that take up the full width and height\n========================================================================== */\n\n.fullpageblock {\n position: relative;\n height: 100%;\n min-height: 100%;\n\n // Helper to make it fullheight\n .fullheight {\n height: 100% !important;\n\n & > .mx-dataview-content {\n height: inherit !important;\n }\n }\n\n .fullpage-overlay {\n position: absolute;\n z-index: 10;\n bottom: 0;\n left: 0;\n width: 100%;\n }\n}\n","/* ==========================================================================\n Pageheader\n========================================================================== */\n\n//== Default\n//-------------------------------------------------------------------------------------------------------------------//\n.pageheader {\n border-bottom: 1px solid $border-color-default;\n background: $header-bg-color;\n}\n\n// Check if it is part of a inner layoutgrid\n.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .pageheader {\n @include get-responsive-spacing-large($type: margin, $direction: bottom);\n @include get-responsive-spacing-large($type: padding, $direction: bottom);\n background: transparent;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.pageheader-type {\n margin: 0;\n}\n\n.pageheader-title {\n margin: 0;\n}\n\n.pageheader-subtitle {\n margin: 0;\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.pageheaderwithcontrols {\n .controlgroup {\n }\n}\n\n.pageheaderwithimage {\n .pageheader-image {\n }\n .figurecontent {\n }\n}\n\n.pageheaderwithimageandcontrols {\n}\n\n.pageheaderwithsearch {\n .pageheader-title {\n margin-bottom: 1em;\n }\n}\n\n.pageheaderwithbreadcrumb {\n .breadcrumb {\n }\n}\n","/* ==========================================================================\n Pageheader\n\n========================================================================== */\n.heroheader {\n border-bottom: 1px solid $border-color-default;\n background: $header-bg-color;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.heroheader-title {\n margin: 0 0 10px 0;\n}\n\n.heroheader-subtitle {\n margin: 0;\n padding: 0 15px;\n\n &::before {\n display: block;\n max-width: 330px;\n height: 1px;\n margin: auto auto 10px auto;\n content: \"\";\n background-color: lighten($border-color-default, 4);\n }\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.heroheader1 {\n background-image: $brand-gradient;\n\n .heroheader-title {\n margin-bottom: 10px;\n color: #FFFFFF;\n }\n\n .heroheader-subtitle {\n padding: 0;\n color: #FFFFFF;\n\n &::before {\n display: none;\n }\n }\n}\n\n.heroheadermap {\n padding: 0 !important;\n}\n\n.heroheadermap-controls {\n padding: $spacing-large;\n background: $header-bg-color;\n}\n\n.heroheaderproduct {\n position: relative;\n overflow: hidden;\n height: 300px;\n background-color: #000000;\n\n .heroheaderproduct-backgroundimage {\n position: absolute;\n z-index: 0;\n top: 0;\n width: 100%;\n opacity: 0.7;\n filter: blur(5px);\n }\n\n .heroheaderproduct-overlay {\n position: absolute;\n z-index: 1;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n}\n\n.heroheaderexpense {\n .heroheaderexpense-title {\n font-size: 72px;\n }\n\n .heroheaderexpense-type {\n align-items: center;\n\n &::before {\n flex-grow: 1;\n height: 1px;\n margin-right: 10px;\n content: \"\";\n background-color: #D2D2D2;\n }\n }\n}\n","/* ==========================================================================\n Form Block\n\n Used in default forms\n========================================================================== */\n.formblock {\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.formblock-title {\n margin-bottom: $gutter-size;\n padding-bottom: $gutter-size;\n border-bottom: 1px solid $border-color-default;\n}\n","/* ==========================================================================\n Master Detail\n\n A list with a listening dataview\n========================================================================== */\n.masterdetail {\n .masterdetail-master {\n .controlgroup {\n margin-bottom: $gutter-size;\n }\n\n @media (max-width: $screen-lg) {\n @include layout-spacing($type: margin, $direction: bottom, $device: responsive);\n }\n\n @media (min-width: $screen-lg) {\n border-right: 1px solid $border-color-default;\n\n .mx-listview-searchbar {\n margin: $gutter-size;\n }\n .controlgroup {\n padding: $gutter-size;\n border-bottom: 1px solid $border-color-default;\n }\n }\n }\n\n .masterdetail-detail {\n @media (min-width: $screen-lg) {\n @include layout-spacing($type: padding, $direction: all, $device: responsive);\n }\n }\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.masterdetailvertical {\n .masterdetail-master {\n @include layout-spacing($type: margin, $direction: bottom, $device: responsive);\n }\n\n .masterdetail-detail {\n @include layout-spacing($type: padding, $direction: top, $device: responsive);\n }\n}\n","/* ==========================================================================\n User profile blocks\n -\n========================================================================== */\n.userprofile {\n .userprofile-img {\n }\n .userprofile-title {\n }\n .userprofile-subtitle {\n }\n}","$wizard-step-number-size: 60px;\n$wizard-step-height: 50px;\n\n.wizard {\n display: flex;\n justify-content: space-between;\n .wizard-step {\n position: relative;\n width: 100%;\n text-align: center;\n &::before {\n position: absolute;\n z-index: -1;\n top: $wizard-step-number-size / 2;\n display: block;\n width: 100%;\n height: 2px;\n content: \"\";\n background-color: $border-color-default;\n }\n .wizard-step-number {\n width: $wizard-step-number-size;\n height: $wizard-step-number-size;\n border-color: $border-color-default;\n border-radius: 50%;\n background-color: #FFFFFF;\n font-size: 20px;\n }\n .wizard-step-text {\n display: block;\n margin-top: 15px;\n }\n }\n\n\n // States\n .wizard-step-active {\n .wizard-step-number {\n color: #FFFFFF;\n border-color: $brand-primary;\n background-color: $brand-primary;\n }\n .wizard-step-text {\n color: $brand-primary;\n }\n }\n .wizard-step-visited {\n .wizard-step-number {\n color: #FFFFFF;\n border-color: $brand-success;\n background-color: $brand-success;\n }\n .wizard-step-text {\n }\n }\n}\n\n.wizardprogress {\n display: flex;\n justify-content: space-between;\n\n .wizard-step-text {\n width: 100%;\n }\n\n .wizard-step {\n position: relative;\n width: 100%;\n height: $wizard-step-height;\n margin-left: 0 - ($wizard-step-height / 2);\n padding-left: ($wizard-step-height / 2);\n border: 1px solid $border-color-default;\n background: #FFFFFF;\n\n a {\n display: block;\n overflow: hidden;\n width: 100%;\n height: 100%;\n padding: 14px;\n white-space: nowrap;\n text-decoration: none;\n text-overflow: ellipsis;\n color: $font-color-default;\n }\n &::before,\n &::after {\n position: absolute;\n z-index: 1;\n left: 100%;\n margin-left: 0 - ($wizard-step-height / 2);\n content: \" \";\n border-style: solid;\n border-color: transparent;\n }\n &::after {\n top: 1px;\n border-width: (($wizard-step-height / 2) - 1);\n border-left-color: #FFFFFF;\n }\n &::before {\n top: 0;\n border-width: $wizard-step-height / 2;\n border-left-color: $border-color-default;\n }\n\n &:first-child {\n margin-left: 0;\n padding-left: 0;\n border-radius: 5px 0 0 5px;\n }\n\n &:last-child {\n border-radius: 0 5px 5px 0;\n &::before,\n &::after {\n display: none;\n }\n }\n }\n // States\n .wizard-step-active {\n background: $brand-primary;\n a {\n text-decoration: none;\n color: #FFFFFF;\n }\n &::after {\n border-left-color: $brand-primary;\n }\n }\n .wizard-step-visited {\n a {\n color: $link-color;\n }\n }\n}\n","// Timeline\n.timeline {\n .timeline-header {\n display: inline-block;\n width: 110px;\n padding: 8px;\n text-align: center;\n border: 1px solid $border-color-default;\n border-radius: 30px;\n }\n}\n.timeline-itemwrapper.mx-listview {\n margin-bottom: 0;\n margin-left: 55px;\n padding: $spacing-large 0;\n border-left: 1px solid $border-color-default;\n & > ul > li {\n position: relative;\n padding-left: ($gutter-size * 2);\n\n &::before {\n position: absolute;\n top: 5px;\n left: -5px;\n display: block;\n width: 10px;\n height: 10px;\n content: '';\n border-radius: 50%;\n background-color: $brand-primary;\n }\n }\n li + li {\n margin-top: $spacing-large;\n }\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.timeline2 {\n .timeline-itemwrapper.mx-listview {\n & > ul > li {\n padding-left: $gutter-size;\n }\n }\n}\n","/* ==========================================================================\n Atlas layout\n \n The core stucture of all atlas layouts\n========================================================================== */\n.layout-atlas {\n // Toggle button\n .toggle-btn > .glyphicon {\n margin: 0;\n }\n\n // Sidebar\n .region-sidebar {\n background-color: $navsidebar-bg;\n\n .mx-navigationtree .navbar-inner > ul > li > a {\n padding: 0 15px;\n\n .glyphicon {\n margin-right: 10px;\n }\n }\n .toggle-btn {\n border-color: transparent;\n border-radius: 0;\n background: transparent;\n }\n }\n\n // Topbar\n .region-topbar {\n position: relative;\n z-index: 1; // Show dropshadow\n min-height: $topbar-minimalheight;\n border-bottom: 1px solid $navtopbar-border-color;\n background-color: $navtopbar-bg;\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14);\n\n &::before {\n z-index: 1;\n display: block;\n width: 100%;\n height: 4px;\n content: \"\";\n background-color: $brand-primary;\n }\n // Topbar Content\n .topbar-content {\n display: flex;\n align-items: center;\n min-height: $topbar-minimalheight;\n }\n\n // Toggle btn\n .toggle-btn {\n margin-right: 15px;\n padding: 5px;\n }\n\n // For your company, product, or project name\n .navbar-brand {\n display: inline-block;\n // reset bootstrap\n float: none;\n height: auto;\n padding: 0;\n line-height: inherit;\n\n img {\n display: inline-block;\n @if $brand-logo !=false {\n width: 0;\n height: 0;\n padding: ($brand-logo-height / 2) ($brand-logo-width / 2);\n background-image: url($brand-logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: $brand-logo-width;\n } @else {\n width: auto;\n height: $brand-logo-height;\n }\n }\n\n a {\n margin-left: 5px;\n color: $navbar-brand-name;\n font-size: 20px;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n }\n }\n\n .mx-navbar {\n display: inline-block;\n margin-left: $gutter-size;\n vertical-align: middle;\n background: transparent;\n\n & > .mx-navbar-item {\n & > a {\n margin-top: 5px;\n padding: 0 20px;\n }\n }\n }\n }\n}\n","/* ==========================================================================\n Atlas layout\n \n Extra styling for phone layouts\n========================================================================== */\n.layout-atlas-phone {\n .region-topbar {\n min-height: $m-header-height;\n border-style: none;\n background-color: $m-header-bg;\n\n &::before {\n display: none;\n }\n }\n}\n","/* ==========================================================================\n Atlas layout\n\n Extra styling for responsive layouts\n========================================================================== */\n.layout-atlas-responsive-default {\n $sidebar-width: 60px;\n\n @media (min-width: $screen-md) {\n .mx-scrollcontainer:not(.mx-scrollcontainer-open) > .region-sidebar {\n width: $sidebar-width !important;\n\n .mx-scrollcontainer-wrapper > .mx-navigationtree ul li {\n &.mx-navigationtree-has-items:hover {\n a {\n background-color: $navsidebar-sub-bg;\n }\n\n ul {\n position: absolute;\n z-index: 100;\n top: 0;\n bottom: 0;\n left: $sidebar-width;\n display: block;\n overflow-y: auto;\n min-width: 200px;\n padding-top: 10px;\n }\n }\n\n &.mx-navigationtree-collapsed,\n &.mx-navigationtree-has-items {\n ul {\n display: none;\n }\n }\n }\n }\n }\n\n\n .mx-scrollcontainer-slide {\n\n &.mx-scrollcontainer-open > .region-sidebar {\n width: $sidebar-width !important;\n }\n }\n\n // Push aside for mobile\n @media (max-width: $screen-sm-max) {\n .mx-scrollcontainer-open:not(.mx-scrollcontainer-slide) {\n width: 1100px;\n }\n\n .mx-scrollcontainer-slide .toggle-btn {\n display: inline-block !important;\n }\n }\n\n // Sidebar\n .region-sidebar {\n .toggle-btn {\n width: $sidebar-width;\n height: 60px;\n border-color: transparent;\n border-radius: 0;\n background: transparent;\n }\n\n .mx-scrollcontainer-wrapper > .mx-navigationtree {\n .navbar-inner > ul > li {\n & > a {\n height: $sidebar-width;\n // Glyph icon\n .glyphicon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n margin-left: -5px;\n padding: 10px;\n border-radius: 3px;\n }\n\n &.active {\n .glyphicon {\n background: $brand-primary;\n }\n }\n }\n }\n }\n }\n\n // Topbar\n .region-topbar {\n }\n}\n\n// Topbar variant\n.layout-atlas-responsive-topbar {\n .mx-scrollcontainer-slide,\n .mx-scrollcontainer-push {\n &:not(.mx-scrollcontainer-open) > .region-sidebar {\n visibility: hidden;\n }\n }\n}\n\n// All responsive layouts\n.layout-atlas-responsive-default,\n.layout-atlas-responsive-topbar {\n // Topbar\n .region-topbar {\n .toggle-btn {\n display: none;\n\n @media (max-width: $screen-sm-max) {\n display: inline-block;\n }\n }\n }\n\n .mx-scrollcontainer-slide {\n &:not(.mx-scrollcontainer-open) > .region-sidebar {\n overflow: hidden;\n }\n\n &.mx-scrollcontainer-open > .region-sidebar {\n\n & > .mx-scrollcontainer-wrapper {\n position: relative;\n }\n }\n\n .region-sidebar > .mx-scrollcontainer-wrapper {\n z-index: 2;\n background-color: inherit;\n }\n }\n}\n\n// Fix Safari issue of sidebar disappearing\n.profile-tablet {\n .mx-scrollcontainer:not(.mx-scrollcontainer-open) > .region-sidebar {\n overflow-y: hidden;\n\n .mx-scrollcontainer-wrapper {\n overflow: visible;\n }\n }\n}\n","/* ==========================================================================\n Atlas layout\n \n Extra styling for tablet layouts\n========================================================================== */\n.layout-atlas-tablet {\n // tablet\n}\n","@import \"custom-variables\";\n"],"names":[],"mappings":"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K,CNoBuC,IAAO,CMnBnD,YAAY,CNAgC,IAAO,CMCnD,UAAU,CNDkC,IAAO,CMEtD,AsBEL,AtBDI,iBsBCa,CtBDX,iBAAiB,AAAC,CAChB,YAAY,CNJgC,IAAO,CMKtD,AsBGL,AtBVI,iBsBUa,CtBVX,mBAAmB,AAAC,CAClB,KAAK,CL4gB2B,IAAI,CK3gBpC,YAAY,CNCgC,OAAO,CMAnD,UAAU,CNAkC,OAAO,CMCtD,AsBML,AtBLI,iBsBKa,CtBLX,iBAAiB,AAAC,CAChB,YAAY,CNHgC,OAAO,CMItD,AsBOL,AtBdI,iBsBca,CtBdX,mBAAmB,AAAC,CAClB,KAAK,CL2gB2B,IAAI,CK1gBpC,YAAY,CNEgC,OAAO,CMDnD,UAAU,CNCkC,OAAO,CMAtD,AsBUL,AtBTI,iBsBSa,CtBTX,iBAAiB,AAAC,CAChB,YAAY,CNFgC,OAAO,CMGtD,AsBYL,AtBnBI,iBsBmBa,CtBnBX,mBAAmB,AAAC,CAClB,KAAK,CL8gB2B,IAAI,CK7gBpC,YAAY,CNIgC,OAAO,CMHnD,UAAU,CNGkC,OAAO,CMFtD,AsBeL,AtBdI,iBsBca,CtBdX,iBAAiB,AAAC,CAChB,YAAY,CNAgC,OAAO,CMCtD,AsBiBL,AtBxBI,csBwBU,CtBxBR,mBAAmB,AAAC,CAClB,KAAK,CL6gB2B,IAAI,CK5gBpC,YAAY,CNGgC,OAAO,CMFnD,UAAU,CNEkC,OAAO,CMDtD,AsBoBL,AtBnBI,csBmBU,CtBnBR,iBAAiB,AAAC,CAChB,YAAY,CNDgC,OAAO,CMEtD,AsBsBL,AtB7BI,iBsB6Ba,CtB7BX,mBAAmB,AAAC,CAClB,KAAK,CL+gB2B,IAAI,CK9gBpC,YAAY,CNKgC,OAAO,CMJnD,UAAU,CNIkC,OAAO,CMHtD,AsByBL,AtBxBI,iBsBwBa,CtBxBX,iBAAiB,AAAC,CAChB,YAAY,CNCgC,OAAO,CMAtD,AsB2BL,AtBlCI,gBsBkCY,CtBlCV,mBAAmB,AAAC,CAClB,KAAK,CLghB2B,IAAI,CK/gBpC,YAAY,CNMgC,OAAO,CMLnD,UAAU,CNKkC,OAAO,CMJtD,AsB8BL,AtB7BI,gBsB6BY,CtB7BV,iBAAiB,AAAC,CAChB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"} \ No newline at end of file diff --git a/theme_old/styles/web/sass/app/_custom-variables.scss b/theme_old/styles/web/sass/app/_custom-variables.scss deleted file mode 100644 index a47c7e0..0000000 --- a/theme_old/styles/web/sass/app/_custom-variables.scss +++ /dev/null @@ -1,73 +0,0 @@ -//== Gray Shades -//## Different gray shades to be used for our variables and components -$gray-darker: #222222; -$gray-dark: #333333; -$gray: #555555; -$gray-light: #888888; -$gray-primary: #D7D7D7; -$gray-lighter: #EEEEEE; - -//== Step 1: Brand Colors -$brand-default: #DDDDDD; -$brand-primary: #0595DB; -$brand-inverse: #252C36; -$brand-info: #48B0F7; -$brand-success: #76CA02; -$brand-warning: #F99B1D; -$brand-danger: #ED1C24; - -// Used for other variables -$default-border-color: $gray-primary; - -//== Step 3: Typography -$font-family-import: "https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700"; -@if $font-family-import != false { - // Only import, if the import is set - @import url($font-family-import); -} -$font-family-base: "Open Sans", sans-serif; -$font-base-size: 14px; -$font-base-color: #555555; -$link-color: $brand-primary; -$font-size-h1: 31px; -$font-size-h2: 26px; -$font-size-h3: 24px; -$font-size-h4: 18px; -$font-color-detail: $gray-light; -$font-color-headers: #17347B; - -//== Step 2: UI Customization - -// Topbar -$topbar-bg: #FFFFFF; -$navtopbar-border-color: $default-border-color; -$topbar-border-color: $navtopbar-border-color; -$topbar-minimalheight: 60px; -$navtopbar-color: $font-base-color; -$navbar-brand-name: $default-border-color; -$brand-logo: false; -$brand-logo-height: 30px; -$brand-logo-width: 30px; - -// Sidebar -$sidebar-bg: $brand-inverse; -$navsidebar-color: #FFFFFF; -$navsidebar-color-hover: $navsidebar-color; - -// Backgrounds -$bg-color: #FFFFFF; -$bg-color-secondary: #F5F8FD; - -// == Old variables used in theme customizer to the new lib variables -$font-size-default: $font-base-size; -$font-color-default: $font-base-color; -$border-color-default: $default-border-color; -$font-color-header: $font-color-headers; - - -//== Settings -//## Enable or disable your desired framework features -// Use of !important -$important-flex: true; // ./base/flex.scss -$important-spacing: true; // ./base/spacing.scss -$important-helpers: true; // ./helpers/helperclasses.scss diff --git a/theme_old/styles/web/sass/app/_custom.scss b/theme_old/styles/web/sass/app/_custom.scss deleted file mode 100644 index fffc412..0000000 --- a/theme_old/styles/web/sass/app/_custom.scss +++ /dev/null @@ -1 +0,0 @@ -@import "custom-variables"; diff --git a/theme_old/styles/web/sass/core/_legacy/_mxui.scss b/theme_old/styles/web/sass/core/_legacy/_mxui.scss deleted file mode 100644 index a7ad1dd..0000000 --- a/theme_old/styles/web/sass/core/_legacy/_mxui.scss +++ /dev/null @@ -1,3562 +0,0 @@ -/* @preserve - Copyright (c) 2005-2016, Mendix bv. All rights reserved. - See mxclientsystem/licenses.txt for third party licenses that apply. -*/ - - -/* - Essential styles that themes can inherit. - In other words, works but doesn't look great. -*/ - - - -/**** - GENERIC PIECES - ****/ - - .dijitReset { - /* Use this style to null out padding, margin, border in your template elements - so that page specific styles don't break them. - - Use in all TABLE, TR and TD tags. - */ - margin:0; - border:0; - padding:0; - font: inherit; - line-height:normal; - color: inherit; -} -.dj_a11y .dijitReset { - -moz-appearance: none; /* remove predefined high-contrast styling in Firefox */ -} - -.dijitInline { - /* To inline block elements. - Similar to InlineBox below, but this has fewer side-effects in Moz. - Also, apparently works on a DIV as well as a FIELDSET. - */ - display:inline-block; /* webkit and FF3 */ - border:0; - padding:0; - vertical-align:middle; -} - -table.dijitInline { - /* To inline tables with a given width set */ - display:inline-table; - box-sizing: content-box; -moz-box-sizing: content-box; -} - -.dijitHidden { - /* To hide unselected panes in StackContainer etc. */ - position: absolute; /* remove from normal document flow to simulate display: none */ - visibility: hidden; /* hide element from view, but don't break scrolling, see #18612 */ -} -.dijitHidden * { - visibility: hidden !important; /* hide visibility:visible descendants of class=dijitHidden nodes, see #18799 */ -} - -.dijitVisible { - /* To show selected pane in StackContainer etc. */ - display: block !important; /* override user's display:none setting via style setting or indirectly via class */ - position: relative; /* to support setting width/height, see #2033 */ - visibility: visible; -} - -.dj_ie6 .dijitComboBox .dijitInputContainer, -.dijitInputContainer { - /* for positioning of placeHolder */ - overflow: hidden; - float: none !important; /* needed to squeeze the INPUT in */ - position: relative; -} -.dj_ie7 .dijitInputContainer { - float: left !important; /* needed by IE to squeeze the INPUT in */ - clear: left; - display: inline-block !important; /* to fix wrong text alignment in textdir=rtl text box */ -} - -.dj_ie .dijitSelect input, -.dj_ie input.dijitTextBox, -.dj_ie .dijitTextBox input { - font-size: 100%; -} -.dijitSelect .dijitButtonText { - float: left; - vertical-align: top; -} -TABLE.dijitSelect { - padding: 0 !important; /* messes up border alignment */ - border-collapse: separate; /* so jsfiddle works with Normalized CSS checked */ -} -.dijitTextBox .dijitSpinnerButtonContainer, -.dijitTextBox .dijitArrowButtonContainer, -.dijitValidationTextBox .dijitValidationContainer { - float: right; - text-align: center; -} -.dijitSelect input.dijitInputField, -.dijitTextBox input.dijitInputField { - /* override unreasonable user styling of buttons and icons */ - padding-left: 0 !important; - padding-right: 0 !important; -} -.dijitValidationTextBox .dijitValidationContainer { - display: none; -} - -.dijitTeeny { - font-size:1px; - line-height:1px; -} - -.dijitOffScreen { /* these class attributes should supersede any inline positioning style */ - position: absolute !important; - left: -10000px !important; - top: -10000px !important; -} - -/* - * Popup items have a wrapper div (dijitPopup) - * with the real popup inside, and maybe an iframe too - */ -.dijitPopup { - position: absolute; - background-color: transparent; - margin: 0; - border: 0; - padding: 0; - -webkit-overflow-scrolling: touch; -} - -.dijitPositionOnly { - /* Null out all position-related properties */ - padding: 0 !important; - border: 0 !important; - background-color: transparent !important; - background-image: none !important; - height: auto !important; - width: auto !important; -} - -.dijitNonPositionOnly { - /* Null position-related properties */ - float: none !important; - position: static !important; - margin: 0 0 0 0 !important; - vertical-align: middle !important; -} - -.dijitBackgroundIframe { - /* iframe used to prevent problems with PDF or other applets overlaying menus etc */ - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - z-index: -1; - border: 0; - padding: 0; - margin: 0; -} - -.dijitDisplayNone { - /* hide something. Use this as a class rather than element.style so another class can override */ - display:none !important; -} - -.dijitContainer { - /* for all layout containers */ - overflow: hidden; /* need on IE so something can be reduced in size, and so scrollbars aren't temporarily displayed when resizing */ -} - -/**** - A11Y - ****/ -.dj_a11y .dijitIcon, -.dj_a11y div.dijitArrowButtonInner, /* is this only for Spinner? if so, it should be deleted */ -.dj_a11y span.dijitArrowButtonInner, -.dj_a11y img.dijitArrowButtonInner, -.dj_a11y .dijitCalendarIncrementControl, -.dj_a11y .dijitTreeExpando { - /* hide icon nodes in high contrast mode; when necessary they will be replaced by character equivalents - * exception for input.dijitArrowButtonInner, because the icon and character are controlled by the same node */ - display: none; -} -.dijitSpinner div.dijitArrowButtonInner { - display: block; /* override previous rule */ -} - -.dj_a11y .dijitA11ySideArrow { - display: inline !important; /* display text instead */ - cursor: pointer; -} - -/* - * Since we can't use shading in a11y mode, and since the underline indicates today's date, - * use a border to show the selected date. - * Avoid screen jitter when switching selected date by compensating for the selected node's - * border w/padding on other nodes. - */ -.dj_a11y .dijitCalendarDateLabel { - padding: 1px; - border: 0px !important; -} -.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel { - border-style: solid !important; - border-width: 1px !important; - padding: 0; -} -.dj_a11y .dijitCalendarDateTemplate { - padding-bottom: 0.1em !important; /* otherwise bottom border doesn't appear on IE */ - border: 0px !important; -} -.dj_a11y .dijitButtonNode { - border: black outset medium !important; - - /* In claro, hovering a toolbar button reduces padding and adds a border. - * Not needed in a11y mode since Toolbar buttons always have a border. - */ - padding: 0 !important; -} -.dj_a11y .dijitArrowButton { - padding: 0 !important; -} - -.dj_a11y .dijitButtonContents { - margin: 0.15em; /* Margin needed to make focus outline visible */ -} - -.dj_a11y .dijitTextBoxReadOnly .dijitInputField, -.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode { - border-style: outset!important; - border-width: medium!important; - border-color: #999 !important; - color:#999 !important; -} - -/* button inner contents - labels, icons etc. */ -.dijitButtonNode * { - vertical-align: middle; -} -.dijitSelect .dijitArrowButtonInner, -.dijitButtonNode .dijitArrowButtonInner { - /* the arrow icon node */ - background: no-repeat center; - width: 12px; - height: 12px; - direction: ltr; /* needed by IE/RTL */ -} - -/**** - 3-element borders: ( dijitLeft + dijitStretch + dijitRight ) - These were added for rounded corners on dijit.form.*Button but never actually used. - ****/ - -.dijitLeft { - /* Left part of a 3-element border */ - background-position:left top; - background-repeat:no-repeat; -} - -.dijitStretch { - /* Middle (stretchy) part of a 3-element border */ - white-space:nowrap; /* MOW: move somewhere else */ - background-repeat:repeat-x; -} - -.dijitRight { - /* Right part of a 3-element border */ - background-position:right top; - background-repeat:no-repeat; -} - -/* Buttons */ -.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode { - opacity: 0.5; -} - -.dijitToggleButton, -.dijitButton, -.dijitDropDownButton, -.dijitComboButton { - /* outside of button */ - margin: 0.2em; - vertical-align: middle; -} - -.dijitButtonContents { - display: block; /* to make focus border rectangular */ -} -td.dijitButtonContents { - display: table-cell; /* but don't affect Select, ComboButton */ -} - -.dijitButtonNode img { - /* make text and images line up cleanly */ - vertical-align:middle; - /*margin-bottom:.2em;*/ -} - -.dijitToolbar .dijitComboButton { - /* because Toolbar only draws a border around the hovered thing */ - border-collapse: separate; -} - -.dijitToolbar .dijitToggleButton, -.dijitToolbar .dijitButton, -.dijitToolbar .dijitDropDownButton, -.dijitToolbar .dijitComboButton { - margin: 0; -} - -.dijitToolbar .dijitButtonContents { - /* just because it used to be this way */ - padding: 1px 2px; -} - - -.dj_webkit .dijitToolbar .dijitDropDownButton { - padding-left: 0.3em; -} -.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner { - padding:0; -} - -.dijitSelect { - border:1px solid gray; -} -.dijitButtonNode { - /* Node that is acting as a button -- may or may not be a BUTTON element */ - border:1px solid gray; - margin:0; - line-height:normal; - vertical-align: middle; - text-align:center; - white-space: nowrap; -} -.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer { - /* apparent WebKit bug where messing with the font coupled with line-height:normal X 2 (dijitReset & dijitButtonNode) - can be different than just a single line-height:normal, visible in InlineEditBox/Spinner */ - line-height:inherit; -} -.dijitTextBox .dijitButtonNode { - border-width: 0; -} - -.dijitSelect, -.dijitSelect *, -.dijitButtonNode, -.dijitButtonNode * { - cursor: pointer; - -webkit-tap-highlight-color: transparent; -} - -.dj_ie .dijitButtonNode { - /* ensure hasLayout */ - zoom: 1; -} - -.dj_ie .dijitButtonNode button { - /* - disgusting hack to get rid of spurious padding around button elements - on IE. MSIE is truly the web's boat anchor. - */ - overflow: visible; -} - -div.dijitArrowButton { - float: right; -} - -/****** - TextBox related. - Everything that has an -*******/ - -.dijitTextBox { - border: solid black 1px; - width: 15em; /* need to set default size on outer node since inner nodes say and
    . user can override */ - vertical-align: middle; -} - -.dijitTextBoxReadOnly, -.dijitTextBoxDisabled { - color: gray; -} -.dj_safari .dijitTextBoxDisabled input { - color: #B0B0B0; /* because Safari lightens disabled input/textarea no matter what color you specify */ -} -.dj_safari textarea.dijitTextAreaDisabled { - color: #333; /* because Safari lightens disabled input/textarea no matter what color you specify */ -} -.dj_gecko .dijitTextBoxReadOnly input.dijitInputField, /* disable arrow and validation presentation inputs but allow real input for text selection */ -.dj_gecko .dijitTextBoxDisabled input { - -moz-user-input: none; /* prevent focus of disabled textbox buttons */ -} - -.dijitPlaceHolder { - /* hint text that appears in a textbox until user starts typing */ - color: #AAAAAA; - font-style: italic; - position: absolute; - top: 0; - left: 0; - white-space: nowrap; - pointer-events: none; /* so cut/paste context menu shows up when right clicking */ -} - -.dijitTimeTextBox { - width: 8em; -} - -/* rules for webkit to deal with fuzzy blue focus border */ -.dijitTextBox input:focus { - outline: none; /* blue fuzzy line looks wrong on combobox or something w/validation icon showing */ -} -.dijitTextBoxFocused { - outline: 5px -webkit-focus-ring-color; -} - -.dijitSelect input, -.dijitTextBox input { - float: left; /* needed by IE to remove secret margin */ -} -.dj_ie6 input.dijitTextBox, -.dj_ie6 .dijitTextBox input { - float: none; -} -.dijitInputInner { - /* for when an is embedded inside an inline-block
    with a size and border */ - border:0 !important; - background-color:transparent !important; - width:100% !important; - /* IE dislikes horizontal tweaking combined with width:100% so punish everyone for consistency */ - padding-left: 0 !important; - padding-right: 0 !important; - margin-left: 0 !important; - margin-right: 0 !important; -} -.dj_a11y .dijitTextBox input { - margin: 0 !important; -} -.dijitValidationTextBoxError input.dijitValidationInner, -.dijitSelect input, -.dijitTextBox input.dijitArrowButtonInner { - /* used to display arrow icon/validation icon, or in arrow character in high contrast mode. - * The css below is a trick to hide the character in non-high-contrast mode - */ - text-indent: -2em !important; - direction: ltr !important; - text-align: left !important; - height: auto !important; -} -.dj_ie .dijitSelect input, -.dj_ie .dijitTextBox input, -.dj_ie input.dijitTextBox { - overflow-y: visible; /* inputs need help expanding when padding is added or line-height is adjusted */ - line-height: normal; /* strict mode */ -} -.dijitSelect .dijitSelectLabel span { - line-height: 100%; -} -.dj_ie .dijitSelect .dijitSelectLabel { - line-height: normal; -} -.dj_ie6 .dijitSelect .dijitSelectLabel, -.dj_ie7 .dijitSelect .dijitSelectLabel, -.dj_ie8 .dijitSelect .dijitSelectLabel, -.dj_iequirks .dijitSelect .dijitSelectLabel, -.dijitSelect td, -.dj_ie6 .dijitSelect input, -.dj_iequirks .dijitSelect input, -.dj_ie6 .dijitSelect .dijitValidationContainer, -.dj_ie6 .dijitTextBox input, -.dj_ie6 input.dijitTextBox, -.dj_iequirks .dijitTextBox input.dijitValidationInner, -.dj_iequirks .dijitTextBox input.dijitArrowButtonInner, -.dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner, -.dj_iequirks .dijitTextBox input.dijitInputInner, -.dj_iequirks input.dijitTextBox { - line-height: 100%; /* IE7 problem where the icon is vertically way too low w/o this */ -} -.dj_a11y input.dijitValidationInner, -.dj_a11y input.dijitArrowButtonInner { - /* (in high contrast mode) revert rules from above so character displays */ - text-indent: 0 !important; - width: 1em !important; - color: black !important; -} -.dijitValidationTextBoxError .dijitValidationContainer { - display: inline; - cursor: default; -} - -/* ComboBox & Spinner */ - -.dijitSpinner .dijitSpinnerButtonContainer, -.dijitComboBox .dijitArrowButtonContainer { - /* dividing line between input area and up/down button(s) for ComboBox and Spinner */ - border-width: 0 0 0 1px !important; /* !important needed due to wayward ".theme .dijitButtonNode" rules */ -} -.dj_a11y .dijitSelect .dijitArrowButtonContainer, -.dijitToolbar .dijitComboBox .dijitArrowButtonContainer { - /* overrides above rule plus mirror-image rule in dijit_rtl.css to have no divider when ComboBox in Toolbar */ - border-width: 0 !important; -} - -.dijitComboBoxMenu { - /* Drop down menu is implemented as
    • ... but we don't want circles before each item */ - list-style-type: none; -} -.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode { - /* dividing line between input area and up/down button(s) for ComboBox and Spinner */ - border-width: 0; -} -.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode { - clear: both; /* IE workaround */ -} - -.dj_ie .dijitToolbar .dijitComboBox { - /* make combobox buttons align properly with other buttons in a toolbar */ - vertical-align: middle; -} - -/* Spinner */ - -.dijitTextBox .dijitSpinnerButtonContainer { - width: 1em; - position: relative !important; - overflow: hidden; -} -.dijitSpinner .dijitSpinnerButtonInner { - width:1em; - visibility:hidden !important; /* just a sizing element */ - overflow-x:hidden; -} -.dijitComboBox .dijitButtonNode, -.dijitSpinnerButtonContainer .dijitButtonNode { - border-width: 0; -} -.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode { - border-width: 0px !important; - border-style: solid !important; -} -.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer, -.dj_a11y .dijitSpinner .dijitArrowButtonInner, -.dj_a11y .dijitSpinnerButtonContainer input { - width: 1em !important; -} -.dj_a11y .dijitSpinner .dijitArrowButtonInner { - margin: 0 auto !important; /* should auto-center */ -} -.dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { - padding-left: 0.3em !important; - padding-right: 0.3em !important; - margin-left: 0.3em !important; - margin-right: 0.3em !important; - width: 1.4em !important; -} -.dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { - padding-left: 0 !important; /* manually center INPUT: character is .5em and total width = 1em */ - padding-right: 0 !important; - width: 1em !important; -} -.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { - margin-left: 0.1em !important; - margin-right: 0.1em !important; - width: 1em !important; -} -.dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { - margin-left: 0 !important; - margin-right: 0 !important; - width: 2em !important; -} -.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { - /* note: .dijitInputLayoutContainer makes this rule override .dijitArrowButton settings - * for dijit.form.Button - */ - padding: 0; - position: absolute !important; - right: 0; - float: none; - height: 50%; - width: 100%; - bottom: auto; - left: 0; - right: auto; -} -.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { - width: auto; -} -.dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton { - overflow: visible !important; -} -.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton { - top: 50%; - border-top-width: 1px !important; -} -.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton { - top: 0; -} -.dijitSpinner .dijitArrowButtonInner { - margin: auto; - overflow-x: hidden; - height: 100% !important; -} -.dj_iequirks .dijitSpinner .dijitArrowButtonInner { - height: auto !important; -} -.dijitSpinner .dijitArrowButtonInner .dijitInputField { - -moz-transform: scale(0.5); - -moz-transform-origin: center top; - -webkit-transform: scale(0.5); - -webkit-transform-origin: center top; - -o-transform: scale(0.5); - -o-transform-origin: center top; - transform: scale(0.5); - transform-origin: left top; - padding-top: 0; - padding-bottom: 0; - padding-left: 0 !important; - padding-right: 0 !important; - width: 100%; - visibility: hidden; -} -.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField { - zoom: 50%; /* emulate transform: scale(0.5) */ -} -.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner { - overflow: hidden; -} - -.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { - width: 100%; -} -.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { - width: 1em; /* matches .dj_a11y .dijitTextBox .dijitSpinnerButtonContainer rule - 100% is the whole screen width in quirks */ -} -.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { - vertical-align:top; - visibility: visible; -} -.dj_a11y .dijitSpinnerButtonContainer { - width: 1em; -} - -/**** - dijit.form.CheckBox - & - dijit.form.RadioButton - ****/ - -.dijitCheckBox, -.dijitRadio, -.dijitCheckBoxInput { - padding: 0; - border: 0; - width: 16px; - height: 16px; - background-position:center center; - background-repeat:no-repeat; - overflow: hidden; -} - -.dijitCheckBox input, -.dijitRadio input { - margin: 0; - padding: 0; - display: block; -} - -.dijitCheckBoxInput { - /* place the actual input on top, but invisible */ - opacity: 0; -} - -.dj_ie .dijitCheckBoxInput { - filter: alpha(opacity=0); -} - -.dj_a11y .dijitCheckBox, -.dj_a11y .dijitRadio { - /* in a11y mode we display the native checkbox (not the icon), so don't restrict the size */ - width: auto !important; - height: auto !important; -} -.dj_a11y .dijitCheckBoxInput { - opacity: 1; - filter: none; - width: auto; - height: auto; -} - -.dj_a11y .dijitFocusedLabel { - /* for checkboxes or radio buttons in high contrast mode, use border rather than outline to indicate focus (outline does not work in FF)*/ - border: 1px dotted; - outline: 0px !important; -} - -/**** - dijit.ProgressBar - ****/ - -.dijitProgressBar { - z-index: 0; /* so z-index settings below have no effect outside of the ProgressBar */ -} -.dijitProgressBarEmpty { - /* outer container and background of the bar that's not finished yet*/ - position:relative;overflow:hidden; - border:1px solid black; /* a11y: border necessary for high-contrast mode */ - z-index:0; /* establish a stacking context for this progress bar */ -} - -.dijitProgressBarFull { - /* outer container for background of bar that is finished */ - position:absolute; - overflow:hidden; - z-index:-1; - top:0; - width:100%; -} -.dj_ie6 .dijitProgressBarFull { - height:1.6em; -} - -.dijitProgressBarTile { - /* inner container for finished portion */ - position:absolute; - overflow:hidden; - top:0; - left:0; - bottom:0; - right:0; - margin:0; - padding:0; - width: 100%; /* needed for IE/quirks */ - height:auto; - background-color:#aaa; - background-attachment: fixed; -} - -.dj_a11y .dijitProgressBarTile { - /* a11y: The border provides visibility in high-contrast mode */ - border-width:2px; - border-style:solid; - background-color:transparent !important; -} - -.dj_ie6 .dijitProgressBarTile { - /* width:auto works in IE6 with position:static but not position:absolute */ - position:static; - /* height:auto or 100% does not work in IE6 */ - height:1.6em; -} - -.dijitProgressBarIndeterminate .dijitProgressBarTile { - /* animated gif for 'indeterminate' mode */ -} - -.dijitProgressBarIndeterminateHighContrastImage { - display:none; -} - -.dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage { - display:block; - position:absolute; - top:0; - bottom:0; - margin:0; - padding:0; - width:100%; - height:auto; -} - -.dijitProgressBarLabel { - display:block; - position:static; - width:100%; - text-align:center; - background-color:transparent !important; -} - -/**** - dijit.Tooltip - ****/ - -.dijitTooltip { - position: absolute; - z-index: 2000; - display: block; - /* make visible but off screen */ - left: 0; - top: -10000px; - overflow: visible; -} - -.dijitTooltipContainer { - border: solid black 2px; - background: #b8b5b5; - color: black; - font-size: small; -} - -.dijitTooltipFocusNode { - padding: 2px 2px 2px 2px; -} - -.dijitTooltipConnector { - position: absolute; -} -.dj_a11y .dijitTooltipConnector { - display: none; /* won't show b/c it's background-image; hide to avoid border gap */ -} - -.dijitTooltipData { - display:none; -} - -/* Layout widgets. This is essential CSS to make layout work (it isn't "styling" CSS) - make sure that the position:absolute in dijitAlign* overrides other classes */ - -.dijitLayoutContainer { - position: relative; - display: block; - overflow: hidden; -} - -.dijitAlignTop, -.dijitAlignBottom, -.dijitAlignLeft, -.dijitAlignRight { - position: absolute; - overflow: hidden; -} - -body .dijitAlignClient { position: absolute; } - -/* - * BorderContainer - * - * .dijitBorderContainer is a stylized layout where panes have border and margin. - * .dijitBorderContainerNoGutter is a raw layout. - */ -.dijitBorderContainer, .dijitBorderContainerNoGutter { - position:relative; - overflow: hidden; - z-index: 0; /* so z-index settings below have no effect outside of the BorderContainer */ -} - -.dijitBorderContainerPane, -.dijitBorderContainerNoGutterPane { - position: absolute !important; /* !important to override position:relative in dijitTabContainer etc. */ - z-index: 2; /* above the splitters so that off-by-one browser errors don't cover up border of pane */ -} - -.dijitBorderContainer > .dijitTextArea { - /* On Safari, for SimpleTextArea inside a BorderContainer, - don't want to display the grip to resize */ - resize: none; -} - -.dijitGutter { - /* gutter is just a place holder for empty space between panes in BorderContainer */ - position: absolute; - font-size: 1px; /* needed by IE6 even though div is empty, otherwise goes to 15px */ -} - -/* SplitContainer - - 'V' == container that splits vertically (up/down) - 'H' = horizontal (left/right) -*/ - -.dijitSplitter { - position: absolute; - overflow: hidden; - z-index: 10; /* above the panes so that splitter focus is visible on FF, see #7583*/ - background-color: #fff; - border-color: gray; - border-style: solid; - border-width: 0; -} -.dj_ie .dijitSplitter { - z-index: 1; /* behind the panes so that pane borders aren't obscured see test_Gui.html/[14392] */ -} - -.dijitSplitterActive { - z-index: 11 !important; -} - -.dijitSplitterCover { - position:absolute; - z-index:-1; - top:0; - left:0; - width:100%; - height:100%; -} - -.dijitSplitterCoverActive { - z-index:3 !important; -} - -/* #6945: stop mouse events */ -.dj_ie .dijitSplitterCover { - background: white; - opacity: 0; -} -.dj_ie6 .dijitSplitterCover, -.dj_ie7 .dijitSplitterCover, -.dj_ie8 .dijitSplitterCover { - filter: alpha(opacity=0); -} - -.dijitSplitterH { - height: 7px; - border-top:1px; - border-bottom:1px; - cursor: row-resize; - -webkit-tap-highlight-color: transparent; -} -.dijitSplitterV { - width: 7px; - border-left:1px; - border-right:1px; - cursor: col-resize; - -webkit-tap-highlight-color: transparent; -} -.dijitSplitContainer { - position: relative; - overflow: hidden; - display: block; -} - -.dijitSplitPane { - position: absolute; -} - -.dijitSplitContainerSizerH, -.dijitSplitContainerSizerV { - position:absolute; - font-size: 1px; - background-color: ThreeDFace; - border: 1px solid; - border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight; - margin: 0; -} - -.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb { - overflow:hidden; - position:absolute; - top:49%; -} - -.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb { - position:absolute; - left:49%; -} - -.dijitSplitterShadow, -.dijitSplitContainerVirtualSizerH, -.dijitSplitContainerVirtualSizerV { - font-size: 1px; - background-color: ThreeDShadow; - -moz-opacity: 0.5; - opacity: 0.5; - filter: Alpha(Opacity=50); - margin: 0; -} - -.dijitSplitContainerSizerH, .dijitSplitContainerVirtualSizerH { - cursor: col-resize; -} - -.dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV { - cursor: row-resize; -} - -.dj_a11y .dijitSplitterH { - border-top:1px solid #d3d3d3 !important; - border-bottom:1px solid #d3d3d3 !important; -} -.dj_a11y .dijitSplitterV { - border-left:1px solid #d3d3d3 !important; - border-right:1px solid #d3d3d3 !important; -} - -/* ContentPane */ - -.dijitContentPane { - display: block; - overflow: auto; /* if we don't have this (or overflow:hidden), then Widget.resizeTo() doesn't make sense for ContentPane */ - -webkit-overflow-scrolling: touch; -} - -.dijitContentPaneSingleChild { - /* - * if the ContentPane holds a single layout widget child which is being sized to match the content pane, - * then the ContentPane should never get a scrollbar (but it does due to browser bugs, see #9449 - */ - overflow: hidden; -} - -.dijitContentPaneLoading .dijitIconLoading, -.dijitContentPaneError .dijitIconError { - margin-right: 9px; -} - -/* TitlePane and Fieldset */ - -.dijitTitlePane { - display: block; - overflow: hidden; -} -.dijitFieldset { - border: 1px solid gray; -} -.dijitTitlePaneTitle, .dijitFieldsetTitle { - cursor: pointer; - -webkit-tap-highlight-color: transparent; -} -.dijitTitlePaneTitleFixedOpen, .dijitTitlePaneTitleFixedClosed, -.dijitFieldsetTitleFixedOpen, .dijitFieldsetTitleFixedClosed { - /* TitlePane or Fieldset that cannot be toggled */ - cursor: default; -} -.dijitTitlePaneTitle * { - vertical-align: middle; -} -.dijitTitlePane .dijitArrowNodeInner, .dijitFieldset .dijitArrowNodeInner { - /* normally, hide arrow text in favor of icon */ - display: none; -} -.dj_a11y .dijitTitlePane .dijitArrowNodeInner, .dj_a11y .dijitFieldset .dijitArrowNodeInner { - /* ... except in a11y mode, then show text arrow */ - display: inline; - font-family: monospace; /* because - and + are different widths */ -} -.dj_a11y .dijitTitlePane .dijitArrowNode, .dj_a11y .dijitFieldset .dijitArrowNode { - /* ... and hide icon (TODO: just point dijitIcon class on the icon, and it hides automatically) */ - display: none; -} -.dijitTitlePaneTitleFixedOpen .dijitArrowNode, .dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner, -.dijitTitlePaneTitleFixedClosed .dijitArrowNode, .dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner, -.dijitFieldsetTitleFixedOpen .dijitArrowNode, .dijitFieldsetTitleFixedOpen .dijitArrowNodeInner, -.dijitFieldsetTitleFixedClosed .dijitArrowNode, .dijitFieldsetTitleFixedClosed .dijitArrowNodeInner { - /* don't show the open close icon or text arrow; it makes the user think the pane is closable */ - display: none !important; /* !important to override above a11y rules to show text arrow */ -} - -.dj_ie6 .dijitTitlePaneContentOuter, -.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle { - /* force hasLayout to ensure borders etc, show up */ - zoom: 1; -} - -/* Color Palette - * Sizes designed so that table cell positions match icons in underlying image, - * which appear at 20x20 intervals. - */ - -.dijitColorPalette { - border: 1px solid #999; - background: #fff; - position: relative; -} - -.dijitColorPalette .dijitPaletteTable { - /* Table that holds the palette cells, and overlays image file with color swatches. - * padding/margin to align table with image. - */ - padding: 2px 3px 3px 3px; - position: relative; - overflow: hidden; - outline: 0; - border-collapse: separate; -} -.dj_ie6 .dijitColorPalette .dijitPaletteTable, -.dj_ie7 .dijitColorPalette .dijitPaletteTable, -.dj_iequirks .dijitColorPalette .dijitPaletteTable { - /* using padding above so that focus border isn't cutoff on moz/webkit, - * but using margin on IE because padding doesn't seem to work - */ - padding: 0; - margin: 2px 3px 3px 3px; -} - -.dijitColorPalette .dijitPaletteCell { - /*
    in the */ - font-size: 1px; - vertical-align: middle; - text-align: center; - background: none; -} -.dijitColorPalette .dijitPaletteImg { - /* Called dijitPaletteImg for back-compat, this actually wraps the color swatch with a border and padding */ - padding: 1px; /* white area between gray border and color swatch */ - border: 1px solid #999; - margin: 2px 1px; - cursor: default; - font-size: 1px; /* prevent from getting bigger just to hold a character */ -} -.dj_gecko .dijitColorPalette .dijitPaletteImg { - padding-bottom: 0; /* workaround rendering glitch on FF, it adds an extra pixel at the bottom */ -} -.dijitColorPalette .dijitColorPaletteSwatch { - /* the actual part where the color is */ - width: 14px; - height: 12px; -} -.dijitPaletteTable td { - padding: 0; -} -.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg { - /* hovered color swatch */ - border: 1px solid #000; -} - -.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg, -.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg { - border: 2px solid #000; - margin: 1px 0; /* reduce margin to compensate for increased border */ -} - - -.dj_a11y .dijitColorPalette .dijitPaletteTable, -.dj_a11y .dijitColorPalette .dijitPaletteTable * { - /* table cells are to catch events, but the swatches are in the PaletteImg behind the table */ - background-color: transparent !important; -} - -/* AccordionContainer */ - -.dijitAccordionContainer { - border:1px solid #b7b7b7; - border-top:0 !important; -} -.dijitAccordionTitle { - cursor: pointer; - -webkit-tap-highlight-color: transparent; -} -.dijitAccordionTitleSelected { - cursor: default; -} - -/* images off, high-contrast mode styles */ -.dijitAccordionTitle .arrowTextUp, -.dijitAccordionTitle .arrowTextDown { - display: none; - font-size: 0.65em; - font-weight: normal !important; -} - -.dj_a11y .dijitAccordionTitle .arrowTextUp, -.dj_a11y .dijitAccordionTitleSelected .arrowTextDown { - display: inline; -} - -.dj_a11y .dijitAccordionTitleSelected .arrowTextUp { - display: none; -} - -.dijitAccordionChildWrapper { - /* this is the node whose height is adjusted */ - overflow: hidden; -} - -/* Calendar */ - -.dijitCalendarContainer table { - width: auto; /* in case user has specified a width for the TABLE nodes, see #10553 */ - clear: both; /* clear margin created for left/right month arrows; needed on IE10 for CalendarLite */ -} -.dijitCalendarContainer th, .dijitCalendarContainer td { - padding: 0; - vertical-align: middle; -} - -.dijitCalendarMonthContainer { - text-align: center; -} -.dijitCalendarDecrementArrow { - float: left; -} -.dijitCalendarIncrementArrow { - float: right; -} - -.dijitCalendarYearLabel { - white-space: nowrap; /* make sure previous, current, and next year appear on same row */ -} - -.dijitCalendarNextYear { - margin:0 0 0 0.55em; -} - -.dijitCalendarPreviousYear { - margin:0 0.55em 0 0; -} - -.dijitCalendarIncrementControl { - vertical-align: middle; -} - -.dijitCalendarIncrementControl, -.dijitCalendarDateTemplate, -.dijitCalendarMonthLabel, -.dijitCalendarPreviousYear, -.dijitCalendarNextYear { - cursor: pointer; - -webkit-tap-highlight-color: transparent; -} - -.dijitCalendarDisabledDate { - color: gray; - text-decoration: line-through; - cursor: default; -} - -.dijitSpacer { - /* don't display it, but make it affect the width */ - position: relative; - height: 1px; - overflow: hidden; - visibility: hidden; -} - -/* Styling for month drop down list */ - -.dijitCalendarMonthMenu .dijitCalendarMonthLabel { - text-align:center; -} - -/* Menu */ - -.dijitMenu { - border:1px solid black; - background-color:white; -} -.dijitMenuTable { - border-collapse:collapse; - border-width:0; - background-color:white; -} - -/* workaround for webkit bug #8427, remove this when it is fixed upstream */ -.dj_webkit .dijitMenuTable td[colspan="2"]{ - border-right:hidden; -} - -.dijitMenuItem { - text-align: left; - white-space: nowrap; - padding:.1em .2em; - cursor:pointer; - -webkit-tap-highlight-color: transparent; -} - -/* -No need to show a focus border since it's obvious from the shading, and there's a .dj_a11y .dijitMenuItemSelected -rule below that handles the high contrast case when there's no shading. -Hiding the focus border also works around webkit bug https://code.google.com/p/chromium/issues/detail?id=125779. -*/ -.dijitMenuItem:focus { - outline: none -} - -.dijitMenuPassive .dijitMenuItemHover, -.dijitMenuItemSelected { - /* - * dijitMenuItemHover refers to actual mouse over - * dijitMenuItemSelected is used after a menu has been "activated" by - * clicking it, tabbing into it, or being opened from a parent menu, - * and denotes that the menu item has focus or that focus is on a child - * menu - */ - background-color:black; - color:white; -} - -.dijitMenuItemIcon, .dijitMenuExpand { - background-repeat: no-repeat; -} - -.dijitMenuItemDisabled * { - /* for a disabled menu item, just set it to mostly transparent */ - opacity:0.5; - cursor:default; -} -.dj_ie .dj_a11y .dijitMenuItemDisabled, -.dj_ie .dj_a11y .dijitMenuItemDisabled *, -.dj_ie .dijitMenuItemDisabled * { - color: gray; - filter: alpha(opacity=35); -} - -.dijitMenuItemLabel { - vertical-align: middle; -} - -.dj_a11y .dijitMenuItemSelected { - border: 1px dotted black !important; /* for 2.0 use outline instead, to prevent jitter */ -} - -.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel { - border-width: 1px; - border-style: solid; -} -.dj_ie8 .dj_a11y .dijitMenuItemLabel { - position:static; -} - -.dijitMenuExpandA11y { - display: none; -} -.dj_a11y .dijitMenuExpandA11y { - display: inline; -} - -.dijitMenuSeparator td { - border: 0; - padding: 0; -} - -/* separator can be two pixels -- set border of either one to 0 to have only one */ -.dijitMenuSeparatorTop { - height: 50%; - margin: 0; - margin-top:3px; - font-size: 1px; -} - -.dijitMenuSeparatorBottom { - height: 50%; - margin: 0; - margin-bottom:3px; - font-size: 1px; -} - -/* CheckedMenuItem and RadioMenuItem */ -.dijitMenuItemIconChar { - display: none; /* don't display except in high contrast mode */ - visibility: hidden; /* for high contrast mode when menuitem is unchecked: leave space for when it is checked */ -} -.dj_a11y .dijitMenuItemIconChar { - display: inline; /* display character in high contrast mode, since icon doesn't show */ -} -.dijitCheckedMenuItemChecked .dijitMenuItemIconChar, -.dijitRadioMenuItemChecked .dijitMenuItemIconChar { - visibility: visible; /* menuitem is checked */ -} -.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem { - /* so bottom border of MenuBar appears on IE7 in high-contrast mode */ - margin: 0; -} - -/* StackContainer */ - -.dijitStackController .dijitToggleButtonChecked * { - cursor: default; /* because pressing it has no effect */ -} - -/*** -TabContainer - -Main class hierarchy: - -.dijitTabContainer - the whole TabContainer - .dijitTabController / .dijitTabListContainer-top - wrapper for tab buttons, scroll buttons - .dijitTabListWrapper / .dijitTabContainerTopStrip - outer wrapper for tab buttons (normal width) - .nowrapTabStrip / .dijitTabContainerTop-tabs - inner wrapper for tab buttons (50K width) - .dijitTabPaneWrapper - wrapper for content panes, has all borders except the one between content and tabs -***/ - -.dijitTabContainer { - z-index: 0; /* so z-index settings below have no effect outside of the TabContainer */ - overflow: visible; /* prevent off-by-one-pixel errors from hiding bottom border (opposite tab labels) */ -} -.dj_ie6 .dijitTabContainer { - /* workaround IE6 problem when tall content overflows TabContainer, see editor/test_FullScreen.html */ - overflow: hidden; - -} -.dijitTabContainerNoLayout { - width: 100%; /* otherwise ScrollingTabController goes to 50K pixels wide */ -} - -.dijitTabContainerBottom-tabs, -.dijitTabContainerTop-tabs, -.dijitTabContainerLeft-tabs, -.dijitTabContainerRight-tabs { - z-index: 1; - overflow: visible !important; /* so tabs can cover up border adjacent to container */ -} - -.dijitTabController { - z-index: 1; -} -.dijitTabContainerBottom-container, -.dijitTabContainerTop-container, -.dijitTabContainerLeft-container, -.dijitTabContainerRight-container { - z-index:0; - overflow: hidden; - border: 1px solid black; -} -.nowrapTabStrip { - width: 50000px; - display: block; - position: relative; - text-align: left; /* just in case ancestor has non-standard setting */ - z-index: 1; -} -.dijitTabListWrapper { - overflow: hidden; - z-index: 1; -} - -.dj_a11y .tabStripButton img { - /* hide the icons (or rather the empty space where they normally appear) because text will appear instead */ - display: none; -} - -.dijitTabContainerTop-tabs { - border-bottom: 1px solid black; -} -.dijitTabContainerTop-container { - border-top: 0; -} - -.dijitTabContainerLeft-tabs { - border-right: 1px solid black; - float: left; /* needed for IE7 RTL mode */ -} -.dijitTabContainerLeft-container { - border-left: 0; -} - -.dijitTabContainerBottom-tabs { - border-top: 1px solid black; -} -.dijitTabContainerBottom-container { - border-bottom: 0; -} - -.dijitTabContainerRight-tabs { - border-left: 1px solid black; - float: left; /* needed for IE7 RTL mode */ -} -.dijitTabContainerRight-container { - border-right: 0; -} - -div.dijitTabDisabled, .dj_ie div.dijitTabDisabled { - cursor: auto; -} - -.dijitTab { - position:relative; - cursor:pointer; - -webkit-tap-highlight-color: transparent; - white-space:nowrap; - z-index:3; -} -.dijitTab * { - /* make tab icons and close icon line up w/text */ - vertical-align: middle; -} -.dijitTabChecked { - cursor: default; /* because clicking will have no effect */ -} - -.dijitTabContainerTop-tabs .dijitTab { - top: 1px; /* to overlap border on .dijitTabContainerTop-tabs */ -} -.dijitTabContainerBottom-tabs .dijitTab { - top: -1px; /* to overlap border on .dijitTabContainerBottom-tabs */ -} -.dijitTabContainerLeft-tabs .dijitTab { - left: 1px; /* to overlap border on .dijitTabContainerLeft-tabs */ -} -.dijitTabContainerRight-tabs .dijitTab { - left: -1px; /* to overlap border on .dijitTabContainerRight-tabs */ -} - - -.dijitTabContainerTop-tabs .dijitTab, -.dijitTabContainerBottom-tabs .dijitTab { - /* Inline-block */ - display:inline-block; /* webkit and FF3 */ -} - -.tabStripButton { - z-index: 12; -} - -.dijitTabButtonDisabled .tabStripButton { - display: none; -} - - -.dijitTabCloseButton { - margin-left: 1em; -} - -.dijitTabCloseText { - display:none; -} - -.dijitTab .tabLabel { - /* make sure tabs w/close button and w/out close button are same height, even w/small (<15px) font. - * assumes <=15px height for close button icon. - */ - min-height: 15px; - display: inline-block; -} -.dijitNoIcon { - /* applied to / node when there is no icon specified */ - display: none; -} -.dj_ie6 .dijitTab .dijitNoIcon { - /* because min-height (on .tabLabel, above) doesn't work on IE6 */ - display: inline; - height: 15px; - width: 1px; -} - -/* images off, high-contrast mode styles */ - -.dj_a11y .dijitTabCloseButton { - background-image: none !important; - width: auto !important; - height: auto !important; -} - -.dj_a11y .dijitTabCloseText { - display: inline; -} - -.dijitTabPane, -.dijitStackContainer-child, -.dijitAccordionContainer-child { - /* children of TabContainer, StackContainer, and AccordionContainer shouldn't have borders - * b/c a border is already there from the TabContainer/StackContainer/AccordionContainer itself. - */ - border: none !important; -} - -/* InlineEditBox */ -.dijitInlineEditBoxDisplayMode { - border: 1px solid transparent; /* so keyline (border) on hover can appear without screen jump */ - cursor: text; -} - -.dj_a11y .dijitInlineEditBoxDisplayMode, -.dj_ie6 .dijitInlineEditBoxDisplayMode { - /* except that IE6 doesn't support transparent borders, nor does high contrast mode */ - border: none; -} - -.dijitInlineEditBoxDisplayModeHover, -.dj_a11y .dijitInlineEditBoxDisplayModeHover, -.dj_ie6 .dijitInlineEditBoxDisplayModeHover { - /* An InlineEditBox in view mode (click this to edit the text) */ - background-color: #e2ebf2; - border: solid 1px black; -} - -.dijitInlineEditBoxDisplayModeDisabled { - cursor: default; -} - -/* Tree */ -.dijitTree { - overflow: auto; /* for scrollbars when Tree has a height setting, and to prevent wrapping around float elements, see #11491 */ - -webkit-tap-highlight-color: transparent; -} - -.dijitTreeContainer { - float: left; /* for correct highlighting during horizontal scroll, see #16132 */ -} - -.dijitTreeIndent { - /* amount to indent each tree node (relative to parent node) */ - width: 19px; -} - -.dijitTreeRow, .dijitTreeContent { - white-space: nowrap; -} - -.dj_ie .dijitTreeLabel:focus { - /* workaround IE9 behavior where down arrowing through TreeNodes doesn't show focus outline */ - outline: 1px dotted black; -} - -.dijitTreeRow img { - /* make the expando and folder icons line up with the label */ - vertical-align: middle; -} - -.dijitTreeContent { - cursor: default; -} - -.dijitExpandoText { - display: none; -} - -.dj_a11y .dijitExpandoText { - display: inline; - padding-left: 10px; - padding-right: 10px; - font-family: monospace; - border-style: solid; - border-width: thin; - cursor: pointer; -} - -.dijitTreeLabel { - margin: 0 4px; -} - -/* Dialog */ - -.dijitDialog { - position: absolute; - z-index: 999; - overflow: hidden; /* override overflow: auto; from ContentPane to make dragging smoother */ -} - -.dijitDialogTitleBar { - cursor: move; -} -.dijitDialogFixed .dijitDialogTitleBar { - cursor:default; -} -.dijitDialogCloseIcon { - cursor: pointer; - -webkit-tap-highlight-color: transparent; -} -.dijitDialogPaneContent { - -webkit-overflow-scrolling: touch; -} -.dijitDialogUnderlayWrapper { - position: absolute; - left: 0; - top: 0; - z-index: 998; - display: none; - background: transparent !important; -} - -.dijitDialogUnderlay { - background: #eee; - opacity: 0.5; -} - -.dj_ie .dijitDialogUnderlay { - filter: alpha(opacity=50); -} - -/* images off, high-contrast mode styles */ -.dj_a11y .dijitSpinnerButtonContainer, -.dj_a11y .dijitDialog { - opacity: 1 !important; - background-color: white !important; -} - -.dijitDialog .closeText { - display:none; - /* for the onhover border in high contrast on IE: */ - position:absolute; -} - -.dj_a11y .dijitDialog .closeText { - display:inline; -} - -/* Slider */ - -.dijitSliderMoveable { - z-index:99; - position:absolute !important; - display:block; - vertical-align:middle; -} - -.dijitSliderMoveableH { - right:0; -} -.dijitSliderMoveableV { - right:50%; -} - -.dj_a11y div.dijitSliderImageHandle, -.dijitSliderImageHandle { - margin:0; - padding:0; - position:relative !important; - border:8px solid gray; - width:0; - height:0; - cursor: pointer; - -webkit-tap-highlight-color: transparent; -} -.dj_iequirks .dj_a11y .dijitSliderImageHandle { - font-size: 0; -} -.dj_ie7 .dijitSliderImageHandle { - overflow: hidden; /* IE7 workaround to make slider handle VISIBLE in non-a11y mode */ -} -.dj_ie7 .dj_a11y .dijitSliderImageHandle { - overflow: visible; /* IE7 workaround to make slider handle VISIBLE in a11y mode */ -} -.dj_a11y .dijitSliderFocused .dijitSliderImageHandle { - border:4px solid #000; - height:8px; - width:8px; -} - -.dijitSliderImageHandleV { - top:-8px; - right: -50%; -} - -.dijitSliderImageHandleH { - left:50%; - top:-5px; - vertical-align:top; -} - -.dijitSliderBar { - border-style:solid; - border-color:black; - cursor: pointer; - -webkit-tap-highlight-color: transparent; -} - -.dijitSliderBarContainerV { - position:relative; - height:100%; - z-index:1; -} - -.dijitSliderBarContainerH { - position:relative; - z-index:1; -} - -.dijitSliderBarH { - height:4px; - border-width:1px 0; -} - -.dijitSliderBarV { - width:4px; - border-width:0 1px; -} - -.dijitSliderProgressBar { - background-color:red; - z-index:1; -} - -.dijitSliderProgressBarV { - position:static !important; - height:0; - vertical-align:top; - text-align:left; -} - -.dijitSliderProgressBarH { - position:absolute !important; - width:0; - vertical-align:middle; - overflow:visible; -} - -.dijitSliderRemainingBar { - overflow:hidden; - background-color:transparent; - z-index:1; -} - -.dijitSliderRemainingBarV { - height:100%; - text-align:left; -} - -.dijitSliderRemainingBarH { - width:100% !important; -} - -/* the slider bumper is the space consumed by the slider handle when it hangs over an edge */ -.dijitSliderBumper { - overflow:hidden; - z-index:1; -} - -.dijitSliderBumperV { - width:4px; - height:8px; - border-width:0 1px; -} - -.dijitSliderBumperH { - width:8px; - height:4px; - border-width:1px 0; -} - -.dijitSliderBottomBumper, -.dijitSliderLeftBumper { - background-color:red; -} - -.dijitSliderTopBumper, -.dijitSliderRightBumper { - background-color:transparent; -} - -.dijitSliderDecoration { - text-align:center; -} - -.dijitSliderDecorationC, -.dijitSliderDecorationV { - position: relative; /* needed for IE+quirks+RTL+vertical (rendering bug) but add everywhere for custom styling consistency but this messes up IE horizontal sliders */ -} - -.dijitSliderDecorationH { - width: 100%; -} - -.dijitSliderDecorationV { - height: 100%; - white-space: nowrap; -} - -.dijitSliderButton { - font-family:monospace; - margin:0; - padding:0; - display:block; -} - -.dj_a11y .dijitSliderButtonInner { - visibility:visible !important; -} - -.dijitSliderButtonContainer { - text-align:center; - height:0; /* ??? */ -} -.dijitSliderButtonContainer * { - cursor: pointer; - -webkit-tap-highlight-color: transparent; -} - -.dijitSlider .dijitButtonNode { - padding:0; - display:block; -} - -.dijitRuleContainer { - position:relative; - overflow:visible; -} - -.dijitRuleContainerV { - height:100%; - line-height:0; - float:left; - text-align:left; -} - -.dj_opera .dijitRuleContainerV { - line-height:2%; -} - -.dj_ie .dijitRuleContainerV { - line-height:normal; -} - -.dj_gecko .dijitRuleContainerV { - margin:0 0 1px 0; /* mozilla bug workaround for float:left,height:100% block elements */ -} - -.dijitRuleMark { - position:absolute; - border:1px solid black; - line-height:0; - height:100%; -} - -.dijitRuleMarkH { - width:0; - border-top-width:0 !important; - border-bottom-width:0 !important; - border-left-width:0 !important; -} - -.dijitRuleLabelContainer { - position:absolute; -} - -.dijitRuleLabelContainerH { - text-align:center; - display:inline-block; -} - -.dijitRuleLabelH { - position:relative; - left:-50%; -} - -.dijitRuleLabelV { - /* so that long labels don't overflow to multiple rows, or overwrite slider itself */ - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} - -.dijitRuleMarkV { - height:0; - border-right-width:0 !important; - border-bottom-width:0 !important; - border-left-width:0 !important; - width:100%; - left:0; -} - -.dj_ie .dijitRuleLabelContainerV { - margin-top:-.55em; -} - -.dj_a11y .dijitSliderReadOnly, -.dj_a11y .dijitSliderDisabled { - opacity:0.6; -} -.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar, -.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar { - filter: alpha(opacity=40); -} - -/* + and - Slider buttons: override theme settings to display icons */ -.dj_a11y .dijitSlider .dijitSliderButtonContainer div { - font-family: monospace; /* otherwise hyphen is larger and more vertically centered */ - font-size: 1em; - line-height: 1em; - height: auto; - width: auto; - margin: 0 4px; -} - -/* Icon-only buttons (often in toolbars) still display the text in high-contrast mode */ -.dj_a11y .dijitButtonContents .dijitButtonText, -.dj_a11y .dijitTab .tabLabel { - display: inline !important; -} -.dj_a11y .dijitSelect .dijitButtonText { - display: inline-block !important; -} - -/* TextArea, SimpleTextArea */ -.dijitTextArea { - width:100%; - overflow-y: auto; /* w/out this IE's SimpleTextArea goes to overflow: scroll */ -} -.dijitTextArea[cols] { - width:auto; /* SimpleTextArea cols */ -} -.dj_ie .dijitTextAreaCols { - width:auto; -} - -.dijitExpandingTextArea { - /* for auto exanding textarea (called Textarea currently, rename for 2.0) don't want to display the grip to resize */ - resize: none; -} - - -/* Toolbar - * Note that other toolbar rules (for objects in toolbars) are scattered throughout this file. - */ - -.dijitToolbarSeparator { - height: 18px; - width: 5px; - padding: 0 1px; - margin: 0; -} - -/* Editor */ -.dijitIEFixedToolbar { - position:absolute; - /* top:0; */ - top: expression(eval((document.documentElement||document.body).scrollTop)); -} - -.dijitEditor { - display: block; /* prevents glitch on FF with InlineEditBox, see #8404 */ -} - -.dijitEditorDisabled, -.dijitEditorReadOnly { - color: gray; -} - -/* TimePicker */ - -.dijitTimePicker { - background-color: white; -} -.dijitTimePickerItem { - cursor:pointer; - -webkit-tap-highlight-color: transparent; -} -.dijitTimePickerItemHover { - background-color:gray; - color:white; -} -.dijitTimePickerItemSelected { - font-weight:bold; - color:#333; - background-color:#b7cdee; -} -.dijitTimePickerItemDisabled { - color:gray; - text-decoration:line-through; -} - -.dijitTimePickerItemInner { - text-align:center; - border:0; - padding:2px 8px 2px 8px; -} - -.dijitTimePickerTick, -.dijitTimePickerMarker { - border-bottom:1px solid gray; -} - -.dijitTimePicker .dijitDownArrowButton { - border-top: none !important; -} - -.dijitTimePickerTick { - color:#CCC; -} - -.dijitTimePickerMarker { - color:black; - background-color:#CCC; -} - -.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner { - border: solid 4px black; -} -.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner { - border: dashed 4px black; -} - - -.dijitToggleButtonIconChar { - /* character (instead of icon) to show that ToggleButton is checked */ - display:none !important; -} -.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar { - display:inline !important; - visibility:hidden; -} -.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText { - font-family: "Arial Unicode MS"; /* otherwise the a11y character (checkmark, arrow, etc.) appears as a box */ -} -.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar { - display: inline !important; /* In high contrast mode, display the check symbol */ - visibility:visible !important; -} - -.dijitArrowButtonChar { - display:none !important; -} -.dj_a11y .dijitArrowButtonChar { - display:inline !important; -} - -.dj_a11y .dijitDropDownButton .dijitArrowButtonInner, -.dj_a11y .dijitComboButton .dijitArrowButtonInner { - display:none !important; -} - -/* Select */ -.dj_a11y .dijitSelect { - border-collapse: separate !important; - border-width: 1px; - border-style: solid; -} -.dj_ie .dijitSelect { - vertical-align: middle; /* Set this back for what we hack in dijit inline */ -} -.dj_ie6 .dijitSelect .dijitValidationContainer, -.dj_ie8 .dijitSelect .dijitButtonText { - vertical-align: top; -} -.dj_ie6 .dijitTextBox .dijitInputContainer, -.dj_iequirks .dijitTextBox .dijitInputContainer, -.dj_ie6 .dijitTextBox .dijitArrowButtonInner, -.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner, -.dijitSelect .dijitSelectLabel { - vertical-align: baseline; -} - -.dijitNumberTextBox { - text-align: left; - direction: ltr; -} - -.dijitNumberTextBox .dijitInputInner { - text-align: inherit; /* input */ -} - -.dijitNumberTextBox input.dijitInputInner, -.dijitCurrencyTextBox input.dijitInputInner, -.dijitSpinner input.dijitInputInner { - text-align: right; -} - -.dj_ie8 .dijitNumberTextBox input.dijitInputInner, .dj_ie9 .dijitNumberTextBox input.dijitInputInner, -.dj_ie8 .dijitCurrencyTextBox input.dijitInputInner, .dj_ie9 .dijitCurrencyTextBox input.dijitInputInner, -.dj_ie8 .dijitSpinner input.dijitInputInner, .dj_ie9 .dijitSpinner input.dijitInputInner { - /* workaround bug where caret invisible in empty textboxes */ - padding-right: 1px !important; -} - -.dijitToolbar .dijitSelect { - margin: 0; -} -.dj_webkit .dijitToolbar .dijitSelect { - padding-left: 0.3em; -} -.dijitSelect .dijitButtonContents { - padding: 0; - white-space: nowrap; - text-align: left; - border-style: none solid none none; - border-width: 1px; -} -.dijitSelectFixedWidth .dijitButtonContents { - width: 100%; -} - -.dijitSelectMenu .dijitMenuItemIcon { - /* avoid blank area in left side of menu (since we have no icons) */ - display:none; -} -.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel, -.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel { - /* Set back to static due to bug in ie6/ie7 - See Bug #9651 */ - position: static; -} - -/* Fix the baseline of our label (for multi-size font elements) */ -.dijitSelectLabel * -{ - vertical-align: baseline; -} - -/* Styling for the currently-selected option (rich text can mess this up) */ -.dijitSelectSelectedOption * { - font-weight: bold; -} - -/* Fix the styling of the dropdown menu to be more combobox-like */ -.dijitSelectMenu { - border-width: 1px; -} - -/* Used in cases, such as FullScreen plugin, when we need to force stuff to static positioning. */ -.dijitForceStatic { - position: static !important; -} - -/**** Disabled cursor *****/ -.dijitReadOnly *, -.dijitDisabled *, -.dijitReadOnly, -.dijitDisabled { - /* a region the user would be able to click on, but it's disabled */ - cursor: default; -} - -/* Drag and Drop */ -.dojoDndItem { - padding: 2px; /* will be replaced by border during drag over (dojoDndItemBefore, dojoDndItemAfter) */ - - /* Prevent magnifying-glass text selection icon to appear on mobile webkit as it causes a touchout event */ - -webkit-touch-callout: none; - -webkit-user-select: none; /* Disable selection/Copy of UIWebView */ -} -.dojoDndHorizontal .dojoDndItem { - /* make contents of horizontal container be side by side, rather than vertical */ - display: inline-block; -} - -.dojoDndItemBefore, -.dojoDndItemAfter { - border: 0px solid #369; -} -.dojoDndItemBefore { - border-width: 2px 0 0 0; - padding: 0 2px 2px 2px; -} -.dojoDndItemAfter { - border-width: 0 0 2px 0; - padding: 2px 2px 0 2px; -} -.dojoDndHorizontal .dojoDndItemBefore { - border-width: 0 0 0 2px; - padding: 2px 2px 2px 0; -} -.dojoDndHorizontal .dojoDndItemAfter { - border-width: 0 2px 0 0; - padding: 2px 0 2px 2px; -} - -.dojoDndItemOver { - cursor:pointer; -} -.dj_gecko .dijitArrowButtonInner INPUT, -.dj_gecko INPUT.dijitArrowButtonInner { - -moz-user-focus:ignore; -} -.dijitFocused .dijitMenuItemShortcutKey { - text-decoration: underline; -} - -/* Dijit custom styling */ -.dijitBorderContainer { - height: 350px; -} -.dijitTooltipContainer { - background: #fff; - border: 1px solid #ccc; - border-radius: 6px; -} -.dijitContentPane { - box-sizing: content-box; - overflow: auto !important; /* Widgets like the data grid pass their scroll - offset to the parent if there is not enough room to display a scroll bar - in the widget itself, so do not hide the overflow. */ -} - -/* Global Bootstrap changes */ - -/* Client defaults and helpers */ -.mx-dataview-content, .mx-scrollcontainer-wrapper:not(.mx-scrollcontainer-nested), .mx-tabcontainer-content, .mx-grid-content { - -webkit-overflow-scrolling: touch; -} -html, body, #content { - height: 100%; -} -#content > .mx-page { - width: 100%; - min-height: 100%; -} - -.mx-left-aligned { - text-align: left; -} -.mx-right-aligned { - text-align: right; -} -.mx-center-aligned { - text-align: center; -} - -.mx-table { - width: 100%; -} -.mx-table th, -.mx-table td { - padding: 8px; - vertical-align: top; -} -.mx-table th.nopadding, -.mx-table td.nopadding { - padding: 0; -} - -.mx-offscreen { - /* When position relative is not set IE doesn't properly render when this class is removed - * with the effect that elements are not displayed or are not clickable. - */ - position: relative; - height: 0; - overflow: hidden; -} - -.mx-ie-event-shield { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: -1; -} - -.mx-swipe-navigation-progress { - position: absolute; - height: 54px; - width: 54px; - top: calc(50% - 27px); - left: calc(50% - 27px); - background: url(data:image/gif;base64,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); -} - - -/* Bacause we use checkboxes without labels, align them with other widgets. */ -input[type="checkbox"] { - margin: 9px 0; -} - -.mx-checkbox input[type="checkbox"] { - margin-left: 0; - margin-right: 8px; - position: static; -} - -.form-vertical .form-group.mx-checkbox input[type="checkbox"] { - display: block; -} - -.form-vertical .form-group.mx-checkbox.label-after input[type="checkbox"] { - display: inline-block; -} - -.form-horizontal .form-group.no-columns { - padding-left: 15px; - padding-right: 15px; -} - -.mx-radiobuttons.inline .radio { - display: inline-block; - margin-right: 20px; -} - -.mx-radiobuttons .radio input[type="radio"] { - /* Reset bootstrap rules */ - position: static; - margin-right: 8px; - margin-left: 0; -} - -.mx-radiobuttons .radio label { - /* Reset bootstrap rules */ - padding-left: 0; -} - -.alert { - margin-top: 8px; - margin-bottom: 10px; - white-space: pre-line; -} - -.mx-compound-control { - display: flex; -} - -.mx-compound-control button { - margin-left: 5px; -} - -[dir="rtl"] .mx-compound-control button { - margin-left: 0; - margin-right: 5px; -} - -.mx-tooltip { - margin: 10px; -} -.mx-tooltip-content { - width: 400px; - overflow-y: auto; -} -.mx-tooltip-prepare { - height: 24px; - padding: 8px; - background: transparent url(data:image/gif;base64,R0lGODlhGAAYAMQdAKXZ8nfF64TL7QuX3Fe45zaq4hOb3fL6/fr9/rri9dXt+ZrU8Cym4Umy5cHl9uPz+2K86Oj1/Nzw+rDd9M3q+JDQ72rA6iOi3+34/ECu48jo9x2f3gWV2////wAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUJFNkU4NEZCNEVDMTFFODk3MDBBNUU1RUM4Qjg3QTUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RUJFNkU4NTBCNEVDMTFFODk3MDBBNUU1RUM4Qjg3QTUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFQkU2RTg0REI0RUMxMUU4OTcwMEE1RTVFQzhCODdBNSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFQkU2RTg0RUI0RUMxMUU4OTcwMEE1RTVFQzhCODdBNSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6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) no-repeat scroll center center; -} -.mx-tooltip-content .table th, -.mx-tooltip-content .table td { - padding: 2px 8px; -} - -.mx-tabcontainer-pane { - height: 100%; -} -.mx-tabcontainer-content.loading { - min-height: 48px; - background: url(data:image/gif;base64,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) no-repeat center center; - background-size: 32px 32px; -} -.mx-tabcontainer-tabs { - margin-bottom: 8px; -} -.mx-tabcontainer-tabs li { - position: relative; -} -.mx-tabcontainer-indicator { - position: absolute; - background: #f2dede; - border-radius: 8px; - color: #b94a48; - top: 0px; - right: -5px; - width: 16px; - height: 16px; - line-height: 16px; - text-align: center; - vertical-align: middle; - font-size: 10px; - font-weight: 600; - z-index: 1; /* indicator should not hide behind other tab */ -} - -/* base structure */ -.mx-grid { - padding: 8px; - overflow: hidden; /* to prevent any margin from escaping grid and foobaring our size calculations */ -} -.mx-grid-controlbar, .mx-grid-searchbar { - display: flex; - justify-content: space-between; - flex-wrap: wrap; -} -.mx-grid-controlbar .mx-button, -.mx-grid-search-controls .mx-button { - margin-bottom: 8px; -} - -.mx-grid-search-controls .mx-button + .mx-button, -.mx-grid-controlbar .mx-button + .mx-button { - margin-left: 0.3em; -} - -[dir="rtl"] .mx-grid-search-controls .mx-button + .mx-button, -[dir="rtl"] .mx-grid-controlbar .mx-button + .mx-button { - margin-left: 0; - margin-right: 0.3em; -} - -.mx-grid-pagingbar, -.mx-grid-search-controls { - display: flex; - white-space: nowrap; - align-items: baseline; - margin-left: auto; -} - -.mx-grid-toolbar, .mx-grid-search-inputs { - margin-right: 5px; - flex: 1; -} - -[dir="rtl"] .mx-grid-toolbar, -[dir="rtl"] .mx-grid-search-inputs { - margin-left: 5px; - margin-right: 0px; -} -[dir="rtl"] .mx-grid-pagingbar, -[dir="rtl"] .mx-grid-search-controls { - margin-left: 0px; - margin-right: auto; -} - -.mx-grid-paging-status { - padding: 0 8px 5px; -} - -/* search fields */ -.mx-grid-search-item { - display: inline-block; - vertical-align: top; - margin-bottom: 8px; -} -.mx-grid-search-label { - width: 110px; - padding: 0 5px; - text-align: right; - display: inline-block; - vertical-align: top; - overflow: hidden; -} -[dir="rtl"] .mx-grid-search-label { - text-align: left; -} -.mx-grid-search-input { - width: 150px; - padding: 0 5px; - display: inline-block; - vertical-align: top; -} -.mx-grid-search-message { - flex-basis: 100%; -} - -/* widget combinations */ -.mx-dataview .mx-grid { - border: 1px solid #ddd; - border-radius: 3px; -} - -.mx-calendar { - z-index: 1000; -} - -.mx-calendar-month-dropdown-options { - position: absolute; -} - -.mx-calendar, .mx-calendar-month-dropdown { - user-select: none; -} - -.mx-calendar-month-current { - display: inline-block; -} - -.mx-calendar-month-spacer { - position: relative; - height: 0px; - overflow: hidden; - visibility: hidden; -} - -.mx-calendar, .mx-calendar-month-dropdown-options { - border: 1px solid lightgrey; - background-color: white; -} - -.mx-datagrid tr { - cursor: pointer; -} - -.mx-datagrid tr.mx-datagrid-row-empty { - cursor: default; -} - -.mx-datagrid table { - width: 100%; - max-width: 100%; - table-layout: fixed; - margin-bottom: 0; -} - -.mx-datagrid th, .mx-datagrid td { - padding: 8px; - line-height: 1.42857143; - vertical-align: bottom; - border: 1px solid #ddd; -} - -/* head */ -.mx-datagrid th { - position: relative; /* Required for the positioning of the column resizers */ - border-bottom-width: 2px; -} -.mx-datagrid-head-caption { - overflow: hidden; - white-space: nowrap; -} -.mx-datagrid-sort-icon { - float: right; - padding-left: 5px; -} -[dir="rtl"] .mx-datagrid-sort-icon { - float: left; - padding: 0 5px 0 0; -} -.mx-datagrid-column-resizer { - position: absolute; - top: 0; - left: -6px; - width: 10px; - height: 100%; - cursor: col-resize; -} -[dir="rtl"] .mx-datagrid-column-resizer { - left: auto; - right: -6px; -} - -/* body */ -.mx-datagrid tbody tr:first-child td { - border-top: none; -} -//.mx-datagrid tbody tr:nth-child(2n+1) td { -// background-color: #f9f9f9; -//} -.mx-datagrid tbody .selected td { - background-color: #eee; -} -.mx-datagrid-data-wrapper { - overflow: hidden; - white-space: nowrap; -} -.mx-datagrid tbody img { - max-width: 16px; - max-height: 16px; -} -.mx-datagrid input, -.mx-datagrid select, -.mx-datagrid textarea { - cursor: auto; -} - -/* foot */ -.mx-datagrid tfoot th, -.mx-datagrid tfoot td { - padding: 3px 8px; -} -.mx-datagrid tfoot th { - border-top: 1px solid #ddd; -} -.mx-datagrid.mx-content-loading .mx-content-loader { - display: inline-block; - width: 90%; - animation: placeholderGradient 1s linear infinite; - border-radius: 4px; - background: #F5F5F5; - background: repeating-linear-gradient(to right, #F5F5F5 0%, #F5F5F5 5%, #F9F9F9 50%, #F5F5F5 95%, #F5F5F5 100%); - background-size: 200px 100px; - animation-fill-mode: both; -} -@keyframes placeholderGradient { - 0% { background-position: 100px 0; } - 100% { background-position: -100px 0; } -} - -.mx-datagrid-table-resizing th, -.mx-datagrid-table-resizing td { - cursor: col-resize !important; -} - -.mx-templategrid-content-wrapper { - display: table; - width: 100%; - border-collapse: collapse; - box-sizing: border-box; -} -.mx-templategrid-row { - display: table-row; -} -.mx-templategrid-item { - padding: 5px; - display: table-cell; - border: 1px solid #ddd; - cursor: pointer; - box-sizing: border-box; -} -.mx-templategrid-empty { - display: table-cell; -} -.mx-templategrid-item.selected { - background-color: #f5f5f5; -} -.mx-templategrid-item .mx-table th, -.mx-templategrid-item .mx-table td { - padding: 2px 8px; -} - -.mx-scrollcontainer-horizontal { - width: 100%; - display: table; - table-layout: fixed; -} -.mx-scrollcontainer-horizontal > div { - display: table-cell; - vertical-align: top; -} -//.mx-scrollcontainer-wrapper { -// padding: 10px; -//} -.mx-scrollcontainer-nested { - padding: 0; -} -.mx-scrollcontainer-fixed > .mx-scrollcontainer-middle > .mx-scrollcontainer-wrapper, -.mx-scrollcontainer-fixed > .mx-scrollcontainer-left > .mx-scrollcontainer-wrapper, -.mx-scrollcontainer-fixed > .mx-scrollcontainer-center > .mx-scrollcontainer-wrapper, -.mx-scrollcontainer-fixed > .mx-scrollcontainer-right > .mx-scrollcontainer-wrapper { - overflow: auto; -} - -.mx-scrollcontainer-move-in { - transition: left 250ms ease-out; -} -.mx-scrollcontainer-move-out { - transition: left 250ms ease-in; -} -.mx-scrollcontainer-shrink .mx-scrollcontainer-toggleable { - transition-property: width; -} - -.mx-scrollcontainer-toggleable { - background-color: #fff; -} -//.mx-scrollcontainer-slide > .mx-scrollcontainer-toggleable > .mx-scrollcontainer-wrapper { -// position: relative; -// z-index: 1; -// background-color: inherit; -//} -.mx-scrollcontainer-push { - position: relative; -} -.mx-scrollcontainer-shrink > .mx-scrollcontainer-toggleable { - overflow: hidden; -} -.mx-scrollcontainer-push.mx-scrollcontainer-open > div, -.mx-scrollcontainer-slide.mx-scrollcontainer-open > div { - pointer-events: none; -} -.mx-scrollcontainer-push.mx-scrollcontainer-open > .mx-scrollcontainer-toggleable, -.mx-scrollcontainer-slide.mx-scrollcontainer-open > .mx-scrollcontainer-toggleable { - pointer-events: auto; -} - -.mx-navbar-item img, -.mx-navbar-subitem img { - height: 16px; -} - - -.mx-navigationtree .navbar-inner { - padding-left: 0; - padding-right: 0; -} -.mx-navigationtree ul { - list-style: none; -} -.mx-navigationtree ul li { - border-bottom: 1px solid #dfe6ea; -} -.mx-navigationtree li:last-child { - border-style: none; -} -.mx-navigationtree a { - display: block; - padding: 5px 10px; - color: #777; - text-shadow: 0 1px 0 #fff; - text-decoration: none; -} -.mx-navigationtree a.active { - color: #FFF; - text-shadow: none; - background: #3498DB; - border-radius: 3px; -} -.mx-navigationtree .mx-navigationtree-collapsed ul { - display: none; -} -.mx-navigationtree ul { - margin: 0; - padding: 0; -} -.mx-navigationtree ul li { - padding: 5px 0; -} -.mx-navigationtree ul li ul { - padding: 0; - margin-left: 10px; -} -.mx-navigationtree ul li ul li { - margin-left: 8px; - padding: 5px 0; -} -[dir="rtl"] .mx-navigationtree ul li ul li { - margin-left: auto; - margin-right: 8px; -} -.mx-navigationtree ul li ul li ul li { - font-size: 10px; - padding-top: 3px; - padding-bottom: 3px; -} -.mx-navigationtree ul li ul li ul li img { - vertical-align: top; -} - -.mx-link img, -.mx-button img { - height: 16px; -} -.mx-link { - padding: 6px 12px; - display: inline-block; -} - -.mx-groupbox { - margin-bottom: 10px; -} -.mx-groupbox-header { - margin: 0; - padding: 10px 15px; - color: #eee; - background: #333; - font-size: inherit; - line-height: inherit; - border-radius: 4px 4px 0 0; -} -.mx-groupbox-collapsible > .mx-groupbox-header { - cursor: pointer; -} -.mx-groupbox.collapsed > .mx-groupbox-header { - border-radius: 4px; -} -.mx-groupbox-body { - padding: 8px; - border: 1px solid #ddd; - border-radius: 4px; -} -.mx-groupbox.collapsed > .mx-groupbox-body { - display: none; -} -.mx-groupbox-header + .mx-groupbox-body { - border-top: none; - border-radius: 0 0 4px 4px; -} -.mx-groupbox-collapse-icon { - float: right; -} -[dir="rtl"] .mx-groupbox-collapse-icon { - float: left; -} - -.mx-dataview { - position: relative; -} -.mx-dataview-controls { - padding: 19px 20px 12px; - background-color: #f5f5f5; - border-top: 1px solid #eee; -} - -.mx-dataview-controls .mx-button { - margin-bottom: 8px; -} - -.mx-dataview-controls .mx-button + .mx-button { - margin-left: 0.3em; -} - -.mx-dataview-message { - background: #fff; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; -} -.mx-dataview-message > div { - display: table; - width: 100%; - height: 100%; -} -.mx-dataview-message > div > p { - display: table-cell; - text-align: center; - vertical-align: middle; -} - -/* Top-level data view in window is a special case, handle it as such. */ -.mx-window-view .mx-window-body { - padding: 0; -} -.mx-window-view .mx-window-body > .mx-dataview > .mx-dataview-content, -.mx-window-view .mx-window-body > .mx-placeholder > .mx-dataview > .mx-dataview-content { - padding: 15px; -} -.mx-window-view .mx-window-body > .mx-dataview > .mx-dataview-controls, -.mx-window-view .mx-window-body > .mx-placeholder > .mx-dataview > .mx-dataview-controls { - border-radius: 0px 0px 6px 6px; -} - -.mx-dialog { - position: fixed; - left: auto; - right: auto; - padding: 0; - width: 500px; - /* If the margin is set to auto, IE9 reports the calculated value of the - * margin as the actual value. Other browsers will just report 0. Eliminate - * this difference by setting margin to 0 for every browser. */ - margin: 0; -} -.mx-dialog-header { - cursor: move; -} -.mx-dialog-body { - overflow: auto; -} - -.mx-window { - position: fixed; - left: auto; - right: auto; - padding: 0; - width: 600px; - /* If the margin is set to auto, IE9 reports the calculated value of the - * margin as the actual value. Other browsers will just report 0. Eliminate - * this difference by setting margin to 0 for every browser. */ - margin: 0; -} -.mx-window-content { - height: 100%; - overflow: hidden; -} -.mx-window-active .mx-window-header { - background-color: #f5f5f5; - border-radius: 6px 6px 0 0; -} -.mx-window-header { - cursor: move; -} -.mx-window-body { - overflow: auto; -} - -.mx-dropdown-list * { - cursor: pointer; -} -.mx-dropdown-list img { - width: 35px; - vertical-align: middle; - margin-right: 10px; -} -[dir="rtl"] .mx-dropdown-list img { - margin-left: 10px; - margin-right: auto; -} - -.mx-dropdown-list { - padding: 0; - list-style: none; -} -.mx-dropdown-list > li { - padding: 5px 10px 10px; - border: 1px #ddd; - border-style: solid solid none; - background-color: #fff; -} -.mx-dropdown-list > li:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; -} -.mx-dropdown-list > li:last-child { - border-bottom-style: solid; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; -} -.mx-dropdown-list-striped > li:nth-child(2n+1) { - background: #f9f9f9; -} -.mx-dropdown-list > li:hover { - background: #f5f5f5; -} - -.mx-header { - position: relative; - padding: 9px; - background: #333; - text-align: center; -} -.mx-header-center { - display: inline-block; - color: #eee; - line-height: 30px; /* height of buttons */ -} -body[dir="ltr"] .mx-header-left, -body[dir="rtl"] .mx-header-right { - position: absolute; - top: 9px; - left: 9px; -} -body[dir="ltr"] .mx-header-right, -body[dir="rtl"] .mx-header-left { - position: absolute; - top: 9px; - right: 9px; -} - -.mx-title { - margin-bottom: 0px; - margin-top: 0px; -} - -.mx-listview { - padding: 8px; -} -.mx-listview > ul { - padding: 0px; - list-style: none; -} -// .mx-listview > ul > li { -// padding: 5px 10px 10px; -// border: 1px #ddd; -// border-style: solid solid none; -// background-color: #fff; -// outline: none; -// } -// .mx-listview > ul > li:first-child { -// border-top-left-radius: 4px; -// border-top-right-radius: 4px; -// } -// .mx-listview > ul > li:last-child { -// border-bottom-style: solid; -// border-bottom-left-radius: 4px; -// border-bottom-right-radius: 4px; -// } -//.mx-listview li:nth-child(2n+1) { -// background: #f9f9f9; -//} -//.mx-listview li:nth-child(2n+1):hover { -// background: #f5f5f5; -//} -.mx-listview > ul > li.selected { -// background: #eee; -} -.mx-listview-clickable > ul > li { - cursor: pointer; -} -.mx-listview-empty { - color: #999; - text-align: center; -} -.mx-listview .mx-listview-loading { - padding: 10px; - line-height: 0; - text-align: center; -} -.mx-listview-searchbar { - display: flex; - margin-bottom: 10px; -} -.mx-listview-searchbar > input { - width: 100%; -} -.mx-listview-searchbar > button { - margin-left: 5px; -} -[dir="rtl"] .mx-listview-searchbar > button { - margin-left: 0; - margin-right: 5px; -} -.mx-listview-selection { - display: table-cell; - vertical-align: middle; - padding: 0 15px 0 5px; -} -[dir="rtl"] .mx-listview-selection { - padding: 0 5px 0 15px; -} -.mx-listview-selectable .mx-listview-content { - display: table-cell; - vertical-align: middle; - width: 100%; -} -.mx-listview .selected { - background: #def; -} -.mx-listview .mx-table th, -.mx-listview .mx-table td { - padding: 2px; -} - -.mx-login .form-control { - margin-top: 10px; -} - -.mx-menubar { - padding: 8px; -} -.mx-menubar-icon { - height: 16px; -} -.mx-menubar-more-icon { - display: inline-block; - width: 16px; - height: 16px; - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKNJREFUeNpi/P//P8NgAUwMgwiMOmbUMaOOGXXMqGNGHTPYHMOCTfDs2bMeQKoOiI1BXCBuMjY23kFrdYzoTQigRm8gtQWLG0OBBqyhlTpc0dSOIxTraKwOq2PUcWhWp7E6rI65iUPzTRqrw+qYGhyam2isDtMxwES1CUgFAfFxqBCIDkJPbNRWhzU3jRZ6o44ZdcyoY0YdM+qYUccMUscABBgAUXpEjE/Bs/IAAAAASUVORK5CYII=) no-repeat center center; - background-size: 16px 16px; - vertical-align: middle; -} - -.mx-navigationlist { - padding: 8px; -} -.mx-navigationlist li:hover, -.mx-navigationlist li:focus, -.mx-navigationlist li.active { - color: #FFF; - background-color: #3498DB; -} -.mx-navigationlist * { - cursor: pointer; -} -.mx-navigationlist .table th, -.mx-navigationlist .table td { - padding: 2px; -} - -.mx-progress { - position: fixed; - top: 30%; - left: 0; - right: 0; - margin: auto; - width: 250px; - max-width: 90%; - background: #333; - opacity: 0.8; - z-index: 5000; - border-radius: 4px; - padding: 20px 15px; - transition: opacity 0.4s ease-in-out; -} -.mx-progress-hidden { - opacity: 0; -} -.mx-progress-message { - color: #fff; - text-align: center; - margin-bottom: 15px; -} -.mx-progress-empty .mx-progress-message { - display: none; -} -.mx-progress-indicator { - width: 70px; - height: 10px; - margin: auto; - background: url(data:image/gif;base64,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); -} - -.mx-reload-notification { - position: fixed; - z-index: 1001; - top: 0; - width: 100%; - padding: 1rem; - - border: 1px solid hsl(200, 96%, 41%); - background-color: hsl(200, 96%, 44%); - - box-shadow: 0 5px 20px rgba(1, 37, 55, 0.16); - color: white; - - text-align: center; - font-size: 14px; -} - -.mx-resizer-n, -.mx-resizer-s { - position: absolute; - left: 0; - width: 100%; - height: 10px; -} -.mx-resizer-n { - top: -5px; - cursor: n-resize; -} -.mx-resizer-s { - bottom: -5px; - cursor: s-resize; -} - -.mx-resizer-e, -.mx-resizer-w { - position: absolute; - top: 0; - width: 10px; - height: 100%; -} -.mx-resizer-e { - right: -5px; - cursor: e-resize; -} -.mx-resizer-w { - left: -5px; - cursor: w-resize; -} - -.mx-resizer-nw, -.mx-resizer-ne, -.mx-resizer-sw, -.mx-resizer-se { - position: absolute; - width: 20px; - height: 20px; -} - -.mx-resizer-nw, -.mx-resizer-ne { - top: -5px; -} -.mx-resizer-sw, -.mx-resizer-se { - bottom: -5px; -} -.mx-resizer-nw, -.mx-resizer-sw { - left: -5px; -} -.mx-resizer-ne, -.mx-resizer-se { - right: -5px; -} - -.mx-resizer-nw { - cursor: nw-resize; -} -.mx-resizer-ne { - cursor: ne-resize; -} -.mx-resizer-sw { - cursor: sw-resize; -} -.mx-resizer-se { - cursor: se-resize; -} - -.mx-text { - white-space: pre-line; -} - -.mx-textarea textarea { - resize: none; - overflow-y: hidden; -} -.mx-textarea .mx-textarea-noresize { - height: auto; - resize: vertical; - overflow-y: auto; -} -.mx-textarea .mx-textarea-counter { - font-size: smaller; -} -.mx-textarea .form-control-static { - white-space: pre-line; -} - -.mx-underlay { - position: fixed; - top: 0; - width: 100%; - height: 100%; - z-index: 1000; - opacity: 0.5; - background-color: #333; -} - -.mx-imagezoom { - position: absolute; - display: table; - width: 100%; - height: 100%; - background-color: #999; -} -.mx-imagezoom-wrapper { - display: table-cell; - text-align: center; - vertical-align: middle; -} -.mx-imagezoom-image { - max-width: none; -} - -.mx-dropdown li { - padding: 3px 20px; - cursor: pointer; -} -.mx-dropdown label { - padding: 0; - color: #333; - white-space: nowrap; - cursor: pointer; -} -.mx-dropdown input { - margin: 0; - vertical-align: middle; - cursor: pointer; -} -.mx-dropdown .selected { - background: #f8f8f8; -} -//.mx-selectbox { -// text-align: left; -//} -//.mx-selectbox-caret-wrapper { -// float: right; -// height: 100%; -//} - -.mx-demouserswitcher { - position: fixed; - top: 0; - right: 0; - width: 360px; - height: 100%; - z-index: 20000; - box-shadow: -1px 0 5px rgba(28,59,86,.2); -} -.mx-demouserswitcher-content { - padding: 80px 40px 20px; - height: 100%; - color: #387ea2; - font-size: 14px; - overflow: auto; - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOgAAABgCAYAAAAXSj7NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MzkwOTREMDQ2NEYxMUU0QTQ4MUI5NTNGMUQ3QzE5NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0MzkwOTREMTQ2NEYxMUU0QTQ4MUI5NTNGMUQ3QzE5NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0REMyMUZGNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0REMyMjAwNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+g1tRlwAAEFFJREFUeNrsnYl3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) top right no-repeat #1b3149; - /* background-attachement local is not supported on IE8 - * when this is part of background the complete background is ignored */ - background-attachment: local; -} -.mx-demouserswitcher ul { - padding: 0; - margin-top: 25px; - list-style-type: none; - border-top: 1px solid #496076; -} -.mx-demouserswitcher a { - display: block; - padding: 10px 0; - color: #387ea2; - border-bottom: 1px solid #496076; -} -.mx-demouserswitcher h2 { - margin: 20px 0 5px; - color: #5bc4fe; - font-size: 28px; -} -.mx-demouserswitcher h3 { - margin: 0 0 2px; - color: #5bc4fe; - font-size: 18px; - font-weight: normal; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.mx-demouserswitcher .active h3 { - color: #11efdb; -} -.mx-demouserswitcher p { - margin-bottom: 0; -} -.mx-demouserswitcher-toggle { - position: absolute; - top: 25%; - left: -35px; - width: 35px; - height: 38px; - margin-top: -40px; - cursor: pointer; - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; - box-shadow: -1px 0 5px rgba(28,59,86,.2); - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NERDMjFGRDQ2NEMxMUU0QTQ4MUI5NTNGMUQ3QzE5NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NERDMjFGRTQ2NEMxMUU0QTQ4MUI5NTNGMUQ3QzE5NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0REMyMUZCNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0REMyMUZDNDY0QzExRTRBNDgxQjk1M0YxRDdDMTk3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+1ZovNAAAAWdJREFUeNqM1M0rRFEYx/E7Y5qIQpOUbIiymQWysBgvJVJK2VgryZQtKSULZelPsB0LZaNZjJUNK1FskJqUvCS3NAsZc3zP9NziOOfeeepTc8/c8+vc8xZTSnmOakEGKdzgDBXXy54OMsSwjpL6W9cYsrxfZWvcUu7y0VdLUCc+VXgd2oLixpfOIOmF17TtHTOozYuupCxAaNB9DUEfeDUbE8bzEXxZerP00l8hh3LUiHTIMr6N9j2ksYoihv/1deyLSVzKKm1jEW+WfZV2Lf8gskjIcwcWpOM++pHCFPLosgWtoCyd7jCPOjzhGHHLyDPY1achaJhDxRj6rBwJXUuoN0IG8IIv7OiGBjxadvAITuT3rex6c0SbKASflnUcBT3JTThAjyWkGUVsBEEFR5CerzXpNIacrFIrJnCBB3muBvkhB1TP27hM/Lvx3zl6gxHqu6c74kiU8IxGjKJdLrrT3xfdjwADAJaMxP2bvD2BAAAAAElFTkSuQmCC) center center no-repeat #1b3149; -} - -/* master details screen for mobile */ -.mx-master-detail-screen { - top: 0; - left: 0; - overflow: auto; - width: 100%; - height: 100%; - position: absolute; - background-color: white; - will-change: transform; -} - -.mx-master-detail-screen .mx-master-detail-details { - padding: 15px; -} - -.mx-master-detail-screen-header { - position: relative; - overflow: auto; - border-bottom: 1px solid #ccc; - background-color: #f7f7f7; -} - -.mx-master-detail-screen-header-caption { - text-align: center; - font-size: 17px; - line-height: 24px; - font-weight: 600; -} - -.mx-master-detail-screen-header-close { - position: absolute; - left: 0; - top: 0; - height: 100%; - width: 50px; - border: none; - background: transparent; - color: #007aff; -} - -body[dir="rtl"] .mx-master-detail-screen-header-close { - right: 0; - left: auto; -} - -.mx-master-detail-screen-header-close::before { - content: "\2039"; - font-size: 52px; - line-height: 24px; -} - -/* classes for content page */ -.mx-master-detail-content-fix { - height: 100vh; - overflow: hidden; -} - -.mx-master-detail-content-hidden { - transform: translateX(-200%); -} - -body[dir="rtl"] .mx-master-detail-content-hidden { - transform: translateX(200%); -} -.reportingReport { - padding: 5px; - border: 1px solid #ddd; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} - -.reportingReportParameter th { - text-align: right; -} - -.reportingDateRange table { - width: 100%; - table-layout: fixed; -} -.reportingDateRange th { - padding: 5px; - text-align: right; - background-color: #eee; -} -.reportingDateRange td { - padding: 5px; -} - -.mx-reportmatrix table { - width: 100%; - max-width: 100%; - table-layout: fixed; - margin-bottom: 0; -} - -.mx-reportmatrix th, .mx-reportmatrix td { - padding: 8px; - line-height: 1.42857143; - vertical-align: bottom; - border: 1px solid #ddd; -} - -.mx-reportmatrix tbody tr:first-child td { - border-top: none; -} - -.mx-reportmatrix tbody tr:nth-child(2n+1) td { - background-color: #f9f9f9; -} - -.mx-reportmatrix tbody img { - max-width: 16px; - max-height: 16px; -} - -@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { - .dijitInline { - zoom: 1; /* set hasLayout:true to mimic inline-block */ - display:inline; /* don't use .dj_ie since that increases the priority */ - vertical-align: auto; /* makes TextBox,Button line up w/native counterparts on IE6 */ - } - - .dj_ie6 .dijitComboBox .dijitInputContainer, - .dijitInputContainer { - zoom: 1; - } - - .dijitRight { - /* Right part of a 3-element border */ - display:inline; /* IE7 sizes to outer size w/o this */ - } - - .dijitButtonNode { - vertical-align: auto; - } - - .dijitTextBox { - overflow: hidden; /* #6027, #6067 */ - } - - .dijitPlaceHolder { - filter: ""; /* make this show up in IE6 after the rendering of the widget */ - } - - .dijitValidationTextBoxError input.dijitValidationInner, - .dijitSelect input, - .dijitTextBox input.dijitArrowButtonInner { - text-indent: 0 !important; - letter-spacing: -5em !important; - text-align: right !important; - } - - .dj_a11y input.dijitValidationInner, - .dj_a11y input.dijitArrowButtonInner { - text-align: left !important; - } - - .dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton { - bottom: 50%; /* otherwise (on some machines) top arrow icon too close to splitter border (IE6/7) */ - } - - .dijitTabContainerTop-tabs .dijitTab, - .dijitTabContainerBottom-tabs .dijitTab { - zoom: 1; /* set hasLayout:true to mimic inline-block */ - display:inline; /* don't use .dj_ie since that increases the priority */ - } - - .dojoDndHorizontal .dojoDndItem { - /* make contents of horizontal container be side by side, rather than vertical */ - display: inline; - } -} - - - -/* WARNING: IE9 limits nested imports to three levels deep: http://jorgealbaladejo.com/2011/05/28/internet-explorer-limits-nested-import-css-statements */ - -/* dijit base */ - -/* mendix base */ - -/* widgets */ - -/* reporting */ - - -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9kb2pvL2Rpaml0L3RoZW1lcy9kaWppdC5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS9iYXNlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL2Zvcm1zLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9Ub29sdGlwLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9UYWJDb250YWluZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L19HcmlkLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9DYWxlbmRhci5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvRGF0YUdyaWQuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RlbXBsYXRlR3JpZC5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvU2Nyb2xsQ29udGFpbmVyLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9OYXZiYXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L05hdmlnYXRpb25UcmVlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9CdXR0b24uY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0dyb3VwQm94LmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9EYXRhVmlldy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvRGlhbG9nLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9XaW5kb3cuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0Ryb3BEb3duLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9IZWFkZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RpdGxlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9MaXN0Vmlldy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvTG9naW5EaWFsb2cuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L01lbnVCYXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L05hdmlnYXRpb25MaXN0LmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9Qcm9ncmVzcy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvUmVsb2FkTm90aWZpY2F0aW9uLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9SZXNpemFibGUuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RleHQuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RleHRBcmVhLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9VbmRlcmxheS5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvSW1hZ2Vab29tLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9TZWxlY3RCb3guY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0RlbW9Vc2VyU3dpdGNoZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L01hc3RlckRldGFpbC5jc3MiLCJ3ZWJwYWNrOi8vLy4vcmVwb3J0aW5nL3VpL3dpZGdldC9SZXBvcnQuY3NzIiwid2VicGFjazovLy8uL3JlcG9ydGluZy91aS93aWRnZXQvUmVwb3J0UGFyYW1ldGVyLmNzcyIsIndlYnBhY2s6Ly8vLi9yZXBvcnRpbmcvdWkvd2lkZ2V0L0RhdGVSYW5nZS5jc3MiLCJ3ZWJwYWNrOi8vLy4vcmVwb3J0aW5nL3VpL3dpZGdldC9SZXBvcnRNYXRyaXguY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvbXh1aS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7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QUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsd0JBQXdCO0FBQ3hCLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHlDQUF5QztBQUN4RDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixvQkFBb0I7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQsMEJBQTBCO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsYUFBYTtBQUNiLGFBQWEsd0RBQXdEO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQjtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdnNFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7O0FDOUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUN6REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOztBQzdCQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JGQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQzFCQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhCQUE4QjtBQUN0QyxVQUFVLCtCQUErQjtBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUN0R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyREE7QUFDQTtBQUNBO0FBQ0E7OztBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0VBO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DOztBQy9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JFQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7QUMvREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDO0FDaEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDekJBOztBQUVBOztBQUVBOztBQUVBOztBQUVBIiwiZmlsZSI6Im14dWkvdWkvbXh1aS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuXHRFc3NlbnRpYWwgc3R5bGVzIHRoYXQgdGhlbWVzIGNhbiBpbmhlcml0LlxuXHRJbiBvdGhlciB3b3Jkcywgd29ya3MgYnV0IGRvZXNuJ3QgbG9vayBncmVhdC5cbiovXG5cblxuXG4vKioqKlxuXHRcdEdFTkVSSUMgUElFQ0VTXG4gKioqKi9cblxuLmRpaml0UmVzZXQge1xuXHQvKiBVc2UgdGhpcyBzdHlsZSB0byBudWxsIG91dCBwYWRkaW5nLCBtYXJnaW4sIGJvcmRlciBpbiB5b3VyIHRlbXBsYXRlIGVsZW1lbnRzXG5cdFx0c28gdGhhdCBwYWdlIHNwZWNpZmljIHN0eWxlcyBkb24ndCBicmVhayB0aGVtLlxuXHRcdC0gVXNlIGluIGFsbCBUQUJMRSwgVFIgYW5kIFREIHRhZ3MuXG5cdCovXG5cdG1hcmdpbjowO1xuXHRib3JkZXI6MDtcblx0cGFkZGluZzowO1xuXHRmb250OiBpbmhlcml0O1xuXHRsaW5lLWhlaWdodDpub3JtYWw7XG5cdGNvbG9yOiBpbmhlcml0O1xufVxuLmRqX2ExMXkgLmRpaml0UmVzZXQge1xuXHQtbW96LWFwcGVhcmFuY2U6IG5vbmU7IC8qIHJlbW92ZSBwcmVkZWZpbmVkIGhpZ2gtY29udHJhc3Qgc3R5bGluZyBpbiBGaXJlZm94ICovXG59XG5cbi5kaWppdElubGluZSB7XG5cdC8qICBUbyBpbmxpbmUgYmxvY2sgZWxlbWVudHMuXG5cdFx0U2ltaWxhciB0byBJbmxpbmVCb3ggYmVsb3csIGJ1dCB0aGlzIGhhcyBmZXdlciBzaWRlLWVmZmVjdHMgaW4gTW96LlxuXHRcdEFsc28sIGFwcGFyZW50bHkgd29ya3Mgb24gYSBESVYgYXMgd2VsbCBhcyBhIEZJRUxEU0VULlxuXHQqL1xuXHRkaXNwbGF5OmlubGluZS1ibG9jaztcdFx0XHQvKiB3ZWJraXQgYW5kIEZGMyAqL1xuXHQjem9vbTogMTsgLyogc2V0IGhhc0xheW91dDp0cnVlIHRvIG1pbWljIGlubGluZS1ibG9jayAqL1xuXHQjZGlzcGxheTppbmxpbmU7IC8qIGRvbid0IHVzZSAuZGpfaWUgc2luY2UgdGhhdCBpbmNyZWFzZXMgdGhlIHByaW9yaXR5ICovXG5cdGJvcmRlcjowO1xuXHRwYWRkaW5nOjA7XG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0I3ZlcnRpY2FsLWFsaWduOiBhdXRvO1x0LyogbWFrZXMgVGV4dEJveCxCdXR0b24gbGluZSB1cCB3L25hdGl2ZSBjb3VudGVycGFydHMgb24gSUU2ICovXG59XG5cbnRhYmxlLmRpaml0SW5saW5lIHtcblx0LyogVG8gaW5saW5lIHRhYmxlcyB3aXRoIGEgZ2l2ZW4gd2lkdGggc2V0ICovXG5cdGRpc3BsYXk6aW5saW5lLXRhYmxlO1xuXHRib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbn1cblxuLmRpaml0SGlkZGVuIHtcblx0LyogVG8gaGlkZSB1bnNlbGVjdGVkIHBhbmVzIGluIFN0YWNrQ29udGFpbmVyIGV0Yy4gKi9cblx0cG9zaXRpb246IGFic29sdXRlOyAvKiByZW1vdmUgZnJvbSBub3JtYWwgZG9jdW1lbnQgZmxvdyB0byBzaW11bGF0ZSBkaXNwbGF5OiBub25lICovXG5cdHZpc2liaWxpdHk6IGhpZGRlbjsgLyogaGlkZSBlbGVtZW50IGZyb20gdmlldywgYnV0IGRvbid0IGJyZWFrIHNjcm9sbGluZywgc2VlICMxODYxMiAqL1xufVxuLmRpaml0SGlkZGVuICoge1xuXHR2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsgLyogaGlkZSB2aXNpYmlsaXR5OnZpc2libGUgZGVzY2VuZGFudHMgb2YgY2xhc3M9ZGlqaXRIaWRkZW4gbm9kZXMsIHNlZSAjMTg3OTkgKi9cbn1cblxuLmRpaml0VmlzaWJsZSB7XG5cdC8qIFRvIHNob3cgc2VsZWN0ZWQgcGFuZSBpbiBTdGFja0NvbnRhaW5lciBldGMuICovXG5cdGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XHQvKiBvdmVycmlkZSB1c2VyJ3MgZGlzcGxheTpub25lIHNldHRpbmcgdmlhIHN0eWxlIHNldHRpbmcgb3IgaW5kaXJlY3RseSB2aWEgY2xhc3MgKi9cblx0cG9zaXRpb246IHJlbGF0aXZlO1x0XHRcdC8qIHRvIHN1cHBvcnQgc2V0dGluZyB3aWR0aC9oZWlnaHQsIHNlZSAjMjAzMyAqL1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuXG4uZGpfaWU2IC5kaWppdENvbWJvQm94IC5kaWppdElucHV0Q29udGFpbmVyLFxuLmRpaml0SW5wdXRDb250YWluZXIge1xuXHQvKiBmb3IgcG9zaXRpb25pbmcgb2YgcGxhY2VIb2xkZXIgKi9cblx0I3pvb206IDE7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IC8qIG5lZWRlZCB0byBzcXVlZXplIHRoZSBJTlBVVCBpbiAqL1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uZGpfaWU3IC5kaWppdElucHV0Q29udGFpbmVyIHtcblx0ZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgLyogbmVlZGVkIGJ5IElFIHRvIHNxdWVlemUgdGhlIElOUFVUIGluICovXG5cdGNsZWFyOiBsZWZ0O1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgLyogdG8gZml4IHdyb25nIHRleHQgYWxpZ25tZW50IGluIHRleHRkaXI9cnRsIHRleHQgYm94ICovXG59XG5cbi5kal9pZSAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWUgaW5wdXQuZGlqaXRUZXh0Qm94LFxuLmRqX2llIC5kaWppdFRleHRCb3ggaW5wdXQge1xuXHRmb250LXNpemU6IDEwMCU7XG59XG4uZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uVGV4dCB7XG5cdGZsb2F0OiBsZWZ0O1xuXHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuVEFCTEUuZGlqaXRTZWxlY3Qge1xuXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IC8qIG1lc3NlcyB1cCBib3JkZXIgYWxpZ25tZW50ICovXG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IC8qIHNvIGpzZmlkZGxlIHdvcmtzIHdpdGggTm9ybWFsaXplZCBDU1MgY2hlY2tlZCAqL1xufVxuLmRpaml0VGV4dEJveCAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyLFxuLmRpaml0VGV4dEJveCAuZGlqaXRBcnJvd0J1dHRvbkNvbnRhaW5lcixcbi5kaWppdFZhbGlkYXRpb25UZXh0Qm94IC5kaWppdFZhbGlkYXRpb25Db250YWluZXIge1xuXHRmbG9hdDogcmlnaHQ7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5kaWppdFNlbGVjdCBpbnB1dC5kaWppdElucHV0RmllbGQsXG4uZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRGaWVsZCB7XG5cdC8qIG92ZXJyaWRlIHVucmVhc29uYWJsZSB1c2VyIHN0eWxpbmcgb2YgYnV0dG9ucyBhbmQgaWNvbnMgKi9cblx0cGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcbn1cbi5kaWppdFZhbGlkYXRpb25UZXh0Qm94IC5kaWppdFZhbGlkYXRpb25Db250YWluZXIge1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4uZGlqaXRUZWVueSB7XG5cdGZvbnQtc2l6ZToxcHg7XG5cdGxpbmUtaGVpZ2h0OjFweDtcbn1cblxuLmRpaml0T2ZmU2NyZWVuIHsgLyogdGhlc2UgY2xhc3MgYXR0cmlidXRlcyBzaG91bGQgc3VwZXJzZWRlIGFueSBpbmxpbmUgcG9zaXRpb25pbmcgc3R5bGUgKi9cblx0cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG5cdGxlZnQ6IC0xMDAwMHB4ICFpbXBvcnRhbnQ7XG5cdHRvcDogLTEwMDAwcHggIWltcG9ydGFudDtcbn1cblxuLypcbiAqIFBvcHVwIGl0ZW1zIGhhdmUgYSB3cmFwcGVyIGRpdiAoZGlqaXRQb3B1cClcbiAqIHdpdGggdGhlIHJlYWwgcG9wdXAgaW5zaWRlLCBhbmQgbWF5YmUgYW4gaWZyYW1lIHRvb1xuICovXG4uZGlqaXRQb3B1cCB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdG1hcmdpbjogMDtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xuXHQtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbi5kaWppdFBvc2l0aW9uT25seSB7XG5cdC8qIE51bGwgb3V0IGFsbCBwb3NpdGlvbi1yZWxhdGVkIHByb3BlcnRpZXMgKi9cblx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xuXHRib3JkZXI6IDAgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcblx0d2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmRpaml0Tm9uUG9zaXRpb25Pbmx5IHtcblx0LyogTnVsbCBwb3NpdGlvbi1yZWxhdGVkIHByb3BlcnRpZXMgKi9cblx0ZmxvYXQ6IG5vbmUgIWltcG9ydGFudDtcblx0cG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50O1xuXHRtYXJnaW46IDAgMCAwIDAgIWltcG9ydGFudDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50O1xufVxuXG4uZGlqaXRCYWNrZ3JvdW5kSWZyYW1lIHtcblx0LyogaWZyYW1lIHVzZWQgdG8gcHJldmVudCBwcm9ibGVtcyB3aXRoIFBERiBvciBvdGhlciBhcHBsZXRzIG92ZXJsYXlpbmcgbWVudXMgZXRjICovXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0bGVmdDogMDtcblx0dG9wOiAwO1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xuXHR6LWluZGV4OiAtMTtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdERpc3BsYXlOb25lIHtcblx0LyogaGlkZSBzb21ldGhpbmcuICBVc2UgdGhpcyBhcyBhIGNsYXNzIHJhdGhlciB0aGFuIGVsZW1lbnQuc3R5bGUgc28gYW5vdGhlciBjbGFzcyBjYW4gb3ZlcnJpZGUgKi9cblx0ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdENvbnRhaW5lciB7XG5cdC8qIGZvciBhbGwgbGF5b3V0IGNvbnRhaW5lcnMgKi9cblx0b3ZlcmZsb3c6IGhpZGRlbjtcdC8qIG5lZWQgb24gSUUgc28gc29tZXRoaW5nIGNhbiBiZSByZWR1Y2VkIGluIHNpemUsIGFuZCBzbyBzY3JvbGxiYXJzIGFyZW4ndCB0ZW1wb3JhcmlseSBkaXNwbGF5ZWQgd2hlbiByZXNpemluZyAqL1xufVxuXG4vKioqKlxuXHRcdEExMVlcbiAqKioqL1xuLmRqX2ExMXkgLmRpaml0SWNvbixcbi5kal9hMTF5IGRpdi5kaWppdEFycm93QnV0dG9uSW5uZXIsIC8qIGlzIHRoaXMgb25seSBmb3IgU3Bpbm5lcj8gIGlmIHNvLCBpdCBzaG91bGQgYmUgZGVsZXRlZCAqL1xuLmRqX2ExMXkgc3Bhbi5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGpfYTExeSBpbWcuZGlqaXRBcnJvd0J1dHRvbklubmVyLFxuLmRqX2ExMXkgLmRpaml0Q2FsZW5kYXJJbmNyZW1lbnRDb250cm9sLFxuLmRqX2ExMXkgLmRpaml0VHJlZUV4cGFuZG8ge1xuXHQvKiBoaWRlIGljb24gbm9kZXMgaW4gaGlnaCBjb250cmFzdCBtb2RlOyB3aGVuIG5lY2Vzc2FyeSB0aGV5IHdpbGwgYmUgcmVwbGFjZWQgYnkgY2hhcmFjdGVyIGVxdWl2YWxlbnRzXG5cdCAqIGV4Y2VwdGlvbiBmb3IgaW5wdXQuZGlqaXRBcnJvd0J1dHRvbklubmVyLCBiZWNhdXNlIHRoZSBpY29uIGFuZCBjaGFyYWN0ZXIgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIHNhbWUgbm9kZSAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRpaml0U3Bpbm5lciBkaXYuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0ZGlzcGxheTogYmxvY2s7IC8qIG92ZXJyaWRlIHByZXZpb3VzIHJ1bGUgKi9cbn1cblxuLmRqX2ExMXkgLmRpaml0QTExeVNpZGVBcnJvdyB7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyAvKiBkaXNwbGF5IHRleHQgaW5zdGVhZCAqL1xuXHRjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qXG4gKiBTaW5jZSB3ZSBjYW4ndCB1c2Ugc2hhZGluZyBpbiBhMTF5IG1vZGUsIGFuZCBzaW5jZSB0aGUgdW5kZXJsaW5lIGluZGljYXRlcyB0b2RheSdzIGRhdGUsXG4gKiB1c2UgYSBib3JkZXIgdG8gc2hvdyB0aGUgc2VsZWN0ZWQgZGF0ZS5cbiAqIEF2b2lkIHNjcmVlbiBqaXR0ZXIgd2hlbiBzd2l0Y2hpbmcgc2VsZWN0ZWQgZGF0ZSBieSBjb21wZW5zYXRpbmcgZm9yIHRoZSBzZWxlY3RlZCBub2RlJ3NcbiAqIGJvcmRlciB3L3BhZGRpbmcgb24gb3RoZXIgbm9kZXMuXG4gKi9cbi5kal9hMTF5IC5kaWppdENhbGVuZGFyRGF0ZUxhYmVsIHtcblx0cGFkZGluZzogMXB4O1xuXHRib3JkZXI6IDBweCAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0Q2FsZW5kYXJTZWxlY3RlZERhdGUgLmRpaml0Q2FsZW5kYXJEYXRlTGFiZWwge1xuXHRib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG5cdGJvcmRlci13aWR0aDogMXB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmc6IDA7XG59XG4uZGpfYTExeSAuZGlqaXRDYWxlbmRhckRhdGVUZW1wbGF0ZSB7XG5cdHBhZGRpbmctYm90dG9tOiAwLjFlbSAhaW1wb3J0YW50O1x0Lyogb3RoZXJ3aXNlIGJvdHRvbSBib3JkZXIgZG9lc24ndCBhcHBlYXIgb24gSUUgKi9cblx0Ym9yZGVyOiAwcHggIWltcG9ydGFudDtcbn1cbi5kal9hMTF5IC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXI6IGJsYWNrIG91dHNldCBtZWRpdW0gIWltcG9ydGFudDtcblxuXHQvKiBJbiBjbGFybywgaG92ZXJpbmcgYSB0b29sYmFyIGJ1dHRvbiByZWR1Y2VzIHBhZGRpbmcgYW5kIGFkZHMgYSBib3JkZXIuXG5cdCAqIE5vdCBuZWVkZWQgaW4gYTExeSBtb2RlIHNpbmNlIFRvb2xiYXIgYnV0dG9ucyBhbHdheXMgaGF2ZSBhIGJvcmRlci5cblx0ICovXG5cdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbn1cbi5kal9hMTF5IC5kaWppdEFycm93QnV0dG9uIHtcblx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXRCdXR0b25Db250ZW50cyB7XG5cdG1hcmdpbjogMC4xNWVtOyAvKiBNYXJnaW4gbmVlZGVkIHRvIG1ha2UgZm9jdXMgb3V0bGluZSB2aXNpYmxlICovXG59XG5cbi5kal9hMTF5IC5kaWppdFRleHRCb3hSZWFkT25seSAuZGlqaXRJbnB1dEZpZWxkLFxuLmRqX2ExMXkgLmRpaml0VGV4dEJveFJlYWRPbmx5IC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItc3R5bGU6IG91dHNldCFpbXBvcnRhbnQ7XG5cdGJvcmRlci13aWR0aDogbWVkaXVtIWltcG9ydGFudDtcblx0Ym9yZGVyLWNvbG9yOiAjOTk5ICFpbXBvcnRhbnQ7XG5cdGNvbG9yOiM5OTkgIWltcG9ydGFudDtcbn1cblxuLyogYnV0dG9uIGlubmVyIGNvbnRlbnRzIC0gbGFiZWxzLCBpY29ucyBldGMuICovXG4uZGlqaXRCdXR0b25Ob2RlICoge1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmRpaml0U2VsZWN0IC5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGlqaXRCdXR0b25Ob2RlIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHQvKiB0aGUgYXJyb3cgaWNvbiBub2RlICovXG5cdGJhY2tncm91bmQ6IG5vLXJlcGVhdCBjZW50ZXI7XG5cdHdpZHRoOiAxMnB4O1xuXHRoZWlnaHQ6IDEycHg7XG5cdGRpcmVjdGlvbjogbHRyOyAvKiBuZWVkZWQgYnkgSUUvUlRMICovXG59XG5cbi8qKioqXG5cdDMtZWxlbWVudCBib3JkZXJzOiAgKCBkaWppdExlZnQgKyBkaWppdFN0cmV0Y2ggKyBkaWppdFJpZ2h0IClcblx0VGhlc2Ugd2VyZSBhZGRlZCBmb3Igcm91bmRlZCBjb3JuZXJzIG9uIGRpaml0LmZvcm0uKkJ1dHRvbiBidXQgbmV2ZXIgYWN0dWFsbHkgdXNlZC5cbiAqKioqL1xuXG4uZGlqaXRMZWZ0IHtcblx0LyogTGVmdCBwYXJ0IG9mIGEgMy1lbGVtZW50IGJvcmRlciAqL1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgdG9wO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG59XG5cbi5kaWppdFN0cmV0Y2gge1xuXHQvKiBNaWRkbGUgKHN0cmV0Y2h5KSBwYXJ0IG9mIGEgMy1lbGVtZW50IGJvcmRlciAqL1xuXHR3aGl0ZS1zcGFjZTpub3dyYXA7XHRcdFx0LyogTU9XOiBtb3ZlIHNvbWV3aGVyZSBlbHNlICovXG5cdGJhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O1xufVxuXG4uZGlqaXRSaWdodCB7XG5cdC8qIFJpZ2h0IHBhcnQgb2YgYSAzLWVsZW1lbnQgYm9yZGVyICovXG5cdCNkaXNwbGF5OmlubGluZTtcdFx0XHRcdC8qIElFNyBzaXplcyB0byBvdXRlciBzaXplIHcvbyB0aGlzICovXG5cdGJhY2tncm91bmQtcG9zaXRpb246cmlnaHQgdG9wO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG59XG5cbi8qIEJ1dHRvbnMgKi9cbi5kal9nZWNrbyAuZGpfYTExeSAuZGlqaXRCdXR0b25EaXNhYmxlZCAuZGlqaXRCdXR0b25Ob2RlIHtcblx0b3BhY2l0eTogMC41O1xufVxuXG4uZGlqaXRUb2dnbGVCdXR0b24sXG4uZGlqaXRCdXR0b24sXG4uZGlqaXREcm9wRG93bkJ1dHRvbixcbi5kaWppdENvbWJvQnV0dG9uIHtcblx0Lyogb3V0c2lkZSBvZiBidXR0b24gKi9cblx0bWFyZ2luOiAwLjJlbTtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRkaXNwbGF5OiBibG9jaztcdFx0LyogdG8gbWFrZSBmb2N1cyBib3JkZXIgcmVjdGFuZ3VsYXIgKi9cbn1cbnRkLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRkaXNwbGF5OiB0YWJsZS1jZWxsO1x0LyogYnV0IGRvbid0IGFmZmVjdCBTZWxlY3QsIENvbWJvQnV0dG9uICovXG59XG5cbi5kaWppdEJ1dHRvbk5vZGUgaW1nIHtcblx0LyogbWFrZSB0ZXh0IGFuZCBpbWFnZXMgbGluZSB1cCBjbGVhbmx5ICovXG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0LyptYXJnaW4tYm90dG9tOi4yZW07Ki9cbn1cblxuLmRpaml0VG9vbGJhciAuZGlqaXRDb21ib0J1dHRvbiB7XG5cdC8qIGJlY2F1c2UgVG9vbGJhciBvbmx5IGRyYXdzIGEgYm9yZGVyIGFyb3VuZCB0aGUgaG92ZXJlZCB0aGluZyAqL1xuXHRib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xufVxuXG4uZGlqaXRUb29sYmFyIC5kaWppdFRvZ2dsZUJ1dHRvbixcbi5kaWppdFRvb2xiYXIgLmRpaml0QnV0dG9uLFxuLmRpaml0VG9vbGJhciAuZGlqaXREcm9wRG93bkJ1dHRvbixcbi5kaWppdFRvb2xiYXIgLmRpaml0Q29tYm9CdXR0b24ge1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdFRvb2xiYXIgLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHQvKiBqdXN0IGJlY2F1c2UgaXQgdXNlZCB0byBiZSB0aGlzIHdheSAqL1xuXHRwYWRkaW5nOiAxcHggMnB4O1xufVxuXG5cbi5kal93ZWJraXQgLmRpaml0VG9vbGJhciAuZGlqaXREcm9wRG93bkJ1dHRvbiB7XG5cdHBhZGRpbmctbGVmdDogMC4zZW07XG59XG4uZGpfZ2Vja28gLmRpaml0VG9vbGJhciAuZGlqaXRCdXR0b25Ob2RlOjotbW96LWZvY3VzLWlubmVyIHtcblx0cGFkZGluZzowO1xufVxuXG4uZGlqaXRTZWxlY3Qge1xuXHRib3JkZXI6MXB4IHNvbGlkIGdyYXk7XG59XG4uZGlqaXRCdXR0b25Ob2RlIHtcblx0LyogTm9kZSB0aGF0IGlzIGFjdGluZyBhcyBhIGJ1dHRvbiAtLSBtYXkgb3IgbWF5IG5vdCBiZSBhIEJVVFRPTiBlbGVtZW50ICovXG5cdGJvcmRlcjoxcHggc29saWQgZ3JheTtcblx0bWFyZ2luOjA7XG5cdGxpbmUtaGVpZ2h0Om5vcm1hbDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0I3ZlcnRpY2FsLWFsaWduOiBhdXRvO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5kal93ZWJraXQgLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIHtcblx0LyogYXBwYXJlbnQgV2ViS2l0IGJ1ZyB3aGVyZSBtZXNzaW5nIHdpdGggdGhlIGZvbnQgY291cGxlZCB3aXRoIGxpbmUtaGVpZ2h0Om5vcm1hbCBYIDIgKGRpaml0UmVzZXQgJiBkaWppdEJ1dHRvbk5vZGUpXG5cdGNhbiBiZSBkaWZmZXJlbnQgdGhhbiBqdXN0IGEgc2luZ2xlIGxpbmUtaGVpZ2h0Om5vcm1hbCwgdmlzaWJsZSBpbiBJbmxpbmVFZGl0Qm94L1NwaW5uZXIgKi9cblx0bGluZS1oZWlnaHQ6aW5oZXJpdDtcbn1cbi5kaWppdFRleHRCb3ggLmRpaml0QnV0dG9uTm9kZSB7XG5cdGJvcmRlci13aWR0aDogMDtcbn1cblxuLmRpaml0U2VsZWN0LFxuLmRpaml0U2VsZWN0ICosXG4uZGlqaXRCdXR0b25Ob2RlLFxuLmRpaml0QnV0dG9uTm9kZSAqIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGpfaWUgLmRpaml0QnV0dG9uTm9kZSB7XG5cdC8qIGVuc3VyZSBoYXNMYXlvdXQgKi9cblx0em9vbTogMTtcbn1cblxuLmRqX2llIC5kaWppdEJ1dHRvbk5vZGUgYnV0dG9uIHtcblx0Lypcblx0XHRkaXNndXN0aW5nIGhhY2sgdG8gZ2V0IHJpZCBvZiBzcHVyaW91cyBwYWRkaW5nIGFyb3VuZCBidXR0b24gZWxlbWVudHNcblx0XHRvbiBJRS4gTVNJRSBpcyB0cnVseSB0aGUgd2ViJ3MgYm9hdCBhbmNob3IuXG5cdCovXG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG5kaXYuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdGZsb2F0OiByaWdodDtcbn1cblxuLyoqKioqKlxuXHRUZXh0Qm94IHJlbGF0ZWQuXG5cdEV2ZXJ5dGhpbmcgdGhhdCBoYXMgYW4gPGlucHV0PlxuKioqKioqKi9cblxuLmRpaml0VGV4dEJveCB7XG5cdGJvcmRlcjogc29saWQgYmxhY2sgMXB4O1xuXHQjb3ZlcmZsb3c6IGhpZGRlbjsgLyogIzYwMjcsICM2MDY3ICovXG5cdHdpZHRoOiAxNWVtO1x0LyogbmVlZCB0byBzZXQgZGVmYXVsdCBzaXplIG9uIG91dGVyIG5vZGUgc2luY2UgaW5uZXIgbm9kZXMgc2F5IDxpbnB1dCBzdHlsZT1cIndpZHRoOjEwMCVcIj4gYW5kIDx0ZCB3aWR0aD0xMDAlPi4gIHVzZXIgY2FuIG92ZXJyaWRlICovXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kaWppdFRleHRCb3hSZWFkT25seSxcbi5kaWppdFRleHRCb3hEaXNhYmxlZCB7XG5cdGNvbG9yOiBncmF5O1xufVxuLmRqX3NhZmFyaSAuZGlqaXRUZXh0Qm94RGlzYWJsZWQgaW5wdXQge1xuXHRjb2xvcjogI0IwQjBCMDsgLyogYmVjYXVzZSBTYWZhcmkgbGlnaHRlbnMgZGlzYWJsZWQgaW5wdXQvdGV4dGFyZWEgbm8gbWF0dGVyIHdoYXQgY29sb3IgeW91IHNwZWNpZnkgKi9cbn1cbi5kal9zYWZhcmkgdGV4dGFyZWEuZGlqaXRUZXh0QXJlYURpc2FibGVkIHtcblx0Y29sb3I6ICMzMzM7IC8qIGJlY2F1c2UgU2FmYXJpIGxpZ2h0ZW5zIGRpc2FibGVkIGlucHV0L3RleHRhcmVhIG5vIG1hdHRlciB3aGF0IGNvbG9yIHlvdSBzcGVjaWZ5ICovXG59XG4uZGpfZ2Vja28gLmRpaml0VGV4dEJveFJlYWRPbmx5IGlucHV0LmRpaml0SW5wdXRGaWVsZCwgLyogZGlzYWJsZSBhcnJvdyBhbmQgdmFsaWRhdGlvbiBwcmVzZW50YXRpb24gaW5wdXRzIGJ1dCBhbGxvdyByZWFsIGlucHV0IGZvciB0ZXh0IHNlbGVjdGlvbiAqL1xuLmRqX2dlY2tvIC5kaWppdFRleHRCb3hEaXNhYmxlZCBpbnB1dCB7XG5cdC1tb3otdXNlci1pbnB1dDogbm9uZTsgLyogcHJldmVudCBmb2N1cyBvZiBkaXNhYmxlZCB0ZXh0Ym94IGJ1dHRvbnMgKi9cbn1cblxuLmRpaml0UGxhY2VIb2xkZXIge1xuXHQvKiBoaW50IHRleHQgdGhhdCBhcHBlYXJzIGluIGEgdGV4dGJveCB1bnRpbCB1c2VyIHN0YXJ0cyB0eXBpbmcgKi9cblx0Y29sb3I6ICNBQUFBQUE7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdCNmaWx0ZXI6IFwiXCI7IC8qIG1ha2UgdGhpcyBzaG93IHVwIGluIElFNiBhZnRlciB0aGUgcmVuZGVyaW5nIG9mIHRoZSB3aWRnZXQgKi9cblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0cG9pbnRlci1ldmVudHM6IG5vbmU7ICAgLyogc28gY3V0L3Bhc3RlIGNvbnRleHQgbWVudSBzaG93cyB1cCB3aGVuIHJpZ2h0IGNsaWNraW5nICovXG59XG5cbi5kaWppdFRpbWVUZXh0Qm94IHtcblx0d2lkdGg6IDhlbTtcbn1cblxuLyogcnVsZXMgZm9yIHdlYmtpdCB0byBkZWFsIHdpdGggZnV6enkgYmx1ZSBmb2N1cyBib3JkZXIgKi9cbi5kaWppdFRleHRCb3ggaW5wdXQ6Zm9jdXMge1xuXHRvdXRsaW5lOiBub25lO1x0LyogYmx1ZSBmdXp6eSBsaW5lIGxvb2tzIHdyb25nIG9uIGNvbWJvYm94IG9yIHNvbWV0aGluZyB3L3ZhbGlkYXRpb24gaWNvbiBzaG93aW5nICovXG59XG4uZGlqaXRUZXh0Qm94Rm9jdXNlZCB7XG5cdG91dGxpbmU6IDVweCAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG59XG5cbi5kaWppdFNlbGVjdCBpbnB1dCxcbi5kaWppdFRleHRCb3ggaW5wdXQge1xuXHRmbG9hdDogbGVmdDsgLyogbmVlZGVkIGJ5IElFIHRvIHJlbW92ZSBzZWNyZXQgbWFyZ2luICovXG59XG4uZGpfaWU2IGlucHV0LmRpaml0VGV4dEJveCxcbi5kal9pZTYgLmRpaml0VGV4dEJveCBpbnB1dCB7XG5cdGZsb2F0OiBub25lO1xufVxuLmRpaml0SW5wdXRJbm5lciB7XG5cdC8qIGZvciB3aGVuIGFuIDxpbnB1dD4gaXMgZW1iZWRkZWQgaW5zaWRlIGFuIGlubGluZS1ibG9jayA8ZGl2PiB3aXRoIGEgc2l6ZSBhbmQgYm9yZGVyICovXG5cdGJvcmRlcjowICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0d2lkdGg6MTAwJSAhaW1wb3J0YW50O1xuXHQvKiBJRSBkaXNsaWtlcyBob3Jpem9udGFsIHR3ZWFraW5nIGNvbWJpbmVkIHdpdGggd2lkdGg6MTAwJSBzbyBwdW5pc2ggZXZlcnlvbmUgZm9yIGNvbnNpc3RlbmN5ICovXG5cdHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0VGV4dEJveCBpbnB1dCB7XG5cdG1hcmdpbjogMCAhaW1wb3J0YW50O1xufVxuLmRpaml0VmFsaWRhdGlvblRleHRCb3hFcnJvciBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kaWppdFNlbGVjdCBpbnB1dCxcbi5kaWppdFRleHRCb3ggaW5wdXQuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0LyogPGlucHV0PiB1c2VkIHRvIGRpc3BsYXkgYXJyb3cgaWNvbi92YWxpZGF0aW9uIGljb24sIG9yIGluIGFycm93IGNoYXJhY3RlciBpbiBoaWdoIGNvbnRyYXN0IG1vZGUuXG5cdCAqIFRoZSBjc3MgYmVsb3cgaXMgYSB0cmljayB0byBoaWRlIHRoZSBjaGFyYWN0ZXIgaW4gbm9uLWhpZ2gtY29udHJhc3QgbW9kZVxuXHQgKi9cblx0dGV4dC1pbmRlbnQ6IC0yZW0gIWltcG9ydGFudDtcblx0ZGlyZWN0aW9uOiBsdHIgIWltcG9ydGFudDtcblx0dGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcblx0I3RleHQtaW5kZW50OiAwICFpbXBvcnRhbnQ7XG5cdCNsZXR0ZXItc3BhY2luZzogLTVlbSAhaW1wb3J0YW50O1xuXHQjdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDtcbn1cbi5kal9pZSAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWUgLmRpaml0VGV4dEJveCBpbnB1dCxcbi5kal9pZSBpbnB1dC5kaWppdFRleHRCb3gge1xuXHRvdmVyZmxvdy15OiB2aXNpYmxlOyAvKiBpbnB1dHMgbmVlZCBoZWxwIGV4cGFuZGluZyB3aGVuIHBhZGRpbmcgaXMgYWRkZWQgb3IgbGluZS1oZWlnaHQgaXMgYWRqdXN0ZWQgKi9cblx0bGluZS1oZWlnaHQ6IG5vcm1hbDsgLyogc3RyaWN0IG1vZGUgKi9cbn1cbi5kaWppdFNlbGVjdCAuZGlqaXRTZWxlY3RMYWJlbCBzcGFuIHtcblx0bGluZS1oZWlnaHQ6IDEwMCU7XG59XG4uZGpfaWUgLmRpaml0U2VsZWN0IC5kaWppdFNlbGVjdExhYmVsIHtcblx0bGluZS1oZWlnaHQ6IG5vcm1hbDtcbn1cbi5kal9pZTYgLmRpaml0U2VsZWN0IC5kaWppdFNlbGVjdExhYmVsLFxuLmRqX2llNyAuZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwsXG4uZGpfaWU4IC5kaWppdFNlbGVjdCAuZGlqaXRTZWxlY3RMYWJlbCxcbi5kal9pZXF1aXJrcyAuZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwsXG4uZGlqaXRTZWxlY3QgdGQsXG4uZGpfaWU2IC5kaWppdFNlbGVjdCBpbnB1dCxcbi5kal9pZXF1aXJrcyAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWU2IC5kaWppdFNlbGVjdCAuZGlqaXRWYWxpZGF0aW9uQ29udGFpbmVyLFxuLmRqX2llNiAuZGlqaXRUZXh0Qm94IGlucHV0LFxuLmRqX2llNiBpbnB1dC5kaWppdFRleHRCb3gsXG4uZGpfaWVxdWlya3MgLmRpaml0VGV4dEJveCBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kal9pZXF1aXJrcyAuZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0QXJyb3dCdXR0b25Jbm5lcixcbi5kal9pZXF1aXJrcyAuZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0U3Bpbm5lckJ1dHRvbklubmVyLFxuLmRqX2llcXVpcmtzIC5kaWppdFRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRqX2llcXVpcmtzIGlucHV0LmRpaml0VGV4dEJveCB7XG5cdGxpbmUtaGVpZ2h0OiAxMDAlOyAvKiBJRTcgcHJvYmxlbSB3aGVyZSB0aGUgaWNvbiBpcyB2ZXJ0aWNhbGx5IHdheSB0b28gbG93IHcvbyB0aGlzICovXG59XG4uZGpfYTExeSBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kal9hMTF5IGlucHV0LmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdC8qIChpbiBoaWdoIGNvbnRyYXN0IG1vZGUpIHJldmVydCBydWxlcyBmcm9tIGFib3ZlIHNvIGNoYXJhY3RlciBkaXNwbGF5cyAqL1xuXHR0ZXh0LWluZGVudDogMCAhaW1wb3J0YW50O1xuXHR3aWR0aDogMWVtICFpbXBvcnRhbnQ7XG5cdCN0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG5cdGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xufVxuLmRpaml0VmFsaWRhdGlvblRleHRCb3hFcnJvciAuZGlqaXRWYWxpZGF0aW9uQ29udGFpbmVyIHtcblx0ZGlzcGxheTogaW5saW5lO1xuXHRjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi8qIENvbWJvQm94ICYgU3Bpbm5lciAqL1xuXG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGlqaXRDb21ib0JveCAuZGlqaXRBcnJvd0J1dHRvbkNvbnRhaW5lciB7XG5cdC8qIGRpdmlkaW5nIGxpbmUgYmV0d2VlbiBpbnB1dCBhcmVhIGFuZCB1cC9kb3duIGJ1dHRvbihzKSBmb3IgQ29tYm9Cb3ggYW5kIFNwaW5uZXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwIDAgMCAxcHggIWltcG9ydGFudDsgLyogIWltcG9ydGFudCBuZWVkZWQgZHVlIHRvIHdheXdhcmQgXCIudGhlbWUgLmRpaml0QnV0dG9uTm9kZVwiIHJ1bGVzICovXG59XG4uZGpfYTExeSAuZGlqaXRTZWxlY3QgLmRpaml0QXJyb3dCdXR0b25Db250YWluZXIsXG4uZGlqaXRUb29sYmFyIC5kaWppdENvbWJvQm94IC5kaWppdEFycm93QnV0dG9uQ29udGFpbmVyIHtcblx0Lyogb3ZlcnJpZGVzIGFib3ZlIHJ1bGUgcGx1cyBtaXJyb3ItaW1hZ2UgcnVsZSBpbiBkaWppdF9ydGwuY3NzIHRvIGhhdmUgbm8gZGl2aWRlciB3aGVuIENvbWJvQm94IGluIFRvb2xiYXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdENvbWJvQm94TWVudSB7XG5cdC8qIERyb3AgZG93biBtZW51IGlzIGltcGxlbWVudGVkIGFzIDx1bD4gPGxpLz4gPGxpLz4gLi4uIGJ1dCB3ZSBkb24ndCB3YW50IGNpcmNsZXMgYmVmb3JlIGVhY2ggaXRlbSAqL1xuXHRsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QnV0dG9uTm9kZSB7XG5cdC8qIGRpdmlkaW5nIGxpbmUgYmV0d2VlbiBpbnB1dCBhcmVhIGFuZCB1cC9kb3duIGJ1dHRvbihzKSBmb3IgQ29tYm9Cb3ggYW5kIFNwaW5uZXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwO1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdFNwaW5uZXIgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRCdXR0b25Ob2RlIHtcblx0Y2xlYXI6IGJvdGg7IC8qIElFIHdvcmthcm91bmQgKi9cbn1cblxuLmRqX2llIC5kaWppdFRvb2xiYXIgLmRpaml0Q29tYm9Cb3gge1xuXHQvKiBtYWtlIGNvbWJvYm94IGJ1dHRvbnMgYWxpZ24gcHJvcGVybHkgd2l0aCBvdGhlciBidXR0b25zIGluIGEgdG9vbGJhciAqL1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4vKiBTcGlubmVyICovXG5cbi5kaWppdFRleHRCb3ggLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciB7XG5cdHdpZHRoOiAxZW07XG5cdHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uSW5uZXIge1xuXHR3aWR0aDoxZW07XG5cdHZpc2liaWxpdHk6aGlkZGVuICFpbXBvcnRhbnQ7IC8qIGp1c3QgYSBzaXppbmcgZWxlbWVudCAqL1xuXHRvdmVyZmxvdy14OmhpZGRlbjtcbn1cbi5kaWppdENvbWJvQm94IC5kaWppdEJ1dHRvbk5vZGUsXG4uZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItd2lkdGg6IDA7XG59XG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItd2lkdGg6IDBweCAhaW1wb3J0YW50O1xuXHRib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRUZXh0Qm94IC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIGlucHV0IHtcblx0d2lkdGg6IDFlbSAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0bWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsgLyogc2hvdWxkIGF1dG8tY2VudGVyICovXG59XG4uZGpfaWUgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRwYWRkaW5nLWxlZnQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwLjNlbSAhaW1wb3J0YW50O1xuXHRtYXJnaW4tcmlnaHQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdHdpZHRoOiAxLjRlbSAhaW1wb3J0YW50O1xufVxuLmRqX2llNyAuZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIgLmRpaml0SW5wdXRGaWVsZCB7XG5cdHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OyAvKiBtYW51YWxseSBjZW50ZXIgSU5QVVQ6IGNoYXJhY3RlciBpcyAuNWVtIGFuZCB0b3RhbCB3aWR0aCA9IDFlbSAqL1xuXHRwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG5cdHdpZHRoOiAxZW0gIWltcG9ydGFudDtcbn1cbi5kal9pZTYgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRtYXJnaW4tbGVmdDogMC4xZW0gIWltcG9ydGFudDtcblx0bWFyZ2luLXJpZ2h0OiAwLjFlbSAhaW1wb3J0YW50O1xuXHR3aWR0aDogMWVtICFpbXBvcnRhbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xuXHRtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcblx0d2lkdGg6IDJlbSAhaW1wb3J0YW50O1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEFycm93QnV0dG9uIHtcblx0Lyogbm90ZTogLmRpaml0SW5wdXRMYXlvdXRDb250YWluZXIgbWFrZXMgdGhpcyBydWxlIG92ZXJyaWRlIC5kaWppdEFycm93QnV0dG9uIHNldHRpbmdzXG5cdCAqIGZvciBkaWppdC5mb3JtLkJ1dHRvblxuXHQgKi9cblx0cGFkZGluZzogMDtcblx0cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG5cdHJpZ2h0OiAwO1xuXHRmbG9hdDogbm9uZTtcblx0aGVpZ2h0OiA1MCU7XG5cdHdpZHRoOiAxMDAlO1xuXHRib3R0b206IGF1dG87XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiBhdXRvO1xufVxuLmRqX2llcXVpcmtzIC5kaWppdFNwaW5uZXIgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdHdpZHRoOiBhdXRvO1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0RG93bkFycm93QnV0dG9uIHtcblx0dG9wOiA1MCU7XG5cdGJvcmRlci10b3Atd2lkdGg6IDFweCAhaW1wb3J0YW50O1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdFVwQXJyb3dCdXR0b24ge1xuXHQjYm90dG9tOiA1MCU7XHQvKiBvdGhlcndpc2UgKG9uIHNvbWUgbWFjaGluZXMpIHRvcCBhcnJvdyBpY29uIHRvbyBjbG9zZSB0byBzcGxpdHRlciBib3JkZXIgKElFNi83KSAqL1xuXHR0b3A6IDA7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHRtYXJnaW46IGF1dG87XG5cdG92ZXJmbG93LXg6IGhpZGRlbjtcblx0aGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0aGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIgLmRpaml0SW5wdXRGaWVsZCB7XG5cdC1tb3otdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHQtbW96LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciB0b3A7XG5cdC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHQtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciB0b3A7XG5cdC1vLXRyYW5zZm9ybTogc2NhbGUoMC41KTtcblx0LW8tdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIHRvcDtcblx0dHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHR0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDtcblx0cGFkZGluZy10b3A6IDA7XG5cdHBhZGRpbmctYm90dG9tOiAwO1xuXHRwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcblx0cGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xuXHR3aWR0aDogMTAwJTtcblx0dmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLmRqX2llIC5kaWppdFNwaW5uZXIgLmRpaml0QXJyb3dCdXR0b25Jbm5lciAuZGlqaXRJbnB1dEZpZWxkIHtcblx0em9vbTogNTAlOyAvKiBlbXVsYXRlIHRyYW5zZm9ybTogc2NhbGUoMC41KSAqL1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QXJyb3dCdXR0b24ge1xuXHR3aWR0aDogMTAwJTtcbn1cbi5kal9pZXF1aXJrcyAuZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QXJyb3dCdXR0b24ge1xuXHR3aWR0aDogMWVtOyAvKiBtYXRjaGVzIC5kal9hMTF5IC5kaWppdFRleHRCb3ggLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciBydWxlIC0gMTAwJSBpcyB0aGUgd2hvbGUgc2NyZWVuIHdpZHRoIGluIHF1aXJrcyAqL1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHR2ZXJ0aWNhbC1hbGlnbjp0b3A7XG5cdHZpc2liaWxpdHk6IHZpc2libGU7XG59XG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIHtcblx0d2lkdGg6IDFlbTtcbn1cblxuLyoqKipcblx0XHRkaWppdC5mb3JtLkNoZWNrQm94XG4gXHQgJlxuICBcdFx0ZGlqaXQuZm9ybS5SYWRpb0J1dHRvblxuICoqKiovXG5cbi5kaWppdENoZWNrQm94LFxuLmRpaml0UmFkaW8sXG4uZGlqaXRDaGVja0JveElucHV0IHtcblx0cGFkZGluZzogMDtcblx0Ym9yZGVyOiAwO1xuXHR3aWR0aDogMTZweDtcblx0aGVpZ2h0OiAxNnB4O1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciBjZW50ZXI7XG5cdGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRpaml0Q2hlY2tCb3ggaW5wdXQsXG4uZGlqaXRSYWRpbyBpbnB1dCB7XG5cdG1hcmdpbjogMDtcblx0cGFkZGluZzogMDtcblx0ZGlzcGxheTogYmxvY2s7XG59XG5cbi5kaWppdENoZWNrQm94SW5wdXQge1xuXHQvKiBwbGFjZSB0aGUgYWN0dWFsIGlucHV0IG9uIHRvcCwgYnV0IGludmlzaWJsZSAqL1xuXHRvcGFjaXR5OiAwO1xufVxuXG4uZGpfaWUgLmRpaml0Q2hlY2tCb3hJbnB1dCB7XG5cdGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTtcbn1cblxuLmRqX2ExMXkgLmRpaml0Q2hlY2tCb3gsXG4uZGpfYTExeSAuZGlqaXRSYWRpbyB7XG5cdC8qIGluIGExMXkgbW9kZSB3ZSBkaXNwbGF5IHRoZSBuYXRpdmUgY2hlY2tib3ggKG5vdCB0aGUgaWNvbiksIHNvIGRvbid0IHJlc3RyaWN0IHRoZSBzaXplICovXG5cdHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG5cdGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0Q2hlY2tCb3hJbnB1dCB7XG5cdG9wYWNpdHk6IDE7XG5cdGZpbHRlcjogbm9uZTtcblx0d2lkdGg6IGF1dG87XG5cdGhlaWdodDogYXV0bztcbn1cblxuLmRqX2ExMXkgLmRpaml0Rm9jdXNlZExhYmVsIHtcblx0LyogZm9yIGNoZWNrYm94ZXMgb3IgcmFkaW8gYnV0dG9ucyBpbiBoaWdoIGNvbnRyYXN0IG1vZGUsIHVzZSBib3JkZXIgcmF0aGVyIHRoYW4gb3V0bGluZSB0byBpbmRpY2F0ZSBmb2N1cyAob3V0bGluZSBkb2VzIG5vdCB3b3JrIGluIEZGKSovXG5cdGJvcmRlcjogMXB4IGRvdHRlZDtcblx0b3V0bGluZTogMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi8qKioqXG5cdFx0ZGlqaXQuUHJvZ3Jlc3NCYXJcbiAqKioqL1xuXG4uZGlqaXRQcm9ncmVzc0JhciB7XG4gICAgei1pbmRleDogMDsgLyogc28gei1pbmRleCBzZXR0aW5ncyBiZWxvdyBoYXZlIG5vIGVmZmVjdCBvdXRzaWRlIG9mIHRoZSBQcm9ncmVzc0JhciAqL1xufVxuLmRpaml0UHJvZ3Jlc3NCYXJFbXB0eSB7XG5cdC8qIG91dGVyIGNvbnRhaW5lciBhbmQgYmFja2dyb3VuZCBvZiB0aGUgYmFyIHRoYXQncyBub3QgZmluaXNoZWQgeWV0Ki9cblx0cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO1xuXHRib3JkZXI6MXB4IHNvbGlkIGJsYWNrOyBcdC8qIGExMXk6IGJvcmRlciBuZWNlc3NhcnkgZm9yIGhpZ2gtY29udHJhc3QgbW9kZSAqL1xuXHR6LWluZGV4OjA7XHRcdFx0LyogZXN0YWJsaXNoIGEgc3RhY2tpbmcgY29udGV4dCBmb3IgdGhpcyBwcm9ncmVzcyBiYXIgKi9cbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJGdWxsIHtcblx0Lyogb3V0ZXIgY29udGFpbmVyIGZvciBiYWNrZ3JvdW5kIG9mIGJhciB0aGF0IGlzIGZpbmlzaGVkICovXG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHRvdmVyZmxvdzpoaWRkZW47XG5cdHotaW5kZXg6LTE7XG5cdHRvcDowO1xuXHR3aWR0aDoxMDAlO1xufVxuLmRqX2llNiAuZGlqaXRQcm9ncmVzc0JhckZ1bGwge1xuXHRoZWlnaHQ6MS42ZW07XG59XG5cbi5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGlubmVyIGNvbnRhaW5lciBmb3IgZmluaXNoZWQgcG9ydGlvbiAqL1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHR0b3A6MDtcblx0bGVmdDowO1xuXHRib3R0b206MDtcblx0cmlnaHQ6MDtcblx0bWFyZ2luOjA7XG5cdHBhZGRpbmc6MDtcblx0d2lkdGg6IDEwMCU7ICAgIC8qIG5lZWRlZCBmb3IgSUUvcXVpcmtzICovXG5cdGhlaWdodDphdXRvO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiNhYWE7XG5cdGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7XG59XG5cbi5kal9hMTF5IC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGExMXk6ICBUaGUgYm9yZGVyIHByb3ZpZGVzIHZpc2liaWxpdHkgaW4gaGlnaC1jb250cmFzdCBtb2RlICovXG5cdGJvcmRlci13aWR0aDoycHg7XG5cdGJvcmRlci1zdHlsZTpzb2xpZDtcblx0YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4uZGpfaWU2IC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIHdpZHRoOmF1dG8gd29ya3MgaW4gSUU2IHdpdGggcG9zaXRpb246c3RhdGljIGJ1dCBub3QgcG9zaXRpb246YWJzb2x1dGUgKi9cblx0cG9zaXRpb246c3RhdGljO1xuXHQvKiBoZWlnaHQ6YXV0byBvciAxMDAlIGRvZXMgbm90IHdvcmsgaW4gSUU2ICovXG5cdGhlaWdodDoxLjZlbTtcbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJJbmRldGVybWluYXRlIC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGFuaW1hdGVkIGdpZiBmb3IgJ2luZGV0ZXJtaW5hdGUnIG1vZGUgKi9cbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJJbmRldGVybWluYXRlSGlnaENvbnRyYXN0SW1hZ2Uge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi5kal9hMTF5IC5kaWppdFByb2dyZXNzQmFySW5kZXRlcm1pbmF0ZSAuZGlqaXRQcm9ncmVzc0JhckluZGV0ZXJtaW5hdGVIaWdoQ29udHJhc3RJbWFnZSB7XG5cdGRpc3BsYXk6YmxvY2s7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHR0b3A6MDtcblx0Ym90dG9tOjA7XG5cdG1hcmdpbjowO1xuXHRwYWRkaW5nOjA7XG5cdHdpZHRoOjEwMCU7XG5cdGhlaWdodDphdXRvO1xufVxuXG4uZGlqaXRQcm9ncmVzc0JhckxhYmVsIHtcblx0ZGlzcGxheTpibG9jaztcblx0cG9zaXRpb246c3RhdGljO1xuXHR3aWR0aDoxMDAlO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4vKioqKlxuXHRcdGRpaml0LlRvb2x0aXBcbiAqKioqL1xuXG4uZGlqaXRUb29sdGlwIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiAyMDAwO1xuXHRkaXNwbGF5OiBibG9jaztcblx0LyogbWFrZSB2aXNpYmxlIGJ1dCBvZmYgc2NyZWVuICovXG5cdGxlZnQ6IDA7XG5cdHRvcDogLTEwMDAwcHg7XG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4uZGlqaXRUb29sdGlwQ29udGFpbmVyIHtcblx0Ym9yZGVyOiBzb2xpZCBibGFjayAycHg7XG5cdGJhY2tncm91bmQ6ICNiOGI1YjU7XG5cdGNvbG9yOiBibGFjaztcblx0Zm9udC1zaXplOiBzbWFsbDtcbn1cblxuLmRpaml0VG9vbHRpcEZvY3VzTm9kZSB7XG5cdHBhZGRpbmc6IDJweCAycHggMnB4IDJweDtcbn1cblxuLmRpaml0VG9vbHRpcENvbm5lY3RvciB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbi5kal9hMTF5IC5kaWppdFRvb2x0aXBDb25uZWN0b3Ige1xuXHRkaXNwbGF5OiBub25lO1x0Lyogd29uJ3Qgc2hvdyBiL2MgaXQncyBiYWNrZ3JvdW5kLWltYWdlOyBoaWRlIHRvIGF2b2lkIGJvcmRlciBnYXAgKi9cbn1cblxuLmRpaml0VG9vbHRpcERhdGEge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi8qIExheW91dCB3aWRnZXRzLiBUaGlzIGlzIGVzc2VudGlhbCBDU1MgdG8gbWFrZSBsYXlvdXQgd29yayAoaXQgaXNuJ3QgXCJzdHlsaW5nXCIgQ1NTKVxuICAgbWFrZSBzdXJlIHRoYXQgdGhlIHBvc2l0aW9uOmFic29sdXRlIGluIGRpaml0QWxpZ24qIG92ZXJyaWRlcyBvdGhlciBjbGFzc2VzICovXG5cbi5kaWppdExheW91dENvbnRhaW5lciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5kaWppdEFsaWduVG9wLFxuLmRpaml0QWxpZ25Cb3R0b20sXG4uZGlqaXRBbGlnbkxlZnQsXG4uZGlqaXRBbGlnblJpZ2h0IHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5ib2R5IC5kaWppdEFsaWduQ2xpZW50IHsgcG9zaXRpb246IGFic29sdXRlOyB9XG5cbi8qXG4gKiBCb3JkZXJDb250YWluZXJcbiAqXG4gKiAuZGlqaXRCb3JkZXJDb250YWluZXIgaXMgYSBzdHlsaXplZCBsYXlvdXQgd2hlcmUgcGFuZXMgaGF2ZSBib3JkZXIgYW5kIG1hcmdpbi5cbiAqIC5kaWppdEJvcmRlckNvbnRhaW5lck5vR3V0dGVyIGlzIGEgcmF3IGxheW91dC5cbiAqL1xuLmRpaml0Qm9yZGVyQ29udGFpbmVyLCAuZGlqaXRCb3JkZXJDb250YWluZXJOb0d1dHRlciB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuICAgIHotaW5kZXg6IDA7IC8qIHNvIHotaW5kZXggc2V0dGluZ3MgYmVsb3cgaGF2ZSBubyBlZmZlY3Qgb3V0c2lkZSBvZiB0aGUgQm9yZGVyQ29udGFpbmVyICovXG59XG5cbi5kaWppdEJvcmRlckNvbnRhaW5lclBhbmUsXG4uZGlqaXRCb3JkZXJDb250YWluZXJOb0d1dHRlclBhbmUge1xuXHRwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcdC8qICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgcG9zaXRpb246cmVsYXRpdmUgaW4gZGlqaXRUYWJDb250YWluZXIgZXRjLiAqL1xuXHR6LWluZGV4OiAyO1x0XHQvKiBhYm92ZSB0aGUgc3BsaXR0ZXJzIHNvIHRoYXQgb2ZmLWJ5LW9uZSBicm93c2VyIGVycm9ycyBkb24ndCBjb3ZlciB1cCBib3JkZXIgb2YgcGFuZSAqL1xufVxuXG4uZGlqaXRCb3JkZXJDb250YWluZXIgPiAuZGlqaXRUZXh0QXJlYSB7XG5cdC8qIE9uIFNhZmFyaSwgZm9yIFNpbXBsZVRleHRBcmVhIGluc2lkZSBhIEJvcmRlckNvbnRhaW5lcixcblx0XHRkb24ndCB3YW50IHRvIGRpc3BsYXkgdGhlIGdyaXAgdG8gcmVzaXplICovXG5cdHJlc2l6ZTogbm9uZTtcbn1cblxuLmRpaml0R3V0dGVyIHtcblx0LyogZ3V0dGVyIGlzIGp1c3QgYSBwbGFjZSBob2xkZXIgZm9yIGVtcHR5IHNwYWNlIGJldHdlZW4gcGFuZXMgaW4gQm9yZGVyQ29udGFpbmVyICovXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0Zm9udC1zaXplOiAxcHg7XHRcdC8qIG5lZWRlZCBieSBJRTYgZXZlbiB0aG91Z2ggZGl2IGlzIGVtcHR5LCBvdGhlcndpc2UgZ29lcyB0byAxNXB4ICovXG59XG5cbi8qIFNwbGl0Q29udGFpbmVyXG5cblx0J1YnID09IGNvbnRhaW5lciB0aGF0IHNwbGl0cyB2ZXJ0aWNhbGx5ICh1cC9kb3duKVxuXHQnSCcgPSBob3Jpem9udGFsIChsZWZ0L3JpZ2h0KVxuKi9cblxuLmRpaml0U3BsaXR0ZXIge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHotaW5kZXg6IDEwO1x0XHQvKiBhYm92ZSB0aGUgcGFuZXMgc28gdGhhdCBzcGxpdHRlciBmb2N1cyBpcyB2aXNpYmxlIG9uIEZGLCBzZWUgIzc1ODMqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRib3JkZXItY29sb3I6IGdyYXk7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogMDtcbn1cbi5kal9pZSAuZGlqaXRTcGxpdHRlciB7XG5cdHotaW5kZXg6IDE7XHQvKiBiZWhpbmQgdGhlIHBhbmVzIHNvIHRoYXQgcGFuZSBib3JkZXJzIGFyZW4ndCBvYnNjdXJlZCBzZWUgdGVzdF9HdWkuaHRtbC9bMTQzOTJdICovXG59XG5cbi5kaWppdFNwbGl0dGVyQWN0aXZlIHtcblx0ei1pbmRleDogMTEgIWltcG9ydGFudDtcbn1cblxuLmRpaml0U3BsaXR0ZXJDb3ZlciB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHR6LWluZGV4Oi0xO1xuXHR0b3A6MDtcblx0bGVmdDowO1xuXHR3aWR0aDoxMDAlO1xuXHRoZWlnaHQ6MTAwJTtcbn1cblxuLmRpaml0U3BsaXR0ZXJDb3ZlckFjdGl2ZSB7XG5cdHotaW5kZXg6MyAhaW1wb3J0YW50O1xufVxuXG4vKiAjNjk0NTogc3RvcCBtb3VzZSBldmVudHMgKi9cbi5kal9pZSAuZGlqaXRTcGxpdHRlckNvdmVyIHtcblx0YmFja2dyb3VuZDogd2hpdGU7XG5cdG9wYWNpdHk6IDA7XG59XG4uZGpfaWU2IC5kaWppdFNwbGl0dGVyQ292ZXIsXG4uZGpfaWU3IC5kaWppdFNwbGl0dGVyQ292ZXIsXG4uZGpfaWU4IC5kaWppdFNwbGl0dGVyQ292ZXIge1xuXHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7XG59XG5cbi5kaWppdFNwbGl0dGVySCB7XG5cdGhlaWdodDogN3B4O1xuXHRib3JkZXItdG9wOjFweDtcblx0Ym9yZGVyLWJvdHRvbToxcHg7XG5cdGN1cnNvcjogcm93LXJlc2l6ZTtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5kaWppdFNwbGl0dGVyViB7XG5cdHdpZHRoOiA3cHg7XG5cdGJvcmRlci1sZWZ0OjFweDtcblx0Ym9yZGVyLXJpZ2h0OjFweDtcblx0Y3Vyc29yOiBjb2wtcmVzaXplO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0U3BsaXRDb250YWluZXIge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uZGlqaXRTcGxpdFBhbmUge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJILFxuLmRpaml0U3BsaXRDb250YWluZXJTaXplclYge1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0Zm9udC1zaXplOiAxcHg7XG5cdGJhY2tncm91bmQtY29sb3I6IFRocmVlREZhY2U7XG5cdGJvcmRlcjogMXB4IHNvbGlkO1xuXHRib3JkZXItY29sb3I6IFRocmVlREhpZ2hsaWdodCBUaHJlZURTaGFkb3cgVGhyZWVEU2hhZG93IFRocmVlREhpZ2hsaWdodDtcblx0bWFyZ2luOiAwO1xufVxuXG4uZGlqaXRTcGxpdENvbnRhaW5lclNpemVySCAudGh1bWIsIC5kaWppdFNwbGl0dGVyViAuZGlqaXRTcGxpdHRlclRodW1iIHtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0dG9wOjQ5JTtcbn1cblxuLmRpaml0U3BsaXRDb250YWluZXJTaXplclYgLnRodW1iLCAuZGlqaXRTcGxpdHRlckggLmRpaml0U3BsaXR0ZXJUaHVtYiB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHRsZWZ0OjQ5JTtcbn1cblxuLmRpaml0U3BsaXR0ZXJTaGFkb3csXG4uZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplckgsXG4uZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplclYge1xuXHRmb250LXNpemU6IDFweDtcblx0YmFja2dyb3VuZC1jb2xvcjogVGhyZWVEU2hhZG93O1xuXHQtbW96LW9wYWNpdHk6IDAuNTtcblx0b3BhY2l0eTogMC41O1xuXHRmaWx0ZXI6IEFscGhhKE9wYWNpdHk9NTApO1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJILCAuZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplckgge1xuXHRjdXJzb3I6IGNvbC1yZXNpemU7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJWLCAuZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplclYge1xuXHRjdXJzb3I6IHJvdy1yZXNpemU7XG59XG5cbi5kal9hMTF5IC5kaWppdFNwbGl0dGVySCB7XG5cdGJvcmRlci10b3A6MXB4IHNvbGlkICNkM2QzZDMgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2QzZDNkMyAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0U3BsaXR0ZXJWIHtcblx0Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkM2QzZDMgIWltcG9ydGFudDtcblx0Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZDNkM2QzICFpbXBvcnRhbnQ7XG59XG5cbi8qIENvbnRlbnRQYW5lICovXG5cbi5kaWppdENvbnRlbnRQYW5lIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG92ZXJmbG93OiBhdXRvO1x0LyogaWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIChvciBvdmVyZmxvdzpoaWRkZW4pLCB0aGVuIFdpZGdldC5yZXNpemVUbygpIGRvZXNuJ3QgbWFrZSBzZW5zZSBmb3IgQ29udGVudFBhbmUgKi9cblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG4uZGlqaXRDb250ZW50UGFuZVNpbmdsZUNoaWxkIHtcblx0Lypcblx0ICogaWYgdGhlIENvbnRlbnRQYW5lIGhvbGRzIGEgc2luZ2xlIGxheW91dCB3aWRnZXQgY2hpbGQgd2hpY2ggaXMgYmVpbmcgc2l6ZWQgdG8gbWF0Y2ggdGhlIGNvbnRlbnQgcGFuZSxcblx0ICogdGhlbiB0aGUgQ29udGVudFBhbmUgc2hvdWxkIG5ldmVyIGdldCBhIHNjcm9sbGJhciAoYnV0IGl0IGRvZXMgZHVlIHRvIGJyb3dzZXIgYnVncywgc2VlICM5NDQ5XG5cdCAqL1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZGlqaXRDb250ZW50UGFuZUxvYWRpbmcgLmRpaml0SWNvbkxvYWRpbmcsXG4uZGlqaXRDb250ZW50UGFuZUVycm9yIC5kaWppdEljb25FcnJvciB7XG5cdG1hcmdpbi1yaWdodDogOXB4O1xufVxuXG4vKiBUaXRsZVBhbmUgYW5kIEZpZWxkc2V0ICovXG5cbi5kaWppdFRpdGxlUGFuZSB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuLmRpaml0RmllbGRzZXQge1xuXHRib3JkZXI6IDFweCBzb2xpZCBncmF5O1xufVxuLmRpaml0VGl0bGVQYW5lVGl0bGUsIC5kaWppdEZpZWxkc2V0VGl0bGUge1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uZGlqaXRUaXRsZVBhbmVUaXRsZUZpeGVkT3BlbiwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZENsb3NlZCxcbi5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZE9wZW4sIC5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZENsb3NlZCB7XG5cdC8qIFRpdGxlUGFuZSBvciBGaWVsZHNldCB0aGF0IGNhbm5vdCBiZSB0b2dnbGVkICovXG5cdGN1cnNvcjogZGVmYXVsdDtcbn1cbi5kaWppdFRpdGxlUGFuZVRpdGxlICoge1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZUlubmVyLCAuZGlqaXRGaWVsZHNldCAuZGlqaXRBcnJvd05vZGVJbm5lciB7XG5cdC8qIG5vcm1hbGx5LCBoaWRlIGFycm93IHRleHQgaW4gZmF2b3Igb2YgaWNvbiAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRqX2ExMXkgLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZUlubmVyLCAuZGpfYTExeSAuZGlqaXRGaWVsZHNldCAuZGlqaXRBcnJvd05vZGVJbm5lciB7XG5cdC8qIC4uLiBleGNlcHQgaW4gYTExeSBtb2RlLCB0aGVuIHNob3cgdGV4dCBhcnJvdyAqL1xuXHRkaXNwbGF5OiBpbmxpbmU7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XHRcdC8qIGJlY2F1c2UgLSBhbmQgKyBhcmUgZGlmZmVyZW50IHdpZHRocyAqL1xufVxuLmRqX2ExMXkgLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZSwgLmRqX2ExMXkgLmRpaml0RmllbGRzZXQgLmRpaml0QXJyb3dOb2RlIHtcblx0LyogLi4uIGFuZCBoaWRlIGljb24gKFRPRE86IGp1c3QgcG9pbnQgZGlqaXRJY29uIGNsYXNzIG9uIHRoZSBpY29uLCBhbmQgaXQgaGlkZXMgYXV0b21hdGljYWxseSkgKi9cblx0ZGlzcGxheTogbm9uZTtcbn1cbi5kaWppdFRpdGxlUGFuZVRpdGxlRml4ZWRPcGVuIC5kaWppdEFycm93Tm9kZSwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZE9wZW4gLmRpaml0QXJyb3dOb2RlSW5uZXIsXG4uZGlqaXRUaXRsZVBhbmVUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZSwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZENsb3NlZCAuZGlqaXRBcnJvd05vZGVJbm5lcixcbi5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZE9wZW4gLmRpaml0QXJyb3dOb2RlLCAuZGlqaXRGaWVsZHNldFRpdGxlRml4ZWRPcGVuIC5kaWppdEFycm93Tm9kZUlubmVyLFxuLmRpaml0RmllbGRzZXRUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZSwgLmRpaml0RmllbGRzZXRUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZUlubmVyIHtcblx0LyogZG9uJ3Qgc2hvdyB0aGUgb3BlbiBjbG9zZSBpY29uIG9yIHRleHQgYXJyb3c7IGl0IG1ha2VzIHRoZSB1c2VyIHRoaW5rIHRoZSBwYW5lIGlzIGNsb3NhYmxlICovXG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcdC8qICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgYWJvdmUgYTExeSBydWxlcyB0byBzaG93IHRleHQgYXJyb3cgKi9cbn1cblxuLmRqX2llNiAuZGlqaXRUaXRsZVBhbmVDb250ZW50T3V0ZXIsXG4uZGpfaWU2IC5kaWppdFRpdGxlUGFuZSAuZGlqaXRUaXRsZVBhbmVUaXRsZSB7XG5cdC8qIGZvcmNlIGhhc0xheW91dCB0byBlbnN1cmUgYm9yZGVycyBldGMsIHNob3cgdXAgKi9cblx0em9vbTogMTtcbn1cblxuLyogQ29sb3IgUGFsZXR0ZVxuICogU2l6ZXMgZGVzaWduZWQgc28gdGhhdCB0YWJsZSBjZWxsIHBvc2l0aW9ucyBtYXRjaCBpY29ucyBpbiB1bmRlcmx5aW5nIGltYWdlLFxuICogd2hpY2ggYXBwZWFyIGF0IDIweDIwIGludGVydmFscy5cbiAqL1xuXG4uZGlqaXRDb2xvclBhbGV0dGUge1xuXHRib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuXHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUge1xuXHQvKiBUYWJsZSB0aGF0IGhvbGRzIHRoZSBwYWxldHRlIGNlbGxzLCBhbmQgb3ZlcmxheXMgaW1hZ2UgZmlsZSB3aXRoIGNvbG9yIHN3YXRjaGVzLlxuXHQgKiBwYWRkaW5nL21hcmdpbiB0byBhbGlnbiB0YWJsZSB3aXRoIGltYWdlLlxuXHQgKi9cblx0cGFkZGluZzogMnB4IDNweCAzcHggM3B4O1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdG91dGxpbmU6IDA7XG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG59XG4uZGpfaWU2IC5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUsXG4uZGpfaWU3IC5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUsXG4uZGpfaWVxdWlya3MgLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVUYWJsZSB7XG5cdC8qIHVzaW5nIHBhZGRpbmcgYWJvdmUgc28gdGhhdCBmb2N1cyBib3JkZXIgaXNuJ3QgY3V0b2ZmIG9uIG1vei93ZWJraXQsXG5cdCAqIGJ1dCB1c2luZyBtYXJnaW4gb24gSUUgYmVjYXVzZSBwYWRkaW5nIGRvZXNuJ3Qgc2VlbSB0byB3b3JrXG5cdCAqL1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDJweCAzcHggM3B4IDNweDtcbn1cblxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVDZWxsIHtcblx0LyogPHRkPiBpbiB0aGUgPHRhYmxlPiAqL1xuXHRmb250LXNpemU6IDFweDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRiYWNrZ3JvdW5kOiBub25lO1xufVxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVJbWcge1xuXHQvKiBDYWxsZWQgZGlqaXRQYWxldHRlSW1nIGZvciBiYWNrLWNvbXBhdCwgdGhpcyBhY3R1YWxseSB3cmFwcyB0aGUgY29sb3Igc3dhdGNoIHdpdGggYSBib3JkZXIgYW5kIHBhZGRpbmcgKi9cblx0cGFkZGluZzogMXB4O1x0XHQvKiB3aGl0ZSBhcmVhIGJldHdlZW4gZ3JheSBib3JkZXIgYW5kIGNvbG9yIHN3YXRjaCAqL1xuXHRib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuXHRtYXJnaW46IDJweCAxcHg7XG5cdGN1cnNvcjogZGVmYXVsdDtcblx0Zm9udC1zaXplOiAxcHg7XHRcdC8qIHByZXZlbnQgPHNwYW4+IGZyb20gZ2V0dGluZyBiaWdnZXIganVzdCB0byBob2xkIGEgY2hhcmFjdGVyICovXG59XG4uZGpfZ2Vja28gLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVJbWcge1xuXHRwYWRkaW5nLWJvdHRvbTogMDtcdC8qIHdvcmthcm91bmQgcmVuZGVyaW5nIGdsaXRjaCBvbiBGRiwgaXQgYWRkcyBhbiBleHRyYSBwaXhlbCBhdCB0aGUgYm90dG9tICovXG59XG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0Q29sb3JQYWxldHRlU3dhdGNoIHtcblx0LyogdGhlIGFjdHVhbCBwYXJ0IHdoZXJlIHRoZSBjb2xvciBpcyAqL1xuXHR3aWR0aDogMTRweDtcblx0aGVpZ2h0OiAxMnB4O1xufVxuLmRpaml0UGFsZXR0ZVRhYmxlIHRkIHtcblx0XHRwYWRkaW5nOiAwO1xufVxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVDZWxsOmhvdmVyIC5kaWppdFBhbGV0dGVJbWcge1xuXHQvKiBob3ZlcmVkIGNvbG9yIHN3YXRjaCAqL1xuXHRib3JkZXI6IDFweCBzb2xpZCAjMDAwO1xufVxuXG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZUNlbGw6YWN0aXZlIC5kaWppdFBhbGV0dGVJbWcsXG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZVRhYmxlIC5kaWppdFBhbGV0dGVDZWxsU2VsZWN0ZWQgLmRpaml0UGFsZXR0ZUltZyB7XG5cdGJvcmRlcjogMnB4IHNvbGlkICMwMDA7XG5cdG1hcmdpbjogMXB4IDA7XHQvKiByZWR1Y2UgbWFyZ2luIHRvIGNvbXBlbnNhdGUgZm9yIGluY3JlYXNlZCBib3JkZXIgKi9cbn1cblxuXG4uZGpfYTExeSAuZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZVRhYmxlLFxuLmRqX2ExMXkgLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVUYWJsZSAqIHtcblx0LyogdGFibGUgY2VsbHMgYXJlIHRvIGNhdGNoIGV2ZW50cywgYnV0IHRoZSBzd2F0Y2hlcyBhcmUgaW4gdGhlIFBhbGV0dGVJbWcgYmVoaW5kIHRoZSB0YWJsZSAqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4vKiBBY2NvcmRpb25Db250YWluZXIgKi9cblxuLmRpaml0QWNjb3JkaW9uQ29udGFpbmVyIHtcblx0Ym9yZGVyOjFweCBzb2xpZCAjYjdiN2I3O1xuXHRib3JkZXItdG9wOjAgIWltcG9ydGFudDtcbn1cbi5kaWppdEFjY29yZGlvblRpdGxlIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0QWNjb3JkaW9uVGl0bGVTZWxlY3RlZCB7XG5cdGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLyogaW1hZ2VzIG9mZiwgaGlnaC1jb250cmFzdCBtb2RlIHN0eWxlcyAqL1xuLmRpaml0QWNjb3JkaW9uVGl0bGUgLmFycm93VGV4dFVwLFxuLmRpaml0QWNjb3JkaW9uVGl0bGUgLmFycm93VGV4dERvd24ge1xuXHRkaXNwbGF5OiBub25lO1xuXHRmb250LXNpemU6IDAuNjVlbTtcblx0Zm9udC13ZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZSAuYXJyb3dUZXh0VXAsXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZVNlbGVjdGVkIC5hcnJvd1RleHREb3duIHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZVNlbGVjdGVkIC5hcnJvd1RleHRVcCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5kaWppdEFjY29yZGlvbkNoaWxkV3JhcHBlciB7XG5cdC8qIHRoaXMgaXMgdGhlIG5vZGUgd2hvc2UgaGVpZ2h0IGlzIGFkanVzdGVkICovXG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIENhbGVuZGFyICovXG5cbi5kaWppdENhbGVuZGFyQ29udGFpbmVyIHRhYmxlIHtcblx0d2lkdGg6IGF1dG87XHQvKiBpbiBjYXNlIHVzZXIgaGFzIHNwZWNpZmllZCBhIHdpZHRoIGZvciB0aGUgVEFCTEUgbm9kZXMsIHNlZSAjMTA1NTMgKi9cblx0Y2xlYXI6IGJvdGg7ICAgIC8qIGNsZWFyIG1hcmdpbiBjcmVhdGVkIGZvciBsZWZ0L3JpZ2h0IG1vbnRoIGFycm93czsgbmVlZGVkIG9uIElFMTAgZm9yIENhbGVuZGFyTGl0ZSAqL1xufVxuLmRpaml0Q2FsZW5kYXJDb250YWluZXIgdGgsIC5kaWppdENhbGVuZGFyQ29udGFpbmVyIHRkIHtcblx0cGFkZGluZzogMDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmRpaml0Q2FsZW5kYXJNb250aENvbnRhaW5lciB7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5kaWppdENhbGVuZGFyRGVjcmVtZW50QXJyb3cge1xuXHRmbG9hdDogbGVmdDtcbn1cbi5kaWppdENhbGVuZGFySW5jcmVtZW50QXJyb3cge1xuXHRmbG9hdDogcmlnaHQ7XG59XG5cbi5kaWppdENhbGVuZGFyWWVhckxhYmVsIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyAgICAvKiBtYWtlIHN1cmUgcHJldmlvdXMsIGN1cnJlbnQsIGFuZCBuZXh0IHllYXIgYXBwZWFyIG9uIHNhbWUgcm93ICovXG59XG5cbi5kaWppdENhbGVuZGFyTmV4dFllYXIge1xuXHRtYXJnaW46MCAwIDAgMC41NWVtO1xufVxuXG4uZGlqaXRDYWxlbmRhclByZXZpb3VzWWVhciB7XG5cdG1hcmdpbjowIDAuNTVlbSAwIDA7XG59XG5cbi5kaWppdENhbGVuZGFySW5jcmVtZW50Q29udHJvbCB7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kaWppdENhbGVuZGFySW5jcmVtZW50Q29udHJvbCxcbi5kaWppdENhbGVuZGFyRGF0ZVRlbXBsYXRlLFxuLmRpaml0Q2FsZW5kYXJNb250aExhYmVsLFxuLmRpaml0Q2FsZW5kYXJQcmV2aW91c1llYXIsXG4uZGlqaXRDYWxlbmRhck5leHRZZWFyIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGlqaXRDYWxlbmRhckRpc2FibGVkRGF0ZSB7XG5cdGNvbG9yOiBncmF5O1xuXHR0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4uZGlqaXRTcGFjZXIge1xuXHQvKiBkb24ndCBkaXNwbGF5IGl0LCBidXQgbWFrZSBpdCBhZmZlY3QgdGhlIHdpZHRoICovXG4gIFx0cG9zaXRpb246IHJlbGF0aXZlO1xuICBcdGhlaWdodDogMXB4O1xuICBcdG92ZXJmbG93OiBoaWRkZW47XG4gIFx0dmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4vKiBTdHlsaW5nIGZvciBtb250aCBkcm9wIGRvd24gbGlzdCAqL1xuXG4uZGlqaXRDYWxlbmRhck1vbnRoTWVudSAuZGlqaXRDYWxlbmRhck1vbnRoTGFiZWwge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcbn1cblxuLyogTWVudSAqL1xuXG4uZGlqaXRNZW51IHtcblx0Ym9yZGVyOjFweCBzb2xpZCBibGFjaztcblx0YmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtcbn1cbi5kaWppdE1lbnVUYWJsZSB7XG5cdGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtcblx0Ym9yZGVyLXdpZHRoOjA7XG5cdGJhY2tncm91bmQtY29sb3I6d2hpdGU7XG59XG5cbi8qIHdvcmthcm91bmQgZm9yIHdlYmtpdCBidWcgIzg0MjcsIHJlbW92ZSB0aGlzIHdoZW4gaXQgaXMgZml4ZWQgdXBzdHJlYW0gKi9cbi5kal93ZWJraXQgLmRpaml0TWVudVRhYmxlIHRkW2NvbHNwYW49XCIyXCJde1xuXHRib3JkZXItcmlnaHQ6aGlkZGVuO1xufVxuXG4uZGlqaXRNZW51SXRlbSB7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdHBhZGRpbmc6LjFlbSAuMmVtO1xuXHRjdXJzb3I6cG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLypcbk5vIG5lZWQgdG8gc2hvdyBhIGZvY3VzIGJvcmRlciBzaW5jZSBpdCdzIG9idmlvdXMgZnJvbSB0aGUgc2hhZGluZywgYW5kIHRoZXJlJ3MgYSAuZGpfYTExeSAuZGlqaXRNZW51SXRlbVNlbGVjdGVkXG5ydWxlIGJlbG93IHRoYXQgaGFuZGxlcyB0aGUgaGlnaCBjb250cmFzdCBjYXNlIHdoZW4gdGhlcmUncyBubyBzaGFkaW5nLlxuSGlkaW5nIHRoZSBmb2N1cyBib3JkZXIgYWxzbyB3b3JrcyBhcm91bmQgd2Via2l0IGJ1ZyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTI1Nzc5LlxuKi9cbi5kaWppdE1lbnVJdGVtOmZvY3VzIHtcblx0b3V0bGluZTogbm9uZVxufVxuXG4uZGlqaXRNZW51UGFzc2l2ZSAuZGlqaXRNZW51SXRlbUhvdmVyLFxuLmRpaml0TWVudUl0ZW1TZWxlY3RlZCB7XG5cdC8qXG5cdCAqIGRpaml0TWVudUl0ZW1Ib3ZlciByZWZlcnMgdG8gYWN0dWFsIG1vdXNlIG92ZXJcblx0ICogZGlqaXRNZW51SXRlbVNlbGVjdGVkIGlzIHVzZWQgYWZ0ZXIgYSBtZW51IGhhcyBiZWVuIFwiYWN0aXZhdGVkXCIgYnlcblx0ICogY2xpY2tpbmcgaXQsIHRhYmJpbmcgaW50byBpdCwgb3IgYmVpbmcgb3BlbmVkIGZyb20gYSBwYXJlbnQgbWVudSxcblx0ICogYW5kIGRlbm90ZXMgdGhhdCB0aGUgbWVudSBpdGVtIGhhcyBmb2N1cyBvciB0aGF0IGZvY3VzIGlzIG9uIGEgY2hpbGRcblx0ICogbWVudVxuXHQgKi9cblx0YmFja2dyb3VuZC1jb2xvcjpibGFjaztcblx0Y29sb3I6d2hpdGU7XG59XG5cbi5kaWppdE1lbnVJdGVtSWNvbiwgLmRpaml0TWVudUV4cGFuZCB7XG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5cbi5kaWppdE1lbnVJdGVtRGlzYWJsZWQgKiB7XG5cdC8qIGZvciBhIGRpc2FibGVkIG1lbnUgaXRlbSwganVzdCBzZXQgaXQgdG8gbW9zdGx5IHRyYW5zcGFyZW50ICovXG5cdG9wYWNpdHk6MC41O1xuXHRjdXJzb3I6ZGVmYXVsdDtcbn1cbi5kal9pZSAuZGpfYTExeSAuZGlqaXRNZW51SXRlbURpc2FibGVkLFxuLmRqX2llIC5kal9hMTF5IC5kaWppdE1lbnVJdGVtRGlzYWJsZWQgKixcbi5kal9pZSAuZGlqaXRNZW51SXRlbURpc2FibGVkICoge1xuXHRjb2xvcjogZ3JheTtcblx0ZmlsdGVyOiBhbHBoYShvcGFjaXR5PTM1KTtcbn1cblxuLmRpaml0TWVudUl0ZW1MYWJlbCB7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kal9hMTF5IC5kaWppdE1lbnVJdGVtU2VsZWN0ZWQge1xuXHRib3JkZXI6IDFweCBkb3R0ZWQgYmxhY2sgIWltcG9ydGFudDtcdC8qIGZvciAyLjAgdXNlIG91dGxpbmUgaW5zdGVhZCwgdG8gcHJldmVudCBqaXR0ZXIgKi9cbn1cblxuLmRqX2ExMXkgLmRpaml0TWVudUl0ZW1TZWxlY3RlZCAuZGlqaXRNZW51SXRlbUxhYmVsIHtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG59XG4uZGpfaWU4IC5kal9hMTF5IC5kaWppdE1lbnVJdGVtTGFiZWwge1xuXHRwb3NpdGlvbjpzdGF0aWM7XG59XG5cbi5kaWppdE1lbnVFeHBhbmRBMTF5IHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbi5kal9hMTF5IC5kaWppdE1lbnVFeHBhbmRBMTF5IHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGlqaXRNZW51U2VwYXJhdG9yIHRkIHtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xufVxuXG4vKiBzZXBhcmF0b3IgY2FuIGJlIHR3byBwaXhlbHMgLS0gc2V0IGJvcmRlciBvZiBlaXRoZXIgb25lIHRvIDAgdG8gaGF2ZSBvbmx5IG9uZSAqL1xuLmRpaml0TWVudVNlcGFyYXRvclRvcCB7XG5cdGhlaWdodDogNTAlO1xuXHRtYXJnaW46IDA7XG5cdG1hcmdpbi10b3A6M3B4O1xuXHRmb250LXNpemU6IDFweDtcbn1cblxuLmRpaml0TWVudVNlcGFyYXRvckJvdHRvbSB7XG5cdGhlaWdodDogNTAlO1xuXHRtYXJnaW46IDA7XG5cdG1hcmdpbi1ib3R0b206M3B4O1xuXHRmb250LXNpemU6IDFweDtcbn1cblxuLyogQ2hlY2tlZE1lbnVJdGVtIGFuZCBSYWRpb01lbnVJdGVtICovXG4uZGlqaXRNZW51SXRlbUljb25DaGFyIHtcblx0ZGlzcGxheTogbm9uZTtcdFx0LyogZG9uJ3QgZGlzcGxheSBleGNlcHQgaW4gaGlnaCBjb250cmFzdCBtb2RlICovXG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcdC8qIGZvciBoaWdoIGNvbnRyYXN0IG1vZGUgd2hlbiBtZW51aXRlbSBpcyB1bmNoZWNrZWQ6IGxlYXZlIHNwYWNlIGZvciB3aGVuIGl0IGlzIGNoZWNrZWQgKi9cbn1cbi5kal9hMTF5IC5kaWppdE1lbnVJdGVtSWNvbkNoYXIge1xuXHRkaXNwbGF5OiBpbmxpbmU7XHQvKiBkaXNwbGF5IGNoYXJhY3RlciBpbiBoaWdoIGNvbnRyYXN0IG1vZGUsIHNpbmNlIGljb24gZG9lc24ndCBzaG93ICovXG59XG4uZGlqaXRDaGVja2VkTWVudUl0ZW1DaGVja2VkIC5kaWppdE1lbnVJdGVtSWNvbkNoYXIsXG4uZGlqaXRSYWRpb01lbnVJdGVtQ2hlY2tlZCAuZGlqaXRNZW51SXRlbUljb25DaGFyIHtcblx0dmlzaWJpbGl0eTogdmlzaWJsZTsgLyogbWVudWl0ZW0gaXMgY2hlY2tlZCAqL1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdE1lbnVCYXIgLmRpaml0TWVudUl0ZW0ge1xuXHQvKiBzbyBib3R0b20gYm9yZGVyIG9mIE1lbnVCYXIgYXBwZWFycyBvbiBJRTcgaW4gaGlnaC1jb250cmFzdCBtb2RlICovXG5cdG1hcmdpbjogMDtcbn1cblxuLyogU3RhY2tDb250YWluZXIgKi9cblxuLmRpaml0U3RhY2tDb250cm9sbGVyIC5kaWppdFRvZ2dsZUJ1dHRvbkNoZWNrZWQgKiB7XG5cdGN1cnNvcjogZGVmYXVsdDtcdC8qIGJlY2F1c2UgcHJlc3NpbmcgaXQgaGFzIG5vIGVmZmVjdCAqL1xufVxuXG4vKioqXG5UYWJDb250YWluZXJcblxuTWFpbiBjbGFzcyBoaWVyYXJjaHk6XG5cbi5kaWppdFRhYkNvbnRhaW5lciAtIHRoZSB3aG9sZSBUYWJDb250YWluZXJcbiAgIC5kaWppdFRhYkNvbnRyb2xsZXIgLyAuZGlqaXRUYWJMaXN0Q29udGFpbmVyLXRvcCAtIHdyYXBwZXIgZm9yIHRhYiBidXR0b25zLCBzY3JvbGwgYnV0dG9uc1xuXHQgLmRpaml0VGFiTGlzdFdyYXBwZXIgLyAuZGlqaXRUYWJDb250YWluZXJUb3BTdHJpcCAtIG91dGVyIHdyYXBwZXIgZm9yIHRhYiBidXR0b25zIChub3JtYWwgd2lkdGgpXG5cdFx0Lm5vd3JhcFRhYlN0cmlwIC8gLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgLSBpbm5lciB3cmFwcGVyIGZvciB0YWIgYnV0dG9ucyAoNTBLIHdpZHRoKVxuICAgLmRpaml0VGFiUGFuZVdyYXBwZXIgLSB3cmFwcGVyIGZvciBjb250ZW50IHBhbmVzLCBoYXMgYWxsIGJvcmRlcnMgZXhjZXB0IHRoZSBvbmUgYmV0d2VlbiBjb250ZW50IGFuZCB0YWJzXG4qKiovXG5cbi5kaWppdFRhYkNvbnRhaW5lciB7XG4gICAgei1pbmRleDogMDsgLyogc28gei1pbmRleCBzZXR0aW5ncyBiZWxvdyBoYXZlIG5vIGVmZmVjdCBvdXRzaWRlIG9mIHRoZSBUYWJDb250YWluZXIgKi9cbiAgICBvdmVyZmxvdzogdmlzaWJsZTsgLyogcHJldmVudCBvZmYtYnktb25lLXBpeGVsIGVycm9ycyBmcm9tIGhpZGluZyBib3R0b20gYm9yZGVyIChvcHBvc2l0ZSB0YWIgbGFiZWxzKSAqL1xufVxuLmRqX2llNiAuZGlqaXRUYWJDb250YWluZXIge1xuICAgIC8qIHdvcmthcm91bmQgSUU2IHByb2JsZW0gd2hlbiB0YWxsIGNvbnRlbnQgb3ZlcmZsb3dzIFRhYkNvbnRhaW5lciwgc2VlIGVkaXRvci90ZXN0X0Z1bGxTY3JlZW4uaHRtbCAqL1xuICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxufVxuLmRpaml0VGFiQ29udGFpbmVyTm9MYXlvdXQge1xuXHR3aWR0aDogMTAwJTtcdC8qIG90aGVyd2lzZSBTY3JvbGxpbmdUYWJDb250cm9sbGVyIGdvZXMgdG8gNTBLIHBpeGVscyB3aWRlICovXG59XG5cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzLFxuLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMsXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMsXG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIHtcbiAgICB6LWluZGV4OiAxO1xuXHRvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OyAgLyogc28gdGFicyBjYW4gY292ZXIgdXAgYm9yZGVyIGFkamFjZW50IHRvIGNvbnRhaW5lciAqL1xufVxuXG4uZGlqaXRUYWJDb250cm9sbGVyIHtcbiAgICB6LWluZGV4OiAxO1xufVxuLmRpaml0VGFiQ29udGFpbmVyQm90dG9tLWNvbnRhaW5lcixcbi5kaWppdFRhYkNvbnRhaW5lclRvcC1jb250YWluZXIsXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LWNvbnRhaW5lcixcbi5kaWppdFRhYkNvbnRhaW5lclJpZ2h0LWNvbnRhaW5lciB7XG5cdHotaW5kZXg6MDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7XG59XG4ubm93cmFwVGFiU3RyaXAge1xuXHR3aWR0aDogNTAwMDBweDtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0OyAgLyoganVzdCBpbiBjYXNlIGFuY2VzdG9yIGhhcyBub24tc3RhbmRhcmQgc2V0dGluZyAqL1xuICAgIHotaW5kZXg6IDE7XG59XG4uZGlqaXRUYWJMaXN0V3JhcHBlciB7XG5cdG92ZXJmbG93OiBoaWRkZW47XG4gICAgei1pbmRleDogMTtcbn1cblxuLmRqX2ExMXkgLnRhYlN0cmlwQnV0dG9uIGltZyB7XG5cdC8qIGhpZGUgdGhlIGljb25zIChvciByYXRoZXIgdGhlIGVtcHR5IHNwYWNlIHdoZXJlIHRoZXkgbm9ybWFsbHkgYXBwZWFyKSBiZWNhdXNlIHRleHQgd2lsbCBhcHBlYXIgaW5zdGVhZCAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJUb3AtdGFicyB7XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjaztcbn1cbi5kaWppdFRhYkNvbnRhaW5lclRvcC1jb250YWluZXIge1xuXHRib3JkZXItdG9wOiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMge1xuXHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBibGFjaztcblx0ZmxvYXQ6IGxlZnQ7ICAgIC8qIG5lZWRlZCBmb3IgSUU3IFJUTCBtb2RlICovXG59XG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LWNvbnRhaW5lciB7XG5cdGJvcmRlci1sZWZ0OiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJCb3R0b20tdGFicyB7XG5cdGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjaztcbn1cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS1jb250YWluZXIge1xuXHRib3JkZXItYm90dG9tOiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIHtcblx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCBibGFjaztcblx0ZmxvYXQ6IGxlZnQ7ICAgIC8qIG5lZWRlZCBmb3IgSUU3IFJUTCBtb2RlICovXG59XG4uZGlqaXRUYWJDb250YWluZXJSaWdodC1jb250YWluZXIge1xuXHRib3JkZXItcmlnaHQ6IDA7XG59XG5cbmRpdi5kaWppdFRhYkRpc2FibGVkLCAuZGpfaWUgZGl2LmRpaml0VGFiRGlzYWJsZWQge1xuXHRjdXJzb3I6IGF1dG87XG59XG5cbi5kaWppdFRhYiB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRjdXJzb3I6cG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcblx0d2hpdGUtc3BhY2U6bm93cmFwO1xuXHR6LWluZGV4OjM7XG59XG4uZGlqaXRUYWIgKiB7XG5cdC8qIG1ha2UgdGFiIGljb25zIGFuZCBjbG9zZSBpY29uIGxpbmUgdXAgdy90ZXh0ICovXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4uZGlqaXRUYWJDaGVja2VkIHtcblx0Y3Vyc29yOiBkZWZhdWx0O1x0LyogYmVjYXVzZSBjbGlja2luZyB3aWxsIGhhdmUgbm8gZWZmZWN0ICovXG59XG5cbi5kaWppdFRhYkNvbnRhaW5lclRvcC10YWJzIC5kaWppdFRhYiB7XG5cdHRvcDogMXB4O1x0LyogdG8gb3ZlcmxhcCBib3JkZXIgb24gLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgKi9cbn1cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzIC5kaWppdFRhYiB7XG5cdHRvcDogLTFweDtcdC8qIHRvIG92ZXJsYXAgYm9yZGVyIG9uIC5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzICovXG59XG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMgLmRpaml0VGFiIHtcblx0bGVmdDogMXB4O1x0LyogdG8gb3ZlcmxhcCBib3JkZXIgb24gLmRpaml0VGFiQ29udGFpbmVyTGVmdC10YWJzICovXG59XG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIC5kaWppdFRhYiB7XG5cdGxlZnQ6IC0xcHg7XHQvKiB0byBvdmVybGFwIGJvcmRlciBvbiAuZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzICovXG59XG5cblxuLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgLmRpaml0VGFiLFxuLmRpaml0VGFiQ29udGFpbmVyQm90dG9tLXRhYnMgLmRpaml0VGFiIHtcblx0LyogSW5saW5lLWJsb2NrICovXG5cdGRpc3BsYXk6aW5saW5lLWJsb2NrO1x0XHRcdC8qIHdlYmtpdCBhbmQgRkYzICovXG5cdCN6b29tOiAxOyAvKiBzZXQgaGFzTGF5b3V0OnRydWUgdG8gbWltaWMgaW5saW5lLWJsb2NrICovXG5cdCNkaXNwbGF5OmlubGluZTsgLyogZG9uJ3QgdXNlIC5kal9pZSBzaW5jZSB0aGF0IGluY3JlYXNlcyB0aGUgcHJpb3JpdHkgKi9cbn1cblxuLnRhYlN0cmlwQnV0dG9uIHtcblx0ei1pbmRleDogMTI7XG59XG5cbi5kaWppdFRhYkJ1dHRvbkRpc2FibGVkIC50YWJTdHJpcEJ1dHRvbiB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cblxuLmRpaml0VGFiQ2xvc2VCdXR0b24ge1xuXHRtYXJnaW4tbGVmdDogMWVtO1xufVxuXG4uZGlqaXRUYWJDbG9zZVRleHQge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi5kaWppdFRhYiAudGFiTGFiZWwge1xuXHQvKiBtYWtlIHN1cmUgdGFicyB3L2Nsb3NlIGJ1dHRvbiBhbmQgdy9vdXQgY2xvc2UgYnV0dG9uIGFyZSBzYW1lIGhlaWdodCwgZXZlbiB3L3NtYWxsICg8MTVweCkgZm9udC5cblx0ICogYXNzdW1lcyA8PTE1cHggaGVpZ2h0IGZvciBjbG9zZSBidXR0b24gaWNvbi5cblx0ICovXG5cdG1pbi1oZWlnaHQ6IDE1cHg7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5kaWppdE5vSWNvbiB7XG5cdC8qIGFwcGxpZWQgdG8gPGltZz4vPHNwYW4+IG5vZGUgd2hlbiB0aGVyZSBpcyBubyBpY29uIHNwZWNpZmllZCAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRqX2llNiAuZGlqaXRUYWIgLmRpaml0Tm9JY29uIHtcblx0LyogYmVjYXVzZSBtaW4taGVpZ2h0IChvbiAudGFiTGFiZWwsIGFib3ZlKSBkb2Vzbid0IHdvcmsgb24gSUU2ICovXG5cdGRpc3BsYXk6IGlubGluZTtcblx0aGVpZ2h0OiAxNXB4O1xuXHR3aWR0aDogMXB4O1xufVxuXG4vKiBpbWFnZXMgb2ZmLCBoaWdoLWNvbnRyYXN0IG1vZGUgc3R5bGVzICovXG5cbi5kal9hMTF5IC5kaWppdFRhYkNsb3NlQnV0dG9uIHtcblx0YmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuXHR3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmRqX2ExMXkgLmRpaml0VGFiQ2xvc2VUZXh0IHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGlqaXRUYWJQYW5lLFxuLmRpaml0U3RhY2tDb250YWluZXItY2hpbGQsXG4uZGlqaXRBY2NvcmRpb25Db250YWluZXItY2hpbGQge1xuXHQvKiBjaGlsZHJlbiBvZiBUYWJDb250YWluZXIsIFN0YWNrQ29udGFpbmVyLCBhbmQgQWNjb3JkaW9uQ29udGFpbmVyIHNob3VsZG4ndCBoYXZlIGJvcmRlcnNcblx0ICogYi9jIGEgYm9yZGVyIGlzIGFscmVhZHkgdGhlcmUgZnJvbSB0aGUgVGFiQ29udGFpbmVyL1N0YWNrQ29udGFpbmVyL0FjY29yZGlvbkNvbnRhaW5lciBpdHNlbGYuXG5cdCAqL1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBJbmxpbmVFZGl0Qm94ICovXG4uZGlqaXRJbmxpbmVFZGl0Qm94RGlzcGxheU1vZGUge1xuXHRib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcdC8qIHNvIGtleWxpbmUgKGJvcmRlcikgb24gaG92ZXIgY2FuIGFwcGVhciB3aXRob3V0IHNjcmVlbiBqdW1wICovXG5cdGN1cnNvcjogdGV4dDtcbn1cblxuLmRqX2ExMXkgLmRpaml0SW5saW5lRWRpdEJveERpc3BsYXlNb2RlLFxuLmRqX2llNiAuZGlqaXRJbmxpbmVFZGl0Qm94RGlzcGxheU1vZGUge1xuXHQvKiBleGNlcHQgdGhhdCBJRTYgZG9lc24ndCBzdXBwb3J0IHRyYW5zcGFyZW50IGJvcmRlcnMsIG5vciBkb2VzIGhpZ2ggY29udHJhc3QgbW9kZSAqL1xuXHRib3JkZXI6IG5vbmU7XG59XG5cbi5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZUhvdmVyLFxuLmRqX2ExMXkgLmRpaml0SW5saW5lRWRpdEJveERpc3BsYXlNb2RlSG92ZXIsXG4uZGpfaWU2IC5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZUhvdmVyIHtcblx0LyogQW4gSW5saW5lRWRpdEJveCBpbiB2aWV3IG1vZGUgKGNsaWNrIHRoaXMgdG8gZWRpdCB0aGUgdGV4dCkgKi9cblx0YmFja2dyb3VuZC1jb2xvcjogI2UyZWJmMjtcblx0Ym9yZGVyOiBzb2xpZCAxcHggYmxhY2s7XG59XG5cbi5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZURpc2FibGVkIHtcblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKiBUcmVlICovXG4uZGlqaXRUcmVlIHtcblx0b3ZlcmZsb3c6IGF1dG87XHQvKiBmb3Igc2Nyb2xsYmFycyB3aGVuIFRyZWUgaGFzIGEgaGVpZ2h0IHNldHRpbmcsIGFuZCB0byBwcmV2ZW50IHdyYXBwaW5nIGFyb3VuZCBmbG9hdCBlbGVtZW50cywgc2VlICMxMTQ5MSAqL1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGlqaXRUcmVlQ29udGFpbmVyIHtcblx0ZmxvYXQ6IGxlZnQ7XHQvKiBmb3IgY29ycmVjdCBoaWdobGlnaHRpbmcgZHVyaW5nIGhvcml6b250YWwgc2Nyb2xsLCBzZWUgIzE2MTMyICovXG59XG5cbi5kaWppdFRyZWVJbmRlbnQge1xuXHQvKiBhbW91bnQgdG8gaW5kZW50IGVhY2ggdHJlZSBub2RlIChyZWxhdGl2ZSB0byBwYXJlbnQgbm9kZSkgKi9cblx0d2lkdGg6IDE5cHg7XG59XG5cbi5kaWppdFRyZWVSb3csIC5kaWppdFRyZWVDb250ZW50IHtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmRqX2llIC5kaWppdFRyZWVMYWJlbDpmb2N1cyB7XG5cdC8qIHdvcmthcm91bmQgSUU5IGJlaGF2aW9yIHdoZXJlIGRvd24gYXJyb3dpbmcgdGhyb3VnaCBUcmVlTm9kZXMgZG9lc24ndCBzaG93IGZvY3VzIG91dGxpbmUgKi9cblx0b3V0bGluZTogMXB4IGRvdHRlZCBibGFjaztcbn1cblxuLmRpaml0VHJlZVJvdyBpbWcge1xuXHQvKiBtYWtlIHRoZSBleHBhbmRvIGFuZCBmb2xkZXIgaWNvbnMgbGluZSB1cCB3aXRoIHRoZSBsYWJlbCAqL1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uZGlqaXRUcmVlQ29udGVudCB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4uZGlqaXRFeHBhbmRvVGV4dCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5kal9hMTF5IC5kaWppdEV4cGFuZG9UZXh0IHtcblx0ZGlzcGxheTogaW5saW5lO1xuXHRwYWRkaW5nLWxlZnQ6IDEwcHg7XG5cdHBhZGRpbmctcmlnaHQ6IDEwcHg7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogdGhpbjtcblx0Y3Vyc29yOiBwb2ludGVyO1xufVxuXG4uZGlqaXRUcmVlTGFiZWwge1xuXHRtYXJnaW46IDAgNHB4O1xufVxuXG4vKiBEaWFsb2cgKi9cblxuLmRpaml0RGlhbG9nIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiA5OTk7XG5cdG92ZXJmbG93OiBoaWRkZW47XHQvKiBvdmVycmlkZSBvdmVyZmxvdzogYXV0bzsgZnJvbSBDb250ZW50UGFuZSB0byBtYWtlIGRyYWdnaW5nIHNtb290aGVyICovXG59XG5cbi5kaWppdERpYWxvZ1RpdGxlQmFyIHtcblx0Y3Vyc29yOiBtb3ZlO1xufVxuLmRpaml0RGlhbG9nRml4ZWQgLmRpaml0RGlhbG9nVGl0bGVCYXIge1xuXHRjdXJzb3I6ZGVmYXVsdDtcbn1cbi5kaWppdERpYWxvZ0Nsb3NlSWNvbiB7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5kaWppdERpYWxvZ1BhbmVDb250ZW50IHtcblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuLmRpaml0RGlhbG9nVW5kZXJsYXlXcmFwcGVyIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRsZWZ0OiAwO1xuXHR0b3A6IDA7XG5cdHotaW5kZXg6IDk5ODtcblx0ZGlzcGxheTogbm9uZTtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn1cblxuLmRpaml0RGlhbG9nVW5kZXJsYXkge1xuXHRiYWNrZ3JvdW5kOiAjZWVlO1xuXHRvcGFjaXR5OiAwLjU7XG59XG5cbi5kal9pZSAuZGlqaXREaWFsb2dVbmRlcmxheSB7XG5cdGZpbHRlcjogYWxwaGEob3BhY2l0eT01MCk7XG59XG5cbi8qIGltYWdlcyBvZmYsIGhpZ2gtY29udHJhc3QgbW9kZSBzdHlsZXMgKi9cbi5kal9hMTF5IC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGpfYTExeSAuZGlqaXREaWFsb2cge1xuXHRvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdERpYWxvZyAuY2xvc2VUZXh0IHtcblx0ZGlzcGxheTpub25lO1xuXHQvKiBmb3IgdGhlIG9uaG92ZXIgYm9yZGVyIGluIGhpZ2ggY29udHJhc3Qgb24gSUU6ICovXG5cdHBvc2l0aW9uOmFic29sdXRlO1xufVxuXG4uZGpfYTExeSAuZGlqaXREaWFsb2cgLmNsb3NlVGV4dCB7XG5cdGRpc3BsYXk6aW5saW5lO1xufVxuXG4vKiBTbGlkZXIgKi9cblxuLmRpaml0U2xpZGVyTW92ZWFibGUge1xuXHR6LWluZGV4Ojk5O1xuXHRwb3NpdGlvbjphYnNvbHV0ZSAhaW1wb3J0YW50O1xuXHRkaXNwbGF5OmJsb2NrO1xuXHR2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG59XG5cbi5kaWppdFNsaWRlck1vdmVhYmxlSCB7XG5cdHJpZ2h0OjA7XG59XG4uZGlqaXRTbGlkZXJNb3ZlYWJsZVYge1xuXHRyaWdodDo1MCU7XG59XG5cbi5kal9hMTF5IGRpdi5kaWppdFNsaWRlckltYWdlSGFuZGxlLFxuLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRtYXJnaW46MDtcblx0cGFkZGluZzowO1xuXHRwb3NpdGlvbjpyZWxhdGl2ZSAhaW1wb3J0YW50O1xuXHRib3JkZXI6OHB4IHNvbGlkIGdyYXk7XG5cdHdpZHRoOjA7XG5cdGhlaWdodDowO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRqX2ExMXkgLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRmb250LXNpemU6IDA7XG59XG4uZGpfaWU3IC5kaWppdFNsaWRlckltYWdlSGFuZGxlIHtcblx0b3ZlcmZsb3c6IGhpZGRlbjsgLyogSUU3IHdvcmthcm91bmQgdG8gbWFrZSBzbGlkZXIgaGFuZGxlIFZJU0lCTEUgaW4gbm9uLWExMXkgbW9kZSAqL1xufVxuLmRqX2llNyAuZGpfYTExeSAuZGlqaXRTbGlkZXJJbWFnZUhhbmRsZSB7XG5cdG92ZXJmbG93OiB2aXNpYmxlOyAvKiBJRTcgd29ya2Fyb3VuZCB0byBtYWtlIHNsaWRlciBoYW5kbGUgVklTSUJMRSBpbiBhMTF5IG1vZGUgKi9cbn1cbi5kal9hMTF5IC5kaWppdFNsaWRlckZvY3VzZWQgLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRib3JkZXI6NHB4IHNvbGlkICMwMDA7XG5cdGhlaWdodDo4cHg7XG5cdHdpZHRoOjhweDtcbn1cblxuLmRpaml0U2xpZGVySW1hZ2VIYW5kbGVWIHtcblx0dG9wOi04cHg7XG5cdHJpZ2h0OiAtNTAlO1xufVxuXG4uZGlqaXRTbGlkZXJJbWFnZUhhbmRsZUgge1xuXHRsZWZ0OjUwJTtcblx0dG9wOi01cHg7XG5cdHZlcnRpY2FsLWFsaWduOnRvcDtcbn1cblxuLmRpaml0U2xpZGVyQmFyIHtcblx0Ym9yZGVyLXN0eWxlOnNvbGlkO1xuXHRib3JkZXItY29sb3I6YmxhY2s7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmRpaml0U2xpZGVyQmFyQ29udGFpbmVyViB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRoZWlnaHQ6MTAwJTtcblx0ei1pbmRleDoxO1xufVxuXG4uZGlqaXRTbGlkZXJCYXJDb250YWluZXJIIHtcblx0cG9zaXRpb246cmVsYXRpdmU7XG5cdHotaW5kZXg6MTtcbn1cblxuLmRpaml0U2xpZGVyQmFySCB7XG5cdGhlaWdodDo0cHg7XG5cdGJvcmRlci13aWR0aDoxcHggMDtcbn1cblxuLmRpaml0U2xpZGVyQmFyViB7XG5cdHdpZHRoOjRweDtcblx0Ym9yZGVyLXdpZHRoOjAgMXB4O1xufVxuXG4uZGlqaXRTbGlkZXJQcm9ncmVzc0JhciB7XG5cdGJhY2tncm91bmQtY29sb3I6cmVkO1xuXHR6LWluZGV4OjE7XG59XG5cbi5kaWppdFNsaWRlclByb2dyZXNzQmFyViB7XG5cdHBvc2l0aW9uOnN0YXRpYyAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6MDtcblx0dmVydGljYWwtYWxpZ246dG9wO1xuXHR0ZXh0LWFsaWduOmxlZnQ7XG59XG5cbi5kaWppdFNsaWRlclByb2dyZXNzQmFySCB7XG5cdHBvc2l0aW9uOmFic29sdXRlICFpbXBvcnRhbnQ7XG5cdHdpZHRoOjA7XG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0b3ZlcmZsb3c6dmlzaWJsZTtcbn1cblxuLmRpaml0U2xpZGVyUmVtYWluaW5nQmFyIHtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O1xuXHR6LWluZGV4OjE7XG59XG5cbi5kaWppdFNsaWRlclJlbWFpbmluZ0JhclYge1xuXHRoZWlnaHQ6MTAwJTtcblx0dGV4dC1hbGlnbjpsZWZ0O1xufVxuXG4uZGlqaXRTbGlkZXJSZW1haW5pbmdCYXJIIHtcblx0d2lkdGg6MTAwJSAhaW1wb3J0YW50O1xufVxuXG4vKiB0aGUgc2xpZGVyIGJ1bXBlciBpcyB0aGUgc3BhY2UgY29uc3VtZWQgYnkgdGhlIHNsaWRlciBoYW5kbGUgd2hlbiBpdCBoYW5ncyBvdmVyIGFuIGVkZ2UgKi9cbi5kaWppdFNsaWRlckJ1bXBlciB7XG5cdG92ZXJmbG93OmhpZGRlbjtcblx0ei1pbmRleDoxO1xufVxuXG4uZGlqaXRTbGlkZXJCdW1wZXJWIHtcblx0d2lkdGg6NHB4O1xuXHRoZWlnaHQ6OHB4O1xuXHRib3JkZXItd2lkdGg6MCAxcHg7XG59XG5cbi5kaWppdFNsaWRlckJ1bXBlckgge1xuXHR3aWR0aDo4cHg7XG5cdGhlaWdodDo0cHg7XG5cdGJvcmRlci13aWR0aDoxcHggMDtcbn1cblxuLmRpaml0U2xpZGVyQm90dG9tQnVtcGVyLFxuLmRpaml0U2xpZGVyTGVmdEJ1bXBlciB7XG5cdGJhY2tncm91bmQtY29sb3I6cmVkO1xufVxuXG4uZGlqaXRTbGlkZXJUb3BCdW1wZXIsXG4uZGlqaXRTbGlkZXJSaWdodEJ1bXBlciB7XG5cdGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7XG59XG5cbi5kaWppdFNsaWRlckRlY29yYXRpb24ge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvbkMsXG4uZGlqaXRTbGlkZXJEZWNvcmF0aW9uViB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogbmVlZGVkIGZvciBJRStxdWlya3MrUlRMK3ZlcnRpY2FsIChyZW5kZXJpbmcgYnVnKSBidXQgYWRkIGV2ZXJ5d2hlcmUgZm9yIGN1c3RvbSBzdHlsaW5nIGNvbnNpc3RlbmN5IGJ1dCB0aGlzIG1lc3NlcyB1cCBJRSBob3Jpem9udGFsIHNsaWRlcnMgKi9cbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvbkgge1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvblYge1xuXHRoZWlnaHQ6IDEwMCU7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5kaWppdFNsaWRlckJ1dHRvbiB7XG5cdGZvbnQtZmFtaWx5Om1vbm9zcGFjZTtcblx0bWFyZ2luOjA7XG5cdHBhZGRpbmc6MDtcblx0ZGlzcGxheTpibG9jaztcbn1cblxuLmRqX2ExMXkgLmRpaml0U2xpZGVyQnV0dG9uSW5uZXIge1xuXHR2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0U2xpZGVyQnV0dG9uQ29udGFpbmVyIHtcblx0dGV4dC1hbGlnbjpjZW50ZXI7XG5cdGhlaWdodDowO1x0LyogPz8/ICovXG59XG4uZGlqaXRTbGlkZXJCdXR0b25Db250YWluZXIgKiB7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmRpaml0U2xpZGVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRwYWRkaW5nOjA7XG5cdGRpc3BsYXk6YmxvY2s7XG59XG5cbi5kaWppdFJ1bGVDb250YWluZXIge1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0b3ZlcmZsb3c6dmlzaWJsZTtcbn1cblxuLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRoZWlnaHQ6MTAwJTtcblx0bGluZS1oZWlnaHQ6MDtcblx0ZmxvYXQ6bGVmdDtcblx0dGV4dC1hbGlnbjpsZWZ0O1xufVxuXG4uZGpfb3BlcmEgLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRsaW5lLWhlaWdodDoyJTtcbn1cblxuLmRqX2llIC5kaWppdFJ1bGVDb250YWluZXJWIHtcblx0bGluZS1oZWlnaHQ6bm9ybWFsO1xufVxuXG4uZGpfZ2Vja28gLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRtYXJnaW46MCAwIDFweCAwOyAvKiBtb3ppbGxhIGJ1ZyB3b3JrYXJvdW5kIGZvciBmbG9hdDpsZWZ0LGhlaWdodDoxMDAlIGJsb2NrIGVsZW1lbnRzICovXG59XG5cbi5kaWppdFJ1bGVNYXJrIHtcblx0cG9zaXRpb246YWJzb2x1dGU7XG5cdGJvcmRlcjoxcHggc29saWQgYmxhY2s7XG5cdGxpbmUtaGVpZ2h0OjA7XG5cdGhlaWdodDoxMDAlO1xufVxuXG4uZGlqaXRSdWxlTWFya0gge1xuXHR3aWR0aDowO1xuXHRib3JkZXItdG9wLXdpZHRoOjAgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbS13aWR0aDowICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1sZWZ0LXdpZHRoOjAgIWltcG9ydGFudDtcbn1cblxuLmRpaml0UnVsZUxhYmVsQ29udGFpbmVyIHtcblx0cG9zaXRpb246YWJzb2x1dGU7XG59XG5cbi5kaWppdFJ1bGVMYWJlbENvbnRhaW5lckgge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0ZGlzcGxheTppbmxpbmUtYmxvY2s7XG59XG5cbi5kaWppdFJ1bGVMYWJlbEgge1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0bGVmdDotNTAlO1xufVxuXG4uZGlqaXRSdWxlTGFiZWxWIHtcblx0Lyogc28gdGhhdCBsb25nIGxhYmVscyBkb24ndCBvdmVyZmxvdyB0byBtdWx0aXBsZSByb3dzLCBvciBvdmVyd3JpdGUgc2xpZGVyIGl0c2VsZiAqL1xuXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRpaml0UnVsZU1hcmtWIHtcblx0aGVpZ2h0OjA7XG5cdGJvcmRlci1yaWdodC13aWR0aDowICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1ib3R0b20td2lkdGg6MCAhaW1wb3J0YW50O1xuXHRib3JkZXItbGVmdC13aWR0aDowICFpbXBvcnRhbnQ7XG5cdHdpZHRoOjEwMCU7XG5cdGxlZnQ6MDtcbn1cblxuLmRqX2llIC5kaWppdFJ1bGVMYWJlbENvbnRhaW5lclYge1xuXHRtYXJnaW4tdG9wOi0uNTVlbTtcbn1cblxuLmRqX2ExMXkgLmRpaml0U2xpZGVyUmVhZE9ubHksXG4uZGpfYTExeSAuZGlqaXRTbGlkZXJEaXNhYmxlZCB7XG5cdG9wYWNpdHk6MC42O1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdFNsaWRlclJlYWRPbmx5IC5kaWppdFNsaWRlckJhcixcbi5kal9pZSAuZGpfYTExeSAuZGlqaXRTbGlkZXJEaXNhYmxlZCAuZGlqaXRTbGlkZXJCYXIge1xuXHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NDApO1xufVxuXG4vKiArIGFuZCAtIFNsaWRlciBidXR0b25zOiBvdmVycmlkZSB0aGVtZSBzZXR0aW5ncyB0byBkaXNwbGF5IGljb25zICovXG4uZGpfYTExeSAuZGlqaXRTbGlkZXIgLmRpaml0U2xpZGVyQnV0dG9uQ29udGFpbmVyIGRpdiB7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IC8qIG90aGVyd2lzZSBoeXBoZW4gaXMgbGFyZ2VyIGFuZCBtb3JlIHZlcnRpY2FsbHkgY2VudGVyZWQgKi9cblx0Zm9udC1zaXplOiAxZW07XG5cdGxpbmUtaGVpZ2h0OiAxZW07XG5cdGhlaWdodDogYXV0bztcblx0d2lkdGg6IGF1dG87XG5cdG1hcmdpbjogMCA0cHg7XG59XG5cbi8qIEljb24tb25seSBidXR0b25zIChvZnRlbiBpbiB0b29sYmFycykgc3RpbGwgZGlzcGxheSB0aGUgdGV4dCBpbiBoaWdoLWNvbnRyYXN0IG1vZGUgKi9cbi5kal9hMTF5IC5kaWppdEJ1dHRvbkNvbnRlbnRzIC5kaWppdEJ1dHRvblRleHQsXG4uZGpfYTExeSAuZGlqaXRUYWIgLnRhYkxhYmVsIHtcblx0ZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uVGV4dCB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xufVxuXG4vKiBUZXh0QXJlYSwgU2ltcGxlVGV4dEFyZWEgKi9cbi5kaWppdFRleHRBcmVhIHtcblx0d2lkdGg6MTAwJTtcblx0b3ZlcmZsb3cteTogYXV0bztcdC8qIHcvb3V0IHRoaXMgSUUncyBTaW1wbGVUZXh0QXJlYSBnb2VzIHRvIG92ZXJmbG93OiBzY3JvbGwgKi9cbn1cbi5kaWppdFRleHRBcmVhW2NvbHNdIHtcblx0d2lkdGg6YXV0bzsgLyogU2ltcGxlVGV4dEFyZWEgY29scyAqL1xufVxuLmRqX2llIC5kaWppdFRleHRBcmVhQ29scyB7XG5cdHdpZHRoOmF1dG87XG59XG5cbi5kaWppdEV4cGFuZGluZ1RleHRBcmVhIHtcblx0LyogZm9yIGF1dG8gZXhhbmRpbmcgdGV4dGFyZWEgKGNhbGxlZCBUZXh0YXJlYSBjdXJyZW50bHksIHJlbmFtZSBmb3IgMi4wKSBkb24ndCB3YW50IHRvIGRpc3BsYXkgdGhlIGdyaXAgdG8gcmVzaXplICovXG5cdHJlc2l6ZTogbm9uZTtcbn1cblxuXG4vKiBUb29sYmFyXG4gKiBOb3RlIHRoYXQgb3RoZXIgdG9vbGJhciBydWxlcyAoZm9yIG9iamVjdHMgaW4gdG9vbGJhcnMpIGFyZSBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGlzIGZpbGUuXG4gKi9cblxuLmRpaml0VG9vbGJhclNlcGFyYXRvciB7XG5cdGhlaWdodDogMThweDtcblx0d2lkdGg6IDVweDtcblx0cGFkZGluZzogMCAxcHg7XG5cdG1hcmdpbjogMDtcbn1cblxuLyogRWRpdG9yICovXG4uZGlqaXRJRUZpeGVkVG9vbGJhciB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHQvKiB0b3A6MDsgKi9cblx0dG9wOiBleHByZXNzaW9uKGV2YWwoKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8ZG9jdW1lbnQuYm9keSkuc2Nyb2xsVG9wKSk7XG59XG5cbi5kaWppdEVkaXRvciB7XG5cdGRpc3BsYXk6IGJsb2NrO1x0LyogcHJldmVudHMgZ2xpdGNoIG9uIEZGIHdpdGggSW5saW5lRWRpdEJveCwgc2VlICM4NDA0ICovXG59XG5cbi5kaWppdEVkaXRvckRpc2FibGVkLFxuLmRpaml0RWRpdG9yUmVhZE9ubHkge1xuXHRjb2xvcjogZ3JheTtcbn1cblxuLyogVGltZVBpY2tlciAqL1xuXG4uZGlqaXRUaW1lUGlja2VyIHtcblx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG4uZGlqaXRUaW1lUGlja2VySXRlbSB7XG5cdGN1cnNvcjpwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0VGltZVBpY2tlckl0ZW1Ib3ZlciB7XG5cdGJhY2tncm91bmQtY29sb3I6Z3JheTtcblx0Y29sb3I6d2hpdGU7XG59XG4uZGlqaXRUaW1lUGlja2VySXRlbVNlbGVjdGVkIHtcblx0Zm9udC13ZWlnaHQ6Ym9sZDtcblx0Y29sb3I6IzMzMztcblx0YmFja2dyb3VuZC1jb2xvcjojYjdjZGVlO1xufVxuLmRpaml0VGltZVBpY2tlckl0ZW1EaXNhYmxlZCB7XG5cdGNvbG9yOmdyYXk7XG5cdHRleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2g7XG59XG5cbi5kaWppdFRpbWVQaWNrZXJJdGVtSW5uZXIge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0Ym9yZGVyOjA7XG5cdHBhZGRpbmc6MnB4IDhweCAycHggOHB4O1xufVxuXG4uZGlqaXRUaW1lUGlja2VyVGljayxcbi5kaWppdFRpbWVQaWNrZXJNYXJrZXIge1xuXHRib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmF5O1xufVxuXG4uZGlqaXRUaW1lUGlja2VyIC5kaWppdERvd25BcnJvd0J1dHRvbiB7XG5cdGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0VGltZVBpY2tlclRpY2sge1xuXHRjb2xvcjojQ0NDO1xufVxuXG4uZGlqaXRUaW1lUGlja2VyTWFya2VyIHtcblx0Y29sb3I6YmxhY2s7XG5cdGJhY2tncm91bmQtY29sb3I6I0NDQztcbn1cblxuLmRqX2ExMXkgLmRpaml0VGltZVBpY2tlckl0ZW1TZWxlY3RlZCAuZGlqaXRUaW1lUGlja2VySXRlbUlubmVyIHtcblx0Ym9yZGVyOiBzb2xpZCA0cHggYmxhY2s7XG59XG4uZGpfYTExeSAuZGlqaXRUaW1lUGlja2VySXRlbUhvdmVyIC5kaWppdFRpbWVQaWNrZXJJdGVtSW5uZXIge1xuXHRib3JkZXI6IGRhc2hlZCA0cHggYmxhY2s7XG59XG5cblxuLmRpaml0VG9nZ2xlQnV0dG9uSWNvbkNoYXIge1xuXHQvKiBjaGFyYWN0ZXIgKGluc3RlYWQgb2YgaWNvbikgdG8gc2hvdyB0aGF0IFRvZ2dsZUJ1dHRvbiBpcyBjaGVja2VkICovXG5cdGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0VG9nZ2xlQnV0dG9uIC5kaWppdFRvZ2dsZUJ1dHRvbkljb25DaGFyIHtcblx0ZGlzcGxheTppbmxpbmUgIWltcG9ydGFudDtcblx0dmlzaWJpbGl0eTpoaWRkZW47XG59XG4uZGpfaWU2IC5kaWppdFRvZ2dsZUJ1dHRvbkljb25DaGFyLCAuZGpfaWU2IC50YWJTdHJpcEJ1dHRvbiAuZGlqaXRCdXR0b25UZXh0IHtcblx0Zm9udC1mYW1pbHk6IFwiQXJpYWwgVW5pY29kZSBNU1wiO1x0Lyogb3RoZXJ3aXNlIHRoZSBhMTF5IGNoYXJhY3RlciAoY2hlY2ttYXJrLCBhcnJvdywgZXRjLikgYXBwZWFycyBhcyBhIGJveCAqL1xufVxuLmRqX2ExMXkgLmRpaml0VG9nZ2xlQnV0dG9uQ2hlY2tlZCAuZGlqaXRUb2dnbGVCdXR0b25JY29uQ2hhciB7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyAvKiBJbiBoaWdoIGNvbnRyYXN0IG1vZGUsIGRpc3BsYXkgdGhlIGNoZWNrIHN5bWJvbCAqL1xuXHR2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0QXJyb3dCdXR0b25DaGFyIHtcblx0ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRBcnJvd0J1dHRvbkNoYXIge1xuXHRkaXNwbGF5OmlubGluZSAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXREcm9wRG93bkJ1dHRvbiAuZGlqaXRBcnJvd0J1dHRvbklubmVyLFxuLmRqX2ExMXkgLmRpaml0Q29tYm9CdXR0b24gLmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBTZWxlY3QgKi9cbi5kal9hMTF5IC5kaWppdFNlbGVjdCB7XG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGUgIWltcG9ydGFudDtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG59XG4uZGpfaWUgLmRpaml0U2VsZWN0IHtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTsgLyogU2V0IHRoaXMgYmFjayBmb3Igd2hhdCB3ZSBoYWNrIGluIGRpaml0IGlubGluZSAqL1xufVxuLmRqX2llNiAuZGlqaXRTZWxlY3QgLmRpaml0VmFsaWRhdGlvbkNvbnRhaW5lcixcbi5kal9pZTggLmRpaml0U2VsZWN0IC5kaWppdEJ1dHRvblRleHQge1xuXHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLmRqX2llNiAuZGlqaXRUZXh0Qm94IC5kaWppdElucHV0Q29udGFpbmVyLFxuLmRqX2llcXVpcmtzIC5kaWppdFRleHRCb3ggLmRpaml0SW5wdXRDb250YWluZXIsXG4uZGpfaWU2IC5kaWppdFRleHRCb3ggLmRpaml0QXJyb3dCdXR0b25Jbm5lcixcbi5kal9pZTYgLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uSW5uZXIsXG4uZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwge1xuXHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi5kaWppdE51bWJlclRleHRCb3gge1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRkaXJlY3Rpb246IGx0cjtcbn1cblxuLmRpaml0TnVtYmVyVGV4dEJveCAuZGlqaXRJbnB1dElubmVyIHtcblx0dGV4dC1hbGlnbjogaW5oZXJpdDsgLyogaW5wdXQgKi9cbn1cblxuLmRpaml0TnVtYmVyVGV4dEJveCBpbnB1dC5kaWppdElucHV0SW5uZXIsXG4uZGlqaXRDdXJyZW5jeVRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRpaml0U3Bpbm5lciBpbnB1dC5kaWppdElucHV0SW5uZXIge1xuXHR0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLmRqX2llOCAuZGlqaXROdW1iZXJUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXROdW1iZXJUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lcixcbi5kal9pZTggLmRpaml0Q3VycmVuY3lUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXRDdXJyZW5jeVRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRqX2llOCAuZGlqaXRTcGlubmVyIGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXRTcGlubmVyIGlucHV0LmRpaml0SW5wdXRJbm5lciB7XG5cdC8qIHdvcmthcm91bmQgYnVnIHdoZXJlIGNhcmV0IGludmlzaWJsZSBpbiBlbXB0eSB0ZXh0Ym94ZXMgKi9cblx0cGFkZGluZy1yaWdodDogMXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdFRvb2xiYXIgLmRpaml0U2VsZWN0IHtcblx0bWFyZ2luOiAwO1xufVxuLmRqX3dlYmtpdCAuZGlqaXRUb29sYmFyIC5kaWppdFNlbGVjdCB7XG5cdHBhZGRpbmctbGVmdDogMC4zZW07XG59XG4uZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRwYWRkaW5nOiAwO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRib3JkZXItc3R5bGU6IG5vbmUgc29saWQgbm9uZSBub25lO1xuXHRib3JkZXItd2lkdGg6IDFweDtcbn1cbi5kaWppdFNlbGVjdEZpeGVkV2lkdGggLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLmRpaml0U2VsZWN0TWVudSAuZGlqaXRNZW51SXRlbUljb24ge1xuXHQvKiBhdm9pZCBibGFuayBhcmVhIGluIGxlZnQgc2lkZSBvZiBtZW51IChzaW5jZSB3ZSBoYXZlIG5vIGljb25zKSAqL1xuXHRkaXNwbGF5Om5vbmU7XG59XG4uZGpfaWU2IC5kaWppdFNlbGVjdE1lbnUgLmRpaml0TWVudUl0ZW1MYWJlbCxcbi5kal9pZTcgLmRpaml0U2VsZWN0TWVudSAuZGlqaXRNZW51SXRlbUxhYmVsIHtcblx0LyogU2V0IGJhY2sgdG8gc3RhdGljIGR1ZSB0byBidWcgaW4gaWU2L2llNyAtIFNlZSBCdWcgIzk2NTEgKi9cblx0cG9zaXRpb246IHN0YXRpYztcbn1cblxuLyogRml4IHRoZSBiYXNlbGluZSBvZiBvdXIgbGFiZWwgKGZvciBtdWx0aS1zaXplIGZvbnQgZWxlbWVudHMpICovXG4uZGlqaXRTZWxlY3RMYWJlbCAqXG57XG5cdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuLyogU3R5bGluZyBmb3IgdGhlIGN1cnJlbnRseS1zZWxlY3RlZCBvcHRpb24gKHJpY2ggdGV4dCBjYW4gbWVzcyB0aGlzIHVwKSAqL1xuLmRpaml0U2VsZWN0U2VsZWN0ZWRPcHRpb24gKiB7XG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKiBGaXggdGhlIHN0eWxpbmcgb2YgdGhlIGRyb3Bkb3duIG1lbnUgdG8gYmUgbW9yZSBjb21ib2JveC1saWtlICovXG4uZGlqaXRTZWxlY3RNZW51IHtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG59XG5cbi8qIFVzZWQgaW4gY2FzZXMsIHN1Y2ggYXMgRnVsbFNjcmVlbiBwbHVnaW4sIHdoZW4gd2UgbmVlZCB0byBmb3JjZSBzdHVmZiB0byBzdGF0aWMgcG9zaXRpb25pbmcuICovXG4uZGlqaXRGb3JjZVN0YXRpYyB7XG5cdHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDtcbn1cblxuLyoqKiogRGlzYWJsZWQgY3Vyc29yICoqKioqL1xuLmRpaml0UmVhZE9ubHkgKixcbi5kaWppdERpc2FibGVkICosXG4uZGlqaXRSZWFkT25seSxcbi5kaWppdERpc2FibGVkIHtcblx0LyogYSByZWdpb24gdGhlIHVzZXIgd291bGQgYmUgYWJsZSB0byBjbGljayBvbiwgYnV0IGl0J3MgZGlzYWJsZWQgKi9cblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKiBEcmFnIGFuZCBEcm9wICovXG4uZG9qb0RuZEl0ZW0ge1xuICAgIHBhZGRpbmc6IDJweDsgIC8qIHdpbGwgYmUgcmVwbGFjZWQgYnkgYm9yZGVyIGR1cmluZyBkcmFnIG92ZXIgKGRvam9EbmRJdGVtQmVmb3JlLCBkb2pvRG5kSXRlbUFmdGVyKSAqL1xuXG5cdC8qIFByZXZlbnQgbWFnbmlmeWluZy1nbGFzcyB0ZXh0IHNlbGVjdGlvbiBpY29uIHRvIGFwcGVhciBvbiBtb2JpbGUgd2Via2l0IGFzIGl0IGNhdXNlcyBhIHRvdWNob3V0IGV2ZW50ICovXG5cdC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcblx0LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgLyogRGlzYWJsZSBzZWxlY3Rpb24vQ29weSBvZiBVSVdlYlZpZXcgKi9cbn1cbi5kb2pvRG5kSG9yaXpvbnRhbCAuZG9qb0RuZEl0ZW0ge1xuICAgIC8qIG1ha2UgY29udGVudHMgb2YgaG9yaXpvbnRhbCBjb250YWluZXIgYmUgc2lkZSBieSBzaWRlLCByYXRoZXIgdGhhbiB2ZXJ0aWNhbCAqL1xuICAgICNkaXNwbGF5OiBpbmxpbmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZG9qb0RuZEl0ZW1CZWZvcmUsXG4uZG9qb0RuZEl0ZW1BZnRlciB7XG5cdGJvcmRlcjogMHB4IHNvbGlkICMzNjk7XG59XG4uZG9qb0RuZEl0ZW1CZWZvcmUge1xuICAgIGJvcmRlci13aWR0aDogMnB4IDAgMCAwO1xuICAgIHBhZGRpbmc6IDAgMnB4IDJweCAycHg7XG59XG4uZG9qb0RuZEl0ZW1BZnRlciB7XG4gICAgYm9yZGVyLXdpZHRoOiAwIDAgMnB4IDA7XG4gICAgcGFkZGluZzogMnB4IDJweCAwIDJweDtcbn1cbi5kb2pvRG5kSG9yaXpvbnRhbCAuZG9qb0RuZEl0ZW1CZWZvcmUge1xuICAgIGJvcmRlci13aWR0aDogMCAwIDAgMnB4O1xuICAgIHBhZGRpbmc6IDJweCAycHggMnB4IDA7XG59XG4uZG9qb0RuZEhvcml6b250YWwgLmRvam9EbmRJdGVtQWZ0ZXIge1xuICAgIGJvcmRlci13aWR0aDogMCAycHggMCAwO1xuICAgIHBhZGRpbmc6IDJweCAwIDJweCAycHg7XG59XG5cbi5kb2pvRG5kSXRlbU92ZXIge1xuXHRjdXJzb3I6cG9pbnRlcjtcbn1cbi5kal9nZWNrbyAuZGlqaXRBcnJvd0J1dHRvbklubmVyIElOUFVULFxuLmRqX2dlY2tvIElOUFVULmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdC1tb3otdXNlci1mb2N1czppZ25vcmU7XG59XG4uZGlqaXRGb2N1c2VkIC5kaWppdE1lbnVJdGVtU2hvcnRjdXRLZXkge1xuXHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbiIsIi8qIERpaml0IGN1c3RvbSBzdHlsaW5nICovXG4uZGlqaXRCb3JkZXJDb250YWluZXIge1xuICAgIGhlaWdodDogMzUwcHg7XG59XG4uZGlqaXRUb29sdGlwQ29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xufVxuLmRpaml0Q29udGVudFBhbmUge1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7IC8qIFdpZGdldHMgbGlrZSB0aGUgZGF0YSBncmlkIHBhc3MgdGhlaXIgc2Nyb2xsXG4gICAgb2Zmc2V0IHRvIHRoZSBwYXJlbnQgaWYgdGhlcmUgaXMgbm90IGVub3VnaCByb29tIHRvIGRpc3BsYXkgYSBzY3JvbGwgYmFyXG4gICAgaW4gdGhlIHdpZGdldCBpdHNlbGYsIHNvIGRvIG5vdCBoaWRlIHRoZSBvdmVyZmxvdy4gKi9cbn1cblxuLyogR2xvYmFsIEJvb3RzdHJhcCBjaGFuZ2VzICovXG5cbi8qIENsaWVudCBkZWZhdWx0cyBhbmQgaGVscGVycyAqL1xuLm14LWRhdGF2aWV3LWNvbnRlbnQsIC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcjpub3QoLm14LXNjcm9sbGNvbnRhaW5lci1uZXN0ZWQpLCAubXgtdGFiY29udGFpbmVyLWNvbnRlbnQsIC5teC1ncmlkLWNvbnRlbnQge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cbmh0bWwsIGJvZHksICNjb250ZW50IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG4jY29udGVudCA+IC5teC1wYWdlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xufVxuXG4ubXgtbGVmdC1hbGlnbmVkIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LXJpZ2h0LWFsaWduZWQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuLm14LWNlbnRlci1hbGlnbmVkIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5teC10YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtdGFibGUgdGgsXG4ubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLm14LXRhYmxlIHRoLm5vcGFkZGluZyxcbi5teC10YWJsZSB0ZC5ub3BhZGRpbmcge1xuXHRwYWRkaW5nOiAwO1xufVxuXG4ubXgtb2Zmc2NyZWVuIHtcbiAgICAvKiBXaGVuIHBvc2l0aW9uIHJlbGF0aXZlIGlzIG5vdCBzZXQgSUUgZG9lc24ndCBwcm9wZXJseSByZW5kZXIgd2hlbiB0aGlzIGNsYXNzIGlzIHJlbW92ZWRcbiAgICAgKiB3aXRoIHRoZSBlZmZlY3QgdGhhdCBlbGVtZW50cyBhcmUgbm90IGRpc3BsYXllZCBvciBhcmUgbm90IGNsaWNrYWJsZS5cbiAgICAqL1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLm14LWllLWV2ZW50LXNoaWVsZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAtMTtcbn1cblxuLm14LXN3aXBlLW5hdmlnYXRpb24tcHJvZ3Jlc3Mge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBoZWlnaHQ6IDU0cHg7XG4gICAgd2lkdGg6IDU0cHg7XG4gICAgdG9wOiBjYWxjKDUwJSAtIDI3cHgpO1xuICAgIGxlZnQ6IGNhbGMoNTAlIC0gMjdweCk7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaE5nQTJBUE1BQVAvLy93QUFBSGg0ZUJ3Y0hBNE9EdGpZMkZSVVZOemMzTVRFeEVoSVNJcUtpZ0FBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQWtLQUFBQUlmNGFRM0psWVhSbFpDQjNhWFJvSUdGcVlYaHNiMkZrTG1sdVptOEFJZjhMVGtWVVUwTkJVRVV5TGpBREFRQUFBQ3dBQUFBQU5nQTJBQUFFeXhESVNhdTlPT3ZOdS85Z0tJNWt5U0VKUVNTSTZVcUtLaFBLV3lMejNOcGltcXNKbnVnM0U0YUlNaVBJOXdzcVBUamlUbGt3cUF3RlRDeFhleFlHczBIMmdnSk9MWUxCUURDeTVnd213WXg5SkpyQXNzSFFYc0tyOUNGdU0zQWxjakowSUFkK0JBTUhMbWxySkFkdUJvNVBsNWlabXB1Y25aNmZjV3FJbUpDamFIT1poaXFtRkl1QWw2NFpzWml6RjZvRXJFSzN1Uk9sbTc2Z3djTER4TVhHeDhYQWo2SWt1NCtvSXJVazBoL1UwV0Vqem5IUUlzcWhrY2pCM3NuY3hkYkM1K0xseWN6aDdrOFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRNRU1oSnE3MDQ2ODI3LzJBb2ptUnBubVZoRUlSUm9HY3hzT3p3d3VSS3N3Wk83anZmQ0VnVGluUzduaEYwbU5FR2h3c2l3VW9nbHBTRHpoQzFLSWlLa1dBd0VKZ1FSTllWSk5pWlNkUjBJdVNzbGRKRlVKMHd1T01KSVcwMGJ5TnhSSE9CWklRamFHbHJXQnhmUUdHUUhsTlZqNVdhbTV5ZG5wOUxZMldib29zV2dpeW1RcWdFcWhON2ZaQ3dHYk95TzdFWHJLNDR1aHFscElxZ3dzUEV4Y2JIeU1lL0tNc2l2U2JQZExjbnRkSlAxTlBPYmlmUmlhUE13Y25DemNyYnlOWEc2TVhkeHVUaTd6NFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRPRU1oSnE3MDQ2ODI3LzJBb2ptUnBubWlxQXNJd0NLc3BFRFFCeCtOUUV3T2U3ejFmYUZhN0NVR3QxMUZZTU5BTUJWTFNTQ3JvYW9Qb2NFY1ZPWGNFZytoS0M1TEF0VEhRaEthSmlMUnU2THNUdjEzeTBJSE1PeXc5QjE4R2ZuK0Zob2VJaVlvWkNBazBDUWlMRmdwb0NobFRSd2h0QkpFV2NEWkNqbTBKRjN4bU1adHVGcVpDcVFRWG4za29vbWlrc0hpWm01MlNBSlJnbHJ3VGpZKzd3Y2JIeU1uS0U1Z296VzljSjdFL1dDZXNhdFVtMTF0RjB0RWp6eks0eTRuaHh0UEkyOGJxd2VqSTV1VHhKaEVBSWZrRUNRb0FBQUFzQUFBQUFEWUFOZ0FBQk1zUXlFbXJ2VGpyemJ2L1lDaU9aR21lYUtvQ3dqQUlxeWtRTkFISDQxQVRBNTd2UFY5b1Zyc0pRYTNYY1lsS0dtV3VKM0luRlJGcDFZNnVGaXh0YVYzUWwzY2FoejlYMnltZDdUaFRiNlo4VHEvYjcvaTh2R0NnR1FvYWNVSUZab0FYYkVkOU93UUdHR1pIaXpXT1FKQ1JCQmlJUW9vN2paaFJTd2RtQjNvVUI0b0dvNlNxcTZ5dE1RZ0pOQWtJckFxUkNpT0NJd2lXQkxSVFJTV3hsZ2toanlTOU5NYVV5TWxEVk1LOXhVT2ZKYnlXdjNxMmk3aEx1aFd3c3RsQ21hdkg1c3lyNWVyVnJ1NDRFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWlaY2dVR05BWUZKSk1pQldhZ1E0TWxuVHNFQmlLTElxczFya0Ftc1RSV3FDU3FPNjFXa1JrSUNUUUpDQmNIWmdkSENyRUt4cW9HeVVJSXRnVEZlc0syQ1h2VXQzcmNCSHZZc2RwNjA3Yldlc3VyelpYQncrZ2lFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWdTQ0FrMENRaVdDanMwQ3BRSW9qV2ZKWk1kbktjRUNhcURJSzQxWGtBaHREUzJYQ0d0cDdBa2p4Nm1ycW5Ca1NLaG9xUVhCUVkwQmdWTG01M0dGUVZtMHBUUG9nYVZ0Tit1bGR3NzNwUUhaZ2VXQjl3RzZwa29FUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2dktVU0Nsa0RnTFFvN05BcC9Fd2lDTlg1Q2NSWjdpQVFKaTFRWGp6VkNacFNWQkpkQUY0NklrVDVzRjRlUGlxSlJHWUdDaElXR2puMnVzck8wdFhZRkJqUUdCYlFGWnJ4UVNpSzVnZ1l5a3lHVkpwakpqOHVkSWNRN3hpV2pJUWRtQjJ1cEl3ZkVCdHEySG95ejFyUE01OURseUxUazR1OHBFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3a1JDVm9Db1dtOWhCTEZqcWFBZGhEVEdyUGtOSDZTV1VLQ3UvTjJ3cldTcmhiOG9HbHFZQWljSFpPSU5ETUhHOTdlWFhvZFVsTlZWbGRnUzRhS2k0eU5qbzhGQmpRR0JZOFhCV3MwQTVWUVhSbVNVd2FkWlJob1VKazhwV0duY2hlZ082SkNlRFlZQjZnREIxYWVHUWVnQnJtV3djTER4TVhHeDF5QUtic2lzNEVnemo5c0o3ZlNtdFN0UTZReTI4M0tLTXpJamVIRTBjYlY1OW5sM2NYazR1OG9FUUE3KTtcbn1cblxuIiwiLyogQmFjYXVzZSB3ZSB1c2UgY2hlY2tib3hlcyB3aXRob3V0IGxhYmVscywgYWxpZ24gdGhlbSB3aXRoIG90aGVyIHdpZGdldHMuICovXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgIG1hcmdpbjogOXB4IDA7XG59XG5cbi5teC1jaGVja2JveCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG59XG5cbi5mb3JtLXZlcnRpY2FsIC5mb3JtLWdyb3VwLm14LWNoZWNrYm94IGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5mb3JtLXZlcnRpY2FsIC5mb3JtLWdyb3VwLm14LWNoZWNrYm94LmxhYmVsLWFmdGVyIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLm5vLWNvbHVtbnMge1xuICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xufVxuXG4ubXgtcmFkaW9idXR0b25zLmlubGluZSAucmFkaW8ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG59XG5cbi5teC1yYWRpb2J1dHRvbnMgLnJhZGlvIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgLyogUmVzZXQgYm9vdHN0cmFwIHJ1bGVzICovXG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLm14LXJhZGlvYnV0dG9ucyAucmFkaW8gbGFiZWwge1xuICAgIC8qIFJlc2V0IGJvb3RzdHJhcCBydWxlcyAqL1xuICAgIHBhZGRpbmctbGVmdDogMDtcbn1cblxuLmFsZXJ0IHtcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XG59XG5cbi5teC1jb21wb3VuZC1jb250cm9sIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xufVxuXG4ubXgtY29tcG91bmQtY29udHJvbCBidXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG59XG5cbltkaXI9XCJydGxcIl0gLm14LWNvbXBvdW5kLWNvbnRyb2wgYnV0dG9uIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbiIsIi5teC10b29sdGlwIHtcbiAgICBtYXJnaW46IDEwcHg7XG59XG4ubXgtdG9vbHRpcC1jb250ZW50IHtcbiAgICB3aWR0aDogNDAwcHg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbn1cbi5teC10b29sdGlwLXByZXBhcmUge1xuICAgIGhlaWdodDogMjRweDtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEdBQVlBTVFkQUtYWjhuZkY2NFRMN1F1WDNGZTQ1emFxNGhPYjNmTDYvZnI5L3JyaTlkWHQrWnJVOEN5bTRVbXk1Y0hsOXVQeisySzg2T2oxL056dytyRGQ5TTNxK0pEUTcyckE2aU9pMyszNC9FQ3U0OGpvOXgyZjNnV1YyLy8vL3dBQUFBQUFBQ0gvQzA1RlZGTkRRVkJGTWk0d0F3RUFBQUFoL3d0WVRWQWdSR0YwWVZoTlVEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVFF3SURjNUxqRTJNRFExTVN3Z01qQXhOeTh3TlM4d05pMHdNVG93T0RveU1TQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRnZ0tFMWhZMmx1ZEc5emFDa2lJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZSVUpGTmtVNE5FWkNORVZETVRGRk9EazNNREJCTlVVMVJVTTRRamczUVRVaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlJVSkZOa1U0TlRCQ05FVkRNVEZGT0RrM01EQkJOVVUxUlVNNFFqZzNRVFVpUGlBOGVHMXdUVTA2UkdWeWFYWmxaRVp5YjIwZ2MzUlNaV1k2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRwRlFrVTJSVGcwUkVJMFJVTXhNVVU0T1Rjd01FRTFSVFZGUXpoQ09EZEJOU0lnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBGUWtVMlJUZzBSVUkwUlVNeE1VVTRPVGN3TUVFMVJUVkZRemhDT0RkQk5TSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QZ0gvL3YzOCsvcjUrUGYyOWZUejh2SHc3Kzd0N092cTZlam41dVhrNCtMaDROL2UzZHpiMnRuWTE5YlYxTlBTMGREUHpzM015OHJKeU1mR3hjVER3c0hBdjc2OXZMdTZ1YmkzdHJXMHM3S3hzSyt1cmF5cnFxbW9wNmFscEtPaW9hQ2ZucDJjbTVxWm1KZVdsWlNUa3BHUWo0Nk5qSXVLaVlpSGhvV0VnNEtCZ0g5K2ZYeDdlbmw0ZDNaMWRITnljWEJ2Ym0xc2EycHBhR2RtWldSalltRmdYMTVkWEZ0YVdWaFhWbFZVVTFKUlVFOU9UVXhMU2tsSVIwWkZSRU5DUVVBL1BqMDhPem81T0RjMk5UUXpNakV3THk0dExDc3FLU2duSmlVa0l5SWhJQjhlSFJ3Ykdoa1lGeFlWRkJNU0VSQVBEZzBNQ3dvSkNBY0dCUVFEQWdFQUFDSDVCQVVFQUIwQUxBQUFBQUFZQUJnQUFBVWNZQ2VPWkdtZWFLcXViT3UrY0N6UGRHM2ZlSzd2Zk8vL3dPQXJCQUFoK1FRRkJBQWRBQ3dBQUFBQUFRQUJBQUFGQTJBWEFnQWgrUVFGQkFBZEFDd1VBQXdBQVFBQ0FBQUZBeURUaEFBaCtRUUZCQUFkQUN3VEFBc0FBZ0FHQUFBRkMyQVhkRnhuZE1UUU1WMElBQ0g1QkFVRUFCMEFMQkVBQ3dBRUFBZ0FBQVVSWUNjMllpbHlvcldkVm1jTnA4aTBYUWdBSWZrRUJRUUFIUUFzRHdBT0FBWUFCZ0FBQlE5Z0ozYUJNWjRqaDQ0V0I0bkZjSVlBSWZrRUNRUUFIUUFzRFFBUEFBZ0FCZ0FBQlJGZ0o0NGRSSGJCcVlvcEdRd2NPUmhxQ0FBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRkxXQW5qbVJwbm1pcXJtenJ2bkFzejNSdDMzaXVrOEpnRHdRYlIyaWhCVGlOV1c4WTR6aDlHaGxnUnkyRkFBQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZNMkFuam1ScG5taXFybXpydm5Bc3ozUnQzMmh6YzN0U0M3emFZT2VvY1NBMFlNWlZJUWtHd1JhUVE2VjJpaklBYnFzS0FRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZObUFuam1ScG5taXFybXpydm5Bc3ozUnQzMmh6Yy90VVY3eWFJV01MMGppRVZRVUZMS3dDSEVPcFlqQ3lNcHlzbGloYjRMNnJFQUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGT21BbmptUnBubWlxcm16cnZuQXN6M1J0MzJoemN6dFFWN3phcG1BTG1vQXNqZzdGTUI0NWpGV0RzeWxWTnM1VmdjUHRFbU8rQ202c0NnRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCVDlnSjQ1a2FaNW9xcTVzNjc1d0xNOTBiZDhvY1hPQ3plMm14c2ExWVp4K0xRN2cxRUNxT0prVWc3TkljWXlxNXJDMGdicW1uSENZc1lRdGU3aDBLZ1FBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQlVSZ0o0NWthWjVvcXE1czY3NXdMTTkwYmQ4b1lRWXdKNVNjbmluNElwSVlGOWNsV1ZvWVY1ekZLZk5FY1RLcFN4WElURkc3SXkyMnhlQ1l6eGNwVFBxajRONm9FQUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGU21BbmptUnBubWlxcm16cnZuQXN6M1ROYm5iQXdZUzV2NXdBcWZKekZVZEhWckt6WWJnWU9OK2t4YW1jQ2dQV29KRGFaRk9EYUtyQWNaWVlIRzVydzJtN04xWllSUmkzMlZjaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVlBZQ2VPWkdtZWFLcXViT3UrY0N6UDVVYlFJb2QzZ3I3N3JodkpBbXh4TEtVaVM5bmhURjVNQThQRk1KaDZMbzdneEJpd0JsUFV4cHNhYkZZTVRwaVVYcXNFQm81OGJ0akN0aGI3YnI4S0FRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZVMkFuam1ScG5taXFybXpydmpETFhERXBjRFZwWlBtSTk1MGJVUFJ6UVVxUVlvdHpKQ2xaejhsenhabVVEQVZYd1hDYW9yeWRDM2Rsb0tFTTQzTWFkZUZrU3dXT2VSVXdjTzU0UXlBbU9BcUdnQzBoQUNINUJBVUVBQjBBTEFBQUFBQVlBQmdBQUFWWFlDZU9aR21lYUtxdWJMdHVsbnNhaG14dXRVMEduRjRPRFIrcEp4VHhpaUpDemhYNzJRYUVIZEUxSFZWWkhNQXY0OG9NVE1jV0ozRENzUXliMUdBNSs2bzJIRzRwdzBtekFnTU9aNURmazIwQlVYOUloQzBoQUNINUJBa0VBQjBBTEFJQUF3QVVBQk1BQUFVL1lDZUsxdENNYUpweWhPcU93L2JPOUd6VmM0dnY5YzJuc2w5QVpQaDFpajZqY3JRUW5YYlBEc1E0SFFWcFYxUld0VTFGUjE5WDlWZ1VqV20rWkNvRUFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVmJZQ2VPWkdtZWFLcU9GckdpeE1CeHpHc2FuR3VidzdhZkJ0K3ZST0FNVGJsanlhaGtNWnVkaG5BWEtFbUhtOFp5K0JRdHVpL09ZcWw3RlUvZ1ZQSTJUVzBNcVo1cU0xamh5cU1pM0R6amJEWjllRFlRRFZwalVJZy9JUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGWUdBbmptUnBubWlxaWxXWFpjUnFFaHczWE5jZ2t3WUg3U2ZPQlhneURJa2xHdExrVzVZNFRoSkJGeFZsamtCQjZZcThaRXBVWUpnRkpYSmFwT1lPVXBhMlY1eVl5U2k3R0ZKQzFlVmRWSlBZZHpJME5qZ0ROWEpFQkYrSVZZMUFJUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGWldBbmptUnBubWlxaWtKWEZNUnFOaHhuTUlWUngvTEFXYWFBck1OaERGRUQ0M0hHV1o1K3pwS2dHUzBacXFTQ2Npa2NhWjA0RXVHNk5QQkcxR01hRFJ4YTFpS2F1bkZLeWhpRFZGSEZnSnQ4YlNSdmVUSTBOZ3dNT2h4MFRnUXZIUzFZa2xFaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVm1ZQ2VPWkdtZWFLcUtRY01VeldwbUhMZDF4VlpuY2pjTUFWUGdwMXB3Q2lyR0RUVkE5azZad1JQRm1aNENWV3Vwc2RTT1h0cmdWMXRna0xqV1RZeVVmYlpISExFTU81UDJCanhUVTFhd240NHFCVzhtQzBSQ2hpczBOZ1U1TzFZdFptdGVrNU1oQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFWbllDZU9aR21lYUtxS1FYWmQyV29XSEhkMURWTVhjc1VOSjRHQnMrTHdVclFLeWlpam5RcEFXY2R3NGdTa3FBQVJlM0p4VDdkdngwS0NmYjBqTk5aTTJtTGRJeXRXTzR2S0JzY1NjK1ZjNXA5d1ZYWWtBUU9CS0RRMkdTNDdYeTB2SFZkaWs1UWlJUUFoK1FRRkJBQWRBQ3dBQUFBQUdBQVlBQUFGYm1BbmptUnBubWlxaWxheGJjVnFNaHpIZEExdHl3Sm5uQUlEUjZEaVpGUVpUc29vUzU0WVAxbkhjQ3NOcFNJbHlhTEZjZ0trUWhWcjJwQkZpOUttY1c2WVIrSXpJMGJxU3UxWm9qZFJnbUtwSjB3clRpaUNLSVFvUFZFbFFYZ29PZ3dOT1RWalVpMW1kR2VhbXlVaEFDSDVCQVVFQUIwQUxBSUFBZ0FVQUJRQUFBVmJZQ2VPa01HZG5BR05MSWx5dy9DdWJjZWNXWjJkVEhzYk5aYXBKNEtrZ2kwVDdZU3NNWTI1Sm10WDRraWRKdXVWaFJwc1dUTFlkeFRXamsrbXNTZ0ZIVk03ekcvY0NMd3FSei9wMElmVDhZSkdYV1VjTkVoVktDbzFJUUFoK1FRRkJBQWRBQ3dCQUFFQUZnQVdBQUFGWjJBbmptUFZCV1NxbmdaSGNnYTZqc2JyMG5OMTEyVEZjNmFVNnpZYnBtckVXY2ZGTzRrRXloSFUyYWsxbzlYc0VydHlCYm1xWUpKN1E0MnhMaG00MlBsaVRUc3QxeXBTYzZkcUpGa3VHazVWQWtZcE9pSlhiVDlLVnh4Smhpb0JMUytOVVNaMktpRUFJZmtFQ1FRQUhRQXNBUUFCQUJZQUZnQUFCV3BnSjQ2aWxWMVgxazFrUzE2Y3kxMHUyY1MxeURVMU0zSUVFZ0hYOGRsR3dWcXl3L3ZsY2tSYVovbE1TbVBFcDY0VHM0aW8ycVJKcXoyUm42aHpMcVd1cWI1dEtyWTk3MGpCU3BHVTI5Nk9tbE01UzRBaVJseFVReU9HTmxreWhDNHdNbnRrSmlncUxDNGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVYrWUNlT1pHbWVwVlZjVjlaTjZMbHhkRTF2OGRqWWZOM0VEQnVFQkxFeFRqdmE4RlNrL1VxMW5DaEttbkdXdVNadVJKVjJ1aGFsbDh1eGlESzBNZG5WdWFUVlg4NUY1T2JBNC9NTzJnNm5zZU5ZVWsxbVUyOWVYUjFXZ1NoYUpBdUlLSkFkU1ZlTVBpZEJrRTAwUnlpVVBaZFNWajFiYWhZWkxCbUVkM0FoQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFXQllDZU9aR21lcFZWY1Y5Rk42TGx4ZEUxdjhkallmTjNFakpyQlpLZ3hUanRhVE9BejFYS2lKMm5HRVVDakhOeUlOcngyaXB5UlJlbnRNRGtXVVlGY3ByazZGN2FYZGhIRncrVU9YUzIvdXJkVlpXY2tYR1ZnVTMweE55UUxVamsxQ3lWSmdTZG5IRDhtUVlVa0FtQWNSeWlUUFUxUVZEMWFaU29zQldsNXJoMGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVdDWUNlT1pHbWVwVlZjVjlGTjZMbHhkRTF2OGRqWWZOM0VqTnJGZEtreFRqdk9JRGVnL1VxMFphN1Q1SlJtMXFub1JxSU50WjFpdG1PaGdVYzBpNmhnUG5kb3JuRDc3QldKM1cvT2x6MEd3OUY5VXdCcEloTjFZSGNqV0hRY09GMUtXbFVtU1FNQU1WVlBKVUdISXdCaUhFY29TVDAybVRGWVBZNW5LaXd1TUhodUlRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZlbUFuam1ScG5xV1ZNVXlHdmhjbnovTDFqZzJ0ejgxYnpLNVNabFk0NVRpR20wSFdLOG1TdDg2U1U0cFJvNklhU1JiRURxOGRpd3k3NVZoRVgvS0lLMktNMVIwWm8vMVd5OUYxTWpzTDF2ZjNYaklUSTFaMkhEWmxVRXA1SWtlS0oxTk5KVCtBSTE4Y1JTaEhPelNTTUp5SGNHRXJMUjJEb25BaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVjlZQ2VPWkdtZVpkQXdUSU8rRnlmUDh2V09CRDFjMTBBVHI4SU1Zb0xNQ3FjY3h3YVRBVXUxbXlqR0tWR2xvMmlXUThSMmpGVlJRT2JkQmtRTnpxQXM4bzBZUzNZbnhoREJtV1Y2ZHMzMnVUcGpZV1ZrVzExWVlDUlhYbHBiZUUyQ09Jd25WRThsUWpLR0kyQWNTQzg2UEQ0elhsUTBrbGhuTEg5eWNpRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCWDFnSjQ1a2FaNWwwQlJGZzc0TUo4OHk4NDRFZlhYWlJST3ZqR3h3RWd4a21WT09rd3pLZ0NYa1RTVGtsR0xFcWVob0c4bTBwSzhvSUFaM1pBRlJnN016ZDN5akF0UE40eFJFY25yOUxtTFQ0V05sWUdoZUhBSnVnbGhtWEZGelUxVW1TMDBvVlZBbFZWa2xSbEl2T2hrOU5HQXhORE5kWmlvZExYcDZJUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGZ0dBbmptUnBucVhRRkZrbm9HakJ6ZlJjd0NORUR4M1JaUU1hQk5hWWJWQ2JXZU9rNCtCNnM5UE05K3hFU2JKanRaTzhqYTViQUZqQTRXMUZ3WmVJMHpyL25LSU1oK3BteCtGdWdoM2FQc3ZwWlc0ZFFTUmdXNFpaWjEwbFUxVjZlRG1OTUk5REprVWNXaVpKa0ZJekF4aytRRUpWTWpVMFhtY3ZHYUNDclIwaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVjZZQ2VPWkdtZXBkQmxHWUcrR1NmUGN2YU8xcnk1UWJmTmxoZEJWa0FWWks2VDdOWUpMRTJ5SHJQekhNV0swODdSTnFwbXF3TE9KanY2cVVTY0pIbG81WkJKSEc1TVNuWnkyZThPSGoxK203dHViMTVYWkZzbFVWK0JKRG1LS0U0Y1FTWkRIRmdtUjJrM09qd0VQMTR3TkRSY1pDb3NIV2Q1YnlFQUlma0VDUVFBSFFBc0FBQUFBQmdBR0FBQUJYcGdKNDVrYVo1bDFXVk5wNkpueHMzMG5NRmpRQmR1RnhTMEFJd3dHeFpSbkFGT05PQUlTOGRsSnlxU0VhUWk0bTFFbFVZckhCNVdCQ1J4eG1hSXFNRjVqY0d0RGh2TmpVK2ZZOTBJTEI2WHVXZG9WRlpqV2xDQlhvaG1Ta3ROZUNSRUhGY25rWk1uT2pNOEtqOUJVakkxTkZ0b0VBMHRiblJqSVFBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRmdHQW5qbVJwbmlaRWRCYnFObHdzeDQwN0NyR3hkbE5IR0RHQkM4SVp1QUlEam90anNJbUF3bExST1VxV1lBR3FLTUNwalpqYUVaREUyWVU3U3BFbGZhNXdXajcydVN3aXlNTjBFYWR5N3JoSEMzZGFIQXRmVFdkakkxaGhYRjVmUmxwV0ptQk9pU2xGV1NkSUhCQXVPRXc3UFQ4eFdqQXpNbzVoRml0d2ZYMGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVYxWUNlT1pHbWVwa1YwQWVvU1hDekhxeXRXOFVWTzNSWGJIWTdCWnVCWVRqZ2QwSGNTQWtmRkV1dzVXbkJxSW82UzJ1T1FPQzF1ZGhUd2lqc1RzR2g2RG1MTlozaTVIUXpYei9PUjlzd2NzYmxYSlU1VVVTVkpUejRWS0VJTEtBdEZSeWc0ZXlNOFBuQTJNRE15V0Z3QkJDc0FkR0loQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFWellDZU9aR21lWmdCMUFlb1NBeWZQQStHU2NWWldHVGZjQWM3bGR1RzBUaHpkclZQZ25BYkRwZWp5SXhHYzBoSEhOaG9vczUxTVZZUUZrMGRCcy9ZSUtaczVxN082QXhlbDUyNU9SVjF4ZTlWaVZtNVNXeVZRWUZSSUJWSk5LRUZSS0VWSEtEazdQV00zTURNMFhHWXFjWE5xSVFBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRmQyQW5qbVJwbm1iUVdkMkVvdERBY1lZeEQ5QkxEZ05oRWp4ZGdKUFJaVGlxRThlbkUzRk9nMkpUbEJtVVl0TmRidFRMam9Da3AzY2s3Z2pLWTQ1Z1pCaXpSNWEydTJOZ09lZWQ4Z1R0NWJoRVhXTmdPMjQ0SlZGZVZTWUxTMU1FZkdGU0tFZE5QRXdrUUZaVE1UTTFOMXRqYXl4L2VGa2hBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVZvWUNlT1pHbWVwdEFGYU50WkJtY3dUR3hZN21nWXA3QzdBZzdFQmVHMGpMa1ZzbVFZSmpzUUhnbjIxT0YwVlpKVXRNd3VmVm1kU3NRSWswZUJzcG5CRW0yejcyNjFheGhYd1NNcTNOU3NSazl5UnloQlRpaEZkaWMvS1lvNU1ESTBObVlkS20yU1dTRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCV3hnSjQ1a2FaNW0xUVZvdXhvYzB6UU1aN0N1YURBb1k3Z1ZUazRnUkJWekhjN0VaQkFnUllJZktjQjdpcW9qcVZWSE9tNlBGZXlXb1JJMXRxT3pDSWZ1cUsvdERubmt0WG9OaTdaMjFXYXdkVTVQVVNkMUxZVWlRWUVvUkRrN1BYc3RBVEF5TkRaL1ZwZHhUeUVBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQldOZ0o0NWthWjVtMVFsbzJ3V2IwWFJRWTJ5Qk8yN3oyV3c2ZzY0alJCa2NRK0xFQkV5S21xTkF6emw5T2tsUTRuVlVGRldwcXRWMkJCa0p5bU8wZDl5cGRxL3ZyRE1yM1g2MThOUGJaVmlhRm50NkN5NDhLRDlKTURJME5qaGpLaXhzV3lFQUlma0VDUVFBSFFBc0FBQUFBQmdBR0FBQUJWaGdKNDVrYVo3bTBnbG91MjdGMmxuRjVwSTJhdVV0M3dNb24wc29JZzVMQXN1dHBNUXRUYjdZa3lRVk5hZldFUXRMMnNxNDN5ejQycWxpemNhYmtMeGtkOUxCRTd5VUJzeUxhcmYxUG9JcFdUVmdJaXdxZ2xnaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVlpZQ2VPWkdtZXA5QUJhTnN4aE5xcGpPeSt0c25jeGQzMUtLQlBTTnI1UnNaUjdyaE1Ia1ZPd3BQVUlDMmZyT21wSXVKcVI5N1pWenlTZnF2SXNaTThiV3JYSXFKTFRxS2I3TVdyU0FCSHdUb0xZbjArWGdwalV5RUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCVkZnSjQ1a2FaNW5oYTVqWm9sSloyVXNTYVBBdlJKMXg2Ty9YdERXSTVZQVJaS3FsVFNLWHMxb2JTSmFTcSttbUlpSzVjcXVVSkd1T2NhYXlqVzBMemtzdFUvdmtwclpxOUNRSFdURzJ1U2JleUVBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQlVsZ0o0NWthWjVuaGE0anBJcE9CN0Vrd2Rwc1FIYzYydSsvMms0NExNcU1MZVF1cHV4TVJJdW05QlNGVGErZGwyaW01R0pMdUdLWUZNeXR5dEt4U2IzeWlpcnU0clA2WllVQUFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVTVZQ2VPWkdtZUo0Q3VZMUNxS2l1Nk1ydlVkNjJiOU43dnRaOFBTQ3dtUkxHaU1yVkVKWnZMMzdNcGxGV2hwWnpOaW0zeGxxcGpseFVDQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFVM1lDZU9aR21lNklTdTRtSzY3RmpGTkoyc2Q2M0g4MTdEUHFCdlNDeUtWRVdrY1lrUzZweE1VUys2azFCWDAxT1dCWVhxbE5kVENBQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZMR0Fuam1ScG5taXFvdFBxdm5Bc3oySkxxL2F0Ny96cDlNRGdLQmNqQ284OHhVdXBNNmFjVHRnUGFRb0JBQ0g1QkFVRUFCMEFMQUFBQUFBWUFCZ0FBQVVqWUNlT1pHbWVhS3F1Yk91K2NMeFNjbTNmZUk3VGV0L3p2cUJ3eUFLV2pDOGtNUVFBT3c9PSkgbm8tcmVwZWF0IHNjcm9sbCBjZW50ZXIgY2VudGVyO1xufVxuLm14LXRvb2x0aXAtY29udGVudCAudGFibGUgdGgsXG4ubXgtdG9vbHRpcC1jb250ZW50IC50YWJsZSB0ZCB7XG4gICAgcGFkZGluZzogMnB4IDhweDtcbn1cbiIsIi5teC10YWJjb250YWluZXItcGFuZSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuLm14LXRhYmNvbnRhaW5lci1jb250ZW50LmxvYWRpbmcge1xuICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaE5nQTJBUE1BQVAvLy93QUFBSGg0ZUJ3Y0hBNE9EdGpZMkZSVVZOemMzTVRFeEVoSVNJcUtpZ0FBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQWtLQUFBQUlmNGFRM0psWVhSbFpDQjNhWFJvSUdGcVlYaHNiMkZrTG1sdVptOEFJZjhMVGtWVVUwTkJVRVV5TGpBREFRQUFBQ3dBQUFBQU5nQTJBQUFFeXhESVNhdTlPT3ZOdS85Z0tJNWt5U0VKUVNTSTZVcUtLaFBLV3lMejNOcGltcXNKbnVnM0U0YUlNaVBJOXdzcVBUamlUbGt3cUF3RlRDeFhleFlHczBIMmdnSk9MWUxCUURDeTVnd213WXg5SkpyQXNzSFFYc0tyOUNGdU0zQWxjakowSUFkK0JBTUhMbWxySkFkdUJvNVBsNWlabXB1Y25aNmZjV3FJbUpDamFIT1poaXFtRkl1QWw2NFpzWml6RjZvRXJFSzN1Uk9sbTc2Z3djTER4TVhHeDhYQWo2SWt1NCtvSXJVazBoL1UwV0Vqem5IUUlzcWhrY2pCM3NuY3hkYkM1K0xseWN6aDdrOFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRNRU1oSnE3MDQ2ODI3LzJBb2ptUnBubVZoRUlSUm9HY3hzT3p3d3VSS3N3Wk83anZmQ0VnVGluUzduaEYwbU5FR2h3c2l3VW9nbHBTRHpoQzFLSWlLa1dBd0VKZ1FSTllWSk5pWlNkUjBJdVNzbGRKRlVKMHd1T01KSVcwMGJ5TnhSSE9CWklRamFHbHJXQnhmUUdHUUhsTlZqNVdhbTV5ZG5wOUxZMldib29zV2dpeW1RcWdFcWhON2ZaQ3dHYk95TzdFWHJLNDR1aHFscElxZ3dzUEV4Y2JIeU1lL0tNc2l2U2JQZExjbnRkSlAxTlBPYmlmUmlhUE13Y25DemNyYnlOWEc2TVhkeHVUaTd6NFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRPRU1oSnE3MDQ2ODI3LzJBb2ptUnBubWlxQXNJd0NLc3BFRFFCeCtOUUV3T2U3ejFmYUZhN0NVR3QxMUZZTU5BTUJWTFNTQ3JvYW9Qb2NFY1ZPWGNFZytoS0M1TEF0VEhRaEthSmlMUnU2THNUdjEzeTBJSE1PeXc5QjE4R2ZuK0Zob2VJaVlvWkNBazBDUWlMRmdwb0NobFRSd2h0QkpFV2NEWkNqbTBKRjN4bU1adHVGcVpDcVFRWG4za29vbWlrc0hpWm01MlNBSlJnbHJ3VGpZKzd3Y2JIeU1uS0U1Z296VzljSjdFL1dDZXNhdFVtMTF0RjB0RWp6eks0eTRuaHh0UEkyOGJxd2VqSTV1VHhKaEVBSWZrRUNRb0FBQUFzQUFBQUFEWUFOZ0FBQk1zUXlFbXJ2VGpyemJ2L1lDaU9aR21lYUtvQ3dqQUlxeWtRTkFISDQxQVRBNTd2UFY5b1Zyc0pRYTNYY1lsS0dtV3VKM0luRlJGcDFZNnVGaXh0YVYzUWwzY2FoejlYMnltZDdUaFRiNlo4VHEvYjcvaTh2R0NnR1FvYWNVSUZab0FYYkVkOU93UUdHR1pIaXpXT1FKQ1JCQmlJUW9vN2paaFJTd2RtQjNvVUI0b0dvNlNxcTZ5dE1RZ0pOQWtJckFxUkNpT0NJd2lXQkxSVFJTV3hsZ2toanlTOU5NYVV5TWxEVk1LOXhVT2ZKYnlXdjNxMmk3aEx1aFd3c3RsQ21hdkg1c3lyNWVyVnJ1NDRFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWlaY2dVR05BWUZKSk1pQldhZ1E0TWxuVHNFQmlLTElxczFya0Ftc1RSV3FDU3FPNjFXa1JrSUNUUUpDQmNIWmdkSENyRUt4cW9HeVVJSXRnVEZlc0syQ1h2VXQzcmNCSHZZc2RwNjA3Yldlc3VyelpYQncrZ2lFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWdTQ0FrMENRaVdDanMwQ3BRSW9qV2ZKWk1kbktjRUNhcURJSzQxWGtBaHREUzJYQ0d0cDdBa2p4Nm1ycW5Ca1NLaG9xUVhCUVkwQmdWTG01M0dGUVZtMHBUUG9nYVZ0Tit1bGR3NzNwUUhaZ2VXQjl3RzZwa29FUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2dktVU0Nsa0RnTFFvN05BcC9Fd2lDTlg1Q2NSWjdpQVFKaTFRWGp6VkNacFNWQkpkQUY0NklrVDVzRjRlUGlxSlJHWUdDaElXR2puMnVzck8wdFhZRkJqUUdCYlFGWnJ4UVNpSzVnZ1l5a3lHVkpwakpqOHVkSWNRN3hpV2pJUWRtQjJ1cEl3ZkVCdHEySG95ejFyUE01OURseUxUazR1OHBFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3a1JDVm9Db1dtOWhCTEZqcWFBZGhEVEdyUGtOSDZTV1VLQ3UvTjJ3cldTcmhiOG9HbHFZQWljSFpPSU5ETUhHOTdlWFhvZFVsTlZWbGRnUzRhS2k0eU5qbzhGQmpRR0JZOFhCV3MwQTVWUVhSbVNVd2FkWlJob1VKazhwV0duY2hlZ082SkNlRFlZQjZnREIxYWVHUWVnQnJtV3djTER4TVhHeDF5QUtic2lzNEVnemo5c0o3ZlNtdFN0UTZReTI4M0tLTXpJamVIRTBjYlY1OW5sM2NYazR1OG9FUUE3KSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDMycHggMzJweDtcbn1cbi5teC10YWJjb250YWluZXItdGFicyB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLm14LXRhYmNvbnRhaW5lci10YWJzIGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ubXgtdGFiY29udGFpbmVyLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQ6ICNmMmRlZGU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGNvbG9yOiAjYjk0YTQ4O1xuICAgIHRvcDogMHB4O1xuICAgIHJpZ2h0OiAtNXB4O1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB6LWluZGV4OiAxOyAvKiBpbmRpY2F0b3Igc2hvdWxkIG5vdCBoaWRlIGJlaGluZCBvdGhlciB0YWIgKi9cbn1cbiIsIi8qIGJhc2Ugc3RydWN0dXJlICovXG4ubXgtZ3JpZCB7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47IC8qIHRvIHByZXZlbnQgYW55IG1hcmdpbiBmcm9tIGVzY2FwaW5nIGdyaWQgYW5kIGZvb2JhcmluZyBvdXIgc2l6ZSBjYWxjdWxhdGlvbnMgKi9cbn1cbi5teC1ncmlkLWNvbnRyb2xiYXIsIC5teC1ncmlkLXNlYXJjaGJhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uLFxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIC5teC1idXR0b24ge1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIC5teC1idXR0b24gKyAubXgtYnV0dG9uLFxuLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uICsgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuM2VtO1xufVxuXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXNlYXJjaC1jb250cm9scyAubXgtYnV0dG9uICsgLm14LWJ1dHRvbixcbltkaXI9XCJydGxcIl0gLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uICsgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjNlbTtcbn1cblxuLm14LWdyaWQtcGFnaW5nYmFyLFxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG4ubXgtZ3JpZC10b29sYmFyLCAubXgtZ3JpZC1zZWFyY2gtaW5wdXRzIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBmbGV4OiAxO1xufVxuXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXRvb2xiYXIsXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXNlYXJjaC1pbnB1dHMge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAwcHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXBhZ2luZ2JhcixcbltkaXI9XCJydGxcIl0gLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIHtcbiAgICBtYXJnaW4tbGVmdDogMHB4O1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbn1cblxuLm14LWdyaWQtcGFnaW5nLXN0YXR1cyB7XG4gICAgcGFkZGluZzogMCA4cHggNXB4O1xufVxuXG4vKiBzZWFyY2ggZmllbGRzICovXG4ubXgtZ3JpZC1zZWFyY2gtaXRlbSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLm14LWdyaWQtc2VhcmNoLWxhYmVsIHtcbiAgICB3aWR0aDogMTEwcHg7XG4gICAgcGFkZGluZzogMCA1cHg7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbltkaXI9XCJydGxcIl0gLm14LWdyaWQtc2VhcmNoLWxhYmVsIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LWdyaWQtc2VhcmNoLWlucHV0IHtcbiAgICB3aWR0aDogMTUwcHg7XG4gICAgcGFkZGluZzogMCA1cHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4ubXgtZ3JpZC1zZWFyY2gtbWVzc2FnZSB7XG4gICAgZmxleC1iYXNpczogMTAwJTtcbn1cblxuLyogd2lkZ2V0IGNvbWJpbmF0aW9ucyAqL1xuLm14LWRhdGF2aWV3IC5teC1ncmlkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbiIsIi5teC1jYWxlbmRhciB7XG4gICAgei1pbmRleDogMTAwMDtcbn1cblxuLm14LWNhbGVuZGFyLW1vbnRoLWRyb3Bkb3duLW9wdGlvbnMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuLm14LWNhbGVuZGFyLCAubXgtY2FsZW5kYXItbW9udGgtZHJvcGRvd24ge1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4ubXgtY2FsZW5kYXItbW9udGgtY3VycmVudCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ubXgtY2FsZW5kYXItbW9udGgtc3BhY2VyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAwcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi5teC1jYWxlbmRhciwgLm14LWNhbGVuZGFyLW1vbnRoLWRyb3Bkb3duLW9wdGlvbnMge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JleTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbiIsIi5teC1kYXRhZ3JpZCB0ciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubXgtZGF0YWdyaWQgdHIubXgtZGF0YWdyaWQtcm93LWVtcHR5IHtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi5teC1kYXRhZ3JpZCB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm14LWRhdGFncmlkIHRoLCAubXgtZGF0YWdyaWQgdGQge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG59XG5cbi8qIGhlYWQgKi9cbi5teC1kYXRhZ3JpZCB0aCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyAvKiBSZXF1aXJlZCBmb3IgdGhlIHBvc2l0aW9uaW5nIG9mIHRoZSBjb2x1bW4gcmVzaXplcnMgKi9cbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7XG59XG4ubXgtZGF0YWdyaWQtaGVhZC1jYXB0aW9uIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ubXgtZGF0YWdyaWQtc29ydC1pY29uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgcGFkZGluZy1sZWZ0OiA1cHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kYXRhZ3JpZC1zb3J0LWljb24ge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBhZGRpbmc6IDAgNXB4IDAgMDtcbn1cbi5teC1kYXRhZ3JpZC1jb2x1bW4tcmVzaXplciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtNnB4O1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBjdXJzb3I6IGNvbC1yZXNpemU7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kYXRhZ3JpZC1jb2x1bW4tcmVzaXplciB7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogLTZweDtcbn1cblxuLyogYm9keSAqL1xuLm14LWRhdGFncmlkIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRkIHtcbiAgICBib3JkZXItdG9wOiBub25lO1xufVxuLm14LWRhdGFncmlkIHRib2R5IHRyOm50aC1jaGlsZCgybisxKSB0ZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTtcbn1cbi5teC1kYXRhZ3JpZCB0Ym9keSAuc2VsZWN0ZWQgdGQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7XG59XG4ubXgtZGF0YWdyaWQtZGF0YS13cmFwcGVyIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ubXgtZGF0YWdyaWQgdGJvZHkgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDE2cHg7XG4gICAgbWF4LWhlaWdodDogMTZweDtcbn1cbi5teC1kYXRhZ3JpZCBpbnB1dCxcbi5teC1kYXRhZ3JpZCBzZWxlY3QsXG4ubXgtZGF0YWdyaWQgdGV4dGFyZWEge1xuICAgIGN1cnNvcjogYXV0bztcbn1cblxuLyogZm9vdCAqL1xuLm14LWRhdGFncmlkIHRmb290IHRoLFxuLm14LWRhdGFncmlkIHRmb290IHRkIHtcbiAgICBwYWRkaW5nOiAzcHggOHB4O1xufVxuLm14LWRhdGFncmlkIHRmb290IHRoIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbn1cbi5teC1kYXRhZ3JpZC5teC1jb250ZW50LWxvYWRpbmcgLm14LWNvbnRlbnQtbG9hZGVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDkwJTtcbiAgICBhbmltYXRpb246IHBsYWNlaG9sZGVyR3JhZGllbnQgMXMgbGluZWFyIGluZmluaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiAjRjVGNUY1O1xuICAgIGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNGNUY1RjUgMCUsICNGNUY1RjUgNSUsICNGOUY5RjkgNTAlLCAjRjVGNUY1IDk1JSwgI0Y1RjVGNSAxMDAlKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMHB4IDEwMHB4O1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG59XG5Aa2V5ZnJhbWVzIHBsYWNlaG9sZGVyR3JhZGllbnQge1xuICAgIDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwcHggMDsgfVxuICAgIDEwMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTAwcHggMDsgfVxufVxuXG4ubXgtZGF0YWdyaWQtdGFibGUtcmVzaXppbmcgdGgsXG4ubXgtZGF0YWdyaWQtdGFibGUtcmVzaXppbmcgdGQge1xuICAgIGN1cnNvcjogY29sLXJlc2l6ZSAhaW1wb3J0YW50O1xufVxuIiwiLm14LXRlbXBsYXRlZ3JpZC1jb250ZW50LXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5teC10ZW1wbGF0ZWdyaWQtcm93IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG59XG4ubXgtdGVtcGxhdGVncmlkLWl0ZW0ge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ubXgtdGVtcGxhdGVncmlkLWVtcHR5IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xufVxuLm14LXRlbXBsYXRlZ3JpZC1pdGVtLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xufVxuLm14LXRlbXBsYXRlZ3JpZC1pdGVtIC5teC10YWJsZSB0aCxcbi5teC10ZW1wbGF0ZWdyaWQtaXRlbSAubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDJweCA4cHg7XG59XG4iLCIubXgtc2Nyb2xsY29udGFpbmVyLWhvcml6b250YWwge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG59XG4ubXgtc2Nyb2xsY29udGFpbmVyLWhvcml6b250YWwgPiBkaXYge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItd3JhcHBlciB7XG4gICAgcGFkZGluZzogMTBweDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItbmVzdGVkIHtcbiAgICBwYWRkaW5nOiAwO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1maXhlZCA+IC5teC1zY3JvbGxjb250YWluZXItbWlkZGxlID4gLm14LXNjcm9sbGNvbnRhaW5lci13cmFwcGVyLFxuLm14LXNjcm9sbGNvbnRhaW5lci1maXhlZCA+IC5teC1zY3JvbGxjb250YWluZXItbGVmdCA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcixcbi5teC1zY3JvbGxjb250YWluZXItZml4ZWQgPiAubXgtc2Nyb2xsY29udGFpbmVyLWNlbnRlciA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcixcbi5teC1zY3JvbGxjb250YWluZXItZml4ZWQgPiAubXgtc2Nyb2xsY29udGFpbmVyLXJpZ2h0ID4gLm14LXNjcm9sbGNvbnRhaW5lci13cmFwcGVyIHtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cblxuLm14LXNjcm9sbGNvbnRhaW5lci1tb3ZlLWluIHtcbiAgICB0cmFuc2l0aW9uOiBsZWZ0IDI1MG1zIGVhc2Utb3V0O1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1tb3ZlLW91dCB7XG4gICAgdHJhbnNpdGlvbjogbGVmdCAyNTBtcyBlYXNlLWluO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zaHJpbmsgLm14LXNjcm9sbGNvbnRhaW5lci10b2dnbGVhYmxlIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB3aWR0aDtcbn1cblxuLm14LXNjcm9sbGNvbnRhaW5lci10b2dnbGVhYmxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zbGlkZSA+IC5teC1zY3JvbGxjb250YWluZXItdG9nZ2xlYWJsZSA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItcHVzaCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zaHJpbmsgPiAubXgtc2Nyb2xsY29udGFpbmVyLXRvZ2dsZWFibGUge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubXgtc2Nyb2xsY29udGFpbmVyLXB1c2gubXgtc2Nyb2xsY29udGFpbmVyLW9wZW4gPiBkaXYsXG4ubXgtc2Nyb2xsY29udGFpbmVyLXNsaWRlLm14LXNjcm9sbGNvbnRhaW5lci1vcGVuID4gZGl2IHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5teC1zY3JvbGxjb250YWluZXItcHVzaC5teC1zY3JvbGxjb250YWluZXItb3BlbiA+IC5teC1zY3JvbGxjb250YWluZXItdG9nZ2xlYWJsZSxcbi5teC1zY3JvbGxjb250YWluZXItc2xpZGUubXgtc2Nyb2xsY29udGFpbmVyLW9wZW4gPiAubXgtc2Nyb2xsY29udGFpbmVyLXRvZ2dsZWFibGUge1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuIiwiLm14LW5hdmJhci1pdGVtIGltZyxcbi5teC1uYXZiYXItc3ViaXRlbSBpbWcge1xuICAgIGhlaWdodDogMTZweDtcbn1cblxuIiwiLm14LW5hdmlnYXRpb250cmVlIC5uYXZiYXItaW5uZXIge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RmZTZlYTtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSBsaTpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgY29sb3I6ICM3Nzc7XG4gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgYS5hY3RpdmUge1xuICAgIGNvbG9yOiAjRkZGO1xuICAgIHRleHQtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICMzNDk4REI7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xufVxuLm14LW5hdmlnYXRpb250cmVlIC5teC1uYXZpZ2F0aW9udHJlZS1jb2xsYXBzZWQgdWwge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgdWwge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHtcbiAgICBwYWRkaW5nOiA1cHggMDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICBwYWRkaW5nOiA1cHggMDtcbn1cbltkaXI9XCJydGxcIl0gLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHVsIGxpIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB1bCBsaSB7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIHBhZGRpbmctdG9wOiAzcHg7XG4gICAgcGFkZGluZy1ib3R0b206IDNweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB1bCBsaSBpbWcge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4iLCIubXgtbGluayBpbWcsXG4ubXgtYnV0dG9uIGltZyB7XG4gICAgaGVpZ2h0OiAxNnB4O1xufVxuLm14LWxpbmsge1xuICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbiIsIi5teC1ncm91cGJveCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbi5teC1ncm91cGJveC1oZWFkZXIge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gICAgY29sb3I6ICNlZWU7XG4gICAgYmFja2dyb3VuZDogIzMzMztcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4IDRweCAwIDA7XG59XG4ubXgtZ3JvdXBib3gtY29sbGFwc2libGUgPiAubXgtZ3JvdXBib3gtaGVhZGVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZ3JvdXBib3guY29sbGFwc2VkID4gLm14LWdyb3VwYm94LWhlYWRlciB7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuLm14LWdyb3VwYm94LWJvZHkge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cbi5teC1ncm91cGJveC5jb2xsYXBzZWQgPiAubXgtZ3JvdXBib3gtYm9keSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbi5teC1ncm91cGJveC1oZWFkZXIgKyAubXgtZ3JvdXBib3gtYm9keSB7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgNHB4IDRweDtcbn1cbi5teC1ncm91cGJveC1jb2xsYXBzZS1pY29uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG59XG5bZGlyPVwicnRsXCJdIC5teC1ncm91cGJveC1jb2xsYXBzZS1pY29uIHtcbiAgICBmbG9hdDogbGVmdDtcbn1cbiIsIi5teC1kYXRhdmlldyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm14LWRhdGF2aWV3LWNvbnRyb2xzIHtcbiAgICBwYWRkaW5nOiAxOXB4IDIwcHggMTJweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVlO1xufVxuXG4ubXgtZGF0YXZpZXctY29udHJvbHMgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuXG4ubXgtZGF0YXZpZXctY29udHJvbHMgLm14LWJ1dHRvbiArIC5teC1idXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjNlbTtcbn1cblxuLm14LWRhdGF2aWV3LW1lc3NhZ2Uge1xuICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbn1cbi5teC1kYXRhdmlldy1tZXNzYWdlID4gZGl2IHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG4ubXgtZGF0YXZpZXctbWVzc2FnZSA+IGRpdiA+IHAge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi8qIFRvcC1sZXZlbCBkYXRhIHZpZXcgaW4gd2luZG93IGlzIGEgc3BlY2lhbCBjYXNlLCBoYW5kbGUgaXQgYXMgc3VjaC4gKi9cbi5teC13aW5kb3ctdmlldyAubXgtd2luZG93LWJvZHkge1xuICAgIHBhZGRpbmc6IDA7XG59XG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRlbnQsXG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LXBsYWNlaG9sZGVyID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDE1cHg7XG59XG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRyb2xzLFxuLm14LXdpbmRvdy12aWV3IC5teC13aW5kb3ctYm9keSA+IC5teC1wbGFjZWhvbGRlciA+IC5teC1kYXRhdmlldyA+IC5teC1kYXRhdmlldy1jb250cm9scyB7XG4gICAgYm9yZGVyLXJhZGl1czogMHB4IDBweCA2cHggNnB4O1xufVxuIiwiLm14LWRpYWxvZyB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogNTAwcHg7XG4gICAgLyogSWYgdGhlIG1hcmdpbiBpcyBzZXQgdG8gYXV0bywgSUU5IHJlcG9ydHMgdGhlIGNhbGN1bGF0ZWQgdmFsdWUgb2YgdGhlXG4gICAgICogbWFyZ2luIGFzIHRoZSBhY3R1YWwgdmFsdWUuIE90aGVyIGJyb3dzZXJzIHdpbGwganVzdCByZXBvcnQgMC4gRWxpbWluYXRlXG4gICAgICogdGhpcyBkaWZmZXJlbmNlIGJ5IHNldHRpbmcgbWFyZ2luIHRvIDAgZm9yIGV2ZXJ5IGJyb3dzZXIuICovXG4gICAgbWFyZ2luOiAwO1xufVxuLm14LWRpYWxvZy1oZWFkZXIge1xuICAgIGN1cnNvcjogbW92ZTtcbn1cbi5teC1kaWFsb2ctYm9keSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG59XG4iLCIubXgtd2luZG93IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiA2MDBweDtcbiAgICAvKiBJZiB0aGUgbWFyZ2luIGlzIHNldCB0byBhdXRvLCBJRTkgcmVwb3J0cyB0aGUgY2FsY3VsYXRlZCB2YWx1ZSBvZiB0aGVcbiAgICAgKiBtYXJnaW4gYXMgdGhlIGFjdHVhbCB2YWx1ZS4gT3RoZXIgYnJvd3NlcnMgd2lsbCBqdXN0IHJlcG9ydCAwLiBFbGltaW5hdGVcbiAgICAgKiB0aGlzIGRpZmZlcmVuY2UgYnkgc2V0dGluZyBtYXJnaW4gdG8gMCBmb3IgZXZlcnkgYnJvd3Nlci4gKi9cbiAgICBtYXJnaW46IDA7XG59XG4ubXgtd2luZG93LWNvbnRlbnQge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm14LXdpbmRvdy1hY3RpdmUgLm14LXdpbmRvdy1oZWFkZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4IDZweCAwIDA7XG59XG4ubXgtd2luZG93LWhlYWRlciB7XG4gICAgY3Vyc29yOiBtb3ZlO1xufVxuLm14LXdpbmRvdy1ib2R5IHtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cbiIsIi5teC1kcm9wZG93bi1saXN0ICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1kcm9wZG93bi1saXN0IGltZyB7XG4gICAgd2lkdGg6IDM1cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kcm9wZG93bi1saXN0IGltZyB7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4ubXgtZHJvcGRvd24tbGlzdCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LWRyb3Bkb3duLWxpc3QgPiBsaSB7XG4gICAgcGFkZGluZzogNXB4IDEwcHggMTBweDtcbiAgICBib3JkZXI6IDFweCAjZGRkO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLm14LWRyb3Bkb3duLWxpc3QgPiBsaTpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG59XG4ubXgtZHJvcGRvd24tbGlzdCA+IGxpOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xufVxuLm14LWRyb3Bkb3duLWxpc3Qtc3RyaXBlZCA+IGxpOm50aC1jaGlsZCgybisxKSB7XG4gICAgYmFja2dyb3VuZDogI2Y5ZjlmOTtcbn1cbi5teC1kcm9wZG93bi1saXN0ID4gbGk6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7XG59XG4iLCIubXgtaGVhZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogOXB4O1xuICAgIGJhY2tncm91bmQ6ICMzMzM7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm14LWhlYWRlci1jZW50ZXIge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjb2xvcjogI2VlZTtcbiAgICBsaW5lLWhlaWdodDogMzBweDsgLyogaGVpZ2h0IG9mIGJ1dHRvbnMgKi9cbn1cbmJvZHlbZGlyPVwibHRyXCJdIC5teC1oZWFkZXItbGVmdCxcbmJvZHlbZGlyPVwicnRsXCJdIC5teC1oZWFkZXItcmlnaHQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDlweDtcbiAgICBsZWZ0OiA5cHg7XG59XG5ib2R5W2Rpcj1cImx0clwiXSAubXgtaGVhZGVyLXJpZ2h0LFxuYm9keVtkaXI9XCJydGxcIl0gLm14LWhlYWRlci1sZWZ0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA5cHg7XG4gICAgcmlnaHQ6IDlweDtcbn1cbiIsIi5teC10aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICAgIG1hcmdpbi10b3A6IDBweDtcbn1cbiIsIi5teC1saXN0dmlldyB7XG4gICAgcGFkZGluZzogOHB4O1xufVxuLm14LWxpc3R2aWV3ID4gdWwge1xuICAgIHBhZGRpbmc6IDBweDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LWxpc3R2aWV3ID4gdWwgPiBsaSB7XG4gICAgcGFkZGluZzogNXB4IDEwcHggMTBweDtcbiAgICBib3JkZXI6IDFweCAjZGRkO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG4ubXgtbGlzdHZpZXcgPiB1bCA+IGxpOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcbn1cbi5teC1saXN0dmlldyA+IHVsID4gbGk6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7XG59XG4ubXgtbGlzdHZpZXcgbGk6bnRoLWNoaWxkKDJuKzEpIHtcbiAgICBiYWNrZ3JvdW5kOiAjZjlmOWY5O1xufVxuLm14LWxpc3R2aWV3IGxpOm50aC1jaGlsZCgybisxKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcbn1cbi5teC1saXN0dmlldyA+IHVsID4gbGkuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNlZWU7XG59XG4ubXgtbGlzdHZpZXctY2xpY2thYmxlIHVsICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1saXN0dmlldy1lbXB0eSB7XG4gICAgY29sb3I6ICM5OTk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm14LWxpc3R2aWV3IC5teC1saXN0dmlldy1sb2FkaW5nIHtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5teC1saXN0dmlldy1zZWFyY2hiYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbi5teC1saXN0dmlldy1zZWFyY2hiYXIgPiBpbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtbGlzdHZpZXctc2VhcmNoYmFyID4gYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xufVxuW2Rpcj1cInJ0bFwiXSAubXgtbGlzdHZpZXctc2VhcmNoYmFyID4gYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbi5teC1saXN0dmlldy1zZWxlY3Rpb24ge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwYWRkaW5nOiAwIDE1cHggMCA1cHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1saXN0dmlldy1zZWxlY3Rpb24ge1xuICAgIHBhZGRpbmc6IDAgNXB4IDAgMTVweDtcbn1cbi5teC1saXN0dmlldy1zZWxlY3RhYmxlIC5teC1saXN0dmlldy1jb250ZW50IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtbGlzdHZpZXcgLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kOiAjZGVmO1xufVxuLm14LWxpc3R2aWV3IC5teC10YWJsZSB0aCxcbi5teC1saXN0dmlldyAubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDJweDtcbn1cbiIsIi5teC1sb2dpbiAuZm9ybS1jb250cm9sIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xufVxuIiwiLm14LW1lbnViYXIge1xuICAgIHBhZGRpbmc6IDhweDtcbn1cbi5teC1tZW51YmFyLWljb24ge1xuICAgIGhlaWdodDogMTZweDtcbn1cbi5teC1tZW51YmFyLW1vcmUtaWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDTUFBQUFqQ0FZQUFBQWUyYk5aQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFLTkpSRUZVZU5waS9QLy9QOE5nQVV3TWd3aU1PbWJVTWFPT0dYWE1xR05HSFRQWUhNT0NUZkRzMmJNZVFLb09pSTFCWENCdU1qWTIza0ZyZFl6b1RRaWdSbThndFFXTEcwT0JCcXlobFRwYzBkU09JeFRyYUt3T3EyUFVjV2hXcDdFNnJJNjVpVVB6VFJxcncrcVlHaHlhbTJpc0R0TXh3RVMxQ1VnRkFmRnhxQkNJRGtKUGJOUldoelUzalJaNm80NFpkY3lvWTBZZE0rcVlVY2NNVXNjQUJCZ0FVWHBFakUvQnMvSUFBQUFBU1VWT1JLNUNZSUk9KSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDE2cHggMTZweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuIiwiLm14LW5hdmlnYXRpb25saXN0IHtcbiAgICBwYWRkaW5nOiA4cHg7XG59XG4ubXgtbmF2aWdhdGlvbmxpc3QgbGk6aG92ZXIsXG4ubXgtbmF2aWdhdGlvbmxpc3QgbGk6Zm9jdXMsXG4ubXgtbmF2aWdhdGlvbmxpc3QgbGkuYWN0aXZlIHtcbiAgICBjb2xvcjogI0ZGRjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ5OERCO1xufVxuLm14LW5hdmlnYXRpb25saXN0ICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1uYXZpZ2F0aW9ubGlzdCAudGFibGUgdGgsXG4ubXgtbmF2aWdhdGlvbmxpc3QgLnRhYmxlIHRkIHtcbiAgICBwYWRkaW5nOiAycHg7XG59XG4iLCIubXgtcHJvZ3Jlc3Mge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDMwJTtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIG1hcmdpbjogYXV0bztcbiAgICB3aWR0aDogMjUwcHg7XG4gICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgYmFja2dyb3VuZDogIzMzMztcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgei1pbmRleDogNTAwMDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgcGFkZGluZzogMjBweCAxNXB4O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC40cyBlYXNlLWluLW91dDtcbn1cbi5teC1wcm9ncmVzcy1oaWRkZW4ge1xuICAgIG9wYWNpdHk6IDA7XG59XG4ubXgtcHJvZ3Jlc3MtbWVzc2FnZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG59XG4ubXgtcHJvZ3Jlc3MtZW1wdHkgLm14LXByb2dyZXNzLW1lc3NhZ2Uge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4ubXgtcHJvZ3Jlc3MtaW5kaWNhdG9yIHtcbiAgICB3aWR0aDogNzBweDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhSZ0FLQU1RQUFEbzZPb0dCZ1ZwYVduQndjSTZPanF5c3JGSlNVbVJrWkQ4L1AweE1UTTdPenFlbnAxaFlXRjFkWFVoSVNISnljb2VIaDB0TFMxZFhWNmlvcU0vUHoyVmxaVDA5UFRjM04wQkFRSVdGaGRiVzFseGNYSzJ0clVGQlFUTXpNd0FBQUNIL0MwNUZWRk5EUVZCRk1pNHdBd0VBQUFBaCtRUUVEQUFBQUN3QUFBQUFSZ0FLQUFBRms2RG5YUmFHV1plb3JxU0pybkI3cHJBcXY3VjQweDdRL1VCQXpnZjhDV3ZFNGhHV0RBNkx4aEVVeU5OTmYxWHBOWHU1ZHJoZWt0Y0NzNHpMNTVYNVNsYVBNVjRNREg2VnIraFR1d29QMVl2NFJTWnhjNE4zaFh1SGYzRnJVMjBxakZDT0lwQkZraDZVUUphWVB5aGhNWjRzb0RhaVZsczlVMHNyVFZGSXFFOVFxU3FySFVzN09Ub2xNN2NqdVRnNXRyZkFJUUFoK1FRRURBQUFBQ3dBQUFBQUNnQUtBQUFGSktEbkhZV2lGSWZvUVZyclFxTXJhK1RzbG5acjV0ckpvN3dVYXdZVFZRb1VDa29VQWdBaCtRUUVEQUFBQUN3QUFBQUFHUUFLQUFBRldhRG5NY1N5RUpLb3JrZWhLTVdoUGx4dFA2c0thWHdQZVJLYmtNUElIWHBJellFd3RCRnloV1N2c0dqV0ZqbUZsS2VvV3JFcjdWYkJ0RDVYMFcyQllTVWF0MG9QYllqTGVYYkpuNGcwbVJDS2RpSVZCUlFVTVNJaEFDSDVCQVFNQUFBQUxBQUFBQUFvQUFvQUFBV0tvT2NsUXhBTWthaXVETEVzaExUT1I2RW94YUUyV2U4M005R0RReXcrZ2g2SVpzbUVlQ0srYUNZeGt4U3ZIQWFOeWRVY0JsTGZZRWJBRmdtelFwZFpDSVI3Z2RuQ1RGek1GT3Vsd3YyT3IrWjBkaXQ0ZVFwZ2IyTXJaWFJvSzJwNUJRbHZVek1NZEZsYmVUbzhVa0JCUTFoSFFVcGRUaUlrSmdOVVNCNHRFeE1FV3F3VkJSUVVPU0loQUNINUJBUU1BQUFBTEFBQUFBQTNBQW9BQUFXOG9PY2hoaUFZaUtpdXlSQUVRN1RPRExFc2hEU3ZSNkVvaFlQS3NTa2FIVHRQSThOc05wSVBqblQ2U0VJMDJDeGtaT3h1VXF0SWM1eEp6Q1RUTkljeE8yVGZtb1BCYXpUTUJ1VG1ZRVpRVHdrekJYQlpCUUowUlFJekFYbE1BVE1MZmxJTE13cURXQXFHaDRrcmk0eU9LNUNSa3l1VmxncHpoM1lyZUl4N0szMlJnQ3VDbGdVSWgxOHpDWXhsTkpGcmJaWnhIa1JlU0R0TFpFODdVV3BWTzFkd1d5SVlKU2RnU1MwdkEyWkpIalVURXdSczNoVUZGQlJCSWlFQUlma0VCQXdBQUFBc0FBQUFBRVlBQ2dBQUJmQ2c1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkROSzhNc1N3RXlVNTFLQ2dVaFlNSzBHazZBVVBIWmtwMURCdVpyTFl4ZkhDKzRNY1FvaW1iSVNPbnVwTmlVZDhiMlNxaXJXY1NNd2w0ejJITURtYUJHZ2NXYTA0V013WndWQVl6QTNaYUF6TUVmR0FFTXdXQ1pnVVloazBZTXdLTFV3SXpBWkJaQVRNTGxWOExNd3FhWlFxZG5xQXJvcU9sSzZlb3FpdXNyYThyc2JJS2haNklLNHFqalN1UHFKSXJsSzJYSzVteUJSZWViRE1JbzNFMHFIY3pESzE5ZjdLREhreHJVRHRTY0ZZN1dIWmNPMTU4WWp0a2dtZ2lKRXlnR0NJQ2d3c1ljb2JVdURFQUQ4RWVFeVlROEVPd1FnRUtGSktJQ0FFQUlma0VCQXdBQUFBc0R3QUFBRGNBQ2dBQUJicWc1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkROSzhNc1N3RWlRclFLUm9CTzQ5ancydzZrbzJNZE5wSVBqalk3R05rN0haU3JLWjRJMXRGcHVoTVlpYkp1amtNaTlkb21SbkdUY05za0o0T1pnUnZXUVFZYzBVWU13SjRUQUl6QVgxU0FUTUxnbGdMaFlhSUs0cUxqU3VQa0pJcmxKVUxjb1oxSzNlTGVpdDhrSDhyZ1pVRUY0WmZNd2lMWkRTUWFqTU1sWEFlUkY1SU8wdGpUenRSYVZVN1YyOWJJaVFtS0VraUdDNHdaVWsxTndOcjJEMFRFd1FNSWlFQUlma0VCQXdBQUFBc0hnQUFBQ2dBQ2dBQUJZZWc1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkRwQUpkN3dNemtXTkRMRHFDbmtabXlXeU1mTkJPaWxXc2JtU3JDSE9iU1ZpaVBzdk1ZQzBhWmdNdWM0QUI5ekF6UVprb21BWFV5MERiRFYvSjUzVXJkM2dCWDI1aUsyUnpaeXRwZUFNWGJsSXpDSE5YTkhoZEhqeFJRRUZEVmtkQlNseE9JaVFtS0VnaUdDNHdXRWcxTndNSklpRUFJZmtFQkF3QUFBQXNMUUFBQUJrQUNnQUFCVldnNTEwV2hsbVhxSzZJSVFnR29nSmRiUU9yNm14ODc0eTJZQ2ZGNmhrM0NJdlFac2taamowRFpsbkQ1QVJRbm1CS3RhNndXWUdTMmx3OXM0WUxkWmhEWkpFZW1oQ1g4K3lPUHhISmhLcXJNQzR3TWg0aEFDSDVCQVFNQUFBQUxEd0FBQUFLQUFvQUFBVWlvT2RkRm9aWmwrZ0JYZXNDb3l0MzVPeVdkbXZtM2NtanZCUnJCaE9SVENoUkNBQTcpO1xufVxuIiwiLm14LXJlbG9hZC1ub3RpZmljYXRpb24ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiAxMDAxO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxcmVtO1xuXG4gICAgYm9yZGVyOiAxcHggc29saWQgaHNsKDIwMCwgOTYlLCA0MSUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgyMDAsIDk2JSwgNDQlKTtcblxuICAgIGJveC1zaGFkb3c6IDAgNXB4IDIwcHggcmdiYSgxLCAzNywgNTUsIDAuMTYpO1xuICAgIGNvbG9yOiB3aGl0ZTtcblxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDE0cHg7XG59XG4iLCIubXgtcmVzaXplci1uLFxuLm14LXJlc2l6ZXItcyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMHB4O1xufVxuLm14LXJlc2l6ZXItbiB7XG4gICAgdG9wOiAtNXB4O1xuICAgIGN1cnNvcjogbi1yZXNpemU7XG59XG4ubXgtcmVzaXplci1zIHtcbiAgICBib3R0b206IC01cHg7XG4gICAgY3Vyc29yOiBzLXJlc2l6ZTtcbn1cblxuLm14LXJlc2l6ZXItZSxcbi5teC1yZXNpemVyLXcge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuLm14LXJlc2l6ZXItZSB7XG4gICAgcmlnaHQ6IC01cHg7XG4gICAgY3Vyc29yOiBlLXJlc2l6ZTtcbn1cbi5teC1yZXNpemVyLXcge1xuICAgIGxlZnQ6IC01cHg7XG4gICAgY3Vyc29yOiB3LXJlc2l6ZTtcbn1cblxuLm14LXJlc2l6ZXItbncsXG4ubXgtcmVzaXplci1uZSxcbi5teC1yZXNpemVyLXN3LFxuLm14LXJlc2l6ZXItc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XG59XG5cbi5teC1yZXNpemVyLW53LFxuLm14LXJlc2l6ZXItbmUge1xuICAgIHRvcDogLTVweDtcbn1cbi5teC1yZXNpemVyLXN3LFxuLm14LXJlc2l6ZXItc2Uge1xuICAgIGJvdHRvbTogLTVweDtcbn1cbi5teC1yZXNpemVyLW53LFxuLm14LXJlc2l6ZXItc3cge1xuICAgIGxlZnQ6IC01cHg7XG59XG4ubXgtcmVzaXplci1uZSxcbi5teC1yZXNpemVyLXNlIHtcbiAgICByaWdodDogLTVweDtcbn1cblxuLm14LXJlc2l6ZXItbncge1xuICAgIGN1cnNvcjogbnctcmVzaXplO1xufVxuLm14LXJlc2l6ZXItbmUge1xuICAgIGN1cnNvcjogbmUtcmVzaXplO1xufVxuLm14LXJlc2l6ZXItc3cge1xuICAgIGN1cnNvcjogc3ctcmVzaXplO1xufVxuLm14LXJlc2l6ZXItc2Uge1xuICAgIGN1cnNvcjogc2UtcmVzaXplO1xufVxuIiwiLm14LXRleHQge1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbn1cbiIsIi5teC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiBub25lO1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbn1cbi5teC10ZXh0YXJlYSAubXgtdGV4dGFyZWEtbm9yZXNpemUge1xuICAgIGhlaWdodDogYXV0bztcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG59XG4ubXgtdGV4dGFyZWEgLm14LXRleHRhcmVhLWNvdW50ZXIge1xuICAgIGZvbnQtc2l6ZTogc21hbGxlcjtcbn1cbi5teC10ZXh0YXJlYSAuZm9ybS1jb250cm9sLXN0YXRpYyB7XG4gICAgd2hpdGUtc3BhY2U6IHByZS1saW5lO1xufVxuIiwiLm14LXVuZGVybGF5IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xufVxuIiwiLm14LWltYWdlem9vbSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5O1xufVxuLm14LWltYWdlem9vbS13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLm14LWltYWdlem9vbS1pbWFnZSB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xufVxuIiwiLm14LWRyb3Bkb3duIGxpIHtcbiAgICBwYWRkaW5nOiAzcHggMjBweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZHJvcGRvd24gbGFiZWwge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY29sb3I6ICMzMzM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZHJvcGRvd24gaW5wdXQge1xuICAgIG1hcmdpbjogMDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1kcm9wZG93biAuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNmOGY4Zjg7XG59XG4ubXgtc2VsZWN0Ym94IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LXNlbGVjdGJveC1jYXJldC13cmFwcGVyIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuIiwiLm14LWRlbW91c2Vyc3dpdGNoZXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMzYwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDIwMDAwO1xuICAgIGJveC1zaGFkb3c6IC0xcHggMCA1cHggcmdiYSgyOCw1OSw4NiwuMik7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlci1jb250ZW50IHtcbiAgICBwYWRkaW5nOiA4MHB4IDQwcHggMjBweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgY29sb3I6ICMzODdlYTI7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU9nQUFBQmdDQVlBQUFBWFNqN05BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQXlScFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TXkxak1ERXhJRFkyTGpFME5UWTJNU3dnTWpBeE1pOHdNaTh3TmkweE5EbzFOam95TnlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVOVE5pQW9UV0ZqYVc1MGIzTm9LU0lnZUcxd1RVMDZTVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG8wTXprd09UUkVNRFEyTkVZeE1VVTBRVFE0TVVJNU5UTkdNVVEzUXpFNU55SWdlRzF3VFUwNlJHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEbzBNemt3T1RSRU1UUTJORVl4TVVVMFFUUTRNVUk1TlROR01VUTNRekU1TnlJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qYzBSRU15TVVaR05EWTBRekV4UlRSQk5EZ3hRamsxTTBZeFJEZERNVGszSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pjMFJFTXlNakF3TkRZMFF6RXhSVFJCTkRneFFqazFNMFl4UkRkRE1UazNJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrZzF0Umx3QUFFRkZKUkVGVWVOcnNuWWwzVmNVZHgyZHU4ckpESUpDd0NnalZhclZvc1ZYYzZqbldubnBJUWxKV2w2T0NyUFlma2gxY2l1d2xMRm81dFQzbFZKUlZFVVVFUlFRSlM0Q1FRRWpDUzk3MCs1Mlo5M0lUREd1Uzk4ajcvVGp6N3IyL2U5OTlaTzU4N205K003K1owY05YYnNxS2FUTmVLVlZvbEttT0tiWDM5RXNWS2wxRVY2MklLSzN3QjV1SGNZZy8zM3lDNHgybS9FMmpSRVNTTE1HSmw4dXZZcnNIaWR1aFNBK21Vd2FZaWhsUk0zSEdPdXp1Wlg0Zy9SbHBpdDY4TkZ1S2gwalNEWWd4emxBTVc3V3BDQmIwNlJqTmlEWUh6azZ2UEpaMm1iRnArYStKTEN4b0hyYm5vVnB0eW1lZGxXSWlrblJBS1VOWFZRMERvT01BcUlKMlg4MzB5cFBwQitteVFsL2xIWTNES0xaYlRmbnNMNldvaUNRZFVNcmdWVlZqQWVoSWFHTXhaWGFlbi83WGMybVpNWnVYVm1MenFGSTJmL1lCMm85TTJleW9GQm1ScEFKS0tWbTk4UkZvUndCUUZzZ2RnTFErVFNFZEIwQkxzWnNCUUd1d3Y4NlV6VGtqeFVZa3FZQlNpbGR2SEFkQWgyRzNDUloxUisyMFNRM3BDZW1TZ2RpVUFkQlJBTFFGKzl1UWRnTlVhZVVWU1I2Z2xBR3IvL0U0Tm9NQWFBTjgweDExMHlZMXBXMUdiVmxDdi9SMy92QVE5amVac3JsWHBBaUpkS2NFTnpqUDdoZFU3VlErMGhOOTFxeVBwR3RHd2Yrc3dvYmRNWmVRSGtENm05Nnk2SDRwUWlKSnM2RGVpa1pnUVIrSEJTMUNsYmZXYVBQWjVhbFRXdFBYa2k0dXNGVmVaUjV3Q3ZhZm1vOU42YnlyVXB4RWVoeFFTdjgxRzNJQUtDQTFoUUQwSFBaM1hVbGpTQjJvaTU3QjVua0FpbHFJdVlEOWpZRDB1QlFwa1I0SGxGSzRaa01lQUIwUFFQTUI2TmxXWlhZM1Q1MGFTM05JaXdIb2l3QjBqSEw5TWJ1UVBoRnJLdExqZ0ZMZ2crWUQwUEdnTWcrQW5zRjJUelROSWJXWnVIVWhxcnpxOS82dzFqWWdsYzcvVVlxWFNJOENTaWxZdTQ0VzlDa0F5bXJ2S2ZpbmUxdW5URE1DNmNJaDJQd0o2VmNBbFBteEY5YjFYMmJDL0NZcFppSTlCaWdsRDVDMnVyamRiQUJhRGRVK2dUUnNUWTJ6cHRxMitQNFRrSDRqT1NQU1k0QlNzdGV1TFFDZ1R3UFFMQnhXd3ovZFo2Wk1GMGd0cEF0S3NIa0JnTWE3WVk0QTJnL05oTGRxSlhkRWVnUlFTb1NRYXNQV3pBZ0FQVVZMQ2toamtxMCtjejljOEFRMlR5TDFVeTVzY2p2U0RvRGFLcmtqMHUyQVVqTFdyV0cvNEZNQWxPTW56K0NPZTh6a2x3VFNOa2laTHhNQTZDTmV4UzZaandEcEVja2RrVzRIMUVPYUQwQ2Z3bTRPN3NqeGs0UlVyRVE3VU4rK2p5OHlwSHU5Nmp1a2p3SHFCY2tka1c0RjFONW8zV3FHQTQ3SEhmT1VEUTgwdTgza2x3WFNhMEY5RnBzL0lQVlZkcnlwK3N4WGU2VzFWNlQ3QUUxQXFnMzlybndmWGJNTGtNb1l5bXNoemNYbUw4cU9ON1hDb1B2L0lPMEZxT0llaUhRUG9QYUc2MWZsT1F0aGFDSHE4QXM3emFSWG1pV3JmeEhVVWI3YUcyL3Q1Y0NFYmVLZmluUWJvQjdTSE44WDJCKy93SEdrbndOU0daclZPYWkveGVZeHBGRmU5Wk5peU9DRXR5UzJWd0R0bnE1THZmNkRMRnZvdE9HQVovaFhCcEMrZWtteS9JYitLV0V0OGFyRFNQOEdxS2NsZHdUUTdvQTBFNy9BUWM2RGZUL2dia0I2WHJMOXVwQnE1VUlHQ1dxaGNrSDRqRVQ2TDBDdGtSd1NRTHYrUnphczVOdytuRDRscG9MWUY2Ynl0V3JKK2h1Q0NqZEJ2YURhZ3ZBOXFCcWd6aGRRQmRDdWh2VHY3S2dmQVVENWd3Y0I2VkhKL3BzQ2xZMXR6M2tmMVQ0eWIxRzNBMVNaczFjQTdWSkl4d0xRa2Q0Z0hIV2d2aTd4dTdjRXFuNHNaRkhwbzM0S1VLVXhTUUR0b2gvYytONFFWMjJ6djN0S2FmV0ZxWGhkQWhwdUd0UUZCUFdQb2FvdnM1S0EvZy9waUNtZEx5ODhBZlNPSVdYd09BTWFzZ0RvUmV6dk1oVnZTRi9wcllIS1lJZW5rZTREb0lPOG1sWGVuVGo3bFNtZEp3RWlBdWlkUVBwdXZ2V3JORnNxRGNQY2RnTFNlbmtrdDVHWFd4YzhZMEZWeXJzUG1uM09YQXhxRjBDVnJpMEI5TFlocFFYbDhncTBBQzJLWTBvclpzak03YmNQS2h2aXhtSnZqRmZSZFRpbzJMMGxFNW9Kb0xmOW42aDZoMzJsdy8xVUlkOEMwaC9rMGR3SnFBdHBTVG5wK0VNaExhdS91NUVPbU5LNUVwZ3ZnTjR5cEhqekcxZEYwK29rOXZlYmlUT2w4ZWpPUUdXZ0EwZk9qTURSQ0srK0NwLzFBTFpmbXJLNUp5U1hCTkJiZ0hURllNVVJIbHBGQUdpZHJacE5uTmtvajZrcllGM0V5Q1NtKzFYaWtXdXVYTWVsRmZlYnNqbmlxd3FnTndWcEhnQmw1RkYvKzdaWFpvK1orS2FFQjNZZHFNVUE5RkZ2VmUveGFnNXhvMXZ4RlhTSFpKbEZBZlQ2LzZsTkt6SUJKZ3ZSRU8rWEhnU2tFbm5VMWZtOFpUR0h1VDNTd1ZkbEZmZ1FmVldrbzZaOHRyZ1pBbWhub0M1SDRURWp2RjlhYmYzUzhsa3Q4dGk2SEZUT216UlcyVVdoOUppMktqQUhrdXR2bFdzSlBvYThGMWdGMEk2UUxodGlDNDlXV1FDMHdmcWw1YlBFWCtvMldKZjBBNkQwVlVjck8zK1NqcDlxeFA1M09FZGdmMENOUmw2VUFtZ0MwbHlVRTFyVFltWDc5c3dCVkwya0JiSzc4MzN6RXVTMy9vMXlBOGtkcks2NHdFZlZkRGtZQzN6WVRKd3BMOHgwQnJTdHdDeWxYM3FQTHlYSFVWNitObVhpSS9WUTNoZmg4MEZrL1JoblhST1dsUS9qRkk2UFlJOE5UVCtiaWhreXIxSTZBdW9MQ254U3d5cFlnREp5R2Z0N1Rka2NDUkhzNlJxTjBteGdZdklOVEFucjJvejlZOHExQ2g4MUZXK2NreHhMSTBCOTFhdkErNlVEVUNyNHR2NEdrQjZUeDVrTVdKZHJWd1cyalV0czBCc1JzcTY4NGhMMFA5a2Fqd08zeGxTK0ppTnVlak9nb1FZTnh2SEcrL0k0Ync4NzNHVnR6bVErazZvVnVUNFdlTFNIZFdBb01JSWZET1Evb1dMQno2d09RMWN0c3o3MlVrQWRwSXM1bFFvYk1qaEZTQ09BWlFpYlZLdFNCdGgzKzNyTE9zcUhHN29KMFdKQi9BcldnR284cktkd0xWKzBaMlErNVY0Q3FJYzBSN2wrdkVIZUVUcUtsL1VoVXpwWEdwQlM3Vmx0ZkkvRERJY0QwT0hLTnZqcFVhR3pjVDgyNXNNUUFhcytBeDBEL1dzQ3BldlNiWm5MWGdGb0NOUnd3RDJiL3I4QXBIV0NSUW8vc3cwcmFVcUxMYlJLRHdXTWpNY2UxdWJISnFCbHErQlZEMm9OZEJmd3hRc1pTbk1GZ3d0WHBrNXBFa0R2Q2tnWGNRVEhRNjRCaVc5aXc3NjY3MDNwUEdtWXVGdWU0Zm9QTXF6dmFxZHIxU1dBa2RYaVlvRFp6NE5xb1NYWkdSN2tER01IcWRkQ1YwOUxpLzJMZ2RGczNlZHhQYTY2Y25aNjVWMFJYUEhraXUyWitMdnp0VkY5ZWgyZ2lZZThkWkdiUmRDOWZpOHFOaUNWenBQdW1MdFlNdGF0eWZLZ011Qy9DREFXQWRBaXhhM1JPUTVlRHpDM1JzY3RiOXdlTjBGM09YQWhqQTJFRnNlMHZFM2FUcTZ1bTNDdVVSdE4vemVLL1didGZPU3IwTVZDOTJvKzlPcUw3ZnA2SDM1L1c0RC9VN1pPL0xvT3NNMENaTmhxNkRsQ1MwZXd6Y1YxT2REeC81dURxN0d2OHFETGc0N1Yvd0p0MjFPMG5iK3gxd0xxSVVYVnlUeWc3QUs2ZHNRR1Y3cUdOWjB2SGVtOVRQcXNXYy9DM1E5UUZhTFFzeFpWQ1BnNHdWcGZIUGZWZGtFdmxVRm9BMTkxMWlHSTQ1K0JyVmJHd1ZZSnRQVzFzRnRkK0Y2MEJTRkE3ZFpDMW5hWDBIVWQ3aGZTYVJzdGh4ZUlVZlg2K2NXZjI3UEdmeG9kUDhKV3U3MlkxYnR6aVd2dE9XTkxmZnc2NC8vRmRIdy9acjhUaTkveG11KzA3Y2V2aVlYMEhmZGpmcjhWKzYzdDlQRy9NUDZ5TVNyeFZ6TmxYL2JXMU9wb1JiOVVMYmwxMTE3YnlYSGlDWVpmWnAzcE81N3JvTHZ6MTg2MUtuTVQxNFIxNWdiWG1jN3VwYS96M2M3T2RhSnZhOFc5d2JYdGZGQjFuU3F1dWdrTG1nTmRRVUNMcFRRdFZXN2dMRyt1dDFxd2FMQnVSc1BhcVlqZFY1cGZoU1hVR2FGNzBaSUhIUUJsOGJ3YUFyUlZXOHRMQkRRdE5NTWpvOVpTRzFwc1o3bHhkYU5tNzROUnNPaWFzZWFYdlRXM3hUa3pMVjZ2elFYN0FTbG5zMmZrQzZ0RXo2ck14dStSQjBkVU5FZGFldE5IbW55NmF5UkltMGNUemF0QitsVFppQmI3a3VNc2VNK3BTRk94bEZzUkFUUjFRTjJQengzS2RZNjdWY0V6bThhcHpPWnNLUTRpS2RlTzBwc2JpVzc0eDMrNGdGVmVocVRSNTRDUFlEalc4YmlaOEpaMHlZZ0lvQ2tDS1dkbzU0aU1JYjQxb2hicGEwQjZVWXFIaUFDYU9xQnlYbDVhMC9pYW5Cd1EvaTFBbGVCN0VRRTBkVUI5bXpHOUkrTWVLOUozaXZQeFNMVlhSQUJOR1VnNTN2UkJaVVBOckxEdjlLQ3NjQzBpZ0tZV3FFT1ZuWXZIOXAxU3pucFFaUTRlRVFFMGhVQmxueWtqa2ZLOGY4b1pBZzREVkJsb0xDS0FwZ2lrakxwNlNDVkNCcmthbS9vZTZVZUFLbE5RaWdpZ0tRSXFBN0RaZnpyRXEyaEZqOUNxQWxRSndoY1JRRk1FMUJMdm41WjRGY2Nqc3NYM3BMVDRpZ2lncVFNcUc1TFlMVFBRcXk1NVVFOExxQ0lDYU9xQVN0K1U4K3dNOEtwNlgvVTlKYUNLQ0tDcEErcG83NThXdFZsVWZkaUJPbDh5VzBRQVRSRlE2WjhPZGFEcWVOV1hyYjdWQUZVYWswUUUwTlFCVlE4SlZYMjVZdmdQeXFqanBuUytEQllYRVVCVEE5UUZJNzFGZFkxSmhxdUhxeCtaQUtwTTBpd2lnS1lJcUlSMEJBQ056K1JBSzNxQ3kvbVowbmtOa2tNaUFtZ3FaUHpXQlFSMGxFb0U1TnNaenhpTXozVTNhd0NyWkpLSUFKb0NvREl5NlY2L2JrbGNMbmxRVHdKVThWTUZVSkhrZzdxUXNiN3NvcUZsalhmUlJIMzE5eWRUT3ZleTVKSUFLcElhc0RMZ1liaUhWZmx1bXZOSXg3ajZseW1iSzkwMEFxaElDb0JhcU5xVzdYTmliSEErcDJNNUFWREZxZ3FnSXNrSGRaRmZ4Vm9OQnFBRFEyZHFQYXpWcG15T2ROVUlvQ0pKZjJCYkZ0RS92Y2Y1cWJyQXE5bVFkTnI3cStkTTJXeDVxQUtvU1BKaFhVdy9sZjJxZzBKYUxtMVFEVXQ3MHBUUGxxbERCVkNSRkFBMTExdFZWSC8xQU8rclVoajRjQkk2d0RwTC9GVUJWQ1Q1c0M3aFVvdkR1SDZtY3NzdXFsQ3cvaWttd0NycnBBcWdJa2wvdUp1WERGUnVPWG5DV2hBNjAyQmhOWW9ydnRXWmlXOUtaZ21nSXNtRmRTbGg5ZU5VN2NLMjhXb3cxNkxrZEtKbkZFTU1KODZVeUNVQlZDUzVzQzRyc3JBYU93U3VNTFNJTGdNZ3p1SDRETTZkTlJVenJraHVDYUFpeVN3QW01YWg2cXZaQ2x5c3dwRkxiWTFNTlRobUVQOTVVL0dHOUxVS29DTEpnM1U1NDRFQnF5N3gxalUzQWF4RDlxSUg5anlPYWszbDYxSWRGa0JGa2xZNHFsYjBkVmJWZHQyRSsxcUphOHdCcXhramZJSEpWTDRtRTNnTG9DTEpnZlVkcnNaTzMzV0FiUlZPaEJ3bS9GY1VwS0FlMk5aNlM0dXR2bXdtdlNLWko0Q0s5SGpCMmZndWdlM25yU3ZCTFFHZ3JwbXA3YXFvQTlWYTJqb2dYR2Ntdjl3b3VTZUFpdlE0c08vQmxBWjlBV2gvSFBiMzhCWjBxQlpUb2haV1oyWHJzVjhQZllPWk1sMkcwQW1nSWoxYXVEYXNqSVJnN1FjUTZkUG1ocXJGWVgvMkNtR0ZEV1pJNHFWQTZVc0VOenAxYWt3QUZSSHBxUUszL29Nc2ZIS2NLMU5mR3pSaFZKODRySUcvTG5EZ21zQUZValJrdUxWdkdqS01qWUpxZ0w2eGJ0cmtxQUFxSXRMZGhYRGRhbktaajcwK2dRdEp4RmIzSWJpQkJ6ZkRYd3RBUGNCVzN4SzRlWWFiQXFPNWJmUkFOMnUzNmx3ejlNMm5YNnE0SzYzdytCWGJBd0ZVSkdVbHNuYXRCbkE1QUM0L3d3S3M4Z0VvdDNtQnF5cEhFaGEzUGJpSlNqVDFnWnZiQ2RCcXprVWNoWTdIVVczWGVOVlJmNzVGRzgxdUl1T09OZThZWmZVYjMydnRjTytXUTYrKzJBNmNoOS9meHAvTTFDWitsZjNNME81ckVmd21WUkZ0VCtsTWZHVGFZNlBwQm1UaW9peXY1M0dXTWpwYjIvTUNxTWhkS29Wck5tUTZVRlV1QU1peFd3ZHVGZ3AzTm81em9NOEtQRnR4Yk9NdzZ3N1ZhdjFMa0p2UTkwSjYzY2tMb1FPZzdWNFV2NlR2N0Q0QWxQc3hBVlNrMTh2UVZWVzBTckJJT3N0YnM0aTNaaEZ2aGVQV2pEWHB3QjNyd0ZvNW83QzErakJFc0pUV0lvWjF4bG5oZG9DMmF0ZngxSUxmdEZ0M2JQVnhxMjJ0dWJmYVVhKy9Da0NiZDg3NFkvVC9BZ3dBMk1pN0hkQWUraWtBQUFBQVNVVk9SSzVDWUlJPSkgdG9wIHJpZ2h0IG5vLXJlcGVhdCAjMWIzMTQ5O1xuICAgIC8qIGJhY2tncm91bmQtYXR0YWNoZW1lbnQgbG9jYWwgaXMgbm90IHN1cHBvcnRlZCBvbiBJRThcbiAgICAgKiB3aGVuIHRoaXMgaXMgcGFydCBvZiBiYWNrZ3JvdW5kIHRoZSBjb21wbGV0ZSBiYWNrZ3JvdW5kIGlzIGlnbm9yZWQgKi9cbiAgICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGxvY2FsO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXIgdWwge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luLXRvcDogMjVweDtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM0OTYwNzY7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgY29sb3I6ICMzODdlYTI7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM0OTYwNzY7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBoMiB7XG4gICAgbWFyZ2luOiAyMHB4IDAgNXB4O1xuICAgIGNvbG9yOiAjNWJjNGZlO1xuICAgIGZvbnQtc2l6ZTogMjhweDtcbn1cbi5teC1kZW1vdXNlcnN3aXRjaGVyIGgzIHtcbiAgICBtYXJnaW46IDAgMCAycHg7XG4gICAgY29sb3I6ICM1YmM0ZmU7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXIgLmFjdGl2ZSBoMyB7XG4gICAgY29sb3I6ICMxMWVmZGI7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXItdG9nZ2xlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAyNSU7XG4gICAgbGVmdDogLTM1cHg7XG4gICAgd2lkdGg6IDM1cHg7XG4gICAgaGVpZ2h0OiAzOHB4O1xuICAgIG1hcmdpbi10b3A6IC00MHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4O1xuICAgIGJveC1zaGFkb3c6IC0xcHggMCA1cHggcmdiYSgyOCw1OSw4NiwuMik7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQklBQUFBU0NBWUFBQUJXem81WEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeVJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNeTFqTURFeElEWTJMakUwTlRZMk1Td2dNakF4TWk4d01pOHdOaTB4TkRvMU5qb3lOeUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTmlBb1RXRmphVzUwYjNOb0tTSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEbzNORVJETWpGR1JEUTJORU14TVVVMFFUUTRNVUk1TlROR01VUTNRekU1TnlJZ2VHMXdUVTA2Ukc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvM05FUkRNakZHUlRRMk5FTXhNVVUwUVRRNE1VSTVOVE5HTVVRM1F6RTVOeUkrSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pjMFJFTXlNVVpDTkRZMFF6RXhSVFJCTkRneFFqazFNMFl4UkRkRE1UazNJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPamMwUkVNeU1VWkRORFkwUXpFeFJUUkJORGd4UWprMU0wWXhSRGRETVRrM0lpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCsxWm92TkFBQUFXZEpSRUZVZU5xTTFNMHJSRkVZeC9FN1k1cUlRcE9VYklpeW1RV3lzQmd2SlZKSzJWZ3J5WlF0S1NVTFplbFBzQjBMWmFOWmpKVU5LMUZza0pxVXZDUzNOQXNaYzN6UDlOemlPT2ZlZWVwVGM4L2M4K3ZjOHhaVFNubU9ha0VHS2R6Z0RCWFh5NTRPTXNTd2pwTDZXOWNZc3J4ZlpXdmNVdTd5MFZkTFVDYytWWGdkMm9MaXhwZk9JT21GMTdUdEhUT296WXV1cEN4QWFOQjlEVUVmZURVYkU4YnpFWHhaZXJQMDBsOGhoM0xVaUhUSU1yNk45ajJrc1lvaWh2LzFkZXlMU1Z6S0ttMWpFVytXZlpWMkxmOGdza2pJY3djV3BPTSsrcEhDRlBMb3NnV3RvQ3lkN2pDUE9qemhHSEhMeURQWTFhY2hhSmhEeFJqNnJCd0pYVXVvTjBJRzhJSXY3T2lHQmp4YWR2QUlUdVQzcmV4NmMwU2JLQVNmbG5VY0JUM0pUVGhBanlXa0dVVnNCRUVGUjVDZXJ6WHBOSWFjckZJckpuQ0JCM211QnZraEIxVFAyN2hNL0x2eDN6bDZneEhxdTZjNzRraVU4SXhHaktKZExyclQzeGZkandBREFKYU14UDJidkQyQkFBQUFBRWxGVGtTdVFtQ0MpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0ICMxYjMxNDk7XG59XG4iLCIvKiBtYXN0ZXIgZGV0YWlscyBzY3JlZW4gZm9yIG1vYmlsZSAqL1xuLm14LW1hc3Rlci1kZXRhaWwtc2NyZWVuIHtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLXNjcmVlbiAubXgtbWFzdGVyLWRldGFpbC1kZXRhaWxzIHtcbiAgICBwYWRkaW5nOiAxNXB4O1xufVxuXG4ubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNztcbn1cblxuLm14LW1hc3Rlci1kZXRhaWwtc2NyZWVuLWhlYWRlci1jYXB0aW9uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxN3B4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLXNjcmVlbi1oZWFkZXItY2xvc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDUwcHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiAjMDA3YWZmO1xufVxuXG5ib2R5W2Rpcj1cInJ0bFwiXSAubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyLWNsb3NlIHtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0OiBhdXRvO1xufVxuXG4ubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyLWNsb3NlOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFwyMDM5XCI7XG4gICAgZm9udC1zaXplOiA1MnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xufVxuXG4vKiBjbGFzc2VzIGZvciBjb250ZW50IHBhZ2UgKi9cbi5teC1tYXN0ZXItZGV0YWlsLWNvbnRlbnQtZml4IHtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLWNvbnRlbnQtaGlkZGVuIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMCUpO1xufVxuXG5ib2R5W2Rpcj1cInJ0bFwiXSAubXgtbWFzdGVyLWRldGFpbC1jb250ZW50LWhpZGRlbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwMCUpO1xufSIsIi5yZXBvcnRpbmdSZXBvcnQge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbiIsIi5yZXBvcnRpbmdSZXBvcnRQYXJhbWV0ZXIgdGgge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuIiwiLnJlcG9ydGluZ0RhdGVSYW5nZSB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbn1cbi5yZXBvcnRpbmdEYXRlUmFuZ2UgdGgge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xufVxuLnJlcG9ydGluZ0RhdGVSYW5nZSB0ZCB7XG4gICAgcGFkZGluZzogNXB4O1xufVxuIiwiLm14LXJlcG9ydG1hdHJpeCB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0aCwgLm14LXJlcG9ydG1hdHJpeCB0ZCB7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzO1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZCB7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0Ym9keSB0cjpudGgtY2hpbGQoMm4rMSkgdGQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG59XG5cbi5teC1yZXBvcnRtYXRyaXggdGJvZHkgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDE2cHg7XG4gICAgbWF4LWhlaWdodDogMTZweDtcbn1cbiIsIi8qIFdBUk5JTkc6IElFOSBsaW1pdHMgbmVzdGVkIGltcG9ydHMgdG8gdGhyZWUgbGV2ZWxzIGRlZXA6IGh0dHA6Ly9qb3JnZWFsYmFsYWRlam8uY29tLzIwMTEvMDUvMjgvaW50ZXJuZXQtZXhwbG9yZXItbGltaXRzLW5lc3RlZC1pbXBvcnQtY3NzLXN0YXRlbWVudHMgKi9cblxuLyogZGlqaXQgYmFzZSAqL1xuXG4vKiBtZW5kaXggYmFzZSAqL1xuXG4vKiB3aWRnZXRzICovXG5cbi8qIHJlcG9ydGluZyAqL1xuIl0sInNvdXJjZVJvb3QiOiIifQ==*/ diff --git a/theme_old/styles/web/sass/core/_legacy/bootstrap/_bootstrap-rtl.scss b/theme_old/styles/web/sass/core/_legacy/bootstrap/_bootstrap-rtl.scss deleted file mode 100644 index 8c768d5..0000000 --- a/theme_old/styles/web/sass/core/_legacy/bootstrap/_bootstrap-rtl.scss +++ /dev/null @@ -1,1570 +0,0 @@ -/******************************************************************************* - * bootstrap-rtl (version 3.3.4) - * Author: Morteza Ansarinia (http://github.com/morteza) - * Created on: August 13,2015 - * Project: bootstrap-rtl - * Copyright: Unlicensed Public Domain - *******************************************************************************/ - -[dir='rtl'] { - .flip.text-left { - text-align: right; - } - .flip.text-right { - text-align: left; - } - .list-unstyled { - padding-right: 0; - padding-left: initial; - } - .list-inline { - padding-right: 0; - padding-left: initial; - margin-right: -5px; - margin-left: 0; - } - dd { - margin-right: 0; - margin-left: initial; - } - @media (min-width: 768px) { - .dl-horizontal dt { - float: right; - clear: right; - text-align: left; - } - .dl-horizontal dd { - margin-right: 180px; - margin-left: 0; - } - } - blockquote { - border-right: 5px solid #eeeeee; - border-left: 0; - } - .blockquote-reverse, - blockquote.pull-left { - padding-left: 15px; - padding-right: 0; - border-left: 5px solid #eeeeee; - border-right: 0; - text-align: left; - } - .col-xs-1, - .col-sm-1, - .col-md-1, - .col-lg-1, - .col-xs-2, - .col-sm-2, - .col-md-2, - .col-lg-2, - .col-xs-3, - .col-sm-3, - .col-md-3, - .col-lg-3, - .col-xs-4, - .col-sm-4, - .col-md-4, - .col-lg-4, - .col-xs-5, - .col-sm-5, - .col-md-5, - .col-lg-5, - .col-xs-6, - .col-sm-6, - .col-md-6, - .col-lg-6, - .col-xs-7, - .col-sm-7, - .col-md-7, - .col-lg-7, - .col-xs-8, - .col-sm-8, - .col-md-8, - .col-lg-8, - .col-xs-9, - .col-sm-9, - .col-md-9, - .col-lg-9, - .col-xs-10, - .col-sm-10, - .col-md-10, - .col-lg-10, - .col-xs-11, - .col-sm-11, - .col-md-11, - .col-lg-11, - .col-xs-12, - .col-sm-12, - .col-md-12, - .col-lg-12 { - position: relative; - min-height: 1px; - padding-left: 15px; - padding-right: 15px; - } - .col-xs-1, - .col-xs-2, - .col-xs-3, - .col-xs-4, - .col-xs-5, - .col-xs-6, - .col-xs-7, - .col-xs-8, - .col-xs-9, - .col-xs-10, - .col-xs-11, - .col-xs-12 { - float: right; - } - .col-xs-12 { - width: 100%; - } - .col-xs-11 { - width: 91.66666667%; - } - .col-xs-10 { - width: 83.33333333%; - } - .col-xs-9 { - width: 75%; - } - .col-xs-8 { - width: 66.66666667%; - } - .col-xs-7 { - width: 58.33333333%; - } - .col-xs-6 { - width: 50%; - } - .col-xs-5 { - width: 41.66666667%; - } - .col-xs-4 { - width: 33.33333333%; - } - .col-xs-3 { - width: 25%; - } - .col-xs-2 { - width: 16.66666667%; - } - .col-xs-1 { - width: 8.33333333%; - } - .col-xs-pull-12 { - left: 100%; - right: auto; - } - .col-xs-pull-11 { - left: 91.66666667%; - right: auto; - } - .col-xs-pull-10 { - left: 83.33333333%; - right: auto; - } - .col-xs-pull-9 { - left: 75%; - right: auto; - } - .col-xs-pull-8 { - left: 66.66666667%; - right: auto; - } - .col-xs-pull-7 { - left: 58.33333333%; - right: auto; - } - .col-xs-pull-6 { - left: 50%; - right: auto; - } - .col-xs-pull-5 { - left: 41.66666667%; - right: auto; - } - .col-xs-pull-4 { - left: 33.33333333%; - right: auto; - } - .col-xs-pull-3 { - left: 25%; - right: auto; - } - .col-xs-pull-2 { - left: 16.66666667%; - right: auto; - } - .col-xs-pull-1 { - left: 8.33333333%; - right: auto; - } - .col-xs-pull-0 { - left: auto; - right: auto; - } - .col-xs-push-12 { - right: 100%; - left: 0; - } - .col-xs-push-11 { - right: 91.66666667%; - left: 0; - } - .col-xs-push-10 { - right: 83.33333333%; - left: 0; - } - .col-xs-push-9 { - right: 75%; - left: 0; - } - .col-xs-push-8 { - right: 66.66666667%; - left: 0; - } - .col-xs-push-7 { - right: 58.33333333%; - left: 0; - } - .col-xs-push-6 { - right: 50%; - left: 0; - } - .col-xs-push-5 { - right: 41.66666667%; - left: 0; - } - .col-xs-push-4 { - right: 33.33333333%; - left: 0; - } - .col-xs-push-3 { - right: 25%; - left: 0; - } - .col-xs-push-2 { - right: 16.66666667%; - left: 0; - } - .col-xs-push-1 { - right: 8.33333333%; - left: 0; - } - .col-xs-push-0 { - right: auto; - left: 0; - } - .col-xs-offset-12 { - margin-right: 100%; - margin-left: 0; - } - .col-xs-offset-11 { - margin-right: 91.66666667%; - margin-left: 0; - } - .col-xs-offset-10 { - margin-right: 83.33333333%; - margin-left: 0; - } - .col-xs-offset-9 { - margin-right: 75%; - margin-left: 0; - } - .col-xs-offset-8 { - margin-right: 66.66666667%; - margin-left: 0; - } - .col-xs-offset-7 { - margin-right: 58.33333333%; - margin-left: 0; - } - .col-xs-offset-6 { - margin-right: 50%; - margin-left: 0; - } - .col-xs-offset-5 { - margin-right: 41.66666667%; - margin-left: 0; - } - .col-xs-offset-4 { - margin-right: 33.33333333%; - margin-left: 0; - } - .col-xs-offset-3 { - margin-right: 25%; - margin-left: 0; - } - .col-xs-offset-2 { - margin-right: 16.66666667%; - margin-left: 0; - } - .col-xs-offset-1 { - margin-right: 8.33333333%; - margin-left: 0; - } - .col-xs-offset-0 { - margin-right: 0%; - margin-left: 0; - } - @media (min-width: 768px) { - .col-sm-1, - .col-sm-2, - .col-sm-3, - .col-sm-4, - .col-sm-5, - .col-sm-6, - .col-sm-7, - .col-sm-8, - .col-sm-9, - .col-sm-10, - .col-sm-11, - .col-sm-12 { - float: right; - } - .col-sm-12 { - width: 100%; - } - .col-sm-11 { - width: 91.66666667%; - } - .col-sm-10 { - width: 83.33333333%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-8 { - width: 66.66666667%; - } - .col-sm-7 { - width: 58.33333333%; - } - .col-sm-6 { - width: 50%; - } - .col-sm-5 { - width: 41.66666667%; - } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-2 { - width: 16.66666667%; - } - .col-sm-1 { - width: 8.33333333%; - } - .col-sm-pull-12 { - left: 100%; - right: auto; - } - .col-sm-pull-11 { - left: 91.66666667%; - right: auto; - } - .col-sm-pull-10 { - left: 83.33333333%; - right: auto; - } - .col-sm-pull-9 { - left: 75%; - right: auto; - } - .col-sm-pull-8 { - left: 66.66666667%; - right: auto; - } - .col-sm-pull-7 { - left: 58.33333333%; - right: auto; - } - .col-sm-pull-6 { - left: 50%; - right: auto; - } - .col-sm-pull-5 { - left: 41.66666667%; - right: auto; - } - .col-sm-pull-4 { - left: 33.33333333%; - right: auto; - } - .col-sm-pull-3 { - left: 25%; - right: auto; - } - .col-sm-pull-2 { - left: 16.66666667%; - right: auto; - } - .col-sm-pull-1 { - left: 8.33333333%; - right: auto; - } - .col-sm-pull-0 { - left: auto; - right: auto; - } - .col-sm-push-12 { - right: 100%; - left: 0; - } - .col-sm-push-11 { - right: 91.66666667%; - left: 0; - } - .col-sm-push-10 { - right: 83.33333333%; - left: 0; - } - .col-sm-push-9 { - right: 75%; - left: 0; - } - .col-sm-push-8 { - right: 66.66666667%; - left: 0; - } - .col-sm-push-7 { - right: 58.33333333%; - left: 0; - } - .col-sm-push-6 { - right: 50%; - left: 0; - } - .col-sm-push-5 { - right: 41.66666667%; - left: 0; - } - .col-sm-push-4 { - right: 33.33333333%; - left: 0; - } - .col-sm-push-3 { - right: 25%; - left: 0; - } - .col-sm-push-2 { - right: 16.66666667%; - left: 0; - } - .col-sm-push-1 { - right: 8.33333333%; - left: 0; - } - .col-sm-push-0 { - right: auto; - left: 0; - } - .col-sm-offset-12 { - margin-right: 100%; - margin-left: 0; - } - .col-sm-offset-11 { - margin-right: 91.66666667%; - margin-left: 0; - } - .col-sm-offset-10 { - margin-right: 83.33333333%; - margin-left: 0; - } - .col-sm-offset-9 { - margin-right: 75%; - margin-left: 0; - } - .col-sm-offset-8 { - margin-right: 66.66666667%; - margin-left: 0; - } - .col-sm-offset-7 { - margin-right: 58.33333333%; - margin-left: 0; - } - .col-sm-offset-6 { - margin-right: 50%; - margin-left: 0; - } - .col-sm-offset-5 { - margin-right: 41.66666667%; - margin-left: 0; - } - .col-sm-offset-4 { - margin-right: 33.33333333%; - margin-left: 0; - } - .col-sm-offset-3 { - margin-right: 25%; - margin-left: 0; - } - .col-sm-offset-2 { - margin-right: 16.66666667%; - margin-left: 0; - } - .col-sm-offset-1 { - margin-right: 8.33333333%; - margin-left: 0; - } - .col-sm-offset-0 { - margin-right: 0%; - margin-left: 0; - } - } - @media (min-width: 992px) { - .col-md-1, - .col-md-2, - .col-md-3, - .col-md-4, - .col-md-5, - .col-md-6, - .col-md-7, - .col-md-8, - .col-md-9, - .col-md-10, - .col-md-11, - .col-md-12 { - float: right; - } - .col-md-12 { - width: 100%; - } - .col-md-11 { - width: 91.66666667%; - } - .col-md-10 { - width: 83.33333333%; - } - .col-md-9 { - width: 75%; - } - .col-md-8 { - width: 66.66666667%; - } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; - } - .col-md-5 { - width: 41.66666667%; - } - .col-md-4 { - width: 33.33333333%; - } - .col-md-3 { - width: 25%; - } - .col-md-2 { - width: 16.66666667%; - } - .col-md-1 { - width: 8.33333333%; - } - .col-md-pull-12 { - left: 100%; - right: auto; - } - .col-md-pull-11 { - left: 91.66666667%; - right: auto; - } - .col-md-pull-10 { - left: 83.33333333%; - right: auto; - } - .col-md-pull-9 { - left: 75%; - right: auto; - } - .col-md-pull-8 { - left: 66.66666667%; - right: auto; - } - .col-md-pull-7 { - left: 58.33333333%; - right: auto; - } - .col-md-pull-6 { - left: 50%; - right: auto; - } - .col-md-pull-5 { - left: 41.66666667%; - right: auto; - } - .col-md-pull-4 { - left: 33.33333333%; - right: auto; - } - .col-md-pull-3 { - left: 25%; - right: auto; - } - .col-md-pull-2 { - left: 16.66666667%; - right: auto; - } - .col-md-pull-1 { - left: 8.33333333%; - right: auto; - } - .col-md-pull-0 { - left: auto; - right: auto; - } - .col-md-push-12 { - right: 100%; - left: 0; - } - .col-md-push-11 { - right: 91.66666667%; - left: 0; - } - .col-md-push-10 { - right: 83.33333333%; - left: 0; - } - .col-md-push-9 { - right: 75%; - left: 0; - } - .col-md-push-8 { - right: 66.66666667%; - left: 0; - } - .col-md-push-7 { - right: 58.33333333%; - left: 0; - } - .col-md-push-6 { - right: 50%; - left: 0; - } - .col-md-push-5 { - right: 41.66666667%; - left: 0; - } - .col-md-push-4 { - right: 33.33333333%; - left: 0; - } - .col-md-push-3 { - right: 25%; - left: 0; - } - .col-md-push-2 { - right: 16.66666667%; - left: 0; - } - .col-md-push-1 { - right: 8.33333333%; - left: 0; - } - .col-md-push-0 { - right: auto; - left: 0; - } - .col-md-offset-12 { - margin-right: 100%; - margin-left: 0; - } - .col-md-offset-11 { - margin-right: 91.66666667%; - margin-left: 0; - } - .col-md-offset-10 { - margin-right: 83.33333333%; - margin-left: 0; - } - .col-md-offset-9 { - margin-right: 75%; - margin-left: 0; - } - .col-md-offset-8 { - margin-right: 66.66666667%; - margin-left: 0; - } - .col-md-offset-7 { - margin-right: 58.33333333%; - margin-left: 0; - } - .col-md-offset-6 { - margin-right: 50%; - margin-left: 0; - } - .col-md-offset-5 { - margin-right: 41.66666667%; - margin-left: 0; - } - .col-md-offset-4 { - margin-right: 33.33333333%; - margin-left: 0; - } - .col-md-offset-3 { - margin-right: 25%; - margin-left: 0; - } - .col-md-offset-2 { - margin-right: 16.66666667%; - margin-left: 0; - } - .col-md-offset-1 { - margin-right: 8.33333333%; - margin-left: 0; - } - .col-md-offset-0 { - margin-right: 0%; - margin-left: 0; - } - } - @media (min-width: 1200px) { - .col-lg-1, - .col-lg-2, - .col-lg-3, - .col-lg-4, - .col-lg-5, - .col-lg-6, - .col-lg-7, - .col-lg-8, - .col-lg-9, - .col-lg-10, - .col-lg-11, - .col-lg-12 { - float: right; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-pull-12 { - left: 100%; - right: auto; - } - .col-lg-pull-11 { - left: 91.66666667%; - right: auto; - } - .col-lg-pull-10 { - left: 83.33333333%; - right: auto; - } - .col-lg-pull-9 { - left: 75%; - right: auto; - } - .col-lg-pull-8 { - left: 66.66666667%; - right: auto; - } - .col-lg-pull-7 { - left: 58.33333333%; - right: auto; - } - .col-lg-pull-6 { - left: 50%; - right: auto; - } - .col-lg-pull-5 { - left: 41.66666667%; - right: auto; - } - .col-lg-pull-4 { - left: 33.33333333%; - right: auto; - } - .col-lg-pull-3 { - left: 25%; - right: auto; - } - .col-lg-pull-2 { - left: 16.66666667%; - right: auto; - } - .col-lg-pull-1 { - left: 8.33333333%; - right: auto; - } - .col-lg-pull-0 { - left: auto; - right: auto; - } - .col-lg-push-12 { - right: 100%; - left: 0; - } - .col-lg-push-11 { - right: 91.66666667%; - left: 0; - } - .col-lg-push-10 { - right: 83.33333333%; - left: 0; - } - .col-lg-push-9 { - right: 75%; - left: 0; - } - .col-lg-push-8 { - right: 66.66666667%; - left: 0; - } - .col-lg-push-7 { - right: 58.33333333%; - left: 0; - } - .col-lg-push-6 { - right: 50%; - left: 0; - } - .col-lg-push-5 { - right: 41.66666667%; - left: 0; - } - .col-lg-push-4 { - right: 33.33333333%; - left: 0; - } - .col-lg-push-3 { - right: 25%; - left: 0; - } - .col-lg-push-2 { - right: 16.66666667%; - left: 0; - } - .col-lg-push-1 { - right: 8.33333333%; - left: 0; - } - .col-lg-push-0 { - right: auto; - left: 0; - } - .col-lg-offset-12 { - margin-right: 100%; - margin-left: 0; - } - .col-lg-offset-11 { - margin-right: 91.66666667%; - margin-left: 0; - } - .col-lg-offset-10 { - margin-right: 83.33333333%; - margin-left: 0; - } - .col-lg-offset-9 { - margin-right: 75%; - margin-left: 0; - } - .col-lg-offset-8 { - margin-right: 66.66666667%; - margin-left: 0; - } - .col-lg-offset-7 { - margin-right: 58.33333333%; - margin-left: 0; - } - .col-lg-offset-6 { - margin-right: 50%; - margin-left: 0; - } - .col-lg-offset-5 { - margin-right: 41.66666667%; - margin-left: 0; - } - .col-lg-offset-4 { - margin-right: 33.33333333%; - margin-left: 0; - } - .col-lg-offset-3 { - margin-right: 25%; - margin-left: 0; - } - .col-lg-offset-2 { - margin-right: 16.66666667%; - margin-left: 0; - } - .col-lg-offset-1 { - margin-right: 8.33333333%; - margin-left: 0; - } - .col-lg-offset-0 { - margin-right: 0%; - margin-left: 0; - } - } - caption { - text-align: right; - } - th:not(.mx-left-aligned) { - text-align: right; - } - @media screen and (max-width: 767px) { - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-right: 0; - border-left: initial; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-left: 0; - border-right: initial; - } - } - .radio label, - .checkbox label { - padding-right: 20px; - padding-left: initial; - } - .radio input[type='radio'], - .radio-inline input[type='radio'], - .checkbox input[type='checkbox'], - .checkbox-inline input[type='checkbox'] { - margin-right: -20px; - margin-left: auto; - } - .radio-inline, - .checkbox-inline { - padding-right: 20px; - padding-left: 0; - } - .radio-inline + .radio-inline, - .checkbox-inline + .checkbox-inline { - margin-right: 10px; - margin-left: 0; - } - .has-feedback .form-control { - padding-left: 42.5px; - padding-right: 12px; - } - .form-control-feedback { - left: 0; - right: auto; - } - @media (min-width: 768px) { - .form-inline label { - padding-right: 0; - padding-left: initial; - } - .form-inline .radio input[type='radio'], - .form-inline .checkbox input[type='checkbox'] { - margin-right: 0; - margin-left: auto; - } - } - @media (min-width: 768px) { - .form-horizontal .control-label { - text-align: left; - } - } - .form-horizontal .has-feedback .form-control-feedback { - left: 15px; - right: auto; - } - .caret { - margin-right: 2px; - margin-left: 0; - } - .dropdown-menu { - right: 0; - left: auto; - float: left; - text-align: right; - } - .dropdown-menu.pull-right { - left: 0; - right: auto; - float: right; - } - .dropdown-menu-right { - left: auto; - right: 0; - } - .dropdown-menu-left { - left: 0; - right: auto; - } - @media (min-width: 768px) { - .navbar-right .dropdown-menu { - left: auto; - right: 0; - } - .navbar-right .dropdown-menu-left { - left: 0; - right: auto; - } - } - .btn-group > .btn, - .btn-group-vertical > .btn { - float: right; - } - .btn-group .btn + .btn, - .btn-group .btn + .btn-group, - .btn-group .btn-group + .btn, - .btn-group .btn-group + .btn-group { - margin-right: -1px; - margin-left: 0px; - } - .btn-toolbar { - margin-right: -5px; - margin-left: 0px; - } - .btn-toolbar .btn-group, - .btn-toolbar .input-group { - float: right; - } - .btn-toolbar > .btn, - .btn-toolbar > .btn-group, - .btn-toolbar > .input-group { - margin-right: 5px; - margin-left: 0px; - } - .btn-group > .btn:first-child { - margin-right: 0; - } - .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 0; - border-top-left-radius: 0; - } - .btn-group > .btn:last-child:not(:first-child), - .btn-group > .dropdown-toggle:not(:first-child) { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 0; - border-top-right-radius: 0; - } - .btn-group > .btn-group { - float: right; - } - .btn-group.btn-group-justified > .btn, - .btn-group.btn-group-justified > .btn-group { - float: none; - } - .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; - } - .btn-group > .btn-group:first-child > .btn:last-child, - .btn-group > .btn-group:first-child > .dropdown-toggle { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 0; - border-top-left-radius: 0; - } - .btn-group > .btn-group:last-child > .btn:first-child { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 0; - border-top-right-radius: 0; - } - .btn .caret { - margin-right: 0; - } - .btn-group-vertical > .btn + .btn, - .btn-group-vertical > .btn + .btn-group, - .btn-group-vertical > .btn-group + .btn, - .btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-right: 0; - } - .input-group .form-control { - float: right; - } - .input-group .form-control:first-child, - .input-group-addon:first-child, - .input-group-btn:first-child > .btn, - .input-group-btn:first-child > .btn-group > .btn, - .input-group-btn:first-child > .dropdown-toggle, - .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), - .input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-bottom-right-radius: 4px; - border-top-right-radius: 4px; - border-bottom-left-radius: 0; - border-top-left-radius: 0; - } - .input-group-addon:first-child { - border-left: 0px; - border-right: 1px solid; - } - .input-group .form-control:last-child, - .input-group-addon:last-child, - .input-group-btn:last-child > .btn, - .input-group-btn:last-child > .btn-group > .btn, - .input-group-btn:last-child > .dropdown-toggle, - .input-group-btn:first-child > .btn:not(:first-child), - .input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-bottom-left-radius: 4px; - border-top-left-radius: 4px; - border-bottom-right-radius: 0; - border-top-right-radius: 0; - } - .input-group-addon:last-child { - border-left-width: 1px; - border-left-style: solid; - border-right: 0px; - } - .input-group-btn > .btn + .btn { - margin-right: -1px; - margin-left: auto; - } - .input-group-btn:first-child > .btn, - .input-group-btn:first-child > .btn-group { - margin-left: -1px; - margin-right: auto; - } - .input-group-btn:last-child > .btn, - .input-group-btn:last-child > .btn-group { - margin-right: -1px; - margin-left: auto; - } - .nav { - padding-right: 0; - padding-left: initial; - } - .nav-tabs > li { - float: right; - } - .nav-tabs > li > a { - margin-left: auto; - margin-right: -2px; - border-radius: 4px 4px 0 0; - } - .nav-pills > li { - float: right; - } - .nav-pills > li > a { - border-radius: 4px; - } - .nav-pills > li + li { - margin-right: 2px; - margin-left: auto; - } - .nav-stacked > li { - float: none; - } - .nav-stacked > li + li { - margin-right: 0; - margin-left: auto; - } - .nav-justified > .dropdown .dropdown-menu { - right: auto; - } - .nav-tabs-justified > li > a { - margin-left: 0; - margin-right: auto; - } - @media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-radius: 4px 4px 0 0; - } - } - @media (min-width: 768px) { - .navbar-header { - float: right; - } - } - .navbar-collapse { - padding-right: 15px; - padding-left: 15px; - } - .navbar-brand { - float: right; - } - @media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-right: -15px; - margin-left: auto; - } - } - .navbar-toggle { - float: left; - margin-left: 15px; - margin-right: auto; - } - @media (max-width: 767px) { - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 25px 5px 15px; - } - } - @media (min-width: 768px) { - .navbar-nav { - float: right; - } - .navbar-nav > li { - float: right; - } - } - @media (min-width: 768px) { - .navbar-left.flip { - float: right !important; - } - .navbar-right:last-child { - margin-left: -15px; - margin-right: auto; - } - .navbar-right.flip { - float: left !important; - margin-left: -15px; - margin-right: auto; - } - .navbar-right .dropdown-menu { - left: 0; - right: auto; - } - } - @media (min-width: 768px) { - .navbar-text { - float: right; - } - .navbar-text.navbar-right:last-child { - margin-left: 0; - margin-right: auto; - } - } - .pagination { - padding-right: 0; - } - .pagination > li > a, - .pagination > li > span { - float: right; - margin-right: -1px; - margin-left: 0px; - } - .pagination > li:first-child > a, - .pagination > li:first-child > span { - margin-left: 0; - border-bottom-right-radius: 4px; - border-top-right-radius: 4px; - border-bottom-left-radius: 0; - border-top-left-radius: 0; - } - .pagination > li:last-child > a, - .pagination > li:last-child > span { - margin-right: -1px; - border-bottom-left-radius: 4px; - border-top-left-radius: 4px; - border-bottom-right-radius: 0; - border-top-right-radius: 0; - } - .pager { - padding-right: 0; - padding-left: initial; - } - .pager .next > a, - .pager .next > span { - float: left; - } - .pager .previous > a, - .pager .previous > span { - float: right; - } - .nav-pills > li > a > .badge { - margin-left: 0px; - margin-right: 3px; - } - .list-group-item > .badge { - float: left; - } - .list-group-item > .badge + .badge { - margin-left: 5px; - margin-right: auto; - } - .alert-dismissable, - .alert-dismissible { - padding-left: 35px; - padding-right: 15px; - } - .alert-dismissable .close, - .alert-dismissible .close { - right: auto; - left: -21px; - } - .progress-bar { - float: right; - } - .media > .pull-left { - margin-right: 10px; - } - .media > .pull-left.flip { - margin-right: 0; - margin-left: 10px; - } - .media > .pull-right { - margin-left: 10px; - } - .media > .pull-right.flip { - margin-left: 0; - margin-right: 10px; - } - .media-right, - .media > .pull-right { - padding-right: 10px; - padding-left: initial; - } - .media-left, - .media > .pull-left { - padding-left: 10px; - padding-right: initial; - } - .media-list { - padding-right: 0; - padding-left: initial; - list-style: none; - } - .list-group { - padding-right: 0; - padding-left: initial; - } - .panel > .table:first-child > thead:first-child > tr:first-child td:first-child, - .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, - .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, - .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, - .panel > .table:first-child > thead:first-child > tr:first-child th:first-child, - .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, - .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, - .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-right-radius: 3px; - border-top-left-radius: 0; - } - .panel > .table:first-child > thead:first-child > tr:first-child td:last-child, - .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, - .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, - .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, - .panel > .table:first-child > thead:first-child > tr:first-child th:last-child, - .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, - .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, - .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-left-radius: 3px; - border-top-right-radius: 0; - } - .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, - .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, - .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, - .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, - .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, - .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, - .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, - .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; - border-top-right-radius: 0; - } - .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, - .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, - .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, - .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, - .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, - .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, - .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, - .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 3px; - border-top-left-radius: 0; - } - .panel > .table-bordered > thead > tr > th:first-child, - .panel > .table-responsive > .table-bordered > thead > tr > th:first-child, - .panel > .table-bordered > tbody > tr > th:first-child, - .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, - .panel > .table-bordered > tfoot > tr > th:first-child, - .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .panel > .table-bordered > thead > tr > td:first-child, - .panel > .table-responsive > .table-bordered > thead > tr > td:first-child, - .panel > .table-bordered > tbody > tr > td:first-child, - .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, - .panel > .table-bordered > tfoot > tr > td:first-child, - .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-right: 0; - border-left: none; - } - .panel > .table-bordered > thead > tr > th:last-child, - .panel > .table-responsive > .table-bordered > thead > tr > th:last-child, - .panel > .table-bordered > tbody > tr > th:last-child, - .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, - .panel > .table-bordered > tfoot > tr > th:last-child, - .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .panel > .table-bordered > thead > tr > td:last-child, - .panel > .table-responsive > .table-bordered > thead > tr > td:last-child, - .panel > .table-bordered > tbody > tr > td:last-child, - .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, - .panel > .table-bordered > tfoot > tr > td:last-child, - .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: none; - border-left: 0; - } - .embed-responsive .embed-responsive-item, - .embed-responsive iframe, - .embed-responsive embed, - .embed-responsive object { - right: 0; - left: auto; - } - .close { - float: left; - } - .modal-footer { - text-align: left; - } - .modal-footer.flip { - text-align: right; - } - .modal-footer .btn + .btn { - margin-left: auto; - margin-right: 5px; - } - .modal-footer .btn-group .btn + .btn { - margin-right: -1px; - margin-left: auto; - } - .modal-footer .btn-block + .btn-block { - margin-right: 0; - margin-left: auto; - } - .popover { - left: auto; - text-align: right; - } - .popover.top > .arrow { - right: 50%; - left: auto; - margin-right: -11px; - margin-left: auto; - } - .popover.top > .arrow:after { - margin-right: -10px; - margin-left: auto; - } - .popover.bottom > .arrow { - right: 50%; - left: auto; - margin-right: -11px; - margin-left: auto; - } - .popover.bottom > .arrow:after { - margin-right: -10px; - margin-left: auto; - } - .carousel-control { - right: 0; - bottom: 0; - } - .carousel-control.left { - right: auto; - left: 0; - background-image: -webkit-linear-gradient( - left, - color-stop(rgba(0, 0, 0, 0.5) 0%), - color-stop(rgba(0, 0, 0, 0.0001) 100%) - ); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); - } - .carousel-control.right { - left: auto; - right: 0; - background-image: -webkit-linear-gradient( - left, - color-stop(rgba(0, 0, 0, 0.0001) 0%), - color-stop(rgba(0, 0, 0, 0.5) 100%) - ); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); - } - .carousel-control .icon-prev, - .carousel-control .glyphicon-chevron-left { - left: 50%; - right: auto; - margin-right: -10px; - } - .carousel-control .icon-next, - .carousel-control .glyphicon-chevron-right { - right: 50%; - left: auto; - margin-left: -10px; - } - .carousel-indicators { - right: 50%; - left: 0; - margin-right: -30%; - margin-left: 0; - padding-left: 0; - } - @media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: 0; - margin-right: -15px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-left: 0; - margin-right: -15px; - } - .carousel-caption { - left: 20%; - right: 20%; - padding-bottom: 30px; - } - } - .pull-right.flip { - float: left !important; - } - .pull-left.flip { - float: right !important; - } -} diff --git a/theme_old/styles/web/sass/core/_legacy/bootstrap/_bootstrap.scss b/theme_old/styles/web/sass/core/_legacy/bootstrap/_bootstrap.scss deleted file mode 100644 index 90fc44f..0000000 --- a/theme_old/styles/web/sass/core/_legacy/bootstrap/_bootstrap.scss +++ /dev/null @@ -1,6820 +0,0 @@ -/*! - * Bootstrap v3.3.4 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ -html { - font-family: sans-serif; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -body { - margin: 0; -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden], -template { - display: none; -} -a { - background-color: transparent; -} -a:active, -a:hover { - outline: 0; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -h1 { - margin: 0.67em 0; - font-size: 2em; -} -mark { - color: #000; - background: #ff0; -} -small { - font-size: 80%; -} -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - height: 0; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - margin: 0; - font: inherit; - color: inherit; -} -button { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html input[type='button'], -input[type='reset'], -input[type='submit'] { - -webkit-appearance: button; - cursor: pointer; -} -//button[disabled], -//html input[disabled] { -// cursor: default; -//} -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} -input { - line-height: normal; -} -input[type='checkbox'], -input[type='radio'] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 0; -} -input[type='number']::-webkit-inner-spin-button, -input[type='number']::-webkit-outer-spin-button { - height: auto; -} -input[type='search'] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} -input[type='search']::-webkit-search-cancel-button, -input[type='search']::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - padding: 0.35em 0.625em 0.75em; - margin: 0 2px; - border: 1px solid #c0c0c0; -} -legend { - padding: 0; - border: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -table { - border-spacing: 0; - border-collapse: collapse; -} -td, -th { - padding: 0; -} -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print { - *, - *:before, - *:after { - color: #000 !important; - text-shadow: none !important; - background: transparent !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: ' (' attr(href) ')'; - } - abbr[title]:after { - content: ' (' attr(title) ')'; - } - a[href^='#']:after, - a[href^='javascript:']:after { - content: ''; - } - pre, - blockquote { - border: 1px solid #999; - - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - select { - background: #fff !important; - } - .navbar { - display: none; - } - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; - } - .label { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table td, - .table th { - background-color: #fff !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} -@font-face { - font-family: 'Glyphicons Halflings'; - src: url('./fonts/glyphicons-halflings-regular.woff2') format('woff2'), - url('./fonts/glyphicons-halflings-regular.woff') format('woff'); -} -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.glyphicon-asterisk:before { - content: '\2a'; -} -.glyphicon-plus:before { - content: '\2b'; -} -.glyphicon-euro:before, -.glyphicon-eur:before { - content: '\20ac'; -} -.glyphicon-minus:before { - content: '\2212'; -} -.glyphicon-cloud:before { - content: '\2601'; -} -.glyphicon-envelope:before { - content: '\2709'; -} -.glyphicon-pencil:before { - content: '\270f'; -} -.glyphicon-glass:before { - content: '\e001'; -} -.glyphicon-music:before { - content: '\e002'; -} -.glyphicon-search:before { - content: '\e003'; -} -.glyphicon-heart:before { - content: '\e005'; -} -.glyphicon-star:before { - content: '\e006'; -} -.glyphicon-star-empty:before { - content: '\e007'; -} -.glyphicon-user:before { - content: '\e008'; -} -.glyphicon-film:before { - content: '\e009'; -} -.glyphicon-th-large:before { - content: '\e010'; -} -.glyphicon-th:before { - content: '\e011'; -} -.glyphicon-th-list:before { - content: '\e012'; -} -.glyphicon-ok:before { - content: '\e013'; -} -.glyphicon-remove:before { - content: '\e014'; -} -.glyphicon-zoom-in:before { - content: '\e015'; -} -.glyphicon-zoom-out:before { - content: '\e016'; -} -.glyphicon-off:before { - content: '\e017'; -} -.glyphicon-signal:before { - content: '\e018'; -} -.glyphicon-cog:before { - content: '\e019'; -} -.glyphicon-trash:before { - content: '\e020'; -} -.glyphicon-home:before { - content: '\e021'; -} -.glyphicon-file:before { - content: '\e022'; -} -.glyphicon-time:before { - content: '\e023'; -} -.glyphicon-road:before { - content: '\e024'; -} -.glyphicon-download-alt:before { - content: '\e025'; -} -.glyphicon-download:before { - content: '\e026'; -} -.glyphicon-upload:before { - content: '\e027'; -} -.glyphicon-inbox:before { - content: '\e028'; -} -.glyphicon-play-circle:before { - content: '\e029'; -} -.glyphicon-repeat:before { - content: '\e030'; -} -.glyphicon-refresh:before { - content: '\e031'; -} -.glyphicon-list-alt:before { - content: '\e032'; -} -.glyphicon-lock:before { - content: '\e033'; -} -.glyphicon-flag:before { - content: '\e034'; -} -.glyphicon-headphones:before { - content: '\e035'; -} -.glyphicon-volume-off:before { - content: '\e036'; -} -.glyphicon-volume-down:before { - content: '\e037'; -} -.glyphicon-volume-up:before { - content: '\e038'; -} -.glyphicon-qrcode:before { - content: '\e039'; -} -.glyphicon-barcode:before { - content: '\e040'; -} -.glyphicon-tag:before { - content: '\e041'; -} -.glyphicon-tags:before { - content: '\e042'; -} -.glyphicon-book:before { - content: '\e043'; -} -.glyphicon-bookmark:before { - content: '\e044'; -} -.glyphicon-print:before { - content: '\e045'; -} -.glyphicon-camera:before { - content: '\e046'; -} -.glyphicon-font:before { - content: '\e047'; -} -.glyphicon-bold:before { - content: '\e048'; -} -.glyphicon-italic:before { - content: '\e049'; -} -.glyphicon-text-height:before { - content: '\e050'; -} -.glyphicon-text-width:before { - content: '\e051'; -} -.glyphicon-align-left:before { - content: '\e052'; -} -.glyphicon-align-center:before { - content: '\e053'; -} -.glyphicon-align-right:before { - content: '\e054'; -} -.glyphicon-align-justify:before { - content: '\e055'; -} -.glyphicon-list:before { - content: '\e056'; -} -.glyphicon-indent-left:before { - content: '\e057'; -} -.glyphicon-indent-right:before { - content: '\e058'; -} -.glyphicon-facetime-video:before { - content: '\e059'; -} -.glyphicon-picture:before { - content: '\e060'; -} -.glyphicon-map-marker:before { - content: '\e062'; -} -.glyphicon-adjust:before { - content: '\e063'; -} -.glyphicon-tint:before { - content: '\e064'; -} -.glyphicon-edit:before { - content: '\e065'; -} -.glyphicon-share:before { - content: '\e066'; -} -.glyphicon-check:before { - content: '\e067'; -} -.glyphicon-move:before { - content: '\e068'; -} -.glyphicon-step-backward:before { - content: '\e069'; -} -.glyphicon-fast-backward:before { - content: '\e070'; -} -.glyphicon-backward:before { - content: '\e071'; -} -.glyphicon-play:before { - content: '\e072'; -} -.glyphicon-pause:before { - content: '\e073'; -} -.glyphicon-stop:before { - content: '\e074'; -} -.glyphicon-forward:before { - content: '\e075'; -} -.glyphicon-fast-forward:before { - content: '\e076'; -} -.glyphicon-step-forward:before { - content: '\e077'; -} -.glyphicon-eject:before { - content: '\e078'; -} -.glyphicon-chevron-left:before { - content: '\e079'; -} -.glyphicon-chevron-right:before { - content: '\e080'; -} -.glyphicon-plus-sign:before { - content: '\e081'; -} -.glyphicon-minus-sign:before { - content: '\e082'; -} -.glyphicon-remove-sign:before { - content: '\e083'; -} -.glyphicon-ok-sign:before { - content: '\e084'; -} -.glyphicon-question-sign:before { - content: '\e085'; -} -.glyphicon-info-sign:before { - content: '\e086'; -} -.glyphicon-screenshot:before { - content: '\e087'; -} -.glyphicon-remove-circle:before { - content: '\e088'; -} -.glyphicon-ok-circle:before { - content: '\e089'; -} -.glyphicon-ban-circle:before { - content: '\e090'; -} -.glyphicon-arrow-left:before { - content: '\e091'; -} -.glyphicon-arrow-right:before { - content: '\e092'; -} -.glyphicon-arrow-up:before { - content: '\e093'; -} -.glyphicon-arrow-down:before { - content: '\e094'; -} -.glyphicon-share-alt:before { - content: '\e095'; -} -.glyphicon-resize-full:before { - content: '\e096'; -} -.glyphicon-resize-small:before { - content: '\e097'; -} -.glyphicon-exclamation-sign:before { - content: '\e101'; -} -.glyphicon-gift:before { - content: '\e102'; -} -.glyphicon-leaf:before { - content: '\e103'; -} -.glyphicon-fire:before { - content: '\e104'; -} -.glyphicon-eye-open:before { - content: '\e105'; -} -.glyphicon-eye-close:before { - content: '\e106'; -} -.glyphicon-warning-sign:before { - content: '\e107'; -} -.glyphicon-plane:before { - content: '\e108'; -} -.glyphicon-calendar:before { - content: '\e109'; -} -.glyphicon-random:before { - content: '\e110'; -} -.glyphicon-comment:before { - content: '\e111'; -} -.glyphicon-magnet:before { - content: '\e112'; -} -.glyphicon-chevron-up:before { - content: '\e113'; -} -.glyphicon-chevron-down:before { - content: '\e114'; -} -.glyphicon-retweet:before { - content: '\e115'; -} -.glyphicon-shopping-cart:before { - content: '\e116'; -} -.glyphicon-folder-close:before { - content: '\e117'; -} -.glyphicon-folder-open:before { - content: '\e118'; -} -.glyphicon-resize-vertical:before { - content: '\e119'; -} -.glyphicon-resize-horizontal:before { - content: '\e120'; -} -.glyphicon-hdd:before { - content: '\e121'; -} -.glyphicon-bullhorn:before { - content: '\e122'; -} -.glyphicon-bell:before { - content: '\e123'; -} -.glyphicon-certificate:before { - content: '\e124'; -} -.glyphicon-thumbs-up:before { - content: '\e125'; -} -.glyphicon-thumbs-down:before { - content: '\e126'; -} -.glyphicon-hand-right:before { - content: '\e127'; -} -.glyphicon-hand-left:before { - content: '\e128'; -} -.glyphicon-hand-up:before { - content: '\e129'; -} -.glyphicon-hand-down:before { - content: '\e130'; -} -.glyphicon-circle-arrow-right:before { - content: '\e131'; -} -.glyphicon-circle-arrow-left:before { - content: '\e132'; -} -.glyphicon-circle-arrow-up:before { - content: '\e133'; -} -.glyphicon-circle-arrow-down:before { - content: '\e134'; -} -.glyphicon-globe:before { - content: '\e135'; -} -.glyphicon-wrench:before { - content: '\e136'; -} -.glyphicon-tasks:before { - content: '\e137'; -} -.glyphicon-filter:before { - content: '\e138'; -} -.glyphicon-briefcase:before { - content: '\e139'; -} -.glyphicon-fullscreen:before { - content: '\e140'; -} -.glyphicon-dashboard:before { - content: '\e141'; -} -.glyphicon-paperclip:before { - content: '\e142'; -} -.glyphicon-heart-empty:before { - content: '\e143'; -} -.glyphicon-link:before { - content: '\e144'; -} -.glyphicon-phone:before { - content: '\e145'; -} -.glyphicon-pushpin:before { - content: '\e146'; -} -.glyphicon-usd:before { - content: '\e148'; -} -.glyphicon-gbp:before { - content: '\e149'; -} -.glyphicon-sort:before { - content: '\e150'; -} -.glyphicon-sort-by-alphabet:before { - content: '\e151'; -} -.glyphicon-sort-by-alphabet-alt:before { - content: '\e152'; -} -.glyphicon-sort-by-order:before { - content: '\e153'; -} -.glyphicon-sort-by-order-alt:before { - content: '\e154'; -} -.glyphicon-sort-by-attributes:before { - content: '\e155'; -} -.glyphicon-sort-by-attributes-alt:before { - content: '\e156'; -} -.glyphicon-unchecked:before { - content: '\e157'; -} -.glyphicon-expand:before { - content: '\e158'; -} -.glyphicon-collapse-down:before { - content: '\e159'; -} -.glyphicon-collapse-up:before { - content: '\e160'; -} -.glyphicon-log-in:before { - content: '\e161'; -} -.glyphicon-flash:before { - content: '\e162'; -} -.glyphicon-log-out:before { - content: '\e163'; -} -.glyphicon-new-window:before { - content: '\e164'; -} -.glyphicon-record:before { - content: '\e165'; -} -.glyphicon-save:before { - content: '\e166'; -} -.glyphicon-open:before { - content: '\e167'; -} -.glyphicon-saved:before { - content: '\e168'; -} -.glyphicon-import:before { - content: '\e169'; -} -.glyphicon-export:before { - content: '\e170'; -} -.glyphicon-send:before { - content: '\e171'; -} -.glyphicon-floppy-disk:before { - content: '\e172'; -} -.glyphicon-floppy-saved:before { - content: '\e173'; -} -.glyphicon-floppy-remove:before { - content: '\e174'; -} -.glyphicon-floppy-save:before { - content: '\e175'; -} -.glyphicon-floppy-open:before { - content: '\e176'; -} -.glyphicon-credit-card:before { - content: '\e177'; -} -.glyphicon-transfer:before { - content: '\e178'; -} -.glyphicon-cutlery:before { - content: '\e179'; -} -.glyphicon-header:before { - content: '\e180'; -} -.glyphicon-compressed:before { - content: '\e181'; -} -.glyphicon-earphone:before { - content: '\e182'; -} -.glyphicon-phone-alt:before { - content: '\e183'; -} -.glyphicon-tower:before { - content: '\e184'; -} -.glyphicon-stats:before { - content: '\e185'; -} -.glyphicon-sd-video:before { - content: '\e186'; -} -.glyphicon-hd-video:before { - content: '\e187'; -} -.glyphicon-subtitles:before { - content: '\e188'; -} -.glyphicon-sound-stereo:before { - content: '\e189'; -} -.glyphicon-sound-dolby:before { - content: '\e190'; -} -.glyphicon-sound-5-1:before { - content: '\e191'; -} -.glyphicon-sound-6-1:before { - content: '\e192'; -} -.glyphicon-sound-7-1:before { - content: '\e193'; -} -.glyphicon-copyright-mark:before { - content: '\e194'; -} -.glyphicon-registration-mark:before { - content: '\e195'; -} -.glyphicon-cloud-download:before { - content: '\e197'; -} -.glyphicon-cloud-upload:before { - content: '\e198'; -} -.glyphicon-tree-conifer:before { - content: '\e199'; -} -.glyphicon-tree-deciduous:before { - content: '\e200'; -} -.glyphicon-cd:before { - content: '\e201'; -} -.glyphicon-save-file:before { - content: '\e202'; -} -.glyphicon-open-file:before { - content: '\e203'; -} -.glyphicon-level-up:before { - content: '\e204'; -} -.glyphicon-copy:before { - content: '\e205'; -} -.glyphicon-paste:before { - content: '\e206'; -} -.glyphicon-alert:before { - content: '\e209'; -} -.glyphicon-equalizer:before { - content: '\e210'; -} -.glyphicon-king:before { - content: '\e211'; -} -.glyphicon-queen:before { - content: '\e212'; -} -.glyphicon-pawn:before { - content: '\e213'; -} -.glyphicon-bishop:before { - content: '\e214'; -} -.glyphicon-knight:before { - content: '\e215'; -} -.glyphicon-baby-formula:before { - content: '\e216'; -} -.glyphicon-tent:before { - content: '\26fa'; -} -.glyphicon-blackboard:before { - content: '\e218'; -} -.glyphicon-bed:before { - content: '\e219'; -} -.glyphicon-apple:before { - content: '\f8ff'; -} -.glyphicon-erase:before { - content: '\e221'; -} -.glyphicon-hourglass:before { - content: '\231b'; -} -.glyphicon-lamp:before { - content: '\e223'; -} -.glyphicon-duplicate:before { - content: '\e224'; -} -.glyphicon-piggy-bank:before { - content: '\e225'; -} -.glyphicon-scissors:before { - content: '\e226'; -} -.glyphicon-bitcoin:before { - content: '\e227'; -} -.glyphicon-btc:before { - content: '\e227'; -} -.glyphicon-xbt:before { - content: '\e227'; -} -.glyphicon-yen:before { - content: '\00a5'; -} -.glyphicon-jpy:before { - content: '\00a5'; -} -.glyphicon-ruble:before { - content: '\20bd'; -} -.glyphicon-rub:before { - content: '\20bd'; -} -.glyphicon-scale:before { - content: '\e230'; -} -.glyphicon-ice-lolly:before { - content: '\e231'; -} -.glyphicon-ice-lolly-tasted:before { - content: '\e232'; -} -.glyphicon-education:before { - content: '\e233'; -} -.glyphicon-option-horizontal:before { - content: '\e234'; -} -.glyphicon-option-vertical:before { - content: '\e235'; -} -.glyphicon-menu-hamburger:before { - content: '\e236'; -} -.glyphicon-modal-window:before { - content: '\e237'; -} -.glyphicon-oil:before { - content: '\e238'; -} -.glyphicon-grain:before { - content: '\e239'; -} -.glyphicon-sunglasses:before { - content: '\e240'; -} -.glyphicon-text-size:before { - content: '\e241'; -} -.glyphicon-text-color:before { - content: '\e242'; -} -.glyphicon-text-background:before { - content: '\e243'; -} -.glyphicon-object-align-top:before { - content: '\e244'; -} -.glyphicon-object-align-bottom:before { - content: '\e245'; -} -.glyphicon-object-align-horizontal:before { - content: '\e246'; -} -.glyphicon-object-align-left:before { - content: '\e247'; -} -.glyphicon-object-align-vertical:before { - content: '\e248'; -} -.glyphicon-object-align-right:before { - content: '\e249'; -} -.glyphicon-triangle-right:before { - content: '\e250'; -} -.glyphicon-triangle-left:before { - content: '\e251'; -} -.glyphicon-triangle-bottom:before { - content: '\e252'; -} -.glyphicon-triangle-top:before { - content: '\e253'; -} -.glyphicon-console:before { - content: '\e254'; -} -.glyphicon-superscript:before { - content: '\e255'; -} -.glyphicon-subscript:before { - content: '\e256'; -} -.glyphicon-menu-left:before { - content: '\e257'; -} -.glyphicon-menu-right:before { - content: '\e258'; -} -.glyphicon-menu-down:before { - content: '\e259'; -} -.glyphicon-menu-up:before { - content: '\e260'; -} -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-size: 10px; - - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.42857143; - color: #333; - background-color: #fff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #337ab7; - text-decoration: none; -} -a:hover, -a:focus { - color: #23527c; - text-decoration: underline; -} -a:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 6px; -} -.img-thumbnail { - display: inline-block; - max-width: 100%; - height: auto; - padding: 4px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; -} -.img-circle { - border-radius: 50%; -} -hr { - margin-top: 20px; - margin-bottom: 20px; - border: 0; - border-top: 1px solid #eee; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} -[role='button'] { - cursor: pointer; -} -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: inherit; - font-weight: 500; - line-height: 1.1; - color: inherit; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #777; -} -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 20px; - margin-bottom: 10px; -} -h1 small, -.h1 small, -h2 small, -.h2 small, -h3 small, -.h3 small, -h1 .small, -.h1 .small, -h2 .small, -.h2 .small, -h3 .small, -.h3 .small { - font-size: 65%; -} -h4, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 10px; - margin-bottom: 10px; -} -h4 small, -.h4 small, -h5 small, -.h5 small, -h6 small, -.h6 small, -h4 .small, -.h4 .small, -h5 .small, -.h5 .small, -h6 .small, -.h6 .small { - font-size: 75%; -} -h1, -.h1 { - font-size: 36px; -} -h2, -.h2 { - font-size: 30px; -} -h3, -.h3 { - font-size: 24px; -} -h4, -.h4 { - font-size: 18px; -} -h5, -.h5 { - font-size: 14px; -} -h6, -.h6 { - font-size: 12px; -} -p { - margin: 0 0 10px; -} -.lead { - margin-bottom: 20px; - font-size: 16px; - font-weight: 300; - line-height: 1.4; -} -@media (min-width: 768px) { - .lead { - font-size: 21px; - } -} -small, -.small { - font-size: 85%; -} -mark, -.mark { - padding: 0.2em; - background-color: #fcf8e3; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -.text-justify { - text-align: justify; -} -.text-nowrap { - white-space: nowrap; -} -.text-lowercase { - text-transform: lowercase; -} -.text-uppercase { - text-transform: uppercase; -} -.text-capitalize { - text-transform: capitalize; -} -.text-muted { - color: #777; -} -.text-primary { - color: #337ab7; -} -a.text-primary:hover { - color: #286090; -} -.text-success { - color: #3c763d; -} -a.text-success:hover { - color: #2b542c; -} -.text-info { - color: #31708f; -} -a.text-info:hover { - color: #245269; -} -.text-warning { - color: #8a6d3b; -} -a.text-warning:hover { - color: #66512c; -} -.text-danger { - color: #a94442; -} -a.text-danger:hover { - color: #843534; -} -.bg-primary { - color: #fff; - background-color: #337ab7; -} -a.bg-primary:hover { - background-color: #286090; -} -.bg-success { - background-color: #dff0d8; -} -a.bg-success:hover { - background-color: #c1e2b3; -} -.bg-info { - background-color: #d9edf7; -} -a.bg-info:hover { - background-color: #afd9ee; -} -.bg-warning { - background-color: #fcf8e3; -} -a.bg-warning:hover { - background-color: #f7ecb5; -} -.bg-danger { - background-color: #f2dede; -} -a.bg-danger:hover { - background-color: #e4b9b9; -} -.page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 10px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - margin-left: -5px; - list-style: none; -} -.list-inline > li { - display: inline-block; - padding-right: 5px; - padding-left: 5px; -} -dl { - margin-top: 0; - margin-bottom: 20px; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - overflow: hidden; - clear: left; - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #777; -} -.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 10px 20px; - margin: 0 0 20px; - font-size: 17.5px; - border-left: 5px solid #eee; -} -blockquote p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #777; -} -blockquote footer:before, -blockquote small:before, -blockquote .small:before { - content: '\2014 \00A0'; -} -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - text-align: right; - border-right: 5px solid #eee; - border-left: 0; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small:after, -blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -address { - margin-bottom: 20px; - font-style: normal; - line-height: 1.42857143; -} -code, -kbd, -pre, -samp { - font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; -} -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - border-radius: 4px; -} -kbd { - padding: 2px 4px; - font-size: 90%; - color: #fff; - background-color: #333; - border-radius: 3px; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - -webkit-box-shadow: none; - box-shadow: none; -} -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 1.42857143; - color: #333; - word-break: break-all; - word-wrap: break-word; - background-color: #f5f5f5; - border: 1px solid #ccc; - border-radius: 4px; -} -pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -.container { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -@media (min-width: 768px) { - .container { - width: 750px; - } -} -@media (min-width: 992px) { - .container { - width: 970px; - } -} -@media (min-width: 1200px) { - .container { - width: 1170px; - } -} -.container-fluid { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -.row { - margin-right: -15px; - margin-left: -15px; -} -//.col-xs-1, -//.col-sm-1, -//.col-md-1, -//.col-lg-1, -//.col-xs-2, -//.col-sm-2, -//.col-md-2, -//.col-lg-2, -//.col-xs-3, -//.col-sm-3, -//.col-md-3, -//.col-lg-3, -//.col-xs-4, -//.col-sm-4, -//.col-md-4, -//.col-lg-4, -//.col-xs-5, -//.col-sm-5, -//.col-md-5, -//.col-lg-5, -//.col-xs-6, -//.col-sm-6, -//.col-md-6, -//.col-lg-6, -//.col-xs-7, -//.col-sm-7, -//.col-md-7, -//.col-lg-7, -//.col-xs-8, -//.col-sm-8, -//.col-md-8, -//.col-lg-8, -//.col-xs-9, -//.col-sm-9, -//.col-md-9, -//.col-lg-9, -//.col-xs-10, -//.col-sm-10, -//.col-md-10, -//.col-lg-10, -//.col-xs-11, -//.col-sm-11, -//.col-md-11, -//.col-lg-11, -//.col-xs-12, -//.col-sm-12, -//.col-md-12, -//.col-lg-12 { -// position: relative; -// min-height: 1px; -// padding-right: 15px; -// padding-left: 15px; -//} -//.col-xs-1, -//.col-xs-2, -//.col-xs-3, -//.col-xs-4, -//.col-xs-5, -//.col-xs-6, -//.col-xs-7, -//.col-xs-8, -//.col-xs-9, -//.col-xs-10, -//.col-xs-11, -//.col-xs-12 { -// float: left; -//} -//.col-xs-12 { -// width: 100%; -//} -//.col-xs-11 { -// width: 91.66666667%; -//} -//.col-xs-10 { -// width: 83.33333333%; -//} -//.col-xs-9 { -// width: 75%; -//} -//.col-xs-8 { -// width: 66.66666667%; -//} -//.col-xs-7 { -// width: 58.33333333%; -//} -//.col-xs-6 { -// width: 50%; -//} -//.col-xs-5 { -// width: 41.66666667%; -//} -//.col-xs-4 { -// width: 33.33333333%; -//} -//.col-xs-3 { -// width: 25%; -//} -//.col-xs-2 { -// width: 16.66666667%; -//} -//.col-xs-1 { -// width: 8.33333333%; -//} -//.col-xs-pull-12 { -// right: 100%; -//} -//.col-xs-pull-11 { -// right: 91.66666667%; -//} -//.col-xs-pull-10 { -// right: 83.33333333%; -//} -//.col-xs-pull-9 { -// right: 75%; -//} -//.col-xs-pull-8 { -// right: 66.66666667%; -//} -//.col-xs-pull-7 { -// right: 58.33333333%; -//} -//.col-xs-pull-6 { -// right: 50%; -//} -//.col-xs-pull-5 { -// right: 41.66666667%; -//} -//.col-xs-pull-4 { -// right: 33.33333333%; -//} -//.col-xs-pull-3 { -// right: 25%; -//} -//.col-xs-pull-2 { -// right: 16.66666667%; -//} -//.col-xs-pull-1 { -// right: 8.33333333%; -//} -//.col-xs-pull-0 { -// right: auto; -//} -//.col-xs-push-12 { -// left: 100%; -//} -//.col-xs-push-11 { -// left: 91.66666667%; -//} -//.col-xs-push-10 { -// left: 83.33333333%; -//} -//.col-xs-push-9 { -// left: 75%; -//} -//.col-xs-push-8 { -// left: 66.66666667%; -//} -//.col-xs-push-7 { -// left: 58.33333333%; -//} -//.col-xs-push-6 { -// left: 50%; -//} -//.col-xs-push-5 { -// left: 41.66666667%; -//} -//.col-xs-push-4 { -// left: 33.33333333%; -//} -//.col-xs-push-3 { -// left: 25%; -//} -//.col-xs-push-2 { -// left: 16.66666667%; -//} -//.col-xs-push-1 { -// left: 8.33333333%; -//} -//.col-xs-push-0 { -// left: auto; -//} -//.col-xs-offset-12 { -// margin-left: 100%; -//} -//.col-xs-offset-11 { -// margin-left: 91.66666667%; -//} -//.col-xs-offset-10 { -// margin-left: 83.33333333%; -//} -//.col-xs-offset-9 { -// margin-left: 75%; -//} -//.col-xs-offset-8 { -// margin-left: 66.66666667%; -//} -//.col-xs-offset-7 { -// margin-left: 58.33333333%; -//} -//.col-xs-offset-6 { -// margin-left: 50%; -//} -//.col-xs-offset-5 { -// margin-left: 41.66666667%; -//} -//.col-xs-offset-4 { -// margin-left: 33.33333333%; -//} -//.col-xs-offset-3 { -// margin-left: 25%; -//} -//.col-xs-offset-2 { -// margin-left: 16.66666667%; -//} -//.col-xs-offset-1 { -// margin-left: 8.33333333%; -//} -//.col-xs-offset-0 { -// margin-left: 0; -//} -//@media (min-width: 768px) { -// .col-sm-1, -// .col-sm-2, -// .col-sm-3, -// .col-sm-4, -// .col-sm-5, -// .col-sm-6, -// .col-sm-7, -// .col-sm-8, -// .col-sm-9, -// .col-sm-10, -// .col-sm-11, -// .col-sm-12 { -// float: left; -// } -// .col-sm-12 { -// width: 100%; -// } -// .col-sm-11 { -// width: 91.66666667%; -// } -// .col-sm-10 { -// width: 83.33333333%; -// } -// .col-sm-9 { -// width: 75%; -// } -// .col-sm-8 { -// width: 66.66666667%; -// } -// .col-sm-7 { -// width: 58.33333333%; -// } -// .col-sm-6 { -// width: 50%; -// } -// .col-sm-5 { -// width: 41.66666667%; -// } -// .col-sm-4 { -// width: 33.33333333%; -// } -// .col-sm-3 { -// width: 25%; -// } -// .col-sm-2 { -// width: 16.66666667%; -// } -// .col-sm-1 { -// width: 8.33333333%; -// } -// .col-sm-pull-12 { -// right: 100%; -// } -// .col-sm-pull-11 { -// right: 91.66666667%; -// } -// .col-sm-pull-10 { -// right: 83.33333333%; -// } -// .col-sm-pull-9 { -// right: 75%; -// } -// .col-sm-pull-8 { -// right: 66.66666667%; -// } -// .col-sm-pull-7 { -// right: 58.33333333%; -// } -// .col-sm-pull-6 { -// right: 50%; -// } -// .col-sm-pull-5 { -// right: 41.66666667%; -// } -// .col-sm-pull-4 { -// right: 33.33333333%; -// } -// .col-sm-pull-3 { -// right: 25%; -// } -// .col-sm-pull-2 { -// right: 16.66666667%; -// } -// .col-sm-pull-1 { -// right: 8.33333333%; -// } -// .col-sm-pull-0 { -// right: auto; -// } -// .col-sm-push-12 { -// left: 100%; -// } -// .col-sm-push-11 { -// left: 91.66666667%; -// } -// .col-sm-push-10 { -// left: 83.33333333%; -// } -// .col-sm-push-9 { -// left: 75%; -// } -// .col-sm-push-8 { -// left: 66.66666667%; -// } -// .col-sm-push-7 { -// left: 58.33333333%; -// } -// .col-sm-push-6 { -// left: 50%; -// } -// .col-sm-push-5 { -// left: 41.66666667%; -// } -// .col-sm-push-4 { -// left: 33.33333333%; -// } -// .col-sm-push-3 { -// left: 25%; -// } -// .col-sm-push-2 { -// left: 16.66666667%; -// } -// .col-sm-push-1 { -// left: 8.33333333%; -// } -// .col-sm-push-0 { -// left: auto; -// } -// .col-sm-offset-12 { -// margin-left: 100%; -// } -// .col-sm-offset-11 { -// margin-left: 91.66666667%; -// } -// .col-sm-offset-10 { -// margin-left: 83.33333333%; -// } -// .col-sm-offset-9 { -// margin-left: 75%; -// } -// .col-sm-offset-8 { -// margin-left: 66.66666667%; -// } -// .col-sm-offset-7 { -// margin-left: 58.33333333%; -// } -// .col-sm-offset-6 { -// margin-left: 50%; -// } -// .col-sm-offset-5 { -// margin-left: 41.66666667%; -// } -// .col-sm-offset-4 { -// margin-left: 33.33333333%; -// } -// .col-sm-offset-3 { -// margin-left: 25%; -// } -// .col-sm-offset-2 { -// margin-left: 16.66666667%; -// } -// .col-sm-offset-1 { -// margin-left: 8.33333333%; -// } -// .col-sm-offset-0 { -// margin-left: 0; -// } -//} -//@media (min-width: 992px) { -// .col-md-1, -// .col-md-2, -// .col-md-3, -// .col-md-4, -// .col-md-5, -// .col-md-6, -// .col-md-7, -// .col-md-8, -// .col-md-9, -// .col-md-10, -// .col-md-11, -// .col-md-12 { -// float: left; -// } -// .col-md-12 { -// width: 100%; -// } -// .col-md-11 { -// width: 91.66666667%; -// } -// .col-md-10 { -// width: 83.33333333%; -// } -// .col-md-9 { -// width: 75%; -// } -// .col-md-8 { -// width: 66.66666667%; -// } -// .col-md-7 { -// width: 58.33333333%; -// } -// .col-md-6 { -// width: 50%; -// } -// .col-md-5 { -// width: 41.66666667%; -// } -// .col-md-4 { -// width: 33.33333333%; -// } -// .col-md-3 { -// width: 25%; -// } -// .col-md-2 { -// width: 16.66666667%; -// } -// .col-md-1 { -// width: 8.33333333%; -// } -// .col-md-pull-12 { -// right: 100%; -// } -// .col-md-pull-11 { -// right: 91.66666667%; -// } -// .col-md-pull-10 { -// right: 83.33333333%; -// } -// .col-md-pull-9 { -// right: 75%; -// } -// .col-md-pull-8 { -// right: 66.66666667%; -// } -// .col-md-pull-7 { -// right: 58.33333333%; -// } -// .col-md-pull-6 { -// right: 50%; -// } -// .col-md-pull-5 { -// right: 41.66666667%; -// } -// .col-md-pull-4 { -// right: 33.33333333%; -// } -// .col-md-pull-3 { -// right: 25%; -// } -// .col-md-pull-2 { -// right: 16.66666667%; -// } -// .col-md-pull-1 { -// right: 8.33333333%; -// } -// .col-md-pull-0 { -// right: auto; -// } -// .col-md-push-12 { -// left: 100%; -// } -// .col-md-push-11 { -// left: 91.66666667%; -// } -// .col-md-push-10 { -// left: 83.33333333%; -// } -// .col-md-push-9 { -// left: 75%; -// } -// .col-md-push-8 { -// left: 66.66666667%; -// } -// .col-md-push-7 { -// left: 58.33333333%; -// } -// .col-md-push-6 { -// left: 50%; -// } -// .col-md-push-5 { -// left: 41.66666667%; -// } -// .col-md-push-4 { -// left: 33.33333333%; -// } -// .col-md-push-3 { -// left: 25%; -// } -// .col-md-push-2 { -// left: 16.66666667%; -// } -// .col-md-push-1 { -// left: 8.33333333%; -// } -// .col-md-push-0 { -// left: auto; -// } -// .col-md-offset-12 { -// margin-left: 100%; -// } -// .col-md-offset-11 { -// margin-left: 91.66666667%; -// } -// .col-md-offset-10 { -// margin-left: 83.33333333%; -// } -// .col-md-offset-9 { -// margin-left: 75%; -// } -// .col-md-offset-8 { -// margin-left: 66.66666667%; -// } -// .col-md-offset-7 { -// margin-left: 58.33333333%; -// } -// .col-md-offset-6 { -// margin-left: 50%; -// } -// .col-md-offset-5 { -// margin-left: 41.66666667%; -// } -// .col-md-offset-4 { -// margin-left: 33.33333333%; -// } -// .col-md-offset-3 { -// margin-left: 25%; -// } -// .col-md-offset-2 { -// margin-left: 16.66666667%; -// } -// .col-md-offset-1 { -// margin-left: 8.33333333%; -// } -// .col-md-offset-0 { -// margin-left: 0; -// } -//} -//@media (min-width: 1200px) { -// .col-lg-1, -// .col-lg-2, -// .col-lg-3, -// .col-lg-4, -// .col-lg-5, -// .col-lg-6, -// .col-lg-7, -// .col-lg-8, -// .col-lg-9, -// .col-lg-10, -// .col-lg-11, -// .col-lg-12 { -// float: left; -// } -// .col-lg-12 { -// width: 100%; -// } -// .col-lg-11 { -// width: 91.66666667%; -// } -// .col-lg-10 { -// width: 83.33333333%; -// } -// .col-lg-9 { -// width: 75%; -// } -// .col-lg-8 { -// width: 66.66666667%; -// } -// .col-lg-7 { -// width: 58.33333333%; -// } -// .col-lg-6 { -// width: 50%; -// } -// .col-lg-5 { -// width: 41.66666667%; -// } -// .col-lg-4 { -// width: 33.33333333%; -// } -// .col-lg-3 { -// width: 25%; -// } -// .col-lg-2 { -// width: 16.66666667%; -// } -// .col-lg-1 { -// width: 8.33333333%; -// } -// .col-lg-pull-12 { -// right: 100%; -// } -// .col-lg-pull-11 { -// right: 91.66666667%; -// } -// .col-lg-pull-10 { -// right: 83.33333333%; -// } -// .col-lg-pull-9 { -// right: 75%; -// } -// .col-lg-pull-8 { -// right: 66.66666667%; -// } -// .col-lg-pull-7 { -// right: 58.33333333%; -// } -// .col-lg-pull-6 { -// right: 50%; -// } -// .col-lg-pull-5 { -// right: 41.66666667%; -// } -// .col-lg-pull-4 { -// right: 33.33333333%; -// } -// .col-lg-pull-3 { -// right: 25%; -// } -// .col-lg-pull-2 { -// right: 16.66666667%; -// } -// .col-lg-pull-1 { -// right: 8.33333333%; -// } -// .col-lg-pull-0 { -// right: auto; -// } -// .col-lg-push-12 { -// left: 100%; -// } -// .col-lg-push-11 { -// left: 91.66666667%; -// } -// .col-lg-push-10 { -// left: 83.33333333%; -// } -// .col-lg-push-9 { -// left: 75%; -// } -// .col-lg-push-8 { -// left: 66.66666667%; -// } -// .col-lg-push-7 { -// left: 58.33333333%; -// } -// .col-lg-push-6 { -// left: 50%; -// } -// .col-lg-push-5 { -// left: 41.66666667%; -// } -// .col-lg-push-4 { -// left: 33.33333333%; -// } -// .col-lg-push-3 { -// left: 25%; -// } -// .col-lg-push-2 { -// left: 16.66666667%; -// } -// .col-lg-push-1 { -// left: 8.33333333%; -// } -// .col-lg-push-0 { -// left: auto; -// } -// .col-lg-offset-12 { -// margin-left: 100%; -// } -// .col-lg-offset-11 { -// margin-left: 91.66666667%; -// } -// .col-lg-offset-10 { -// margin-left: 83.33333333%; -// } -// .col-lg-offset-9 { -// margin-left: 75%; -// } -// .col-lg-offset-8 { -// margin-left: 66.66666667%; -// } -// .col-lg-offset-7 { -// margin-left: 58.33333333%; -// } -// .col-lg-offset-6 { -// margin-left: 50%; -// } -// .col-lg-offset-5 { -// margin-left: 41.66666667%; -// } -// .col-lg-offset-4 { -// margin-left: 33.33333333%; -// } -// .col-lg-offset-3 { -// margin-left: 25%; -// } -// .col-lg-offset-2 { -// margin-left: 16.66666667%; -// } -// .col-lg-offset-1 { -// margin-left: 8.33333333%; -// } -// .col-lg-offset-0 { -// margin-left: 0; -// } -//} -table { - background-color: transparent; -} -caption { - padding-top: 8px; - padding-bottom: 8px; - color: #777; - text-align: left; -} -th { - text-align: left; -} -.table { - width: 100%; - max-width: 100%; - margin-bottom: 20px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - padding: 8px; - line-height: 1.42857143; - vertical-align: top; - border-top: 1px solid #ddd; -} -.table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #ddd; -} -.table > caption + thead > tr:first-child > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #fff; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #f9f9f9; -} -.table-hover > tbody > tr:hover { - background-color: #f5f5f5; -} -table col[class*='col-'] { - position: static; - display: table-column; - float: none; -} -table td[class*='col-'], -table th[class*='col-'] { - position: static; - display: table-cell; - float: none; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #e8e8e8; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; -} -.table-responsive { - min-height: 0.01%; - overflow-x: auto; -} -@media screen and (max-width: 767px) { - .table-responsive { - width: 100%; - margin-bottom: 15px; - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #ddd; - } - .table-responsive > .table { - margin-bottom: 0; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; - color: #333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; -} -input[type='search'] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -input[type='radio'], -input[type='checkbox'] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; -} -input[type='file'] { - display: block; -} -input[type='range'] { - display: block; - width: 100%; -} -select[multiple], -select[size] { - height: auto; -} -input[type='file']:focus, -input[type='radio']:focus, -input[type='checkbox']:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -output { - display: block; - padding-top: 7px; - font-size: 14px; - line-height: 1.42857143; - color: #555; -} -//.form-control { -// display: block; -// width: 100%; -// height: 34px; -// padding: 6px 12px; -// font-size: 14px; -// line-height: 1.42857143; -// color: #555; -// background-color: #fff; -// background-image: none; -// border: 1px solid #ccc; -// border-radius: 4px; -// -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -// box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -// -webkit-transition: border-color ease-in-out 0.15s, -webkit-box-shadow ease-in-out 0.15s; -// -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; -// transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; -//} -//.form-control:focus { -// border-color: #66afe9; -// outline: 0; -// -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); -// box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); -//} -//.form-control::-moz-placeholder { -// color: #999; -// opacity: 1; -//} -//.form-control:-ms-input-placeholder { -// color: #999; -//} -//.form-control::-webkit-input-placeholder { -// color: #999; -//} -//.form-control[disabled], -//.form-control[readonly], -//fieldset[disabled] .form-control { -// background-color: #eee; -// opacity: 1; -//} -//.form-control[disabled], -//fieldset[disabled] .form-control { -// cursor: not-allowed; -//} -//textarea.form-control { -// height: auto; -//} -//input[type='search'] { -// -webkit-appearance: none; -//} -// @media screen and (-webkit-min-device-pixel-ratio: 0) { -// input[type='date'], -// input[type='time'], -// input[type='datetime-local'], -// input[type='month'] { -// line-height: 34px; -// } -// input[type='date'].input-sm, -// input[type='time'].input-sm, -// input[type='datetime-local'].input-sm, -// input[type='month'].input-sm, -// .input-group-sm input[type='date'], -// .input-group-sm input[type='time'], -// .input-group-sm input[type='datetime-local'], -// .input-group-sm input[type='month'] { -// line-height: 30px; -// } -// input[type='date'].input-lg, -// input[type='time'].input-lg, -// input[type='datetime-local'].input-lg, -// input[type='month'].input-lg, -// .input-group-lg input[type='date'], -// .input-group-lg input[type='time'], -// .input-group-lg input[type='datetime-local'], -// .input-group-lg input[type='month'] { -// line-height: 46px; -// } -// } -//.form-group { -// margin-bottom: 15px; -//} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 20px; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} -.radio input[type='radio'], -.radio-inline input[type='radio'], -.checkbox input[type='checkbox'], -.checkbox-inline input[type='checkbox'] { - position: absolute; - margin-top: 4px \9; - margin-left: -20px; -} -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} -.radio-inline, -.checkbox-inline { - position: relative; - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - vertical-align: middle; - cursor: pointer; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -input[type='radio'][disabled], -input[type='checkbox'][disabled], -input[type='radio'].disabled, -input[type='checkbox'].disabled, -fieldset[disabled] input[type='radio'], -fieldset[disabled] input[type='checkbox'] { - cursor: not-allowed; -} -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - cursor: not-allowed; -} -.form-control-static { - min-height: 34px; - padding-top: 7px; - padding-bottom: 7px; - margin-bottom: 0; -} -.form-control-static.input-lg, -.form-control-static.input-sm { - padding-right: 0; - padding-left: 0; -} -.input-sm { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-sm { - height: 30px; - line-height: 30px; -} -textarea.input-sm, -select[multiple].input-sm { - height: auto; -} -.form-group-sm .form-control { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.form-group-sm .form-control { - height: 30px; - line-height: 30px; -} -textarea.form-group-sm .form-control, -select[multiple].form-group-sm .form-control { - height: auto; -} -.form-group-sm .form-control-static { - height: 30px; - min-height: 32px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; -} -.input-lg { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-lg { - height: 46px; - line-height: 46px; -} -textarea.input-lg, -select[multiple].input-lg { - height: auto; -} -.form-group-lg .form-control { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.form-group-lg .form-control { - height: 46px; - line-height: 46px; -} -textarea.form-group-lg .form-control, -select[multiple].form-group-lg .form-control { - height: auto; -} -.form-group-lg .form-control-static { - height: 46px; - min-height: 38px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; -} -.has-feedback { - position: relative; -} -.has-feedback .form-control { - padding-right: 42.5px; -} -.form-control-feedback { - position: absolute; - top: 0; - right: 0; - z-index: 2; - display: block; - width: 34px; - height: 34px; - line-height: 34px; - text-align: center; - pointer-events: none; -} -.input-lg + .form-control-feedback { - width: 46px; - height: 46px; - line-height: 46px; -} -.input-sm + .form-control-feedback { - width: 30px; - height: 30px; - line-height: 30px; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #3c763d; -} -.has-success .form-control { - border-color: #3c763d; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-success .form-control:focus { - border-color: #2b542c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; -} -.has-success .input-group-addon { - color: #3c763d; - background-color: #dff0d8; - border-color: #3c763d; -} -.has-success .form-control-feedback { - color: #3c763d; -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #8a6d3b; -} -.has-warning .form-control { - border-color: #8a6d3b; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-warning .form-control:focus { - border-color: #66512c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; -} -.has-warning .input-group-addon { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #8a6d3b; -} -.has-warning .form-control-feedback { - color: #8a6d3b; -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #a94442; -} -.has-error .form-control { - border-color: #a94442; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-error .form-control:focus { - border-color: #843534; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; -} -.has-error .input-group-addon { - color: #a94442; - background-color: #f2dede; - border-color: #a94442; -} -.has-error .form-control-feedback { - color: #a94442; -} -.has-feedback label ~ .form-control-feedback { - top: 25px; -} -.has-feedback label.sr-only ~ .form-control-feedback { - top: 0; -} -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #737373; -} -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-static { - display: inline-block; - } - .form-inline .input-group { - display: inline-table; - vertical-align: middle; - } - .form-inline .input-group .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - .form-inline .radio input[type='radio'], - .form-inline .checkbox input[type='checkbox'] { - position: relative; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - padding-top: 7px; - margin-top: 0; - margin-bottom: 0; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 27px; -} -.form-horizontal .form-group { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .form-horizontal .control-label { - padding-top: 7px; - margin-bottom: 0; - text-align: right; - } -} -.form-horizontal .has-feedback .form-control-feedback { - right: 15px; -} -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 14.333333px; - } -} -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 6px; - } -} -.btn { - display: inline-block; - padding: 6px 12px; - margin-bottom: 0; - font-size: 14px; - font-weight: normal; - line-height: 1.42857143; - text-align: center; - white-space: nowrap; - vertical-align: middle; - -ms-touch-action: manipulation; - touch-action: manipulation; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus, -.btn.focus { - color: #333; - text-decoration: none; -} -.btn:active, -.btn.active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - pointer-events: none; - cursor: not-allowed; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; - opacity: 0.65; -} -.btn-default { - color: #333; - background-color: #fff; - border-color: #ccc; -} -.btn-default:hover, -.btn-default:focus, -.btn-default.focus, -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #fff; - border-color: #ccc; -} -.btn-default .badge { - color: #fff; - background-color: #333; -} -.btn-primary { - color: #fff; - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary:hover, -.btn-primary:focus, -.btn-primary.focus, -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #fff; - background-color: #286090; - border-color: #204d74; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary .badge { - color: #337ab7; - background-color: #fff; -} -.btn-success { - color: #fff; - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success:hover, -.btn-success:focus, -.btn-success.focus, -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #fff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success .badge { - color: #5cb85c; - background-color: #fff; -} -.btn-info { - color: #fff; - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info:hover, -.btn-info:focus, -.btn-info.focus, -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info .badge { - color: #5bc0de; - background-color: #fff; -} -.btn-warning { - color: #fff; - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning:hover, -.btn-warning:focus, -.btn-warning.focus, -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #fff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning .badge { - color: #f0ad4e; - background-color: #fff; -} -.btn-danger { - color: #fff; - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger:hover, -.btn-danger:focus, -.btn-danger.focus, -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger .badge { - color: #d9534f; - background-color: #fff; -} -.btn-link { - font-weight: normal; - color: #337ab7; - border-radius: 0; -} -.btn-link, -.btn-link:active, -.btn-link.active, -.btn-link[disabled], -fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-link, -.btn-link:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #23527c; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #777; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-xs, -.btn-group-xs > .btn { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type='submit'].btn-block, -input[type='reset'].btn-block, -input[type='button'].btn-block { - width: 100%; -} -.fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; -} -.collapse.in { - display: block; -} -tr.collapse.in { - display: table-row; -} -tbody.collapse.in { - display: table-row-group; -} -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition-timing-function: ease; - -o-transition-timing-function: ease; - transition-timing-function: ease; - -webkit-transition-duration: 0.35s; - -o-transition-duration: 0.35s; - transition-duration: 0.35s; - -webkit-transition-property: height, visibility; - -o-transition-property: height, visibility; - transition-property: height, visibility; -} -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px dashed; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} -.dropup, -.dropdown { - position: relative; -} -.dropdown-toggle:focus { - outline: 0; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - font-size: 14px; - text-align: left; - list-style: none; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857143; - color: #333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - color: #262626; - text-decoration: none; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - background-color: #337ab7; - outline: 0; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #777; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - cursor: not-allowed; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.open > .dropdown-menu { - display: block; -} -.open > a { - outline: 0; -} -.dropdown-menu-right { - right: 0; - left: auto; -} -.dropdown-menu-left { - right: auto; - left: 0; -} -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.42857143; - color: #777; - white-space: nowrap; -} -.dropdown-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - content: ''; - border-top: 0; - border-bottom: 4px solid; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - right: 0; - left: auto; - } - .navbar-right .dropdown-menu-left { - right: auto; - left: 0; - } -} -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - z-index: 2; -} -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; -} -.btn-toolbar { - margin-left: -5px; -} -.btn-toolbar .btn-group, -.btn-toolbar .input-group { - float: left; -} -.btn-toolbar > .btn, -.btn-toolbar > .btn-group, -.btn-toolbar > .input-group { - margin-left: 5px; -} -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} -.btn-group > .btn:first-child { - margin-left: 0; -} -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group > .btn-group { - float: left; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-right: 8px; - padding-left: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-right: 12px; - padding-left: 12px; -} -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn-group.open .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn .caret { - margin-left: 0; -} -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} -.dropup .btn-lg .caret { - border-width: 0 5px 5px; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; -} -.btn-group-vertical > .btn-group > .btn { - float: none; -} -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; -} -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-left-radius: 4px; -} -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} -.btn-group-justified > .btn, -.btn-group-justified > .btn-group { - display: table-cell; - float: none; - width: 1%; -} -.btn-group-justified > .btn-group .btn { - width: 100%; -} -.btn-group-justified > .btn-group .dropdown-menu { - left: auto; -} -[data-toggle='buttons'] > .btn input[type='radio'], -[data-toggle='buttons'] > .btn-group > .btn input[type='radio'], -[data-toggle='buttons'] > .btn input[type='checkbox'], -[data-toggle='buttons'] > .btn-group > .btn input[type='checkbox'] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} -.input-group { - position: relative; - display: table; - border-collapse: separate; -} -.input-group[class*='col-'] { - float: none; - padding-right: 0; - padding-left: 0; -} -.input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; -} -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-group-lg > .form-control, -select.input-group-lg > .input-group-addon, -select.input-group-lg > .input-group-btn > .btn { - height: 46px; - line-height: 46px; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].input-group-lg > .input-group-btn > .btn { - height: auto; -} -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-group-sm > .form-control, -select.input-group-sm > .input-group-addon, -select.input-group-sm > .input-group-btn > .btn { - height: 30px; - line-height: 30px; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; -} -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; -} -.input-group-addon { - padding: 6px 12px; - font-size: 14px; - font-weight: normal; - line-height: 1; - color: #555; - text-align: center; - background-color: #eee; - border: 1px solid #ccc; - border-radius: 4px; -} -.input-group-addon.input-sm { - padding: 5px 10px; - font-size: 12px; - border-radius: 3px; -} -.input-group-addon.input-lg { - padding: 10px 16px; - font-size: 18px; - border-radius: 6px; -} -.input-group-addon input[type='radio'], -.input-group-addon input[type='checkbox'] { - margin-top: 0; -} -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-group-addon:first-child { - border-right: 0; -} -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.input-group-addon:last-child { - border-left: 0; -} -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; -} -.input-group-btn > .btn { - position: relative; -} -.input-group-btn > .btn + .btn { - margin-left: -1px; -} -.input-group-btn > .btn:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - z-index: 2; -} -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group { - margin-right: -1px; -} -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group { - margin-left: -1px; -} -.nav { - padding-left: 0; - margin-bottom: 0; - list-style: none; -} -.nav > li { - position: relative; - display: block; -} -.nav > li > a { - position: relative; - display: block; - padding: 10px 15px; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li.disabled > a { - color: #777; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #777; - text-decoration: none; - cursor: not-allowed; - background-color: transparent; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #eee; - border-color: #337ab7; -} -.nav .nav-divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.nav > li > a > img { - max-width: none; -} -.nav-tabs { - border-bottom: 1px solid #ddd; -} -.nav-tabs > li { - float: left; - margin-bottom: -1px; -} -.nav-tabs > li > a { - margin-right: 2px; - line-height: 1.42857143; - border: 1px solid transparent; - border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover { - border-color: #eee #eee #ddd; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #555; - cursor: default; - background-color: #fff; - border: 1px solid #ddd; - border-bottom-color: transparent; -} -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} -.nav-tabs.nav-justified > li { - float: none; -} -.nav-tabs.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.nav-pills > li { - float: left; -} -.nav-pills > li > a { - border-radius: 4px; -} -.nav-pills > li + li { - margin-left: 2px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #fff; - background-color: #337ab7; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} -.nav-justified { - width: 100%; -} -.nav-justified > li { - float: none; -} -.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs-justified { - border-bottom: 0; -} -.nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs-justified > .active > a, -.nav-tabs-justified > .active > a:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.tab-content > .tab-pane { - display: none; -} -.tab-content > .active { - display: block; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar { - position: relative; - min-height: 50px; - margin-bottom: 20px; - border: 1px solid transparent; -} -@media (min-width: 768px) { - .navbar { - border-radius: 4px; - } -} -@media (min-width: 768px) { - .navbar-header { - float: left; - } -} -.navbar-collapse { - padding-right: 15px; - padding-left: 15px; - overflow-x: visible; - -webkit-overflow-scrolling: touch; - border-top: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); -} -.navbar-collapse.in { - overflow-y: auto; -} -@media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; - } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-right: 0; - padding-left: 0; - } -} -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} -@media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; - } -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; - } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; -} -.navbar-brand { - float: left; - height: 50px; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} -.navbar-brand > img { - display: block; -} -@media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-left: -15px; - } -} -.navbar-toggle { - position: relative; - float: right; - padding: 9px 10px; - margin-top: 8px; - margin-right: 15px; - margin-bottom: 8px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.navbar-toggle:focus { - outline: 0; -} -.navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; -} -.navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} -@media (min-width: 768px) { - .navbar-toggle { - display: none; - } -} -.navbar-nav { - margin: 7.5px -15px; -} -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 20px; -} -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} -@media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; - } - .navbar-nav > li { - float: left; - } - .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - } -} -.navbar-form { - padding: 10px 15px; - margin-top: 8px; - margin-right: -15px; - margin-bottom: 8px; - margin-left: -15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); -} -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .navbar-form .form-control-static { - display: inline-block; - } - .navbar-form .input-group { - display: inline-table; - vertical-align: middle; - } - .navbar-form .input-group .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; - } - .navbar-form .radio input[type='radio'], - .navbar-form .checkbox input[type='checkbox'] { - position: relative; - margin-left: 0; - } - .navbar-form .has-feedback .form-control-feedback { - top: 0; - } -} -@media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; - } - .navbar-form .form-group:last-child { - margin-bottom: 0; - } -} -@media (min-width: 768px) { - .navbar-form { - width: auto; - padding-top: 0; - padding-bottom: 0; - margin-right: 0; - margin-left: 0; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } -} -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - margin-bottom: 0; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.navbar-btn { - margin-top: 8px; - margin-bottom: 8px; -} -.navbar-btn.btn-sm { - margin-top: 10px; - margin-bottom: 10px; -} -.navbar-btn.btn-xs { - margin-top: 14px; - margin-bottom: 14px; -} -.navbar-text { - margin-top: 15px; - margin-bottom: 15px; -} -@media (min-width: 768px) { - .navbar-text { - float: left; - margin-right: 15px; - margin-left: 15px; - } -} -@media (min-width: 768px) { - .navbar-left { - float: left !important; - } - .navbar-right { - float: right !important; - margin-right: -15px; - } - .navbar-right ~ .navbar-right { - margin-right: 0; - } -} -.navbar-default { - background-color: #f8f8f8; - border-color: #e7e7e7; -} -.navbar-default .navbar-brand { - color: #777; -} -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #5e5e5e; - background-color: transparent; -} -.navbar-default .navbar-text { - color: #777; -} -.navbar-default .navbar-nav > li > a { - color: #777; -} -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #333; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #555; - background-color: #e7e7e7; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #ccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #ddd; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: #ddd; -} -.navbar-default .navbar-toggle .icon-bar { - background-color: #888; -} -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #e7e7e7; -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - color: #555; - background-color: #e7e7e7; -} -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #777; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555; - background-color: #e7e7e7; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #ccc; - background-color: transparent; - } -} -.navbar-default .navbar-link { - color: #777; -} -.navbar-default .navbar-link:hover { - color: #333; -} -.navbar-default .btn-link { - color: #777; -} -.navbar-default .btn-link:hover, -.navbar-default .btn-link:focus { - color: #333; -} -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #ccc; -} -.navbar-inverse { - background-color: #222; - border-color: #080808; -} -.navbar-inverse .navbar-brand { - color: #9d9d9d; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-text { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #fff; - background-color: #080808; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #333; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: #333; -} -.navbar-inverse .navbar-toggle .icon-bar { - background-color: #fff; -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: #101010; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - color: #fff; - background-color: #080808; -} -@media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #9d9d9d; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #fff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444; - background-color: transparent; - } -} -.navbar-inverse .navbar-link { - color: #9d9d9d; -} -.navbar-inverse .navbar-link:hover { - color: #fff; -} -.navbar-inverse .btn-link { - color: #9d9d9d; -} -.navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link:focus { - color: #fff; -} -.navbar-inverse .btn-link[disabled]:hover, -fieldset[disabled] .navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link[disabled]:focus, -fieldset[disabled] .navbar-inverse .btn-link:focus { - color: #444; -} -.breadcrumb { - padding: 8px 15px; - margin-bottom: 20px; - list-style: none; - background-color: #f5f5f5; - border-radius: 4px; -} -.breadcrumb > li { - display: inline-block; -} -.breadcrumb > li + li:before { - padding: 0 5px; - color: #ccc; - content: '/\00a0'; -} -.breadcrumb > .active { - color: #777; -} -.pagination { - display: inline-block; - padding-left: 0; - margin: 20px 0; - border-radius: 4px; -} -.pagination > li { - display: inline; -} -.pagination > li > a, -.pagination > li > span { - position: relative; - float: left; - padding: 6px 12px; - margin-left: -1px; - line-height: 1.42857143; - color: #337ab7; - text-decoration: none; - background-color: #fff; - border: 1px solid #ddd; -} -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - color: #23527c; - background-color: #eee; - border-color: #ddd; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 2; - color: #fff; - cursor: default; - background-color: #337ab7; - border-color: #337ab7; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - color: #777; - cursor: not-allowed; - background-color: #fff; - border-color: #ddd; -} -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 10px 16px; - font-size: 18px; -} -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-top-left-radius: 6px; - border-bottom-left-radius: 6px; -} -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-top-right-radius: 6px; - border-bottom-right-radius: 6px; -} -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 10px; - font-size: 12px; -} -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; -} -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; -} -.pager { - padding-left: 0; - margin: 20px 0; - text-align: center; - list-style: none; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #eee; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #777; - cursor: not-allowed; - background-color: #fff; -} -.label { - display: inline; - padding: 0.2em 0.6em 0.3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: 0.25em; -} -a.label:hover, -a.label:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label:empty { - display: none; -} -.btn .label { - position: relative; - top: -1px; -} -.label-default { - background-color: #777; -} -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #5e5e5e; -} -.label-primary { - background-color: #337ab7; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #286090; -} -.label-success { - background-color: #5cb85c; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #449d44; -} -.label-info { - background-color: #5bc0de; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; -} -.label-warning { - background-color: #f0ad4e; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #ec971f; -} -.label-danger { - background-color: #d9534f; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - background-color: #777; - border-radius: 10px; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -.btn-xs .badge, -.btn-group-xs > .btn .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #337ab7; - background-color: #fff; -} -.list-group-item > .badge { - float: right; -} -.list-group-item > .badge + .badge { - margin-right: 5px; -} -.nav-pills > li > a > .badge { - margin-left: 3px; -} -.jumbotron { - padding: 30px 15px; - margin-bottom: 30px; - color: inherit; - background-color: #eee; -} -.jumbotron h1, -.jumbotron .h1 { - color: inherit; -} -.jumbotron p { - margin-bottom: 15px; - font-size: 21px; - font-weight: 200; -} -.jumbotron > hr { - border-top-color: #d5d5d5; -} -.container .jumbotron, -.container-fluid .jumbotron { - border-radius: 6px; -} -.jumbotron .container { - max-width: 100%; -} -@media screen and (min-width: 768px) { - .jumbotron { - padding: 48px 0; - } - .container .jumbotron, - .container-fluid .jumbotron { - padding-right: 60px; - padding-left: 60px; - } - .jumbotron h1, - .jumbotron .h1 { - font-size: 63px; - } -} -.thumbnail { - display: block; - padding: 4px; - margin-bottom: 20px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: border 0.2s ease-in-out; - -o-transition: border 0.2s ease-in-out; - transition: border 0.2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-right: auto; - margin-left: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #337ab7; -} -.thumbnail .caption { - padding: 9px; - color: #333; -} -.alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 4px; -} -.alert h4 { - margin-top: 0; - color: inherit; -} -.alert .alert-link { - font-weight: bold; -} -.alert > p, -.alert > ul { - margin-bottom: 0; -} -.alert > p + p { - margin-top: 5px; -} -.alert-dismissable, -.alert-dismissible { - padding-right: 35px; -} -.alert-dismissable .close, -.alert-dismissible .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} -.alert-success { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.alert-success hr { - border-top-color: #c9e2b3; -} -.alert-success .alert-link { - color: #2b542c; -} -.alert-info { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.alert-info hr { - border-top-color: #a6e1ec; -} -.alert-info .alert-link { - color: #245269; -} -.alert-warning { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.alert-warning hr { - border-top-color: #f7e1b5; -} -.alert-warning .alert-link { - color: #66512c; -} -.alert-danger { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.alert-danger hr { - border-top-color: #e4b9c0; -} -.alert-danger .alert-link { - color: #843534; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-o-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - height: 20px; - margin-bottom: 20px; - overflow: hidden; - background-color: #f5f5f5; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -} -.progress-bar { - float: left; - width: 0; - height: 100%; - font-size: 12px; - line-height: 20px; - color: #fff; - text-align: center; - background-color: #337ab7; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-transition: width 0.6s ease; - -o-transition: width 0.6s ease; - transition: width 0.6s ease; -} -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: -webkit-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: -o-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - -webkit-background-size: 40px 40px; - background-size: 40px 40px; -} -.progress.active .progress-bar, -.progress-bar.active { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-bar-success { - background-color: #5cb85c; -} -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: -o-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); -} -.progress-bar-info { - background-color: #5bc0de; -} -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: -o-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); -} -.progress-bar-warning { - background-color: #f0ad4e; -} -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: -o-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); -} -.progress-bar-danger { - background-color: #d9534f; -} -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: -o-linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); - background-image: linear-gradient( - 45deg, - rgba(255, 255, 255, 0.15) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.15) 50%, - rgba(255, 255, 255, 0.15) 75%, - transparent 75%, - transparent - ); -} -.media { - margin-top: 15px; -} -.media:first-child { - margin-top: 0; -} -.media, -.media-body { - overflow: hidden; - zoom: 1; -} -.media-body { - width: 10000px; -} -.media-object { - display: block; -} -.media-right, -.media > .pull-right { - padding-left: 10px; -} -.media-left, -.media > .pull-left { - padding-right: 10px; -} -.media-left, -.media-right, -.media-body { - display: table-cell; - vertical-align: top; -} -.media-middle { - vertical-align: middle; -} -.media-bottom { - vertical-align: bottom; -} -.media-heading { - margin-top: 0; - margin-bottom: 5px; -} -.media-list { - padding-left: 0; - list-style: none; -} -.list-group { - padding-left: 0; - margin-bottom: 20px; -} -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid #ddd; -} -.list-group-item:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -a.list-group-item { - color: #555; -} -a.list-group-item .list-group-item-heading { - color: #333; -} -a.list-group-item:hover, -a.list-group-item:focus { - color: #555; - text-decoration: none; - background-color: #f5f5f5; -} -.list-group-item.disabled, -.list-group-item.disabled:hover, -.list-group-item.disabled:focus { - color: #777; - cursor: not-allowed; - background-color: #eee; -} -.list-group-item.disabled .list-group-item-heading, -.list-group-item.disabled:hover .list-group-item-heading, -.list-group-item.disabled:focus .list-group-item-heading { - color: inherit; -} -.list-group-item.disabled .list-group-item-text, -.list-group-item.disabled:hover .list-group-item-text, -.list-group-item.disabled:focus .list-group-item-text { - color: #777; -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading, -.list-group-item.active .list-group-item-heading > small, -.list-group-item.active:hover .list-group-item-heading > small, -.list-group-item.active:focus .list-group-item-heading > small, -.list-group-item.active .list-group-item-heading > .small, -.list-group-item.active:hover .list-group-item-heading > .small, -.list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; -} -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .list-group-item-text { - color: #c7ddef; -} -.list-group-item-success { - color: #3c763d; - background-color: #dff0d8; -} -a.list-group-item-success { - color: #3c763d; -} -a.list-group-item-success .list-group-item-heading { - color: inherit; -} -a.list-group-item-success:hover, -a.list-group-item-success:focus { - color: #3c763d; - background-color: #d0e9c6; -} -a.list-group-item-success.active, -a.list-group-item-success.active:hover, -a.list-group-item-success.active:focus { - color: #fff; - background-color: #3c763d; - border-color: #3c763d; -} -.list-group-item-info { - color: #31708f; - background-color: #d9edf7; -} -a.list-group-item-info { - color: #31708f; -} -a.list-group-item-info .list-group-item-heading { - color: inherit; -} -a.list-group-item-info:hover, -a.list-group-item-info:focus { - color: #31708f; - background-color: #c4e3f3; -} -a.list-group-item-info.active, -a.list-group-item-info.active:hover, -a.list-group-item-info.active:focus { - color: #fff; - background-color: #31708f; - border-color: #31708f; -} -.list-group-item-warning { - color: #8a6d3b; - background-color: #fcf8e3; -} -a.list-group-item-warning { - color: #8a6d3b; -} -a.list-group-item-warning .list-group-item-heading { - color: inherit; -} -a.list-group-item-warning:hover, -a.list-group-item-warning:focus { - color: #8a6d3b; - background-color: #faf2cc; -} -a.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus { - color: #fff; - background-color: #8a6d3b; - border-color: #8a6d3b; -} -.list-group-item-danger { - color: #a94442; - background-color: #f2dede; -} -a.list-group-item-danger { - color: #a94442; -} -a.list-group-item-danger .list-group-item-heading { - color: inherit; -} -a.list-group-item-danger:hover, -a.list-group-item-danger:focus { - color: #a94442; - background-color: #ebcccc; -} -a.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus { - color: #fff; - background-color: #a94442; - border-color: #a94442; -} -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} -.panel { - margin-bottom: 20px; - background-color: #fff; - border: 1px solid transparent; - border-radius: 4px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); -} -.panel-body { - padding: 15px; -} -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel-heading > .dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 16px; - color: inherit; -} -.panel-title > a, -.panel-title > small, -.panel-title > .small, -.panel-title > small > a, -.panel-title > .small > a { - color: inherit; -} -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .list-group, -.panel > .panel-collapse > .list-group { - margin-bottom: 0; -} -.panel > .list-group .list-group-item, -.panel > .panel-collapse > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; -} -.panel > .list-group:first-child .list-group-item:first-child, -.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .list-group:last-child .list-group-item:last-child, -.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.list-group + .panel-footer { - border-top-width: 0; -} -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; -} -.panel > .table caption, -.panel > .table-responsive > .table caption, -.panel > .panel-collapse > .table caption { - padding-right: 15px; - padding-left: 15px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 3px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 3px; -} -.panel > .panel-body + .table, -.panel > .panel-body + .table-responsive, -.panel > .table + .panel-body, -.panel > .table-responsive + .panel-body { - border-top: 1px solid #ddd; -} -.panel > .table > tbody:first-child > tr:first-child th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; -} -.panel > .table-responsive { - margin-bottom: 0; - border: 0; -} -.panel-group { - margin-bottom: 20px; -} -.panel-group .panel { - margin-bottom: 0; - border-radius: 4px; -} -.panel-group .panel + .panel { - margin-top: 5px; -} -.panel-group .panel-heading { - border-bottom: 0; -} -.panel-group .panel-heading + .panel-collapse > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - border-top: 1px solid #ddd; -} -.panel-group .panel-footer { - border-top: 0; -} -.panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #ddd; -} -.panel-default { - border-color: #ddd; -} -.panel-default > .panel-heading { - color: #333; - background-color: #f5f5f5; - border-color: #ddd; -} -.panel-default > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ddd; -} -.panel-default > .panel-heading .badge { - color: #f5f5f5; - background-color: #333; -} -.panel-default > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ddd; -} -.panel-primary { - border-color: #337ab7; -} -.panel-primary > .panel-heading { - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #337ab7; -} -.panel-primary > .panel-heading .badge { - color: #337ab7; - background-color: #fff; -} -.panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #337ab7; -} -.panel-success { - border-color: #d6e9c6; -} -.panel-success > .panel-heading { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.panel-success > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #d6e9c6; -} -.panel-success > .panel-heading .badge { - color: #dff0d8; - background-color: #3c763d; -} -.panel-success > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #d6e9c6; -} -.panel-info { - border-color: #bce8f1; -} -.panel-info > .panel-heading { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.panel-info > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #bce8f1; -} -.panel-info > .panel-heading .badge { - color: #d9edf7; - background-color: #31708f; -} -.panel-info > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #bce8f1; -} -.panel-warning { - border-color: #faebcc; -} -.panel-warning > .panel-heading { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.panel-warning > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #faebcc; -} -.panel-warning > .panel-heading .badge { - color: #fcf8e3; - background-color: #8a6d3b; -} -.panel-warning > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #faebcc; -} -.panel-danger { - border-color: #ebccd1; -} -.panel-danger > .panel-heading { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.panel-danger > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ebccd1; -} -.panel-danger > .panel-heading .badge { - color: #f2dede; - background-color: #a94442; -} -.panel-danger > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ebccd1; -} -.embed-responsive { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; -} -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; -} -.embed-responsive-16by9 { - padding-bottom: 56.25%; -} -.embed-responsive-4by3 { - padding-bottom: 75%; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} -.well-lg { - padding: 24px; - border-radius: 6px; -} -.well-sm { - padding: 9px; - border-radius: 3px; -} -.close { - float: right; - font-size: 21px; - font-weight: bold; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - filter: alpha(opacity=20); - opacity: 0.2; -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - filter: alpha(opacity=50); - opacity: 0.5; -} -button.close { - -webkit-appearance: none; - padding: 0; - cursor: pointer; - background: transparent; - border: 0; -} -.modal-open { - overflow: hidden; -} -.modal { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; - display: none; - overflow: hidden; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.modal.fade .modal-dialog { - -webkit-transition: -webkit-transform 0.3s ease-out; - -o-transition: -o-transform 0.3s ease-out; - transition: transform 0.3s ease-out; - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); -} -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} -.modal-content { - position: relative; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - outline: 0; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000; -} -.modal-backdrop.fade { - filter: alpha(opacity=0); - opacity: 0; -} -.modal-backdrop.in { - filter: alpha(opacity=50); - opacity: 0.5; -} -.modal-header { - min-height: 16.42857143px; - padding: 15px; - border-bottom: 1px solid #e5e5e5; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.42857143; -} -.modal-body { - position: relative; - padding: 15px; -} -.modal-footer { - padding: 15px; - text-align: right; - border-top: 1px solid #e5e5e5; -} -.modal-footer .btn + .btn { - margin-bottom: 0; - margin-left: 5px; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} -@media (min-width: 768px) { - .modal-dialog { - width: 600px; - margin: 30px auto; - } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - } - .modal-sm { - width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: 12px; - font-weight: normal; - line-height: 1.4; - filter: alpha(opacity=0); - opacity: 0; -} -.tooltip.in { - filter: alpha(opacity=90); - opacity: 0.9; -} -.tooltip.top { - padding: 5px 0; - margin-top: -3px; -} -.tooltip.right { - padding: 0 5px; - margin-left: 3px; -} -.tooltip.bottom { - padding: 5px 0; - margin-top: 3px; -} -.tooltip.left { - padding: 0 5px; - margin-left: -3px; -} -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #fff; - text-align: center; - text-decoration: none; - background-color: #000; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-left .tooltip-arrow { - right: 5px; - bottom: 0; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-right .tooltip-arrow { - bottom: 0; - left: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - right: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - left: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: none; - max-width: 276px; - padding: 1px; - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: 14px; - font-weight: normal; - line-height: 1.42857143; - text-align: left; - white-space: normal; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - padding: 8px 14px; - margin: 0; - font-size: 14px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: 5px 5px 0 0; -} -.popover-content { - padding: 9px 14px; -} -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover > .arrow { - border-width: 11px; -} -.popover > .arrow:after { - content: ''; - border-width: 10px; -} -.popover.top > .arrow { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, 0.25); - border-bottom-width: 0; -} -.popover.top > .arrow:after { - bottom: 1px; - margin-left: -10px; - content: ' '; - border-top-color: #fff; - border-bottom-width: 0; -} -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, 0.25); - border-left-width: 0; -} -.popover.right > .arrow:after { - bottom: -10px; - left: 1px; - content: ' '; - border-right-color: #fff; - border-left-width: 0; -} -.popover.bottom > .arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, 0.25); -} -.popover.bottom > .arrow:after { - top: 1px; - margin-left: -10px; - content: ' '; - border-top-width: 0; - border-bottom-color: #fff; -} -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, 0.25); -} -.popover.left > .arrow:after { - right: 1px; - bottom: -10px; - content: ' '; - border-right-width: 0; - border-left-color: #fff; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} -.carousel-inner > .item { - position: relative; - display: none; - -webkit-transition: 0.6s ease-in-out left; - -o-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -@media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - -webkit-transition: -webkit-transform 0.6s ease-in-out; - -o-transition: -o-transform 0.6s ease-in-out; - transition: transform 0.6s ease-in-out; - - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000; - perspective: 1000; - } - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - left: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - left: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - left: 0; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 15%; - font-size: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); - filter: alpha(opacity=50); - opacity: 0.5; -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: -webkit-gradient( - linear, - left top, - right top, - from(rgba(0, 0, 0, 0.5)), - to(rgba(0, 0, 0, 0.0001)) - ); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control.right { - right: 0; - left: auto; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: -webkit-gradient( - linear, - left top, - right top, - from(rgba(0, 0, 0, 0.0001)), - to(rgba(0, 0, 0, 0.5)) - ); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - filter: alpha(opacity=90); - outline: 0; - opacity: 0.9; -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - margin-top: -10px; - font-family: serif; - line-height: 1; -} -.carousel-control .icon-prev:before { - content: '\2039'; -} -.carousel-control .icon-next:before { - content: '\203a'; -} -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - padding-left: 0; - margin-left: -30%; - text-align: center; - list-style: none; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); - border: 1px solid #fff; - border-radius: 10px; -} -.carousel-indicators .active { - width: 12px; - height: 12px; - margin: 0; - background-color: #fff; -} -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); -} -.carousel-caption .btn { - text-shadow: none; -} -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -15px; - font-size: 30px; - } - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: -15px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-right: -15px; - } - .carousel-caption { - right: 20%; - left: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-footer:before, -.modal-footer:after { - display: table; - content: ' '; -} -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-footer:after { - clear: both; -} -.center-block { - display: block; - margin-right: auto; - margin-left: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-inline-block { - display: none !important; -} -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - table.visible-xs { - display: table; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} -@media (max-width: 767px) { - .visible-xs-block { - display: block !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline { - display: inline !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline-block { - display: inline-block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - table.visible-sm { - display: table; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-block { - display: block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline { - display: inline !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline-block { - display: inline-block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; - } - table.visible-md { - display: table; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-block { - display: block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline { - display: inline !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline-block { - display: inline-block !important; - } -} -@media (min-width: 1200px) { - .visible-lg { - display: block !important; - } - table.visible-lg { - display: table; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} -@media (min-width: 1200px) { - .visible-lg-block { - display: block !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline { - display: inline !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline-block { - display: inline-block !important; - } -} -@media (max-width: 767px) { - .hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md { - display: none !important; - } -} -@media (min-width: 1200px) { - .hidden-lg { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: block !important; - } - table.visible-print { - display: table; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.visible-print { - display: table-cell !important; - } -} -.visible-print-block { - display: none !important; -} -@media print { - .visible-print-block { - display: block !important; - } -} -.visible-print-inline { - display: none !important; -} -@media print { - .visible-print-inline { - display: inline !important; - } -} -.visible-print-inline-block { - display: none !important; -} -@media print { - .visible-print-inline-block { - display: inline-block !important; - } -} -@media print { - .hidden-print { - display: none !important; - } -} diff --git a/theme_old/styles/web/sass/core/_legacy/bootstrap/fonts/glyphicons-halflings-regular.woff b/theme_old/styles/web/sass/core/_legacy/bootstrap/fonts/glyphicons-halflings-regular.woff deleted file mode 100644 index 9e61285..0000000 Binary files a/theme_old/styles/web/sass/core/_legacy/bootstrap/fonts/glyphicons-halflings-regular.woff and /dev/null differ diff --git a/theme_old/styles/web/sass/core/_legacy/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/theme_old/styles/web/sass/core/_legacy/bootstrap/fonts/glyphicons-halflings-regular.woff2 deleted file mode 100644 index 64539b5..0000000 Binary files a/theme_old/styles/web/sass/core/_legacy/bootstrap/fonts/glyphicons-halflings-regular.woff2 and /dev/null differ diff --git a/theme_old/styles/web/sass/core/_variables.scss b/theme_old/styles/web/sass/core/_variables.scss deleted file mode 100644 index 5c864ad..0000000 --- a/theme_old/styles/web/sass/core/_variables.scss +++ /dev/null @@ -1,649 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -// -// ██████╗ █████╗ ███████╗██╗ ██████╗ -// ██╔══██╗██╔══██╗██╔════╝██║██╔════╝ -// ██████╔╝███████║███████╗██║██║ -// ██╔══██╗██╔══██║╚════██║██║██║ -// ██████╔╝██║ ██║███████║██║╚██████╗ -// ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝ -// - - -//== Gray Shades -//## Different gray shades to be used for our variables and components -$gray-darker: #222 !default; -$gray-dark: #333 !default; -$gray: #555 !default; -$gray-light: #888 !default; -$gray-primary: #d7d7d7 !default; -$gray-lighter: #eee !default; - - -//== Step 1: Brand Colors -$brand-default: #DDDDDD !default; -$brand-primary: #0595DB !default; -$brand-inverse: #252C36 !default; -$brand-info: #48B0F7 !default; -$brand-success: #76CA02 !default; -$brand-warning: #f99b1d !default; -$brand-danger: #ed1c24 !default; - -$brand-logo: false !default; -$brand-logo-height: 26px !default; -$brand-logo-width: 26px !default; // Only used for CSS brand logo - - - - - -//== Step 2: UI Customization - -// Default Font Size & Color -$font-size-default: 14px !default; -$font-color-default: #555 !default; - -// Global Border Color -$border-color-default: $gray-primary !default; -$border-radius-default: 4px !default; - -// Topbar -$topbar-bg: #FFF !default; -$topbar-minimalheight: 60px !default; -$topbar-border-color: $border-color-default !default; - -// Topbar mobile -$m-header-height: 45px !default; -$m-header-bg: $topbar-bg !default; -$m-header-color: #555 !default; -$m-header-title-size: 17px !default; - - -// Sidebar -$sidebar-bg: $brand-inverse !default; - -// Navbar Brand Name / For your company, product, or project name (used in layouts/base/) -$navbar-brand-name: $font-color-default !default; - -// Background Colors -$bg-color: #FFF !default; -$bg-color-secondary: #F5F8FD !default; // Background color that is used for specific page templates background - -// Default Link Color -$link-color: $brand-primary !default; -$link-hover-color: darken($link-color, 15%) !default; - - - - - -// -// █████╗ ██████╗ ██╗ ██╗ █████╗ ███╗ ██╗ ██████╗███████╗██████╗ -// ██╔══██╗██╔══██╗██║ ██║██╔══██╗████╗ ██║██╔════╝██╔════╝██╔══██╗ -// ███████║██║ ██║██║ ██║███████║██╔██╗ ██║██║ █████╗ ██║ ██║ -// ██╔══██║██║ ██║╚██╗ ██╔╝██╔══██║██║╚██╗██║██║ ██╔══╝ ██║ ██║ -// ██║ ██║██████╔╝ ╚████╔╝ ██║ ██║██║ ╚████║╚██████╗███████╗██████╔╝ -// ╚═╝ ╚═╝╚═════╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ -// - - -//== Typography -//## Change your font family, weight, line-height, headings and more (used in components/typography) - -// Font Family Import (Used for google font plugin in theme creater https://ux.mendix.com/theme-creator.html) -$font-family-import: "https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700" !default; -@if $font-family-import != false { - // Only import, if the import is set - @import url($font-family-import); -} - -// Font Family / False = fallback from Bootstrap (Helvetica Neue) -$font-family-base: 'Open Sans', sans-serif !default; - -// Font Sizes -$font-size-large: 16px !default; -$font-size-small: 12px !default; - -// Font Weights -$font-weight-light: 100 !default; -$font-weight-normal: normal !default; -$font-weight-semibold: 600 !default; -$font-weight-bold: bold !default; - -// Font Size Headers -$font-size-h1: 31px !default; -$font-size-h2: 26px !default; -$font-size-h3: 24px !default; -$font-size-h4: 18px !default; -$font-size-h5: $font-size-default !default; -$font-size-h6: 12px !default; - -// Font Weight Headers -$font-weight-header: $font-weight-normal !default; - -// Line Height -$line-height-base: 1.428571429 !default; - -// Spacing -$font-header-margin: 15px 0 30px 0 !default; - -// Text Colors -$font-color-header: #17347B !default; -$font-color-detail: $gray-light !default; - - - - - -//== Navigation -//## Used in components/navigation - -// Default Navigation styling -$navigation-item-height: 60px !default; -$navigation-item-padding: 5px 15px !default; - -$navigation-font-size: $font-size-default !default; -$navigation-sub-font-size: $font-size-small !default; -$navigation-glyph-size: 20px !default; // For glyphicons that you can select in the Mendix Modeler - -$navigation-bg: $brand-inverse !default; -$navigation-bg-hover: lighten($navigation-bg, 4) !default; -$navigation-bg-active: lighten($navigation-bg, 8) !default; -$navigation-color: #FFF !default; -$navigation-color-hover: #FFF !default; -$navigation-color-active: #FFF !default; - -$navigation-sub-bg: darken($navigation-bg, 4) !default; -$navigation-sub-bg-hover: $navigation-sub-bg !default; -$navigation-sub-bg-active: $navigation-sub-bg !default; -$navigation-sub-color: #AAA !default; -$navigation-sub-color-hover: $brand-primary !default; -$navigation-sub-color-active: $brand-primary !default; - -$navigation-border-color: $navigation-bg-hover !default; - -// Navigation Sidebar -$navsidebar-font-size: $font-size-default !default; -$navsidebar-sub-font-size: $font-size-small !default; -$navsidebar-glyph-size: 20px !default; // For glyphicons that you can select in the Mendix Modeler - -$navsidebar-bg: $sidebar-bg !default; -$navsidebar-bg-hover: lighten($navsidebar-bg, 4) !default; -$navsidebar-bg-active: lighten($navsidebar-bg, 8) !default; -$navsidebar-color: #FFF !default; -$navsidebar-color-hover: #FFF !default; -$navsidebar-color-active: #FFF !default; - -$navsidebar-sub-bg: darken($navsidebar-bg, 4) !default; -$navsidebar-sub-bg-hover: $navsidebar-sub-bg !default; -$navsidebar-sub-bg-active: $navsidebar-sub-bg !default; -$navsidebar-sub-color: #AAA !default; -$navsidebar-sub-color-hover: $brand-primary !default; -$navsidebar-sub-color-active: $brand-primary !default; - -$navsidebar-border-color: $navsidebar-bg-hover !default; - -// Navigation topbar -$navtopbar-font-size: $font-size-default !default; -$navtopbar-sub-font-size: $font-size-small !default; -$navtopbar-glyph-size: 1.2em !default; // For glyphicons that you can select in the Mendix Modeler - -$navtopbar-bg: $topbar-bg !default; -$navtopbar-bg-hover: darken($navtopbar-bg, 4) !default; -$navtopbar-bg-active: darken($navtopbar-bg, 8) !default; -$navtopbar-color: $font-color-default !default; -$navtopbar-color-hover: $navtopbar-color !default; -$navtopbar-color-active: $navtopbar-color !default; - -$navtopbar-sub-bg: lighten($navtopbar-bg, 4) !default; -$navtopbar-sub-bg-hover: $navtopbar-sub-bg !default; -$navtopbar-sub-bg-active: $navtopbar-sub-bg !default; -$navtopbar-sub-color: #AAA !default; -$navtopbar-sub-color-hover: $brand-primary !default; -$navtopbar-sub-color-active: $brand-primary !default; - -//## Used in layouts/base -$navtopbar-border-color: $topbar-border-color !default; - - - - -//== Form -//## Used in components/inputs - -// Values that can be used default | lined -$form-input-style: default !default; - -// Form Label -$form-label-color: #666 !default; -$form-label-size: $font-size-default !default; -$form-label-weight: $font-weight-semibold !default; -$form-label-gutter: 8px !default; - -// Form Input dimensions -$form-input-height: auto !default; -$form-input-padding-y: 8px !default; -$form-input-padding-x: 10px !default; -$form-input-font-size: $form-label-size !default; -$form-input-line-height: $line-height-base !default; -$form-input-border-radius: $border-radius-default !default; - -// Form Input styling -$form-input-bg: #FFF !default; -$form-input-bg-focus: #FFF !default; -$form-input-bg-hover: $gray-primary !default; -$form-input-bg-disabled: $gray-lighter !default; -$form-input-color: $font-color-default !default; -$form-input-focus-color: $form-input-color !default; -$form-input-disabled-color: $form-input-color !default; -$form-input-placeholder-color: $gray-light !default; -$form-input-border-color: $border-color-default !default; -$form-input-border-focus-color: $brand-primary !default; - -// Form Input Static styling -$form-input-static-border-color: #F0F0EE !default; - -// Form Group -$form-group-margin-bottom: 15px !default; -$form-group-gutter: 15px !default; - - - - -//== Buttons -//## Define background-color, border-color and text. Used in components/buttons - -// Default button style -$btn-font-size: 14px !default; -$btn-bordered: false !default; // Default value false, set to true if you want this effect -$btn-border-radius: $border-radius-default !default; - -// Button Background Color -$btn-default-bg: #FFF !default; -$btn-inverse-bg: $brand-inverse !default; -$btn-primary-bg: $brand-primary !default; -$btn-info-bg: $brand-info !default; -$btn-success-bg: $brand-success !default; -$btn-warning-bg: $brand-warning !default; -$btn-danger-bg: $brand-danger !default; - -// Button Border Color -$btn-default-border-color: $brand-default !default; -$btn-inverse-border-color: $btn-inverse-bg !default; -$btn-primary-border-color: $btn-primary-bg !default; -$btn-info-border-color: $btn-info-bg !default; -$btn-success-border-color: $btn-success-bg !default; -$btn-warning-border-color: $btn-warning-bg !default; -$btn-danger-border-color: $btn-danger-bg !default; - -// Button Text Color -$btn-default-color: $brand-primary !default; -$btn-inverse-color: #FFF !default; -$btn-primary-color: #FFF !default; -$btn-info-color: #FFF !default; -$btn-success-color: #FFF !default; -$btn-warning-color: #FFF !default; -$btn-danger-color: #FFF !default; - -// Button Background Color -$btn-default-bg-hover: $btn-default-border-color !default; -$btn-inverse-bg-hover: mix($btn-inverse-bg, white, 80%) !default; -$btn-primary-bg-hover: mix($btn-primary-bg, black, 80%) !default; -$btn-info-bg-hover: mix($btn-info-bg, black, 80%) !default; -$btn-success-bg-hover: mix($btn-success-bg, black, 80%) !default; -$btn-warning-bg-hover: mix($btn-warning-bg, black, 80%) !default; -$btn-danger-bg-hover: mix($btn-danger-bg, black, 80%) !default; -$btn-link-bg-hover: $gray-lighter !default; - - - - -//== Header blocks -//## Define look and feel over multible building blocks that serve as header -$header-bg-color: $bg-color-secondary !default; -$header-text-color: #FFF !default; -$header-text-color-detail: rgba(0,0,0, 0.2) !default; - - - - - -// -// ███████╗██╗ ██╗██████╗ ███████╗██████╗ ████████╗ -// ██╔════╝╚██╗██╔╝██╔══██╗██╔════╝██╔══██╗╚══██╔══╝ -// █████╗ ╚███╔╝ ██████╔╝█████╗ ██████╔╝ ██║ -// ██╔══╝ ██╔██╗ ██╔═══╝ ██╔══╝ ██╔══██╗ ██║ -// ███████╗██╔╝ ██╗██║ ███████╗██║ ██║ ██║ -// ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ -// - -//== Color variations -//## These variations are used to support several other variables and components - -// Color variations -$color-default-darker: mix($brand-default, black, 60%) !default; -$color-default-dark: mix($brand-default, black, 70%) !default; -$color-default-light: mix($brand-default, white, 60%) !default; -$color-default-lighter: mix($brand-default, white, 20%) !default; - -$color-inverse-darker: mix($brand-inverse, black, 60%) !default; -$color-inverse-dark: mix($brand-inverse, black, 70%) !default; -$color-inverse-light: mix($brand-inverse, white, 60%) !default; -$color-inverse-lighter: mix($brand-inverse, white, 20%) !default; - -$color-primary-darker: mix($brand-primary, black, 60%) !default; -$color-primary-dark: mix($brand-primary, black, 70%) !default; -$color-primary-light: mix($brand-primary, white, 60%) !default; -$color-primary-lighter: mix($brand-primary, white, 20%) !default; - -$color-info-darker: mix($brand-info, black, 60%) !default; -$color-info-dark: mix($brand-info, black, 70%) !default; -$color-info-light: mix($brand-info, white, 60%) !default; -$color-info-lighter: mix($brand-info, white, 20%) !default; - -$color-success-darker: mix($brand-success, black, 60%) !default; -$color-success-dark: mix($brand-success, black, 70%) !default; -$color-success-light: mix($brand-success, white, 60%) !default; -$color-success-lighter: mix($brand-success, white, 20%) !default; - -$color-warning-darker: mix($brand-warning, black, 60%) !default; -$color-warning-dark: mix($brand-warning, black, 70%) !default; -$color-warning-light: mix($brand-warning, white, 60%) !default; -$color-warning-lighter: mix($brand-warning, white, 20%) !default; - -$color-danger-darker: mix($brand-danger, black, 60%) !default; -$color-danger-dark: mix($brand-danger, black, 70%) !default; -$color-danger-light: mix($brand-danger, white, 60%) !default; -$color-danger-lighter: mix($brand-danger, white, 20%) !default; - -$brand-gradient: linear-gradient(152deg, #0CC7F0 0%, #087ECC 51%, #077AC9 55%, #0659B9 78%) !default; - - -//== Grids -//## Used for Datagrid, Templategrid, Listview & Tables (see components folder) - -// Default Border Colors -$grid-border-color: $border-color-default !default; - -// Spacing -// Default -$grid-padding-top: 15px !default; -$grid-padding-right: 15px !default; -$grid-padding-bottom: 15px !default; -$grid-padding-left: 15px !default; - -// Listview -$listview-padding-top: 15px !default; -$listview-padding-right: 15px !default; -$listview-padding-bottom: 15px !default; -$listview-padding-left: 15px !default; - -// Background Colors -$grid-bg: #FFF !default; -$grid-bg-header: transparent !default; // Grid Headers -$grid-bg-hover: mix($grid-border-color, #FFF, 20%) !default; -$grid-bg-selected: mix($grid-border-color, #FFF, 30%) !default; -$grid-bg-selected-hover: mix($grid-border-color, #FFF, 50%) !default; - -// Striped Background Color -$grid-bg-striped: mix($grid-border-color, #FFF, 10%) !default; - -// Background Footer Color -$grid-footer-bg: $gray-primary !default; - -// Text Color -$grid-selected-color: $font-color-default !default; - -// Paging Colors -$grid-paging-bg: transparent !default; -$grid-paging-bg-hover: transparent !default; -$grid-paging-border-color: transparent !default; -$grid-paging-border-color-hover: transparent !default; -$grid-paging-color: $gray-light !default; -$grid-paging-color-hover: $brand-primary !default; - - - - -//== Tabs -//## Default variables for Tab Container Widget (used in components/tabcontainer) - -// Text Color -$tabs-color: $font-color-detail !default; -$tabs-color-active: $font-color-default !default; -$tabs-lined-color-active: $brand-primary !default; - -// Border Color -$tabs-border-color: $border-color-default !default; -$tabs-lined-border-color: $brand-primary !default; - -// Background Color -$tabs-bg: #FFF !default; -$tabs-bg-hover: lighten($tabs-border-color,5) !default; -$tabs-bg-active: $brand-primary !default; - - - - -//== Modals -//## Default Mendix Modal, Blocking Modal and Login Modal (used in components/modals) - -// Background Color -$modal-header-bg: transparent !default; - -// Border Color -$modal-header-border-color: $border-color-default !default; - -// Text Color -$modal-header-color: $font-color-default !default; - - - - -//== Dataview -//## Default variables for Dataview Widget (used in components/dataview) - -// Controls -$dataview-controls-bg: transparent !default; -$dataview-controls-border-color: $border-color-default !default; - -// Empty Message -$dataview-emptymessage-bg: $bg-color !default; -$dataview-emptymessage-color: $font-color-default !default; - - - - -//== Alerts -//## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts) - -// Background Color -$alert-info-bg: $color-info-lighter !default; -$alert-success-bg: $color-success-lighter !default; -$alert-warning-bg: $color-warning-lighter !default; -$alert-danger-bg: $color-danger-lighter !default; - -// Text Color -$alert-info-color: $color-info-darker !default; -$alert-success-color: $color-success-darker !default; -$alert-warning-color: $color-warning-darker !default; -$alert-danger-color: $color-danger-darker !default; - -// Border Color -$alert-info-border-color: $color-info-dark !default; -$alert-success-border-color: $color-success-dark !default; -$alert-warning-border-color: $color-warning-dark !default; -$alert-danger-border-color: $color-danger-dark !default; - - - - -//== Labels -//## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels) - -// Background Color -$label-default-bg: $brand-default !default; -$label-primary-bg: $brand-primary !default; -$label-info-bg: $brand-info !default; -$label-inverse-bg: $brand-inverse !default; -$label-success-bg: $brand-success !default; -$label-warning-bg: $brand-warning !default; -$label-danger-bg: $brand-danger !default; - -// Border Color -$label-default-border-color: $brand-default !default; -$label-primary-border-color: $brand-primary !default; -$label-info-border-color: $brand-info !default; -$label-success-border-color: $brand-success !default; -$label-warning-border-color: $brand-warning !default; -$label-danger-border-color: $brand-danger !default; - -// Text Color -$label-default-color: $font-color-default !default; -$label-primary-color: #FFF !default; -$label-info-color: #FFF !default; -$label-inverse-color: #FFF !default; -$label-success-color: #FFF !default; -$label-warning-color: #FFF !default; -$label-danger-color: #FFF !default; - - - - -//== Groupbox -//## Default variables for Groupbox Widget (used in components/groupbox) - -// Background Color -$groupbox-default-bg: $brand-default !default; -$groupbox-inverse-bg: $brand-inverse !default; -$groupbox-primary-bg: $brand-primary !default; -$groupbox-info-bg: $brand-info !default; -$groupbox-success-bg: $brand-success !default; -$groupbox-warning-bg: $brand-warning !default; -$groupbox-danger-bg: $brand-danger !default; -$groupbox-white-bg: #FFF !default; - -// Text Color -$groupbox-default-color: $font-color-default !default; -$groupbox-inverse-color: #FFF !default; -$groupbox-primary-color: #FFF !default; -$groupbox-info-color: #FFF !default; -$groupbox-success-color: #FFF !default; -$groupbox-warning-color: #FFF !default; -$groupbox-danger-color: #FFF !default; -$groupbox-white-color: $font-color-default !default; - - - - -//== Callout (groupbox) Colors -//## Extended variables for Groupbox Widget (used in components/groupbox) - -// Text and Border Color -$callout-default-color: $font-color-default !default; -$callout-info-color: $brand-info !default; -$callout-success-color: $brand-success !default; -$callout-warning-color: $brand-warning !default; -$callout-danger-color: $brand-danger !default; - -// Background Color -$callout-default-bg: $color-default-lighter!default; -$callout-info-bg: $color-info-lighter !default; -$callout-success-bg: $color-success-lighter !default; -$callout-warning-bg: $color-warning-lighter !default; -$callout-danger-bg: $color-danger-lighter !default; - -//== Timeline -//## Extended variables for Timeline Widget -// Colors -$timeline-icon-color: $brand-primary; -$timeline-border-color: $border-color-default; - -$timeline-color-header: $font-color-header; -$timeline-color-detail: $font-color-detail; - -// Sizes -$timeline-icon-size: 18px; - -//== Spacing -//## Advanced layout options (used in base/mixins/default-spacing) - -// Small spacing -$spacing-small: 5px !default; - -// Medium spacing -$spacing-medium: 15px !default; -$t-spacing-medium: 15px !default; -$m-spacing-medium: 15px !default; - -// Large spacing -$spacing-large: 30px !default; -$t-spacing-large: 30px !default; -$m-spacing-large: 15px !default; - -// Layout spacing -$layout-spacing-top: 30px !default; -$layout-spacing-right: 30px !default; -$layout-spacing-bottom: 30px !default; -$layout-spacing-left: 30px !default; - -$t-layout-spacing-top: 30px !default; -$t-layout-spacing-right: 30px !default; -$t-layout-spacing-bottom: 30px !default; -$t-layout-spacing-left: 30px !default; - -$m-layout-spacing-top: 15px !default; -$m-layout-spacing-right: 15px !default; -$m-layout-spacing-bottom: 15px !default; -$m-layout-spacing-left: 15px !default; - -// Combined layout spacing -$layout-spacing: $layout-spacing-top $layout-spacing-right $layout-spacing-bottom $layout-spacing-left !default; -$m-layout-spacing: $m-layout-spacing-top $m-layout-spacing-right $m-layout-spacing-bottom $m-layout-spacing-left !default; -$t-layout-spacing: $t-layout-spacing-top $t-layout-spacing-right $t-layout-spacing-bottom $t-layout-spacing-left !default; - -// Gutter size -$gutter-size: 15px !default; - - - - - -//== Tables -//## Table spacing options (used in components/tables) - -$padding-table-cell-top: 8px !default; -$padding-table-cell-bottom: 8px !default; -$padding-table-cell-left: 8px !default; -$padding-table-cell-right: 8px !default; - - - - -//== Media queries breakpoints -//## Define the breakpoints at which your layout will change, adapting to different screen sizes. - -$screen-xs: 480px !default; -$screen-sm: 576px !default; -$screen-md: 768px !default; -$screen-lg: 992px !default; -$screen-xl: 1200px !default; - -// So media queries don't overlap when required, provide a maximum (used for max-width) -$screen-xs-max: ($screen-sm - 1) !default; -$screen-sm-max: ($screen-md - 1) !default; -$screen-md-max: ($screen-lg - 1) !default; -$screen-lg-max: ($screen-xl - 1) !default; - - -//== Settings -//## Enable or disable your desired framework features -// Use of !important -$important-flex: true !default; // ./base/flex.scss -$important-spacing: true !default; // ./base/spacing.scss -$important-helpers: true !default; // ./helpers/helperclasses.scss diff --git a/theme_old/styles/web/sass/core/base/_animation.scss b/theme_old/styles/web/sass/core/base/_animation.scss deleted file mode 100644 index 425d343..0000000 --- a/theme_old/styles/web/sass/core/base/_animation.scss +++ /dev/null @@ -1,55 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -@keyframes slideInUp { - from { - visibility: visible; - transform: translate3d(0, 100%, 0); - } - - to { - transform: translate3d(0, 0, 0); - } -} - -.animated { - animation-duration: 0.4s; - animation-fill-mode: both; -} - -.slideInUp { - animation-name: slideInUp; -} - -@keyframes slideInDown { - from { - visibility: visible; - transform: translate3d(0, -100%, 0); - } - - to { - transform: translate3d(0, 0, 0); - } -} - -.slideInDown { - animation-name: slideInDown; -} - -@keyframes fadeIn { - from { - opacity: 0; - } - - to { - opacity: 1; - } -} - -.fadeIn { - animation-name: fadeIn; -} diff --git a/theme_old/styles/web/sass/core/base/_base.scss b/theme_old/styles/web/sass/core/base/_base.scss deleted file mode 100644 index b9d4379..0000000 --- a/theme_old/styles/web/sass/core/base/_base.scss +++ /dev/null @@ -1,71 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Base - - Default settings -========================================================================== */ -html { - height: 100%; -} - -body { - min-height: 100%; - color: $font-color-default; - background-color: $bg-color; - font-family: $font-family-base; - font-size: $font-size-default; - font-weight: $font-weight-normal; - line-height: $line-height-base; -} - -a { - -moz-transition: 0.25s; - -o-transition: 0.25s; - -webkit-transition: 0.25s; - transition: 0.25s; - color: $link-color; - -webkit-backface-visibility: hidden; -} - -a:hover { - text-decoration: underline; - color: $link-hover-color; -} - -// Address `outline` inconsistency between Chrome and other browsers. -a:focus { - outline: thin dotted; -} - -// Improve readability when focused and also mouse hovered in all browsers -a:active, -a:hover { - outline: 0; -} - -// Removes large blue border in chrome on focus and active states -input:focus, -button:focus, -.mx-link:focus { - outline: 0; -} - -// Removes large blue border for tabindexes from widgets -div[tabindex] { - outline: 0; -} - -// Disabled State -.disabled, -[disabled] { - cursor: not-allowed; - // opacity: 0.65; - -webkit-box-shadow: none; - box-shadow: none; - filter: alpha(opacity=65); -} diff --git a/theme_old/styles/web/sass/core/base/_flex.scss b/theme_old/styles/web/sass/core/base/_flex.scss deleted file mode 100644 index 4f6364e..0000000 --- a/theme_old/styles/web/sass/core/base/_flex.scss +++ /dev/null @@ -1,180 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Flex - - Flex classes -========================================================================== */ -$important-flex-value: if($important-flex, ' !important', ''); - -// Flex layout -.flexcontainer { - display: flex; - overflow: hidden; - flex: 1; - flex-direction: row; - - .flexitem { - margin-right: $gutter-size; - - &:last-child { - margin-right: 0; - } - } - - .flexitem-main { - overflow: hidden; - flex: 1; - } -} - -// These classes define the order of the children -.flex-row { - flex-direction: row #{$important-flex-value}; -} - -.flex-column { - flex-direction: column #{$important-flex-value}; -} - -.flex-row-reverse { - flex-direction: row-reverse #{$important-flex-value}; -} - -.flex-column-reverse { - flex-direction: column-reverse #{$important-flex-value}; -} - -.flex-wrap { - flex-wrap: wrap #{$important-flex-value}; -} - -.flex-nowrap { - flex-wrap: nowrap #{$important-flex-value}; -} - -.flex-wrap-reverse { - flex-wrap: wrap-reverse #{$important-flex-value}; -} - -// Align children in both directions -.flex-center { - align-items: center #{$important-flex-value}; - justify-content: center #{$important-flex-value}; -} - -// These classes define the alignment of the children -.justify-content-start { - justify-content: flex-start #{$important-flex-value}; -} - -.justify-content-end { - justify-content: flex-end #{$important-flex-value}; -} - -.justify-content-center { - justify-content: center #{$important-flex-value}; -} - -.justify-content-between { - justify-content: space-between #{$important-flex-value}; -} - -.justify-content-around { - justify-content: space-around #{$important-flex-value}; -} - -.justify-content-evenly { - // Not Supported in IE11 - justify-content: space-evenly #{$important-flex-value}; -} - -.justify-content-stretch { - justify-content: stretch #{$important-flex-value}; -} - -/// These classes define the alignment of the children in the cross-direction -.align-children-start { - align-items: flex-start #{$important-flex-value}; -} - -.align-children-end { - align-items: flex-end #{$important-flex-value}; -} - -.align-children-center { - align-items: center #{$important-flex-value}; -} - -.align-children-baseline { - align-items: baseline #{$important-flex-value}; -} - -.align-children-stretch { - align-items: stretch #{$important-flex-value}; -} - -/// These classes define the alignment of the rows of children in the cross-direction -.align-content-start { - align-content: flex-start #{$important-flex-value}; -} - -.align-content-end { - align-content: flex-end #{$important-flex-value}; -} - -.align-content-center { - align-content: center #{$important-flex-value}; -} - -.align-content-between { - align-content: space-between #{$important-flex-value}; -} - -.align-content-around { - align-content: space-around #{$important-flex-value}; -} - -.align-content-stretch { - align-content: stretch #{$important-flex-value}; -} - -/// These classes allow the default alignment to be overridden for individual items -.align-self-auto { - align-self: auto #{$important-flex-value}; -} - -.align-self-start { - align-self: flex-start #{$important-flex-value}; -} - -.align-self-end { - align-self: flex-end #{$important-flex-value}; -} - -.align-self-center { - align-self: center #{$important-flex-value}; -} - -.align-self-baseline { - align-self: baseline #{$important-flex-value}; -} - -.align-self-stretch { - align-self: stretch #{$important-flex-value}; -} - -/// These classes define the percentage of available free space within a flex container a flex item will take. -@mixin flex-items($number) { - @for $i from 1 through $number { - .flexitem-#{$i} { - flex: #{$i} #{$i} 1%; - } - } -} - -@include flex-items($number: 12); diff --git a/theme_old/styles/web/sass/core/base/_login.scss b/theme_old/styles/web/sass/core/base/_login.scss deleted file mode 100644 index 6df8a0c..0000000 --- a/theme_old/styles/web/sass/core/base/_login.scss +++ /dev/null @@ -1,188 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -body { - height: 100%; -} - -.loginpage { - display: flex; - height: 100%; -} -.loginpage-logo { - position: absolute; - top: 30px; - right: 30px; - width: 120px; -} - -.loginpage-left { - display: none; -} - -.loginpage-right { - display: flex; - flex: 1; - flex-direction: column; - justify-content: space-around; -} -.loginpage-formwrapper { - width: 400px; - margin: 0 auto; -} -// Form -.loginpage-form { - .alert { - display: none; - } - - .btn { - border-radius: 40px; - } - - // Form label + input - .form-group { - width: 100%; - align-items: center; - - .control-label { - flex: 4; - margin-bottom: 0; - font-size: $font-size-default; - font-weight: 500; - } - - .inputwrapper { - flex: 8; - position: relative; - width: 100%; - - .glyphicon { - &:before { - -webkit-transition: color 0.4s; - -moz-transition: color 0.4s; - -o-transition: color 0.4s; - transition: color 0.4s; - } - - position: absolute; - top: 50%; - left: $form-input-padding-x; - -webkit-transform: translateY(-50%); - -moz-transform: translateY(-50%); - -ms-transform: translateY(-50%); - -o-transform: translateY(-50%); - transform: translateY(-50%); - - &-eye-open:hover, - &-eye-close:hover { - cursor: pointer; - color: $brand-primary; - } - } - - .form-control { - padding: $form-input-padding-y $form-input-padding-x $form-input-padding-y 45px; - } - - .form-control:focus ~ .glyphicon:before { - color: $brand-primary; - } - } - } -} -// Divider - only on login-with-sso.html -.loginpage-alternativelabel { - display: flex; - align-items: center; - flex-direction: row; - flex-wrap: nowrap; - justify-content: space-between; - margin: 25px 0px; - - hr { - flex: 1; - margin: 20px 0 20px 10px; - border: 0; - border-color: #d8d8d8; - border-top: 1px solid #eeeeee; - } -} - -.loginpage-signin { - color: #555555; -} - -// Show only on wide screens -@media screen and (min-width: $screen-xl) { - .loginpage-logo { - width: 150px; - } - - .loginpage-left { - position: relative; - display: block; - flex: 1; - width: 100%; - height: 100%; - } - // Image and clipping mask - .loginpage-image { - height: 100%; - animation: makePointer 1s ease-out both; - background: left / cover no-repeat url('../../../resources/work-do-more.jpeg'); // Microsoft EDGE - background: left / cover no-repeat - linear-gradient(to right, rgba($brand-primary, 0.9) 0%, rgba($brand-primary, 0.6) 100%), - left / cover no-repeat url('../../../resources/work-do-more.jpeg'); - background: left / cover no-repeat -moz-linear-gradient(left, rgba($brand-primary, 0.9) 0%, rgba( - $brand-primary, - 0.6 - ) - 100%), - left / cover no-repeat url('../../../resources/work-do-more.jpeg'); - background: left / cover no-repeat -webkit-gradient(linear, left bottom, right bottom, color-stop(0%, rgba($brand-primary, 0.9)), color-stop(100%, rgba($brand-primary, 0.6))), - left / cover no-repeat url('../../../resources/work-do-more.jpeg'); - background: left / cover no-repeat -webkit-linear-gradient(left, rgba($brand-primary, 0.9) 0%, rgba( - $brand-primary, - 0.6 - ) - 100%), - left / cover no-repeat url('../../../resources/work-do-more.jpeg'); - background: left / cover no-repeat -o-linear-gradient(left, rgba($brand-primary, 0.9) 0%, rgba( - $brand-primary, - 0.6 - ) - 100%), - left / cover no-repeat url('../../../resources/work-do-more.jpeg'); - background: left / cover no-repeat -ms-linear-gradient(left, rgba($brand-primary, 0.9) 0%, rgba( - $brand-primary, - 0.6 - ) - 100%), - left / cover no-repeat url('../../../resources/work-do-more.jpeg'); - -webkit-clip-path: polygon(0% 0%, 100% 0, 100% 50%, 100% 100%, 0% 100%); - clip-path: polygon(0% 0%, 100% 0, 100% 50%, 100% 100%, 0% 100%); - } - - .loginpage-formwrapper { - width: 400px; - } -} - -// Animate image clipping mask -@keyframes makePointer { - 100% { - -webkit-clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%); - clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%); - } -} -@-webkit-keyframes makePointer { - 100% { - -webkit-clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%); - clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%); - } -} diff --git a/theme_old/styles/web/sass/core/base/_reset.scss b/theme_old/styles/web/sass/core/base/_reset.scss deleted file mode 100644 index cd1f61e..0000000 --- a/theme_old/styles/web/sass/core/base/_reset.scss +++ /dev/null @@ -1,40 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -// Basic styling Scroll container -// .mx-scrollcontainer { -// .mx-scrollcontainer-wrapper { -// padding: 0; -// // Convert width to max-width when in scroll container to make sure you dont get scrollbars -// .mx-layoutgrid-fixed { -// width: 100%; -// margin: auto; -// @media (min-width: $screen-md) { -// max-width: 750px; -// } -// @media (min-width: $screen-lg) { -// max-width: 970px; -// } -// @media (min-width: $screen-xl) { -// max-width: 1170px; -// } -// } -// } -// } - -.mx-scrollcontainer .mx-placeholder { - width: 100%; - height: 100%; - .mx-layoutgrid, - .mx-layoutgrid-fluid { - @include layout-spacing($type: padding, $direction: all, $device: responsive); - .mx-layoutgrid, - .mx-layoutgrid-fluid { - padding: 0; - } - } -} diff --git a/theme_old/styles/web/sass/core/base/_spacing.scss b/theme_old/styles/web/sass/core/base/_spacing.scss deleted file mode 100644 index 4d020f9..0000000 --- a/theme_old/styles/web/sass/core/base/_spacing.scss +++ /dev/null @@ -1,217 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Spacing - - Spacing classes -========================================================================== */ -$important-spacing-value: if($important-spacing, ' !important', ''); - -// Spacing none -.spacing-inner-none { - padding: 0 #{$important-spacing-value}; -} - -.spacing-inner-top-none { - padding-top: 0 #{$important-spacing-value}; -} - -.spacing-inner-right-none { - padding-right: 0 #{$important-spacing-value}; -} - -.spacing-inner-bottom-none { - padding-bottom: 0 #{$important-spacing-value}; -} - -.spacing-inner-left-none { - padding-left: 0 #{$important-spacing-value}; -} - -.spacing-outer-none { - margin: 0 #{$important-spacing-value}; -} - -.spacing-outer-top-none { - margin-top: 0 #{$important-spacing-value}; -} - -.spacing-outer-right-none { - margin-right: 0 #{$important-spacing-value}; -} - -.spacing-outer-bottom-none { - margin-bottom: 0 #{$important-spacing-value}; -} - -.spacing-outer-left-none { - margin-left: 0 #{$important-spacing-value}; -} - -// Spacing small -.spacing-inner { - padding: $spacing-small #{$important-spacing-value}; -} - -.spacing-inner-top { - padding-top: $spacing-small #{$important-spacing-value}; -} - -.spacing-inner-right { - padding-right: $spacing-small #{$important-spacing-value}; -} - -.spacing-inner-bottom { - padding-bottom: $spacing-small #{$important-spacing-value}; -} - -.spacing-inner-left { - padding-left: $spacing-small #{$important-spacing-value}; -} - -.spacing-outer { - margin: $spacing-small #{$important-spacing-value}; -} - -.spacing-outer-top { - margin-top: $spacing-small #{$important-spacing-value}; -} - -.spacing-outer-right { - margin-right: $spacing-small #{$important-spacing-value}; -} - -.spacing-outer-bottom { - margin-bottom: $spacing-small #{$important-spacing-value}; -} - -.spacing-outer-left { - margin-left: $spacing-small #{$important-spacing-value}; -} - -// Spacing Medium -.spacing-inner-medium { - @include get-responsive-spacing-medium($type: padding, $direction: all, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-top-medium { - @include get-responsive-spacing-medium($type: padding, $direction: top, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-right-medium { - @include get-responsive-spacing-medium($type: padding, $direction: right, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-bottom-medium { - @include get-responsive-spacing-medium($type: padding, $direction: bottom, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-left-medium { - @include get-responsive-spacing-medium($type: padding, $direction: left, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-medium { - @include get-responsive-spacing-medium($type: margin, $direction: all, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-top-medium { - @include get-responsive-spacing-medium($type: margin, $direction: top, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-right-medium { - @include get-responsive-spacing-medium($type: margin, $direction: right, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-bottom-medium { - @include get-responsive-spacing-medium($type: margin, $direction: bottom, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-left-medium { - @include get-responsive-spacing-medium($type: margin, $direction: left, $is_important: #{$important-spacing-value}); -} - -// Spacing Large -.spacing-inner-large { - @include get-responsive-spacing-large($type: padding, $direction: all, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-top-large { - @include get-responsive-spacing-large($type: padding, $direction: top, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-right-large { - @include get-responsive-spacing-large($type: padding, $direction: right, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-bottom-large { - @include get-responsive-spacing-large($type: padding, $direction: bottom, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-left-large { - @include get-responsive-spacing-large($type: padding, $direction: left, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-large { - @include get-responsive-spacing-large($type: margin, $direction: all, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-top-large { - @include get-responsive-spacing-large($type: margin, $direction: top, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-right-large { - @include get-responsive-spacing-large($type: margin, $direction: right, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-bottom-large { - @include get-responsive-spacing-large($type: margin, $direction: bottom, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-left-large { - @include get-responsive-spacing-large($type: margin, $direction: left, $is_important: #{$important-spacing-value}); -} - -// Spacing layouts -.spacing-inner-layout { - @include layout-spacing($type: padding, $direction: all, $device: responsive, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-top-layout { - @include layout-spacing($type: padding, $direction: top, $device: responsive, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-right-layout { - @include layout-spacing($type: padding, $direction: right, $device: responsive, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-bottom-layout { - @include layout-spacing($type: padding, $direction: bottom, $device: responsive, $is_important: #{$important-spacing-value}); -} - -.spacing-inner-left-layout { - @include layout-spacing($type: padding, $direction: left, $device: responsive, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-layout { - @include layout-spacing($type: margin, $direction: all, $device: responsive, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-top-layout { - @include layout-spacing($type: margin, $direction: top, $device: responsive, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-right-layout { - @include layout-spacing($type: margin, $direction: right, $device: responsive, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-bottom-layout { - @include layout-spacing($type: margin, $direction: bottom, $device: responsive, $is_important: #{$important-spacing-value}); -} - -.spacing-outer-left-layout { - @include layout-spacing($type: margin, $direction: left, $device: responsive, $is_important: #{$important-spacing-value}); -} diff --git a/theme_old/styles/web/sass/core/base/mixins/_animations.scss b/theme_old/styles/web/sass/core/base/mixins/_animations.scss deleted file mode 100644 index 93bca3b..0000000 --- a/theme_old/styles/web/sass/core/base/mixins/_animations.scss +++ /dev/null @@ -1,54 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -@mixin transition( - $style: initial, - $delay: 0s, - $duration: 0.3s, - $property: all, - $timing-fucntion: cubic-bezier(0.4, 0, 0.2, 1) -) { - -webkit-transition: $property $duration $delay $timing-fucntion; - -moz-transition: $property $duration $delay $timing-fucntion; - -o-transition: $property $duration $delay $timing-fucntion; - transition: $property $duration $delay $timing-fucntion; - transform-style: $style; -} - -@mixin ripple($color: #000, $transparency: 10%, $scale: 10) { - position: relative; - overflow: hidden; - transform: translate3d(0, 0, 0); - - &:after { - content: ''; - display: block; - position: absolute; - width: 100%; - height: 100%; - top: 0; - left: 0; - pointer-events: none; - background-image: radial-gradient(circle, $color $transparency, transparent $transparency); - background-repeat: no-repeat; - background-position: 50%; - -webkit-transform: scale($scale, $scale); - transform: scale($scale, $scale); - opacity: 0; - -webkit-transition: transform 0.5s, opacity 1s; - -moz-transition: transform 0.5s, opacity 1s; - -o-transition: transform 0.5s, opacity 1s; - transition: transform 0.5s, opacity 1s; - } - - &:active:after { - -webkit-transform: scale(0, 0); - transform: scale(0, 0); - opacity: 0.1; - transition: 0s; - } -} diff --git a/theme_old/styles/web/sass/core/base/mixins/_buttons.scss b/theme_old/styles/web/sass/core/base/mixins/_buttons.scss deleted file mode 100644 index 3b59292..0000000 --- a/theme_old/styles/web/sass/core/base/mixins/_buttons.scss +++ /dev/null @@ -1,71 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -@mixin button-variant($color, $background, $border, $hover) { - color: $color; - border-color: $border; - background-color: $background; - - &:hover, - &:focus, - &:active, - &.active, - .open > &.dropdown-toggle { - color: $color; - border-color: $hover; - background-color: $hover; - } - &:active, - &.active, - .open > &.dropdown-toggle { - background-image: none; - } - &.disabled, - &[disabled], - &[aria-disabled], - fieldset[disabled] { - &, - &:hover, - &:focus, - &:active, - &.active { - border-color: $border; - background-color: $background; - } - } - // Button bordered - &.btn-bordered { - background-color: transparent; - @if $color != $btn-default-color { - color: $border; - } - - &:hover, - &:focus, - &:active, - &.active, - .open > &.dropdown-toggle { - color: $color; - border-color: $border; - background-color: $border; - } - } - // Button as link - &.btn-link { - text-decoration: none; - border-color: transparent; - background-color: transparent; - @if $color != $btn-default-color { - color: $background; - } - - &:hover { - border-color: $btn-link-bg-hover; - background-color: $btn-link-bg-hover; - } - } -} diff --git a/theme_old/styles/web/sass/core/base/mixins/_groupbox.scss b/theme_old/styles/web/sass/core/base/mixins/_groupbox.scss deleted file mode 100644 index 71581ec..0000000 --- a/theme_old/styles/web/sass/core/base/mixins/_groupbox.scss +++ /dev/null @@ -1,17 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -@mixin groupbox-variant($color, $background) { - > .mx-groupbox-header { - color: $color; - border-color: $background; - background: $background; - } - > .mx-groupbox-body { - border-color: $background; - } -} diff --git a/theme_old/styles/web/sass/core/base/mixins/_layout-spacing.scss b/theme_old/styles/web/sass/core/base/mixins/_layout-spacing.scss deleted file mode 100644 index 76aa983..0000000 --- a/theme_old/styles/web/sass/core/base/mixins/_layout-spacing.scss +++ /dev/null @@ -1,90 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -@mixin layout-spacing($type: padding, $direction: all, $device: responsive, $is_important: false) { - $suffix: ''; - @if $is_important != false { - $suffix: ' !important'; - } - @if $device==responsive { - @if $direction==all { - @media (max-width: $screen-sm-max) { - #{$type}: #{$m-layout-spacing}#{$suffix}; - } - @media (min-width: $screen-md) { - #{$type}: #{$t-layout-spacing}#{$suffix}; - } - @media (min-width: $screen-lg) { - #{$type}: #{$layout-spacing}#{$suffix}; - } - } @else if $direction==top { - @media (max-width: $screen-sm-max) { - #{$type}-top: #{$m-layout-spacing-top}#{$suffix}; - } - @media (min-width: $screen-md) { - #{$type}-top: #{$t-layout-spacing-top}#{$suffix}; - } - @media (min-width: $screen-lg) { - #{$type}-top: #{$layout-spacing-top}#{$suffix}; - } - } @else if $direction==right { - @media (max-width: $screen-sm-max) { - #{$type}-right: #{$m-layout-spacing-right}#{$suffix}; - } - @media (min-width: $screen-md) { - #{$type}-right: #{$t-layout-spacing-right}#{$suffix}; - } - @media (min-width: $screen-lg) { - #{$type}-right: #{$layout-spacing-right}#{$suffix}; - } - } @else if $direction==bottom { - @media (max-width: $screen-sm-max) { - #{$type}-bottom: #{$m-layout-spacing-bottom}#{$suffix}; - } - @media (min-width: $screen-md) { - #{$type}-bottom: #{$t-layout-spacing-bottom}#{$suffix}; - } - @media (min-width: $screen-lg) { - #{$type}-bottom: #{$layout-spacing-bottom}#{$suffix}; - } - } @else if $direction==left { - @media (max-width: $screen-sm-max) { - #{$type}-left: #{$m-layout-spacing-left}#{$suffix}; - } - @media (min-width: $screen-md) { - #{$type}-left: #{$t-layout-spacing-left}#{$suffix}; - } - @media (min-width: $screen-lg) { - #{$type}-left: #{$layout-spacing-left}#{$suffix}; - } - } - } @else if $device==tablet { - @if $direction==all { - #{$type}: #{$t-layout-spacing}#{$suffix}; - } @else if $direction==top { - #{$type}-top: #{$t-layout-spacing-top}#{$suffix}; - } @else if $direction==right { - #{$type}-right: #{$t-layout-spacing-right}#{$suffix}; - } @else if $direction==bottom { - #{$type}-bottom: #{$t-layout-spacing-bottom}#{$suffix}; - } @else if $direction==left { - #{$type}-left: #{$t-layout-spacing-left}#{$suffix}; - } - } @else if $device==mobile { - @if $direction==all { - #{$type}: #{$m-layout-spacing}#{$suffix}; - } @else if $direction==top { - #{$type}-top: #{$m-layout-spacing-top}#{$suffix}; - } @else if $direction==right { - #{$type}-right: #{$m-layout-spacing-right}#{$suffix}; - } @else if $direction==bottom { - #{$type}-bottom: #{$m-layout-spacing-bottom}#{$suffix}; - } @else if $direction==left { - #{$type}-left: #{$m-layout-spacing-left}#{$suffix}; - } - } -} diff --git a/theme_old/styles/web/sass/core/base/mixins/_spacing.scss b/theme_old/styles/web/sass/core/base/mixins/_spacing.scss deleted file mode 100644 index db1d055..0000000 --- a/theme_old/styles/web/sass/core/base/mixins/_spacing.scss +++ /dev/null @@ -1,66 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -@mixin get-responsive-spacing-large($type: padding, $direction: all, $is_important: false) { - $suffix: ''; - $dash: '-'; // Otherwise it will be interpreted as a minus symbol. Needed for the Gonzales PE version: 3.4.7 compiler (used by the Webmodeler) - - @if $is_important != false { - $suffix: ' !important'; - } - @if $direction==all { - @media (max-width: $screen-sm-max) { - #{$type}: #{$m-spacing-large}#{$suffix}; - } - @media (min-width: $screen-md) { - #{$type}: #{$t-spacing-large}#{$suffix}; - } - @media (min-width: $screen-lg) { - #{$type}: #{$spacing-large}#{$suffix}; - } - } @else { - @media (max-width: $screen-sm-max) { - #{$type}#{$dash}#{$direction}: #{$m-spacing-large}#{$suffix}; - } - @media (min-width: $screen-md) { - #{$type}#{$dash}#{$direction}: #{$t-spacing-large}#{$suffix}; - } - @media (min-width: $screen-lg) { - #{$type}#{$dash}#{$direction}: #{$spacing-large}#{$suffix}; - } - } -} - -@mixin get-responsive-spacing-medium($type: padding, $direction: all, $is_important: false) { - $suffix: ''; - $dash: '-'; // Otherwise it will be interpreted as a minus symbol. Needed for the Gonzales PE version: 3.4.7 compiler (used by the Webmodeler) - - @if $is_important != false { - $suffix: ' !important'; - } - @if $direction==all { - @media (max-width: $screen-sm-max) { - #{$type}: #{$m-spacing-medium}#{$suffix}; - } - @media (min-width: $screen-md) { - #{$type}: #{$t-spacing-medium}#{$suffix}; - } - @media (min-width: $screen-lg) { - #{$type}: #{$spacing-medium}#{$suffix}; - } - } @else { - @media (max-width: $screen-sm-max) { - #{$type}#{$dash}#{$direction}: #{$m-spacing-medium}#{$suffix}; - } - @media (min-width: $screen-md) { - #{$type}#{$dash}#{$direction}: #{$t-spacing-medium}#{$suffix}; - } - @media (min-width: $screen-lg) { - #{$type}#{$dash}#{$direction}: #{$spacing-medium}#{$suffix}; - } - } -} diff --git a/theme_old/styles/web/sass/core/helpers/_alerts.scss b/theme_old/styles/web/sass/core/helpers/_alerts.scss deleted file mode 100644 index 69fdab1..0000000 --- a/theme_old/styles/web/sass/core/helpers/_alerts.scss +++ /dev/null @@ -1,49 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Alerts - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -.alert-bordered { - border: 1px solid; -} - -// Color variations -.alert-success { - color: $alert-success-color; - border-color: $alert-success-border-color; - background-color: $alert-success-bg; -} - -.alert-info { - color: $alert-info-color; - border-color: $alert-info-border-color; - background-color: $alert-info-bg; -} - -.alert-warning { - color: $alert-warning-color; - border-color: $alert-warning-border-color; - background-color: $alert-warning-bg; -} - -.alert-danger { - color: $alert-danger-color; - border-color: $alert-danger-border-color; - background-color: $alert-danger-bg; -} - -//== State -//## Styling when component is in certain state -//-------------------------------------------------------------------------------------------------------------------// -.has-error .alert { - margin-top: 8px; - margin-bottom: 0; -} diff --git a/theme_old/styles/web/sass/core/helpers/_backgrounds.scss b/theme_old/styles/web/sass/core/helpers/_backgrounds.scss deleted file mode 100644 index 8c4a57b..0000000 --- a/theme_old/styles/web/sass/core/helpers/_backgrounds.scss +++ /dev/null @@ -1,164 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Backgrounds - - Different background components, all managed by variables -========================================================================== */ - -.background-main { - background-color: $bg-color !important; -} - -.background-secondary { - background-color: $bg-color-secondary !important; -} - -.background-default { - background-color: $brand-default !important; -} - -.background-default-darker { - background-color: $color-default-darker !important; -} - -.background-default-dark { - background-color: $color-default-dark !important; -} - -.background-default-light { - background-color: $color-default-light !important; -} - -.background-default-lighter { - background-color: $color-default-lighter !important; -} - -.background-inverse { - background-color: $brand-inverse !important; -} - -.background-inverse-darker { - background-color: $color-inverse-darker !important; -} - -.background-inverse-dark { - background-color: $color-inverse-dark !important; -} - -.background-inverse-light { - background-color: $color-inverse-light !important; -} - -.background-inverse-lighter { - background-color: $color-inverse-lighter !important; -} - -.background-primary { - background-color: $brand-primary !important; -} - -.background-primary-darker { - background-color: $color-primary-darker !important; -} - -.background-primary-dark { - background-color: $color-primary-dark !important; -} - -.background-primary-light { - background-color: $color-primary-light !important; -} - -.background-primary-lighter { - background-color: $color-primary-lighter !important; -} - -.background-info { - background-color: $brand-info !important; -} - -.background-info-darker { - background-color: $color-info-darker !important; -} - -.background-info-dark { - background-color: $color-info-dark !important; -} - -.background-info-light { - background-color: $color-info-light !important; -} - -.background-info-lighter { - background-color: $color-info-lighter !important; -} - -.background-success { - background-color: $brand-success !important; -} - -.background-success-darker { - background-color: $color-success-darker !important; -} - -.background-success-dark { - background-color: $color-success-dark !important; -} - -.background-success-light { - background-color: $color-success-light !important; -} - -.background-success-lighter { - background-color: $color-success-lighter !important; -} - -.background-warning { - background-color: $brand-warning !important; -} - -.background-warning-darker { - background-color: $color-warning-darker !important; -} - -.background-warning-dark { - background-color: $color-warning-dark !important; -} - -.background-warning-light { - background-color: $color-warning-light !important; -} - -.background-warning-lighter { - background-color: $color-warning-lighter !important; -} - -.background-danger { - background-color: $brand-danger !important; -} - -.background-danger-darker { - background-color: $color-danger-darker !important; -} - -.background-danger-dark { - background-color: $color-danger-dark !important; -} - -.background-danger-light { - background-color: $color-danger-light !important; -} - -.background-danger-lighter { - background-color: $color-danger-lighter !important; -} - -.background-brand-gradient { - background-image: $brand-gradient !important; -} diff --git a/theme_old/styles/web/sass/core/helpers/_buttons.scss b/theme_old/styles/web/sass/core/helpers/_buttons.scss deleted file mode 100644 index 87c8985..0000000 --- a/theme_old/styles/web/sass/core/helpers/_buttons.scss +++ /dev/null @@ -1,100 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Buttons - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Color variations -.btn, -.btn-default { - @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border-color, $btn-default-bg-hover); -} - -.btn-primary { - @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border-color, $btn-primary-bg-hover); -} - -.btn-inverse { - @include button-variant($btn-inverse-color, $btn-inverse-bg, $btn-inverse-border-color, $btn-inverse-bg-hover); -} - -.btn-success { - @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border-color, $btn-success-bg-hover); -} - -.btn-info { - @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border-color, $btn-info-bg-hover); -} - -.btn-warning { - @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border-color, $btn-warning-bg-hover); -} - -.btn-danger { - @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border-color, $btn-danger-bg-hover); -} - -// Button Sizes -.btn-lg { - font-size: $font-size-large; - img { - height: calc(#{$font-size-small} + 4px); - } -} - -.btn-sm { - font-size: $font-size-small; - img { - height: calc(#{$font-size-small} + 4px); - } -} - -// Button Image -.btn-image { - padding: 0; - vertical-align: middle; - border-style: none; - background-color: transparent; - img { - display: block; // or else the button doesn't get a width - height: auto; // Image set height - } - &:hover, - &:focus { - background-color: transparent; - } -} - -// Icon buttons -.btn-icon { - & > img, - & > .glyphicon { - margin: 0; - } -} - -.btn-icon-right { - & > img, - & > .glyphicon { - float: right; - margin-left: 5px; - } -} - -.btn-icon-top { - padding-right: 0; - padding-left: 0; - & > img, - & > .glyphicon { - display: block; - margin: 0 0 5px 0; - } -} - diff --git a/theme_old/styles/web/sass/core/helpers/_datagrids.scss b/theme_old/styles/web/sass/core/helpers/_datagrids.scss deleted file mode 100644 index f37c889..0000000 --- a/theme_old/styles/web/sass/core/helpers/_datagrids.scss +++ /dev/null @@ -1,157 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Datagrid Default - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Striped style -.datagrid-striped.mx-datagrid { - table { - th { - border-width: 0; - } - - tbody tr { - td { - border-top-width: 0; - } - - &:nth-child(odd) td { - background-color: $grid-bg-striped; - } - } - } -} - -// Bordered style -.datagrid-bordered.mx-datagrid { - table { - border: 1px solid; - - th { - border: 1px solid $grid-border-color; - } - - tbody tr { - td { - border: 1px solid $grid-border-color; - } - } - } - - tfoot { - > tr > th { - border-width: 0; - background-color: $grid-footer-bg; - } - - > tr > td { - border-width: 1px; - } - } -} - -// Transparent style so you can see the background -.datagrid-transparent.mx-datagrid { - table { - background-color: transparent; - - tbody tr { - &:nth-of-type(odd) { - background-color: transparent; - } - - td { - background-color: transparent; - } - } - } -} - -// Hover style activated -.datagrid-hover.mx-datagrid { - table { - tbody tr { - &:hover td { - background-color: $grid-bg-hover !important; - } - - &.selected:hover td { - background-color: $grid-bg-selected-hover !important; - } - } - } -} - -// Datagrid Row Sizes -.datagrid-lg.mx-datagrid { - table { - th { - padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2) ($grid-padding-left * 2); - } - - tbody tr { - td { - padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2) ($grid-padding-left * 2); - } - } - } -} - -.datagrid-sm.mx-datagrid { - table { - th { - padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2) ($grid-padding-left / 2); - } - - tbody tr { - td { - padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2) ($grid-padding-left/ 2); - } - } - } -} - -// Datagrid Full Search -// Default Mendix Datagrid Widget with adjusted search field. Only 1 search field is allowed -.datagrid-fullsearch.mx-grid { - .mx-grid-search-button { - @extend .btn-primary; - } - - .mx-grid-reset-button { - display: none; - } - - .mx-grid-search-item { - display: block; - } - - .mx-grid-search-label { - display: none; - } - - .mx-grid-searchbar { - .mx-grid-search-controls { - position: absolute; - right: 0; - } - - .mx-grid-search-input { - width: 80%; - padding-left: 0; - - .btn, - .form-control { - height: 35px; - font-size: 12px; - } - } - } -} diff --git a/theme_old/styles/web/sass/core/helpers/_groupbox.scss b/theme_old/styles/web/sass/core/helpers/_groupbox.scss deleted file mode 100644 index 2e71036..0000000 --- a/theme_old/styles/web/sass/core/helpers/_groupbox.scss +++ /dev/null @@ -1,147 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Groupbox - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Color variations -.groupbox-default { - @include groupbox-variant($groupbox-default-color, $groupbox-default-bg); -} - -.groupbox-primary { - @include groupbox-variant($groupbox-primary-color, $groupbox-primary-bg); -} - -.groupbox-inverse { - @include groupbox-variant($groupbox-inverse-color, $groupbox-inverse-bg); -} - -// Success appears as green -.groupbox-success { - @include groupbox-variant($groupbox-success-color, $groupbox-success-bg); -} - -// Info appears as blue-green -.groupbox-info { - @include groupbox-variant($groupbox-info-color, $groupbox-info-bg); -} - -// Warning appears as orange -.groupbox-warning { - @include groupbox-variant($groupbox-warning-color, $groupbox-warning-bg); -} - -// Danger and error appear as red -.groupbox-danger { - @include groupbox-variant($groupbox-danger-color, $groupbox-danger-bg); -} - -// white appears as full white -.groupbox-white { - @include groupbox-variant($groupbox-white-color, $groupbox-white-bg); -} - -.groupbox-transparent { - border-bottom: 1px solid $border-color-default; - > .mx-groupbox-header { - padding: 15px 0; - color: $gray-darker; - border-style: none; - background: transparent; - font-size: 16px; - font-weight: $font-weight-semibold; - } - .mx-groupbox-body { - padding: 15px 0; - border-style: none; - background-color: transparent; - } - .mx-groupbox-collapse-icon { - color: $brand-primary; - } -} - -// Header options -.groupbox-h1 > .mx-groupbox-header { - font-size: $font-size-h1; -} - -.groupbox-h2 > .mx-groupbox-header { - font-size: $font-size-h2; -} - -.groupbox-h3 > .mx-groupbox-header { - font-size: $font-size-h3; -} - -.groupbox-h4 > .mx-groupbox-header { - font-size: $font-size-h4; -} - -.groupbox-h5 > .mx-groupbox-header { - font-size: $font-size-h5; -} - -.groupbox-h6 > .mx-groupbox-header { - font-size: $font-size-h6; -} - -// Callout Look and Feel -.groupbox-callout { - > .mx-groupbox-header, - > .mx-groupbox-body { - border: 0; - background-color: $callout-info-bg; - } - .mx-groupbox-header + .mx-groupbox-body { - padding-top: 0; - } -} - -.groupbox-info.groupbox-callout { - > .mx-groupbox-header, - > .mx-groupbox-body { - background-color: $callout-info-bg; - } - > .mx-groupbox-header { - color: $callout-info-color; - } -} - -.groupbox-success.groupbox-callout { - > .mx-groupbox-header, - > .mx-groupbox-body { - background-color: $callout-success-bg; - } - > .mx-groupbox-header { - color: $callout-success-color; - } -} - -.groupbox-warning.groupbox-callout { - > .mx-groupbox-header, - > .mx-groupbox-body { - background-color: $callout-warning-bg; - } - > .mx-groupbox-header { - color: $callout-warning-color; - } -} - -.groupbox-danger.groupbox-callout { - > .mx-groupbox-header, - > .mx-groupbox-body { - background-color: $callout-danger-bg; - } - > .mx-groupbox-header { - color: $callout-danger-color; - } -} diff --git a/theme_old/styles/web/sass/core/helpers/_helperclasses.scss b/theme_old/styles/web/sass/core/helpers/_helperclasses.scss deleted file mode 100644 index b76b778..0000000 --- a/theme_old/styles/web/sass/core/helpers/_helperclasses.scss +++ /dev/null @@ -1,346 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Helpers - - Default Mendix Helpers -========================================================================== */ -$important-helpers-value: if($important-helpers, ' !important', ''); - -// Display properties -.d-none { - display: none #{$important-helpers-value}; -} - -.d-flex { - display: flex #{$important-helpers-value}; -} - -.d-inline-flex { - display: inline-flex #{$important-helpers-value}; -} - -.d-inline { - display: inline #{$important-helpers-value}; -} - -.d-inline-block { - display: inline-block #{$important-helpers-value}; -} - -.show, -.d-block { - display: block #{$important-helpers-value}; -} - -.table, -.d-table { - display: table #{$important-helpers-value}; -} - -.table-row, -.d-table-row { - display: table-row #{$important-helpers-value}; -} - -.table-cell, -.d-table-cell { - display: table-cell #{$important-helpers-value}; -} - -.hide, -.hidden { - display: none #{$important-helpers-value}; - visibility: hidden #{$important-helpers-value}; -} - -.invisible { - visibility: hidden #{$important-helpers-value}; -} - -.display-ie8-only:not([attr*=""]) { - display: none #{$important-helpers-value}; - padding: 0 #{$important-helpers-value}; -} - -.list-nostyle { - ul { - margin: 0 #{$important-helpers-value}; - padding: 0 #{$important-helpers-value}; - - li { - list-style-type: none #{$important-helpers-value}; - } - } -} - -.nowrap, -.nowrap * { - overflow: hidden #{$important-helpers-value}; - // Star for inside an element, IE8 span > a - white-space: nowrap #{$important-helpers-value}; - text-overflow: ellipsis #{$important-helpers-value}; -} - -// Render DIV as Table Cells -.table { - display: table #{$important-helpers-value}; -} - -.table-row { - display: table-row #{$important-helpers-value}; -} - -.table-cell { - display: table-cell #{$important-helpers-value}; -} - -// Quick floats -.pull-left { - float: left #{$important-helpers-value}; -} - -.pull-right { - float: right #{$important-helpers-value}; -} - -// Align options -.align-top { - vertical-align: top #{$important-helpers-value}; -} - -.align-middle { - vertical-align: middle #{$important-helpers-value}; -} - -.align-bottom { - vertical-align: bottom #{$important-helpers-value}; -} - -// Flex alignments -.row-left { - display: flex #{$important-helpers-value}; - align-items: center #{$important-helpers-value}; - flex-flow: row #{$important-helpers-value}; - justify-content: flex-start #{$important-helpers-value}; -} - -.row-center { - display: flex #{$important-helpers-value}; - align-items: center #{$important-helpers-value}; - flex-flow: row #{$important-helpers-value}; - justify-content: center #{$important-helpers-value}; -} - -.row-right { - display: flex #{$important-helpers-value}; - align-items: center #{$important-helpers-value}; - flex-flow: row #{$important-helpers-value}; - justify-content: flex-end #{$important-helpers-value}; -} - -.col-left { - display: flex #{$important-helpers-value}; - align-items: flex-start #{$important-helpers-value}; - flex-direction: column #{$important-helpers-value}; - justify-content: center #{$important-helpers-value}; -} - -.col-center { - display: flex #{$important-helpers-value}; - align-items: center #{$important-helpers-value}; - flex-direction: column #{$important-helpers-value}; - justify-content: center #{$important-helpers-value}; -} - -.col-right { - display: flex #{$important-helpers-value}; - align-items: flex-end #{$important-helpers-value}; - flex-direction: column #{$important-helpers-value}; - justify-content: center #{$important-helpers-value}; -} - -// Media -@media (max-width: $screen-sm-max) { - .hide-phone { - display: none #{$important-helpers-value}; - } -} - -@media (min-width: $screen-md) and (max-width: $screen-md-max) { - .hide-tablet { - display: none #{$important-helpers-value}; - } -} - -@media (min-width: $screen-lg) { - .hide-desktop { - display: none #{$important-helpers-value}; - } -} - - -@media (max-width: $screen-xs-max) { - .hide-xs, - .hidden-xs, - .d-xs-none { - display: none #{$important-helpers-value}; - } - .d-xs-flex { - display: flex #{$important-helpers-value}; - } - .d-xs-inline-flex { - display: inline-flex #{$important-helpers-value}; - } - .d-xs-inline { - display: inline #{$important-helpers-value}; - } - .d-xs-inline-block { - display: inline-block #{$important-helpers-value}; - } - .d-xs-block { - display: block #{$important-helpers-value}; - } - .d-xs-table { - display: table #{$important-helpers-value}; - } - .d-xs-table-row { - display: table-row #{$important-helpers-value}; - } - .d-xs-table-cell { - display: table-cell #{$important-helpers-value}; - } -} - -@media (min-width: $screen-sm) and (max-width: $screen-sm-max) { - .hide-sm, - .hidden-sm, - .d-sm-none { - display: none #{$important-helpers-value}; - } - .d-sm-flex { - display: flex #{$important-helpers-value}; - } - .d-sm-inline-flex { - display: inline-flex #{$important-helpers-value}; - } - .d-sm-inline { - display: inline #{$important-helpers-value}; - } - .d-sm-inline-block { - display: inline-block #{$important-helpers-value}; - } - .d-sm-block { - display: block #{$important-helpers-value}; - } - .d-sm-table { - display: table #{$important-helpers-value}; - } - .d-sm-table-row { - display: table-row #{$important-helpers-value}; - } - .d-sm-table-cell { - display: table-cell #{$important-helpers-value}; - } -} - -@media (min-width: $screen-md) and (max-width: $screen-md-max) { - .hide-md, - .hidden-md, - .d-md-none { - display: none #{$important-helpers-value}; - } - .d-md-flex { - display: flex #{$important-helpers-value}; - } - .d-md-inline-flex { - display: inline-flex #{$important-helpers-value}; - } - .d-md-inline { - display: inline #{$important-helpers-value}; - } - .d-md-inline-block { - display: inline-block #{$important-helpers-value}; - } - .d-md-block { - display: block #{$important-helpers-value}; - } - .d-md-table { - display: table #{$important-helpers-value}; - } - .d-md-table-row { - display: table-row #{$important-helpers-value}; - } - .d-md-table-cell { - display: table-cell #{$important-helpers-value}; - } -} - -@media (min-width: $screen-lg) and (max-width: $screen-xl) { - .hide-lg, - .hidden-lg, - .d-lg-none { - display: none #{$important-helpers-value}; - } - .d-lg-flex { - display: flex #{$important-helpers-value}; - } - .d-lg-inline-flex { - display: inline-flex #{$important-helpers-value}; - } - .d-lg-inline { - display: inline #{$important-helpers-value}; - } - .d-lg-inline-block { - display: inline-block #{$important-helpers-value}; - } - .d-lg-block { - display: block #{$important-helpers-value}; - } - .d-lg-table { - display: table #{$important-helpers-value}; - } - .d-lg-table-row { - display: table-row #{$important-helpers-value}; - } - .d-lg-table-cell { - display: table-cell #{$important-helpers-value}; - } -} - -@media (min-width: $screen-xl) { - .hide-xl, - .hidden-xl, - .d-xl-none { - display: none #{$important-helpers-value}; - } - .d-xl-flex { - display: flex #{$important-helpers-value}; - } - .d-xl-inline-flex { - display: inline-flex #{$important-helpers-value}; - } - .d-xl-inline { - display: inline #{$important-helpers-value}; - } - .d-xl-inline-block { - display: inline-block #{$important-helpers-value}; - } - .d-xl-block { - display: block #{$important-helpers-value}; - } - .d-xl-table { - display: table #{$important-helpers-value}; - } - .d-xl-table-row { - display: table-row #{$important-helpers-value}; - } - .d-xl-table-cell { - display: table-cell #{$important-helpers-value}; - } -} diff --git a/theme_old/styles/web/sass/core/helpers/_images.scss b/theme_old/styles/web/sass/core/helpers/_images.scss deleted file mode 100644 index 7a65cc6..0000000 --- a/theme_old/styles/web/sass/core/helpers/_images.scss +++ /dev/null @@ -1,52 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Images - - Default Mendix Image Widgets -========================================================================== */ - -img.img-rounded, -.img-rounded img { - border-radius: 6px; -} - -img.img-thumbnail, -.img-thumbnail img { - display: inline-block; - max-width: 100%; - height: auto; - padding: 4px; - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - border: 1px solid $brand-default; - border-radius: 4px; - background-color: #FFFFFF; - line-height: $line-height-base; -} - -img.img-circle, -.img-circle img { - border-radius: 50%; -} - -img.img-auto, -.img-auto img { - width: auto !important; - max-width: 100% !important; - height: auto !important; - max-height: 100% !important; -} - -img.img-center, -.img-center img { - margin-right: auto !important; - margin-left: auto !important; -} diff --git a/theme_old/styles/web/sass/core/helpers/_labels.scss b/theme_old/styles/web/sass/core/helpers/_labels.scss deleted file mode 100644 index ef798ba..0000000 --- a/theme_old/styles/web/sass/core/helpers/_labels.scss +++ /dev/null @@ -1,48 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Labels - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Color variations -.label-default { - color: $label-default-color; - background-color: $label-default-bg; -} - -.label-primary { - color: $label-primary-color; - background-color: $label-primary-bg; -} - -.label-success { - color: $label-success-color; - background-color: $label-success-bg; -} - -.label-inverse { - color: $label-inverse-color; - background-color: $label-inverse-bg; -} - -.label-info { - color: $label-info-color; - background-color: $label-info-bg; -} - -.label-warning { - color: $label-warning-color; - background-color: $label-warning-bg; -} - -.label-danger { - color: $label-danger-color; - background-color: $label-danger-bg; -} diff --git a/theme_old/styles/web/sass/core/helpers/_listview.scss b/theme_old/styles/web/sass/core/helpers/_listview.scss deleted file mode 100644 index f56a4f3..0000000 --- a/theme_old/styles/web/sass/core/helpers/_listview.scss +++ /dev/null @@ -1,302 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Listview - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Bordered -.listview-bordered.mx-listview { - & > ul > li { - border: 1px solid $grid-border-color; - border-top: 0; - - &:first-child { - border-top: 1px solid $grid-border-color; - border-radius: 0; - } - - &:last-child { - border-radius: 0; - } - } -} - -// Striped -.listview-striped.mx-listview { - & > ul > li:nth-child(2n + 1) { - background-color: $grid-bg-striped; - } -} - -// Items as seperated blocks -.listview-seperated.mx-listview { - & > ul > li { - margin-bottom: $gutter-size; - border-width: 1px; - border-style: solid; - border-radius: $border-radius-default; - } -} - -// Remove all styling -.listview-stylingless.mx-listview { - & > ul > li { - padding: 0; - cursor: default; - border: 0; - background-color: transparent; - - &:hover, - &:focus, - &:active { - background-color: transparent; - } - - &.selected { - background-color: transparent !important; - - &:hover, - &:focus, - &:active { - background-color: transparent !important; - } - } - } -} - -// Hover style activated -.listview-hover.mx-listview { - & > ul > li { - &:hover, - &:focus, - &:active { - background-color: $grid-bg-hover !important; - } - - &.selected { - &:hover, - &:focus, - &:active { - background-color: $grid-bg-selected-hover !important; - } - } - } -} - -// Templategrid Row Sizes -.listview-lg.mx-listview { - & > ul > li { - padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2) ($grid-padding-left * 2); - } -} - -.listview-sm.mx-listview { - & > ul > li { - padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2) ($grid-padding-left / 2); - } -} - -// Bootstrap columns -.mx-listview[class*='lv-col'] { - overflow: hidden; // For if it is not in a layout, to prevent scrollbars - & > ul { - display: block; // normal a table - margin-right: -1 * $gutter-size; - margin-left: -1 * $gutter-size; - - &::before, - &::after { - // clearfix - display: table; - clear: both; - content: ' '; - } - - & > li { - // bootstrap col - position: relative; - display: block; // normal a table - float: left; - min-height: 1px; - padding-right: $gutter-size; - padding-left: $gutter-size; - border: 0; - @media (max-width: $screen-md-max) { - width: 100% !important; - } - - & > .mx-dataview { - overflow: hidden; - } - } - } - - &.lv-col-xs-12 > ul > li { - width: 100% !important; - } - - &.lv-col-xs-11 > ul > li { - width: 91.66666667% !important; - } - - &.lv-col-xs-10 > ul > li { - width: 83.33333333% !important; - } - - &.lv-col-xs-9 > ul > li { - width: 75% !important; - } - - &.lv-col-xs-8 > ul > li { - width: 66.66666667% !important; - } - - &.lv-col-xs-7 > ul > li { - width: 58.33333333% !important; - } - - &.lv-col-xs-6 > ul > li { - width: 50% !important; - } - - &.lv-col-xs-5 > ul > li { - width: 41.66666667% !important; - } - - &.lv-col-xs-4 > ul > li { - width: 33.33333333% !important; - } - - &.lv-col-xs-3 > ul > li { - width: 25% !important; - } - - &.lv-col-xs-2 > ul > li { - width: 16.66666667% !important; - } - - &.lv-col-xs-1 > ul > li { - width: 8.33333333% !important; - } - - @media (min-width: $screen-md) { - &.lv-col-sm-12 > ul > li { - width: 100% !important; - } - &.lv-col-sm-11 > ul > li { - width: 91.66666667% !important; - } - &.lv-col-sm-10 > ul > li { - width: 83.33333333% !important; - } - &.lv-col-sm-9 > ul > li { - width: 75% !important; - } - &.lv-col-sm-8 > ul > li { - width: 66.66666667% !important; - } - &.lv-col-sm-7 > ul > li { - width: 58.33333333% !important; - } - &.lv-col-sm-6 > ul > li { - width: 50% !important; - } - &.lv-col-sm-5 > ul > li { - width: 41.66666667% !important; - } - &.lv-col-sm-4 > ul > li { - width: 33.33333333% !important; - } - &.lv-col-sm-3 > ul > li { - width: 25% !important; - } - &.lv-col-sm-2 > ul > li { - width: 16.66666667% !important; - } - &.lv-col-sm-1 > ul > li { - width: 8.33333333% !important; - } - } - @media (min-width: $screen-lg) { - &.lv-col-md-12 > ul > li { - width: 100% !important; - } - &.lv-col-md-11 > ul > li { - width: 91.66666667% !important; - } - &.lv-col-md-10 > ul > li { - width: 83.33333333% !important; - } - &.lv-col-md-9 > ul > li { - width: 75% !important; - } - &.lv-col-md-8 > ul > li { - width: 66.66666667% !important; - } - &.lv-col-md-7 > ul > li { - width: 58.33333333% !important; - } - &.lv-col-md-6 > ul > li { - width: 50% !important; - } - &.lv-col-md-5 > ul > li { - width: 41.66666667% !important; - } - &.lv-col-md-4 > ul > li { - width: 33.33333333% !important; - } - &.lv-col-md-3 > ul > li { - width: 25% !important; - } - &.lv-col-md-2 > ul > li { - width: 16.66666667% !important; - } - &.lv-col-md-1 > ul > li { - width: 16.66666667% !important; - } - } - @media (min-width: $screen-xl) { - &.lv-col-lg-12 > ul > li { - width: 100% !important; - } - &.lv-col-lg-11 > ul > li { - width: 91.66666667% !important; - } - &.lv-col-lg-10 > ul > li { - width: 83.33333333% !important; - } - &.lv-col-lg-9 > ul > li { - width: 75% !important; - } - &.lv-col-lg-8 > ul > li { - width: 66.66666667% !important; - } - &.lv-col-lg-7 > ul > li { - width: 58.33333333% !important; - } - &.lv-col-lg-6 > ul > li { - width: 50% !important; - } - &.lv-col-lg-5 > ul > li { - width: 41.66666667% !important; - } - &.lv-col-lg-4 > ul > li { - width: 33.33333333% !important; - } - &.lv-col-lg-3 > ul > li { - width: 25% !important; - } - &.lv-col-lg-2 > ul > li { - width: 16.66666667% !important; - } - &.lv-col-lg-1 > ul > li { - width: 8.33333333% !important; - } - } -} diff --git a/theme_old/styles/web/sass/core/helpers/_navigationbar.scss b/theme_old/styles/web/sass/core/helpers/_navigationbar.scss deleted file mode 100644 index b4fbad9..0000000 --- a/theme_old/styles/web/sass/core/helpers/_navigationbar.scss +++ /dev/null @@ -1,186 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Navigation - -//== Regions -//## Behavior in the different regions -========================================================================== */ -// When used in topbar -.region-topbar { - .mx-navbar { - background-color: $navtopbar-bg; - ul.nav { - /* Navigation item */ - & > li.mx-navbar-item > a { - color: $navtopbar-color; - font-size: $navtopbar-font-size; - - /* Dropdown arrow */ - .caret { - border-top-color: $navtopbar-color; - border-bottom-color: $navtopbar-color; - } - &:hover, - &:focus, - &.active { - color: $navtopbar-color-hover; - background-color: $navtopbar-bg-hover; - .caret { - border-top-color: $navtopbar-color-active; - border-bottom-color: $navtopbar-color-active; - } - } - &.active { - color: $navtopbar-color-active; - background-color: $navtopbar-bg-active; - } - - /* Dropdown */ - .mx-navbar-submenu::before { - border-color: transparent transparent $navtopbar-border-color transparent; - } - - // Image - .glyphicon { - font-size: $navtopbar-glyph-size; - } - } - - /* When hovering or the dropdown is open */ - & > .mx-navbar-item > a:hover, - & > .mx-navbar-item > a:focus, - & > .mx-navbar-item.active a, - & > .mx-navbar-item.open > a, - & > .mx-navbar-item.open > a:hover, - & > .mx-navbar-item.open > a:focus { - color: $navtopbar-color-hover; - background-color: $navtopbar-bg-hover; - .caret { - border-top-color: $navtopbar-color-hover; - border-bottom-color: $navtopbar-color-hover; - } - } - & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a { - color: $navtopbar-sub-color-active; - background-color: $navtopbar-sub-bg-active; - .caret { - border-top-color: $navtopbar-sub-color-active; - border-bottom-color: $navtopbar-sub-color-active; - } - } - } - @media (max-width: $screen-md) { - ul.nav > li.mx-navbar-item > a { - } - .mx-navbar-item.open .dropdown-menu { - background-color: $navtopbar-sub-bg; - & > li.mx-navbar-subitem > a { - color: $navtopbar-sub-color; - font-size: $navtopbar-sub-font-size; - &:hover, - &:focus { - color: $navtopbar-sub-color-hover; - background-color: $navtopbar-sub-bg-hover; - } - &.active { - color: $navtopbar-sub-color-active; - background-color: $navtopbar-sub-bg-active; - } - } - } - } - } -} - -// When used in sidebar -.region-sidebar { - .mx-navbar { - background-color: $navsidebar-bg; - ul.nav { - /* Navigation item */ - & > li.mx-navbar-item > a { - color: $navsidebar-color; - font-size: $navsidebar-font-size; - - /* Dropdown arrow */ - .caret { - border-top-color: $navsidebar-color; - border-bottom-color: $navsidebar-color; - } - &:hover, - &:focus, - &.active { - color: $navsidebar-color-hover; - background-color: $navsidebar-bg-hover; - .caret { - border-top-color: $navsidebar-color-active; - border-bottom-color: $navsidebar-color-active; - } - } - &.active { - color: $navsidebar-color-active; - background-color: $navsidebar-bg-active; - } - - /* Dropdown */ - .mx-navbar-submenu::before { - border-color: transparent transparent $navsidebar-border-color transparent; - } - - // Image - .glyphicon { - font-size: $navsidebar-glyph-size; - } - } - - /* When hovering or the dropdown is open */ - & > .mx-navbar-item > a:hover, - & > .mx-navbar-item > a:focus, - & > .mx-navbar-item.active a, - & > .mx-navbar-item.open > a, - & > .mx-navbar-item.open > a:hover, - & > .mx-navbar-item.open > a:focus { - color: $navsidebar-color-hover; - background-color: $navsidebar-bg-hover; - .caret { - border-top-color: $navsidebar-color-hover; - border-bottom-color: $navsidebar-color-hover; - } - } - & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a { - color: $navsidebar-sub-color-active; - background-color: $navsidebar-sub-bg-active; - .caret { - border-top-color: $navsidebar-sub-color-active; - border-bottom-color: $navsidebar-sub-color-active; - } - } - } - @media (max-width: $screen-md) { - ul.nav > li.mx-navbar-item > a { - } - .mx-navbar-item.open .dropdown-menu { - background-color: $navtopbar-sub-bg; - & > li.mx-navbar-subitem > a { - color: $navsidebar-sub-color; - font-size: $navsidebar-sub-font-size; - &:hover, - &:focus { - color: $navsidebar-sub-color-hover; - background-color: $navsidebar-sub-bg-hover; - } - &.active { - color: $navsidebar-sub-color-active; - background-color: $navsidebar-sub-bg-active; - } - } - } - } - } -} diff --git a/theme_old/styles/web/sass/core/helpers/_navigationtree.scss b/theme_old/styles/web/sass/core/helpers/_navigationtree.scss deleted file mode 100644 index 9037dbc..0000000 --- a/theme_old/styles/web/sass/core/helpers/_navigationtree.scss +++ /dev/null @@ -1,166 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Navigation - -//== Regions -//## Behavior in the different regions -========================================================================== */ -// When used in topbar -.region-topbar { - .mx-navigationtree { - background-color: $navtopbar-bg; - .navbar-inner > ul { - & > li { - & > a { - color: $navtopbar-color; - border-color: $navtopbar-border-color; - background-color: $navtopbar-bg; - font-size: $navtopbar-font-size; - .caret { - border-top-color: $navtopbar-color; - border-bottom-color: $navtopbar-color; - } - - .glyphicon { - font-size: $navtopbar-glyph-size; - } - } - a:hover, - a:focus, - a.active { - color: $navtopbar-color-hover; - background-color: $navtopbar-bg-hover; - .caret { - border-top-color: $navtopbar-color-active; - border-bottom-color: $navtopbar-color-active; - } - } - a.active { - color: $navtopbar-color-active; - border-left-color: $navtopbar-color-active; - background-color: $navtopbar-bg-active; - } - } - } - - /* Sub navigation item specific */ - li.mx-navigationtree-has-items { - & > ul { - background-color: $navtopbar-sub-bg; - li { - a { - color: $navtopbar-sub-color; - background-color: $navtopbar-sub-bg; - font-size: $navtopbar-sub-font-size; - &:hover, - &:focus, - &.active { - color: $navtopbar-sub-color-hover; - background-color: $navtopbar-sub-bg-hover; - } - &.active { - color: $navtopbar-sub-color-active; - background-color: $navtopbar-sub-bg-active; - } - } - } - } - } - } -} - -// When used in sidebar -.region-sidebar { - .mx-navigationtree { - background-color: $navsidebar-bg; - .navbar-inner > ul { - & > li { - & > a { - color: $navsidebar-color; - border-color: $navsidebar-border-color; - background-color: $navsidebar-bg; - font-size: $navsidebar-font-size; - .caret { - border-top-color: $navsidebar-color; - border-bottom-color: $navsidebar-color; - } - - .glyphicon { - font-size: $navsidebar-glyph-size; - } - } - a:hover, - a:focus, - a.active { - color: $navsidebar-color-hover; - background-color: $navsidebar-bg-hover; - .caret { - border-top-color: $navsidebar-color-active; - border-bottom-color: $navsidebar-color-active; - } - } - a.active { - color: $navsidebar-color-active; - border-left-color: $navsidebar-color-active; - background-color: $navsidebar-bg-active; - } - } - } - - /* Sub navigation item specific */ - li.mx-navigationtree-has-items { - & > ul { - background-color: $navsidebar-sub-bg; - li { - a { - color: $navsidebar-sub-color; - background-color: $navsidebar-sub-bg; - font-size: $navsidebar-sub-font-size; - &:hover, - &:focus, - &.active { - color: $navsidebar-sub-color-hover; - background-color: $navsidebar-sub-bg-hover; - } - &.active { - color: $navsidebar-sub-color-active; - background-color: $navsidebar-sub-bg-active; - } - } - } - } - } - } -} - - -//== Design Properties -//## Helper classes to change the look and feel of the component -//-------------------------------------------------------------------------------------------------------------------// -// Content Centerd text and icons -.nav-content-center-text-icons.mx-navigationtree { - .navbar-inner ul { - a { - flex-direction: column; - justify-content: center; - .glyphicon { - margin: 0 0 5px 0; - } - } - } -} - -// Content Centerd icons only -.nav-content-center.mx-navigationtree { - .navbar-inner ul { - a { - justify-content: center; - } - } -} diff --git a/theme_old/styles/web/sass/core/helpers/_simplemenubar.scss b/theme_old/styles/web/sass/core/helpers/_simplemenubar.scss deleted file mode 100644 index 1c6eaa8..0000000 --- a/theme_old/styles/web/sass/core/helpers/_simplemenubar.scss +++ /dev/null @@ -1,36 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Navigation - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Center text and icons -.bottom-nav-text-icons.mx-menubar { - ul.mx-menubar-list { - li.mx-menubar-item { - a { - flex-direction: column; - padding: 8px 8px 6px 8px; - line-height: normal; - font-size: 11px; - .glyphicon { - display: block; - margin: 0 0 5px 0; - font-size: 18px; - } - img { - display: block; - height: 18px; - margin: 0 0 5px 0; - } - } - } - } -} diff --git a/theme_old/styles/web/sass/core/helpers/_tabcontainer.scss b/theme_old/styles/web/sass/core/helpers/_tabcontainer.scss deleted file mode 100644 index 727c236..0000000 --- a/theme_old/styles/web/sass/core/helpers/_tabcontainer.scss +++ /dev/null @@ -1,164 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Tab Container - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Style as pills -.tab-pills.mx-tabcontainer { - & > .mx-tabcontainer-tabs { - border: 0; - & > li > a { - margin-right: 2px; - color: $tabs-color; - border: 1px solid $tabs-border-color; - border-radius: 4px; - &:hover, - &:focus { - background-color: $tabs-bg-hover; - } - } - & > li.active > a, - & > li.active > a:hover, - & > li.active > a:focus { - color: #FFFFFF; - border-color: $tabs-bg-active; - background-color: $tabs-bg-active; - } - } -} - -// Style with lines -.tab-lined.mx-tabcontainer { - & > .mx-tabcontainer-tabs { - border-width: 3px; - li { - margin-right: 30px; - margin-bottom: -3px; - & > a { - padding: 10px 0; - color: $tabs-color; - border: 0; - border-style: solid; - border-color: transparent; - border-bottom-width: 3px; - border-radius: 0; - &:hover, - &:focus { - color: $tabs-color; - border: 0; - border-color: transparent; - background: transparent; - } - } - &.active > a, - &.active > a:hover, - &.active > a:focus { - color: $tabs-lined-color-active; - border: 0; - border-bottom: 3px solid $tabs-lined-border-color; - background-color: transparent; - } - } - } -} - -// Justified style -// Lets your tabs take 100% of the width -.tab-justified.mx-tabcontainer { - & > .mx-tabcontainer-tabs { - width: 100%; - border-bottom: 0; - & > li { - display: table-cell; - float: none; - width: 1%; - margin: 0; - @media (max-width: $screen-sm-max) { - display: block; - width: 100%; - } - & > a { - text-align: center; - border-bottom: 1px solid $tabs-border-color; - } - } - & > li.active > a { - border-bottom-color: transparent; - border-radius: 4px; - @media (max-width: $screen-sm-max) { - border-bottom-color: $tabs-border-color; - } - } - } -} - -// Bordered -.tab-bordered.mx-tabcontainer { - & > .mx-tabcontainer-tabs { - margin: 0; - } - & > .mx-tabcontainer-content { - padding: 10px; - border-width: 0 1px 1px 1px; - border-style: solid; - border-color: $tabs-border-color; - background-color: #FFFFFF; - } -} - -// Wizard -.tab-wizard.mx-tabcontainer { - & > .mx-tabcontainer-tabs { - position: relative; - display: flex; - justify-content: space-between; - border-style: none; - - &::before { - position: absolute; - top: 16px; - display: block; - width: 100%; - height: 1px; - content: ""; - background-color: $tabs-border-color; - } - & > li { - position: relative; - float: none; - width: 100%; - text-align: center; - & > a { - width: 33px; - height: 33px; - margin: auto; - padding: 0; - text-align: center; - color: $brand-default; - border: 1px solid $tabs-border-color; - border-radius: 100%; - background-color: #FFFFFF; - font-size: 18px; - font-weight: bold; - line-height: 33px; - } - &.active { - & > a, - & > a:hover, - & > a:focus { - color: #FFFFFF; - border-color: $tabs-bg-active; - background-color: $tabs-bg-active; - } - } - } - } -} diff --git a/theme_old/styles/web/sass/core/helpers/_tables.scss b/theme_old/styles/web/sass/core/helpers/_tables.scss deleted file mode 100644 index b81f803..0000000 --- a/theme_old/styles/web/sass/core/helpers/_tables.scss +++ /dev/null @@ -1,206 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Tables - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Lined -table.table-lined.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > td { - border-width: 1px 0; - border-style: solid; - border-color: $grid-border-color; - } - } - } -} - -// Bordered -table.table-bordered.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > th, - > td { - border-width: 1px; - border-style: solid; - border-color: $grid-border-color; - } - } - } -} - -// Makes table compact -table.table-compact.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > th, - > td { - padding-top: 2px; - padding-bottom: 2px; - } - } - } -} - -// Remove padding on sides -table.table-sideless.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > td, - > th { - padding-right: 0; - } - > th:first-child, - > td:first-child { - padding-left: 0; - } - } - } -} - -// Remove all padding -table.table-spaceless.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > th, - > td { - padding: 0; - } - } - } -} - -// Tables Vertical -// Will remove unwanted paddings -table.table-vertical.mx-table { - > tbody { - // Table row - > tr { - // Table header - > th { - padding-bottom: 0; - > label { - padding: 0; - } - > div > label { - padding: 0; - } - } - } - } -} - -// Align content in middle -table.table-align-vertical-middle.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > th, - > td { - vertical-align: middle; - } - } - } -} - -// Compact labels -table.table-label-compact.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > th, - > td { - > label { - margin: 0; - padding: 0; - } - > div > label, - .mx-referenceselector-input-wrapper label { - margin: 0; - padding: 0; - } - } - } - } -} - -$height-row-s: 55px; -$height-row-m: 70px; -$height-row-l: 120px; -// Small rows -table.table-row-s.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > th, - > td { - height: $height-row-s; - } - } - } -} - -// Medium rows -table.table-row-m.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > th, - > td { - height: $height-row-m; - } - } - } -} - -// Large rows -table.table-row-l.mx-table { - > tbody { - // Table row - > tr { - // Table header - // Table data - > th, - > td { - height: $height-row-l; - } - } - } -} - -// Makes the columns fixed -table.table-fixed { - table-layout: fixed; -} diff --git a/theme_old/styles/web/sass/core/helpers/_templategrids.scss b/theme_old/styles/web/sass/core/helpers/_templategrids.scss deleted file mode 100644 index 3cfa01c..0000000 --- a/theme_old/styles/web/sass/core/helpers/_templategrids.scss +++ /dev/null @@ -1,304 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Templategrid - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Make sure your content looks selectable -.templategrid-selectable.mx-templategrid { - .mx-templategrid-item { - cursor: pointer; - } -} - -// Lined -.templategrid-lined.mx-templategrid { - .mx-grid-content { - border-top-width: 2px; - border-top-style: solid; - border-top-color: $grid-border-color; - } - - .mx-templategrid-item { - border-top: 1px solid $grid-border-color; - border-right: none; - border-bottom: 1px solid $grid-border-color; - border-left: none; - } -} - -// Striped -.templategrid-striped.mx-templategrid { - .mx-templategrid-row:nth-child(odd) .mx-templategrid-item { - background-color: #F9F9F9; - } -} - -// Stylingless -.templategrid-stylingless.mx-templategrid { - .mx-templategrid-item { - padding: 0; - cursor: default; - border: 0; - background-color: transparent; - - &:hover { - background-color: transparent; - } - - &.selected { - background-color: transparent !important; - - &:hover { - background-color: transparent !important; - } - } - } -} - -// Transparent items -.templategrid-transparent.mx-templategrid { - .mx-templategrid-item { - border: 0; - background-color: transparent; - } -} - -// Hover -.templategrid-hover.mx-templategrid { - .mx-templategrid-item { - &:hover { - background-color: $grid-bg-hover !important; - } - - &.selected { - background-color: $grid-bg-selected !important; - - &:hover { - background-color: $grid-bg-selected-hover !important; - } - } - } -} - -// Templategrid Row Sizes -.templategrid-lg.mx-templategrid { - .mx-templategrid-item { - padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2) ($grid-padding-left * 2); - } -} - -.templategrid-sm.mx-templategrid { - .mx-templategrid-item { - padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2) ($grid-padding-left / 2); - } -} - -// Templategrid Layoutgrid styles -.mx-templategrid[class*="tg-col"] { - overflow: hidden; // For if it is not in a layout, to prevent scrollbars - .mx-templategrid-content-wrapper { - display: block; - } - - .mx-templategrid-row { - display: block; - margin-right: -1 * $gutter-size; - margin-left: -1 * $gutter-size; - - &::before, - &::after { - // clearfix - display: table; - clear: both; - content: " "; - } - } - - .mx-templategrid-item { - // bootstrap col - position: relative; - display: block; - float: left; - min-height: 1px; - padding-right: $gutter-size; - padding-left: $gutter-size; - border: 0; - @media (max-width: 992px) { - width: 100% !important; - } - - .mx-dataview { - overflow: hidden; - } - } - - &.tg-col-xs-12 .mx-templategrid-item { - width: 100% !important; - } - - &.tg-col-xs-11 .mx-templategrid-item { - width: 91.66666667% !important; - } - - &.tg-col-xs-10 .mx-templategrid-item { - width: 83.33333333% !important; - } - - &.tg-col-xs-9 .mx-templategrid-item { - width: 75% !important; - } - - &.tg-col-xs-8 .mx-templategrid-item { - width: 66.66666667% !important; - } - - &.tg-col-xs-7 .mx-templategrid-item { - width: 58.33333333% !important; - } - - &.tg-col-xs-6 .mx-templategrid-item { - width: 50% !important; - } - - &.tg-col-xs-5 .mx-templategrid-item { - width: 41.66666667% !important; - } - - &.tg-col-xs-4 .mx-templategrid-item { - width: 33.33333333% !important; - } - - &.tg-col-xs-3 .mx-templategrid-item { - width: 25% !important; - } - - &.tg-col-xs-2 .mx-templategrid-item { - width: 16.66666667% !important; - } - - &.tg-col-xs-1 .mx-templategrid-item { - width: 8.33333333% !important; - } - - @media (min-width: 768px) { - &.tg-col-sm-12 .mx-templategrid-item { - width: 100% !important; - } - &.tg-col-sm-11 .mx-templategrid-item { - width: 91.66666667% !important; - } - &.tg-col-sm-10 .mx-templategrid-item { - width: 83.33333333% !important; - } - &.tg-col-sm-9 .mx-templategrid-item { - width: 75% !important; - } - &.tg-col-sm-8 .mx-templategrid-item { - width: 66.66666667% !important; - } - &.tg-col-sm-7 .mx-templategrid-item { - width: 58.33333333% !important; - } - &.tg-col-sm-6 .mx-templategrid-item { - width: 50% !important; - } - &.tg-col-sm-5 .mx-templategrid-item { - width: 41.66666667% !important; - } - &.tg-col-sm-4 .mx-templategrid-item { - width: 33.33333333% !important; - } - &.tg-col-sm-3 .mx-templategrid-item { - width: 25% !important; - } - &.tg-col-sm-2 .mx-templategrid-item { - width: 16.66666667% !important; - } - &.tg-col-sm-1 .mx-templategrid-item { - width: 8.33333333% !important; - } - } - @media (min-width: 992px) { - &.tg-col-md-12 .mx-templategrid-item { - width: 100% !important; - } - &.tg-col-md-11 .mx-templategrid-item { - width: 91.66666667% !important; - } - &.tg-col-md-10 .mx-templategrid-item { - width: 83.33333333% !important; - } - &.tg-col-md-9 .mx-templategrid-item { - width: 75% !important; - } - &.tg-col-md-8 .mx-templategrid-item { - width: 66.66666667% !important; - } - &.tg-col-md-7 .mx-templategrid-item { - width: 58.33333333% !important; - } - &.tg-col-md-6 .mx-templategrid-item { - width: 50% !important; - } - &.tg-col-md-5 .mx-templategrid-item { - width: 41.66666667% !important; - } - &.tg-col-md-4 .mx-templategrid-item { - width: 33.33333333% !important; - } - &.tg-col-md-3 .mx-templategrid-item { - width: 25% !important; - } - &.tg-col-md-2 .mx-templategrid-item { - width: 16.66666667% !important; - } - &.tg-col-md-1 .mx-templategrid-item { - width: 8.33333333% !important; - } - } - @media (min-width: 1200px) { - &.tg-col-lg-12 .mx-templategrid-item { - width: 100% !important; - } - &.tg-col-lg-11 .mx-templategrid-item { - width: 91.66666667% !important; - } - &.tg-col-lg-10 .mx-templategrid-item { - width: 83.33333333% !important; - } - &.tg-col-lg-9 .mx-templategrid-item { - width: 75% !important; - } - &.tg-col-lg-8 .mx-templategrid-item { - width: 66.66666667% !important; - } - &.tg-col-lg-7 .mx-templategrid-item { - width: 58.33333333% !important; - } - &.tg-col-lg-6 .mx-templategrid-item { - width: 50% !important; - } - &.tg-col-lg-5 .mx-templategrid-item { - width: 41.66666667% !important; - } - &.tg-col-lg-4 .mx-templategrid-item { - width: 33.33333333% !important; - } - &.tg-col-lg-3 .mx-templategrid-item { - width: 25% !important; - } - &.tg-col-lg-2 .mx-templategrid-item { - width: 16.66666667% !important; - } - &.tg-col-lg-1 .mx-templategrid-item { - width: 8.33333333% !important; - } - } -} diff --git a/theme_old/styles/web/sass/core/helpers/_typography.scss b/theme_old/styles/web/sass/core/helpers/_typography.scss deleted file mode 100644 index cab8b63..0000000 --- a/theme_old/styles/web/sass/core/helpers/_typography.scss +++ /dev/null @@ -1,135 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Typography - -//== Design Properties -//## Helper classes to change the look and feel of the component -========================================================================== */ -// Text size -.text-small { - font-size: $font-size-small !important; -} - -.text-large { - font-size: $font-size-large !important; -} - -// Text Weights -.text-light, -.text-light > *, -.text-light label { - font-weight: $font-weight-light !important; -} - -.text-normal, -.text-normal > *, -.text-normal label { - font-weight: $font-weight-normal !important; -} - -.text-semibold, -.text-semibold > *, -.text-semibold label { - font-weight: $font-weight-semibold !important; -} - -.text-bold, -.text-bold > *, -.text-bold label { - font-weight: $font-weight-bold !important; -} - -// Color variations -.text-default, -.text-default:hover { - color: $font-color-default !important; -} - -.text-primary, -.text-primary:hover { - color: $brand-primary !important; -} - -.text-info, -.text-info:hover { - color: $brand-info !important; -} - -.text-success, -.text-success:hover { - color: $brand-success !important; -} - -.text-warning, -.text-warning:hover { - color: $brand-warning !important; -} - -.text-danger, -.text-danger:hover { - color: $brand-danger !important; -} - -.text-header { - color: $font-color-header !important; -} - -.text-detail { - color: $font-color-detail !important; -} - -.text-white { - color: #ffffff; -} - -// Alignment options -.text-left { - text-align: left !important; -} -.text-center { - text-align: center !important; -} -.text-right { - text-align: right !important; -} -.text-justify { - text-align: justify !important; -} - -// Transform options -.text-lowercase { - text-transform: lowercase !important; -} -.text-uppercase { - text-transform: uppercase !important; -} -.text-capitalize { - text-transform: capitalize !important; -} - -// Wrap options -.text-break { - word-break: break-all !important; - word-break: break-word !important; - -ms-word-break: break-all !important; - -webkit-hyphens: auto !important; - -moz-hyphens: auto !important; - hyphens: auto !important; -} - -.text-nowrap { - white-space: nowrap !important; -} - -.text-nowrap { - overflow: hidden !important; - max-width: 100% !important; - white-space: nowrap !important; - text-overflow: ellipsis !important; -} diff --git a/theme_old/styles/web/sass/core/manifest.json b/theme_old/styles/web/sass/core/manifest.json deleted file mode 100644 index 5ace500..0000000 --- a/theme_old/styles/web/sass/core/manifest.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "Atlas-UI-Framework", - "version": "2.6.3" -} \ No newline at end of file diff --git a/theme_old/styles/web/sass/core/widgets/_alerts.scss b/theme_old/styles/web/sass/core/widgets/_alerts.scss deleted file mode 100644 index 006ae6a..0000000 --- a/theme_old/styles/web/sass/core/widgets/_alerts.scss +++ /dev/null @@ -1,19 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Alerts - - Default Bootstrap Alert boxes. Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages -========================================================================== */ - -.alert { - margin-top: 0; // want to align it with padding of a page - padding: 15px; - border: 0; - border-radius: 4px; -} diff --git a/theme_old/styles/web/sass/core/widgets/_buttons.scss b/theme_old/styles/web/sass/core/widgets/_buttons.scss deleted file mode 100644 index c5cc4d0..0000000 --- a/theme_old/styles/web/sass/core/widgets/_buttons.scss +++ /dev/null @@ -1,96 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Buttons - - Default Bootstrap and Mendix Buttons -========================================================================== */ - -.btn, -.mx-button { - display: inline-block; - margin-bottom: 0; - padding: 0.6em 1em; - cursor: pointer; - -moz-user-select: none; - -ms-user-select: none; - -webkit-user-select: none; - user-select: none; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - -webkit-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - text-align: center; - vertical-align: middle; - white-space: nowrap; - color: $btn-default-color; - border: 1px solid $btn-default-border-color; - border-radius: $btn-border-radius; - background-color: $btn-default-bg; - background-image: none; - box-shadow: none; - text-shadow: none; - font-size: $btn-font-size; - line-height: $line-height-base; - - &:hover, - &:focus, - &:active, - &:active:focus { - outline: none; - box-shadow: none; - } - - &[aria-disabled] { - cursor: not-allowed; - pointer-events: none; - opacity: 0.65; - filter: alpha(opacity=65); - } - - @if $btn-bordered != false { - @extend .btn-bordered; - } -} - -// Mendix button link -.mx-link { - padding: 0; - color: $link-color; - - &[aria-disabled='true'] { - cursor: not-allowed; - pointer-events: none; - opacity: 0.65; - filter: alpha(opacity=65); - } -} - -// Images and icons in buttons -.btn, -.mx-button, -.mx-link { - img { - //height: auto; // MXUI override who set the height on 16px default - height: $font-size-default + 4px; - margin-right: 5px; - vertical-align: text-top; - } -} - -//== Phone specific -//-------------------------------------------------------------------------------------------------------------------// -.profile-phone { - .btn, - .mx-link { - &:active { - -webkit-transform: translateY(1px); - transform: translateY(1px); - } - } -} diff --git a/theme_old/styles/web/sass/core/widgets/_checkbox.scss b/theme_old/styles/web/sass/core/widgets/_checkbox.scss deleted file mode 100644 index 5534c72..0000000 --- a/theme_old/styles/web/sass/core/widgets/_checkbox.scss +++ /dev/null @@ -1,112 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Checkbox - - Default Mendix Checkbox Widget -========================================================================== */ - -.mx-checkbox.label-after { - flex-wrap: wrap; - - .control-label { - padding: 0; - } -} - -input[type='checkbox'] { - position: relative !important; //Remove after mxui merge - width: 16px; - height: 16px; - margin: 0 !important; // Remove after mxui merge - cursor: pointer; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; - - - &::-ms-check { - color: $form-input-border-color; - border-color: $form-input-border-color; - border-radius: $form-input-border-radius; - background-color: $form-input-bg; - } - - &:focus::-ms-check, - &:checked::-ms-check { - color: $form-input-border-focus-color; - border-color: $form-input-border-focus-color; - background-color: $form-input-bg-focus; - } - - &:before, - &:after { - position: absolute; - display: block; - transition: all 0.3s ease; - } - - &:before { - // Checkbox - width: 100%; - height: 100%; - content: ''; - border: 1px solid $form-input-border-color; - border-radius: $form-input-border-radius; - background-color: transparent; - } - - &:after { - // Checkmark - width: 8px; - height: 4px; - margin: 5px 4px; - transform: rotate(-45deg); - pointer-events: none; - border: 2px solid #FFFFFF; - border-top: 0; - border-right: 0; - } - - &:not(:disabled):not(:checked):hover:after { - content: ''; - border-color: $form-input-bg-hover; // color of checkmark on hover - } - - &:checked:before { - border-color: $form-input-border-focus-color; - background-color: $form-input-border-focus-color; - } - - &:checked:after { - content: ''; - } - - &:disabled:before { - background-color: $form-input-bg-disabled; - } - - &:checked:disabled:before { - border-color: transparent; - background-color: rgba($form-input-border-focus-color, 0.4); - } - - &:disabled:after, - &:checked:disabled:after { - border-color: $form-input-bg-disabled; - } - - & + .control-label { - margin-left: $form-label-gutter; - } -} diff --git a/theme_old/styles/web/sass/core/widgets/_datagrids.scss b/theme_old/styles/web/sass/core/widgets/_datagrids.scss deleted file mode 100644 index f0c1bdf..0000000 --- a/theme_old/styles/web/sass/core/widgets/_datagrids.scss +++ /dev/null @@ -1,76 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Datagrid Default - - Default Mendix Datagrid Widget. The datagrid shows a list of objects in a grid -========================================================================== */ - -.mx-datagrid { - table { - border-width: 0; - background-color: transparent; - /* Table header */ - th { - border-style: solid; - border-color: $grid-border-color; - border-top-width: 0; - border-right: 0; - border-bottom-width: 1px; - border-left: 0; - background-color: $grid-bg-header; - padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left; - vertical-align: middle; - .mx-datagrid-head-caption { - white-space: normal; - } - } - /* Table Body */ - tbody tr { - td { - @include transition(); - padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left; - vertical-align: middle; - border-width: 0; - border-color: $grid-border-color; - border-bottom-width: 1px; - border-bottom-style: solid; - background-color: $grid-bg; - &:focus { - outline: none; - } - /* Text without spaces */ - .mx-datagrid-data-wrapper { - text-overflow: ellipsis; - } - } - &.selected td, - &.selected:hover td { - color: $grid-selected-color; - background-color: $grid-bg-selected !important; - } - } - /* Table Footer */ - tfoot { - > tr > th { - padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left; - border-width: 0; - background-color: $grid-footer-bg; - } - > tr > td { - padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left; - border-width: 0; - background-color: $grid-bg; - font-weight: $font-weight-bold; - } - } - & *:focus { - outline: 0; - } - } -} \ No newline at end of file diff --git a/theme_old/styles/web/sass/core/widgets/_dataview.scss b/theme_old/styles/web/sass/core/widgets/_dataview.scss deleted file mode 100644 index bd4199d..0000000 --- a/theme_old/styles/web/sass/core/widgets/_dataview.scss +++ /dev/null @@ -1,45 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Dataview - - Default Mendix Dataview Widget. The data view is used for showing the contents of exactly one object -========================================================================== */ - -.mx-dataview { - /* Control bar */ - .mx-dataview-controls { - // Needed to clear the bootstrap columns (get float: left) - clear: both; - margin-top: 10px; - padding: 8px 0; - border-top: 1px solid $dataview-controls-border-color; - border-radius: 0; - background-color: $dataview-controls-bg; - /* Buttons */ - .mx-button { - margin-right: 0.3em; - margin-bottom: 0; - &:last-child { - margin-right: 0; - } - } - } - /* Dataview-content gives problems for nexted layout grid containers */ - > .mx-dataview-content > .mx-container-nested { - > .row { - margin-right: 0; - margin-left: 0; - } - } - /* Dataview empty message */ - .mx-dataview-message { - color: $dataview-emptymessage-color; - background: $dataview-emptymessage-bg; - } -} diff --git a/theme_old/styles/web/sass/core/widgets/_datepicker.scss b/theme_old/styles/web/sass/core/widgets/_datepicker.scss deleted file mode 100644 index 6f30417..0000000 --- a/theme_old/styles/web/sass/core/widgets/_datepicker.scss +++ /dev/null @@ -1,117 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Date Picker - - Default Mendix Date Picker Widget. -========================================================================== */ - -.mx-calendar { - /* (must be higher than popup z-index) */ - z-index: 10010 !important; - padding: 10px; - font-size: 12px; - background: $bg-color; - border-radius: $border-radius-default; - border: 1px solid $border-color-default; - box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.06); - .mx-calendar-month-header { - display: flex; - flex-direction: row; - justify-content: space-between; - margin: 0 3px 10px 3px; - } - .mx-calendar-month-next, - .mx-calendar-month-previous, - .mx-calendar-month-dropdown { - border: 0; - cursor: pointer; - background: transparent; - } - .mx-calendar-month-next, - .mx-calendar-month-previous { - &:hover { - color: $brand-primary; - } - } - .mx-calendar-month-dropdown { - display: flex; - align-items: center; - justify-content: center; - position: relative; - .mx-calendar-month-current:first-child { - margin-right: 10px; - } - } - th { - color: $brand-primary; - } - th, - td { - width: 35px; - height: 35px; - text-align: center; - } - td { - color: $font-color-default; - - &:hover { - cursor: pointer; - border-radius: 50%; - color: $brand-primary; - background-color: $brand-default; - } - } - .mx-calendar-day-month-next, - .mx-calendar-day-month-previous { - color: lighten($font-color-default, 45%); - } - .mx-calendar-day-selected, - .mx-calendar-day-selected:hover { - color: #fff; - border-radius: 50%; - background: $brand-primary; - } - - // - - .mx-calendar-year-switcher { - text-align: center; - margin-top: 10px; - color: lighten($brand-primary, 30%); - span.mx-calendar-year-selected { - color: $brand-primary; - margin-left: 10px; - margin-right: 10px; - } - span:hover { - cursor: pointer; - text-decoration: underline; - background-color: transparent; - } - } -} - -.mx-calendar-month-dropdown-options { - /* (must be higher than popup z-index) */ - z-index: 10020 !important; - position: absolute; - top: 25px; - padding: 2px 10px; - border-radius: $border-radius-default; - background-color: $bg-color; - div { - cursor: pointer; - font-size: 12px; - padding: 2px 0; - &:hover, - &:focus { - color: $brand-primary; - } - } -} diff --git a/theme_old/styles/web/sass/core/widgets/_glyphicons.scss b/theme_old/styles/web/sass/core/widgets/_glyphicons.scss deleted file mode 100644 index dccd16f..0000000 --- a/theme_old/styles/web/sass/core/widgets/_glyphicons.scss +++ /dev/null @@ -1,27 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Glyphicons - - Default Mendix Glyphicons -========================================================================== */ - -.mx-glyphicon { - &:before { - display: inline-block; - margin-top: -0.2em; - margin-right: 0.4555555em; - vertical-align: middle; - font-family: "Glyphicons Halflings"; - font-weight: $font-weight-normal; - font-style: normal; - line-height: inherit; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - } -} diff --git a/theme_old/styles/web/sass/core/widgets/_grid.scss b/theme_old/styles/web/sass/core/widgets/_grid.scss deleted file mode 100644 index 8bbf4ac..0000000 --- a/theme_old/styles/web/sass/core/widgets/_grid.scss +++ /dev/null @@ -1,72 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Grid - - Default Mendix Grid (used for Mendix Datagrid) -========================================================================== */ - -.mx-grid { - padding: 0px; - border: 0; - border-radius: 0; - .mx-grid-controlbar { - margin: 10px 0; - /* Paging */ - .mx-grid-pagingbar { - /* Buttons */ - .mx-button { - padding: 6px; - color: $grid-paging-color; - border-color: $grid-paging-border-color; - background-color: $grid-paging-bg; - &:hover { - color: $grid-paging-color-hover; - border-color: $grid-paging-border-color-hover; - background-color: $grid-paging-bg-hover; - } - } - /* Text Paging .. to .. to .. */ - .mx-grid-paging-status { - padding: 0 8px 8px; - } - } - } - .mx-grid-searchbar { - margin: 10px 0; - .mx-grid-search-item { - .mx-grid-search-label { - vertical-align: middle; - label { - padding-top: 5px; - } - } - .mx-grid-search-input { - display: inline-flex; - .form-control { - height: 28px; - font-size: 11px; - } - select.form-control { - padding: 3px; - vertical-align: middle; - } - .mx-button { - height: 28px; - padding-top: 2px; - padding-bottom: 2px; - } - } - } - } -} - -// Remove default border from grid inside a Mendix Dataview -.mx-dataview .mx-grid { - border: 0; -} diff --git a/theme_old/styles/web/sass/core/widgets/_groupbox.scss b/theme_old/styles/web/sass/core/widgets/_groupbox.scss deleted file mode 100644 index ab304dc..0000000 --- a/theme_old/styles/web/sass/core/widgets/_groupbox.scss +++ /dev/null @@ -1,40 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Groupbox - - Default Mendix Groupboxes -========================================================================== */ - -.mx-groupbox { - margin: 0; - > .mx-groupbox-header { - margin: 0; - color: $groupbox-default-color; - border-width: 1px 1px 0 1px; - border-style: solid; - border-color: $groupbox-default-bg; - background: $groupbox-default-bg; - font-size: $font-size-h5; - .mx-groupbox-collapse-icon { - margin-top: 0.1em; - } - } - > .mx-groupbox-body { - padding: 10px 15px; - border-width: 1px; - border-style: solid; - border-color: $groupbox-default-bg; - background-color: #FFFFFF; - } - .mx-groupbox-header + .mx-groupbox-body { - border-top: none; - } - &.collapsed > .mx-groupbox-header { - } -} \ No newline at end of file diff --git a/theme_old/styles/web/sass/core/widgets/_header.scss b/theme_old/styles/web/sass/core/widgets/_header.scss deleted file mode 100644 index b85e1ae..0000000 --- a/theme_old/styles/web/sass/core/widgets/_header.scss +++ /dev/null @@ -1,116 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Header - - Default Mendix Mobile Header -========================================================================== */ - -.mx-header { - z-index: 100; - display: flex; - width: 100%; - height: $m-header-height; - padding: 0; - text-align: initial; - color: $m-header-color; - border-bottom: 1px solid $border-color-default; - background-color: $m-header-bg; - box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14); - - // Reset mxui - div.mx-header-left, - div.mx-header-right { - position: relative; - top: initial; - right: initial; - left: initial; - display: flex; - align-items: center; - width: 25%; - height: 100%; - .mx-placeholder { - display: flex; - align-items: center; - height: 100%; - } - } - - div.mx-header-left .mx-placeholder { - order: 1; - .mx-placeholder { - justify-content: flex-start; - } - } - div.mx-header-center { - overflow: hidden; - flex: 1; - order: 2; - text-align: center; - - .mx-title { - overflow: hidden; - width: 100%; - margin: 0; - text-overflow: ellipsis; - color: $m-header-color; - font-size: $m-header-title-size; - line-height: $m-header-height; - } - } - div.mx-header-right { - order: 3; - .mx-placeholder { - justify-content: flex-end; - } - } - - // Content magic - .mx-link { - display: flex; - align-items: center; - height: 100%; - -webkit-transition: all 0.2s; - -moz-transition: all 0.2s; - transition: all 0.2s; - text-decoration: none; - .glyphicon { - top: 0; - font-size: 23px; - } - &:active { - -webkit-transform: translateY(1px); - transform: translateY(1px); - color: $link-hover-color; - } - } - - .mx-link, - .btn, - img { - padding: 0 8px; - } - - .mx-sidebartoggle { - font-size: 24px; - line-height: $m-header-height; - img { - height: 20px; - } - } -} - -// RTL support -body[dir='rtl'] { - .mx-header-left { - order: 3; - } - .mx-header-right { - order: 1; - } -} diff --git a/theme_old/styles/web/sass/core/widgets/_inputs.scss b/theme_old/styles/web/sass/core/widgets/_inputs.scss deleted file mode 100644 index 7c76e32..0000000 --- a/theme_old/styles/web/sass/core/widgets/_inputs.scss +++ /dev/null @@ -1,240 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Inputs - - The form-control class style all inputs -========================================================================== */ -.form-control { - display: flex; - flex: 1; - min-width: 50px; - height: $form-input-height; - padding: $form-input-padding-y $form-input-padding-x; - transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; - color: $form-input-color; - border: 1px solid $form-input-border-color; - border-radius: $form-input-border-radius; - background-color: $form-input-bg; - background-image: none; - box-shadow: none; - font-size: $form-input-font-size; - line-height: $form-input-line-height; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; - @if $form-input-style==lined { - @extend .form-control-lined; - } -} - -.form-control:not([readonly]):focus { - border-color: $form-input-border-focus-color; - outline: 0; - background-color: $form-input-bg-focus; - box-shadow: none; -} - -.form-control[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - opacity: 1; - background-color: #EEEEEE; -} - -.form-control[disabled], -fieldset[disabled] .form-control { - cursor: not-allowed; -} - -// Lined -.form-control-lined { - border: 0; - border-bottom: 1px solid $form-input-border-color; - border-radius: 0; - background-color: transparent; - - &:focus { - background-color: transparent; - } -} - -// Read only form control class -.form-control-static { - overflow: hidden; - flex: 1; - min-height: auto; - padding: $form-input-padding-y $form-input-padding-x; - border-bottom: 1px solid $form-input-static-border-color; - font-size: $form-input-font-size; - line-height: $form-input-line-height; - - & + .control-label { - margin-left: $form-label-gutter; - } -} - -// Dropdown input widget -select.form-control { - $arrow: "data:image/svg+xml;utf8,"; - padding-right: 30px; - background-image: url($arrow); - background-repeat: no-repeat; - background-position: calc(100% - #{$form-input-padding-x}) center; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; -} - -.form-control.mx-selectbox { - align-items: center; - flex-direction: row-reverse; - justify-content: space-between; -} - -// Not editable textarea, textarea will be rendered as a label -.mx-textarea .control-label { - height: auto; -} - -textarea.form-control { - flex-basis: auto; -} - -.mx-compound-control { - display: flex; - flex: 1; - flex-wrap: wrap; - max-width: 100%; - - .mx-validation-message { - flex-basis: 100%; - margin-top: 5px; - } -} - -// Form Group -.form-group { - display: flex; - flex-direction: row; - margin-bottom: $form-group-margin-bottom; - - & > div[class*='col-'] { - display: flex; - align-items: center; - flex-wrap: wrap; - } - - & > [class*='col-'] { - padding-right: $form-group-gutter; - padding-left: $form-group-gutter; - } - - // Alignment content - div[class*='textBox'] > .control-label, - div[class*='textArea'] > .control-label, - div[class*='datePicker'] > .control-label { - @extend .form-control-static; - } - - // Label - .control-label { - overflow: hidden; - margin-bottom: 5px; - text-overflow: ellipsis; - color: $form-label-color; - font-size: $form-label-size; - font-weight: $form-label-weight; - } - - .mx-validation-message { - flex-basis: 100%; - } - - &.no-columns:not(.label-after) { - flex-direction: column; - } -} - -.form-group.label-after { - .form-control-static { - flex: unset; - } - - .control-label { - margin-bottom: 0; - } -} - -.mx-dateinput, -.mx-referenceselector, -.mx-referencesetselector { - flex: 1; -} - -// Targets only webkit iOS devices -.dj_webkit.dj_ios .form-control { - transform: translateZ(0); -} - -@media only screen and (min-width: $screen-md) { - .form-horizontal { - .control-label { - margin-bottom: 0; - padding-top: $form-input-padding-y; - padding-bottom: $form-input-padding-y; - line-height: $form-input-line-height; - } - } -} - -@media only screen and (max-width: $screen-sm-max) { - .form-group { - flex-direction: column; - } -} - -@media only screen and (max-device-width: 1024px) and (-webkit-min-device-pixel-ratio: 0) { - // Fixes alignment bug on iPads / iPhones where datefield is not aligned vertically - input[type='date'], - input[type='time'], - input[type='datetime-local'], - input[type='month'] { - line-height: 1; - } - // Fix shrinking of date inputs because inability of setting a placeholder - input[type='time']:not(.has-value):before, - input[type='date']:not(.has-value):before, - input[type='month']:not(.has-value):before, - input[type='datetime-local']:not(.has-value):before { - margin-right: 0.5em; - content: attr(placeholder) !important; - color: #AAAAAA; - } - input[type='time'].has-value:before, - input[type='date'].has-value:before, - input[type='month'].has-value:before, - input[type='datetime-local'].has-value:before { - content: '' !important; - } -} - -@media (-ms-high-contrast: none), (-ms-high-contrast: active) { - // Target IE10+ - .form-group { - display: block; - } -} - -[dir='rtl'] { - // Dropdown input widget - select.form-control { - padding-right: 30px; - padding-left: 0; - background-position: #{$form-input-padding-x} center; - } -} diff --git a/theme_old/styles/web/sass/core/widgets/_labels.scss b/theme_old/styles/web/sass/core/widgets/_labels.scss deleted file mode 100644 index 344ba06..0000000 --- a/theme_old/styles/web/sass/core/widgets/_labels.scss +++ /dev/null @@ -1,30 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Labels - - Default labels combined with Bootstrap labels -========================================================================== */ - -.label { - display: inline-block; - padding: 0.2em 0.6em 0.3em; - text-align: center; - vertical-align: baseline; - white-space: nowrap; - color: #ffffff; - border-radius: 0.25em; - font-size: 100%; - line-height: 1; - margin: 0; - - .form-control-static { - all: unset; - font-weight: $font-weight-normal; - } -} diff --git a/theme_old/styles/web/sass/core/widgets/_layoutgrid.scss b/theme_old/styles/web/sass/core/widgets/_layoutgrid.scss deleted file mode 100644 index 9dbb564..0000000 --- a/theme_old/styles/web/sass/core/widgets/_layoutgrid.scss +++ /dev/null @@ -1,948 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Layout Grid - - Default Bootstrap containers -========================================================================== */ -.mx-layoutgrid { - width: 100%; - margin-right: auto; - margin-left: auto; - padding-right: $gutter-size; - padding-left: $gutter-size; -} - -// Row -.row { - display: flex; - flex-wrap: wrap; - margin-right: -$gutter-size; - margin-left: -$gutter-size; - - &::before, - &::after { - content: normal; - } -} - -.no-gutters { - margin-right: 0; - margin-left: 0; -} - -.no-gutters > .col, -.no-gutters > [class*="col-"] { - padding-right: 0; - padding-left: 0; -} - -// Columns -.col-1, -.col-2, -.col-3, -.col-4, -.col-5, -.col-6, -.col-7, -.col-8, -.col-9, -.col-10, -.col-11, -.col-12, -.col, -.col-auto, -.col-sm-1, -.col-sm-2, -.col-sm-3, -.col-sm-4, -.col-sm-5, -.col-sm-6, -.col-sm-7, -.col-sm-8, -.col-sm-9, -.col-sm-10, -.col-sm-11, -.col-sm-12, -.col-sm, -.col-sm-auto, -.col-md-1, -.col-md-2, -.col-md-3, -.col-md-4, -.col-md-5, -.col-md-6, -.col-md-7, -.col-md-8, -.col-md-9, -.col-md-10, -.col-md-11, -.col-md-12, -.col-md, -.col-md-auto, -.col-lg-1, -.col-lg-2, -.col-lg-3, -.col-lg-4, -.col-lg-5, -.col-lg-6, -.col-lg-7, -.col-lg-8, -.col-lg-9, -.col-lg-10, -.col-lg-11, -.col-lg-12, -.col-lg, -.col-lg-auto, -.col-xl-1, -.col-xl-2, -.col-xl-3, -.col-xl-4, -.col-xl-5, -.col-xl-6, -.col-xl-7, -.col-xl-8, -.col-xl-9, -.col-xl-10, -.col-xl-11, -.col-xl-12, -.col-xl, -.col-xl-auto { - position: relative; - width: 100%; - padding-right: $gutter-size; - padding-left: $gutter-size; -} - -.col { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; -} - -.col-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; -} - -.col-1 { - flex: 0 0 8.333333%; - max-width: 8.333333%; -} - -.col-2 { - flex: 0 0 16.666667%; - max-width: 16.666667%; -} - -.col-3 { - flex: 0 0 25%; - max-width: 25%; -} - -.col-4 { - flex: 0 0 33.333333%; - max-width: 33.333333%; -} - -.col-5 { - flex: 0 0 41.666667%; - max-width: 41.666667%; -} - -.col-6 { - flex: 0 0 50%; - max-width: 50%; -} - -.col-7 { - flex: 0 0 58.333333%; - max-width: 58.333333%; -} - -.col-8 { - flex: 0 0 66.666667%; - max-width: 66.666667%; -} - -.col-9 { - flex: 0 0 75%; - max-width: 75%; -} - -.col-10 { - flex: 0 0 83.333333%; - max-width: 83.333333%; -} - -.col-11 { - flex: 0 0 91.666667%; - max-width: 91.666667%; -} - -.col-12 { - flex: 0 0 100%; - max-width: 100%; -} - -.order-first { - order: -1; -} - -.order-last { - order: 13; -} - -.order-0 { - order: 0; -} - -.order-1 { - order: 1; -} - -.order-2 { - order: 2; -} - -.order-3 { - order: 3; -} - -.order-4 { - order: 4; -} - -.order-5 { - order: 5; -} - -.order-6 { - order: 6; -} - -.order-7 { - order: 7; -} - -.order-8 { - order: 8; -} - -.order-9 { - order: 9; -} - -.order-10 { - order: 10; -} - -.order-11 { - order: 11; -} - -.order-12 { - order: 12; -} - -.offset-1, -.col-offset-1 { - margin-left: 8.333333%; -} - -.offset-2, -.col-offset-2 { - margin-left: 16.666667%; -} - -.offset-3, -.col-offset-3 { - margin-left: 25%; -} - -.offset-4, -.col-offset-4 { - margin-left: 33.333333%; -} - -.offset-5, -.col-offset-5 { - margin-left: 41.666667%; -} - -.offset-6, -.col-offset-6 { - margin-left: 50%; -} - -.offset-7, -.col-offset-7 { - margin-left: 58.333333%; -} - -.offset-8, -.col-offset-8 { - margin-left: 66.666667%; -} - -.offset-9, -.col-offset-9 { - margin-left: 75%; -} - -.offset-10, -.col-offset-10 { - margin-left: 83.333333%; -} - -.offset-11, -.col-offset-11 { - margin-left: 91.666667%; -} - -// Responsiveness -@media (min-width: $screen-sm) { - .mx-layoutgrid-fixed { - max-width: 540px; - } -} - -@media (min-width: $screen-md) { - .mx-layoutgrid-fixed { - max-width: 720px; - } -} - -@media (min-width: $screen-lg) { - .mx-layoutgrid-fixed { - max-width: 960px; - } -} - -@media (min-width: $screen-xl) { - .mx-layoutgrid-fixed { - max-width: 1140px; - } -} - -@media (min-width: $screen-sm) { - .col-sm { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - .col-sm-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - .col-sm-1 { - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-sm-2 { - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-sm-3 { - flex: 0 0 25%; - max-width: 25%; - } - .col-sm-4 { - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-sm-5 { - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-sm-6 { - flex: 0 0 50%; - max-width: 50%; - } - .col-sm-7 { - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-sm-8 { - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-sm-9 { - flex: 0 0 75%; - max-width: 75%; - } - .col-sm-10 { - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-sm-11 { - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-sm-12 { - flex: 0 0 100%; - max-width: 100%; - } - .order-sm-first { - order: -1; - } - .order-sm-last { - order: 13; - } - .order-sm-0 { - order: 0; - } - .order-sm-1 { - order: 1; - } - .order-sm-2 { - order: 2; - } - .order-sm-3 { - order: 3; - } - .order-sm-4 { - order: 4; - } - .order-sm-5 { - order: 5; - } - .order-sm-6 { - order: 6; - } - .order-sm-7 { - order: 7; - } - .order-sm-8 { - order: 8; - } - .order-sm-9 { - order: 9; - } - .order-sm-10 { - order: 10; - } - .order-sm-11 { - order: 11; - } - .order-sm-12 { - order: 12; - } - .offset-sm-0, - .col-sm-offset-0 { - margin-left: 0; - } - .offset-sm-1, - .col-sm-offset-1 { - margin-left: 8.333333%; - } - .offset-sm-2, - .col-sm-offset-2 { - margin-left: 16.666667%; - } - .offset-sm-3, - .col-sm-offset-3 { - margin-left: 25%; - } - .offset-sm-4, - .col-sm-offset-4 { - margin-left: 33.333333%; - } - .offset-sm-5, - .col-sm-offset-5 { - margin-left: 41.666667%; - } - .offset-sm-6, - .col-sm-offset-6 { - margin-left: 50%; - } - .offset-sm-7, - .col-sm-offset-7 { - margin-left: 58.333333%; - } - .offset-sm-8, - .col-sm-offset-8 { - margin-left: 66.666667%; - } - .offset-sm-9, - .col-sm-offset-9 { - margin-left: 75%; - } - .offset-sm-10, - .col-sm-offset-10 { - margin-left: 83.333333%; - } - .offset-sm-11, - .col-sm-offset-11 { - margin-left: 91.666667%; - } -} - -@media (min-width: $screen-md) { - .col-md { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - .col-md-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - .col-md-1 { - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-md-2 { - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-md-3 { - flex: 0 0 25%; - max-width: 25%; - } - .col-md-4 { - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-md-5 { - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-md-6 { - flex: 0 0 50%; - max-width: 50%; - } - .col-md-7 { - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-md-8 { - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-md-9 { - flex: 0 0 75%; - max-width: 75%; - } - .col-md-10 { - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-md-11 { - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-md-12 { - flex: 0 0 100%; - max-width: 100%; - } - .order-md-first { - order: -1; - } - .order-md-last { - order: 13; - } - .order-md-0 { - order: 0; - } - .order-md-1 { - order: 1; - } - .order-md-2 { - order: 2; - } - .order-md-3 { - order: 3; - } - .order-md-4 { - order: 4; - } - .order-md-5 { - order: 5; - } - .order-md-6 { - order: 6; - } - .order-md-7 { - order: 7; - } - .order-md-8 { - order: 8; - } - .order-md-9 { - order: 9; - } - .order-md-10 { - order: 10; - } - .order-md-11 { - order: 11; - } - .order-md-12 { - order: 12; - } - .offset-md-0, - .col-md-offset-0 { - margin-left: 0; - } - .offset-md-1, - .col-md-offset-1 { - margin-left: 8.333333%; - } - .offset-md-2, - .col-md-offset-2 { - margin-left: 16.666667%; - } - .offset-md-3, - .col-md-offset-3 { - margin-left: 25%; - } - .offset-md-4, - .col-md-offset-4 { - margin-left: 33.333333%; - } - .offset-md-5, - .col-md-offset-5 { - margin-left: 41.666667%; - } - .offset-md-6, - .col-md-offset-6 { - margin-left: 50%; - } - .offset-md-7, - .col-md-offset-7 { - margin-left: 58.333333%; - } - .offset-md-8, - .col-md-offset-8 { - margin-left: 66.666667%; - } - .offset-md-9, - .col-md-offset-9 { - margin-left: 75%; - } - .offset-md-10, - .col-md-offset-10 { - margin-left: 83.333333%; - } - .offset-md-11, - .col-md-offset-11 { - margin-left: 91.666667%; - } -} - -@media (min-width: $screen-lg) { - .col-lg { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - .col-lg-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - .col-lg-1 { - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-lg-2 { - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-lg-3 { - flex: 0 0 25%; - max-width: 25%; - } - .col-lg-4 { - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-lg-5 { - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-lg-6 { - flex: 0 0 50%; - max-width: 50%; - } - .col-lg-7 { - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-lg-8 { - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-lg-9 { - flex: 0 0 75%; - max-width: 75%; - } - .col-lg-10 { - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-lg-11 { - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-lg-12 { - flex: 0 0 100%; - max-width: 100%; - } - .order-lg-first { - order: -1; - } - .order-lg-last { - order: 13; - } - .order-lg-0 { - order: 0; - } - .order-lg-1 { - order: 1; - } - .order-lg-2 { - order: 2; - } - .order-lg-3 { - order: 3; - } - .order-lg-4 { - order: 4; - } - .order-lg-5 { - order: 5; - } - .order-lg-6 { - order: 6; - } - .order-lg-7 { - order: 7; - } - .order-lg-8 { - order: 8; - } - .order-lg-9 { - order: 9; - } - .order-lg-10 { - order: 10; - } - .order-lg-11 { - order: 11; - } - .order-lg-12 { - order: 12; - } - .offset-lg-0, - .col-lg-offset-0 { - margin-left: 0; - } - .offset-lg-1, - .col-lg-offset-1 { - margin-left: 8.333333%; - } - .offset-lg-2, - .col-lg-offset-2 { - margin-left: 16.666667%; - } - .offset-lg-3, - .col-lg-offset-3 { - margin-left: 25%; - } - .offset-lg-4, - .col-lg-offset-4 { - margin-left: 33.333333%; - } - .offset-lg-5, - .col-lg-offset-5 { - margin-left: 41.666667%; - } - .offset-lg-6, - .col-lg-offset-6 { - margin-left: 50%; - } - .offset-lg-7, - .col-lg-offset-7 { - margin-left: 58.333333%; - } - .offset-lg-8, - .col-lg-offset-8 { - margin-left: 66.666667%; - } - .offset-lg-9, - .col-lg-offset-9 { - margin-left: 75%; - } - .offset-lg-10, - .col-lg-offset-10 { - margin-left: 83.333333%; - } - .offset-lg-11, - .col-lg-offset-11 { - margin-left: 91.666667%; - } -} - -@media (min-width: $screen-xl) { - .col-xl { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - .col-xl-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; - } - .col-xl-1 { - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-xl-2 { - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-xl-3 { - flex: 0 0 25%; - max-width: 25%; - } - .col-xl-4 { - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-xl-5 { - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-xl-6 { - flex: 0 0 50%; - max-width: 50%; - } - .col-xl-7 { - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-xl-8 { - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-xl-9 { - flex: 0 0 75%; - max-width: 75%; - } - .col-xl-10 { - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-xl-11 { - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-xl-12 { - flex: 0 0 100%; - max-width: 100%; - } - .order-xl-first { - order: -1; - } - .order-xl-last { - order: 13; - } - .order-xl-0 { - order: 0; - } - .order-xl-1 { - order: 1; - } - .order-xl-2 { - order: 2; - } - .order-xl-3 { - order: 3; - } - .order-xl-4 { - order: 4; - } - .order-xl-5 { - order: 5; - } - .order-xl-6 { - order: 6; - } - .order-xl-7 { - order: 7; - } - .order-xl-8 { - order: 8; - } - .order-xl-9 { - order: 9; - } - .order-xl-10 { - order: 10; - } - .order-xl-11 { - order: 11; - } - .order-xl-12 { - order: 12; - } - .offset-xl-0, - .col-xl-offset-0 { - margin-left: 0; - } - .offset-xl-1, - .col-xl-offset-1 { - margin-left: 8.333333%; - } - .offset-xl-2, - .col-xl-offset-2 { - margin-left: 16.666667%; - } - .offset-xl-3, - .col-xl-offset-3 { - margin-left: 25%; - } - .offset-xl-4, - .col-xl-offset-4 { - margin-left: 33.333333%; - } - .offset-xl-5, - .col-xl-offset-5 { - margin-left: 41.666667%; - } - .offset-xl-6, - .col-xl-offset-6 { - margin-left: 50%; - } - .offset-xl-7, - .col-xl-offset-7 { - margin-left: 58.333333%; - } - .offset-xl-8, - .col-xl-offset-8 { - margin-left: 66.666667%; - } - .offset-xl-9, - .col-xl-offset-9 { - margin-left: 75%; - } - .offset-xl-10, - .col-xl-offset-10 { - margin-left: 83.333333%; - } - .offset-xl-11, - .col-xl-offset-11 { - margin-left: 91.666667%; - } -} diff --git a/theme_old/styles/web/sass/core/widgets/_listview.scss b/theme_old/styles/web/sass/core/widgets/_listview.scss deleted file mode 100644 index 0a0d367..0000000 --- a/theme_old/styles/web/sass/core/widgets/_listview.scss +++ /dev/null @@ -1,102 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Listview - - Default Mendix Listview Widget. The list view shows a list of objects arranged vertically. Each object is shown using a template -========================================================================== */ -.mx-listview { - // Remove widget padding - padding: 0; - /* Clear search button (overrides load more button stying) */ - // Search bar - .mx-listview-searchbar { - margin-bottom: $gutter-size; - - .btn { - width: auto; - } - } - - /* Load more button */ - & > .btn { - width: 100%; - margin: 10px auto; - } - - & > ul { - margin: 0; - - .mx-listview-empty { - border-style: none; - background-color: transparent; - } - - & > li { - @include transition(); - padding: $listview-padding-top $listview-padding-right $listview-padding-bottom $listview-padding-left; - border-width: 1px 0 0 0; - border-style: solid; - border-color: $grid-border-color; - background-color: $grid-bg; - - &:first-child { - border-radius: 0; // Reset mxui listview style - } - - &:last-child { - border-bottom: 1px solid $grid-border-color; - border-radius: 0; // Reset mxui listview style - } - - &:focus, - &:active { - outline: 0; - background-color: $grid-bg-hover; - } - - &.selected { - background-color: $grid-bg-selected; - } - } - } - - .mx-layoutgrid { - padding-top: 0 !important; - padding-bottom: 0 !important; - } -} - -//== Phone specific -//-------------------------------------------------------------------------------------------------------------------// -.profile-phone .mx-listview { - .mx-listview-searchbar { - margin-bottom: 3px; - background: #FFFFFF; - box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14); - - input { - padding: 14px 15px; - color: #555555; - border-style: none; - border-radius: 0; - box-shadow: none; - } - - .btn { - padding: 14px 15px; - color: inherit; - border-style: none; - } - } - - & > ul > li { - &:first-child { - border-top: none; - } - } -} diff --git a/theme_old/styles/web/sass/core/widgets/_modals.scss b/theme_old/styles/web/sass/core/widgets/_modals.scss deleted file mode 100644 index 4298f37..0000000 --- a/theme_old/styles/web/sass/core/widgets/_modals.scss +++ /dev/null @@ -1,123 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Modals - - Default Mendix Modals. Modals are streamlined, but flexible, dialog prompts with the minimum required functionality and smart defaults -========================================================================== */ -.modal-dialog { - .modal-content { - border: 1px solid $modal-header-border-color; - border-radius: 4px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - - .modal-header { - padding: 15px 20px; - border-bottom-color: $modal-header-border-color; - border-radius: 0; // Because of the class .mx-window-active in mxui.css - background-color: $modal-header-bg; - - h4 { - margin: 0; - color: $modal-header-color; - font-size: 16px; - font-weight: $font-weight-bold; - } - - .close { - margin-top: -3px; - opacity: 1; - /* For IE8 and earlier */ - color: $modal-header-color; - text-shadow: none; - filter: alpha(opacity=100); - } - } - - .modal-body { - padding: 20px; - } - - .modal-footer { - display: flex; - justify-content: flex-end; - margin-top: 0; - padding: 20px; - border-style: none; - } - } -} - -// Default Mendix Window Modal -.mx-window { - // If popup direct child is a dataview it gets the class mx-window-view - &.mx-window-view .mx-window-body { - overflow: hidden; // hide second scrollbar in edit page - padding: 0; - // Dataview in popup - > .mx-dataview > .mx-dataview-content, - > .mx-placeholder > .mx-dataview > .mx-dataview-content { - padding: 20px; - } - - > .mx-dataview > .mx-dataview-controls, - > .mx-placeholder > .mx-dataview > .mx-dataview-controls { - display: flex; - justify-content: flex-end; - margin: 0; - padding: 20px; - text-align: left; - border-top: 1px solid $modal-header-border-color; - } - } - - .mx-dataview-controls { - padding-bottom: 0; - } - - .mx-layoutgrid { - padding-right: 0; - padding-left: 0; - } -} - -// Login modal -.mx-login { - .modal-body { - padding: 0 15px; - } - - .modal-content { - input { - height: 56px; - padding: 12px 12px; - border: 1px solid #EEEEEE; - background: #EEEEEE; - box-shadow: none; - font-size: 16px; - - &:focus { - border-color: #66AFE9; - } - } - } - - .modal-header, - .modal-footer { - border: 0; - } - - button { - font-size: 16px; - } - - h4 { - color: #AAAAAA; - font-size: 20px; - font-weight: $font-weight-bold; - } -} diff --git a/theme_old/styles/web/sass/core/widgets/_navigationbar.scss b/theme_old/styles/web/sass/core/widgets/_navigationbar.scss deleted file mode 100644 index 7845cad..0000000 --- a/theme_old/styles/web/sass/core/widgets/_navigationbar.scss +++ /dev/null @@ -1,152 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Navigation - - Default Mendix Navigation Bar -========================================================================== */ -.mx-navbar { - margin: 0; - border-style: none; - border-radius: 0; - background-color: $navigation-bg; - - ul.nav { - margin: 0; // weird -margin if screen gets small (bootstrap) - - /* Navigation item */ - & > li.mx-navbar-item > a { - display: flex; - align-items: center; - min-height: $topbar-minimalheight; - padding: $navigation-item-padding; - vertical-align: middle; - color: $navigation-color; - border-radius: 0; - font-size: $navigation-font-size; - font-weight: $font-weight-normal; - - /* Dropdown arrow */ - .caret { - border-top-color: $navigation-color; - border-bottom-color: $navigation-color; - } - - &:hover, - &:focus, - &.active { - text-decoration: none; - color: $navigation-color-hover; - background-color: $navigation-bg-hover; - - .caret { - border-top-color: $navigation-color-active; - border-bottom-color: $navigation-color-active; - } - } - - &.active { - color: $navigation-color-active; - background-color: $navigation-bg-active; - } - - /* Dropdown */ - .mx-navbar-submenu::before { - position: absolute; - top: -9px; - left: 15px; - width: 0; - height: 0; - content: ''; - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - border-width: 0 9px 9px 9px; - border-style: solid; - border-color: transparent transparent $navigation-border-color transparent; - } - - // Image - img { - width: 20px; // Default size (so it looks good) - height: auto; - margin-right: 0.5em; - } - - .glyphicon { - top: 0; - margin-right: 0.5em; - vertical-align: middle; - font-size: $navigation-glyph-size; - } - } - - & > .mx-navbar-item.active a { - color: $navigation-color-active; - } - - /* When hovering or the dropdown is open */ - & > .mx-navbar-item > a:hover, - & > .mx-navbar-item > a:focus, - & > .mx-navbar-item.open > a, - & > .mx-navbar-item.open > a:hover, - & > .mx-navbar-item.open > a:focus { - text-decoration: none; - color: $navigation-color-hover; - background-color: $navigation-bg-hover; - - .caret { - border-top-color: $navigation-color-hover; - border-bottom-color: $navigation-color-hover; - } - } - - & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a { - color: $navigation-sub-color-active; - background-color: $navigation-sub-bg-active; - - .caret { - border-top-color: $navigation-sub-color-active; - border-bottom-color: $navigation-sub-color-active; - } - } - } - @media (max-width: $screen-md) { - ul.nav > li.mx-navbar-item > a { - padding: 10px 20px; - } - .mx-navbar-item.open .dropdown-menu { - padding: 0; - border-radius: 0; - background-color: $navigation-sub-bg; - - & > li.mx-navbar-subitem > a { - padding: 10px 20px; - color: $navigation-sub-color; - border-radius: 0; - font-size: $navigation-sub-font-size; - font-weight: $font-weight-normal; - - &:hover, - &:focus { - color: $navigation-sub-color-hover; - background-color: $navigation-sub-bg-hover; - } - - &.active { - color: $navigation-sub-color-active; - background-color: $navigation-sub-bg-active; - } - } - } - } - - /* remove focus */ - &:focus { - outline: 0; - } -} diff --git a/theme_old/styles/web/sass/core/widgets/_navigationlist.scss b/theme_old/styles/web/sass/core/widgets/_navigationlist.scss deleted file mode 100644 index 0b44c33..0000000 --- a/theme_old/styles/web/sass/core/widgets/_navigationlist.scss +++ /dev/null @@ -1,37 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Navigation List - - Default Mendix Navigation List Widget. A navigation list can be used to attach an action to an entire row. Such a row is called a navigation list item -========================================================================== */ -.mx-navigationlist { - margin: 0; - padding: 0; - list-style: none; - - li.mx-navigationlist-item { - @include transition(); - padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left; - border-width: 1px; - border-style: none none solid none; - border-color: $grid-border-color; - border-radius: 0; - background-color: $grid-bg; - - &:hover, - &:focus { - color: inherit; - background-color: $grid-bg-hover; - } - - &.active { - color: inherit; - background-color: $grid-bg-selected; - } - } -} diff --git a/theme_old/styles/web/sass/core/widgets/_navigationtree.scss b/theme_old/styles/web/sass/core/widgets/_navigationtree.scss deleted file mode 100644 index c5beb0e..0000000 --- a/theme_old/styles/web/sass/core/widgets/_navigationtree.scss +++ /dev/null @@ -1,111 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Navigation - - Default Mendix Navigation Tree -========================================================================== */ -.mx-navigationtree { - background-color: $navigation-bg; - - /* Every navigation item */ - .navbar-inner > ul { - margin: 0; - padding-left: 0; - & > li { - padding: 0; - border-style: none; - & > a { - display: flex; - align-items: center; - height: $navigation-item-height; - padding: $navigation-item-padding; - color: $navigation-color; - border-bottom: 1px solid $navigation-border-color; - border-radius: 0; - background-color: $navigation-bg; - text-shadow: none; - font-size: $navigation-font-size; - font-weight: $font-weight-normal; - .caret { - border-top-color: $navigation-color; - border-bottom-color: $navigation-color; - } - img { - width: 20px; // Default size - height: auto; - margin-right: 0.5em; - } - .glyphicon { - top: 0; - margin-right: 0.5em; - vertical-align: middle; - font-size: $navigation-glyph-size; - } - } - a:hover, - a:focus, - a.active { - text-decoration: none; - color: $navigation-color-hover; - background-color: $navigation-bg-hover; - .caret { - border-top-color: $navigation-color-active; - border-bottom-color: $navigation-color-active; - } - } - a.active { - color: $navigation-color-active; - border-left-color: $navigation-color-active; - background-color: $navigation-bg-active; - } - } - } - - /* Sub navigation item specific */ - li.mx-navigationtree-has-items { - & > ul { - margin: 0; - padding-left: 0; - background-color: $navigation-sub-bg; - li { - margin: 0; - padding: 0; - border: 0; - a { - padding: 12px 20px 12px 25px; - text-decoration: none; - color: $navigation-sub-color; - border: 0; - background-color: $navigation-sub-bg; - text-shadow: none; - font-size: $navigation-sub-font-size; - font-weight: $font-weight-normal; - - &:hover, - &:focus, - &.active { - color: $navigation-sub-color-hover; - outline: 0; - background-color: $navigation-sub-bg-hover; - } - &.active { - color: $navigation-sub-color-active; - border: 0; - background-color: $navigation-sub-bg-active; - } - } - } - } - } - - /* remove focus */ - &:focus { - outline: 0; - } -} diff --git a/theme_old/styles/web/sass/core/widgets/_popupmenu.scss b/theme_old/styles/web/sass/core/widgets/_popupmenu.scss deleted file mode 100644 index f286357..0000000 --- a/theme_old/styles/web/sass/core/widgets/_popupmenu.scss +++ /dev/null @@ -1,119 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Popup Menu - - Default Mendix Popup Menus -========================================================================== */ -.popupmenu { - position: relative; - display: inline-flex; -} - -.popupmenu-trigger { - cursor: pointer; -} - -.popupmenu-menu { - position: absolute; - z-index: 999; - display: none; - flex-direction: column; - width: max-content; - border-radius: 8px; - background-color: $bg-color; - box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05), 0 2px 16px 0 rgba(33, 43, 54, 0.08); - - &.popupmenu-position-left { - top: 0; - left: 0; - transform: translateX(-100%); - } - - &.popupmenu-position-right { - top: 0; - right: 0; - transform: translateX(100%); - } - - &.popupmenu-position-top { - top: 0; - transform: translateY(-100%); - } - - &.popupmenu-position-bottom { - bottom: 0; - transform: translateY(100%); - } - - .popupmenu-basic-item:first-child, - .popupmenu-custom-item:first-child { - border-top-left-radius: 8px; - border-top-right-radius: 8px; - } - - .popupmenu-basic-item:last-child, - .popupmenu-custom-item:last-child { - border-bottom-right-radius: 8px; - border-bottom-left-radius: 8px; - } -} - -.popupmenu-basic-divider { - width: 100%; - height: 1px; - background-color: $brand-default; -} - -.popupmenu-basic-item { - padding: 12px 16px; - color: $font-color-default; - font-size: 14px; - - &:hover, - &:focus, - &:active { - cursor: pointer; - border-color: $bg-color-secondary; - background-color: $bg-color-secondary; - } - - &-inverse { - color: $brand-inverse; - } - - &-primary { - color: $brand-primary; - } - - &-info { - color: $brand-info; - } - - &-success { - color: $brand-success; - } - - &-warning { - color: $brand-warning; - } - - &-danger { - color: $brand-danger; - } -} - -.popupmenu-custom-item { - &:hover, - &:focus, - &:active { - cursor: pointer; - border-color: $bg-color-secondary; - background-color: $bg-color-secondary; - } -} diff --git a/theme_old/styles/web/sass/core/widgets/_progress.scss b/theme_old/styles/web/sass/core/widgets/_progress.scss deleted file mode 100644 index bfdd31c..0000000 --- a/theme_old/styles/web/sass/core/widgets/_progress.scss +++ /dev/null @@ -1,64 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Progress - - Default Mendix Progress Widget. -========================================================================== */ - -.mx-progress { - color: $font-color-default; - background: $bg-color-secondary; - - .mx-progress-message { - color: $font-color-default; - } - - .mx-progress-indicator { - position: relative; - overflow: hidden; - width: 100%; - max-width: 100%; - height: 2px; - margin: auto; - padding: 0; - border-radius: 0; - background: $gray-lighter; - - &:before, - &:after { - position: absolute; - top: 0; - left: 0; - display: block; - width: 50%; - height: 2px; - content: ""; - transform: translate3d(-100%, 0, 0); - background: $brand-primary; - } - - &::before { - animation: loader 2s infinite; - } - - &::after { - animation: loader 2s -2s infinite; - } - } -} - - -@keyframes loader { - 0% { - transform: translate3d(-100%, 0, 0); - } - 100% { - transform: translate3d(200%, 0, 0); - } -} diff --git a/theme_old/styles/web/sass/core/widgets/_radiobuttons.scss b/theme_old/styles/web/sass/core/widgets/_radiobuttons.scss deleted file mode 100644 index 63d0b5b..0000000 --- a/theme_old/styles/web/sass/core/widgets/_radiobuttons.scss +++ /dev/null @@ -1,121 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Radio Buttons - - Default Mendix Radio Button Widget -========================================================================== */ -.mx-radiobuttons.inline .mx-radiogroup { - display: flex; - flex-direction: row; - - .radio { - margin: 0 20px 0 0; - } -} - -.mx-radiobuttons .radio:last-child { - margin-bottom: 0; -} - -.radio { - display: flex !important; // Remove after mxui merge - align-items: center; - margin-top: 0; -} - -input[type='radio'] { - position: relative !important; // Remove after mxui merge - width: 16px; - height: 16px; - margin: 0; - cursor: pointer; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; - - &::-ms-check { - color: $form-input-border-color; - border-color: $form-input-border-color; - background-color: $form-input-bg; - } - - &:focus::-ms-check, - &:checked::-ms-check { - color: $form-input-border-focus-color; - border-color: $form-input-border-focus-color; - background-color: $form-input-bg-focus; - } - - &:before, - &:after { - position: absolute; - display: block; - transition: all 0.3s ease-in-out; - border-radius: 50%; - } - - &:before { - width: 100%; - height: 100%; - content: ''; - border: 1px solid $form-input-border-color; - background-color: transparent; - } - - &:after { - top: 50%; - left: 50%; - width: 50%; - height: 50%; - transform: translate(-50%, -50%); - pointer-events: none; - background-color: $form-input-border-focus-color; - } - - &:not(:checked):after { - transform: translate(-50%, -50%) scale(0); - opacity: 0; - } - - &:not(:disabled):not(:checked):hover:after { - background-color: $form-input-bg-hover; - } - - &:checked:after, - &:not(:disabled):not(:checked):hover:after { - content: ''; - transform: translate(-50%, -50%) scale(1); - opacity: 1; - } - - &:checked:before { - border-color: $form-input-border-focus-color; - background-color: $form-input-bg; - } - - &:disabled:before { - background-color: $form-input-bg-disabled; - } - - &:checked:disabled:before { - border-color: rgba($form-input-border-focus-color, 0.4); - } - - &:checked:disabled:after { - background-color: rgba($form-input-border-focus-color, 0.4); - } - - & + label { - margin-left: $form-label-gutter; - } -} diff --git a/theme_old/styles/web/sass/core/widgets/_simplemenubar.scss b/theme_old/styles/web/sass/core/widgets/_simplemenubar.scss deleted file mode 100644 index a7f11a5..0000000 --- a/theme_old/styles/web/sass/core/widgets/_simplemenubar.scss +++ /dev/null @@ -1,226 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// -/* ========================================================================== - Navigation - - Default Mendix Simple Menu Bar -========================================================================== */ -.mx-menubar { - padding: 0; - background-color: $navigation-bg; - - ul.mx-menubar-list { - display: flex; - width: 100%; - min-height: 50px; - - li.mx-menubar-item { - margin: 0; - - > a { - display: flex; - overflow: hidden; - align-items: center; - justify-content: center; - height: 100%; - padding: $navigation-item-padding; - white-space: nowrap; - color: $navigation-color; - border-radius: 0; - font-size: $navigation-font-size; - font-weight: $font-weight-normal; - - img { - margin-right: 0.5em; - } - - .glyphicon { - top: -1px; - margin-right: 0.5em; - vertical-align: middle; - font-size: $navigation-glyph-size; - } - } - - a:hover, - a:focus, - &:hover a, - &:focus a, - &.active a { - text-decoration: none; - color: $navigation-color-hover; - background-color: $navigation-bg-hover; - } - - &.active a { - color: $navigation-color-active; - background-color: $navigation-bg-active; - } - } - } - - /* remove focus */ - &:focus { - outline: 0; - } -} - -// Vertical variation specifics -.mx-menubar-vertical { - background-color: $navigation-bg; - - ul.mx-menubar-list { - display: flex; - - li.mx-menubar-item { - display: block; - - a { - border-bottom: 1px solid $navigation-border-color; - } - } - } -} - -// Horizontal variation specifics -.mx-menubar-horizontal { - box-shadow: 2px 0 4px 0 rgba(0, 0, 0, 0.14); - - ul.mx-menubar-list { - li.mx-menubar-item { - width: auto; - - a { - width: 100%; - } - } - } - - /* Two menu items */ - &.menubar-col-6 ul.mx-menubar-list li.mx-menubar-item { - width: 50%; - } - - /* Three menu items */ - &.menubar-col-4 ul.mx-menubar-list li.mx-menubar-item { - width: 33.33333333%; - } - - /* Four menu items */ - &.menubar-col-3 ul.mx-menubar-list li.mx-menubar-item { - width: 25%; - } - - /* Five menu items */ - &.menubar-col-2 ul.mx-menubar-list li.mx-menubar-item { - width: 20%; - } -} - -//== Regions -//## Behavior in the different regions -//-------------------------------------------------------------------------------------------------------------------// -// When used in topbar -.region-topbar { - .mx-menubar { - background-color: $navtopbar-bg; - - ul.mx-menubar-list { - li.mx-menubar-item { - a { - color: $navtopbar-color; - font-size: $navtopbar-font-size; - - .glyphicon { - font-size: $navtopbar-glyph-size; - } - } - - a:hover, - a:focus, - &:hover a, - &:focus a, - &.active a { - color: $navtopbar-color-hover; - background-color: $navtopbar-bg-hover; - } - - &.active a { - color: $navtopbar-color-active; - background-color: $navtopbar-bg-active; - } - } - } - } - - // Vertical variation specifics - .mx-menubar-vertical { - background-color: $navtopbar-bg; - - ul.mx-menubar-list { - li.mx-menubar-item { - a { - height: $navigation-item-height; - border-color: $navtopbar-border-color; - } - } - } - } -} - -// When used in sidebar -.region-sidebar { - .mx-menubar { - background-color: $navsidebar-bg; - - ul.mx-menubar-list { - li.mx-menubar-item { - a { - color: $navsidebar-color; - font-size: $navsidebar-font-size; - - .glyphicon { - font-size: $navsidebar-glyph-size; - } - } - - a:hover, - a:focus, - &:hover a, - &:focus a, - &.active a { - color: $navsidebar-color-hover; - background-color: $navsidebar-bg-hover; - } - - &.active a { - color: $navsidebar-color-active; - background-color: $navsidebar-bg-active; - } - } - } - } - - // Vertical variation specifics - .mx-menubar-vertical { - background-color: $navsidebar-bg; - - ul.mx-menubar-list { - li.mx-menubar-item { - a { - border-color: $navsidebar-border-color; - } - } - } - } -} - -@supports (padding-bottom: env(safe-area-inset-bottom)) { - .mx-menubar { - padding-bottom: env(safe-area-inset-bottom); - } -} \ No newline at end of file diff --git a/theme_old/styles/web/sass/core/widgets/_tabcontainer.scss b/theme_old/styles/web/sass/core/widgets/_tabcontainer.scss deleted file mode 100644 index f6933b5..0000000 --- a/theme_old/styles/web/sass/core/widgets/_tabcontainer.scss +++ /dev/null @@ -1,97 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Tab Container - - Default Mendix Tab Container Widget. Tab containers are used to show information categorized into multiple tab pages. - This can be very useful if the amount of information that has to be displayed is larger than the amount of space on the screen -========================================================================== */ - -.mx-tabcontainer { - .mx-tabcontainer-tabs { - margin-bottom: 20px; - border-color: $tabs-border-color; - & > li > a { - margin-right: 0; - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - color: $tabs-color; - font-weight: $font-weight-normal; - &:hover, - &:focus { - background-color: $tabs-bg-hover; - } - } - & > li.active > a, - & > li.active > a:hover, - & > li.active > a:focus { - color: $tabs-color-active; - border: 1px solid $tabs-border-color; - border-bottom-color: transparent; - background-color: $tabs-bg; - } - } -} - -// Tab Styling Specific for mobile -.tab-mobile.mx-tabcontainer { - & > .mx-tabcontainer-tabs { - margin: 0; - text-align: center; - border-style: none; - background-color: $brand-primary; - li { - display: table-cell; - float: none; - width: 1%; - margin: 0; - text-align: center; - border-style: none; - border-radius: 0; - a { - padding: 15px; - text-transform: uppercase; - color: #FFFFFF; - border-width: 0 1px 0 0; - border-style: solid; - border-color: rgba(255, 255, 255, 0.3); - border-radius: 0; - font-size: 12px; - font-weight: $font-weight-normal; - &:hover, - &:focus { - background-color: inherit; - } - } - &:last-child a { - border-right: none; - } - &.active > a, - &.active > a:hover, - &.active > a:focus { - color: #FFFFFF; - border-style: none; - border-radius: 0; - background-color: mix($brand-primary, #000000, 80%); - } - } - } -} - -.mx-tabcontainer-badge { - margin-left: 8px; - border-radius: $font-size-small; - background-color: $label-primary-bg; - color: $label-primary-color; - font-size: $font-size-small; - font-weight: $font-weight-bold; - line-height: 1; - padding: 3px 7px; -} diff --git a/theme_old/styles/web/sass/core/widgets/_tables.scss b/theme_old/styles/web/sass/core/widgets/_tables.scss deleted file mode 100644 index 21c0c33..0000000 --- a/theme_old/styles/web/sass/core/widgets/_tables.scss +++ /dev/null @@ -1,79 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Tables - - Default Mendix Table Widget. Tables can be used to lend structure to a page. They contain a number of rows (tr) and columns, the intersection of which is called a cell (td). Each cell can contain widgets -========================================================================== */ - -th { - font-weight: $font-weight-bold; -} - -html body .mx-page table.mx-table { - th, - td { - &.nopadding { - padding: 0; - } - } -} - -table.mx-table { - > tbody { - /* Table row */ - > tr { - /* Table header */ - > th { - padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom $padding-table-cell-left;s - * { - color: $form-label-color; - font-weight: $font-weight-bold; - font-weight: $form-label-weight; - } - > label { - padding-top: 7px; - padding-bottom: 6px; // Aligns label in the middle if there is no input field next to it. - } - } - /* Table cells */ - > td { - padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom $padding-table-cell-left; - > div > label, - .mx-referenceselector-input-wrapper label { - padding-top: 7px; - padding-bottom: 6px; // Aligns label in the middle if there is no input field next to it. - } - } - } - } -} - -// Default Mendix Table Widget inside TemplateGrid -.mx-templategrid table.mx-table { - > tbody { - > tr { - > th, - > td { - padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom $padding-table-cell-left; - } - } - } -} - -// Default Mendix Table Widget inside Listview -.mx-list table.mx-table { - > tbody { - > tr { - > th, - > td { - padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom $padding-table-cell-left; - } - } - } -} diff --git a/theme_old/styles/web/sass/core/widgets/_templategrids.scss b/theme_old/styles/web/sass/core/widgets/_templategrids.scss deleted file mode 100644 index 35d6fce..0000000 --- a/theme_old/styles/web/sass/core/widgets/_templategrids.scss +++ /dev/null @@ -1,33 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Templategrid - - Default Mendix Templategrid Widget. The template grid shows a list of objects in a tile view. For example, a template grid can show a list of products. The template grid has a lot in common with the data grid. The main difference is that the objects are shown in templates (a sort of small data view) instead of rows -========================================================================== */ - -.mx-templategrid { - .mx-templategrid-content-wrapper { - table-layout: fixed; - } - .mx-templategrid-item { - padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left; - cursor: default; - background-color: $grid-bg; - &:hover { - background-color: transparent; - } - &.selected { - background-color: $grid-bg-selected !important; - } - } - .mx-layoutgrid { - padding-top: 0 !important; - padding-bottom: 0 !important; - } -} \ No newline at end of file diff --git a/theme_old/styles/web/sass/core/widgets/_timeline.scss b/theme_old/styles/web/sass/core/widgets/_timeline.scss deleted file mode 100644 index 638af7b..0000000 --- a/theme_old/styles/web/sass/core/widgets/_timeline.scss +++ /dev/null @@ -1,102 +0,0 @@ -.widget-timeline-date-header { - display: inline-block; - width: 110px; - overflow-wrap: break-word; - padding: 8px; - text-align: center; - border: 1px solid $timeline-border-color; - border-radius: 30px; -} - -.widget-timeline-events-wrapper { - display: flex; - flex: 1; - margin-left: 55px; - padding-top: 35px; - - ul { - padding: 0; - list-style: none; - margin-bottom: 0; - } -} - -.widget-timeline-title { - color: $timeline-color-header; - font-weight: 600; - margin: 0 0 10px 0; -} - -.widget-timeline-description { - color: $timeline-color-detail; -} - -.widget-timeline-event { - position: relative; - margin-left: $timeline-icon-size / 2; - padding-left: $spacing-large; - padding-bottom: 20px; - - &:not(:last-of-type) { - border-left: 1px solid $timeline-border-color; - } - - &.clickable { - cursor: pointer; - transition: background 0.8s; - - &:hover { - .widget-timeline-title { - color: #dadcde; - } - } - } -} - -.widget-timeline-icon-wrapper { - position: absolute; - top: 0; - left: 0; - display: flex; - justify-content: center; - align-items: center; - width: $timeline-icon-size; - height: $timeline-icon-size; - transform: translateX(-50%); - - .glyphicon { - font-size: $timeline-icon-size; - } - - img { - max-width: $timeline-icon-size; - max-height: $timeline-icon-size; - } -} - -.widget-timeline-content-wrapper { - .widget-timeline-date-time-wrapper { - margin-right: 15px; - } - - .widget-timeline-info-wrapper { - flex-direction: column; - } -} - -.widget-timeline-icon-circle { - width: 18px; - height: 18px; - border-radius: 50%; - background-color: $timeline-icon-color; -} - -.widget-timeline-no-divider { - padding-bottom: 0; - padding-top: 0; - margin-left: 0; -} - -.widget-timeline-flex-container { - display: flex; -} diff --git a/theme_old/styles/web/sass/core/widgets/_typography.scss b/theme_old/styles/web/sass/core/widgets/_typography.scss deleted file mode 100644 index 21fa8a0..0000000 --- a/theme_old/styles/web/sass/core/widgets/_typography.scss +++ /dev/null @@ -1,79 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* ========================================================================== - Typography -========================================================================== */ - -p { - line-height: $line-height-base * 1.25; -} - -label { - padding-top: 0; -} - -.mx-title { - margin: $font-header-margin; - color: $font-color-header; - font-size: $font-size-h1; - font-weight: $font-weight-header; -} - -h1, -.h1, -.h1 > * { - font-size: $font-size-h1; -} - -h2, -.h2, -.h2 > * { - font-size: $font-size-h2; -} - -h3, -.h3, -.h3 > * { - font-size: $font-size-h3; -} - -h4, -.h4, -.h4 > * { - font-size: $font-size-h4; -} - -h5, -.h5, -.h5 > * { - font-size: $font-size-h5; -} - -h6, -.h6, -.h6 > * { - font-size: $font-size-h6; -} - -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - margin: $font-header-margin; - color: $font-color-header; - font-weight: $font-weight-header; - line-height: 1.3; -} \ No newline at end of file diff --git a/theme_old/styles/web/sass/core/widgetscustom/_dijit-widgets.scss b/theme_old/styles/web/sass/core/widgetscustom/_dijit-widgets.scss deleted file mode 100644 index cf859c1..0000000 --- a/theme_old/styles/web/sass/core/widgetscustom/_dijit-widgets.scss +++ /dev/null @@ -1,184 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* -* Mendix Documentation -* Special styles for presenting components -*/ - -/* -* Dijit Widgets -* -* Default Dojo Dijit Widgets -*/ - -/* - * Dijit Tooltip Widget - * - * Default tooltip used for Mendix widgets - */ - -.mx-tooltip { - .dijitTooltipContainer { - border-width: 1px; - border-color: $gray-light; - border-radius: 4px; - background: #ffffff; - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - .mx-tooltip-content { - padding: 10px; - } - .form-group { - margin-bottom: 5px; - } - } - .dijitTooltipConnector { - width: 0; - height: 0; - margin-left: -10px; - border-width: 10px 10px 10px 0; - border-style: solid; - border-color: transparent; - border-right-color: $gray-light; - } -} - -/* - * Dijit Border Container - * - * Used in Mendix as split pane containers - */ - -.dijitBorderContainer { - padding: 5px; - background-color: #fcfcfc; - .dijitSplitterV, - .dijitGutterV { - width: 5px; - border: 0; - background: #fcfcfc; - } - .dijitSplitterH, - .dijitGutterH { - height: 5px; - border: 0; - background: #fcfcfc; - } - .dijitSplitterH { - .dijitSplitterThumb { - top: 2px; - width: 19px; - height: 1px; - background: #b0b0b0; - } - } - .dijitSplitterV { - .dijitSplitterThumb { - left: 2px; - width: 1px; - height: 19px; - background: #b0b0b0; - } - } - .dijitSplitContainer-child, - .dijitBorderContainer-child { - border: 1px solid #cccccc; - } - .dijitBorderContainer-dijitTabContainerTop, - .dijitBorderContainer-dijitTabContainerBottom, - .dijitBorderContainer-dijitTabContainerLeft, - .dijitBorderContainer-dijitTabContainerRight { - border: none; - } - .dijitBorderContainer-dijitBorderContainer { - padding: 0; - border: none; - } - .dijitSplitterActive { - /* For IE8 and earlier */ - margin: 0; - opacity: 0.6; - background-color: #aaaaaa; - background-image: none; - font-size: 1px; - filter: alpha(opacity=60); - } - .dijitSplitContainer-dijitContentPane, - .dijitBorderContainer-dijitContentPane { - padding: 5px; - background-color: #ffffff; - } -} - -/* - * Dijit Menu Popup - * - * Used in datepickers and calendar widgets - */ - -.dijitMenuPopup { - margin-top: 10px; - .dijitMenu { - display: block; - width: 200px !important; - margin-top: 0; // No top margin because there is no parent with margin bottom - padding: 12px 10px; - border-radius: 3px; - background: $brand-inverse; - &:after { - position: absolute; - bottom: 100%; - left: 20px; - width: 0; - height: 0; - margin-left: -10px; - content: ' '; - pointer-events: none; - border: medium solid transparent; - border-width: 10px; - border-bottom-color: $brand-inverse; - } - // Menu item - .dijitMenuItem { - background: transparent; - .dijitMenuItemLabel { - display: block; - overflow: hidden; - width: 180px !important; - padding: 10px; - text-overflow: ellipsis; - color: #ffffff; - border-radius: 3px; - } - // Hover - &.dijitMenuItemHover { - background: none; - .dijitMenuItemLabel { - background: $brand-primary; - } - } - } - // New label - .tg_newlabelmenuitem { - .dijitMenuItemLabel { - font-weight: $font-weight-bold; - } - } - // Seperator - .dijitMenuSeparator { - td { - padding: 0; - border-bottom-width: 3px; - } - .dijitMenuSeparatorIconCell { - > div { - margin: 0; //override dijit styling - } - } - } - } -} diff --git a/theme_old/styles/web/sass/core/widgetscustom/_progress-bar-theme.scss b/theme_old/styles/web/sass/core/widgetscustom/_progress-bar-theme.scss deleted file mode 100644 index 7309a06..0000000 --- a/theme_old/styles/web/sass/core/widgetscustom/_progress-bar-theme.scss +++ /dev/null @@ -1,43 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* Based on https://github.com/mendixlabs/star-rating/blob/v1.1.1/src/ui/StarRating.scss */ -div.widget-progress-bar .progress-bar-default { - background-color: $brand-default; -} - -div.widget-progress-bar .progress-bar-primary { - background-color: $brand-primary; -} - -div.widget-progress-bar .progress-bar-success { - background-color: $brand-success; -} - -div.widget-progress-bar .progress-bar-info { - background-color: $brand-info; -} - -div.widget-progress-bar .progress-bar-warning { - background-color: $brand-warning; -} - -div.widget-progress-bar .progress-bar-danger { - background-color: $brand-danger; -} - -div.widget-progress-bar .progress-bar-inverse { - background-color: $brand-inverse; -} - -div.widget-progress-bar-alert.widget-progress-bar-text-contrast .progress-bar { - color: $color-danger-darker; -} - -div.widget-progress-bar-text-contrast .progress-bar { - color: $font-color-default; -} diff --git a/theme_old/styles/web/sass/core/widgetscustom/_progress-circle-theme.scss b/theme_old/styles/web/sass/core/widgetscustom/_progress-circle-theme.scss deleted file mode 100644 index 0c0b385..0000000 --- a/theme_old/styles/web/sass/core/widgetscustom/_progress-circle-theme.scss +++ /dev/null @@ -1,65 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* Based on https://github.com/mendixlabs/progress-circle/tree/master/src/ui/_progress-circle-theme.scss */ -path.widget-progress-circle-path { - stroke: $brand-primary; -} - -.widget-progress-circle-primary { - path.widget-progress-circle-path { - stroke: $brand-primary; - } - .progressbar-text { - color: $brand-primary !important; - } -} - -.widget-progress-circle-info { - path.widget-progress-circle-path { - stroke: $brand-info; - } - .progressbar-text { - color: $brand-info !important; - } -} - -.widget-progress-circle-success { - path.widget-progress-circle-path { - stroke: $brand-success; - } - .progressbar-text { - color: $brand-success !important; - } -} - -.widget-progress-circle-warning { - path.widget-progress-circle-path { - stroke: $brand-warning; - } - .progressbar-text { - color: $brand-warning !important; - } -} - -.widget-progress-circle-danger { - path.widget-progress-circle-path { - stroke: $brand-danger; - } - .progressbar-text { - color: $brand-danger !important; - } -} - -.widget-progress-circle-inverse { - path.widget-progress-circle-path { - stroke: $brand-inverse; - } - .progressbar-text { - color: $brand-inverse !important; - } -} diff --git a/theme_old/styles/web/sass/core/widgetscustom/_range-slider-theme.scss b/theme_old/styles/web/sass/core/widgetscustom/_range-slider-theme.scss deleted file mode 100644 index 0da429b..0000000 --- a/theme_old/styles/web/sass/core/widgetscustom/_range-slider-theme.scss +++ /dev/null @@ -1,59 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -// Based on https://github.com/mendixlabs/range-slider/tree/master/src/ui/_range-slider-theme.scss - -div.widget-range-slider { - .rc-slider-handle, - .rc-slider-dot-active { - border-color: $brand-default; - - &:active { - border-color: $brand-default; - box-shadow: none; - } - - &:hover { - border-color: $brand-default; - } - } - - &.has-error { - .rc-slider-track, - .rc-slider-rail { - background-color: $brand-danger; - } - } -} - -div.widget-range-slider-primary .rc-slider-track { - background-color: $brand-primary; -} - -div.widget-range-slider-info .rc-slider-track { - background-color: $brand-info; -} - -div.widget-range-slider-success .rc-slider-track { - background-color: $brand-success; -} - -div.widget-range-slider-warning .rc-slider-track { - background-color: $brand-warning; -} - -div.widget-range-slider-danger .rc-slider-track { - background-color: $brand-danger; -} - -div.widget-range-slider-inverse .rc-slider-track { - background-color: $brand-inverse; -} - -.rc-slider-tooltip { - z-index: 999; -} \ No newline at end of file diff --git a/theme_old/styles/web/sass/core/widgetscustom/_slider-theme.scss b/theme_old/styles/web/sass/core/widgetscustom/_slider-theme.scss deleted file mode 100644 index 951b79a..0000000 --- a/theme_old/styles/web/sass/core/widgetscustom/_slider-theme.scss +++ /dev/null @@ -1,52 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -// Based on https://github.com/mendixlabs/slider/tree/master/src/ui/_slider-theme.scss - -div.widget-slider { - .rc-slider-handle, - .rc-slider-dot-active { - border-color: $brand-default; - &:active { - border-color: $brand-default; - } - &:hover { - border-color: $brand-default; - } - } - - &.has-error { - .rc-slider-track, - .rc-slider-rail { - background-color: $brand-danger; - } - } -} - -div.widget-slider-primary .rc-slider-track { - background-color: $brand-primary; -} - -div.widget-slider-info .rc-slider-track { - background-color: $brand-info; -} - -div.widget-slider-success .rc-slider-track { - background-color: $brand-success; -} - -div.widget-slider-warning .rc-slider-track { - background-color: $brand-warning; -} - -div.widget-slider-danger .rc-slider-track { - background-color: $brand-danger; -} - -div.widget-slider-inverse .rc-slider-track { - background-color: $brand-inverse; -} diff --git a/theme_old/styles/web/sass/core/widgetscustom/_star-rating-theme.scss b/theme_old/styles/web/sass/core/widgetscustom/_star-rating-theme.scss deleted file mode 100644 index 91eeb86..0000000 --- a/theme_old/styles/web/sass/core/widgetscustom/_star-rating-theme.scss +++ /dev/null @@ -1,35 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -/* Based on https://github.com/mendixlabs/star-rating/blob/v1.1.1/src/ui/StarRating.scss */ -span.widget-star-rating-full-default { - color: $brand-default; -} - -span.widget-star-rating-full-primary { - color: $brand-primary; -} - -span.widget-star-rating-full-success { - color: $brand-success; -} - -span.widget-star-rating-full-info { - color: $brand-info; -} - -span.widget-star-rating-full-warning { - color: $brand-warning; -} - -span.widget-star-rating-full-danger { - color: $brand-danger; -} - -span.widget-star-rating-full-inverse { - color: $brand-inverse; -} diff --git a/theme_old/styles/web/sass/core/widgetscustom/_switchwidget.scss b/theme_old/styles/web/sass/core/widgetscustom/_switchwidget.scss deleted file mode 100644 index 14dd591..0000000 --- a/theme_old/styles/web/sass/core/widgetscustom/_switchwidget.scss +++ /dev/null @@ -1,157 +0,0 @@ -// -// DISCLAIMER: -// Do not change this file because it is core styling. -// Customizing core files will make updating Atlas much more difficult in the future. -// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. -// - -$default-android-color: #6FBEB5; -$default-ios-color: rgb(100, 189, 99); - -@mixin bootstrap-style-ios($brand-style) { - border-color: $brand-style; - background-color: $brand-style; - box-shadow: $brand-style 0 0 0 16px inset; -} - -@mixin bootstrap-style-android($brand-style) { - background-color: lighten($brand-style, 10%); -} - -@mixin ios { - .widget-switch-btn-wrapper { - &.checked { - &.widget-switch-btn-wrapper-default { - @include bootstrap-style-ios($default-ios-color); - } - - &.widget-switch-btn-wrapper-success { - @include bootstrap-style-ios($brand-success); - } - - &.widget-switch-btn-wrapper-info { - @include bootstrap-style-ios($brand-info); - } - - &.widget-switch-btn-wrapper-primary { - @include bootstrap-style-ios($brand-primary); - } - - &.widget-switch-btn-wrapper-warning { - @include bootstrap-style-ios($brand-warning); - } - - &.widget-switch-btn-wrapper-danger { - @include bootstrap-style-ios($brand-danger); - } - - &.widget-switch-btn-wrapper-inverse { - @include bootstrap-style-ios($brand-inverse); - } - } - } -} - -@mixin android { - .widget-switch-btn-wrapper { - &.checked { - &.widget-switch-btn-wrapper-default { - @include bootstrap-style-android($default-android-color); - - .widget-switch-btn { - background: $default-android-color; - } - } - - &.widget-switch-btn-wrapper-success { - @include bootstrap-style-android($brand-success); - - .widget-switch-btn { - background: $brand-success; - } - } - - &.widget-switch-btn-wrapper-info { - @include bootstrap-style-android($brand-info); - - .widget-switch-btn { - background: $brand-info; - } - } - - &.widget-switch-btn-wrapper-primary { - @include bootstrap-style-android($brand-primary); - - .widget-switch-btn { - background: $brand-primary; - } - } - - &.widget-switch-btn-wrapper-warning { - @include bootstrap-style-android($brand-warning); - - .widget-switch-btn { - background: $brand-warning; - } - } - - &.widget-switch-btn-wrapper-danger { - @include bootstrap-style-android($brand-danger); - - .widget-switch-btn { - background: $brand-danger; - } - } - - &.widget-switch-btn-wrapper-inverse { - @include bootstrap-style-android($brand-inverse); - - .widget-switch-btn { - background: $brand-inverse; - } - } - } - } -} - -.widget-switch-btn-wrapper { - &:focus { - outline: 1px solid $brand-primary; - } -} - -div { - &.widget-switch { - &.iOS { - @include ios; - } - - &.android { - @include android; - } - - &.auto { - @include ios; - } - } -} - -html { - div { - &.dj_android { - .widget-switch { - &.auto { - @include android; - } - } - } - - &.dj_ios { - .widget-switch { - &.auto { - @include ios; - } - } - } - } -} diff --git a/theme_old/styles/web/sass/main.scss b/theme_old/styles/web/sass/main.scss deleted file mode 100644 index 53f45f9..0000000 --- a/theme_old/styles/web/sass/main.scss +++ /dev/null @@ -1,104 +0,0 @@ -// Utilities -@import 'core/_legacy/bootstrap/bootstrap'; -@import 'core/_legacy/bootstrap/bootstrap-rtl'; -@import 'core/_legacy/mxui'; - -// Custom variables -@import 'app/custom-variables'; - -//================================== CORE ==================================\\ - -// Default variables -@import 'core/variables'; - -// Base -@import 'core/base/mixins/animations'; -@import 'core/base/mixins/spacing'; -@import 'core/base/mixins/layout-spacing'; -@import 'core/base/mixins/buttons'; -@import 'core/base/mixins/groupbox'; -@import 'core/base/animation'; -@import 'core/base/flex'; -@import 'core/base/spacing'; -@import 'core/base/reset'; -@import 'core/base/base'; -@import 'core/base/login'; - -// Widgets -@import 'core/widgets/inputs'; -@import 'core/widgets/alerts'; -@import 'core/helpers/alerts'; -@import 'core/helpers/backgrounds'; -@import 'core/widgets/buttons'; -@import 'core/helpers/buttons'; -@import 'core/widgets/checkbox'; -@import 'core/widgets/grid'; -@import 'core/widgets/datagrids'; -@import 'core/helpers/datagrids'; -@import 'core/widgets/dataview'; -@import 'core/widgets/datepicker'; -@import 'core/widgets/header'; -@import 'core/widgets/glyphicons'; -@import 'core/widgets/groupbox'; -@import 'core/helpers/groupbox'; -@import 'core/helpers/images'; -@import 'core/widgets/labels'; -@import 'core/helpers/labels'; -@import 'core/widgets/listview'; -@import 'core/helpers/listview'; -@import 'core/widgets/modals'; -@import 'core/widgets/navigationbar'; -@import 'core/helpers/navigationbar'; -@import 'core/widgets/navigationlist'; -@import 'core/widgets/navigationtree'; -@import 'core/helpers/navigationtree'; -@import 'core/widgets/popupmenu'; -@import 'core/widgets/simplemenubar'; -@import 'core/helpers/simplemenubar'; -@import 'core/widgets/radiobuttons'; -@import 'core/widgets/tabcontainer'; -@import 'core/helpers/tabcontainer'; -@import 'core/widgets/tables'; -@import 'core/helpers/tables'; -@import 'core/widgets/templategrids'; -@import 'core/helpers/templategrids'; -@import 'core/widgets/typography'; -@import 'core/helpers/typography'; -@import 'core/widgets/layoutgrid'; -@import 'core/widgets/progress'; -@import 'core/widgets/timeline'; -@import 'core/helpers/helperclasses'; - -// Custom widgets -@import 'core/widgetscustom/dijit-widgets'; -@import 'core/widgetscustom/progress-bar-theme'; -@import 'core/widgetscustom/progress-circle-theme'; -@import 'core/widgetscustom/range-slider-theme'; -@import 'core/widgetscustom/slider-theme'; -@import 'core/widgetscustom/star-rating-theme'; -@import 'core/widgetscustom/switchwidget'; - -//================================= CUSTOM =================================\\ - -// Building blocks -@import 'ui_resources/atlas_ui_resources/buildingblocks/breadcrumb'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/card'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/chat'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/controlgroup'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/pageblocks'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/pageheader'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/heroheader'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/formblock'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/master-detail'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/userprofile'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/wizard'; -@import 'ui_resources/atlas_ui_resources/buildingblocks/timeline'; - -// Layouts -@import 'ui_resources/atlas_ui_resources/layouts/layout-atlas'; -@import 'ui_resources/atlas_ui_resources/layouts/layout-atlas-phone'; -@import 'ui_resources/atlas_ui_resources/layouts/layout-atlas-responsive'; -@import 'ui_resources/atlas_ui_resources/layouts/layout-atlas-tablet'; - -// Custom -@import 'app/custom'; diff --git a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_breadcrumb.scss b/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_breadcrumb.scss deleted file mode 100644 index b5655be..0000000 --- a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_breadcrumb.scss +++ /dev/null @@ -1,44 +0,0 @@ -/* ========================================================================== - Breadcrumbs - -========================================================================== */ -.breadcrumb { - //reset - margin: 0; - padding: 0; - border-radius: 0; - background-color: transparent; - font-size: $font-size-default; -} - -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -.breadcrumb-item { - display: inline-block; - margin: 0; - &:last-child { - color: $font-color-default; - a { - text-decoration: none; - } - } -} -.breadcrumb-item + .breadcrumb-item { - &::before { - display: inline-block; - padding-right: 10px; - padding-left: 10px; - content: "/"; - color: $gray-light; - } -} - -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -.breadcrumb-large { - font-size: $font-size-h3; -} -.breadcrumb-underline { - padding-bottom: $gutter-size; - border-bottom: 1px solid $border-color-default; -} diff --git a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_card.scss b/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_card.scss deleted file mode 100644 index ddfc68d..0000000 --- a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_card.scss +++ /dev/null @@ -1,337 +0,0 @@ -/* ========================================================================== - Cards - -========================================================================== */ -.card { - padding: 30px; - border: 1px solid $border-color-default; - border-radius: $border-radius-default; - background-color: #FFFFFF; -} - -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -.card-title { - margin-top: 0; -} - -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -.cardaction { - .card-image { - .glyphicon { - font-size: 58px; - } - } -} - -.cardmetrics { - .card-title { - margin-bottom: 0; - } - - .figurecontent { - } - - .card-image { - width: 100px; - height: auto; - // If btn - &.btn { - width: 100px; - height: 100px; - padding: 0; - cursor: default; - pointer-events: none; - font-size: 40px; - } - } - - .card-counter { - margin: 0; - font-size: 64px; - } - - .card-morebutton { - } -} - -.cardinfo { - .card-text { - margin-bottom: $spacing-large; - } -} - -// Used in card info -.textwithicon { - overflow: hidden; - max-width: 100%; - margin-bottom: 15px; - text-overflow: ellipsis; - - .textwithicon-icon, - .textwithicon-text { - display: inline-block; - vertical-align: middle; - } - - .textwithicon-icon { - margin-right: 15px; - padding: 0; - color: $brand-primary; // class .text-primary - border: 0; - background: transparent; - font-size: 23px; - } - - .textwithicon-text { - } -} - -// Used in card info -.socialprofiles { - .socialprofiles-title { - display: block; - margin-bottom: 10px; - font-weight: bold; // class text-bold - } - - .socialprofiles-button { - width: 24px; - height: 24px; - margin-right: 15px; - padding: 0; - border-radius: 24px; - - .glyphicon { - margin: 0; - } - } -} - - -.cardtabs { - padding: 0; -} - -.cardtabs-tabs { - margin: 0; - - ul.mx-tabcontainer-tabs { - display: flex; - margin: 0; - background-color: mix($tabs-border-color, #FFFFFF, 20%); - - li { - flex: 1 1 auto; - text-align: center; - - a, - a:hover, - a:focus { - border-top-width: 0; - border-right-width: 1px; - border-left-width: 0; - } - - &:first-child a { - border-radius: $border-radius-default 0 0 0; - } - - &:last-child a { - border-radius: 0 $border-radius-default 0 0; - } - } - } - - .mx-tabcontainer-pane { - @include get-responsive-spacing-large($type: padding, $direction: all); - } -} - -.carduser { - .card-controls { - } - - .card-title { - } - - .card-detail { - } -} - -.cardgraph { - .card-title { - } -} - -.cardchart { - .card-title { - } -} - -.cardproduct { - padding: 0; - -} - -.cardproduct-header { - position: relative; - overflow: hidden; - height: 200px; - - .card-image { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: auto; - } - -} - -.cardproduct-overlay { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - padding: 20px 30px; - background: rgba(0, 0, 0, 0.60); - -} - -.cardproduct-overlay-category, -.cardproduct-overlay-title { - margin: 0; - color: #FFFFFF; -} - -.cardproduct-footer .col { - padding: 20px 30px; - - .widget-star-rating-font { - font-size: 20px; - } -} - -.cardproduct-name { - margin: 0; -} - -.cardproduct-btn { - display: flex; - align-items: center; - height: 100%; - padding: 30px; - border-left: 1px solid $border-color-default; -} - -.cardproduct2 { - @extend .cardproduct; - - .cardproduct-header { - &::after { - position: absolute; - bottom: 0; - left: 0; - display: block; - width: 100%; - padding: 20px 30px; - content: ""; - background: rgba(0, 0, 0, 0.60); - background: -moz-linear-gradient(top, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 2%, rgba(0, 0, 0, 0.99) 99%, rgba(0, 0, 0, 1) 100%); - background: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 2%, rgba(0, 0, 0, 0.99) 99%, rgba(0, 0, 0, 1) 100%); - background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 2%, rgba(0, 0, 0, 0.99) 99%, rgba(0, 0, 0, 1) 100%); - } - } -} - - -.cardproduct3 { - @extend .cardproduct; - - .cardproduct-header { - height: 320px; - - img { - width: 100%; - height: 100%; - object-fit: cover; - } - - } - - .cardproduct-overlay { - min-height: 100px; - padding: 30px; - background: -moz-linear-gradient(top, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 8%, rgba(0, 0, 0, 0.99) 121%, rgba(0, 0, 0, 1) 100%); - background: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 8%, rgba(0, 0, 0, 0.99) 121%, rgba(0, 0, 0, 1) 100%); - background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, rgba(250, 250, 250, 0) 8%, rgba(0, 0, 0, 0.99) 121%, rgba(0, 0, 0, 1) 100%); - font-size: $font-size-default; - } -} - -.cardshopping { -} - -.carduserlist { -} - -.cardstatus { - padding: 20px; - - .card-linkicon { - font-size: 30px; - } - - .cardstatus-status { - margin-bottom: 5px; - } -} - -.cardpayment { -} - -.cardprogress { -} - -.cardprogress-state { - width: 80px; - height: 80px; - padding: 0; - cursor: default; - pointer-events: none; - border-radius: 100%; - font-size: 28px; -} - -.cardhighlight { - border-top: 4px solid $brand-primary; -} - -.cardchat { - overflow: hidden; - padding: 0; - - .chat { - height: 400px; - } -} - -@media screen and (max-width: $screen-md-max) { - .widget-charts:not([height]), - .widget-charts-line:not([height]) { - padding-bottom: 80% !important; - } -} - - -@media screen and (max-width: $screen-lg-max) { - .cardprogress { - .cardprogress-state { - width: 60px; - height: 60px; - font-size: 24px; - } - } -} diff --git a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_chat.scss b/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_chat.scss deleted file mode 100644 index 4dba229..0000000 --- a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_chat.scss +++ /dev/null @@ -1,148 +0,0 @@ -/* ========================================================================== - Chats - -========================================================================== */ -.chat { - display: flex; - flex-direction: column; - height: 100%; - background-color: $bg-color-secondary; -} - -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -.chat-content { - display: flex; - overflow: auto; - flex: 1; - flex-direction: column; - justify-content: flex-end; - - .chat-list { - position: relative; - overflow: auto; - - ul { - display: flex; - flex-direction: column-reverse; - margin-bottom: $m-spacing-large; - } - - li { - padding: 15px 30px; - animation: fadeIn 0.2s; - background-color: transparent; - animation-fill-mode: both; - - &, - &:last-child { - border: 0; - } - } - - .mx-listview-loadMore { - position: absolute; - top: 0; - right: 0; - left: 0; - display: block; - width: 50%; - margin: 15px auto; - color: #FFFFFF; - background-color: $brand-primary; - box-shadow: 0 2px 20px 0 rgba(0, 0, 0, 0.05); - } - } -} - - -.chat-message { - display: flex; -} - -.chat-avatar { - margin: 0 20px 0 0; - border-radius: 50%; -} - -.chat-message-content { - display: inline-flex; - flex-direction: column; -} - -.chat-message-balloon { - position: relative; - display: flex; - flex-direction: column; - padding: 10px 15px; - border-radius: 5px; - background-color: $bg-color; - - &::after { - position: absolute; - top: 10px; - right: 100%; - width: 0; - height: 0; - content: ''; - border: 10px solid transparent; - border-top: 0; - border-right-color: $bg-color; - border-left: 0; - } -} - -.chat-message-time { - padding-top: 2px; - - .form-control-static { - border: 0; - } -} - -.chat-footer { - z-index: 1; - padding: $m-spacing-large; - background-color: $bg-color; - box-shadow: 0 2px 20px 0 rgba(0, 0, 0, 0.05); -} - -.chat-input { - display: flex; - - .chat-textbox { - flex: 1; - margin-right: $spacing-large; - margin-bottom: 0; - - .form-control { - border: 0; - } - } -} - -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -.chat-message-self { - justify-content: flex-end; - - .chat-avatar { - margin: 0 0 0 20px; - } - - .chat-message-balloon { - background-color: $color-primary-lighter; - - &::after { - left: 100%; - border: 10px solid transparent; - border-top: 0; - border-right: 0; - border-left-color: $color-primary-lighter; - } - } - - .chat-message-time { - text-align: right; - } -} diff --git a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_controlgroup.scss b/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_controlgroup.scss deleted file mode 100644 index 9ce1f84..0000000 --- a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_controlgroup.scss +++ /dev/null @@ -1,25 +0,0 @@ -/* ========================================================================== - Control Group - - A group of buttons next to eachother -========================================================================== */ -.controlgroup { - .btn, - .btn-group { - margin-right: $spacing-small; - margin-bottom: $spacing-small; - - &:last-child { - margin-right: 0; - } - .btn { - margin-right: 0; - margin-bottom: 0; - } - } - .btn-group { - .btn + .btn { - margin-left: -1px; - } - } -} diff --git a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_formblock.scss b/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_formblock.scss deleted file mode 100644 index 9ecfc2f..0000000 --- a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_formblock.scss +++ /dev/null @@ -1,15 +0,0 @@ -/* ========================================================================== - Form Block - - Used in default forms -========================================================================== */ -.formblock { -} - -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -.formblock-title { - margin-bottom: $gutter-size; - padding-bottom: $gutter-size; - border-bottom: 1px solid $border-color-default; -} diff --git a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_heroheader.scss b/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_heroheader.scss deleted file mode 100644 index f00c387..0000000 --- a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_heroheader.scss +++ /dev/null @@ -1,99 +0,0 @@ -/* ========================================================================== - Pageheader - -========================================================================== */ -.heroheader { - border-bottom: 1px solid $border-color-default; - background: $header-bg-color; -} - -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -.heroheader-title { - margin: 0 0 10px 0; -} - -.heroheader-subtitle { - margin: 0; - padding: 0 15px; - - &::before { - display: block; - max-width: 330px; - height: 1px; - margin: auto auto 10px auto; - content: ""; - background-color: lighten($border-color-default, 4); - } -} - -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -.heroheader1 { - background-image: $brand-gradient; - - .heroheader-title { - margin-bottom: 10px; - color: #FFFFFF; - } - - .heroheader-subtitle { - padding: 0; - color: #FFFFFF; - - &::before { - display: none; - } - } -} - -.heroheadermap { - padding: 0 !important; -} - -.heroheadermap-controls { - padding: $spacing-large; - background: $header-bg-color; -} - -.heroheaderproduct { - position: relative; - overflow: hidden; - height: 300px; - background-color: #000000; - - .heroheaderproduct-backgroundimage { - position: absolute; - z-index: 0; - top: 0; - width: 100%; - opacity: 0.7; - filter: blur(5px); - } - - .heroheaderproduct-overlay { - position: absolute; - z-index: 1; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - } -} - -.heroheaderexpense { - .heroheaderexpense-title { - font-size: 72px; - } - - .heroheaderexpense-type { - align-items: center; - - &::before { - flex-grow: 1; - height: 1px; - margin-right: 10px; - content: ""; - background-color: #D2D2D2; - } - } -} diff --git a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_master-detail.scss b/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_master-detail.scss deleted file mode 100644 index 2422239..0000000 --- a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_master-detail.scss +++ /dev/null @@ -1,46 +0,0 @@ -/* ========================================================================== - Master Detail - - A list with a listening dataview -========================================================================== */ -.masterdetail { - .masterdetail-master { - .controlgroup { - margin-bottom: $gutter-size; - } - - @media (max-width: $screen-lg) { - @include layout-spacing($type: margin, $direction: bottom, $device: responsive); - } - - @media (min-width: $screen-lg) { - border-right: 1px solid $border-color-default; - - .mx-listview-searchbar { - margin: $gutter-size; - } - .controlgroup { - padding: $gutter-size; - border-bottom: 1px solid $border-color-default; - } - } - } - - .masterdetail-detail { - @media (min-width: $screen-lg) { - @include layout-spacing($type: padding, $direction: all, $device: responsive); - } - } -} - -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -.masterdetailvertical { - .masterdetail-master { - @include layout-spacing($type: margin, $direction: bottom, $device: responsive); - } - - .masterdetail-detail { - @include layout-spacing($type: padding, $direction: top, $device: responsive); - } -} diff --git a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_pageblocks.scss b/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_pageblocks.scss deleted file mode 100644 index a1bfd9a..0000000 --- a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_pageblocks.scss +++ /dev/null @@ -1,28 +0,0 @@ -/* ========================================================================== - Full page blocks - - Blocks that take up the full width and height -========================================================================== */ - -.fullpageblock { - position: relative; - height: 100%; - min-height: 100%; - - // Helper to make it fullheight - .fullheight { - height: 100% !important; - - & > .mx-dataview-content { - height: inherit !important; - } - } - - .fullpage-overlay { - position: absolute; - z-index: 10; - bottom: 0; - left: 0; - width: 100%; - } -} diff --git a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_pageheader.scss b/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_pageheader.scss deleted file mode 100644 index 3425161..0000000 --- a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_pageheader.scss +++ /dev/null @@ -1,59 +0,0 @@ -/* ========================================================================== - Pageheader -========================================================================== */ - -//== Default -//-------------------------------------------------------------------------------------------------------------------// -.pageheader { - border-bottom: 1px solid $border-color-default; - background: $header-bg-color; -} - -// Check if it is part of a inner layoutgrid -.mx-scrollcontainer .mx-placeholder .mx-layoutgrid .pageheader { - @include get-responsive-spacing-large($type: margin, $direction: bottom); - @include get-responsive-spacing-large($type: padding, $direction: bottom); - background: transparent; -} - -//== Elements -//-------------------------------------------------------------------------------------------------------------------// -.pageheader-type { - margin: 0; -} - -.pageheader-title { - margin: 0; -} - -.pageheader-subtitle { - margin: 0; -} - -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -.pageheaderwithcontrols { - .controlgroup { - } -} - -.pageheaderwithimage { - .pageheader-image { - } - .figurecontent { - } -} - -.pageheaderwithimageandcontrols { -} - -.pageheaderwithsearch { - .pageheader-title { - margin-bottom: 1em; - } -} - -.pageheaderwithbreadcrumb { - .breadcrumb { - } -} diff --git a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_timeline.scss b/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_timeline.scss deleted file mode 100644 index 63f4d65..0000000 --- a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_timeline.scss +++ /dev/null @@ -1,46 +0,0 @@ -// Timeline -.timeline { - .timeline-header { - display: inline-block; - width: 110px; - padding: 8px; - text-align: center; - border: 1px solid $border-color-default; - border-radius: 30px; - } -} -.timeline-itemwrapper.mx-listview { - margin-bottom: 0; - margin-left: 55px; - padding: $spacing-large 0; - border-left: 1px solid $border-color-default; - & > ul > li { - position: relative; - padding-left: ($gutter-size * 2); - - &::before { - position: absolute; - top: 5px; - left: -5px; - display: block; - width: 10px; - height: 10px; - content: ''; - border-radius: 50%; - background-color: $brand-primary; - } - } - li + li { - margin-top: $spacing-large; - } -} - -//== Variations -//-------------------------------------------------------------------------------------------------------------------// -.timeline2 { - .timeline-itemwrapper.mx-listview { - & > ul > li { - padding-left: $gutter-size; - } - } -} diff --git a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_userprofile.scss b/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_userprofile.scss deleted file mode 100644 index c4544a9..0000000 --- a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_userprofile.scss +++ /dev/null @@ -1,12 +0,0 @@ -/* ========================================================================== - User profile blocks - - -========================================================================== */ -.userprofile { - .userprofile-img { - } - .userprofile-title { - } - .userprofile-subtitle { - } -} \ No newline at end of file diff --git a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_wizard.scss b/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_wizard.scss deleted file mode 100644 index 37df48d..0000000 --- a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_wizard.scss +++ /dev/null @@ -1,137 +0,0 @@ -$wizard-step-number-size: 60px; -$wizard-step-height: 50px; - -.wizard { - display: flex; - justify-content: space-between; - .wizard-step { - position: relative; - width: 100%; - text-align: center; - &::before { - position: absolute; - z-index: -1; - top: $wizard-step-number-size / 2; - display: block; - width: 100%; - height: 2px; - content: ""; - background-color: $border-color-default; - } - .wizard-step-number { - width: $wizard-step-number-size; - height: $wizard-step-number-size; - border-color: $border-color-default; - border-radius: 50%; - background-color: #FFFFFF; - font-size: 20px; - } - .wizard-step-text { - display: block; - margin-top: 15px; - } - } - - - // States - .wizard-step-active { - .wizard-step-number { - color: #FFFFFF; - border-color: $brand-primary; - background-color: $brand-primary; - } - .wizard-step-text { - color: $brand-primary; - } - } - .wizard-step-visited { - .wizard-step-number { - color: #FFFFFF; - border-color: $brand-success; - background-color: $brand-success; - } - .wizard-step-text { - } - } -} - -.wizardprogress { - display: flex; - justify-content: space-between; - - .wizard-step-text { - width: 100%; - } - - .wizard-step { - position: relative; - width: 100%; - height: $wizard-step-height; - margin-left: 0 - ($wizard-step-height / 2); - padding-left: ($wizard-step-height / 2); - border: 1px solid $border-color-default; - background: #FFFFFF; - - a { - display: block; - overflow: hidden; - width: 100%; - height: 100%; - padding: 14px; - white-space: nowrap; - text-decoration: none; - text-overflow: ellipsis; - color: $font-color-default; - } - &::before, - &::after { - position: absolute; - z-index: 1; - left: 100%; - margin-left: 0 - ($wizard-step-height / 2); - content: " "; - border-style: solid; - border-color: transparent; - } - &::after { - top: 1px; - border-width: (($wizard-step-height / 2) - 1); - border-left-color: #FFFFFF; - } - &::before { - top: 0; - border-width: $wizard-step-height / 2; - border-left-color: $border-color-default; - } - - &:first-child { - margin-left: 0; - padding-left: 0; - border-radius: 5px 0 0 5px; - } - - &:last-child { - border-radius: 0 5px 5px 0; - &::before, - &::after { - display: none; - } - } - } - // States - .wizard-step-active { - background: $brand-primary; - a { - text-decoration: none; - color: #FFFFFF; - } - &::after { - border-left-color: $brand-primary; - } - } - .wizard-step-visited { - a { - color: $link-color; - } - } -} diff --git a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas-phone.scss b/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas-phone.scss deleted file mode 100644 index f9d6e9d..0000000 --- a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas-phone.scss +++ /dev/null @@ -1,16 +0,0 @@ -/* ========================================================================== - Atlas layout - - Extra styling for phone layouts -========================================================================== */ -.layout-atlas-phone { - .region-topbar { - min-height: $m-header-height; - border-style: none; - background-color: $m-header-bg; - - &::before { - display: none; - } - } -} diff --git a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas-responsive.scss b/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas-responsive.scss deleted file mode 100644 index cc0f4c7..0000000 --- a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas-responsive.scss +++ /dev/null @@ -1,154 +0,0 @@ -/* ========================================================================== - Atlas layout - - Extra styling for responsive layouts -========================================================================== */ -.layout-atlas-responsive-default { - $sidebar-width: 60px; - - @media (min-width: $screen-md) { - .mx-scrollcontainer:not(.mx-scrollcontainer-open) > .region-sidebar { - width: $sidebar-width !important; - - .mx-scrollcontainer-wrapper > .mx-navigationtree ul li { - &.mx-navigationtree-has-items:hover { - a { - background-color: $navsidebar-sub-bg; - } - - ul { - position: absolute; - z-index: 100; - top: 0; - bottom: 0; - left: $sidebar-width; - display: block; - overflow-y: auto; - min-width: 200px; - padding-top: 10px; - } - } - - &.mx-navigationtree-collapsed, - &.mx-navigationtree-has-items { - ul { - display: none; - } - } - } - } - } - - - .mx-scrollcontainer-slide { - - &.mx-scrollcontainer-open > .region-sidebar { - width: $sidebar-width !important; - } - } - - // Push aside for mobile - @media (max-width: $screen-sm-max) { - .mx-scrollcontainer-open:not(.mx-scrollcontainer-slide) { - width: 1100px; - } - - .mx-scrollcontainer-slide .toggle-btn { - display: inline-block !important; - } - } - - // Sidebar - .region-sidebar { - .toggle-btn { - width: $sidebar-width; - height: 60px; - border-color: transparent; - border-radius: 0; - background: transparent; - } - - .mx-scrollcontainer-wrapper > .mx-navigationtree { - .navbar-inner > ul > li { - & > a { - height: $sidebar-width; - // Glyph icon - .glyphicon { - display: flex; - align-items: center; - justify-content: center; - width: 40px; - height: 40px; - margin-left: -5px; - padding: 10px; - border-radius: 3px; - } - - &.active { - .glyphicon { - background: $brand-primary; - } - } - } - } - } - } - - // Topbar - .region-topbar { - } -} - -// Topbar variant -.layout-atlas-responsive-topbar { - .mx-scrollcontainer-slide, - .mx-scrollcontainer-push { - &:not(.mx-scrollcontainer-open) > .region-sidebar { - visibility: hidden; - } - } -} - -// All responsive layouts -.layout-atlas-responsive-default, -.layout-atlas-responsive-topbar { - // Topbar - .region-topbar { - .toggle-btn { - display: none; - - @media (max-width: $screen-sm-max) { - display: inline-block; - } - } - } - - .mx-scrollcontainer-slide { - &:not(.mx-scrollcontainer-open) > .region-sidebar { - overflow: hidden; - } - - &.mx-scrollcontainer-open > .region-sidebar { - - & > .mx-scrollcontainer-wrapper { - position: relative; - } - } - - .region-sidebar > .mx-scrollcontainer-wrapper { - z-index: 2; - background-color: inherit; - } - } -} - -// Fix Safari issue of sidebar disappearing -.profile-tablet { - .mx-scrollcontainer:not(.mx-scrollcontainer-open) > .region-sidebar { - overflow-y: hidden; - - .mx-scrollcontainer-wrapper { - overflow: visible; - } - } -} diff --git a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas-tablet.scss b/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas-tablet.scss deleted file mode 100644 index dfa318e..0000000 --- a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas-tablet.scss +++ /dev/null @@ -1,8 +0,0 @@ -/* ========================================================================== - Atlas layout - - Extra styling for tablet layouts -========================================================================== */ -.layout-atlas-tablet { - // tablet -} diff --git a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas.scss b/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas.scss deleted file mode 100644 index 150f73d..0000000 --- a/theme_old/styles/web/sass/ui_resources/atlas_ui_resources/layouts/_layout-atlas.scss +++ /dev/null @@ -1,111 +0,0 @@ -/* ========================================================================== - Atlas layout - - The core stucture of all atlas layouts -========================================================================== */ -.layout-atlas { - // Toggle button - .toggle-btn > .glyphicon { - margin: 0; - } - - // Sidebar - .region-sidebar { - background-color: $navsidebar-bg; - - .mx-navigationtree .navbar-inner > ul > li > a { - padding: 0 15px; - - .glyphicon { - margin-right: 10px; - } - } - .toggle-btn { - border-color: transparent; - border-radius: 0; - background: transparent; - } - } - - // Topbar - .region-topbar { - position: relative; - z-index: 1; // Show dropshadow - min-height: $topbar-minimalheight; - border-bottom: 1px solid $navtopbar-border-color; - background-color: $navtopbar-bg; - box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14); - - &::before { - z-index: 1; - display: block; - width: 100%; - height: 4px; - content: ""; - background-color: $brand-primary; - } - // Topbar Content - .topbar-content { - display: flex; - align-items: center; - min-height: $topbar-minimalheight; - } - - // Toggle btn - .toggle-btn { - margin-right: 15px; - padding: 5px; - } - - // For your company, product, or project name - .navbar-brand { - display: inline-block; - // reset bootstrap - float: none; - height: auto; - padding: 0; - line-height: inherit; - - img { - display: inline-block; - @if $brand-logo !=false { - width: 0; - height: 0; - padding: ($brand-logo-height / 2) ($brand-logo-width / 2); - background-image: url($brand-logo); - background-repeat: no-repeat; - background-position: left center; - background-size: $brand-logo-width; - } @else { - width: auto; - height: $brand-logo-height; - } - } - - a { - margin-left: 5px; - color: $navbar-brand-name; - font-size: 20px; - - &:hover, - &:focus { - text-decoration: none; - } - } - } - - .mx-navbar { - display: inline-block; - margin-left: $gutter-size; - vertical-align: middle; - background: transparent; - - & > .mx-navbar-item { - & > a { - margin-top: 5px; - padding: 0 20px; - } - } - } - } -} diff --git a/theme_old/tsconfig.json b/theme_old/tsconfig.json deleted file mode 100644 index d4829e8..0000000 --- a/theme_old/tsconfig.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": "./", - "module": "es2015", - "target": "esnext", - "typeRoots": [ - "./node_modules/@types" - ], - "types": [ - "react-native", - "react-native-device-info" - ], - "paths": { - "react-native": [ - "./node_modules/@types/react-native" - ], - "react-native-device-info": [ - "./node_modules/react-native-device-info/lib/typescript" - ] - }, - "lib": [ - "es2017" - ], - "noEmitOnError": true, - "sourceMap": false, - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "removeComments": false, - "allowJs": true, - "checkJs": true, - "declaration": false, - "noLib": false, - "watch": false, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true, - "strict": true, - "strictFunctionTypes": false, - "skipLibCheck": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "moduleResolution": "node", - "outDir": "./styles/native/js", - "newLine": "CRLF" - }, - "include": [ - "./styles/native/**/*.ts" - ] -} diff --git a/themesource/administration/native/design-properties.json b/themesource/administration/native/design-properties.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/administration/native/design-properties.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/administration/native/main.js b/themesource/administration/native/main.js new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/themesource/administration/native/main.js @@ -0,0 +1 @@ + diff --git a/themesource/administration/web/design-properties.json b/themesource/administration/web/design-properties.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/administration/web/design-properties.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/administration/web/main.scss b/themesource/administration/web/main.scss new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/themesource/administration/web/main.scss @@ -0,0 +1 @@ + diff --git a/themesource/atlas_core/.version b/themesource/atlas_core/.version new file mode 100644 index 0000000..a5c4c76 --- /dev/null +++ b/themesource/atlas_core/.version @@ -0,0 +1 @@ +3.9.0 diff --git a/themesource/atlas_core/native/api.js b/themesource/atlas_core/native/api.js new file mode 100644 index 0000000..f40d0cd --- /dev/null +++ b/themesource/atlas_core/native/api.js @@ -0,0 +1,3 @@ +import adjustFont from "./core/helpers/_functions/adjustfont"; +import { anyColorToRgbString, setColorBasedOnBackground, setContrastScale } from "./core/helpers/_functions/convertcolors"; +export { adjustFont, anyColorToRgbString, setColorBasedOnBackground, setContrastScale }; diff --git a/themesource/atlas_core/native/core/base/flex.js b/themesource/atlas_core/native/core/base/flex.js new file mode 100644 index 0000000..1a0ece0 --- /dev/null +++ b/themesource/atlas_core/native/core/base/flex.js @@ -0,0 +1,203 @@ +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +*/ +// == Flex layout +export const flexMain = { + container: { + // flex 1 will take all available space not taken by flexItems. + flex: 1 + } +}; +export const flexItem = { + container: { + // When flex is -1, the component is normally sized according width and height. + // However, if there's not enough space, the component will shrink to its minWidth and minHeight + flex: -1 + } +}; +export const flexRow = { + container: { + flexDirection: "row" + } +}; +export const flexColumn = { + container: { + flexDirection: "column" + } +}; +export const flexRowReverse = { + container: { + flexDirection: "row-reverse" + } +}; +export const flexColumnReverse = { + container: { + flexDirection: "column-reverse" + } +}; +export const flexWrap = { + container: { + // flexWrap controls whether children can wrap around after they hit the end of a flex container. + flexWrap: "wrap" + } +}; +export const justifyContentStart = { + container: { + // justifyContent aligns children in the main direction. + // For example, if children are flowing vertically, justifyContent controls how they align vertically. + justifyContent: "flex-start" + } +}; +export const justifyContentCenter = { + container: { + // justifyContent aligns children in the main direction. + // For example, if children are flowing vertically, justifyContent controls how they align vertically. + justifyContent: "center" + } +}; +export const justifyContentEnd = { + container: { + // justifyContent aligns children in the main direction. + // For example, if children are flowing vertically, justifyContent controls how they align vertically. + justifyContent: "flex-end" + } +}; +export const justifyContentSpaceBetween = { + container: { + // justifyContent aligns children in the main direction. + // For example, if children are flowing vertically, justifyContent controls how they align vertically. + justifyContent: "space-between" + } +}; +export const justifyContentSpaceAround = { + container: { + // justifyContent aligns children in the main direction. + // For example, if children are flowing vertically, justifyContent controls how they align vertically. + justifyContent: "space-around" + } +}; +export const justifyContentSpaceEvenly = { + container: { + // justifyContent aligns children in the main direction. + // For example, if children are flowing vertically, justifyContent controls how they align vertically. + justifyContent: "space-evenly" + } +}; +export const alignChildrenStart = { + container: { + // alignItems aligns children in the cross direction. + // For example, if children are flowing vertically, alignItems controls how they align horizontally. + alignItems: "flex-start" + } +}; +export const alignChildrenCenter = { + container: { + // alignItems aligns children in the cross direction. + // For example, if children are flowing vertically, alignItems controls how they align horizontally. + alignItems: "center" + } +}; +export const alignChildrenEnd = { + container: { + // alignItems aligns children in the cross direction. + // For example, if children are flowing vertically, alignItems controls how they align horizontally. + alignItems: "flex-end" + } +}; +export const alignChildrenStretch = { + container: { + // alignItems aligns children in the cross direction. + // For example, if children are flowing vertically, alignItems controls how they align horizontally. + alignItems: "stretch" + } +}; +export const alignChildrenBaseline = { + container: { + // alignContent aligns children in the cross direction. + // For example, if children are flowing vertically, alignContent controls how they align horizontally. + alignItems: "baseline" + } +}; +export const childrenCenter = { + container: { + ...justifyContentCenter.container, + ...alignChildrenCenter.container + } +}; +export const alignContentStart = { + container: { + // alignContent aligns rows of children in the cross direction. + // For example, if children are flowing vertically, alignContent controls how they align horizontally. + alignContent: "flex-start" + } +}; +export const alignContentCenter = { + container: { + // alignContent aligns rows of children in the cross direction. + // For example, if children are flowing vertically, alignContent controls how they align horizontally. + alignContent: "center" + } +}; +export const alignContentEnd = { + container: { + // alignContent aligns rows of children in the cross direction. + // For example, if children are flowing vertically, alignContent controls how they align horizontally. + alignContent: "flex-end" + } +}; +export const alignContentStretch = { + container: { + // alignContent aligns rows of children in the cross direction. + // For example, if children are flowing vertically, alignContent controls how they align horizontally. + alignContent: "stretch" + } +}; +export const alignContentSpaceAround = { + container: { + // alignContent aligns rows of children in the cross direction. + // For example, if children are flowing vertically, alignContent controls how they align horizontally. + alignContent: "space-around" + } +}; +export const alignContentSpaceBetween = { + container: { + // alignContent aligns rows of children in the cross direction. + // For example, if children are flowing vertically, alignContent controls how they align horizontally. + alignContent: "space-between" + } +}; +export const alignSelfStart = { + container: { + // controls how a child aligns in the cross direction, overriding the alignItems of the parent. + alignSelf: "flex-start" + } +}; +export const alignSelfCenter = { + container: { + // controls how a child aligns in the cross direction, overriding the alignItems of the parent. + alignSelf: "center" + } +}; +export const alignSelfEnd = { + container: { + // controls how a child aligns in the cross direction, overriding the alignItems of the parent. + alignSelf: "flex-end" + } +}; +export const alignSelfStretch = { + container: { + // controls how a child aligns in the cross direction, overriding the alignItems of the parent. + alignSelf: "stretch" + } +}; +export const alignSelfBaseline = { + container: { + // controls how a child aligns in the cross direction, overriding the alignItems of the parent. + alignSelf: "baseline" + } +}; diff --git a/themesource/atlas_core/native/core/base/spacing.js b/themesource/atlas_core/native/core/base/spacing.js new file mode 100644 index 0000000..de7138c --- /dev/null +++ b/themesource/atlas_core/native/core/base/spacing.js @@ -0,0 +1,503 @@ +import { spacing } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +*/ +// == Inner Spacing +export const spacingInnerSmallest = { + container: { + padding: spacing.smallest + } +}; +export const spacingInnerVerticalSmallest = { + container: { + paddingVertical: spacing.smallest + } +}; +export const spacingInnerHorizontalSmallest = { + container: { + paddingHorizontal: spacing.smallest + } +}; +export const spacingInnerTopSmallest = { + container: { + paddingTop: spacing.smallest + } +}; +export const spacingInnerRightSmallest = { + container: { + paddingRight: spacing.smallest + } +}; +export const spacingInnerLeftSmallest = { + container: { + paddingLeft: spacing.smallest + } +}; +export const spacingInnerBottomSmallest = { + container: { + paddingBottom: spacing.smallest + } +}; +export const spacingInnerSmaller = { + container: { + padding: spacing.smaller + } +}; +export const spacingInnerVerticalSmaller = { + container: { + paddingVertical: spacing.smaller + } +}; +export const spacingInnerHorizontalSmaller = { + container: { + paddingHorizontal: spacing.smaller + } +}; +export const spacingInnerTopSmaller = { + container: { + paddingTop: spacing.smaller + } +}; +export const spacingInnerRightSmaller = { + container: { + paddingRight: spacing.smaller + } +}; +export const spacingInnerLeftSmaller = { + container: { + paddingLeft: spacing.smaller + } +}; +export const spacingInnerBottomSmaller = { + container: { + paddingBottom: spacing.smaller + } +}; +export const spacingInnerSmall = { + container: { + padding: spacing.small + } +}; +export const spacingInnerVerticalSmall = { + container: { + paddingVertical: spacing.small + } +}; +export const spacingInnerHorizontalSmall = { + container: { + paddingHorizontal: spacing.small + } +}; +export const spacingInnerTopSmall = { + container: { + paddingTop: spacing.small + } +}; +export const spacingInnerRightSmall = { + container: { + paddingRight: spacing.small + } +}; +export const spacingInnerLeftSmall = { + container: { + paddingLeft: spacing.small + } +}; +export const spacingInnerBottomSmall = { + container: { + paddingBottom: spacing.small + } +}; +export const spacingInnerMedium = { + container: { + padding: spacing.regular + } +}; +export const spacingInnerVerticalMedium = { + container: { + paddingVertical: spacing.regular + } +}; +export const spacingInnerHorizontalMedium = { + container: { + paddingHorizontal: spacing.regular + } +}; +export const spacingInnerTopMedium = { + container: { + paddingTop: spacing.regular + } +}; +export const spacingInnerRightMedium = { + container: { + paddingRight: spacing.regular + } +}; +export const spacingInnerLeftMedium = { + container: { + paddingLeft: spacing.regular + } +}; +export const spacingInnerBottomMedium = { + container: { + paddingBottom: spacing.regular + } +}; +export const spacingInnerLarge = { + container: { + padding: spacing.large + } +}; +export const spacingInnerVerticalLarge = { + container: { + paddingVertical: spacing.large + } +}; +export const spacingInnerHorizontalLarge = { + container: { + paddingHorizontal: spacing.large + } +}; +export const spacingInnerTopLarge = { + container: { + paddingTop: spacing.large + } +}; +export const spacingInnerRightLarge = { + container: { + paddingRight: spacing.large + } +}; +export const spacingInnerLeftLarge = { + container: { + paddingLeft: spacing.large + } +}; +export const spacingInnerBottomLarge = { + container: { + paddingBottom: spacing.large + } +}; +export const spacingInnerLarger = { + container: { + padding: spacing.larger + } +}; +export const spacingInnerVerticalLarger = { + container: { + paddingVertical: spacing.larger + } +}; +export const spacingInnerHorizontalLarger = { + container: { + paddingHorizontal: spacing.larger + } +}; +export const spacingInnerTopLarger = { + container: { + paddingTop: spacing.larger + } +}; +export const spacingInnerRightLarger = { + container: { + paddingRight: spacing.larger + } +}; +export const spacingInnerLeftLarger = { + container: { + paddingLeft: spacing.larger + } +}; +export const spacingInnerBottomLarger = { + container: { + paddingBottom: spacing.larger + } +}; +export const spacingInnerLargest = { + container: { + padding: spacing.largest + } +}; +export const spacingInnerVerticalLargest = { + container: { + paddingVertical: spacing.largest + } +}; +export const spacingInnerHorizontalLargest = { + container: { + paddingHorizontal: spacing.largest + } +}; +export const spacingInnerTopLargest = { + container: { + paddingTop: spacing.largest + } +}; +export const spacingInnerRightLargest = { + container: { + paddingRight: spacing.largest + } +}; +export const spacingInnerLeftLargest = { + container: { + paddingLeft: spacing.largest + } +}; +export const spacingInnerBottomLargest = { + container: { + paddingBottom: spacing.largest + } +}; +// +// +// == Outer Spacing +export const spacingOuterSmallest = { + container: { + margin: spacing.smallest + } +}; +export const spacingOuterVerticalSmallest = { + container: { + marginVertical: spacing.smallest + } +}; +export const spacingOuterHorizontalSmallest = { + container: { + marginHorizontal: spacing.smallest + } +}; +export const spacingOuterTopSmallest = { + container: { + marginTop: spacing.smallest + } +}; +export const spacingOuterRightSmallest = { + container: { + marginRight: spacing.smallest + } +}; +export const spacingOuterLeftSmallest = { + container: { + marginLeft: spacing.smallest + } +}; +export const spacingOuterBottomSmallest = { + container: { + marginBottom: spacing.smallest + } +}; +export const spacingOuterSmaller = { + container: { + margin: spacing.smaller + } +}; +export const spacingOuterVerticalSmaller = { + container: { + marginVertical: spacing.smaller + } +}; +export const spacingOuterHorizontalSmaller = { + container: { + marginHorizontal: spacing.smaller + } +}; +export const spacingOuterTopSmaller = { + container: { + marginTop: spacing.smaller + } +}; +export const spacingOuterRightSmaller = { + container: { + marginRight: spacing.smaller + } +}; +export const spacingOuterLeftSmaller = { + container: { + marginLeft: spacing.smaller + } +}; +export const spacingOuterBottomSmaller = { + container: { + marginBottom: spacing.smaller + } +}; +export const spacingOuterSmall = { + container: { + margin: spacing.small + } +}; +export const spacingOuterVerticalSmall = { + container: { + marginVertical: spacing.small + } +}; +export const spacingOuterHorizontalSmall = { + container: { + marginHorizontal: spacing.small + } +}; +export const spacingOuterTopSmall = { + container: { + marginTop: spacing.small + } +}; +export const spacingOuterRightSmall = { + container: { + marginRight: spacing.small + } +}; +export const spacingOuterLeftSmall = { + container: { + marginLeft: spacing.small + } +}; +export const spacingOuterBottomSmall = { + container: { + marginBottom: spacing.small + } +}; +export const spacingOuterMedium = { + container: { + margin: spacing.regular + } +}; +export const spacingOuterVerticalMedium = { + container: { + marginVertical: spacing.regular + } +}; +export const spacingOuterHorizontalMedium = { + container: { + marginHorizontal: spacing.regular + } +}; +export const spacingOuterTopMedium = { + container: { + marginTop: spacing.regular + } +}; +export const spacingOuterRightMedium = { + container: { + marginRight: spacing.regular + } +}; +export const spacingOuterLeftMedium = { + container: { + marginLeft: spacing.regular + } +}; +export const spacingOuterBottomMedium = { + container: { + marginBottom: spacing.regular + } +}; +export const spacingOuterLarge = { + container: { + margin: spacing.large + } +}; +export const spacingOuterVerticalLarge = { + container: { + marginVertical: spacing.large + } +}; +export const spacingOuterHorizontalLarge = { + container: { + marginHorizontal: spacing.large + } +}; +export const spacingOuterTopLarge = { + container: { + marginTop: spacing.large + } +}; +export const spacingOuterRightLarge = { + container: { + marginRight: spacing.large + } +}; +export const spacingOuterLeftLarge = { + container: { + marginLeft: spacing.large + } +}; +export const spacingOuterBottomLarge = { + container: { + marginBottom: spacing.large + } +}; +export const spacingOuterLarger = { + container: { + margin: spacing.larger + } +}; +export const spacingOuterVerticalLarger = { + container: { + marginVertical: spacing.larger + } +}; +export const spacingOuterHorizontalLarger = { + container: { + marginHorizontal: spacing.larger + } +}; +export const spacingOuterTopLarger = { + container: { + marginTop: spacing.larger + } +}; +export const spacingOuterRightLarger = { + container: { + marginRight: spacing.larger + } +}; +export const spacingOuterLeftLarger = { + container: { + marginLeft: spacing.larger + } +}; +export const spacingOuterBottomLarger = { + container: { + marginBottom: spacing.larger + } +}; +export const spacingOuterLargest = { + container: { + margin: spacing.largest + } +}; +export const spacingOuterVerticalLargest = { + container: { + marginVertical: spacing.largest + } +}; +export const spacingOuterHorizontalLargest = { + container: { + marginHorizontal: spacing.largest + } +}; +export const spacingOuterTopLargest = { + container: { + marginTop: spacing.largest + } +}; +export const spacingOuterRightLargest = { + container: { + marginRight: spacing.largest + } +}; +export const spacingOuterLeftLargest = { + container: { + marginLeft: spacing.largest + } +}; +export const spacingOuterBottomLargest = { + container: { + marginBottom: spacing.largest + } +}; diff --git a/themesource/atlas_core/native/core/helpers/_functions/adjustfont.js b/themesource/atlas_core/native/core/helpers/_functions/adjustfont.js new file mode 100644 index 0000000..41fb606 --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/_functions/adjustfont.js @@ -0,0 +1,68 @@ +import { Dimensions, PixelRatio } from "react-native"; +const { height, width } = Dimensions.get("window"); +const pixelRatio = PixelRatio.get(); +/** + * + * Adjust the font size based on the screen size + * + * @param {number} size Font size + * + * @return {number} Returns adjusted font size + */ +function adjustFont(size) { + if (pixelRatio === 2) { + // iphone 5s and older Androids + if (width < 360) { + return size * 0.95; + } + // iphone 5 + if (height < 667) { + return size; + } + // iphone 6-6s + else if (height >= 667 && height <= 735) { + return size * 1.15; + } + // older phablets + return size * 1.25; + } + if (pixelRatio === 3) { + // catch Android font scaling on small machines + // where pixel ratio / font scale ratio => 3:3 + if (width <= 360) { + return size; + } + // Catch other weird android width sizings + if (height < 667) { + return size * 1.15; + } + // catch in-between size Androids and scale font up + if (height >= 667 && height <= 735) { + return size * 1.2; + } + // catch larger devices + // ie iphone 6s plus / 7 plus / mi note + return size * 1.27; + } + if (pixelRatio === 3.5) { + // catch Android font scaling on small machines + // where pixel ratio / font scale ratio => 3:3 + if (width <= 360) { + return size; + } + // Catch other smaller android height sizings + if (height < 667) { + return size * 1.2; + } + // catch in-between size Androids and scale font up + if (height >= 667 && height <= 735) { + return size * 1.25; + } + // catch larger phablet devices + return size * 1.4; + } + // if older device ie pixelRatio !== 2 || 3 || 3.5 + return size; +} +// +export { adjustFont as default, height, width }; diff --git a/themesource/atlas_core/native/core/helpers/_functions/colorwords.js b/themesource/atlas_core/native/core/helpers/_functions/colorwords.js new file mode 100644 index 0000000..00e6f4c --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/_functions/colorwords.js @@ -0,0 +1,153 @@ +// +const colors = { + aliceblue: { r: 240, g: 248, b: 255 }, + antiquewhite: { r: 250, g: 235, b: 215 }, + aqua: { r: 0, g: 255, b: 255 }, + aquamarine: { r: 127, g: 255, b: 212 }, + azure: { r: 240, g: 255, b: 255 }, + beige: { r: 245, g: 245, b: 220 }, + bisque: { r: 255, g: 228, b: 196 }, + black: { r: 0, g: 0, b: 0 }, + blanchedalmond: { r: 255, g: 235, b: 205 }, + blue: { r: 0, g: 0, b: 255 }, + blueviolet: { r: 138, g: 43, b: 226 }, + brown: { r: 165, g: 42, b: 42 }, + burlywood: { r: 222, g: 184, b: 135 }, + cadetblue: { r: 95, g: 158, b: 160 }, + chartreuse: { r: 127, g: 255, b: 0 }, + chocolate: { r: 210, g: 105, b: 30 }, + coral: { r: 255, g: 127, b: 80 }, + cornflowerblue: { r: 100, g: 149, b: 237 }, + cornsilk: { r: 255, g: 248, b: 220 }, + crimson: { r: 220, g: 20, b: 60 }, + cyan: { r: 0, g: 255, b: 255 }, + darkblue: { r: 0, g: 0, b: 139 }, + darkcyan: { r: 0, g: 139, b: 139 }, + darkgoldenrod: { r: 184, g: 134, b: 11 }, + darkgray: { r: 169, g: 169, b: 169 }, + darkgreen: { r: 0, g: 100, b: 0 }, + darkgrey: { r: 169, g: 169, b: 169 }, + darkkhaki: { r: 189, g: 183, b: 107 }, + darkmagenta: { r: 139, g: 0, b: 139 }, + darkolivegreen: { r: 85, g: 107, b: 47 }, + darkorange: { r: 255, g: 140, b: 0 }, + darkorchid: { r: 153, g: 50, b: 204 }, + darkred: { r: 139, g: 0, b: 0 }, + darksalmon: { r: 233, g: 150, b: 122 }, + darkseagreen: { r: 143, g: 188, b: 143 }, + darkslateblue: { r: 72, g: 61, b: 139 }, + darkslategray: { r: 47, g: 79, b: 79 }, + darkslategrey: { r: 47, g: 79, b: 79 }, + darkturquoise: { r: 0, g: 206, b: 209 }, + darkviolet: { r: 148, g: 0, b: 211 }, + deeppink: { r: 255, g: 20, b: 147 }, + deepskyblue: { r: 0, g: 191, b: 255 }, + dimgray: { r: 105, g: 105, b: 105 }, + dimgrey: { r: 105, g: 105, b: 105 }, + dodgerblue: { r: 30, g: 144, b: 255 }, + firebrick: { r: 178, g: 34, b: 34 }, + floralwhite: { r: 255, g: 250, b: 240 }, + forestgreen: { r: 34, g: 139, b: 34 }, + fuchsia: { r: 255, g: 0, b: 255 }, + gainsboro: { r: 220, g: 220, b: 220 }, + ghostwhite: { r: 248, g: 248, b: 255 }, + gold: { r: 255, g: 215, b: 0 }, + goldenrod: { r: 218, g: 165, b: 32 }, + gray: { r: 128, g: 128, b: 128 }, + green: { r: 0, g: 128, b: 0 }, + greenyellow: { r: 173, g: 255, b: 47 }, + grey: { r: 128, g: 128, b: 128 }, + honeydew: { r: 240, g: 255, b: 240 }, + hotpink: { r: 255, g: 105, b: 180 }, + indianred: { r: 205, g: 92, b: 92 }, + indigo: { r: 75, g: 0, b: 130 }, + ivory: { r: 255, g: 255, b: 240 }, + khaki: { r: 240, g: 230, b: 140 }, + lavender: { r: 230, g: 230, b: 250 }, + lavenderblush: { r: 255, g: 240, b: 245 }, + lawngreen: { r: 124, g: 252, b: 0 }, + lemonchiffon: { r: 255, g: 250, b: 205 }, + lightblue: { r: 173, g: 216, b: 230 }, + lightcoral: { r: 240, g: 128, b: 128 }, + lightcyan: { r: 224, g: 255, b: 255 }, + lightgoldenrodyellow: { r: 250, g: 250, b: 210 }, + lightgray: { r: 211, g: 211, b: 211 }, + lightgreen: { r: 144, g: 238, b: 144 }, + lightgrey: { r: 211, g: 211, b: 211 }, + lightpink: { r: 255, g: 182, b: 193 }, + lightsalmon: { r: 255, g: 160, b: 122 }, + lightseagreen: { r: 32, g: 178, b: 170 }, + lightskyblue: { r: 135, g: 206, b: 250 }, + lightslategray: { r: 119, g: 136, b: 153 }, + lightslategrey: { r: 119, g: 136, b: 153 }, + lightsteelblue: { r: 176, g: 196, b: 222 }, + lightyellow: { r: 255, g: 255, b: 224 }, + lime: { r: 0, g: 255, b: 0 }, + limegreen: { r: 50, g: 205, b: 50 }, + linen: { r: 250, g: 240, b: 230 }, + magenta: { r: 255, g: 0, b: 255 }, + maroon: { r: 128, g: 0, b: 0 }, + mediumaquamarine: { r: 102, g: 205, b: 170 }, + mediumblue: { r: 0, g: 0, b: 205 }, + mediumorchid: { r: 186, g: 85, b: 211 }, + mediumpurple: { r: 147, g: 112, b: 219 }, + mediumseagreen: { r: 60, g: 179, b: 113 }, + mediumslateblue: { r: 123, g: 104, b: 238 }, + mediumspringgreen: { r: 0, g: 250, b: 154 }, + mediumturquoise: { r: 72, g: 209, b: 204 }, + mediumvioletred: { r: 199, g: 21, b: 133 }, + midnightblue: { r: 25, g: 25, b: 112 }, + mintcream: { r: 245, g: 255, b: 250 }, + mistyrose: { r: 255, g: 228, b: 225 }, + moccasin: { r: 255, g: 228, b: 181 }, + navajowhite: { r: 255, g: 222, b: 173 }, + navy: { r: 0, g: 0, b: 128 }, + oldlace: { r: 253, g: 245, b: 230 }, + olive: { r: 128, g: 128, b: 0 }, + olivedrab: { r: 107, g: 142, b: 35 }, + orange: { r: 255, g: 165, b: 0 }, + orangered: { r: 255, g: 69, b: 0 }, + orchid: { r: 218, g: 112, b: 214 }, + palegoldenrod: { r: 238, g: 232, b: 170 }, + palegreen: { r: 152, g: 251, b: 152 }, + paleturquoise: { r: 175, g: 238, b: 238 }, + palevioletred: { r: 219, g: 112, b: 147 }, + papayawhip: { r: 255, g: 239, b: 213 }, + peachpuff: { r: 255, g: 218, b: 185 }, + peru: { r: 205, g: 133, b: 63 }, + pink: { r: 255, g: 192, b: 203 }, + plum: { r: 221, g: 160, b: 221 }, + powderblue: { r: 176, g: 224, b: 230 }, + purple: { r: 128, g: 0, b: 128 }, + rebeccapurple: { r: 102, g: 51, b: 153 }, + red: { r: 255, g: 0, b: 0 }, + rosybrown: { r: 188, g: 143, b: 143 }, + royalblue: { r: 65, g: 105, b: 225 }, + saddlebrown: { r: 139, g: 69, b: 19 }, + salmon: { r: 250, g: 128, b: 114 }, + sandybrown: { r: 244, g: 164, b: 96 }, + seagreen: { r: 46, g: 139, b: 87 }, + seashell: { r: 255, g: 245, b: 238 }, + sienna: { r: 160, g: 82, b: 45 }, + silver: { r: 192, g: 192, b: 192 }, + skyblue: { r: 135, g: 206, b: 235 }, + slateblue: { r: 106, g: 90, b: 205 }, + slategray: { r: 112, g: 128, b: 144 }, + slategrey: { r: 112, g: 128, b: 144 }, + snow: { r: 255, g: 250, b: 250 }, + springgreen: { r: 0, g: 255, b: 127 }, + steelblue: { r: 70, g: 130, b: 180 }, + tan: { r: 210, g: 180, b: 140 }, + teal: { r: 0, g: 128, b: 128 }, + thistle: { r: 216, g: 191, b: 216 }, + tomato: { r: 255, g: 99, b: 71 }, + turquoise: { r: 64, g: 224, b: 208 }, + violet: { r: 238, g: 130, b: 238 }, + wheat: { r: 245, g: 222, b: 179 }, + white: { r: 255, g: 255, b: 255 }, + whitesmoke: { r: 245, g: 245, b: 245 }, + yellow: { r: 255, g: 255, b: 0 }, + yellowgreen: { r: 154, g: 205, b: 50 } +}; +// +export default colors; diff --git a/themesource/atlas_core/native/core/helpers/_functions/convertcolors.js b/themesource/atlas_core/native/core/helpers/_functions/convertcolors.js new file mode 100644 index 0000000..8d1ff99 --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/_functions/convertcolors.js @@ -0,0 +1,259 @@ +import colors from "./colorwords"; +/** + * + * Converts RGB color to HEX + * + * @param {number || string} r Accepts RGB as string || Accepts R as string or number + * @param {number || string} g Accepts G as string or number + * @param {number || string} b Accepts B as string or number + * + * @return {string} Returns HEX color + */ +function RgbToHex(r, g, b) { + if (typeof r === "string" && !g && !b) { + const color = r.replace(/rgb[(]|[)]/gm, ""); + [r, g, b] = color.split(","); + } + // eslint-disable-next-line no-bitwise + return "#" + ((1 << 24) + (Number(r) << 16) + (Number(g) << 8) + Number(b)).toString(16).slice(1); +} +/** + * + * Converts HEX or HEX Alpha to RGB + * + * @param {string} hex Accepts HEX color + * + * @return {object} Returns RGB color; {r,g,b} + */ +function hexToRgb(hex) { + hex = hex.substring(1); + hex = hex.length === 3 || hex.length === 4 ? [...hex].map(x => x + x).join("") : hex; + return rgbaToRgb({ + r: parseInt("0x" + hex[0] + hex[1], 16), + g: parseInt("0x" + hex[2] + hex[3], 16), + b: parseInt("0x" + hex[4] + hex[5], 16), + a: parseInt("0x" + hex[6] + hex[7], 16) / 255 || 1 + }); +} +/** + * + * Converts any color format to RGB string + * + * @param {string} anyColor Accepts any color format + * + * @return {string} Returns RGB color; `r,g,b` + */ +export function anyColorToRgbString(anyColor) { + const { r, g, b } = checkColor(anyColor); + return [r, g, b].join(","); +} +/** + * + * Converts HSL to RGB color + * + * @param {string} hsl Accepts HSL color + * + * @return {object} Returns RGB color; {r,g,b} + */ +function hslToRgb(hsl) { + const hslArray = hsl + .replace(/hsla?[(]|[%]|[)]/gm, "") + .split(",") + .map(x => x.trim()); + let h = hslArray[0]; + const s = Number(hslArray[1]) / 100; + const l = Number(hslArray[2]) / 100; + const a = 1; + // Strip label and convert to degrees (if necessary) + // eslint-disable-next-line no-bitwise + if (~h.indexOf("deg")) { + h = h.substr(0, h.length - 3); + // eslint-disable-next-line no-bitwise + } + else if (~h.indexOf("rad")) { + h = Math.round(Number(h.substr(0, h.length - 3)) * (180 / Math.PI)); + // eslint-disable-next-line no-bitwise + } + else if (~h.indexOf("turn")) { + h = Math.round(Number(h.substr(0, h.length - 4)) * 360); + } + h = Number(h); + if (h >= 360) { + h %= 360; + } // Keep hue fraction of 360 if h is higher than 360 + let r = 255; + let g = 255; + let b = 255; + const c = (1 - Math.abs(2 * l - 1)) * s; // chroma -> color intensity + const x = c * (1 - Math.abs(((h / 60) % 2) - 1)); // Second largest component (first being chroma) + const m = l - c / 2; // Amount to add to each channel to match lightness + if (0 <= h && h < 60) { + r = c; + g = x; + b = 0; + } + else if (60 <= h && h < 120) { + r = x; + g = c; + b = 0; + } + else if (120 <= h && h < 180) { + r = 0; + g = c; + b = x; + } + else if (180 <= h && h < 240) { + r = 0; + g = x; + b = c; + } + else if (240 <= h && h < 300) { + r = x; + g = 0; + b = c; + } + else if (300 <= h && h < 360) { + r = c; + g = 0; + b = x; + } + return rgbaToRgb({ + r: Math.round((r + m) * 255), + g: Math.round((g + m) * 255), + b: Math.round((b + m) * 255), + a + }); +} +/** + * + * Convert RGB string with HEX or Word inside to RGB object + * + * @param {string} rgb Accepts RGB color as string + * + * @return {object} Returns RGB color; {r,g,b} + */ +function rgbStringToRgb(rgb) { + const color = rgb.replace(/rgb[(]|[)]/gm, ""); + // if RGB has hex color definition + // eslint-disable-next-line no-bitwise + if (~rgb.indexOf("#")) { + return hexToRgb(color); + } + // if RGB has word color definition + else if (!/\d/.test(rgb)) { + return colors[color.toLowerCase()]; + } + // if RGB has RGB color definition + else { + const [r, g, b] = color.split(","); + [r, g, b].forEach(x => x.trim()); + return { r: Number(r), g: Number(g), b: Number(b) }; + } +} +/** + * + * Converts RGB Alpha to RGB object + * + * @param {string} rgba Accepts RGB Alpha color + * + * @return {object} Returns RGB color; {r,g,b} + */ +function rgbaToRgb(rgba) { + let newAlpha = 1; + let RGB = typeof rgba === "object" ? rgba : { r: 255, g: 255, b: 255 }; + const calc = (val) => Math.round(newAlpha * (val / 255) * 255); // Calc best color contrast values + // const calc = val => Math.round((RGB.a * (val / 255) + (RGB.a * ( 0 / 255))) * 255); // Calc best color contrast values + if (typeof rgba === "string") { + const val = rgba.replace(/rgba[(]|[)]/gm, ""); + const color = val.slice(0, val.lastIndexOf(",")).trim(); + const alpha = Number(val.slice(val.lastIndexOf(",") + 1).trim()); + // if RGBA has HEX color definition + if (color[0] === "#") { + RGB = hexToRgb(color); + } + // if RGBA has word color definition + else if (!/\d/.test(color)) { + RGB = colors[color.toLowerCase()]; + } + // if RGBA has RGB color definition + else { + const [r, g, b] = color.split(","); + [r, g, b].forEach(x => Number(x.trim())); + RGB = { r: Number(r), g: Number(g), b: Number(b) }; + } + // RGB.a = alpha; + newAlpha = alpha === 1 ? 1 : Number((1 - alpha).toPrecision(2)); + } + return { r: calc(RGB.r), g: calc(RGB.g), b: calc(RGB.b) }; +} +/** + * + * Check what color format is being used. + * + * @param {string} color Accepts any color format + * + * @return {object} Returns RGB color; {r,g,b} + */ +function checkColor(color) { + if (color in colors) { + return colors[color.toLowerCase()]; + } + else if (color[0] === "#") { + return hexToRgb(color); + // eslint-disable-next-line no-bitwise + } + else if (~color.indexOf("hsl")) { + return hslToRgb(color); + // eslint-disable-next-line no-bitwise + } + else if (~color.indexOf("rgba")) { + return rgbaToRgb(color); + // eslint-disable-next-line no-bitwise + } + else if (~color.indexOf("rgb")) { + return rgbStringToRgb(color); + } + return { r: 255, g: 255, b: 255 }; +} +/** + * + * Set best contrast color based on a (background) color + * + * @param {string} color Accepts any color format + * + * @return {string} Returns RGB Alpha color + */ +export function setColorBasedOnBackground(color) { + const c = checkColor(color); + const RGB = typeof c === "object" ? c : { r: 255, g: 255, b: 255 }; + // https://www.w3.org/TR/AERT/#color-contrast + const o = Math.round((RGB.r * 299 + RGB.g * 587 + RGB.b * 114) / 1000); + return o > 125 ? "rgba(0,0,0,.87)" : "rgba(255,255,255,.87)"; +} +/** + * + * Expects a color and a contrast value between 0 and 1.' + * It will look at the supplied color's brightness and will start the contrast scale either from #000 (black) or #FFF (white). + * This function will work best when you supply a very dark or very bright color. + * It will return a gray color with the desired contrast which is based on the specified color. + * + * @param {string} color Accepts any color format + * @param {number} contrast Accepts a value between 0 and 1 + * + * @return {string} Returns HEX color + */ +export function setContrastScale(contrast, color) { + if (contrast > 1) { + contrast = 1; + } + if (contrast < 0) { + contrast = 0; + } + const max = 256; + const c = checkColor(color); + const { r, g, b } = typeof c === "object" ? c : { r: 255, g: 255, b: 255 }; + // https://www.w3.org/TR/AERT/#color-contrast + const brightness = Math.round((r * 299 + g * 587 + b * 114) / 1000); + const value = Math.round(brightness > max / 2 ? max - max * contrast : max * contrast); + return RgbToHex(value, value, value); +} diff --git a/theme/styles/native/core/helpers/_functions/device.js b/themesource/atlas_core/native/core/helpers/_functions/device.js similarity index 100% rename from theme/styles/native/core/helpers/_functions/device.js rename to themesource/atlas_core/native/core/helpers/_functions/device.js diff --git a/themesource/atlas_core/native/core/helpers/_functions/mergeobjects.js b/themesource/atlas_core/native/core/helpers/_functions/mergeobjects.js new file mode 100644 index 0000000..6385209 --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/_functions/mergeobjects.js @@ -0,0 +1,35 @@ +/** + * Merge 2 objects + * This function will look at every object property of the second object and will override the matching property in the first object + * + * @param {object[]} sources Array of 2 objects + * + * @return {object} Returns merged object + * + */ +export default function (...sources) { + function mergeDeep(target, ...sources) { + function isObject(item) { + return item && typeof item === "object" && !Array.isArray(item); + } + if (!sources.length) { + return target; + } + const source = sources.shift(); + if (isObject(target) && isObject(source)) { + Object.keys(source).forEach(key => { + if (isObject(source[key])) { + if (!target[key]) { + Object.assign(target, { [key]: {} }); + } + mergeDeep(target[key], source[key]); + } + else { + Object.assign(target, { [key]: source[key] || target[key] }); + } + }); + } + return mergeDeep(target, ...sources); + } + return mergeDeep({}, ...sources); +} diff --git a/themesource/atlas_core/native/core/helpers/accordion.js b/themesource/atlas_core/native/core/helpers/accordion.js new file mode 100644 index 0000000..1fbd13d --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/accordion.js @@ -0,0 +1,165 @@ +import { brand, background, fontDefaults, accordion } from "../../variables"; +import merge from "./_functions/mergeobjects"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Accordion + + Default Class For Mendix Accordion Widget +========================================================================== */ +export const accordionPrimary = { + container: {}, + group: { + container: { + borderWidth: 1, + borderColor: brand.primary + }, + header: { + container: { + backgroundColor: brand.primary, + borderColor: brand.primary, + borderBottomWidth: 0 + }, + heading1: { + color: fontDefaults.colorTitleLight + }, + heading2: { + color: fontDefaults.colorTitleLight + }, + heading3: { + color: fontDefaults.colorTitleLight + }, + heading4: { + color: fontDefaults.colorTitleLight + }, + heading5: { + color: fontDefaults.colorTitleLight + }, + heading6: { + color: fontDefaults.colorTitleLight + }, + icon: { + color: fontDefaults.colorTitleLight + } + } + } +}; +export const accordionSecondary = { + container: {}, + group: { + container: { + borderWidth: 1, + borderColor: "#CED0D3" + }, + header: { + container: { + backgroundColor: background.primary, + borderColor: "#CED0D3", + borderBottomWidth: 0 + }, + heading1: { + color: brand.primary + }, + heading2: { + color: brand.primary + }, + heading3: { + color: brand.primary + }, + heading4: { + color: brand.primary + }, + heading5: { + color: brand.primary + }, + heading6: { + color: brand.primary + }, + icon: { + color: brand.primary + } + } + } +}; +export const accordionSuccess = merge(accordionPrimary, { + group: { + container: { + borderColor: brand.success + }, + header: { + container: { + backgroundColor: brand.success, + borderColor: brand.success + } + } + } +}); +export const accordionWarning = merge(accordionPrimary, { + group: { + container: { + borderColor: brand.warning + }, + header: { + container: { + backgroundColor: brand.warning, + borderColor: brand.warning + } + } + } +}); +export const accordionDanger = merge(accordionPrimary, { + group: { + container: { + borderColor: brand.danger + }, + header: { + container: { + backgroundColor: brand.danger, + borderColor: brand.danger + } + } + } +}); +export const accordionLined = { + container: { + borderTopWidth: 1 + }, + group: { + container: { + borderWidth: 0, + borderBottomWidth: 1 + } + } +}; +export const accordionDividerNone = { + container: { + borderWidth: 0, + borderTopWidth: 0 + }, + group: { + container: { + borderWidth: 0, + borderBottomWidth: 0 + } + } +}; +export const accordionCompact = { + group: { + header: { + container: { + paddingVertical: accordion.groupHeader.container.paddingVertical / 2, + paddingHorizontal: accordion.groupHeader.container.paddingHorizontal / 2 + } + }, + content: { + paddingTop: accordion.groupContent.paddingTop / 2, + paddingBottom: accordion.groupContent.paddingBottom / 2, + paddingHorizontal: accordion.groupContent.paddingHorizontal / 2 + } + } +}; diff --git a/themesource/atlas_core/native/core/helpers/activityindicator.js b/themesource/atlas_core/native/core/helpers/activityindicator.js new file mode 100644 index 0000000..c047f47 --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/activityindicator.js @@ -0,0 +1,30 @@ +import { brand } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Activity Indicator + +//== Design Properties +//## Helper classes to change the look and feel of the widget +========================================================================== */ +// Activity indicator Colors +export const activityIndicatorSuccess = { + indicator: { + color: brand.success + } +}; +export const activityIndicatorWarning = { + indicator: { + color: brand.warning + } +}; +export const activityIndicatorDanger = { + indicator: { + color: brand.danger + } +}; diff --git a/themesource/atlas_core/native/core/helpers/backgroundgradient.js b/themesource/atlas_core/native/core/helpers/backgroundgradient.js new file mode 100644 index 0000000..b7b5e4a --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/backgroundgradient.js @@ -0,0 +1,33 @@ +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. +========================================================================== +*/ +// Background Gradient properties +export const backgroundGradient = { + container: {} +}; +export const opacity25 = { + opacity: 25 +}; +export const opacity50 = { + opacity: 50 +}; +export const opacity75 = { + opacity: 75 +}; +export const opacity100 = { + opacity: 100 +}; +export const angle0 = { + angle: 0 +}; +export const angle45 = { + angle: 45 +}; +export const angle90 = { + angle: 90 +}; diff --git a/themesource/atlas_core/native/core/helpers/badge.js b/themesource/atlas_core/native/core/helpers/badge.js new file mode 100644 index 0000000..04eb76e --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/badge.js @@ -0,0 +1,47 @@ +import { badge } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Badge + +//== Design Properties +//## Helper classes to change the look and feel of the widget +========================================================================== */ +// Badge Colors +export const badgePrimary = { + container: { + backgroundColor: badge.primary.backgroundColor + }, + caption: { + color: badge.primary.color + } +}; +export const badgeSuccess = { + container: { + backgroundColor: badge.success.backgroundColor + }, + caption: { + color: badge.success.color + } +}; +export const badgeWarning = { + container: { + backgroundColor: badge.warning.backgroundColor + }, + caption: { + color: badge.warning.color + } +}; +export const badgeDanger = { + container: { + backgroundColor: badge.danger.backgroundColor + }, + caption: { + color: badge.danger.color + } +}; diff --git a/theme/styles/native/core/helpers/barchart.js b/themesource/atlas_core/native/core/helpers/barchart.js similarity index 100% rename from theme/styles/native/core/helpers/barchart.js rename to themesource/atlas_core/native/core/helpers/barchart.js diff --git a/themesource/atlas_core/native/core/helpers/buttons.js b/themesource/atlas_core/native/core/helpers/buttons.js new file mode 100644 index 0000000..08134ac --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/buttons.js @@ -0,0 +1,214 @@ +import { brand, button, contrast, font } from "../../variables"; +import merge from "./_functions/mergeobjects"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Button + +//== Design Properties +//## Helper classes to change the look and feel of the widget +========================================================================== */ +// Button Colors +export const btnSecondary = { + container: { + borderColor: button.secondary.borderColor, + backgroundColor: button.secondary.backgroundColor + }, + icon: { + color: button.secondary.color + }, + caption: { + color: button.secondary.color + } +}; +export const btnSuccess = { + container: { + borderColor: button.success.borderColor, + backgroundColor: button.success.backgroundColor + }, + icon: { + color: button.success.color + }, + caption: { + color: button.success.color + } +}; +export const btnWarning = { + container: { + borderColor: button.warning.borderColor, + backgroundColor: button.warning.backgroundColor + }, + icon: { + color: button.warning.color + }, + caption: { + color: button.warning.color + } +}; +export const btnDanger = { + container: { + borderColor: button.danger.borderColor, + backgroundColor: button.danger.backgroundColor + }, + icon: { + color: button.danger.color + }, + caption: { + color: button.danger.color + } +}; +export const btnPrimaryInversed = { + container: { + borderColor: button.primary.color, + backgroundColor: button.primary.color + }, + icon: { + color: button.primary.backgroundColor + }, + caption: { + color: button.primary.backgroundColor + } +}; +// +// == Extra Classes +// ## Helper classes to change the look and feel of the widget +// -------------------------------------------------------------------------------------------------------------------// +// +// Button Icon Only +export const btnIcon = { + container: { + borderWidth: 0, + backgroundColor: "transparent", + width: font.sizeLarge, + height: font.sizeLarge, + minWidth: undefined, + minHeight: undefined, + paddingVertical: 0, + paddingHorizontal: 0 + }, + icon: { + color: font.colorTitle + }, + caption: { + fontSize: 0 + } +}; +export const btnIconPrimary = merge(btnIcon, { + icon: { + color: button.primary.backgroundColor + } +}); +export const btnIconSecondary = merge(btnIcon, { + icon: { + color: contrast.low + } +}); +export const btnIconSuccess = merge(btnIcon, { + icon: { + color: button.success.backgroundColor + } +}); +export const btnIconWarning = merge(btnIcon, { + icon: { + color: button.warning.backgroundColor + } +}); +export const btnIconDanger = merge(btnIcon, { + icon: { + color: button.danger.backgroundColor + } +}); +export const btnIconWhite = merge(btnIcon, { + icon: { + color: "#FFF" + } +}); +// +export const btnIconGrayRounded = { + container: { + height: 80, + width: 80, + padding: 10, + borderRadius: 20, + borderWidth: 0, + backgroundColor: contrast.lowest + }, + icon: { + size: 30, + color: contrast.high + }, + caption: { + fontSize: 0 + } +}; +// +// Round Button Icon With Background +export const btnIconPrimaryBackground = { + container: { + width: 40, + height: 40, + borderRadius: 20, + paddingVertical: 0, + paddingHorizontal: 0 + }, + icon: { + width: "100%", + height: "100%", + alignItems: "center", + justifyContent: "center", + size: font.sizeLarge, + color: button.primary.color + } +}; +// +// +// Text only +export const btnAsText = { + container: { + maxHeight: 22, + borderWidth: 0, + borderRadius: 0, + rippleColor: contrast.lowest, + backgroundColor: "transparent" + // paddingVertical: 0, + // paddingHorizontal: 0, + }, + icon: { + size: button.icon.size + }, + caption: { + fontWeight: font.weightSemiBold, + fontSize: button.caption.fontSize + } +}; +export const btnAsTextPrimary = merge(btnAsText, { + icon: { + color: brand.primary + }, + caption: { + color: brand.primary + } +}); +export const btnAsTextSecondary = merge(btnAsText, { + icon: { + color: font.colorTitle + }, + caption: { + color: font.colorTitle + } +}); +// +// Button sizes +export const btnLarge = { + icon: { + size: font.size + }, + caption: { + fontSize: font.size + } +}; diff --git a/themesource/atlas_core/native/core/helpers/columnchart.js b/themesource/atlas_core/native/core/helpers/columnchart.js new file mode 100644 index 0000000..b90d1ca --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/columnchart.js @@ -0,0 +1,11 @@ +export const columnChartSquare = { + chart: { + aspectRatio: 1 + } +}; +export const columnChartMaxSpace = { + chart: { + flex: 1, + aspectRatio: undefined + } +}; diff --git a/themesource/atlas_core/native/core/helpers/floatingactionbutton.js b/themesource/atlas_core/native/core/helpers/floatingactionbutton.js new file mode 100644 index 0000000..0f5e777 --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/floatingactionbutton.js @@ -0,0 +1,41 @@ +import { background, brand } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Floating Action Button + +//== Design Properties +//## Helper classes to change the look and feel of the widget +========================================================================== */ +// Floating Action Button Colors +export const floatingActionButtonSecondary = { + button: { + backgroundColor: background.primary + }, + buttonIcon: { + color: brand.primary + } +}; +export const floatingActionButtonSuccess = { + button: { + backgroundColor: brand.success, + borderColor: brand.success + } +}; +export const floatingActionButtonWarning = { + button: { + backgroundColor: brand.warning, + borderColor: brand.warning + } +}; +export const floatingActionButtonDanger = { + button: { + backgroundColor: brand.danger, + borderColor: brand.danger + } +}; diff --git a/themesource/atlas_core/native/core/helpers/gallery.js b/themesource/atlas_core/native/core/helpers/gallery.js new file mode 100644 index 0000000..86bb210 --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/gallery.js @@ -0,0 +1,182 @@ +import { button, border, spacing } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. +========================================================================== +*/ +export const justifyPaginationLeft = { + loadMoreButtonPressableContainer: { + alignSelf: "flex-start" + } +}; +export const justifyPaginationCenter = { + loadMoreButtonPressableContainer: { + alignSelf: "center" + } +}; +export const justifyPaginationRight = { + loadMoreButtonPressableContainer: { + alignSelf: "flex-end" + } +}; +export const listItemBorderHorizontal = { + listItem: { + borderBottomWidth: border.width, + borderTopWidth: border.width, + borderBottomColor: border.color, + borderTopColor: border.color + } +}; +export const listItemBorderVertical = { + listItem: { + borderStartWidth: border.width, + borderEndWidth: border.width, + borderStartColor: border.color, + borderEndColor: border.color + } +}; +export const listItemBorder = { + listItem: { + ...listItemBorderVertical.listItem, + ...listItemBorderHorizontal.listItem + } +}; +export const gridGapInnerSmall = { + listItem: { + padding: spacing.smaller + } +}; +export const gridGapInnerMedium = { + listItem: { + padding: spacing.regular + } +}; +export const gridGapInnerLarge = { + listItem: { + padding: spacing.larger + } +}; +export const gridGapOuterSmall = { + listItem: { + margin: spacing.smaller + } +}; +export const gridGapOuterMedium = { + listItem: { + margin: spacing.regular + } +}; +export const gridGapOuterLarge = { + listItem: { + margin: spacing.larger + } +}; +export const galleryGridAlignSelfStart = { + listItem: { + alignSelf: "flex-start" + } +}; +export const galleryGridAlignSelfCenter = { + listItem: { + alignSelf: "center" + } +}; +export const galleryGridAlignSelfEnd = { + listItem: { + alignSelf: "flex-end" + } +}; +export const galleryGridAlignSelfStretch = { + listItem: { + alignSelf: "stretch" + } +}; +export const galleryGridAlignSelfBaseline = { + listItem: { + alignSelf: "baseline" + } +}; +export const galleryGridFlexRow = { + listItem: { + flexDirection: "row" + } +}; +export const galleryGridFlexWrap = { + listItem: { + flexWrap: "wrap" + } +}; +export const galleryGridJustifyContentStart = { + listItem: { + justifyContent: "flex-start" + } +}; +export const galleryGridJustifyContentCenter = { + listItem: { + justifyContent: "center" + } +}; +export const galleryGridJustifyContentEnd = { + listItem: { + justifyContent: "flex-end" + } +}; +export const galleryGridJustifyContentSpaceBetween = { + listItem: { + justifyContent: "space-between" + } +}; +export const galleryGridJustifyContentSpaceAround = { + listItem: { + justifyContent: "space-around" + } +}; +export const galleryGridJustifyContentSpaceEvenly = { + listItem: { + justifyContent: "space-evenly" + } +}; +export const loadMoreButtonBackgroundSecondary = { + loadMoreButtonPressableContainer: { + borderColor: button.secondary.borderColor, + backgroundColor: button.secondary.backgroundColor + }, + loadMoreButtonCaption: { + color: button.secondary.color + } +}; +export const loadMoreButtonBackgroundSuccess = { + loadMoreButtonPressableContainer: { + borderColor: button.success.borderColor, + backgroundColor: button.success.backgroundColor + }, + loadMoreButtonCaption: { + color: button.success.color + } +}; +export const loadMoreButtonBackgroundWarning = { + loadMoreButtonPressableContainer: { + borderColor: button.warning.borderColor, + backgroundColor: button.warning.backgroundColor + }, + loadMoreButtonCaption: { + color: button.warning.color + } +}; +export const loadMoreButtonBackgroundDanger = { + loadMoreButtonPressableContainer: { + borderColor: button.danger.borderColor, + backgroundColor: button.danger.backgroundColor + }, + loadMoreButtonCaption: { + color: button.danger.color + } +}; +export const loadMoreButtonFixedSize = { + loadMoreButtonPressableContainer: { + alignSelf: "baseline" + } +}; diff --git a/themesource/atlas_core/native/core/helpers/gallerytextfilter.js b/themesource/atlas_core/native/core/helpers/gallerytextfilter.js new file mode 100644 index 0000000..b5751af --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/gallerytextfilter.js @@ -0,0 +1,149 @@ +import { spacing } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. +========================================================================== +*/ +export const galleryTextFilterSpacingOuterTopSmallest = { + textInputContainer: { + marginTop: spacing.smallest + } +}; +export const galleryTextFilterSpacingOuterTopSmaller = { + textInputContainer: { + marginTop: spacing.smaller + } +}; +export const galleryTextFilterSpacingOuterTopSmall = { + textInputContainer: { + marginTop: spacing.small + } +}; +export const galleryTextFilterSpacingOuterTopMedium = { + textInputContainer: { + marginTop: spacing.regular + } +}; +export const galleryTextFilterSpacingOuterTopLarge = { + textInputContainer: { + marginTop: spacing.large + } +}; +export const galleryTextFilterSpacingOuterTopLarger = { + textInputContainer: { + marginTop: spacing.larger + } +}; +export const galleryTextFilterSpacingOuterTopLargest = { + textInputContainer: { + marginTop: spacing.largest + } +}; +export const galleryTextFilterSpacingOuterBottomSmallest = { + textInputContainer: { + marginBottom: spacing.smallest + } +}; +export const galleryTextFilterSpacingOuterBottomSmaller = { + textInputContainer: { + marginBottom: spacing.smaller + } +}; +export const galleryTextFilterSpacingOuterBottomSmall = { + textInputContainer: { + marginBottom: spacing.small + } +}; +export const galleryTextFilterSpacingOuterBottomMedium = { + textInputContainer: { + marginBottom: spacing.regular + } +}; +export const galleryTextFilterSpacingOuterBottomLarge = { + textInputContainer: { + marginBottom: spacing.large + } +}; +export const galleryTextFilterSpacingOuterBottomLarger = { + textInputContainer: { + marginBottom: spacing.larger + } +}; +export const galleryTextFilterSpacingOuterBottomLargest = { + textInputContainer: { + marginBottom: spacing.largest + } +}; +export const galleryTextFilterSpacingOuterRightSmallest = { + textInputContainer: { + marginRight: spacing.smallest + } +}; +export const galleryTextFilterSpacingOuterRightSmaller = { + textInputContainer: { + marginRight: spacing.smaller + } +}; +export const galleryTextFilterSpacingOuterRightSmall = { + textInputContainer: { + marginRight: spacing.small + } +}; +export const galleryTextFilterSpacingOuterRightMedium = { + textInputContainer: { + marginRight: spacing.regular + } +}; +export const galleryTextFilterSpacingOuterRightLarge = { + textInputContainer: { + marginRight: spacing.large + } +}; +export const galleryTextFilterSpacingOuterRightLarger = { + textInputContainer: { + marginRight: spacing.larger + } +}; +export const galleryTextFilterSpacingOuterRightLargest = { + textInputContainer: { + marginRight: spacing.largest + } +}; +export const galleryTextFilterSpacingOuterLeftSmallest = { + textInputContainer: { + marginLeft: spacing.smallest + } +}; +export const galleryTextFilterSpacingOuterLeftSmaller = { + textInputContainer: { + marginLeft: spacing.smaller + } +}; +export const galleryTextFilterSpacingOuterLeftSmall = { + textInputContainer: { + marginLeft: spacing.small + } +}; +export const galleryTextFilterSpacingOuterLeftMedium = { + textInputContainer: { + marginLeft: spacing.regular + } +}; +export const galleryTextFilterSpacingOuterLeftLarge = { + textInputContainer: { + marginLeft: spacing.large + } +}; +export const galleryTextFilterSpacingOuterLeftLarger = { + textInputContainer: { + marginLeft: spacing.larger + } +}; +export const galleryTextFilterSpacingOuterLeftLargest = { + textInputContainer: { + marginLeft: spacing.largest + } +}; diff --git a/themesource/atlas_core/native/core/helpers/helperclasses.js b/themesource/atlas_core/native/core/helpers/helperclasses.js new file mode 100644 index 0000000..f1ae538 --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/helperclasses.js @@ -0,0 +1,111 @@ +import { Platform } from "react-native"; +import { background, border } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +*/ +// Hide on Android +export const hideOnAndroid = { + container: { + display: Platform.select({ ios: "flex", android: "none" }) + } +}; +// Hide on iOS +export const hideOnIos = { + container: { + display: Platform.select({ ios: "none", android: "flex" }) + } +}; +// +// == Background Colors +export const backgroundPrimary = { + container: { + backgroundColor: background.primary + } +}; +export const backgroundSecondary = { + container: { + backgroundColor: background.secondary + } +}; +export const backgroundBrandPrimary = { + container: { + backgroundColor: background.brandPrimary + } +}; +export const backgroundBrandSuccess = { + container: { + backgroundColor: background.brandSuccess + } +}; +export const backgroundBrandWarning = { + container: { + backgroundColor: background.brandWarning + } +}; +export const backgroundBrandDanger = { + container: { + backgroundColor: background.brandDanger + } +}; +export const backgroundBrandInfo = { + container: { + backgroundColor: background.brandInfo + } +}; +// +// borders +export const borderTop = { + container: { + borderColor: border.color, + borderTopWidth: border.width + } +}; +export const borderRight = { + container: { + borderColor: border.color, + borderRightWidth: border.width + } +}; +export const borderBottom = { + container: { + borderColor: border.color, + borderBottomWidth: border.width + } +}; +export const borderRadiusSmall = { + container: { + overflow: "hidden", + borderRadius: border.radiusSmall + } +}; +export const borderRadiusLarge = { + container: { + overflow: "hidden", + borderRadius: border.radiusLarge + } +}; +// +// Positioning +export const absoluteBottom = { + container: { + position: "absolute", + bottom: 0, + width: "100%", + maxWidth: "100%", + zIndex: 99 + } +}; +export const absoluteTop = { + container: { + position: "absolute", + top: 0, + width: "100%", + maxWidth: "100%", + zIndex: 99 + } +}; diff --git a/themesource/atlas_core/native/core/helpers/image.js b/themesource/atlas_core/native/core/helpers/image.js new file mode 100644 index 0000000..d009429 --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/image.js @@ -0,0 +1,142 @@ +import { border, brand, contrast, image } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Image + +//== Design Properties +//## Helper classes to change the look and feel of the widget +========================================================================== */ +// +// +// == Extra Classes +// ## Helper classes to change the look and feel of the widget +// -------------------------------------------------------------------------------------------------------------------// +// Image Overlay +export const imageOverlay = { + container: { + zIndex: 10, + width: "100%", + height: "100%", + position: "absolute", + backgroundColor: "rgba(0,0,0,0.4)" + } +}; +// +// Image Shapes +export const imageSquare = { + image: { + width: "100%", + height: "auto", + aspectRatio: 1, + borderRadius: border.radiusSmall + } +}; +export const imageCircle = { + image: { + width: "100%", + height: "auto", + aspectRatio: 1, + borderRadius: 50000 + } +}; +// Image Sizes +export const imageIcon = { + image: { + maxWidth: image.icon, + maxHeight: image.icon + }, + container: { + maxWidth: image.icon, + maxHeight: image.icon + } +}; +export const imageSmall = { + image: { + maxWidth: image.image.small, + maxHeight: image.image.small + }, + container: { + maxWidth: image.image.small, + maxHeight: image.image.small + } +}; +export const imageMedium = { + image: { + maxWidth: image.image.medium, + maxHeight: image.image.medium + }, + container: { + maxWidth: image.image.medium, + maxHeight: image.image.medium + } +}; +export const imageLarge = { + image: { + maxWidth: image.image.large, + maxHeight: image.image.large + }, + container: { + maxWidth: image.image.large, + maxHeight: image.image.large + } +}; +export const imageLarger = { + image: { + maxWidth: image.image.larger, + maxHeight: image.image.larger + }, + container: { + maxWidth: image.image.larger, + maxHeight: image.image.larger + } +}; +export const imageFullSize = { + image: { + maxWidth: "100%", + maxHeight: "auto" + } +}; +// +// Image / SVG Styles +export const imageIconPrimary = { + image: { + fill: brand.primary, + color: brand.primary + } +}; +export const imageIconSecondary = { + image: { + fill: contrast.low, + color: contrast.low + } +}; +export const imageIconSuccess = { + image: { + fill: brand.success, + color: brand.success + } +}; +export const imageIconWarning = { + image: { + fill: brand.warning, + color: brand.warning + } +}; +export const imageIconDanger = { + image: { + fill: brand.danger, + color: brand.danger + } +}; +export const imageIconInfo = { + image: { + fill: brand.info, + color: brand.info + } +}; diff --git a/themesource/atlas_core/native/core/helpers/introscreen.js b/themesource/atlas_core/native/core/helpers/introscreen.js new file mode 100644 index 0000000..bc3ff89 --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/introscreen.js @@ -0,0 +1,75 @@ +import { backgroundDefaults, brand, fontDefaults } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Intro Screen + +//== Design Properties +//## Helper classes to change the look and feel of the widget +========================================================================== */ +// +// +// == Extra Classes +// ## Helper classes to change the look and feel of the widget +// -------------------------------------------------------------------------------------------------------------------// +const introScreenButton = { + icon: { + // Size and color are allowed + color: fontDefaults.colorTitleDark + }, + caption: { + // All TextStyle properties are allowed + color: fontDefaults.colorTitleDark + } +}; +export const introScreenLightMode = { + fullscreenContainer: { + // All ViewStyle properties are allowed + backgroundColor: backgroundDefaults.primaryLight + }, + popupContainer: { + // All ViewStyle properties are allowed + backgroundColor: backgroundDefaults.primaryLight + }, + paginationText: { + // All TextStyle properties are allowed + color: fontDefaults.colorTitleLight + }, + dotStyle: { + // All ViewStyle properties are allowed + backgroundColor: fontDefaults.colorDisabledLight + }, + activeDotStyle: { + // All ViewStyle properties are allowed + backgroundColor: backgroundDefaults.secondaryDark + }, + // Button styles + paginationAbove: { + buttonSkip: introScreenButton, + buttonPrevious: introScreenButton, + buttonNext: introScreenButton, + buttonDone: introScreenButton + }, + paginationBetween: { + buttonSkip: introScreenButton, + buttonPrevious: introScreenButton, + buttonNext: introScreenButton, + buttonDone: introScreenButton + } +}; +// Background colors +export const introScreenBackgroundBrandPrimary = { + fullscreenContainer: { + // All ViewStyle properties are allowed + backgroundColor: brand.primary + }, + popupContainer: { + // All ViewStyle properties are allowed + backgroundColor: brand.primary + } +}; diff --git a/theme/styles/native/core/helpers/linechart.js b/themesource/atlas_core/native/core/helpers/linechart.js similarity index 100% rename from theme/styles/native/core/helpers/linechart.js rename to themesource/atlas_core/native/core/helpers/linechart.js diff --git a/themesource/atlas_core/native/core/helpers/listview.js b/themesource/atlas_core/native/core/helpers/listview.js new file mode 100644 index 0000000..7fa30dd --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/listview.js @@ -0,0 +1,46 @@ +import { background, border, listView, spacing } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + List View + +//== Design Properties +//## Helper classes to change the look and feel of the widget +========================================================================== */ +// List item dividers +export const listItemBorderBottom = { + listItem: { + borderColor: listView.border.color, + borderBottomWidth: listView.border.width + } +}; +export const listItemBorderRight = { + listItem: { + borderColor: listView.border.color, + borderRightWidth: listView.border.width + } +}; +// +// == Extra Classes +// ## Helper classes to change the look and feel of the widget +// -------------------------------------------------------------------------------------------------------------------// +export const listItemImage = { + container: { + height: 88, + width: 128, + overflow: "hidden", + backgroundColor: background.primary, + borderRadius: border.radiusLarge, + marginRight: spacing.regular + } +}; +export const horizontalListItemCard = { + container: { + width: 280 + } +}; diff --git a/themesource/atlas_core/native/core/helpers/listviewswipe.js b/themesource/atlas_core/native/core/helpers/listviewswipe.js new file mode 100644 index 0000000..31fb38b --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/listviewswipe.js @@ -0,0 +1,38 @@ +import { listViewSwipe } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + List View Swipe + +//== Design Properties +//## Helper classes to change the look and feel of the widget +========================================================================== */ +export const listViewSwipeSmallPanels = { + leftAction: { + // PanelSize & All ViewStyle properties are allowed + panelSize: listViewSwipe.leftAction.panelSizeSmall + }, + rightAction: { + // PanelSize & All ViewStyle properties are allowed + panelSize: listViewSwipe.rightAction.panelSizeSmall + } +}; +export const listViewSwipeLargePanels = { + leftAction: { + // PanelSize & All ViewStyle properties are allowed + panelSize: listViewSwipe.leftAction.panelSizeLarge + }, + rightAction: { + // PanelSize & All ViewStyle properties are allowed + panelSize: listViewSwipe.rightAction.panelSizeLarge + } +}; +// +// == Extra Classes +// ## Helper classes to change the look and feel of the widget +// -------------------------------------------------------------------------------------------------------------------// diff --git a/themesource/atlas_core/native/core/helpers/maps.js b/themesource/atlas_core/native/core/helpers/maps.js new file mode 100644 index 0000000..1c797dc --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/maps.js @@ -0,0 +1,55 @@ +import { border, brand } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Maps + +//== Design Properties +//## Helper classes to change the look and feel of the widget +========================================================================== */ +// Maps Colors +export const mapsSuccess = { + marker: { + color: brand.success + } +}; +export const mapsWarning = { + marker: { + color: brand.warning + } +}; +export const mapsDanger = { + marker: { + color: brand.danger + } +}; +// +// Maps Size +export const mapsSquare = { + container: { + aspectRatio: 1 / 1 + } +}; +export const mapsMaxSpace = { + container: { + flex: 1, + minHeight: 50, + aspectRatio: undefined + } +}; +// +// == Extra Classes +// ## Helper classes to change the look and feel of the widget +// -------------------------------------------------------------------------------------------------------------------// +// Maps Shape +export const mapsRounded = { + container: { + borderRadius: border.radiusSmall, + overflow: "hidden" + } +}; diff --git a/themesource/atlas_core/native/core/helpers/progressbar.js b/themesource/atlas_core/native/core/helpers/progressbar.js new file mode 100644 index 0000000..571e5b9 --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/progressbar.js @@ -0,0 +1,44 @@ +import { brand, progressBar } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Progress Bar + +//== Design Properties +//## Helper classes to change the look and feel of the widget +========================================================================== */ +// Progress Bar Color +export const progressBarSuccess = { + fill: { + backgroundColor: brand.success + } +}; +export const progressBarWarning = { + fill: { + backgroundColor: brand.warning + } +}; +export const progressBarDanger = { + fill: { + backgroundColor: brand.danger + } +}; +// +// Progress Bar Size +export const progressBarSmall = { + bar: { + height: progressBar.bar.heightSmall, + borderRadius: progressBar.bar.heightSmall / 2 + } +}; +export const progressBarLarge = { + bar: { + height: progressBar.bar.heightLarge, + borderRadius: progressBar.bar.heightLarge / 2 + } +}; diff --git a/themesource/atlas_core/native/core/helpers/progresscircle.js b/themesource/atlas_core/native/core/helpers/progresscircle.js new file mode 100644 index 0000000..ca16a0d --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/progresscircle.js @@ -0,0 +1,60 @@ +import { brand, contrast, font } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Progress Circle + +//== Design Properties +//## Helper classes to change the look and feel of the widget +========================================================================== */ +// Progress Circle Color +export const progressCircleSuccess = { + fill: { + backgroundColor: brand.success + }, + text: { + color: brand.success + } +}; +export const progressCircleWarning = { + fill: { + backgroundColor: brand.warning + }, + text: { + color: brand.warning + } +}; +export const progressCircleDanger = { + fill: { + backgroundColor: brand.danger + }, + text: { + color: brand.danger + } +}; +export const progressCircleGray = { + fill: { + backgroundColor: contrast.regular + }, + text: { + color: contrast.regular + } +}; +// +// Sizes +export const progressCircleSmall = { + circle: { + size: 50 + }, + fill: { + width: 3 + }, + text: { + fontSize: font.sizeSmall + } +}; diff --git a/themesource/atlas_core/native/core/helpers/radiobuttons.js b/themesource/atlas_core/native/core/helpers/radiobuttons.js new file mode 100644 index 0000000..c686f2a --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/radiobuttons.js @@ -0,0 +1,91 @@ +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. +========================================================================== +*/ +import { brand } from "../../../../../theme/native/custom-variables"; +// Radio buttons properties +export const radioButtonsPrimary = { + circularButtonStyle: { + borderColor: brand.primary + }, + activeButtonStyle: { + backgroundColor: brand.primary + }, + radioButtonItemTitleStyle: { + color: brand.primary + } +}; +export const radioButtonsSuccess = { + circularButtonStyle: { + borderColor: brand.success + }, + activeButtonStyle: { + backgroundColor: brand.success + }, + radioButtonItemTitleStyle: { + color: brand.success + } +}; +export const radioButtonsWarning = { + circularButtonStyle: { + borderColor: brand.warning + }, + activeButtonStyle: { + backgroundColor: brand.warning + }, + radioButtonItemTitleStyle: { + color: brand.warning + } +}; +export const radioButtonsDanger = { + circularButtonStyle: { + borderColor: brand.danger + }, + activeButtonStyle: { + backgroundColor: brand.danger + }, + radioButtonItemTitleStyle: { + color: brand.danger + } +}; +export const radioButtonsInfo = { + circularButtonStyle: { + borderColor: brand.info + }, + activeButtonStyle: { + backgroundColor: brand.info + }, + radioButtonItemTitleStyle: { + color: brand.info + } +}; +// Radio buttons label properties +export const radioButtonsLabelPrimary = { + labelTextStyle: { + color: brand.primary + } +}; +export const radioButtonsLabelSuccess = { + labelTextStyle: { + color: brand.success + } +}; +export const radioButtonsLabelWarning = { + labelTextStyle: { + color: brand.warning + } +}; +export const radioButtonsLabelDanger = { + labelTextStyle: { + color: brand.danger + } +}; +export const radioButtonsLabelInfo = { + labelTextStyle: { + color: brand.info + } +}; diff --git a/theme/styles/native/core/helpers/rangeslider.js b/themesource/atlas_core/native/core/helpers/rangeslider.js similarity index 100% rename from theme/styles/native/core/helpers/rangeslider.js rename to themesource/atlas_core/native/core/helpers/rangeslider.js diff --git a/themesource/atlas_core/native/core/helpers/slider.js b/themesource/atlas_core/native/core/helpers/slider.js new file mode 100644 index 0000000..fd707ff --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/slider.js @@ -0,0 +1,39 @@ +import { brand } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Slider + +//== Design Properties +//## Helper classes to change the look and feel of the widget +========================================================================== */ +// Slider Color +export const sliderSuccess = { + highlight: { + backgroundColor: brand.success + }, + highlightDisabled: { + backgroundColor: brand.success + } +}; +export const sliderWarning = { + highlight: { + backgroundColor: brand.warning + }, + highlightDisabled: { + backgroundColor: brand.warning + } +}; +export const sliderDanger = { + highlight: { + backgroundColor: brand.danger + }, + highlightDisabled: { + backgroundColor: brand.danger + } +}; diff --git a/themesource/atlas_core/native/core/helpers/switch.js b/themesource/atlas_core/native/core/helpers/switch.js new file mode 100644 index 0000000..b391310 --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/switch.js @@ -0,0 +1,29 @@ +import { brand } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Switch + + Default Class For Mendix Switch Widget +========================================================================== */ +// Switch Color +export const switchSuccess = { + input: { + trackColorOn: brand.success + } +}; +export const switchWarning = { + input: { + trackColorOn: brand.warning + } +}; +export const switchDanger = { + input: { + trackColorOn: brand.danger + } +}; diff --git a/themesource/atlas_core/native/core/helpers/tabcontainer.js b/themesource/atlas_core/native/core/helpers/tabcontainer.js new file mode 100644 index 0000000..08884fe --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/tabcontainer.js @@ -0,0 +1,33 @@ +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Tab Container + +//== Design Properties +//## Helper classes to change the look and feel of the widget +========================================================================== */ +// Enable scroll for the tab bar +export const tabContainerScroll = { + tabBar: { + scrollEnabled: true + } +}; +// +// == Extra Classes +// ## Helper classes to change the look and feel of the widget +// -------------------------------------------------------------------------------------------------------------------// +// Tab container as content of page +export const tabContainerMinimal = { + container: { + backgroundColor: "transparent" + }, + tabBar: { + backgroundColor: "transparent", + elevation: 0 + } +}; diff --git a/themesource/atlas_core/native/core/helpers/textbox.js b/themesource/atlas_core/native/core/helpers/textbox.js new file mode 100644 index 0000000..5309bc4 --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/textbox.js @@ -0,0 +1,34 @@ +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Text Box + +//== Design Properties +//## Helper classes to change the look and feel of the widget +========================================================================== */ +// Text Box Color +export const textInputCapitalizeNone = { + input: { + autoCapitalize: "none" + } +}; +export const textInputCapitalizeCharacters = { + input: { + autoCapitalize: "characters" + } +}; +export const textInputCapitalizeWords = { + input: { + autoCapitalize: "words" + } +}; +export const textInputCapitalizeSentences = { + input: { + autoCapitalize: "sentences" + } +}; diff --git a/themesource/atlas_core/native/core/helpers/typography.js b/themesource/atlas_core/native/core/helpers/typography.js new file mode 100644 index 0000000..9fbdb93 --- /dev/null +++ b/themesource/atlas_core/native/core/helpers/typography.js @@ -0,0 +1,156 @@ +import { brand, font, fontDefaults } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Text + +//== Design Properties +//## Helper classes to change the look and feel of the widget +========================================================================== */ +// Text Colors +export const textTitle = { + text: { + color: font.colorTitle + } +}; +export const textParagraph = { + text: { + color: font.colorParagraph + } +}; +export const textDisabled = { + text: { + color: font.colorDisabled + } +}; +export const textWhite = { + text: { + color: fontDefaults.colorTitleLight + } +}; +export const textBlack = { + text: { + color: fontDefaults.colorTitleDark + } +}; +export const textPrimary = { + text: { + color: brand.primary + } +}; +export const textSuccess = { + text: { + color: brand.success + } +}; +export const textWarning = { + text: { + color: brand.warning + } +}; +export const textDanger = { + text: { + color: brand.danger + } +}; +// +// Text Alignment +export const textLeft = { + text: { + textAlign: "left" + } +}; +export const textCenter = { + text: { + textAlign: "center" + } +}; +export const textRight = { + text: { + textAlign: "right" + } +}; +// +// Text Weights +export const textLight = { + text: { + fontWeight: font.weightLight + } +}; +export const textNormal = { + text: { + fontWeight: font.weightNormal + } +}; +export const textSemiBold = { + text: { + fontWeight: font.weightSemiBold + } +}; +export const textBold = { + text: { + fontWeight: font.weightBold + } +}; +// +// Text Sizes +export const textSmallest = { + text: { + fontSize: font.sizeSmallest, + lineHeight: font.lineHeightSmallest + } +}; +export const textSmall = { + text: { + fontSize: font.sizeSmall, + lineHeight: font.lineHeightSmall + } +}; +export const textLarge = { + text: { + fontSize: font.sizeLarge, + lineHeight: font.lineHeightLarge + } +}; +export const textLargest = { + text: { + fontSize: font.sizeLargest, + lineHeight: font.lineHeightLargest + } +}; +// +// == Extra Classes +// ## Helper classes to change the look and feel of the widget +// -------------------------------------------------------------------------------------------------------------------// +// +// Text Transformations +export const textLowercase = { + text: { + textTransform: "lowercase" + } +}; +export const textUppercase = { + text: { + textTransform: "uppercase" + } +}; +export const textCapitalize = { + text: { + textTransform: "capitalize" + } +}; +export const textUnderline = { + text: { + textDecorationLine: "underline" + } +}; +export const textLineThrough = { + text: { + textDecorationLine: "line-through" + } +}; diff --git a/themesource/atlas_core/native/core/manifest.json b/themesource/atlas_core/native/core/manifest.json new file mode 100644 index 0000000..b6b47f5 --- /dev/null +++ b/themesource/atlas_core/native/core/manifest.json @@ -0,0 +1,4 @@ +{ + "name": "Atlas-UI-Framework", + "version": "3.0.0" +} diff --git a/themesource/atlas_core/native/core/widgets/accordion.js b/themesource/atlas_core/native/core/widgets/accordion.js new file mode 100644 index 0000000..113ca97 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/accordion.js @@ -0,0 +1,87 @@ +import { accordion } from "../../variables"; +import { TextHeading1, TextHeading2, TextHeading3, TextHeading4, TextHeading5, TextHeading6 } from "./typography"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Activity Indicator + + Default Class For Mendix Activity Indicator Widget +========================================================================== */ +export const com_mendix_widget_native_accordion_Accordion = { + container: { + // All ViewStyle properties are allowed + flexGrow: 1, + backgroundColor: accordion.container.backgroundColor, + borderColor: accordion.container.borderColor + }, + group: { + container: { + // All ViewStyle properties are allowed + borderWidth: 1, + borderColor: accordion.container.borderColor + }, + header: { + container: { + // All ViewStyle properties are allowed + borderColor: accordion.container.borderColor, + flexDirection: "row", + alignItems: "center", + justifyContent: "space-between", + paddingVertical: accordion.groupHeader.container.paddingVertical, + paddingHorizontal: accordion.groupHeader.container.paddingHorizontal + }, + heading1: { + // All TextStyle properties are allowed + ...TextHeading1.text, + fontWeight: "normal", + color: accordion.groupHeader.heading.color + }, + heading2: { + // All TextStyle properties are allowed + ...TextHeading2.text, + fontWeight: "normal", + color: accordion.groupHeader.heading.color + }, + heading3: { + // All TextStyle properties are allowed + ...TextHeading3.text, + fontWeight: "normal", + color: accordion.groupHeader.heading.color + }, + heading4: { + // All TextStyle properties are allowed + ...TextHeading4.text, + fontWeight: "normal", + color: accordion.groupHeader.heading.color + }, + heading5: { + // All TextStyle properties are allowed + ...TextHeading5.text, + fontWeight: "normal", + color: accordion.groupHeader.heading.color + }, + heading6: { + // All TextStyle properties are allowed + ...TextHeading6.text, + fontWeight: "normal", + color: accordion.groupHeader.heading.color + }, + icon: { + // Size, Color and all ViewStyle properties are allowed + size: accordion.groupHeader.icon.size, + color: accordion.groupHeader.icon.color + } + }, + content: { + // All ViewStyle properties are allowed + paddingTop: accordion.groupContent.paddingTop, + paddingBottom: accordion.groupContent.paddingBottom, + paddingHorizontal: accordion.groupContent.paddingHorizontal + } + } +}; diff --git a/themesource/atlas_core/native/core/widgets/activityindicator.js b/themesource/atlas_core/native/core/widgets/activityindicator.js new file mode 100644 index 0000000..1ae32d7 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/activityindicator.js @@ -0,0 +1,23 @@ +import { brand } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Activity Indicator + + Default Class For Mendix Activity Indicator Widget +========================================================================== */ +export const com_mendix_widget_native_activityindicator_ActivityIndicator = { + container: { + // All ViewStyle properties are allowed + }, + indicator: { + // Color and size are allowed + color: brand.primary, + size: "large" + } +}; diff --git a/themesource/atlas_core/native/core/widgets/animation.js b/themesource/atlas_core/native/core/widgets/animation.js new file mode 100644 index 0000000..4b143de --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/animation.js @@ -0,0 +1,17 @@ +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Animation + + Default Class For Mendix Animation Widget +========================================================================== */ +export const com_mendix_widget_native_animation_Animation = { + container: { + // All ViewStyle properties are allowed + } +}; diff --git a/themesource/atlas_core/native/core/widgets/backgroundgradient.js b/themesource/atlas_core/native/core/widgets/backgroundgradient.js new file mode 100644 index 0000000..4ce87c7 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/backgroundgradient.js @@ -0,0 +1,21 @@ +import { backgroundGradient } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + BackgroundGradient + + Default Class For Mendix BackgroundGradient Widget +========================================================================== */ +export const com_mendix_widget_native_backgroundgradient_BackgroundGradient = { + container: { + // All ViewStyle properties are allowed + ...backgroundGradient.container + }, + angle: backgroundGradient.angle, + opacity: backgroundGradient.opacity +}; diff --git a/themesource/atlas_core/native/core/widgets/backgroundimage.js b/themesource/atlas_core/native/core/widgets/backgroundimage.js new file mode 100644 index 0000000..40d6829 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/backgroundimage.js @@ -0,0 +1,19 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. +// +/* ========================================================================== + Background Image + + Default Class For Mendix Background Image Widget +========================================================================== */ +export const com_mendix_widget_native_backgroundimage_BackgroundImage = { + container: { + // All ViewStyle properties are allowed + }, + image: { + // svgColor and all ImageStyle properties are allowed + } +}; diff --git a/themesource/atlas_core/native/core/widgets/badge.js b/themesource/atlas_core/native/core/widgets/badge.js new file mode 100644 index 0000000..260c6da --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/badge.js @@ -0,0 +1,29 @@ +import { badge, font } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Badge + + Default Class For Mendix Badge Widget +========================================================================== */ +export const com_mendix_widget_native_badge_Badge = { + container: { + // All ViewStyle properties are allowed + backgroundColor: badge.default.backgroundColor, + borderRadius: badge.borderRadius, + paddingVertical: badge.paddingVertical, + paddingHorizontal: badge.paddingHorizontal + }, + caption: { + // All TextStyle properties are allowed + color: badge.default.color, + fontFamily: font.family, + fontWeight: badge.fontWeight, + marginTop: -1 + } +}; diff --git a/themesource/atlas_core/native/core/widgets/barchart.js b/themesource/atlas_core/native/core/widgets/barchart.js new file mode 100644 index 0000000..c2b09c0 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/barchart.js @@ -0,0 +1,166 @@ +import { border, brand, font, spacing } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Bar Chart + + Default Class For Mendix Bar Chart Widget +========================================================================== */ +export const com_mendix_widget_native_barchart_BarChart = { + container: { + // All ViewStyle properties are allowed + }, + errorMessage: { + // All TextStyle properties are allowed + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal + }, + chart: { + // All ViewStyle properties are allowed + }, + grid: { + /* + Allowed properties: + - backgroundColor (string) + - dashArray (string) + - lineColor (string) + - padding (number) + - paddingBottom (number) + - paddingHorizontal (number) + - paddingLeft (number) + - paddingRight (number) + - paddingTop (number) + - paddingVertical (number) + - width (number) + */ + lineColor: border.color, + paddingBottom: 32, + paddingLeft: 32, + paddingRight: 8, + paddingTop: 8 + }, + xAxis: { + /* + Allowed properties: + - color (string) + - dashArray (string) + - fontFamily (string) + - fontSize (number) + - fontStyle ("normal" or "italic") + - fontWeight ("normal" or "bold" or "100" or "200" or "300" or "400" or "500" or "600" or "700" or "800" or "900") + - lineColor (string) + - width (number) + */ + color: font.colorTitle, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal, + label: { + /* + All TextStyle properties are allowed and: + - relativePositionGrid ("bottom" or "right") + */ + color: font.colorParagraph, + alignSelf: "center", + marginHorizontal: 0, + marginVertical: 8, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal + }, + lineColor: border.color + }, + yAxis: { + /* + Allowed properties: + - color (string) + - dashArray (string) + - fontFamily (string) + - fontSize (number) + - fontStyle ("normal" or "italic") + - fontWeight ("normal" or "bold" or "100" or "200" or "300" or "400" or "500" or "600" or "700" or "800" or "900") + - lineColor (string) + - width (number) + */ + color: font.colorTitle, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal, + label: { + /* + All TextStyle properties are allowed and: + - relativePositionGrid ("top" or "left") + */ + color: font.colorParagraph, + marginHorizontal: 0, + marginVertical: 8, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal + }, + lineColor: border.color + }, + bars: { + /* + Allowed properties: + - barColorPalette (string with array of colors separated by ';') + - barsOffset (number) + + */ + barColorPalette: Object.entries(brand) + .reduce((accumulator, [key, value]) => (key.endsWith("Light") ? accumulator : [...accumulator, value]), []) + .join(";"), + barsOffset: 20, + customBarStyles: { + your_static_or_dynamic_attribute_value: { + bar: { + /* + Allowed properties: + - ending (number) + - barColor (string) + - width (number) + */ + }, + label: { + /* + Allowed properties: + - fontFamily (string) + - fontSize (number) + - fontStyle ("normal" or "italic") + - fontWeight ("normal" or "bold" or "100" or "200" or "300" or "400" or "500" or "600" or "700" or "800" or "900") + */ + } + } + } + }, + legend: { + container: { + // All ViewStyle properties are allowed + justifyContent: "flex-start", + marginHorizontal: 0, + marginVertical: spacing.small + }, + item: { + // All ViewStyle properties are allowed + padding: 0, + paddingRight: spacing.regular + }, + indicator: { + // All ViewStyle properties are allowed + marginRight: spacing.small + }, + label: { + // All TextStyle properties are allowed + color: font.colorTitle, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal + } + } +}; diff --git a/themesource/atlas_core/native/core/widgets/bottomsheet.js b/themesource/atlas_core/native/core/widgets/bottomsheet.js new file mode 100644 index 0000000..32fe4f8 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/bottomsheet.js @@ -0,0 +1,67 @@ +import { background, border, brand, contrast, font } from "../../variables"; +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. +// +/* ========================================================================== + Bottom Sheet + + Default Class For Mendix Bottom Sheet Widget +========================================================================== */ +export const com_mendix_widget_native_bottomsheet_BottomSheet = { + container: { + // All ViewStyle properties are allowed + backgroundColor: background.primary, + borderRadius: border.radiusLarge, + elevation: 20, + shadowColor: "#000", + shadowOpacity: 0.1, + shadowRadius: 6, + shadowOffset: { + width: 0, + height: -4 + } + }, + containerWhenExpandedFullscreen: { + // All ViewStyle properties are allowed + height: "100%", + alignSelf: "stretch", + backgroundColor: background.primary + }, + modal: { + // All ViewStyle properties are allowed + margin: 0, + justifyContent: "flex-end" + }, + modalItems: { + container: { + // rippleColor & All TextStyle properties are allowed + height: 50, + marginTop: 0, + rippleColor: contrast.lower, + backgroundColor: background.primary + }, + defaultStyle: { + // All TextStyle properties are allowed + fontSize: 16, + color: font.colorTitle + }, + primaryStyle: { + // All TextStyle properties are allowed + fontSize: 16, + color: brand.primary + }, + dangerStyle: { + // All TextStyle properties are allowed + fontSize: 16, + color: brand.danger + }, + customStyle: { + // All TextStyle properties are allowed + fontSize: 16, + color: font.colorTitle + } + } +}; diff --git a/themesource/atlas_core/native/core/widgets/buttons.js b/themesource/atlas_core/native/core/widgets/buttons.js new file mode 100644 index 0000000..752b2b7 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/buttons.js @@ -0,0 +1,75 @@ +import { button, font } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Button + + Default Class For Mendix Button Widget +========================================================================== */ +export const ActionButton = { + container: { + // Ripplecolor and all ViewStyle properties are allowed + borderWidth: 1, + borderStyle: "solid", + rippleColor: button.container.rippleColor, + borderColor: button.primary.borderColor, + backgroundColor: button.primary.backgroundColor, + alignItems: "center", + justifyContent: "center", + borderRadius: button.container.borderRadius, + minWidth: button.container.minWidth, + minHeight: button.container.minHeight, + paddingVertical: button.container.paddingVertical, + paddingHorizontal: button.container.paddingHorizontal + }, + containerDisabled: { + // All ViewStyle properties are allowed + borderColor: button.containerDisabled.borderColor, + backgroundColor: button.containerDisabled.backgroundColor + }, + icon: { + // Size and color are allowed + color: button.primary.color, + size: button.icon.size + }, + iconDisabled: { + // Size and color are allowed + color: button.iconDisabled.color + }, + caption: { + // All TextStyle properties are allowed + color: button.primary.color, + fontSize: button.caption.fontSize, + fontFamily: font.family, + fontWeight: button.caption.fontWeight, + lineHeight: font.lineHeight + }, + captionDisabled: { + // All TextStyle properties are allowed + color: button.captionDisabled.color + } +}; +// +// Default style for button inside a header +export const ActionButtonHeader = { + container: { + borderColor: button.header.borderColor, + backgroundColor: button.header.backgroundColor, + paddingLeft: button.header.paddingLeft, + paddingRight: button.header.paddingRight + }, + icon: { + color: button.header.color, + size: button.header.fontSizeIcon + }, + caption: { + color: button.header.color, + fontSize: button.header.fontSize, + fontFamily: font.family + } +}; diff --git a/themesource/atlas_core/native/core/widgets/carousel.js b/themesource/atlas_core/native/core/widgets/carousel.js new file mode 100644 index 0000000..cd2819e --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/carousel.js @@ -0,0 +1,119 @@ +import { brand, contrast, font, spacing } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Button + + Default Class For Mendix Carousel Widget +========================================================================== */ +// Card +const carouselFullWidthLayout = { + slideItem: { + // All ViewStyle properties are allowed + height: 250 + }, + inactiveSlideItem: { + // Only opacity and scale are allowed + }, + pagination: { + container: { + // All ViewStyle properties are allowed + position: "absolute", + bottom: 0, + width: "100%", + justifyContent: "center", + paddingHorizontal: spacing.regular, + paddingBottom: spacing.regular + }, + text: { + // All TextStyle properties are allowed + color: "#FFF", + fontSize: font.size, + fontFamily: font.family, + textAlign: "center", + textShadowColor: "#888", + textShadowRadius: 3, + textShadowOffset: { + width: 0, + height: 1 + } + }, + dotContainerStyle: { + // All ViewStyle properties are allowed + marginHorizontal: 3 + }, + dotStyle: { + // Color and all ViewStyle properties are allowed + color: "#FFF" + }, + inactiveDotStyle: { + // Only opacity, scale and color are allowed + color: "rgba(255, 255, 255, 0.45)", + scale: 1 + } + } +}; +const carouselCardLayout = { + slideItem: { + // All ViewStyle properties are allowed + width: "70%", + height: 250, + padding: 8, + paddingBottom: spacing.regular, + elevation: 1.5, + shadowColor: "#000", + shadowOpacity: 0.5, + shadowRadius: 6, + shadowOffset: { + width: 0, + height: 4 + } + }, + inactiveSlideItem: { + // Only opacity and scale are allowed + opacity: 0.8 + }, + pagination: { + container: { + // All ViewStyle properties are allowed + paddingHorizontal: spacing.regular, + paddingBottom: spacing.smaller + }, + text: { + // All TextStyle properties are allowed + color: font.colorTitle, + fontSize: font.size, + fontFamily: font.family, + textAlign: "center" + }, + dotContainerStyle: { + // All ViewStyle properties are allowed + marginHorizontal: 3 + }, + dotStyle: { + // Color and all ViewStyle properties are allowed + color: brand.primary + }, + inactiveDotStyle: { + // Only opacity, scale and color are allowed + color: contrast.lower, + scale: 1 + } + } +}; +export const com_mendix_widget_native_carousel_Carousel = { + container: { + // All ViewStyle properties are allowed + }, + fullWidthLayout: carouselFullWidthLayout, + cardLayout: carouselCardLayout, + activityIndicator: { + // Only color is allowed + color: font.colorTitle + } +}; diff --git a/themesource/atlas_core/native/core/widgets/checkbox.js b/themesource/atlas_core/native/core/widgets/checkbox.js new file mode 100644 index 0000000..36dbdfd --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/checkbox.js @@ -0,0 +1,99 @@ +import { background, brand, contrast, spacing, checkbox } from "../../variables"; +import { TextBox, TextBoxVertical } from "./textbox"; +import { com_mendix_widget_native_switch_Switch } from "./switch"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + CheckBox + + Default Class For Mendix CheckBox Widget +========================================================================== */ +export const CheckBox = { + container: { + // All ViewStyle properties are allowed + ...TextBox.container, + paddingVertical: spacing.smallest, + justifyContent: "center" + }, + containerDisabled: { + // All ViewStyle properties are allowed + ...TextBox.containerDisabled + }, + label: { + // numberOfLines and all TextStyle properties are allowed + ...TextBox.label + }, + labelDisabled: { + // All TextStyle properties are allowed + ...TextBox.labelDisabled + }, + // the below properties (input, inputDisabled & inputError) are only used when render mode is `switch` + input: { + // thumbColorOn, thumbColorOff, trackColorOn, trackColorOff and all ViewStyle properties are allowed + ...com_mendix_widget_native_switch_Switch.input + }, + inputDisabled: { + // thumbColorOn, thumbColorOff, trackColorOn, trackColorOff and all ViewStyle properties are allowed + ...com_mendix_widget_native_switch_Switch.inputDisabled + }, + inputError: { + // thumbColorOn, thumbColorOff, trackColorOn, trackColorOff and all ViewStyle properties are allowed + ...com_mendix_widget_native_switch_Switch.inputError + }, + // the below properties (checkboxInput, checkboxInputDisabled & checkboxInputError) are only used when render mode is `checkbox` + checkboxInput: { + // color, size & all ViewStyle properties are allowed + ...checkbox.checkboxInput, + justifyContent: "center", + alignItems: "center" + }, + checkboxInputDisabled: { + // color, size & all ViewStyle properties are allowed + ...checkbox.checkboxInputDisabled + }, + checkboxInputError: { + // color, size & all ViewStyle properties are allowed + ...checkbox.checkboxInputError + }, + validationMessage: { + // All TextStyle properties are allowed + ...TextBox.validationMessage, + alignSelf: "stretch" + } +}; +export const CheckBoxVertical = { + container: TextBoxVertical.container, + containerDisabled: TextBoxVertical.containerDisabled, + label: TextBoxVertical.label, + labelDisabled: TextBoxVertical.labelDisabled, + // the below properties (input, inputDisabled & inputError) are only used when render mode is `switch` + input: { + ...CheckBox.input, + alignSelf: "flex-start" + }, + inputDisabled: CheckBox.inputDisabled, + inputError: { + ...TextBoxVertical.inputError, + thumbColorOn: background.primary, + trackColorOn: brand.danger, + thumbColorOff: contrast.low, + trackColorOff: brand.danger + }, + // the below properties (checkboxInput, checkboxInputDisabled & checkboxInputError) are only used when render mode is `checkbox` + checkboxInput: { + ...CheckBox.checkboxInput + }, + checkboxInputDisabled: CheckBox.checkboxInputDisabled, + checkboxInputError: { + ...TextBoxVertical.inputError + }, + validationMessage: { + ...TextBoxVertical.validationMessage, + alignSelf: "stretch" + } +}; diff --git a/themesource/atlas_core/native/core/widgets/colorpicker.js b/themesource/atlas_core/native/core/widgets/colorpicker.js new file mode 100644 index 0000000..dd0aadf --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/colorpicker.js @@ -0,0 +1,20 @@ +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Color Picker + + Default Class For Mendix Color Picker Widget +========================================================================== */ +export const com_mendix_widget_native_colorpicker_ColorPicker = { + container: { + // All ViewStyle properties are allowed + }, + thumbnail: { + // All ViewStyle properties are allowed + } +}; diff --git a/themesource/atlas_core/native/core/widgets/columnchart.js b/themesource/atlas_core/native/core/widgets/columnchart.js new file mode 100644 index 0000000..02a7865 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/columnchart.js @@ -0,0 +1,119 @@ +var _a, _b, _c, _d; +import { columnChart } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Column Chart + + Default Class For Mendix Column Chart Widget +========================================================================== */ +export const com_mendix_widget_native_columnchart_ColumnChart = { + container: { + // All ViewStyle properties are allowed + ...columnChart.container + }, + errorMessage: { + // All TextStyle properties are allowed + ...columnChart.errorMessage + }, + chart: { + // All ViewStyle properties are allowed + ...columnChart.chart + }, + grid: { + /* + Allowed properties: + - backgroundColor (string) + - dashArray (string) + - lineColor (string) + - padding (number) + - paddingBottom (number) + - paddingHorizontal (number) + - paddingLeft (number) + - paddingRight (number) + - paddingTop (number) + - paddingVertical (number) + - width (number) + */ + ...columnChart.grid + }, + xAxis: { + /* + Allowed properties: + - color (string) + - dashArray (string) + - fontFamily (string) + - fontSize (number) + - fontStyle ("normal" or "italic") + - fontWeight ("normal" or "bold" or "100" or "200" or "300" or "400" or "500" or "600" or "700" or "800" or "900") + - lineColor (string) + - width (number) + - label: All TextStyle properties are allowed and: + -relativePositionGrid ("bottom" or "right") + */ + ...columnChart.xAxis + }, + yAxis: { + /* + Allowed properties: + - color (string) + - dashArray (string) + - fontFamily (string) + - fontSize (number) + - fontStyle ("normal" or "italic") + - fontWeight ("normal" or "bold" or "100" or "200" or "300" or "400" or "500" or "600" or "700" or "800" or "900") + - lineColor (string) + - width (number) + - label: All TextStyle properties are allowed and: + - relativePositionGrid ("top" or "left") + */ + ...columnChart.yAxis + }, + columns: { + /* + Allowed properties: + - columnColorPalette (string with array of colors separated by ';') + - columnsOffset (number) + - customColumnStyles:{ + your_static_or_dynamic_attribute_value:{ + column: + Allowed properties: + - ending (number) + - columnColor (string) + - width (number) + label: + Allowed properties: + - fontFamily (string) + - fontSize (number) + - fontStyle ("normal" or "italic") + - fontWeight ("normal" or "bold" or "100" or "200" or "300" or "400" or "500" or "600" or "700" or "800" or "900") + + } + } + */ + ...columnChart.columns + }, + legend: { + container: { + // All ViewStyle properties are allowed + ...(_a = columnChart.legend) === null || _a === void 0 ? void 0 : _a.container + }, + item: { + // All ViewStyle properties are allowed + ...(_b = columnChart.legend) === null || _b === void 0 ? void 0 : _b.item + }, + indicator: { + // All ViewStyle properties are allowed + ...(_c = columnChart.legend) === null || _c === void 0 ? void 0 : _c.indicator + }, + label: { + // All TextStyle properties are allowed + ...(_d = columnChart.legend) === null || _d === void 0 ? void 0 : _d.label + } + } +}; diff --git a/themesource/atlas_core/native/core/widgets/container.js b/themesource/atlas_core/native/core/widgets/container.js new file mode 100644 index 0000000..3636ff5 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/container.js @@ -0,0 +1,27 @@ +import { container } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Container + + Default Class For Mendix Container Widget +========================================================================== */ +export const Container = { + container: { + // rippleColor & all ViewStyle properties are allowed + }, + containerDisabled: { + // All ViewStyle properties are allowed + opacity: container.containerDisabled.opacity + } +}; +export const ScrollContainer = { + container: { + // All ViewStyle properties are allowed + } +}; diff --git a/themesource/atlas_core/native/core/widgets/datepicker.js b/themesource/atlas_core/native/core/widgets/datepicker.js new file mode 100644 index 0000000..173d75b --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/datepicker.js @@ -0,0 +1,94 @@ +var _a, _b, _c, _d; +import { background, font, input } from "../../variables"; +import { TextBox, TextBoxVertical } from "./textbox"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Date Picker + + Default Class For Mendix Date Picker Widget +========================================================================== */ +export const DatePicker = { + container: { + // All ViewStyle properties are allowed + ...TextBox.container + }, + containerDisabled: { + // All ViewStyle properties are allowed + ...TextBox.containerDisabled + }, + valueContainerError: { + // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed + color: input.inputError.color, + borderColor: input.inputError.borderColor + }, + label: { + // numberOfLines and all TextStyle properties are allowed + ...TextBox.label + }, + labelDisabled: { + // All TextStyle properties are allowed + ...TextBox.labelDisabled + }, + pickerIOS: { + // All ViewStyle properties & "color" (type: string) are allowed + backgroundColor: background.primary, + color: font.colorTitle + }, + pickerBackdropIOS: { + // All ViewStyle properties are allowed + }, + pickerTopIOS: { + // All ViewStyle properties are allowed + backgroundColor: background.primary + }, + value: { + // All TextStyle properties are allowed + color: input.input.color, + borderColor: input.input.borderColor, + backgroundColor: input.input.backgroundColor, + fontSize: input.input.fontSize, + lineHeight: input.input.lineHeight, + fontFamily: font.family, + borderWidth: input.input.borderWidth, + borderRadius: input.input.borderRadius, + textAlignVertical: "center", + minWidth: input.input.minWidth, + minHeight: input.input.minHeight, + paddingHorizontal: input.input.paddingHorizontal, + paddingVertical: input.input.paddingVertical + }, + valueDisabled: { + // All TextStyle properties are allowed + color: (_a = TextBox.inputDisabled) === null || _a === void 0 ? void 0 : _a.color, + borderColor: (_b = TextBox.inputDisabled) === null || _b === void 0 ? void 0 : _b.borderColor, + backgroundColor: (_c = TextBox.inputDisabled) === null || _c === void 0 ? void 0 : _c.backgroundColor + }, + placeholder: { + // All TextStyle properties are allowed + color: input.input.placeholderTextColor + }, + placeholderDisabled: { + // All TextStyle properties are allowed + color: (_d = TextBox.inputDisabled) === null || _d === void 0 ? void 0 : _d.color + }, + validationMessage: { + // All TextStyle properties are allowed + ...TextBox.validationMessage + } +}; +export const DatePickerVertical = { + container: TextBoxVertical.container, + containerDisabled: TextBoxVertical.containerDisabled, + label: TextBoxVertical.label, + labelDisabled: TextBoxVertical.labelDisabled, + value: DatePicker.value, + valueDisabled: DatePicker.valueDisabled, + placeholder: DatePicker.placeholder, + validationMessage: TextBoxVertical.validationMessage +}; diff --git a/themesource/atlas_core/native/core/widgets/dropdown.js b/themesource/atlas_core/native/core/widgets/dropdown.js new file mode 100644 index 0000000..660af01 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/dropdown.js @@ -0,0 +1,162 @@ +var _a, _b, _c; +import { font, input } from "../../variables"; +import { TextBox, TextBoxVertical } from "./textbox"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Drop Down + + Default Class For Mendix Drop Down Widget +========================================================================== */ +export const DropDown = { + container: { + // All ViewStyle properties are allowed + ...TextBox.container + }, + containerDisabled: { + // All ViewStyle properties are allowed + ...TextBox.containerDisabled + }, + label: { + // numberOfLines and all TextStyle properties are allowed + ...TextBox.label + }, + labelDisabled: { + // All TextStyle properties are allowed + ...TextBox.labelDisabled + }, + value: { + // All TextStyle properties & placeholderTextColor are allowed + color: input.input.color, + placeholderTextColor: input.input.placeholderTextColor, + fontSize: input.input.fontSize, + lineHeight: input.input.lineHeight, + fontFamily: font.family, + overflow: "hidden", + textAlignVertical: "center" + }, + valueDisabled: { + // All TextStyle properties are allowed + color: (_a = TextBox.inputDisabled) === null || _a === void 0 ? void 0 : _a.color, + borderColor: (_b = TextBox.inputDisabled) === null || _b === void 0 ? void 0 : _b.borderColor, + backgroundColor: (_c = TextBox.inputDisabled) === null || _c === void 0 ? void 0 : _c.backgroundColor + }, + valueFocused: { + // All TextStyle properties are allowed + }, + validationMessage: { + // All TextStyle properties are allowed + ...TextBox.validationMessage + }, + /* New dropdown styles start */ + valueContainer: { + // All ViewStyle properties & rippleColor & activeOpacity & underlayColor are allowed + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", + rippleColor: input.valueContainer.rippleColor, + borderWidth: input.input.borderWidth, + borderRadius: input.input.borderRadius, + paddingHorizontal: input.input.paddingHorizontal, + paddingVertical: input.input.paddingVertical, + backgroundColor: input.input.backgroundColor, + borderColor: input.input.borderColor, + minWidth: input.input.minWidth, + minHeight: input.input.minHeight + }, + valueContainerDisabled: { + // All ViewStyle properties are allowed + }, + valueContainerFocused: { + // All ViewStyle properties are allowed + }, + valueContainerError: { + // All ViewStyle properties are allowed + color: input.inputError.color, + borderColor: input.inputError.borderColor + }, + iconStyle: { + // All TextStyle properties are allowed + color: input.input.color + }, + menuWrapper: { + // All ViewStyle properties are allowed + borderRadius: input.input.borderRadius, + shadowColor: "#000", + shadowOpacity: 0.2, + shadowRadius: 10, + elevation: 16, + backgroundColor: input.input.backgroundColor + }, + itemContainer: { + // All ViewStyle properties & rippleColor & activeOpacity & underlayColor are allowed + width: "100%", + maxWidth: undefined, + paddingVertical: input.itemContainer.paddingVertical, + paddingHorizontal: input.itemContainer.paddingHorizontal, + backgroundColor: input.itemContainer.backgroundColor, + underlayColor: input.inputContainer.underlayColor, + overflow: "hidden" + }, + item: { + // All TextStyle properties are allowed + color: input.item.color, + fontSize: input.item.fontSize + }, + selectedItem: { + // All TextStyle properties are allowed + color: input.selectedItem.color, + fontSize: input.selectedItem.fontSize, + backgroundColor: "transparent" + }, + selectedItemContainer: { + // All ViewStyle properties are allowed + width: "100%", + maxWidth: undefined, + borderWidth: input.selectedItemContainer.borderWidth, + borderRadius: input.selectedItemContainer.borderRadius, + borderColor: input.selectedItemContainer.borderColor, + backgroundColor: input.selectedItemContainer.backgroundColor + }, + /* New dropdown styles end */ + useUniformDesign: true, + /* Old dropdown styles start */ + pickerIOS: { + // All ViewStyle properties are allowed + backgroundColor: input.input.backgroundColor + }, + pickerItemIOS: { + // All TextStyle properties are allowed + }, + pickerBackdropIOS: { + // All ViewStyle properties are allowed + }, + pickerTopIOS: { + // All ViewStyle properties are allowed + backgroundColor: input.input.backgroundColor + } + /* Old dropdown styles end */ +}; +export const DropDownVertical = { + container: TextBoxVertical.container, + label: TextBoxVertical.label, + value: DropDown.value, + valueFocused: DropDown.valueFocused, + validationMessage: TextBoxVertical.validationMessage, + valueContainer: DropDown.valueContainer, + valueContainerFocused: DropDown.valueContainerFocused, + iconStyle: DropDown.iconStyle, + menuWrapper: DropDown.menuWrapper, + itemContainer: DropDown.itemContainer, + item: DropDown.item, + useUniformDesign: DropDown.useUniformDesign, + pickerIOS: DropDown.pickerIOS, + pickerItemIOS: DropDown.pickerItemIOS, + pickerBackdropIOS: DropDown.pickerBackdropIOS, + pickerTopIOS: DropDown.pickerTopIOS +}; diff --git a/themesource/atlas_core/native/core/widgets/feedback.js b/themesource/atlas_core/native/core/widgets/feedback.js new file mode 100644 index 0000000..85f5e40 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/feedback.js @@ -0,0 +1,85 @@ +import { Platform } from "react-native"; +import { background, border, brand, button, contrast, font, input } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Feedback + + Default Class For Mendix Feedback Widget +========================================================================== */ +export const com_mendix_widget_native_feedback_Feedback = { + floatingButton: { + // All ViewStyle properties are allowed + borderRadius: 0, + backgroundColor: background.secondary, + borderTopLeftRadius: button.container.borderRadius, + borderBottomLeftRadius: button.container.borderRadius, + elevation: 1.5, + shadowColor: "#000", + shadowOpacity: 0.2, + shadowRadius: 10, + shadowOffset: { + width: 0, + height: 2 + } + }, + dialog: { + // All ViewStyle properties are allowed + backgroundColor: background.primary + }, + title: { + // All TextStyle properties are allowed + color: font.colorTitle, + fontFamily: font.family + }, + textAreaInput: { + // placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed + color: input.input.color, + borderColor: input.input.borderColor, + backgroundColor: input.input.backgroundColor, + selectionColor: input.input.selectionColor, + placeholderTextColor: input.input.placeholderTextColor, + underlineColorAndroid: "transparent", + height: 100, + fontSize: input.input.fontSize, + fontFamily: font.family, + borderRadius: input.input.borderRadius, + borderTopWidth: input.input.borderWidth, + borderBottomWidth: input.input.borderWidth, + borderWidth: Platform.select({ android: border.width }), + textAlignVertical: "top", + paddingVertical: input.input.paddingVertical, + paddingHorizontal: input.input.paddingHorizontal + }, + switchLabel: { + // All TextStyle properties are allowed + color: input.label.color, + fontSize: input.label.fontSize, + fontFamily: font.family + }, + switchInput: { + // thumbColorOn, thumbColorOff, trackColorOn, trackColorOff and all TextStyle properties are allowed + margin: 0, + padding: 0, + marginRight: Platform.select({ ios: 0, android: -5 }), + thumbColorOn: background.primary, + trackColorOn: brand.success, + thumbColorOff: contrast.regular, + trackColorOff: contrast.lower + }, + button: { + // Just these 3 properties are allowed + color: brand.primary, + borderColor: border.color, + borderWidth: border.width // Required for IOS + }, + activityIndicator: { + // Only color is allowed + color: font.colorTitle + } +}; diff --git a/themesource/atlas_core/native/core/widgets/floatingactionbutton.js b/themesource/atlas_core/native/core/widgets/floatingactionbutton.js new file mode 100644 index 0000000..eda9fe7 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/floatingactionbutton.js @@ -0,0 +1,81 @@ +import { floatingActionButton, font } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Floating Action Button + + Default Class For Mendix Floating Action Button Widget +========================================================================== */ +export const com_mendix_widget_native_floatingactionbutton_FloatingActionButton = { + container: { + // All ViewStyle properties are allowed + margin: floatingActionButton.container.margin + }, + button: { + // Size, ripplecolor and all ViewStyle properties are allowed + size: floatingActionButton.button.size, + height: floatingActionButton.button.size, + width: floatingActionButton.button.size, + rippleColor: floatingActionButton.button.rippleColor, + backgroundColor: floatingActionButton.button.backgroundColor, + borderColor: floatingActionButton.button.borderColor, + borderRadius: floatingActionButton.button.size / 2, + borderWidth: 1, + elevation: 3, + shadowColor: "#000", + shadowOpacity: 0.3, + shadowRadius: 4, + shadowOffset: { + width: 0, + height: 2 + } + }, + buttonIcon: { + // Size and color are allowed + size: floatingActionButton.buttonIcon.size, + color: floatingActionButton.buttonIcon.color + }, + secondaryButton: { + // Size and all ViewStyle properties are allowed + size: floatingActionButton.secondaryButton.size, + backgroundColor: floatingActionButton.secondaryButton.backgroundColor, + elevation: 2, + shadowColor: "#000", + shadowOpacity: 0.3, + shadowRadius: 4, + shadowOffset: { + width: 0, + height: 2 + } + }, + secondaryButtonIcon: { + // Size and color are allowed + size: floatingActionButton.secondaryButtonIcon.size, + color: floatingActionButton.secondaryButtonIcon.color + }, + secondaryButtonCaption: { + // All TextStyle properties are allowed + color: floatingActionButton.secondaryButtonCaption.color, + fontSize: floatingActionButton.secondaryButtonCaption.fontSize, + lineHeight: floatingActionButton.secondaryButtonCaption.fontSize, + fontFamily: font.family + }, + secondaryButtonCaptionContainer: { + // All ViewStyle properties are allowed + backgroundColor: floatingActionButton.secondaryButtonCaptionContainer.backgroundColor, + borderColor: floatingActionButton.secondaryButtonCaptionContainer.borderColor, + marginHorizontal: 5, + elevation: 2, + shadowOpacity: 0.3, + shadowRadius: 4, + shadowOffset: { + width: 0, + height: 2 + } + } +}; diff --git a/themesource/atlas_core/native/core/widgets/gallery.js b/themesource/atlas_core/native/core/widgets/gallery.js new file mode 100644 index 0000000..fd4063d --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/gallery.js @@ -0,0 +1,60 @@ +import { font, button } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Gallery + + Default Class For Mendix Gallery Widget +========================================================================== */ +export const com_mendix_widget_native_gallery_Gallery = { + container: { + // All ViewStyle properties are allowed + }, + emptyPlaceholder: { + // All ViewStyle properties are allowed + }, + firstItem: { + // All ViewStyle properties are allowed + }, + lastItem: { + // All ViewStyle properties are allowed + }, + list: { + // All ViewStyle properties are allowed + }, + listItem: { + // All ViewStyle properties are allowed + }, + loadMoreButtonContainer: { + // All ViewStyle properties are allowed + alignSelf: "stretch" + }, + loadMoreButtonPressableContainer: { + // Ripplecolor and all ViewStyle properties are allowed + borderWidth: 1, + borderStyle: "solid", + rippleColor: button.container.rippleColor, + borderColor: button.primary.borderColor, + backgroundColor: button.primary.backgroundColor, + alignItems: "center", + justifyContent: "center", + borderRadius: button.container.borderRadius, + minWidth: button.container.minWidth, + minHeight: button.container.minHeight, + paddingVertical: button.container.paddingVertical, + paddingHorizontal: button.container.paddingHorizontal + }, + loadMoreButtonCaption: { + // All TextStyle properties are allowed + color: button.primary.color, + fontSize: button.caption.fontSize, + fontFamily: font.family, + fontWeight: button.caption.fontWeight, + lineHeight: font.lineHeight + } +}; diff --git a/themesource/atlas_core/native/core/widgets/gallerytextfilter.js b/themesource/atlas_core/native/core/widgets/gallerytextfilter.js new file mode 100644 index 0000000..197649b --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/gallerytextfilter.js @@ -0,0 +1,43 @@ +import { brand, input, spacing } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Gallery text filter + + Default Class For Mendix Gallery Text Filter Widget +========================================================================== */ +export const com_mendix_widget_native_gallerytextfilter_GalleryTextFilter = { + textInputContainer: { + // All ViewStyle properties are allowed + flexDirection: "row", + justifyContent: "space-between", + borderWidth: input.input.borderWidth, + borderColor: input.input.borderColor, + borderRadius: input.input.borderRadius, + paddingEnd: spacing.small + }, + textInputContainerFocused: { + // All ViewStyle properties are allowed + borderColor: brand.primary + }, + textInput: { + // All TextStyle properties are allowed + height: 40, + marginStart: spacing.regular, + width: "90%", + color: input.input.color, + backgroundColor: input.input.backgroundColor, + selectionColor: input.input.selectionColor, + placeholderTextColor: input.input.placeholderTextColor + }, + textInputClearIcon: { + // All ViewStyle properties are allowed + justifyContent: "center", + alignContent: "center" + } +}; diff --git a/themesource/atlas_core/native/core/widgets/image.js b/themesource/atlas_core/native/core/widgets/image.js new file mode 100644 index 0000000..8c5d2c9 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/image.js @@ -0,0 +1,55 @@ +import { contrast, image } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Image + + Default Class For Mendix Image Widgets +========================================================================== */ +export const Image = { + container: { + // rippleColor & all ViewStyle properties are allowed + rippleColor: contrast.lowest, + maxWidth: "100%", + maxHeight: "100%" + }, + containerDisabled: { + // All ViewStyle properties are allowed + }, + image: { + // All ImageStyle properties are allowed + maxWidth: "100%", + maxHeight: "100%", + resizeMode: "cover" + }, + imageDisabled: { + // All ImageStyle properties are allowed + opacity: image.imageDisabled.opacity + } +}; +export const ImageViewer = { + container: { + // RippleColor & All ViewStyle properties are allowed + rippleColor: contrast.lowest, + maxWidth: "100%", + maxHeight: "100%" + }, + containerDisabled: { + // All ViewStyle properties are allowed + }, + image: { + // All ImageStyle properties are allowed + maxWidth: "100%", + maxHeight: "100%", + resizeMode: "cover" + }, + imageDisabled: { + // All ImageStyle properties are allowed + opacity: image.imageDisabled.opacity + } +}; diff --git a/themesource/atlas_core/native/core/widgets/introscreen.js b/themesource/atlas_core/native/core/widgets/introscreen.js new file mode 100644 index 0000000..4e2dc34 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/introscreen.js @@ -0,0 +1,127 @@ +import { isIphoneWithNotch } from "../helpers/_functions/device"; +import { font, spacing, introScreen } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Intro Screen + + Default Class For Mendix Intro Screen Widget +========================================================================== */ +// Button styles when the chose to show the indicator above the buttons +export const introScreenButtonPaginationAbove = { + container: { + // Ripplecolor and all ViewStyle properties are allowed + flex: 1, + flexDirection: "row", + alignSelf: "stretch", + alignItems: "center", + justifyContent: "center", + paddingVertical: introScreen.buttonPaginationAbove.container.paddingVertical, + backgroundColor: introScreen.buttonPaginationAbove.container.backgroundColor + }, + icon: { + // Size and color are allowed + color: introScreen.button.icon.color, + size: introScreen.button.icon.size + }, + caption: { + // All TextStyle properties are allowed + color: introScreen.button.caption.color, + fontSize: introScreen.button.caption.fontSize, + fontFamily: font.family, + fontWeight: introScreen.button.caption.fontWeight, + textTransform: introScreen.button.caption.textTransform, + paddingHorizontal: introScreen.button.caption.paddingHorizontal + } +}; +// Button styles when the chose to show the indicator between the buttons +export const introScreenButtonPaginationBetween = { + container: { + // Ripplecolor and all ViewStyle properties are allowed + flexDirection: "row", + alignItems: "center", + justifyContent: "center" + }, + icon: { + // Size and color are allowed + color: introScreen.button.icon.color, + size: introScreen.button.icon.size + }, + caption: { + // All TextStyle properties are allowed + color: introScreen.button.caption.color, + fontSize: introScreen.button.caption.fontSize, + fontFamily: font.family, + fontWeight: introScreen.button.caption.fontWeight, + textTransform: introScreen.button.caption.textTransform, + paddingHorizontal: introScreen.button.caption.paddingHorizontal + } +}; +// Default styles +export const com_mendix_widget_native_introscreen_IntroScreen = { + fullscreenContainer: { + // All ViewStyle properties are allowed + backgroundColor: introScreen.fullscreenContainer.backgroundColor + }, + popupContainer: { + // All ViewStyle properties are allowed + paddingVertical: introScreen.popupContainer.paddingVertical, + paddingHorizontal: introScreen.popupContainer.paddingHorizontal, + backgroundColor: introScreen.popupContainer.backgroundColor + }, + // Pagination styles + paginationContainer: { + // All ViewStyle properties are allowed + position: "absolute", + left: 0, + right: 0, + width: "100%", + marginTop: spacing.largest, + bottom: isIphoneWithNotch ? 22 : 0, + justifyContent: "space-between", + alignItems: "center" + }, + paginationText: { + // All TextStyle properties are allowed + color: introScreen.pagination.text.color, + fontSize: introScreen.pagination.text.fontSize, + fontFamily: font.family + }, + dotStyle: { + // All ViewStyle properties are allowed + width: introScreen.pagination.dotStyle.size, + height: introScreen.pagination.dotStyle.size, + backgroundColor: introScreen.pagination.dotStyle.backgroundColor + }, + activeDotStyle: { + // All ViewStyle properties are allowed + width: introScreen.pagination.activeDotStyle.size, + height: introScreen.pagination.activeDotStyle.size, + backgroundColor: introScreen.pagination.activeDotStyle.backgroundColor + }, + // Button styles + paginationAbove: { + buttonsContainer: { + // All ViewStyle properties are allowed + flex: 1, + flexDirection: "row", + justifyContent: "center", + width: "100%" + }, + buttonSkip: introScreenButtonPaginationAbove, + buttonPrevious: introScreenButtonPaginationAbove, + buttonNext: introScreenButtonPaginationAbove, + buttonDone: introScreenButtonPaginationAbove + }, + paginationBetween: { + buttonSkip: introScreenButtonPaginationBetween, + buttonPrevious: introScreenButtonPaginationBetween, + buttonNext: introScreenButtonPaginationBetween, + buttonDone: introScreenButtonPaginationBetween + } +}; diff --git a/themesource/atlas_core/native/core/widgets/layoutgrid.js b/themesource/atlas_core/native/core/widgets/layoutgrid.js new file mode 100644 index 0000000..a0c8365 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/layoutgrid.js @@ -0,0 +1,121 @@ +import { layoutGrid } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Intro Screen + + Default Class For Mendix Layoutgrid Widget +========================================================================== */ +export const LayoutGrid = { + container: {} +}; +export const row = { + container: { + flexDirection: "row", + flexWrap: "wrap", + marginHorizontal: -layoutGrid.gutterSize + } +}; +export const col = { + container: { + flex: 1, + paddingHorizontal: layoutGrid.gutterSize + } +}; +export const colFitToContent = { + container: { + flex: -1, + paddingHorizontal: layoutGrid.gutterSize + } +}; +export const col1 = { + container: { + flexBasis: "8.333%", + paddingHorizontal: layoutGrid.gutterSize + } +}; +export const col2 = { + container: { + flexBasis: "16.666%", + paddingHorizontal: layoutGrid.gutterSize + } +}; +export const col3 = { + container: { + flexBasis: "25%", + paddingHorizontal: layoutGrid.gutterSize + } +}; +export const col4 = { + container: { + flexBasis: "33.333%", + paddingHorizontal: layoutGrid.gutterSize + } +}; +export const col5 = { + container: { + flexBasis: "41.666%", + paddingHorizontal: layoutGrid.gutterSize + } +}; +export const col6 = { + container: { + flexBasis: "50%", + paddingHorizontal: layoutGrid.gutterSize + } +}; +export const col7 = { + container: { + flexBasis: "58.333%", + paddingHorizontal: layoutGrid.gutterSize + } +}; +export const col8 = { + container: { + flexBasis: "66.666%", + paddingHorizontal: layoutGrid.gutterSize + } +}; +export const col9 = { + container: { + flexBasis: "75%", + paddingHorizontal: layoutGrid.gutterSize + } +}; +export const col10 = { + container: { + flexBasis: "83.333%", + paddingHorizontal: layoutGrid.gutterSize + } +}; +export const col11 = { + container: { + flexBasis: "91.666%", + paddingHorizontal: layoutGrid.gutterSize + } +}; +export const col12 = { + container: { + flexBasis: "100%", + paddingHorizontal: layoutGrid.gutterSize + } +}; +export const noGutters = { + container: { + paddingLeft: 0, + paddingRight: 0, + paddingHorizontal: 0 + } +}; +export const noGuttersRow = { + container: { + marginLeft: 0, + marginRight: 0, + marginHorizontal: 0 + } +}; diff --git a/themesource/atlas_core/native/core/widgets/linechart.js b/themesource/atlas_core/native/core/widgets/linechart.js new file mode 100644 index 0000000..99b7ba6 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/linechart.js @@ -0,0 +1,168 @@ +import { border, brand, font, spacing } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Line Chart + + Default Class For Mendix Line Chart Widget +========================================================================== */ +export const com_mendix_widget_native_linechart_LineChart = { + container: { + // All ViewStyle properties are allowed + }, + errorMessage: { + // All TextStyle properties are allowed + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal + }, + chart: { + // All ViewStyle properties are allowed + }, + grid: { + /* + Allowed properties: + - backgroundColor (string) + - dashArray (string) + - lineColor (string) + - lineWidth (number) + - padding (number) + - paddingBottom (number) + - paddingHorizontal (number) + - paddingLeft (number) + - paddingRight (number) + - paddingTop (number) + - paddingVertical (number) + */ + lineColor: border.color, + paddingBottom: 32, + paddingLeft: 32, + paddingRight: 8, + paddingTop: 8 + }, + xAxis: { + /* + Allowed properties: + - color (string) + - dashArray (string) + - fontFamily (string) + - fontSize (number) + - fontStyle ("normal" or "italic") + - fontWeight ("normal" or "bold" or "100" or "200" or "300" or "400" or "500" or "600" or "700" or "800" or "900") + - lineColor (string) + - lineWidth (number) + */ + color: font.colorTitle, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal, + lineColor: border.color, + label: { + /* + All TextStyle properties are allowed and: + - relativePositionGrid ("bottom" or "right") + */ + color: font.colorParagraph, + alignSelf: "center", + marginHorizontal: 0, + marginVertical: spacing.small, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal, + relativePositionGrid: "bottom" + } + }, + yAxis: { + /* + Allowed properties: + - color (string) + - dashArray (string) + - fontFamily (string) + - fontSize (number) + - fontStyle ("normal" or "italic") + - fontWeight ("normal" or "bold" or "100" or "200" or "300" or "400" or "500" or "600" or "700" or "800" or "900") + - lineColor (string) + - lineWidth (number) + */ + color: font.colorTitle, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal, + lineColor: border.color, + label: { + /* + All TextStyle properties are allowed and: + - relativePositionGrid ("top" or "left") + */ + color: font.colorParagraph, + marginHorizontal: 0, + marginVertical: spacing.small, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal, + relativePositionGrid: "top" + } + }, + lines: { + /* + Allowed properties: + - lineColorPalette (string with array of colors separated by ';') + */ + lineColorPalette: Object.entries(brand) + .reduce((accumulator, [key, value]) => (key.endsWith("Light") ? accumulator : [...accumulator, value]), []) + .join(";"), + customLineStyles: { + any_custom_line_style_name: { + line: { + /* + Allowed properties: + - dashArray (string) + - ending ("flat" or "round") + - lineColor (string) + - lineWidth (number) + */ + }, + markers: { + /* + Allowed properties: + - backgroundColor (string) + - borderColor (string) + - borderWidth (number) + - display ("false" or "underneath" or "onTop") + - size (number) + - symbol ("circle" or "diamond" or "plus" or "minus" or "square" or "star" or "triangleDown" or "triangleUp") + */ + } + } + } + }, + legend: { + container: { + // All ViewStyle properties are allowed + justifyContent: "flex-start", + marginHorizontal: 0, + marginVertical: spacing.small + }, + item: { + // All ViewStyle properties are allowed + padding: 0, + paddingRight: spacing.regular + }, + indicator: { + // All ViewStyle properties are allowed + marginRight: spacing.small + }, + label: { + // All TextStyle properties are allowed + color: font.colorTitle, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal + } + } +}; diff --git a/themesource/atlas_core/native/core/widgets/listview.js b/themesource/atlas_core/native/core/widgets/listview.js new file mode 100644 index 0000000..5ec4e2c --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/listview.js @@ -0,0 +1,24 @@ +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + List View + + Default Class For Mendix List View Widget +========================================================================== */ +export const ListView = { + container: { + // All ViewStyle properties are allowed + }, + listItem: { + // All ViewStyle properties are allowed + }, + listItemDisabled: { + // All ViewStyle properties are allowed + opacity: 0.6 + } +}; diff --git a/themesource/atlas_core/native/core/widgets/listviewswipe.js b/themesource/atlas_core/native/core/widgets/listviewswipe.js new file mode 100644 index 0000000..6344352 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/listviewswipe.js @@ -0,0 +1,38 @@ +import { background, listViewSwipe } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + List View Swipe + + Default Class For Mendix List View Swipe Widget +========================================================================== */ +export const com_mendix_widget_native_listviewswipe_ListViewSwipe = { + container: { + // All ViewStyle properties are allowed + flex: 1, + alignItems: "stretch", + justifyContent: "space-between", + backgroundColor: background.primary + }, + leftAction: { + // PanelSize & All ViewStyle properties are allowed + panelSize: listViewSwipe.leftAction.panelSize, + flex: 1, + flexDirection: "row", + alignItems: "stretch", + backgroundColor: listViewSwipe.leftAction.backgroundColor + }, + rightAction: { + // PanelSize & All ViewStyle properties are allowed + panelSize: listViewSwipe.rightAction.panelSize, + flex: 1, + flexDirection: "row", + alignItems: "stretch", + backgroundColor: listViewSwipe.rightAction.backgroundColor + } +}; diff --git a/themesource/atlas_core/native/core/widgets/maps.js b/themesource/atlas_core/native/core/widgets/maps.js new file mode 100644 index 0000000..1f5e42b --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/maps.js @@ -0,0 +1,33 @@ +import { brand } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Maps + + Default Class For Mendix Maps Widget +========================================================================== */ +export const com_mendix_widget_native_maps_Maps = { + container: { + // All ViewStyle properties are allowed + flex: 1, + maxWidth: "100%", + aspectRatio: 4 / 2 + }, + loadingOverlay: { + // All ViewStyle properties are allowed + }, + loadingIndicator: { + // Only color is allowed + color: brand.primary + }, + marker: { + // Only color & opacity are allowed + color: brand.primary, + opacity: 1 + } +}; diff --git a/themesource/atlas_core/native/core/widgets/navigation.js b/themesource/atlas_core/native/core/widgets/navigation.js new file mode 100644 index 0000000..e77a35c --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/navigation.js @@ -0,0 +1,75 @@ +import { border, font, navigation, spacing } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + BottomBar / ProgressOverlay + + Default Class For Mendix BottomBar and ProgressOverlay +========================================================================== */ +export const navigationStyle = { + bottomBar: { + container: { + // All ViewStyle properties are allowed + backgroundColor: navigation.bottomBar.backgroundColor + }, + label: { + // All TextStyle properties are allowed + color: navigation.bottomBar.color, + fontFamily: font.family, + fontSize: navigation.bottomBar.fontSize + }, + selectedLabel: { + // All TextStyle properties are allowed + color: navigation.bottomBar.selectedTextColor, + fontFamily: font.family, + fontSize: navigation.bottomBar.fontSize + }, + icon: { + // All TextStyle properties are allowed + color: navigation.bottomBar.color, + fontSize: navigation.bottomBar.iconSize + }, + selectedIcon: { + // All TextStyle properties are allowed + color: navigation.bottomBar.selectedIconColor, + fontSize: navigation.bottomBar.iconSize + } + }, + progressOverlay: { + background: { + // All ViewStyle properties are allowed + backgroundColor: navigation.progressOverlay.backgroundColor + }, + container: { + // All ViewStyle properties are allowed + backgroundColor: navigation.progressOverlay.containerBackgroundColor, + paddingHorizontal: spacing.largest, + paddingVertical: spacing.large, + borderRadius: border.radiusSmall, + elevation: navigation.progressOverlay.elevation, + shadowColor: navigation.progressOverlay.shadowColor, + shadowOpacity: navigation.progressOverlay.shadowOpacity, + shadowRadius: navigation.progressOverlay.shadowRadius, + shadowOffset: { + width: 0, + height: 2 + } + }, + activityIndicator: { + // Color, Size & All ViewStyle properties are allowed + color: navigation.progressOverlay.activityIndicatorColor + }, + text: { + // All TextStyle properties are allowed + color: navigation.progressOverlay.color, + marginTop: spacing.small, + fontFamily: font.family, + fontSize: navigation.progressOverlay.fontSize + } + } +}; diff --git a/themesource/atlas_core/native/core/widgets/pagetitle.js b/themesource/atlas_core/native/core/widgets/pagetitle.js new file mode 100644 index 0000000..aa20b25 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/pagetitle.js @@ -0,0 +1,24 @@ +import { font } from "../../variables"; +import { TextHeading1 } from "./typography"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Page Title + + Default Class For Mendix Page Title Widget +========================================================================== */ +export const PageTitle = { + container: { + // All ViewStyle properties are allowed + }, + text: { + // All TextStyle properties are allowed + ...TextHeading1.text, + color: font.colorTitle + } +}; diff --git a/themesource/atlas_core/native/core/widgets/piedoughnutchart.js b/themesource/atlas_core/native/core/widgets/piedoughnutchart.js new file mode 100644 index 0000000..7639a0c --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/piedoughnutchart.js @@ -0,0 +1,57 @@ +import { brand } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Bar Chart + + Default Class For Mendix Bar Chart Widget +========================================================================== */ +export const com_mendix_widget_native_piedoughnutchart_PieDoughnutChart = { + container: { + // All ViewStyle properties are allowed + flex: 1 + }, + slices: { + /* + Allowed properties: + - colorPalette (string with array of colors separated by ';') + - innerRadius (number) + - padding (number) + - paddingBottom (number) + - paddingHorizontal (number) + - paddingLeft (number) + - paddingRight (number) + - paddingTop (number) + - paddingVertical (number) + */ + padding: 40, + colorPalette: Object.entries(brand) + .reduce((accumulator, [key, value]) => (key.endsWith("Light") ? accumulator : [...accumulator, value]), []) + .join(";"), + customStyles: { + your_defined_key: { + slice: { + /* + Allowed properties: + - color (string) + */ + }, + label: { + /* + Allowed properties: + - color (string) + - fontFamily (string) + - fontSize (number) + - fontStyle ("normal" or "italic") + - fontWeight ("normal" or "bold" or "100" or "200" or "300" or "400" or "500" or "600" or "700" or "800" or "900") + */ + } + } + } + } +}; diff --git a/themesource/atlas_core/native/core/widgets/popupmenu.js b/themesource/atlas_core/native/core/widgets/popupmenu.js new file mode 100644 index 0000000..0cb7700 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/popupmenu.js @@ -0,0 +1,59 @@ +import { brand, contrast, font, background, border } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Popup Menu + + Default Class For Mendix Popup Menu Widget +========================================================================== */ +export const com_mendix_widget_native_popupmenu_PopupMenu = { + container: { + // All ViewStyle properties are allowed + backgroundColor: background.secondary, + borderRadius: 10, + shadowColor: "#000", + shadowOpacity: 0.2, + shadowRadius: 10, + elevation: 16 + }, + custom: { + container: { + // All ViewStyle properties are allowed + }, + itemStyle: { + rippleColor: contrast.lower + } + }, + basic: { + dividerColor: border.color, + container: { + // All ViewStyle properties are allowed + height: 40 + }, + itemStyle: { + ellipsizeMode: "tail", + rippleColor: contrast.lower, + defaultStyle: { + // All TextStyle properties are allowed + fontSize: font.size, + color: font.colorTitle + }, + primaryStyle: { + // All TextStyle properties are allowed + color: brand.primary + }, + dangerStyle: { + // All TextStyle properties are allowed + color: brand.danger + }, + customStyle: { + // All TextStyle properties are allowed + } + } + } +}; diff --git a/themesource/atlas_core/native/core/widgets/progressbar.js b/themesource/atlas_core/native/core/widgets/progressbar.js new file mode 100644 index 0000000..7e4dc94 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/progressbar.js @@ -0,0 +1,35 @@ +import { progressBar } from "../../variables"; +import { TextBox } from "./textbox"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Progress Bar + + Default Class For Mendix Progress Bar Widget +========================================================================== */ +export const com_mendix_widget_native_progressbar_ProgressBar = { + container: { + // All ViewStyle properties are allowed + alignSelf: "stretch" + }, + bar: { + // All ViewStyle properties are allowed + height: progressBar.bar.height, + borderWidth: 0, + borderRadius: progressBar.bar.height / 2, + backgroundColor: progressBar.bar.backgroundColor + }, + fill: { + // Only the backgroundColor property is allowed + backgroundColor: progressBar.fill.backgroundColor + }, + validationMessage: { + // All TextStyle properties are allowed + ...TextBox.validationMessage + } +}; diff --git a/themesource/atlas_core/native/core/widgets/progresscircle.js b/themesource/atlas_core/native/core/widgets/progresscircle.js new file mode 100644 index 0000000..a0cd98c --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/progresscircle.js @@ -0,0 +1,41 @@ +import { font, progressCircle } from "../../variables"; +import { TextBox } from "./textbox"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Progress Circle + + Default Class For Mendix Progress Circle Widget +========================================================================== */ +export const com_mendix_widget_native_progresscircle_ProgressCircle = { + container: { + // All ViewStyle properties are allowed + }, + circle: { + // Only the size & borderWidth & borderColor properties are allowed + size: progressCircle.circle.size, + borderWidth: 0 + }, + fill: { + // Only the width & backgroundColor & lineCapRounded properties are allowed + width: progressCircle.fill.width, + lineCapRounded: progressCircle.fill.lineCapRounded, + backgroundColor: progressCircle.fill.backgroundColor + }, + text: { + // All TextStyle properties are allowed + color: progressCircle.text.color, + fontSize: progressCircle.text.fontSize, + fontWeight: progressCircle.text.fontWeight, + fontFamily: font.family + }, + validationMessage: { + // All TextStyle properties are allowed + ...TextBox.validationMessage + } +}; diff --git a/themesource/atlas_core/native/core/widgets/qrcode.js b/themesource/atlas_core/native/core/widgets/qrcode.js new file mode 100644 index 0000000..ce19cdb --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/qrcode.js @@ -0,0 +1,24 @@ +import { background, contrast } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + QR Code + + Default Class For Mendix QR Code Widget +========================================================================== */ +export const com_mendix_widget_native_qrcode_QRCode = { + container: { + // All ViewStyle properties are allowed + }, + qrcode: { + // Only size, color and backgroundColor are allowed + size: 100, + color: contrast.highest, + backgroundColor: background.primary + } +}; diff --git a/themesource/atlas_core/native/core/widgets/radiobuttons.js b/themesource/atlas_core/native/core/widgets/radiobuttons.js new file mode 100644 index 0000000..c60d753 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/radiobuttons.js @@ -0,0 +1,48 @@ +import { radioButtons } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + RadioButtons + + Default Class For Mendix RadioButtons Widget +========================================================================== */ +export const com_mendix_widget_native_radiobuttons_RadioButtons = { + labelTextStyle: { + // All TextStyle properties are allowed + ...radioButtons.labelTextStyle + }, + radioButtonItemContainerStyle: { + // All ViewStyle properties are allowed + ...radioButtons.radioButtonItemContainerStyle + }, + radioButtonItemContainerHorizontalStyle: { + // All ViewStyle properties are allowed + ...radioButtons.radioButtonItemContainerHorizontalStyle + }, + circularButtonStyle: { + // All ViewStyle properties are allowed + ...radioButtons.circularButtonStyle + }, + activeButtonStyle: { + // All ViewStyle properties are allowed + ...radioButtons.activeButtonStyle + }, + radioButtonItemContainerDisabledStyle: { + // In case radio buttons is not selectable + // All ViewStyle properties are allowed + ...radioButtons.radioButtonItemContainerDisabledStyle + }, + radioButtonItemTitleStyle: { + // All TextStyle properties are allowed + ...radioButtons.radioButtonItemTitleStyle + }, + validationMessage: { + // All TextStyle properties are allowed + ...radioButtons.validationMessage + } +}; diff --git a/theme/styles/native/core/widgets/rangeslider.js b/themesource/atlas_core/native/core/widgets/rangeslider.js similarity index 100% rename from theme/styles/native/core/widgets/rangeslider.js rename to themesource/atlas_core/native/core/widgets/rangeslider.js diff --git a/themesource/atlas_core/native/core/widgets/rating.js b/themesource/atlas_core/native/core/widgets/rating.js new file mode 100644 index 0000000..a6250cf --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/rating.js @@ -0,0 +1,30 @@ +import { spacing, rating } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Rating + + Default Class For Mendix Rating Widget +========================================================================== */ +export const com_mendix_widget_native_rating_Rating = { + container: { + // All ViewStyle properties are allowed + justifyContent: "center" + }, + containerDisabled: { + // All ViewStyle properties are allowed + opacity: rating.containerDisabled.opacity + }, + icon: { + // Size, color, selectedColor & all ViewStyle properties are allowed + size: rating.icon.size, + marginRight: spacing.smaller, + color: rating.icon.color, + selectedColor: rating.icon.selectedColor + } +}; diff --git a/themesource/atlas_core/native/core/widgets/referenceselector.js b/themesource/atlas_core/native/core/widgets/referenceselector.js new file mode 100644 index 0000000..7dc9589 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/referenceselector.js @@ -0,0 +1,125 @@ +import { DropDown, DropDownVertical } from "./dropdown"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Reference Selector + + Default Class For Mendix Reference Selector Widget +========================================================================== */ +export const ReferenceSelector = { + container: { + // All ViewStyle properties are allowed + ...DropDown.container + }, + containerDisabled: { + // All ViewStyle properties are allowed + ...DropDown.containerDisabled + }, + label: { + // numberOfLines and all TextStyle properties are allowed + ...DropDown.label + }, + labelDisabled: { + // All TextStyle properties are allowed + ...DropDown.labelDisabled + }, + value: { + // All TextStyle properties & placeholderTextColor are allowed + ...DropDown.value + }, + valueDisabled: { + // All TextStyle properties are allowed + ...DropDown.valueDisabled + }, + valueFocused: { + // All TextStyle properties are allowed + ...DropDown.valueFocused + }, + validationMessage: { + // All TextStyle properties are allowed + ...DropDown.validationMessage + }, + /* New dropdown styles start */ + valueContainer: { + // All ViewStyle properties & rippleColor are allowed + ...DropDown.valueContainer + }, + valueContainerDisabled: { + // All ViewStyle properties are allowed + }, + valueContainerFocused: { + // All ViewStyle properties are allowed + ...DropDown.valueContainerFocused + }, + valueContainerError: { + // All ViewStyle properties are allowed + ...DropDown.valueContainerError + }, + iconStyle: { + // All TextStyle properties are allowed + ...DropDown.iconStyle + }, + menuWrapper: { + // All ViewStyle properties are allowed + ...DropDown.menuWrapper + }, + itemContainer: { + // All ViewStyle properties are allowed + ...DropDown.itemContainer + }, + item: { + // All TextStyle properties are allowed + ...DropDown.item + }, + selectedItem: { + // All TextStyle properties are allowed + ...DropDown.selectedItem + }, + selectedItemContainer: { + // All ViewStyle properties are allowed + ...DropDown.selectedItemContainer + }, + /* New dropdown styles end */ + useUniformDesign: DropDown.useUniformDesign, + /* Old dropdown styles start */ + pickerIOS: { + // All ViewStyle properties are allowed + ...DropDown.pickerIOS + }, + pickerItemIOS: { + // All TextStyle properties are allowed + ...DropDown.pickerItemIOS + }, + pickerBackdropIOS: { + // All ViewStyle properties are allowed + ...DropDown.pickerBackdropIOS + }, + pickerTopIOS: { + // All ViewStyle properties are allowed + ...DropDown.pickerTopIOS + } + /* Old dropdown styles end */ +}; +export const ReferenceSelectorVertical = { + container: DropDownVertical.container, + label: DropDownVertical.label, + value: DropDownVertical.value, + valueFocused: DropDownVertical.valueFocused, + validationMessage: DropDownVertical.validationMessage, + valueContainer: DropDownVertical.valueContainer, + valueContainerFocused: DropDownVertical.valueContainerFocused, + iconStyle: DropDownVertical.iconStyle, + menuWrapper: DropDownVertical.menuWrapper, + itemContainer: DropDownVertical.itemContainer, + item: DropDownVertical.item, + useUniformDesign: DropDownVertical.useUniformDesign, + pickerIOS: DropDownVertical.pickerIOS, + pickerItemIOS: DropDownVertical.pickerItemIOS, + pickerBackdropIOS: DropDownVertical.pickerBackdropIOS, + pickerTopIOS: DropDownVertical.pickerTopIOS +}; diff --git a/themesource/atlas_core/native/core/widgets/safeareaview.js b/themesource/atlas_core/native/core/widgets/safeareaview.js new file mode 100644 index 0000000..5d187b5 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/safeareaview.js @@ -0,0 +1,17 @@ +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Container + + Default Class For Mendix Safe Area View Widget +========================================================================== */ +export const com_mendix_widget_native_safeareaview_SafeAreaView = { + container: { + // All ViewStyle properties are allowed + } +}; diff --git a/themesource/atlas_core/native/core/widgets/slider.js b/themesource/atlas_core/native/core/widgets/slider.js new file mode 100644 index 0000000..2e8f83d --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/slider.js @@ -0,0 +1,76 @@ +import { slider } from "../../variables"; +import { TextBox } from "./textbox"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Slider + + Default Class For Mendix Slider Widget +========================================================================== */ +export const com_mendix_widget_native_slider_Slider = { + container: { + // All ViewStyle properties are allowed + alignSelf: "stretch" + }, + track: { + // All ViewStyle properties are allowed + height: slider.track.height, + backgroundColor: slider.track.backgroundColor + }, + trackDisabled: { + // All ViewStyle properties are allowed + height: slider.track.height, + backgroundColor: slider.trackDisabled.backgroundColor, + opacity: slider.trackDisabled.opacity + }, + highlight: { + // All ViewStyle properties are allowed + height: slider.track.height, + backgroundColor: slider.highlight.backgroundColor + }, + highlightDisabled: { + // All ViewStyle properties are allowed + height: slider.track.height, + backgroundColor: slider.highlightDisabled.backgroundColor + }, + marker: { + // All ViewStyle properties are allowed + backgroundColor: slider.marker.backgroundColor, + width: slider.marker.size, + height: slider.marker.size, + borderRadius: slider.marker.size / 2, + borderColor: slider.marker.borderColor, + elevation: 2, + shadowColor: "#000", + shadowOpacity: 0.1, + shadowOffset: { width: 0, height: 1 } + }, + markerActive: { + // All ViewStyle properties are allowed + width: slider.markerActive.size, + height: slider.markerActive.size, + borderRadius: slider.markerActive.size / 2, + borderWidth: 0 + }, + markerDisabled: { + // All ViewStyle properties are allowed + backgroundColor: slider.markerDisabled.backgroundColor, + width: slider.markerDisabled.size, + height: slider.markerDisabled.size, + borderRadius: slider.markerDisabled.size / 2, + borderColor: slider.markerDisabled.borderColor, + elevation: 2, + shadowColor: "#000", + shadowOpacity: 0.1, + shadowOffset: { width: 0, height: 1 } + }, + validationMessage: { + // All TextStyle properties are allowed + ...TextBox.validationMessage + } +}; diff --git a/themesource/atlas_core/native/core/widgets/switch.js b/themesource/atlas_core/native/core/widgets/switch.js new file mode 100644 index 0000000..402a48a --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/switch.js @@ -0,0 +1,63 @@ +import { Platform } from "react-native"; +import { background, backgroundDefaults, border, brand, font, spacing } from "../../variables"; +import { TextBox } from "./textbox"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Switch + + Default Class For Mendix Switch Widget +========================================================================== */ +export const com_mendix_widget_native_switch_Switch = { + container: { + // All ViewStyle properties are allowed + ...TextBox.container, + paddingVertical: spacing.smallest, + justifyContent: "center" + }, + containerDisabled: { + // All ViewStyle properties are allowed + ...TextBox.containerDisabled + }, + label: { + // numberOfLines and all TextStyle properties are allowed + ...TextBox.label + }, + labelDisabled: { + // All TextStyle properties are allowed + ...TextBox.labelDisabled + }, + input: { + // thumbColorOn, thumbColorOff, trackColorOn, trackColorOff and all TextStyle properties are allowed + backgroundColor: "transparent", + marginRight: Platform.select({ android: -3 }), + thumbColorOn: backgroundDefaults.primaryLight, + trackColorOn: brand.primary, + thumbColorOff: "#FFF", + trackColorOff: border.color + }, + inputDisabled: { + // thumbColorOn, thumbColorOff, trackColorOn, trackColorOff and all TextStyle properties are allowed + thumbColorOn: background.secondary, + trackColorOn: font.colorDisabled, + thumbColorOff: background.secondary, + trackColorOff: border.color + }, + inputError: { + // thumbColorOn, thumbColorOff, trackColorOn, trackColorOff and all TextStyle properties are allowed + thumbColorOn: backgroundDefaults.primaryLight, + trackColorOn: brand.danger, + thumbColorOff: "#FFF", + trackColorOff: brand.danger + }, + validationMessage: { + // All TextStyle properties are allowed + ...TextBox.validationMessage, + alignSelf: "stretch" + } +}; diff --git a/themesource/atlas_core/native/core/widgets/tabcontainer.js b/themesource/atlas_core/native/core/widgets/tabcontainer.js new file mode 100644 index 0000000..1f68372 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/tabcontainer.js @@ -0,0 +1,71 @@ +import { badge, font, tabContainer } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Tab Container + + Default Class For Mendix Tab Container Widget +========================================================================== */ +export const TabContainer = { + container: { + // All ViewStyle properties are allowed + flex: 1 + }, + tabBar: { + // bounces, pressColor, pressOpacity, scrollEnabled and all ViewStyle properties are allowed + bounces: true, + scrollEnabled: false, + pressOpacity: 0.8, + pressColor: tabContainer.tabBar.pressColor, + backgroundColor: tabContainer.tabBar.backgroundColor, + height: 48, + justifyContent: "center" + }, + indicator: { + // All ViewStyle properties are allowed + backgroundColor: tabContainer.indicator.backgroundColor, + height: tabContainer.indicator.height + }, + tab: { + // All ViewStyle properties are allowed + padding: undefined, + minHeight: undefined, + paddingVertical: tabContainer.tab.paddingVertical + }, + label: { + // All TextStyle properties are allowed + color: tabContainer.label.color, + fontSize: tabContainer.label.fontSize, + fontFamily: font.family, + fontWeight: tabContainer.label.fontWeight, + textTransform: tabContainer.label.textTransform + }, + activeLabel: { + // All TextStyle properties are allowed + color: tabContainer.activeLabel.color, + fontSize: tabContainer.activeLabel.fontSize, + fontFamily: font.family, + fontWeight: tabContainer.activeLabel.fontWeight, + textTransform: tabContainer.activeLabel.textTransform + }, + badgeContainer: { + // All ViewStyle properties are allowed + borderRadius: tabContainer.badgeContainer.borderRadius, + backgroundColor: badge.default.backgroundColor, + paddingVertical: tabContainer.badgeContainer.paddingVertical, + paddingHorizontal: tabContainer.badgeContainer.paddingHorizontal, + marginLeft: 8 + }, + badgeCaption: { + // All TextStyle properties are allowed + fontSize: font.size, + color: badge.default.color, + fontFamily: font.family, + fontWeight: badge.fontWeight + } +}; diff --git a/themesource/atlas_core/native/core/widgets/textarea.js b/themesource/atlas_core/native/core/widgets/textarea.js new file mode 100644 index 0000000..ab4f552 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/textarea.js @@ -0,0 +1,83 @@ +var _a, _b, _c, _d, _e, _f; +import { TextBox, TextBoxVertical } from "./textbox"; +import { input } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Text Area + + Default Class For Mendix Text Area Widget +========================================================================== */ +export const TextArea = { + container: { + // All ViewStyle properties are allowed + ...TextBox.container + }, + containerDisabled: { + // All ViewStyle properties are allowed + ...TextBox.containerDisabled + }, + label: { + // numberOfLines and all TextStyle properties are allowed + ...TextBox.label, + lineHeight: input.input.lineHeight, + height: "100%", + textAlignVertical: "top", + paddingVertical: (_a = TextBox.input) === null || _a === void 0 ? void 0 : _a.paddingVertical + }, + labelDisabled: { + color: (_b = TextBox.labelDisabled) === null || _b === void 0 ? void 0 : _b.color + }, + input: { + // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed + ...TextBox.input, + textAlignVertical: "top", + paddingTop: (_c = TextBox.input) === null || _c === void 0 ? void 0 : _c.paddingVertical + }, + inputDisabled: { + // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed + backgroundColor: (_d = TextBox.inputDisabled) === null || _d === void 0 ? void 0 : _d.backgroundColor, + borderColor: (_e = TextBox.inputDisabled) === null || _e === void 0 ? void 0 : _e.borderColor, + color: (_f = TextBox.inputDisabled) === null || _f === void 0 ? void 0 : _f.color + }, + inputFocused: { + // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed + }, + inputError: { + // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed + ...TextBox.inputError + }, + validationMessage: { + // All TextStyle properties are allowed + ...TextBox.validationMessage + } +}; +export const TextAreaVertical = { + container: TextBoxVertical.container, + containerDisabled: TextBoxVertical.containerDisabled, + label: { + ...TextBoxVertical.label, + height: undefined, + paddingVertical: undefined, + textAlignVertical: undefined + }, + labelDisabled: { + ...TextBoxVertical.labelDisabled, + height: undefined, + paddingVertical: undefined, + textAlignVertical: undefined + }, + input: { + ...TextBoxVertical.input, + lineHeight: input.input.lineHeight + }, + inputDisabled: TextBoxVertical.inputDisabled, + inputFocused: TextBoxVertical.inputFocused, + inputError: TextBoxVertical.inputError, + validationMessage: TextBoxVertical.validationMessage +}; diff --git a/themesource/atlas_core/native/core/widgets/textbox.js b/themesource/atlas_core/native/core/widgets/textbox.js new file mode 100644 index 0000000..6c1aff1 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/textbox.js @@ -0,0 +1,108 @@ +import { font, input, spacing } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Text Box + + Default Class For Mendix Text Box Widget +========================================================================== */ +export const TextBox = { + container: { + // All ViewStyle properties are allowed + }, + containerDisabled: { + // All ViewStyle properties are allowed + }, + label: { + // numberOfLines and all TextStyle properties are allowed + numberOfLines: input.label.numberOfLines, + color: input.label.color, + fontSize: input.label.fontSize, + fontFamily: font.family, + textAlign: input.label.textAlign, + marginRight: spacing.small + }, + labelDisabled: { + // TextStyle properties are allowed + color: input.labelDisabled.color + }, + input: { + // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed + color: input.input.color, + borderColor: input.input.borderColor, + backgroundColor: input.input.backgroundColor, + selectionColor: input.input.selectionColor, + placeholderTextColor: input.input.placeholderTextColor, + fontSize: input.input.fontSize, + fontFamily: font.family, + borderWidth: input.input.borderWidth, + borderRadius: input.input.borderRadius, + // textAlignVertical: "center", + minWidth: input.input.minWidth, + minHeight: input.input.minHeight, + paddingHorizontal: input.input.paddingHorizontal, + paddingVertical: input.input.paddingVertical + }, + inputDisabled: { + // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed + color: input.inputDisabled.color, + borderColor: input.inputDisabled.borderColor, + backgroundColor: input.inputDisabled.backgroundColor + }, + inputFocused: { + // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed + }, + inputError: { + // autoCapitalize, placeholderTextColor, selectionColor, underlineColorAndroid and all TextStyle properties are allowed + color: input.inputError.color, + borderColor: input.inputError.borderColor, + placeholderTextColor: input.inputError.placeholderTextColor, + underlineColorAndroid: "transparent" + }, + validationMessage: { + // All TextStyle properties are allowed + color: input.validationMessage.color, + fontSize: input.validationMessage.fontSize, + fontFamily: font.family + } +}; +export const TextBoxVertical = { + container: {}, + containerDisabled: {}, + label: { + numberOfLines: input.label.numberOfLines, + color: input.label.color, + fontSize: input.label.fontSize, + fontFamily: font.family, + textAlign: input.label.textAlign, + marginBottom: spacing.small + }, + labelDisabled: { + color: input.labelDisabled.color + }, + input: { + color: input.input.color, + borderColor: input.input.borderColor, + backgroundColor: input.input.backgroundColor, + selectionColor: input.input.selectionColor, + placeholderTextColor: input.input.placeholderTextColor, + fontSize: input.input.fontSize, + fontFamily: font.family, + borderWidth: input.input.borderWidth, + borderRadius: input.input.borderRadius, + // textAlignVertical: "center", + minWidth: input.input.minWidth, + minHeight: input.input.minHeight, + paddingHorizontal: input.input.paddingHorizontal, + paddingVertical: input.input.paddingVertical + }, + inputDisabled: TextBox.inputDisabled, + inputFocused: TextBox.inputFocused, + inputError: TextBox.inputError, + validationMessage: TextBox.validationMessage +}; diff --git a/themesource/atlas_core/native/core/widgets/togglebuttons.js b/themesource/atlas_core/native/core/widgets/togglebuttons.js new file mode 100644 index 0000000..4769dbe --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/togglebuttons.js @@ -0,0 +1,54 @@ +import { background, brand, contrast, font } from "../../variables"; +import { TextBox } from "./textbox"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Segmented Controls + + Default Class For Mendix Segmented Controls Widget +========================================================================== */ +export const com_mendix_widget_native_togglebuttons_ToggleButtons = { + container: { + // All ViewStyle properties are allowed + backgroundColor: background.secondary, + borderRadius: 16, + alignSelf: "stretch" + }, + containerDisabled: { + opacity: 0.6, + alignSelf: "stretch" + }, + button: { + // All ViewStyle properties are allowed + backgroundColor: "transparent", + borderColor: "transparent", + borderRadius: 16 + }, + text: { + // All TextStyle properties are allowed + color: contrast.low, + fontSize: font.size, + fontFamily: font.family + }, + activeButton: { + // All ViewStyle properties are allowed + backgroundColor: brand.primary, + borderColor: brand.primary, + borderRadius: 16 + }, + activeButtonText: { + // All TextStyle properties are allowed + color: "#FFF", + fontSize: font.size, + fontFamily: font.family + }, + validationMessage: { + // All TextStyle properties are allowed + ...TextBox.validationMessage + } +}; diff --git a/themesource/atlas_core/native/core/widgets/typography.js b/themesource/atlas_core/native/core/widgets/typography.js new file mode 100644 index 0000000..3ed8cbe --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/typography.js @@ -0,0 +1,79 @@ +import { font } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Text + + Default Class For Mendix Text Widget +========================================================================== */ +export const Text = { + container: { + // All ViewStyle properties are allowed + }, + text: { + // numberOfLines & All TextStyle properties are allowed + color: font.colorTitle, + fontSize: font.size, + fontFamily: font.family, + lineHeight: font.lineHeight + } +}; +export const TextHeading1 = { + container: {}, + text: { + fontWeight: font.weightSemiBold, + fontSize: font.sizeH1, + fontFamily: font.family, + lineHeight: font.lineHeightH1 + } +}; +export const TextHeading2 = { + container: {}, + text: { + fontWeight: font.weightSemiBold, + fontSize: font.sizeH2, + fontFamily: font.family, + lineHeight: font.lineHeightH2 + } +}; +export const TextHeading3 = { + container: {}, + text: { + fontWeight: font.weightSemiBold, + fontSize: font.sizeH3, + fontFamily: font.family, + lineHeight: font.lineHeightH3 + } +}; +export const TextHeading4 = { + container: {}, + text: { + fontWeight: font.weightSemiBold, + fontSize: font.sizeH4, + fontFamily: font.family, + lineHeight: font.lineHeightH4 + } +}; +export const TextHeading5 = { + container: {}, + text: { + fontWeight: font.weightSemiBold, + fontSize: font.sizeH5, + fontFamily: font.family, + lineHeight: font.lineHeightH5 + } +}; +export const TextHeading6 = { + container: {}, + text: { + fontWeight: font.weightSemiBold, + fontSize: font.sizeH6, + fontFamily: font.family, + lineHeight: font.lineHeightH6 + } +}; diff --git a/themesource/atlas_core/native/core/widgets/videoplayer.js b/themesource/atlas_core/native/core/widgets/videoplayer.js new file mode 100644 index 0000000..caa1dd9 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/videoplayer.js @@ -0,0 +1,35 @@ +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Video Player + + Default Class For Mendix Video Player Widget +========================================================================== */ +export const com_mendix_widget_native_videoplayer_VideoPlayer = { + container: { + // All ViewStyle properties are allowed + }, + indicator: { + // Only the backgroundColor property is allowed + }, + video: { + // All ViewStyle properties are allowed + }, + fullScreenVideoPlayer: { + // All ViewStyle properties are allowed + }, + controlBtnContainerStyle: { + // All ViewStyle properties are allowed + }, + fullScreenVideoStyle: { + // All ViewStyle properties are allowed + }, + fullScreenActivityIndicatorStyle: { + // All ViewStyle properties are allowed + } +}; diff --git a/themesource/atlas_core/native/core/widgets/webview.js b/themesource/atlas_core/native/core/widgets/webview.js new file mode 100644 index 0000000..e2240c7 --- /dev/null +++ b/themesource/atlas_core/native/core/widgets/webview.js @@ -0,0 +1,26 @@ +import { font } from "../../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Web View + + Default Class For Mendix Web View Widget +========================================================================== */ +export const com_mendix_widget_native_webview_WebView = { + container: { + // All ViewStyle properties are allowed + }, + errorContainer: { + // All ViewStyle properties are allowed + }, + errorText: { + // All TextStyle properties are allowed + fontSize: font.size, + fontFamily: font.family + } +}; diff --git a/themesource/atlas_core/native/design-properties.json b/themesource/atlas_core/native/design-properties.json new file mode 100644 index 0000000..e0dd05e --- /dev/null +++ b/themesource/atlas_core/native/design-properties.json @@ -0,0 +1,3292 @@ +{ + "Document": [ + { + "name": "Spacing top", + "type": "Dropdown", + "description": "The spacing above this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerTopSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerTopMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerTopLarger" + } + ] + }, + { + "name": "Spacing bottom", + "type": "Dropdown", + "description": "The spacing below this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerBottomSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerBottomMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerBottomLarger" + } + ] + }, + { + "name": "Spacing left", + "type": "Dropdown", + "description": "The spacing to the left of this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerLeftSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerLeftMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerLeftLarger" + } + ] + }, + { + "name": "Spacing right", + "type": "Dropdown", + "description": "The spacing to the right of this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerRightSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerRightMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerRightLarger" + } + ] + }, + { + "name": "Background color", + "type": "Dropdown", + "description": "Change the background color of the container.", + "options": [ + { + "name": "Background Primary", + "oldNames": ["Primary"], + "class": "backgroundPrimary" + }, + { + "name": "Background Secondary", + "oldNames": ["Gray", "Secondary"], + "class": "backgroundSecondary" + }, + { + "name": "Brand Primary", + "class": "backgroundBrandPrimary" + }, + { + "name": "Brand Success", + "class": "backgroundBrandSuccess" + }, + { + "name": "Brand Warning", + "class": "backgroundBrandWarning" + }, + { + "name": "Brand Danger", + "class": "backgroundBrandDanger" + }, + { + "name": "Brand Info", + "class": "backgroundBrandInfo" + } + ] + }, + { + "name": "Render children horizontal", + "type": "Toggle", + "description": "Determines the direction in which children are rendered.", + "class": "flexRow" + }, + { + "name": "Wrap children", + "type": "Toggle", + "description": "Determines if children can flow into multiple lines if they hit the end of the container.", + "class": "flexWrap" + }, + { + "name": "Align children", + "type": "Dropdown", + "description": "Align children in the opposite direction.", + "options": [ + { + "name": "Start", + "class": "alignChildrenStart" + }, + { + "name": "Center", + "class": "alignChildrenCenter" + }, + { + "name": "End", + "class": "alignChildrenEnd" + }, + { + "name": "Stretch", + "class": "alignChildrenStretch" + }, + { + "name": "Baseline", + "class": "alignChildrenBaseline" + } + ] + }, + { + "name": "Justify content", + "type": "Dropdown", + "description": "Justify content in the active direction.", + "options": [ + { + "name": "Start", + "class": "justifyContentStart" + }, + { + "name": "Center", + "class": "justifyContentCenter" + }, + { + "name": "End", + "class": "justifyContentEnd" + }, + { + "name": "Space between", + "class": "justifyContentSpaceBetween" + }, + { + "name": "Space around", + "class": "justifyContentSpaceAround" + }, + { + "name": "Space evenly", + "class": "justifyContentSpaceEvenly" + } + ] + } + ], + "Page": [ + { + "name": "Hide header bottom border", + "type": "Toggle", + "description": "Hide the bottom border (iOS) and elevation (Android) of the header.", + "class": "pageHeaderBorderNone" + } + ], + "Widget": [ + { + "name": "Spacing top", + "type": "Dropdown", + "description": "The spacing above this element.", + "options": [ + { + "name": "Smallest", + "class": "spacingOuterTopSmallest" + }, + { + "name": "Smaller", + "class": "spacingOuterTopSmaller" + }, + { + "name": "Small", + "class": "spacingOuterTopSmall" + }, + { + "name": "Medium", + "class": "spacingOuterTopMedium" + }, + { + "name": "Large", + "class": "spacingOuterTopLarge" + }, + { + "name": "Larger", + "class": "spacingOuterTopLarger" + }, + { + "name": "Largest", + "class": "spacingOuterTopLargest" + } + ] + }, + { + "name": "Spacing bottom", + "type": "Dropdown", + "description": "The spacing below this element.", + "options": [ + { + "name": "Smallest", + "class": "spacingOuterBottomSmallest" + }, + { + "name": "Smaller", + "class": "spacingOuterBottomSmaller" + }, + { + "name": "Small", + "class": "spacingOuterBottomSmall" + }, + { + "name": "Medium", + "class": "spacingOuterBottomMedium" + }, + { + "name": "Large", + "class": "spacingOuterBottomLarge" + }, + { + "name": "Larger", + "class": "spacingOuterBottomLarger" + }, + { + "name": "Largest", + "class": "spacingOuterBottomLargest" + } + ] + }, + { + "name": "Spacing left", + "type": "Dropdown", + "description": "The spacing to the left of this element.", + "options": [ + { + "name": "Smallest", + "class": "spacingOuterLeftSmallest" + }, + { + "name": "Smaller", + "class": "spacingOuterLeftSmaller" + }, + { + "name": "Small", + "class": "spacingOuterLeftSmall" + }, + { + "name": "Medium", + "class": "spacingOuterLeftMedium" + }, + { + "name": "Large", + "class": "spacingOuterLeftLarge" + }, + { + "name": "Larger", + "class": "spacingOuterLeftLarger" + }, + { + "name": "Largest", + "class": "spacingOuterLeftLargest" + } + ] + }, + { + "name": "Spacing right", + "type": "Dropdown", + "description": "The spacing to the right of this element.", + "options": [ + { + "name": "Smallest", + "class": "spacingOuterRightSmallest" + }, + { + "name": "Smaller", + "class": "spacingOuterRightSmaller" + }, + { + "name": "Small", + "class": "spacingOuterRightSmall" + }, + { + "name": "Medium", + "class": "spacingOuterRightMedium" + }, + { + "name": "Large", + "class": "spacingOuterRightLarge" + }, + { + "name": "Larger", + "class": "spacingOuterRightLarger" + }, + { + "name": "Largest", + "class": "spacingOuterRightLargest" + } + ] + } + ], + "DivContainer": [ + { + "name": "Spacing top", + "type": "Dropdown", + "description": "The spacing above this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerTopSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerTopMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerTopLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterTopSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterTopMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterTopLarger" + } + ] + }, + { + "name": "Spacing bottom", + "type": "Dropdown", + "description": "The spacing below this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerBottomSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerBottomMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerBottomLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterBottomSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterBottomMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterBottomLarger" + } + ] + }, + { + "name": "Spacing left", + "type": "Dropdown", + "description": "The spacing to the left of this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerLeftSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerLeftMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerLeftLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterLeftSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterLeftMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterLeftLarger" + } + ] + }, + { + "name": "Spacing right", + "type": "Dropdown", + "description": "The spacing to the right of this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerRightSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerRightMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerRightLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterRightSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterRightMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterRightLarger" + } + ] + }, + { + "name": "Size", + "type": "Dropdown", + "description": "Change the size of the widget relative to its sibling(s).", + "options": [ + { + "name": "Maximum space", + "class": "flexMain" + }, + { + "name": "Minimum space", + "class": "flexItem" + } + ] + }, + { + "name": "Background color", + "type": "Dropdown", + "description": "Change the background color of the container.", + "options": [ + { + "name": "Background Primary", + "oldNames": ["Primary"], + "class": "backgroundPrimary" + }, + { + "name": "Background Secondary", + "oldNames": ["Gray", "Secondary"], + "class": "backgroundSecondary" + }, + { + "name": "Brand Primary", + "class": "backgroundBrandPrimary" + }, + { + "name": "Brand Success", + "class": "backgroundBrandSuccess" + }, + { + "name": "Brand Warning", + "class": "backgroundBrandWarning" + }, + { + "name": "Brand Danger", + "class": "backgroundBrandDanger" + }, + { + "name": "Brand Info", + "class": "backgroundBrandInfo" + } + ] + }, + { + "name": "Align", + "type": "Dropdown", + "description": "Aligns the element. This overrides 'Align children' of the parent.", + "options": [ + { + "name": "Start", + "class": "alignSelfStart" + }, + { + "name": "Center", + "class": "alignSelfCenter" + }, + { + "name": "End", + "class": "alignSelfEnd" + }, + { + "name": "Stretch", + "class": "alignSelfStretch" + }, + { + "name": "Baseline", + "class": "alignSelfBaseline" + } + ] + }, + { + "name": "Render children horizontal", + "type": "Toggle", + "description": "Determines the direction in which children are rendered.", + "class": "flexRow" + }, + { + "name": "Wrap children", + "type": "Toggle", + "description": "Determines if children can flow into multiple lines if they hit the end of the container.", + "class": "flexWrap" + }, + { + "name": "Align children", + "type": "Dropdown", + "description": "Align children in the opposite direction.", + "options": [ + { + "name": "Start", + "class": "alignChildrenStart" + }, + { + "name": "Center", + "class": "alignChildrenCenter" + }, + { + "name": "End", + "class": "alignChildrenEnd" + }, + { + "name": "Stretch", + "class": "alignChildrenStretch" + }, + { + "name": "Baseline", + "class": "alignChildrenBaseline" + } + ] + }, + { + "name": "Justify content", + "type": "Dropdown", + "description": "Justify content in the active direction.", + "options": [ + { + "name": "Start", + "class": "justifyContentStart" + }, + { + "name": "Center", + "class": "justifyContentCenter" + }, + { + "name": "End", + "class": "justifyContentEnd" + }, + { + "name": "Space between", + "class": "justifyContentSpaceBetween" + }, + { + "name": "Space around", + "class": "justifyContentSpaceAround" + }, + { + "name": "Space evenly", + "class": "justifyContentSpaceEvenly" + } + ] + } + ], + "ScrollContainer": [ + { + "name": "Spacing top", + "type": "Dropdown", + "description": "The spacing above this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerTopSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerTopMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerTopLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterTopSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterTopMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterTopLarger" + } + ] + }, + { + "name": "Spacing bottom", + "type": "Dropdown", + "description": "The spacing below this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerBottomSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerBottomMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerBottomLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterBottomSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterBottomMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterBottomLarger" + } + ] + }, + { + "name": "Spacing left", + "type": "Dropdown", + "description": "The spacing to the left of this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerLeftSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerLeftMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerLeftLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterLeftSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterLeftMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterLeftLarger" + } + ] + }, + { + "name": "Spacing right", + "type": "Dropdown", + "description": "The spacing to the right of this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerRightSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerRightMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerRightLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterRightSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterRightMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterRightLarger" + } + ] + }, + { + "name": "Size", + "type": "Dropdown", + "description": "Change the size of the widget relative to its sibling(s).", + "options": [ + { + "name": "Maximum space", + "class": "flexMain" + }, + { + "name": "Minimum space", + "class": "flexItem" + } + ] + }, + { + "name": "Background color", + "type": "Dropdown", + "description": "Change the background color of the container.", + "options": [ + { + "name": "Background Primary", + "oldNames": ["Primary"], + "class": "backgroundPrimary" + }, + { + "name": "Background Secondary", + "oldNames": ["Gray", "Secondary"], + "class": "backgroundSecondary" + }, + { + "name": "Brand Primary", + "class": "backgroundBrandPrimary" + }, + { + "name": "Brand Success", + "class": "backgroundBrandSuccess" + }, + { + "name": "Brand Warning", + "class": "backgroundBrandWarning" + }, + { + "name": "Brand Danger", + "class": "backgroundBrandDanger" + }, + { + "name": "Brand Info", + "class": "backgroundBrandInfo" + } + ] + }, + { + "name": "Align", + "type": "Dropdown", + "description": "Aligns the element. This overrides 'Align children' of the parent.", + "options": [ + { + "name": "Start", + "class": "alignSelfStart" + }, + { + "name": "Center", + "class": "alignSelfCenter" + }, + { + "name": "End", + "class": "alignSelfEnd" + }, + { + "name": "Stretch", + "class": "alignSelfStretch" + }, + { + "name": "Baseline", + "class": "alignSelfBaseline" + } + ] + }, + { + "name": "Render children horizontal", + "type": "Toggle", + "description": "Determines the direction in which children are rendered.", + "class": "flexRow" + }, + { + "name": "Wrap children", + "type": "Toggle", + "description": "Determines if children can flow into multiple lines if they hit the end of the container.", + "class": "flexWrap" + }, + { + "name": "Align children", + "type": "Dropdown", + "description": "Align children in the opposite direction.", + "options": [ + { + "name": "Start", + "class": "alignChildrenStart" + }, + { + "name": "Center", + "class": "alignChildrenCenter" + }, + { + "name": "End", + "class": "alignChildrenEnd" + }, + { + "name": "Stretch", + "class": "alignChildrenStretch" + }, + { + "name": "Baseline", + "class": "alignChildrenBaseline" + } + ] + }, + { + "name": "Justify content", + "type": "Dropdown", + "description": "Justify content in the active direction.", + "options": [ + { + "name": "Start", + "class": "justifyContentStart" + }, + { + "name": "Center", + "class": "justifyContentCenter" + }, + { + "name": "End", + "class": "justifyContentEnd" + }, + { + "name": "Space between", + "class": "justifyContentSpaceBetween" + }, + { + "name": "Space around", + "class": "justifyContentSpaceAround" + } + ] + } + ], + "ActionButton": [ + { + "name": "Button style", + "type": "Dropdown", + "description": "Style of the button", + "options": [ + { + "name": "Secondary", + "class": "btnSecondary" + }, + { + "name": "Success", + "class": "btnSuccess" + }, + { + "name": "Warning", + "class": "btnWarning" + }, + { + "name": "Danger", + "class": "btnDanger" + }, + { + "name": "Inversed", + "class": "btnPrimaryInversed" + } + ] + }, + { + "name": "Align", + "type": "Dropdown", + "description": "Aligns the element. This overrides 'Align children' of the parent.", + "options": [ + { + "name": "Start", + "class": "alignSelfStart" + }, + { + "name": "Center", + "class": "alignSelfCenter" + }, + { + "name": "End", + "class": "alignSelfEnd" + }, + { + "name": "Stretch", + "class": "alignSelfStretch" + }, + { + "name": "Baseline", + "class": "alignSelfBaseline" + } + ] + } + ], + "StaticImageViewer": [ + { + "name": "Shape", + "type": "Dropdown", + "description": "Change the shape of the image", + "options": [ + { + "name": "Square", + "class": "imageSquare" + }, + { + "name": "Circle", + "class": "imageCircle" + } + ] + }, + { + "name": "Size", + "type": "Dropdown", + "description": "Make the image smaller or larger.", + "options": [ + { + "name": "Icon", + "class": "imageIcon", + "oldNames": ["imageCircleIcon", "imageSquareIcon"] + }, + { + "name": "Small", + "class": "imageSmall", + "oldNames": ["imageCircleSmall", "imageSquareSmall"] + }, + { + "name": "Medium", + "class": "imageMedium", + "oldNames": ["imageCircleMedium", "imageSquareMedium"] + }, + { + "name": "Large", + "class": "imageLarge", + "oldNames": ["imageCircleLarge", "imageSquareLarge"] + }, + { + "name": "Larger", + "class": "imageLarger", + "oldNames": ["imageCircleLarger", "imageSquareLarger"] + }, + { + "name": "FullSize", + "class": "imageFullSize" + } + ] + } + ], + "DynamicImageViewer": [ + { + "name": "Shape", + "type": "Dropdown", + "description": "Change the shape of the image", + "options": [ + { + "name": "Square", + "class": "imageSquare" + }, + { + "name": "Circle", + "class": "imageCircle" + } + ] + }, + { + "name": "Size", + "type": "Dropdown", + "description": "Make the image smaller or larger.", + "options": [ + { + "name": "Icon", + "class": "imageIcon", + "oldNames": ["imageCircleIcon", "imageSquareIcon"] + }, + { + "name": "Small", + "class": "imageSmall", + "oldNames": ["imageCircleSmall", "imageSquareSmall"] + }, + { + "name": "Medium", + "class": "imageMedium", + "oldNames": ["imageCircleMedium", "imageSquareMedium"] + }, + { + "name": "Large", + "class": "imageLarge", + "oldNames": ["imageCircleLarge", "imageSquareLarge"] + }, + { + "name": "Larger", + "class": "imageLarger", + "oldNames": ["imageCircleLarger", "imageSquareLarger"] + }, + { + "name": "FullSize", + "class": "imageFullSize" + } + ] + } + ], + "DynamicText": [ + { + "name": "Color", + "type": "Dropdown", + "description": "Change the color of text.", + "options": [ + { + "name": "Paragraph", + "class": "textParagraph" + }, + { + "name": "Disabled", + "class": "textDisabled" + }, + { + "name": "White", + "class": "textWhite" + }, + { + "name": "Black", + "class": "textBlack" + }, + { + "name": "Brand primary", + "class": "textPrimary" + }, + { + "name": "Brand success", + "class": "textSuccess" + }, + { + "name": "Brand warning", + "class": "textWarning" + }, + { + "name": "Brand danger", + "class": "textDanger" + } + ] + }, + { + "name": "Size", + "type": "Dropdown", + "description": "Make the text smaller or larger.", + "options": [ + { + "name": "Smallest", + "class": "textSmallest" + }, + { + "name": "Small", + "class": "textSmall" + }, + { + "name": "Large", + "class": "textLarge" + }, + { + "name": "Largest", + "class": "textLargest" + } + ] + }, + { + "name": "Weight", + "type": "Dropdown", + "description": "Emphasize the text with a heavier or lighter font weight", + "options": [ + { + "name": "Default", + "class": "textNormal" + }, + { + "name": "Bold", + "class": "textBold" + } + ] + }, + { + "name": "Decoration", + "type": "Dropdown", + "description": "Decorate the text with an underline or a line through", + "options": [ + { + "name": "Underline", + "class": "textUnderline" + }, + { + "name": "Line Through", + "class": "textLineThrough" + } + ] + }, + { + "name": "Alignment", + "type": "Dropdown", + "description": "Align the text.", + "options": [ + { + "name": "Left", + "class": "textLeft" + }, + { + "name": "Center", + "class": "textCenter" + }, + { + "name": "Right", + "class": "textRight" + } + ] + } + ], + "LayoutGrid": [ + { + "name": "Spacing top", + "type": "Dropdown", + "description": "The spacing above this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerTopSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerTopMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerTopLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterTopSmaller", + "oldNames": ["Small"] + }, + { + "name": "Outer medium", + "class": "spacingOuterTopMedium", + "oldNames": ["Medium"] + }, + { + "name": "Outer large", + "class": "spacingOuterTopLarger", + "oldNames": ["Large"] + } + ] + }, + { + "name": "Spacing bottom", + "type": "Dropdown", + "description": "The spacing below this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerBottomSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerBottomMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerBottomLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterBottomSmaller", + "oldNames": ["Small"] + }, + { + "name": "Outer medium", + "class": "spacingOuterBottomMedium", + "oldNames": ["Medium"] + }, + { + "name": "Outer large", + "class": "spacingOuterBottomLarger", + "oldNames": ["Large"] + } + ] + }, + { + "name": "Spacing left", + "type": "Dropdown", + "description": "The spacing to the left of this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerLeftSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerLeftMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerLeftLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterLeftSmaller", + "oldNames": ["Small"] + }, + { + "name": "Outer medium", + "class": "spacingOuterLeftMedium", + "oldNames": ["Medium"] + }, + { + "name": "Outer large", + "class": "spacingOuterLeftLarger", + "oldNames": ["Large"] + } + ] + }, + { + "name": "Spacing right", + "type": "Dropdown", + "description": "The spacing to the right of this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerRightSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerRightMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerRightLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterRightSmaller", + "oldNames": ["Small"] + }, + { + "name": "Outer medium", + "class": "spacingOuterRightMedium", + "oldNames": ["Medium"] + }, + { + "name": "Outer large", + "class": "spacingOuterRightLarger", + "oldNames": ["Large"] + } + ] + }, + { + "name": "Background color", + "type": "Dropdown", + "description": "Change the background color of the container.", + "options": [ + { + "name": "Background Primary", + "oldNames": ["Primary"], + "class": "backgroundPrimary" + }, + { + "name": "Background Secondary", + "oldNames": ["Gray", "Secondary"], + "class": "backgroundSecondary" + }, + { + "name": "Brand Primary", + "class": "backgroundBrandPrimary" + }, + { + "name": "Brand Success", + "class": "backgroundBrandSuccess" + }, + { + "name": "Brand Warning", + "class": "backgroundBrandWarning" + }, + { + "name": "Brand Danger", + "class": "backgroundBrandDanger" + }, + { + "name": "Brand Info", + "class": "backgroundBrandInfo" + } + ] + } + ], + "LayoutGridRow": [ + { + "name": "Spacing top", + "type": "Dropdown", + "description": "The spacing above this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerTopSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerTopMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerTopLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterTopSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterTopMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterTopLarger" + } + ] + }, + { + "name": "Spacing bottom", + "type": "Dropdown", + "description": "The spacing below this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerBottomSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerBottomMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerBottomLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterBottomSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterBottomMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterBottomLarger" + } + ] + }, + { + "name": "Spacing left", + "type": "Dropdown", + "description": "The spacing to the left of this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerLeftSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerLeftMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerLeftLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterLeftSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterLeftMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterLeftLarger" + } + ] + }, + { + "name": "Spacing right", + "type": "Dropdown", + "description": "The spacing to the right of this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerRightSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerRightMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerRightLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterRightSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterRightMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterRightLarger" + } + ] + }, + { + "name": "Background color", + "type": "Dropdown", + "description": "Change the background color of the container.", + "options": [ + { + "name": "Background Primary", + "oldNames": ["Primary"], + "class": "backgroundPrimary" + }, + { + "name": "Background Secondary", + "oldNames": ["Gray", "Secondary"], + "class": "backgroundSecondary" + }, + { + "name": "Brand Primary", + "class": "backgroundBrandPrimary" + }, + { + "name": "Brand Success", + "class": "backgroundBrandSuccess" + }, + { + "name": "Brand Warning", + "class": "backgroundBrandWarning" + }, + { + "name": "Brand Danger", + "class": "backgroundBrandDanger" + }, + { + "name": "Brand Info", + "class": "backgroundBrandInfo" + } + ] + } + ], + "LayoutGridColumn": [ + { + "name": "Background color", + "type": "Dropdown", + "description": "Change the background color of the container.", + "options": [ + { + "name": "Background Primary", + "oldNames": ["Primary"], + "class": "backgroundPrimary" + }, + { + "name": "Background Secondary", + "oldNames": ["Gray", "Secondary"], + "class": "backgroundSecondary" + }, + { + "name": "Brand Primary", + "class": "backgroundBrandPrimary" + }, + { + "name": "Brand Success", + "class": "backgroundBrandSuccess" + }, + { + "name": "Brand Warning", + "class": "backgroundBrandWarning" + }, + { + "name": "Brand Danger", + "class": "backgroundBrandDanger" + }, + { + "name": "Brand Info", + "class": "backgroundBrandInfo" + } + ] + } + ], + "ListView": [ + { + "name": "List item divider", + "type": "Dropdown", + "description": "Give each list item a border.", + "options": [ + { + "name": "Vertical", + "class": "listItemBorderBottom" + }, + { + "name": "Horizontal", + "class": "listItemBorderRight" + } + ] + }, + { + "name": "Background color", + "type": "Dropdown", + "description": "Change the background color of the container.", + "options": [ + { + "name": "Background Primary", + "oldNames": ["Primary"], + "class": "backgroundPrimary" + }, + { + "name": "Background Secondary", + "oldNames": ["Gray", "Secondary"], + "class": "backgroundSecondary" + }, + { + "name": "Brand Primary", + "class": "backgroundBrandPrimary" + }, + { + "name": "Brand Success", + "class": "backgroundBrandSuccess" + }, + { + "name": "Brand Warning", + "class": "backgroundBrandWarning" + }, + { + "name": "Brand Danger", + "class": "backgroundBrandDanger" + }, + { + "name": "Brand Info", + "class": "backgroundBrandInfo" + } + ] + } + ], + "TabContainer": [ + { + "name": "Tab bar scroll", + "type": "Toggle", + "description": "Enable horizontal scroll for the tab bar.", + "class": "tabContainerScroll" + } + ], + "TextBox": [ + { + "name": "Capitalize", + "type": "Dropdown", + "description": "Change the capitalization of the input.", + "options": [ + { + "name": "None", + "class": "textInputCapitalizeNone" + }, + { + "name": "Characters", + "class": "textInputCapitalizeCharacters" + }, + { + "name": "Words", + "class": "textInputCapitalizeWords" + }, + { + "name": "Sentences", + "class": "textInputCapitalizeSentences" + } + ] + } + ], + "TextArea": [ + { + "name": "Capitalize", + "type": "Dropdown", + "description": "Change the capitalization of the input.", + "options": [ + { + "name": "None", + "class": "textInputCapitalizeNone" + }, + { + "name": "Characters", + "class": "textInputCapitalizeCharacters" + }, + { + "name": "Words", + "class": "textInputCapitalizeWords" + }, + { + "name": "Sentences", + "class": "textInputCapitalizeSentences" + } + ] + } + ], + "com.mendix.widget.native.activityindicator.ActivityIndicator": [ + { + "name": "Activity indicator style", + "type": "Dropdown", + "description": "Style of the Activity indicator.", + "options": [ + { + "name": "Success", + "class": "activityIndicatorSuccess" + }, + { + "name": "Warning", + "class": "activityIndicatorWarning" + }, + { + "name": "Danger", + "class": "activityIndicatorDanger" + } + ] + } + ], + "com.mendix.widget.native.animation.Animation": [ + { + "name": "Spacing top", + "type": "Dropdown", + "description": "The spacing above this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerTopSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerTopMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerTopLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterTopSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterTopMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterTopLarger" + } + ] + }, + { + "name": "Spacing bottom", + "type": "Dropdown", + "description": "The spacing below this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerBottomSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerBottomMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerBottomLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterBottomSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterBottomMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterBottomLarger" + } + ] + }, + { + "name": "Spacing left", + "type": "Dropdown", + "description": "The spacing to the left of this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerLeftSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerLeftMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerLeftLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterLeftSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterLeftMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterLeftLarger" + } + ] + }, + { + "name": "Spacing right", + "type": "Dropdown", + "description": "The spacing to the right of this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerRightSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerRightMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerRightLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterRightSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterRightMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterRightLarger" + } + ] + }, + { + "name": "Size", + "type": "Dropdown", + "description": "Change the size of the widget relative to its sibling(s).", + "options": [ + { + "name": "Maximum space", + "class": "flexMain" + }, + { + "name": "Minimum space", + "class": "flexItem" + } + ] + }, + { + "name": "Background color", + "type": "Dropdown", + "description": "Change the background color of the container.", + "options": [ + { + "name": "Background Primary", + "oldNames": ["Primary"], + "class": "backgroundPrimary" + }, + { + "name": "Background Secondary", + "oldNames": ["Gray", "Secondary"], + "class": "backgroundSecondary" + }, + { + "name": "Brand Primary", + "class": "backgroundBrandPrimary" + }, + { + "name": "Brand Success", + "class": "backgroundBrandSuccess" + }, + { + "name": "Brand Warning", + "class": "backgroundBrandWarning" + }, + { + "name": "Brand Danger", + "class": "backgroundBrandDanger" + }, + { + "name": "Brand Info", + "class": "backgroundBrandInfo" + } + ] + }, + { + "name": "Align", + "type": "Dropdown", + "description": "Aligns the element. This overrides 'Align children' of the parent.", + "options": [ + { + "name": "Stretch", + "class": "alignSelfStretch" + }, + { + "name": "Start", + "class": "alignSelfStart" + }, + { + "name": "Center", + "class": "alignSelfCenter" + }, + { + "name": "End", + "class": "alignSelfEnd" + } + ] + }, + { + "name": "Render children horizontal", + "type": "Toggle", + "description": "Determines the direction in which children are rendered.", + "class": "flexRow" + }, + { + "name": "Wrap children", + "type": "Toggle", + "description": "Determines if children can flow into multiple lines if they hit the end of the container.", + "class": "flexWrap" + }, + { + "name": "Align children", + "type": "Dropdown", + "description": "Align children in the opposite direction.", + "options": [ + { + "name": "Start", + "class": "alignChildrenStart" + }, + { + "name": "Center", + "class": "alignChildrenCenter" + }, + { + "name": "End", + "class": "alignChildrenEnd" + }, + { + "name": "Stretch", + "class": "alignChildrenStretch" + } + ] + }, + { + "name": "Justify children", + "type": "Dropdown", + "description": "Justify children in the active direction.", + "options": [ + { + "name": "Center", + "class": "justifyChildrenCenter" + }, + { + "name": "End", + "class": "justifyChildrenEnd" + }, + { + "name": "Space between", + "class": "justifyChildrenSpaceBetween" + }, + { + "name": "Space around", + "class": "justifyChildrenSpaceAround" + } + ] + } + ], + "com.mendix.widget.native.accordion.Accordion": [ + { + "name": "Compact", + "type": "Toggle", + "description": "Reduces the spacing in the header and the content.", + "class": "accordionCompact" + }, + { + "name": "Dividers", + "type": "Dropdown", + "description": "Configure the dividers between the groups.", + "options": [ + { + "name": "Lined", + "class": "accordionLined" + }, + { + "name": "None", + "class": "accordionDividerNone" + } + ] + }, + { + "name": "Accordion style", + "type": "Dropdown", + "description": "Style of the Accordion.", + "options": [ + { + "name": "Primary", + "class": "accordionPrimary" + }, + { + "name": "Secondary", + "class": "accordionSecondary" + }, + { + "name": "Success", + "class": "accordionSuccess" + }, + { + "name": "Warning", + "class": "accordionWarning" + }, + { + "name": "Danger", + "class": "accordionDanger" + } + ] + } + ], + "com.mendix.widget.native.badge.Badge": [ + { + "name": "Badge style", + "type": "Dropdown", + "description": "Style of the Badge.", + "options": [ + { + "name": "Primary", + "class": "badgePrimary" + }, + { + "name": "Success", + "class": "badgeSuccess" + }, + { + "name": "Warning", + "class": "badgeWarning" + }, + { + "name": "Danger", + "class": "badgeDanger" + } + ] + } + ], + "com.mendix.widget.native.floatingactionbutton.FloatingActionButton": [ + { + "name": "Style", + "type": "Dropdown", + "description": "Style of the Floating Action Button.", + "options": [ + { + "name": "Secondary", + "class": "floatingActionButtonSecondary" + }, + { + "name": "Success", + "class": "floatingActionButtonSuccess" + }, + { + "name": "Warning", + "class": "floatingActionButtonWarning" + }, + { + "name": "Danger", + "class": "floatingActionButtonDanger" + } + ] + } + ], + "com.mendix.widget.native.linechart.LineChart": [ + { + "name": "Chart size", + "type": "Dropdown", + "description": "Size of the chart.", + "options": [ + { + "name": "Square", + "class": "lineChartSquare" + }, + { + "name": "Maximum space", + "class": "lineChartMaxSpace" + } + ] + } + ], + "com.mendix.widget.native.listviewswipe.ListViewSwipe": [ + { + "name": "Panel size", + "type": "Dropdown", + "description": "Size of the left and right panel.", + "options": [ + { + "name": "Small", + "class": "listViewSwipeSmallPanels" + }, + { + "name": "Large", + "class": "listViewSwipeLargePanels" + } + ] + } + ], + "com.mendix.widget.native.maps.Maps": [ + { + "name": "Maps size", + "type": "Dropdown", + "description": "Size of the maps.", + "options": [ + { + "name": "Square", + "class": "mapsSquare" + }, + { + "name": "Maximum space", + "class": "mapsMaxSpace" + } + ] + }, + { + "name": "Maps marker style", + "type": "Dropdown", + "description": "Style of the marker.", + "options": [ + { + "name": "Success", + "class": "mapsSuccess" + }, + { + "name": "Warning", + "class": "mapsWarning" + }, + { + "name": "Danger", + "class": "mapsDanger" + } + ] + } + ], + "com.mendix.widget.native.barchart.BarChart": [ + { + "name": "Chart size", + "type": "Dropdown", + "description": "Size of the chart.", + "options": [ + { + "name": "Square", + "class": "barChartSquare" + }, + { + "name": "Maximum space", + "class": "barChartMaxSpace" + } + ] + } + ], + "com.mendix.widget.native.columnchart.ColumnChart": [ + { + "name": "Chart size", + "type": "Dropdown", + "description": "Size of the chart.", + "options": [ + { + "name": "Square", + "class": "columnChartSquare" + }, + { + "name": "Maximum space", + "class": "columnChartMaxSpace" + } + ] + } + ], + "com.mendix.widget.native.progressbar.ProgressBar": [ + { + "name": "Progress bar style", + "type": "Dropdown", + "description": "Style of the progress bar.", + "options": [ + { + "name": "Success", + "class": "progressBarSuccess" + }, + { + "name": "Warning", + "class": "progressBarWarning" + }, + { + "name": "Danger", + "class": "progressBarDanger" + } + ] + }, + { + "name": "Progress bar size", + "type": "Dropdown", + "description": "Size of the progress bar.", + "options": [ + { + "name": "Small", + "class": "progressBarSmall" + }, + { + "name": "Large", + "class": "progressBarLarge" + } + ] + } + ], + "com.mendix.widget.native.progresscircle.ProgressCircle": [ + { + "name": "Progress circle style", + "type": "Dropdown", + "description": "Style of the progress circle.", + "options": [ + { + "name": "Success", + "class": "progressCircleSuccess" + }, + { + "name": "Warning", + "class": "progressCircleWarning" + }, + { + "name": "Danger", + "class": "progressCircleDanger" + } + ] + } + ], + "com.mendix.widget.native.rangeslider.RangeSlider": [ + { + "name": "Range Slider style", + "type": "Dropdown", + "description": "Style of the range slider.", + "options": [ + { + "name": "Success", + "class": "rangeSliderSuccess" + }, + { + "name": "Warning", + "class": "rangeSliderWarning" + }, + { + "name": "Danger", + "class": "rangeSliderDanger" + } + ] + } + ], + "com.mendix.widget.native.safeareaview.SafeAreaView": [ + { + "name": "Spacing top", + "type": "Dropdown", + "description": "The spacing above this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerTopSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerTopMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerTopLarger" + } + ] + }, + { + "name": "Spacing bottom", + "type": "Dropdown", + "description": "The spacing below this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerBottomSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerBottomMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerBottomLarger" + } + ] + }, + { + "name": "Spacing left", + "type": "Dropdown", + "description": "The spacing to the left of this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerLeftSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerLeftMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerLeftLarger" + } + ] + }, + { + "name": "Spacing right", + "type": "Dropdown", + "description": "The spacing to the right of this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerRightSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerRightMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerRightLarger" + } + ] + }, + { + "name": "Background color", + "type": "Dropdown", + "description": "Change the background color of the container.", + "options": [ + { + "name": "Background Primary", + "oldNames": ["Primary"], + "class": "backgroundPrimary" + }, + { + "name": "Background Secondary", + "oldNames": ["Gray", "Secondary"], + "class": "backgroundSecondary" + }, + { + "name": "Brand Primary", + "class": "backgroundBrandPrimary" + }, + { + "name": "Brand Success", + "class": "backgroundBrandSuccess" + }, + { + "name": "Brand Warning", + "class": "backgroundBrandWarning" + }, + { + "name": "Brand Danger", + "class": "backgroundBrandDanger" + }, + { + "name": "Brand Info", + "class": "backgroundBrandInfo" + } + ] + }, + { + "name": "Render children horizontal", + "type": "Toggle", + "description": "Determines the direction in which children are rendered.", + "class": "flexRow" + }, + { + "name": "Wrap children", + "type": "Toggle", + "description": "Determines if children can flow into multiple lines if they hit the end of the container.", + "class": "flexWrap" + }, + { + "name": "Align children", + "type": "Dropdown", + "description": "Align children in the opposite direction.", + "options": [ + { + "name": "Start", + "class": "alignChildrenStart" + }, + { + "name": "Center", + "class": "alignChildrenCenter" + }, + { + "name": "End", + "class": "alignChildrenEnd" + }, + { + "name": "Stretch", + "class": "alignChildrenStretch" + }, + { + "name": "Baseline", + "class": "alignChildrenBaseline" + } + ] + }, + { + "name": "Justify content", + "type": "Dropdown", + "description": "Justify content in the active direction.", + "options": [ + { + "name": "Start", + "class": "justifyContentStart" + }, + { + "name": "Center", + "class": "justifyContentCenter" + }, + { + "name": "End", + "class": "justifyContentEnd" + }, + { + "name": "Space between", + "class": "justifyContentSpaceBetween" + }, + { + "name": "Space around", + "class": "justifyContentSpaceAround" + }, + { + "name": "Space evenly", + "class": "justifyContentSpaceEvenly" + } + ] + } + ], + "com.mendix.widget.native.slider.Slider": [ + { + "name": "Slider style", + "type": "Dropdown", + "description": "Style of the slider.", + "options": [ + { + "name": "Success", + "class": "sliderSuccess" + }, + { + "name": "Warning", + "class": "sliderWarning" + }, + { + "name": "Danger", + "class": "sliderDanger" + } + ] + } + ], + "com.mendix.widget.native.switch.Switch": [ + { + "name": "Switch style", + "type": "Dropdown", + "description": "Style of the switch track color.", + "options": [ + { + "name": "Success", + "class": "switchSuccess" + }, + { + "name": "Warning", + "class": "switchWarning" + }, + { + "name": "Danger", + "class": "switchDanger" + } + ] + } + ], + "com.mendix.widget.native.radiobuttons.RadioButtons": [ + { + "name": "Radio button color", + "type": "Dropdown", + "description": "Change the color of radio button.", + "options": [ + { + "name": "Brand Primary", + "class": "radioButtonsPrimary" + }, + { + "name": "Brand Success", + "class": "radioButtonsSuccess" + }, + { + "name": "Brand Warning", + "class": "radioButtonsWarning" + }, + { + "name": "Brand Danger", + "class": "radioButtonsDanger" + }, + { + "name": "Brand Info", + "class": "radioButtonsInfo" + } + ] + }, + { + "name": "Radio button label color", + "type": "Dropdown", + "description": "Change the color of label.", + "options": [ + { + "name": "Brand Primary", + "class": "radioButtonsLabelPrimary" + }, + { + "name": "Brand Success", + "class": "radioButtonsLabelSuccess" + }, + { + "name": "Brand Warning", + "class": "radioButtonsLabelWarning" + }, + { + "name": "Brand Danger", + "class": "radioButtonsLabelDanger" + }, + { + "name": "Brand Info", + "class": "radioButtonsLabelInfo" + } + ] + } + ], + "com.mendix.widget.native.backgroundgradient.BackgroundGradient": [ + { + "name": "Spacing top", + "type": "Dropdown", + "description": "The spacing above this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerTopSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerTopMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerTopLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterTopSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterTopMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterTopLarger" + } + ] + }, + { + "name": "Spacing bottom", + "type": "Dropdown", + "description": "The spacing below this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerBottomSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerBottomMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerBottomLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterBottomSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterBottomMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterBottomLarger" + } + ] + }, + { + "name": "Spacing left", + "type": "Dropdown", + "description": "The spacing to the left of this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerLeftSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerLeftMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerLeftLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterLeftSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterLeftMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterLeftLarger" + } + ] + }, + { + "name": "Spacing right", + "type": "Dropdown", + "description": "The spacing to the right of this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerRightSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerRightMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerRightLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterRightSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterRightMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterRightLarger" + } + ] + }, + { + "name": "Size", + "type": "Dropdown", + "description": "Change the size of the widget relative to its sibling(s).", + "options": [ + { + "name": "Maximum space", + "class": "flexMain" + }, + { + "name": "Minimum space", + "class": "flexItem" + } + ] + }, + { + "name": "Align", + "type": "Dropdown", + "description": "Aligns the element. This overrides 'Align children' of the parent.", + "options": [ + { + "name": "Start", + "class": "alignSelfStart" + }, + { + "name": "Center", + "class": "alignSelfCenter" + }, + { + "name": "End", + "class": "alignSelfEnd" + }, + { + "name": "Stretch", + "class": "alignSelfStretch" + }, + { + "name": "Baseline", + "class": "alignSelfBaseline" + } + ] + }, + { + "name": "Render children horizontal", + "type": "Toggle", + "description": "Determines the direction in which children are rendered.", + "class": "flexRow" + }, + { + "name": "Wrap children", + "type": "Toggle", + "description": "Determines if children can flow into multiple lines if they hit the end of the container.", + "class": "flexWrap" + }, + { + "name": "Align children", + "type": "Dropdown", + "description": "Align children in the opposite direction.", + "options": [ + { + "name": "Start", + "class": "alignChildrenStart" + }, + { + "name": "Center", + "class": "alignChildrenCenter" + }, + { + "name": "End", + "class": "alignChildrenEnd" + }, + { + "name": "Stretch", + "class": "alignChildrenStretch" + }, + { + "name": "Baseline", + "class": "alignChildrenBaseline" + } + ] + }, + { + "name": "Justify content", + "type": "Dropdown", + "description": "Justify content in the active direction.", + "options": [ + { + "name": "Start", + "class": "justifyContentStart" + }, + { + "name": "Center", + "class": "justifyContentCenter" + }, + { + "name": "End", + "class": "justifyContentEnd" + }, + { + "name": "Space between", + "class": "justifyContentSpaceBetween" + }, + { + "name": "Space around", + "class": "justifyContentSpaceAround" + }, + { + "name": "Space evenly", + "class": "justifyContentSpaceEvenly" + } + ] + }, + { + "name": "Angle", + "type": "Dropdown", + "description": "Line of direction. A value of 0 is equivalent to top; increasing values rotates clockwise.", + "options": [ + { + "name": "0 degrees", + "class": "angle0" + }, + { + "name": "45 degrees", + "class": "angle45" + }, + { + "name": "90 degrees", + "class": "angle90" + } + ] + }, + { + "name": "Opacity", + "type": "Dropdown", + "description": "Sets the opacity of the element.", + "options": [ + { + "name": "25%", + "class": "opacity25" + }, + { + "name": "50%", + "class": "opacity50" + }, + { + "name": "75%", + "class": "opacity75" + }, + { + "name": "100%", + "class": "opacity100" + } + ] + } + ], + "com.mendix.widget.native.gallery.Gallery": [ + { + "name": "Spacing top", + "type": "Dropdown", + "description": "The spacing above this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerTopSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerTopMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerTopLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterTopSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterTopMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterTopLarger" + } + ] + }, + { + "name": "Spacing bottom", + "type": "Dropdown", + "description": "The spacing below this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerBottomSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerBottomMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerBottomLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterBottomSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterBottomMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterBottomLarger" + } + ] + }, + { + "name": "Spacing left", + "type": "Dropdown", + "description": "The spacing to the left of this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerLeftSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerLeftMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerLeftLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterLeftSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterLeftMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterLeftLarger" + } + ] + }, + { + "name": "Spacing right", + "type": "Dropdown", + "description": "The spacing to the right of this element.", + "options": [ + { + "name": "Inner small", + "class": "spacingInnerRightSmaller" + }, + { + "name": "Inner medium", + "class": "spacingInnerRightMedium" + }, + { + "name": "Inner large", + "class": "spacingInnerRightLarger" + }, + { + "name": "Outer small", + "class": "spacingOuterRightSmaller" + }, + { + "name": "Outer medium", + "class": "spacingOuterRightMedium" + }, + { + "name": "Outer large", + "class": "spacingOuterRightLarger" + } + ] + }, + { + "name": "Background color", + "type": "Dropdown", + "description": "Change the background color of the container.", + "options": [ + { + "name": "Background Primary", + "oldNames": ["Primary"], + "class": "backgroundPrimary" + }, + { + "name": "Background Secondary", + "oldNames": ["Gray", "Secondary"], + "class": "backgroundSecondary" + }, + { + "name": "Brand Primary", + "class": "backgroundBrandPrimary" + }, + { + "name": "Brand Success", + "class": "backgroundBrandSuccess" + }, + { + "name": "Brand Warning", + "class": "backgroundBrandWarning" + }, + { + "name": "Brand Danger", + "class": "backgroundBrandDanger" + }, + { + "name": "Brand Info", + "class": "backgroundBrandInfo" + } + ] + }, + { + "name": "Size", + "type": "Dropdown", + "description": "Change the size of the widget relative to its sibling(s).", + "options": [ + { + "name": "Maximum space", + "class": "flexMain" + }, + { + "name": "Minimum space", + "class": "flexItem" + } + ] + }, + { + "name": "Align", + "type": "Dropdown", + "description": "Aligns the element. This overrides 'Align children' of the parent.", + "options": [ + { + "name": "Start", + "class": "alignSelfStart" + }, + { + "name": "Center", + "class": "alignSelfCenter" + }, + { + "name": "End", + "class": "alignSelfEnd" + }, + { + "name": "Stretch", + "class": "alignSelfStretch" + }, + { + "name": "Baseline", + "class": "alignSelfBaseline" + } + ] + }, + { + "name": "Render children horizontal", + "type": "Toggle", + "description": "Determines the direction in which children are rendered.", + "class": "galleryGridFlexRow" + }, + { + "name": "Wrap children", + "type": "Toggle", + "description": "Determines if children can flow into multiple lines if they hit the end of the container.", + "class": "galleryGridFlexWrap" + }, + { + "name": "Align children", + "type": "Dropdown", + "description": "Align children in the opposite direction.", + "options": [ + { + "name": "Start", + "class": "galleryGridAlignSelfStart" + }, + { + "name": "Center", + "class": "galleryGridAlignSelfCenter" + }, + { + "name": "End", + "class": "galleryGridAlignSelfEnd" + }, + { + "name": "Stretch", + "class": "galleryGridAlignSelfStretch" + }, + { + "name": "Baseline", + "class": "galleryGridAlignSelfBaseline" + } + ] + }, + { + "name": "Justify content", + "type": "Dropdown", + "description": "Justify content in the active direction.", + "options": [ + { + "name": "Start", + "class": "galleryGridJustifyContentStart" + }, + { + "name": "Center", + "class": "galleryGridJustifyContentCenter" + }, + { + "name": "End", + "class": "galleryGridJustifyContentEnd" + }, + { + "name": "Space between", + "class": "galleryGridJustifyContentSpaceBetween" + }, + { + "name": "Space around", + "class": "galleryGridJustifyContentSpaceAround" + }, + { + "name": "Space evenly", + "class": "galleryGridJustifyContentSpaceEvenly" + } + ] + }, + { + "name": "Justify load more button", + "type": "Dropdown", + "description": "Justify the load more button in the active direction.", + "options": [ + { + "name": "Left", + "class": "justifyPaginationLeft" + }, + { + "name": "Center", + "class": "justifyPaginationCenter" + }, + { + "name": "Right", + "class": "justifyPaginationRight" + } + ] + }, + { + "name": "Load more button style", + "type": "Dropdown", + "description": "Style of the Load more button.", + "options": [ + { + "name": "Secondary", + "class": "loadMoreButtonBackgroundSecondary" + }, + { + "name": "Success", + "class": "loadMoreButtonBackgroundSuccess" + }, + { + "name": "Warning", + "class": "loadMoreButtonBackgroundWarning" + }, + { + "name": "Danger", + "class": "loadMoreButtonBackgroundDanger" + } + ] + }, + { + "name": "Load more button size", + "type": "Dropdown", + "description": "Style of the Load more button.", + "options": [ + { + "name": "Fixed size", + "class": "loadMoreButtonFixedSize" + } + ] + }, + { + "name": "List item divider", + "type": "Dropdown", + "description": "Give each list item a border.", + "options": [ + { + "name": "Vertical", + "class": "listItemBorderHorizontal" + }, + { + "name": "Horizontal", + "class": "listItemBorderVertical" + }, + { + "name": "Both", + "class": "listItemBorder" + } + ] + }, + { + "name": "Grid gap", + "type": "Dropdown", + "description": "The spacing around the list items.", + "options": [ + { + "name": "Inner small", + "class": "gridGapInnerSmall" + }, + { + "name": "Inner medium", + "class": "gridGapInnerMedium" + }, + { + "name": "Inner large", + "class": "gridGapInnerLarge" + }, + { + "name": "Outer small", + "class": "gridGapOuterSmall" + }, + { + "name": "Outer medium", + "class": "gridGapOuterMedium" + }, + { + "name": "Outer large", + "class": "gridGapOuterLarge" + } + ] + } + ], + "com.mendix.widget.native.gallerytextfilter.GalleryTextFilter": [ + { + "name": "Spacing top", + "type": "Dropdown", + "description": "The spacing above this element.", + "options": [ + { + "name": "Smallest", + "class": "galleryTextFilterSpacingOuterTopSmallest" + }, + { + "name": "Smaller", + "class": "galleryTextFilterSpacingOuterTopSmaller" + }, + { + "name": "Small", + "class": "galleryTextFilterSpacingOuterTopSmall" + }, + { + "name": "Medium", + "class": "galleryTextFilterSpacingOuterTopMedium" + }, + { + "name": "Large", + "class": "galleryTextFilterSpacingOuterTopLarge" + }, + { + "name": "Larger", + "class": "galleryTextFilterSpacingOuterTopLarger" + }, + { + "name": "Largest", + "class": "galleryTextFilterSpacingOuterTopLargest" + } + ] + }, + { + "name": "Spacing bottom", + "type": "Dropdown", + "description": "The spacing below this element.", + "options": [ + { + "name": "Smallest", + "class": "galleryTextFilterSpacingOuterBottomSmallest" + }, + { + "name": "Smaller", + "class": "galleryTextFilterSpacingOuterBottomSmaller" + }, + { + "name": "Small", + "class": "galleryTextFilterSpacingOuterBottomSmall" + }, + { + "name": "Medium", + "class": "galleryTextFilterSpacingOuterBottomMedium" + }, + { + "name": "Large", + "class": "galleryTextFilterSpacingOuterBottomLarge" + }, + { + "name": "Larger", + "class": "galleryTextFilterSpacingOuterBottomLarger" + }, + { + "name": "Largest", + "class": "galleryTextFilterSpacingOuterBottomLargest" + } + ] + }, + { + "name": "Spacing left", + "type": "Dropdown", + "description": "The spacing to the left of this element.", + "options": [ + { + "name": "Smallest", + "class": "galleryTextFilterSpacingOuterLeftSmallest" + }, + { + "name": "Smaller", + "class": "galleryTextFilterSpacingOuterLeftSmaller" + }, + { + "name": "Small", + "class": "galleryTextFilterSpacingOuterLeftSmall" + }, + { + "name": "Medium", + "class": "galleryTextFilterSpacingOuterLeftMedium" + }, + { + "name": "Large", + "class": "galleryTextFilterSpacingOuterLeftLarge" + }, + { + "name": "Larger", + "class": "galleryTextFilterSpacingOuterLeftLarger" + }, + { + "name": "Largest", + "class": "galleryTextFilterSpacingOuterLeftLargest" + } + ] + }, + { + "name": "Spacing right", + "type": "Dropdown", + "description": "The spacing to the right of this element.", + "options": [ + { + "name": "Smallest", + "class": "galleryTextFilterSpacingOuterRightSmallest" + }, + { + "name": "Smaller", + "class": "galleryTextFilterSpacingOuterRightSmaller" + }, + { + "name": "Small", + "class": "galleryTextFilterSpacingOuterRightSmall" + }, + { + "name": "Medium", + "class": "galleryTextFilterSpacingOuterRightMedium" + }, + { + "name": "Large", + "class": "galleryTextFilterSpacingOuterRightLarge" + }, + { + "name": "Larger", + "class": "galleryTextFilterSpacingOuterRightLarger" + }, + { + "name": "Largest", + "class": "galleryTextFilterSpacingOuterRightLargest" + } + ] + } + ] +} diff --git a/themesource/atlas_core/native/layouts/layout.js b/themesource/atlas_core/native/layouts/layout.js new file mode 100644 index 0000000..dc2b6e1 --- /dev/null +++ b/themesource/atlas_core/native/layouts/layout.js @@ -0,0 +1,67 @@ +import { NativeModules } from "react-native"; +import { darkMode } from "../../../../theme/native/custom-variables"; +import { background, font, navigation } from "../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Sidebar / Statusbar / Header + + Default Class For Mendix Sidebar, Statusbar and Header +========================================================================== */ +// backgroundColor of the native iOS statusbar can not be changed. +// To fix this we change the barStyle of the statusbar if OS theme is dark and app theme is light (And the other way around). +const isOSDarkMode = NativeModules && + NativeModules.RNDarkMode && + NativeModules.RNDarkMode.initialMode && + NativeModules.RNDarkMode.initialMode === "dark"; +const statusBarStyle = !darkMode && isOSDarkMode + ? "dark-content" + : darkMode && !isOSDarkMode + ? "light-content" + : navigation.statusBar.barStyle; +// +export const Layout = { + sidebar: { + // All ViewStyle properties are allowed + }, + statusBar: { + // Only backgroundColor and barStyle are allowed + backgroundColor: navigation.statusBar.backgroundColor, + barStyle: statusBarStyle + }, + header: { + container: { + // All ViewStyle properties are allowed + backgroundColor: navigation.topBar.backgroundColor, + elevation: 0, + shadowOpacity: 0, + shadowOffset: undefined, + borderBottomWidth: undefined + }, + title: { + // All TextStyle properties are allowed + color: navigation.topBar.titleColor, + fontSize: navigation.topBar.titleFontSize, + fontFamily: font.family, + fontWeight: font.weightBold + }, + backButtonText: { + // All TextStyle properties are allowed + color: navigation.topBar.backButtonColor, + fontFamily: font.family + }, + backButtonIcon: { + // All ImageStyle properties are allowed + tintColor: navigation.topBar.backButtonColor + } + }, + container: { + // All ViewStyle properties are allowed + backgroundColor: background.primary + } +}; diff --git a/themesource/atlas_core/native/layouts/page.js b/themesource/atlas_core/native/layouts/page.js new file mode 100644 index 0000000..71c6e92 --- /dev/null +++ b/themesource/atlas_core/native/layouts/page.js @@ -0,0 +1,53 @@ +import { background, font, navigation } from "../variables"; +/* + +DISCLAIMER: +Do not change this file because it is core styling. +Customizing core files will make updating Atlas much more difficult in the future. +To customize any core styling, copy the part you want to customize to styles/native/app/ so the core styling is overwritten. + +========================================================================== + Page + + Default Class For Mendix Page +========================================================================== */ +export const Page = { + sidebar: { + // All ViewStyle properties are allowed + }, + statusBar: { + // Only backgroundColor and barStyle are allowed + backgroundColor: navigation.statusBar.backgroundColor, + barStyle: navigation.statusBar.barStyle + }, + header: { + container: { + // All ViewStyle properties are allowed + backgroundColor: navigation.topBar.backgroundColor, + elevation: 0, + shadowOpacity: 0, + shadowOffset: undefined, + borderBottomWidth: undefined + }, + title: { + // All TextStyle properties are allowed + color: navigation.topBar.titleColor, + fontSize: navigation.topBar.titleFontSize, + fontFamily: font.family, + fontWeight: font.weightBold + }, + backButtonText: { + // All TextStyle properties are allowed + color: navigation.topBar.backButtonColor, + fontFamily: font.family + }, + backButtonIcon: { + // All ImageStyle properties are allowed + tintColor: navigation.topBar.backButtonColor + } + }, + container: { + // All ViewStyle properties are allowed + backgroundColor: background.primary + } +}; diff --git a/themesource/atlas_core/native/main.js b/themesource/atlas_core/native/main.js new file mode 100644 index 0000000..770045b --- /dev/null +++ b/themesource/atlas_core/native/main.js @@ -0,0 +1,184 @@ +import * as exclusionVariables from "../../../theme/native/exclusion-variables"; +// ================================== CORE ==================================\\ +// +// +// Base +import * as flex from "./core/base/flex"; +import * as spacing from "./core/base/spacing"; +// +// +// Components +import * as widgetsAccordion from "./core/widgets/accordion"; +import * as helpersAccordion from "./core/helpers/accordion"; +import * as widgetsActivityIndicator from "./core/widgets/activityindicator"; +import * as helpersActivityIndicator from "./core/helpers/activityindicator"; +import * as widgetsAnimation from "./core/widgets/animation"; +import * as widgetsBackgroundImage from "./core/widgets/backgroundimage"; +import * as widgetsBadge from "./core/widgets/badge"; +import * as helpersBadge from "./core/helpers/badge"; +import * as widgetsBottomSheet from "./core/widgets/bottomsheet"; +import * as widgetsButtons from "./core/widgets/buttons"; +import * as helpersButtons from "./core/helpers/buttons"; +import * as widgetsCarousel from "./core/widgets/carousel"; +import * as widgetsCheckBox from "./core/widgets/checkbox"; +import * as widgetsColorPicker from "./core/widgets/colorpicker"; +import * as widgetsContainer from "./core/widgets/container"; +import * as widgetsDatePicker from "./core/widgets/datepicker"; +import * as widgetsDropDown from "./core/widgets/dropdown"; +import * as widgetsFeedback from "./core/widgets/feedback"; +import * as widgetsFloatingActionButton from "./core/widgets/floatingactionbutton"; +import * as helpersFloatingActionButton from "./core/helpers/floatingactionbutton"; +import * as widgetsImage from "./core/widgets/image"; +import * as helpersImage from "./core/helpers/image"; +import * as widgetsIntroScreen from "./core/widgets/introscreen"; +import * as helpersIntroScreen from "./core/helpers/introscreen"; +import * as widgetsLayoutGrid from "./core/widgets/layoutgrid"; +import * as widgetsLineChart from "./core/widgets/linechart"; +import * as helpersLineChart from "./core/helpers/linechart"; +import * as widgetsBarChart from "./core/widgets/barchart"; +import * as helpersBarChart from "./core/helpers/barchart"; +import * as widgetsListView from "./core/widgets/listview"; +import * as helpersListView from "./core/helpers/listview"; +import * as widgetsListViewSwipe from "./core/widgets/listviewswipe"; +import * as helpersListViewSwipe from "./core/helpers/listviewswipe"; +import * as widgetsMaps from "./core/widgets/maps"; +import * as helpersMaps from "./core/helpers/maps"; +import * as widgetsNavigation from "./core/widgets/navigation"; +import * as widgetsPageTitle from "./core/widgets/pagetitle"; +import * as widgetsPieDoughnutChart from "./core/widgets/piedoughnutchart"; +import * as widgetsProgressBar from "./core/widgets/progressbar"; +import * as helpersProgressBar from "./core/helpers/progressbar"; +import * as widgetsProgressCircle from "./core/widgets/progresscircle"; +import * as helpersProgressCircle from "./core/helpers/progresscircle"; +import * as widgetsPopUpMenu from "./core/widgets/popupmenu"; +import * as widgetsQRCode from "./core/widgets/qrcode"; +import * as widgetsRangeSlider from "./core/widgets/rangeslider"; +import * as helpersRangeSlider from "./core/helpers/rangeslider"; +import * as widgetsRating from "./core/widgets/rating"; +import * as widgetsReferenceSelector from "./core/widgets/referenceselector"; +import * as widgetsSafeAreaView from "./core/widgets/safeareaview"; +import * as widgetsSlider from "./core/widgets/slider"; +import * as helpersSlider from "./core/helpers/slider"; +import * as widgetsSwitch from "./core/widgets/switch"; +import * as helpersSwitch from "./core/helpers/switch"; +import * as widgetsTabContainer from "./core/widgets/tabcontainer"; +import * as helpersTabContainer from "./core/helpers/tabcontainer"; +import * as widgetsTextArea from "./core/widgets/textarea"; +import * as widgetsTextBox from "./core/widgets/textbox"; +import * as helpersTextBox from "./core/helpers/textbox"; +import * as widgetsToggleButtons from "./core/widgets/togglebuttons"; +import * as widgetsTypography from "./core/widgets/typography"; +import * as helpersTypography from "./core/helpers/typography"; +import * as widgetsVideoPlayer from "./core/widgets/videoplayer"; +import * as widgetsWebView from "./core/widgets/webview"; +import * as helperClasses from "./core/helpers/helperclasses"; +import * as radioButtons from "./core/widgets/radiobuttons"; +import * as helperRadioButtons from "./core/helpers/radiobuttons"; +import * as backgroundGradient from "./core/widgets/backgroundgradient"; +import * as helperBackgroundGradient from "./core/helpers/backgroundgradient"; +import * as widgetsColumnChart from "./core/widgets/columnchart"; +import * as helpersColumnChart from "./core/helpers/columnchart"; +import * as widgetsGallery from "./core/widgets/gallery"; +import * as helpersGallery from "./core/helpers/gallery"; +import * as widgetsGalleryTextFilter from "./core/widgets/gallerytextfilter"; +import * as helpersGalleryTextFilter from "./core/helpers/gallerytextfilter"; +// +// +// ================================= CUSTOM =================================\\ +// +// +// Layouts +import * as layout from "./layouts/layout"; +import * as page from "./layouts/page"; +module.exports = [ + flex, + spacing, + !exclusionVariables.excludeAccordion ? widgetsAccordion : {}, + !exclusionVariables.excludeAccordion && !exclusionVariables.excludeAccordionHelpers ? helpersAccordion : {}, + !exclusionVariables.excludeActivityIndicator ? widgetsActivityIndicator : {}, + !exclusionVariables.excludeActivityIndicator && !exclusionVariables.excludeActivityIndicatorHelpers + ? helpersActivityIndicator + : {}, + !exclusionVariables.excludeAnimation ? widgetsAnimation : {}, + !exclusionVariables.excludeBackgroundImage ? widgetsBackgroundImage : {}, + !exclusionVariables.excludeBadge ? widgetsBadge : {}, + !exclusionVariables.excludeBadge && !exclusionVariables.excludeBadgeHelpers ? helpersBadge : {}, + !exclusionVariables.excludeBottomSheet ? widgetsBottomSheet : {}, + !exclusionVariables.excludeButtons ? widgetsButtons : {}, + !exclusionVariables.excludeButtons && !exclusionVariables.excludeButtonsHelpers ? helpersButtons : {}, + !exclusionVariables.excludeCarousel ? widgetsCarousel : {}, + !exclusionVariables.excludeCheckBox ? widgetsCheckBox : {}, + !exclusionVariables.excludeColorPicker ? widgetsColorPicker : {}, + !exclusionVariables.excludeContainer ? widgetsContainer : {}, + !exclusionVariables.excludeDatePicker ? widgetsDatePicker : {}, + !exclusionVariables.excludeDropDown ? widgetsDropDown : {}, + !exclusionVariables.excludeFeedback ? widgetsFeedback : {}, + !exclusionVariables.excludeFAB ? widgetsFloatingActionButton : {}, + !exclusionVariables.excludeFAB && !exclusionVariables.excludeFABHelpers ? helpersFloatingActionButton : {}, + !exclusionVariables.excludeImage ? widgetsImage : {}, + !exclusionVariables.excludeImage && !exclusionVariables.excludeImageHelpers ? helpersImage : {}, + !exclusionVariables.excludeIntroScreen ? widgetsIntroScreen : {}, + !exclusionVariables.excludeIntroScreen && !exclusionVariables.excludeIntroScreenHelpers ? helpersIntroScreen : {}, + !exclusionVariables.excludeLayoutGrid ? widgetsLayoutGrid : {}, + !exclusionVariables.excludeLineChart ? widgetsLineChart : {}, + !exclusionVariables.excludeLineChart && !exclusionVariables.excludeLineChartHelpers ? helpersLineChart : {}, + !exclusionVariables.excludeBarChart ? widgetsBarChart : {}, + !exclusionVariables.excludeBarChart && !exclusionVariables.excludeBarChartHelpers ? helpersBarChart : {}, + !exclusionVariables.excludeListView ? widgetsListView : {}, + !exclusionVariables.excludeListView && !exclusionVariables.excludeListViewHelpers ? helpersListView : {}, + !exclusionVariables.excludeListViewSwipe ? widgetsListViewSwipe : {}, + !exclusionVariables.excludeListViewSwipe && !exclusionVariables.excludeListViewSwipeHelpers + ? helpersListViewSwipe + : {}, + !exclusionVariables.excludeMaps ? widgetsMaps : {}, + !exclusionVariables.excludeMaps && !exclusionVariables.excludeMapsHelpers ? helpersMaps : {}, + widgetsNavigation, + !exclusionVariables.excludePageTitle ? widgetsPageTitle : {}, + !exclusionVariables.excludePieDoughnutChart ? widgetsPieDoughnutChart : {}, + !exclusionVariables.excludeProgressBar ? widgetsProgressBar : {}, + !exclusionVariables.excludeProgressBar && !exclusionVariables.excludeProgressBarHelpers ? helpersProgressBar : {}, + !exclusionVariables.excludeProgressCircle ? widgetsProgressCircle : {}, + !exclusionVariables.excludeProgressCircle && !exclusionVariables.excludeProgressCircleHelpers + ? helpersProgressCircle + : {}, + !exclusionVariables.excludePopUpMenu ? widgetsPopUpMenu : {}, + !exclusionVariables.excludeQRCode ? widgetsQRCode : {}, + !exclusionVariables.excludeRangeSlider ? widgetsRangeSlider : {}, + !exclusionVariables.excludeRangeSlider && !exclusionVariables.excludeRangeSliderHelpers ? helpersRangeSlider : {}, + !exclusionVariables.excludeRating ? widgetsRating : {}, + !exclusionVariables.excludeReferenceSelector ? widgetsReferenceSelector : {}, + !exclusionVariables.excludeSafeAreaView ? widgetsSafeAreaView : {}, + !exclusionVariables.excludeSlider ? widgetsSlider : {}, + !exclusionVariables.excludeSlider && !exclusionVariables.excludeSliderHelpers ? helpersSlider : {}, + !exclusionVariables.excludeSwitch ? widgetsSwitch : {}, + !exclusionVariables.excludeSwitch && !exclusionVariables.excludeSwitchHelpers ? helpersSwitch : {}, + !exclusionVariables.excludeTabContainer ? widgetsTabContainer : {}, + !exclusionVariables.excludeTabContainer && !exclusionVariables.excludeTabContainerHelpers + ? helpersTabContainer + : {}, + !exclusionVariables.excludeTextArea ? widgetsTextArea : {}, + !exclusionVariables.excludeTextBox ? widgetsTextBox : {}, + !exclusionVariables.excludeTextBox && !exclusionVariables.excludeTextBoxHelpers ? helpersTextBox : {}, + !exclusionVariables.excludeToggleButtons ? widgetsToggleButtons : {}, + !exclusionVariables.excludeTypography ? widgetsTypography : {}, + !exclusionVariables.excludeTypography && !exclusionVariables.excludeTypographyHelpers ? helpersTypography : {}, + !exclusionVariables.excludeVideoPlayer ? widgetsVideoPlayer : {}, + !exclusionVariables.excludeWebView ? widgetsWebView : {}, + !exclusionVariables.excludeHelpers ? helperClasses : {}, + !exclusionVariables.excludeRadioButtons ? radioButtons : {}, + !exclusionVariables.excludeRadioButtons && !exclusionVariables.excludeRadioButtonsHelper ? helperRadioButtons : {}, + !exclusionVariables.excludeBackgroundGradient ? backgroundGradient : {}, + !exclusionVariables.excludeBackgroundGradient && !exclusionVariables.excludeBackgroundGradientHelper + ? helperBackgroundGradient + : {}, + !exclusionVariables.excludeColumnChart ? widgetsColumnChart : {}, + !exclusionVariables.excludeColumnChart && !exclusionVariables.excludeColumnChartHelper ? helpersColumnChart : {}, + !exclusionVariables.excludeGallery ? widgetsGallery : {}, + !exclusionVariables.excludeGallery && !exclusionVariables.excludeGalleryHelper ? helpersGallery : {}, + !exclusionVariables.excludeGalleryTextFilter ? widgetsGalleryTextFilter : {}, + !exclusionVariables.excludeGalleryTextFilter && !exclusionVariables.excludeGalleryTextFilterHelper + ? helpersGalleryTextFilter + : {}, + layout, + page +].reduce((merged, object) => ({ ...merged, ...object }), {}); diff --git a/themesource/atlas_core/native/variables.js b/themesource/atlas_core/native/variables.js new file mode 100644 index 0000000..3d58bd5 --- /dev/null +++ b/themesource/atlas_core/native/variables.js @@ -0,0 +1,759 @@ +import { Platform } from "react-native"; +import * as custom from "../../../theme/native/custom-variables"; +import adjustFont, { height, width } from "./core/helpers/_functions/adjustfont"; +import { anyColorToRgbString, setContrastScale } from "./core/helpers/_functions/convertcolors"; +import merge from "./core/helpers/_functions/mergeobjects"; +// +// +// == Global variables +// ## Variables to be used during styling +// -------------------------------------------------------------------------------------------------------------------// +// System defined read-only values +export const deviceHeight = height; +export const deviceWidth = width; +// +// Brand Style +let brand = { + primary: "#264AE5", + success: "#3CB33D", + warning: "#ECA51C", + danger: "#E33F4E", + info: "#0086D9", + primaryLight: "#F3F5FF", + successLight: "#F1FCF1", + warningLight: "#FFF9E6", + dangerLight: "#FFEEF0", + infoLight: "#ECF9FF" +}; +brand = merge(brand, custom.brand || {}); +// +// Background colors +const backgroundDefaults = { + primaryLight: "#FFF", + primaryDark: "#0A1325", + secondaryLight: "#F8F8F8", + secondaryDark: "#161F30" +}; +let background = { + primary: custom.darkMode ? backgroundDefaults.primaryDark : backgroundDefaults.primaryLight, + secondary: custom.darkMode ? backgroundDefaults.secondaryDark : backgroundDefaults.secondaryLight, + brandPrimary: brand.primary, + brandSuccess: brand.success, + brandWarning: brand.warning, + brandDanger: brand.danger, + brandInfo: brand.info +}; +background = merge(background, custom.background || {}); +// +// Contrast (Gray) colors based on background.primary +let contrast = { + highest: setContrastScale(0.95, background.primary), + higher: setContrastScale(0.8, background.primary), + high: setContrastScale(0.65, background.primary), + regular: setContrastScale(0.5, background.primary), + low: setContrastScale(0.35, background.primary), + lower: setContrastScale(0.2, background.primary), + lowest: setContrastScale(0.05, background.primary) +}; +contrast = merge(contrast, custom.contrast || {}); +// +// Border Style +let border = { + color: custom.darkMode ? "#3B4251" : "#CED0D3", + width: 1, + radiusSmall: 4, + radiusLarge: 8, + radiusLargest: 9999 +}; +border = merge(border, custom.border || {}); +// +// Font Styles +const fontDefaults = { + colorTitleDark: "#0A1326", + colorTitleLight: "#FDFDFD", + colorParagraphDark: "#6C717E", + colorParagraphLight: "#E7E7E9", + colorDisabledDark: "#9DA1A8", + colorDisabledLight: "#9DA1A8" +}; +let font = { + size: adjustFont(14), + sizeSmallest: adjustFont(10), + sizeSmall: adjustFont(12), + sizeLarge: adjustFont(16), + sizeLargest: adjustFont(18), + sizeH1: adjustFont(40), + sizeH2: adjustFont(34), + sizeH3: adjustFont(28), + sizeH4: adjustFont(24), + sizeH5: adjustFont(20), + sizeH6: adjustFont(16), + lineHeight: adjustFont(14) * 1.5, + lineHeightSmallest: adjustFont(10) * 1.5, + lineHeightSmall: adjustFont(12) * 1.5, + lineHeightLarge: adjustFont(16) * 1.5, + lineHeightLargest: adjustFont(18) * 1.5, + lineHeightH1: adjustFont(40) * 1.5, + lineHeightH2: adjustFont(34) * 1.5, + lineHeightH3: adjustFont(28) * 1.5, + lineHeightH4: adjustFont(24) * 1.5, + lineHeightH5: adjustFont(20) * 1.5, + lineHeightH6: adjustFont(16) * 1.5, + colorTitle: custom.darkMode ? fontDefaults.colorTitleLight : fontDefaults.colorTitleDark, + colorParagraph: custom.darkMode ? fontDefaults.colorParagraphLight : fontDefaults.colorParagraphDark, + colorDisabled: custom.darkMode ? fontDefaults.colorDisabledLight : fontDefaults.colorDisabledDark, + weightLight: "100", + weightNormal: "normal", + weightSemiBold: "600", + weightBold: "bold", + family: Platform.select({ ios: "System", android: "normal" }) +}; +font = merge(font, custom.font || {}); +// +// Spacing +let spacing = { + smallest: 2, + smaller: 4, + small: 8, + regular: 16, + large: 24, + larger: 32, + largest: 40 +}; +spacing = merge(spacing, custom.spacing || {}); +// +// Button Styles +let button = { + // Start default styles + container: { + rippleColor: contrast.lowest, + borderRadius: border.radiusLarge, + minWidth: 48, + minHeight: 48, + paddingVertical: spacing.small, + paddingHorizontal: spacing.small + }, + containerDisabled: { + borderColor: border.color, + backgroundColor: border.color + }, + icon: { + size: font.sizeSmall + }, + iconDisabled: { + color: font.colorDisabled + }, + caption: { + fontSize: font.sizeSmall, + fontWeight: font.weightBold + }, + captionDisabled: { + color: font.colorDisabled + }, + // End default styles + header: { + color: contrast.highest, + borderColor: "transparent", + backgroundColor: "transparent", + fontSize: font.sizeSmall, + fontSizeIcon: font.sizeSmall, + paddingLeft: 0, + paddingRight: 10 + }, + primary: { + color: "#FFF", + borderColor: brand.primary, + backgroundColor: brand.primary + }, + secondary: { + color: brand.primary, + borderColor: brand.primary, + backgroundColor: "transparent", + inversedColor: "#FFF" + }, + success: { + color: "#FFF", + borderColor: brand.success, + backgroundColor: brand.success + }, + warning: { + color: "#FFF", + borderColor: brand.warning, + backgroundColor: brand.warning + }, + danger: { + color: "#FFF", + borderColor: brand.danger, + backgroundColor: brand.danger + } +}; +button = merge(button, custom.button || {}); +// +// Input Styles +let input = { + label: { + numberOfLines: 1, + color: font.colorTitle, + fontSize: font.sizeSmall, + textAlign: "left" + }, + labelDisabled: { + color: font.colorTitle + }, + input: { + color: font.colorTitle, + borderColor: contrast.lower, + backgroundColor: background.primary, + selectionColor: contrast.lower, + placeholderTextColor: contrast.low, + fontSize: font.size, + lineHeight: font.lineHeight, + borderWidth: border.width, + borderRadius: border.radiusLarge, + minWidth: 48, + minHeight: 48, + paddingVertical: spacing.small, + paddingHorizontal: spacing.small + }, + inputContainer: { + underlayColor: `rgba(${anyColorToRgbString(contrast.low)},0.4)` + }, + inputDisabled: { + color: font.colorDisabled, + borderColor: border.color, + backgroundColor: background.secondary + }, + inputError: { + color: brand.danger, + borderColor: brand.danger, + placeholderTextColor: brand.danger, + backgroundColor: brand.dangerLight + }, + validationMessage: { + color: brand.danger, + fontSize: font.size + }, + // Only used for the DropDown & ReferenceSelector + valueContainer: { + rippleColor: contrast.lowest + }, + itemContainer: { + paddingVertical: 12, + paddingHorizontal: spacing.regular, + backgroundColor: background.primary + }, + item: { + color: font.colorTitle, + fontSize: font.size + }, + selectedItemContainer: { + borderWidth: border.width, + borderRadius: border.radiusLarge, + borderColor: brand.primary, + backgroundColor: "transparent" + }, + selectedItem: { + color: font.colorTitle, + fontSize: font.size + } +}; +input = merge(input, custom.input || {}); +// +// Image Styles +let image = { + image: { + small: 24, + medium: 40, + large: 56, + larger: 72 + }, + imageDisabled: { + opacity: 0.6 + }, + icon: 16 +}; +image = merge(image, custom.image || {}); +// +// Navigation Styles +let navigation = { + statusBar: { + backgroundColor: background.primary, + barStyle: custom.darkMode ? "light-content" : "dark-content" + }, + topBar: { + backgroundColor: brand.primary, + backButtonColor: "#FFF", + titleColor: "#FFF", + titleFontSize: font.sizeH6 + }, + bottomBar: { + color: contrast.high, + selectedTextColor: brand.primary, + selectedIconColor: brand.primary, + backgroundColor: background.primary, + fontSize: font.sizeSmall, + iconSize: font.sizeSmall + }, + progressOverlay: { + color: font.colorTitle, + activityIndicatorColor: font.colorTitle, + backgroundColor: "rgba(0, 0, 0, 0.5)", + containerBackgroundColor: background.secondary, + fontSize: font.size, + borderRadius: border.radiusSmall, + elevation: 1.5, + shadowColor: "#000", + shadowOpacity: 0.1, + shadowRadius: 10 // Only for iOS + } +}; +navigation = merge(navigation, custom.navigation || {}); +// +// Container Styles +let container = { + containerDisabled: { + opacity: 0.6 + } +}; +container = merge(container, custom.container || {}); +// +// Accordion Styles +let accordion = { + container: { + backgroundColor: background.primary, + borderColor: border.color + }, + groupHeader: { + container: { + paddingVertical: spacing.regular, + paddingHorizontal: spacing.regular + }, + heading: { + color: font.colorTitle + }, + icon: { + size: font.sizeLarge, + color: font.colorTitle + } + }, + groupContent: { + paddingTop: spacing.small, + paddingBottom: spacing.large, + paddingHorizontal: spacing.regular + } +}; +accordion = merge(accordion, custom.accordion || {}); +// +// Badge Styles +let badge = { + fontWeight: font.weightNormal, + borderRadius: border.radiusLarge, + paddingVertical: spacing.smaller, + paddingHorizontal: spacing.small, + default: { + color: contrast.higher, + backgroundColor: contrast.lowest + }, + primary: { + color: brand.primary, + backgroundColor: brand.primaryLight + }, + success: { + color: brand.success, + backgroundColor: brand.successLight + }, + warning: { + color: brand.warning, + backgroundColor: brand.warningLight + }, + danger: { + color: brand.danger, + backgroundColor: brand.dangerLight + } +}; +badge = merge(badge, custom.badge || {}); +// +// Tabcontainer Styles +let tabContainer = { + tabBar: { + pressColor: contrast.lower, + backgroundColor: brand.primary + }, + tab: { + paddingVertical: 12 + }, + indicator: { + backgroundColor: fontDefaults.colorTitleLight, + height: Platform.select({ ios: 2, android: 2 }) + }, + label: { + color: fontDefaults.colorTitleLight, + fontSize: font.size, + fontWeight: font.weightSemiBold, + textTransform: "capitalize" + }, + activeLabel: { + color: fontDefaults.colorTitleLight, + fontSize: font.size, + fontWeight: font.weightSemiBold, + textTransform: "capitalize" + }, + badgeContainer: { + borderRadius: border.radiusLargest, + backgroundColor: badge.default.backgroundColor, + paddingVertical: spacing.smallest, + paddingHorizontal: spacing.small, + marginLeft: 8 + }, + badgeCaption: { + fontSize: font.size, + color: badge.default.color, + fontWeight: badge.fontWeight + } +}; +tabContainer = merge(tabContainer, custom.tabContainer || {}); +// +// Listview Styles +let listView = { + listItemDisabled: { + opacity: 0.6 + }, + border: { + color: border.color, + width: border.width + } +}; +listView = merge(listView, custom.listView || {}); +// +// Checkbox Styles +let checkbox = { + checkboxInput: { + color: brand.primary, + size: 20, + backgroundColor: background.primary, + borderColor: border.color, + borderWidth: border.width, + borderRadius: border.radiusSmall, + width: 40, + height: 40 + }, + checkboxInputDisabled: { + color: brand.primaryLight, + backgroundColor: background.secondary + }, + checkboxInputError: { + color: brand.danger, + borderColor: brand.danger + } +}; +checkbox = merge(checkbox, custom.checkbox || {}); +// +// Layoutgrid Styles +let layoutGrid = { + gutterSize: 16 +}; +layoutGrid = merge(layoutGrid, custom.layoutGrid || {}); +// +// +// Floating Action Button Styles +let floatingActionButton = { + container: { + margin: 30 + }, + button: { + size: 50, + rippleColor: contrast.lowest, + borderColor: brand.primary, + backgroundColor: brand.primary + }, + buttonIcon: { + size: font.sizeLarge, + color: contrast.lowest + }, + secondaryButton: { + size: 30, + backgroundColor: background.secondary + }, + secondaryButtonIcon: { + size: font.sizeSmall, + color: contrast.high + }, + secondaryButtonCaption: { + color: contrast.high, + fontSize: font.sizeSmall + }, + secondaryButtonCaptionContainer: { + backgroundColor: background.primary, + borderColor: background.primary + } +}; +floatingActionButton = merge(floatingActionButton, custom.floatingActionButton || {}); +// +// Intro Screen Styles +let introScreen = { + fullscreenContainer: { + backgroundColor: background.primary + }, + popupContainer: { + paddingVertical: 150, + paddingHorizontal: 50, + backgroundColor: "rgba(0, 0, 0, 0.5)" + }, + pagination: { + text: { + color: font.colorTitle, + fontSize: font.size + }, + dotStyle: { + size: spacing.small, + backgroundColor: contrast.lower + }, + activeDotStyle: { + size: spacing.small, + backgroundColor: font.colorTitle + } + }, + button: { + icon: { + color: font.colorTitle, + size: button.icon.size + }, + caption: { + color: font.colorTitle, + fontSize: button.caption.fontSize, + fontWeight: font.weightBold, + textTransform: "uppercase", + paddingHorizontal: spacing.smallest + } + }, + buttonPaginationAbove: { + container: { + paddingVertical: spacing.regular, + backgroundColor: button.primary.backgroundColor + } + } +}; +introScreen = merge(introScreen, custom.introScreen || {}); +// +// List View Swipe Styles +let listViewSwipe = { + leftAction: { + panelSize: 160, + panelSizeSmall: 80, + panelSizeLarge: 240, + backgroundColor: background.primary + }, + rightAction: { + panelSize: 160, + panelSizeSmall: 80, + panelSizeLarge: 240, + backgroundColor: background.primary + } +}; +listViewSwipe = merge(listViewSwipe, custom.listViewSwipe || {}); +// +// Progress Bar Styles +let progressBar = { + bar: { + height: 8, + heightSmall: 4, + heightLarge: 12, + backgroundColor: contrast.lowest + }, + fill: { + backgroundColor: brand.primary + } +}; +progressBar = merge(progressBar, custom.progressBar || {}); +// +// Progress Circle Styles +let progressCircle = { + circle: { + size: 64 + }, + fill: { + width: 4, + lineCapRounded: true, + backgroundColor: brand.primary + }, + text: { + color: contrast.regular, + fontSize: font.size, + fontWeight: font.weightSemiBold + } +}; +progressCircle = merge(progressCircle, custom.progressCircle || {}); +// +// Rating Styles +let rating = { + containerDisabled: { + opacity: 0.5 + }, + icon: { + size: 24, + color: contrast.lower, + selectedColor: brand.warning + } +}; +rating = merge(rating, custom.rating || {}); +// +// (Range)Slider Styles +let slider = { + track: { + height: 4, + backgroundColor: contrast.lowest + }, + trackDisabled: { + backgroundColor: contrast.lower, + opacity: 0.4 + }, + highlight: { + backgroundColor: brand.primary + }, + highlightDisabled: { + backgroundColor: brand.primary + }, + marker: { + size: 24, + borderColor: contrast.lowest, + backgroundColor: background.secondary + }, + markerActive: { + size: 32 + }, + markerDisabled: { + size: 24, + borderColor: contrast.lowest, + backgroundColor: background.secondary + } +}; +slider = merge(slider, custom.slider || {}); +// +// Radio Buttons +let radioButtons = { + labelTextStyle: { + color: font.colorTitle, + fontSize: font.sizeSmall, + lineHeight: font.lineHeightSmall, + marginBottom: spacing.small + }, + radioButtonItemContainerStyle: { + marginBottom: spacing.small + }, + radioButtonItemContainerDisabledStyle: { + opacity: 0.5 + }, + radioButtonItemContainerHorizontalStyle: { + marginEnd: spacing.small + }, + circularButtonStyle: { + width: 16, + height: 16, + borderRadius: 8, + borderColor: border.color, + marginEnd: spacing.smaller + }, + activeButtonStyle: { + width: 8, + height: 8, + borderRadius: 4, + backgroundColor: brand.primary + }, + radioButtonItemTitleStyle: { + color: font.colorTitle, + fontSize: font.sizeSmall, + lineHeight: font.lineHeightSmall + }, + validationMessage: { + color: brand.danger, + fontSize: font.sizeSmall + } +}; +radioButtons = merge(radioButtons, custom.radioButtons || {}); +// +// Background Gradient +let backgroundGradient = { + container: {}, + angle: 0, + opacity: 100 +}; +backgroundGradient = merge(backgroundGradient, custom.backgroundGradient || {}); +// column chart styles +let columnChart = { + container: {}, + errorMessage: { + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal + }, + chart: {}, + grid: { + lineColor: border.color + }, + xAxis: { + color: font.colorTitle, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal, + label: { + color: font.colorParagraph, + alignSelf: "center", + marginHorizontal: 0, + marginVertical: 8, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal + }, + lineColor: border.color + }, + yAxis: { + color: font.colorTitle, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal, + label: { + color: font.colorParagraph, + marginHorizontal: 0, + marginVertical: 8, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal + }, + lineColor: border.color + }, + columns: { + columnColorPalette: Object.entries(brand) + .reduce((accumulator, [key, value]) => (key.endsWith("Light") ? accumulator : [...accumulator, value]), []) + .join(";"), + columnsOffset: 20, + customColumnStyles: { + your_static_or_dynamic_attribute_value: { + column: {}, + label: {} + } + } + }, + legend: { + container: { + justifyContent: "flex-start", + marginHorizontal: 0, + marginVertical: spacing.small + }, + item: { + padding: 0, + paddingRight: spacing.regular + }, + indicator: { + marginRight: spacing.small + }, + label: { + color: font.colorTitle, + fontFamily: font.family, + fontSize: font.sizeSmall, + fontWeight: font.weightNormal + } + } +}; +columnChart = merge(columnChart, custom.columnChart || {}); +export * from "../../../theme/native/custom-variables"; +export { accordion, brand, backgroundDefaults, background, border, button, contrast, checkbox, fontDefaults, font, input, image, layoutGrid, listView, navigation, spacing, container, tabContainer, badge, floatingActionButton, introScreen, listViewSwipe, progressBar, progressCircle, slider, rating, radioButtons, backgroundGradient, columnChart }; diff --git a/themesource/atlas_core/public/resources/arrow.svg b/themesource/atlas_core/public/resources/arrow.svg new file mode 100644 index 0000000..d289b3a --- /dev/null +++ b/themesource/atlas_core/public/resources/arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/themesource/atlas_core/public/resources/fonts/LICENSE.txt b/themesource/atlas_core/public/resources/fonts/LICENSE.txt new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/themesource/atlas_core/public/resources/fonts/LICENSE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/themesource/atlas_core/public/resources/fonts/OpenSans-Bold.woff b/themesource/atlas_core/public/resources/fonts/OpenSans-Bold.woff new file mode 100644 index 0000000..fe26694 Binary files /dev/null and b/themesource/atlas_core/public/resources/fonts/OpenSans-Bold.woff differ diff --git a/themesource/atlas_core/public/resources/fonts/OpenSans-BoldItalic.woff b/themesource/atlas_core/public/resources/fonts/OpenSans-BoldItalic.woff new file mode 100644 index 0000000..4ff9673 Binary files /dev/null and b/themesource/atlas_core/public/resources/fonts/OpenSans-BoldItalic.woff differ diff --git a/themesource/atlas_core/public/resources/fonts/OpenSans-Italic.woff b/themesource/atlas_core/public/resources/fonts/OpenSans-Italic.woff new file mode 100644 index 0000000..d54cc24 Binary files /dev/null and b/themesource/atlas_core/public/resources/fonts/OpenSans-Italic.woff differ diff --git a/themesource/atlas_core/public/resources/fonts/OpenSans-Light.woff b/themesource/atlas_core/public/resources/fonts/OpenSans-Light.woff new file mode 100644 index 0000000..a823caa Binary files /dev/null and b/themesource/atlas_core/public/resources/fonts/OpenSans-Light.woff differ diff --git a/themesource/atlas_core/public/resources/fonts/OpenSans-LightItalic.woff b/themesource/atlas_core/public/resources/fonts/OpenSans-LightItalic.woff new file mode 100644 index 0000000..fa8d934 Binary files /dev/null and b/themesource/atlas_core/public/resources/fonts/OpenSans-LightItalic.woff differ diff --git a/themesource/atlas_core/public/resources/fonts/OpenSans-Regular.woff b/themesource/atlas_core/public/resources/fonts/OpenSans-Regular.woff new file mode 100644 index 0000000..99c5d47 Binary files /dev/null and b/themesource/atlas_core/public/resources/fonts/OpenSans-Regular.woff differ diff --git a/themesource/atlas_core/public/resources/fonts/OpenSans-SemiBold.woff b/themesource/atlas_core/public/resources/fonts/OpenSans-SemiBold.woff new file mode 100644 index 0000000..50c2bc1 Binary files /dev/null and b/themesource/atlas_core/public/resources/fonts/OpenSans-SemiBold.woff differ diff --git a/themesource/atlas_core/public/resources/fonts/OpenSans-SemiBoldItalic.woff b/themesource/atlas_core/public/resources/fonts/OpenSans-SemiBoldItalic.woff new file mode 100644 index 0000000..a0c3de7 Binary files /dev/null and b/themesource/atlas_core/public/resources/fonts/OpenSans-SemiBoldItalic.woff differ diff --git a/themesource/atlas_core/public/resources/fonts/open-sans.css b/themesource/atlas_core/public/resources/fonts/open-sans.css new file mode 100644 index 0000000..63b2bf6 --- /dev/null +++ b/themesource/atlas_core/public/resources/fonts/open-sans.css @@ -0,0 +1,48 @@ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans'), url('./OpenSans-Bold.woff') format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + src: local('Open Sans'), url('./OpenSans-BoldItalic.woff') format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans'), url('./OpenSans-Italic.woff') format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans'), url('./OpenSans-Light.woff') format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 300; + src: local('Open Sans'), url('./OpenSans-LightItalic.woff') format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), url('./OpenSans-Regular.woff') format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans'), url('./OpenSans-SemiBold.woff') format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: local('Open Sans'), url('./OpenSans-SemiBoldItalic.woff') format('woff'); +} diff --git a/themesource/atlas_core/public/resources/fonts/open-sans/LICENSE.txt b/themesource/atlas_core/public/resources/fonts/open-sans/LICENSE.txt new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/themesource/atlas_core/public/resources/fonts/open-sans/LICENSE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-Bold.woff b/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-Bold.woff new file mode 100644 index 0000000..fe26694 Binary files /dev/null and b/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-Bold.woff differ diff --git a/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-BoldItalic.woff b/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-BoldItalic.woff new file mode 100644 index 0000000..4ff9673 Binary files /dev/null and b/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-BoldItalic.woff differ diff --git a/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-Italic.woff b/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-Italic.woff new file mode 100644 index 0000000..d54cc24 Binary files /dev/null and b/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-Italic.woff differ diff --git a/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-Light.woff b/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-Light.woff new file mode 100644 index 0000000..a823caa Binary files /dev/null and b/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-Light.woff differ diff --git a/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-LightItalic.woff b/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-LightItalic.woff new file mode 100644 index 0000000..fa8d934 Binary files /dev/null and b/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-LightItalic.woff differ diff --git a/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-Regular.woff b/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-Regular.woff new file mode 100644 index 0000000..99c5d47 Binary files /dev/null and b/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-Regular.woff differ diff --git a/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-SemiBold.woff b/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-SemiBold.woff new file mode 100644 index 0000000..50c2bc1 Binary files /dev/null and b/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-SemiBold.woff differ diff --git a/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-SemiBoldItalic.woff b/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-SemiBoldItalic.woff new file mode 100644 index 0000000..a0c3de7 Binary files /dev/null and b/themesource/atlas_core/public/resources/fonts/open-sans/OpenSans-SemiBoldItalic.woff differ diff --git a/themesource/atlas_core/public/resources/fonts/open-sans/open-sans.css b/themesource/atlas_core/public/resources/fonts/open-sans/open-sans.css new file mode 100644 index 0000000..63b2bf6 --- /dev/null +++ b/themesource/atlas_core/public/resources/fonts/open-sans/open-sans.css @@ -0,0 +1,48 @@ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans'), url('./OpenSans-Bold.woff') format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + src: local('Open Sans'), url('./OpenSans-BoldItalic.woff') format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans'), url('./OpenSans-Italic.woff') format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans'), url('./OpenSans-Light.woff') format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 300; + src: local('Open Sans'), url('./OpenSans-LightItalic.woff') format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), url('./OpenSans-Regular.woff') format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans'), url('./OpenSans-SemiBold.woff') format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: local('Open Sans'), url('./OpenSans-SemiBoldItalic.woff') format('woff'); +} diff --git a/theme/styles/web/css/fonts/glyphicons-halflings-regular.woff b/themesource/atlas_core/public/resources/glyphicons-halflings-regular.woff similarity index 100% rename from theme/styles/web/css/fonts/glyphicons-halflings-regular.woff rename to themesource/atlas_core/public/resources/glyphicons-halflings-regular.woff diff --git a/theme/styles/web/css/fonts/glyphicons-halflings-regular.woff2 b/themesource/atlas_core/public/resources/glyphicons-halflings-regular.woff2 similarity index 100% rename from theme/styles/web/css/fonts/glyphicons-halflings-regular.woff2 rename to themesource/atlas_core/public/resources/glyphicons-halflings-regular.woff2 diff --git a/themesource/atlas_core/public/resources/menubar-more-icon.png b/themesource/atlas_core/public/resources/menubar-more-icon.png new file mode 100644 index 0000000..9111d0e Binary files /dev/null and b/themesource/atlas_core/public/resources/menubar-more-icon.png differ diff --git a/themesource/atlas_core/public/resources/progress-indicator.gif b/themesource/atlas_core/public/resources/progress-indicator.gif new file mode 100644 index 0000000..c8c5893 Binary files /dev/null and b/themesource/atlas_core/public/resources/progress-indicator.gif differ diff --git a/themesource/atlas_core/public/resources/swipe-progress.gif b/themesource/atlas_core/public/resources/swipe-progress.gif new file mode 100644 index 0000000..f76d56d Binary files /dev/null and b/themesource/atlas_core/public/resources/swipe-progress.gif differ diff --git a/themesource/atlas_core/public/resources/switcher-toggle.png b/themesource/atlas_core/public/resources/switcher-toggle.png new file mode 100644 index 0000000..85f6519 Binary files /dev/null and b/themesource/atlas_core/public/resources/switcher-toggle.png differ diff --git a/themesource/atlas_core/public/resources/switcher.png b/themesource/atlas_core/public/resources/switcher.png new file mode 100644 index 0000000..6a61a7a Binary files /dev/null and b/themesource/atlas_core/public/resources/switcher.png differ diff --git a/themesource/atlas_core/public/resources/tabcontainer-loading.gif b/themesource/atlas_core/public/resources/tabcontainer-loading.gif new file mode 100644 index 0000000..f76d56d Binary files /dev/null and b/themesource/atlas_core/public/resources/tabcontainer-loading.gif differ diff --git a/themesource/atlas_core/public/resources/ttp.gif b/themesource/atlas_core/public/resources/ttp.gif new file mode 100644 index 0000000..1578b10 Binary files /dev/null and b/themesource/atlas_core/public/resources/ttp.gif differ diff --git a/theme/resources/work-do-more.jpeg b/themesource/atlas_core/public/resources/work-do-more.jpeg similarity index 100% rename from theme/resources/work-do-more.jpeg rename to themesource/atlas_core/public/resources/work-do-more.jpeg diff --git a/themesource/atlas_core/web/_exclusion-variables.scss b/themesource/atlas_core/web/_exclusion-variables.scss new file mode 100644 index 0000000..d7bb67a --- /dev/null +++ b/themesource/atlas_core/web/_exclusion-variables.scss @@ -0,0 +1,82 @@ +// +// DISCLAIMER: +// Do not change this file, because it is core styling. +// + +//== Core style exclusion +$exclude-bootstrap: false; +$exclude-mxui: false; +$exclude-animations: false; +$exclude-flex: false; +$exclude-spacing: false; +$exclude-base: false; +$exclude-login: false; + +//== Widget style exclusion +$exclude-accordion: false; +$exclude-accordion-helpers: false; +$exclude-background-helpers: false; +$exclude-badge: false; +$exclude-badge-button: false; +$exclude-badge-button-helpers: false; +$exclude-barcode-scanner: false; +$exclude-button: false; +$exclude-button-helpers: false; +$exclude-check-box: false; +$exclude-custom-dijit-widget: false; +$exclude-custom-switch: false; +$exclude-data-grid: false; +$exclude-data-grid-helpers: false; +$exclude-data-view: false; +$exclude-data-picker: false; +$exclude-glyphicon: false; +$exclude-grid: false; +$exclude-group-box: false; +$exclude-group-box-helpers: false; +$exclude-header: false; +$exclude-helper-classes: false; +$exclude-input: false; +$exclude-image-helpers: false; +$exclude-label: false; +$exclude-label-helpers: false; +$exclude-layout-grid: false; +$exclude-list-view: false; +$exclude-list-view-helpers: false; +$exclude-modal: false; +$exclude-navigation-bar: false; +$exclude-navigation-bar-helpers: false; +$exclude-navigation-list: false; +$exclude-navigation-tree: false; +$exclude-navigation-tree-helpers: false; +$exclude-pagination: false; +$exclude-pop-up-menu: false; +$exclude-progress: false; +$exclude-progress-bar: false; +$exclude-progress-bar-helpers: false; +$exclude-progress-circle: false; +$exclude-progress-circle-helpers: false; +$exclude-radio-button: false; +$exclude-range-slider: false; +$exclude-range-slider-helpers: false; +$exclude-rating: false; +$exclude-rating-helpers: false; +$exclude-simple-menu-bar: false; +$exclude-simple-menu-bar-helpers: false; +$exclude-slider: false; +$exclude-slider-helpers: false; +$exclude-table: false; +$exclude-table-helpers: false; +$exclude-tab-container: false; +$exclude-tab-container-helpers: false; +$exclude-template-grid: false; +$exclude-template-grid-helpers: false; +$exclude-timeline: false; +$exclude-tooltip: false; +$exclude-typography: false; +$exclude-typography-helpers: false; + +//== Layouts style exclusion +$exclude-layout-atlas: false; +$exclude-layout-atlas-phone: false; +$exclude-layout-atlas-responsive: false; +$exclude-layout-atlas-tablet: false; diff --git a/themesource/atlas_core/web/_variables.scss b/themesource/atlas_core/web/_variables.scss new file mode 100644 index 0000000..ed029cd --- /dev/null +++ b/themesource/atlas_core/web/_variables.scss @@ -0,0 +1,765 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// +// +// ██████╗ █████╗ ███████╗██╗ ██████╗ +// ██╔══██╗██╔══██╗██╔════╝██║██╔════╝ +// ██████╔╝███████║███████╗██║██║ +// ██╔══██╗██╔══██║╚════██║██║██║ +// ██████╔╝██║ ██║███████║██║╚██████╗ +// ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝ +// + +//== Gray Shades +//## Different gray shades to be used for our variables and components +$gray-darker: #3b4251 !default; +$gray-dark: #606671 !default; +$gray: #787d87 !default; +$gray-light: #6c7180 !default; +$gray-primary: #ced0d3 !default; +$gray-lighter: #f8f8f8 !default; + +//== Step 1: Brand Colors +$brand-default: $gray-primary !default; +$brand-primary: #264ae5 !default; +$brand-success: #3cb33d !default; +$brand-warning: #eca51c !default; +$brand-danger: #e33f4e !default; + +$brand-logo: false !default; +$brand-logo-height: 26px !default; +$brand-logo-width: 26px !default; // Only used for CSS brand logo + +//== Step 2: UI Customization + +// Default Font Size & Color +$font-size-default: 14px !default; +$font-color-default: #6c717e !default; + +// Global Border Color +$border-color-default: #ced0d3 !default; +$border-radius-default: 5px !default; + +// Topbar +$topbar-bg: #fff !default; +$topbar-minimalheight: 60px !default; +$topbar-border-color: $border-color-default !default; + +// Topbar mobile +$m-header-height: 45px !default; +$m-header-bg: $brand-primary !default; +$m-header-color: #fff !default; +$m-header-title-size: 16px !default; + +// Navbar Brand Name / For your company, product, or project name (used in layouts/base/) +$navbar-brand-name: $font-color-default !default; + +// Background Colors +// Backgrounds +$bg-color: #f8f8f8 !default; +$bg-color-secondary: #fff !default; + +// Default Link Color +$link-color: $brand-primary !default; +$link-hover-color: darken($link-color, 15%) !default; + +// +// █████╗ ██████╗ ██╗ ██╗ █████╗ ███╗ ██╗ ██████╗███████╗██████╗ +// ██╔══██╗██╔══██╗██║ ██║██╔══██╗████╗ ██║██╔════╝██╔════╝██╔══██╗ +// ███████║██║ ██║██║ ██║███████║██╔██╗ ██║██║ █████╗ ██║ ██║ +// ██╔══██║██║ ██║╚██╗ ██╔╝██╔══██║██║╚██╗██║██║ ██╔══╝ ██║ ██║ +// ██║ ██║██████╔╝ ╚████╔╝ ██║ ██║██║ ╚████║╚██████╗███████╗██████╔╝ +// ╚═╝ ╚═╝╚═════╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ +// + +//== Typography +//## Change your font family, weight, line-height, headings and more (used in components/typography) + +// Font Family Import (Used for google font plugin in theme creater) +$font-family-import: "resources/fonts/open-sans/open-sans.css" !default; + +// Font Family / False = fallback from Bootstrap (Helvetica Neue) +$font-family-base: "Open Sans", sans-serif !default; + +// Font Sizes +$font-size-large: 18px !default; +$font-size-small: 12px !default; + +// Font Weights +$font-weight-light: 100 !default; +$font-weight-normal: normal !default; +$font-weight-semibold: 600 !default; +$font-weight-bold: bold !default; + +// Font Size Headers +$font-size-h1: 31px !default; +$font-size-h2: 26px !default; +$font-size-h3: 24px !default; +$font-size-h4: 18px !default; +$font-size-h5: $font-size-default !default; +$font-size-h6: 12px !default; + +// Font Weight Headers +$font-weight-header: $font-weight-semibold !default; + +// Line Height +$line-height-base: 1.428571429 !default; + +// Spacing +$font-header-margin: 0 0 8px 0 !default; + +// Text Colors +$font-color-detail: #6c717e !default; +$font-color-header: #0a1326 !default; + +//== Navigation +//## Used in components/navigation + +// Default Navigation styling +$navigation-item-height: unset !default; +$navigation-item-padding: 16px !default; + +$navigation-font-size: $font-size-default !default; +$navigation-sub-font-size: $font-size-small !default; +$navigation-glyph-size: 20px !default; // For glyphicons that you can select in the Mendix Modeler + +$navigation-color: #fff !default; +$navigation-color-hover: #fff !default; +$navigation-color-active: #fff !default; + +$navigation-sub-color: #aaa !default; +$navigation-sub-color-hover: $brand-primary !default; +$navigation-sub-color-active: $brand-primary !default; + +// Navigation Sidebar +$navsidebar-font-size: $font-size-default !default; +$navsidebar-sub-font-size: $font-size-small !default; +$navsidebar-glyph-size: 20px !default; // For glyphicons that you can select in the Mendix Modeler + +$navsidebar-color: #fff !default; +$navsidebar-color-hover: #fff !default; +$navsidebar-color-active: #fff !default; + +$navsidebar-sub-color: #aaa !default; +$navsidebar-sub-color-hover: $brand-primary !default; +$navsidebar-sub-color-active: $brand-primary !default; + +$navsidebar-width-closed: 52px !default; +$navsidebar-width-open: 232px !default; + +// Navigation topbar +$navtopbar-font-size: $font-size-default !default; +$navtopbar-sub-font-size: $font-size-small !default; +$navtopbar-glyph-size: 1.2em !default; // For glyphicons that you can select in the Mendix Modeler + +$navtopbar-bg: $topbar-bg !default; +$navtopbar-bg-hover: darken($navtopbar-bg, 4) !default; +$navtopbar-bg-active: darken($navtopbar-bg, 8) !default; +$navtopbar-color: $font-color-default !default; +$navtopbar-color-hover: $navtopbar-color !default; +$navtopbar-color-active: $navtopbar-color !default; + +$navtopbar-sub-bg: lighten($navtopbar-bg, 4) !default; +$navtopbar-sub-bg-hover: $navtopbar-sub-bg !default; +$navtopbar-sub-bg-active: $navtopbar-sub-bg !default; +$navtopbar-sub-color: #aaa !default; +$navtopbar-sub-color-hover: $brand-primary !default; +$navtopbar-sub-color-active: $brand-primary !default; + +//== Cards +// Shadow color +$shadow-color-border: rgba($gray-primary, 0.5); +$shadow-color: rgba($gray-primary, 0.66); + +//Shadow size +$shadow-small: 0 2px 4px 0; +$shadow-medium: 0 5px 7px 0; +$shadow-large: 0 8px 10px 0; + +//## Used in layouts/base +$navtopbar-border-color: $topbar-border-color !default; + +//== Form +//## Used in components/inputs + +// Values that can be used default | lined +$form-input-style: default !default; + +// Form Label +$form-label-size: $font-size-default !default; +$form-label-weight: $font-weight-semibold !default; +$form-label-gutter: 8px !default; + +// Form Input dimensions +$form-input-height: auto !default; +$form-input-padding-y: 8px !default; +$form-input-padding-x: 8px !default; +$form-input-static-padding-y: 8px !default; +$form-input-static-padding-x: 0 !default; +$form-input-font-size: $form-label-size !default; +$form-input-line-height: $line-height-base !default; +$form-input-border-radius: $border-radius-default !default; + +// Form Input styling +$form-input-bg: #fff !default; +$form-input-bg-focus: #fff !default; +$form-input-bg-hover: $gray-primary !default; +$form-input-bg-disabled: $bg-color !default; +$form-input-color: $font-color-default !default; +$form-input-focus-color: $form-input-color !default; +$form-input-disabled-color: #9da1a8 !default; +$form-input-placeholder-color: #6c717c !default; +$form-input-border-color: $gray-primary !default; +$form-input-border-focus-color: $brand-primary !default; + +// Form Input Static styling +$form-input-static-border-color: $gray-primary !default; + +// Form Group +$form-group-margin-bottom: 16px !default; +$form-group-gutter: 16px !default; + +//== Buttons +//## Define background-color, border-color and text. Used in components/buttons + +// Default button style +$btn-font-size: 14px !default; +$btn-bordered: false !default; // Default value false, set to true if you want this effect +$btn-border-radius: $border-radius-default !default; + +// Button Background Color +$btn-default-bg: #fff !default; +$btn-primary-bg: $brand-primary !default; +$btn-success-bg: $brand-success !default; +$btn-warning-bg: $brand-warning !default; +$btn-danger-bg: $brand-danger !default; + +// Button Border Color +$btn-default-border-color: $gray-primary !default; +$btn-primary-border-color: $brand-primary !default; +$btn-success-border-color: $brand-success !default; +$btn-warning-border-color: $brand-warning !default; +$btn-danger-border-color: $brand-danger !default; + +// Button Text Color +$btn-default-color: $brand-primary !default; +$btn-primary-color: #fff !default; +$btn-success-color: #fff !default; +$btn-warning-color: #fff !default; +$btn-danger-color: #fff !default; + +// Button Icon Color +$btn-default-icon-color: $gray !default; + +// Button Background Color +$btn-default-bg-hover: $btn-default-border-color !default; +$btn-primary-bg-hover: mix($btn-primary-bg, black, 80%) !default; +$btn-success-bg-hover: mix($btn-success-bg, black, 80%) !default; +$btn-warning-bg-hover: mix($btn-warning-bg, black, 80%) !default; +$btn-danger-bg-hover: mix($btn-danger-bg, black, 80%) !default; +$btn-link-bg-hover: $gray-lighter !default; + +//== Header blocks +//## Define look and feel over multible building blocks that serve as header + +$header-min-height: 240px !default; +$header-bg-color: $brand-primary !default; +$header-bgimage-filter: brightness(60%) !default; +$header-text-color: #fff !default; +$header-text-color-detail: rgba(0, 0, 0, 0.2) !default; + +// +// ███████╗██╗ ██╗██████╗ ███████╗██████╗ ████████╗ +// ██╔════╝╚██╗██╔╝██╔══██╗██╔════╝██╔══██╗╚══██╔══╝ +// █████╗ ╚███╔╝ ██████╔╝█████╗ ██████╔╝ ██║ +// ██╔══╝ ██╔██╗ ██╔═══╝ ██╔══╝ ██╔══██╗ ██║ +// ███████╗██╔╝ ██╗██║ ███████╗██║ ██║ ██║ +// ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ +// + +//== Color variations +//## These variations are used to support several other variables and components + +// Color variations +$color-default-darker: mix($brand-default, black, 60%) !default; +$color-default-dark: mix($brand-default, black, 70%) !default; +$color-default-light: mix($brand-default, white, 20%) !default; +$color-default-lighter: mix($brand-default, white, 10%) !default; + +$color-primary-darker: mix($brand-primary, black, 60%) !default; +$color-primary-dark: mix($brand-primary, black, 70%) !default; +$color-primary-light: mix($brand-primary, white, 20%) !default; +$color-primary-lighter: mix($brand-primary, white, 10%) !default; + +$color-success-darker: mix($brand-success, black, 60%) !default; +$color-success-dark: mix($brand-success, black, 70%) !default; +$color-success-light: mix($brand-success, white, 20%) !default; +$color-success-lighter: mix($brand-success, white, 10%) !default; + +$color-warning-darker: mix($brand-warning, black, 60%) !default; +$color-warning-dark: mix($brand-warning, black, 70%) !default; +$color-warning-light: mix($brand-warning, white, 20%) !default; +$color-warning-lighter: mix($brand-warning, white, 10%) !default; + +$color-danger-darker: mix($brand-danger, black, 60%) !default; +$color-danger-dark: mix($brand-danger, black, 70%) !default; +$color-danger-light: mix($brand-danger, white, 20%) !default; +$color-danger-lighter: mix($brand-danger, white, 10%) !default; + +$brand-gradient: linear-gradient(to right top, #264ae5, #2239c5, #1b29a6, #111988, #03096c) !default; + +//== Grids +//## Used for Datagrid, Templategrid, Listview & Tables (see components folder) + +// Default Border Colors +$grid-border-color: $border-color-default !default; + +// Spacing +// Default +$grid-padding-top: 16px !default; +$grid-padding-right: 16px !default; +$grid-padding-bottom: 16px !default; +$grid-padding-left: 16px !default; + +// Listview +$listview-padding-top: 16px !default; +$listview-padding-right: 16px !default; +$listview-padding-bottom: 16px !default; +$listview-padding-left: 16px !default; + +// Background Colors +$grid-bg: transparent !default; +$grid-bg-header: transparent !default; // Grid Headers +$grid-bg-hover: mix($grid-border-color, #fff, 20%) !default; +$grid-bg-selected: mix($grid-border-color, #fff, 30%) !default; +$grid-bg-selected-hover: mix($grid-border-color, #fff, 50%) !default; + +// Striped Background Color +$grid-bg-striped: mix($grid-border-color, #fff, 10%) !default; + +// Background Footer Color +$grid-footer-bg: $gray-primary !default; + +// Text Color +$grid-selected-color: $font-color-default !default; + +// Paging Colors +$grid-paging-bg: transparent !default; +$grid-paging-bg-hover: transparent !default; +$grid-paging-border-color: transparent !default; +$grid-paging-border-color-hover: transparent !default; +$grid-paging-color: $gray-light !default; +$grid-paging-color-hover: $brand-primary !default; + +//== Tabs +//## Default variables for Tab Container Widget (used in components/tabcontainer) + +// Text Color +$tabs-color: $font-color-detail !default; +$tabs-color-active: $font-color-default !default; +$tabs-lined-color-active: $font-color-default !default; + +$tabs-lined-border-width: 3px !default; + +// Border Color +$tabs-border-color: $border-color-default !default; +$tabs-lined-border-color: $brand-primary !default; + +// Background Color +$tabs-bg: transparent !default; +$tabs-bg-pills: #e7e7e9 !default; +$tabs-bg-hover: lighten($tabs-border-color, 5) !default; +$tabs-bg-active: $brand-primary !default; + +//== Modals +//## Default Mendix Modal, Blocking Modal and Login Modal (used in components/modals) + +// Background Color +$modal-header-bg: transparent !default; + +// Border Color +$modal-header-border-color: $border-color-default !default; + +// Text Color +$modal-header-color: $font-color-default !default; + +//== Dataview +//## Default variables for Dataview Widget (used in components/dataview) + +// Controls +$dataview-controls-bg: transparent !default; +$dataview-controls-border-color: $border-color-default !default; + +// Empty Message +$dataview-emptymessage-bg: $bg-color !default; +$dataview-emptymessage-color: $font-color-default !default; + +//== Alerts +//## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts) + +// Background Color +$alert-primary-bg: $color-primary-lighter !default; +$alert-secondary-bg: $color-primary-lighter !default; +$alert-success-bg: $color-success-lighter !default; +$alert-warning-bg: $color-warning-lighter !default; +$alert-danger-bg: $color-danger-lighter !default; + +// Text Color +$alert-primary-color: $color-primary-darker !default; +$alert-secondary-color: $color-primary-darker !default; +$alert-success-color: $color-success-darker !default; +$alert-warning-color: $color-warning-darker !default; +$alert-danger-color: $color-danger-darker !default; + +// Border Color +$alert-primary-border-color: $color-primary-dark !default; +$alert-secondary-border-color: $color-primary-dark !default; +$alert-success-border-color: $color-success-dark !default; +$alert-warning-border-color: $color-warning-dark !default; +$alert-danger-border-color: $color-danger-dark !default; + +//== Wizard + +$wizard-step-height: 48px !default; +$wizard-step-number-size: 64px !default; +$wizard-step-number-font-size: $font-size-h3 !default; + +//Wizard states +$wizard-default: #fff !default; +$wizard-active: $brand-primary !default; +$wizard-visited: $brand-success !default; + +//Wizard step states +$wizard-default-bg: $wizard-default !default; +$wizard-default-color: $wizard-default !default; +$wizard-default-step-color: $font-color-default !default; +$wizard-default-border-color: $border-color-default !default; + +$wizard-active-bg: $wizard-active !default; +$wizard-active-color: $wizard-default !default; +$wizard-active-step-color: $wizard-active !default; +$wizard-active-border-color: $wizard-active !default; + +$wizard-visited-bg: $wizard-visited !default; +$wizard-visited-color: $wizard-default !default; +$wizard-visited-step-color: $wizard-visited !default; +$wizard-visited-border-color: $wizard-visited !default; + +//== Labels +//## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels) + +// Background Color +$label-default-bg: $brand-default !default; +$label-primary-bg: $brand-primary !default; +$label-success-bg: $brand-success !default; +$label-warning-bg: $brand-warning !default; +$label-danger-bg: $brand-danger !default; + +// Border Color +$label-default-border-color: $brand-default !default; +$label-primary-border-color: $brand-primary !default; +$label-success-border-color: $brand-success !default; +$label-warning-border-color: $brand-warning !default; +$label-danger-border-color: $brand-danger !default; + +// Text Color +$label-default-color: $font-color-default !default; +$label-primary-color: #fff !default; +$label-success-color: #fff !default; +$label-warning-color: #fff !default; +$label-danger-color: #fff !default; + +//== Groupbox +//## Default variables for Groupbox Widget (used in components/groupbox) + +// Background Color +$groupbox-default-bg: $gray-primary !default; +$groupbox-primary-bg: $brand-primary !default; +$groupbox-success-bg: $brand-success !default; +$groupbox-warning-bg: $brand-warning !default; +$groupbox-danger-bg: $brand-danger !default; +$groupbox-white-bg: #fff !default; + +// Text Color +$groupbox-default-color: $font-color-default !default; +$groupbox-primary-color: #fff !default; +$groupbox-success-color: #fff !default; +$groupbox-warning-color: #fff !default; +$groupbox-danger-color: #fff !default; +$groupbox-white-color: $font-color-default !default; + +//== Callout (groupbox) Colors +//## Extended variables for Groupbox Widget (used in components/groupbox) + +// Text and Border Color +$callout-default-color: $font-color-default !default; +$callout-primary-color: $brand-primary !default; +$callout-success-color: $brand-success !default; +$callout-warning-color: $brand-warning !default; +$callout-danger-color: $brand-danger !default; + +// Background Color +$callout-default-bg: $color-default-lighter !default; +$callout-primary-bg: $color-primary-lighter !default; +$callout-success-bg: $color-success-lighter !default; +$callout-warning-bg: $color-warning-lighter !default; +$callout-danger-bg: $color-danger-lighter !default; + +//== Timeline +//## Extended variables for Timeline Widget +// Colors +$timeline-icon-color: $brand-primary !default; +$timeline-border-color: $border-color-default !default; +$timeline-event-time-color: $brand-primary !default; + +// Sizes +$timeline-icon-size: 18px !default; +$timeline-image-size: 36px !default; + +//Timeline grouping +$timeline-grouping-size: 120px !default; +$timeline-grouping-border-radius: 30px !default; +$timeline-grouping-border-color: $timeline-border-color !default; + +//== Accordions +//## Extended variables for Accordion Widget + +// Default +$accordion-header-default-bg: $bg-color-secondary !default; +$accordion-header-default-bg-hover: $bg-color !default; +$accordion-header-default-color: $font-color-header !default; +$accordion-default-border-color: $border-color-default !default; + +$accordion-bg-striped: $grid-bg-striped !default; +$accordion-bg-striped-hover: $grid-bg-selected !default; + +// Semantic background colors +$accordion-header-primary-bg: $btn-primary-bg !default; +$accordion-header-secondary-bg: $btn-default-bg !default; +$accordion-header-success-bg: $btn-success-bg !default; +$accordion-header-warning-bg: $btn-warning-bg !default; +$accordion-header-danger-bg: $btn-danger-bg !default; + +$accordion-header-primary-bg-hover: $btn-primary-bg-hover !default; +$accordion-header-secondary-bg-hover: $btn-default-bg-hover !default; +$accordion-header-success-bg-hover: $btn-success-bg-hover !default; +$accordion-header-warning-bg-hover: $btn-warning-bg-hover !default; +$accordion-header-danger-bg-hover: $btn-danger-bg-hover !default; + +// Semantic text colors +$accordion-header-primary-color: $btn-primary-color !default; +$accordion-header-secondary-color: $btn-default-color !default; +$accordion-header-success-color: $btn-success-color !default; +$accordion-header-warning-color: $btn-warning-color !default; +$accordion-header-danger-color: $btn-danger-color !default; + +// Semantic border colors +$accordion-primary-border-color: $btn-primary-border-color !default; +$accordion-secondary-border-color: $btn-default-border-color !default; +$accordion-success-border-color: $btn-success-border-color !default; +$accordion-warning-border-color: $btn-warning-border-color !default; +$accordion-danger-border-color: $btn-danger-border-color !default; + +//== Spacing +//## Advanced layout options (used in base/mixins/default-spacing) + +// Smallest spacing +$spacing-smallest: 2px !default; + +// Smaller spacing +$spacing-smaller: 4px !default; + +// Small spacing +$spacing-small: 8px !default; + +// Medium spacing +$spacing-medium: 16px !default; +$t-spacing-medium: 16px !default; +$m-spacing-medium: 16px !default; + +// Large spacing +$spacing-large: 24px !default; +$t-spacing-large: 24px !default; +$m-spacing-large: 16px !default; + +// Larger spacing +$spacing-larger: 32px !default; + +// Largest spacing +$spacing-largest: 48px !default; + +// Layout spacing +$layout-spacing-top: 24px !default; +$layout-spacing-right: 24px !default; +$layout-spacing-bottom: 24px !default; +$layout-spacing-left: 24px !default; + +$t-layout-spacing-top: 24px !default; +$t-layout-spacing-right: 24px !default; +$t-layout-spacing-bottom: 24px !default; +$t-layout-spacing-left: 24px !default; + +$m-layout-spacing-top: 16px !default; +$m-layout-spacing-right: 16px !default; +$m-layout-spacing-bottom: 16px !default; +$m-layout-spacing-left: 16px !default; + +// Combined layout spacing +$layout-spacing: $layout-spacing-top $layout-spacing-right $layout-spacing-bottom $layout-spacing-left !default; +$m-layout-spacing: $m-layout-spacing-top $m-layout-spacing-right $m-layout-spacing-bottom $m-layout-spacing-left !default; +$t-layout-spacing: $t-layout-spacing-top $t-layout-spacing-right $t-layout-spacing-bottom $t-layout-spacing-left !default; + +// Gutter size +$gutter-size: 8px !default; + +//== Tables +//## Table spacing options (used in components/tables) + +$padding-table-cell-top: 8px !default; +$padding-table-cell-bottom: 8px !default; +$padding-table-cell-left: 8px !default; +$padding-table-cell-right: 8px !default; + +//== Media queries breakpoints +//## Define the breakpoints at which your layout will change, adapting to different screen sizes. + +$screen-xs: 480px !default; +$screen-sm: 576px !default; +$screen-md: 768px !default; +$screen-lg: 992px !default; +$screen-xl: 1200px !default; + +// So media queries don't overlap when required, provide a maximum (used for max-width) +$screen-xs-max: calc(#{$screen-sm} - 1px) !default; +$screen-sm-max: calc(#{$screen-md} - 1px) !default; +$screen-md-max: calc(#{$screen-lg} - 1px) !default; +$screen-lg-max: calc(#{$screen-xl} - 1px) !default; + +//== Settings +//## Enable or disable your desired framework features +// Use of !important +$important-flex: true !default; // ./base/flex.scss +$important-spacing: true !default; // ./base/spacing.scss +$important-helpers: true !default; // ./helpers/helperclasses.scss + +//===== Legacy variables ===== + +//== Step 1: Brand Colors +$brand-inverse: #24276c !default; +$brand-info: #0086d9 !default; + +//== Step 2: UI Customization +// Sidebar +$sidebar-bg: $brand-inverse !default; + +//== Navigation +//## Used in components/navigation + +// Default Navigation styling +$navigation-bg: $brand-inverse !default; +$navigation-bg-hover: lighten($navigation-bg, 4) !default; +$navigation-bg-active: lighten($navigation-bg, 8) !default; + +$navigation-sub-bg: darken($navigation-bg, 4) !default; +$navigation-sub-bg-hover: $navigation-sub-bg !default; +$navigation-sub-bg-active: $navigation-sub-bg !default; + +$navigation-border-color: $navigation-bg-hover !default; + +// Navigation Sidebar +$navsidebar-bg: $sidebar-bg !default; +$navsidebar-bg-hover: darken($navsidebar-bg, 4) !default; +$navsidebar-bg-active: darken($navsidebar-bg, 8) !default; + +$navsidebar-sub-bg: darken($navsidebar-bg, 4) !default; +$navsidebar-sub-bg-hover: $navsidebar-sub-bg !default; +$navsidebar-sub-bg-active: $navsidebar-sub-bg !default; + +$navsidebar-border-color: $navsidebar-bg-hover !default; + +//== Form +//## Used in components/inputs + +// Form Label +$form-label-color: $brand-inverse !default; + +//== Buttons +//## Define background-color, border-color and text. Used in components/buttons + +// Button Background Color +$btn-inverse-bg: $brand-inverse !default; +$btn-info-bg: $brand-info !default; + +// Button Border Color +$btn-inverse-border-color: $brand-inverse !default; +$btn-info-border-color: $brand-info !default; + +// Button Text Color +$btn-inverse-color: #fff !default; +$btn-info-color: #fff !default; + +// Button Background Color +$btn-inverse-bg-hover: mix($btn-inverse-bg, white, 80%) !default; +$btn-info-bg-hover: mix($btn-info-bg, black, 80%) !default; + +//== Color variations +//## These variations are used to support several other variables and components + +// Color variations +$color-inverse-darker: mix($brand-inverse, black, 60%) !default; +$color-inverse-dark: mix($brand-inverse, black, 70%) !default; +$color-inverse-light: mix($brand-inverse, white, 40%) !default; +$color-inverse-lighter: mix($brand-inverse, white, 20%) !default; + +$color-info-darker: mix($brand-info, black, 60%) !default; +$color-info-dark: mix($brand-info, black, 70%) !default; +$color-info-light: mix($brand-info, white, 60%) !default; +$color-info-lighter: mix($brand-info, white, 20%) !default; + +//== Alerts +//## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts) + +// Background Color +$alert-info-bg: $color-primary-lighter !default; + +// Text Color +$alert-info-color: $color-primary-darker !default; + +// Border Color +$alert-info-border-color: $color-primary-dark !default; +//== Labels +//## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels) + +// Background Color +$label-info-bg: $brand-info !default; +$label-inverse-bg: $brand-inverse !default; + +// Border Color +$label-info-border-color: $brand-info !default; +$label-inverse-border-color: $brand-inverse !default; + +// Text Color +$label-info-color: #fff !default; +$label-inverse-color: #fff !default; + +//== Groupbox +//## Default variables for Groupbox Widget (used in components/groupbox) + +// Background Color +$groupbox-inverse-bg: $brand-inverse !default; +$groupbox-info-bg: $brand-info !default; + +// Text Color +$groupbox-inverse-color: #fff !default; +$groupbox-info-color: #fff !default; +//== Callout (groupbox) Colors +//## Extended variables for Groupbox Widget (used in components/groupbox) + +// Text and Border Color +$callout-info-color: $brand-info !default; + +// Background Color +$callout-info-bg: $color-info-lighter !default; diff --git a/themesource/atlas_core/web/core/_legacy/_mxui.scss b/themesource/atlas_core/web/core/_legacy/_mxui.scss new file mode 100644 index 0000000..1e7a2b1 --- /dev/null +++ b/themesource/atlas_core/web/core/_legacy/_mxui.scss @@ -0,0 +1,3582 @@ +/* @preserve + Copyright (c) 2005-2016, Mendix bv. All rights reserved. + See mxclientsystem/licenses.txt for third party licenses that apply. +*/ + +/* + Essential styles that themes can inherit. + In other words, works but doesn't look great. +*/ + +@mixin mxui() { + /**** + GENERIC PIECES + ****/ + + .dijitReset { + /* Use this style to null out padding, margin, border in your template elements + so that page specific styles don't break them. + - Use in all TABLE, TR and TD tags. + */ + margin: 0; + border: 0; + padding: 0; + font: inherit; + line-height: normal; + color: inherit; + } + .dj_a11y .dijitReset { + -moz-appearance: none; /* remove predefined high-contrast styling in Firefox */ + } + + .dijitInline { + /* To inline block elements. + Similar to InlineBox below, but this has fewer side-effects in Moz. + Also, apparently works on a DIV as well as a FIELDSET. + */ + display: inline-block; /* webkit and FF3 */ + border: 0; + padding: 0; + vertical-align: middle; + } + + table.dijitInline { + /* To inline tables with a given width set */ + display: inline-table; + box-sizing: content-box; + } + + .dijitHidden { + /* To hide unselected panes in StackContainer etc. */ + position: absolute; /* remove from normal document flow to simulate display: none */ + visibility: hidden; /* hide element from view, but don't break scrolling, see #18612 */ + } + .dijitHidden * { + visibility: hidden !important; /* hide visibility:visible descendants of class=dijitHidden nodes, see #18799 */ + } + + .dijitVisible { + /* To show selected pane in StackContainer etc. */ + display: block !important; /* override user's display:none setting via style setting or indirectly via class */ + position: relative; /* to support setting width/height, see #2033 */ + visibility: visible; + } + + .dj_ie6 .dijitComboBox .dijitInputContainer, + .dijitInputContainer { + /* for positioning of placeHolder */ + overflow: hidden; + float: none !important; /* needed to squeeze the INPUT in */ + position: relative; + } + .dj_ie7 .dijitInputContainer { + float: left !important; /* needed by IE to squeeze the INPUT in */ + clear: left; + display: inline-block !important; /* to fix wrong text alignment in textdir=rtl text box */ + } + + .dj_ie .dijitSelect input, + .dj_ie input.dijitTextBox, + .dj_ie .dijitTextBox input { + font-size: 100%; + } + .dijitSelect .dijitButtonText { + float: left; + vertical-align: top; + } + table.dijitSelect { + padding: 0 !important; /* messes up border alignment */ + border-collapse: separate; /* so jsfiddle works with Normalized CSS checked */ + } + .dijitTextBox .dijitSpinnerButtonContainer, + .dijitTextBox .dijitArrowButtonContainer, + .dijitValidationTextBox .dijitValidationContainer { + float: right; + text-align: center; + } + .dijitSelect input.dijitInputField, + .dijitTextBox input.dijitInputField { + /* override unreasonable user styling of buttons and icons */ + padding-left: 0 !important; + padding-right: 0 !important; + } + .dijitValidationTextBox .dijitValidationContainer { + display: none; + } + + .dijitTeeny { + font-size: 1px; + line-height: 1px; + } + + .dijitOffScreen { + /* these class attributes should supersede any inline positioning style */ + position: absolute !important; + left: -10000px !important; + top: -10000px !important; + } + + /* + * Popup items have a wrapper div (dijitPopup) + * with the real popup inside, and maybe an iframe too + */ + .dijitPopup { + position: absolute; + background-color: transparent; + margin: 0; + border: 0; + padding: 0; + -webkit-overflow-scrolling: touch; + } + + .dijitPositionOnly { + /* Null out all position-related properties */ + padding: 0 !important; + border: 0 !important; + background-color: transparent !important; + background-image: none !important; + height: auto !important; + width: auto !important; + } + + .dijitNonPositionOnly { + /* Null position-related properties */ + float: none !important; + position: static !important; + margin: 0 0 0 0 !important; + vertical-align: middle !important; + } + + .dijitBackgroundIframe { + /* iframe used to prevent problems with PDF or other applets overlaying menus etc */ + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + z-index: -1; + border: 0; + padding: 0; + margin: 0; + } + + .dijitDisplayNone { + /* hide something. Use this as a class rather than element.style so another class can override */ + display: none !important; + } + + .dijitContainer { + /* for all layout containers */ + overflow: hidden; /* need on IE so something can be reduced in size, and so scrollbars aren't temporarily displayed when resizing */ + } + + /**** + A11Y + ****/ + .dj_a11y .dijitIcon, + .dj_a11y div.dijitArrowButtonInner, /* is this only for Spinner? if so, it should be deleted */ + .dj_a11y span.dijitArrowButtonInner, + .dj_a11y img.dijitArrowButtonInner, + .dj_a11y .dijitCalendarIncrementControl, + .dj_a11y .dijitTreeExpando { + /* hide icon nodes in high contrast mode; when necessary they will be replaced by character equivalents + * exception for input.dijitArrowButtonInner, because the icon and character are controlled by the same node */ + display: none; + } + .dijitSpinner div.dijitArrowButtonInner { + display: block; /* override previous rule */ + } + + .dj_a11y .dijitA11ySideArrow { + display: inline !important; /* display text instead */ + cursor: pointer; + } + + /* + * Since we can't use shading in a11y mode, and since the underline indicates today's date, + * use a border to show the selected date. + * Avoid screen jitter when switching selected date by compensating for the selected node's + * border w/padding on other nodes. + */ + .dj_a11y .dijitCalendarDateLabel { + padding: 1px; + border: 0px !important; + } + .dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel { + border-style: solid !important; + border-width: 1px !important; + padding: 0; + } + .dj_a11y .dijitCalendarDateTemplate { + padding-bottom: 0.1em !important; /* otherwise bottom border doesn't appear on IE */ + border: 0px !important; + } + .dj_a11y .dijitButtonNode { + border: black outset medium !important; + + /* In claro, hovering a toolbar button reduces padding and adds a border. + * Not needed in a11y mode since Toolbar buttons always have a border. + */ + padding: 0 !important; + } + .dj_a11y .dijitArrowButton { + padding: 0 !important; + } + + .dj_a11y .dijitButtonContents { + margin: 0.15em; /* Margin needed to make focus outline visible */ + } + + .dj_a11y .dijitTextBoxReadOnly .dijitInputField, + .dj_a11y .dijitTextBoxReadOnly .dijitButtonNode { + border-style: outset !important; + border-width: medium !important; + border-color: #999 !important; + color: #999 !important; + } + + /* button inner contents - labels, icons etc. */ + .dijitButtonNode * { + vertical-align: middle; + } + .dijitSelect .dijitArrowButtonInner, + .dijitButtonNode .dijitArrowButtonInner { + /* the arrow icon node */ + background: no-repeat center; + width: 12px; + height: 12px; + direction: ltr; /* needed by IE/RTL */ + } + + /**** + 3-element borders: ( dijitLeft + dijitStretch + dijitRight ) + These were added for rounded corners on dijit.form.*Button but never actually used. + ****/ + + .dijitLeft { + /* Left part of a 3-element border */ + background-position: left top; + background-repeat: no-repeat; + } + + .dijitStretch { + /* Middle (stretchy) part of a 3-element border */ + white-space: nowrap; /* MOW: move somewhere else */ + background-repeat: repeat-x; + } + + .dijitRight { + /* Right part of a 3-element border */ + background-position: right top; + background-repeat: no-repeat; + } + + /* Buttons */ + .dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode { + opacity: 0.5; + } + + .dijitToggleButton, + .dijitButton, + .dijitDropDownButton, + .dijitComboButton { + /* outside of button */ + margin: 0.2em; + vertical-align: middle; + } + + .dijitButtonContents { + display: block; /* to make focus border rectangular */ + } + td.dijitButtonContents { + display: table-cell; /* but don't affect Select, ComboButton */ + } + + .dijitButtonNode img { + /* make text and images line up cleanly */ + vertical-align: middle; + /*margin-bottom:.2em;*/ + } + + .dijitToolbar .dijitComboButton { + /* because Toolbar only draws a border around the hovered thing */ + border-collapse: separate; + } + + .dijitToolbar .dijitToggleButton, + .dijitToolbar .dijitButton, + .dijitToolbar .dijitDropDownButton, + .dijitToolbar .dijitComboButton { + margin: 0; + } + + .dijitToolbar .dijitButtonContents { + /* just because it used to be this way */ + padding: 1px 2px; + } + + .dj_webkit .dijitToolbar .dijitDropDownButton { + padding-left: 0.3em; + } + .dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner { + padding: 0; + } + + .dijitSelect { + border: 1px solid gray; + } + .dijitButtonNode { + /* Node that is acting as a button -- may or may not be a BUTTON element */ + border: 1px solid gray; + margin: 0; + line-height: normal; + vertical-align: middle; + text-align: center; + white-space: nowrap; + } + .dj_webkit .dijitSpinner .dijitSpinnerButtonContainer { + /* apparent WebKit bug where messing with the font coupled with line-height:normal X 2 (dijitReset & dijitButtonNode) + can be different than just a single line-height:normal, visible in InlineEditBox/Spinner */ + line-height: inherit; + } + .dijitTextBox .dijitButtonNode { + border-width: 0; + } + + .dijitSelect, + .dijitSelect *, + .dijitButtonNode, + .dijitButtonNode * { + cursor: pointer; + -webkit-tap-highlight-color: transparent; + } + + .dj_ie .dijitButtonNode { + /* ensure hasLayout */ + zoom: 1; + } + + .dj_ie .dijitButtonNode button { + /* + disgusting hack to get rid of spurious padding around button elements + on IE. MSIE is truly the web's boat anchor. + */ + overflow: visible; + } + + div.dijitArrowButton { + float: right; + } + + /****** + TextBox related. + Everything that has an +*******/ + + .dijitTextBox { + border: solid black 1px; + width: 15em; /* need to set default size on outer node since inner nodes say and
    . user can override */ + vertical-align: middle; + } + + .dijitTextBoxReadOnly, + .dijitTextBoxDisabled { + color: gray; + } + .dj_safari .dijitTextBoxDisabled input { + color: #b0b0b0; /* because Safari lightens disabled input/textarea no matter what color you specify */ + } + .dj_safari textarea.dijitTextAreaDisabled { + color: #333; /* because Safari lightens disabled input/textarea no matter what color you specify */ + } + .dj_gecko .dijitTextBoxReadOnly input.dijitInputField, /* disable arrow and validation presentation inputs but allow real input for text selection */ + .dj_gecko .dijitTextBoxDisabled input { + -moz-user-input: none; /* prevent focus of disabled textbox buttons */ + } + + .dijitPlaceHolder { + /* hint text that appears in a textbox until user starts typing */ + color: #aaaaaa; + font-style: italic; + position: absolute; + top: 0; + left: 0; + white-space: nowrap; + pointer-events: none; /* so cut/paste context menu shows up when right clicking */ + } + + .dijitTimeTextBox { + width: 8em; + } + + /* rules for webkit to deal with fuzzy blue focus border */ + .dijitTextBox input:focus { + outline: none; /* blue fuzzy line looks wrong on combobox or something w/validation icon showing */ + } + .dijitTextBoxFocused { + outline: 5px -webkit-focus-ring-color; + } + + .dijitSelect input, + .dijitTextBox input { + float: left; /* needed by IE to remove secret margin */ + } + .dj_ie6 input.dijitTextBox, + .dj_ie6 .dijitTextBox input { + float: none; + } + .dijitInputInner { + /* for when an is embedded inside an inline-block
    with a size and border */ + border: 0 !important; + background-color: transparent !important; + width: 100% !important; + /* IE dislikes horizontal tweaking combined with width:100% so punish everyone for consistency */ + padding-left: 0 !important; + padding-right: 0 !important; + margin-left: 0 !important; + margin-right: 0 !important; + } + .dj_a11y .dijitTextBox input { + margin: 0 !important; + } + .dijitValidationTextBoxError input.dijitValidationInner, + .dijitSelect input, + .dijitTextBox input.dijitArrowButtonInner { + /* used to display arrow icon/validation icon, or in arrow character in high contrast mode. + * The css below is a trick to hide the character in non-high-contrast mode + */ + text-indent: -2em !important; + direction: ltr !important; + text-align: left !important; + height: auto !important; + } + .dj_ie .dijitSelect input, + .dj_ie .dijitTextBox input, + .dj_ie input.dijitTextBox { + overflow-y: visible; /* inputs need help expanding when padding is added or line-height is adjusted */ + line-height: normal; /* strict mode */ + } + .dijitSelect .dijitSelectLabel span { + line-height: 100%; + } + .dj_ie .dijitSelect .dijitSelectLabel { + line-height: normal; + } + .dj_ie6 .dijitSelect .dijitSelectLabel, + .dj_ie7 .dijitSelect .dijitSelectLabel, + .dj_ie8 .dijitSelect .dijitSelectLabel, + .dj_iequirks .dijitSelect .dijitSelectLabel, + .dijitSelect td, + .dj_ie6 .dijitSelect input, + .dj_iequirks .dijitSelect input, + .dj_ie6 .dijitSelect .dijitValidationContainer, + .dj_ie6 .dijitTextBox input, + .dj_ie6 input.dijitTextBox, + .dj_iequirks .dijitTextBox input.dijitValidationInner, + .dj_iequirks .dijitTextBox input.dijitArrowButtonInner, + .dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner, + .dj_iequirks .dijitTextBox input.dijitInputInner, + .dj_iequirks input.dijitTextBox { + line-height: 100%; /* IE7 problem where the icon is vertically way too low w/o this */ + } + .dj_a11y input.dijitValidationInner, + .dj_a11y input.dijitArrowButtonInner { + /* (in high contrast mode) revert rules from above so character displays */ + text-indent: 0 !important; + width: 1em !important; + color: black !important; + } + .dijitValidationTextBoxError .dijitValidationContainer { + display: inline; + cursor: default; + } + + /* ComboBox & Spinner */ + + .dijitSpinner .dijitSpinnerButtonContainer, + .dijitComboBox .dijitArrowButtonContainer { + /* dividing line between input area and up/down button(s) for ComboBox and Spinner */ + border-width: 0 0 0 1px !important; /* !important needed due to wayward ".theme .dijitButtonNode" rules */ + } + .dj_a11y .dijitSelect .dijitArrowButtonContainer, + .dijitToolbar .dijitComboBox .dijitArrowButtonContainer { + /* overrides above rule plus mirror-image rule in dijit_rtl.css to have no divider when ComboBox in Toolbar */ + border-width: 0 !important; + } + + .dijitComboBoxMenu { + /* Drop down menu is implemented as
    • ... but we don't want circles before each item */ + list-style-type: none; + } + .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode { + /* dividing line between input area and up/down button(s) for ComboBox and Spinner */ + border-width: 0; + } + .dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode { + clear: both; /* IE workaround */ + } + + .dj_ie .dijitToolbar .dijitComboBox { + /* make combobox buttons align properly with other buttons in a toolbar */ + vertical-align: middle; + } + + /* Spinner */ + + .dijitTextBox .dijitSpinnerButtonContainer { + width: 1em; + position: relative !important; + overflow: hidden; + } + .dijitSpinner .dijitSpinnerButtonInner { + width: 1em; + visibility: hidden !important; /* just a sizing element */ + overflow-x: hidden; + } + .dijitComboBox .dijitButtonNode, + .dijitSpinnerButtonContainer .dijitButtonNode { + border-width: 0; + } + .dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode { + border-width: 0px !important; + border-style: solid !important; + } + .dj_a11y .dijitTextBox .dijitSpinnerButtonContainer, + .dj_a11y .dijitSpinner .dijitArrowButtonInner, + .dj_a11y .dijitSpinnerButtonContainer input { + width: 1em !important; + } + .dj_a11y .dijitSpinner .dijitArrowButtonInner { + margin: 0 auto !important; /* should auto-center */ + } + .dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { + padding-left: 0.3em !important; + padding-right: 0.3em !important; + margin-left: 0.3em !important; + margin-right: 0.3em !important; + width: 1.4em !important; + } + .dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { + padding-left: 0 !important; /* manually center INPUT: character is .5em and total width = 1em */ + padding-right: 0 !important; + width: 1em !important; + } + .dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { + margin-left: 0.1em !important; + margin-right: 0.1em !important; + width: 1em !important; + } + .dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { + margin-left: 0 !important; + margin-right: 0 !important; + width: 2em !important; + } + .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { + /* note: .dijitInputLayoutContainer makes this rule override .dijitArrowButton settings + * for dijit.form.Button + */ + padding: 0; + position: absolute !important; + right: 0; + float: none; + height: 50%; + width: 100%; + bottom: auto; + left: 0; + right: auto; + } + .dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { + width: auto; + } + .dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton { + overflow: visible !important; + } + .dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton { + top: 50%; + border-top-width: 1px !important; + } + .dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton { + top: 0; + } + .dijitSpinner .dijitArrowButtonInner { + margin: auto; + overflow-x: hidden; + height: 100% !important; + } + .dj_iequirks .dijitSpinner .dijitArrowButtonInner { + height: auto !important; + } + .dijitSpinner .dijitArrowButtonInner .dijitInputField { + transform: scale(0.5); + transform-origin: left top; + padding-top: 0; + padding-bottom: 0; + padding-left: 0 !important; + padding-right: 0 !important; + width: 100%; + visibility: hidden; + } + .dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField { + zoom: 50%; /* emulate transform: scale(0.5) */ + } + .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner { + overflow: hidden; + } + + .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { + width: 100%; + } + .dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { + width: 1em; /* matches .dj_a11y .dijitTextBox .dijitSpinnerButtonContainer rule - 100% is the whole screen width in quirks */ + } + .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { + vertical-align: top; + visibility: visible; + } + .dj_a11y .dijitSpinnerButtonContainer { + width: 1em; + } + + /**** + dijit.form.CheckBox + & + dijit.form.RadioButton + ****/ + + .dijitCheckBox, + .dijitRadio, + .dijitCheckBoxInput { + padding: 0; + border: 0; + width: 16px; + height: 16px; + background-position: center center; + background-repeat: no-repeat; + overflow: hidden; + } + + .dijitCheckBox input, + .dijitRadio input { + margin: 0; + padding: 0; + display: block; + } + + .dijitCheckBoxInput { + /* place the actual input on top, but invisible */ + opacity: 0; + } + + .dj_ie .dijitCheckBoxInput { + filter: alpha(opacity=0); + } + + .dj_a11y .dijitCheckBox, + .dj_a11y .dijitRadio { + /* in a11y mode we display the native checkbox (not the icon), so don't restrict the size */ + width: auto !important; + height: auto !important; + } + .dj_a11y .dijitCheckBoxInput { + opacity: 1; + filter: none; + width: auto; + height: auto; + } + + .dj_a11y .dijitFocusedLabel { + /* for checkboxes or radio buttons in high contrast mode, use border rather than outline to indicate focus (outline does not work in FF)*/ + border: 1px dotted; + outline: 0px !important; + } + + /**** + dijit.ProgressBar + ****/ + + .dijitProgressBar { + z-index: 0; /* so z-index settings below have no effect outside of the ProgressBar */ + } + .dijitProgressBarEmpty { + /* outer container and background of the bar that's not finished yet*/ + position: relative; + overflow: hidden; + border: 1px solid black; /* a11y: border necessary for high-contrast mode */ + z-index: 0; /* establish a stacking context for this progress bar */ + } + + .dijitProgressBarFull { + /* outer container for background of bar that is finished */ + position: absolute; + overflow: hidden; + z-index: -1; + top: 0; + width: 100%; + } + .dj_ie6 .dijitProgressBarFull { + height: 1.6em; + } + + .dijitProgressBarTile { + /* inner container for finished portion */ + position: absolute; + overflow: hidden; + top: 0; + left: 0; + bottom: 0; + right: 0; + margin: 0; + padding: 0; + width: 100%; /* needed for IE/quirks */ + height: auto; + background-color: #aaa; + background-attachment: fixed; + } + + .dj_a11y .dijitProgressBarTile { + /* a11y: The border provides visibility in high-contrast mode */ + border-width: 2px; + border-style: solid; + background-color: transparent !important; + } + + .dj_ie6 .dijitProgressBarTile { + /* width:auto works in IE6 with position:static but not position:absolute */ + position: static; + /* height:auto or 100% does not work in IE6 */ + height: 1.6em; + } + + .dijitProgressBarIndeterminate .dijitProgressBarTile { + /* animated gif for 'indeterminate' mode */ + } + + .dijitProgressBarIndeterminateHighContrastImage { + display: none; + } + + .dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage { + display: block; + position: absolute; + top: 0; + bottom: 0; + margin: 0; + padding: 0; + width: 100%; + height: auto; + } + + .dijitProgressBarLabel { + display: block; + position: static; + width: 100%; + text-align: center; + background-color: transparent !important; + } + + /**** + dijit.Tooltip + ****/ + + .dijitTooltip { + position: absolute; + z-index: 2000; + display: block; + /* make visible but off screen */ + left: 0; + top: -10000px; + overflow: visible; + } + + .dijitTooltipContainer { + border: solid black 2px; + background: #b8b5b5; + color: black; + font-size: small; + } + + .dijitTooltipFocusNode { + padding: 2px 2px 2px 2px; + } + + .dijitTooltipConnector { + position: absolute; + } + .dj_a11y .dijitTooltipConnector { + display: none; /* won't show b/c it's background-image; hide to avoid border gap */ + } + + .dijitTooltipData { + display: none; + } + + /* Layout widgets. This is essential CSS to make layout work (it isn't "styling" CSS) + make sure that the position:absolute in dijitAlign* overrides other classes */ + + .dijitLayoutContainer { + position: relative; + display: block; + overflow: hidden; + } + + .dijitAlignTop, + .dijitAlignBottom, + .dijitAlignLeft, + .dijitAlignRight { + position: absolute; + overflow: hidden; + } + + body .dijitAlignClient { + position: absolute; + } + + /* + * BorderContainer + * + * .dijitBorderContainer is a stylized layout where panes have border and margin. + * .dijitBorderContainerNoGutter is a raw layout. + */ + .dijitBorderContainer, + .dijitBorderContainerNoGutter { + position: relative; + overflow: hidden; + z-index: 0; /* so z-index settings below have no effect outside of the BorderContainer */ + } + + .dijitBorderContainerPane, + .dijitBorderContainerNoGutterPane { + position: absolute !important; /* !important to override position:relative in dijitTabContainer etc. */ + z-index: 2; /* above the splitters so that off-by-one browser errors don't cover up border of pane */ + } + + .dijitBorderContainer > .dijitTextArea { + /* On Safari, for SimpleTextArea inside a BorderContainer, + don't want to display the grip to resize */ + resize: none; + } + + .dijitGutter { + /* gutter is just a place holder for empty space between panes in BorderContainer */ + position: absolute; + font-size: 1px; /* needed by IE6 even though div is empty, otherwise goes to 15px */ + } + + /* SplitContainer + + 'V' == container that splits vertically (up/down) + 'H' = horizontal (left/right) +*/ + + .dijitSplitter { + position: absolute; + overflow: hidden; + z-index: 10; /* above the panes so that splitter focus is visible on FF, see #7583*/ + background-color: #fff; + border-color: gray; + border-style: solid; + border-width: 0; + } + .dj_ie .dijitSplitter { + z-index: 1; /* behind the panes so that pane borders aren't obscured see test_Gui.html/[14392] */ + } + + .dijitSplitterActive { + z-index: 11 !important; + } + + .dijitSplitterCover { + position: absolute; + z-index: -1; + top: 0; + left: 0; + width: 100%; + height: 100%; + } + + .dijitSplitterCoverActive { + z-index: 3 !important; + } + + /* #6945: stop mouse events */ + .dj_ie .dijitSplitterCover { + background: white; + opacity: 0; + } + .dj_ie6 .dijitSplitterCover, + .dj_ie7 .dijitSplitterCover, + .dj_ie8 .dijitSplitterCover { + filter: alpha(opacity=0); + } + + .dijitSplitterH { + height: 7px; + border-top: 1px; + border-bottom: 1px; + cursor: row-resize; + -webkit-tap-highlight-color: transparent; + } + .dijitSplitterV { + width: 7px; + border-left: 1px; + border-right: 1px; + cursor: col-resize; + -webkit-tap-highlight-color: transparent; + } + .dijitSplitContainer { + position: relative; + overflow: hidden; + display: block; + } + + .dijitSplitPane { + position: absolute; + } + + .dijitSplitContainerSizerH, + .dijitSplitContainerSizerV { + position: absolute; + font-size: 1px; + background-color: ThreeDFace; + border: 1px solid; + border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight; + margin: 0; + } + + .dijitSplitContainerSizerH .thumb, + .dijitSplitterV .dijitSplitterThumb { + overflow: hidden; + position: absolute; + top: 49%; + } + + .dijitSplitContainerSizerV .thumb, + .dijitSplitterH .dijitSplitterThumb { + position: absolute; + left: 49%; + } + + .dijitSplitterShadow, + .dijitSplitContainerVirtualSizerH, + .dijitSplitContainerVirtualSizerV { + font-size: 1px; + background-color: ThreeDShadow; + opacity: 0.5; + margin: 0; + } + + .dijitSplitContainerSizerH, + .dijitSplitContainerVirtualSizerH { + cursor: col-resize; + } + + .dijitSplitContainerSizerV, + .dijitSplitContainerVirtualSizerV { + cursor: row-resize; + } + + .dj_a11y .dijitSplitterH { + border-top: 1px solid #d3d3d3 !important; + border-bottom: 1px solid #d3d3d3 !important; + } + .dj_a11y .dijitSplitterV { + border-left: 1px solid #d3d3d3 !important; + border-right: 1px solid #d3d3d3 !important; + } + + /* ContentPane */ + + .dijitContentPane { + display: block; + overflow: auto; /* if we don't have this (or overflow:hidden), then Widget.resizeTo() doesn't make sense for ContentPane */ + -webkit-overflow-scrolling: touch; + } + + .dijitContentPaneSingleChild { + /* + * if the ContentPane holds a single layout widget child which is being sized to match the content pane, + * then the ContentPane should never get a scrollbar (but it does due to browser bugs, see #9449 + */ + overflow: hidden; + } + + .dijitContentPaneLoading .dijitIconLoading, + .dijitContentPaneError .dijitIconError { + margin-right: 9px; + } + + /* TitlePane and Fieldset */ + + .dijitTitlePane { + display: block; + overflow: hidden; + } + .dijitFieldset { + border: 1px solid gray; + } + .dijitTitlePaneTitle, + .dijitFieldsetTitle { + cursor: pointer; + -webkit-tap-highlight-color: transparent; + } + .dijitTitlePaneTitleFixedOpen, + .dijitTitlePaneTitleFixedClosed, + .dijitFieldsetTitleFixedOpen, + .dijitFieldsetTitleFixedClosed { + /* TitlePane or Fieldset that cannot be toggled */ + cursor: default; + } + .dijitTitlePaneTitle * { + vertical-align: middle; + } + .dijitTitlePane .dijitArrowNodeInner, + .dijitFieldset .dijitArrowNodeInner { + /* normally, hide arrow text in favor of icon */ + display: none; + } + .dj_a11y .dijitTitlePane .dijitArrowNodeInner, + .dj_a11y .dijitFieldset .dijitArrowNodeInner { + /* ... except in a11y mode, then show text arrow */ + display: inline; + font-family: monospace; /* because - and + are different widths */ + } + .dj_a11y .dijitTitlePane .dijitArrowNode, + .dj_a11y .dijitFieldset .dijitArrowNode { + /* ... and hide icon (TODO: just point dijitIcon class on the icon, and it hides automatically) */ + display: none; + } + .dijitTitlePaneTitleFixedOpen .dijitArrowNode, + .dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner, + .dijitTitlePaneTitleFixedClosed .dijitArrowNode, + .dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner, + .dijitFieldsetTitleFixedOpen .dijitArrowNode, + .dijitFieldsetTitleFixedOpen .dijitArrowNodeInner, + .dijitFieldsetTitleFixedClosed .dijitArrowNode, + .dijitFieldsetTitleFixedClosed .dijitArrowNodeInner { + /* don't show the open close icon or text arrow; it makes the user think the pane is closable */ + display: none !important; /* !important to override above a11y rules to show text arrow */ + } + + .dj_ie6 .dijitTitlePaneContentOuter, + .dj_ie6 .dijitTitlePane .dijitTitlePaneTitle { + /* force hasLayout to ensure borders etc, show up */ + zoom: 1; + } + + /* Color Palette + * Sizes designed so that table cell positions match icons in underlying image, + * which appear at 20x20 intervals. + */ + + .dijitColorPalette { + border: 1px solid #999; + background: #fff; + position: relative; + } + + .dijitColorPalette .dijitPaletteTable { + /* Table that holds the palette cells, and overlays image file with color swatches. + * padding/margin to align table with image. + */ + padding: 2px 3px 3px 3px; + position: relative; + overflow: hidden; + outline: 0; + border-collapse: separate; + } + .dj_ie6 .dijitColorPalette .dijitPaletteTable, + .dj_ie7 .dijitColorPalette .dijitPaletteTable, + .dj_iequirks .dijitColorPalette .dijitPaletteTable { + /* using padding above so that focus border isn't cutoff on moz/webkit, + * but using margin on IE because padding doesn't seem to work + */ + padding: 0; + margin: 2px 3px 3px 3px; + } + + .dijitColorPalette .dijitPaletteCell { + /*
    in the */ + font-size: 1px; + vertical-align: middle; + text-align: center; + background: none; + } + .dijitColorPalette .dijitPaletteImg { + /* Called dijitPaletteImg for back-compat, this actually wraps the color swatch with a border and padding */ + padding: 1px; /* white area between gray border and color swatch */ + border: 1px solid #999; + margin: 2px 1px; + cursor: default; + font-size: 1px; /* prevent from getting bigger just to hold a character */ + } + .dj_gecko .dijitColorPalette .dijitPaletteImg { + padding-bottom: 0; /* workaround rendering glitch on FF, it adds an extra pixel at the bottom */ + } + .dijitColorPalette .dijitColorPaletteSwatch { + /* the actual part where the color is */ + width: 14px; + height: 12px; + } + .dijitPaletteTable td { + padding: 0; + } + .dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg { + /* hovered color swatch */ + border: 1px solid #000; + } + + .dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg, + .dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg { + border: 2px solid #000; + margin: 1px 0; /* reduce margin to compensate for increased border */ + } + + .dj_a11y .dijitColorPalette .dijitPaletteTable, + .dj_a11y .dijitColorPalette .dijitPaletteTable * { + /* table cells are to catch events, but the swatches are in the PaletteImg behind the table */ + background-color: transparent !important; + } + + /* AccordionContainer */ + + .dijitAccordionContainer { + border: 1px solid #b7b7b7; + border-top: 0 !important; + } + .dijitAccordionTitle { + cursor: pointer; + -webkit-tap-highlight-color: transparent; + } + .dijitAccordionTitleSelected { + cursor: default; + } + + /* images off, high-contrast mode styles */ + .dijitAccordionTitle .arrowTextUp, + .dijitAccordionTitle .arrowTextDown { + display: none; + font-size: 0.65em; + font-weight: normal !important; + } + + .dj_a11y .dijitAccordionTitle .arrowTextUp, + .dj_a11y .dijitAccordionTitleSelected .arrowTextDown { + display: inline; + } + + .dj_a11y .dijitAccordionTitleSelected .arrowTextUp { + display: none; + } + + .dijitAccordionChildWrapper { + /* this is the node whose height is adjusted */ + overflow: hidden; + } + + /* Calendar */ + + .dijitCalendarContainer table { + width: auto; /* in case user has specified a width for the TABLE nodes, see #10553 */ + clear: both; /* clear margin created for left/right month arrows; needed on IE10 for CalendarLite */ + } + .dijitCalendarContainer th, + .dijitCalendarContainer td { + padding: 0; + vertical-align: middle; + } + + .dijitCalendarMonthContainer { + text-align: center; + } + .dijitCalendarDecrementArrow { + float: left; + } + .dijitCalendarIncrementArrow { + float: right; + } + + .dijitCalendarYearLabel { + white-space: nowrap; /* make sure previous, current, and next year appear on same row */ + } + + .dijitCalendarNextYear { + margin: 0 0 0 0.55em; + } + + .dijitCalendarPreviousYear { + margin: 0 0.55em 0 0; + } + + .dijitCalendarIncrementControl { + vertical-align: middle; + } + + .dijitCalendarIncrementControl, + .dijitCalendarDateTemplate, + .dijitCalendarMonthLabel, + .dijitCalendarPreviousYear, + .dijitCalendarNextYear { + cursor: pointer; + -webkit-tap-highlight-color: transparent; + } + + .dijitCalendarDisabledDate { + color: gray; + text-decoration: line-through; + cursor: default; + } + + .dijitSpacer { + /* don't display it, but make it affect the width */ + position: relative; + height: 1px; + overflow: hidden; + visibility: hidden; + } + + /* Styling for month drop down list */ + + .dijitCalendarMonthMenu .dijitCalendarMonthLabel { + text-align: center; + } + + /* Menu */ + + .dijitMenu { + border: 1px solid black; + background-color: white; + } + .dijitMenuTable { + border-collapse: collapse; + border-width: 0; + background-color: white; + } + + /* workaround for webkit bug #8427, remove this when it is fixed upstream */ + .dj_webkit .dijitMenuTable td[colspan="2"] { + border-right: hidden; + } + + .dijitMenuItem { + text-align: left; + white-space: nowrap; + padding: 0.1em 0.2em; + cursor: pointer; + -webkit-tap-highlight-color: transparent; + } + + /* +No need to show a focus border since it's obvious from the shading, and there's a .dj_a11y .dijitMenuItemSelected +rule below that handles the high contrast case when there's no shading. +Hiding the focus border also works around webkit bug https://code.google.com/p/chromium/issues/detail?id=125779. +*/ + .dijitMenuItem:focus { + outline: none; + } + + .dijitMenuPassive .dijitMenuItemHover, + .dijitMenuItemSelected { + /* + * dijitMenuItemHover refers to actual mouse over + * dijitMenuItemSelected is used after a menu has been "activated" by + * clicking it, tabbing into it, or being opened from a parent menu, + * and denotes that the menu item has focus or that focus is on a child + * menu + */ + background-color: black; + color: white; + } + + .dijitMenuItemIcon, + .dijitMenuExpand { + background-repeat: no-repeat; + } + + .dijitMenuItemDisabled * { + /* for a disabled menu item, just set it to mostly transparent */ + opacity: 0.5; + cursor: default; + } + .dj_ie .dj_a11y .dijitMenuItemDisabled, + .dj_ie .dj_a11y .dijitMenuItemDisabled *, + .dj_ie .dijitMenuItemDisabled * { + color: gray; + filter: alpha(opacity=35); + } + + .dijitMenuItemLabel { + vertical-align: middle; + } + + .dj_a11y .dijitMenuItemSelected { + border: 1px dotted black !important; /* for 2.0 use outline instead, to prevent jitter */ + } + + .dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel { + border-width: 1px; + border-style: solid; + } + .dj_ie8 .dj_a11y .dijitMenuItemLabel { + position: static; + } + + .dijitMenuExpandA11y { + display: none; + } + .dj_a11y .dijitMenuExpandA11y { + display: inline; + } + + .dijitMenuSeparator td { + border: 0; + padding: 0; + } + + /* separator can be two pixels -- set border of either one to 0 to have only one */ + .dijitMenuSeparatorTop { + height: 50%; + margin: 0; + margin-top: 3px; + font-size: 1px; + } + + .dijitMenuSeparatorBottom { + height: 50%; + margin: 0; + margin-bottom: 3px; + font-size: 1px; + } + + /* CheckedMenuItem and RadioMenuItem */ + .dijitMenuItemIconChar { + display: none; /* don't display except in high contrast mode */ + visibility: hidden; /* for high contrast mode when menuitem is unchecked: leave space for when it is checked */ + } + .dj_a11y .dijitMenuItemIconChar { + display: inline; /* display character in high contrast mode, since icon doesn't show */ + } + .dijitCheckedMenuItemChecked .dijitMenuItemIconChar, + .dijitRadioMenuItemChecked .dijitMenuItemIconChar { + visibility: visible; /* menuitem is checked */ + } + .dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem { + /* so bottom border of MenuBar appears on IE7 in high-contrast mode */ + margin: 0; + } + + /* StackContainer */ + + .dijitStackController .dijitToggleButtonChecked * { + cursor: default; /* because pressing it has no effect */ + } + + /*** +TabContainer + +Main class hierarchy: + +.dijitTabContainer - the whole TabContainer + .dijitTabController / .dijitTabListContainer-top - wrapper for tab buttons, scroll buttons + .dijitTabListWrapper / .dijitTabContainerTopStrip - outer wrapper for tab buttons (normal width) + .nowrapTabStrip / .dijitTabContainerTop-tabs - inner wrapper for tab buttons (50K width) + .dijitTabPaneWrapper - wrapper for content panes, has all borders except the one between content and tabs +***/ + + .dijitTabContainer { + z-index: 0; /* so z-index settings below have no effect outside of the TabContainer */ + overflow: visible; /* prevent off-by-one-pixel errors from hiding bottom border (opposite tab labels) */ + } + .dj_ie6 .dijitTabContainer { + /* workaround IE6 problem when tall content overflows TabContainer, see editor/test_FullScreen.html */ + overflow: hidden; + } + .dijitTabContainerNoLayout { + width: 100%; /* otherwise ScrollingTabController goes to 50K pixels wide */ + } + + .dijitTabContainerBottom-tabs, + .dijitTabContainerTop-tabs, + .dijitTabContainerLeft-tabs, + .dijitTabContainerRight-tabs { + z-index: 1; + overflow: visible !important; /* so tabs can cover up border adjacent to container */ + } + + .dijitTabController { + z-index: 1; + } + .dijitTabContainerBottom-container, + .dijitTabContainerTop-container, + .dijitTabContainerLeft-container, + .dijitTabContainerRight-container { + z-index: 0; + overflow: hidden; + border: 1px solid black; + } + .nowrapTabStrip { + width: 50000px; + display: block; + position: relative; + text-align: left; /* just in case ancestor has non-standard setting */ + z-index: 1; + } + .dijitTabListWrapper { + overflow: hidden; + z-index: 1; + } + + .dj_a11y .tabStripButton img { + /* hide the icons (or rather the empty space where they normally appear) because text will appear instead */ + display: none; + } + + .dijitTabContainerTop-tabs { + border-bottom: 1px solid black; + } + .dijitTabContainerTop-container { + border-top: 0; + } + + .dijitTabContainerLeft-tabs { + border-right: 1px solid black; + float: left; /* needed for IE7 RTL mode */ + } + .dijitTabContainerLeft-container { + border-left: 0; + } + + .dijitTabContainerBottom-tabs { + border-top: 1px solid black; + } + .dijitTabContainerBottom-container { + border-bottom: 0; + } + + .dijitTabContainerRight-tabs { + border-left: 1px solid black; + float: left; /* needed for IE7 RTL mode */ + } + .dijitTabContainerRight-container { + border-right: 0; + } + + div.dijitTabDisabled, + .dj_ie div.dijitTabDisabled { + cursor: auto; + } + + .dijitTab { + position: relative; + cursor: pointer; + -webkit-tap-highlight-color: transparent; + white-space: nowrap; + z-index: 3; + } + .dijitTab * { + /* make tab icons and close icon line up w/text */ + vertical-align: middle; + } + .dijitTabChecked { + cursor: default; /* because clicking will have no effect */ + } + + .dijitTabContainerTop-tabs .dijitTab { + top: 1px; /* to overlap border on .dijitTabContainerTop-tabs */ + } + .dijitTabContainerBottom-tabs .dijitTab { + top: -1px; /* to overlap border on .dijitTabContainerBottom-tabs */ + } + .dijitTabContainerLeft-tabs .dijitTab { + left: 1px; /* to overlap border on .dijitTabContainerLeft-tabs */ + } + .dijitTabContainerRight-tabs .dijitTab { + left: -1px; /* to overlap border on .dijitTabContainerRight-tabs */ + } + + .dijitTabContainerTop-tabs .dijitTab, + .dijitTabContainerBottom-tabs .dijitTab { + /* Inline-block */ + display: inline-block; /* webkit and FF3 */ + } + + .tabStripButton { + z-index: 12; + } + + .dijitTabButtonDisabled .tabStripButton { + display: none; + } + + .dijitTabCloseButton { + margin-left: 1em; + } + + .dijitTabCloseText { + display: none; + } + + .dijitTab .tabLabel { + /* make sure tabs w/close button and w/out close button are same height, even w/small (<15px) font. + * assumes <=15px height for close button icon. + */ + min-height: 15px; + display: inline-block; + } + .dijitNoIcon { + /* applied to / node when there is no icon specified */ + display: none; + } + .dj_ie6 .dijitTab .dijitNoIcon { + /* because min-height (on .tabLabel, above) doesn't work on IE6 */ + display: inline; + height: 15px; + width: 1px; + } + + /* images off, high-contrast mode styles */ + + .dj_a11y .dijitTabCloseButton { + background-image: none !important; + width: auto !important; + height: auto !important; + } + + .dj_a11y .dijitTabCloseText { + display: inline; + } + + .dijitTabPane, + .dijitStackContainer-child, + .dijitAccordionContainer-child { + /* children of TabContainer, StackContainer, and AccordionContainer shouldn't have borders + * b/c a border is already there from the TabContainer/StackContainer/AccordionContainer itself. + */ + border: none !important; + } + + /* InlineEditBox */ + .dijitInlineEditBoxDisplayMode { + border: 1px solid transparent; /* so keyline (border) on hover can appear without screen jump */ + cursor: text; + } + + .dj_a11y .dijitInlineEditBoxDisplayMode, + .dj_ie6 .dijitInlineEditBoxDisplayMode { + /* except that IE6 doesn't support transparent borders, nor does high contrast mode */ + border: none; + } + + .dijitInlineEditBoxDisplayModeHover, + .dj_a11y .dijitInlineEditBoxDisplayModeHover, + .dj_ie6 .dijitInlineEditBoxDisplayModeHover { + /* An InlineEditBox in view mode (click this to edit the text) */ + background-color: #e2ebf2; + border: solid 1px black; + } + + .dijitInlineEditBoxDisplayModeDisabled { + cursor: default; + } + + /* Tree */ + .dijitTree { + overflow: auto; /* for scrollbars when Tree has a height setting, and to prevent wrapping around float elements, see #11491 */ + -webkit-tap-highlight-color: transparent; + } + + .dijitTreeContainer { + float: left; /* for correct highlighting during horizontal scroll, see #16132 */ + } + + .dijitTreeIndent { + /* amount to indent each tree node (relative to parent node) */ + width: 19px; + } + + .dijitTreeRow, + .dijitTreeContent { + white-space: nowrap; + } + + .dj_ie .dijitTreeLabel:focus { + /* workaround IE9 behavior where down arrowing through TreeNodes doesn't show focus outline */ + outline: 1px dotted black; + } + + .dijitTreeRow img { + /* make the expando and folder icons line up with the label */ + vertical-align: middle; + } + + .dijitTreeContent { + cursor: default; + } + + .dijitExpandoText { + display: none; + } + + .dj_a11y .dijitExpandoText { + display: inline; + padding-left: 10px; + padding-right: 10px; + font-family: monospace; + border-style: solid; + border-width: thin; + cursor: pointer; + } + + .dijitTreeLabel { + margin: 0 4px; + } + + /* Dialog */ + + .dijitDialog { + position: absolute; + z-index: 999; + overflow: hidden; /* override overflow: auto; from ContentPane to make dragging smoother */ + } + + .dijitDialogTitleBar { + cursor: move; + } + .dijitDialogFixed .dijitDialogTitleBar { + cursor: default; + } + .dijitDialogCloseIcon { + cursor: pointer; + -webkit-tap-highlight-color: transparent; + } + .dijitDialogPaneContent { + -webkit-overflow-scrolling: touch; + } + .dijitDialogUnderlayWrapper { + position: absolute; + left: 0; + top: 0; + z-index: 998; + display: none; + background: transparent !important; + } + + .dijitDialogUnderlay { + background: #eee; + opacity: 0.5; + } + + .dj_ie .dijitDialogUnderlay { + filter: alpha(opacity=50); + } + + /* images off, high-contrast mode styles */ + .dj_a11y .dijitSpinnerButtonContainer, + .dj_a11y .dijitDialog { + opacity: 1 !important; + background-color: white !important; + } + + .dijitDialog .closeText { + display: none; + /* for the onhover border in high contrast on IE: */ + position: absolute; + } + + .dj_a11y .dijitDialog .closeText { + display: inline; + } + + /* Slider */ + + .dijitSliderMoveable { + z-index: 99; + position: absolute !important; + display: block; + vertical-align: middle; + } + + .dijitSliderMoveableH { + right: 0; + } + .dijitSliderMoveableV { + right: 50%; + } + + .dj_a11y div.dijitSliderImageHandle, + .dijitSliderImageHandle { + margin: 0; + padding: 0; + position: relative !important; + border: 8px solid gray; + width: 0; + height: 0; + cursor: pointer; + -webkit-tap-highlight-color: transparent; + } + .dj_iequirks .dj_a11y .dijitSliderImageHandle { + font-size: 0; + } + .dj_ie7 .dijitSliderImageHandle { + overflow: hidden; /* IE7 workaround to make slider handle VISIBLE in non-a11y mode */ + } + .dj_ie7 .dj_a11y .dijitSliderImageHandle { + overflow: visible; /* IE7 workaround to make slider handle VISIBLE in a11y mode */ + } + .dj_a11y .dijitSliderFocused .dijitSliderImageHandle { + border: 4px solid #000; + height: 8px; + width: 8px; + } + + .dijitSliderImageHandleV { + top: -8px; + right: -50%; + } + + .dijitSliderImageHandleH { + left: 50%; + top: -5px; + vertical-align: top; + } + + .dijitSliderBar { + border-style: solid; + border-color: black; + cursor: pointer; + -webkit-tap-highlight-color: transparent; + } + + .dijitSliderBarContainerV { + position: relative; + height: 100%; + z-index: 1; + } + + .dijitSliderBarContainerH { + position: relative; + z-index: 1; + } + + .dijitSliderBarH { + height: 4px; + border-width: 1px 0; + } + + .dijitSliderBarV { + width: 4px; + border-width: 0 1px; + } + + .dijitSliderProgressBar { + background-color: red; + z-index: 1; + } + + .dijitSliderProgressBarV { + position: static !important; + height: 0; + vertical-align: top; + text-align: left; + } + + .dijitSliderProgressBarH { + position: absolute !important; + width: 0; + vertical-align: middle; + overflow: visible; + } + + .dijitSliderRemainingBar { + overflow: hidden; + background-color: transparent; + z-index: 1; + } + + .dijitSliderRemainingBarV { + height: 100%; + text-align: left; + } + + .dijitSliderRemainingBarH { + width: 100% !important; + } + + /* the slider bumper is the space consumed by the slider handle when it hangs over an edge */ + .dijitSliderBumper { + overflow: hidden; + z-index: 1; + } + + .dijitSliderBumperV { + width: 4px; + height: 8px; + border-width: 0 1px; + } + + .dijitSliderBumperH { + width: 8px; + height: 4px; + border-width: 1px 0; + } + + .dijitSliderBottomBumper, + .dijitSliderLeftBumper { + background-color: red; + } + + .dijitSliderTopBumper, + .dijitSliderRightBumper { + background-color: transparent; + } + + .dijitSliderDecoration { + text-align: center; + } + + .dijitSliderDecorationC, + .dijitSliderDecorationV { + position: relative; /* needed for IE+quirks+RTL+vertical (rendering bug) but add everywhere for custom styling consistency but this messes up IE horizontal sliders */ + } + + .dijitSliderDecorationH { + width: 100%; + } + + .dijitSliderDecorationV { + height: 100%; + white-space: nowrap; + } + + .dijitSliderButton { + font-family: monospace; + margin: 0; + padding: 0; + display: block; + } + + .dj_a11y .dijitSliderButtonInner { + visibility: visible !important; + } + + .dijitSliderButtonContainer { + text-align: center; + height: 0; /* ??? */ + } + .dijitSliderButtonContainer * { + cursor: pointer; + -webkit-tap-highlight-color: transparent; + } + + .dijitSlider .dijitButtonNode { + padding: 0; + display: block; + } + + .dijitRuleContainer { + position: relative; + overflow: visible; + } + + .dijitRuleContainerV { + height: 100%; + line-height: 0; + float: left; + text-align: left; + } + + .dj_opera .dijitRuleContainerV { + line-height: 2%; + } + + .dj_ie .dijitRuleContainerV { + line-height: normal; + } + + .dj_gecko .dijitRuleContainerV { + margin: 0 0 1px 0; /* mozilla bug workaround for float:left,height:100% block elements */ + } + + .dijitRuleMark { + position: absolute; + border: 1px solid black; + line-height: 0; + height: 100%; + } + + .dijitRuleMarkH { + width: 0; + border-top-width: 0 !important; + border-bottom-width: 0 !important; + border-left-width: 0 !important; + } + + .dijitRuleLabelContainer { + position: absolute; + } + + .dijitRuleLabelContainerH { + text-align: center; + display: inline-block; + } + + .dijitRuleLabelH { + position: relative; + left: -50%; + } + + .dijitRuleLabelV { + /* so that long labels don't overflow to multiple rows, or overwrite slider itself */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + } + + .dijitRuleMarkV { + height: 0; + border-right-width: 0 !important; + border-bottom-width: 0 !important; + border-left-width: 0 !important; + width: 100%; + left: 0; + } + + .dj_ie .dijitRuleLabelContainerV { + margin-top: -0.55em; + } + + .dj_a11y .dijitSliderReadOnly, + .dj_a11y .dijitSliderDisabled { + opacity: 0.6; + } + .dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar, + .dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar { + filter: alpha(opacity=40); + } + + /* + and - Slider buttons: override theme settings to display icons */ + .dj_a11y .dijitSlider .dijitSliderButtonContainer div { + font-family: monospace; /* otherwise hyphen is larger and more vertically centered */ + font-size: 1em; + line-height: 1em; + height: auto; + width: auto; + margin: 0 4px; + } + + /* Icon-only buttons (often in toolbars) still display the text in high-contrast mode */ + .dj_a11y .dijitButtonContents .dijitButtonText, + .dj_a11y .dijitTab .tabLabel { + display: inline !important; + } + .dj_a11y .dijitSelect .dijitButtonText { + display: inline-block !important; + } + + /* TextArea, SimpleTextArea */ + .dijitTextArea { + width: 100%; + overflow-y: auto; /* w/out this IE's SimpleTextArea goes to overflow: scroll */ + } + .dijitTextArea[cols] { + width: auto; /* SimpleTextArea cols */ + } + .dj_ie .dijitTextAreaCols { + width: auto; + } + + .dijitExpandingTextArea { + /* for auto exanding textarea (called Textarea currently, rename for 2.0) don't want to display the grip to resize */ + resize: none; + } + + /* Toolbar + * Note that other toolbar rules (for objects in toolbars) are scattered throughout this file. + */ + + .dijitToolbarSeparator { + height: 18px; + width: 5px; + padding: 0 1px; + margin: 0; + } + + /* Editor */ + .dijitIEFixedToolbar { + position: absolute; + /* top:0; */ + top: expression(eval((document.documentElement||document.body) .scrollTop)); + } + + .dijitEditor { + display: block; /* prevents glitch on FF with InlineEditBox, see #8404 */ + } + + .dijitEditorDisabled, + .dijitEditorReadOnly { + color: gray; + } + + /* TimePicker */ + + .dijitTimePicker { + background-color: white; + } + .dijitTimePickerItem { + cursor: pointer; + -webkit-tap-highlight-color: transparent; + } + .dijitTimePickerItemHover { + background-color: gray; + color: white; + } + .dijitTimePickerItemSelected { + font-weight: bold; + color: #333; + background-color: #b7cdee; + } + .dijitTimePickerItemDisabled { + color: gray; + text-decoration: line-through; + } + + .dijitTimePickerItemInner { + text-align: center; + border: 0; + padding: 2px 8px 2px 8px; + } + + .dijitTimePickerTick, + .dijitTimePickerMarker { + border-bottom: 1px solid gray; + } + + .dijitTimePicker .dijitDownArrowButton { + border-top: none !important; + } + + .dijitTimePickerTick { + color: #ccc; + } + + .dijitTimePickerMarker { + color: black; + background-color: #ccc; + } + + .dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner { + border: solid 4px black; + } + .dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner { + border: dashed 4px black; + } + + .dijitToggleButtonIconChar { + /* character (instead of icon) to show that ToggleButton is checked */ + display: none !important; + } + .dj_a11y .dijitToggleButton .dijitToggleButtonIconChar { + display: inline !important; + visibility: hidden; + } + .dj_ie6 .dijitToggleButtonIconChar, + .dj_ie6 .tabStripButton .dijitButtonText { + font-family: "Arial Unicode MS"; /* otherwise the a11y character (checkmark, arrow, etc.) appears as a box */ + } + .dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar { + display: inline !important; /* In high contrast mode, display the check symbol */ + visibility: visible !important; + } + + .dijitArrowButtonChar { + display: none !important; + } + .dj_a11y .dijitArrowButtonChar { + display: inline !important; + } + + .dj_a11y .dijitDropDownButton .dijitArrowButtonInner, + .dj_a11y .dijitComboButton .dijitArrowButtonInner { + display: none !important; + } + + /* Select */ + .dj_a11y .dijitSelect { + border-collapse: separate !important; + border-width: 1px; + border-style: solid; + } + .dj_ie .dijitSelect { + vertical-align: middle; /* Set this back for what we hack in dijit inline */ + } + .dj_ie6 .dijitSelect .dijitValidationContainer, + .dj_ie8 .dijitSelect .dijitButtonText { + vertical-align: top; + } + .dj_ie6 .dijitTextBox .dijitInputContainer, + .dj_iequirks .dijitTextBox .dijitInputContainer, + .dj_ie6 .dijitTextBox .dijitArrowButtonInner, + .dj_ie6 .dijitSpinner .dijitSpinnerButtonInner, + .dijitSelect .dijitSelectLabel { + vertical-align: baseline; + } + + .dijitNumberTextBox { + text-align: left; + direction: ltr; + } + + .dijitNumberTextBox .dijitInputInner { + text-align: inherit; /* input */ + } + + .dijitNumberTextBox input.dijitInputInner, + .dijitCurrencyTextBox input.dijitInputInner, + .dijitSpinner input.dijitInputInner { + text-align: right; + } + + .dj_ie8 .dijitNumberTextBox input.dijitInputInner, + .dj_ie9 .dijitNumberTextBox input.dijitInputInner, + .dj_ie8 .dijitCurrencyTextBox input.dijitInputInner, + .dj_ie9 .dijitCurrencyTextBox input.dijitInputInner, + .dj_ie8 .dijitSpinner input.dijitInputInner, + .dj_ie9 .dijitSpinner input.dijitInputInner { + /* workaround bug where caret invisible in empty textboxes */ + padding-right: 1px !important; + } + + .dijitToolbar .dijitSelect { + margin: 0; + } + .dj_webkit .dijitToolbar .dijitSelect { + padding-left: 0.3em; + } + .dijitSelect .dijitButtonContents { + padding: 0; + white-space: nowrap; + text-align: left; + border-style: none solid none none; + border-width: 1px; + } + .dijitSelectFixedWidth .dijitButtonContents { + width: 100%; + } + + .dijitSelectMenu .dijitMenuItemIcon { + /* avoid blank area in left side of menu (since we have no icons) */ + display: none; + } + .dj_ie6 .dijitSelectMenu .dijitMenuItemLabel, + .dj_ie7 .dijitSelectMenu .dijitMenuItemLabel { + /* Set back to static due to bug in ie6/ie7 - See Bug #9651 */ + position: static; + } + + /* Fix the baseline of our label (for multi-size font elements) */ + .dijitSelectLabel * { + vertical-align: baseline; + } + + /* Styling for the currently-selected option (rich text can mess this up) */ + .dijitSelectSelectedOption * { + font-weight: bold; + } + + /* Fix the styling of the dropdown menu to be more combobox-like */ + .dijitSelectMenu { + border-width: 1px; + } + + /* Used in cases, such as FullScreen plugin, when we need to force stuff to static positioning. */ + .dijitForceStatic { + position: static !important; + } + + /**** Disabled cursor *****/ + .dijitReadOnly *, + .dijitDisabled *, + .dijitReadOnly, + .dijitDisabled { + /* a region the user would be able to click on, but it's disabled */ + cursor: default; + } + + /* Drag and Drop */ + .dojoDndItem { + padding: 2px; /* will be replaced by border during drag over (dojoDndItemBefore, dojoDndItemAfter) */ + + /* Prevent magnifying-glass text selection icon to appear on mobile webkit as it causes a touchout event */ + -webkit-touch-callout: none; + -webkit-user-select: none; /* Disable selection/Copy of UIWebView */ + } + .dojoDndHorizontal .dojoDndItem { + /* make contents of horizontal container be side by side, rather than vertical */ + display: inline-block; + } + + .dojoDndItemBefore, + .dojoDndItemAfter { + border: 0px solid #369; + } + .dojoDndItemBefore { + border-width: 2px 0 0 0; + padding: 0 2px 2px 2px; + } + .dojoDndItemAfter { + border-width: 0 0 2px 0; + padding: 2px 2px 0 2px; + } + .dojoDndHorizontal .dojoDndItemBefore { + border-width: 0 0 0 2px; + padding: 2px 2px 2px 0; + } + .dojoDndHorizontal .dojoDndItemAfter { + border-width: 0 2px 0 0; + padding: 2px 0 2px 2px; + } + + .dojoDndItemOver { + cursor: pointer; + } + .dj_gecko .dijitArrowButtonInner input, + .dj_gecko input.dijitArrowButtonInner { + -moz-user-focus: ignore; + } + .dijitFocused .dijitMenuItemShortcutKey { + text-decoration: underline; + } + + /* Dijit custom styling */ + .dijitBorderContainer { + height: 350px; + } + .dijitTooltipContainer { + background: #fff; + border: 1px solid #ccc; + border-radius: 6px; + } + .dijitContentPane { + box-sizing: content-box; + overflow: auto !important; + /* Widgets like the data grid pass their scroll + offset to the parent if there is not enough room to display a scroll bar + in the widget itself, so do not hide the overflow. */ + } + + /* Global Bootstrap changes */ + + /* Client defaults and helpers */ + .mx-dataview-content, + .mx-scrollcontainer-wrapper:not(.mx-scrollcontainer-nested), + .mx-tabcontainer-content, + .mx-grid-content { + -webkit-overflow-scrolling: touch; + } + html, + body, + #content { + height: 100%; + } + #content > .mx-page { + width: 100%; + min-height: 100%; + } + + .mx-left-aligned { + text-align: left; + } + .mx-right-aligned { + text-align: right; + } + .mx-center-aligned { + text-align: center; + } + + .mx-table { + width: 100%; + } + .mx-table th, + .mx-table td { + padding: 8px; + vertical-align: top; + } + .mx-table th.nopadding, + .mx-table td.nopadding { + padding: 0; + } + + .mx-offscreen { + /* When position relative is not set IE doesn't properly render when this class is removed + * with the effect that elements are not displayed or are not clickable. + */ + position: relative; + height: 0; + overflow: hidden; + } + + .mx-ie-event-shield { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: -1; + } + + .mx-swipe-navigation-progress { + position: absolute; + height: 54px; + width: 54px; + top: calc(50% - 27px); + left: calc(50% - 27px); + background: url(resources/swipe-progress.gif); + } + + /* Bacause we use checkboxes without labels, align them with other widgets. */ + input[type="checkbox"] { + margin: 9px 0; + } + + .mx-checkbox input[type="checkbox"] { + margin-left: 0; + margin-right: 8px; + position: static; + } + + .form-vertical .form-group.mx-checkbox input[type="checkbox"] { + display: block; + } + + .form-vertical .form-group.mx-checkbox.label-after input[type="checkbox"] { + display: inline-block; + } + + .form-horizontal .form-group.no-columns { + padding-left: 15px; + padding-right: 15px; + } + + .mx-radiobuttons.inline .radio { + display: inline-block; + margin-right: 20px; + } + + .mx-radiobuttons .radio input[type="radio"] { + /* Reset bootstrap rules */ + position: static; + margin-right: 8px; + margin-left: 0; + } + + .mx-radiobuttons .radio label { + /* Reset bootstrap rules */ + padding-left: 0; + } + + .alert { + margin-top: 8px; + margin-bottom: 10px; + white-space: pre-line; + } + + //.mx-compound-control { + // display: flex; + //} + + //.mx-compound-control button { + // margin-left: 5px; + //} + // + //[dir="rtl"] .mx-compound-control button { + // margin-left: 0; + // margin-right: 5px; + //} + + .mx-tooltip { + margin: 10px; + } + .mx-tooltip-content { + width: 400px; + overflow-y: auto; + } + .mx-tooltip-prepare { + height: 24px; + padding: 8px; + background: transparent url(resources/ttp.gif) no-repeat scroll center center; + } + .mx-tooltip-content .table th, + .mx-tooltip-content .table td { + padding: 2px 8px; + } + + .mx-tabcontainer-pane { + height: 100%; + } + .mx-tabcontainer-content.loading { + min-height: 48px; + background: url(resources/tabcontainer-loading.gif) no-repeat center center; + background-size: 32px 32px; + } + .mx-tabcontainer-tabs { + margin-bottom: 8px; + } + .mx-tabcontainer-tabs li { + position: relative; + } + .mx-tabcontainer-indicator { + position: absolute; + background: #f2dede; + border-radius: 8px; + color: #b94a48; + top: 0px; + right: -5px; + width: 16px; + height: 16px; + line-height: 16px; + text-align: center; + vertical-align: middle; + font-size: 10px; + font-weight: 600; + z-index: 1; /* indicator should not hide behind other tab */ + } + + /* base structure */ + .mx-grid { + padding: 8px; + overflow: hidden; /* to prevent any margin from escaping grid and foobaring our size calculations */ + } + .mx-grid-controlbar, + .mx-grid-searchbar { + display: flex; + justify-content: space-between; + flex-wrap: wrap; + } + .mx-grid-controlbar .mx-button, + .mx-grid-search-controls .mx-button { + margin-bottom: 8px; + } + + .mx-grid-search-controls .mx-button + .mx-button, + .mx-grid-controlbar .mx-button + .mx-button { + margin-left: 0.3em; + } + + [dir="rtl"] .mx-grid-search-controls .mx-button + .mx-button, + [dir="rtl"] .mx-grid-controlbar .mx-button + .mx-button { + margin-left: 0; + margin-right: 0.3em; + } + + .mx-grid-pagingbar, + .mx-grid-search-controls { + display: flex; + white-space: nowrap; + align-items: baseline; + margin-left: auto; + } + + .mx-grid-toolbar, + .mx-grid-search-inputs { + margin-right: 5px; + flex: 1; + } + + [dir="rtl"] .mx-grid-toolbar, + [dir="rtl"] .mx-grid-search-inputs { + margin-left: 5px; + margin-right: 0px; + } + [dir="rtl"] .mx-grid-pagingbar, + [dir="rtl"] .mx-grid-search-controls { + margin-left: 0px; + margin-right: auto; + } + + .mx-grid-paging-status { + padding: 0 8px 5px; + } + + /* search fields */ + .mx-grid-search-item { + display: inline-block; + vertical-align: top; + margin-bottom: 8px; + } + .mx-grid-search-label { + width: 110px; + padding: 0 5px; + text-align: right; + display: inline-block; + vertical-align: top; + overflow: hidden; + } + [dir="rtl"] .mx-grid-search-label { + text-align: left; + } + .mx-grid-search-input { + width: 150px; + padding: 0 5px; + display: inline-block; + vertical-align: top; + } + .mx-grid-search-message { + flex-basis: 100%; + } + + /* widget combinations */ + .mx-dataview .mx-grid { + border: 1px solid #ddd; + border-radius: 3px; + } + + .mx-calendar { + z-index: 1000; + } + + .mx-calendar-month-dropdown-options { + position: absolute; + } + + .mx-calendar, + .mx-calendar-month-dropdown { + user-select: none; + } + + .mx-calendar-month-current { + display: inline-block; + } + + .mx-calendar-month-spacer { + position: relative; + height: 0px; + overflow: hidden; + visibility: hidden; + } + + .mx-calendar, + .mx-calendar-month-dropdown-options { + border: 1px solid lightgrey; + background-color: white; + } + + .mx-datagrid tr { + cursor: pointer; + } + + .mx-datagrid tr.mx-datagrid-row-empty { + cursor: default; + } + + .mx-datagrid table { + width: 100%; + max-width: 100%; + table-layout: fixed; + margin-bottom: 0; + } + + .mx-datagrid th, + .mx-datagrid td { + padding: 8px; + line-height: 1.42857143; + vertical-align: bottom; + border: 1px solid #ddd; + } + + /* head */ + .mx-datagrid th { + position: relative; /* Required for the positioning of the column resizers */ + border-bottom-width: 2px; + } + .mx-datagrid-head-caption { + overflow: hidden; + white-space: nowrap; + } + .mx-datagrid-sort-icon { + float: right; + padding-left: 5px; + } + [dir="rtl"] .mx-datagrid-sort-icon { + float: left; + padding: 0 5px 0 0; + } + .mx-datagrid-column-resizer { + position: absolute; + top: 0; + left: -6px; + width: 10px; + height: 100%; + cursor: col-resize; + } + [dir="rtl"] .mx-datagrid-column-resizer { + left: auto; + right: -6px; + } + + /* body */ + .mx-datagrid tbody tr:first-child td { + border-top: none; + } + //.mx-datagrid tbody tr:nth-child(2n+1) td { + // background-color: #f9f9f9; + //} + .mx-datagrid tbody .selected td { + background-color: #eee; + } + .mx-datagrid-data-wrapper { + overflow: hidden; + white-space: nowrap; + } + .mx-datagrid tbody img { + max-width: 16px; + max-height: 16px; + } + .mx-datagrid input, + .mx-datagrid select, + .mx-datagrid textarea { + cursor: auto; + } + + /* foot */ + .mx-datagrid tfoot th, + .mx-datagrid tfoot td { + padding: 3px 8px; + } + .mx-datagrid tfoot th { + border-top: 1px solid #ddd; + } + .mx-datagrid.mx-content-loading .mx-content-loader { + display: inline-block; + width: 90%; + animation: placeholderGradient 1s linear infinite; + border-radius: 4px; + background: #f5f5f5; + background: repeating-linear-gradient(to right, #f5f5f5 0%, #f5f5f5 5%, #f9f9f9 50%, #f5f5f5 95%, #f5f5f5 100%); + background-size: 200px 100px; + animation-fill-mode: both; + } + @keyframes placeholderGradient { + 0% { + background-position: 100px 0; + } + 100% { + background-position: -100px 0; + } + } + + .mx-datagrid-table-resizing th, + .mx-datagrid-table-resizing td { + cursor: col-resize !important; + } + + .mx-templategrid-content-wrapper { + display: table; + width: 100%; + border-collapse: collapse; + box-sizing: border-box; + } + .mx-templategrid-row { + display: table-row; + } + .mx-templategrid-item { + padding: 5px; + display: table-cell; + border: 1px solid #ddd; + cursor: pointer; + box-sizing: border-box; + } + .mx-templategrid-empty { + display: table-cell; + } + .mx-templategrid-item.selected { + background-color: #f5f5f5; + } + .mx-templategrid-item .mx-table th, + .mx-templategrid-item .mx-table td { + padding: 2px 8px; + } + + .mx-scrollcontainer-horizontal { + width: 100%; + display: table; + table-layout: fixed; + } + .mx-scrollcontainer-horizontal > div { + display: table-cell; + vertical-align: top; + } + //.mx-scrollcontainer-wrapper { + // padding: 10px; + //} + .mx-scrollcontainer-nested { + padding: 0; + } + .mx-scrollcontainer-fixed > .mx-scrollcontainer-middle > .mx-scrollcontainer-wrapper, + .mx-scrollcontainer-fixed > .mx-scrollcontainer-left > .mx-scrollcontainer-wrapper, + .mx-scrollcontainer-fixed > .mx-scrollcontainer-center > .mx-scrollcontainer-wrapper, + .mx-scrollcontainer-fixed > .mx-scrollcontainer-right > .mx-scrollcontainer-wrapper { + overflow: auto; + } + + .mx-scrollcontainer-move-in { + transition: left 250ms ease-out; + } + .mx-scrollcontainer-move-out { + transition: left 250ms ease-in; + } + .mx-scrollcontainer-shrink .mx-scrollcontainer-toggleable { + transition-property: width; + } + + .mx-scrollcontainer-toggleable { + background-color: #fff; + } + //.mx-scrollcontainer-slide > .mx-scrollcontainer-toggleable > .mx-scrollcontainer-wrapper { + // position: relative; + // z-index: 1; + // background-color: inherit; + //} + .mx-scrollcontainer-push { + position: relative; + } + .mx-scrollcontainer-shrink > .mx-scrollcontainer-toggleable { + overflow: hidden; + } + .mx-scrollcontainer-push.mx-scrollcontainer-open > div, + .mx-scrollcontainer-slide.mx-scrollcontainer-open > div { + pointer-events: none; + } + .mx-scrollcontainer-push.mx-scrollcontainer-open > .mx-scrollcontainer-toggleable, + .mx-scrollcontainer-slide.mx-scrollcontainer-open > .mx-scrollcontainer-toggleable { + pointer-events: auto; + } + + .mx-navbar-item img, + .mx-navbar-subitem img { + height: 16px; + } + + .mx-navigationtree .navbar-inner { + padding-left: 0; + padding-right: 0; + } + .mx-navigationtree ul { + list-style: none; + } + //.mx-navigationtree ul li { + // border-bottom: 1px solid #dfe6ea; + //} + //.mx-navigationtree li:last-child { + // border-style: none; + //} + .mx-navigationtree a { + display: block; + padding: 5px 10px; + color: #777; + text-shadow: 0 1px 0 #fff; + text-decoration: none; + } + .mx-navigationtree a.active { + color: #fff; + text-shadow: none; + background: #3498db; + border-radius: 3px; + } + .mx-navigationtree .mx-navigationtree-collapsed ul { + display: none; + } + .mx-navigationtree ul { + margin: 0; + padding: 0; + } + //.mx-navigationtree ul li { + // padding: 5px 0; + //} + .mx-navigationtree ul li ul { + padding: 0; + margin-left: 10px; + } + .mx-navigationtree ul li ul li { + margin-left: 8px; + padding: 5px 0; + } + [dir="rtl"] .mx-navigationtree ul li ul li { + margin-left: auto; + margin-right: 8px; + } + .mx-navigationtree ul li ul li ul li { + font-size: 10px; + padding-top: 3px; + padding-bottom: 3px; + } + .mx-navigationtree ul li ul li ul li img { + vertical-align: top; + } + + .mx-link img, + .mx-button img { + height: 16px; + } + .mx-link { + padding: 6px 12px; + display: inline-block; + cursor: pointer; + } + + .mx-groupbox { + margin-bottom: 10px; + } + .mx-groupbox-header { + margin: 0; + padding: 10px 15px; + color: #eee; + background: #333; + font-size: inherit; + line-height: inherit; + border-radius: 4px 4px 0 0; + } + .mx-groupbox-collapsible > .mx-groupbox-header { + cursor: pointer; + } + .mx-groupbox.collapsed > .mx-groupbox-header { + border-radius: 4px; + } + .mx-groupbox-body { + padding: 8px; + border: 1px solid #ddd; + border-radius: 4px; + } + .mx-groupbox.collapsed > .mx-groupbox-body { + display: none; + } + .mx-groupbox-header + .mx-groupbox-body { + border-top: none; + border-radius: 0 0 4px 4px; + } + .mx-groupbox-collapse-icon { + float: right; + } + [dir="rtl"] .mx-groupbox-collapse-icon { + float: left; + } + + .mx-dataview { + position: relative; + } + .mx-dataview-controls { + padding: 19px 20px 12px; + background-color: #f5f5f5; + border-top: 1px solid #eee; + } + + .mx-dataview-controls .mx-button { + margin-bottom: 8px; + } + + .mx-dataview-controls .mx-button + .mx-button { + margin-left: 0.3em; + } + + .mx-dataview-message { + background: #fff; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + } + .mx-dataview-message > div { + display: table; + width: 100%; + height: 100%; + } + .mx-dataview-message > div > p { + display: table-cell; + text-align: center; + vertical-align: middle; + } + + /* Top-level data view in window is a special case, handle it as such. */ + .mx-window-view .mx-window-body { + padding: 0; + } + .mx-window-view .mx-window-body > .mx-dataview > .mx-dataview-content, + .mx-window-view .mx-window-body > .mx-placeholder > .mx-dataview > .mx-dataview-content { + padding: 15px; + } + .mx-window-view .mx-window-body > .mx-dataview > .mx-dataview-controls, + .mx-window-view .mx-window-body > .mx-placeholder > .mx-dataview > .mx-dataview-controls { + border-radius: 0px 0px 6px 6px; + } + + .mx-dialog { + position: fixed; + left: auto; + right: auto; + padding: 0; + width: 500px; + /* If the margin is set to auto, IE9 reports the calculated value of the + * margin as the actual value. Other browsers will just report 0. Eliminate + * this difference by setting margin to 0 for every browser. */ + margin: 0; + } + .mx-dialog-header { + cursor: move; + } + .mx-dialog-body { + overflow: auto; + } + + .mx-window { + position: fixed; + left: auto; + right: auto; + padding: 0; + width: 600px; + /* If the margin is set to auto, IE9 reports the calculated value of the + * margin as the actual value. Other browsers will just report 0. Eliminate + * this difference by setting margin to 0 for every browser. */ + margin: 0; + } + .mx-window-content { + height: 100%; + overflow: hidden; + } + .mx-window-active .mx-window-header { + background-color: #f5f5f5; + border-radius: 6px 6px 0 0; + } + .mx-window-header { + cursor: move; + } + .mx-window-body { + overflow: auto; + } + + .mx-dropdown-list * { + cursor: pointer; + } + .mx-dropdown-list img { + width: 35px; + vertical-align: middle; + margin-right: 10px; + } + [dir="rtl"] .mx-dropdown-list img { + margin-left: 10px; + margin-right: auto; + } + + .mx-dropdown-list { + padding: 0; + list-style: none; + } + .mx-dropdown-list > li { + padding: 5px 10px 10px; + border: 1px #ddd; + border-style: solid solid none; + background-color: #fff; + } + .mx-dropdown-list > li:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } + .mx-dropdown-list > li:last-child { + border-bottom-style: solid; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + } + .mx-dropdown-list-striped > li:nth-child(2n + 1) { + background: #f9f9f9; + } + .mx-dropdown-list > li:hover { + background: #f5f5f5; + } + + .mx-header { + position: relative; + padding: 9px; + background: #333; + text-align: center; + } + .mx-header-center { + display: inline-block; + color: #eee; + line-height: 30px; /* height of buttons */ + } + body[dir="ltr"] .mx-header-left, + body[dir="rtl"] .mx-header-right { + position: absolute; + top: 9px; + left: 9px; + } + body[dir="ltr"] .mx-header-right, + body[dir="rtl"] .mx-header-left { + position: absolute; + top: 9px; + right: 9px; + } + + .mx-title { + margin-bottom: 0px; + margin-top: 0px; + } + + .mx-listview { + padding: 8px; + } + .mx-listview > ul { + padding: 0px; + list-style: none; + } + // .mx-listview > ul > li { + // padding: 5px 10px 10px; + // border: 1px #ddd; + // border-style: solid solid none; + // background-color: #fff; + // outline: none; + // } + // .mx-listview > ul > li:first-child { + // border-top-left-radius: 4px; + // border-top-right-radius: 4px; + // } + // .mx-listview > ul > li:last-child { + // border-bottom-style: solid; + // border-bottom-left-radius: 4px; + // border-bottom-right-radius: 4px; + // } + //.mx-listview li:nth-child(2n+1) { + // background: #f9f9f9; + //} + //.mx-listview li:nth-child(2n+1):hover { + // background: #f5f5f5; + //} + .mx-listview > ul > li.selected { + // background: #eee; + } + .mx-listview-clickable > ul > li { + cursor: pointer; + } + .mx-listview-empty { + color: #999; + text-align: center; + } + .mx-listview .mx-listview-loading { + padding: 10px; + line-height: 0; + text-align: center; + } + .mx-listview-searchbar { + display: flex; + margin-bottom: 10px; + } + .mx-listview-searchbar > input { + width: 100%; + } + .mx-listview-searchbar > button { + margin-left: 5px; + } + [dir="rtl"] .mx-listview-searchbar > button { + margin-left: 0; + margin-right: 5px; + } + .mx-listview-selection { + display: table-cell; + vertical-align: middle; + padding: 0 15px 0 5px; + } + [dir="rtl"] .mx-listview-selection { + padding: 0 5px 0 15px; + } + .mx-listview-selectable .mx-listview-content { + display: table-cell; + vertical-align: middle; + width: 100%; + } + .mx-listview .selected { + background: #def; + } + .mx-listview .mx-table th, + .mx-listview .mx-table td { + padding: 2px; + } + + .mx-login .form-control { + margin-top: 10px; + } + + .mx-menubar { + padding: 8px; + } + .mx-menubar-icon { + height: 16px; + } + .mx-menubar-more-icon { + display: inline-block; + width: 16px; + height: 16px; + background: url(resources/menubar-more-icon.png) no-repeat center center; + background-size: 16px 16px; + vertical-align: middle; + } + + .mx-navigationlist { + padding: 8px; + } + .mx-navigationlist li:hover, + .mx-navigationlist li:focus, + .mx-navigationlist li.active { + color: #fff; + background-color: #3498db; + } + .mx-navigationlist * { + cursor: pointer; + } + .mx-navigationlist .table th, + .mx-navigationlist .table td { + padding: 2px; + } + + .mx-progress { + position: fixed; + top: 30%; + left: 0; + right: 0; + margin: auto; + width: 250px; + max-width: 90%; + background: #333; + opacity: 0.8; + z-index: 5000; + border-radius: 4px; + padding: 20px 15px; + transition: opacity 0.4s ease-in-out; + } + .mx-progress-hidden { + opacity: 0; + } + .mx-progress-message { + color: #fff; + text-align: center; + margin-bottom: 15px; + } + .mx-progress-empty .mx-progress-message { + display: none; + } + .mx-progress-indicator { + width: 70px; + height: 10px; + margin: auto; + background: url(resources/progress-indicator.gif); + } + + .mx-reload-notification { + position: fixed; + z-index: 1001; + top: 0; + width: 100%; + padding: 1rem; + + border: 1px solid hsl(200, 96%, 41%); + background-color: hsl(200, 96%, 44%); + + box-shadow: 0 5px 20px rgba(1, 37, 55, 0.16); + color: white; + + text-align: center; + font-size: 14px; + } + + .mx-resizer-n, + .mx-resizer-s { + position: absolute; + left: 0; + width: 100%; + height: 10px; + } + .mx-resizer-n { + top: -5px; + cursor: n-resize; + } + .mx-resizer-s { + bottom: -5px; + cursor: s-resize; + } + + .mx-resizer-e, + .mx-resizer-w { + position: absolute; + top: 0; + width: 10px; + height: 100%; + } + .mx-resizer-e { + right: -5px; + cursor: e-resize; + } + .mx-resizer-w { + left: -5px; + cursor: w-resize; + } + + .mx-resizer-nw, + .mx-resizer-ne, + .mx-resizer-sw, + .mx-resizer-se { + position: absolute; + width: 20px; + height: 20px; + } + + .mx-resizer-nw, + .mx-resizer-ne { + top: -5px; + } + .mx-resizer-sw, + .mx-resizer-se { + bottom: -5px; + } + .mx-resizer-nw, + .mx-resizer-sw { + left: -5px; + } + .mx-resizer-ne, + .mx-resizer-se { + right: -5px; + } + + .mx-resizer-nw { + cursor: nw-resize; + } + .mx-resizer-ne { + cursor: ne-resize; + } + .mx-resizer-sw { + cursor: sw-resize; + } + .mx-resizer-se { + cursor: se-resize; + } + + .mx-text { + white-space: pre-line; + } + + .mx-textarea textarea { + resize: none; + overflow-y: hidden; + } + .mx-textarea .mx-textarea-noresize { + height: auto; + resize: vertical; + overflow-y: auto; + } + .mx-textarea .mx-textarea-counter { + font-size: smaller; + } + .mx-textarea .form-control-static { + white-space: pre-line; + } + + .mx-underlay { + position: fixed; + top: 0; + width: 100%; + height: 100%; + z-index: 1000; + opacity: 0.5; + background-color: #333; + } + + .mx-imagezoom { + position: absolute; + display: table; + width: 100%; + height: 100%; + background-color: #999; + } + .mx-imagezoom-wrapper { + display: table-cell; + text-align: center; + vertical-align: middle; + } + .mx-imagezoom-image { + max-width: none; + } + + .mx-dropdown li { + padding: 3px 20px; + cursor: pointer; + } + .mx-dropdown label { + padding: 0; + color: #333; + white-space: nowrap; + cursor: pointer; + } + .mx-dropdown input { + margin: 0; + vertical-align: middle; + cursor: pointer; + } + .mx-dropdown .selected { + background: #f8f8f8; + } + //.mx-selectbox { + // text-align: left; + //} + //.mx-selectbox-caret-wrapper { + // float: right; + // height: 100%; + //} + + .mx-demouserswitcher { + position: fixed; + top: 0; + right: 0; + width: 360px; + height: 100%; + z-index: 20000; + box-shadow: -1px 0 5px rgba(28, 59, 86, 0.2); + } + .mx-demouserswitcher-content { + padding: 80px 40px 20px; + height: 100%; + color: #387ea2; + font-size: 14px; + overflow: auto; + background: url(resources/switcher.png) top right no-repeat #1b3149; + /* background-attachement local is not supported on IE8 + * when this is part of background the complete background is ignored */ + background-attachment: local; + } + .mx-demouserswitcher ul { + padding: 0; + margin-top: 25px; + list-style-type: none; + border-top: 1px solid #496076; + } + .mx-demouserswitcher a { + display: block; + padding: 10px 0; + color: #387ea2; + border-bottom: 1px solid #496076; + } + .mx-demouserswitcher h2 { + margin: 20px 0 5px; + color: #5bc4fe; + font-size: 28px; + } + .mx-demouserswitcher h3 { + margin: 0 0 2px; + color: #5bc4fe; + font-size: 18px; + font-weight: normal; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + .mx-demouserswitcher .active h3 { + color: #11efdb; + } + .mx-demouserswitcher p { + margin-bottom: 0; + } + .mx-demouserswitcher-toggle { + position: absolute; + top: 25%; + left: -35px; + width: 35px; + height: 38px; + margin-top: -40px; + cursor: pointer; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + box-shadow: -1px 0 5px rgba(28, 59, 86, 0.2); + background: url(resources/switcher-toggle.png) center center no-repeat #1b3149; + } + + /* master details screen for mobile */ + .mx-master-detail-screen { + top: 0; + left: 0; + overflow: auto; + width: 100%; + height: 100%; + position: absolute; + background-color: white; + will-change: transform; + } + + .mx-master-detail-screen .mx-master-detail-details { + padding: 15px; + } + + .mx-master-detail-screen-header { + position: relative; + overflow: auto; + border-bottom: 1px solid #ccc; + background-color: #f7f7f7; + } + + .mx-master-detail-screen-header-caption { + text-align: center; + font-size: 17px; + line-height: 24px; + font-weight: 600; + } + + .mx-master-detail-screen-header-close { + position: absolute; + left: 0; + top: 0; + height: 100%; + width: 50px; + border: none; + background: transparent; + color: #007aff; + } + + body[dir="rtl"] .mx-master-detail-screen-header-close { + right: 0; + left: auto; + } + + .mx-master-detail-screen-header-close::before { + content: "\2039"; + font-size: 52px; + line-height: 24px; + } + + /* classes for content page */ + .mx-master-detail-content-fix { + height: 100vh; + overflow: hidden; + } + + .mx-master-detail-content-hidden { + transform: translateX(-200%); + } + + body[dir="rtl"] .mx-master-detail-content-hidden { + transform: translateX(200%); + } + .reportingReport { + padding: 5px; + border: 1px solid #ddd; + border-radius: 3px; + } + + .reportingReportParameter th { + text-align: right; + } + + .reportingDateRange table { + width: 100%; + table-layout: fixed; + } + .reportingDateRange th { + padding: 5px; + text-align: right; + background-color: #eee; + } + .reportingDateRange td { + padding: 5px; + } + + .mx-reportmatrix table { + width: 100%; + max-width: 100%; + table-layout: fixed; + margin-bottom: 0; + } + + .mx-reportmatrix th, + .mx-reportmatrix td { + padding: 8px; + line-height: 1.42857143; + vertical-align: bottom; + border: 1px solid #ddd; + } + + .mx-reportmatrix tbody tr:first-child td { + border-top: none; + } + + .mx-reportmatrix tbody tr:nth-child(2n + 1) td { + background-color: #f9f9f9; + } + + .mx-reportmatrix tbody img { + max-width: 16px; + max-height: 16px; + } + + @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { + .dijitInline { + zoom: 1; /* set hasLayout:true to mimic inline-block */ + display: inline; /* don't use .dj_ie since that increases the priority */ + vertical-align: auto; /* makes TextBox,Button line up w/native counterparts on IE6 */ + } + + .dj_ie6 .dijitComboBox .dijitInputContainer, + .dijitInputContainer { + zoom: 1; + } + + .dijitRight { + /* Right part of a 3-element border */ + display: inline; /* IE7 sizes to outer size w/o this */ + } + + .dijitButtonNode { + vertical-align: auto; + } + + .dijitTextBox { + overflow: hidden; /* #6027, #6067 */ + } + + .dijitPlaceHolder { + filter: ""; /* make this show up in IE6 after the rendering of the widget */ + } + + .dijitValidationTextBoxError input.dijitValidationInner, + .dijitSelect input, + .dijitTextBox input.dijitArrowButtonInner { + text-indent: 0 !important; + letter-spacing: -5em !important; + text-align: right !important; + } + + .dj_a11y input.dijitValidationInner, + .dj_a11y input.dijitArrowButtonInner { + text-align: left !important; + } + + .dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton { + bottom: 50%; /* otherwise (on some machines) top arrow icon too close to splitter border (IE6/7) */ + } + + .dijitTabContainerTop-tabs .dijitTab, + .dijitTabContainerBottom-tabs .dijitTab { + zoom: 1; /* set hasLayout:true to mimic inline-block */ + display: inline; /* don't use .dj_ie since that increases the priority */ + } + + .dojoDndHorizontal .dojoDndItem { + /* make contents of horizontal container be side by side, rather than vertical */ + display: inline; + } + } +} + +/* WARNING: IE9 limits nested imports to three levels deep: http://jorgealbaladejo.com/2011/05/28/internet-explorer-limits-nested-import-css-statements */ + +/* dijit base */ + +/* mendix base */ + +/* widgets */ + +/* reporting */ + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9kb2pvL2Rpaml0L3RoZW1lcy9kaWppdC5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS9iYXNlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL2Zvcm1zLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9Ub29sdGlwLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9UYWJDb250YWluZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L19HcmlkLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9DYWxlbmRhci5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvRGF0YUdyaWQuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RlbXBsYXRlR3JpZC5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvU2Nyb2xsQ29udGFpbmVyLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9OYXZiYXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L05hdmlnYXRpb25UcmVlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9CdXR0b24uY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0dyb3VwQm94LmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9EYXRhVmlldy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvRGlhbG9nLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9XaW5kb3cuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0Ryb3BEb3duLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9IZWFkZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RpdGxlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9MaXN0Vmlldy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvTG9naW5EaWFsb2cuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L01lbnVCYXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L05hdmlnYXRpb25MaXN0LmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9Qcm9ncmVzcy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvUmVsb2FkTm90aWZpY2F0aW9uLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9SZXNpemFibGUuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RleHQuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RleHRBcmVhLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9VbmRlcmxheS5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvSW1hZ2Vab29tLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9TZWxlY3RCb3guY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0RlbW9Vc2VyU3dpdGNoZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L01hc3RlckRldGFpbC5jc3MiLCJ3ZWJwYWNrOi8vLy4vcmVwb3J0aW5nL3VpL3dpZGdldC9SZXBvcnQuY3NzIiwid2VicGFjazovLy8uL3JlcG9ydGluZy91aS93aWRnZXQvUmVwb3J0UGFyYW1ldGVyLmNzcyIsIndlYnBhY2s6Ly8vLi9yZXBvcnRpbmcvdWkvd2lkZ2V0L0RhdGVSYW5nZS5jc3MiLCJ3ZWJwYWNrOi8vLy4vcmVwb3J0aW5nL3VpL3dpZGdldC9SZXBvcnRNYXRyaXguY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvbXh1aS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7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QUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsd0JBQXdCO0FBQ3hCLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHlDQUF5QztBQUN4RDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixvQkFBb0I7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQsMEJBQTBCO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsYUFBYTtBQUNiLGFBQWEsd0RBQXdEO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQjtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdnNFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7O0FDOUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUN6REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOztBQzdCQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JGQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQzFCQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhCQUE4QjtBQUN0QyxVQUFVLCtCQUErQjtBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUN0R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyREE7QUFDQTtBQUNBO0FBQ0E7OztBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0VBO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DOztBQy9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JFQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7QUMvREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDO0FDaEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDekJBOztBQUVBOztBQUVBOztBQUVBOztBQUVBIiwiZmlsZSI6Im14dWkvdWkvbXh1aS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuXHRFc3NlbnRpYWwgc3R5bGVzIHRoYXQgdGhlbWVzIGNhbiBpbmhlcml0LlxuXHRJbiBvdGhlciB3b3Jkcywgd29ya3MgYnV0IGRvZXNuJ3QgbG9vayBncmVhdC5cbiovXG5cblxuXG4vKioqKlxuXHRcdEdFTkVSSUMgUElFQ0VTXG4gKioqKi9cblxuLmRpaml0UmVzZXQge1xuXHQvKiBVc2UgdGhpcyBzdHlsZSB0byBudWxsIG91dCBwYWRkaW5nLCBtYXJnaW4sIGJvcmRlciBpbiB5b3VyIHRlbXBsYXRlIGVsZW1lbnRzXG5cdFx0c28gdGhhdCBwYWdlIHNwZWNpZmljIHN0eWxlcyBkb24ndCBicmVhayB0aGVtLlxuXHRcdC0gVXNlIGluIGFsbCBUQUJMRSwgVFIgYW5kIFREIHRhZ3MuXG5cdCovXG5cdG1hcmdpbjowO1xuXHRib3JkZXI6MDtcblx0cGFkZGluZzowO1xuXHRmb250OiBpbmhlcml0O1xuXHRsaW5lLWhlaWdodDpub3JtYWw7XG5cdGNvbG9yOiBpbmhlcml0O1xufVxuLmRqX2ExMXkgLmRpaml0UmVzZXQge1xuXHQtbW96LWFwcGVhcmFuY2U6IG5vbmU7IC8qIHJlbW92ZSBwcmVkZWZpbmVkIGhpZ2gtY29udHJhc3Qgc3R5bGluZyBpbiBGaXJlZm94ICovXG59XG5cbi5kaWppdElubGluZSB7XG5cdC8qICBUbyBpbmxpbmUgYmxvY2sgZWxlbWVudHMuXG5cdFx0U2ltaWxhciB0byBJbmxpbmVCb3ggYmVsb3csIGJ1dCB0aGlzIGhhcyBmZXdlciBzaWRlLWVmZmVjdHMgaW4gTW96LlxuXHRcdEFsc28sIGFwcGFyZW50bHkgd29ya3Mgb24gYSBESVYgYXMgd2VsbCBhcyBhIEZJRUxEU0VULlxuXHQqL1xuXHRkaXNwbGF5OmlubGluZS1ibG9jaztcdFx0XHQvKiB3ZWJraXQgYW5kIEZGMyAqL1xuXHQjem9vbTogMTsgLyogc2V0IGhhc0xheW91dDp0cnVlIHRvIG1pbWljIGlubGluZS1ibG9jayAqL1xuXHQjZGlzcGxheTppbmxpbmU7IC8qIGRvbid0IHVzZSAuZGpfaWUgc2luY2UgdGhhdCBpbmNyZWFzZXMgdGhlIHByaW9yaXR5ICovXG5cdGJvcmRlcjowO1xuXHRwYWRkaW5nOjA7XG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0I3ZlcnRpY2FsLWFsaWduOiBhdXRvO1x0LyogbWFrZXMgVGV4dEJveCxCdXR0b24gbGluZSB1cCB3L25hdGl2ZSBjb3VudGVycGFydHMgb24gSUU2ICovXG59XG5cbnRhYmxlLmRpaml0SW5saW5lIHtcblx0LyogVG8gaW5saW5lIHRhYmxlcyB3aXRoIGEgZ2l2ZW4gd2lkdGggc2V0ICovXG5cdGRpc3BsYXk6aW5saW5lLXRhYmxlO1xuXHRib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbn1cblxuLmRpaml0SGlkZGVuIHtcblx0LyogVG8gaGlkZSB1bnNlbGVjdGVkIHBhbmVzIGluIFN0YWNrQ29udGFpbmVyIGV0Yy4gKi9cblx0cG9zaXRpb246IGFic29sdXRlOyAvKiByZW1vdmUgZnJvbSBub3JtYWwgZG9jdW1lbnQgZmxvdyB0byBzaW11bGF0ZSBkaXNwbGF5OiBub25lICovXG5cdHZpc2liaWxpdHk6IGhpZGRlbjsgLyogaGlkZSBlbGVtZW50IGZyb20gdmlldywgYnV0IGRvbid0IGJyZWFrIHNjcm9sbGluZywgc2VlICMxODYxMiAqL1xufVxuLmRpaml0SGlkZGVuICoge1xuXHR2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsgLyogaGlkZSB2aXNpYmlsaXR5OnZpc2libGUgZGVzY2VuZGFudHMgb2YgY2xhc3M9ZGlqaXRIaWRkZW4gbm9kZXMsIHNlZSAjMTg3OTkgKi9cbn1cblxuLmRpaml0VmlzaWJsZSB7XG5cdC8qIFRvIHNob3cgc2VsZWN0ZWQgcGFuZSBpbiBTdGFja0NvbnRhaW5lciBldGMuICovXG5cdGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XHQvKiBvdmVycmlkZSB1c2VyJ3MgZGlzcGxheTpub25lIHNldHRpbmcgdmlhIHN0eWxlIHNldHRpbmcgb3IgaW5kaXJlY3RseSB2aWEgY2xhc3MgKi9cblx0cG9zaXRpb246IHJlbGF0aXZlO1x0XHRcdC8qIHRvIHN1cHBvcnQgc2V0dGluZyB3aWR0aC9oZWlnaHQsIHNlZSAjMjAzMyAqL1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuXG4uZGpfaWU2IC5kaWppdENvbWJvQm94IC5kaWppdElucHV0Q29udGFpbmVyLFxuLmRpaml0SW5wdXRDb250YWluZXIge1xuXHQvKiBmb3IgcG9zaXRpb25pbmcgb2YgcGxhY2VIb2xkZXIgKi9cblx0I3pvb206IDE7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IC8qIG5lZWRlZCB0byBzcXVlZXplIHRoZSBJTlBVVCBpbiAqL1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uZGpfaWU3IC5kaWppdElucHV0Q29udGFpbmVyIHtcblx0ZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgLyogbmVlZGVkIGJ5IElFIHRvIHNxdWVlemUgdGhlIElOUFVUIGluICovXG5cdGNsZWFyOiBsZWZ0O1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgLyogdG8gZml4IHdyb25nIHRleHQgYWxpZ25tZW50IGluIHRleHRkaXI9cnRsIHRleHQgYm94ICovXG59XG5cbi5kal9pZSAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWUgaW5wdXQuZGlqaXRUZXh0Qm94LFxuLmRqX2llIC5kaWppdFRleHRCb3ggaW5wdXQge1xuXHRmb250LXNpemU6IDEwMCU7XG59XG4uZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uVGV4dCB7XG5cdGZsb2F0OiBsZWZ0O1xuXHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuVEFCTEUuZGlqaXRTZWxlY3Qge1xuXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IC8qIG1lc3NlcyB1cCBib3JkZXIgYWxpZ25tZW50ICovXG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IC8qIHNvIGpzZmlkZGxlIHdvcmtzIHdpdGggTm9ybWFsaXplZCBDU1MgY2hlY2tlZCAqL1xufVxuLmRpaml0VGV4dEJveCAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyLFxuLmRpaml0VGV4dEJveCAuZGlqaXRBcnJvd0J1dHRvbkNvbnRhaW5lcixcbi5kaWppdFZhbGlkYXRpb25UZXh0Qm94IC5kaWppdFZhbGlkYXRpb25Db250YWluZXIge1xuXHRmbG9hdDogcmlnaHQ7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5kaWppdFNlbGVjdCBpbnB1dC5kaWppdElucHV0RmllbGQsXG4uZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRGaWVsZCB7XG5cdC8qIG92ZXJyaWRlIHVucmVhc29uYWJsZSB1c2VyIHN0eWxpbmcgb2YgYnV0dG9ucyBhbmQgaWNvbnMgKi9cblx0cGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcbn1cbi5kaWppdFZhbGlkYXRpb25UZXh0Qm94IC5kaWppdFZhbGlkYXRpb25Db250YWluZXIge1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4uZGlqaXRUZWVueSB7XG5cdGZvbnQtc2l6ZToxcHg7XG5cdGxpbmUtaGVpZ2h0OjFweDtcbn1cblxuLmRpaml0T2ZmU2NyZWVuIHsgLyogdGhlc2UgY2xhc3MgYXR0cmlidXRlcyBzaG91bGQgc3VwZXJzZWRlIGFueSBpbmxpbmUgcG9zaXRpb25pbmcgc3R5bGUgKi9cblx0cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG5cdGxlZnQ6IC0xMDAwMHB4ICFpbXBvcnRhbnQ7XG5cdHRvcDogLTEwMDAwcHggIWltcG9ydGFudDtcbn1cblxuLypcbiAqIFBvcHVwIGl0ZW1zIGhhdmUgYSB3cmFwcGVyIGRpdiAoZGlqaXRQb3B1cClcbiAqIHdpdGggdGhlIHJlYWwgcG9wdXAgaW5zaWRlLCBhbmQgbWF5YmUgYW4gaWZyYW1lIHRvb1xuICovXG4uZGlqaXRQb3B1cCB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdG1hcmdpbjogMDtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xuXHQtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbi5kaWppdFBvc2l0aW9uT25seSB7XG5cdC8qIE51bGwgb3V0IGFsbCBwb3NpdGlvbi1yZWxhdGVkIHByb3BlcnRpZXMgKi9cblx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xuXHRib3JkZXI6IDAgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcblx0d2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmRpaml0Tm9uUG9zaXRpb25Pbmx5IHtcblx0LyogTnVsbCBwb3NpdGlvbi1yZWxhdGVkIHByb3BlcnRpZXMgKi9cblx0ZmxvYXQ6IG5vbmUgIWltcG9ydGFudDtcblx0cG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50O1xuXHRtYXJnaW46IDAgMCAwIDAgIWltcG9ydGFudDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50O1xufVxuXG4uZGlqaXRCYWNrZ3JvdW5kSWZyYW1lIHtcblx0LyogaWZyYW1lIHVzZWQgdG8gcHJldmVudCBwcm9ibGVtcyB3aXRoIFBERiBvciBvdGhlciBhcHBsZXRzIG92ZXJsYXlpbmcgbWVudXMgZXRjICovXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0bGVmdDogMDtcblx0dG9wOiAwO1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xuXHR6LWluZGV4OiAtMTtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdERpc3BsYXlOb25lIHtcblx0LyogaGlkZSBzb21ldGhpbmcuICBVc2UgdGhpcyBhcyBhIGNsYXNzIHJhdGhlciB0aGFuIGVsZW1lbnQuc3R5bGUgc28gYW5vdGhlciBjbGFzcyBjYW4gb3ZlcnJpZGUgKi9cblx0ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdENvbnRhaW5lciB7XG5cdC8qIGZvciBhbGwgbGF5b3V0IGNvbnRhaW5lcnMgKi9cblx0b3ZlcmZsb3c6IGhpZGRlbjtcdC8qIG5lZWQgb24gSUUgc28gc29tZXRoaW5nIGNhbiBiZSByZWR1Y2VkIGluIHNpemUsIGFuZCBzbyBzY3JvbGxiYXJzIGFyZW4ndCB0ZW1wb3JhcmlseSBkaXNwbGF5ZWQgd2hlbiByZXNpemluZyAqL1xufVxuXG4vKioqKlxuXHRcdEExMVlcbiAqKioqL1xuLmRqX2ExMXkgLmRpaml0SWNvbixcbi5kal9hMTF5IGRpdi5kaWppdEFycm93QnV0dG9uSW5uZXIsIC8qIGlzIHRoaXMgb25seSBmb3IgU3Bpbm5lcj8gIGlmIHNvLCBpdCBzaG91bGQgYmUgZGVsZXRlZCAqL1xuLmRqX2ExMXkgc3Bhbi5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGpfYTExeSBpbWcuZGlqaXRBcnJvd0J1dHRvbklubmVyLFxuLmRqX2ExMXkgLmRpaml0Q2FsZW5kYXJJbmNyZW1lbnRDb250cm9sLFxuLmRqX2ExMXkgLmRpaml0VHJlZUV4cGFuZG8ge1xuXHQvKiBoaWRlIGljb24gbm9kZXMgaW4gaGlnaCBjb250cmFzdCBtb2RlOyB3aGVuIG5lY2Vzc2FyeSB0aGV5IHdpbGwgYmUgcmVwbGFjZWQgYnkgY2hhcmFjdGVyIGVxdWl2YWxlbnRzXG5cdCAqIGV4Y2VwdGlvbiBmb3IgaW5wdXQuZGlqaXRBcnJvd0J1dHRvbklubmVyLCBiZWNhdXNlIHRoZSBpY29uIGFuZCBjaGFyYWN0ZXIgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIHNhbWUgbm9kZSAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRpaml0U3Bpbm5lciBkaXYuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0ZGlzcGxheTogYmxvY2s7IC8qIG92ZXJyaWRlIHByZXZpb3VzIHJ1bGUgKi9cbn1cblxuLmRqX2ExMXkgLmRpaml0QTExeVNpZGVBcnJvdyB7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyAvKiBkaXNwbGF5IHRleHQgaW5zdGVhZCAqL1xuXHRjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qXG4gKiBTaW5jZSB3ZSBjYW4ndCB1c2Ugc2hhZGluZyBpbiBhMTF5IG1vZGUsIGFuZCBzaW5jZSB0aGUgdW5kZXJsaW5lIGluZGljYXRlcyB0b2RheSdzIGRhdGUsXG4gKiB1c2UgYSBib3JkZXIgdG8gc2hvdyB0aGUgc2VsZWN0ZWQgZGF0ZS5cbiAqIEF2b2lkIHNjcmVlbiBqaXR0ZXIgd2hlbiBzd2l0Y2hpbmcgc2VsZWN0ZWQgZGF0ZSBieSBjb21wZW5zYXRpbmcgZm9yIHRoZSBzZWxlY3RlZCBub2RlJ3NcbiAqIGJvcmRlciB3L3BhZGRpbmcgb24gb3RoZXIgbm9kZXMuXG4gKi9cbi5kal9hMTF5IC5kaWppdENhbGVuZGFyRGF0ZUxhYmVsIHtcblx0cGFkZGluZzogMXB4O1xuXHRib3JkZXI6IDBweCAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0Q2FsZW5kYXJTZWxlY3RlZERhdGUgLmRpaml0Q2FsZW5kYXJEYXRlTGFiZWwge1xuXHRib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG5cdGJvcmRlci13aWR0aDogMXB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmc6IDA7XG59XG4uZGpfYTExeSAuZGlqaXRDYWxlbmRhckRhdGVUZW1wbGF0ZSB7XG5cdHBhZGRpbmctYm90dG9tOiAwLjFlbSAhaW1wb3J0YW50O1x0Lyogb3RoZXJ3aXNlIGJvdHRvbSBib3JkZXIgZG9lc24ndCBhcHBlYXIgb24gSUUgKi9cblx0Ym9yZGVyOiAwcHggIWltcG9ydGFudDtcbn1cbi5kal9hMTF5IC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXI6IGJsYWNrIG91dHNldCBtZWRpdW0gIWltcG9ydGFudDtcblxuXHQvKiBJbiBjbGFybywgaG92ZXJpbmcgYSB0b29sYmFyIGJ1dHRvbiByZWR1Y2VzIHBhZGRpbmcgYW5kIGFkZHMgYSBib3JkZXIuXG5cdCAqIE5vdCBuZWVkZWQgaW4gYTExeSBtb2RlIHNpbmNlIFRvb2xiYXIgYnV0dG9ucyBhbHdheXMgaGF2ZSBhIGJvcmRlci5cblx0ICovXG5cdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbn1cbi5kal9hMTF5IC5kaWppdEFycm93QnV0dG9uIHtcblx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXRCdXR0b25Db250ZW50cyB7XG5cdG1hcmdpbjogMC4xNWVtOyAvKiBNYXJnaW4gbmVlZGVkIHRvIG1ha2UgZm9jdXMgb3V0bGluZSB2aXNpYmxlICovXG59XG5cbi5kal9hMTF5IC5kaWppdFRleHRCb3hSZWFkT25seSAuZGlqaXRJbnB1dEZpZWxkLFxuLmRqX2ExMXkgLmRpaml0VGV4dEJveFJlYWRPbmx5IC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItc3R5bGU6IG91dHNldCFpbXBvcnRhbnQ7XG5cdGJvcmRlci13aWR0aDogbWVkaXVtIWltcG9ydGFudDtcblx0Ym9yZGVyLWNvbG9yOiAjOTk5ICFpbXBvcnRhbnQ7XG5cdGNvbG9yOiM5OTkgIWltcG9ydGFudDtcbn1cblxuLyogYnV0dG9uIGlubmVyIGNvbnRlbnRzIC0gbGFiZWxzLCBpY29ucyBldGMuICovXG4uZGlqaXRCdXR0b25Ob2RlICoge1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmRpaml0U2VsZWN0IC5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGlqaXRCdXR0b25Ob2RlIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHQvKiB0aGUgYXJyb3cgaWNvbiBub2RlICovXG5cdGJhY2tncm91bmQ6IG5vLXJlcGVhdCBjZW50ZXI7XG5cdHdpZHRoOiAxMnB4O1xuXHRoZWlnaHQ6IDEycHg7XG5cdGRpcmVjdGlvbjogbHRyOyAvKiBuZWVkZWQgYnkgSUUvUlRMICovXG59XG5cbi8qKioqXG5cdDMtZWxlbWVudCBib3JkZXJzOiAgKCBkaWppdExlZnQgKyBkaWppdFN0cmV0Y2ggKyBkaWppdFJpZ2h0IClcblx0VGhlc2Ugd2VyZSBhZGRlZCBmb3Igcm91bmRlZCBjb3JuZXJzIG9uIGRpaml0LmZvcm0uKkJ1dHRvbiBidXQgbmV2ZXIgYWN0dWFsbHkgdXNlZC5cbiAqKioqL1xuXG4uZGlqaXRMZWZ0IHtcblx0LyogTGVmdCBwYXJ0IG9mIGEgMy1lbGVtZW50IGJvcmRlciAqL1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgdG9wO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG59XG5cbi5kaWppdFN0cmV0Y2gge1xuXHQvKiBNaWRkbGUgKHN0cmV0Y2h5KSBwYXJ0IG9mIGEgMy1lbGVtZW50IGJvcmRlciAqL1xuXHR3aGl0ZS1zcGFjZTpub3dyYXA7XHRcdFx0LyogTU9XOiBtb3ZlIHNvbWV3aGVyZSBlbHNlICovXG5cdGJhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O1xufVxuXG4uZGlqaXRSaWdodCB7XG5cdC8qIFJpZ2h0IHBhcnQgb2YgYSAzLWVsZW1lbnQgYm9yZGVyICovXG5cdCNkaXNwbGF5OmlubGluZTtcdFx0XHRcdC8qIElFNyBzaXplcyB0byBvdXRlciBzaXplIHcvbyB0aGlzICovXG5cdGJhY2tncm91bmQtcG9zaXRpb246cmlnaHQgdG9wO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG59XG5cbi8qIEJ1dHRvbnMgKi9cbi5kal9nZWNrbyAuZGpfYTExeSAuZGlqaXRCdXR0b25EaXNhYmxlZCAuZGlqaXRCdXR0b25Ob2RlIHtcblx0b3BhY2l0eTogMC41O1xufVxuXG4uZGlqaXRUb2dnbGVCdXR0b24sXG4uZGlqaXRCdXR0b24sXG4uZGlqaXREcm9wRG93bkJ1dHRvbixcbi5kaWppdENvbWJvQnV0dG9uIHtcblx0Lyogb3V0c2lkZSBvZiBidXR0b24gKi9cblx0bWFyZ2luOiAwLjJlbTtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRkaXNwbGF5OiBibG9jaztcdFx0LyogdG8gbWFrZSBmb2N1cyBib3JkZXIgcmVjdGFuZ3VsYXIgKi9cbn1cbnRkLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRkaXNwbGF5OiB0YWJsZS1jZWxsO1x0LyogYnV0IGRvbid0IGFmZmVjdCBTZWxlY3QsIENvbWJvQnV0dG9uICovXG59XG5cbi5kaWppdEJ1dHRvbk5vZGUgaW1nIHtcblx0LyogbWFrZSB0ZXh0IGFuZCBpbWFnZXMgbGluZSB1cCBjbGVhbmx5ICovXG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0LyptYXJnaW4tYm90dG9tOi4yZW07Ki9cbn1cblxuLmRpaml0VG9vbGJhciAuZGlqaXRDb21ib0J1dHRvbiB7XG5cdC8qIGJlY2F1c2UgVG9vbGJhciBvbmx5IGRyYXdzIGEgYm9yZGVyIGFyb3VuZCB0aGUgaG92ZXJlZCB0aGluZyAqL1xuXHRib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xufVxuXG4uZGlqaXRUb29sYmFyIC5kaWppdFRvZ2dsZUJ1dHRvbixcbi5kaWppdFRvb2xiYXIgLmRpaml0QnV0dG9uLFxuLmRpaml0VG9vbGJhciAuZGlqaXREcm9wRG93bkJ1dHRvbixcbi5kaWppdFRvb2xiYXIgLmRpaml0Q29tYm9CdXR0b24ge1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdFRvb2xiYXIgLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHQvKiBqdXN0IGJlY2F1c2UgaXQgdXNlZCB0byBiZSB0aGlzIHdheSAqL1xuXHRwYWRkaW5nOiAxcHggMnB4O1xufVxuXG5cbi5kal93ZWJraXQgLmRpaml0VG9vbGJhciAuZGlqaXREcm9wRG93bkJ1dHRvbiB7XG5cdHBhZGRpbmctbGVmdDogMC4zZW07XG59XG4uZGpfZ2Vja28gLmRpaml0VG9vbGJhciAuZGlqaXRCdXR0b25Ob2RlOjotbW96LWZvY3VzLWlubmVyIHtcblx0cGFkZGluZzowO1xufVxuXG4uZGlqaXRTZWxlY3Qge1xuXHRib3JkZXI6MXB4IHNvbGlkIGdyYXk7XG59XG4uZGlqaXRCdXR0b25Ob2RlIHtcblx0LyogTm9kZSB0aGF0IGlzIGFjdGluZyBhcyBhIGJ1dHRvbiAtLSBtYXkgb3IgbWF5IG5vdCBiZSBhIEJVVFRPTiBlbGVtZW50ICovXG5cdGJvcmRlcjoxcHggc29saWQgZ3JheTtcblx0bWFyZ2luOjA7XG5cdGxpbmUtaGVpZ2h0Om5vcm1hbDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0I3ZlcnRpY2FsLWFsaWduOiBhdXRvO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5kal93ZWJraXQgLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIHtcblx0LyogYXBwYXJlbnQgV2ViS2l0IGJ1ZyB3aGVyZSBtZXNzaW5nIHdpdGggdGhlIGZvbnQgY291cGxlZCB3aXRoIGxpbmUtaGVpZ2h0Om5vcm1hbCBYIDIgKGRpaml0UmVzZXQgJiBkaWppdEJ1dHRvbk5vZGUpXG5cdGNhbiBiZSBkaWZmZXJlbnQgdGhhbiBqdXN0IGEgc2luZ2xlIGxpbmUtaGVpZ2h0Om5vcm1hbCwgdmlzaWJsZSBpbiBJbmxpbmVFZGl0Qm94L1NwaW5uZXIgKi9cblx0bGluZS1oZWlnaHQ6aW5oZXJpdDtcbn1cbi5kaWppdFRleHRCb3ggLmRpaml0QnV0dG9uTm9kZSB7XG5cdGJvcmRlci13aWR0aDogMDtcbn1cblxuLmRpaml0U2VsZWN0LFxuLmRpaml0U2VsZWN0ICosXG4uZGlqaXRCdXR0b25Ob2RlLFxuLmRpaml0QnV0dG9uTm9kZSAqIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGpfaWUgLmRpaml0QnV0dG9uTm9kZSB7XG5cdC8qIGVuc3VyZSBoYXNMYXlvdXQgKi9cblx0em9vbTogMTtcbn1cblxuLmRqX2llIC5kaWppdEJ1dHRvbk5vZGUgYnV0dG9uIHtcblx0Lypcblx0XHRkaXNndXN0aW5nIGhhY2sgdG8gZ2V0IHJpZCBvZiBzcHVyaW91cyBwYWRkaW5nIGFyb3VuZCBidXR0b24gZWxlbWVudHNcblx0XHRvbiBJRS4gTVNJRSBpcyB0cnVseSB0aGUgd2ViJ3MgYm9hdCBhbmNob3IuXG5cdCovXG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG5kaXYuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdGZsb2F0OiByaWdodDtcbn1cblxuLyoqKioqKlxuXHRUZXh0Qm94IHJlbGF0ZWQuXG5cdEV2ZXJ5dGhpbmcgdGhhdCBoYXMgYW4gPGlucHV0PlxuKioqKioqKi9cblxuLmRpaml0VGV4dEJveCB7XG5cdGJvcmRlcjogc29saWQgYmxhY2sgMXB4O1xuXHQjb3ZlcmZsb3c6IGhpZGRlbjsgLyogIzYwMjcsICM2MDY3ICovXG5cdHdpZHRoOiAxNWVtO1x0LyogbmVlZCB0byBzZXQgZGVmYXVsdCBzaXplIG9uIG91dGVyIG5vZGUgc2luY2UgaW5uZXIgbm9kZXMgc2F5IDxpbnB1dCBzdHlsZT1cIndpZHRoOjEwMCVcIj4gYW5kIDx0ZCB3aWR0aD0xMDAlPi4gIHVzZXIgY2FuIG92ZXJyaWRlICovXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kaWppdFRleHRCb3hSZWFkT25seSxcbi5kaWppdFRleHRCb3hEaXNhYmxlZCB7XG5cdGNvbG9yOiBncmF5O1xufVxuLmRqX3NhZmFyaSAuZGlqaXRUZXh0Qm94RGlzYWJsZWQgaW5wdXQge1xuXHRjb2xvcjogI0IwQjBCMDsgLyogYmVjYXVzZSBTYWZhcmkgbGlnaHRlbnMgZGlzYWJsZWQgaW5wdXQvdGV4dGFyZWEgbm8gbWF0dGVyIHdoYXQgY29sb3IgeW91IHNwZWNpZnkgKi9cbn1cbi5kal9zYWZhcmkgdGV4dGFyZWEuZGlqaXRUZXh0QXJlYURpc2FibGVkIHtcblx0Y29sb3I6ICMzMzM7IC8qIGJlY2F1c2UgU2FmYXJpIGxpZ2h0ZW5zIGRpc2FibGVkIGlucHV0L3RleHRhcmVhIG5vIG1hdHRlciB3aGF0IGNvbG9yIHlvdSBzcGVjaWZ5ICovXG59XG4uZGpfZ2Vja28gLmRpaml0VGV4dEJveFJlYWRPbmx5IGlucHV0LmRpaml0SW5wdXRGaWVsZCwgLyogZGlzYWJsZSBhcnJvdyBhbmQgdmFsaWRhdGlvbiBwcmVzZW50YXRpb24gaW5wdXRzIGJ1dCBhbGxvdyByZWFsIGlucHV0IGZvciB0ZXh0IHNlbGVjdGlvbiAqL1xuLmRqX2dlY2tvIC5kaWppdFRleHRCb3hEaXNhYmxlZCBpbnB1dCB7XG5cdC1tb3otdXNlci1pbnB1dDogbm9uZTsgLyogcHJldmVudCBmb2N1cyBvZiBkaXNhYmxlZCB0ZXh0Ym94IGJ1dHRvbnMgKi9cbn1cblxuLmRpaml0UGxhY2VIb2xkZXIge1xuXHQvKiBoaW50IHRleHQgdGhhdCBhcHBlYXJzIGluIGEgdGV4dGJveCB1bnRpbCB1c2VyIHN0YXJ0cyB0eXBpbmcgKi9cblx0Y29sb3I6ICNBQUFBQUE7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdCNmaWx0ZXI6IFwiXCI7IC8qIG1ha2UgdGhpcyBzaG93IHVwIGluIElFNiBhZnRlciB0aGUgcmVuZGVyaW5nIG9mIHRoZSB3aWRnZXQgKi9cblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0cG9pbnRlci1ldmVudHM6IG5vbmU7ICAgLyogc28gY3V0L3Bhc3RlIGNvbnRleHQgbWVudSBzaG93cyB1cCB3aGVuIHJpZ2h0IGNsaWNraW5nICovXG59XG5cbi5kaWppdFRpbWVUZXh0Qm94IHtcblx0d2lkdGg6IDhlbTtcbn1cblxuLyogcnVsZXMgZm9yIHdlYmtpdCB0byBkZWFsIHdpdGggZnV6enkgYmx1ZSBmb2N1cyBib3JkZXIgKi9cbi5kaWppdFRleHRCb3ggaW5wdXQ6Zm9jdXMge1xuXHRvdXRsaW5lOiBub25lO1x0LyogYmx1ZSBmdXp6eSBsaW5lIGxvb2tzIHdyb25nIG9uIGNvbWJvYm94IG9yIHNvbWV0aGluZyB3L3ZhbGlkYXRpb24gaWNvbiBzaG93aW5nICovXG59XG4uZGlqaXRUZXh0Qm94Rm9jdXNlZCB7XG5cdG91dGxpbmU6IDVweCAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG59XG5cbi5kaWppdFNlbGVjdCBpbnB1dCxcbi5kaWppdFRleHRCb3ggaW5wdXQge1xuXHRmbG9hdDogbGVmdDsgLyogbmVlZGVkIGJ5IElFIHRvIHJlbW92ZSBzZWNyZXQgbWFyZ2luICovXG59XG4uZGpfaWU2IGlucHV0LmRpaml0VGV4dEJveCxcbi5kal9pZTYgLmRpaml0VGV4dEJveCBpbnB1dCB7XG5cdGZsb2F0OiBub25lO1xufVxuLmRpaml0SW5wdXRJbm5lciB7XG5cdC8qIGZvciB3aGVuIGFuIDxpbnB1dD4gaXMgZW1iZWRkZWQgaW5zaWRlIGFuIGlubGluZS1ibG9jayA8ZGl2PiB3aXRoIGEgc2l6ZSBhbmQgYm9yZGVyICovXG5cdGJvcmRlcjowICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0d2lkdGg6MTAwJSAhaW1wb3J0YW50O1xuXHQvKiBJRSBkaXNsaWtlcyBob3Jpem9udGFsIHR3ZWFraW5nIGNvbWJpbmVkIHdpdGggd2lkdGg6MTAwJSBzbyBwdW5pc2ggZXZlcnlvbmUgZm9yIGNvbnNpc3RlbmN5ICovXG5cdHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0VGV4dEJveCBpbnB1dCB7XG5cdG1hcmdpbjogMCAhaW1wb3J0YW50O1xufVxuLmRpaml0VmFsaWRhdGlvblRleHRCb3hFcnJvciBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kaWppdFNlbGVjdCBpbnB1dCxcbi5kaWppdFRleHRCb3ggaW5wdXQuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0LyogPGlucHV0PiB1c2VkIHRvIGRpc3BsYXkgYXJyb3cgaWNvbi92YWxpZGF0aW9uIGljb24sIG9yIGluIGFycm93IGNoYXJhY3RlciBpbiBoaWdoIGNvbnRyYXN0IG1vZGUuXG5cdCAqIFRoZSBjc3MgYmVsb3cgaXMgYSB0cmljayB0byBoaWRlIHRoZSBjaGFyYWN0ZXIgaW4gbm9uLWhpZ2gtY29udHJhc3QgbW9kZVxuXHQgKi9cblx0dGV4dC1pbmRlbnQ6IC0yZW0gIWltcG9ydGFudDtcblx0ZGlyZWN0aW9uOiBsdHIgIWltcG9ydGFudDtcblx0dGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcblx0I3RleHQtaW5kZW50OiAwICFpbXBvcnRhbnQ7XG5cdCNsZXR0ZXItc3BhY2luZzogLTVlbSAhaW1wb3J0YW50O1xuXHQjdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDtcbn1cbi5kal9pZSAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWUgLmRpaml0VGV4dEJveCBpbnB1dCxcbi5kal9pZSBpbnB1dC5kaWppdFRleHRCb3gge1xuXHRvdmVyZmxvdy15OiB2aXNpYmxlOyAvKiBpbnB1dHMgbmVlZCBoZWxwIGV4cGFuZGluZyB3aGVuIHBhZGRpbmcgaXMgYWRkZWQgb3IgbGluZS1oZWlnaHQgaXMgYWRqdXN0ZWQgKi9cblx0bGluZS1oZWlnaHQ6IG5vcm1hbDsgLyogc3RyaWN0IG1vZGUgKi9cbn1cbi5kaWppdFNlbGVjdCAuZGlqaXRTZWxlY3RMYWJlbCBzcGFuIHtcblx0bGluZS1oZWlnaHQ6IDEwMCU7XG59XG4uZGpfaWUgLmRpaml0U2VsZWN0IC5kaWppdFNlbGVjdExhYmVsIHtcblx0bGluZS1oZWlnaHQ6IG5vcm1hbDtcbn1cbi5kal9pZTYgLmRpaml0U2VsZWN0IC5kaWppdFNlbGVjdExhYmVsLFxuLmRqX2llNyAuZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwsXG4uZGpfaWU4IC5kaWppdFNlbGVjdCAuZGlqaXRTZWxlY3RMYWJlbCxcbi5kal9pZXF1aXJrcyAuZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwsXG4uZGlqaXRTZWxlY3QgdGQsXG4uZGpfaWU2IC5kaWppdFNlbGVjdCBpbnB1dCxcbi5kal9pZXF1aXJrcyAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWU2IC5kaWppdFNlbGVjdCAuZGlqaXRWYWxpZGF0aW9uQ29udGFpbmVyLFxuLmRqX2llNiAuZGlqaXRUZXh0Qm94IGlucHV0LFxuLmRqX2llNiBpbnB1dC5kaWppdFRleHRCb3gsXG4uZGpfaWVxdWlya3MgLmRpaml0VGV4dEJveCBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kal9pZXF1aXJrcyAuZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0QXJyb3dCdXR0b25Jbm5lcixcbi5kal9pZXF1aXJrcyAuZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0U3Bpbm5lckJ1dHRvbklubmVyLFxuLmRqX2llcXVpcmtzIC5kaWppdFRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRqX2llcXVpcmtzIGlucHV0LmRpaml0VGV4dEJveCB7XG5cdGxpbmUtaGVpZ2h0OiAxMDAlOyAvKiBJRTcgcHJvYmxlbSB3aGVyZSB0aGUgaWNvbiBpcyB2ZXJ0aWNhbGx5IHdheSB0b28gbG93IHcvbyB0aGlzICovXG59XG4uZGpfYTExeSBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kal9hMTF5IGlucHV0LmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdC8qIChpbiBoaWdoIGNvbnRyYXN0IG1vZGUpIHJldmVydCBydWxlcyBmcm9tIGFib3ZlIHNvIGNoYXJhY3RlciBkaXNwbGF5cyAqL1xuXHR0ZXh0LWluZGVudDogMCAhaW1wb3J0YW50O1xuXHR3aWR0aDogMWVtICFpbXBvcnRhbnQ7XG5cdCN0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG5cdGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xufVxuLmRpaml0VmFsaWRhdGlvblRleHRCb3hFcnJvciAuZGlqaXRWYWxpZGF0aW9uQ29udGFpbmVyIHtcblx0ZGlzcGxheTogaW5saW5lO1xuXHRjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi8qIENvbWJvQm94ICYgU3Bpbm5lciAqL1xuXG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGlqaXRDb21ib0JveCAuZGlqaXRBcnJvd0J1dHRvbkNvbnRhaW5lciB7XG5cdC8qIGRpdmlkaW5nIGxpbmUgYmV0d2VlbiBpbnB1dCBhcmVhIGFuZCB1cC9kb3duIGJ1dHRvbihzKSBmb3IgQ29tYm9Cb3ggYW5kIFNwaW5uZXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwIDAgMCAxcHggIWltcG9ydGFudDsgLyogIWltcG9ydGFudCBuZWVkZWQgZHVlIHRvIHdheXdhcmQgXCIudGhlbWUgLmRpaml0QnV0dG9uTm9kZVwiIHJ1bGVzICovXG59XG4uZGpfYTExeSAuZGlqaXRTZWxlY3QgLmRpaml0QXJyb3dCdXR0b25Db250YWluZXIsXG4uZGlqaXRUb29sYmFyIC5kaWppdENvbWJvQm94IC5kaWppdEFycm93QnV0dG9uQ29udGFpbmVyIHtcblx0Lyogb3ZlcnJpZGVzIGFib3ZlIHJ1bGUgcGx1cyBtaXJyb3ItaW1hZ2UgcnVsZSBpbiBkaWppdF9ydGwuY3NzIHRvIGhhdmUgbm8gZGl2aWRlciB3aGVuIENvbWJvQm94IGluIFRvb2xiYXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdENvbWJvQm94TWVudSB7XG5cdC8qIERyb3AgZG93biBtZW51IGlzIGltcGxlbWVudGVkIGFzIDx1bD4gPGxpLz4gPGxpLz4gLi4uIGJ1dCB3ZSBkb24ndCB3YW50IGNpcmNsZXMgYmVmb3JlIGVhY2ggaXRlbSAqL1xuXHRsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QnV0dG9uTm9kZSB7XG5cdC8qIGRpdmlkaW5nIGxpbmUgYmV0d2VlbiBpbnB1dCBhcmVhIGFuZCB1cC9kb3duIGJ1dHRvbihzKSBmb3IgQ29tYm9Cb3ggYW5kIFNwaW5uZXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwO1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdFNwaW5uZXIgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRCdXR0b25Ob2RlIHtcblx0Y2xlYXI6IGJvdGg7IC8qIElFIHdvcmthcm91bmQgKi9cbn1cblxuLmRqX2llIC5kaWppdFRvb2xiYXIgLmRpaml0Q29tYm9Cb3gge1xuXHQvKiBtYWtlIGNvbWJvYm94IGJ1dHRvbnMgYWxpZ24gcHJvcGVybHkgd2l0aCBvdGhlciBidXR0b25zIGluIGEgdG9vbGJhciAqL1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4vKiBTcGlubmVyICovXG5cbi5kaWppdFRleHRCb3ggLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciB7XG5cdHdpZHRoOiAxZW07XG5cdHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uSW5uZXIge1xuXHR3aWR0aDoxZW07XG5cdHZpc2liaWxpdHk6aGlkZGVuICFpbXBvcnRhbnQ7IC8qIGp1c3QgYSBzaXppbmcgZWxlbWVudCAqL1xuXHRvdmVyZmxvdy14OmhpZGRlbjtcbn1cbi5kaWppdENvbWJvQm94IC5kaWppdEJ1dHRvbk5vZGUsXG4uZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItd2lkdGg6IDA7XG59XG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItd2lkdGg6IDBweCAhaW1wb3J0YW50O1xuXHRib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRUZXh0Qm94IC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIGlucHV0IHtcblx0d2lkdGg6IDFlbSAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0bWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsgLyogc2hvdWxkIGF1dG8tY2VudGVyICovXG59XG4uZGpfaWUgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRwYWRkaW5nLWxlZnQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwLjNlbSAhaW1wb3J0YW50O1xuXHRtYXJnaW4tcmlnaHQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdHdpZHRoOiAxLjRlbSAhaW1wb3J0YW50O1xufVxuLmRqX2llNyAuZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIgLmRpaml0SW5wdXRGaWVsZCB7XG5cdHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OyAvKiBtYW51YWxseSBjZW50ZXIgSU5QVVQ6IGNoYXJhY3RlciBpcyAuNWVtIGFuZCB0b3RhbCB3aWR0aCA9IDFlbSAqL1xuXHRwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG5cdHdpZHRoOiAxZW0gIWltcG9ydGFudDtcbn1cbi5kal9pZTYgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRtYXJnaW4tbGVmdDogMC4xZW0gIWltcG9ydGFudDtcblx0bWFyZ2luLXJpZ2h0OiAwLjFlbSAhaW1wb3J0YW50O1xuXHR3aWR0aDogMWVtICFpbXBvcnRhbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xuXHRtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcblx0d2lkdGg6IDJlbSAhaW1wb3J0YW50O1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEFycm93QnV0dG9uIHtcblx0Lyogbm90ZTogLmRpaml0SW5wdXRMYXlvdXRDb250YWluZXIgbWFrZXMgdGhpcyBydWxlIG92ZXJyaWRlIC5kaWppdEFycm93QnV0dG9uIHNldHRpbmdzXG5cdCAqIGZvciBkaWppdC5mb3JtLkJ1dHRvblxuXHQgKi9cblx0cGFkZGluZzogMDtcblx0cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG5cdHJpZ2h0OiAwO1xuXHRmbG9hdDogbm9uZTtcblx0aGVpZ2h0OiA1MCU7XG5cdHdpZHRoOiAxMDAlO1xuXHRib3R0b206IGF1dG87XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiBhdXRvO1xufVxuLmRqX2llcXVpcmtzIC5kaWppdFNwaW5uZXIgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdHdpZHRoOiBhdXRvO1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0RG93bkFycm93QnV0dG9uIHtcblx0dG9wOiA1MCU7XG5cdGJvcmRlci10b3Atd2lkdGg6IDFweCAhaW1wb3J0YW50O1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdFVwQXJyb3dCdXR0b24ge1xuXHQjYm90dG9tOiA1MCU7XHQvKiBvdGhlcndpc2UgKG9uIHNvbWUgbWFjaGluZXMpIHRvcCBhcnJvdyBpY29uIHRvbyBjbG9zZSB0byBzcGxpdHRlciBib3JkZXIgKElFNi83KSAqL1xuXHR0b3A6IDA7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHRtYXJnaW46IGF1dG87XG5cdG92ZXJmbG93LXg6IGhpZGRlbjtcblx0aGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0aGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIgLmRpaml0SW5wdXRGaWVsZCB7XG5cdC1tb3otdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHQtbW96LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciB0b3A7XG5cdC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHQtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciB0b3A7XG5cdC1vLXRyYW5zZm9ybTogc2NhbGUoMC41KTtcblx0LW8tdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIHRvcDtcblx0dHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHR0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDtcblx0cGFkZGluZy10b3A6IDA7XG5cdHBhZGRpbmctYm90dG9tOiAwO1xuXHRwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcblx0cGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xuXHR3aWR0aDogMTAwJTtcblx0dmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLmRqX2llIC5kaWppdFNwaW5uZXIgLmRpaml0QXJyb3dCdXR0b25Jbm5lciAuZGlqaXRJbnB1dEZpZWxkIHtcblx0em9vbTogNTAlOyAvKiBlbXVsYXRlIHRyYW5zZm9ybTogc2NhbGUoMC41KSAqL1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QXJyb3dCdXR0b24ge1xuXHR3aWR0aDogMTAwJTtcbn1cbi5kal9pZXF1aXJrcyAuZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QXJyb3dCdXR0b24ge1xuXHR3aWR0aDogMWVtOyAvKiBtYXRjaGVzIC5kal9hMTF5IC5kaWppdFRleHRCb3ggLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciBydWxlIC0gMTAwJSBpcyB0aGUgd2hvbGUgc2NyZWVuIHdpZHRoIGluIHF1aXJrcyAqL1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHR2ZXJ0aWNhbC1hbGlnbjp0b3A7XG5cdHZpc2liaWxpdHk6IHZpc2libGU7XG59XG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIHtcblx0d2lkdGg6IDFlbTtcbn1cblxuLyoqKipcblx0XHRkaWppdC5mb3JtLkNoZWNrQm94XG4gXHQgJlxuICBcdFx0ZGlqaXQuZm9ybS5SYWRpb0J1dHRvblxuICoqKiovXG5cbi5kaWppdENoZWNrQm94LFxuLmRpaml0UmFkaW8sXG4uZGlqaXRDaGVja0JveElucHV0IHtcblx0cGFkZGluZzogMDtcblx0Ym9yZGVyOiAwO1xuXHR3aWR0aDogMTZweDtcblx0aGVpZ2h0OiAxNnB4O1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciBjZW50ZXI7XG5cdGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRpaml0Q2hlY2tCb3ggaW5wdXQsXG4uZGlqaXRSYWRpbyBpbnB1dCB7XG5cdG1hcmdpbjogMDtcblx0cGFkZGluZzogMDtcblx0ZGlzcGxheTogYmxvY2s7XG59XG5cbi5kaWppdENoZWNrQm94SW5wdXQge1xuXHQvKiBwbGFjZSB0aGUgYWN0dWFsIGlucHV0IG9uIHRvcCwgYnV0IGludmlzaWJsZSAqL1xuXHRvcGFjaXR5OiAwO1xufVxuXG4uZGpfaWUgLmRpaml0Q2hlY2tCb3hJbnB1dCB7XG5cdGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTtcbn1cblxuLmRqX2ExMXkgLmRpaml0Q2hlY2tCb3gsXG4uZGpfYTExeSAuZGlqaXRSYWRpbyB7XG5cdC8qIGluIGExMXkgbW9kZSB3ZSBkaXNwbGF5IHRoZSBuYXRpdmUgY2hlY2tib3ggKG5vdCB0aGUgaWNvbiksIHNvIGRvbid0IHJlc3RyaWN0IHRoZSBzaXplICovXG5cdHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG5cdGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0Q2hlY2tCb3hJbnB1dCB7XG5cdG9wYWNpdHk6IDE7XG5cdGZpbHRlcjogbm9uZTtcblx0d2lkdGg6IGF1dG87XG5cdGhlaWdodDogYXV0bztcbn1cblxuLmRqX2ExMXkgLmRpaml0Rm9jdXNlZExhYmVsIHtcblx0LyogZm9yIGNoZWNrYm94ZXMgb3IgcmFkaW8gYnV0dG9ucyBpbiBoaWdoIGNvbnRyYXN0IG1vZGUsIHVzZSBib3JkZXIgcmF0aGVyIHRoYW4gb3V0bGluZSB0byBpbmRpY2F0ZSBmb2N1cyAob3V0bGluZSBkb2VzIG5vdCB3b3JrIGluIEZGKSovXG5cdGJvcmRlcjogMXB4IGRvdHRlZDtcblx0b3V0bGluZTogMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi8qKioqXG5cdFx0ZGlqaXQuUHJvZ3Jlc3NCYXJcbiAqKioqL1xuXG4uZGlqaXRQcm9ncmVzc0JhciB7XG4gICAgei1pbmRleDogMDsgLyogc28gei1pbmRleCBzZXR0aW5ncyBiZWxvdyBoYXZlIG5vIGVmZmVjdCBvdXRzaWRlIG9mIHRoZSBQcm9ncmVzc0JhciAqL1xufVxuLmRpaml0UHJvZ3Jlc3NCYXJFbXB0eSB7XG5cdC8qIG91dGVyIGNvbnRhaW5lciBhbmQgYmFja2dyb3VuZCBvZiB0aGUgYmFyIHRoYXQncyBub3QgZmluaXNoZWQgeWV0Ki9cblx0cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO1xuXHRib3JkZXI6MXB4IHNvbGlkIGJsYWNrOyBcdC8qIGExMXk6IGJvcmRlciBuZWNlc3NhcnkgZm9yIGhpZ2gtY29udHJhc3QgbW9kZSAqL1xuXHR6LWluZGV4OjA7XHRcdFx0LyogZXN0YWJsaXNoIGEgc3RhY2tpbmcgY29udGV4dCBmb3IgdGhpcyBwcm9ncmVzcyBiYXIgKi9cbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJGdWxsIHtcblx0Lyogb3V0ZXIgY29udGFpbmVyIGZvciBiYWNrZ3JvdW5kIG9mIGJhciB0aGF0IGlzIGZpbmlzaGVkICovXG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHRvdmVyZmxvdzpoaWRkZW47XG5cdHotaW5kZXg6LTE7XG5cdHRvcDowO1xuXHR3aWR0aDoxMDAlO1xufVxuLmRqX2llNiAuZGlqaXRQcm9ncmVzc0JhckZ1bGwge1xuXHRoZWlnaHQ6MS42ZW07XG59XG5cbi5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGlubmVyIGNvbnRhaW5lciBmb3IgZmluaXNoZWQgcG9ydGlvbiAqL1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHR0b3A6MDtcblx0bGVmdDowO1xuXHRib3R0b206MDtcblx0cmlnaHQ6MDtcblx0bWFyZ2luOjA7XG5cdHBhZGRpbmc6MDtcblx0d2lkdGg6IDEwMCU7ICAgIC8qIG5lZWRlZCBmb3IgSUUvcXVpcmtzICovXG5cdGhlaWdodDphdXRvO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiNhYWE7XG5cdGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7XG59XG5cbi5kal9hMTF5IC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGExMXk6ICBUaGUgYm9yZGVyIHByb3ZpZGVzIHZpc2liaWxpdHkgaW4gaGlnaC1jb250cmFzdCBtb2RlICovXG5cdGJvcmRlci13aWR0aDoycHg7XG5cdGJvcmRlci1zdHlsZTpzb2xpZDtcblx0YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4uZGpfaWU2IC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIHdpZHRoOmF1dG8gd29ya3MgaW4gSUU2IHdpdGggcG9zaXRpb246c3RhdGljIGJ1dCBub3QgcG9zaXRpb246YWJzb2x1dGUgKi9cblx0cG9zaXRpb246c3RhdGljO1xuXHQvKiBoZWlnaHQ6YXV0byBvciAxMDAlIGRvZXMgbm90IHdvcmsgaW4gSUU2ICovXG5cdGhlaWdodDoxLjZlbTtcbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJJbmRldGVybWluYXRlIC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGFuaW1hdGVkIGdpZiBmb3IgJ2luZGV0ZXJtaW5hdGUnIG1vZGUgKi9cbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJJbmRldGVybWluYXRlSGlnaENvbnRyYXN0SW1hZ2Uge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi5kal9hMTF5IC5kaWppdFByb2dyZXNzQmFySW5kZXRlcm1pbmF0ZSAuZGlqaXRQcm9ncmVzc0JhckluZGV0ZXJtaW5hdGVIaWdoQ29udHJhc3RJbWFnZSB7XG5cdGRpc3BsYXk6YmxvY2s7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHR0b3A6MDtcblx0Ym90dG9tOjA7XG5cdG1hcmdpbjowO1xuXHRwYWRkaW5nOjA7XG5cdHdpZHRoOjEwMCU7XG5cdGhlaWdodDphdXRvO1xufVxuXG4uZGlqaXRQcm9ncmVzc0JhckxhYmVsIHtcblx0ZGlzcGxheTpibG9jaztcblx0cG9zaXRpb246c3RhdGljO1xuXHR3aWR0aDoxMDAlO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4vKioqKlxuXHRcdGRpaml0LlRvb2x0aXBcbiAqKioqL1xuXG4uZGlqaXRUb29sdGlwIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiAyMDAwO1xuXHRkaXNwbGF5OiBibG9jaztcblx0LyogbWFrZSB2aXNpYmxlIGJ1dCBvZmYgc2NyZWVuICovXG5cdGxlZnQ6IDA7XG5cdHRvcDogLTEwMDAwcHg7XG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4uZGlqaXRUb29sdGlwQ29udGFpbmVyIHtcblx0Ym9yZGVyOiBzb2xpZCBibGFjayAycHg7XG5cdGJhY2tncm91bmQ6ICNiOGI1YjU7XG5cdGNvbG9yOiBibGFjaztcblx0Zm9udC1zaXplOiBzbWFsbDtcbn1cblxuLmRpaml0VG9vbHRpcEZvY3VzTm9kZSB7XG5cdHBhZGRpbmc6IDJweCAycHggMnB4IDJweDtcbn1cblxuLmRpaml0VG9vbHRpcENvbm5lY3RvciB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbi5kal9hMTF5IC5kaWppdFRvb2x0aXBDb25uZWN0b3Ige1xuXHRkaXNwbGF5OiBub25lO1x0Lyogd29uJ3Qgc2hvdyBiL2MgaXQncyBiYWNrZ3JvdW5kLWltYWdlOyBoaWRlIHRvIGF2b2lkIGJvcmRlciBnYXAgKi9cbn1cblxuLmRpaml0VG9vbHRpcERhdGEge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi8qIExheW91dCB3aWRnZXRzLiBUaGlzIGlzIGVzc2VudGlhbCBDU1MgdG8gbWFrZSBsYXlvdXQgd29yayAoaXQgaXNuJ3QgXCJzdHlsaW5nXCIgQ1NTKVxuICAgbWFrZSBzdXJlIHRoYXQgdGhlIHBvc2l0aW9uOmFic29sdXRlIGluIGRpaml0QWxpZ24qIG92ZXJyaWRlcyBvdGhlciBjbGFzc2VzICovXG5cbi5kaWppdExheW91dENvbnRhaW5lciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5kaWppdEFsaWduVG9wLFxuLmRpaml0QWxpZ25Cb3R0b20sXG4uZGlqaXRBbGlnbkxlZnQsXG4uZGlqaXRBbGlnblJpZ2h0IHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5ib2R5IC5kaWppdEFsaWduQ2xpZW50IHsgcG9zaXRpb246IGFic29sdXRlOyB9XG5cbi8qXG4gKiBCb3JkZXJDb250YWluZXJcbiAqXG4gKiAuZGlqaXRCb3JkZXJDb250YWluZXIgaXMgYSBzdHlsaXplZCBsYXlvdXQgd2hlcmUgcGFuZXMgaGF2ZSBib3JkZXIgYW5kIG1hcmdpbi5cbiAqIC5kaWppdEJvcmRlckNvbnRhaW5lck5vR3V0dGVyIGlzIGEgcmF3IGxheW91dC5cbiAqL1xuLmRpaml0Qm9yZGVyQ29udGFpbmVyLCAuZGlqaXRCb3JkZXJDb250YWluZXJOb0d1dHRlciB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuICAgIHotaW5kZXg6IDA7IC8qIHNvIHotaW5kZXggc2V0dGluZ3MgYmVsb3cgaGF2ZSBubyBlZmZlY3Qgb3V0c2lkZSBvZiB0aGUgQm9yZGVyQ29udGFpbmVyICovXG59XG5cbi5kaWppdEJvcmRlckNvbnRhaW5lclBhbmUsXG4uZGlqaXRCb3JkZXJDb250YWluZXJOb0d1dHRlclBhbmUge1xuXHRwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcdC8qICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgcG9zaXRpb246cmVsYXRpdmUgaW4gZGlqaXRUYWJDb250YWluZXIgZXRjLiAqL1xuXHR6LWluZGV4OiAyO1x0XHQvKiBhYm92ZSB0aGUgc3BsaXR0ZXJzIHNvIHRoYXQgb2ZmLWJ5LW9uZSBicm93c2VyIGVycm9ycyBkb24ndCBjb3ZlciB1cCBib3JkZXIgb2YgcGFuZSAqL1xufVxuXG4uZGlqaXRCb3JkZXJDb250YWluZXIgPiAuZGlqaXRUZXh0QXJlYSB7XG5cdC8qIE9uIFNhZmFyaSwgZm9yIFNpbXBsZVRleHRBcmVhIGluc2lkZSBhIEJvcmRlckNvbnRhaW5lcixcblx0XHRkb24ndCB3YW50IHRvIGRpc3BsYXkgdGhlIGdyaXAgdG8gcmVzaXplICovXG5cdHJlc2l6ZTogbm9uZTtcbn1cblxuLmRpaml0R3V0dGVyIHtcblx0LyogZ3V0dGVyIGlzIGp1c3QgYSBwbGFjZSBob2xkZXIgZm9yIGVtcHR5IHNwYWNlIGJldHdlZW4gcGFuZXMgaW4gQm9yZGVyQ29udGFpbmVyICovXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0Zm9udC1zaXplOiAxcHg7XHRcdC8qIG5lZWRlZCBieSBJRTYgZXZlbiB0aG91Z2ggZGl2IGlzIGVtcHR5LCBvdGhlcndpc2UgZ29lcyB0byAxNXB4ICovXG59XG5cbi8qIFNwbGl0Q29udGFpbmVyXG5cblx0J1YnID09IGNvbnRhaW5lciB0aGF0IHNwbGl0cyB2ZXJ0aWNhbGx5ICh1cC9kb3duKVxuXHQnSCcgPSBob3Jpem9udGFsIChsZWZ0L3JpZ2h0KVxuKi9cblxuLmRpaml0U3BsaXR0ZXIge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHotaW5kZXg6IDEwO1x0XHQvKiBhYm92ZSB0aGUgcGFuZXMgc28gdGhhdCBzcGxpdHRlciBmb2N1cyBpcyB2aXNpYmxlIG9uIEZGLCBzZWUgIzc1ODMqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRib3JkZXItY29sb3I6IGdyYXk7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogMDtcbn1cbi5kal9pZSAuZGlqaXRTcGxpdHRlciB7XG5cdHotaW5kZXg6IDE7XHQvKiBiZWhpbmQgdGhlIHBhbmVzIHNvIHRoYXQgcGFuZSBib3JkZXJzIGFyZW4ndCBvYnNjdXJlZCBzZWUgdGVzdF9HdWkuaHRtbC9bMTQzOTJdICovXG59XG5cbi5kaWppdFNwbGl0dGVyQWN0aXZlIHtcblx0ei1pbmRleDogMTEgIWltcG9ydGFudDtcbn1cblxuLmRpaml0U3BsaXR0ZXJDb3ZlciB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHR6LWluZGV4Oi0xO1xuXHR0b3A6MDtcblx0bGVmdDowO1xuXHR3aWR0aDoxMDAlO1xuXHRoZWlnaHQ6MTAwJTtcbn1cblxuLmRpaml0U3BsaXR0ZXJDb3ZlckFjdGl2ZSB7XG5cdHotaW5kZXg6MyAhaW1wb3J0YW50O1xufVxuXG4vKiAjNjk0NTogc3RvcCBtb3VzZSBldmVudHMgKi9cbi5kal9pZSAuZGlqaXRTcGxpdHRlckNvdmVyIHtcblx0YmFja2dyb3VuZDogd2hpdGU7XG5cdG9wYWNpdHk6IDA7XG59XG4uZGpfaWU2IC5kaWppdFNwbGl0dGVyQ292ZXIsXG4uZGpfaWU3IC5kaWppdFNwbGl0dGVyQ292ZXIsXG4uZGpfaWU4IC5kaWppdFNwbGl0dGVyQ292ZXIge1xuXHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7XG59XG5cbi5kaWppdFNwbGl0dGVySCB7XG5cdGhlaWdodDogN3B4O1xuXHRib3JkZXItdG9wOjFweDtcblx0Ym9yZGVyLWJvdHRvbToxcHg7XG5cdGN1cnNvcjogcm93LXJlc2l6ZTtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5kaWppdFNwbGl0dGVyViB7XG5cdHdpZHRoOiA3cHg7XG5cdGJvcmRlci1sZWZ0OjFweDtcblx0Ym9yZGVyLXJpZ2h0OjFweDtcblx0Y3Vyc29yOiBjb2wtcmVzaXplO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0U3BsaXRDb250YWluZXIge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uZGlqaXRTcGxpdFBhbmUge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJILFxuLmRpaml0U3BsaXRDb250YWluZXJTaXplclYge1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0Zm9udC1zaXplOiAxcHg7XG5cdGJhY2tncm91bmQtY29sb3I6IFRocmVlREZhY2U7XG5cdGJvcmRlcjogMXB4IHNvbGlkO1xuXHRib3JkZXItY29sb3I6IFRocmVlREhpZ2hsaWdodCBUaHJlZURTaGFkb3cgVGhyZWVEU2hhZG93IFRocmVlREhpZ2hsaWdodDtcblx0bWFyZ2luOiAwO1xufVxuXG4uZGlqaXRTcGxpdENvbnRhaW5lclNpemVySCAudGh1bWIsIC5kaWppdFNwbGl0dGVyViAuZGlqaXRTcGxpdHRlclRodW1iIHtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0dG9wOjQ5JTtcbn1cblxuLmRpaml0U3BsaXRDb250YWluZXJTaXplclYgLnRodW1iLCAuZGlqaXRTcGxpdHRlckggLmRpaml0U3BsaXR0ZXJUaHVtYiB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHRsZWZ0OjQ5JTtcbn1cblxuLmRpaml0U3BsaXR0ZXJTaGFkb3csXG4uZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplckgsXG4uZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplclYge1xuXHRmb250LXNpemU6IDFweDtcblx0YmFja2dyb3VuZC1jb2xvcjogVGhyZWVEU2hhZG93O1xuXHQtbW96LW9wYWNpdHk6IDAuNTtcblx0b3BhY2l0eTogMC41O1xuXHRmaWx0ZXI6IEFscGhhKE9wYWNpdHk9NTApO1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJILCAuZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplckgge1xuXHRjdXJzb3I6IGNvbC1yZXNpemU7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJWLCAuZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplclYge1xuXHRjdXJzb3I6IHJvdy1yZXNpemU7XG59XG5cbi5kal9hMTF5IC5kaWppdFNwbGl0dGVySCB7XG5cdGJvcmRlci10b3A6MXB4IHNvbGlkICNkM2QzZDMgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2QzZDNkMyAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0U3BsaXR0ZXJWIHtcblx0Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkM2QzZDMgIWltcG9ydGFudDtcblx0Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZDNkM2QzICFpbXBvcnRhbnQ7XG59XG5cbi8qIENvbnRlbnRQYW5lICovXG5cbi5kaWppdENvbnRlbnRQYW5lIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG92ZXJmbG93OiBhdXRvO1x0LyogaWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIChvciBvdmVyZmxvdzpoaWRkZW4pLCB0aGVuIFdpZGdldC5yZXNpemVUbygpIGRvZXNuJ3QgbWFrZSBzZW5zZSBmb3IgQ29udGVudFBhbmUgKi9cblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG4uZGlqaXRDb250ZW50UGFuZVNpbmdsZUNoaWxkIHtcblx0Lypcblx0ICogaWYgdGhlIENvbnRlbnRQYW5lIGhvbGRzIGEgc2luZ2xlIGxheW91dCB3aWRnZXQgY2hpbGQgd2hpY2ggaXMgYmVpbmcgc2l6ZWQgdG8gbWF0Y2ggdGhlIGNvbnRlbnQgcGFuZSxcblx0ICogdGhlbiB0aGUgQ29udGVudFBhbmUgc2hvdWxkIG5ldmVyIGdldCBhIHNjcm9sbGJhciAoYnV0IGl0IGRvZXMgZHVlIHRvIGJyb3dzZXIgYnVncywgc2VlICM5NDQ5XG5cdCAqL1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZGlqaXRDb250ZW50UGFuZUxvYWRpbmcgLmRpaml0SWNvbkxvYWRpbmcsXG4uZGlqaXRDb250ZW50UGFuZUVycm9yIC5kaWppdEljb25FcnJvciB7XG5cdG1hcmdpbi1yaWdodDogOXB4O1xufVxuXG4vKiBUaXRsZVBhbmUgYW5kIEZpZWxkc2V0ICovXG5cbi5kaWppdFRpdGxlUGFuZSB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuLmRpaml0RmllbGRzZXQge1xuXHRib3JkZXI6IDFweCBzb2xpZCBncmF5O1xufVxuLmRpaml0VGl0bGVQYW5lVGl0bGUsIC5kaWppdEZpZWxkc2V0VGl0bGUge1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uZGlqaXRUaXRsZVBhbmVUaXRsZUZpeGVkT3BlbiwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZENsb3NlZCxcbi5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZE9wZW4sIC5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZENsb3NlZCB7XG5cdC8qIFRpdGxlUGFuZSBvciBGaWVsZHNldCB0aGF0IGNhbm5vdCBiZSB0b2dnbGVkICovXG5cdGN1cnNvcjogZGVmYXVsdDtcbn1cbi5kaWppdFRpdGxlUGFuZVRpdGxlICoge1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZUlubmVyLCAuZGlqaXRGaWVsZHNldCAuZGlqaXRBcnJvd05vZGVJbm5lciB7XG5cdC8qIG5vcm1hbGx5LCBoaWRlIGFycm93IHRleHQgaW4gZmF2b3Igb2YgaWNvbiAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRqX2ExMXkgLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZUlubmVyLCAuZGpfYTExeSAuZGlqaXRGaWVsZHNldCAuZGlqaXRBcnJvd05vZGVJbm5lciB7XG5cdC8qIC4uLiBleGNlcHQgaW4gYTExeSBtb2RlLCB0aGVuIHNob3cgdGV4dCBhcnJvdyAqL1xuXHRkaXNwbGF5OiBpbmxpbmU7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XHRcdC8qIGJlY2F1c2UgLSBhbmQgKyBhcmUgZGlmZmVyZW50IHdpZHRocyAqL1xufVxuLmRqX2ExMXkgLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZSwgLmRqX2ExMXkgLmRpaml0RmllbGRzZXQgLmRpaml0QXJyb3dOb2RlIHtcblx0LyogLi4uIGFuZCBoaWRlIGljb24gKFRPRE86IGp1c3QgcG9pbnQgZGlqaXRJY29uIGNsYXNzIG9uIHRoZSBpY29uLCBhbmQgaXQgaGlkZXMgYXV0b21hdGljYWxseSkgKi9cblx0ZGlzcGxheTogbm9uZTtcbn1cbi5kaWppdFRpdGxlUGFuZVRpdGxlRml4ZWRPcGVuIC5kaWppdEFycm93Tm9kZSwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZE9wZW4gLmRpaml0QXJyb3dOb2RlSW5uZXIsXG4uZGlqaXRUaXRsZVBhbmVUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZSwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZENsb3NlZCAuZGlqaXRBcnJvd05vZGVJbm5lcixcbi5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZE9wZW4gLmRpaml0QXJyb3dOb2RlLCAuZGlqaXRGaWVsZHNldFRpdGxlRml4ZWRPcGVuIC5kaWppdEFycm93Tm9kZUlubmVyLFxuLmRpaml0RmllbGRzZXRUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZSwgLmRpaml0RmllbGRzZXRUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZUlubmVyIHtcblx0LyogZG9uJ3Qgc2hvdyB0aGUgb3BlbiBjbG9zZSBpY29uIG9yIHRleHQgYXJyb3c7IGl0IG1ha2VzIHRoZSB1c2VyIHRoaW5rIHRoZSBwYW5lIGlzIGNsb3NhYmxlICovXG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcdC8qICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgYWJvdmUgYTExeSBydWxlcyB0byBzaG93IHRleHQgYXJyb3cgKi9cbn1cblxuLmRqX2llNiAuZGlqaXRUaXRsZVBhbmVDb250ZW50T3V0ZXIsXG4uZGpfaWU2IC5kaWppdFRpdGxlUGFuZSAuZGlqaXRUaXRsZVBhbmVUaXRsZSB7XG5cdC8qIGZvcmNlIGhhc0xheW91dCB0byBlbnN1cmUgYm9yZGVycyBldGMsIHNob3cgdXAgKi9cblx0em9vbTogMTtcbn1cblxuLyogQ29sb3IgUGFsZXR0ZVxuICogU2l6ZXMgZGVzaWduZWQgc28gdGhhdCB0YWJsZSBjZWxsIHBvc2l0aW9ucyBtYXRjaCBpY29ucyBpbiB1bmRlcmx5aW5nIGltYWdlLFxuICogd2hpY2ggYXBwZWFyIGF0IDIweDIwIGludGVydmFscy5cbiAqL1xuXG4uZGlqaXRDb2xvclBhbGV0dGUge1xuXHRib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuXHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUge1xuXHQvKiBUYWJsZSB0aGF0IGhvbGRzIHRoZSBwYWxldHRlIGNlbGxzLCBhbmQgb3ZlcmxheXMgaW1hZ2UgZmlsZSB3aXRoIGNvbG9yIHN3YXRjaGVzLlxuXHQgKiBwYWRkaW5nL21hcmdpbiB0byBhbGlnbiB0YWJsZSB3aXRoIGltYWdlLlxuXHQgKi9cblx0cGFkZGluZzogMnB4IDNweCAzcHggM3B4O1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdG91dGxpbmU6IDA7XG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG59XG4uZGpfaWU2IC5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUsXG4uZGpfaWU3IC5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUsXG4uZGpfaWVxdWlya3MgLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVUYWJsZSB7XG5cdC8qIHVzaW5nIHBhZGRpbmcgYWJvdmUgc28gdGhhdCBmb2N1cyBib3JkZXIgaXNuJ3QgY3V0b2ZmIG9uIG1vei93ZWJraXQsXG5cdCAqIGJ1dCB1c2luZyBtYXJnaW4gb24gSUUgYmVjYXVzZSBwYWRkaW5nIGRvZXNuJ3Qgc2VlbSB0byB3b3JrXG5cdCAqL1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDJweCAzcHggM3B4IDNweDtcbn1cblxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVDZWxsIHtcblx0LyogPHRkPiBpbiB0aGUgPHRhYmxlPiAqL1xuXHRmb250LXNpemU6IDFweDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRiYWNrZ3JvdW5kOiBub25lO1xufVxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVJbWcge1xuXHQvKiBDYWxsZWQgZGlqaXRQYWxldHRlSW1nIGZvciBiYWNrLWNvbXBhdCwgdGhpcyBhY3R1YWxseSB3cmFwcyB0aGUgY29sb3Igc3dhdGNoIHdpdGggYSBib3JkZXIgYW5kIHBhZGRpbmcgKi9cblx0cGFkZGluZzogMXB4O1x0XHQvKiB3aGl0ZSBhcmVhIGJldHdlZW4gZ3JheSBib3JkZXIgYW5kIGNvbG9yIHN3YXRjaCAqL1xuXHRib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuXHRtYXJnaW46IDJweCAxcHg7XG5cdGN1cnNvcjogZGVmYXVsdDtcblx0Zm9udC1zaXplOiAxcHg7XHRcdC8qIHByZXZlbnQgPHNwYW4+IGZyb20gZ2V0dGluZyBiaWdnZXIganVzdCB0byBob2xkIGEgY2hhcmFjdGVyICovXG59XG4uZGpfZ2Vja28gLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVJbWcge1xuXHRwYWRkaW5nLWJvdHRvbTogMDtcdC8qIHdvcmthcm91bmQgcmVuZGVyaW5nIGdsaXRjaCBvbiBGRiwgaXQgYWRkcyBhbiBleHRyYSBwaXhlbCBhdCB0aGUgYm90dG9tICovXG59XG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0Q29sb3JQYWxldHRlU3dhdGNoIHtcblx0LyogdGhlIGFjdHVhbCBwYXJ0IHdoZXJlIHRoZSBjb2xvciBpcyAqL1xuXHR3aWR0aDogMTRweDtcblx0aGVpZ2h0OiAxMnB4O1xufVxuLmRpaml0UGFsZXR0ZVRhYmxlIHRkIHtcblx0XHRwYWRkaW5nOiAwO1xufVxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVDZWxsOmhvdmVyIC5kaWppdFBhbGV0dGVJbWcge1xuXHQvKiBob3ZlcmVkIGNvbG9yIHN3YXRjaCAqL1xuXHRib3JkZXI6IDFweCBzb2xpZCAjMDAwO1xufVxuXG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZUNlbGw6YWN0aXZlIC5kaWppdFBhbGV0dGVJbWcsXG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZVRhYmxlIC5kaWppdFBhbGV0dGVDZWxsU2VsZWN0ZWQgLmRpaml0UGFsZXR0ZUltZyB7XG5cdGJvcmRlcjogMnB4IHNvbGlkICMwMDA7XG5cdG1hcmdpbjogMXB4IDA7XHQvKiByZWR1Y2UgbWFyZ2luIHRvIGNvbXBlbnNhdGUgZm9yIGluY3JlYXNlZCBib3JkZXIgKi9cbn1cblxuXG4uZGpfYTExeSAuZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZVRhYmxlLFxuLmRqX2ExMXkgLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVUYWJsZSAqIHtcblx0LyogdGFibGUgY2VsbHMgYXJlIHRvIGNhdGNoIGV2ZW50cywgYnV0IHRoZSBzd2F0Y2hlcyBhcmUgaW4gdGhlIFBhbGV0dGVJbWcgYmVoaW5kIHRoZSB0YWJsZSAqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4vKiBBY2NvcmRpb25Db250YWluZXIgKi9cblxuLmRpaml0QWNjb3JkaW9uQ29udGFpbmVyIHtcblx0Ym9yZGVyOjFweCBzb2xpZCAjYjdiN2I3O1xuXHRib3JkZXItdG9wOjAgIWltcG9ydGFudDtcbn1cbi5kaWppdEFjY29yZGlvblRpdGxlIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0QWNjb3JkaW9uVGl0bGVTZWxlY3RlZCB7XG5cdGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLyogaW1hZ2VzIG9mZiwgaGlnaC1jb250cmFzdCBtb2RlIHN0eWxlcyAqL1xuLmRpaml0QWNjb3JkaW9uVGl0bGUgLmFycm93VGV4dFVwLFxuLmRpaml0QWNjb3JkaW9uVGl0bGUgLmFycm93VGV4dERvd24ge1xuXHRkaXNwbGF5OiBub25lO1xuXHRmb250LXNpemU6IDAuNjVlbTtcblx0Zm9udC13ZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZSAuYXJyb3dUZXh0VXAsXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZVNlbGVjdGVkIC5hcnJvd1RleHREb3duIHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZVNlbGVjdGVkIC5hcnJvd1RleHRVcCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5kaWppdEFjY29yZGlvbkNoaWxkV3JhcHBlciB7XG5cdC8qIHRoaXMgaXMgdGhlIG5vZGUgd2hvc2UgaGVpZ2h0IGlzIGFkanVzdGVkICovXG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIENhbGVuZGFyICovXG5cbi5kaWppdENhbGVuZGFyQ29udGFpbmVyIHRhYmxlIHtcblx0d2lkdGg6IGF1dG87XHQvKiBpbiBjYXNlIHVzZXIgaGFzIHNwZWNpZmllZCBhIHdpZHRoIGZvciB0aGUgVEFCTEUgbm9kZXMsIHNlZSAjMTA1NTMgKi9cblx0Y2xlYXI6IGJvdGg7ICAgIC8qIGNsZWFyIG1hcmdpbiBjcmVhdGVkIGZvciBsZWZ0L3JpZ2h0IG1vbnRoIGFycm93czsgbmVlZGVkIG9uIElFMTAgZm9yIENhbGVuZGFyTGl0ZSAqL1xufVxuLmRpaml0Q2FsZW5kYXJDb250YWluZXIgdGgsIC5kaWppdENhbGVuZGFyQ29udGFpbmVyIHRkIHtcblx0cGFkZGluZzogMDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmRpaml0Q2FsZW5kYXJNb250aENvbnRhaW5lciB7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5kaWppdENhbGVuZGFyRGVjcmVtZW50QXJyb3cge1xuXHRmbG9hdDogbGVmdDtcbn1cbi5kaWppdENhbGVuZGFySW5jcmVtZW50QXJyb3cge1xuXHRmbG9hdDogcmlnaHQ7XG59XG5cbi5kaWppdENhbGVuZGFyWWVhckxhYmVsIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyAgICAvKiBtYWtlIHN1cmUgcHJldmlvdXMsIGN1cnJlbnQsIGFuZCBuZXh0IHllYXIgYXBwZWFyIG9uIHNhbWUgcm93ICovXG59XG5cbi5kaWppdENhbGVuZGFyTmV4dFllYXIge1xuXHRtYXJnaW46MCAwIDAgMC41NWVtO1xufVxuXG4uZGlqaXRDYWxlbmRhclByZXZpb3VzWWVhciB7XG5cdG1hcmdpbjowIDAuNTVlbSAwIDA7XG59XG5cbi5kaWppdENhbGVuZGFySW5jcmVtZW50Q29udHJvbCB7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kaWppdENhbGVuZGFySW5jcmVtZW50Q29udHJvbCxcbi5kaWppdENhbGVuZGFyRGF0ZVRlbXBsYXRlLFxuLmRpaml0Q2FsZW5kYXJNb250aExhYmVsLFxuLmRpaml0Q2FsZW5kYXJQcmV2aW91c1llYXIsXG4uZGlqaXRDYWxlbmRhck5leHRZZWFyIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGlqaXRDYWxlbmRhckRpc2FibGVkRGF0ZSB7XG5cdGNvbG9yOiBncmF5O1xuXHR0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4uZGlqaXRTcGFjZXIge1xuXHQvKiBkb24ndCBkaXNwbGF5IGl0LCBidXQgbWFrZSBpdCBhZmZlY3QgdGhlIHdpZHRoICovXG4gIFx0cG9zaXRpb246IHJlbGF0aXZlO1xuICBcdGhlaWdodDogMXB4O1xuICBcdG92ZXJmbG93OiBoaWRkZW47XG4gIFx0dmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4vKiBTdHlsaW5nIGZvciBtb250aCBkcm9wIGRvd24gbGlzdCAqL1xuXG4uZGlqaXRDYWxlbmRhck1vbnRoTWVudSAuZGlqaXRDYWxlbmRhck1vbnRoTGFiZWwge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcbn1cblxuLyogTWVudSAqL1xuXG4uZGlqaXRNZW51IHtcblx0Ym9yZGVyOjFweCBzb2xpZCBibGFjaztcblx0YmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtcbn1cbi5kaWppdE1lbnVUYWJsZSB7XG5cdGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtcblx0Ym9yZGVyLXdpZHRoOjA7XG5cdGJhY2tncm91bmQtY29sb3I6d2hpdGU7XG59XG5cbi8qIHdvcmthcm91bmQgZm9yIHdlYmtpdCBidWcgIzg0MjcsIHJlbW92ZSB0aGlzIHdoZW4gaXQgaXMgZml4ZWQgdXBzdHJlYW0gKi9cbi5kal93ZWJraXQgLmRpaml0TWVudVRhYmxlIHRkW2NvbHNwYW49XCIyXCJde1xuXHRib3JkZXItcmlnaHQ6aGlkZGVuO1xufVxuXG4uZGlqaXRNZW51SXRlbSB7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdHBhZGRpbmc6LjFlbSAuMmVtO1xuXHRjdXJzb3I6cG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLypcbk5vIG5lZWQgdG8gc2hvdyBhIGZvY3VzIGJvcmRlciBzaW5jZSBpdCdzIG9idmlvdXMgZnJvbSB0aGUgc2hhZGluZywgYW5kIHRoZXJlJ3MgYSAuZGpfYTExeSAuZGlqaXRNZW51SXRlbVNlbGVjdGVkXG5ydWxlIGJlbG93IHRoYXQgaGFuZGxlcyB0aGUgaGlnaCBjb250cmFzdCBjYXNlIHdoZW4gdGhlcmUncyBubyBzaGFkaW5nLlxuSGlkaW5nIHRoZSBmb2N1cyBib3JkZXIgYWxzbyB3b3JrcyBhcm91bmQgd2Via2l0IGJ1ZyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTI1Nzc5LlxuKi9cbi5kaWppdE1lbnVJdGVtOmZvY3VzIHtcblx0b3V0bGluZTogbm9uZVxufVxuXG4uZGlqaXRNZW51UGFzc2l2ZSAuZGlqaXRNZW51SXRlbUhvdmVyLFxuLmRpaml0TWVudUl0ZW1TZWxlY3RlZCB7XG5cdC8qXG5cdCAqIGRpaml0TWVudUl0ZW1Ib3ZlciByZWZlcnMgdG8gYWN0dWFsIG1vdXNlIG92ZXJcblx0ICogZGlqaXRNZW51SXRlbVNlbGVjdGVkIGlzIHVzZWQgYWZ0ZXIgYSBtZW51IGhhcyBiZWVuIFwiYWN0aXZhdGVkXCIgYnlcblx0ICogY2xpY2tpbmcgaXQsIHRhYmJpbmcgaW50byBpdCwgb3IgYmVpbmcgb3BlbmVkIGZyb20gYSBwYXJlbnQgbWVudSxcblx0ICogYW5kIGRlbm90ZXMgdGhhdCB0aGUgbWVudSBpdGVtIGhhcyBmb2N1cyBvciB0aGF0IGZvY3VzIGlzIG9uIGEgY2hpbGRcblx0ICogbWVudVxuXHQgKi9cblx0YmFja2dyb3VuZC1jb2xvcjpibGFjaztcblx0Y29sb3I6d2hpdGU7XG59XG5cbi5kaWppdE1lbnVJdGVtSWNvbiwgLmRpaml0TWVudUV4cGFuZCB7XG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5cbi5kaWppdE1lbnVJdGVtRGlzYWJsZWQgKiB7XG5cdC8qIGZvciBhIGRpc2FibGVkIG1lbnUgaXRlbSwganVzdCBzZXQgaXQgdG8gbW9zdGx5IHRyYW5zcGFyZW50ICovXG5cdG9wYWNpdHk6MC41O1xuXHRjdXJzb3I6ZGVmYXVsdDtcbn1cbi5kal9pZSAuZGpfYTExeSAuZGlqaXRNZW51SXRlbURpc2FibGVkLFxuLmRqX2llIC5kal9hMTF5IC5kaWppdE1lbnVJdGVtRGlzYWJsZWQgKixcbi5kal9pZSAuZGlqaXRNZW51SXRlbURpc2FibGVkICoge1xuXHRjb2xvcjogZ3JheTtcblx0ZmlsdGVyOiBhbHBoYShvcGFjaXR5PTM1KTtcbn1cblxuLmRpaml0TWVudUl0ZW1MYWJlbCB7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kal9hMTF5IC5kaWppdE1lbnVJdGVtU2VsZWN0ZWQge1xuXHRib3JkZXI6IDFweCBkb3R0ZWQgYmxhY2sgIWltcG9ydGFudDtcdC8qIGZvciAyLjAgdXNlIG91dGxpbmUgaW5zdGVhZCwgdG8gcHJldmVudCBqaXR0ZXIgKi9cbn1cblxuLmRqX2ExMXkgLmRpaml0TWVudUl0ZW1TZWxlY3RlZCAuZGlqaXRNZW51SXRlbUxhYmVsIHtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG59XG4uZGpfaWU4IC5kal9hMTF5IC5kaWppdE1lbnVJdGVtTGFiZWwge1xuXHRwb3NpdGlvbjpzdGF0aWM7XG59XG5cbi5kaWppdE1lbnVFeHBhbmRBMTF5IHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbi5kal9hMTF5IC5kaWppdE1lbnVFeHBhbmRBMTF5IHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGlqaXRNZW51U2VwYXJhdG9yIHRkIHtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xufVxuXG4vKiBzZXBhcmF0b3IgY2FuIGJlIHR3byBwaXhlbHMgLS0gc2V0IGJvcmRlciBvZiBlaXRoZXIgb25lIHRvIDAgdG8gaGF2ZSBvbmx5IG9uZSAqL1xuLmRpaml0TWVudVNlcGFyYXRvclRvcCB7XG5cdGhlaWdodDogNTAlO1xuXHRtYXJnaW46IDA7XG5cdG1hcmdpbi10b3A6M3B4O1xuXHRmb250LXNpemU6IDFweDtcbn1cblxuLmRpaml0TWVudVNlcGFyYXRvckJvdHRvbSB7XG5cdGhlaWdodDogNTAlO1xuXHRtYXJnaW46IDA7XG5cdG1hcmdpbi1ib3R0b206M3B4O1xuXHRmb250LXNpemU6IDFweDtcbn1cblxuLyogQ2hlY2tlZE1lbnVJdGVtIGFuZCBSYWRpb01lbnVJdGVtICovXG4uZGlqaXRNZW51SXRlbUljb25DaGFyIHtcblx0ZGlzcGxheTogbm9uZTtcdFx0LyogZG9uJ3QgZGlzcGxheSBleGNlcHQgaW4gaGlnaCBjb250cmFzdCBtb2RlICovXG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcdC8qIGZvciBoaWdoIGNvbnRyYXN0IG1vZGUgd2hlbiBtZW51aXRlbSBpcyB1bmNoZWNrZWQ6IGxlYXZlIHNwYWNlIGZvciB3aGVuIGl0IGlzIGNoZWNrZWQgKi9cbn1cbi5kal9hMTF5IC5kaWppdE1lbnVJdGVtSWNvbkNoYXIge1xuXHRkaXNwbGF5OiBpbmxpbmU7XHQvKiBkaXNwbGF5IGNoYXJhY3RlciBpbiBoaWdoIGNvbnRyYXN0IG1vZGUsIHNpbmNlIGljb24gZG9lc24ndCBzaG93ICovXG59XG4uZGlqaXRDaGVja2VkTWVudUl0ZW1DaGVja2VkIC5kaWppdE1lbnVJdGVtSWNvbkNoYXIsXG4uZGlqaXRSYWRpb01lbnVJdGVtQ2hlY2tlZCAuZGlqaXRNZW51SXRlbUljb25DaGFyIHtcblx0dmlzaWJpbGl0eTogdmlzaWJsZTsgLyogbWVudWl0ZW0gaXMgY2hlY2tlZCAqL1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdE1lbnVCYXIgLmRpaml0TWVudUl0ZW0ge1xuXHQvKiBzbyBib3R0b20gYm9yZGVyIG9mIE1lbnVCYXIgYXBwZWFycyBvbiBJRTcgaW4gaGlnaC1jb250cmFzdCBtb2RlICovXG5cdG1hcmdpbjogMDtcbn1cblxuLyogU3RhY2tDb250YWluZXIgKi9cblxuLmRpaml0U3RhY2tDb250cm9sbGVyIC5kaWppdFRvZ2dsZUJ1dHRvbkNoZWNrZWQgKiB7XG5cdGN1cnNvcjogZGVmYXVsdDtcdC8qIGJlY2F1c2UgcHJlc3NpbmcgaXQgaGFzIG5vIGVmZmVjdCAqL1xufVxuXG4vKioqXG5UYWJDb250YWluZXJcblxuTWFpbiBjbGFzcyBoaWVyYXJjaHk6XG5cbi5kaWppdFRhYkNvbnRhaW5lciAtIHRoZSB3aG9sZSBUYWJDb250YWluZXJcbiAgIC5kaWppdFRhYkNvbnRyb2xsZXIgLyAuZGlqaXRUYWJMaXN0Q29udGFpbmVyLXRvcCAtIHdyYXBwZXIgZm9yIHRhYiBidXR0b25zLCBzY3JvbGwgYnV0dG9uc1xuXHQgLmRpaml0VGFiTGlzdFdyYXBwZXIgLyAuZGlqaXRUYWJDb250YWluZXJUb3BTdHJpcCAtIG91dGVyIHdyYXBwZXIgZm9yIHRhYiBidXR0b25zIChub3JtYWwgd2lkdGgpXG5cdFx0Lm5vd3JhcFRhYlN0cmlwIC8gLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgLSBpbm5lciB3cmFwcGVyIGZvciB0YWIgYnV0dG9ucyAoNTBLIHdpZHRoKVxuICAgLmRpaml0VGFiUGFuZVdyYXBwZXIgLSB3cmFwcGVyIGZvciBjb250ZW50IHBhbmVzLCBoYXMgYWxsIGJvcmRlcnMgZXhjZXB0IHRoZSBvbmUgYmV0d2VlbiBjb250ZW50IGFuZCB0YWJzXG4qKiovXG5cbi5kaWppdFRhYkNvbnRhaW5lciB7XG4gICAgei1pbmRleDogMDsgLyogc28gei1pbmRleCBzZXR0aW5ncyBiZWxvdyBoYXZlIG5vIGVmZmVjdCBvdXRzaWRlIG9mIHRoZSBUYWJDb250YWluZXIgKi9cbiAgICBvdmVyZmxvdzogdmlzaWJsZTsgLyogcHJldmVudCBvZmYtYnktb25lLXBpeGVsIGVycm9ycyBmcm9tIGhpZGluZyBib3R0b20gYm9yZGVyIChvcHBvc2l0ZSB0YWIgbGFiZWxzKSAqL1xufVxuLmRqX2llNiAuZGlqaXRUYWJDb250YWluZXIge1xuICAgIC8qIHdvcmthcm91bmQgSUU2IHByb2JsZW0gd2hlbiB0YWxsIGNvbnRlbnQgb3ZlcmZsb3dzIFRhYkNvbnRhaW5lciwgc2VlIGVkaXRvci90ZXN0X0Z1bGxTY3JlZW4uaHRtbCAqL1xuICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxufVxuLmRpaml0VGFiQ29udGFpbmVyTm9MYXlvdXQge1xuXHR3aWR0aDogMTAwJTtcdC8qIG90aGVyd2lzZSBTY3JvbGxpbmdUYWJDb250cm9sbGVyIGdvZXMgdG8gNTBLIHBpeGVscyB3aWRlICovXG59XG5cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzLFxuLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMsXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMsXG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIHtcbiAgICB6LWluZGV4OiAxO1xuXHRvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OyAgLyogc28gdGFicyBjYW4gY292ZXIgdXAgYm9yZGVyIGFkamFjZW50IHRvIGNvbnRhaW5lciAqL1xufVxuXG4uZGlqaXRUYWJDb250cm9sbGVyIHtcbiAgICB6LWluZGV4OiAxO1xufVxuLmRpaml0VGFiQ29udGFpbmVyQm90dG9tLWNvbnRhaW5lcixcbi5kaWppdFRhYkNvbnRhaW5lclRvcC1jb250YWluZXIsXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LWNvbnRhaW5lcixcbi5kaWppdFRhYkNvbnRhaW5lclJpZ2h0LWNvbnRhaW5lciB7XG5cdHotaW5kZXg6MDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7XG59XG4ubm93cmFwVGFiU3RyaXAge1xuXHR3aWR0aDogNTAwMDBweDtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0OyAgLyoganVzdCBpbiBjYXNlIGFuY2VzdG9yIGhhcyBub24tc3RhbmRhcmQgc2V0dGluZyAqL1xuICAgIHotaW5kZXg6IDE7XG59XG4uZGlqaXRUYWJMaXN0V3JhcHBlciB7XG5cdG92ZXJmbG93OiBoaWRkZW47XG4gICAgei1pbmRleDogMTtcbn1cblxuLmRqX2ExMXkgLnRhYlN0cmlwQnV0dG9uIGltZyB7XG5cdC8qIGhpZGUgdGhlIGljb25zIChvciByYXRoZXIgdGhlIGVtcHR5IHNwYWNlIHdoZXJlIHRoZXkgbm9ybWFsbHkgYXBwZWFyKSBiZWNhdXNlIHRleHQgd2lsbCBhcHBlYXIgaW5zdGVhZCAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJUb3AtdGFicyB7XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjaztcbn1cbi5kaWppdFRhYkNvbnRhaW5lclRvcC1jb250YWluZXIge1xuXHRib3JkZXItdG9wOiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMge1xuXHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBibGFjaztcblx0ZmxvYXQ6IGxlZnQ7ICAgIC8qIG5lZWRlZCBmb3IgSUU3IFJUTCBtb2RlICovXG59XG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LWNvbnRhaW5lciB7XG5cdGJvcmRlci1sZWZ0OiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJCb3R0b20tdGFicyB7XG5cdGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjaztcbn1cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS1jb250YWluZXIge1xuXHRib3JkZXItYm90dG9tOiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIHtcblx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCBibGFjaztcblx0ZmxvYXQ6IGxlZnQ7ICAgIC8qIG5lZWRlZCBmb3IgSUU3IFJUTCBtb2RlICovXG59XG4uZGlqaXRUYWJDb250YWluZXJSaWdodC1jb250YWluZXIge1xuXHRib3JkZXItcmlnaHQ6IDA7XG59XG5cbmRpdi5kaWppdFRhYkRpc2FibGVkLCAuZGpfaWUgZGl2LmRpaml0VGFiRGlzYWJsZWQge1xuXHRjdXJzb3I6IGF1dG87XG59XG5cbi5kaWppdFRhYiB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRjdXJzb3I6cG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcblx0d2hpdGUtc3BhY2U6bm93cmFwO1xuXHR6LWluZGV4OjM7XG59XG4uZGlqaXRUYWIgKiB7XG5cdC8qIG1ha2UgdGFiIGljb25zIGFuZCBjbG9zZSBpY29uIGxpbmUgdXAgdy90ZXh0ICovXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4uZGlqaXRUYWJDaGVja2VkIHtcblx0Y3Vyc29yOiBkZWZhdWx0O1x0LyogYmVjYXVzZSBjbGlja2luZyB3aWxsIGhhdmUgbm8gZWZmZWN0ICovXG59XG5cbi5kaWppdFRhYkNvbnRhaW5lclRvcC10YWJzIC5kaWppdFRhYiB7XG5cdHRvcDogMXB4O1x0LyogdG8gb3ZlcmxhcCBib3JkZXIgb24gLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgKi9cbn1cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzIC5kaWppdFRhYiB7XG5cdHRvcDogLTFweDtcdC8qIHRvIG92ZXJsYXAgYm9yZGVyIG9uIC5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzICovXG59XG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMgLmRpaml0VGFiIHtcblx0bGVmdDogMXB4O1x0LyogdG8gb3ZlcmxhcCBib3JkZXIgb24gLmRpaml0VGFiQ29udGFpbmVyTGVmdC10YWJzICovXG59XG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIC5kaWppdFRhYiB7XG5cdGxlZnQ6IC0xcHg7XHQvKiB0byBvdmVybGFwIGJvcmRlciBvbiAuZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzICovXG59XG5cblxuLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgLmRpaml0VGFiLFxuLmRpaml0VGFiQ29udGFpbmVyQm90dG9tLXRhYnMgLmRpaml0VGFiIHtcblx0LyogSW5saW5lLWJsb2NrICovXG5cdGRpc3BsYXk6aW5saW5lLWJsb2NrO1x0XHRcdC8qIHdlYmtpdCBhbmQgRkYzICovXG5cdCN6b29tOiAxOyAvKiBzZXQgaGFzTGF5b3V0OnRydWUgdG8gbWltaWMgaW5saW5lLWJsb2NrICovXG5cdCNkaXNwbGF5OmlubGluZTsgLyogZG9uJ3QgdXNlIC5kal9pZSBzaW5jZSB0aGF0IGluY3JlYXNlcyB0aGUgcHJpb3JpdHkgKi9cbn1cblxuLnRhYlN0cmlwQnV0dG9uIHtcblx0ei1pbmRleDogMTI7XG59XG5cbi5kaWppdFRhYkJ1dHRvbkRpc2FibGVkIC50YWJTdHJpcEJ1dHRvbiB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cblxuLmRpaml0VGFiQ2xvc2VCdXR0b24ge1xuXHRtYXJnaW4tbGVmdDogMWVtO1xufVxuXG4uZGlqaXRUYWJDbG9zZVRleHQge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi5kaWppdFRhYiAudGFiTGFiZWwge1xuXHQvKiBtYWtlIHN1cmUgdGFicyB3L2Nsb3NlIGJ1dHRvbiBhbmQgdy9vdXQgY2xvc2UgYnV0dG9uIGFyZSBzYW1lIGhlaWdodCwgZXZlbiB3L3NtYWxsICg8MTVweCkgZm9udC5cblx0ICogYXNzdW1lcyA8PTE1cHggaGVpZ2h0IGZvciBjbG9zZSBidXR0b24gaWNvbi5cblx0ICovXG5cdG1pbi1oZWlnaHQ6IDE1cHg7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5kaWppdE5vSWNvbiB7XG5cdC8qIGFwcGxpZWQgdG8gPGltZz4vPHNwYW4+IG5vZGUgd2hlbiB0aGVyZSBpcyBubyBpY29uIHNwZWNpZmllZCAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRqX2llNiAuZGlqaXRUYWIgLmRpaml0Tm9JY29uIHtcblx0LyogYmVjYXVzZSBtaW4taGVpZ2h0IChvbiAudGFiTGFiZWwsIGFib3ZlKSBkb2Vzbid0IHdvcmsgb24gSUU2ICovXG5cdGRpc3BsYXk6IGlubGluZTtcblx0aGVpZ2h0OiAxNXB4O1xuXHR3aWR0aDogMXB4O1xufVxuXG4vKiBpbWFnZXMgb2ZmLCBoaWdoLWNvbnRyYXN0IG1vZGUgc3R5bGVzICovXG5cbi5kal9hMTF5IC5kaWppdFRhYkNsb3NlQnV0dG9uIHtcblx0YmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuXHR3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmRqX2ExMXkgLmRpaml0VGFiQ2xvc2VUZXh0IHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGlqaXRUYWJQYW5lLFxuLmRpaml0U3RhY2tDb250YWluZXItY2hpbGQsXG4uZGlqaXRBY2NvcmRpb25Db250YWluZXItY2hpbGQge1xuXHQvKiBjaGlsZHJlbiBvZiBUYWJDb250YWluZXIsIFN0YWNrQ29udGFpbmVyLCBhbmQgQWNjb3JkaW9uQ29udGFpbmVyIHNob3VsZG4ndCBoYXZlIGJvcmRlcnNcblx0ICogYi9jIGEgYm9yZGVyIGlzIGFscmVhZHkgdGhlcmUgZnJvbSB0aGUgVGFiQ29udGFpbmVyL1N0YWNrQ29udGFpbmVyL0FjY29yZGlvbkNvbnRhaW5lciBpdHNlbGYuXG5cdCAqL1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBJbmxpbmVFZGl0Qm94ICovXG4uZGlqaXRJbmxpbmVFZGl0Qm94RGlzcGxheU1vZGUge1xuXHRib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcdC8qIHNvIGtleWxpbmUgKGJvcmRlcikgb24gaG92ZXIgY2FuIGFwcGVhciB3aXRob3V0IHNjcmVlbiBqdW1wICovXG5cdGN1cnNvcjogdGV4dDtcbn1cblxuLmRqX2ExMXkgLmRpaml0SW5saW5lRWRpdEJveERpc3BsYXlNb2RlLFxuLmRqX2llNiAuZGlqaXRJbmxpbmVFZGl0Qm94RGlzcGxheU1vZGUge1xuXHQvKiBleGNlcHQgdGhhdCBJRTYgZG9lc24ndCBzdXBwb3J0IHRyYW5zcGFyZW50IGJvcmRlcnMsIG5vciBkb2VzIGhpZ2ggY29udHJhc3QgbW9kZSAqL1xuXHRib3JkZXI6IG5vbmU7XG59XG5cbi5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZUhvdmVyLFxuLmRqX2ExMXkgLmRpaml0SW5saW5lRWRpdEJveERpc3BsYXlNb2RlSG92ZXIsXG4uZGpfaWU2IC5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZUhvdmVyIHtcblx0LyogQW4gSW5saW5lRWRpdEJveCBpbiB2aWV3IG1vZGUgKGNsaWNrIHRoaXMgdG8gZWRpdCB0aGUgdGV4dCkgKi9cblx0YmFja2dyb3VuZC1jb2xvcjogI2UyZWJmMjtcblx0Ym9yZGVyOiBzb2xpZCAxcHggYmxhY2s7XG59XG5cbi5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZURpc2FibGVkIHtcblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKiBUcmVlICovXG4uZGlqaXRUcmVlIHtcblx0b3ZlcmZsb3c6IGF1dG87XHQvKiBmb3Igc2Nyb2xsYmFycyB3aGVuIFRyZWUgaGFzIGEgaGVpZ2h0IHNldHRpbmcsIGFuZCB0byBwcmV2ZW50IHdyYXBwaW5nIGFyb3VuZCBmbG9hdCBlbGVtZW50cywgc2VlICMxMTQ5MSAqL1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGlqaXRUcmVlQ29udGFpbmVyIHtcblx0ZmxvYXQ6IGxlZnQ7XHQvKiBmb3IgY29ycmVjdCBoaWdobGlnaHRpbmcgZHVyaW5nIGhvcml6b250YWwgc2Nyb2xsLCBzZWUgIzE2MTMyICovXG59XG5cbi5kaWppdFRyZWVJbmRlbnQge1xuXHQvKiBhbW91bnQgdG8gaW5kZW50IGVhY2ggdHJlZSBub2RlIChyZWxhdGl2ZSB0byBwYXJlbnQgbm9kZSkgKi9cblx0d2lkdGg6IDE5cHg7XG59XG5cbi5kaWppdFRyZWVSb3csIC5kaWppdFRyZWVDb250ZW50IHtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmRqX2llIC5kaWppdFRyZWVMYWJlbDpmb2N1cyB7XG5cdC8qIHdvcmthcm91bmQgSUU5IGJlaGF2aW9yIHdoZXJlIGRvd24gYXJyb3dpbmcgdGhyb3VnaCBUcmVlTm9kZXMgZG9lc24ndCBzaG93IGZvY3VzIG91dGxpbmUgKi9cblx0b3V0bGluZTogMXB4IGRvdHRlZCBibGFjaztcbn1cblxuLmRpaml0VHJlZVJvdyBpbWcge1xuXHQvKiBtYWtlIHRoZSBleHBhbmRvIGFuZCBmb2xkZXIgaWNvbnMgbGluZSB1cCB3aXRoIHRoZSBsYWJlbCAqL1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uZGlqaXRUcmVlQ29udGVudCB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4uZGlqaXRFeHBhbmRvVGV4dCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5kal9hMTF5IC5kaWppdEV4cGFuZG9UZXh0IHtcblx0ZGlzcGxheTogaW5saW5lO1xuXHRwYWRkaW5nLWxlZnQ6IDEwcHg7XG5cdHBhZGRpbmctcmlnaHQ6IDEwcHg7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogdGhpbjtcblx0Y3Vyc29yOiBwb2ludGVyO1xufVxuXG4uZGlqaXRUcmVlTGFiZWwge1xuXHRtYXJnaW46IDAgNHB4O1xufVxuXG4vKiBEaWFsb2cgKi9cblxuLmRpaml0RGlhbG9nIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiA5OTk7XG5cdG92ZXJmbG93OiBoaWRkZW47XHQvKiBvdmVycmlkZSBvdmVyZmxvdzogYXV0bzsgZnJvbSBDb250ZW50UGFuZSB0byBtYWtlIGRyYWdnaW5nIHNtb290aGVyICovXG59XG5cbi5kaWppdERpYWxvZ1RpdGxlQmFyIHtcblx0Y3Vyc29yOiBtb3ZlO1xufVxuLmRpaml0RGlhbG9nRml4ZWQgLmRpaml0RGlhbG9nVGl0bGVCYXIge1xuXHRjdXJzb3I6ZGVmYXVsdDtcbn1cbi5kaWppdERpYWxvZ0Nsb3NlSWNvbiB7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5kaWppdERpYWxvZ1BhbmVDb250ZW50IHtcblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuLmRpaml0RGlhbG9nVW5kZXJsYXlXcmFwcGVyIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRsZWZ0OiAwO1xuXHR0b3A6IDA7XG5cdHotaW5kZXg6IDk5ODtcblx0ZGlzcGxheTogbm9uZTtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn1cblxuLmRpaml0RGlhbG9nVW5kZXJsYXkge1xuXHRiYWNrZ3JvdW5kOiAjZWVlO1xuXHRvcGFjaXR5OiAwLjU7XG59XG5cbi5kal9pZSAuZGlqaXREaWFsb2dVbmRlcmxheSB7XG5cdGZpbHRlcjogYWxwaGEob3BhY2l0eT01MCk7XG59XG5cbi8qIGltYWdlcyBvZmYsIGhpZ2gtY29udHJhc3QgbW9kZSBzdHlsZXMgKi9cbi5kal9hMTF5IC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGpfYTExeSAuZGlqaXREaWFsb2cge1xuXHRvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdERpYWxvZyAuY2xvc2VUZXh0IHtcblx0ZGlzcGxheTpub25lO1xuXHQvKiBmb3IgdGhlIG9uaG92ZXIgYm9yZGVyIGluIGhpZ2ggY29udHJhc3Qgb24gSUU6ICovXG5cdHBvc2l0aW9uOmFic29sdXRlO1xufVxuXG4uZGpfYTExeSAuZGlqaXREaWFsb2cgLmNsb3NlVGV4dCB7XG5cdGRpc3BsYXk6aW5saW5lO1xufVxuXG4vKiBTbGlkZXIgKi9cblxuLmRpaml0U2xpZGVyTW92ZWFibGUge1xuXHR6LWluZGV4Ojk5O1xuXHRwb3NpdGlvbjphYnNvbHV0ZSAhaW1wb3J0YW50O1xuXHRkaXNwbGF5OmJsb2NrO1xuXHR2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG59XG5cbi5kaWppdFNsaWRlck1vdmVhYmxlSCB7XG5cdHJpZ2h0OjA7XG59XG4uZGlqaXRTbGlkZXJNb3ZlYWJsZVYge1xuXHRyaWdodDo1MCU7XG59XG5cbi5kal9hMTF5IGRpdi5kaWppdFNsaWRlckltYWdlSGFuZGxlLFxuLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRtYXJnaW46MDtcblx0cGFkZGluZzowO1xuXHRwb3NpdGlvbjpyZWxhdGl2ZSAhaW1wb3J0YW50O1xuXHRib3JkZXI6OHB4IHNvbGlkIGdyYXk7XG5cdHdpZHRoOjA7XG5cdGhlaWdodDowO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRqX2ExMXkgLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRmb250LXNpemU6IDA7XG59XG4uZGpfaWU3IC5kaWppdFNsaWRlckltYWdlSGFuZGxlIHtcblx0b3ZlcmZsb3c6IGhpZGRlbjsgLyogSUU3IHdvcmthcm91bmQgdG8gbWFrZSBzbGlkZXIgaGFuZGxlIFZJU0lCTEUgaW4gbm9uLWExMXkgbW9kZSAqL1xufVxuLmRqX2llNyAuZGpfYTExeSAuZGlqaXRTbGlkZXJJbWFnZUhhbmRsZSB7XG5cdG92ZXJmbG93OiB2aXNpYmxlOyAvKiBJRTcgd29ya2Fyb3VuZCB0byBtYWtlIHNsaWRlciBoYW5kbGUgVklTSUJMRSBpbiBhMTF5IG1vZGUgKi9cbn1cbi5kal9hMTF5IC5kaWppdFNsaWRlckZvY3VzZWQgLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRib3JkZXI6NHB4IHNvbGlkICMwMDA7XG5cdGhlaWdodDo4cHg7XG5cdHdpZHRoOjhweDtcbn1cblxuLmRpaml0U2xpZGVySW1hZ2VIYW5kbGVWIHtcblx0dG9wOi04cHg7XG5cdHJpZ2h0OiAtNTAlO1xufVxuXG4uZGlqaXRTbGlkZXJJbWFnZUhhbmRsZUgge1xuXHRsZWZ0OjUwJTtcblx0dG9wOi01cHg7XG5cdHZlcnRpY2FsLWFsaWduOnRvcDtcbn1cblxuLmRpaml0U2xpZGVyQmFyIHtcblx0Ym9yZGVyLXN0eWxlOnNvbGlkO1xuXHRib3JkZXItY29sb3I6YmxhY2s7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmRpaml0U2xpZGVyQmFyQ29udGFpbmVyViB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRoZWlnaHQ6MTAwJTtcblx0ei1pbmRleDoxO1xufVxuXG4uZGlqaXRTbGlkZXJCYXJDb250YWluZXJIIHtcblx0cG9zaXRpb246cmVsYXRpdmU7XG5cdHotaW5kZXg6MTtcbn1cblxuLmRpaml0U2xpZGVyQmFySCB7XG5cdGhlaWdodDo0cHg7XG5cdGJvcmRlci13aWR0aDoxcHggMDtcbn1cblxuLmRpaml0U2xpZGVyQmFyViB7XG5cdHdpZHRoOjRweDtcblx0Ym9yZGVyLXdpZHRoOjAgMXB4O1xufVxuXG4uZGlqaXRTbGlkZXJQcm9ncmVzc0JhciB7XG5cdGJhY2tncm91bmQtY29sb3I6cmVkO1xuXHR6LWluZGV4OjE7XG59XG5cbi5kaWppdFNsaWRlclByb2dyZXNzQmFyViB7XG5cdHBvc2l0aW9uOnN0YXRpYyAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6MDtcblx0dmVydGljYWwtYWxpZ246dG9wO1xuXHR0ZXh0LWFsaWduOmxlZnQ7XG59XG5cbi5kaWppdFNsaWRlclByb2dyZXNzQmFySCB7XG5cdHBvc2l0aW9uOmFic29sdXRlICFpbXBvcnRhbnQ7XG5cdHdpZHRoOjA7XG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0b3ZlcmZsb3c6dmlzaWJsZTtcbn1cblxuLmRpaml0U2xpZGVyUmVtYWluaW5nQmFyIHtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O1xuXHR6LWluZGV4OjE7XG59XG5cbi5kaWppdFNsaWRlclJlbWFpbmluZ0JhclYge1xuXHRoZWlnaHQ6MTAwJTtcblx0dGV4dC1hbGlnbjpsZWZ0O1xufVxuXG4uZGlqaXRTbGlkZXJSZW1haW5pbmdCYXJIIHtcblx0d2lkdGg6MTAwJSAhaW1wb3J0YW50O1xufVxuXG4vKiB0aGUgc2xpZGVyIGJ1bXBlciBpcyB0aGUgc3BhY2UgY29uc3VtZWQgYnkgdGhlIHNsaWRlciBoYW5kbGUgd2hlbiBpdCBoYW5ncyBvdmVyIGFuIGVkZ2UgKi9cbi5kaWppdFNsaWRlckJ1bXBlciB7XG5cdG92ZXJmbG93OmhpZGRlbjtcblx0ei1pbmRleDoxO1xufVxuXG4uZGlqaXRTbGlkZXJCdW1wZXJWIHtcblx0d2lkdGg6NHB4O1xuXHRoZWlnaHQ6OHB4O1xuXHRib3JkZXItd2lkdGg6MCAxcHg7XG59XG5cbi5kaWppdFNsaWRlckJ1bXBlckgge1xuXHR3aWR0aDo4cHg7XG5cdGhlaWdodDo0cHg7XG5cdGJvcmRlci13aWR0aDoxcHggMDtcbn1cblxuLmRpaml0U2xpZGVyQm90dG9tQnVtcGVyLFxuLmRpaml0U2xpZGVyTGVmdEJ1bXBlciB7XG5cdGJhY2tncm91bmQtY29sb3I6cmVkO1xufVxuXG4uZGlqaXRTbGlkZXJUb3BCdW1wZXIsXG4uZGlqaXRTbGlkZXJSaWdodEJ1bXBlciB7XG5cdGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7XG59XG5cbi5kaWppdFNsaWRlckRlY29yYXRpb24ge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvbkMsXG4uZGlqaXRTbGlkZXJEZWNvcmF0aW9uViB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogbmVlZGVkIGZvciBJRStxdWlya3MrUlRMK3ZlcnRpY2FsIChyZW5kZXJpbmcgYnVnKSBidXQgYWRkIGV2ZXJ5d2hlcmUgZm9yIGN1c3RvbSBzdHlsaW5nIGNvbnNpc3RlbmN5IGJ1dCB0aGlzIG1lc3NlcyB1cCBJRSBob3Jpem9udGFsIHNsaWRlcnMgKi9cbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvbkgge1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvblYge1xuXHRoZWlnaHQ6IDEwMCU7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5kaWppdFNsaWRlckJ1dHRvbiB7XG5cdGZvbnQtZmFtaWx5Om1vbm9zcGFjZTtcblx0bWFyZ2luOjA7XG5cdHBhZGRpbmc6MDtcblx0ZGlzcGxheTpibG9jaztcbn1cblxuLmRqX2ExMXkgLmRpaml0U2xpZGVyQnV0dG9uSW5uZXIge1xuXHR2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0U2xpZGVyQnV0dG9uQ29udGFpbmVyIHtcblx0dGV4dC1hbGlnbjpjZW50ZXI7XG5cdGhlaWdodDowO1x0LyogPz8/ICovXG59XG4uZGlqaXRTbGlkZXJCdXR0b25Db250YWluZXIgKiB7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmRpaml0U2xpZGVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRwYWRkaW5nOjA7XG5cdGRpc3BsYXk6YmxvY2s7XG59XG5cbi5kaWppdFJ1bGVDb250YWluZXIge1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0b3ZlcmZsb3c6dmlzaWJsZTtcbn1cblxuLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRoZWlnaHQ6MTAwJTtcblx0bGluZS1oZWlnaHQ6MDtcblx0ZmxvYXQ6bGVmdDtcblx0dGV4dC1hbGlnbjpsZWZ0O1xufVxuXG4uZGpfb3BlcmEgLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRsaW5lLWhlaWdodDoyJTtcbn1cblxuLmRqX2llIC5kaWppdFJ1bGVDb250YWluZXJWIHtcblx0bGluZS1oZWlnaHQ6bm9ybWFsO1xufVxuXG4uZGpfZ2Vja28gLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRtYXJnaW46MCAwIDFweCAwOyAvKiBtb3ppbGxhIGJ1ZyB3b3JrYXJvdW5kIGZvciBmbG9hdDpsZWZ0LGhlaWdodDoxMDAlIGJsb2NrIGVsZW1lbnRzICovXG59XG5cbi5kaWppdFJ1bGVNYXJrIHtcblx0cG9zaXRpb246YWJzb2x1dGU7XG5cdGJvcmRlcjoxcHggc29saWQgYmxhY2s7XG5cdGxpbmUtaGVpZ2h0OjA7XG5cdGhlaWdodDoxMDAlO1xufVxuXG4uZGlqaXRSdWxlTWFya0gge1xuXHR3aWR0aDowO1xuXHRib3JkZXItdG9wLXdpZHRoOjAgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbS13aWR0aDowICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1sZWZ0LXdpZHRoOjAgIWltcG9ydGFudDtcbn1cblxuLmRpaml0UnVsZUxhYmVsQ29udGFpbmVyIHtcblx0cG9zaXRpb246YWJzb2x1dGU7XG59XG5cbi5kaWppdFJ1bGVMYWJlbENvbnRhaW5lckgge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0ZGlzcGxheTppbmxpbmUtYmxvY2s7XG59XG5cbi5kaWppdFJ1bGVMYWJlbEgge1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0bGVmdDotNTAlO1xufVxuXG4uZGlqaXRSdWxlTGFiZWxWIHtcblx0Lyogc28gdGhhdCBsb25nIGxhYmVscyBkb24ndCBvdmVyZmxvdyB0byBtdWx0aXBsZSByb3dzLCBvciBvdmVyd3JpdGUgc2xpZGVyIGl0c2VsZiAqL1xuXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRpaml0UnVsZU1hcmtWIHtcblx0aGVpZ2h0OjA7XG5cdGJvcmRlci1yaWdodC13aWR0aDowICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1ib3R0b20td2lkdGg6MCAhaW1wb3J0YW50O1xuXHRib3JkZXItbGVmdC13aWR0aDowICFpbXBvcnRhbnQ7XG5cdHdpZHRoOjEwMCU7XG5cdGxlZnQ6MDtcbn1cblxuLmRqX2llIC5kaWppdFJ1bGVMYWJlbENvbnRhaW5lclYge1xuXHRtYXJnaW4tdG9wOi0uNTVlbTtcbn1cblxuLmRqX2ExMXkgLmRpaml0U2xpZGVyUmVhZE9ubHksXG4uZGpfYTExeSAuZGlqaXRTbGlkZXJEaXNhYmxlZCB7XG5cdG9wYWNpdHk6MC42O1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdFNsaWRlclJlYWRPbmx5IC5kaWppdFNsaWRlckJhcixcbi5kal9pZSAuZGpfYTExeSAuZGlqaXRTbGlkZXJEaXNhYmxlZCAuZGlqaXRTbGlkZXJCYXIge1xuXHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NDApO1xufVxuXG4vKiArIGFuZCAtIFNsaWRlciBidXR0b25zOiBvdmVycmlkZSB0aGVtZSBzZXR0aW5ncyB0byBkaXNwbGF5IGljb25zICovXG4uZGpfYTExeSAuZGlqaXRTbGlkZXIgLmRpaml0U2xpZGVyQnV0dG9uQ29udGFpbmVyIGRpdiB7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IC8qIG90aGVyd2lzZSBoeXBoZW4gaXMgbGFyZ2VyIGFuZCBtb3JlIHZlcnRpY2FsbHkgY2VudGVyZWQgKi9cblx0Zm9udC1zaXplOiAxZW07XG5cdGxpbmUtaGVpZ2h0OiAxZW07XG5cdGhlaWdodDogYXV0bztcblx0d2lkdGg6IGF1dG87XG5cdG1hcmdpbjogMCA0cHg7XG59XG5cbi8qIEljb24tb25seSBidXR0b25zIChvZnRlbiBpbiB0b29sYmFycykgc3RpbGwgZGlzcGxheSB0aGUgdGV4dCBpbiBoaWdoLWNvbnRyYXN0IG1vZGUgKi9cbi5kal9hMTF5IC5kaWppdEJ1dHRvbkNvbnRlbnRzIC5kaWppdEJ1dHRvblRleHQsXG4uZGpfYTExeSAuZGlqaXRUYWIgLnRhYkxhYmVsIHtcblx0ZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uVGV4dCB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xufVxuXG4vKiBUZXh0QXJlYSwgU2ltcGxlVGV4dEFyZWEgKi9cbi5kaWppdFRleHRBcmVhIHtcblx0d2lkdGg6MTAwJTtcblx0b3ZlcmZsb3cteTogYXV0bztcdC8qIHcvb3V0IHRoaXMgSUUncyBTaW1wbGVUZXh0QXJlYSBnb2VzIHRvIG92ZXJmbG93OiBzY3JvbGwgKi9cbn1cbi5kaWppdFRleHRBcmVhW2NvbHNdIHtcblx0d2lkdGg6YXV0bzsgLyogU2ltcGxlVGV4dEFyZWEgY29scyAqL1xufVxuLmRqX2llIC5kaWppdFRleHRBcmVhQ29scyB7XG5cdHdpZHRoOmF1dG87XG59XG5cbi5kaWppdEV4cGFuZGluZ1RleHRBcmVhIHtcblx0LyogZm9yIGF1dG8gZXhhbmRpbmcgdGV4dGFyZWEgKGNhbGxlZCBUZXh0YXJlYSBjdXJyZW50bHksIHJlbmFtZSBmb3IgMi4wKSBkb24ndCB3YW50IHRvIGRpc3BsYXkgdGhlIGdyaXAgdG8gcmVzaXplICovXG5cdHJlc2l6ZTogbm9uZTtcbn1cblxuXG4vKiBUb29sYmFyXG4gKiBOb3RlIHRoYXQgb3RoZXIgdG9vbGJhciBydWxlcyAoZm9yIG9iamVjdHMgaW4gdG9vbGJhcnMpIGFyZSBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGlzIGZpbGUuXG4gKi9cblxuLmRpaml0VG9vbGJhclNlcGFyYXRvciB7XG5cdGhlaWdodDogMThweDtcblx0d2lkdGg6IDVweDtcblx0cGFkZGluZzogMCAxcHg7XG5cdG1hcmdpbjogMDtcbn1cblxuLyogRWRpdG9yICovXG4uZGlqaXRJRUZpeGVkVG9vbGJhciB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHQvKiB0b3A6MDsgKi9cblx0dG9wOiBleHByZXNzaW9uKGV2YWwoKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8ZG9jdW1lbnQuYm9keSkuc2Nyb2xsVG9wKSk7XG59XG5cbi5kaWppdEVkaXRvciB7XG5cdGRpc3BsYXk6IGJsb2NrO1x0LyogcHJldmVudHMgZ2xpdGNoIG9uIEZGIHdpdGggSW5saW5lRWRpdEJveCwgc2VlICM4NDA0ICovXG59XG5cbi5kaWppdEVkaXRvckRpc2FibGVkLFxuLmRpaml0RWRpdG9yUmVhZE9ubHkge1xuXHRjb2xvcjogZ3JheTtcbn1cblxuLyogVGltZVBpY2tlciAqL1xuXG4uZGlqaXRUaW1lUGlja2VyIHtcblx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG4uZGlqaXRUaW1lUGlja2VySXRlbSB7XG5cdGN1cnNvcjpwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0VGltZVBpY2tlckl0ZW1Ib3ZlciB7XG5cdGJhY2tncm91bmQtY29sb3I6Z3JheTtcblx0Y29sb3I6d2hpdGU7XG59XG4uZGlqaXRUaW1lUGlja2VySXRlbVNlbGVjdGVkIHtcblx0Zm9udC13ZWlnaHQ6Ym9sZDtcblx0Y29sb3I6IzMzMztcblx0YmFja2dyb3VuZC1jb2xvcjojYjdjZGVlO1xufVxuLmRpaml0VGltZVBpY2tlckl0ZW1EaXNhYmxlZCB7XG5cdGNvbG9yOmdyYXk7XG5cdHRleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2g7XG59XG5cbi5kaWppdFRpbWVQaWNrZXJJdGVtSW5uZXIge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0Ym9yZGVyOjA7XG5cdHBhZGRpbmc6MnB4IDhweCAycHggOHB4O1xufVxuXG4uZGlqaXRUaW1lUGlja2VyVGljayxcbi5kaWppdFRpbWVQaWNrZXJNYXJrZXIge1xuXHRib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmF5O1xufVxuXG4uZGlqaXRUaW1lUGlja2VyIC5kaWppdERvd25BcnJvd0J1dHRvbiB7XG5cdGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0VGltZVBpY2tlclRpY2sge1xuXHRjb2xvcjojQ0NDO1xufVxuXG4uZGlqaXRUaW1lUGlja2VyTWFya2VyIHtcblx0Y29sb3I6YmxhY2s7XG5cdGJhY2tncm91bmQtY29sb3I6I0NDQztcbn1cblxuLmRqX2ExMXkgLmRpaml0VGltZVBpY2tlckl0ZW1TZWxlY3RlZCAuZGlqaXRUaW1lUGlja2VySXRlbUlubmVyIHtcblx0Ym9yZGVyOiBzb2xpZCA0cHggYmxhY2s7XG59XG4uZGpfYTExeSAuZGlqaXRUaW1lUGlja2VySXRlbUhvdmVyIC5kaWppdFRpbWVQaWNrZXJJdGVtSW5uZXIge1xuXHRib3JkZXI6IGRhc2hlZCA0cHggYmxhY2s7XG59XG5cblxuLmRpaml0VG9nZ2xlQnV0dG9uSWNvbkNoYXIge1xuXHQvKiBjaGFyYWN0ZXIgKGluc3RlYWQgb2YgaWNvbikgdG8gc2hvdyB0aGF0IFRvZ2dsZUJ1dHRvbiBpcyBjaGVja2VkICovXG5cdGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0VG9nZ2xlQnV0dG9uIC5kaWppdFRvZ2dsZUJ1dHRvbkljb25DaGFyIHtcblx0ZGlzcGxheTppbmxpbmUgIWltcG9ydGFudDtcblx0dmlzaWJpbGl0eTpoaWRkZW47XG59XG4uZGpfaWU2IC5kaWppdFRvZ2dsZUJ1dHRvbkljb25DaGFyLCAuZGpfaWU2IC50YWJTdHJpcEJ1dHRvbiAuZGlqaXRCdXR0b25UZXh0IHtcblx0Zm9udC1mYW1pbHk6IFwiQXJpYWwgVW5pY29kZSBNU1wiO1x0Lyogb3RoZXJ3aXNlIHRoZSBhMTF5IGNoYXJhY3RlciAoY2hlY2ttYXJrLCBhcnJvdywgZXRjLikgYXBwZWFycyBhcyBhIGJveCAqL1xufVxuLmRqX2ExMXkgLmRpaml0VG9nZ2xlQnV0dG9uQ2hlY2tlZCAuZGlqaXRUb2dnbGVCdXR0b25JY29uQ2hhciB7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyAvKiBJbiBoaWdoIGNvbnRyYXN0IG1vZGUsIGRpc3BsYXkgdGhlIGNoZWNrIHN5bWJvbCAqL1xuXHR2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0QXJyb3dCdXR0b25DaGFyIHtcblx0ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRBcnJvd0J1dHRvbkNoYXIge1xuXHRkaXNwbGF5OmlubGluZSAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXREcm9wRG93bkJ1dHRvbiAuZGlqaXRBcnJvd0J1dHRvbklubmVyLFxuLmRqX2ExMXkgLmRpaml0Q29tYm9CdXR0b24gLmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBTZWxlY3QgKi9cbi5kal9hMTF5IC5kaWppdFNlbGVjdCB7XG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGUgIWltcG9ydGFudDtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG59XG4uZGpfaWUgLmRpaml0U2VsZWN0IHtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTsgLyogU2V0IHRoaXMgYmFjayBmb3Igd2hhdCB3ZSBoYWNrIGluIGRpaml0IGlubGluZSAqL1xufVxuLmRqX2llNiAuZGlqaXRTZWxlY3QgLmRpaml0VmFsaWRhdGlvbkNvbnRhaW5lcixcbi5kal9pZTggLmRpaml0U2VsZWN0IC5kaWppdEJ1dHRvblRleHQge1xuXHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLmRqX2llNiAuZGlqaXRUZXh0Qm94IC5kaWppdElucHV0Q29udGFpbmVyLFxuLmRqX2llcXVpcmtzIC5kaWppdFRleHRCb3ggLmRpaml0SW5wdXRDb250YWluZXIsXG4uZGpfaWU2IC5kaWppdFRleHRCb3ggLmRpaml0QXJyb3dCdXR0b25Jbm5lcixcbi5kal9pZTYgLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uSW5uZXIsXG4uZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwge1xuXHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi5kaWppdE51bWJlclRleHRCb3gge1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRkaXJlY3Rpb246IGx0cjtcbn1cblxuLmRpaml0TnVtYmVyVGV4dEJveCAuZGlqaXRJbnB1dElubmVyIHtcblx0dGV4dC1hbGlnbjogaW5oZXJpdDsgLyogaW5wdXQgKi9cbn1cblxuLmRpaml0TnVtYmVyVGV4dEJveCBpbnB1dC5kaWppdElucHV0SW5uZXIsXG4uZGlqaXRDdXJyZW5jeVRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRpaml0U3Bpbm5lciBpbnB1dC5kaWppdElucHV0SW5uZXIge1xuXHR0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLmRqX2llOCAuZGlqaXROdW1iZXJUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXROdW1iZXJUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lcixcbi5kal9pZTggLmRpaml0Q3VycmVuY3lUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXRDdXJyZW5jeVRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRqX2llOCAuZGlqaXRTcGlubmVyIGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXRTcGlubmVyIGlucHV0LmRpaml0SW5wdXRJbm5lciB7XG5cdC8qIHdvcmthcm91bmQgYnVnIHdoZXJlIGNhcmV0IGludmlzaWJsZSBpbiBlbXB0eSB0ZXh0Ym94ZXMgKi9cblx0cGFkZGluZy1yaWdodDogMXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdFRvb2xiYXIgLmRpaml0U2VsZWN0IHtcblx0bWFyZ2luOiAwO1xufVxuLmRqX3dlYmtpdCAuZGlqaXRUb29sYmFyIC5kaWppdFNlbGVjdCB7XG5cdHBhZGRpbmctbGVmdDogMC4zZW07XG59XG4uZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRwYWRkaW5nOiAwO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRib3JkZXItc3R5bGU6IG5vbmUgc29saWQgbm9uZSBub25lO1xuXHRib3JkZXItd2lkdGg6IDFweDtcbn1cbi5kaWppdFNlbGVjdEZpeGVkV2lkdGggLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLmRpaml0U2VsZWN0TWVudSAuZGlqaXRNZW51SXRlbUljb24ge1xuXHQvKiBhdm9pZCBibGFuayBhcmVhIGluIGxlZnQgc2lkZSBvZiBtZW51IChzaW5jZSB3ZSBoYXZlIG5vIGljb25zKSAqL1xuXHRkaXNwbGF5Om5vbmU7XG59XG4uZGpfaWU2IC5kaWppdFNlbGVjdE1lbnUgLmRpaml0TWVudUl0ZW1MYWJlbCxcbi5kal9pZTcgLmRpaml0U2VsZWN0TWVudSAuZGlqaXRNZW51SXRlbUxhYmVsIHtcblx0LyogU2V0IGJhY2sgdG8gc3RhdGljIGR1ZSB0byBidWcgaW4gaWU2L2llNyAtIFNlZSBCdWcgIzk2NTEgKi9cblx0cG9zaXRpb246IHN0YXRpYztcbn1cblxuLyogRml4IHRoZSBiYXNlbGluZSBvZiBvdXIgbGFiZWwgKGZvciBtdWx0aS1zaXplIGZvbnQgZWxlbWVudHMpICovXG4uZGlqaXRTZWxlY3RMYWJlbCAqXG57XG5cdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuLyogU3R5bGluZyBmb3IgdGhlIGN1cnJlbnRseS1zZWxlY3RlZCBvcHRpb24gKHJpY2ggdGV4dCBjYW4gbWVzcyB0aGlzIHVwKSAqL1xuLmRpaml0U2VsZWN0U2VsZWN0ZWRPcHRpb24gKiB7XG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKiBGaXggdGhlIHN0eWxpbmcgb2YgdGhlIGRyb3Bkb3duIG1lbnUgdG8gYmUgbW9yZSBjb21ib2JveC1saWtlICovXG4uZGlqaXRTZWxlY3RNZW51IHtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG59XG5cbi8qIFVzZWQgaW4gY2FzZXMsIHN1Y2ggYXMgRnVsbFNjcmVlbiBwbHVnaW4sIHdoZW4gd2UgbmVlZCB0byBmb3JjZSBzdHVmZiB0byBzdGF0aWMgcG9zaXRpb25pbmcuICovXG4uZGlqaXRGb3JjZVN0YXRpYyB7XG5cdHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDtcbn1cblxuLyoqKiogRGlzYWJsZWQgY3Vyc29yICoqKioqL1xuLmRpaml0UmVhZE9ubHkgKixcbi5kaWppdERpc2FibGVkICosXG4uZGlqaXRSZWFkT25seSxcbi5kaWppdERpc2FibGVkIHtcblx0LyogYSByZWdpb24gdGhlIHVzZXIgd291bGQgYmUgYWJsZSB0byBjbGljayBvbiwgYnV0IGl0J3MgZGlzYWJsZWQgKi9cblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKiBEcmFnIGFuZCBEcm9wICovXG4uZG9qb0RuZEl0ZW0ge1xuICAgIHBhZGRpbmc6IDJweDsgIC8qIHdpbGwgYmUgcmVwbGFjZWQgYnkgYm9yZGVyIGR1cmluZyBkcmFnIG92ZXIgKGRvam9EbmRJdGVtQmVmb3JlLCBkb2pvRG5kSXRlbUFmdGVyKSAqL1xuXG5cdC8qIFByZXZlbnQgbWFnbmlmeWluZy1nbGFzcyB0ZXh0IHNlbGVjdGlvbiBpY29uIHRvIGFwcGVhciBvbiBtb2JpbGUgd2Via2l0IGFzIGl0IGNhdXNlcyBhIHRvdWNob3V0IGV2ZW50ICovXG5cdC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcblx0LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgLyogRGlzYWJsZSBzZWxlY3Rpb24vQ29weSBvZiBVSVdlYlZpZXcgKi9cbn1cbi5kb2pvRG5kSG9yaXpvbnRhbCAuZG9qb0RuZEl0ZW0ge1xuICAgIC8qIG1ha2UgY29udGVudHMgb2YgaG9yaXpvbnRhbCBjb250YWluZXIgYmUgc2lkZSBieSBzaWRlLCByYXRoZXIgdGhhbiB2ZXJ0aWNhbCAqL1xuICAgICNkaXNwbGF5OiBpbmxpbmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZG9qb0RuZEl0ZW1CZWZvcmUsXG4uZG9qb0RuZEl0ZW1BZnRlciB7XG5cdGJvcmRlcjogMHB4IHNvbGlkICMzNjk7XG59XG4uZG9qb0RuZEl0ZW1CZWZvcmUge1xuICAgIGJvcmRlci13aWR0aDogMnB4IDAgMCAwO1xuICAgIHBhZGRpbmc6IDAgMnB4IDJweCAycHg7XG59XG4uZG9qb0RuZEl0ZW1BZnRlciB7XG4gICAgYm9yZGVyLXdpZHRoOiAwIDAgMnB4IDA7XG4gICAgcGFkZGluZzogMnB4IDJweCAwIDJweDtcbn1cbi5kb2pvRG5kSG9yaXpvbnRhbCAuZG9qb0RuZEl0ZW1CZWZvcmUge1xuICAgIGJvcmRlci13aWR0aDogMCAwIDAgMnB4O1xuICAgIHBhZGRpbmc6IDJweCAycHggMnB4IDA7XG59XG4uZG9qb0RuZEhvcml6b250YWwgLmRvam9EbmRJdGVtQWZ0ZXIge1xuICAgIGJvcmRlci13aWR0aDogMCAycHggMCAwO1xuICAgIHBhZGRpbmc6IDJweCAwIDJweCAycHg7XG59XG5cbi5kb2pvRG5kSXRlbU92ZXIge1xuXHRjdXJzb3I6cG9pbnRlcjtcbn1cbi5kal9nZWNrbyAuZGlqaXRBcnJvd0J1dHRvbklubmVyIElOUFVULFxuLmRqX2dlY2tvIElOUFVULmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdC1tb3otdXNlci1mb2N1czppZ25vcmU7XG59XG4uZGlqaXRGb2N1c2VkIC5kaWppdE1lbnVJdGVtU2hvcnRjdXRLZXkge1xuXHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbiIsIi8qIERpaml0IGN1c3RvbSBzdHlsaW5nICovXG4uZGlqaXRCb3JkZXJDb250YWluZXIge1xuICAgIGhlaWdodDogMzUwcHg7XG59XG4uZGlqaXRUb29sdGlwQ29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xufVxuLmRpaml0Q29udGVudFBhbmUge1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7IC8qIFdpZGdldHMgbGlrZSB0aGUgZGF0YSBncmlkIHBhc3MgdGhlaXIgc2Nyb2xsXG4gICAgb2Zmc2V0IHRvIHRoZSBwYXJlbnQgaWYgdGhlcmUgaXMgbm90IGVub3VnaCByb29tIHRvIGRpc3BsYXkgYSBzY3JvbGwgYmFyXG4gICAgaW4gdGhlIHdpZGdldCBpdHNlbGYsIHNvIGRvIG5vdCBoaWRlIHRoZSBvdmVyZmxvdy4gKi9cbn1cblxuLyogR2xvYmFsIEJvb3RzdHJhcCBjaGFuZ2VzICovXG5cbi8qIENsaWVudCBkZWZhdWx0cyBhbmQgaGVscGVycyAqL1xuLm14LWRhdGF2aWV3LWNvbnRlbnQsIC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcjpub3QoLm14LXNjcm9sbGNvbnRhaW5lci1uZXN0ZWQpLCAubXgtdGFiY29udGFpbmVyLWNvbnRlbnQsIC5teC1ncmlkLWNvbnRlbnQge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cbmh0bWwsIGJvZHksICNjb250ZW50IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG4jY29udGVudCA+IC5teC1wYWdlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xufVxuXG4ubXgtbGVmdC1hbGlnbmVkIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LXJpZ2h0LWFsaWduZWQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuLm14LWNlbnRlci1hbGlnbmVkIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5teC10YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtdGFibGUgdGgsXG4ubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLm14LXRhYmxlIHRoLm5vcGFkZGluZyxcbi5teC10YWJsZSB0ZC5ub3BhZGRpbmcge1xuXHRwYWRkaW5nOiAwO1xufVxuXG4ubXgtb2Zmc2NyZWVuIHtcbiAgICAvKiBXaGVuIHBvc2l0aW9uIHJlbGF0aXZlIGlzIG5vdCBzZXQgSUUgZG9lc24ndCBwcm9wZXJseSByZW5kZXIgd2hlbiB0aGlzIGNsYXNzIGlzIHJlbW92ZWRcbiAgICAgKiB3aXRoIHRoZSBlZmZlY3QgdGhhdCBlbGVtZW50cyBhcmUgbm90IGRpc3BsYXllZCBvciBhcmUgbm90IGNsaWNrYWJsZS5cbiAgICAqL1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLm14LWllLWV2ZW50LXNoaWVsZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAtMTtcbn1cblxuLm14LXN3aXBlLW5hdmlnYXRpb24tcHJvZ3Jlc3Mge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBoZWlnaHQ6IDU0cHg7XG4gICAgd2lkdGg6IDU0cHg7XG4gICAgdG9wOiBjYWxjKDUwJSAtIDI3cHgpO1xuICAgIGxlZnQ6IGNhbGMoNTAlIC0gMjdweCk7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaE5nQTJBUE1BQVAvLy93QUFBSGg0ZUJ3Y0hBNE9EdGpZMkZSVVZOemMzTVRFeEVoSVNJcUtpZ0FBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQWtLQUFBQUlmNGFRM0psWVhSbFpDQjNhWFJvSUdGcVlYaHNiMkZrTG1sdVptOEFJZjhMVGtWVVUwTkJVRVV5TGpBREFRQUFBQ3dBQUFBQU5nQTJBQUFFeXhESVNhdTlPT3ZOdS85Z0tJNWt5U0VKUVNTSTZVcUtLaFBLV3lMejNOcGltcXNKbnVnM0U0YUlNaVBJOXdzcVBUamlUbGt3cUF3RlRDeFhleFlHczBIMmdnSk9MWUxCUURDeTVnd213WXg5SkpyQXNzSFFYc0tyOUNGdU0zQWxjakowSUFkK0JBTUhMbWxySkFkdUJvNVBsNWlabXB1Y25aNmZjV3FJbUpDamFIT1poaXFtRkl1QWw2NFpzWml6RjZvRXJFSzN1Uk9sbTc2Z3djTER4TVhHeDhYQWo2SWt1NCtvSXJVazBoL1UwV0Vqem5IUUlzcWhrY2pCM3NuY3hkYkM1K0xseWN6aDdrOFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRNRU1oSnE3MDQ2ODI3LzJBb2ptUnBubVZoRUlSUm9HY3hzT3p3d3VSS3N3Wk83anZmQ0VnVGluUzduaEYwbU5FR2h3c2l3VW9nbHBTRHpoQzFLSWlLa1dBd0VKZ1FSTllWSk5pWlNkUjBJdVNzbGRKRlVKMHd1T01KSVcwMGJ5TnhSSE9CWklRamFHbHJXQnhmUUdHUUhsTlZqNVdhbTV5ZG5wOUxZMldib29zV2dpeW1RcWdFcWhON2ZaQ3dHYk95TzdFWHJLNDR1aHFscElxZ3dzUEV4Y2JIeU1lL0tNc2l2U2JQZExjbnRkSlAxTlBPYmlmUmlhUE13Y25DemNyYnlOWEc2TVhkeHVUaTd6NFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRPRU1oSnE3MDQ2ODI3LzJBb2ptUnBubWlxQXNJd0NLc3BFRFFCeCtOUUV3T2U3ejFmYUZhN0NVR3QxMUZZTU5BTUJWTFNTQ3JvYW9Qb2NFY1ZPWGNFZytoS0M1TEF0VEhRaEthSmlMUnU2THNUdjEzeTBJSE1PeXc5QjE4R2ZuK0Zob2VJaVlvWkNBazBDUWlMRmdwb0NobFRSd2h0QkpFV2NEWkNqbTBKRjN4bU1adHVGcVpDcVFRWG4za29vbWlrc0hpWm01MlNBSlJnbHJ3VGpZKzd3Y2JIeU1uS0U1Z296VzljSjdFL1dDZXNhdFVtMTF0RjB0RWp6eks0eTRuaHh0UEkyOGJxd2VqSTV1VHhKaEVBSWZrRUNRb0FBQUFzQUFBQUFEWUFOZ0FBQk1zUXlFbXJ2VGpyemJ2L1lDaU9aR21lYUtvQ3dqQUlxeWtRTkFISDQxQVRBNTd2UFY5b1Zyc0pRYTNYY1lsS0dtV3VKM0luRlJGcDFZNnVGaXh0YVYzUWwzY2FoejlYMnltZDdUaFRiNlo4VHEvYjcvaTh2R0NnR1FvYWNVSUZab0FYYkVkOU93UUdHR1pIaXpXT1FKQ1JCQmlJUW9vN2paaFJTd2RtQjNvVUI0b0dvNlNxcTZ5dE1RZ0pOQWtJckFxUkNpT0NJd2lXQkxSVFJTV3hsZ2toanlTOU5NYVV5TWxEVk1LOXhVT2ZKYnlXdjNxMmk3aEx1aFd3c3RsQ21hdkg1c3lyNWVyVnJ1NDRFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWlaY2dVR05BWUZKSk1pQldhZ1E0TWxuVHNFQmlLTElxczFya0Ftc1RSV3FDU3FPNjFXa1JrSUNUUUpDQmNIWmdkSENyRUt4cW9HeVVJSXRnVEZlc0syQ1h2VXQzcmNCSHZZc2RwNjA3Yldlc3VyelpYQncrZ2lFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWdTQ0FrMENRaVdDanMwQ3BRSW9qV2ZKWk1kbktjRUNhcURJSzQxWGtBaHREUzJYQ0d0cDdBa2p4Nm1ycW5Ca1NLaG9xUVhCUVkwQmdWTG01M0dGUVZtMHBUUG9nYVZ0Tit1bGR3NzNwUUhaZ2VXQjl3RzZwa29FUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2dktVU0Nsa0RnTFFvN05BcC9Fd2lDTlg1Q2NSWjdpQVFKaTFRWGp6VkNacFNWQkpkQUY0NklrVDVzRjRlUGlxSlJHWUdDaElXR2puMnVzck8wdFhZRkJqUUdCYlFGWnJ4UVNpSzVnZ1l5a3lHVkpwakpqOHVkSWNRN3hpV2pJUWRtQjJ1cEl3ZkVCdHEySG95ejFyUE01OURseUxUazR1OHBFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3a1JDVm9Db1dtOWhCTEZqcWFBZGhEVEdyUGtOSDZTV1VLQ3UvTjJ3cldTcmhiOG9HbHFZQWljSFpPSU5ETUhHOTdlWFhvZFVsTlZWbGRnUzRhS2k0eU5qbzhGQmpRR0JZOFhCV3MwQTVWUVhSbVNVd2FkWlJob1VKazhwV0duY2hlZ082SkNlRFlZQjZnREIxYWVHUWVnQnJtV3djTER4TVhHeDF5QUtic2lzNEVnemo5c0o3ZlNtdFN0UTZReTI4M0tLTXpJamVIRTBjYlY1OW5sM2NYazR1OG9FUUE3KTtcbn1cblxuIiwiLyogQmFjYXVzZSB3ZSB1c2UgY2hlY2tib3hlcyB3aXRob3V0IGxhYmVscywgYWxpZ24gdGhlbSB3aXRoIG90aGVyIHdpZGdldHMuICovXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgIG1hcmdpbjogOXB4IDA7XG59XG5cbi5teC1jaGVja2JveCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG59XG5cbi5mb3JtLXZlcnRpY2FsIC5mb3JtLWdyb3VwLm14LWNoZWNrYm94IGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5mb3JtLXZlcnRpY2FsIC5mb3JtLWdyb3VwLm14LWNoZWNrYm94LmxhYmVsLWFmdGVyIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLm5vLWNvbHVtbnMge1xuICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xufVxuXG4ubXgtcmFkaW9idXR0b25zLmlubGluZSAucmFkaW8ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG59XG5cbi5teC1yYWRpb2J1dHRvbnMgLnJhZGlvIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgLyogUmVzZXQgYm9vdHN0cmFwIHJ1bGVzICovXG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLm14LXJhZGlvYnV0dG9ucyAucmFkaW8gbGFiZWwge1xuICAgIC8qIFJlc2V0IGJvb3RzdHJhcCBydWxlcyAqL1xuICAgIHBhZGRpbmctbGVmdDogMDtcbn1cblxuLmFsZXJ0IHtcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XG59XG5cbi5teC1jb21wb3VuZC1jb250cm9sIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xufVxuXG4ubXgtY29tcG91bmQtY29udHJvbCBidXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG59XG5cbltkaXI9XCJydGxcIl0gLm14LWNvbXBvdW5kLWNvbnRyb2wgYnV0dG9uIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbiIsIi5teC10b29sdGlwIHtcbiAgICBtYXJnaW46IDEwcHg7XG59XG4ubXgtdG9vbHRpcC1jb250ZW50IHtcbiAgICB3aWR0aDogNDAwcHg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbn1cbi5teC10b29sdGlwLXByZXBhcmUge1xuICAgIGhlaWdodDogMjRweDtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEdBQVlBTVFkQUtYWjhuZkY2NFRMN1F1WDNGZTQ1emFxNGhPYjNmTDYvZnI5L3JyaTlkWHQrWnJVOEN5bTRVbXk1Y0hsOXVQeisySzg2T2oxL056dytyRGQ5TTNxK0pEUTcyckE2aU9pMyszNC9FQ3U0OGpvOXgyZjNnV1YyLy8vL3dBQUFBQUFBQ0gvQzA1RlZGTkRRVkJGTWk0d0F3RUFBQUFoL3d0WVRWQWdSR0YwWVZoTlVEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVFF3SURjNUxqRTJNRFExTVN3Z01qQXhOeTh3TlM4d05pMHdNVG93T0RveU1TQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRnZ0tFMWhZMmx1ZEc5emFDa2lJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZSVUpGTmtVNE5FWkNORVZETVRGRk9EazNNREJCTlVVMVJVTTRRamczUVRVaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlJVSkZOa1U0TlRCQ05FVkRNVEZGT0RrM01EQkJOVVUxUlVNNFFqZzNRVFVpUGlBOGVHMXdUVTA2UkdWeWFYWmxaRVp5YjIwZ2MzUlNaV1k2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRwRlFrVTJSVGcwUkVJMFJVTXhNVVU0T1Rjd01FRTFSVFZGUXpoQ09EZEJOU0lnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBGUWtVMlJUZzBSVUkwUlVNeE1VVTRPVGN3TUVFMVJUVkZRemhDT0RkQk5TSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QZ0gvL3YzOCsvcjUrUGYyOWZUejh2SHc3Kzd0N092cTZlam41dVhrNCtMaDROL2UzZHpiMnRuWTE5YlYxTlBTMGREUHpzM015OHJKeU1mR3hjVER3c0hBdjc2OXZMdTZ1YmkzdHJXMHM3S3hzSyt1cmF5cnFxbW9wNmFscEtPaW9hQ2ZucDJjbTVxWm1KZVdsWlNUa3BHUWo0Nk5qSXVLaVlpSGhvV0VnNEtCZ0g5K2ZYeDdlbmw0ZDNaMWRITnljWEJ2Ym0xc2EycHBhR2RtWldSalltRmdYMTVkWEZ0YVdWaFhWbFZVVTFKUlVFOU9UVXhMU2tsSVIwWkZSRU5DUVVBL1BqMDhPem81T0RjMk5UUXpNakV3THk0dExDc3FLU2duSmlVa0l5SWhJQjhlSFJ3Ykdoa1lGeFlWRkJNU0VSQVBEZzBNQ3dvSkNBY0dCUVFEQWdFQUFDSDVCQVVFQUIwQUxBQUFBQUFZQUJnQUFBVWNZQ2VPWkdtZWFLcXViT3UrY0N6UGRHM2ZlSzd2Zk8vL3dPQXJCQUFoK1FRRkJBQWRBQ3dBQUFBQUFRQUJBQUFGQTJBWEFnQWgrUVFGQkFBZEFDd1VBQXdBQVFBQ0FBQUZBeURUaEFBaCtRUUZCQUFkQUN3VEFBc0FBZ0FHQUFBRkMyQVhkRnhuZE1UUU1WMElBQ0g1QkFVRUFCMEFMQkVBQ3dBRUFBZ0FBQVVSWUNjMllpbHlvcldkVm1jTnA4aTBYUWdBSWZrRUJRUUFIUUFzRHdBT0FBWUFCZ0FBQlE5Z0ozYUJNWjRqaDQ0V0I0bkZjSVlBSWZrRUNRUUFIUUFzRFFBUEFBZ0FCZ0FBQlJGZ0o0NGRSSGJCcVlvcEdRd2NPUmhxQ0FBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRkxXQW5qbVJwbm1pcXJtenJ2bkFzejNSdDMzaXVrOEpnRHdRYlIyaWhCVGlOV1c4WTR6aDlHaGxnUnkyRkFBQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZNMkFuam1ScG5taXFybXpydm5Bc3ozUnQzMmh6YzN0U0M3emFZT2VvY1NBMFlNWlZJUWtHd1JhUVE2VjJpaklBYnFzS0FRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZObUFuam1ScG5taXFybXpydm5Bc3ozUnQzMmh6Yy90VVY3eWFJV01MMGppRVZRVUZMS3dDSEVPcFlqQ3lNcHlzbGloYjRMNnJFQUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGT21BbmptUnBubWlxcm16cnZuQXN6M1J0MzJoemN6dFFWN3phcG1BTG1vQXNqZzdGTUI0NWpGV0RzeWxWTnM1VmdjUHRFbU8rQ202c0NnRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCVDlnSjQ1a2FaNW9xcTVzNjc1d0xNOTBiZDhvY1hPQ3plMm14c2ExWVp4K0xRN2cxRUNxT0prVWc3TkljWXlxNXJDMGdicW1uSENZc1lRdGU3aDBLZ1FBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQlVSZ0o0NWthWjVvcXE1czY3NXdMTTkwYmQ4b1lRWXdKNVNjbmluNElwSVlGOWNsV1ZvWVY1ekZLZk5FY1RLcFN4WElURkc3SXkyMnhlQ1l6eGNwVFBxajRONm9FQUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGU21BbmptUnBubWlxcm16cnZuQXN6M1ROYm5iQXdZUzV2NXdBcWZKekZVZEhWckt6WWJnWU9OK2t4YW1jQ2dQV29KRGFaRk9EYUtyQWNaWVlIRzVydzJtN04xWllSUmkzMlZjaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVlBZQ2VPWkdtZWFLcXViT3UrY0N6UDVVYlFJb2QzZ3I3N3JodkpBbXh4TEtVaVM5bmhURjVNQThQRk1KaDZMbzdneEJpd0JsUFV4cHNhYkZZTVRwaVVYcXNFQm81OGJ0akN0aGI3YnI4S0FRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZVMkFuam1ScG5taXFybXpydmpETFhERXBjRFZwWlBtSTk1MGJVUFJ6UVVxUVlvdHpKQ2xaejhsenhabVVEQVZYd1hDYW9yeWRDM2Rsb0tFTTQzTWFkZUZrU3dXT2VSVXdjTzU0UXlBbU9BcUdnQzBoQUNINUJBVUVBQjBBTEFBQUFBQVlBQmdBQUFWWFlDZU9aR21lYUtxdWJMdHVsbnNhaG14dXRVMEduRjRPRFIrcEp4VHhpaUpDemhYNzJRYUVIZEUxSFZWWkhNQXY0OG9NVE1jV0ozRENzUXliMUdBNSs2bzJIRzRwdzBtekFnTU9aNURmazIwQlVYOUloQzBoQUNINUJBa0VBQjBBTEFJQUF3QVVBQk1BQUFVL1lDZUsxdENNYUpweWhPcU93L2JPOUd6VmM0dnY5YzJuc2w5QVpQaDFpajZqY3JRUW5YYlBEc1E0SFFWcFYxUld0VTFGUjE5WDlWZ1VqV20rWkNvRUFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVmJZQ2VPWkdtZWFLcU9GckdpeE1CeHpHc2FuR3VidzdhZkJ0K3ZST0FNVGJsanlhaGtNWnVkaG5BWEtFbUhtOFp5K0JRdHVpL09ZcWw3RlUvZ1ZQSTJUVzBNcVo1cU0xamh5cU1pM0R6amJEWjllRFlRRFZwalVJZy9JUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGWUdBbmptUnBubWlxaWxXWFpjUnFFaHczWE5jZ2t3WUg3U2ZPQlhneURJa2xHdExrVzVZNFRoSkJGeFZsamtCQjZZcThaRXBVWUpnRkpYSmFwT1lPVXBhMlY1eVl5U2k3R0ZKQzFlVmRWSlBZZHpJME5qZ0ROWEpFQkYrSVZZMUFJUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGWldBbmptUnBubWlxaWtKWEZNUnFOaHhuTUlWUngvTEFXYWFBck1OaERGRUQ0M0hHV1o1K3pwS2dHUzBacXFTQ2Npa2NhWjA0RXVHNk5QQkcxR01hRFJ4YTFpS2F1bkZLeWhpRFZGSEZnSnQ4YlNSdmVUSTBOZ3dNT2h4MFRnUXZIUzFZa2xFaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVm1ZQ2VPWkdtZWFLcUtRY01VeldwbUhMZDF4VlpuY2pjTUFWUGdwMXB3Q2lyR0RUVkE5azZad1JQRm1aNENWV3Vwc2RTT1h0cmdWMXRna0xqV1RZeVVmYlpISExFTU81UDJCanhUVTFhd240NHFCVzhtQzBSQ2hpczBOZ1U1TzFZdFptdGVrNU1oQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFWbllDZU9aR21lYUtxS1FYWmQyV29XSEhkMURWTVhjc1VOSjRHQnMrTHdVclFLeWlpam5RcEFXY2R3NGdTa3FBQVJlM0p4VDdkdngwS0NmYjBqTk5aTTJtTGRJeXRXTzR2S0JzY1NjK1ZjNXA5d1ZYWWtBUU9CS0RRMkdTNDdYeTB2SFZkaWs1UWlJUUFoK1FRRkJBQWRBQ3dBQUFBQUdBQVlBQUFGYm1BbmptUnBubWlxaWxheGJjVnFNaHpIZEExdHl3Sm5uQUlEUjZEaVpGUVpUc29vUzU0WVAxbkhjQ3NOcFNJbHlhTEZjZ0trUWhWcjJwQkZpOUttY1c2WVIrSXpJMGJxU3UxWm9qZFJnbUtwSjB3clRpaUNLSVFvUFZFbFFYZ29PZ3dOT1RWalVpMW1kR2VhbXlVaEFDSDVCQVVFQUIwQUxBSUFBZ0FVQUJRQUFBVmJZQ2VPa01HZG5BR05MSWx5dy9DdWJjZWNXWjJkVEhzYk5aYXBKNEtrZ2kwVDdZU3NNWTI1Sm10WDRraWRKdXVWaFJwc1dUTFlkeFRXamsrbXNTZ0ZIVk03ekcvY0NMd3FSei9wMElmVDhZSkdYV1VjTkVoVktDbzFJUUFoK1FRRkJBQWRBQ3dCQUFFQUZnQVdBQUFGWjJBbmptUFZCV1NxbmdaSGNnYTZqc2JyMG5OMTEyVEZjNmFVNnpZYnBtckVXY2ZGTzRrRXloSFUyYWsxbzlYc0VydHlCYm1xWUpKN1E0MnhMaG00MlBsaVRUc3QxeXBTYzZkcUpGa3VHazVWQWtZcE9pSlhiVDlLVnh4Smhpb0JMUytOVVNaMktpRUFJZmtFQ1FRQUhRQXNBUUFCQUJZQUZnQUFCV3BnSjQ2aWxWMVgxazFrUzE2Y3kxMHUyY1MxeURVMU0zSUVFZ0hYOGRsR3dWcXl3L3ZsY2tSYVovbE1TbVBFcDY0VHM0aW8ycVJKcXoyUm42aHpMcVd1cWI1dEtyWTk3MGpCU3BHVTI5Nk9tbE01UzRBaVJseFVReU9HTmxreWhDNHdNbnRrSmlncUxDNGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVYrWUNlT1pHbWVwVlZjVjlaTjZMbHhkRTF2OGRqWWZOM0VEQnVFQkxFeFRqdmE4RlNrL1VxMW5DaEttbkdXdVNadVJKVjJ1aGFsbDh1eGlESzBNZG5WdWFUVlg4NUY1T2JBNC9NTzJnNm5zZU5ZVWsxbVUyOWVYUjFXZ1NoYUpBdUlLSkFkU1ZlTVBpZEJrRTAwUnlpVVBaZFNWajFiYWhZWkxCbUVkM0FoQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFXQllDZU9aR21lcFZWY1Y5Rk42TGx4ZEUxdjhkallmTjNFakpyQlpLZ3hUanRhVE9BejFYS2lKMm5HRVVDakhOeUlOcngyaXB5UlJlbnRNRGtXVVlGY3ByazZGN2FYZGhIRncrVU9YUzIvdXJkVlpXY2tYR1ZnVTMweE55UUxVamsxQ3lWSmdTZG5IRDhtUVlVa0FtQWNSeWlUUFUxUVZEMWFaU29zQldsNXJoMGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVdDWUNlT1pHbWVwVlZjVjlGTjZMbHhkRTF2OGRqWWZOM0VqTnJGZEtreFRqdk9JRGVnL1VxMFphN1Q1SlJtMXFub1JxSU50WjFpdG1PaGdVYzBpNmhnUG5kb3JuRDc3QldKM1cvT2x6MEd3OUY5VXdCcEloTjFZSGNqV0hRY09GMUtXbFVtU1FNQU1WVlBKVUdISXdCaUhFY29TVDAybVRGWVBZNW5LaXd1TUhodUlRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZlbUFuam1ScG5xV1ZNVXlHdmhjbnovTDFqZzJ0ejgxYnpLNVNabFk0NVRpR20wSFdLOG1TdDg2U1U0cFJvNklhU1JiRURxOGRpd3k3NVZoRVgvS0lLMktNMVIwWm8vMVd5OUYxTWpzTDF2ZjNYaklUSTFaMkhEWmxVRXA1SWtlS0oxTk5KVCtBSTE4Y1JTaEhPelNTTUp5SGNHRXJMUjJEb25BaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVjlZQ2VPWkdtZVpkQXdUSU8rRnlmUDh2V09CRDFjMTBBVHI4SU1Zb0xNQ3FjY3h3YVRBVXUxbXlqR0tWR2xvMmlXUThSMmpGVlJRT2JkQmtRTnpxQXM4bzBZUzNZbnhoREJtV1Y2ZHMzMnVUcGpZV1ZrVzExWVlDUlhYbHBiZUUyQ09Jd25WRThsUWpLR0kyQWNTQzg2UEQ0elhsUTBrbGhuTEg5eWNpRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCWDFnSjQ1a2FaNWwwQlJGZzc0TUo4OHk4NDRFZlhYWlJST3ZqR3h3RWd4a21WT09rd3pLZ0NYa1RTVGtsR0xFcWVob0c4bTBwSzhvSUFaM1pBRlJnN016ZDN5akF0UE40eFJFY25yOUxtTFQ0V05sWUdoZUhBSnVnbGhtWEZGelUxVW1TMDBvVlZBbFZWa2xSbEl2T2hrOU5HQXhORE5kWmlvZExYcDZJUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGZ0dBbmptUnBucVhRRkZrbm9HakJ6ZlJjd0NORUR4M1JaUU1hQk5hWWJWQ2JXZU9rNCtCNnM5UE05K3hFU2JKanRaTzhqYTViQUZqQTRXMUZ3WmVJMHpyL25LSU1oK3BteCtGdWdoM2FQc3ZwWlc0ZFFTUmdXNFpaWjEwbFUxVjZlRG1OTUk5REprVWNXaVpKa0ZJekF4aytRRUpWTWpVMFhtY3ZHYUNDclIwaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVjZZQ2VPWkdtZXBkQmxHWUcrR1NmUGN2YU8xcnk1UWJmTmxoZEJWa0FWWks2VDdOWUpMRTJ5SHJQekhNV0swODdSTnFwbXF3TE9KanY2cVVTY0pIbG81WkJKSEc1TVNuWnkyZThPSGoxK203dHViMTVYWkZzbFVWK0JKRG1LS0U0Y1FTWkRIRmdtUjJrM09qd0VQMTR3TkRSY1pDb3NIV2Q1YnlFQUlma0VDUVFBSFFBc0FBQUFBQmdBR0FBQUJYcGdKNDVrYVo1bDFXVk5wNkpueHMzMG5NRmpRQmR1RnhTMEFJd3dHeFpSbkFGT05PQUlTOGRsSnlxU0VhUWk0bTFFbFVZckhCNVdCQ1J4eG1hSXFNRjVqY0d0RGh2TmpVK2ZZOTBJTEI2WHVXZG9WRlpqV2xDQlhvaG1Ta3ROZUNSRUhGY25rWk1uT2pNOEtqOUJVakkxTkZ0b0VBMHRiblJqSVFBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRmdHQW5qbVJwbmlaRWRCYnFObHdzeDQwN0NyR3hkbE5IR0RHQkM4SVp1QUlEam90anNJbUF3bExST1VxV1lBR3FLTUNwalpqYUVaREUyWVU3U3BFbGZhNXdXajcydVN3aXlNTjBFYWR5N3JoSEMzZGFIQXRmVFdkakkxaGhYRjVmUmxwV0ptQk9pU2xGV1NkSUhCQXVPRXc3UFQ4eFdqQXpNbzVoRml0d2ZYMGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVYxWUNlT1pHbWVwa1YwQWVvU1hDekhxeXRXOFVWTzNSWGJIWTdCWnVCWVRqZ2QwSGNTQWtmRkV1dzVXbkJxSW82UzJ1T1FPQzF1ZGhUd2lqc1RzR2g2RG1MTlozaTVIUXpYei9PUjlzd2NzYmxYSlU1VVVTVkpUejRWS0VJTEtBdEZSeWc0ZXlNOFBuQTJNRE15V0Z3QkJDc0FkR0loQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFWellDZU9aR21lWmdCMUFlb1NBeWZQQStHU2NWWldHVGZjQWM3bGR1RzBUaHpkclZQZ25BYkRwZWp5SXhHYzBoSEhOaG9vczUxTVZZUUZrMGRCcy9ZSUtaczVxN082QXhlbDUyNU9SVjF4ZTlWaVZtNVNXeVZRWUZSSUJWSk5LRUZSS0VWSEtEazdQV00zTURNMFhHWXFjWE5xSVFBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRmQyQW5qbVJwbm1iUVdkMkVvdERBY1lZeEQ5QkxEZ05oRWp4ZGdKUFJaVGlxRThlbkUzRk9nMkpUbEJtVVl0TmRidFRMam9Da3AzY2s3Z2pLWTQ1Z1pCaXpSNWEydTJOZ09lZWQ4Z1R0NWJoRVhXTmdPMjQ0SlZGZVZTWUxTMU1FZkdGU0tFZE5QRXdrUUZaVE1UTTFOMXRqYXl4L2VGa2hBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVZvWUNlT1pHbWVwdEFGYU50WkJtY3dUR3hZN21nWXA3QzdBZzdFQmVHMGpMa1ZzbVFZSmpzUUhnbjIxT0YwVlpKVXRNd3VmVm1kU3NRSWswZUJzcG5CRW0yejcyNjFheGhYd1NNcTNOU3NSazl5UnloQlRpaEZkaWMvS1lvNU1ESTBObVlkS20yU1dTRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCV3hnSjQ1a2FaNW0xUVZvdXhvYzB6UU1aN0N1YURBb1k3Z1ZUazRnUkJWekhjN0VaQkFnUllJZktjQjdpcW9qcVZWSE9tNlBGZXlXb1JJMXRxT3pDSWZ1cUsvdERubmt0WG9OaTdaMjFXYXdkVTVQVVNkMUxZVWlRWUVvUkRrN1BYc3RBVEF5TkRaL1ZwZHhUeUVBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQldOZ0o0NWthWjVtMVFsbzJ3V2IwWFJRWTJ5Qk8yN3oyV3c2ZzY0alJCa2NRK0xFQkV5S21xTkF6emw5T2tsUTRuVlVGRldwcXRWMkJCa0p5bU8wZDl5cGRxL3ZyRE1yM1g2MThOUGJaVmlhRm50NkN5NDhLRDlKTURJME5qaGpLaXhzV3lFQUlma0VDUVFBSFFBc0FBQUFBQmdBR0FBQUJWaGdKNDVrYVo3bTBnbG91MjdGMmxuRjVwSTJhdVV0M3dNb24wc29JZzVMQXN1dHBNUXRUYjdZa3lRVk5hZldFUXRMMnNxNDN5ejQycWxpemNhYmtMeGtkOUxCRTd5VUJzeUxhcmYxUG9JcFdUVmdJaXdxZ2xnaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVlpZQ2VPWkdtZXA5QUJhTnN4aE5xcGpPeSt0c25jeGQzMUtLQlBTTnI1UnNaUjdyaE1Ia1ZPd3BQVUlDMmZyT21wSXVKcVI5N1pWenlTZnF2SXNaTThiV3JYSXFKTFRxS2I3TVdyU0FCSHdUb0xZbjArWGdwalV5RUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCVkZnSjQ1a2FaNW5oYTVqWm9sSloyVXNTYVBBdlJKMXg2Ty9YdERXSTVZQVJaS3FsVFNLWHMxb2JTSmFTcSttbUlpSzVjcXVVSkd1T2NhYXlqVzBMemtzdFUvdmtwclpxOUNRSFdURzJ1U2JleUVBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQlVsZ0o0NWthWjVuaGE0anBJcE9CN0Vrd2Rwc1FIYzYydSsvMms0NExNcU1MZVF1cHV4TVJJdW05QlNGVGErZGwyaW01R0pMdUdLWUZNeXR5dEt4U2IzeWlpcnU0clA2WllVQUFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVTVZQ2VPWkdtZUo0Q3VZMUNxS2l1Nk1ydlVkNjJiOU43dnRaOFBTQ3dtUkxHaU1yVkVKWnZMMzdNcGxGV2hwWnpOaW0zeGxxcGpseFVDQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFVM1lDZU9aR21lNklTdTRtSzY3RmpGTkoyc2Q2M0g4MTdEUHFCdlNDeUtWRVdrY1lrUzZweE1VUys2azFCWDAxT1dCWVhxbE5kVENBQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZMR0Fuam1ScG5taXFvdFBxdm5Bc3oySkxxL2F0Ny96cDlNRGdLQmNqQ284OHhVdXBNNmFjVHRnUGFRb0JBQ0g1QkFVRUFCMEFMQUFBQUFBWUFCZ0FBQVVqWUNlT1pHbWVhS3F1Yk91K2NMeFNjbTNmZUk3VGV0L3p2cUJ3eUFLV2pDOGtNUVFBT3c9PSkgbm8tcmVwZWF0IHNjcm9sbCBjZW50ZXIgY2VudGVyO1xufVxuLm14LXRvb2x0aXAtY29udGVudCAudGFibGUgdGgsXG4ubXgtdG9vbHRpcC1jb250ZW50IC50YWJsZSB0ZCB7XG4gICAgcGFkZGluZzogMnB4IDhweDtcbn1cbiIsIi5teC10YWJjb250YWluZXItcGFuZSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuLm14LXRhYmNvbnRhaW5lci1jb250ZW50LmxvYWRpbmcge1xuICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaE5nQTJBUE1BQVAvLy93QUFBSGg0ZUJ3Y0hBNE9EdGpZMkZSVVZOemMzTVRFeEVoSVNJcUtpZ0FBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQWtLQUFBQUlmNGFRM0psWVhSbFpDQjNhWFJvSUdGcVlYaHNiMkZrTG1sdVptOEFJZjhMVGtWVVUwTkJVRVV5TGpBREFRQUFBQ3dBQUFBQU5nQTJBQUFFeXhESVNhdTlPT3ZOdS85Z0tJNWt5U0VKUVNTSTZVcUtLaFBLV3lMejNOcGltcXNKbnVnM0U0YUlNaVBJOXdzcVBUamlUbGt3cUF3RlRDeFhleFlHczBIMmdnSk9MWUxCUURDeTVnd213WXg5SkpyQXNzSFFYc0tyOUNGdU0zQWxjakowSUFkK0JBTUhMbWxySkFkdUJvNVBsNWlabXB1Y25aNmZjV3FJbUpDamFIT1poaXFtRkl1QWw2NFpzWml6RjZvRXJFSzN1Uk9sbTc2Z3djTER4TVhHeDhYQWo2SWt1NCtvSXJVazBoL1UwV0Vqem5IUUlzcWhrY2pCM3NuY3hkYkM1K0xseWN6aDdrOFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRNRU1oSnE3MDQ2ODI3LzJBb2ptUnBubVZoRUlSUm9HY3hzT3p3d3VSS3N3Wk83anZmQ0VnVGluUzduaEYwbU5FR2h3c2l3VW9nbHBTRHpoQzFLSWlLa1dBd0VKZ1FSTllWSk5pWlNkUjBJdVNzbGRKRlVKMHd1T01KSVcwMGJ5TnhSSE9CWklRamFHbHJXQnhmUUdHUUhsTlZqNVdhbTV5ZG5wOUxZMldib29zV2dpeW1RcWdFcWhON2ZaQ3dHYk95TzdFWHJLNDR1aHFscElxZ3dzUEV4Y2JIeU1lL0tNc2l2U2JQZExjbnRkSlAxTlBPYmlmUmlhUE13Y25DemNyYnlOWEc2TVhkeHVUaTd6NFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRPRU1oSnE3MDQ2ODI3LzJBb2ptUnBubWlxQXNJd0NLc3BFRFFCeCtOUUV3T2U3ejFmYUZhN0NVR3QxMUZZTU5BTUJWTFNTQ3JvYW9Qb2NFY1ZPWGNFZytoS0M1TEF0VEhRaEthSmlMUnU2THNUdjEzeTBJSE1PeXc5QjE4R2ZuK0Zob2VJaVlvWkNBazBDUWlMRmdwb0NobFRSd2h0QkpFV2NEWkNqbTBKRjN4bU1adHVGcVpDcVFRWG4za29vbWlrc0hpWm01MlNBSlJnbHJ3VGpZKzd3Y2JIeU1uS0U1Z296VzljSjdFL1dDZXNhdFVtMTF0RjB0RWp6eks0eTRuaHh0UEkyOGJxd2VqSTV1VHhKaEVBSWZrRUNRb0FBQUFzQUFBQUFEWUFOZ0FBQk1zUXlFbXJ2VGpyemJ2L1lDaU9aR21lYUtvQ3dqQUlxeWtRTkFISDQxQVRBNTd2UFY5b1Zyc0pRYTNYY1lsS0dtV3VKM0luRlJGcDFZNnVGaXh0YVYzUWwzY2FoejlYMnltZDdUaFRiNlo4VHEvYjcvaTh2R0NnR1FvYWNVSUZab0FYYkVkOU93UUdHR1pIaXpXT1FKQ1JCQmlJUW9vN2paaFJTd2RtQjNvVUI0b0dvNlNxcTZ5dE1RZ0pOQWtJckFxUkNpT0NJd2lXQkxSVFJTV3hsZ2toanlTOU5NYVV5TWxEVk1LOXhVT2ZKYnlXdjNxMmk3aEx1aFd3c3RsQ21hdkg1c3lyNWVyVnJ1NDRFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWlaY2dVR05BWUZKSk1pQldhZ1E0TWxuVHNFQmlLTElxczFya0Ftc1RSV3FDU3FPNjFXa1JrSUNUUUpDQmNIWmdkSENyRUt4cW9HeVVJSXRnVEZlc0syQ1h2VXQzcmNCSHZZc2RwNjA3Yldlc3VyelpYQncrZ2lFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWdTQ0FrMENRaVdDanMwQ3BRSW9qV2ZKWk1kbktjRUNhcURJSzQxWGtBaHREUzJYQ0d0cDdBa2p4Nm1ycW5Ca1NLaG9xUVhCUVkwQmdWTG01M0dGUVZtMHBUUG9nYVZ0Tit1bGR3NzNwUUhaZ2VXQjl3RzZwa29FUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2dktVU0Nsa0RnTFFvN05BcC9Fd2lDTlg1Q2NSWjdpQVFKaTFRWGp6VkNacFNWQkpkQUY0NklrVDVzRjRlUGlxSlJHWUdDaElXR2puMnVzck8wdFhZRkJqUUdCYlFGWnJ4UVNpSzVnZ1l5a3lHVkpwakpqOHVkSWNRN3hpV2pJUWRtQjJ1cEl3ZkVCdHEySG95ejFyUE01OURseUxUazR1OHBFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3a1JDVm9Db1dtOWhCTEZqcWFBZGhEVEdyUGtOSDZTV1VLQ3UvTjJ3cldTcmhiOG9HbHFZQWljSFpPSU5ETUhHOTdlWFhvZFVsTlZWbGRnUzRhS2k0eU5qbzhGQmpRR0JZOFhCV3MwQTVWUVhSbVNVd2FkWlJob1VKazhwV0duY2hlZ082SkNlRFlZQjZnREIxYWVHUWVnQnJtV3djTER4TVhHeDF5QUtic2lzNEVnemo5c0o3ZlNtdFN0UTZReTI4M0tLTXpJamVIRTBjYlY1OW5sM2NYazR1OG9FUUE3KSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDMycHggMzJweDtcbn1cbi5teC10YWJjb250YWluZXItdGFicyB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLm14LXRhYmNvbnRhaW5lci10YWJzIGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ubXgtdGFiY29udGFpbmVyLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQ6ICNmMmRlZGU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGNvbG9yOiAjYjk0YTQ4O1xuICAgIHRvcDogMHB4O1xuICAgIHJpZ2h0OiAtNXB4O1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB6LWluZGV4OiAxOyAvKiBpbmRpY2F0b3Igc2hvdWxkIG5vdCBoaWRlIGJlaGluZCBvdGhlciB0YWIgKi9cbn1cbiIsIi8qIGJhc2Ugc3RydWN0dXJlICovXG4ubXgtZ3JpZCB7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47IC8qIHRvIHByZXZlbnQgYW55IG1hcmdpbiBmcm9tIGVzY2FwaW5nIGdyaWQgYW5kIGZvb2JhcmluZyBvdXIgc2l6ZSBjYWxjdWxhdGlvbnMgKi9cbn1cbi5teC1ncmlkLWNvbnRyb2xiYXIsIC5teC1ncmlkLXNlYXJjaGJhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uLFxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIC5teC1idXR0b24ge1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIC5teC1idXR0b24gKyAubXgtYnV0dG9uLFxuLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uICsgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuM2VtO1xufVxuXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXNlYXJjaC1jb250cm9scyAubXgtYnV0dG9uICsgLm14LWJ1dHRvbixcbltkaXI9XCJydGxcIl0gLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uICsgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjNlbTtcbn1cblxuLm14LWdyaWQtcGFnaW5nYmFyLFxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG4ubXgtZ3JpZC10b29sYmFyLCAubXgtZ3JpZC1zZWFyY2gtaW5wdXRzIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBmbGV4OiAxO1xufVxuXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXRvb2xiYXIsXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXNlYXJjaC1pbnB1dHMge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAwcHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXBhZ2luZ2JhcixcbltkaXI9XCJydGxcIl0gLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIHtcbiAgICBtYXJnaW4tbGVmdDogMHB4O1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbn1cblxuLm14LWdyaWQtcGFnaW5nLXN0YXR1cyB7XG4gICAgcGFkZGluZzogMCA4cHggNXB4O1xufVxuXG4vKiBzZWFyY2ggZmllbGRzICovXG4ubXgtZ3JpZC1zZWFyY2gtaXRlbSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLm14LWdyaWQtc2VhcmNoLWxhYmVsIHtcbiAgICB3aWR0aDogMTEwcHg7XG4gICAgcGFkZGluZzogMCA1cHg7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbltkaXI9XCJydGxcIl0gLm14LWdyaWQtc2VhcmNoLWxhYmVsIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LWdyaWQtc2VhcmNoLWlucHV0IHtcbiAgICB3aWR0aDogMTUwcHg7XG4gICAgcGFkZGluZzogMCA1cHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4ubXgtZ3JpZC1zZWFyY2gtbWVzc2FnZSB7XG4gICAgZmxleC1iYXNpczogMTAwJTtcbn1cblxuLyogd2lkZ2V0IGNvbWJpbmF0aW9ucyAqL1xuLm14LWRhdGF2aWV3IC5teC1ncmlkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbiIsIi5teC1jYWxlbmRhciB7XG4gICAgei1pbmRleDogMTAwMDtcbn1cblxuLm14LWNhbGVuZGFyLW1vbnRoLWRyb3Bkb3duLW9wdGlvbnMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuLm14LWNhbGVuZGFyLCAubXgtY2FsZW5kYXItbW9udGgtZHJvcGRvd24ge1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4ubXgtY2FsZW5kYXItbW9udGgtY3VycmVudCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ubXgtY2FsZW5kYXItbW9udGgtc3BhY2VyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAwcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi5teC1jYWxlbmRhciwgLm14LWNhbGVuZGFyLW1vbnRoLWRyb3Bkb3duLW9wdGlvbnMge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JleTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbiIsIi5teC1kYXRhZ3JpZCB0ciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubXgtZGF0YWdyaWQgdHIubXgtZGF0YWdyaWQtcm93LWVtcHR5IHtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi5teC1kYXRhZ3JpZCB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm14LWRhdGFncmlkIHRoLCAubXgtZGF0YWdyaWQgdGQge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG59XG5cbi8qIGhlYWQgKi9cbi5teC1kYXRhZ3JpZCB0aCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyAvKiBSZXF1aXJlZCBmb3IgdGhlIHBvc2l0aW9uaW5nIG9mIHRoZSBjb2x1bW4gcmVzaXplcnMgKi9cbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7XG59XG4ubXgtZGF0YWdyaWQtaGVhZC1jYXB0aW9uIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ubXgtZGF0YWdyaWQtc29ydC1pY29uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgcGFkZGluZy1sZWZ0OiA1cHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kYXRhZ3JpZC1zb3J0LWljb24ge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBhZGRpbmc6IDAgNXB4IDAgMDtcbn1cbi5teC1kYXRhZ3JpZC1jb2x1bW4tcmVzaXplciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtNnB4O1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBjdXJzb3I6IGNvbC1yZXNpemU7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kYXRhZ3JpZC1jb2x1bW4tcmVzaXplciB7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogLTZweDtcbn1cblxuLyogYm9keSAqL1xuLm14LWRhdGFncmlkIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRkIHtcbiAgICBib3JkZXItdG9wOiBub25lO1xufVxuLm14LWRhdGFncmlkIHRib2R5IHRyOm50aC1jaGlsZCgybisxKSB0ZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTtcbn1cbi5teC1kYXRhZ3JpZCB0Ym9keSAuc2VsZWN0ZWQgdGQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7XG59XG4ubXgtZGF0YWdyaWQtZGF0YS13cmFwcGVyIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ubXgtZGF0YWdyaWQgdGJvZHkgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDE2cHg7XG4gICAgbWF4LWhlaWdodDogMTZweDtcbn1cbi5teC1kYXRhZ3JpZCBpbnB1dCxcbi5teC1kYXRhZ3JpZCBzZWxlY3QsXG4ubXgtZGF0YWdyaWQgdGV4dGFyZWEge1xuICAgIGN1cnNvcjogYXV0bztcbn1cblxuLyogZm9vdCAqL1xuLm14LWRhdGFncmlkIHRmb290IHRoLFxuLm14LWRhdGFncmlkIHRmb290IHRkIHtcbiAgICBwYWRkaW5nOiAzcHggOHB4O1xufVxuLm14LWRhdGFncmlkIHRmb290IHRoIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbn1cbi5teC1kYXRhZ3JpZC5teC1jb250ZW50LWxvYWRpbmcgLm14LWNvbnRlbnQtbG9hZGVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDkwJTtcbiAgICBhbmltYXRpb246IHBsYWNlaG9sZGVyR3JhZGllbnQgMXMgbGluZWFyIGluZmluaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiAjRjVGNUY1O1xuICAgIGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNGNUY1RjUgMCUsICNGNUY1RjUgNSUsICNGOUY5RjkgNTAlLCAjRjVGNUY1IDk1JSwgI0Y1RjVGNSAxMDAlKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMHB4IDEwMHB4O1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG59XG5Aa2V5ZnJhbWVzIHBsYWNlaG9sZGVyR3JhZGllbnQge1xuICAgIDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwcHggMDsgfVxuICAgIDEwMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTAwcHggMDsgfVxufVxuXG4ubXgtZGF0YWdyaWQtdGFibGUtcmVzaXppbmcgdGgsXG4ubXgtZGF0YWdyaWQtdGFibGUtcmVzaXppbmcgdGQge1xuICAgIGN1cnNvcjogY29sLXJlc2l6ZSAhaW1wb3J0YW50O1xufVxuIiwiLm14LXRlbXBsYXRlZ3JpZC1jb250ZW50LXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5teC10ZW1wbGF0ZWdyaWQtcm93IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG59XG4ubXgtdGVtcGxhdGVncmlkLWl0ZW0ge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ubXgtdGVtcGxhdGVncmlkLWVtcHR5IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xufVxuLm14LXRlbXBsYXRlZ3JpZC1pdGVtLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xufVxuLm14LXRlbXBsYXRlZ3JpZC1pdGVtIC5teC10YWJsZSB0aCxcbi5teC10ZW1wbGF0ZWdyaWQtaXRlbSAubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDJweCA4cHg7XG59XG4iLCIubXgtc2Nyb2xsY29udGFpbmVyLWhvcml6b250YWwge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG59XG4ubXgtc2Nyb2xsY29udGFpbmVyLWhvcml6b250YWwgPiBkaXYge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItd3JhcHBlciB7XG4gICAgcGFkZGluZzogMTBweDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItbmVzdGVkIHtcbiAgICBwYWRkaW5nOiAwO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1maXhlZCA+IC5teC1zY3JvbGxjb250YWluZXItbWlkZGxlID4gLm14LXNjcm9sbGNvbnRhaW5lci13cmFwcGVyLFxuLm14LXNjcm9sbGNvbnRhaW5lci1maXhlZCA+IC5teC1zY3JvbGxjb250YWluZXItbGVmdCA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcixcbi5teC1zY3JvbGxjb250YWluZXItZml4ZWQgPiAubXgtc2Nyb2xsY29udGFpbmVyLWNlbnRlciA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcixcbi5teC1zY3JvbGxjb250YWluZXItZml4ZWQgPiAubXgtc2Nyb2xsY29udGFpbmVyLXJpZ2h0ID4gLm14LXNjcm9sbGNvbnRhaW5lci13cmFwcGVyIHtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cblxuLm14LXNjcm9sbGNvbnRhaW5lci1tb3ZlLWluIHtcbiAgICB0cmFuc2l0aW9uOiBsZWZ0IDI1MG1zIGVhc2Utb3V0O1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1tb3ZlLW91dCB7XG4gICAgdHJhbnNpdGlvbjogbGVmdCAyNTBtcyBlYXNlLWluO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zaHJpbmsgLm14LXNjcm9sbGNvbnRhaW5lci10b2dnbGVhYmxlIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB3aWR0aDtcbn1cblxuLm14LXNjcm9sbGNvbnRhaW5lci10b2dnbGVhYmxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zbGlkZSA+IC5teC1zY3JvbGxjb250YWluZXItdG9nZ2xlYWJsZSA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItcHVzaCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zaHJpbmsgPiAubXgtc2Nyb2xsY29udGFpbmVyLXRvZ2dsZWFibGUge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubXgtc2Nyb2xsY29udGFpbmVyLXB1c2gubXgtc2Nyb2xsY29udGFpbmVyLW9wZW4gPiBkaXYsXG4ubXgtc2Nyb2xsY29udGFpbmVyLXNsaWRlLm14LXNjcm9sbGNvbnRhaW5lci1vcGVuID4gZGl2IHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5teC1zY3JvbGxjb250YWluZXItcHVzaC5teC1zY3JvbGxjb250YWluZXItb3BlbiA+IC5teC1zY3JvbGxjb250YWluZXItdG9nZ2xlYWJsZSxcbi5teC1zY3JvbGxjb250YWluZXItc2xpZGUubXgtc2Nyb2xsY29udGFpbmVyLW9wZW4gPiAubXgtc2Nyb2xsY29udGFpbmVyLXRvZ2dsZWFibGUge1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuIiwiLm14LW5hdmJhci1pdGVtIGltZyxcbi5teC1uYXZiYXItc3ViaXRlbSBpbWcge1xuICAgIGhlaWdodDogMTZweDtcbn1cblxuIiwiLm14LW5hdmlnYXRpb250cmVlIC5uYXZiYXItaW5uZXIge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RmZTZlYTtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSBsaTpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgY29sb3I6ICM3Nzc7XG4gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgYS5hY3RpdmUge1xuICAgIGNvbG9yOiAjRkZGO1xuICAgIHRleHQtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICMzNDk4REI7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xufVxuLm14LW5hdmlnYXRpb250cmVlIC5teC1uYXZpZ2F0aW9udHJlZS1jb2xsYXBzZWQgdWwge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgdWwge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHtcbiAgICBwYWRkaW5nOiA1cHggMDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICBwYWRkaW5nOiA1cHggMDtcbn1cbltkaXI9XCJydGxcIl0gLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHVsIGxpIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB1bCBsaSB7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIHBhZGRpbmctdG9wOiAzcHg7XG4gICAgcGFkZGluZy1ib3R0b206IDNweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB1bCBsaSBpbWcge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4iLCIubXgtbGluayBpbWcsXG4ubXgtYnV0dG9uIGltZyB7XG4gICAgaGVpZ2h0OiAxNnB4O1xufVxuLm14LWxpbmsge1xuICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbiIsIi5teC1ncm91cGJveCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbi5teC1ncm91cGJveC1oZWFkZXIge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gICAgY29sb3I6ICNlZWU7XG4gICAgYmFja2dyb3VuZDogIzMzMztcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4IDRweCAwIDA7XG59XG4ubXgtZ3JvdXBib3gtY29sbGFwc2libGUgPiAubXgtZ3JvdXBib3gtaGVhZGVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZ3JvdXBib3guY29sbGFwc2VkID4gLm14LWdyb3VwYm94LWhlYWRlciB7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuLm14LWdyb3VwYm94LWJvZHkge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cbi5teC1ncm91cGJveC5jb2xsYXBzZWQgPiAubXgtZ3JvdXBib3gtYm9keSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbi5teC1ncm91cGJveC1oZWFkZXIgKyAubXgtZ3JvdXBib3gtYm9keSB7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgNHB4IDRweDtcbn1cbi5teC1ncm91cGJveC1jb2xsYXBzZS1pY29uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG59XG5bZGlyPVwicnRsXCJdIC5teC1ncm91cGJveC1jb2xsYXBzZS1pY29uIHtcbiAgICBmbG9hdDogbGVmdDtcbn1cbiIsIi5teC1kYXRhdmlldyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm14LWRhdGF2aWV3LWNvbnRyb2xzIHtcbiAgICBwYWRkaW5nOiAxOXB4IDIwcHggMTJweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVlO1xufVxuXG4ubXgtZGF0YXZpZXctY29udHJvbHMgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuXG4ubXgtZGF0YXZpZXctY29udHJvbHMgLm14LWJ1dHRvbiArIC5teC1idXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjNlbTtcbn1cblxuLm14LWRhdGF2aWV3LW1lc3NhZ2Uge1xuICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbn1cbi5teC1kYXRhdmlldy1tZXNzYWdlID4gZGl2IHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG4ubXgtZGF0YXZpZXctbWVzc2FnZSA+IGRpdiA+IHAge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi8qIFRvcC1sZXZlbCBkYXRhIHZpZXcgaW4gd2luZG93IGlzIGEgc3BlY2lhbCBjYXNlLCBoYW5kbGUgaXQgYXMgc3VjaC4gKi9cbi5teC13aW5kb3ctdmlldyAubXgtd2luZG93LWJvZHkge1xuICAgIHBhZGRpbmc6IDA7XG59XG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRlbnQsXG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LXBsYWNlaG9sZGVyID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDE1cHg7XG59XG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRyb2xzLFxuLm14LXdpbmRvdy12aWV3IC5teC13aW5kb3ctYm9keSA+IC5teC1wbGFjZWhvbGRlciA+IC5teC1kYXRhdmlldyA+IC5teC1kYXRhdmlldy1jb250cm9scyB7XG4gICAgYm9yZGVyLXJhZGl1czogMHB4IDBweCA2cHggNnB4O1xufVxuIiwiLm14LWRpYWxvZyB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogNTAwcHg7XG4gICAgLyogSWYgdGhlIG1hcmdpbiBpcyBzZXQgdG8gYXV0bywgSUU5IHJlcG9ydHMgdGhlIGNhbGN1bGF0ZWQgdmFsdWUgb2YgdGhlXG4gICAgICogbWFyZ2luIGFzIHRoZSBhY3R1YWwgdmFsdWUuIE90aGVyIGJyb3dzZXJzIHdpbGwganVzdCByZXBvcnQgMC4gRWxpbWluYXRlXG4gICAgICogdGhpcyBkaWZmZXJlbmNlIGJ5IHNldHRpbmcgbWFyZ2luIHRvIDAgZm9yIGV2ZXJ5IGJyb3dzZXIuICovXG4gICAgbWFyZ2luOiAwO1xufVxuLm14LWRpYWxvZy1oZWFkZXIge1xuICAgIGN1cnNvcjogbW92ZTtcbn1cbi5teC1kaWFsb2ctYm9keSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG59XG4iLCIubXgtd2luZG93IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiA2MDBweDtcbiAgICAvKiBJZiB0aGUgbWFyZ2luIGlzIHNldCB0byBhdXRvLCBJRTkgcmVwb3J0cyB0aGUgY2FsY3VsYXRlZCB2YWx1ZSBvZiB0aGVcbiAgICAgKiBtYXJnaW4gYXMgdGhlIGFjdHVhbCB2YWx1ZS4gT3RoZXIgYnJvd3NlcnMgd2lsbCBqdXN0IHJlcG9ydCAwLiBFbGltaW5hdGVcbiAgICAgKiB0aGlzIGRpZmZlcmVuY2UgYnkgc2V0dGluZyBtYXJnaW4gdG8gMCBmb3IgZXZlcnkgYnJvd3Nlci4gKi9cbiAgICBtYXJnaW46IDA7XG59XG4ubXgtd2luZG93LWNvbnRlbnQge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm14LXdpbmRvdy1hY3RpdmUgLm14LXdpbmRvdy1oZWFkZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4IDZweCAwIDA7XG59XG4ubXgtd2luZG93LWhlYWRlciB7XG4gICAgY3Vyc29yOiBtb3ZlO1xufVxuLm14LXdpbmRvdy1ib2R5IHtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cbiIsIi5teC1kcm9wZG93bi1saXN0ICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1kcm9wZG93bi1saXN0IGltZyB7XG4gICAgd2lkdGg6IDM1cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kcm9wZG93bi1saXN0IGltZyB7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4ubXgtZHJvcGRvd24tbGlzdCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LWRyb3Bkb3duLWxpc3QgPiBsaSB7XG4gICAgcGFkZGluZzogNXB4IDEwcHggMTBweDtcbiAgICBib3JkZXI6IDFweCAjZGRkO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLm14LWRyb3Bkb3duLWxpc3QgPiBsaTpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG59XG4ubXgtZHJvcGRvd24tbGlzdCA+IGxpOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xufVxuLm14LWRyb3Bkb3duLWxpc3Qtc3RyaXBlZCA+IGxpOm50aC1jaGlsZCgybisxKSB7XG4gICAgYmFja2dyb3VuZDogI2Y5ZjlmOTtcbn1cbi5teC1kcm9wZG93bi1saXN0ID4gbGk6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7XG59XG4iLCIubXgtaGVhZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogOXB4O1xuICAgIGJhY2tncm91bmQ6ICMzMzM7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm14LWhlYWRlci1jZW50ZXIge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjb2xvcjogI2VlZTtcbiAgICBsaW5lLWhlaWdodDogMzBweDsgLyogaGVpZ2h0IG9mIGJ1dHRvbnMgKi9cbn1cbmJvZHlbZGlyPVwibHRyXCJdIC5teC1oZWFkZXItbGVmdCxcbmJvZHlbZGlyPVwicnRsXCJdIC5teC1oZWFkZXItcmlnaHQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDlweDtcbiAgICBsZWZ0OiA5cHg7XG59XG5ib2R5W2Rpcj1cImx0clwiXSAubXgtaGVhZGVyLXJpZ2h0LFxuYm9keVtkaXI9XCJydGxcIl0gLm14LWhlYWRlci1sZWZ0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA5cHg7XG4gICAgcmlnaHQ6IDlweDtcbn1cbiIsIi5teC10aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICAgIG1hcmdpbi10b3A6IDBweDtcbn1cbiIsIi5teC1saXN0dmlldyB7XG4gICAgcGFkZGluZzogOHB4O1xufVxuLm14LWxpc3R2aWV3ID4gdWwge1xuICAgIHBhZGRpbmc6IDBweDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LWxpc3R2aWV3ID4gdWwgPiBsaSB7XG4gICAgcGFkZGluZzogNXB4IDEwcHggMTBweDtcbiAgICBib3JkZXI6IDFweCAjZGRkO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG4ubXgtbGlzdHZpZXcgPiB1bCA+IGxpOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcbn1cbi5teC1saXN0dmlldyA+IHVsID4gbGk6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7XG59XG4ubXgtbGlzdHZpZXcgbGk6bnRoLWNoaWxkKDJuKzEpIHtcbiAgICBiYWNrZ3JvdW5kOiAjZjlmOWY5O1xufVxuLm14LWxpc3R2aWV3IGxpOm50aC1jaGlsZCgybisxKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcbn1cbi5teC1saXN0dmlldyA+IHVsID4gbGkuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNlZWU7XG59XG4ubXgtbGlzdHZpZXctY2xpY2thYmxlIHVsICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1saXN0dmlldy1lbXB0eSB7XG4gICAgY29sb3I6ICM5OTk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm14LWxpc3R2aWV3IC5teC1saXN0dmlldy1sb2FkaW5nIHtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5teC1saXN0dmlldy1zZWFyY2hiYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbi5teC1saXN0dmlldy1zZWFyY2hiYXIgPiBpbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtbGlzdHZpZXctc2VhcmNoYmFyID4gYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xufVxuW2Rpcj1cInJ0bFwiXSAubXgtbGlzdHZpZXctc2VhcmNoYmFyID4gYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbi5teC1saXN0dmlldy1zZWxlY3Rpb24ge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwYWRkaW5nOiAwIDE1cHggMCA1cHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1saXN0dmlldy1zZWxlY3Rpb24ge1xuICAgIHBhZGRpbmc6IDAgNXB4IDAgMTVweDtcbn1cbi5teC1saXN0dmlldy1zZWxlY3RhYmxlIC5teC1saXN0dmlldy1jb250ZW50IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtbGlzdHZpZXcgLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kOiAjZGVmO1xufVxuLm14LWxpc3R2aWV3IC5teC10YWJsZSB0aCxcbi5teC1saXN0dmlldyAubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDJweDtcbn1cbiIsIi5teC1sb2dpbiAuZm9ybS1jb250cm9sIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xufVxuIiwiLm14LW1lbnViYXIge1xuICAgIHBhZGRpbmc6IDhweDtcbn1cbi5teC1tZW51YmFyLWljb24ge1xuICAgIGhlaWdodDogMTZweDtcbn1cbi5teC1tZW51YmFyLW1vcmUtaWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDTUFBQUFqQ0FZQUFBQWUyYk5aQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFLTkpSRUZVZU5waS9QLy9QOE5nQVV3TWd3aU1PbWJVTWFPT0dYWE1xR05HSFRQWUhNT0NUZkRzMmJNZVFLb09pSTFCWENCdU1qWTIza0ZyZFl6b1RRaWdSbThndFFXTEcwT0JCcXlobFRwYzBkU09JeFRyYUt3T3EyUFVjV2hXcDdFNnJJNjVpVVB6VFJxcncrcVlHaHlhbTJpc0R0TXh3RVMxQ1VnRkFmRnhxQkNJRGtKUGJOUldoelUzalJaNm80NFpkY3lvWTBZZE0rcVlVY2NNVXNjQUJCZ0FVWHBFakUvQnMvSUFBQUFBU1VWT1JLNUNZSUk9KSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDE2cHggMTZweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuIiwiLm14LW5hdmlnYXRpb25saXN0IHtcbiAgICBwYWRkaW5nOiA4cHg7XG59XG4ubXgtbmF2aWdhdGlvbmxpc3QgbGk6aG92ZXIsXG4ubXgtbmF2aWdhdGlvbmxpc3QgbGk6Zm9jdXMsXG4ubXgtbmF2aWdhdGlvbmxpc3QgbGkuYWN0aXZlIHtcbiAgICBjb2xvcjogI0ZGRjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ5OERCO1xufVxuLm14LW5hdmlnYXRpb25saXN0ICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1uYXZpZ2F0aW9ubGlzdCAudGFibGUgdGgsXG4ubXgtbmF2aWdhdGlvbmxpc3QgLnRhYmxlIHRkIHtcbiAgICBwYWRkaW5nOiAycHg7XG59XG4iLCIubXgtcHJvZ3Jlc3Mge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDMwJTtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIG1hcmdpbjogYXV0bztcbiAgICB3aWR0aDogMjUwcHg7XG4gICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgYmFja2dyb3VuZDogIzMzMztcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgei1pbmRleDogNTAwMDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgcGFkZGluZzogMjBweCAxNXB4O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC40cyBlYXNlLWluLW91dDtcbn1cbi5teC1wcm9ncmVzcy1oaWRkZW4ge1xuICAgIG9wYWNpdHk6IDA7XG59XG4ubXgtcHJvZ3Jlc3MtbWVzc2FnZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG59XG4ubXgtcHJvZ3Jlc3MtZW1wdHkgLm14LXByb2dyZXNzLW1lc3NhZ2Uge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4ubXgtcHJvZ3Jlc3MtaW5kaWNhdG9yIHtcbiAgICB3aWR0aDogNzBweDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhSZ0FLQU1RQUFEbzZPb0dCZ1ZwYVduQndjSTZPanF5c3JGSlNVbVJrWkQ4L1AweE1UTTdPenFlbnAxaFlXRjFkWFVoSVNISnljb2VIaDB0TFMxZFhWNmlvcU0vUHoyVmxaVDA5UFRjM04wQkFRSVdGaGRiVzFseGNYSzJ0clVGQlFUTXpNd0FBQUNIL0MwNUZWRk5EUVZCRk1pNHdBd0VBQUFBaCtRUUVEQUFBQUN3QUFBQUFSZ0FLQUFBRms2RG5YUmFHV1plb3JxU0pybkI3cHJBcXY3VjQweDdRL1VCQXpnZjhDV3ZFNGhHV0RBNkx4aEVVeU5OTmYxWHBOWHU1ZHJoZWt0Y0NzNHpMNTVYNVNsYVBNVjRNREg2VnIraFR1d29QMVl2NFJTWnhjNE4zaFh1SGYzRnJVMjBxakZDT0lwQkZraDZVUUphWVB5aGhNWjRzb0RhaVZsczlVMHNyVFZGSXFFOVFxU3FySFVzN09Ub2xNN2NqdVRnNXRyZkFJUUFoK1FRRURBQUFBQ3dBQUFBQUNnQUtBQUFGSktEbkhZV2lGSWZvUVZyclFxTXJhK1RzbG5acjV0ckpvN3dVYXdZVFZRb1VDa29VQWdBaCtRUUVEQUFBQUN3QUFBQUFHUUFLQUFBRldhRG5NY1N5RUpLb3JrZWhLTVdoUGx4dFA2c0thWHdQZVJLYmtNUElIWHBJellFd3RCRnloV1N2c0dqV0ZqbUZsS2VvV3JFcjdWYkJ0RDVYMFcyQllTVWF0MG9QYllqTGVYYkpuNGcwbVJDS2RpSVZCUlFVTVNJaEFDSDVCQVFNQUFBQUxBQUFBQUFvQUFvQUFBV0tvT2NsUXhBTWthaXVETEVzaExUT1I2RW94YUUyV2U4M005R0RReXcrZ2g2SVpzbUVlQ0srYUNZeGt4U3ZIQWFOeWRVY0JsTGZZRWJBRmdtelFwZFpDSVI3Z2RuQ1RGek1GT3Vsd3YyT3IrWjBkaXQ0ZVFwZ2IyTXJaWFJvSzJwNUJRbHZVek1NZEZsYmVUbzhVa0JCUTFoSFFVcGRUaUlrSmdOVVNCNHRFeE1FV3F3VkJSUVVPU0loQUNINUJBUU1BQUFBTEFBQUFBQTNBQW9BQUFXOG9PY2hoaUFZaUtpdXlSQUVRN1RPRExFc2hEU3ZSNkVvaFlQS3NTa2FIVHRQSThOc05wSVBqblQ2U0VJMDJDeGtaT3h1VXF0SWM1eEp6Q1RUTkljeE8yVGZtb1BCYXpUTUJ1VG1ZRVpRVHdrekJYQlpCUUowUlFJekFYbE1BVE1MZmxJTE13cURXQXFHaDRrcmk0eU9LNUNSa3l1VmxncHpoM1lyZUl4N0szMlJnQ3VDbGdVSWgxOHpDWXhsTkpGcmJaWnhIa1JlU0R0TFpFODdVV3BWTzFkd1d5SVlKU2RnU1MwdkEyWkpIalVURXdSczNoVUZGQlJCSWlFQUlma0VCQXdBQUFBc0FBQUFBRVlBQ2dBQUJmQ2c1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkROSzhNc1N3RXlVNTFLQ2dVaFlNSzBHazZBVVBIWmtwMURCdVpyTFl4ZkhDKzRNY1FvaW1iSVNPbnVwTmlVZDhiMlNxaXJXY1NNd2w0ejJITURtYUJHZ2NXYTA0V013WndWQVl6QTNaYUF6TUVmR0FFTXdXQ1pnVVloazBZTXdLTFV3SXpBWkJaQVRNTGxWOExNd3FhWlFxZG5xQXJvcU9sSzZlb3FpdXNyYThyc2JJS2haNklLNHFqalN1UHFKSXJsSzJYSzVteUJSZWViRE1JbzNFMHFIY3pESzE5ZjdLREhreHJVRHRTY0ZZN1dIWmNPMTU4WWp0a2dtZ2lKRXlnR0NJQ2d3c1ljb2JVdURFQUQ4RWVFeVlROEVPd1FnRUtGSktJQ0FFQUlma0VCQXdBQUFBc0R3QUFBRGNBQ2dBQUJicWc1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkROSzhNc1N3RWlRclFLUm9CTzQ5ancydzZrbzJNZE5wSVBqalk3R05rN0haU3JLWjRJMXRGcHVoTVlpYkp1amtNaTlkb21SbkdUY05za0o0T1pnUnZXUVFZYzBVWU13SjRUQUl6QVgxU0FUTUxnbGdMaFlhSUs0cUxqU3VQa0pJcmxKVUxjb1oxSzNlTGVpdDhrSDhyZ1pVRUY0WmZNd2lMWkRTUWFqTU1sWEFlUkY1SU8wdGpUenRSYVZVN1YyOWJJaVFtS0VraUdDNHdaVWsxTndOcjJEMFRFd1FNSWlFQUlma0VCQXdBQUFBc0hnQUFBQ2dBQ2dBQUJZZWc1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkRwQUpkN3dNemtXTkRMRHFDbmtabXlXeU1mTkJPaWxXc2JtU3JDSE9iU1ZpaVBzdk1ZQzBhWmdNdWM0QUI5ekF6UVprb21BWFV5MERiRFYvSjUzVXJkM2dCWDI1aUsyUnpaeXRwZUFNWGJsSXpDSE5YTkhoZEhqeFJRRUZEVmtkQlNseE9JaVFtS0VnaUdDNHdXRWcxTndNSklpRUFJZmtFQkF3QUFBQXNMUUFBQUJrQUNnQUFCVldnNTEwV2hsbVhxSzZJSVFnR29nSmRiUU9yNm14ODc0eTJZQ2ZGNmhrM0NJdlFac2taamowRFpsbkQ1QVJRbm1CS3RhNndXWUdTMmx3OXM0WUxkWmhEWkpFZW1oQ1g4K3lPUHhISmhLcXJNQzR3TWg0aEFDSDVCQVFNQUFBQUxEd0FBQUFLQUFvQUFBVWlvT2RkRm9aWmwrZ0JYZXNDb3l0MzVPeVdkbXZtM2NtanZCUnJCaE9SVENoUkNBQTcpO1xufVxuIiwiLm14LXJlbG9hZC1ub3RpZmljYXRpb24ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiAxMDAxO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxcmVtO1xuXG4gICAgYm9yZGVyOiAxcHggc29saWQgaHNsKDIwMCwgOTYlLCA0MSUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgyMDAsIDk2JSwgNDQlKTtcblxuICAgIGJveC1zaGFkb3c6IDAgNXB4IDIwcHggcmdiYSgxLCAzNywgNTUsIDAuMTYpO1xuICAgIGNvbG9yOiB3aGl0ZTtcblxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDE0cHg7XG59XG4iLCIubXgtcmVzaXplci1uLFxuLm14LXJlc2l6ZXItcyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMHB4O1xufVxuLm14LXJlc2l6ZXItbiB7XG4gICAgdG9wOiAtNXB4O1xuICAgIGN1cnNvcjogbi1yZXNpemU7XG59XG4ubXgtcmVzaXplci1zIHtcbiAgICBib3R0b206IC01cHg7XG4gICAgY3Vyc29yOiBzLXJlc2l6ZTtcbn1cblxuLm14LXJlc2l6ZXItZSxcbi5teC1yZXNpemVyLXcge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuLm14LXJlc2l6ZXItZSB7XG4gICAgcmlnaHQ6IC01cHg7XG4gICAgY3Vyc29yOiBlLXJlc2l6ZTtcbn1cbi5teC1yZXNpemVyLXcge1xuICAgIGxlZnQ6IC01cHg7XG4gICAgY3Vyc29yOiB3LXJlc2l6ZTtcbn1cblxuLm14LXJlc2l6ZXItbncsXG4ubXgtcmVzaXplci1uZSxcbi5teC1yZXNpemVyLXN3LFxuLm14LXJlc2l6ZXItc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XG59XG5cbi5teC1yZXNpemVyLW53LFxuLm14LXJlc2l6ZXItbmUge1xuICAgIHRvcDogLTVweDtcbn1cbi5teC1yZXNpemVyLXN3LFxuLm14LXJlc2l6ZXItc2Uge1xuICAgIGJvdHRvbTogLTVweDtcbn1cbi5teC1yZXNpemVyLW53LFxuLm14LXJlc2l6ZXItc3cge1xuICAgIGxlZnQ6IC01cHg7XG59XG4ubXgtcmVzaXplci1uZSxcbi5teC1yZXNpemVyLXNlIHtcbiAgICByaWdodDogLTVweDtcbn1cblxuLm14LXJlc2l6ZXItbncge1xuICAgIGN1cnNvcjogbnctcmVzaXplO1xufVxuLm14LXJlc2l6ZXItbmUge1xuICAgIGN1cnNvcjogbmUtcmVzaXplO1xufVxuLm14LXJlc2l6ZXItc3cge1xuICAgIGN1cnNvcjogc3ctcmVzaXplO1xufVxuLm14LXJlc2l6ZXItc2Uge1xuICAgIGN1cnNvcjogc2UtcmVzaXplO1xufVxuIiwiLm14LXRleHQge1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbn1cbiIsIi5teC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiBub25lO1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbn1cbi5teC10ZXh0YXJlYSAubXgtdGV4dGFyZWEtbm9yZXNpemUge1xuICAgIGhlaWdodDogYXV0bztcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG59XG4ubXgtdGV4dGFyZWEgLm14LXRleHRhcmVhLWNvdW50ZXIge1xuICAgIGZvbnQtc2l6ZTogc21hbGxlcjtcbn1cbi5teC10ZXh0YXJlYSAuZm9ybS1jb250cm9sLXN0YXRpYyB7XG4gICAgd2hpdGUtc3BhY2U6IHByZS1saW5lO1xufVxuIiwiLm14LXVuZGVybGF5IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xufVxuIiwiLm14LWltYWdlem9vbSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5O1xufVxuLm14LWltYWdlem9vbS13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLm14LWltYWdlem9vbS1pbWFnZSB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xufVxuIiwiLm14LWRyb3Bkb3duIGxpIHtcbiAgICBwYWRkaW5nOiAzcHggMjBweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZHJvcGRvd24gbGFiZWwge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY29sb3I6ICMzMzM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZHJvcGRvd24gaW5wdXQge1xuICAgIG1hcmdpbjogMDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1kcm9wZG93biAuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNmOGY4Zjg7XG59XG4ubXgtc2VsZWN0Ym94IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LXNlbGVjdGJveC1jYXJldC13cmFwcGVyIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuIiwiLm14LWRlbW91c2Vyc3dpdGNoZXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMzYwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDIwMDAwO1xuICAgIGJveC1zaGFkb3c6IC0xcHggMCA1cHggcmdiYSgyOCw1OSw4NiwuMik7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlci1jb250ZW50IHtcbiAgICBwYWRkaW5nOiA4MHB4IDQwcHggMjBweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgY29sb3I6ICMzODdlYTI7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU9nQUFBQmdDQVlBQUFBWFNqN05BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQXlScFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TXkxak1ERXhJRFkyTGpFME5UWTJNU3dnTWpBeE1pOHdNaTh3TmkweE5EbzFOam95TnlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVOVE5pQW9UV0ZqYVc1MGIzTm9LU0lnZUcxd1RVMDZTVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG8wTXprd09UUkVNRFEyTkVZeE1VVTBRVFE0TVVJNU5UTkdNVVEzUXpFNU55SWdlRzF3VFUwNlJHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEbzBNemt3T1RSRU1UUTJORVl4TVVVMFFUUTRNVUk1TlROR01VUTNRekU1TnlJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qYzBSRU15TVVaR05EWTBRekV4UlRSQk5EZ3hRamsxTTBZeFJEZERNVGszSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pjMFJFTXlNakF3TkRZMFF6RXhSVFJCTkRneFFqazFNMFl4UkRkRE1UazNJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrZzF0Umx3QUFFRkZKUkVGVWVOcnNuWWwzVmNVZHgyZHU4ckpESUpDd0NnalZhclZvc1ZYYzZqbldubnBJUWxKV2w2T0NyUFlma2gxY2l1d2xMRm81dFQzbFZKUlZFVVVFUlFRSlM0Q1FRRWpDUzk3MCs1Mlo5M0lUREd1Uzk4ajcvVGp6N3IyL2U5OTlaTzU4N205K003K1owY05YYnNxS2FUTmVLVlZvbEttT0tiWDM5RXNWS2wxRVY2MklLSzN3QjV1SGNZZy8zM3lDNHgybS9FMmpSRVNTTE1HSmw4dXZZcnNIaWR1aFNBK21Vd2FZaWhsUk0zSEdPdXp1Wlg0Zy9SbHBpdDY4TkZ1S2gwalNEWWd4emxBTVc3V3BDQmIwNlJqTmlEWUh6azZ2UEpaMm1iRnArYStKTEN4b0hyYm5vVnB0eW1lZGxXSWlrblJBS1VOWFZRMERvT01BcUlKMlg4MzB5cFBwQitteVFsL2xIWTNES0xaYlRmbnNMNldvaUNRZFVNcmdWVlZqQWVoSWFHTXhaWGFlbi83WGMybVpNWnVYVm1MenFGSTJmL1lCMm85TTJleW9GQm1ScEFKS0tWbTk4UkZvUndCUUZzZ2RnTFErVFNFZEIwQkxzWnNCUUd1d3Y4NlV6VGtqeFVZa3FZQlNpbGR2SEFkQWgyRzNDUloxUisyMFNRM3BDZW1TZ2RpVUFkQlJBTFFGKzl1UWRnTlVhZVVWU1I2Z2xBR3IvL0U0Tm9NQWFBTjgweDExMHlZMXBXMUdiVmxDdi9SMy92QVE5amVac3JsWHBBaUpkS2NFTnpqUDdoZFU3VlErMGhOOTFxeVBwR3RHd2Yrc3dvYmRNWmVRSGtENm05Nnk2SDRwUWlKSnM2RGVpa1pnUVIrSEJTMUNsYmZXYVBQWjVhbFRXdFBYa2k0dXNGVmVaUjV3Q3ZhZm1vOU42YnlyVXB4RWVoeFFTdjgxRzNJQUtDQTFoUUQwSFBaM1hVbGpTQjJvaTU3QjVua0FpbHFJdVlEOWpZRDB1QlFwa1I0SGxGSzRaa01lQUIwUFFQTUI2TmxXWlhZM1Q1MGFTM05JaXdIb2l3QjBqSEw5TWJ1UVBoRnJLdExqZ0ZMZ2crWUQwUEdnTWcrQW5zRjJUelROSWJXWnVIVWhxcnpxOS82dzFqWWdsYzcvVVlxWFNJOENTaWxZdTQ0VzlDa0F5bXJ2S2ZpbmUxdW5URE1DNmNJaDJQd0o2VmNBbFBteEY5YjFYMmJDL0NZcFppSTlCaWdsRDVDMnVyamRiQUJhRGRVK2dUUnNUWTJ6cHRxMitQNFRrSDRqT1NQU1k0QlNzdGV1TFFDZ1R3UFFMQnhXd3ovZFo2Wk1GMGd0cEF0S3NIa0JnTWE3WVk0QTJnL05oTGRxSlhkRWVnUlFTb1NRYXNQV3pBZ0FQVVZMQ2toamtxMCtjejljOEFRMlR5TDFVeTVzY2p2U0RvRGFLcmtqMHUyQVVqTFdyV0cvNEZNQWxPTW56K0NPZTh6a2x3VFNOa2laTHhNQTZDTmV4UzZaandEcEVja2RrVzRIMUVPYUQwQ2Z3bTRPN3NqeGs0UlVyRVE3VU4rK2p5OHlwSHU5Nmp1a2p3SHFCY2tka1c0RjFONW8zV3FHQTQ3SEhmT1VEUTgwdTgza2x3WFNhMEY5RnBzL0lQVlZkcnlwK3N4WGU2VzFWNlQ3QUUxQXFnMzlybndmWGJNTGtNb1l5bXNoemNYbUw4cU9ON1hDb1B2L0lPMEZxT0llaUhRUG9QYUc2MWZsT1F0aGFDSHE4QXM3emFSWG1pV3JmeEhVVWI3YUcyL3Q1Y0NFYmVLZmluUWJvQjdTSE44WDJCKy93SEdrbndOU0daclZPYWkveGVZeHBGRmU5Wk5peU9DRXR5UzJWd0R0bnE1THZmNkRMRnZvdE9HQVovaFhCcEMrZWtteS9JYitLV0V0OGFyRFNQOEdxS2NsZHdUUTdvQTBFNy9BUWM2RGZUL2dia0I2WHJMOXVwQnE1VUlHQ1dxaGNrSDRqRVQ2TDBDdGtSd1NRTHYrUnphczVOdytuRDRscG9MWUY2Ynl0V3JKK2h1Q0NqZEJ2YURhZ3ZBOXFCcWd6aGRRQmRDdWh2VHY3S2dmQVVENWd3Y0I2VkhKL3BzQ2xZMXR6M2tmMVQ0eWIxRzNBMVNaczFjQTdWSkl4d0xRa2Q0Z0hIV2d2aTd4dTdjRXFuNHNaRkhwbzM0S1VLVXhTUUR0b2gvYytONFFWMjJ6djN0S2FmV0ZxWGhkQWhwdUd0UUZCUFdQb2FvdnM1S0EvZy9waUNtZEx5ODhBZlNPSVdYd09BTWFzZ0RvUmV6dk1oVnZTRi9wcllIS1lJZW5rZTREb0lPOG1sWGVuVGo3bFNtZEp3RWlBdWlkUVBwdXZ2V3JORnNxRGNQY2RnTFNlbmtrdDVHWFd4YzhZMEZWeXJzUG1uM09YQXhxRjBDVnJpMEI5TFlocFFYbDhncTBBQzJLWTBvclpzak03YmNQS2h2aXhtSnZqRmZSZFRpbzJMMGxFNW9Kb0xmOW42aDZoMzJsdy8xVUlkOEMwaC9rMGR3SnFBdHBTVG5wK0VNaExhdS91NUVPbU5LNUVwZ3ZnTjR5cEhqekcxZEYwK29rOXZlYmlUT2w4ZWpPUUdXZ0EwZk9qTURSQ0srK0NwLzFBTFpmbXJLNUp5U1hCTkJiZ0hURllNVVJIbHBGQUdpZHJacE5uTmtvajZrcllGM0V5Q1NtKzFYaWtXdXVYTWVsRmZlYnNqbmlxd3FnTndWcEhnQmw1RkYvKzdaWFpvK1orS2FFQjNZZHFNVUE5RkZ2VmUveGFnNXhvMXZ4RlhTSFpKbEZBZlQ2LzZsTkt6SUJKZ3ZSRU8rWEhnU2tFbm5VMWZtOFpUR0h1VDNTd1ZkbEZmZ1FmVldrbzZaOHRyZ1pBbWhub0M1SDRURWp2RjlhYmYzUzhsa3Q4dGk2SEZUT216UlcyVVdoOUppMktqQUhrdXR2bFdzSlBvYThGMWdGMEk2UUxodGlDNDlXV1FDMHdmcWw1YlBFWCtvMldKZjBBNkQwVlVjck8zK1NqcDlxeFA1M09FZGdmMENOUmw2VUFtZ0MwbHlVRTFyVFltWDc5c3dCVkwya0JiSzc4MzN6RXVTMy9vMXlBOGtkcks2NHdFZlZkRGtZQzN6WVRKd3BMOHgwQnJTdHdDeWxYM3FQTHlYSFVWNitObVhpSS9WUTNoZmg4MEZrL1JoblhST1dsUS9qRkk2UFlJOE5UVCtiaWhreXIxSTZBdW9MQ254U3d5cFlnREp5R2Z0N1Rka2NDUkhzNlJxTjBteGdZdklOVEFucjJvejlZOHExQ2g4MUZXK2NreHhMSTBCOTFhdkErNlVEVUNyNHR2NEdrQjZUeDVrTVdKZHJWd1cyalV0czBCc1JzcTY4NGhMMFA5a2Fqd08zeGxTK0ppTnVlak9nb1FZTnh2SEcrL0k0Ync4NzNHVnR6bVErazZvVnVUNFdlTFNIZFdBb01JSWZET1Evb1dMQno2d09RMWN0c3o3MlVrQWRwSXM1bFFvYk1qaEZTQ09BWlFpYlZLdFNCdGgzKzNyTE9zcUhHN29KMFdKQi9BcldnR284cktkd0xWKzBaMlErNVY0Q3FJYzBSN2wrdkVIZUVUcUtsL1VoVXpwWEdwQlM3Vmx0ZkkvRERJY0QwT0hLTnZqcFVhR3pjVDgyNXNNUUFhcytBeDBEL1dzQ3BldlNiWm5MWGdGb0NOUnd3RDJiL3I4QXBIV0NSUW8vc3cwcmFVcUxMYlJLRHdXTWpNY2UxdWJISnFCbHErQlZEMm9OZEJmd3hRc1pTbk1GZ3d0WHBrNXBFa0R2Q2tnWGNRVEhRNjRCaVc5aXc3NjY3MDNwUEdtWXVGdWU0Zm9QTXF6dmFxZHIxU1dBa2RYaVlvRFp6NE5xb1NYWkdSN2tER01IcWRkQ1YwOUxpLzJMZ2RGczNlZHhQYTY2Y25aNjVWMFJYUEhraXUyWitMdnp0VkY5ZWgyZ2lZZThkWkdiUmRDOWZpOHFOaUNWenBQdW1MdFlNdGF0eWZLZ011Qy9DREFXQWRBaXhhM1JPUTVlRHpDM1JzY3RiOXdlTjBGM09YQWhqQTJFRnNlMHZFM2FUcTZ1bTNDdVVSdE4vemVLL1didGZPU3IwTVZDOTJvKzlPcUw3ZnA2SDM1L1c0RC9VN1pPL0xvT3NNMENaTmhxNkRsQ1MwZXd6Y1YxT2REeC81dURxN0d2OHFETGc0N1Yvd0p0MjFPMG5iK3gxd0xxSVVYVnlUeWc3QUs2ZHNRR1Y3cUdOWjB2SGVtOVRQcXNXYy9DM1E5UUZhTFFzeFpWQ1BnNHdWcGZIUGZWZGtFdmxVRm9BMTkxMWlHSTQ1K0JyVmJHd1ZZSnRQVzFzRnRkK0Y2MEJTRkE3ZFpDMW5hWDBIVWQ3aGZTYVJzdGh4ZUlVZlg2K2NXZjI3UEdmeG9kUDhKV3U3MlkxYnR6aVd2dE9XTkxmZnc2NC8vRmRIdy9acjhUaTkveG11KzA3Y2V2aVlYMEhmZGpmcjhWKzYzdDlQRy9NUDZ5TVNyeFZ6TmxYL2JXMU9wb1JiOVVMYmwxMTE3YnlYSGlDWVpmWnAzcE81N3JvTHZ6MTg2MUtuTVQxNFIxNWdiWG1jN3VwYS96M2M3T2RhSnZhOFc5d2JYdGZGQjFuU3F1dWdrTG1nTmRRVUNMcFRRdFZXN2dMRyt1dDFxd2FMQnVSc1BhcVlqZFY1cGZoU1hVR2FGNzBaSUhIUUJsOGJ3YUFyUlZXOHRMQkRRdE5NTWpvOVpTRzFwc1o3bHhkYU5tNzROUnNPaWFzZWFYdlRXM3hUa3pMVjZ2elFYN0FTbG5zMmZrQzZ0RXo2ck14dStSQjBkVU5FZGFldE5IbW55NmF5UkltMGNUemF0QitsVFppQmI3a3VNc2VNK3BTRk94bEZzUkFUUjFRTjJQengzS2RZNjdWY0V6bThhcHpPWnNLUTRpS2RlTzBwc2JpVzc0eDMrNGdGVmVocVRSNTRDUFlEalc4YmlaOEpaMHlZZ0lvQ2tDS1dkbzU0aU1JYjQxb2hicGEwQjZVWXFIaUFDYU9xQnlYbDVhMC9pYW5Cd1EvaTFBbGVCN0VRRTBkVUI5bXpHOUkrTWVLOUozaXZQeFNMVlhSQUJOR1VnNTN2UkJaVVBOckxEdjlLQ3NjQzBpZ0tZV3FFT1ZuWXZIOXAxU3pucFFaUTRlRVFFMGhVQmxueWtqa2ZLOGY4b1pBZzREVkJsb0xDS0FwZ2lrakxwNlNDVkNCcmthbS9vZTZVZUFLbE5RaWdpZ0tRSXFBN0RaZnpyRXEyaEZqOUNxQWxRSndoY1JRRk1FMUJMdm41WjRGY2Nqc3NYM3BMVDRpZ2lncVFNcUc1TFlMVFBRcXk1NVVFOExxQ0lDYU9xQVN0K1U4K3dNOEtwNlgvVTlKYUNLQ0tDcEErcG83NThXdFZsVWZkaUJPbDh5VzBRQVRSRlE2WjhPZGFEcWVOV1hyYjdWQUZVYWswUUUwTlFCVlE4SlZYMjVZdmdQeXFqanBuUytEQllYRVVCVEE5UUZJNzFGZFkxSmhxdUhxeCtaQUtwTTBpd2lnS1lJcUlSMEJBQ056K1JBSzNxQ3kvbVowbmtOa2tNaUFtZ3FaUHpXQlFSMGxFb0U1TnNaenhpTXozVTNhd0NyWkpLSUFKb0NvREl5NlY2L2JrbGNMbmxRVHdKVThWTUZVSkhrZzdxUXNiN3NvcUZsalhmUlJIMzE5eWRUT3ZleTVKSUFLcElhc0RMZ1liaUhWZmx1bXZOSXg3ajZseW1iSzkwMEFxaElDb0JhcU5xVzdYTmliSEErcDJNNUFWREZxZ3FnSXNrSGRaRmZ4Vm9OQnFBRFEyZHFQYXpWcG15T2ROVUlvQ0pKZjJCYkZ0RS92Y2Y1cWJyQXE5bVFkTnI3cStkTTJXeDVxQUtvU1BKaFhVdy9sZjJxZzBKYUxtMVFEVXQ3MHBUUGxxbERCVkNSRkFBMTExdFZWSC8xQU8rclVoajRjQkk2d0RwTC9GVUJWQ1Q1c0M3aFVvdkR1SDZtY3NzdXFsQ3cvaWttd0NycnBBcWdJa2wvdUp1WERGUnVPWG5DV2hBNjAyQmhOWW9ydnRXWmlXOUtaZ21nSXNtRmRTbGg5ZU5VN2NLMjhXb3cxNkxrZEtKbkZFTU1KODZVeUNVQlZDUzVzQzRyc3JBYU93U3VNTFNJTGdNZ3p1SDRETTZkTlJVenJraHVDYUFpeVN3QW01YWg2cXZaQ2x5c3dwRkxiWTFNTlRobUVQOTVVL0dHOUxVS29DTEpnM1U1NDRFQnF5N3gxalUzQWF4RDlxSUg5anlPYWszbDYxSWRGa0JGa2xZNHFsYjBkVmJWZHQyRSsxcUphOHdCcXhramZJSEpWTDRtRTNnTG9DTEpnZlVkcnNaTzMzV0FiUlZPaEJ3bS9GY1VwS0FlMk5aNlM0dXR2bXdtdlNLWko0Q0s5SGpCMmZndWdlM25yU3ZCTFFHZ3JwbXA3YXFvQTlWYTJqb2dYR2Ntdjl3b3VTZUFpdlE0c08vQmxBWjlBV2gvSFBiMzhCWjBxQlpUb2haV1oyWHJzVjhQZllPWk1sMkcwQW1nSWoxYXVEYXNqSVJnN1FjUTZkUG1ocXJGWVgvMkNtR0ZEV1pJNHFWQTZVc0VOenAxYWt3QUZSSHBxUUszL29Nc2ZIS2NLMU5mR3pSaFZKODRySUcvTG5EZ21zQUZValJrdUxWdkdqS01qWUpxZ0w2eGJ0cmtxQUFxSXRMZGhYRGRhbktaajcwK2dRdEp4RmIzSWJpQkJ6ZkRYd3RBUGNCVzN4SzRlWWFiQXFPNWJmUkFOMnUzNmx3ejlNMm5YNnE0SzYzdytCWGJBd0ZVSkdVbHNuYXRCbkE1QUM0L3d3S3M4Z0VvdDNtQnF5cEhFaGEzUGJpSlNqVDFnWnZiQ2RCcXprVWNoWTdIVVczWGVOVlJmNzVGRzgxdUl1T09OZThZWmZVYjMydnRjTytXUTYrKzJBNmNoOS9meHAvTTFDWitsZjNNME81ckVmd21WUkZ0VCtsTWZHVGFZNlBwQm1UaW9peXY1M0dXTWpwYjIvTUNxTWhkS29Wck5tUTZVRlV1QU1peFd3ZHVGZ3AzTm81em9NOEtQRnR4Yk9NdzZ3N1ZhdjFMa0p2UTkwSjYzY2tMb1FPZzdWNFV2NlR2N0Q0QWxQc3hBVlNrMTh2UVZWVzBTckJJT3N0YnM0aTNaaEZ2aGVQV2pEWHB3QjNyd0ZvNW83QzErakJFc0pUV0lvWjF4bG5oZG9DMmF0ZngxSUxmdEZ0M2JQVnhxMjJ0dWJmYVVhKy9Da0NiZDg3NFkvVC9BZ3dBMk1pN0hkQWUraWtBQUFBQVNVVk9SSzVDWUlJPSkgdG9wIHJpZ2h0IG5vLXJlcGVhdCAjMWIzMTQ5O1xuICAgIC8qIGJhY2tncm91bmQtYXR0YWNoZW1lbnQgbG9jYWwgaXMgbm90IHN1cHBvcnRlZCBvbiBJRThcbiAgICAgKiB3aGVuIHRoaXMgaXMgcGFydCBvZiBiYWNrZ3JvdW5kIHRoZSBjb21wbGV0ZSBiYWNrZ3JvdW5kIGlzIGlnbm9yZWQgKi9cbiAgICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGxvY2FsO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXIgdWwge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luLXRvcDogMjVweDtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM0OTYwNzY7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgY29sb3I6ICMzODdlYTI7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM0OTYwNzY7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBoMiB7XG4gICAgbWFyZ2luOiAyMHB4IDAgNXB4O1xuICAgIGNvbG9yOiAjNWJjNGZlO1xuICAgIGZvbnQtc2l6ZTogMjhweDtcbn1cbi5teC1kZW1vdXNlcnN3aXRjaGVyIGgzIHtcbiAgICBtYXJnaW46IDAgMCAycHg7XG4gICAgY29sb3I6ICM1YmM0ZmU7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXIgLmFjdGl2ZSBoMyB7XG4gICAgY29sb3I6ICMxMWVmZGI7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXItdG9nZ2xlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAyNSU7XG4gICAgbGVmdDogLTM1cHg7XG4gICAgd2lkdGg6IDM1cHg7XG4gICAgaGVpZ2h0OiAzOHB4O1xuICAgIG1hcmdpbi10b3A6IC00MHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4O1xuICAgIGJveC1zaGFkb3c6IC0xcHggMCA1cHggcmdiYSgyOCw1OSw4NiwuMik7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQklBQUFBU0NBWUFBQUJXem81WEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeVJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNeTFqTURFeElEWTJMakUwTlRZMk1Td2dNakF4TWk4d01pOHdOaTB4TkRvMU5qb3lOeUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTmlBb1RXRmphVzUwYjNOb0tTSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEbzNORVJETWpGR1JEUTJORU14TVVVMFFUUTRNVUk1TlROR01VUTNRekU1TnlJZ2VHMXdUVTA2Ukc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvM05FUkRNakZHUlRRMk5FTXhNVVUwUVRRNE1VSTVOVE5HTVVRM1F6RTVOeUkrSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pjMFJFTXlNVVpDTkRZMFF6RXhSVFJCTkRneFFqazFNMFl4UkRkRE1UazNJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPamMwUkVNeU1VWkRORFkwUXpFeFJUUkJORGd4UWprMU0wWXhSRGRETVRrM0lpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCsxWm92TkFBQUFXZEpSRUZVZU5xTTFNMHJSRkVZeC9FN1k1cUlRcE9VYklpeW1RV3lzQmd2SlZKSzJWZ3J5WlF0S1NVTFplbFBzQjBMWmFOWmpKVU5LMUZza0pxVXZDUzNOQXNaYzN6UDlOemlPT2ZlZWVwVGM4L2M4K3ZjOHhaVFNubU9ha0VHS2R6Z0RCWFh5NTRPTXNTd2pwTDZXOWNZc3J4ZlpXdmNVdTd5MFZkTFVDYytWWGdkMm9MaXhwZk9JT21GMTdUdEhUT296WXV1cEN4QWFOQjlEVUVmZURVYkU4YnpFWHhaZXJQMDBsOGhoM0xVaUhUSU1yNk45ajJrc1lvaWh2LzFkZXlMU1Z6S0ttMWpFVytXZlpWMkxmOGdza2pJY3djV3BPTSsrcEhDRlBMb3NnV3RvQ3lkN2pDUE9qemhHSEhMeURQWTFhY2hhSmhEeFJqNnJCd0pYVXVvTjBJRzhJSXY3T2lHQmp4YWR2QUlUdVQzcmV4NmMwU2JLQVNmbG5VY0JUM0pUVGhBanlXa0dVVnNCRUVGUjVDZXJ6WHBOSWFjckZJckpuQ0JCM211QnZraEIxVFAyN2hNL0x2eDN6bDZneEhxdTZjNzRraVU4SXhHaktKZExyclQzeGZkandBREFKYU14UDJidkQyQkFBQUFBRWxGVGtTdVFtQ0MpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0ICMxYjMxNDk7XG59XG4iLCIvKiBtYXN0ZXIgZGV0YWlscyBzY3JlZW4gZm9yIG1vYmlsZSAqL1xuLm14LW1hc3Rlci1kZXRhaWwtc2NyZWVuIHtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLXNjcmVlbiAubXgtbWFzdGVyLWRldGFpbC1kZXRhaWxzIHtcbiAgICBwYWRkaW5nOiAxNXB4O1xufVxuXG4ubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNztcbn1cblxuLm14LW1hc3Rlci1kZXRhaWwtc2NyZWVuLWhlYWRlci1jYXB0aW9uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxN3B4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLXNjcmVlbi1oZWFkZXItY2xvc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDUwcHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiAjMDA3YWZmO1xufVxuXG5ib2R5W2Rpcj1cInJ0bFwiXSAubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyLWNsb3NlIHtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0OiBhdXRvO1xufVxuXG4ubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyLWNsb3NlOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFwyMDM5XCI7XG4gICAgZm9udC1zaXplOiA1MnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xufVxuXG4vKiBjbGFzc2VzIGZvciBjb250ZW50IHBhZ2UgKi9cbi5teC1tYXN0ZXItZGV0YWlsLWNvbnRlbnQtZml4IHtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLWNvbnRlbnQtaGlkZGVuIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMCUpO1xufVxuXG5ib2R5W2Rpcj1cInJ0bFwiXSAubXgtbWFzdGVyLWRldGFpbC1jb250ZW50LWhpZGRlbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwMCUpO1xufSIsIi5yZXBvcnRpbmdSZXBvcnQge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbiIsIi5yZXBvcnRpbmdSZXBvcnRQYXJhbWV0ZXIgdGgge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuIiwiLnJlcG9ydGluZ0RhdGVSYW5nZSB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbn1cbi5yZXBvcnRpbmdEYXRlUmFuZ2UgdGgge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xufVxuLnJlcG9ydGluZ0RhdGVSYW5nZSB0ZCB7XG4gICAgcGFkZGluZzogNXB4O1xufVxuIiwiLm14LXJlcG9ydG1hdHJpeCB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0aCwgLm14LXJlcG9ydG1hdHJpeCB0ZCB7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzO1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZCB7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0Ym9keSB0cjpudGgtY2hpbGQoMm4rMSkgdGQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG59XG5cbi5teC1yZXBvcnRtYXRyaXggdGJvZHkgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDE2cHg7XG4gICAgbWF4LWhlaWdodDogMTZweDtcbn1cbiIsIi8qIFdBUk5JTkc6IElFOSBsaW1pdHMgbmVzdGVkIGltcG9ydHMgdG8gdGhyZWUgbGV2ZWxzIGRlZXA6IGh0dHA6Ly9qb3JnZWFsYmFsYWRlam8uY29tLzIwMTEvMDUvMjgvaW50ZXJuZXQtZXhwbG9yZXItbGltaXRzLW5lc3RlZC1pbXBvcnQtY3NzLXN0YXRlbWVudHMgKi9cblxuLyogZGlqaXQgYmFzZSAqL1xuXG4vKiBtZW5kaXggYmFzZSAqL1xuXG4vKiB3aWRnZXRzICovXG5cbi8qIHJlcG9ydGluZyAqL1xuIl0sInNvdXJjZVJvb3QiOiIifQ==*/ diff --git a/themesource/atlas_core/web/core/_legacy/bootstrap/_bootstrap-rtl.scss b/themesource/atlas_core/web/core/_legacy/bootstrap/_bootstrap-rtl.scss new file mode 100644 index 0000000..3bf6ffa --- /dev/null +++ b/themesource/atlas_core/web/core/_legacy/bootstrap/_bootstrap-rtl.scss @@ -0,0 +1,1741 @@ +/******************************************************************************* + * bootstrap-rtl (version 3.3.4) + * Author: Morteza Ansarinia (http://github.com/morteza) + * Created on: August 13,2015 + * Project: bootstrap-rtl + * Copyright: Unlicensed Public Domain + *******************************************************************************/ +@mixin bootstrap-rtl() { + [dir="rtl"] { + .flip.text-left { + text-align: right; + } + + .flip.text-right { + text-align: left; + } + + .list-unstyled { + padding-right: 0; + padding-left: initial; + } + + .list-inline { + padding-right: 0; + padding-left: initial; + margin-right: -5px; + margin-left: 0; + } + + dd { + margin-right: 0; + margin-left: initial; + } + + @media (min-width: 768px) { + .dl-horizontal dt { + float: right; + clear: right; + text-align: left; + } + .dl-horizontal dd { + margin-right: 180px; + margin-left: 0; + } + } + + blockquote { + border-right: 5px solid #eeeeee; + border-left: 0; + } + + .blockquote-reverse, + blockquote.pull-left { + padding-left: 15px; + padding-right: 0; + border-left: 5px solid #eeeeee; + border-right: 0; + text-align: left; + } + + .col-xs-1, + .col-sm-1, + .col-md-1, + .col-lg-1, + .col-xs-2, + .col-sm-2, + .col-md-2, + .col-lg-2, + .col-xs-3, + .col-sm-3, + .col-md-3, + .col-lg-3, + .col-xs-4, + .col-sm-4, + .col-md-4, + .col-lg-4, + .col-xs-5, + .col-sm-5, + .col-md-5, + .col-lg-5, + .col-xs-6, + .col-sm-6, + .col-md-6, + .col-lg-6, + .col-xs-7, + .col-sm-7, + .col-md-7, + .col-lg-7, + .col-xs-8, + .col-sm-8, + .col-md-8, + .col-lg-8, + .col-xs-9, + .col-sm-9, + .col-md-9, + .col-lg-9, + .col-xs-10, + .col-sm-10, + .col-md-10, + .col-lg-10, + .col-xs-11, + .col-sm-11, + .col-md-11, + .col-lg-11, + .col-xs-12, + .col-sm-12, + .col-md-12, + .col-lg-12 { + position: relative; + min-height: 1px; + padding-left: 15px; + padding-right: 15px; + } + + .col-xs-1, + .col-xs-2, + .col-xs-3, + .col-xs-4, + .col-xs-5, + .col-xs-6, + .col-xs-7, + .col-xs-8, + .col-xs-9, + .col-xs-10, + .col-xs-11, + .col-xs-12 { + float: right; + } + + .col-xs-12 { + width: 100%; + } + + .col-xs-11 { + width: 91.66666667%; + } + + .col-xs-10 { + width: 83.33333333%; + } + + .col-xs-9 { + width: 75%; + } + + .col-xs-8 { + width: 66.66666667%; + } + + .col-xs-7 { + width: 58.33333333%; + } + + .col-xs-6 { + width: 50%; + } + + .col-xs-5 { + width: 41.66666667%; + } + + .col-xs-4 { + width: 33.33333333%; + } + + .col-xs-3 { + width: 25%; + } + + .col-xs-2 { + width: 16.66666667%; + } + + .col-xs-1 { + width: 8.33333333%; + } + + .col-xs-pull-12 { + left: 100%; + right: auto; + } + + .col-xs-pull-11 { + left: 91.66666667%; + right: auto; + } + + .col-xs-pull-10 { + left: 83.33333333%; + right: auto; + } + + .col-xs-pull-9 { + left: 75%; + right: auto; + } + + .col-xs-pull-8 { + left: 66.66666667%; + right: auto; + } + + .col-xs-pull-7 { + left: 58.33333333%; + right: auto; + } + + .col-xs-pull-6 { + left: 50%; + right: auto; + } + + .col-xs-pull-5 { + left: 41.66666667%; + right: auto; + } + + .col-xs-pull-4 { + left: 33.33333333%; + right: auto; + } + + .col-xs-pull-3 { + left: 25%; + right: auto; + } + + .col-xs-pull-2 { + left: 16.66666667%; + right: auto; + } + + .col-xs-pull-1 { + left: 8.33333333%; + right: auto; + } + + .col-xs-pull-0 { + left: auto; + right: auto; + } + + .col-xs-push-12 { + right: 100%; + left: 0; + } + + .col-xs-push-11 { + right: 91.66666667%; + left: 0; + } + + .col-xs-push-10 { + right: 83.33333333%; + left: 0; + } + + .col-xs-push-9 { + right: 75%; + left: 0; + } + + .col-xs-push-8 { + right: 66.66666667%; + left: 0; + } + + .col-xs-push-7 { + right: 58.33333333%; + left: 0; + } + + .col-xs-push-6 { + right: 50%; + left: 0; + } + + .col-xs-push-5 { + right: 41.66666667%; + left: 0; + } + + .col-xs-push-4 { + right: 33.33333333%; + left: 0; + } + + .col-xs-push-3 { + right: 25%; + left: 0; + } + + .col-xs-push-2 { + right: 16.66666667%; + left: 0; + } + + .col-xs-push-1 { + right: 8.33333333%; + left: 0; + } + + .col-xs-push-0 { + right: auto; + left: 0; + } + + .col-xs-offset-12 { + margin-right: 100%; + margin-left: 0; + } + + .col-xs-offset-11 { + margin-right: 91.66666667%; + margin-left: 0; + } + + .col-xs-offset-10 { + margin-right: 83.33333333%; + margin-left: 0; + } + + .col-xs-offset-9 { + margin-right: 75%; + margin-left: 0; + } + + .col-xs-offset-8 { + margin-right: 66.66666667%; + margin-left: 0; + } + + .col-xs-offset-7 { + margin-right: 58.33333333%; + margin-left: 0; + } + + .col-xs-offset-6 { + margin-right: 50%; + margin-left: 0; + } + + .col-xs-offset-5 { + margin-right: 41.66666667%; + margin-left: 0; + } + + .col-xs-offset-4 { + margin-right: 33.33333333%; + margin-left: 0; + } + + .col-xs-offset-3 { + margin-right: 25%; + margin-left: 0; + } + + .col-xs-offset-2 { + margin-right: 16.66666667%; + margin-left: 0; + } + + .col-xs-offset-1 { + margin-right: 8.33333333%; + margin-left: 0; + } + + .col-xs-offset-0 { + margin-right: 0%; + margin-left: 0; + } + + @media (min-width: 768px) { + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11, + .col-sm-12 { + float: right; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + left: 100%; + right: auto; + } + .col-sm-pull-11 { + left: 91.66666667%; + right: auto; + } + .col-sm-pull-10 { + left: 83.33333333%; + right: auto; + } + .col-sm-pull-9 { + left: 75%; + right: auto; + } + .col-sm-pull-8 { + left: 66.66666667%; + right: auto; + } + .col-sm-pull-7 { + left: 58.33333333%; + right: auto; + } + .col-sm-pull-6 { + left: 50%; + right: auto; + } + .col-sm-pull-5 { + left: 41.66666667%; + right: auto; + } + .col-sm-pull-4 { + left: 33.33333333%; + right: auto; + } + .col-sm-pull-3 { + left: 25%; + right: auto; + } + .col-sm-pull-2 { + left: 16.66666667%; + right: auto; + } + .col-sm-pull-1 { + left: 8.33333333%; + right: auto; + } + .col-sm-pull-0 { + left: auto; + right: auto; + } + .col-sm-push-12 { + right: 100%; + left: 0; + } + .col-sm-push-11 { + right: 91.66666667%; + left: 0; + } + .col-sm-push-10 { + right: 83.33333333%; + left: 0; + } + .col-sm-push-9 { + right: 75%; + left: 0; + } + .col-sm-push-8 { + right: 66.66666667%; + left: 0; + } + .col-sm-push-7 { + right: 58.33333333%; + left: 0; + } + .col-sm-push-6 { + right: 50%; + left: 0; + } + .col-sm-push-5 { + right: 41.66666667%; + left: 0; + } + .col-sm-push-4 { + right: 33.33333333%; + left: 0; + } + .col-sm-push-3 { + right: 25%; + left: 0; + } + .col-sm-push-2 { + right: 16.66666667%; + left: 0; + } + .col-sm-push-1 { + right: 8.33333333%; + left: 0; + } + .col-sm-push-0 { + right: auto; + left: 0; + } + .col-sm-offset-12 { + margin-right: 100%; + margin-left: 0; + } + .col-sm-offset-11 { + margin-right: 91.66666667%; + margin-left: 0; + } + .col-sm-offset-10 { + margin-right: 83.33333333%; + margin-left: 0; + } + .col-sm-offset-9 { + margin-right: 75%; + margin-left: 0; + } + .col-sm-offset-8 { + margin-right: 66.66666667%; + margin-left: 0; + } + .col-sm-offset-7 { + margin-right: 58.33333333%; + margin-left: 0; + } + .col-sm-offset-6 { + margin-right: 50%; + margin-left: 0; + } + .col-sm-offset-5 { + margin-right: 41.66666667%; + margin-left: 0; + } + .col-sm-offset-4 { + margin-right: 33.33333333%; + margin-left: 0; + } + .col-sm-offset-3 { + margin-right: 25%; + margin-left: 0; + } + .col-sm-offset-2 { + margin-right: 16.66666667%; + margin-left: 0; + } + .col-sm-offset-1 { + margin-right: 8.33333333%; + margin-left: 0; + } + .col-sm-offset-0 { + margin-right: 0%; + margin-left: 0; + } + } + @media (min-width: 992px) { + .col-md-1, + .col-md-2, + .col-md-3, + .col-md-4, + .col-md-5, + .col-md-6, + .col-md-7, + .col-md-8, + .col-md-9, + .col-md-10, + .col-md-11, + .col-md-12 { + float: right; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + left: 100%; + right: auto; + } + .col-md-pull-11 { + left: 91.66666667%; + right: auto; + } + .col-md-pull-10 { + left: 83.33333333%; + right: auto; + } + .col-md-pull-9 { + left: 75%; + right: auto; + } + .col-md-pull-8 { + left: 66.66666667%; + right: auto; + } + .col-md-pull-7 { + left: 58.33333333%; + right: auto; + } + .col-md-pull-6 { + left: 50%; + right: auto; + } + .col-md-pull-5 { + left: 41.66666667%; + right: auto; + } + .col-md-pull-4 { + left: 33.33333333%; + right: auto; + } + .col-md-pull-3 { + left: 25%; + right: auto; + } + .col-md-pull-2 { + left: 16.66666667%; + right: auto; + } + .col-md-pull-1 { + left: 8.33333333%; + right: auto; + } + .col-md-pull-0 { + left: auto; + right: auto; + } + .col-md-push-12 { + right: 100%; + left: 0; + } + .col-md-push-11 { + right: 91.66666667%; + left: 0; + } + .col-md-push-10 { + right: 83.33333333%; + left: 0; + } + .col-md-push-9 { + right: 75%; + left: 0; + } + .col-md-push-8 { + right: 66.66666667%; + left: 0; + } + .col-md-push-7 { + right: 58.33333333%; + left: 0; + } + .col-md-push-6 { + right: 50%; + left: 0; + } + .col-md-push-5 { + right: 41.66666667%; + left: 0; + } + .col-md-push-4 { + right: 33.33333333%; + left: 0; + } + .col-md-push-3 { + right: 25%; + left: 0; + } + .col-md-push-2 { + right: 16.66666667%; + left: 0; + } + .col-md-push-1 { + right: 8.33333333%; + left: 0; + } + .col-md-push-0 { + right: auto; + left: 0; + } + .col-md-offset-12 { + margin-right: 100%; + margin-left: 0; + } + .col-md-offset-11 { + margin-right: 91.66666667%; + margin-left: 0; + } + .col-md-offset-10 { + margin-right: 83.33333333%; + margin-left: 0; + } + .col-md-offset-9 { + margin-right: 75%; + margin-left: 0; + } + .col-md-offset-8 { + margin-right: 66.66666667%; + margin-left: 0; + } + .col-md-offset-7 { + margin-right: 58.33333333%; + margin-left: 0; + } + .col-md-offset-6 { + margin-right: 50%; + margin-left: 0; + } + .col-md-offset-5 { + margin-right: 41.66666667%; + margin-left: 0; + } + .col-md-offset-4 { + margin-right: 33.33333333%; + margin-left: 0; + } + .col-md-offset-3 { + margin-right: 25%; + margin-left: 0; + } + .col-md-offset-2 { + margin-right: 16.66666667%; + margin-left: 0; + } + .col-md-offset-1 { + margin-right: 8.33333333%; + margin-left: 0; + } + .col-md-offset-0 { + margin-right: 0%; + margin-left: 0; + } + } + @media (min-width: 1200px) { + .col-lg-1, + .col-lg-2, + .col-lg-3, + .col-lg-4, + .col-lg-5, + .col-lg-6, + .col-lg-7, + .col-lg-8, + .col-lg-9, + .col-lg-10, + .col-lg-11, + .col-lg-12 { + float: right; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + left: 100%; + right: auto; + } + .col-lg-pull-11 { + left: 91.66666667%; + right: auto; + } + .col-lg-pull-10 { + left: 83.33333333%; + right: auto; + } + .col-lg-pull-9 { + left: 75%; + right: auto; + } + .col-lg-pull-8 { + left: 66.66666667%; + right: auto; + } + .col-lg-pull-7 { + left: 58.33333333%; + right: auto; + } + .col-lg-pull-6 { + left: 50%; + right: auto; + } + .col-lg-pull-5 { + left: 41.66666667%; + right: auto; + } + .col-lg-pull-4 { + left: 33.33333333%; + right: auto; + } + .col-lg-pull-3 { + left: 25%; + right: auto; + } + .col-lg-pull-2 { + left: 16.66666667%; + right: auto; + } + .col-lg-pull-1 { + left: 8.33333333%; + right: auto; + } + .col-lg-pull-0 { + left: auto; + right: auto; + } + .col-lg-push-12 { + right: 100%; + left: 0; + } + .col-lg-push-11 { + right: 91.66666667%; + left: 0; + } + .col-lg-push-10 { + right: 83.33333333%; + left: 0; + } + .col-lg-push-9 { + right: 75%; + left: 0; + } + .col-lg-push-8 { + right: 66.66666667%; + left: 0; + } + .col-lg-push-7 { + right: 58.33333333%; + left: 0; + } + .col-lg-push-6 { + right: 50%; + left: 0; + } + .col-lg-push-5 { + right: 41.66666667%; + left: 0; + } + .col-lg-push-4 { + right: 33.33333333%; + left: 0; + } + .col-lg-push-3 { + right: 25%; + left: 0; + } + .col-lg-push-2 { + right: 16.66666667%; + left: 0; + } + .col-lg-push-1 { + right: 8.33333333%; + left: 0; + } + .col-lg-push-0 { + right: auto; + left: 0; + } + .col-lg-offset-12 { + margin-right: 100%; + margin-left: 0; + } + .col-lg-offset-11 { + margin-right: 91.66666667%; + margin-left: 0; + } + .col-lg-offset-10 { + margin-right: 83.33333333%; + margin-left: 0; + } + .col-lg-offset-9 { + margin-right: 75%; + margin-left: 0; + } + .col-lg-offset-8 { + margin-right: 66.66666667%; + margin-left: 0; + } + .col-lg-offset-7 { + margin-right: 58.33333333%; + margin-left: 0; + } + .col-lg-offset-6 { + margin-right: 50%; + margin-left: 0; + } + .col-lg-offset-5 { + margin-right: 41.66666667%; + margin-left: 0; + } + .col-lg-offset-4 { + margin-right: 33.33333333%; + margin-left: 0; + } + .col-lg-offset-3 { + margin-right: 25%; + margin-left: 0; + } + .col-lg-offset-2 { + margin-right: 16.66666667%; + margin-left: 0; + } + .col-lg-offset-1 { + margin-right: 8.33333333%; + margin-left: 0; + } + .col-lg-offset-0 { + margin-right: 0%; + margin-left: 0; + } + } + + caption { + text-align: right; + } + + th:not(.mx-left-aligned) { + text-align: right; + } + + @media screen and (max-width: 767px) { + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-right: 0; + border-left: initial; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-left: 0; + border-right: initial; + } + } + + .radio label, + .checkbox label { + padding-right: 20px; + padding-left: initial; + } + + .radio input[type="radio"], + .radio-inline input[type="radio"], + .checkbox input[type="checkbox"], + .checkbox-inline input[type="checkbox"] { + margin-right: -20px; + margin-left: auto; + } + + .radio-inline, + .checkbox-inline { + padding-right: 20px; + padding-left: 0; + } + + .radio-inline + .radio-inline, + .checkbox-inline + .checkbox-inline { + margin-right: 10px; + margin-left: 0; + } + + .has-feedback .form-control { + padding-left: 42.5px; + padding-right: 12px; + } + + .form-control-feedback { + left: 0; + right: auto; + } + + @media (min-width: 768px) { + .form-inline label { + padding-right: 0; + padding-left: initial; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + margin-right: 0; + margin-left: auto; + } + } + @media (min-width: 768px) { + .form-horizontal .control-label { + text-align: left; + } + } + + .form-horizontal .has-feedback .form-control-feedback { + left: 15px; + right: auto; + } + + .caret { + margin-right: 2px; + margin-left: 0; + } + + .dropdown-menu { + right: 0; + left: auto; + float: left; + text-align: right; + } + + .dropdown-menu.pull-right { + left: 0; + right: auto; + float: right; + } + + .dropdown-menu-right { + left: auto; + right: 0; + } + + .dropdown-menu-left { + left: 0; + right: auto; + } + + @media (min-width: 768px) { + .navbar-right .dropdown-menu { + left: auto; + right: 0; + } + .navbar-right .dropdown-menu-left { + left: 0; + right: auto; + } + } + + .btn-group > .btn, + .btn-group-vertical > .btn { + float: right; + } + + .btn-group .btn + .btn, + .btn-group .btn + .btn-group, + .btn-group .btn-group + .btn, + .btn-group .btn-group + .btn-group { + margin-right: -1px; + margin-left: 0px; + } + + .btn-toolbar { + margin-right: -5px; + margin-left: 0px; + } + + .btn-toolbar .btn-group, + .btn-toolbar .input-group { + float: right; + } + + .btn-toolbar > .btn, + .btn-toolbar > .btn-group, + .btn-toolbar > .input-group { + margin-right: 5px; + margin-left: 0px; + } + + .btn-group > .btn:first-child { + margin-right: 0; + } + + .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 0; + border-top-left-radius: 0; + } + + .btn-group > .btn:last-child:not(:first-child), + .btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 0; + border-top-right-radius: 0; + } + + .btn-group > .btn-group { + float: right; + } + + .btn-group.btn-group-justified > .btn, + .btn-group.btn-group-justified > .btn-group { + float: none; + } + + .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; + } + + .btn-group > .btn-group:first-child > .btn:last-child, + .btn-group > .btn-group:first-child > .dropdown-toggle { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 0; + border-top-left-radius: 0; + } + + .btn-group > .btn-group:last-child > .btn:first-child { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 0; + border-top-right-radius: 0; + } + + .btn .caret { + margin-right: 0; + } + + .btn-group-vertical > .btn + .btn, + .btn-group-vertical > .btn + .btn-group, + .btn-group-vertical > .btn-group + .btn, + .btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-right: 0; + } + + .input-group .form-control { + float: right; + } + + .input-group .form-control:first-child, + .input-group-addon:first-child, + .input-group-btn:first-child > .btn, + .input-group-btn:first-child > .btn-group > .btn, + .input-group-btn:first-child > .dropdown-toggle, + .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), + .input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; + border-bottom-left-radius: 0; + border-top-left-radius: 0; + } + + .input-group-addon:first-child { + border-left: 0px; + border-right: 1px solid; + } + + .input-group .form-control:last-child, + .input-group-addon:last-child, + .input-group-btn:last-child > .btn, + .input-group-btn:last-child > .btn-group > .btn, + .input-group-btn:last-child > .dropdown-toggle, + .input-group-btn:first-child > .btn:not(:first-child), + .input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; + border-bottom-right-radius: 0; + border-top-right-radius: 0; + } + + .input-group-addon:last-child { + border-left-width: 1px; + border-left-style: solid; + border-right: 0px; + } + + .input-group-btn > .btn + .btn { + margin-right: -1px; + margin-left: auto; + } + + .input-group-btn:first-child > .btn, + .input-group-btn:first-child > .btn-group { + margin-left: -1px; + margin-right: auto; + } + + .input-group-btn:last-child > .btn, + .input-group-btn:last-child > .btn-group { + margin-right: -1px; + margin-left: auto; + } + + .nav { + padding-right: 0; + padding-left: initial; + } + + .nav-tabs > li { + float: right; + } + + .nav-tabs > li > a { + margin-left: auto; + margin-right: -2px; + border-radius: 4px 4px 0 0; + } + + .nav-pills > li { + float: right; + } + + .nav-pills > li > a { + border-radius: 4px; + } + + .nav-pills > li + li { + margin-right: 2px; + margin-left: auto; + } + + .nav-stacked > li { + float: none; + } + + .nav-stacked > li + li { + margin-right: 0; + margin-left: auto; + } + + .nav-justified > .dropdown .dropdown-menu { + right: auto; + } + + .nav-tabs-justified > li > a { + margin-left: 0; + margin-right: auto; + } + + @media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-radius: 4px 4px 0 0; + } + } + @media (min-width: 768px) { + .navbar-header { + float: right; + } + } + + .navbar-collapse { + padding-right: 15px; + padding-left: 15px; + } + + .navbar-brand { + float: right; + } + + @media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-right: -15px; + margin-left: auto; + } + } + + .navbar-toggle { + float: left; + margin-left: 15px; + margin-right: auto; + } + + @media (max-width: 767px) { + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 25px 5px 15px; + } + } + @media (min-width: 768px) { + .navbar-nav { + float: right; + } + .navbar-nav > li { + float: right; + } + } + @media (min-width: 768px) { + .navbar-left.flip { + float: right !important; + } + .navbar-right:last-child { + margin-left: -15px; + margin-right: auto; + } + .navbar-right.flip { + float: left !important; + margin-left: -15px; + margin-right: auto; + } + .navbar-right .dropdown-menu { + left: 0; + right: auto; + } + } + @media (min-width: 768px) { + .navbar-text { + float: right; + } + .navbar-text.navbar-right:last-child { + margin-left: 0; + margin-right: auto; + } + } + + .pagination { + padding-right: 0; + } + + .pagination > li > a, + .pagination > li > span { + float: right; + margin-right: -1px; + margin-left: 0px; + } + + .pagination > li:first-child > a, + .pagination > li:first-child > span { + margin-left: 0; + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; + border-bottom-left-radius: 0; + border-top-left-radius: 0; + } + + .pagination > li:last-child > a, + .pagination > li:last-child > span { + margin-right: -1px; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; + border-bottom-right-radius: 0; + border-top-right-radius: 0; + } + + .pager { + padding-right: 0; + padding-left: initial; + } + + .pager .next > a, + .pager .next > span { + float: left; + } + + .pager .previous > a, + .pager .previous > span { + float: right; + } + + .nav-pills > li > a > .badge { + margin-left: 0px; + margin-right: 3px; + } + + .list-group-item > .badge { + float: left; + } + + .list-group-item > .badge + .badge { + margin-left: 5px; + margin-right: auto; + } + + .alert-dismissable, + .alert-dismissible { + padding-left: 35px; + padding-right: 15px; + } + + .alert-dismissable .close, + .alert-dismissible .close { + right: auto; + left: -21px; + } + + .progress-bar { + float: right; + } + + .media > .pull-left { + margin-right: 10px; + } + + .media > .pull-left.flip { + margin-right: 0; + margin-left: 10px; + } + + .media > .pull-right { + margin-left: 10px; + } + + .media > .pull-right.flip { + margin-left: 0; + margin-right: 10px; + } + + .media-right, + .media > .pull-right { + padding-right: 10px; + padding-left: initial; + } + + .media-left, + .media > .pull-left { + padding-left: 10px; + padding-right: initial; + } + + .media-list { + padding-right: 0; + padding-left: initial; + list-style: none; + } + + .list-group { + padding-right: 0; + padding-left: initial; + } + + .panel > .table:first-child > thead:first-child > tr:first-child td:first-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, + .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, + .panel > .table:first-child > thead:first-child > tr:first-child th:first-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, + .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, + .panel + > .table-responsive:first-child + > .table:first-child + > tbody:first-child + > tr:first-child + th:first-child { + border-top-right-radius: 3px; + border-top-left-radius: 0; + } + + .panel > .table:first-child > thead:first-child > tr:first-child td:last-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, + .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, + .panel > .table:first-child > thead:first-child > tr:first-child th:last-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, + .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-left-radius: 3px; + border-top-right-radius: 0; + } + + .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, + .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; + border-top-right-radius: 0; + } + + .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, + .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; + border-top-left-radius: 0; + } + + .panel > .table-bordered > thead > tr > th:first-child, + .panel > .table-responsive > .table-bordered > thead > tr > th:first-child, + .panel > .table-bordered > tbody > tr > th:first-child, + .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, + .panel > .table-bordered > tfoot > tr > th:first-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .panel > .table-bordered > thead > tr > td:first-child, + .panel > .table-responsive > .table-bordered > thead > tr > td:first-child, + .panel > .table-bordered > tbody > tr > td:first-child, + .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, + .panel > .table-bordered > tfoot > tr > td:first-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-right: 0; + border-left: none; + } + + .panel > .table-bordered > thead > tr > th:last-child, + .panel > .table-responsive > .table-bordered > thead > tr > th:last-child, + .panel > .table-bordered > tbody > tr > th:last-child, + .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, + .panel > .table-bordered > tfoot > tr > th:last-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .panel > .table-bordered > thead > tr > td:last-child, + .panel > .table-responsive > .table-bordered > thead > tr > td:last-child, + .panel > .table-bordered > tbody > tr > td:last-child, + .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, + .panel > .table-bordered > tfoot > tr > td:last-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: none; + border-left: 0; + } + + .embed-responsive .embed-responsive-item, + .embed-responsive iframe, + .embed-responsive embed, + .embed-responsive object { + right: 0; + left: auto; + } + + .close { + float: left; + } + + .modal-footer { + text-align: left; + } + + .modal-footer.flip { + text-align: right; + } + + .modal-footer .btn + .btn { + margin-left: auto; + margin-right: 5px; + } + + .modal-footer .btn-group .btn + .btn { + margin-right: -1px; + margin-left: auto; + } + + .modal-footer .btn-block + .btn-block { + margin-right: 0; + margin-left: auto; + } + + .popover { + left: auto; + text-align: right; + } + + .popover.top > .arrow { + right: 50%; + left: auto; + margin-right: -11px; + margin-left: auto; + } + + .popover.top > .arrow:after { + margin-right: -10px; + margin-left: auto; + } + + .popover.bottom > .arrow { + right: 50%; + left: auto; + margin-right: -11px; + margin-left: auto; + } + + .popover.bottom > .arrow:after { + margin-right: -10px; + margin-left: auto; + } + + .carousel-control { + right: 0; + bottom: 0; + } + + .carousel-control.left { + right: auto; + left: 0; + background-image: -webkit-linear-gradient( + left, + color-stop(rgba(0, 0, 0, 0.5) 0%), + color-stop(rgba(0, 0, 0, 0.0001) 100%) + ); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + } + + .carousel-control.right { + left: auto; + right: 0; + background-image: -webkit-linear-gradient( + left, + color-stop(rgba(0, 0, 0, 0.0001) 0%), + color-stop(rgba(0, 0, 0, 0.5) 100%) + ); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + } + + .carousel-control .icon-prev, + .carousel-control .glyphicon-chevron-left { + left: 50%; + right: auto; + margin-right: -10px; + } + + .carousel-control .icon-next, + .carousel-control .glyphicon-chevron-right { + right: 50%; + left: auto; + margin-left: -10px; + } + + .carousel-indicators { + right: 50%; + left: 0; + margin-right: -30%; + margin-left: 0; + padding-left: 0; + } + + @media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: 0; + margin-right: -15px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-left: 0; + margin-right: -15px; + } + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + } + + .pull-right.flip { + float: left !important; + } + + .pull-left.flip { + float: right !important; + } + } +} diff --git a/themesource/atlas_core/web/core/_legacy/bootstrap/_bootstrap.scss b/themesource/atlas_core/web/core/_legacy/bootstrap/_bootstrap.scss new file mode 100644 index 0000000..304deb6 --- /dev/null +++ b/themesource/atlas_core/web/core/_legacy/bootstrap/_bootstrap.scss @@ -0,0 +1,6821 @@ +/*! + * Bootstrap v3.3.4 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +@mixin bootstrap() { + /*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + } + body { + margin: 0; + } + article, + aside, + details, + figcaption, + figure, + footer, + header, + hgroup, + main, + menu, + nav, + section, + summary { + display: block; + } + audio, + canvas, + progress, + video { + display: inline-block; + vertical-align: baseline; + } + audio:not([controls]) { + display: none; + height: 0; + } + [hidden], + template { + display: none; + } + a { + background-color: transparent; + } + a:active, + a:hover { + outline: 0; + } + abbr[title] { + border-bottom: 1px dotted; + } + b, + strong { + font-weight: bold; + } + dfn { + font-style: italic; + } + h1 { + margin: 0.67em 0; + font-size: 2em; + } + mark { + color: #000; + background: #ff0; + } + small { + font-size: 80%; + } + sub, + sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; + } + sup { + top: -0.5em; + } + sub { + bottom: -0.25em; + } + img { + border: 0; + } + svg:not(:root) { + overflow: hidden; + } + figure { + margin: 1em 40px; + } + hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + } + pre { + overflow: auto; + } + code, + kbd, + pre, + samp { + font-family: monospace, monospace; + font-size: 1em; + } + button, + input, + optgroup, + select, + textarea { + margin: 0; + font: inherit; + color: inherit; + } + button { + overflow: visible; + } + button, + select { + text-transform: none; + } + button, + html input[type="button"], + input[type="reset"], + input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; + } + //button[disabled], + //html input[disabled] { + // cursor: default; + //} + button::-moz-focus-inner, + input::-moz-focus-inner { + padding: 0; + border: 0; + } + input { + line-height: normal; + } + input[type="checkbox"], + input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; + } + input[type="number"]::-webkit-inner-spin-button, + input[type="number"]::-webkit-outer-spin-button { + height: auto; + } + input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; + } + input[type="search"]::-webkit-search-cancel-button, + input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; + } + fieldset { + padding: 0.35em 0.625em 0.75em; + margin: 0 2px; + border: 1px solid #c0c0c0; + } + legend { + padding: 0; + border: 0; + } + textarea { + overflow: auto; + } + optgroup { + font-weight: bold; + } + table { + border-spacing: 0; + border-collapse: collapse; + } + td, + th { + padding: 0; + } + /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ + @media print { + *, + *:before, + *:after { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + select { + background: #fff !important; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } + } + @font-face { + font-family: "Glyphicons Halflings"; + src: url("./resources/glyphicons-halflings-regular.woff2") format("woff2"); + } + .glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: "Glyphicons Halflings"; + font-style: normal; + font-weight: normal; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + .glyphicon-asterisk:before { + content: "\2a"; + } + .glyphicon-plus:before { + content: "\2b"; + } + .glyphicon-euro:before, + .glyphicon-eur:before { + content: "\20ac"; + } + .glyphicon-minus:before { + content: "\2212"; + } + .glyphicon-cloud:before { + content: "\2601"; + } + .glyphicon-envelope:before { + content: "\2709"; + } + .glyphicon-pencil:before { + content: "\270f"; + } + .glyphicon-glass:before { + content: "\e001"; + } + .glyphicon-music:before { + content: "\e002"; + } + .glyphicon-search:before { + content: "\e003"; + } + .glyphicon-heart:before { + content: "\e005"; + } + .glyphicon-star:before { + content: "\e006"; + } + .glyphicon-star-empty:before { + content: "\e007"; + } + .glyphicon-user:before { + content: "\e008"; + } + .glyphicon-film:before { + content: "\e009"; + } + .glyphicon-th-large:before { + content: "\e010"; + } + .glyphicon-th:before { + content: "\e011"; + } + .glyphicon-th-list:before { + content: "\e012"; + } + .glyphicon-ok:before { + content: "\e013"; + } + .glyphicon-remove:before { + content: "\e014"; + } + .glyphicon-zoom-in:before { + content: "\e015"; + } + .glyphicon-zoom-out:before { + content: "\e016"; + } + .glyphicon-off:before { + content: "\e017"; + } + .glyphicon-signal:before { + content: "\e018"; + } + .glyphicon-cog:before { + content: "\e019"; + } + .glyphicon-trash:before { + content: "\e020"; + } + .glyphicon-home:before { + content: "\e021"; + } + .glyphicon-file:before { + content: "\e022"; + } + .glyphicon-time:before { + content: "\e023"; + } + .glyphicon-road:before { + content: "\e024"; + } + .glyphicon-download-alt:before { + content: "\e025"; + } + .glyphicon-download:before { + content: "\e026"; + } + .glyphicon-upload:before { + content: "\e027"; + } + .glyphicon-inbox:before { + content: "\e028"; + } + .glyphicon-play-circle:before { + content: "\e029"; + } + .glyphicon-repeat:before { + content: "\e030"; + } + .glyphicon-refresh:before { + content: "\e031"; + } + .glyphicon-list-alt:before { + content: "\e032"; + } + .glyphicon-lock:before { + content: "\e033"; + } + .glyphicon-flag:before { + content: "\e034"; + } + .glyphicon-headphones:before { + content: "\e035"; + } + .glyphicon-volume-off:before { + content: "\e036"; + } + .glyphicon-volume-down:before { + content: "\e037"; + } + .glyphicon-volume-up:before { + content: "\e038"; + } + .glyphicon-qrcode:before { + content: "\e039"; + } + .glyphicon-barcode:before { + content: "\e040"; + } + .glyphicon-tag:before { + content: "\e041"; + } + .glyphicon-tags:before { + content: "\e042"; + } + .glyphicon-book:before { + content: "\e043"; + } + .glyphicon-bookmark:before { + content: "\e044"; + } + .glyphicon-print:before { + content: "\e045"; + } + .glyphicon-camera:before { + content: "\e046"; + } + .glyphicon-font:before { + content: "\e047"; + } + .glyphicon-bold:before { + content: "\e048"; + } + .glyphicon-italic:before { + content: "\e049"; + } + .glyphicon-text-height:before { + content: "\e050"; + } + .glyphicon-text-width:before { + content: "\e051"; + } + .glyphicon-align-left:before { + content: "\e052"; + } + .glyphicon-align-center:before { + content: "\e053"; + } + .glyphicon-align-right:before { + content: "\e054"; + } + .glyphicon-align-justify:before { + content: "\e055"; + } + .glyphicon-list:before { + content: "\e056"; + } + .glyphicon-indent-left:before { + content: "\e057"; + } + .glyphicon-indent-right:before { + content: "\e058"; + } + .glyphicon-facetime-video:before { + content: "\e059"; + } + .glyphicon-picture:before { + content: "\e060"; + } + .glyphicon-map-marker:before { + content: "\e062"; + } + .glyphicon-adjust:before { + content: "\e063"; + } + .glyphicon-tint:before { + content: "\e064"; + } + .glyphicon-edit:before { + content: "\e065"; + } + .glyphicon-share:before { + content: "\e066"; + } + .glyphicon-check:before { + content: "\e067"; + } + .glyphicon-move:before { + content: "\e068"; + } + .glyphicon-step-backward:before { + content: "\e069"; + } + .glyphicon-fast-backward:before { + content: "\e070"; + } + .glyphicon-backward:before { + content: "\e071"; + } + .glyphicon-play:before { + content: "\e072"; + } + .glyphicon-pause:before { + content: "\e073"; + } + .glyphicon-stop:before { + content: "\e074"; + } + .glyphicon-forward:before { + content: "\e075"; + } + .glyphicon-fast-forward:before { + content: "\e076"; + } + .glyphicon-step-forward:before { + content: "\e077"; + } + .glyphicon-eject:before { + content: "\e078"; + } + .glyphicon-chevron-left:before { + content: "\e079"; + } + .glyphicon-chevron-right:before { + content: "\e080"; + } + .glyphicon-plus-sign:before { + content: "\e081"; + } + .glyphicon-minus-sign:before { + content: "\e082"; + } + .glyphicon-remove-sign:before { + content: "\e083"; + } + .glyphicon-ok-sign:before { + content: "\e084"; + } + .glyphicon-question-sign:before { + content: "\e085"; + } + .glyphicon-info-sign:before { + content: "\e086"; + } + .glyphicon-screenshot:before { + content: "\e087"; + } + .glyphicon-remove-circle:before { + content: "\e088"; + } + .glyphicon-ok-circle:before { + content: "\e089"; + } + .glyphicon-ban-circle:before { + content: "\e090"; + } + .glyphicon-arrow-left:before { + content: "\e091"; + } + .glyphicon-arrow-right:before { + content: "\e092"; + } + .glyphicon-arrow-up:before { + content: "\e093"; + } + .glyphicon-arrow-down:before { + content: "\e094"; + } + .glyphicon-share-alt:before { + content: "\e095"; + } + .glyphicon-resize-full:before { + content: "\e096"; + } + .glyphicon-resize-small:before { + content: "\e097"; + } + .glyphicon-exclamation-sign:before { + content: "\e101"; + } + .glyphicon-gift:before { + content: "\e102"; + } + .glyphicon-leaf:before { + content: "\e103"; + } + .glyphicon-fire:before { + content: "\e104"; + } + .glyphicon-eye-open:before { + content: "\e105"; + } + .glyphicon-eye-close:before { + content: "\e106"; + } + .glyphicon-warning-sign:before { + content: "\e107"; + } + .glyphicon-plane:before { + content: "\e108"; + } + .glyphicon-calendar:before { + content: "\e109"; + } + .glyphicon-random:before { + content: "\e110"; + } + .glyphicon-comment:before { + content: "\e111"; + } + .glyphicon-magnet:before { + content: "\e112"; + } + .glyphicon-chevron-up:before { + content: "\e113"; + } + .glyphicon-chevron-down:before { + content: "\e114"; + } + .glyphicon-retweet:before { + content: "\e115"; + } + .glyphicon-shopping-cart:before { + content: "\e116"; + } + .glyphicon-folder-close:before { + content: "\e117"; + } + .glyphicon-folder-open:before { + content: "\e118"; + } + .glyphicon-resize-vertical:before { + content: "\e119"; + } + .glyphicon-resize-horizontal:before { + content: "\e120"; + } + .glyphicon-hdd:before { + content: "\e121"; + } + .glyphicon-bullhorn:before { + content: "\e122"; + } + .glyphicon-bell:before { + content: "\e123"; + } + .glyphicon-certificate:before { + content: "\e124"; + } + .glyphicon-thumbs-up:before { + content: "\e125"; + } + .glyphicon-thumbs-down:before { + content: "\e126"; + } + .glyphicon-hand-right:before { + content: "\e127"; + } + .glyphicon-hand-left:before { + content: "\e128"; + } + .glyphicon-hand-up:before { + content: "\e129"; + } + .glyphicon-hand-down:before { + content: "\e130"; + } + .glyphicon-circle-arrow-right:before { + content: "\e131"; + } + .glyphicon-circle-arrow-left:before { + content: "\e132"; + } + .glyphicon-circle-arrow-up:before { + content: "\e133"; + } + .glyphicon-circle-arrow-down:before { + content: "\e134"; + } + .glyphicon-globe:before { + content: "\e135"; + } + .glyphicon-wrench:before { + content: "\e136"; + } + .glyphicon-tasks:before { + content: "\e137"; + } + .glyphicon-filter:before { + content: "\e138"; + } + .glyphicon-briefcase:before { + content: "\e139"; + } + .glyphicon-fullscreen:before { + content: "\e140"; + } + .glyphicon-dashboard:before { + content: "\e141"; + } + .glyphicon-paperclip:before { + content: "\e142"; + } + .glyphicon-heart-empty:before { + content: "\e143"; + } + .glyphicon-link:before { + content: "\e144"; + } + .glyphicon-phone:before { + content: "\e145"; + } + .glyphicon-pushpin:before { + content: "\e146"; + } + .glyphicon-usd:before { + content: "\e148"; + } + .glyphicon-gbp:before { + content: "\e149"; + } + .glyphicon-sort:before { + content: "\e150"; + } + .glyphicon-sort-by-alphabet:before { + content: "\e151"; + } + .glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; + } + .glyphicon-sort-by-order:before { + content: "\e153"; + } + .glyphicon-sort-by-order-alt:before { + content: "\e154"; + } + .glyphicon-sort-by-attributes:before { + content: "\e155"; + } + .glyphicon-sort-by-attributes-alt:before { + content: "\e156"; + } + .glyphicon-unchecked:before { + content: "\e157"; + } + .glyphicon-expand:before { + content: "\e158"; + } + .glyphicon-collapse-down:before { + content: "\e159"; + } + .glyphicon-collapse-up:before { + content: "\e160"; + } + .glyphicon-log-in:before { + content: "\e161"; + } + .glyphicon-flash:before { + content: "\e162"; + } + .glyphicon-log-out:before { + content: "\e163"; + } + .glyphicon-new-window:before { + content: "\e164"; + } + .glyphicon-record:before { + content: "\e165"; + } + .glyphicon-save:before { + content: "\e166"; + } + .glyphicon-open:before { + content: "\e167"; + } + .glyphicon-saved:before { + content: "\e168"; + } + .glyphicon-import:before { + content: "\e169"; + } + .glyphicon-export:before { + content: "\e170"; + } + .glyphicon-send:before { + content: "\e171"; + } + .glyphicon-floppy-disk:before { + content: "\e172"; + } + .glyphicon-floppy-saved:before { + content: "\e173"; + } + .glyphicon-floppy-remove:before { + content: "\e174"; + } + .glyphicon-floppy-save:before { + content: "\e175"; + } + .glyphicon-floppy-open:before { + content: "\e176"; + } + .glyphicon-credit-card:before { + content: "\e177"; + } + .glyphicon-transfer:before { + content: "\e178"; + } + .glyphicon-cutlery:before { + content: "\e179"; + } + .glyphicon-header:before { + content: "\e180"; + } + .glyphicon-compressed:before { + content: "\e181"; + } + .glyphicon-earphone:before { + content: "\e182"; + } + .glyphicon-phone-alt:before { + content: "\e183"; + } + .glyphicon-tower:before { + content: "\e184"; + } + .glyphicon-stats:before { + content: "\e185"; + } + .glyphicon-sd-video:before { + content: "\e186"; + } + .glyphicon-hd-video:before { + content: "\e187"; + } + .glyphicon-subtitles:before { + content: "\e188"; + } + .glyphicon-sound-stereo:before { + content: "\e189"; + } + .glyphicon-sound-dolby:before { + content: "\e190"; + } + .glyphicon-sound-5-1:before { + content: "\e191"; + } + .glyphicon-sound-6-1:before { + content: "\e192"; + } + .glyphicon-sound-7-1:before { + content: "\e193"; + } + .glyphicon-copyright-mark:before { + content: "\e194"; + } + .glyphicon-registration-mark:before { + content: "\e195"; + } + .glyphicon-cloud-download:before { + content: "\e197"; + } + .glyphicon-cloud-upload:before { + content: "\e198"; + } + .glyphicon-tree-conifer:before { + content: "\e199"; + } + .glyphicon-tree-deciduous:before { + content: "\e200"; + } + .glyphicon-cd:before { + content: "\e201"; + } + .glyphicon-save-file:before { + content: "\e202"; + } + .glyphicon-open-file:before { + content: "\e203"; + } + .glyphicon-level-up:before { + content: "\e204"; + } + .glyphicon-copy:before { + content: "\e205"; + } + .glyphicon-paste:before { + content: "\e206"; + } + .glyphicon-alert:before { + content: "\e209"; + } + .glyphicon-equalizer:before { + content: "\e210"; + } + .glyphicon-king:before { + content: "\e211"; + } + .glyphicon-queen:before { + content: "\e212"; + } + .glyphicon-pawn:before { + content: "\e213"; + } + .glyphicon-bishop:before { + content: "\e214"; + } + .glyphicon-knight:before { + content: "\e215"; + } + .glyphicon-baby-formula:before { + content: "\e216"; + } + .glyphicon-tent:before { + content: "\26fa"; + } + .glyphicon-blackboard:before { + content: "\e218"; + } + .glyphicon-bed:before { + content: "\e219"; + } + .glyphicon-apple:before { + content: "\f8ff"; + } + .glyphicon-erase:before { + content: "\e221"; + } + .glyphicon-hourglass:before { + content: "\231b"; + } + .glyphicon-lamp:before { + content: "\e223"; + } + .glyphicon-duplicate:before { + content: "\e224"; + } + .glyphicon-piggy-bank:before { + content: "\e225"; + } + .glyphicon-scissors:before { + content: "\e226"; + } + .glyphicon-bitcoin:before { + content: "\e227"; + } + .glyphicon-btc:before { + content: "\e227"; + } + .glyphicon-xbt:before { + content: "\e227"; + } + .glyphicon-yen:before { + content: "\00a5"; + } + .glyphicon-jpy:before { + content: "\00a5"; + } + .glyphicon-ruble:before { + content: "\20bd"; + } + .glyphicon-rub:before { + content: "\20bd"; + } + .glyphicon-scale:before { + content: "\e230"; + } + .glyphicon-ice-lolly:before { + content: "\e231"; + } + .glyphicon-ice-lolly-tasted:before { + content: "\e232"; + } + .glyphicon-education:before { + content: "\e233"; + } + .glyphicon-option-horizontal:before { + content: "\e234"; + } + .glyphicon-option-vertical:before { + content: "\e235"; + } + .glyphicon-menu-hamburger:before { + content: "\e236"; + } + .glyphicon-modal-window:before { + content: "\e237"; + } + .glyphicon-oil:before { + content: "\e238"; + } + .glyphicon-grain:before { + content: "\e239"; + } + .glyphicon-sunglasses:before { + content: "\e240"; + } + .glyphicon-text-size:before { + content: "\e241"; + } + .glyphicon-text-color:before { + content: "\e242"; + } + .glyphicon-text-background:before { + content: "\e243"; + } + .glyphicon-object-align-top:before { + content: "\e244"; + } + .glyphicon-object-align-bottom:before { + content: "\e245"; + } + .glyphicon-object-align-horizontal:before { + content: "\e246"; + } + .glyphicon-object-align-left:before { + content: "\e247"; + } + .glyphicon-object-align-vertical:before { + content: "\e248"; + } + .glyphicon-object-align-right:before { + content: "\e249"; + } + .glyphicon-triangle-right:before { + content: "\e250"; + } + .glyphicon-triangle-left:before { + content: "\e251"; + } + .glyphicon-triangle-bottom:before { + content: "\e252"; + } + .glyphicon-triangle-top:before { + content: "\e253"; + } + .glyphicon-console:before { + content: "\e254"; + } + .glyphicon-superscript:before { + content: "\e255"; + } + .glyphicon-subscript:before { + content: "\e256"; + } + .glyphicon-menu-left:before { + content: "\e257"; + } + .glyphicon-menu-right:before { + content: "\e258"; + } + .glyphicon-menu-down:before { + content: "\e259"; + } + .glyphicon-menu-up:before { + content: "\e260"; + } + * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + *:before, + *:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + html { + font-size: 10px; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + } + body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; + } + input, + button, + select, + textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; + } + a { + color: #337ab7; + text-decoration: none; + } + a:hover, + a:focus { + color: #23527c; + text-decoration: underline; + } + a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } + figure { + margin: 0; + } + img { + vertical-align: middle; + } + .img-responsive, + .thumbnail > img, + .thumbnail a > img, + .carousel-inner > .item > img, + .carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; + } + .img-rounded { + border-radius: 6px; + } + .img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + } + .img-circle { + border-radius: 50%; + } + hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; + } + .sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + } + .sr-only-focusable:active, + .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; + } + [role="button"] { + cursor: pointer; + } + h1, + h2, + h3, + h4, + h5, + h6, + .h1, + .h2, + .h3, + .h4, + .h5, + .h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; + } + h1 small, + h2 small, + h3 small, + h4 small, + h5 small, + h6 small, + .h1 small, + .h2 small, + .h3 small, + .h4 small, + .h5 small, + .h6 small, + h1 .small, + h2 .small, + h3 .small, + h4 .small, + h5 .small, + h6 .small, + .h1 .small, + .h2 .small, + .h3 .small, + .h4 .small, + .h5 .small, + .h6 .small { + font-weight: normal; + line-height: 1; + color: #777; + } + h1, + .h1, + h2, + .h2, + h3, + .h3 { + margin-top: 20px; + margin-bottom: 10px; + } + h1 small, + .h1 small, + h2 small, + .h2 small, + h3 small, + .h3 small, + h1 .small, + .h1 .small, + h2 .small, + .h2 .small, + h3 .small, + .h3 .small { + font-size: 65%; + } + h4, + .h4, + h5, + .h5, + h6, + .h6 { + margin-top: 10px; + margin-bottom: 10px; + } + h4 small, + .h4 small, + h5 small, + .h5 small, + h6 small, + .h6 small, + h4 .small, + .h4 .small, + h5 .small, + .h5 .small, + h6 .small, + .h6 .small { + font-size: 75%; + } + h1, + .h1 { + font-size: 36px; + } + h2, + .h2 { + font-size: 30px; + } + h3, + .h3 { + font-size: 24px; + } + h4, + .h4 { + font-size: 18px; + } + h5, + .h5 { + font-size: 14px; + } + h6, + .h6 { + font-size: 12px; + } + p { + margin: 0 0 10px; + } + .lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; + } + @media (min-width: 768px) { + .lead { + font-size: 21px; + } + } + small, + .small { + font-size: 85%; + } + mark, + .mark { + padding: 0.2em; + background-color: #fcf8e3; + } + .text-left { + text-align: left; + } + .text-right { + text-align: right; + } + .text-center { + text-align: center; + } + .text-justify { + text-align: justify; + } + .text-nowrap { + white-space: nowrap; + } + .text-lowercase { + text-transform: lowercase; + } + .text-uppercase { + text-transform: uppercase; + } + .text-capitalize { + text-transform: capitalize; + } + .text-muted { + color: #777; + } + .text-primary { + color: #337ab7; + } + a.text-primary:hover { + color: #286090; + } + .text-success { + color: #3c763d; + } + a.text-success:hover { + color: #2b542c; + } + .text-info { + color: #31708f; + } + a.text-info:hover { + color: #245269; + } + .text-warning { + color: #8a6d3b; + } + a.text-warning:hover { + color: #66512c; + } + .text-danger { + color: #a94442; + } + a.text-danger:hover { + color: #843534; + } + .bg-primary { + color: #fff; + background-color: #337ab7; + } + a.bg-primary:hover { + background-color: #286090; + } + .bg-success { + background-color: #dff0d8; + } + a.bg-success:hover { + background-color: #c1e2b3; + } + .bg-info { + background-color: #d9edf7; + } + a.bg-info:hover { + background-color: #afd9ee; + } + .bg-warning { + background-color: #fcf8e3; + } + a.bg-warning:hover { + background-color: #f7ecb5; + } + .bg-danger { + background-color: #f2dede; + } + a.bg-danger:hover { + background-color: #e4b9b9; + } + .page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; + } + ul, + ol { + margin-top: 0; + margin-bottom: 10px; + } + ul ul, + ol ul, + ul ol, + ol ol { + margin-bottom: 0; + } + .list-unstyled { + padding-left: 0; + list-style: none; + } + .list-inline { + padding-left: 0; + margin-left: -5px; + list-style: none; + } + .list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; + } + dl { + margin-top: 0; + margin-bottom: 20px; + } + dt, + dd { + line-height: 1.42857143; + } + dt { + font-weight: bold; + } + dd { + margin-left: 0; + } + @media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } + } + abbr[title], + abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777; + } + .initialism { + font-size: 90%; + text-transform: uppercase; + } + blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee; + } + blockquote p:last-child, + blockquote ul:last-child, + blockquote ol:last-child { + margin-bottom: 0; + } + blockquote footer, + blockquote small, + blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; + } + blockquote footer:before, + blockquote small:before, + blockquote .small:before { + content: "\2014 \00A0"; + } + .blockquote-reverse, + blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0; + } + .blockquote-reverse footer:before, + blockquote.pull-right footer:before, + .blockquote-reverse small:before, + blockquote.pull-right small:before, + .blockquote-reverse .small:before, + blockquote.pull-right .small:before { + content: ""; + } + .blockquote-reverse footer:after, + blockquote.pull-right footer:after, + .blockquote-reverse small:after, + blockquote.pull-right small:after, + .blockquote-reverse .small:after, + blockquote.pull-right .small:after { + content: "\00A0 \2014"; + } + address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; + } + code, + kbd, + pre, + samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + } + code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; + } + kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); + } + kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + -webkit-box-shadow: none; + box-shadow: none; + } + pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; + } + pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; + } + .pre-scrollable { + max-height: 340px; + overflow-y: scroll; + } + .container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + } + @media (min-width: 768px) { + .container { + width: 750px; + } + } + @media (min-width: 992px) { + .container { + width: 970px; + } + } + @media (min-width: 1200px) { + .container { + width: 1170px; + } + } + .container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + } + .row { + margin-right: -15px; + margin-left: -15px; + } + //.col-xs-1, + //.col-sm-1, + //.col-md-1, + //.col-lg-1, + //.col-xs-2, + //.col-sm-2, + //.col-md-2, + //.col-lg-2, + //.col-xs-3, + //.col-sm-3, + //.col-md-3, + //.col-lg-3, + //.col-xs-4, + //.col-sm-4, + //.col-md-4, + //.col-lg-4, + //.col-xs-5, + //.col-sm-5, + //.col-md-5, + //.col-lg-5, + //.col-xs-6, + //.col-sm-6, + //.col-md-6, + //.col-lg-6, + //.col-xs-7, + //.col-sm-7, + //.col-md-7, + //.col-lg-7, + //.col-xs-8, + //.col-sm-8, + //.col-md-8, + //.col-lg-8, + //.col-xs-9, + //.col-sm-9, + //.col-md-9, + //.col-lg-9, + //.col-xs-10, + //.col-sm-10, + //.col-md-10, + //.col-lg-10, + //.col-xs-11, + //.col-sm-11, + //.col-md-11, + //.col-lg-11, + //.col-xs-12, + //.col-sm-12, + //.col-md-12, + //.col-lg-12 { + // position: relative; + // min-height: 1px; + // padding-right: 15px; + // padding-left: 15px; + //} + //.col-xs-1, + //.col-xs-2, + //.col-xs-3, + //.col-xs-4, + //.col-xs-5, + //.col-xs-6, + //.col-xs-7, + //.col-xs-8, + //.col-xs-9, + //.col-xs-10, + //.col-xs-11, + //.col-xs-12 { + // float: left; + //} + //.col-xs-12 { + // width: 100%; + //} + //.col-xs-11 { + // width: 91.66666667%; + //} + //.col-xs-10 { + // width: 83.33333333%; + //} + //.col-xs-9 { + // width: 75%; + //} + //.col-xs-8 { + // width: 66.66666667%; + //} + //.col-xs-7 { + // width: 58.33333333%; + //} + //.col-xs-6 { + // width: 50%; + //} + //.col-xs-5 { + // width: 41.66666667%; + //} + //.col-xs-4 { + // width: 33.33333333%; + //} + //.col-xs-3 { + // width: 25%; + //} + //.col-xs-2 { + // width: 16.66666667%; + //} + //.col-xs-1 { + // width: 8.33333333%; + //} + //.col-xs-pull-12 { + // right: 100%; + //} + //.col-xs-pull-11 { + // right: 91.66666667%; + //} + //.col-xs-pull-10 { + // right: 83.33333333%; + //} + //.col-xs-pull-9 { + // right: 75%; + //} + //.col-xs-pull-8 { + // right: 66.66666667%; + //} + //.col-xs-pull-7 { + // right: 58.33333333%; + //} + //.col-xs-pull-6 { + // right: 50%; + //} + //.col-xs-pull-5 { + // right: 41.66666667%; + //} + //.col-xs-pull-4 { + // right: 33.33333333%; + //} + //.col-xs-pull-3 { + // right: 25%; + //} + //.col-xs-pull-2 { + // right: 16.66666667%; + //} + //.col-xs-pull-1 { + // right: 8.33333333%; + //} + //.col-xs-pull-0 { + // right: auto; + //} + //.col-xs-push-12 { + // left: 100%; + //} + //.col-xs-push-11 { + // left: 91.66666667%; + //} + //.col-xs-push-10 { + // left: 83.33333333%; + //} + //.col-xs-push-9 { + // left: 75%; + //} + //.col-xs-push-8 { + // left: 66.66666667%; + //} + //.col-xs-push-7 { + // left: 58.33333333%; + //} + //.col-xs-push-6 { + // left: 50%; + //} + //.col-xs-push-5 { + // left: 41.66666667%; + //} + //.col-xs-push-4 { + // left: 33.33333333%; + //} + //.col-xs-push-3 { + // left: 25%; + //} + //.col-xs-push-2 { + // left: 16.66666667%; + //} + //.col-xs-push-1 { + // left: 8.33333333%; + //} + //.col-xs-push-0 { + // left: auto; + //} + //.col-xs-offset-12 { + // margin-left: 100%; + //} + //.col-xs-offset-11 { + // margin-left: 91.66666667%; + //} + //.col-xs-offset-10 { + // margin-left: 83.33333333%; + //} + //.col-xs-offset-9 { + // margin-left: 75%; + //} + //.col-xs-offset-8 { + // margin-left: 66.66666667%; + //} + //.col-xs-offset-7 { + // margin-left: 58.33333333%; + //} + //.col-xs-offset-6 { + // margin-left: 50%; + //} + //.col-xs-offset-5 { + // margin-left: 41.66666667%; + //} + //.col-xs-offset-4 { + // margin-left: 33.33333333%; + //} + //.col-xs-offset-3 { + // margin-left: 25%; + //} + //.col-xs-offset-2 { + // margin-left: 16.66666667%; + //} + //.col-xs-offset-1 { + // margin-left: 8.33333333%; + //} + //.col-xs-offset-0 { + // margin-left: 0; + //} + //@media (min-width: 768px) { + // .col-sm-1, + // .col-sm-2, + // .col-sm-3, + // .col-sm-4, + // .col-sm-5, + // .col-sm-6, + // .col-sm-7, + // .col-sm-8, + // .col-sm-9, + // .col-sm-10, + // .col-sm-11, + // .col-sm-12 { + // float: left; + // } + // .col-sm-12 { + // width: 100%; + // } + // .col-sm-11 { + // width: 91.66666667%; + // } + // .col-sm-10 { + // width: 83.33333333%; + // } + // .col-sm-9 { + // width: 75%; + // } + // .col-sm-8 { + // width: 66.66666667%; + // } + // .col-sm-7 { + // width: 58.33333333%; + // } + // .col-sm-6 { + // width: 50%; + // } + // .col-sm-5 { + // width: 41.66666667%; + // } + // .col-sm-4 { + // width: 33.33333333%; + // } + // .col-sm-3 { + // width: 25%; + // } + // .col-sm-2 { + // width: 16.66666667%; + // } + // .col-sm-1 { + // width: 8.33333333%; + // } + // .col-sm-pull-12 { + // right: 100%; + // } + // .col-sm-pull-11 { + // right: 91.66666667%; + // } + // .col-sm-pull-10 { + // right: 83.33333333%; + // } + // .col-sm-pull-9 { + // right: 75%; + // } + // .col-sm-pull-8 { + // right: 66.66666667%; + // } + // .col-sm-pull-7 { + // right: 58.33333333%; + // } + // .col-sm-pull-6 { + // right: 50%; + // } + // .col-sm-pull-5 { + // right: 41.66666667%; + // } + // .col-sm-pull-4 { + // right: 33.33333333%; + // } + // .col-sm-pull-3 { + // right: 25%; + // } + // .col-sm-pull-2 { + // right: 16.66666667%; + // } + // .col-sm-pull-1 { + // right: 8.33333333%; + // } + // .col-sm-pull-0 { + // right: auto; + // } + // .col-sm-push-12 { + // left: 100%; + // } + // .col-sm-push-11 { + // left: 91.66666667%; + // } + // .col-sm-push-10 { + // left: 83.33333333%; + // } + // .col-sm-push-9 { + // left: 75%; + // } + // .col-sm-push-8 { + // left: 66.66666667%; + // } + // .col-sm-push-7 { + // left: 58.33333333%; + // } + // .col-sm-push-6 { + // left: 50%; + // } + // .col-sm-push-5 { + // left: 41.66666667%; + // } + // .col-sm-push-4 { + // left: 33.33333333%; + // } + // .col-sm-push-3 { + // left: 25%; + // } + // .col-sm-push-2 { + // left: 16.66666667%; + // } + // .col-sm-push-1 { + // left: 8.33333333%; + // } + // .col-sm-push-0 { + // left: auto; + // } + // .col-sm-offset-12 { + // margin-left: 100%; + // } + // .col-sm-offset-11 { + // margin-left: 91.66666667%; + // } + // .col-sm-offset-10 { + // margin-left: 83.33333333%; + // } + // .col-sm-offset-9 { + // margin-left: 75%; + // } + // .col-sm-offset-8 { + // margin-left: 66.66666667%; + // } + // .col-sm-offset-7 { + // margin-left: 58.33333333%; + // } + // .col-sm-offset-6 { + // margin-left: 50%; + // } + // .col-sm-offset-5 { + // margin-left: 41.66666667%; + // } + // .col-sm-offset-4 { + // margin-left: 33.33333333%; + // } + // .col-sm-offset-3 { + // margin-left: 25%; + // } + // .col-sm-offset-2 { + // margin-left: 16.66666667%; + // } + // .col-sm-offset-1 { + // margin-left: 8.33333333%; + // } + // .col-sm-offset-0 { + // margin-left: 0; + // } + //} + //@media (min-width: 992px) { + // .col-md-1, + // .col-md-2, + // .col-md-3, + // .col-md-4, + // .col-md-5, + // .col-md-6, + // .col-md-7, + // .col-md-8, + // .col-md-9, + // .col-md-10, + // .col-md-11, + // .col-md-12 { + // float: left; + // } + // .col-md-12 { + // width: 100%; + // } + // .col-md-11 { + // width: 91.66666667%; + // } + // .col-md-10 { + // width: 83.33333333%; + // } + // .col-md-9 { + // width: 75%; + // } + // .col-md-8 { + // width: 66.66666667%; + // } + // .col-md-7 { + // width: 58.33333333%; + // } + // .col-md-6 { + // width: 50%; + // } + // .col-md-5 { + // width: 41.66666667%; + // } + // .col-md-4 { + // width: 33.33333333%; + // } + // .col-md-3 { + // width: 25%; + // } + // .col-md-2 { + // width: 16.66666667%; + // } + // .col-md-1 { + // width: 8.33333333%; + // } + // .col-md-pull-12 { + // right: 100%; + // } + // .col-md-pull-11 { + // right: 91.66666667%; + // } + // .col-md-pull-10 { + // right: 83.33333333%; + // } + // .col-md-pull-9 { + // right: 75%; + // } + // .col-md-pull-8 { + // right: 66.66666667%; + // } + // .col-md-pull-7 { + // right: 58.33333333%; + // } + // .col-md-pull-6 { + // right: 50%; + // } + // .col-md-pull-5 { + // right: 41.66666667%; + // } + // .col-md-pull-4 { + // right: 33.33333333%; + // } + // .col-md-pull-3 { + // right: 25%; + // } + // .col-md-pull-2 { + // right: 16.66666667%; + // } + // .col-md-pull-1 { + // right: 8.33333333%; + // } + // .col-md-pull-0 { + // right: auto; + // } + // .col-md-push-12 { + // left: 100%; + // } + // .col-md-push-11 { + // left: 91.66666667%; + // } + // .col-md-push-10 { + // left: 83.33333333%; + // } + // .col-md-push-9 { + // left: 75%; + // } + // .col-md-push-8 { + // left: 66.66666667%; + // } + // .col-md-push-7 { + // left: 58.33333333%; + // } + // .col-md-push-6 { + // left: 50%; + // } + // .col-md-push-5 { + // left: 41.66666667%; + // } + // .col-md-push-4 { + // left: 33.33333333%; + // } + // .col-md-push-3 { + // left: 25%; + // } + // .col-md-push-2 { + // left: 16.66666667%; + // } + // .col-md-push-1 { + // left: 8.33333333%; + // } + // .col-md-push-0 { + // left: auto; + // } + // .col-md-offset-12 { + // margin-left: 100%; + // } + // .col-md-offset-11 { + // margin-left: 91.66666667%; + // } + // .col-md-offset-10 { + // margin-left: 83.33333333%; + // } + // .col-md-offset-9 { + // margin-left: 75%; + // } + // .col-md-offset-8 { + // margin-left: 66.66666667%; + // } + // .col-md-offset-7 { + // margin-left: 58.33333333%; + // } + // .col-md-offset-6 { + // margin-left: 50%; + // } + // .col-md-offset-5 { + // margin-left: 41.66666667%; + // } + // .col-md-offset-4 { + // margin-left: 33.33333333%; + // } + // .col-md-offset-3 { + // margin-left: 25%; + // } + // .col-md-offset-2 { + // margin-left: 16.66666667%; + // } + // .col-md-offset-1 { + // margin-left: 8.33333333%; + // } + // .col-md-offset-0 { + // margin-left: 0; + // } + //} + //@media (min-width: 1200px) { + // .col-lg-1, + // .col-lg-2, + // .col-lg-3, + // .col-lg-4, + // .col-lg-5, + // .col-lg-6, + // .col-lg-7, + // .col-lg-8, + // .col-lg-9, + // .col-lg-10, + // .col-lg-11, + // .col-lg-12 { + // float: left; + // } + // .col-lg-12 { + // width: 100%; + // } + // .col-lg-11 { + // width: 91.66666667%; + // } + // .col-lg-10 { + // width: 83.33333333%; + // } + // .col-lg-9 { + // width: 75%; + // } + // .col-lg-8 { + // width: 66.66666667%; + // } + // .col-lg-7 { + // width: 58.33333333%; + // } + // .col-lg-6 { + // width: 50%; + // } + // .col-lg-5 { + // width: 41.66666667%; + // } + // .col-lg-4 { + // width: 33.33333333%; + // } + // .col-lg-3 { + // width: 25%; + // } + // .col-lg-2 { + // width: 16.66666667%; + // } + // .col-lg-1 { + // width: 8.33333333%; + // } + // .col-lg-pull-12 { + // right: 100%; + // } + // .col-lg-pull-11 { + // right: 91.66666667%; + // } + // .col-lg-pull-10 { + // right: 83.33333333%; + // } + // .col-lg-pull-9 { + // right: 75%; + // } + // .col-lg-pull-8 { + // right: 66.66666667%; + // } + // .col-lg-pull-7 { + // right: 58.33333333%; + // } + // .col-lg-pull-6 { + // right: 50%; + // } + // .col-lg-pull-5 { + // right: 41.66666667%; + // } + // .col-lg-pull-4 { + // right: 33.33333333%; + // } + // .col-lg-pull-3 { + // right: 25%; + // } + // .col-lg-pull-2 { + // right: 16.66666667%; + // } + // .col-lg-pull-1 { + // right: 8.33333333%; + // } + // .col-lg-pull-0 { + // right: auto; + // } + // .col-lg-push-12 { + // left: 100%; + // } + // .col-lg-push-11 { + // left: 91.66666667%; + // } + // .col-lg-push-10 { + // left: 83.33333333%; + // } + // .col-lg-push-9 { + // left: 75%; + // } + // .col-lg-push-8 { + // left: 66.66666667%; + // } + // .col-lg-push-7 { + // left: 58.33333333%; + // } + // .col-lg-push-6 { + // left: 50%; + // } + // .col-lg-push-5 { + // left: 41.66666667%; + // } + // .col-lg-push-4 { + // left: 33.33333333%; + // } + // .col-lg-push-3 { + // left: 25%; + // } + // .col-lg-push-2 { + // left: 16.66666667%; + // } + // .col-lg-push-1 { + // left: 8.33333333%; + // } + // .col-lg-push-0 { + // left: auto; + // } + // .col-lg-offset-12 { + // margin-left: 100%; + // } + // .col-lg-offset-11 { + // margin-left: 91.66666667%; + // } + // .col-lg-offset-10 { + // margin-left: 83.33333333%; + // } + // .col-lg-offset-9 { + // margin-left: 75%; + // } + // .col-lg-offset-8 { + // margin-left: 66.66666667%; + // } + // .col-lg-offset-7 { + // margin-left: 58.33333333%; + // } + // .col-lg-offset-6 { + // margin-left: 50%; + // } + // .col-lg-offset-5 { + // margin-left: 41.66666667%; + // } + // .col-lg-offset-4 { + // margin-left: 33.33333333%; + // } + // .col-lg-offset-3 { + // margin-left: 25%; + // } + // .col-lg-offset-2 { + // margin-left: 16.66666667%; + // } + // .col-lg-offset-1 { + // margin-left: 8.33333333%; + // } + // .col-lg-offset-0 { + // margin-left: 0; + // } + //} + table { + background-color: transparent; + } + caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left; + } + th { + text-align: left; + } + .table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; + } + .table > thead > tr > th, + .table > tbody > tr > th, + .table > tfoot > tr > th, + .table > thead > tr > td, + .table > tbody > tr > td, + .table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; + } + .table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; + } + .table > caption + thead > tr:first-child > th, + .table > colgroup + thead > tr:first-child > th, + .table > thead:first-child > tr:first-child > th, + .table > caption + thead > tr:first-child > td, + .table > colgroup + thead > tr:first-child > td, + .table > thead:first-child > tr:first-child > td { + border-top: 0; + } + .table > tbody + tbody { + border-top: 2px solid #ddd; + } + .table .table { + background-color: #fff; + } + .table-condensed > thead > tr > th, + .table-condensed > tbody > tr > th, + .table-condensed > tfoot > tr > th, + .table-condensed > thead > tr > td, + .table-condensed > tbody > tr > td, + .table-condensed > tfoot > tr > td { + padding: 5px; + } + .table-bordered { + border: 1px solid #ddd; + } + .table-bordered > thead > tr > th, + .table-bordered > tbody > tr > th, + .table-bordered > tfoot > tr > th, + .table-bordered > thead > tr > td, + .table-bordered > tbody > tr > td, + .table-bordered > tfoot > tr > td { + border: 1px solid #ddd; + } + .table-bordered > thead > tr > th, + .table-bordered > thead > tr > td { + border-bottom-width: 2px; + } + .table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9; + } + .table-hover > tbody > tr:hover { + background-color: #f5f5f5; + } + table col[class*="col-"] { + position: static; + display: table-column; + float: none; + } + table td[class*="col-"], + table th[class*="col-"] { + position: static; + display: table-cell; + float: none; + } + .table > thead > tr > td.active, + .table > tbody > tr > td.active, + .table > tfoot > tr > td.active, + .table > thead > tr > th.active, + .table > tbody > tr > th.active, + .table > tfoot > tr > th.active, + .table > thead > tr.active > td, + .table > tbody > tr.active > td, + .table > tfoot > tr.active > td, + .table > thead > tr.active > th, + .table > tbody > tr.active > th, + .table > tfoot > tr.active > th { + background-color: #f5f5f5; + } + .table-hover > tbody > tr > td.active:hover, + .table-hover > tbody > tr > th.active:hover, + .table-hover > tbody > tr.active:hover > td, + .table-hover > tbody > tr:hover > .active, + .table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; + } + .table > thead > tr > td.success, + .table > tbody > tr > td.success, + .table > tfoot > tr > td.success, + .table > thead > tr > th.success, + .table > tbody > tr > th.success, + .table > tfoot > tr > th.success, + .table > thead > tr.success > td, + .table > tbody > tr.success > td, + .table > tfoot > tr.success > td, + .table > thead > tr.success > th, + .table > tbody > tr.success > th, + .table > tfoot > tr.success > th { + background-color: #dff0d8; + } + .table-hover > tbody > tr > td.success:hover, + .table-hover > tbody > tr > th.success:hover, + .table-hover > tbody > tr.success:hover > td, + .table-hover > tbody > tr:hover > .success, + .table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; + } + .table > thead > tr > td.info, + .table > tbody > tr > td.info, + .table > tfoot > tr > td.info, + .table > thead > tr > th.info, + .table > tbody > tr > th.info, + .table > tfoot > tr > th.info, + .table > thead > tr.info > td, + .table > tbody > tr.info > td, + .table > tfoot > tr.info > td, + .table > thead > tr.info > th, + .table > tbody > tr.info > th, + .table > tfoot > tr.info > th { + background-color: #d9edf7; + } + .table-hover > tbody > tr > td.info:hover, + .table-hover > tbody > tr > th.info:hover, + .table-hover > tbody > tr.info:hover > td, + .table-hover > tbody > tr:hover > .info, + .table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; + } + .table > thead > tr > td.warning, + .table > tbody > tr > td.warning, + .table > tfoot > tr > td.warning, + .table > thead > tr > th.warning, + .table > tbody > tr > th.warning, + .table > tfoot > tr > th.warning, + .table > thead > tr.warning > td, + .table > tbody > tr.warning > td, + .table > tfoot > tr.warning > td, + .table > thead > tr.warning > th, + .table > tbody > tr.warning > th, + .table > tfoot > tr.warning > th { + background-color: #fcf8e3; + } + .table-hover > tbody > tr > td.warning:hover, + .table-hover > tbody > tr > th.warning:hover, + .table-hover > tbody > tr.warning:hover > td, + .table-hover > tbody > tr:hover > .warning, + .table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; + } + .table > thead > tr > td.danger, + .table > tbody > tr > td.danger, + .table > tfoot > tr > td.danger, + .table > thead > tr > th.danger, + .table > tbody > tr > th.danger, + .table > tfoot > tr > th.danger, + .table > thead > tr.danger > td, + .table > tbody > tr.danger > td, + .table > tfoot > tr.danger > td, + .table > thead > tr.danger > th, + .table > tbody > tr.danger > th, + .table > tfoot > tr.danger > th { + background-color: #f2dede; + } + .table-hover > tbody > tr > td.danger:hover, + .table-hover > tbody > tr > th.danger:hover, + .table-hover > tbody > tr.danger:hover > td, + .table-hover > tbody > tr:hover > .danger, + .table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; + } + .table-responsive { + min-height: 0.01%; + overflow-x: auto; + } + @media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } + } + fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; + } + legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; + } + label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; + } + input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + input[type="radio"], + input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; + } + input[type="file"] { + display: block; + } + input[type="range"] { + display: block; + width: 100%; + } + select[multiple], + select[size] { + height: auto; + } + input[type="file"]:focus, + input[type="radio"]:focus, + input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } + output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + } + //.form-control { + // display: block; + // width: 100%; + // height: 34px; + // padding: 6px 12px; + // font-size: 14px; + // line-height: 1.42857143; + // color: #555; + // background-color: #fff; + // background-image: none; + // border: 1px solid #ccc; + // border-radius: 4px; + // -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + // box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + // -webkit-transition: border-color ease-in-out 0.15s, -webkit-box-shadow ease-in-out 0.15s; + // -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + // transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + //} + //.form-control:focus { + // border-color: #66afe9; + // outline: 0; + // -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + // box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + //} + //.form-control::-moz-placeholder { + // color: #999; + // opacity: 1; + //} + //.form-control:-ms-input-placeholder { + // color: #999; + //} + //.form-control::-webkit-input-placeholder { + // color: #999; + //} + //.form-control[disabled], + //.form-control[readonly], + //fieldset[disabled] .form-control { + // background-color: #eee; + // opacity: 1; + //} + //.form-control[disabled], + //fieldset[disabled] .form-control { + // cursor: not-allowed; + //} + //textarea.form-control { + // height: auto; + //} + //input[type='search'] { + // -webkit-appearance: none; + //} + // @media screen and (-webkit-min-device-pixel-ratio: 0) { + // input[type='date'], + // input[type='time'], + // input[type='datetime-local'], + // input[type='month'] { + // line-height: 34px; + // } + // input[type='date'].input-sm, + // input[type='time'].input-sm, + // input[type='datetime-local'].input-sm, + // input[type='month'].input-sm, + // .input-group-sm input[type='date'], + // .input-group-sm input[type='time'], + // .input-group-sm input[type='datetime-local'], + // .input-group-sm input[type='month'] { + // line-height: 30px; + // } + // input[type='date'].input-lg, + // input[type='time'].input-lg, + // input[type='datetime-local'].input-lg, + // input[type='month'].input-lg, + // .input-group-lg input[type='date'], + // .input-group-lg input[type='time'], + // .input-group-lg input[type='datetime-local'], + // .input-group-lg input[type='month'] { + // line-height: 46px; + // } + // } + //.form-group { + // margin-bottom: 15px; + //} + .radio, + .checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; + } + .radio label, + .checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; + } + .radio input[type="radio"], + .radio-inline input[type="radio"], + .checkbox input[type="checkbox"], + .checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 4px \9; + margin-left: -20px; + } + .radio + .radio, + .checkbox + .checkbox { + margin-top: -5px; + } + .radio-inline, + .checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; + } + .radio-inline + .radio-inline, + .checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; + } + input[type="radio"][disabled], + input[type="checkbox"][disabled], + input[type="radio"].disabled, + input[type="checkbox"].disabled, + fieldset[disabled] input[type="radio"], + fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; + } + .radio-inline.disabled, + .checkbox-inline.disabled, + fieldset[disabled] .radio-inline, + fieldset[disabled] .checkbox-inline { + cursor: not-allowed; + } + .radio.disabled label, + .checkbox.disabled label, + fieldset[disabled] .radio label, + fieldset[disabled] .checkbox label { + cursor: not-allowed; + } + .form-control-static { + min-height: 34px; + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; + } + .form-control-static.input-lg, + .form-control-static.input-sm { + padding-right: 0; + padding-left: 0; + } + .input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } + select.input-sm { + height: 30px; + line-height: 30px; + } + textarea.input-sm, + select[multiple].input-sm { + height: auto; + } + .form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } + select.form-group-sm .form-control { + height: 30px; + line-height: 30px; + } + textarea.form-group-sm .form-control, + select[multiple].form-group-sm .form-control { + height: auto; + } + .form-group-sm .form-control-static { + height: 30px; + min-height: 32px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + } + .input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; + } + select.input-lg { + height: 46px; + line-height: 46px; + } + textarea.input-lg, + select[multiple].input-lg { + height: auto; + } + .form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; + } + select.form-group-lg .form-control { + height: 46px; + line-height: 46px; + } + textarea.form-group-lg .form-control, + select[multiple].form-group-lg .form-control { + height: auto; + } + .form-group-lg .form-control-static { + height: 46px; + min-height: 38px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + } + .has-feedback { + position: relative; + } + .has-feedback .form-control { + padding-right: 42.5px; + } + .form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; + } + .input-lg + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; + } + .input-sm + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; + } + .has-success .help-block, + .has-success .control-label, + .has-success .radio, + .has-success .checkbox, + .has-success .radio-inline, + .has-success .checkbox-inline, + .has-success.radio label, + .has-success.checkbox label, + .has-success.radio-inline label, + .has-success.checkbox-inline label { + color: #3c763d; + } + .has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + } + .has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; + } + .has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; + } + .has-success .form-control-feedback { + color: #3c763d; + } + .has-warning .help-block, + .has-warning .control-label, + .has-warning .radio, + .has-warning .checkbox, + .has-warning .radio-inline, + .has-warning .checkbox-inline, + .has-warning.radio label, + .has-warning.checkbox label, + .has-warning.radio-inline label, + .has-warning.checkbox-inline label { + color: #8a6d3b; + } + .has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + } + .has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; + } + .has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; + } + .has-warning .form-control-feedback { + color: #8a6d3b; + } + .has-error .help-block, + .has-error .control-label, + .has-error .radio, + .has-error .checkbox, + .has-error .radio-inline, + .has-error .checkbox-inline, + .has-error.radio label, + .has-error.checkbox label, + .has-error.radio-inline label, + .has-error.checkbox-inline label { + color: #a94442; + } + .has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + } + .has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; + } + .has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; + } + .has-error .form-control-feedback { + color: #a94442; + } + .has-feedback label ~ .form-control-feedback { + top: 25px; + } + .has-feedback label.sr-only ~ .form-control-feedback { + top: 0; + } + .help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; + } + @media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } + } + .form-horizontal .radio, + .form-horizontal .checkbox, + .form-horizontal .radio-inline, + .form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; + } + .form-horizontal .radio, + .form-horizontal .checkbox { + min-height: 27px; + } + .form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; + } + @media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right; + } + } + .form-horizontal .has-feedback .form-control-feedback { + right: 15px; + } + @media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 14.333333px; + } + } + @media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + } + } + .btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; + } + .btn:focus, + .btn:active:focus, + .btn.active:focus, + .btn.focus, + .btn:active.focus, + .btn.active.focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } + .btn:hover, + .btn:focus, + .btn.focus { + color: #333; + text-decoration: none; + } + .btn:active, + .btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + } + .btn.disabled, + .btn[disabled], + fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: 0.65; + } + .btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; + } + .btn-default:hover, + .btn-default:focus, + .btn-default.focus, + .btn-default:active, + .btn-default.active, + .open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; + } + .btn-default:active, + .btn-default.active, + .open > .dropdown-toggle.btn-default { + background-image: none; + } + .btn-default.disabled, + .btn-default[disabled], + fieldset[disabled] .btn-default, + .btn-default.disabled:hover, + .btn-default[disabled]:hover, + fieldset[disabled] .btn-default:hover, + .btn-default.disabled:focus, + .btn-default[disabled]:focus, + fieldset[disabled] .btn-default:focus, + .btn-default.disabled.focus, + .btn-default[disabled].focus, + fieldset[disabled] .btn-default.focus, + .btn-default.disabled:active, + .btn-default[disabled]:active, + fieldset[disabled] .btn-default:active, + .btn-default.disabled.active, + .btn-default[disabled].active, + fieldset[disabled] .btn-default.active { + background-color: #fff; + border-color: #ccc; + } + .btn-default .badge { + color: #fff; + background-color: #333; + } + .btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4; + } + .btn-primary:hover, + .btn-primary:focus, + .btn-primary.focus, + .btn-primary:active, + .btn-primary.active, + .open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + border-color: #204d74; + } + .btn-primary:active, + .btn-primary.active, + .open > .dropdown-toggle.btn-primary { + background-image: none; + } + .btn-primary.disabled, + .btn-primary[disabled], + fieldset[disabled] .btn-primary, + .btn-primary.disabled:hover, + .btn-primary[disabled]:hover, + fieldset[disabled] .btn-primary:hover, + .btn-primary.disabled:focus, + .btn-primary[disabled]:focus, + fieldset[disabled] .btn-primary:focus, + .btn-primary.disabled.focus, + .btn-primary[disabled].focus, + fieldset[disabled] .btn-primary.focus, + .btn-primary.disabled:active, + .btn-primary[disabled]:active, + fieldset[disabled] .btn-primary:active, + .btn-primary.disabled.active, + .btn-primary[disabled].active, + fieldset[disabled] .btn-primary.active { + background-color: #337ab7; + border-color: #2e6da4; + } + .btn-primary .badge { + color: #337ab7; + background-color: #fff; + } + .btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; + } + .btn-success:hover, + .btn-success:focus, + .btn-success.focus, + .btn-success:active, + .btn-success.active, + .open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439; + } + .btn-success:active, + .btn-success.active, + .open > .dropdown-toggle.btn-success { + background-image: none; + } + .btn-success.disabled, + .btn-success[disabled], + fieldset[disabled] .btn-success, + .btn-success.disabled:hover, + .btn-success[disabled]:hover, + fieldset[disabled] .btn-success:hover, + .btn-success.disabled:focus, + .btn-success[disabled]:focus, + fieldset[disabled] .btn-success:focus, + .btn-success.disabled.focus, + .btn-success[disabled].focus, + fieldset[disabled] .btn-success.focus, + .btn-success.disabled:active, + .btn-success[disabled]:active, + fieldset[disabled] .btn-success:active, + .btn-success.disabled.active, + .btn-success[disabled].active, + fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; + } + .btn-success .badge { + color: #5cb85c; + background-color: #fff; + } + .btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; + } + .btn-info:hover, + .btn-info:focus, + .btn-info.focus, + .btn-info:active, + .btn-info.active, + .open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; + } + .btn-info:active, + .btn-info.active, + .open > .dropdown-toggle.btn-info { + background-image: none; + } + .btn-info.disabled, + .btn-info[disabled], + fieldset[disabled] .btn-info, + .btn-info.disabled:hover, + .btn-info[disabled]:hover, + fieldset[disabled] .btn-info:hover, + .btn-info.disabled:focus, + .btn-info[disabled]:focus, + fieldset[disabled] .btn-info:focus, + .btn-info.disabled.focus, + .btn-info[disabled].focus, + fieldset[disabled] .btn-info.focus, + .btn-info.disabled:active, + .btn-info[disabled]:active, + fieldset[disabled] .btn-info:active, + .btn-info.disabled.active, + .btn-info[disabled].active, + fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; + } + .btn-info .badge { + color: #5bc0de; + background-color: #fff; + } + .btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; + } + .btn-warning:hover, + .btn-warning:focus, + .btn-warning.focus, + .btn-warning:active, + .btn-warning.active, + .open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512; + } + .btn-warning:active, + .btn-warning.active, + .open > .dropdown-toggle.btn-warning { + background-image: none; + } + .btn-warning.disabled, + .btn-warning[disabled], + fieldset[disabled] .btn-warning, + .btn-warning.disabled:hover, + .btn-warning[disabled]:hover, + fieldset[disabled] .btn-warning:hover, + .btn-warning.disabled:focus, + .btn-warning[disabled]:focus, + fieldset[disabled] .btn-warning:focus, + .btn-warning.disabled.focus, + .btn-warning[disabled].focus, + fieldset[disabled] .btn-warning.focus, + .btn-warning.disabled:active, + .btn-warning[disabled]:active, + fieldset[disabled] .btn-warning:active, + .btn-warning.disabled.active, + .btn-warning[disabled].active, + fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; + } + .btn-warning .badge { + color: #f0ad4e; + background-color: #fff; + } + .btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; + } + .btn-danger:hover, + .btn-danger:focus, + .btn-danger.focus, + .btn-danger:active, + .btn-danger.active, + .open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; + } + .btn-danger:active, + .btn-danger.active, + .open > .dropdown-toggle.btn-danger { + background-image: none; + } + .btn-danger.disabled, + .btn-danger[disabled], + fieldset[disabled] .btn-danger, + .btn-danger.disabled:hover, + .btn-danger[disabled]:hover, + fieldset[disabled] .btn-danger:hover, + .btn-danger.disabled:focus, + .btn-danger[disabled]:focus, + fieldset[disabled] .btn-danger:focus, + .btn-danger.disabled.focus, + .btn-danger[disabled].focus, + fieldset[disabled] .btn-danger.focus, + .btn-danger.disabled:active, + .btn-danger[disabled]:active, + fieldset[disabled] .btn-danger:active, + .btn-danger.disabled.active, + .btn-danger[disabled].active, + fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; + } + .btn-danger .badge { + color: #d9534f; + background-color: #fff; + } + .btn-link { + font-weight: normal; + color: #337ab7; + border-radius: 0; + } + .btn-link, + .btn-link:active, + .btn-link.active, + .btn-link[disabled], + fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; + } + .btn-link, + .btn-link:hover, + .btn-link:focus, + .btn-link:active { + border-color: transparent; + } + .btn-link:hover, + .btn-link:focus { + color: #23527c; + text-decoration: underline; + background-color: transparent; + } + .btn-link[disabled]:hover, + fieldset[disabled] .btn-link:hover, + .btn-link[disabled]:focus, + fieldset[disabled] .btn-link:focus { + color: #777; + text-decoration: none; + } + .btn-lg, + .btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; + } + .btn-sm, + .btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } + .btn-xs, + .btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } + //.btn-block { + // display: block; + // width: 100%; + //} + //.btn-block + .btn-block { + // margin-top: 5px; + //} + //input[type='submit'].btn-block, + //input[type='reset'].btn-block, + //input[type='button'].btn-block { + // width: 100%; + //} + .fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; + } + .fade.in { + opacity: 1; + } + .collapse { + display: none; + } + .collapse.in { + display: block; + } + tr.collapse.in { + display: table-row; + } + tbody.collapse.in { + display: table-row-group; + } + .collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; + -webkit-transition-duration: 0.35s; + -o-transition-duration: 0.35s; + transition-duration: 0.35s; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; + } + .caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + } + .dropup, + .dropdown { + position: relative; + } + .dropdown-toggle:focus { + outline: 0; + } + .dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + } + .dropdown-menu.pull-right { + right: 0; + left: auto; + } + .dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; + } + .dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; + } + .dropdown-menu > li > a:hover, + .dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; + } + .dropdown-menu > .active > a, + .dropdown-menu > .active > a:hover, + .dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; + } + .dropdown-menu > .disabled > a, + .dropdown-menu > .disabled > a:hover, + .dropdown-menu > .disabled > a:focus { + color: #777; + } + .dropdown-menu > .disabled > a:hover, + .dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + } + .open > .dropdown-menu { + display: block; + } + .open > a { + outline: 0; + } + .dropdown-menu-right { + right: 0; + left: auto; + } + .dropdown-menu-left { + right: auto; + left: 0; + } + .dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap; + } + .dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; + } + .pull-right > .dropdown-menu { + right: 0; + left: auto; + } + .dropup .caret, + .navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px solid; + } + .dropup .dropdown-menu, + .navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; + } + @media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } + } + .btn-group, + .btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; + } + .btn-group > .btn, + .btn-group-vertical > .btn { + position: relative; + float: left; + } + .btn-group > .btn:hover, + .btn-group-vertical > .btn:hover, + .btn-group > .btn:focus, + .btn-group-vertical > .btn:focus, + .btn-group > .btn:active, + .btn-group-vertical > .btn:active, + .btn-group > .btn.active, + .btn-group-vertical > .btn.active { + z-index: 2; + } + .btn-group .btn + .btn, + .btn-group .btn + .btn-group, + .btn-group .btn-group + .btn, + .btn-group .btn-group + .btn-group { + margin-left: -1px; + } + .btn-toolbar { + margin-left: -5px; + } + .btn-toolbar .btn-group, + .btn-toolbar .input-group { + float: left; + } + .btn-toolbar > .btn, + .btn-toolbar > .btn-group, + .btn-toolbar > .input-group { + margin-left: 5px; + } + .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; + } + .btn-group > .btn:first-child { + margin-left: 0; + } + .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .btn-group > .btn:last-child:not(:first-child), + .btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .btn-group > .btn-group { + float: left; + } + .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; + } + .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, + .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .btn-group .dropdown-toggle:active, + .btn-group.open .dropdown-toggle { + outline: 0; + } + .btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; + } + .btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; + } + .btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + } + .btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; + } + .btn .caret { + margin-left: 0; + } + .btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; + } + .dropup .btn-lg .caret { + border-width: 0 5px 5px; + } + .btn-group-vertical > .btn, + .btn-group-vertical > .btn-group, + .btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; + } + .btn-group-vertical > .btn-group > .btn { + float: none; + } + .btn-group-vertical > .btn + .btn, + .btn-group-vertical > .btn + .btn-group, + .btn-group-vertical > .btn-group + .btn, + .btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; + } + .btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; + } + .btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + .btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 4px; + } + .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; + } + .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, + .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; + } + .btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; + } + .btn-group-justified > .btn, + .btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1%; + } + .btn-group-justified > .btn-group .btn { + width: 100%; + } + .btn-group-justified > .btn-group .dropdown-menu { + left: auto; + } + [data-toggle="buttons"] > .btn input[type="radio"], + [data-toggle="buttons"] > .btn-group > .btn input[type="radio"], + [data-toggle="buttons"] > .btn input[type="checkbox"], + [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; + } + .input-group { + position: relative; + display: table; + border-collapse: separate; + } + .input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; + } + .input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; + } + .input-group-lg > .form-control, + .input-group-lg > .input-group-addon, + .input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; + } + select.input-group-lg > .form-control, + select.input-group-lg > .input-group-addon, + select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; + } + textarea.input-group-lg > .form-control, + textarea.input-group-lg > .input-group-addon, + textarea.input-group-lg > .input-group-btn > .btn, + select[multiple].input-group-lg > .form-control, + select[multiple].input-group-lg > .input-group-addon, + select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; + } + .input-group-sm > .form-control, + .input-group-sm > .input-group-addon, + .input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } + select.input-group-sm > .form-control, + select.input-group-sm > .input-group-addon, + select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; + } + textarea.input-group-sm > .form-control, + textarea.input-group-sm > .input-group-addon, + textarea.input-group-sm > .input-group-btn > .btn, + select[multiple].input-group-sm > .form-control, + select[multiple].input-group-sm > .input-group-addon, + select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; + } + .input-group-addon, + .input-group-btn, + .input-group .form-control { + display: table-cell; + } + .input-group-addon:not(:first-child):not(:last-child), + .input-group-btn:not(:first-child):not(:last-child), + .input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; + } + .input-group-addon, + .input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; + } + .input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; + } + .input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; + } + .input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; + } + .input-group-addon input[type="radio"], + .input-group-addon input[type="checkbox"] { + margin-top: 0; + } + .input-group .form-control:first-child, + .input-group-addon:first-child, + .input-group-btn:first-child > .btn, + .input-group-btn:first-child > .btn-group > .btn, + .input-group-btn:first-child > .dropdown-toggle, + .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), + .input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .input-group-addon:first-child { + border-right: 0; + } + .input-group .form-control:last-child, + .input-group-addon:last-child, + .input-group-btn:last-child > .btn, + .input-group-btn:last-child > .btn-group > .btn, + .input-group-btn:last-child > .dropdown-toggle, + .input-group-btn:first-child > .btn:not(:first-child), + .input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .input-group-addon:last-child { + border-left: 0; + } + .input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; + } + .input-group-btn > .btn { + position: relative; + } + .input-group-btn > .btn + .btn { + margin-left: -1px; + } + .input-group-btn > .btn:hover, + .input-group-btn > .btn:focus, + .input-group-btn > .btn:active { + z-index: 2; + } + .input-group-btn:first-child > .btn, + .input-group-btn:first-child > .btn-group { + margin-right: -1px; + } + .input-group-btn:last-child > .btn, + .input-group-btn:last-child > .btn-group { + margin-left: -1px; + } + .nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; + } + .nav > li { + position: relative; + display: block; + } + .nav > li > a { + position: relative; + display: block; + padding: 10px 15px; + } + .nav > li > a:hover, + .nav > li > a:focus { + text-decoration: none; + background-color: #eee; + } + .nav > li.disabled > a { + color: #777; + } + .nav > li.disabled > a:hover, + .nav > li.disabled > a:focus { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + } + .nav .open > a, + .nav .open > a:hover, + .nav .open > a:focus { + background-color: #eee; + border-color: #337ab7; + } + .nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; + } + .nav > li > a > img { + max-width: none; + } + .nav-tabs { + border-bottom: 1px solid #ddd; + } + .nav-tabs > li { + float: left; + margin-bottom: -1px; + } + .nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; + } + .nav-tabs > li > a:hover { + border-color: #eee #eee #ddd; + } + .nav-tabs > li.active > a, + .nav-tabs > li.active > a:hover, + .nav-tabs > li.active > a:focus { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; + } + .nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; + } + .nav-tabs.nav-justified > li { + float: none; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; + } + .nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; + } + @media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } + } + .nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; + } + @media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } + } + .nav-pills > li { + float: left; + } + .nav-pills > li > a { + border-radius: 4px; + } + .nav-pills > li + li { + margin-left: 2px; + } + .nav-pills > li.active > a, + .nav-pills > li.active > a:hover, + .nav-pills > li.active > a:focus { + color: #fff; + background-color: #337ab7; + } + .nav-stacked > li { + float: none; + } + .nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; + } + .nav-justified { + width: 100%; + } + .nav-justified > li { + float: none; + } + .nav-justified > li > a { + margin-bottom: 5px; + text-align: center; + } + .nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; + } + @media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } + } + .nav-tabs-justified { + border-bottom: 0; + } + .nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; + } + @media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } + } + .tab-content > .tab-pane { + display: none; + } + .tab-content > .active { + display: block; + } + .nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; + } + .navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; + } + @media (min-width: 768px) { + .navbar { + border-radius: 4px; + } + } + @media (min-width: 768px) { + .navbar-header { + float: left; + } + } + .navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + } + .navbar-collapse.in { + overflow-y: auto; + } + @media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } + } + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 340px; + } + @media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } + } + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; + } + @media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } + } + .navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; + } + @media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } + } + .navbar-fixed-top, + .navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + } + @media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } + } + .navbar-fixed-top { + top: 0; + border-width: 0 0 1px; + } + .navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; + } + .navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; + } + .navbar-brand:hover, + .navbar-brand:focus { + text-decoration: none; + } + .navbar-brand > img { + display: block; + } + @media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } + } + .navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; + } + .navbar-toggle:focus { + outline: 0; + } + .navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; + } + .navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; + } + @media (min-width: 768px) { + .navbar-toggle { + display: none; + } + } + .navbar-nav { + margin: 7.5px -15px; + } + .navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; + } + @media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } + } + @media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } + } + .navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + } + @media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } + } + @media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } + } + @media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + } + .navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; + } + .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + .navbar-btn { + margin-top: 8px; + margin-bottom: 8px; + } + .navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; + } + .navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; + } + .navbar-text { + margin-top: 15px; + margin-bottom: 15px; + } + @media (min-width: 768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } + } + @media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } + } + .navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; + } + .navbar-default .navbar-brand { + color: #777; + } + .navbar-default .navbar-brand:hover, + .navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; + } + .navbar-default .navbar-text { + color: #777; + } + .navbar-default .navbar-nav > li > a { + color: #777; + } + .navbar-default .navbar-nav > li > a:hover, + .navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav > .active > a, + .navbar-default .navbar-nav > .active > a:hover, + .navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav > .disabled > a, + .navbar-default .navbar-nav > .disabled > a:hover, + .navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } + .navbar-default .navbar-toggle { + border-color: #ddd; + } + .navbar-default .navbar-toggle:hover, + .navbar-default .navbar-toggle:focus { + background-color: #ddd; + } + .navbar-default .navbar-toggle .icon-bar { + background-color: #888; + } + .navbar-default .navbar-collapse, + .navbar-default .navbar-form { + border-color: #e7e7e7; + } + .navbar-default .navbar-nav > .open > a, + .navbar-default .navbar-nav > .open > a:hover, + .navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; + } + @media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } + } + .navbar-default .navbar-link { + color: #777; + } + .navbar-default .navbar-link:hover { + color: #333; + } + .navbar-default .btn-link { + color: #777; + } + .navbar-default .btn-link:hover, + .navbar-default .btn-link:focus { + color: #333; + } + .navbar-default .btn-link[disabled]:hover, + fieldset[disabled] .navbar-default .btn-link:hover, + .navbar-default .btn-link[disabled]:focus, + fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; + } + .navbar-inverse { + background-color: #222; + border-color: #080808; + } + .navbar-inverse .navbar-brand { + color: #9d9d9d; + } + .navbar-inverse .navbar-brand:hover, + .navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-text { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav > li > a:hover, + .navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav > .active > a, + .navbar-inverse .navbar-nav > .active > a:hover, + .navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav > .disabled > a, + .navbar-inverse .navbar-nav > .disabled > a:hover, + .navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; + } + .navbar-inverse .navbar-toggle { + border-color: #333; + } + .navbar-inverse .navbar-toggle:hover, + .navbar-inverse .navbar-toggle:focus { + background-color: #333; + } + .navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; + } + .navbar-inverse .navbar-collapse, + .navbar-inverse .navbar-form { + border-color: #101010; + } + .navbar-inverse .navbar-nav > .open > a, + .navbar-inverse .navbar-nav > .open > a:hover, + .navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #080808; + } + @media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } + } + .navbar-inverse .navbar-link { + color: #9d9d9d; + } + .navbar-inverse .navbar-link:hover { + color: #fff; + } + .navbar-inverse .btn-link { + color: #9d9d9d; + } + .navbar-inverse .btn-link:hover, + .navbar-inverse .btn-link:focus { + color: #fff; + } + .navbar-inverse .btn-link[disabled]:hover, + fieldset[disabled] .navbar-inverse .btn-link:hover, + .navbar-inverse .btn-link[disabled]:focus, + fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444; + } + .breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; + } + .breadcrumb > li { + display: inline-block; + } + .breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; + } + .breadcrumb > .active { + color: #777; + } + .pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; + } + .pagination > li { + display: inline; + } + .pagination > li > a, + .pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; + } + .pagination > li:first-child > a, + .pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } + .pagination > li:last-child > a, + .pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } + .pagination > li > a:hover, + .pagination > li > span:hover, + .pagination > li > a:focus, + .pagination > li > span:focus { + color: #23527c; + background-color: #eee; + border-color: #ddd; + } + .pagination > .active > a, + .pagination > .active > span, + .pagination > .active > a:hover, + .pagination > .active > span:hover, + .pagination > .active > a:focus, + .pagination > .active > span:focus { + z-index: 2; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7; + } + .pagination > .disabled > span, + .pagination > .disabled > span:hover, + .pagination > .disabled > span:focus, + .pagination > .disabled > a, + .pagination > .disabled > a:hover, + .pagination > .disabled > a:focus { + color: #777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; + } + .pagination-lg > li > a, + .pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; + } + .pagination-lg > li:first-child > a, + .pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; + } + .pagination-lg > li:last-child > a, + .pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; + } + .pagination-sm > li > a, + .pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; + } + .pagination-sm > li:first-child > a, + .pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + } + .pagination-sm > li:last-child > a, + .pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + } + .pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; + } + .pager li { + display: inline; + } + .pager li > a, + .pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; + } + .pager li > a:hover, + .pager li > a:focus { + text-decoration: none; + background-color: #eee; + } + .pager .next > a, + .pager .next > span { + float: right; + } + .pager .previous > a, + .pager .previous > span { + float: left; + } + .pager .disabled > a, + .pager .disabled > a:hover, + .pager .disabled > a:focus, + .pager .disabled > span { + color: #777; + cursor: not-allowed; + background-color: #fff; + } + .label { + display: inline; + padding: 0.2em 0.6em 0.3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25em; + } + a.label:hover, + a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; + } + .label:empty { + display: none; + } + .btn .label { + position: relative; + top: -1px; + } + .label-default { + background-color: #777; + } + .label-default[href]:hover, + .label-default[href]:focus { + background-color: #5e5e5e; + } + .label-primary { + background-color: #337ab7; + } + .label-primary[href]:hover, + .label-primary[href]:focus { + background-color: #286090; + } + .label-success { + background-color: #5cb85c; + } + .label-success[href]:hover, + .label-success[href]:focus { + background-color: #449d44; + } + .label-info { + background-color: #5bc0de; + } + .label-info[href]:hover, + .label-info[href]:focus { + background-color: #31b0d5; + } + .label-warning { + background-color: #f0ad4e; + } + .label-warning[href]:hover, + .label-warning[href]:focus { + background-color: #ec971f; + } + .label-danger { + background-color: #d9534f; + } + .label-danger[href]:hover, + .label-danger[href]:focus { + background-color: #c9302c; + } + .badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #777; + border-radius: 10px; + } + .badge:empty { + display: none; + } + .btn .badge { + position: relative; + top: -1px; + } + .btn-xs .badge, + .btn-group-xs > .btn .badge { + top: 0; + padding: 1px 5px; + } + a.badge:hover, + a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; + } + .list-group-item.active > .badge, + .nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #fff; + } + .list-group-item > .badge { + float: right; + } + .list-group-item > .badge + .badge { + margin-right: 5px; + } + .nav-pills > li > a > .badge { + margin-left: 3px; + } + .jumbotron { + padding: 30px 15px; + margin-bottom: 30px; + color: inherit; + background-color: #eee; + } + .jumbotron h1, + .jumbotron .h1 { + color: inherit; + } + .jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; + } + .jumbotron > hr { + border-top-color: #d5d5d5; + } + .container .jumbotron, + .container-fluid .jumbotron { + border-radius: 6px; + } + .jumbotron .container { + max-width: 100%; + } + @media screen and (min-width: 768px) { + .jumbotron { + padding: 48px 0; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } + } + .thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border 0.2s ease-in-out; + -o-transition: border 0.2s ease-in-out; + transition: border 0.2s ease-in-out; + } + .thumbnail > img, + .thumbnail a > img { + margin-right: auto; + margin-left: auto; + } + a.thumbnail:hover, + a.thumbnail:focus, + a.thumbnail.active { + border-color: #337ab7; + } + .thumbnail .caption { + padding: 9px; + color: #333; + } + .alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; + } + .alert h4 { + margin-top: 0; + color: inherit; + } + .alert .alert-link { + font-weight: bold; + } + .alert > p, + .alert > ul { + margin-bottom: 0; + } + .alert > p + p { + margin-top: 5px; + } + .alert-dismissable, + .alert-dismissible { + padding-right: 35px; + } + .alert-dismissable .close, + .alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; + } + .alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; + } + .alert-success hr { + border-top-color: #c9e2b3; + } + .alert-success .alert-link { + color: #2b542c; + } + .alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; + } + .alert-info hr { + border-top-color: #a6e1ec; + } + .alert-info .alert-link { + color: #245269; + } + .alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; + } + .alert-warning hr { + border-top-color: #f7e1b5; + } + .alert-warning .alert-link { + color: #66512c; + } + .alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; + } + .alert-danger hr { + border-top-color: #e4b9c0; + } + .alert-danger .alert-link { + color: #843534; + } + //@-webkit-keyframes progress-bar-stripes { + // from { + // background-position: 40px 0; + // } + // to { + // background-position: 0 0; + // } + //} + //@-o-keyframes progress-bar-stripes { + // from { + // background-position: 40px 0; + // } + // to { + // background-position: 0 0; + // } + //} + //@keyframes progress-bar-stripes { + // from { + // background-position: 40px 0; + // } + // to { + // background-position: 0 0; + // } + //} + //.progress { + // height: 20px; + // margin-bottom: 20px; + // overflow: hidden; + // background-color: #f5f5f5; + // border-radius: 4px; + // -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + // box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + //} + //.progress-bar { + // float: left; + // width: 0; + // height: 100%; + // font-size: 12px; + // line-height: 20px; + // color: #fff; + // text-align: center; + // background-color: #337ab7; + // -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + // box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + // -webkit-transition: width 0.6s ease; + // -o-transition: width 0.6s ease; + // transition: width 0.6s ease; + //} + //.progress-striped .progress-bar, + //.progress-bar-striped { + // background-image: -webkit-linear-gradient( + // 45deg, + // rgba(255, 255, 255, 0.15) 25%, + // transparent 25%, + // transparent 50%, + // rgba(255, 255, 255, 0.15) 50%, + // rgba(255, 255, 255, 0.15) 75%, + // transparent 75%, + // transparent + // ); + // background-image: -o-linear-gradient( + // 45deg, + // rgba(255, 255, 255, 0.15) 25%, + // transparent 25%, + // transparent 50%, + // rgba(255, 255, 255, 0.15) 50%, + // rgba(255, 255, 255, 0.15) 75%, + // transparent 75%, + // transparent + // ); + // background-image: linear-gradient( + // 45deg, + // rgba(255, 255, 255, 0.15) 25%, + // transparent 25%, + // transparent 50%, + // rgba(255, 255, 255, 0.15) 50%, + // rgba(255, 255, 255, 0.15) 75%, + // transparent 75%, + // transparent + // ); + // -webkit-background-size: 40px 40px; + // background-size: 40px 40px; + //} + //.progress.active .progress-bar, + //.progress-bar.active { + // -webkit-animation: progress-bar-stripes 2s linear infinite; + // -o-animation: progress-bar-stripes 2s linear infinite; + // animation: progress-bar-stripes 2s linear infinite; + //} + //.progress-bar-success { + // background-color: #5cb85c; + //} + //.progress-striped .progress-bar-success { + // background-image: -webkit-linear-gradient( + // 45deg, + // rgba(255, 255, 255, 0.15) 25%, + // transparent 25%, + // transparent 50%, + // rgba(255, 255, 255, 0.15) 50%, + // rgba(255, 255, 255, 0.15) 75%, + // transparent 75%, + // transparent + // ); + // background-image: -o-linear-gradient( + // 45deg, + // rgba(255, 255, 255, 0.15) 25%, + // transparent 25%, + // transparent 50%, + // rgba(255, 255, 255, 0.15) 50%, + // rgba(255, 255, 255, 0.15) 75%, + // transparent 75%, + // transparent + // ); + // background-image: linear-gradient( + // 45deg, + // rgba(255, 255, 255, 0.15) 25%, + // transparent 25%, + // transparent 50%, + // rgba(255, 255, 255, 0.15) 50%, + // rgba(255, 255, 255, 0.15) 75%, + // transparent 75%, + // transparent + // ); + //} + //.progress-bar-info { + // background-color: #5bc0de; + //} + //.progress-striped .progress-bar-info { + // background-image: -webkit-linear-gradient( + // 45deg, + // rgba(255, 255, 255, 0.15) 25%, + // transparent 25%, + // transparent 50%, + // rgba(255, 255, 255, 0.15) 50%, + // rgba(255, 255, 255, 0.15) 75%, + // transparent 75%, + // transparent + // ); + // background-image: -o-linear-gradient( + // 45deg, + // rgba(255, 255, 255, 0.15) 25%, + // transparent 25%, + // transparent 50%, + // rgba(255, 255, 255, 0.15) 50%, + // rgba(255, 255, 255, 0.15) 75%, + // transparent 75%, + // transparent + // ); + // background-image: linear-gradient( + // 45deg, + // rgba(255, 255, 255, 0.15) 25%, + // transparent 25%, + // transparent 50%, + // rgba(255, 255, 255, 0.15) 50%, + // rgba(255, 255, 255, 0.15) 75%, + // transparent 75%, + // transparent + // ); + //} + //.progress-bar-warning { + // background-color: #f0ad4e; + //} + //.progress-striped .progress-bar-warning { + // background-image: -webkit-linear-gradient( + // 45deg, + // rgba(255, 255, 255, 0.15) 25%, + // transparent 25%, + // transparent 50%, + // rgba(255, 255, 255, 0.15) 50%, + // rgba(255, 255, 255, 0.15) 75%, + // transparent 75%, + // transparent + // ); + // background-image: -o-linear-gradient( + // 45deg, + // rgba(255, 255, 255, 0.15) 25%, + // transparent 25%, + // transparent 50%, + // rgba(255, 255, 255, 0.15) 50%, + // rgba(255, 255, 255, 0.15) 75%, + // transparent 75%, + // transparent + // ); + // background-image: linear-gradient( + // 45deg, + // rgba(255, 255, 255, 0.15) 25%, + // transparent 25%, + // transparent 50%, + // rgba(255, 255, 255, 0.15) 50%, + // rgba(255, 255, 255, 0.15) 75%, + // transparent 75%, + // transparent + // ); + //} + //.progress-bar-danger { + // background-color: #d9534f; + //} + //.progress-striped .progress-bar-danger { + // background-image: -webkit-linear-gradient( + // 45deg, + // rgba(255, 255, 255, 0.15) 25%, + // transparent 25%, + // transparent 50%, + // rgba(255, 255, 255, 0.15) 50%, + // rgba(255, 255, 255, 0.15) 75%, + // transparent 75%, + // transparent + // ); + // background-image: -o-linear-gradient( + // 45deg, + // rgba(255, 255, 255, 0.15) 25%, + // transparent 25%, + // transparent 50%, + // rgba(255, 255, 255, 0.15) 50%, + // rgba(255, 255, 255, 0.15) 75%, + // transparent 75%, + // transparent + // ); + // background-image: linear-gradient( + // 45deg, + // rgba(255, 255, 255, 0.15) 25%, + // transparent 25%, + // transparent 50%, + // rgba(255, 255, 255, 0.15) 50%, + // rgba(255, 255, 255, 0.15) 75%, + // transparent 75%, + // transparent + // ); + //} + .media { + margin-top: 15px; + } + .media:first-child { + margin-top: 0; + } + .media, + .media-body { + overflow: hidden; + zoom: 1; + } + .media-body { + width: 10000px; + } + .media-object { + display: block; + } + .media-right, + .media > .pull-right { + padding-left: 10px; + } + .media-left, + .media > .pull-left { + padding-right: 10px; + } + .media-left, + .media-right, + .media-body { + display: table-cell; + vertical-align: top; + } + .media-middle { + vertical-align: middle; + } + .media-bottom { + vertical-align: bottom; + } + .media-heading { + margin-top: 0; + margin-bottom: 5px; + } + .media-list { + padding-left: 0; + list-style: none; + } + .list-group { + padding-left: 0; + margin-bottom: 20px; + } + .list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; + } + .list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } + .list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + } + a.list-group-item { + color: #555; + } + a.list-group-item .list-group-item-heading { + color: #333; + } + a.list-group-item:hover, + a.list-group-item:focus { + color: #555; + text-decoration: none; + background-color: #f5f5f5; + } + .list-group-item.disabled, + .list-group-item.disabled:hover, + .list-group-item.disabled:focus { + color: #777; + cursor: not-allowed; + background-color: #eee; + } + .list-group-item.disabled .list-group-item-heading, + .list-group-item.disabled:hover .list-group-item-heading, + .list-group-item.disabled:focus .list-group-item-heading { + color: inherit; + } + .list-group-item.disabled .list-group-item-text, + .list-group-item.disabled:hover .list-group-item-text, + .list-group-item.disabled:focus .list-group-item-text { + color: #777; + } + .list-group-item.active, + .list-group-item.active:hover, + .list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; + } + .list-group-item.active .list-group-item-heading, + .list-group-item.active:hover .list-group-item-heading, + .list-group-item.active:focus .list-group-item-heading, + .list-group-item.active .list-group-item-heading > small, + .list-group-item.active:hover .list-group-item-heading > small, + .list-group-item.active:focus .list-group-item-heading > small, + .list-group-item.active .list-group-item-heading > .small, + .list-group-item.active:hover .list-group-item-heading > .small, + .list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; + } + .list-group-item.active .list-group-item-text, + .list-group-item.active:hover .list-group-item-text, + .list-group-item.active:focus .list-group-item-text { + color: #c7ddef; + } + .list-group-item-success { + color: #3c763d; + background-color: #dff0d8; + } + a.list-group-item-success { + color: #3c763d; + } + a.list-group-item-success .list-group-item-heading { + color: inherit; + } + a.list-group-item-success:hover, + a.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; + } + a.list-group-item-success.active, + a.list-group-item-success.active:hover, + a.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; + } + .list-group-item-info { + color: #31708f; + background-color: #d9edf7; + } + a.list-group-item-info { + color: #31708f; + } + a.list-group-item-info .list-group-item-heading { + color: inherit; + } + a.list-group-item-info:hover, + a.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; + } + a.list-group-item-info.active, + a.list-group-item-info.active:hover, + a.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; + } + .list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; + } + a.list-group-item-warning { + color: #8a6d3b; + } + a.list-group-item-warning .list-group-item-heading { + color: inherit; + } + a.list-group-item-warning:hover, + a.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; + } + a.list-group-item-warning.active, + a.list-group-item-warning.active:hover, + a.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; + } + .list-group-item-danger { + color: #a94442; + background-color: #f2dede; + } + a.list-group-item-danger { + color: #a94442; + } + a.list-group-item-danger .list-group-item-heading { + color: inherit; + } + a.list-group-item-danger:hover, + a.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; + } + a.list-group-item-danger.active, + a.list-group-item-danger.active:hover, + a.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; + } + .list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; + } + .list-group-item-text { + margin-bottom: 0; + line-height: 1.3; + } + .panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + } + .panel-body { + padding: 15px; + } + .panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + .panel-heading > .dropdown .dropdown-toggle { + color: inherit; + } + .panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; + } + .panel-title > a, + .panel-title > small, + .panel-title > .small, + .panel-title > small > a, + .panel-title > .small > a { + color: inherit; + } + .panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + } + .panel > .list-group, + .panel > .panel-collapse > .list-group { + margin-bottom: 0; + } + .panel > .list-group .list-group-item, + .panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; + } + .panel > .list-group:first-child .list-group-item:first-child, + .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + .panel > .list-group:last-child .list-group-item:last-child, + .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + } + .panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; + } + .list-group + .panel-footer { + border-top-width: 0; + } + .panel > .table, + .panel > .table-responsive > .table, + .panel > .panel-collapse > .table { + margin-bottom: 0; + } + .panel > .table caption, + .panel > .table-responsive > .table caption, + .panel > .panel-collapse > .table caption { + padding-right: 15px; + padding-left: 15px; + } + .panel > .table:first-child, + .panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + .panel > .table:first-child > thead:first-child > tr:first-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, + .panel > .table:first-child > tbody:first-child > tr:first-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + .panel > .table:first-child > thead:first-child > tr:first-child td:first-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, + .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, + .panel > .table:first-child > thead:first-child > tr:first-child th:first-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, + .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; + } + .panel > .table:first-child > thead:first-child > tr:first-child td:last-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, + .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, + .panel > .table:first-child > thead:first-child > tr:first-child th:last-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, + .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; + } + .panel > .table:last-child, + .panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + } + .panel > .table:last-child > tbody:last-child > tr:last-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + } + .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, + .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; + } + .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, + .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; + } + .panel > .panel-body + .table, + .panel > .panel-body + .table-responsive, + .panel > .table + .panel-body, + .panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; + } + .panel > .table > tbody:first-child > tr:first-child th, + .panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; + } + .panel > .table-bordered, + .panel > .table-responsive > .table-bordered { + border: 0; + } + .panel > .table-bordered > thead > tr > th:first-child, + .panel > .table-responsive > .table-bordered > thead > tr > th:first-child, + .panel > .table-bordered > tbody > tr > th:first-child, + .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, + .panel > .table-bordered > tfoot > tr > th:first-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .panel > .table-bordered > thead > tr > td:first-child, + .panel > .table-responsive > .table-bordered > thead > tr > td:first-child, + .panel > .table-bordered > tbody > tr > td:first-child, + .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, + .panel > .table-bordered > tfoot > tr > td:first-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .panel > .table-bordered > thead > tr > th:last-child, + .panel > .table-responsive > .table-bordered > thead > tr > th:last-child, + .panel > .table-bordered > tbody > tr > th:last-child, + .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, + .panel > .table-bordered > tfoot > tr > th:last-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .panel > .table-bordered > thead > tr > td:last-child, + .panel > .table-responsive > .table-bordered > thead > tr > td:last-child, + .panel > .table-bordered > tbody > tr > td:last-child, + .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, + .panel > .table-bordered > tfoot > tr > td:last-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .panel > .table-bordered > thead > tr:first-child > td, + .panel > .table-responsive > .table-bordered > thead > tr:first-child > td, + .panel > .table-bordered > tbody > tr:first-child > td, + .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, + .panel > .table-bordered > thead > tr:first-child > th, + .panel > .table-responsive > .table-bordered > thead > tr:first-child > th, + .panel > .table-bordered > tbody > tr:first-child > th, + .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; + } + .panel > .table-bordered > tbody > tr:last-child > td, + .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, + .panel > .table-bordered > tfoot > tr:last-child > td, + .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, + .panel > .table-bordered > tbody > tr:last-child > th, + .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, + .panel > .table-bordered > tfoot > tr:last-child > th, + .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; + } + .panel > .table-responsive { + margin-bottom: 0; + border: 0; + } + .panel-group { + margin-bottom: 20px; + } + .panel-group .panel { + margin-bottom: 0; + border-radius: 4px; + } + .panel-group .panel + .panel { + margin-top: 5px; + } + .panel-group .panel-heading { + border-bottom: 0; + } + .panel-group .panel-heading + .panel-collapse > .panel-body, + .panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #ddd; + } + .panel-group .panel-footer { + border-top: 0; + } + .panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; + } + .panel-default { + border-color: #ddd; + } + .panel-default > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; + } + .panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; + } + .panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333; + } + .panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; + } + .panel-primary { + border-color: #337ab7; + } + .panel-primary > .panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7; + } + .panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; + } + .panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #fff; + } + .panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; + } + .panel-success { + border-color: #d6e9c6; + } + .panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; + } + .panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; + } + .panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; + } + .panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; + } + .panel-info { + border-color: #bce8f1; + } + .panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; + } + .panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; + } + .panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; + } + .panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; + } + .panel-warning { + border-color: #faebcc; + } + .panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; + } + .panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; + } + .panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; + } + .panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; + } + .panel-danger { + border-color: #ebccd1; + } + .panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; + } + .panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; + } + .panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; + } + .panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; + } + .embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; + } + .embed-responsive .embed-responsive-item, + .embed-responsive iframe, + .embed-responsive embed, + .embed-responsive object, + .embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; + } + .embed-responsive-16by9 { + padding-bottom: 56.25%; + } + .embed-responsive-4by3 { + padding-bottom: 75%; + } + .well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + } + .well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); + } + .well-lg { + padding: 24px; + border-radius: 6px; + } + .well-sm { + padding: 9px; + border-radius: 3px; + } + .close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: 0.2; + } + .close:hover, + .close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: 0.5; + } + button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + } + .modal-open { + overflow: hidden; + } + .modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; + } + .modal.fade .modal-dialog { + -webkit-transition: -webkit-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); + } + .modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); + } + .modal-open .modal { + overflow-x: hidden; + overflow-y: auto; + } + .modal-dialog { + position: relative; + width: auto; + margin: 10px; + } + .modal-content { + position: relative; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + } + .modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; + } + .modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; + } + .modal-backdrop.in { + filter: alpha(opacity=50); + opacity: 0.5; + } + .modal-header { + min-height: 16.42857143px; + padding: 15px; + border-bottom: 1px solid #e5e5e5; + } + .modal-header .close { + margin-top: -2px; + } + .modal-title { + margin: 0; + line-height: 1.42857143; + } + //.modal-body { + // position: relative; + // padding: 15px; + //} + .modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; + } + .modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; + } + .modal-footer .btn-group .btn + .btn { + margin-left: -1px; + } + .modal-footer .btn-block + .btn-block { + margin-left: 0; + } + .modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; + } + @media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } + .modal-sm { + width: 300px; + } + } + @media (min-width: 992px) { + .modal-lg { + width: 900px; + } + } + .tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-weight: normal; + line-height: 1.4; + filter: alpha(opacity=0); + opacity: 0; + } + .tooltip.in { + filter: alpha(opacity=90); + opacity: 0.9; + } + .tooltip.top { + padding: 5px 0; + margin-top: -3px; + } + .tooltip.right { + padding: 0 5px; + margin-left: 3px; + } + .tooltip.bottom { + padding: 5px 0; + margin-top: 3px; + } + .tooltip.left { + padding: 0 5px; + margin-left: -3px; + } + .tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + text-decoration: none; + background-color: #000; + border-radius: 4px; + } + .tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + } + .tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; + } + .tooltip.top-left .tooltip-arrow { + right: 5px; + bottom: 0; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; + } + .tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; + } + .tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; + } + .tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; + } + .tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; + } + .tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; + } + .tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; + } + .popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + } + .popover.top { + margin-top: -10px; + } + .popover.right { + margin-left: 10px; + } + .popover.bottom { + margin-top: 10px; + } + .popover.left { + margin-left: -10px; + } + .popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; + } + .popover-content { + padding: 9px 14px; + } + .popover > .arrow, + .popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + } + .popover > .arrow { + border-width: 11px; + } + .popover > .arrow:after { + content: ""; + border-width: 10px; + } + .popover.top > .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; + } + .popover.top > .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; + } + .popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; + } + .popover.right > .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; + } + .popover.bottom > .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + } + .popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; + } + .popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); + } + .popover.left > .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; + } + .carousel { + position: relative; + } + .carousel-inner { + position: relative; + width: 100%; + overflow: hidden; + } + .carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; + } + .carousel-inner > .item > img, + .carousel-inner > .item > a > img { + line-height: 1; + } + @media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform 0.6s ease-in-out; + -o-transition: -o-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + perspective: 1000; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + left: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + left: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + left: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + } + .carousel-inner > .active, + .carousel-inner > .next, + .carousel-inner > .prev { + display: block; + } + .carousel-inner > .active { + left: 0; + } + .carousel-inner > .next, + .carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; + } + .carousel-inner > .next { + left: 100%; + } + .carousel-inner > .prev { + left: -100%; + } + .carousel-inner > .next.left, + .carousel-inner > .prev.right { + left: 0; + } + .carousel-inner > .active.left { + left: -100%; + } + .carousel-inner > .active.right { + left: 100%; + } + .carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); + filter: alpha(opacity=50); + opacity: 0.5; + } + .carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: -webkit-gradient( + linear, + left top, + right top, + from(rgba(0, 0, 0, 0.5)), + to(rgba(0, 0, 0, 0.0001)) + ); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; + } + .carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: -webkit-gradient( + linear, + left top, + right top, + from(rgba(0, 0, 0, 0.0001)), + to(rgba(0, 0, 0, 0.5)) + ); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + background-repeat: repeat-x; + } + .carousel-control:hover, + .carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: 0; + opacity: 0.9; + } + .carousel-control .icon-prev, + .carousel-control .icon-next, + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + } + .carousel-control .icon-prev, + .carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; + } + .carousel-control .icon-next, + .carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; + } + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + font-family: serif; + line-height: 1; + } + .carousel-control .icon-prev:before { + content: "\2039"; + } + .carousel-control .icon-next:before { + content: "\203a"; + } + .carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; + } + .carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); + border: 1px solid #fff; + border-radius: 10px; + } + .carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; + } + .carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); + } + .carousel-caption .btn { + text-shadow: none; + } + @media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -15px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -15px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } + } + .clearfix:before, + .clearfix:after, + .dl-horizontal dd:before, + .dl-horizontal dd:after, + .container:before, + .container:after, + .container-fluid:before, + .container-fluid:after, + .row:before, + .row:after, + .form-horizontal .form-group:before, + .form-horizontal .form-group:after, + .btn-toolbar:before, + .btn-toolbar:after, + .btn-group-vertical > .btn-group:before, + .btn-group-vertical > .btn-group:after, + .nav:before, + .nav:after, + .navbar:before, + .navbar:after, + .navbar-header:before, + .navbar-header:after, + .navbar-collapse:before, + .navbar-collapse:after, + .pager:before, + .pager:after, + .panel-body:before, + .panel-body:after, + .modal-footer:before, + .modal-footer:after { + display: table; + content: " "; + } + .clearfix:after, + .dl-horizontal dd:after, + .container:after, + .container-fluid:after, + .row:after, + .form-horizontal .form-group:after, + .btn-toolbar:after, + .btn-group-vertical > .btn-group:after, + .nav:after, + .navbar:after, + .navbar-header:after, + .navbar-collapse:after, + .pager:after, + .panel-body:after, + .modal-footer:after { + clear: both; + } + .center-block { + display: block; + margin-right: auto; + margin-left: auto; + } + .pull-right { + float: right !important; + } + .pull-left { + float: left !important; + } + .hide { + display: none !important; + } + .show { + display: block !important; + } + .invisible { + visibility: hidden; + } + .text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; + } + .hidden { + display: none !important; + } + .affix { + position: fixed; + } + @-ms-viewport { + width: device-width; + } + .visible-xs, + .visible-sm, + .visible-md, + .visible-lg { + display: none !important; + } + .visible-xs-block, + .visible-xs-inline, + .visible-xs-inline-block, + .visible-sm-block, + .visible-sm-inline, + .visible-sm-inline-block, + .visible-md-block, + .visible-md-inline, + .visible-md-inline-block, + .visible-lg-block, + .visible-lg-inline, + .visible-lg-inline-block { + display: none !important; + } + @media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } + } + @media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } + } + @media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } + } + @media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } + } + @media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } + } + @media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } + } + @media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } + } + @media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } + } + @media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } + } + @media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } + } + @media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } + } + @media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } + } + @media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } + } + @media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } + } + @media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } + } + @media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } + } + @media (max-width: 767px) { + .hidden-xs { + display: none !important; + } + } + @media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } + } + @media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } + } + @media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } + } + .visible-print { + display: none !important; + } + @media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } + } + .visible-print-block { + display: none !important; + } + @media print { + .visible-print-block { + display: block !important; + } + } + .visible-print-inline { + display: none !important; + } + @media print { + .visible-print-inline { + display: inline !important; + } + } + .visible-print-inline-block { + display: none !important; + } + @media print { + .visible-print-inline-block { + display: inline-block !important; + } + } + @media print { + .hidden-print { + display: none !important; + } + } +} diff --git a/themesource/atlas_core/web/core/base/_animation.scss b/themesource/atlas_core/web/core/base/_animation.scss new file mode 100644 index 0000000..fb712a8 --- /dev/null +++ b/themesource/atlas_core/web/core/base/_animation.scss @@ -0,0 +1,56 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// +@mixin animations() { + @keyframes slideInUp { + from { + visibility: visible; + transform: translate3d(0, 100%, 0); + } + + to { + transform: translate3d(0, 0, 0); + } + } + + .animated { + animation-duration: 0.4s; + animation-fill-mode: both; + } + + .slideInUp { + animation-name: slideInUp; + } + + @keyframes slideInDown { + from { + visibility: visible; + transform: translate3d(0, -100%, 0); + } + + to { + transform: translate3d(0, 0, 0); + } + } + + .slideInDown { + animation-name: slideInDown; + } + + @keyframes fadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } + } + + .fadeIn { + animation-name: fadeIn; + } +} diff --git a/themesource/atlas_core/web/core/base/_base.scss b/themesource/atlas_core/web/core/base/_base.scss new file mode 100644 index 0000000..4d64a01 --- /dev/null +++ b/themesource/atlas_core/web/core/base/_base.scss @@ -0,0 +1,78 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// +/* ========================================================================== + Base + + Default settings +========================================================================== */ +@mixin base() { + html { + height: 100%; + } + + body { + min-height: 100%; + color: $font-color-default; + background-color: $bg-color; + font-family: $font-family-base; + font-size: $font-size-default; + font-weight: $font-weight-normal; + line-height: $line-height-base; + } + + a { + transition: 0.25s; + color: $link-color; + -webkit-backface-visibility: hidden; + } + + a:hover { + text-decoration: underline; + color: $link-hover-color; + } + + // Address `outline` inconsistency between Chrome and other browsers. + a:focus { + outline: thin dotted; + } + + // Improve readability when focused and also mouse hovered in all browsers + a:active, + a:hover { + outline: 0; + } + + // Removes large blue border in chrome on focus and active states + input:focus, + button:focus, + .mx-link:focus { + outline: 0; + } + + // Removes large blue border for tabindexes from widgets + div[tabindex] { + outline: 0; + } + + // Disabled State + .disabled, + [disabled] { + cursor: not-allowed; + opacity: 0.65; + box-shadow: none; + } + + .mx-underlay { + position: fixed; + top: 0; + width: 100%; + height: 100%; + z-index: 1000; + opacity: 0.5; + background-color: #0a1325; + } +} diff --git a/themesource/atlas_core/web/core/base/_flex.scss b/themesource/atlas_core/web/core/base/_flex.scss new file mode 100644 index 0000000..90eb0e6 --- /dev/null +++ b/themesource/atlas_core/web/core/base/_flex.scss @@ -0,0 +1,184 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// +/* ========================================================================== + Flex + + Flex classes +========================================================================== */ +@mixin flex() { + $important-flex-value: if($important-flex, " !important", ""); + + // Flex layout + .flexcontainer { + display: flex; + overflow: hidden; + flex: 1; + flex-direction: row; + + .flexitem { + margin-right: $gutter-size; + + &:last-child { + margin-right: 0; + } + } + + .flexitem-main { + overflow: hidden; + flex: 1; + } + } + + // These classes define the order of the children + .flex-row { + flex-direction: row #{$important-flex-value}; + } + + .flex-column { + flex-direction: column #{$important-flex-value}; + } + + .flex-row-reverse { + flex-direction: row-reverse #{$important-flex-value}; + } + + .flex-column-reverse { + flex-direction: column-reverse #{$important-flex-value}; + } + + .flex-wrap { + flex-wrap: wrap #{$important-flex-value}; + } + + .flex-nowrap { + flex-wrap: nowrap #{$important-flex-value}; + } + + .flex-wrap-reverse { + flex-wrap: wrap-reverse #{$important-flex-value}; + } + + // Align children in both directions + .flex-center { + align-items: center #{$important-flex-value}; + justify-content: center #{$important-flex-value}; + } + + // These classes define the alignment of the children + .justify-content-start { + justify-content: flex-start #{$important-flex-value}; + } + + .justify-content-end { + justify-content: flex-end #{$important-flex-value}; + } + + .justify-content-center { + justify-content: center #{$important-flex-value}; + } + + .justify-content-between { + justify-content: space-between #{$important-flex-value}; + } + + .justify-content-around { + justify-content: space-around #{$important-flex-value}; + } + + .justify-content-evenly { + // Not Supported in IE11 + justify-content: space-evenly #{$important-flex-value}; + } + + .justify-content-stretch { + justify-content: stretch #{$important-flex-value}; + } + + /// These classes define the alignment of the children in the cross-direction + .align-children-start { + align-items: flex-start #{$important-flex-value}; + } + + .align-children-end { + align-items: flex-end #{$important-flex-value}; + } + + .align-children-center { + align-items: center #{$important-flex-value}; + } + + .align-children-baseline { + align-items: baseline #{$important-flex-value}; + } + + .align-children-stretch { + align-items: stretch #{$important-flex-value}; + } + + /// These classes define the alignment of the rows of children in the cross-direction + .align-content-start { + align-content: flex-start #{$important-flex-value}; + } + + .align-content-end { + align-content: flex-end #{$important-flex-value}; + } + + .align-content-center { + align-content: center #{$important-flex-value}; + } + + .align-content-between { + align-content: space-between #{$important-flex-value}; + } + + .align-content-around { + align-content: space-around #{$important-flex-value}; + } + + .align-content-stretch { + align-content: stretch #{$important-flex-value}; + } + + /// These classes allow the default alignment to be overridden for individual items + .align-self-auto { + align-self: auto #{$important-flex-value}; + } + + .align-self-start { + align-self: flex-start #{$important-flex-value}; + } + + .align-self-end { + align-self: flex-end #{$important-flex-value}; + } + + .align-self-center { + align-self: center #{$important-flex-value}; + } + + .align-self-baseline { + align-self: baseline #{$important-flex-value}; + } + + .align-self-stretch { + align-self: stretch #{$important-flex-value}; + } + + @include flex-items($number: 12); +} + +/// These classes define the percentage of available free space within a flex container a flex item will take. +@mixin flex-items($number) { + @if not $exclude-flex { + @for $i from 1 through $number { + .flexitem-#{$i} { + flex: #{$i} #{$i} 1%; + } + } + } +} diff --git a/themesource/atlas_core/web/core/base/_login.scss b/themesource/atlas_core/web/core/base/_login.scss new file mode 100644 index 0000000..aaf9f15 --- /dev/null +++ b/themesource/atlas_core/web/core/base/_login.scss @@ -0,0 +1,199 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin login() { + body { + height: 100%; + } + + .loginpage { + display: flex; + height: 100%; + } + .loginpage-logo { + position: absolute; + top: 30px; + right: 30px; + + & > svg { + width: 120px; + } + } + + .loginpage-left { + display: none; + } + + .loginpage-right { + display: flex; + flex: 1; + flex-direction: column; + justify-content: space-around; + } + .loginpage-formwrapper { + width: 400px; + margin: 0 auto; + } + + .loginpage-fullscreenDiv { + background-color: #e8e8e8; + width: 100%; + height: auto; + bottom: 0; + top: 0; + left: 0; + position: absolute; + } + + .loginpage-center { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + + // Form + .loginpage-form { + .alert { + display: none; + } + + .btn { + border-radius: $border-radius-default; + } + + // Form label + input + .form-group { + width: 100%; + align-items: center; + @media only screen and (max-width: $screen-sm-max) { + align-items: flex-start; + } + + .control-label { + flex: 4; + margin-bottom: 0; + font-size: $font-size-default; + font-weight: 500; + @media only screen and (max-width: $screen-sm-max) { + flex: 1; + margin-bottom: $spacing-small; + } + } + + .inputwrapper { + flex: 8; + position: relative; + width: 100%; + @media only screen and (max-width: $screen-sm-max) { + flex: 1; + } + + .glyphicon { + &:before { + transition: color 0.4s; + } + + position: absolute; + top: 50%; + left: $form-input-padding-x; + transform: translateY(-50%); + + &-eye-open:hover, + &-eye-close:hover { + cursor: pointer; + color: $brand-primary; + } + } + + .form-control { + padding: $form-input-padding-y $form-input-padding-x $form-input-padding-y 45px; + width: 100%; + } + + .form-control:focus ~ .glyphicon:before { + color: $brand-primary; + } + } + } + } + + // Divider - only on login-with-mendixsso-button.html + .loginpage-alternativelabel { + display: flex; + align-items: center; + flex-direction: row; + flex-wrap: nowrap; + justify-content: space-between; + margin: 25px 0px; + + hr { + flex: 1; + margin: 20px 0 20px 10px; + border: 0; + border-color: #d8d8d8; + border-top: 1px solid #eeeeee; + } + } + + .loginpage-signin { + color: #555555; + } + + .loginpage-form .btn { + img { + vertical-align: middle; + top: -1px; + position: relative; + } + } + + // Show only on wide screens + @media screen and (min-width: $screen-xl) { + .loginpage-left { + position: relative; + display: block; + flex: 1; + width: 100%; + height: 100%; + } + // Image and clipping mask + .loginpage-image { + height: 100%; + animation: makePointer 1s ease-out both; + background: left / cover no-repeat + linear-gradient(to right, rgba($brand-primary, 0.9) 0%, rgba($brand-primary, 0.6) 100%), + left / cover no-repeat url("./resources/work-do-more.jpeg"); + -webkit-clip-path: polygon(0% 0%, 100% 0, 100% 50%, 100% 100%, 0% 100%); + clip-path: polygon(0% 0%, 100% 0, 100% 50%, 100% 100%, 0% 100%); + } + + .loginpage-logo { + & > svg { + width: 150px; + } + } + + .loginpage-formwrapper { + width: 400px; + } + } + + // Animate image clipping mask + @keyframes makePointer { + 100% { + -webkit-clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%); + clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%); + } + } + @-webkit-keyframes makePointer { + 100% { + -webkit-clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%); + clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%); + } + } +} diff --git a/themesource/atlas_core/web/core/base/_spacing.scss b/themesource/atlas_core/web/core/base/_spacing.scss new file mode 100644 index 0000000..83d166e --- /dev/null +++ b/themesource/atlas_core/web/core/base/_spacing.scss @@ -0,0 +1,547 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// +/* ========================================================================== + Spacing + + Spacing classes +========================================================================== */ +@mixin spacing() { + $important-spacing-value: if($important-spacing, " !important", ""); + + // Spacing none + .spacing-inner-none { + padding: 0 #{$important-spacing-value}; + } + + .spacing-inner-top-none { + padding-top: 0 #{$important-spacing-value}; + } + + .spacing-inner-right-none { + padding-right: 0 #{$important-spacing-value}; + } + + .spacing-inner-bottom-none { + padding-bottom: 0 #{$important-spacing-value}; + } + + .spacing-inner-left-none { + padding-left: 0 #{$important-spacing-value}; + } + + .spacing-outer-none { + margin: 0 #{$important-spacing-value}; + } + + .spacing-outer-top-none { + margin-top: 0 #{$important-spacing-value}; + } + + .spacing-outer-right-none { + margin-right: 0 #{$important-spacing-value}; + } + + .spacing-outer-bottom-none { + margin-bottom: 0 #{$important-spacing-value}; + } + + .spacing-outer-left-none { + margin-left: 0 #{$important-spacing-value}; + } + + // Spacing small + .spacing-inner { + padding: $spacing-small #{$important-spacing-value}; + } + + .spacing-inner-top { + padding-top: $spacing-small #{$important-spacing-value}; + } + + .spacing-inner-right { + padding-right: $spacing-small #{$important-spacing-value}; + } + + .spacing-inner-bottom { + padding-bottom: $spacing-small #{$important-spacing-value}; + } + + .spacing-inner-left { + padding-left: $spacing-small #{$important-spacing-value}; + } + + .spacing-inner-vertical { + padding-top: $spacing-small #{$important-spacing-value}; + padding-bottom: $spacing-small #{$important-spacing-value}; + } + + .spacing-inner-horizontal { + padding-left: $spacing-small #{$important-spacing-value}; + padding-right: $spacing-small #{$important-spacing-value}; + } + + .spacing-outer { + margin: $spacing-small #{$important-spacing-value}; + } + + .spacing-outer-top { + margin-top: $spacing-small #{$important-spacing-value}; + } + + .spacing-outer-right { + margin-right: $spacing-small #{$important-spacing-value}; + } + + .spacing-outer-bottom { + margin-bottom: $spacing-small #{$important-spacing-value}; + } + + .spacing-outer-left { + margin-left: $spacing-small #{$important-spacing-value}; + } + + .spacing-outer-vertical { + margin-top: $spacing-small #{$important-spacing-value}; + margin-bottom: $spacing-small #{$important-spacing-value}; + } + + .spacing-outer-horizontal { + margin-left: $spacing-small #{$important-spacing-value}; + margin-right: $spacing-small #{$important-spacing-value}; + } + + // Spacing Medium + .spacing-inner-medium { + @include get-responsive-spacing-medium( + $type: padding, + $direction: all, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-inner-top-medium { + @include get-responsive-spacing-medium( + $type: padding, + $direction: top, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-inner-right-medium { + @include get-responsive-spacing-medium( + $type: padding, + $direction: right, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-inner-bottom-medium { + @include get-responsive-spacing-medium( + $type: padding, + $direction: bottom, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-inner-left-medium { + @include get-responsive-spacing-medium( + $type: padding, + $direction: left, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-inner-vertical-medium { + @include get-responsive-spacing-medium( + $type: padding, + $direction: top, + $is_important: #{$important-spacing-value} + ); + @include get-responsive-spacing-medium( + $type: padding, + $direction: bottom, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-inner-horizontal-medium { + @include get-responsive-spacing-medium( + $type: padding, + $direction: left, + $is_important: #{$important-spacing-value} + ); + @include get-responsive-spacing-medium( + $type: padding, + $direction: right, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-medium { + @include get-responsive-spacing-medium( + $type: margin, + $direction: all, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-top-medium { + @include get-responsive-spacing-medium( + $type: margin, + $direction: top, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-right-medium { + @include get-responsive-spacing-medium( + $type: margin, + $direction: right, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-bottom-medium { + @include get-responsive-spacing-medium( + $type: margin, + $direction: bottom, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-left-medium { + @include get-responsive-spacing-medium( + $type: margin, + $direction: left, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-vertical-medium { + @include get-responsive-spacing-medium( + $type: margin, + $direction: top, + $is_important: #{$important-spacing-value} + ); + @include get-responsive-spacing-medium( + $type: margin, + $direction: bottom, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-horizontal-medium { + @include get-responsive-spacing-medium( + $type: margin, + $direction: left, + $is_important: #{$important-spacing-value} + ); + @include get-responsive-spacing-medium( + $type: margin, + $direction: right, + $is_important: #{$important-spacing-value} + ); + } + + // Spacing Large + .spacing-inner-large { + @include get-responsive-spacing-large( + $type: padding, + $direction: all, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-inner-top-large { + @include get-responsive-spacing-large( + $type: padding, + $direction: top, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-inner-right-large { + @include get-responsive-spacing-large( + $type: padding, + $direction: right, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-inner-bottom-large { + @include get-responsive-spacing-large( + $type: padding, + $direction: bottom, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-inner-left-large { + @include get-responsive-spacing-large( + $type: padding, + $direction: left, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-inner-vertical-large { + @include get-responsive-spacing-large( + $type: padding, + $direction: top, + $is_important: #{$important-spacing-value} + ); + @include get-responsive-spacing-large( + $type: padding, + $direction: bottom, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-inner-horizontal-large { + @include get-responsive-spacing-large( + $type: padding, + $direction: left, + $is_important: #{$important-spacing-value} + ); + @include get-responsive-spacing-large( + $type: padding, + $direction: right, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-large { + @include get-responsive-spacing-large( + $type: margin, + $direction: all, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-top-large { + @include get-responsive-spacing-large( + $type: margin, + $direction: top, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-right-large { + @include get-responsive-spacing-large( + $type: margin, + $direction: right, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-bottom-large { + @include get-responsive-spacing-large( + $type: margin, + $direction: bottom, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-left-large { + @include get-responsive-spacing-large( + $type: margin, + $direction: left, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-vertical-large { + @include get-responsive-spacing-large( + $type: margin, + $direction: top, + $is_important: #{$important-spacing-value} + ); + @include get-responsive-spacing-large( + $type: margin, + $direction: bottom, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-horizontal-large { + @include get-responsive-spacing-large( + $type: margin, + $direction: left, + $is_important: #{$important-spacing-value} + ); + @include get-responsive-spacing-large( + $type: margin, + $direction: right, + $is_important: #{$important-spacing-value} + ); + } + + // Spacing layouts + .spacing-inner-layout { + @include layout-spacing( + $type: padding, + $direction: all, + $device: responsive, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-inner-top-layout { + @include layout-spacing( + $type: padding, + $direction: top, + $device: responsive, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-inner-right-layout { + @include layout-spacing( + $type: padding, + $direction: right, + $device: responsive, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-inner-bottom-layout { + @include layout-spacing( + $type: padding, + $direction: bottom, + $device: responsive, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-inner-left-layout { + @include layout-spacing( + $type: padding, + $direction: left, + $device: responsive, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-inner-vertical-layout { + @include layout-spacing( + $type: padding, + $direction: top, + $device: responsive, + $is_important: #{$important-spacing-value} + ); + @include layout-spacing( + $type: padding, + $direction: bottom, + $device: responsive, + $is_important: #{$important-spacing-value} + ); + } + .spacing-inner-horizontal-layout { + @include layout-spacing( + $type: padding, + $direction: left, + $device: responsive, + $is_important: #{$important-spacing-value} + ); + @include layout-spacing( + $type: padding, + $direction: right, + $device: responsive, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-layout { + @include layout-spacing( + $type: margin, + $direction: all, + $device: responsive, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-top-layout { + @include layout-spacing( + $type: margin, + $direction: top, + $device: responsive, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-right-layout { + @include layout-spacing( + $type: margin, + $direction: right, + $device: responsive, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-bottom-layout { + @include layout-spacing( + $type: margin, + $direction: bottom, + $device: responsive, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-left-layout { + @include layout-spacing( + $type: margin, + $direction: left, + $device: responsive, + $is_important: #{$important-spacing-value} + ); + } + + .spacing-outer-vertical-layout { + @include layout-spacing( + $type: margin, + $direction: top, + $device: responsive, + $is_important: #{$important-spacing-value} + ); + @include layout-spacing( + $type: margin, + $direction: bottom, + $device: responsive, + $is_important: #{$important-spacing-value} + ); + } + .spacing-outer-horizontal-layout { + @include layout-spacing( + $type: margin, + $direction: left, + $device: responsive, + $is_important: #{$important-spacing-value} + ); + @include layout-spacing( + $type: margin, + $direction: right, + $device: responsive, + $is_important: #{$important-spacing-value} + ); + } + + // Scroll container spacing + .mx-scrollcontainer .mx-placeholder { + width: 100%; + height: 100%; + + .mx-layoutgrid, + .mx-layoutgrid-fluid { + @include layout-spacing($type: padding, $direction: all, $device: responsive); + + .mx-layoutgrid, + .mx-layoutgrid-fluid { + padding: 0; + } + } + } +} diff --git a/themesource/atlas_core/web/core/base/mixins/_animations.scss b/themesource/atlas_core/web/core/base/mixins/_animations.scss new file mode 100644 index 0000000..bb4afcd --- /dev/null +++ b/themesource/atlas_core/web/core/base/mixins/_animations.scss @@ -0,0 +1,50 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin transition( + $style: initial, + $delay: 0s, + $duration: 0.3s, + $property: all, + $timing-function: cubic-bezier(0.4, 0, 0.2, 1) +) { + @if not $exclude-animations { + transition: $property $duration $delay $timing-function; + transform-style: $style; + } +} + +@mixin ripple($color: #000, $transparency: 10%, $scale: 10) { + @if not $exclude-animations { + position: relative; + overflow: hidden; + transform: translate3d(0, 0, 0); + + &:after { + content: ""; + display: block; + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + pointer-events: none; + background-image: radial-gradient(circle, $color $transparency, transparent $transparency); + background-repeat: no-repeat; + background-position: 50%; + transform: scale($scale, $scale); + opacity: 0; + transition: transform 0.5s, opacity 1s; + } + + &:active:after { + transform: scale(0, 0); + opacity: 0.1; + transition: 0s; + } + } +} diff --git a/themesource/atlas_core/web/core/base/mixins/_buttons.scss b/themesource/atlas_core/web/core/base/mixins/_buttons.scss new file mode 100644 index 0000000..42a9079 --- /dev/null +++ b/themesource/atlas_core/web/core/base/mixins/_buttons.scss @@ -0,0 +1,73 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin button-variant($color, $background, $border, $hover) { + @if not $exclude-button { + color: $color; + border-color: $border; + background-color: $background; + + &:hover, + &:focus, + &:active, + &.active, + .open > &.dropdown-toggle { + color: $color; + border-color: $hover; + background-color: $hover; + } + &:active, + &.active, + .open > &.dropdown-toggle { + background-image: none; + } + &.disabled, + &[disabled], + &[aria-disabled], + fieldset[disabled] { + &, + &:hover, + &:focus, + &:active, + &.active { + border-color: $border; + background-color: $background; + } + } + // Button bordered + &.btn-bordered { + background-color: transparent; + @if $color != $btn-default-color { + color: $border; + } + + &:hover, + &:focus, + &:active, + &.active, + .open > &.dropdown-toggle { + color: $color; + border-color: $border; + background-color: $border; + } + } + // Button as link + &.btn-link { + text-decoration: none; + border-color: transparent; + background-color: transparent; + @if $color != $btn-default-color { + color: $background; + } + + &:hover { + border-color: $btn-link-bg-hover; + background-color: $btn-link-bg-hover; + } + } + } +} diff --git a/themesource/atlas_core/web/core/base/mixins/_groupbox.scss b/themesource/atlas_core/web/core/base/mixins/_groupbox.scss new file mode 100644 index 0000000..ecc6e4c --- /dev/null +++ b/themesource/atlas_core/web/core/base/mixins/_groupbox.scss @@ -0,0 +1,19 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin groupbox-variant($color, $background) { + @if not $exclude-group-box { + > .mx-groupbox-header { + color: $color; + border-color: $background; + background: $background; + } + > .mx-groupbox-body { + border-color: $background; + } + } +} diff --git a/themesource/atlas_core/web/core/base/mixins/_layout-spacing.scss b/themesource/atlas_core/web/core/base/mixins/_layout-spacing.scss new file mode 100644 index 0000000..4287d92 --- /dev/null +++ b/themesource/atlas_core/web/core/base/mixins/_layout-spacing.scss @@ -0,0 +1,92 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin layout-spacing($type: padding, $direction: all, $device: responsive, $is_important: false) { + @if not $exclude-spacing { + $suffix: ""; + @if $is_important != false { + $suffix: " !important"; + } + @if $device==responsive { + @if $direction==all { + @media (max-width: $screen-sm-max) { + #{$type}: #{$m-layout-spacing}#{$suffix}; + } + @media (min-width: $screen-md) { + #{$type}: #{$t-layout-spacing}#{$suffix}; + } + @media (min-width: $screen-lg) { + #{$type}: #{$layout-spacing}#{$suffix}; + } + } @else if $direction==top { + @media (max-width: $screen-sm-max) { + #{$type}-top: #{$m-layout-spacing-top}#{$suffix}; + } + @media (min-width: $screen-md) { + #{$type}-top: #{$t-layout-spacing-top}#{$suffix}; + } + @media (min-width: $screen-lg) { + #{$type}-top: #{$layout-spacing-top}#{$suffix}; + } + } @else if $direction==right { + @media (max-width: $screen-sm-max) { + #{$type}-right: #{$m-layout-spacing-right}#{$suffix}; + } + @media (min-width: $screen-md) { + #{$type}-right: #{$t-layout-spacing-right}#{$suffix}; + } + @media (min-width: $screen-lg) { + #{$type}-right: #{$layout-spacing-right}#{$suffix}; + } + } @else if $direction==bottom { + @media (max-width: $screen-sm-max) { + #{$type}-bottom: #{$m-layout-spacing-bottom}#{$suffix}; + } + @media (min-width: $screen-md) { + #{$type}-bottom: #{$t-layout-spacing-bottom}#{$suffix}; + } + @media (min-width: $screen-lg) { + #{$type}-bottom: #{$layout-spacing-bottom}#{$suffix}; + } + } @else if $direction==left { + @media (max-width: $screen-sm-max) { + #{$type}-left: #{$m-layout-spacing-left}#{$suffix}; + } + @media (min-width: $screen-md) { + #{$type}-left: #{$t-layout-spacing-left}#{$suffix}; + } + @media (min-width: $screen-lg) { + #{$type}-left: #{$layout-spacing-left}#{$suffix}; + } + } + } @else if $device==tablet { + @if $direction==all { + #{$type}: #{$t-layout-spacing}#{$suffix}; + } @else if $direction==top { + #{$type}-top: #{$t-layout-spacing-top}#{$suffix}; + } @else if $direction==right { + #{$type}-right: #{$t-layout-spacing-right}#{$suffix}; + } @else if $direction==bottom { + #{$type}-bottom: #{$t-layout-spacing-bottom}#{$suffix}; + } @else if $direction==left { + #{$type}-left: #{$t-layout-spacing-left}#{$suffix}; + } + } @else if $device==mobile { + @if $direction==all { + #{$type}: #{$m-layout-spacing}#{$suffix}; + } @else if $direction==top { + #{$type}-top: #{$m-layout-spacing-top}#{$suffix}; + } @else if $direction==right { + #{$type}-right: #{$m-layout-spacing-right}#{$suffix}; + } @else if $direction==bottom { + #{$type}-bottom: #{$m-layout-spacing-bottom}#{$suffix}; + } @else if $direction==left { + #{$type}-left: #{$m-layout-spacing-left}#{$suffix}; + } + } + } +} diff --git a/themesource/atlas_core/web/core/base/mixins/_spacing.scss b/themesource/atlas_core/web/core/base/mixins/_spacing.scss new file mode 100644 index 0000000..939de64 --- /dev/null +++ b/themesource/atlas_core/web/core/base/mixins/_spacing.scss @@ -0,0 +1,70 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin get-responsive-spacing-large($type: padding, $direction: all, $is_important: false) { + @if not $exclude-spacing { + $suffix: ""; + $dash: "-"; // Otherwise it will be interpreted as a minus symbol. Needed for the Gonzales PE version: 3.4.7 compiler (used by the Webmodeler) + + @if $is_important != false { + $suffix: " !important"; + } + @if $direction==all { + @media (max-width: $screen-sm-max) { + #{$type}: #{$m-spacing-large}#{$suffix}; + } + @media (min-width: $screen-md) { + #{$type}: #{$t-spacing-large}#{$suffix}; + } + @media (min-width: $screen-lg) { + #{$type}: #{$spacing-large}#{$suffix}; + } + } @else { + @media (max-width: $screen-sm-max) { + #{$type}#{$dash}#{$direction}: #{$m-spacing-large}#{$suffix}; + } + @media (min-width: $screen-md) { + #{$type}#{$dash}#{$direction}: #{$t-spacing-large}#{$suffix}; + } + @media (min-width: $screen-lg) { + #{$type}#{$dash}#{$direction}: #{$spacing-large}#{$suffix}; + } + } + } +} + +@mixin get-responsive-spacing-medium($type: padding, $direction: all, $is_important: false) { + @if not $exclude-spacing { + $suffix: ""; + $dash: "-"; // Otherwise it will be interpreted as a minus symbol. Needed for the Gonzales PE version: 3.4.7 compiler (used by the Webmodeler) + + @if $is_important != false { + $suffix: " !important"; + } + @if $direction==all { + @media (max-width: $screen-sm-max) { + #{$type}: #{$m-spacing-medium}#{$suffix}; + } + @media (min-width: $screen-md) { + #{$type}: #{$t-spacing-medium}#{$suffix}; + } + @media (min-width: $screen-lg) { + #{$type}: #{$spacing-medium}#{$suffix}; + } + } @else { + @media (max-width: $screen-sm-max) { + #{$type}#{$dash}#{$direction}: #{$m-spacing-medium}#{$suffix}; + } + @media (min-width: $screen-md) { + #{$type}#{$dash}#{$direction}: #{$t-spacing-medium}#{$suffix}; + } + @media (min-width: $screen-lg) { + #{$type}#{$dash}#{$direction}: #{$spacing-medium}#{$suffix}; + } + } + } +} diff --git a/themesource/atlas_core/web/core/helpers/_accordion.scss b/themesource/atlas_core/web/core/helpers/_accordion.scss new file mode 100644 index 0000000..c13ee7a --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_accordion.scss @@ -0,0 +1,151 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin accordion-helpers() { + /* ========================================================================== + Accordion + + //== Design Properties + //## Helper classes to change the look and feel of the component + ========================================================================== */ + + .widget-accordion { + .widget-accordion-group { + &.widget-accordion-brand-primary { + @include get-accordion-group-styles( + $accordion-header-primary-bg, + $accordion-header-primary-bg-hover, + $accordion-header-primary-color, + $accordion-header-primary-color, + $accordion-primary-border-color + ); + } + + &.widget-accordion-brand-secondary { + @include get-accordion-group-styles( + $accordion-header-secondary-bg, + $accordion-header-secondary-bg-hover, + $accordion-header-secondary-color, + $accordion-header-secondary-color, + $accordion-secondary-border-color + ); + } + + &.widget-accordion-brand-success { + @include get-accordion-group-styles( + $accordion-header-success-bg, + $accordion-header-success-bg-hover, + $accordion-header-success-color, + $accordion-header-success-color, + $accordion-success-border-color + ); + } + + &.widget-accordion-brand-warning { + @include get-accordion-group-styles( + $accordion-header-warning-bg, + $accordion-header-warning-bg-hover, + $accordion-header-warning-color, + $accordion-header-warning-color, + $accordion-warning-border-color + ); + } + + &.widget-accordion-brand-danger { + @include get-accordion-group-styles( + $accordion-header-danger-bg, + $accordion-header-danger-bg-hover, + $accordion-header-danger-color, + $accordion-header-danger-color, + $accordion-danger-border-color + ); + } + } + + &.widget-accordion-preview { + .widget-accordion-group { + &.widget-accordion-brand-primary { + @include get-accordion-preview-group-styles($accordion-header-primary-color); + } + + &.widget-accordion-brand-secondary { + @include get-accordion-preview-group-styles($accordion-header-secondary-color); + } + + &.widget-accordion-brand-success { + @include get-accordion-preview-group-styles($accordion-header-success-color); + } + + &.widget-accordion-brand-warning { + @include get-accordion-preview-group-styles($accordion-header-warning-color); + } + + &.widget-accordion-brand-danger { + @include get-accordion-preview-group-styles($accordion-header-danger-color); + } + } + } + + &.widget-accordion-bordered-all { + > .widget-accordion-group { + &:first-child { + border-top-style: solid; + } + + border-right-style: solid; + border-left-style: solid; + } + } + + &.widget-accordion-bordered-horizontal { + > .widget-accordion-group { + &:first-child { + border-top-style: solid; + } + } + } + + &.widget-accordion-bordered-none { + > .widget-accordion-group { + border-bottom: none; + } + } + + &.widget-accordion-striped { + > .widget-accordion-group:not(:is(.widget-accordion-brand-primary, .widget-accordion-brand-secondary, .widget-accordion-brand-success, .widget-accordion-brand-warning, .widget-accordion-brand-danger)):nth-child(2n + + 1) { + > .widget-accordion-group-header > .widget-accordion-group-header-button { + background-color: $accordion-bg-striped; + + &.widget-accordion-group-header-button-clickable { + &:hover, + &:focus, + &:active { + background-color: $accordion-bg-striped-hover; + } + } + } + + > .widget-accordion-group-content { + background-color: $accordion-bg-striped; + } + } + } + + &.widget-accordion-compact { + > .widget-accordion-group { + > .widget-accordion-group-header > .widget-accordion-group-header-button { + padding: $spacing-smaller $spacing-small; + } + + > .widget-accordion-group-content { + padding: $spacing-smaller $spacing-small $spacing-medium $spacing-small; + } + } + } + } +} diff --git a/themesource/atlas_core/web/core/helpers/_background.scss b/themesource/atlas_core/web/core/helpers/_background.scss new file mode 100644 index 0000000..9f75784 --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_background.scss @@ -0,0 +1,188 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin background-helpers() { + /* ========================================================================== + Background + + Different background components, all managed by variables + ========================================================================== */ + + .background-main { + background-color: $bg-color !important; + } + + //Brand variations + + .background-primary { + background-color: $brand-primary !important; + } + + .background-primary-darker { + background-color: $color-primary-darker !important; + } + + .background-primary.background-dark, + .background-primary-dark { + background-color: $color-primary-dark !important; + } + + .background-primary.background-light, + .background-primary-light { + background-color: $color-primary-light !important; + } + + .background-primary-lighter { + background-color: $color-primary-lighter !important; + } + + .background-secondary { + background-color: $bg-color-secondary !important; + } + + .background-secondary.background-light { + background-color: $bg-color-secondary !important; + } + + .background-secondary.background-dark { + background-color: $bg-color-secondary !important; + } + + .background-brand-gradient { + background-image: $brand-gradient !important; + } + + //Semantic variations + + .background-success { + background-color: $brand-success !important; + } + + .background-success-darker { + background-color: $color-success-darker !important; + } + + .background-success.background-dark, + .background-success-dark { + background-color: $color-success-dark !important; + } + + .background-success.background-light, + .background-success-light { + background-color: $color-success-light !important; + } + + .background-success-lighter { + background-color: $color-success-lighter !important; + } + + .background-warning { + background-color: $brand-warning !important; + } + + .background-warning-darker { + background-color: $color-warning-darker !important; + } + + .background-warning.background-dark, + .background-warning-dark { + background-color: $color-warning-dark !important; + } + + .background-warning.background-light, + .background-warning-light { + background-color: $color-warning-light !important; + } + + .background-warning-lighter { + background-color: $color-warning-lighter !important; + } + + .background-danger { + background-color: $brand-danger !important; + } + + .background-danger-darker { + background-color: $color-danger-darker !important; + } + + .background-danger.background-dark, + .background-danger-dark { + background-color: $color-danger-dark !important; + } + + .background-danger.background-light, + .background-danger-light { + background-color: $color-danger-light !important; + } + + .background-danger-lighter { + background-color: $color-danger-lighter !important; + } + + //Bootstrap variations + + .background-default { + background-color: $brand-default !important; + } + + .background-default-darker { + background-color: $color-default-darker !important; + } + + .background-default-dark { + background-color: $color-default-dark !important; + } + + .background-default-light { + background-color: $color-default-light !important; + } + + .background-default-lighter { + background-color: $color-default-lighter !important; + } + + .background-inverse { + background-color: $brand-inverse !important; + } + + .background-inverse-darker { + background-color: $color-inverse-darker !important; + } + + .background-inverse-dark { + background-color: $color-inverse-dark !important; + } + + .background-inverse-light { + background-color: $color-inverse-light !important; + } + + .background-inverse-lighter { + background-color: $color-inverse-lighter !important; + } + + .background-info { + background-color: $brand-info !important; + } + + .background-info-darker { + background-color: $color-info-darker !important; + } + + .background-info-dark { + background-color: $color-info-dark !important; + } + + .background-info-light { + background-color: $color-info-light !important; + } + + .background-info-lighter { + background-color: $color-info-lighter !important; + } +} diff --git a/themesource/atlas_core/web/core/helpers/_badge-button.scss b/themesource/atlas_core/web/core/helpers/_badge-button.scss new file mode 100644 index 0000000..f08728d --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_badge-button.scss @@ -0,0 +1,103 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin badge-button-helpers() { + /* ========================================================================== + Badge button + + Different background components, all managed by variables + ========================================================================== */ + + //Badge button color variation + .btn-secondary, + .btn-default { + .badge { + color: $btn-default-bg; + background-color: $btn-primary-bg; + } + } + + .btn-success { + .badge { + color: $btn-success-bg; + } + } + + .btn-warning { + .badge { + color: $btn-warning-bg; + } + } + + .btn-danger { + .badge { + color: $btn-danger-bg; + } + } + + //Badge button bordered variation + + .btn-bordered.btn-primary { + .badge { + background: $btn-primary-bg; + color: $btn-primary-color; + } + + &:hover, + &:focus { + .badge { + background-color: $btn-primary-color; + color: $btn-primary-bg; + } + } + } + + .btn-bordered.btn-success { + .badge { + background: $btn-success-bg; + color: $btn-success-color; + } + + &:hover, + &:focus { + .badge { + background-color: $btn-success-color; + color: $btn-success-bg; + } + } + } + + .btn-bordered.btn-warning { + .badge { + background: $btn-warning-bg; + color: $btn-warning-color; + } + + &:hover, + &:focus { + .badge { + background-color: $btn-warning-color; + color: $btn-warning-bg; + } + } + } + + .btn-bordered.btn-danger { + .badge { + background: $btn-danger-bg; + color: $btn-danger-color; + } + + &:hover, + &:focus { + .badge { + background-color: $btn-danger-color; + color: $btn-danger-bg; + } + } + } +} diff --git a/themesource/atlas_core/web/core/helpers/_button.scss b/themesource/atlas_core/web/core/helpers/_button.scss new file mode 100644 index 0000000..d740a05 --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_button.scss @@ -0,0 +1,126 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin button-helpers() { + /* ========================================================================== + Button + + //== Design Properties + //## Helper classes to change the look and feel of the component + ========================================================================== */ + // Color variations + .btn, + .btn-default { + @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border-color, $btn-default-bg-hover); + } + + .btn-primary { + @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border-color, $btn-primary-bg-hover); + } + + .btn-inverse { + @include button-variant($btn-inverse-color, $btn-inverse-bg, $btn-inverse-border-color, $btn-inverse-bg-hover); + } + + .btn-success { + @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border-color, $btn-success-bg-hover); + } + + .btn-info { + @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border-color, $btn-info-bg-hover); + } + + .btn-warning { + @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border-color, $btn-warning-bg-hover); + } + + .btn-danger { + @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border-color, $btn-danger-bg-hover); + } + + // Button Sizes + .btn-lg { + font-size: $font-size-large; + + img { + height: calc(#{$font-size-small} + 4px); + } + } + + .btn-sm { + font-size: $font-size-small; + + img { + height: calc(#{$font-size-small} + 4px); + } + } + + // Button Image + .btn-image { + padding: 0; + vertical-align: middle; + border-style: none; + background-color: transparent; + + img { + display: block; // or else the button doesn't get a width + height: auto; // Image set height + } + + &:hover, + &:focus { + background-color: transparent; + } + } + + // Icon buttons + .btn-icon { + & > img, + & > .glyphicon { + margin: 0; + } + } + + .btn-icon-right { + display: inline-flex; + flex-direction: row-reverse; + align-items: center; + + & > img, + & > .glyphicon { + top: 0; + margin-left: 4px; + } + } + + .btn-icon-top { + padding-right: 0; + padding-left: 0; + + & > img, + & > .glyphicon { + display: block; + margin: 0 0 4px 0; + } + } + + .btn-icon-only { + @extend .btn-icon; + padding: 0; + color: $btn-default-icon-color; + border: none; + } + + .btn-block { + display: block; + width: 100%; + } + + .btn-block + .btn-block { + margin-top: 4px; + } +} diff --git a/themesource/atlas_core/web/core/helpers/_data-grid.scss b/themesource/atlas_core/web/core/helpers/_data-grid.scss new file mode 100644 index 0000000..f81e316 --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_data-grid.scss @@ -0,0 +1,164 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin data-grid-helpers() { + /* ========================================================================== + Data grid default + + //== Design Properties + //## Helper classes to change the look and feel of the component + ========================================================================== */ + // Striped style + .datagrid-striped.mx-datagrid { + table { + th { + border-width: 0; + } + + tbody tr { + td { + border-top-width: 0; + } + + &:nth-child(odd) td { + background-color: $grid-bg-striped; + } + } + } + } + + // Bordered style + .datagrid-bordered.mx-datagrid { + table { + border: 1px solid; + + th { + border: 1px solid $grid-border-color; + } + + tbody tr { + td { + border: 1px solid $grid-border-color; + } + } + } + + tfoot { + > tr > th { + border-width: 0; + background-color: $grid-footer-bg; + } + + > tr > td { + border-width: 1px; + } + } + } + + // Transparent style so you can see the background + .datagrid-transparent.mx-datagrid { + table { + background-color: transparent; + + tbody tr { + &:nth-of-type(odd) { + background-color: transparent; + } + + td { + background-color: transparent; + } + } + } + } + + // Hover style activated + .datagrid-hover.mx-datagrid { + table { + tbody tr { + &:hover td { + background-color: $grid-bg-hover !important; + } + + &.selected:hover td { + background-color: $grid-bg-selected-hover !important; + } + } + } + } + + // Datagrid Row Sizes + .datagrid-lg.mx-datagrid { + table { + th { + padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2) + ($grid-padding-left * 2); + } + + tbody tr { + td { + padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2) + ($grid-padding-left * 2); + } + } + } + } + + .datagrid-sm.mx-datagrid { + table { + th { + padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2) + ($grid-padding-left / 2); + } + + tbody tr { + td { + padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2) + ($grid-padding-left/ 2); + } + } + } + } + + // Datagrid Full Search + // Default Mendix Datagrid Widget with adjusted search field. Only 1 search field is allowed + .datagrid-fullsearch.mx-grid { + .mx-grid-search-button { + @extend .btn-primary; + } + + .mx-grid-reset-button { + display: none; + } + + .mx-grid-search-item { + display: block; + } + + .mx-grid-search-label { + display: none; + } + + .mx-grid-searchbar { + .mx-grid-search-controls { + position: absolute; + right: 0; + } + + .mx-grid-search-input { + width: 80%; + padding-left: 0; + + .btn, + .form-control { + height: 35px; + font-size: 12px; + } + } + } + } +} diff --git a/themesource/atlas_core/web/core/helpers/_group-box.scss b/themesource/atlas_core/web/core/helpers/_group-box.scss new file mode 100644 index 0000000..889d28c --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_group-box.scss @@ -0,0 +1,136 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin group-box-helpers() { + /* ========================================================================== + Group box + + //== Design Properties + //## Helper classes to change the look and feel of the component + ========================================================================== */ + // Color variations + .groupbox-secondary, + .groupbox-default { + @include groupbox-variant($groupbox-default-color, $groupbox-default-bg); + } + + .groupbox-primary { + @include groupbox-variant($groupbox-primary-color, $groupbox-primary-bg); + } + + // Success appears as green + .groupbox-success { + @include groupbox-variant($groupbox-success-color, $groupbox-success-bg); + } + + // Warning appears as orange + .groupbox-warning { + @include groupbox-variant($groupbox-warning-color, $groupbox-warning-bg); + } + + // Danger and error appear as red + .groupbox-danger { + @include groupbox-variant($groupbox-danger-color, $groupbox-danger-bg); + } + + .groupbox-transparent { + > .mx-groupbox-header { + padding: $spacing-small * 1.5 0; + color: $gray-darker; + border-style: none; + background: transparent; + font-weight: $font-weight-semibold; + } + + .mx-groupbox-body { + padding: $spacing-small 0; + border-radius: 0; + border: 0; + border-bottom: 1px solid $groupbox-default-bg; + background-color: transparent; + } + + .mx-groupbox-collapse-icon { + color: $brand-primary; + } + } + + // Callout Look and Feel + .groupbox-callout { + > .mx-groupbox-header, + > .mx-groupbox-body { + border: 0; + background-color: $callout-primary-bg; + } + + > .mx-groupbox-header { + color: $callout-primary-color; + } + + .mx-groupbox-header + .mx-groupbox-body { + padding-top: 0; + } + } + + .groupbox-success.groupbox-callout { + > .mx-groupbox-header, + > .mx-groupbox-body { + background-color: $callout-success-bg; + } + + > .mx-groupbox-header { + color: $callout-success-color; + } + } + + .groupbox-warning.groupbox-callout { + > .mx-groupbox-header, + > .mx-groupbox-body { + background-color: $callout-warning-bg; + } + + > .mx-groupbox-header { + color: $callout-warning-color; + } + } + + .groupbox-danger.groupbox-callout { + > .mx-groupbox-header, + > .mx-groupbox-body { + background-color: $callout-danger-bg; + } + + > .mx-groupbox-header { + color: $callout-danger-color; + } + } + + //Bootstrap variations + + .groupbox-info { + @include groupbox-variant($groupbox-info-color, $groupbox-info-bg); + } + + .groupbox-inverse { + @include groupbox-variant($groupbox-inverse-color, $groupbox-inverse-bg); + } + + .groupbox-white { + @include groupbox-variant($groupbox-white-color, $groupbox-white-bg); + } + + .groupbox-info.groupbox-callout { + > .mx-groupbox-header, + > .mx-groupbox-body { + background-color: $callout-info-bg; + } + + > .mx-groupbox-header { + color: $callout-info-color; + } + } +} diff --git a/themesource/atlas_core/web/core/helpers/_helper-classes.scss b/themesource/atlas_core/web/core/helpers/_helper-classes.scss new file mode 100644 index 0000000..e3b7d6f --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_helper-classes.scss @@ -0,0 +1,437 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin helper-classes() { + /* ========================================================================== + Helper + + Default Mendix helpers + ========================================================================== */ + $important-helpers-value: if($important-helpers, " !important", ""); + + // Display properties + .d-none { + display: none #{$important-helpers-value}; + } + + .d-flex { + display: flex #{$important-helpers-value}; + } + + .d-inline-flex { + display: inline-flex #{$important-helpers-value}; + } + + .d-inline { + display: inline #{$important-helpers-value}; + } + + .d-inline-block { + display: inline-block #{$important-helpers-value}; + } + + .show, + .d-block { + display: block #{$important-helpers-value}; + } + + .table, + .d-table { + display: table #{$important-helpers-value}; + } + + .table-row, + .d-table-row { + display: table-row #{$important-helpers-value}; + } + + .table-cell, + .d-table-cell { + display: table-cell #{$important-helpers-value}; + } + + .hide, + .hidden { + display: none #{$important-helpers-value}; + visibility: hidden #{$important-helpers-value}; + } + + .invisible { + visibility: hidden #{$important-helpers-value}; + } + + .display-ie8-only:not([attr*=""]) { + display: none #{$important-helpers-value}; + padding: 0 #{$important-helpers-value}; + } + + .list-nostyle { + ul { + margin: 0 #{$important-helpers-value}; + padding: 0 #{$important-helpers-value}; + + li { + list-style-type: none #{$important-helpers-value}; + } + } + } + + .nowrap, + .nowrap * { + overflow: hidden #{$important-helpers-value}; + // Star for inside an element, IE8 span > a + white-space: nowrap #{$important-helpers-value}; + text-overflow: ellipsis #{$important-helpers-value}; + } + + // Render DIV as Table Cells + .table { + display: table #{$important-helpers-value}; + } + + .table-row { + display: table-row #{$important-helpers-value}; + } + + .table-cell { + display: table-cell #{$important-helpers-value}; + } + + // Quick floats + .pull-left { + float: left #{$important-helpers-value}; + } + + .pull-right { + float: right #{$important-helpers-value}; + } + + // Align options + .align-top { + vertical-align: top #{$important-helpers-value}; + } + + .align-middle { + vertical-align: middle #{$important-helpers-value}; + } + + .align-bottom { + vertical-align: bottom #{$important-helpers-value}; + } + + // Flex alignments + .row-left { + display: flex #{$important-helpers-value}; + align-items: center #{$important-helpers-value}; + flex-flow: row #{$important-helpers-value}; + justify-content: flex-start #{$important-helpers-value}; + } + + .row-center { + display: flex #{$important-helpers-value}; + align-items: center #{$important-helpers-value}; + flex-flow: row #{$important-helpers-value}; + justify-content: center #{$important-helpers-value}; + } + + .row-right { + display: flex #{$important-helpers-value}; + align-items: center #{$important-helpers-value}; + flex-flow: row #{$important-helpers-value}; + justify-content: flex-end #{$important-helpers-value}; + } + + .col-left { + display: flex #{$important-helpers-value}; + align-items: flex-start #{$important-helpers-value}; + flex-direction: column #{$important-helpers-value}; + justify-content: center #{$important-helpers-value}; + } + + .col-center { + display: flex #{$important-helpers-value}; + align-items: center #{$important-helpers-value}; + flex-direction: column #{$important-helpers-value}; + justify-content: center #{$important-helpers-value}; + } + + .col-right { + display: flex #{$important-helpers-value}; + align-items: flex-end #{$important-helpers-value}; + flex-direction: column #{$important-helpers-value}; + justify-content: center #{$important-helpers-value}; + } + + .shadow-small { + box-shadow: $shadow-small $shadow-color; + margin-bottom: 5px; + border-width: 1px #{$important-helpers-value}; + border-style: solid; + border-color: $shadow-color-border; + } + .shadow-medium { + box-shadow: $shadow-medium $shadow-color; + margin-bottom: 15px; + border-width: 1px #{$important-helpers-value}; + border-style: solid; + border-color: $shadow-color-border; + } + + .shadow-large { + box-shadow: $shadow-large $shadow-color; + margin-bottom: 25px; + border-width: 1px #{$important-helpers-value}; + border-style: solid; + border-color: $shadow-color-border; + } + + // Media + @media (max-width: $screen-sm-max) { + .hide-phone { + display: none #{$important-helpers-value}; + } + } + + @media (min-width: $screen-md) and (max-width: $screen-md-max) { + .hide-tablet { + display: none #{$important-helpers-value}; + } + } + + @media (min-width: $screen-lg) { + .hide-desktop { + display: none #{$important-helpers-value}; + } + } + + @media (max-width: $screen-xs-max) { + .hide-xs, + .hidden-xs, + .d-xs-none { + display: none #{$important-helpers-value}; + } + .d-xs-flex { + display: flex #{$important-helpers-value}; + } + .d-xs-inline-flex { + display: inline-flex #{$important-helpers-value}; + } + .d-xs-inline { + display: inline #{$important-helpers-value}; + } + .d-xs-inline-block { + display: inline-block #{$important-helpers-value}; + } + .d-xs-block { + display: block #{$important-helpers-value}; + } + .d-xs-table { + display: table #{$important-helpers-value}; + } + .d-xs-table-row { + display: table-row #{$important-helpers-value}; + } + .d-xs-table-cell { + display: table-cell #{$important-helpers-value}; + } + } + + @media (min-width: $screen-sm) and (max-width: $screen-sm-max) { + .hide-sm, + .hidden-sm, + .d-sm-none { + display: none #{$important-helpers-value}; + } + .d-sm-flex { + display: flex #{$important-helpers-value}; + } + .d-sm-inline-flex { + display: inline-flex #{$important-helpers-value}; + } + .d-sm-inline { + display: inline #{$important-helpers-value}; + } + .d-sm-inline-block { + display: inline-block #{$important-helpers-value}; + } + .d-sm-block { + display: block #{$important-helpers-value}; + } + .d-sm-table { + display: table #{$important-helpers-value}; + } + .d-sm-table-row { + display: table-row #{$important-helpers-value}; + } + .d-sm-table-cell { + display: table-cell #{$important-helpers-value}; + } + } + + @media (min-width: $screen-md) and (max-width: $screen-md-max) { + .hide-md, + .hidden-md, + .d-md-none { + display: none #{$important-helpers-value}; + } + .d-md-flex { + display: flex #{$important-helpers-value}; + } + .d-md-inline-flex { + display: inline-flex #{$important-helpers-value}; + } + .d-md-inline { + display: inline #{$important-helpers-value}; + } + .d-md-inline-block { + display: inline-block #{$important-helpers-value}; + } + .d-md-block { + display: block #{$important-helpers-value}; + } + .d-md-table { + display: table #{$important-helpers-value}; + } + .d-md-table-row { + display: table-row #{$important-helpers-value}; + } + .d-md-table-cell { + display: table-cell #{$important-helpers-value}; + } + } + + @media (min-width: $screen-lg) and (max-width: $screen-xl) { + .hide-lg, + .hidden-lg, + .d-lg-none { + display: none #{$important-helpers-value}; + } + .d-lg-flex { + display: flex #{$important-helpers-value}; + } + .d-lg-inline-flex { + display: inline-flex #{$important-helpers-value}; + } + .d-lg-inline { + display: inline #{$important-helpers-value}; + } + .d-lg-inline-block { + display: inline-block #{$important-helpers-value}; + } + .d-lg-block { + display: block #{$important-helpers-value}; + } + .d-lg-table { + display: table #{$important-helpers-value}; + } + .d-lg-table-row { + display: table-row #{$important-helpers-value}; + } + .d-lg-table-cell { + display: table-cell #{$important-helpers-value}; + } + } + + @media (min-width: $screen-xl) { + .hide-xl, + .hidden-xl, + .d-xl-none { + display: none #{$important-helpers-value}; + } + .d-xl-flex { + display: flex #{$important-helpers-value}; + } + .d-xl-inline-flex { + display: inline-flex #{$important-helpers-value}; + } + .d-xl-inline { + display: inline #{$important-helpers-value}; + } + .d-xl-inline-block { + display: inline-block #{$important-helpers-value}; + } + .d-xl-block { + display: block #{$important-helpers-value}; + } + .d-xl-table { + display: table #{$important-helpers-value}; + } + .d-xl-table-row { + display: table-row #{$important-helpers-value}; + } + .d-xl-table-cell { + display: table-cell #{$important-helpers-value}; + } + } + + //Box-shadow + + .shadow { + box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05) #{$important-helpers-value}; + } + + //Height helpers + + .h-25 { + height: 25% #{$important-helpers-value}; + } + + .h-50 { + height: 50% #{$important-helpers-value}; + } + + .h-75 { + height: 75% #{$important-helpers-value}; + } + + .h-100 { + height: 100% #{$important-helpers-value}; + } + + //Width helpers + + .w-25 { + width: 25% #{$important-helpers-value}; + } + + .w-50 { + width: 50% #{$important-helpers-value}; + } + + .w-75 { + width: 75% #{$important-helpers-value}; + } + + .w-100 { + width: 100% #{$important-helpers-value}; + } + + //Border helpers + .border { + border: 1px solid $border-color-default #{$important-helpers-value}; + } + + .border-top { + border-top: 1px solid $border-color-default #{$important-helpers-value}; + } + + .border-bottom { + border-bottom: 1px solid $border-color-default #{$important-helpers-value}; + } + + .border-left { + border-left: 1px solid $border-color-default #{$important-helpers-value}; + } + + .border-right { + border-right: 1px solid $border-color-default #{$important-helpers-value}; + } + + .border-rounded { + border-radius: $border-radius-default #{$important-helpers-value}; + } +} diff --git a/themesource/atlas_core/web/core/helpers/_image.scss b/themesource/atlas_core/web/core/helpers/_image.scss new file mode 100644 index 0000000..701ec99 --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_image.scss @@ -0,0 +1,105 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin image-helpers() { + /* ========================================================================== + Image + + Default Mendix image widgets + ========================================================================== */ + + img.img-rounded, + .img-rounded img { + border-radius: 6px; + } + + img.img-thumbnail, + .img-thumbnail img { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + transition: all 0.2s ease-in-out; + border: 1px solid $brand-default; + border-radius: 4px; + background-color: #ffffff; + line-height: $line-height-base; + } + + img.img-circle, + .img-circle img { + border-radius: 50%; + } + + img.img-auto, + .img-auto img { + width: auto !important; + max-width: 100% !important; + height: auto !important; + max-height: 100% !important; + } + + img.img-center, + .img-center img { + margin-right: auto !important; + margin-left: auto !important; + } + + img.img-icon { + width: 20px; + height: 20px; + padding: 2px; + border-radius: 50%; + } + + img.img-fill, + .img-fill img { + object-fit: fill; + } + + img.img-contain, + .img-contain img { + object-fit: contain; + } + + img.img-cover, + .img-cover img { + object-fit: cover; + } + + img.img-scale-down, + .img-scale-down img { + object-fit: scale-down; + } + + .img-contain.mx-image-background { + background-size: contain; + } + + .img-cover.mx-image-background { + background-size: cover; + } + + .img-auto.mx-image-background { + background-size: auto; + } + + .img-opacity-low img, + .img-opacity-low.mx-image-background { + opacity: 0.3; + } + + .img-opacity-medium img, + .img-opacity-medium.mx-image-background { + opacity: 0.5; + } + + .img-opacity-high img, + .img-opacity-high.mx-image-background { + opacity: 0.7; + } +} diff --git a/themesource/atlas_core/web/core/helpers/_label.scss b/themesource/atlas_core/web/core/helpers/_label.scss new file mode 100644 index 0000000..02663f0 --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_label.scss @@ -0,0 +1,52 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin label-helpers() { + /* ========================================================================== + Label + + //== Design Properties + //## Helper classes to change the look and feel of the component including + badge widget + ========================================================================== */ + // Color variations + .label-secondary, + .label-default { + color: $label-default-color; + background-color: $label-default-bg; + } + + .label-primary { + color: $label-primary-color; + background-color: $label-primary-bg; + } + + .label-success { + color: $label-success-color; + background-color: $label-success-bg; + } + + .label-inverse { + color: $label-inverse-color; + background-color: $label-inverse-bg; + } + + .label-info { + color: $label-info-color; + background-color: $label-info-bg; + } + + .label-warning { + color: $label-warning-color; + background-color: $label-warning-bg; + } + + .label-danger { + color: $label-danger-color; + background-color: $label-danger-bg; + } +} diff --git a/themesource/atlas_core/web/core/helpers/_list-view.scss b/themesource/atlas_core/web/core/helpers/_list-view.scss new file mode 100644 index 0000000..1fc5d5f --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_list-view.scss @@ -0,0 +1,320 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin list-view-helpers() { + /* ========================================================================== + List view + + //== Design Properties + //## Helper classes to change the look and feel of the component + ========================================================================== */ + + // List items lined + .listview-lined.mx-listview { + & > ul > li { + border-top: 1px solid $grid-border-color; + + &:first-child { + border-top: 1px solid $grid-border-color; + } + + &:last-child { + border-bottom: 1px solid $grid-border-color; + } + } + } + + //List items Bordered + .listview-bordered.mx-listview { + & > ul > li { + border: 1px solid $grid-border-color; + border-top: 0; + + &:first-child { + border-top: 1px solid $grid-border-color; + } + + &:last-child { + } + } + } + + // List items striped + .listview-striped.mx-listview { + & > ul > li:nth-child(2n + 1) { + background-color: $grid-bg-striped; + } + } + + // Items as seperated blocks + .listview-seperated.mx-listview { + & > ul > li { + margin-bottom: $spacing-medium; + border: 1px solid $grid-border-color; + border-radius: $border-radius-default; + } + } + + // Remove all styling - deprecated + .listview-stylingless.mx-listview { + & > ul > li { + padding: unset; + cursor: default; + border: unset; + background-color: transparent; + + &:hover, + &:focus, + &:active { + background-color: transparent; + } + + &.selected { + background-color: transparent !important; + + &:hover, + &:focus, + &:active { + background-color: transparent !important; + } + } + } + } + + // Hover style activated + .listview-hover.mx-listview { + & > ul > li { + cursor: pointer; + + &:hover, + &:focus, + &:active { + background-color: $grid-bg-hover; + } + + &.selected { + &:hover, + &:focus, + &:active { + background-color: $grid-bg-selected-hover; + } + } + } + } + + // Row Sizes + + .listview-sm.mx-listview { + & > ul > li { + padding: $spacing-small; + } + } + + .listview-lg.mx-listview { + & > ul > li { + padding: $spacing-large; + } + } + + // Bootstrap columns + .mx-listview[class*="lv-col"] { + overflow: hidden; // For if it is not in a layout, to prevent scrollbars + & > ul { + display: flex; // normal a table + flex-wrap: wrap; + margin-right: -1 * $gutter-size; + margin-left: -1 * $gutter-size; + + &::before, + &::after { + // clearfix + display: table; + clear: both; + content: " "; + } + + & > li { + // bootstrap col + position: relative; + min-height: 1px; + padding-right: $gutter-size; + padding-left: $gutter-size; + border: 0; + @media (max-width: $screen-md-max) { + width: 100% !important; + } + + & > .mx-dataview { + overflow: hidden; + } + } + } + + &.lv-col-xs-12 > ul > li { + width: 100% !important; + } + + &.lv-col-xs-11 > ul > li { + width: 91.66666667% !important; + } + + &.lv-col-xs-10 > ul > li { + width: 83.33333333% !important; + } + + &.lv-col-xs-9 > ul > li { + width: 75% !important; + } + + &.lv-col-xs-8 > ul > li { + width: 66.66666667% !important; + } + + &.lv-col-xs-7 > ul > li { + width: 58.33333333% !important; + } + + &.lv-col-xs-6 > ul > li { + width: 50% !important; + } + + &.lv-col-xs-5 > ul > li { + width: 41.66666667% !important; + } + + &.lv-col-xs-4 > ul > li { + width: 33.33333333% !important; + } + + &.lv-col-xs-3 > ul > li { + width: 25% !important; + } + + &.lv-col-xs-2 > ul > li { + width: 16.66666667% !important; + } + + &.lv-col-xs-1 > ul > li { + width: 8.33333333% !important; + } + + @media (min-width: $screen-md) { + &.lv-col-sm-12 > ul > li { + width: 100% !important; + } + &.lv-col-sm-11 > ul > li { + width: 91.66666667% !important; + } + &.lv-col-sm-10 > ul > li { + width: 83.33333333% !important; + } + &.lv-col-sm-9 > ul > li { + width: 75% !important; + } + &.lv-col-sm-8 > ul > li { + width: 66.66666667% !important; + } + &.lv-col-sm-7 > ul > li { + width: 58.33333333% !important; + } + &.lv-col-sm-6 > ul > li { + width: 50% !important; + } + &.lv-col-sm-5 > ul > li { + width: 41.66666667% !important; + } + &.lv-col-sm-4 > ul > li { + width: 33.33333333% !important; + } + &.lv-col-sm-3 > ul > li { + width: 25% !important; + } + &.lv-col-sm-2 > ul > li { + width: 16.66666667% !important; + } + &.lv-col-sm-1 > ul > li { + width: 8.33333333% !important; + } + } + @media (min-width: $screen-lg) { + &.lv-col-md-12 > ul > li { + width: 100% !important; + } + &.lv-col-md-11 > ul > li { + width: 91.66666667% !important; + } + &.lv-col-md-10 > ul > li { + width: 83.33333333% !important; + } + &.lv-col-md-9 > ul > li { + width: 75% !important; + } + &.lv-col-md-8 > ul > li { + width: 66.66666667% !important; + } + &.lv-col-md-7 > ul > li { + width: 58.33333333% !important; + } + &.lv-col-md-6 > ul > li { + width: 50% !important; + } + &.lv-col-md-5 > ul > li { + width: 41.66666667% !important; + } + &.lv-col-md-4 > ul > li { + width: 33.33333333% !important; + } + &.lv-col-md-3 > ul > li { + width: 25% !important; + } + &.lv-col-md-2 > ul > li { + width: 16.66666667% !important; + } + &.lv-col-md-1 > ul > li { + width: 16.66666667% !important; + } + } + @media (min-width: $screen-xl) { + &.lv-col-lg-12 > ul > li { + width: 100% !important; + } + &.lv-col-lg-11 > ul > li { + width: 91.66666667% !important; + } + &.lv-col-lg-10 > ul > li { + width: 83.33333333% !important; + } + &.lv-col-lg-9 > ul > li { + width: 75% !important; + } + &.lv-col-lg-8 > ul > li { + width: 66.66666667% !important; + } + &.lv-col-lg-7 > ul > li { + width: 58.33333333% !important; + } + &.lv-col-lg-6 > ul > li { + width: 50% !important; + } + &.lv-col-lg-5 > ul > li { + width: 41.66666667% !important; + } + &.lv-col-lg-4 > ul > li { + width: 33.33333333% !important; + } + &.lv-col-lg-3 > ul > li { + width: 25% !important; + } + &.lv-col-lg-2 > ul > li { + width: 16.66666667% !important; + } + &.lv-col-lg-1 > ul > li { + width: 8.33333333% !important; + } + } + } +} diff --git a/themesource/atlas_core/web/core/helpers/_navigation-bar.scss b/themesource/atlas_core/web/core/helpers/_navigation-bar.scss new file mode 100644 index 0000000..c20fc08 --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_navigation-bar.scss @@ -0,0 +1,219 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin navigation-bar-helpers() { + /* ========================================================================== + Navigation + + //== Regions + //## Behavior in the different regions + ========================================================================== */ + // When used in topbar + .region-topbar { + .mx-navbar { + background-color: $navtopbar-bg; + min-height: auto; + ul.nav { + > .mx-navbar-item { + margin-left: $spacing-small; + } + /* Navigation item */ + & > li.mx-navbar-item > a { + color: $navtopbar-color; + font-size: $navtopbar-font-size; + line-height: 1.2; + /* Dropdown arrow */ + .caret { + border-top-color: $navtopbar-color; + border-bottom-color: $navtopbar-color; + } + &:hover, + &:focus, + &.active { + color: $navtopbar-color-hover; + background-color: $navtopbar-bg-hover; + .caret { + border-top-color: $navtopbar-color-active; + border-bottom-color: $navtopbar-color-active; + } + } + &.active { + color: $navtopbar-color-active; + background-color: $navtopbar-bg-active; + } + + /* Dropdown */ + .mx-navbar-submenu::before { + border-color: transparent transparent $navtopbar-border-color transparent; + } + + // Image + .glyphicon { + font-size: $navtopbar-glyph-size; + } + } + + /* When hovering or the dropdown is open */ + & > .mx-navbar-item > a:hover, + & > .mx-navbar-item > a:focus, + & > .mx-navbar-item.active a, + & > .mx-navbar-item.open > a, + & > .mx-navbar-item.open > a:hover, + & > .mx-navbar-item.open > a:focus { + color: $navtopbar-color-hover; + background-color: $navtopbar-bg-hover; + .caret { + border-top-color: $navtopbar-color-hover; + border-bottom-color: $navtopbar-color-hover; + } + } + + & > .mx-navbar-item.open .dropdown-menu { + border-radius: $border-radius-default; + background-color: $navtopbar-sub-bg; + padding: $spacing-small $spacing-small 0; + margin: 0; + border: 0; + box-shadow: 0px 2px 2px rgba(194, 196, 201, 0.30354); + & > li.mx-navbar-subitem a { + padding: $spacing-small; + color: $navtopbar-color; + border-radius: $border-radius-default; + margin-bottom: $spacing-small; + line-height: 1.2; + &:hover, + &:focus { + color: $navtopbar-color-hover; + background-color: $navtopbar-sub-bg-hover; + } + } + } + & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a { + color: $navtopbar-sub-color-active; + background-color: $navtopbar-sub-bg-active; + .caret { + border-top-color: $navtopbar-sub-color-active; + border-bottom-color: $navtopbar-sub-color-active; + } + } + } + @media (max-width: $screen-md) { + ul.nav > li.mx-navbar-item > a { + } + .mx-navbar-item.open .dropdown-menu { + background-color: $navtopbar-sub-bg; + & > li.mx-navbar-subitem > a { + color: $navtopbar-sub-color; + font-size: $navtopbar-sub-font-size; + &:hover, + &:focus { + color: $navtopbar-sub-color-hover; + background-color: $navtopbar-sub-bg-hover; + } + &.active { + color: $navtopbar-sub-color-active; + background-color: $navtopbar-sub-bg-active; + } + } + } + } + } + } + + // When used in sidebar + .region-sidebar { + .mx-navbar { + background-color: $navsidebar-bg; + ul.nav { + /* Navigation item */ + & > li.mx-navbar-item > a { + color: $navsidebar-color; + font-size: $navsidebar-font-size; + + /* Dropdown arrow */ + .caret { + border-top-color: $navsidebar-color; + border-bottom-color: $navsidebar-color; + } + &:hover, + &:focus, + &.active { + color: $navsidebar-color-hover; + background-color: $navsidebar-bg-hover; + .caret { + border-top-color: $navsidebar-color-active; + border-bottom-color: $navsidebar-color-active; + } + } + &.active { + color: $navsidebar-color-active; + background-color: $navsidebar-bg-active; + } + + /* Dropdown */ + .mx-navbar-submenu::before { + border-color: transparent transparent $navsidebar-border-color transparent; + } + + // Image + .glyphicon { + font-size: $navsidebar-glyph-size; + } + } + + /* When hovering or the dropdown is open */ + & > .mx-navbar-item > a:hover, + & > .mx-navbar-item > a:focus, + & > .mx-navbar-item.active a, + & > .mx-navbar-item.open > a, + & > .mx-navbar-item.open > a:hover, + & > .mx-navbar-item.open > a:focus { + color: $navsidebar-color-hover; + background-color: $navsidebar-bg-hover; + .caret { + border-top-color: $navsidebar-color-hover; + border-bottom-color: $navsidebar-color-hover; + } + } + & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a { + color: $navsidebar-sub-color-active; + background-color: $navsidebar-sub-bg-active; + .caret { + border-top-color: $navsidebar-sub-color-active; + border-bottom-color: $navsidebar-sub-color-active; + } + } + } + @media (max-width: $screen-md) { + ul.nav > li.mx-navbar-item > a { + } + .mx-navbar-item.open .dropdown-menu { + background-color: $navtopbar-sub-bg; + & > li.mx-navbar-subitem > a { + color: $navsidebar-sub-color; + font-size: $navsidebar-sub-font-size; + &:hover, + &:focus { + color: $navsidebar-sub-color-hover; + background-color: $navsidebar-sub-bg-hover; + } + &.active { + color: $navsidebar-sub-color-active; + background-color: $navsidebar-sub-bg-active; + } + } + } + } + } + } + + .hide-icons.mx-navbar { + .glyphicon { + display: none; + } + } +} diff --git a/themesource/atlas_core/web/core/helpers/_navigation-tree.scss b/themesource/atlas_core/web/core/helpers/_navigation-tree.scss new file mode 100644 index 0000000..cc32c56 --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_navigation-tree.scss @@ -0,0 +1,173 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin navigation-tree-helpers() { + /* ========================================================================== + Navigation + + //== Regions + //## Behavior in the different regions + ========================================================================== */ + // When used in topbar + .region-topbar { + .mx-navigationtree { + background-color: $navtopbar-bg; + .navbar-inner > ul { + & > li { + & > a { + color: $navtopbar-color; + border-color: $navtopbar-border-color; + background-color: $navtopbar-bg; + font-size: $navtopbar-font-size; + .caret { + border-top-color: $navtopbar-color; + border-bottom-color: $navtopbar-color; + } + + .glyphicon { + font-size: $navtopbar-glyph-size; + } + } + a:hover, + a:focus, + a.active { + color: $navtopbar-color-hover; + background-color: $navtopbar-bg-hover; + .caret { + border-top-color: $navtopbar-color-active; + border-bottom-color: $navtopbar-color-active; + } + } + a.active { + color: $navtopbar-color-active; + border-left-color: $navtopbar-color-active; + background-color: $navtopbar-bg-active; + } + } + } + + /* Sub navigation item specific */ + li.mx-navigationtree-has-items { + & > ul { + background-color: $navtopbar-sub-bg; + li { + a { + color: $navtopbar-sub-color; + background-color: $navtopbar-sub-bg; + font-size: $navtopbar-sub-font-size; + &:hover, + &:focus, + &.active { + color: $navtopbar-sub-color-hover; + background-color: $navtopbar-sub-bg-hover; + } + &.active { + color: $navtopbar-sub-color-active; + background-color: $navtopbar-sub-bg-active; + } + } + } + } + } + } + } + + // When used in sidebar + .region-sidebar { + .mx-navigationtree { + background-color: $navsidebar-bg; + .navbar-inner > ul { + & > li { + & > a { + color: $navsidebar-color; + border-color: $navsidebar-border-color; + background-color: $navsidebar-bg; + font-size: $navsidebar-font-size; + .caret { + border-top-color: $navsidebar-color; + border-bottom-color: $navsidebar-color; + } + + .glyphicon { + font-size: $navsidebar-glyph-size; + } + } + a:hover, + a:focus, + a.active { + color: $navsidebar-color-hover; + background-color: $navsidebar-bg-hover; + .caret { + border-top-color: $navsidebar-color-active; + border-bottom-color: $navsidebar-color-active; + } + } + a.active { + color: $navsidebar-color-active; + border-left-color: $navsidebar-color-active; + background-color: $navsidebar-bg-active; + } + } + } + + /* Sub navigation item specific */ + li.mx-navigationtree-has-items { + & > ul { + background-color: $navsidebar-sub-bg; + li { + a { + color: $navsidebar-sub-color; + background-color: $navsidebar-sub-bg; + font-size: $navsidebar-sub-font-size; + &:hover, + &:focus, + &.active { + color: $navsidebar-sub-color-hover; + background-color: $navsidebar-sub-bg-hover; + } + &.active { + color: $navsidebar-sub-color-active; + background-color: $navsidebar-sub-bg-active; + } + } + } + } + } + } + } + + //== Design Properties + //## Helper classes to change the look and feel of the component + //-------------------------------------------------------------------------------------------------------------------// + // Content Centerd text and icons + .nav-content-center-text-icons.mx-navigationtree { + .navbar-inner ul { + a { + flex-direction: column; + justify-content: center; + .glyphicon { + margin: 0 0 5px 0; + } + } + } + } + + // Content Centerd icons only + .nav-content-center.mx-navigationtree { + .navbar-inner ul { + a { + justify-content: center; + } + } + } + + .hide-icons.mx-navigationtree { + .glyphicon { + display: none; + } + } +} diff --git a/themesource/atlas_core/web/core/helpers/_progress-bar.scss b/themesource/atlas_core/web/core/helpers/_progress-bar.scss new file mode 100644 index 0000000..b461b41 --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_progress-bar.scss @@ -0,0 +1,87 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin progress-bar-helpers() { + /* ========================================================================== + Progress Bar + + //== Design Properties + //## Helper classes to change the look and feel of the component + ========================================================================== */ + + .widget-progress-bar { + width: 100%; + + .progress { + border-radius: $border-radius-default; + background-color: $bg-color; + } + } + + .progress-bar-medium .progress, + .progress-bar-medium .progress-bar { + height: 16px; + line-height: 16px; + font-size: $font-size-small; + } + + .progress-bar-small .progress, + .progress-bar-small .progress-bar { + height: 8px; + line-height: 8px; + font-size: 0px; + } + + .progress-bar-small .progress-bar > * { + // Specifically to hide custom labels. + display: none; + } + + .progress-bar-large .progress, + .progress-bar-large .progress-bar { + height: 24px; + line-height: 24px; + font-size: $font-size-default; + } + + .widget-progress-bar-clickable:hover { + cursor: pointer; + } + + .widget-progress-bar.progress-bar-primary .progress-bar { + background-color: $brand-primary; + } + + .widget-progress-bar.progress-bar-success .progress-bar { + background-color: $brand-success; + } + + .widget-progress-bar.progress-bar-warning .progress-bar { + background-color: $brand-warning; + } + + .widget-progress-bar.progress-bar-danger .progress-bar { + background-color: $brand-danger; + } + + .widget-progress-bar-alert.widget-progress-bar-text-contrast .progress-bar { + color: $color-danger-darker; + } + + .widget-progress-bar-text-contrast .progress-bar { + color: $font-color-default; + } + + .widget-progress-bar-negative { + float: right; + display: block; + } + + .widget-progress-bar > .alert { + margin-top: 24px; + } +} diff --git a/themesource/atlas_core/web/core/helpers/_progress-circle.scss b/themesource/atlas_core/web/core/helpers/_progress-circle.scss new file mode 100644 index 0000000..860bad2 --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_progress-circle.scss @@ -0,0 +1,115 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin progress-circle-helpers() { + /* ========================================================================== + Progress Circle + + //== Design Properties + //## Helper classes to change the look and feel of the component + ========================================================================== */ + + //== Progress circle and label colors + .widget-progress-circle-primary { + .widget-progress-circle-path { + stroke: $brand-primary; + } + + .progressbar-text { + color: $brand-primary !important; + } + } + + .widget-progress-circle-success { + .widget-progress-circle-path { + stroke: $brand-success; + } + + .progressbar-text { + color: $brand-success !important; + } + } + + .widget-progress-circle-warning { + .widget-progress-circle-path { + stroke: $brand-warning; + } + + .progressbar-text { + color: $brand-warning !important; + } + } + + .widget-progress-circle-danger { + .widget-progress-circle-path { + stroke: $brand-danger; + } + + .progressbar-text { + color: $brand-danger !important; + } + } + + //== Sizes + .widget-progress-circle-thickness-medium { + .widget-progress-circle-trail-path, + .widget-progress-circle-path { + stroke-width: 8px; + } + } + + .widget-progress-circle-thickness-small { + .widget-progress-circle-trail-path, + .widget-progress-circle-path { + stroke-width: 4px; + } + } + + .widget-progress-circle-thickness-large { + .widget-progress-circle-trail-path, + .widget-progress-circle-path { + stroke-width: 16px; + } + } + + //== Progress label container + .progress-circle-label-container { + position: relative; + margin: 0; + + .progressbar-text { + position: absolute; + left: 50%; + top: 50%; + padding: 0px; + margin: 0px; + transform: translate(-50%, -50%); + // Original default from the `progressbar.js` library + color: rgb(85, 85, 85); + } + } + + .widget-progress-circle-clickable { + cursor: pointer; + } + + @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { + .widget-progress-circle > div { + height: 0; + padding: 0; + width: 100%; + padding-bottom: 100%; + + & > svg { + top: 0; + left: 0; + height: 100%; + position: absolute; + } + } + } +} diff --git a/themesource/atlas_core/web/core/helpers/_range-slider.scss b/themesource/atlas_core/web/core/helpers/_range-slider.scss new file mode 100644 index 0000000..63bd758 --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_range-slider.scss @@ -0,0 +1,33 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@import "slider-color-variant"; + +@mixin range-slider-helpers() { + /* ========================================================================== + Range Slider + + //== Design Properties + //## Helper classes to change the look and feel of the component + ========================================================================== */ + + .widget-range-slider-primary { + @include slider-color-variant($brand-primary); + } + + .widget-range-slider-success { + @include slider-color-variant($brand-success); + } + + .widget-range-slider-warning { + @include slider-color-variant($brand-warning); + } + + .widget-range-slider-danger { + @include slider-color-variant($brand-danger); + } +} diff --git a/themesource/atlas_core/web/core/helpers/_rating.scss b/themesource/atlas_core/web/core/helpers/_rating.scss new file mode 100644 index 0000000..f15d2d8 --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_rating.scss @@ -0,0 +1,58 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin rating-helpers() { + /* ========================================================================== + Rating + + //== Design Properties + //## Helper classes to change the look and feel of the component + ========================================================================== */ + + .widget-star-rating-full-primary { + color: $brand-primary; + } + + .widget-star-rating-full-success { + color: $brand-success; + } + + .widget-star-rating-full-info { + color: $brand-info; + } + + .widget-star-rating-full-warning { + color: $brand-warning; + } + + .widget-star-rating-full-danger { + color: $brand-danger; + } + + .widget-star-rating-full-inverse { + color: $brand-inverse; + } + + .widget-rating { + &.widget-rating-small { + .rating-icon { + font-size: 16px; + } + .rating-image { + height: 16px; + } + } + &.widget-rating-large { + .rating-icon { + font-size: 32px; + } + .rating-image { + height: 32px; + } + } + } +} diff --git a/themesource/atlas_core/web/core/helpers/_simple-menu-bar.scss b/themesource/atlas_core/web/core/helpers/_simple-menu-bar.scss new file mode 100644 index 0000000..90cd79f --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_simple-menu-bar.scss @@ -0,0 +1,45 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin simple-menu-bar-helpers() { + /* ========================================================================== + Navigation + + //== Design Properties + //## Helper classes to change the look and feel of the component + ========================================================================== */ + // Center text and icons + .bottom-nav-text-icons.mx-menubar { + ul.mx-menubar-list { + li.mx-menubar-item { + flex: 1; + a { + flex-direction: column; + padding: $spacing-small $spacing-small $spacing-small/2; + line-height: normal; + font-size: $font-size-small; + .glyphicon { + display: block; + margin: 0 0 $spacing-small/2 0; + font-size: $font-size-large; + } + img { + display: block; + height: $font-size-large; + margin: 0 0 $spacing-small/2 0; + } + } + } + } + } + + .hide-icons.mx-menubar { + .glyphicon { + display: none; + } + } +} diff --git a/themesource/atlas_core/web/core/helpers/_slider-color-variant.scss b/themesource/atlas_core/web/core/helpers/_slider-color-variant.scss new file mode 100644 index 0000000..ded6016 --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_slider-color-variant.scss @@ -0,0 +1,28 @@ +@mixin slider-color-variant($color) { + .rc-slider:not(.rc-slider-disabled) { + .rc-slider-track { + background-color: $color; + } + + .rc-slider-handle:focus { + border-color: $color; + box-shadow: 0 0 0 5px lighten($color, 25%); + outline: none; + } + + .rc-slider-handle-click-focused:focus { + border-color: lighten($color, 25%); + box-shadow: unset; + } + + .rc-slider-dot-active, + .rc-slider-handle:hover { + border-color: $color; + } + + .rc-slider-handle:active { + border-color: $color; + box-shadow: 0 0 5px $color; + } + } +} diff --git a/themesource/atlas_core/web/core/helpers/_slider.scss b/themesource/atlas_core/web/core/helpers/_slider.scss new file mode 100644 index 0000000..cc259d2 --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_slider.scss @@ -0,0 +1,32 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// +@import "slider-color-variant"; + +@mixin slider-helpers() { + /* ========================================================================== + Slider + + //== Design Properties + //## Helper classes to change the look and feel of the component + ========================================================================== */ + + .widget-slider-primary { + @include slider-color-variant($brand-primary); + } + + .widget-slider-success { + @include slider-color-variant($brand-success); + } + + .widget-slider-warning { + @include slider-color-variant($brand-warning); + } + + .widget-slider-danger { + @include slider-color-variant($brand-danger); + } +} diff --git a/themesource/atlas_core/web/core/helpers/_tab-container.scss b/themesource/atlas_core/web/core/helpers/_tab-container.scss new file mode 100644 index 0000000..e4719d8 --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_tab-container.scss @@ -0,0 +1,202 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin tab-container-helpers() { + /* ========================================================================== + Tab container + + //== Design Properties + //## Helper classes to change the look and feel of the component + ========================================================================== */ + // Style as pills + .tab-pills.mx-tabcontainer { + & > .mx-tabcontainer-tabs { + border: 0; + + & > li { + margin-bottom: $spacing-small; + } + + & > li > a { + margin-right: $spacing-small; + color: $tabs-color; + border-radius: $border-radius-default; + background-color: $tabs-bg-pills; + + &:hover, + &:focus { + background-color: $tabs-bg-hover; + } + } + + & > li.active > a, + & > li.active > a:hover, + & > li.active > a:focus { + color: #ffffff; + border-color: $tabs-bg-active; + background-color: $tabs-bg-active; + } + } + } + + // Style with lines + .tab-lined.mx-tabcontainer { + & > .mx-tabcontainer-tabs { + border-width: 1px; + + li { + margin-right: $spacing-large; + + & > a { + padding: $spacing-medium 0 ($spacing-medium - $tabs-lined-border-width) 0; // border is 3px + color: $tabs-color; + border: 0; + border-bottom: $tabs-lined-border-width solid transparent; + border-radius: 0; + + &:hover, + &:focus { + color: $tabs-color; + border: 0; + border-color: transparent; + background: transparent; + } + } + + &.active > a, + &.active > a:hover, + &.active > a:focus { + color: $tabs-lined-color-active; + border: 0; + border-bottom: $tabs-lined-border-width solid $tabs-lined-border-color; + background-color: transparent; + } + } + } + } + + // Justified style + // Lets your tabs take 100% of the width + .tab-justified.mx-tabcontainer { + & > .mx-tabcontainer-tabs { + width: 100%; + border-bottom: 0; + + & > li { + flex: 1; + float: none; // reset bootstrap + margin: 0; + @media (max-width: $screen-sm-max) { + display: block; + width: 100%; + } + + & > a { + text-align: center; + } + } + } + } + + // Bordered + .tab-bordered.mx-tabcontainer { + & > .mx-tabcontainer-tabs { + margin: 0; + } + + & > .mx-tabcontainer-content { + padding: $spacing-small; + border-width: 0 1px 1px 1px; + border-style: solid; + border-color: $tabs-border-color; + background-color: transparent; + } + } + + // Wizard + .tab-wizard.mx-tabcontainer { + & > .mx-tabcontainer-tabs { + position: relative; + display: flex; + justify-content: space-between; + border-style: none; + + &::before { + position: absolute; + top: $spacing-medium; + display: block; + width: 100%; + height: 1px; + content: ""; + background-color: $tabs-border-color; + } + + & > li { + position: relative; + float: none; // reset bootstrap + width: 100%; + text-align: center; + + & > a { + width: calc((#{$spacing-medium} * 2) + 1px); + height: calc((#{$spacing-medium} * 2) + 1px); + margin: auto; + padding: 0; + text-align: center; + color: $brand-primary; + border: 1px solid $tabs-border-color; + border-radius: 100%; + background-color: $bg-color; + font-size: $font-size-large; + font-weight: bold; + display: flex; + justify-content: center; + align-items: center; + } + + &.active { + & > a, + & > a:hover, + & > a:focus { + color: #ffffff; + border-color: $tabs-bg-active; + background-color: $tabs-bg-active; + } + } + } + } + } + + //add tabcontainer flex classes + + .tab-center.mx-tabcontainer { + & > .mx-tabcontainer-tabs { + display: flex; + align-items: center; + flex-flow: wrap; + justify-content: center; + } + } + + .tab-left.mx-tabcontainer { + & > .mx-tabcontainer-tabs { + display: flex; + align-items: center; + flex-flow: wrap; + justify-content: flex-start; + } + } + + .tab-right.mx-tabcontainer { + & > .mx-tabcontainer-tabs { + display: flex; + align-items: center; + flex-flow: wrap; + justify-content: flex-end; + } + } +} diff --git a/themesource/atlas_core/web/core/helpers/_table.scss b/themesource/atlas_core/web/core/helpers/_table.scss new file mode 100644 index 0000000..ce575a4 --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_table.scss @@ -0,0 +1,177 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin table-helpers() { + /* ========================================================================== + Table + + //== Design Properties + //## Helper classes to change the look and feel of the component + ========================================================================== */ + // Lined + table.table-lined.mx-table { + > tbody { + // Table row + > tr { + // Table header + // Table data + > td { + border-width: 1px 0; + border-style: solid; + border-color: $grid-border-color; + } + } + } + } + + // Bordered + table.table-bordered.mx-table { + > tbody { + // Table row + > tr { + // Table header + // Table data + > th, + > td { + border-width: 1px; + border-style: solid; + border-color: $grid-border-color; + } + } + } + } + + // Makes table compact + table.table-compact.mx-table { + > tbody { + // Table row + > tr { + // Table header + // Table data + > th, + > td { + padding-top: 2px; + padding-bottom: 2px; + } + } + } + } + + // Tables Vertical + // Will remove unwanted paddings + table.table-vertical.mx-table { + > tbody { + // Table row + > tr { + // Table header + > th { + padding-bottom: 0; + + > label { + padding: 0; + } + + > div > label { + padding: 0; + } + } + } + } + } + + // Align content in middle + table.table-align-vertical-middle.mx-table { + > tbody { + // Table row + > tr { + // Table header + // Table data + > th, + > td { + vertical-align: middle; + } + } + } + } + + // Compact labels + table.table-label-compact.mx-table { + > tbody { + // Table row + > tr { + // Table header + // Table data + > th, + > td { + > label { + margin: 0; + padding: 0; + } + + > div > label, + .mx-referenceselector-input-wrapper label { + margin: 0; + padding: 0; + } + } + } + } + } + + $height-row-s: 55px; + $height-row-m: 70px; + $height-row-l: 120px; + // Small rows + table.table-row-s.mx-table { + > tbody { + // Table row + > tr { + // Table header + // Table data + > th, + > td { + height: $height-row-s; + } + } + } + } + + // Medium rows + table.table-row-m.mx-table { + > tbody { + // Table row + > tr { + // Table header + // Table data + > th, + > td { + height: $height-row-m; + } + } + } + } + + // Large rows + table.table-row-l.mx-table { + > tbody { + // Table row + > tr { + // Table header + // Table data + > th, + > td { + height: $height-row-l; + } + } + } + } + + // Makes the columns fixed + table.table-fixed { + table-layout: fixed; + } +} diff --git a/themesource/atlas_core/web/core/helpers/_template-grid.scss b/themesource/atlas_core/web/core/helpers/_template-grid.scss new file mode 100644 index 0000000..71db23e --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_template-grid.scss @@ -0,0 +1,309 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin template-grid-helpers() { + /* ========================================================================== + Template grid + + //== Design Properties + //## Helper classes to change the look and feel of the component + ========================================================================== */ + // Make sure your content looks selectable + .templategrid-selectable.mx-templategrid { + .mx-templategrid-item { + cursor: pointer; + } + } + + // Lined + .templategrid-lined.mx-templategrid { + .mx-grid-content { + border-top-width: 2px; + border-top-style: solid; + border-top-color: $grid-border-color; + } + + .mx-templategrid-item { + border-top: 1px solid $grid-border-color; + border-right: none; + border-bottom: 1px solid $grid-border-color; + border-left: none; + } + } + + // Striped + .templategrid-striped.mx-templategrid { + .mx-templategrid-row:nth-child(odd) .mx-templategrid-item { + background-color: #f9f9f9; + } + } + + // Stylingless + .templategrid-stylingless.mx-templategrid { + .mx-templategrid-item { + padding: 0; + cursor: default; + border: 0; + background-color: transparent; + + &:hover { + background-color: transparent; + } + + &.selected { + background-color: transparent !important; + + &:hover { + background-color: transparent !important; + } + } + } + } + + // Transparent items + .templategrid-transparent.mx-templategrid { + .mx-templategrid-item { + border: 0; + background-color: transparent; + } + } + + // Hover + .templategrid-hover.mx-templategrid { + .mx-templategrid-item { + &:hover { + background-color: $grid-bg-hover !important; + } + + &.selected { + background-color: $grid-bg-selected !important; + + &:hover { + background-color: $grid-bg-selected-hover !important; + } + } + } + } + + // Templategrid Row Sizes + .templategrid-lg.mx-templategrid { + .mx-templategrid-item { + padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2) + ($grid-padding-left * 2); + } + } + + .templategrid-sm.mx-templategrid { + .mx-templategrid-item { + padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2) + ($grid-padding-left / 2); + } + } + + // Templategrid Layoutgrid styles + .mx-templategrid[class*="tg-col"] { + overflow: hidden; // For if it is not in a layout, to prevent scrollbars + .mx-templategrid-content-wrapper { + display: block; + } + + .mx-templategrid-row { + display: block; + margin-right: -1 * $gutter-size; + margin-left: -1 * $gutter-size; + + &::before, + &::after { + // clearfix + display: table; + clear: both; + content: " "; + } + } + + .mx-templategrid-item { + // bootstrap col + position: relative; + display: block; + float: left; + min-height: 1px; + padding-right: $gutter-size; + padding-left: $gutter-size; + border: 0; + @media (max-width: 992px) { + width: 100% !important; + } + + .mx-dataview { + overflow: hidden; + } + } + + &.tg-col-xs-12 .mx-templategrid-item { + width: 100% !important; + } + + &.tg-col-xs-11 .mx-templategrid-item { + width: 91.66666667% !important; + } + + &.tg-col-xs-10 .mx-templategrid-item { + width: 83.33333333% !important; + } + + &.tg-col-xs-9 .mx-templategrid-item { + width: 75% !important; + } + + &.tg-col-xs-8 .mx-templategrid-item { + width: 66.66666667% !important; + } + + &.tg-col-xs-7 .mx-templategrid-item { + width: 58.33333333% !important; + } + + &.tg-col-xs-6 .mx-templategrid-item { + width: 50% !important; + } + + &.tg-col-xs-5 .mx-templategrid-item { + width: 41.66666667% !important; + } + + &.tg-col-xs-4 .mx-templategrid-item { + width: 33.33333333% !important; + } + + &.tg-col-xs-3 .mx-templategrid-item { + width: 25% !important; + } + + &.tg-col-xs-2 .mx-templategrid-item { + width: 16.66666667% !important; + } + + &.tg-col-xs-1 .mx-templategrid-item { + width: 8.33333333% !important; + } + + @media (min-width: 768px) { + &.tg-col-sm-12 .mx-templategrid-item { + width: 100% !important; + } + &.tg-col-sm-11 .mx-templategrid-item { + width: 91.66666667% !important; + } + &.tg-col-sm-10 .mx-templategrid-item { + width: 83.33333333% !important; + } + &.tg-col-sm-9 .mx-templategrid-item { + width: 75% !important; + } + &.tg-col-sm-8 .mx-templategrid-item { + width: 66.66666667% !important; + } + &.tg-col-sm-7 .mx-templategrid-item { + width: 58.33333333% !important; + } + &.tg-col-sm-6 .mx-templategrid-item { + width: 50% !important; + } + &.tg-col-sm-5 .mx-templategrid-item { + width: 41.66666667% !important; + } + &.tg-col-sm-4 .mx-templategrid-item { + width: 33.33333333% !important; + } + &.tg-col-sm-3 .mx-templategrid-item { + width: 25% !important; + } + &.tg-col-sm-2 .mx-templategrid-item { + width: 16.66666667% !important; + } + &.tg-col-sm-1 .mx-templategrid-item { + width: 8.33333333% !important; + } + } + @media (min-width: 992px) { + &.tg-col-md-12 .mx-templategrid-item { + width: 100% !important; + } + &.tg-col-md-11 .mx-templategrid-item { + width: 91.66666667% !important; + } + &.tg-col-md-10 .mx-templategrid-item { + width: 83.33333333% !important; + } + &.tg-col-md-9 .mx-templategrid-item { + width: 75% !important; + } + &.tg-col-md-8 .mx-templategrid-item { + width: 66.66666667% !important; + } + &.tg-col-md-7 .mx-templategrid-item { + width: 58.33333333% !important; + } + &.tg-col-md-6 .mx-templategrid-item { + width: 50% !important; + } + &.tg-col-md-5 .mx-templategrid-item { + width: 41.66666667% !important; + } + &.tg-col-md-4 .mx-templategrid-item { + width: 33.33333333% !important; + } + &.tg-col-md-3 .mx-templategrid-item { + width: 25% !important; + } + &.tg-col-md-2 .mx-templategrid-item { + width: 16.66666667% !important; + } + &.tg-col-md-1 .mx-templategrid-item { + width: 8.33333333% !important; + } + } + @media (min-width: 1200px) { + &.tg-col-lg-12 .mx-templategrid-item { + width: 100% !important; + } + &.tg-col-lg-11 .mx-templategrid-item { + width: 91.66666667% !important; + } + &.tg-col-lg-10 .mx-templategrid-item { + width: 83.33333333% !important; + } + &.tg-col-lg-9 .mx-templategrid-item { + width: 75% !important; + } + &.tg-col-lg-8 .mx-templategrid-item { + width: 66.66666667% !important; + } + &.tg-col-lg-7 .mx-templategrid-item { + width: 58.33333333% !important; + } + &.tg-col-lg-6 .mx-templategrid-item { + width: 50% !important; + } + &.tg-col-lg-5 .mx-templategrid-item { + width: 41.66666667% !important; + } + &.tg-col-lg-4 .mx-templategrid-item { + width: 33.33333333% !important; + } + &.tg-col-lg-3 .mx-templategrid-item { + width: 25% !important; + } + &.tg-col-lg-2 .mx-templategrid-item { + width: 16.66666667% !important; + } + &.tg-col-lg-1 .mx-templategrid-item { + width: 8.33333333% !important; + } + } + } +} diff --git a/themesource/atlas_core/web/core/helpers/_typography.scss b/themesource/atlas_core/web/core/helpers/_typography.scss new file mode 100644 index 0000000..f8c9f20 --- /dev/null +++ b/themesource/atlas_core/web/core/helpers/_typography.scss @@ -0,0 +1,137 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin typography-helpers() { + /* ========================================================================== + Typography + + //== Design Properties + //## Helper classes to change the look and feel of the component + ========================================================================== */ + // Text size + .text-small { + font-size: $font-size-small !important; + } + + .text-large { + font-size: $font-size-large !important; + } + + // Text Weights + .text-light, + .text-light > *, + .text-light label { + font-weight: $font-weight-light !important; + } + + .text-normal, + .text-normal > *, + .text-normal label { + font-weight: $font-weight-normal !important; + } + + .text-semibold, + .text-semibold > *, + .text-semibold label { + font-weight: $font-weight-semibold !important; + } + + .text-bold, + .text-bold > *, + .text-bold label { + font-weight: $font-weight-bold !important; + } + + // Color variations + .text-secondary, + .text-secondary:hover, + .text-default, + .text-default:hover { + color: $font-color-default !important; + } + + .text-primary, + .text-primary:hover { + color: $brand-primary !important; + } + + .text-info, + .text-info:hover { + color: $brand-info !important; + } + + .text-success, + .text-success:hover { + color: $brand-success !important; + } + + .text-warning, + .text-warning:hover { + color: $brand-warning !important; + } + + .text-danger, + .text-danger:hover { + color: $brand-danger !important; + } + + .text-header { + color: $font-color-header !important; + } + + .text-detail { + color: $font-color-detail !important; + } + + .text-white { + color: #ffffff; + } + + // Alignment options + .text-left { + text-align: left !important; + } + .text-center { + text-align: center !important; + } + .text-right { + text-align: right !important; + } + .text-justify { + text-align: justify !important; + } + + // Transform options + .text-lowercase { + text-transform: lowercase !important; + } + .text-uppercase { + text-transform: uppercase !important; + } + .text-capitalize { + text-transform: capitalize !important; + } + + // Wrap options + .text-break { + word-break: break-all !important; + word-break: break-word !important; + -webkit-hyphens: auto !important; + hyphens: auto !important; + } + + .text-nowrap { + white-space: nowrap !important; + } + + .text-nowrap { + overflow: hidden !important; + max-width: 100% !important; + white-space: nowrap !important; + text-overflow: ellipsis !important; + } +} diff --git a/themesource/atlas_core/web/core/manifest.json b/themesource/atlas_core/web/core/manifest.json new file mode 100644 index 0000000..b6b47f5 --- /dev/null +++ b/themesource/atlas_core/web/core/manifest.json @@ -0,0 +1,4 @@ +{ + "name": "Atlas-UI-Framework", + "version": "3.0.0" +} diff --git a/themesource/atlas_core/web/core/widgets/_accordion.scss b/themesource/atlas_core/web/core/widgets/_accordion.scss new file mode 100644 index 0000000..7941559 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_accordion.scss @@ -0,0 +1,125 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin accordion() { + /* ========================================================================== + Accordion + + Default Mendix accordion widget styles. + ========================================================================== */ + + .widget-accordion { + .widget-accordion-group { + @include get-accordion-group-styles( + $accordion-header-default-bg, + $accordion-header-default-bg-hover, + $accordion-header-default-color, + $brand-primary, + $accordion-default-border-color + ); + } + + &.widget-accordion-preview { + .widget-accordion-group { + @include get-accordion-preview-group-styles($accordion-header-default-color); + } + } + } +} + +@mixin get-accordion-group-styles($background-color, $background-color-hover, $color, $color-hover, $border-color) { + border-color: $border-color; + background-color: $bg-color-secondary; + + &:first-child { + border-top-left-radius: $border-radius-default; + border-top-right-radius: $border-radius-default; + + > .widget-accordion-group-header > .widget-accordion-group-header-button { + border-top-left-radius: calc(#{$border-radius-default} - 1px); + border-top-right-radius: calc(#{$border-radius-default} - 1px); + } + } + + &:last-child { + border-bottom-left-radius: $border-radius-default; + border-bottom-right-radius: $border-radius-default; + } + + &.widget-accordion-group-collapsed:last-child, + &.widget-accordion-group-collapsing:last-child { + > .widget-accordion-group-header > .widget-accordion-group-header-button { + border-bottom-left-radius: calc(#{$border-radius-default} - 1px); + border-bottom-right-radius: calc(#{$border-radius-default} - 1px); + } + } + + &.widget-accordion-group-collapsing:last-child { + > .widget-accordion-group-header > .widget-accordion-group-header-button { + transition: border-radius 5ms ease 200ms; + } + } + + &.widget-accordion-group-expanding:last-child { + > .widget-accordion-group-header > .widget-accordion-group-header-button { + transition: border-radius 5ms ease 80ms; + } + } + + > .widget-accordion-group-header > .widget-accordion-group-header-button { + cursor: auto; + background-color: $background-color; + padding: $spacing-medium; + + > :is(h1, h2, h3, h4, h5, h6) { + font-size: $font-size-h5; + font-weight: $font-weight-header; + } + + > :is(h1, h2, h3, h4, h5, h6, p, span) { + color: $color; + } + + .widget-accordion-group-header-button-icon { + fill: $color; + } + + &.widget-accordion-group-header-button-clickable { + &:hover, + &:focus, + &:active { + background-color: $background-color-hover; + + > :is(h1, h2, h3, h4, h5, h6, p, span) { + color: $color-hover; + } + + .widget-accordion-group-header-button-icon { + fill: $color-hover; + } + } + } + } + + > .widget-accordion-group-content-wrapper > .widget-accordion-group-content { + border-color: $border-color; + padding: $spacing-small $spacing-medium $spacing-large $spacing-medium; + } +} + +@mixin get-accordion-preview-group-styles($color) { + .widget-accordion-group-header-button { + > div > :is(h1, h2, h3, h4, h5, h6) { + font-size: $font-size-h5; + font-weight: $font-weight-header; + } + + > div > :is(h1, h2, h3, h4, h5, h6, p, span) { + color: $color; + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_badge-button.scss b/themesource/atlas_core/web/core/widgets/_badge-button.scss new file mode 100644 index 0000000..8033948 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_badge-button.scss @@ -0,0 +1,36 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin badge-button() { + /* ========================================================================== + Badge button + + Widget styles + ========================================================================== */ + .widget-badge-button { + display: inline-block; + + .widget-badge-button-text { + white-space: nowrap; + padding-right: 5px; + } + + .badge { + top: unset; + display: inline-block; + margin: 0; + padding: $spacing-smaller $spacing-small; + text-align: center; + vertical-align: baseline; + white-space: nowrap; + background-color: $btn-primary-color; + color: $btn-primary-bg; + font-size: 100%; + line-height: 1; + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_badge.scss b/themesource/atlas_core/web/core/widgets/_badge.scss new file mode 100644 index 0000000..0e1c997 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_badge.scss @@ -0,0 +1,58 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin badge() { + /* ========================================================================== + Badge + + Override of default Bootstrap badge style + ========================================================================== */ + + .badge { + display: inline-block; + margin: 0; + padding: $spacing-smaller $spacing-small; + text-align: center; + vertical-align: baseline; + white-space: nowrap; + color: #ffffff; + font-size: 100%; + line-height: 1; + + .form-control-static { + font-weight: $font-weight-normal; + all: unset; + } + } + + /* ========================================================================== + Badge-web + + Widget styles + ========================================================================== */ + + .widget-badge { + color: $label-primary-color; + background-color: $label-primary-bg; + } + + .widget-badge-clickable { + cursor: pointer; + } + + .widget-badge.badge:empty { + display: initial; + /* Fix padding to stay round */ + padding: $spacing-smaller calc(#{$spacing-small} + 2px); + } + + .widget-badge.label:empty { + display: initial; + /* Fix padding to stay square */ + padding: $spacing-smaller calc(#{$spacing-small} + 2px); + } +} diff --git a/themesource/atlas_core/web/core/widgets/_barcode-scanner.scss b/themesource/atlas_core/web/core/widgets/_barcode-scanner.scss new file mode 100644 index 0000000..4c0a5c5 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_barcode-scanner.scss @@ -0,0 +1,63 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin barcode-scanner() { + /* ========================================================================== + Barcode-scanner + + Override of default Bootstrap barcode-scanner style + ========================================================================== */ + + .mx-barcode-scanner { + background: #000000; + z-index: 110; + + .close-button { + color: white; + .glyphicon { + font-size: 16px; + } + } + + .video-canvas { + .canvas-background { + background-color: rgba(0, 0, 0, 0.7); + } + + .canvas-middle { + .canvas-middle-middle { + $corner-offset: 13px; + .corner { + $corner-border: 5px solid #ffffff; + border-left: $corner-border; + border-top: $corner-border; + + &.corner-top-left { + top: -$corner-offset; + left: -$corner-offset; + } + &.corner-top-right { + top: -$corner-offset; + right: -$corner-offset; + transform: rotate(90deg); + } + &.corner-bottom-right { + bottom: -$corner-offset; + right: -$corner-offset; + transform: rotate(180deg); + } + &.corner-bottom-left { + bottom: -$corner-offset; + left: -$corner-offset; + transform: rotate(270deg); + } + } + } + } + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_button.scss b/themesource/atlas_core/web/core/widgets/_button.scss new file mode 100644 index 0000000..eecfac4 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_button.scss @@ -0,0 +1,98 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin button() { + /* ========================================================================== + Button + + Default Bootstrap and Mendix button + ========================================================================== */ + + .btn, + .mx-button { + display: inline-block; + margin-bottom: 0; + padding: 0.6em 1em; + cursor: pointer; + -webkit-user-select: none; + user-select: none; + transition: all 0.2s ease-in-out; + text-align: center; + vertical-align: middle; + white-space: nowrap; + color: $btn-default-color; + border: 1px solid $btn-default-border-color; + border-radius: $btn-border-radius; + background-color: $btn-default-bg; + background-image: none; + box-shadow: none; + text-shadow: none; + font-size: $btn-font-size; + line-height: $line-height-base; + + &:hover, + &:focus, + &:active, + &:active:focus { + outline: none; + box-shadow: none; + } + + &[aria-disabled] { + cursor: not-allowed; + pointer-events: none; + opacity: 0.65; + } + + @if $btn-bordered != false { + @extend .btn-bordered; + } + } + + // Mendix button link + .mx-link { + padding: 0; + color: $link-color; + + &[aria-disabled="true"] { + cursor: not-allowed; + pointer-events: none; + opacity: 0.65; + } + } + + .link-back { + color: $font-color-detail; + + .glyphicon { + top: 2px; + } + } + + // Images and icons in buttons + .btn, + .mx-button, + .mx-link { + img { + //height: auto; // MXUI override who set the height on 16px default + height: calc(#{$font-size-default} + 4px); + margin-right: 4px; + vertical-align: text-top; + } + } + + //== Phone specific + //-------------------------------------------------------------------------------------------------------------------// + .profile-phone { + .btn, + .mx-link { + &:active { + transform: translateY(1px); + } + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_check-box.scss b/themesource/atlas_core/web/core/widgets/_check-box.scss new file mode 100644 index 0000000..3a67fda --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_check-box.scss @@ -0,0 +1,99 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin check-box() { + /* ========================================================================== + Check box + + Default Mendix check box widget + ========================================================================== */ + + .mx-checkbox.label-after { + flex-wrap: wrap; + + .control-label { + display: flex; + align-items: center; + padding: 0; + } + } + + input[type="checkbox"] { + position: relative !important; //Remove after mxui merge + width: 16px; + height: 16px; + margin: 0 !important; // Remove after mxui merge + cursor: pointer; + -webkit-user-select: none; + user-select: none; + appearance: none; + -moz-appearance: none; + -webkit-appearance: none; + transform: translateZ(0); + + &:before, + &:after { + position: absolute; + display: block; + transition: all 0.3s ease; + } + + &:before { + // Checkbox + width: 100%; + height: 100%; + content: ""; + border: 1px solid $form-input-border-color; + border-radius: $form-input-border-radius; + background-color: transparent; + } + + &:after { + // Checkmark + width: 8px; + height: 4px; + margin: 5px 4px; + transform: rotate(-45deg); + pointer-events: none; + border: 2px solid #ffffff; + border-top: 0; + border-right: 0; + } + + &:not(:disabled):not(:checked):hover:after { + content: ""; + border-color: $form-input-bg-hover; // color of checkmark on hover + } + + &:checked:before { + border-color: $form-input-border-focus-color; + background-color: $form-input-border-focus-color; + } + + &:checked:after { + content: ""; + } + + &:disabled:before { + background-color: $form-input-bg-disabled; + } + + &:checked:disabled:before { + border-color: transparent; + background-color: rgba($form-input-border-focus-color, 0.4); + } + + &:disabled:after, + &:checked:disabled:after { + border-color: $form-input-bg-disabled; + } + + & + .control-label { + margin-left: $form-label-gutter; + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_data-grid.scss b/themesource/atlas_core/web/core/widgets/_data-grid.scss new file mode 100644 index 0000000..b6b08e6 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_data-grid.scss @@ -0,0 +1,86 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin data-grid() { + /* ========================================================================== + Data grid default + + Default Mendix data grid widget. The data grid shows a list of objects in a grid + ========================================================================== */ + + .mx-datagrid { + table { + border-width: 0; + background-color: transparent; + /* Table header */ + th { + border-style: solid; + border-color: $grid-border-color; + border-top-width: 0; + border-right: 0; + border-bottom-width: 1px; + border-left: 0; + background-color: $grid-bg-header; + padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left; + vertical-align: middle; + + .mx-datagrid-head-caption { + white-space: normal; + } + } + + /* Table Body */ + tbody tr { + td { + @include transition(); + padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left; + vertical-align: middle; + border-width: 0; + border-color: $grid-border-color; + border-bottom-width: 1px; + border-bottom-style: solid; + background-color: $grid-bg; + + &:focus { + outline: none; + } + + /* Text without spaces */ + .mx-datagrid-data-wrapper { + text-overflow: ellipsis; + } + } + + &.selected td, + &.selected:hover td { + color: $grid-selected-color; + background-color: $grid-bg-selected !important; + } + } + + /* Table Footer */ + tfoot { + > tr > th { + padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left; + border-width: 0; + background-color: $grid-footer-bg; + } + + > tr > td { + padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left; + border-width: 0; + background-color: $grid-bg; + font-weight: $font-weight-bold; + } + } + + & *:focus { + outline: 0; + } + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_data-view.scss b/themesource/atlas_core/web/core/widgets/_data-view.scss new file mode 100644 index 0000000..7404814 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_data-view.scss @@ -0,0 +1,49 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin data-view() { + /* ========================================================================== + Data view + + Default Mendix data view widget. The data view is used for showing the contents of exactly one object + ========================================================================== */ + + .mx-dataview { + /* Dataview-content gives problems for nexted layout grid containers */ + > .mx-dataview-content > .mx-container-nested { + > .row { + margin-right: 0; + margin-left: 0; + } + } + + /* Dataview empty message */ + .mx-dataview-message { + color: $dataview-emptymessage-color; + background: $dataview-emptymessage-bg; + } + } + + .mx-dataview-controls { + margin-top: $spacing-medium; + padding: $spacing-medium 0 0; + border-top: 1px solid $dataview-controls-border-color; + border-radius: 0; + background-color: $dataview-controls-bg; + /* Buttons */ + .mx-button { + margin-right: $spacing-small; + margin-bottom: 0; + + &:last-child { + margin-right: 0; + } + } + + background-color: inherit; + } +} diff --git a/themesource/atlas_core/web/core/widgets/_date-picker.scss b/themesource/atlas_core/web/core/widgets/_date-picker.scss new file mode 100644 index 0000000..8af5964 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_date-picker.scss @@ -0,0 +1,133 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin date-picker() { + /* ========================================================================== + Date picker + + Default Mendix date picker widget + ========================================================================== */ + + .mx-calendar { + /* (must be higher than popup z-index) */ + z-index: 10010 !important; + padding: 8px; + font-size: 12px; + background: $bg-color; + border-radius: $border-radius-default; + border: 1px solid $border-color-default; + box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.06); + + .mx-calendar-month-header { + display: flex; + flex-direction: row; + justify-content: space-between; + margin: 0 3px 10px 3px; + } + + .mx-calendar-month-next, + .mx-calendar-month-previous, + .mx-calendar-month-dropdown { + border: 0; + cursor: pointer; + background: transparent; + } + + .mx-calendar-month-next, + .mx-calendar-month-previous { + &:hover { + color: $brand-primary; + } + } + + .mx-calendar-month-dropdown { + display: flex; + align-items: center; + justify-content: center; + position: relative; + + .mx-calendar-month-current:first-child { + margin-right: 10px; + } + } + + th { + color: $brand-primary; + } + + th, + td { + width: 35px; + height: 35px; + text-align: center; + } + + td { + color: $font-color-default; + + &:hover { + cursor: pointer; + border-radius: 50%; + color: $brand-primary; + background-color: $brand-default; + } + } + + .mx-calendar-day-month-next, + .mx-calendar-day-month-previous { + color: lighten($font-color-default, 45%); + } + + .mx-calendar-day-selected, + .mx-calendar-day-selected:hover { + color: #fff; + border-radius: 50%; + background: $brand-primary; + } + + // + + .mx-calendar-year-switcher { + text-align: center; + margin-top: 10px; + color: lighten($brand-primary, 30%); + + span.mx-calendar-year-selected { + color: $brand-primary; + margin-left: 10px; + margin-right: 10px; + } + + span:hover { + cursor: pointer; + text-decoration: underline; + background-color: transparent; + } + } + } + + .mx-calendar-month-dropdown-options { + /* (must be higher than popup z-index) */ + z-index: 10020 !important; + position: absolute; + top: 25px; + padding: 2px 10px; + border-radius: $border-radius-default; + background-color: $bg-color; + + div { + cursor: pointer; + font-size: 12px; + padding: 2px 0; + + &:hover, + &:focus { + color: $brand-primary; + } + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_glyphicon.scss b/themesource/atlas_core/web/core/widgets/_glyphicon.scss new file mode 100644 index 0000000..37ec807 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_glyphicon.scss @@ -0,0 +1,29 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin glyphicon() { + /* ========================================================================== + Glyphicon + + Default Mendix glyphicon + ========================================================================== */ + + .mx-glyphicon { + &:before { + display: inline-block; + margin-top: -0.2em; + margin-right: 0.4555555em; + vertical-align: middle; + font-family: "Glyphicons Halflings"; + font-weight: $font-weight-normal; + font-style: normal; + line-height: inherit; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_grid.scss b/themesource/atlas_core/web/core/widgets/_grid.scss new file mode 100644 index 0000000..047b4e2 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_grid.scss @@ -0,0 +1,84 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin grid() { + /* ========================================================================== + Grid + + Default Mendix grid (used for Mendix data grid) + ========================================================================== */ + + .mx-grid { + padding: 0px; + border: 0; + border-radius: 0; + + .mx-grid-controlbar { + margin: 10px 0; + /* Paging */ + .mx-grid-pagingbar { + /* Buttons */ + .mx-button { + padding: 8px; + color: $grid-paging-color; + border-color: $grid-paging-border-color; + background-color: $grid-paging-bg; + + &:hover { + color: $grid-paging-color-hover; + border-color: $grid-paging-border-color-hover; + background-color: $grid-paging-bg-hover; + } + } + + /* Text Paging .. to .. to .. */ + .mx-grid-paging-status { + padding: 0 8px 8px; + } + } + } + + .mx-grid-searchbar { + margin: 10px 0; + + .mx-grid-search-item { + .mx-grid-search-label { + vertical-align: middle; + + label { + padding-top: 5px; + } + } + + .mx-grid-search-input { + display: inline-flex; + + .form-control { + height: 28px; + font-size: 11px; + } + + select.form-control { + padding: 3px; + vertical-align: middle; + } + + .mx-button { + height: 28px; + padding-top: 2px; + padding-bottom: 2px; + } + } + } + } + } + + // Remove default border from grid inside a Mendix Dataview + .mx-dataview .mx-grid { + border: 0; + } +} diff --git a/themesource/atlas_core/web/core/widgets/_group-box.scss b/themesource/atlas_core/web/core/widgets/_group-box.scss new file mode 100644 index 0000000..a80e4e0 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_group-box.scss @@ -0,0 +1,80 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin group-box() { + /* ========================================================================== + Group box + + Default Mendix group box + ========================================================================== */ + + .mx-groupbox { + margin: 0; + + > .mx-groupbox-header { + margin: 0; + color: $groupbox-default-color; + border-width: 1px 1px 0 1px; + border-style: solid; + border-color: $groupbox-default-bg; + background: $groupbox-default-bg; + font-size: $font-size-h5; + border-radius: $border-radius-default $border-radius-default 0 0; + padding: $spacing-small * 1.5 $spacing-medium; + + .mx-groupbox-collapse-icon { + margin-top: 0.1em; + } + } + + // Header options + > h1.mx-groupbox-header { + font-size: $font-size-h1; + } + + > h2.mx-groupbox-header { + font-size: $font-size-h2; + } + + > h3.mx-groupbox-header { + font-size: $font-size-h3; + } + + > h4.mx-groupbox-header { + font-size: $font-size-h4; + } + + > h5.mx-groupbox-header { + font-size: $font-size-h5; + } + + > h6.mx-groupbox-header { + font-size: $font-size-h6; + } + + > .mx-groupbox-body { + padding: $spacing-small * 1.5 $spacing-medium; + border-width: 1px; + border-style: solid; + border-color: $groupbox-default-bg; + background-color: #ffffff; + border-radius: $border-radius-default; + } + + .mx-groupbox-header + .mx-groupbox-body { + border-top: none; + } + + &.collapsed > .mx-groupbox-header { + } + } + + //With header + .mx-groupbox-header ~ .mx-groupbox-body { + border-radius: 0 0 $border-radius-default $border-radius-default; + } +} diff --git a/themesource/atlas_core/web/core/widgets/_header.scss b/themesource/atlas_core/web/core/widgets/_header.scss new file mode 100644 index 0000000..07e2f2a --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_header.scss @@ -0,0 +1,123 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin header() { + /* ========================================================================== + Header + + Default Mendix mobile header + ========================================================================== */ + + .mx-header { + z-index: 100; + display: flex; + width: 100%; + height: $m-header-height; + padding: 0; + text-align: initial; + color: $m-header-color; + background-color: $m-header-bg; + box-shadow: 0px 2px 2px rgba(194, 196, 201, 0.30354); + + // Reset mxui + div.mx-header-left, + div.mx-header-right { + position: relative; + top: initial; + right: initial; + left: initial; + display: flex; + align-items: center; + width: 25%; + height: 100%; + + .mx-placeholder { + display: flex; + align-items: center; + height: 100%; + } + } + + div.mx-header-left .mx-placeholder { + order: 1; + + .mx-placeholder { + justify-content: flex-start; + } + } + + div.mx-header-center { + overflow: hidden; + flex: 1; + order: 2; + text-align: center; + + .mx-title { + overflow: hidden; + width: 100%; + margin: 0; + text-overflow: ellipsis; + color: $m-header-color; + font-size: $m-header-title-size; + line-height: $m-header-height; + } + } + + div.mx-header-right { + order: 3; + + .mx-placeholder { + justify-content: flex-end; + } + } + + // Content magic + .mx-link { + display: flex; + align-items: center; + height: 100%; + transition: all 0.2s; + text-decoration: none; + + .glyphicon { + top: 0; + font-size: 23px; + } + + &:active { + transform: translateY(1px); + color: $link-hover-color; + } + } + + .mx-link, + .btn, + img { + padding: 0 $spacing-medium; + } + + .mx-sidebartoggle { + font-size: 24px; + line-height: $m-header-height; + + img { + height: 20px; + } + } + } + + // RTL support + body[dir="rtl"] { + .mx-header-left { + order: 3; + } + + .mx-header-right { + order: 1; + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_input.scss b/themesource/atlas_core/web/core/widgets/_input.scss new file mode 100644 index 0000000..fe8f666 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_input.scss @@ -0,0 +1,273 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin input() { + /* ========================================================================== + Input + + The form-control class style all inputs + ========================================================================== */ + .form-control { + display: flex; + flex: 1; + min-width: 50px; + height: $form-input-height; + padding: $form-input-padding-y $form-input-padding-x; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + color: $form-input-color; + border: 1px solid $form-input-border-color; + border-radius: $form-input-border-radius; + background-color: $form-input-bg; + background-image: none; + box-shadow: none; + font-size: $form-input-font-size; + line-height: $form-input-line-height; + appearance: none; + -moz-appearance: none; + -webkit-appearance: none; + @if $form-input-style==lined { + @extend .form-control-lined; + } + + &::placeholder { + color: $form-input-placeholder-color; + } + } + + .form-control:not([readonly]):focus { + border-color: $form-input-border-focus-color; + outline: 0; + background-color: $form-input-bg-focus; + box-shadow: none; + } + + .form-control[disabled], + .form-control[readonly], + fieldset[disabled] .form-control { + opacity: 1; + background-color: $form-input-bg-disabled; + } + + .form-control[disabled], + fieldset[disabled] .form-control { + cursor: not-allowed; + } + + // Lined + .form-control-lined { + border: 0; + border-bottom: 1px solid $form-input-border-color; + border-radius: 0; + background-color: transparent; + + &:focus { + background-color: transparent; + } + } + + // Read only form control class + .form-control-static { + overflow: hidden; + flex: 1; + min-height: auto; + padding: $form-input-static-padding-y $form-input-static-padding-x; + //border-bottom: 1px solid $form-input-static-border-color; + font-size: $form-input-font-size; + line-height: $form-input-line-height; + + & + .control-label { + margin-left: $form-label-gutter; + } + } + + // Dropdown input widget + select.form-control { + $arrow: "resources/arrow.svg"; + padding-right: 30px; + background-image: url($arrow); + background-repeat: no-repeat; + background-position: calc(100% - #{$form-input-padding-x}) center; + appearance: none; + -moz-appearance: none; + -webkit-appearance: none; + } + + .form-control.mx-selectbox { + align-items: center; + flex-direction: row-reverse; + justify-content: space-between; + } + + // Not editable textarea, textarea will be rendered as a label + .mx-textarea .control-label { + height: auto; + } + + .mx-textarea-counter { + display: block; + width: 100%; + text-align: right; + margin-top: $spacing-small; + } + + textarea.form-control { + flex-basis: auto; + } + + .mx-compound-control { + display: flex; + flex: 1; + flex-wrap: wrap; + max-width: 100%; + + .btn { + margin-left: $spacing-small; + } + + .mx-validation-message { + flex-basis: 100%; + margin-top: 4px; + } + } + + .has-error .mx-validation-message { + margin-top: $spacing-small; + margin-bottom: 0; + padding: $spacing-small; + color: $alert-danger-color; + border-color: $alert-danger-border-color; + background-color: $alert-danger-bg; + } + + // Form Group + .form-group { + display: flex; + flex-direction: row; + margin-bottom: $form-group-margin-bottom; + + & > div[class*="col-"] { + display: flex; + align-items: center; + flex-wrap: wrap; + } + + & > [class*="col-"] { + padding-right: $form-group-gutter; + padding-left: $form-group-gutter; + } + + // Alignment content + div[class*="textBox"] > .control-label, + div[class*="textArea"] > .control-label, + div[class*="datePicker"] > .control-label { + @extend .form-control-static; + } + + // Label + .control-label { + overflow: hidden; + margin-bottom: 4px; + text-align: left; + text-overflow: ellipsis; + color: $form-label-color; + font-size: $form-label-size; + font-weight: $form-label-weight; + } + + .mx-validation-message { + flex-basis: 100%; + } + + &.no-columns:not(.label-after) { + flex-direction: column; + } + } + + .form-group.label-after { + .form-control-static { + flex: unset; + } + + .control-label { + margin-bottom: 0; + } + } + + .mx-dateinput, + .mx-referenceselector, + .mx-referencesetselector { + flex: 1; + } + + // Targets only webkit iOS devices + .dj_webkit.dj_ios .form-control { + transform: translateZ(0); + } + + @media only screen and (min-width: $screen-md) { + .form-horizontal { + .control-label { + margin-bottom: 0; + padding-top: $form-input-padding-y; + padding-bottom: $form-input-padding-y; + line-height: $form-input-line-height; + } + } + } + + @media only screen and (max-width: $screen-sm-max) { + .form-group { + flex-direction: column; + } + } + + @media only screen and (max-device-width: 1024px) and (-webkit-min-device-pixel-ratio: 0) { + // Fixes alignment bug on iPads / iPhones where datefield is not aligned vertically + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + line-height: 1; + } + // Fix shrinking of date inputs because inability of setting a placeholder + input[type="time"]:not(.has-value):before, + input[type="date"]:not(.has-value):before, + input[type="month"]:not(.has-value):before, + input[type="datetime-local"]:not(.has-value):before { + margin-right: 0.5em; + content: attr(placeholder) !important; + color: #aaaaaa; + } + input[type="time"].has-value:before, + input[type="date"].has-value:before, + input[type="month"].has-value:before, + input[type="datetime-local"].has-value:before { + content: "" !important; + } + } + + @media (-ms-high-contrast: none), (-ms-high-contrast: active) { + // Target IE10+ + .form-group { + display: block; + } + } + + [dir="rtl"] { + // Dropdown input widget + select.form-control { + padding-right: 30px; + padding-left: 0; + background-position: #{$form-input-padding-x} center; + } + + .mx-compound-control .btn { + margin-right: $spacing-small; + margin-left: 0; + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_label.scss b/themesource/atlas_core/web/core/widgets/_label.scss new file mode 100644 index 0000000..af9469d --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_label.scss @@ -0,0 +1,32 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin label() { + /* ========================================================================== + Label + + Default label combined with Bootstrap label + ========================================================================== */ + + .label { + display: inline-block; + margin: 0; + padding: $spacing-smaller $spacing-small; + text-align: center; + vertical-align: baseline; + white-space: nowrap; + color: #ffffff; + border-radius: 0.25em; + font-size: 100%; + line-height: 1; + + .form-control-static { + font-weight: $font-weight-normal; + all: unset; + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_layout-grid.scss b/themesource/atlas_core/web/core/widgets/_layout-grid.scss new file mode 100644 index 0000000..3aa3819 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_layout-grid.scss @@ -0,0 +1,950 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin layout-grid() { + /* ========================================================================== + Layout grid + + Default Bootstrap containers + ========================================================================== */ + .mx-layoutgrid { + width: 100%; + margin-right: auto; + margin-left: auto; + padding-right: $gutter-size; + padding-left: $gutter-size; + } + + // Row + .row { + display: flex; + flex-wrap: wrap; + margin-right: -$gutter-size; + margin-left: -$gutter-size; + + &::before, + &::after { + content: normal; + } + } + + .no-gutters { + margin-right: 0; + margin-left: 0; + } + + .no-gutters > .col, + .no-gutters > [class*="col-"] { + padding-right: 0; + padding-left: 0; + } + + // Columns + .col-1, + .col-2, + .col-3, + .col-4, + .col-5, + .col-6, + .col-7, + .col-8, + .col-9, + .col-10, + .col-11, + .col-12, + .col, + .col-auto, + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11, + .col-sm-12, + .col-sm, + .col-sm-auto, + .col-md-1, + .col-md-2, + .col-md-3, + .col-md-4, + .col-md-5, + .col-md-6, + .col-md-7, + .col-md-8, + .col-md-9, + .col-md-10, + .col-md-11, + .col-md-12, + .col-md, + .col-md-auto, + .col-lg-1, + .col-lg-2, + .col-lg-3, + .col-lg-4, + .col-lg-5, + .col-lg-6, + .col-lg-7, + .col-lg-8, + .col-lg-9, + .col-lg-10, + .col-lg-11, + .col-lg-12, + .col-lg, + .col-lg-auto, + .col-xl-1, + .col-xl-2, + .col-xl-3, + .col-xl-4, + .col-xl-5, + .col-xl-6, + .col-xl-7, + .col-xl-8, + .col-xl-9, + .col-xl-10, + .col-xl-11, + .col-xl-12, + .col-xl, + .col-xl-auto { + position: relative; + width: 100%; + padding-right: $gutter-size; + padding-left: $gutter-size; + } + + .col { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; + } + + .col-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + + .col-1 { + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + + .col-2 { + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + + .col-3 { + flex: 0 0 25%; + max-width: 25%; + } + + .col-4 { + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + + .col-5 { + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + + .col-6 { + flex: 0 0 50%; + max-width: 50%; + } + + .col-7 { + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + + .col-8 { + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + + .col-9 { + flex: 0 0 75%; + max-width: 75%; + } + + .col-10 { + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + + .col-11 { + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + + .col-12 { + flex: 0 0 100%; + max-width: 100%; + } + + .order-first { + order: -1; + } + + .order-last { + order: 13; + } + + .order-0 { + order: 0; + } + + .order-1 { + order: 1; + } + + .order-2 { + order: 2; + } + + .order-3 { + order: 3; + } + + .order-4 { + order: 4; + } + + .order-5 { + order: 5; + } + + .order-6 { + order: 6; + } + + .order-7 { + order: 7; + } + + .order-8 { + order: 8; + } + + .order-9 { + order: 9; + } + + .order-10 { + order: 10; + } + + .order-11 { + order: 11; + } + + .order-12 { + order: 12; + } + + .offset-1, + .col-offset-1 { + margin-left: 8.333333%; + } + + .offset-2, + .col-offset-2 { + margin-left: 16.666667%; + } + + .offset-3, + .col-offset-3 { + margin-left: 25%; + } + + .offset-4, + .col-offset-4 { + margin-left: 33.333333%; + } + + .offset-5, + .col-offset-5 { + margin-left: 41.666667%; + } + + .offset-6, + .col-offset-6 { + margin-left: 50%; + } + + .offset-7, + .col-offset-7 { + margin-left: 58.333333%; + } + + .offset-8, + .col-offset-8 { + margin-left: 66.666667%; + } + + .offset-9, + .col-offset-9 { + margin-left: 75%; + } + + .offset-10, + .col-offset-10 { + margin-left: 83.333333%; + } + + .offset-11, + .col-offset-11 { + margin-left: 91.666667%; + } + + // Responsiveness + @media (min-width: $screen-sm) { + .mx-layoutgrid-fixed { + max-width: 540px; + } + } + + @media (min-width: $screen-md) { + .mx-layoutgrid-fixed { + max-width: 720px; + } + } + + @media (min-width: $screen-lg) { + .mx-layoutgrid-fixed { + max-width: 960px; + } + } + + @media (min-width: $screen-xl) { + .mx-layoutgrid-fixed { + max-width: 1140px; + } + } + + @media (min-width: $screen-sm) { + .col-sm { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; + } + .col-sm-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-sm-1 { + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-sm-2 { + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-sm-3 { + flex: 0 0 25%; + max-width: 25%; + } + .col-sm-4 { + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-sm-5 { + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-sm-6 { + flex: 0 0 50%; + max-width: 50%; + } + .col-sm-7 { + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-sm-8 { + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-sm-9 { + flex: 0 0 75%; + max-width: 75%; + } + .col-sm-10 { + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-sm-11 { + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-sm-12 { + flex: 0 0 100%; + max-width: 100%; + } + .order-sm-first { + order: -1; + } + .order-sm-last { + order: 13; + } + .order-sm-0 { + order: 0; + } + .order-sm-1 { + order: 1; + } + .order-sm-2 { + order: 2; + } + .order-sm-3 { + order: 3; + } + .order-sm-4 { + order: 4; + } + .order-sm-5 { + order: 5; + } + .order-sm-6 { + order: 6; + } + .order-sm-7 { + order: 7; + } + .order-sm-8 { + order: 8; + } + .order-sm-9 { + order: 9; + } + .order-sm-10 { + order: 10; + } + .order-sm-11 { + order: 11; + } + .order-sm-12 { + order: 12; + } + .offset-sm-0, + .col-sm-offset-0 { + margin-left: 0; + } + .offset-sm-1, + .col-sm-offset-1 { + margin-left: 8.333333%; + } + .offset-sm-2, + .col-sm-offset-2 { + margin-left: 16.666667%; + } + .offset-sm-3, + .col-sm-offset-3 { + margin-left: 25%; + } + .offset-sm-4, + .col-sm-offset-4 { + margin-left: 33.333333%; + } + .offset-sm-5, + .col-sm-offset-5 { + margin-left: 41.666667%; + } + .offset-sm-6, + .col-sm-offset-6 { + margin-left: 50%; + } + .offset-sm-7, + .col-sm-offset-7 { + margin-left: 58.333333%; + } + .offset-sm-8, + .col-sm-offset-8 { + margin-left: 66.666667%; + } + .offset-sm-9, + .col-sm-offset-9 { + margin-left: 75%; + } + .offset-sm-10, + .col-sm-offset-10 { + margin-left: 83.333333%; + } + .offset-sm-11, + .col-sm-offset-11 { + margin-left: 91.666667%; + } + } + + @media (min-width: $screen-md) { + .col-md { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; + } + .col-md-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-md-1 { + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-md-2 { + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-md-3 { + flex: 0 0 25%; + max-width: 25%; + } + .col-md-4 { + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-md-5 { + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-md-6 { + flex: 0 0 50%; + max-width: 50%; + } + .col-md-7 { + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-md-8 { + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-md-9 { + flex: 0 0 75%; + max-width: 75%; + } + .col-md-10 { + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-md-11 { + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-md-12 { + flex: 0 0 100%; + max-width: 100%; + } + .order-md-first { + order: -1; + } + .order-md-last { + order: 13; + } + .order-md-0 { + order: 0; + } + .order-md-1 { + order: 1; + } + .order-md-2 { + order: 2; + } + .order-md-3 { + order: 3; + } + .order-md-4 { + order: 4; + } + .order-md-5 { + order: 5; + } + .order-md-6 { + order: 6; + } + .order-md-7 { + order: 7; + } + .order-md-8 { + order: 8; + } + .order-md-9 { + order: 9; + } + .order-md-10 { + order: 10; + } + .order-md-11 { + order: 11; + } + .order-md-12 { + order: 12; + } + .offset-md-0, + .col-md-offset-0 { + margin-left: 0; + } + .offset-md-1, + .col-md-offset-1 { + margin-left: 8.333333%; + } + .offset-md-2, + .col-md-offset-2 { + margin-left: 16.666667%; + } + .offset-md-3, + .col-md-offset-3 { + margin-left: 25%; + } + .offset-md-4, + .col-md-offset-4 { + margin-left: 33.333333%; + } + .offset-md-5, + .col-md-offset-5 { + margin-left: 41.666667%; + } + .offset-md-6, + .col-md-offset-6 { + margin-left: 50%; + } + .offset-md-7, + .col-md-offset-7 { + margin-left: 58.333333%; + } + .offset-md-8, + .col-md-offset-8 { + margin-left: 66.666667%; + } + .offset-md-9, + .col-md-offset-9 { + margin-left: 75%; + } + .offset-md-10, + .col-md-offset-10 { + margin-left: 83.333333%; + } + .offset-md-11, + .col-md-offset-11 { + margin-left: 91.666667%; + } + } + + @media (min-width: $screen-lg) { + .col-lg { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; + } + .col-lg-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-lg-1 { + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-lg-2 { + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-lg-3 { + flex: 0 0 25%; + max-width: 25%; + } + .col-lg-4 { + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-lg-5 { + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-lg-6 { + flex: 0 0 50%; + max-width: 50%; + } + .col-lg-7 { + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-lg-8 { + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-lg-9 { + flex: 0 0 75%; + max-width: 75%; + } + .col-lg-10 { + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-lg-11 { + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-lg-12 { + flex: 0 0 100%; + max-width: 100%; + } + .order-lg-first { + order: -1; + } + .order-lg-last { + order: 13; + } + .order-lg-0 { + order: 0; + } + .order-lg-1 { + order: 1; + } + .order-lg-2 { + order: 2; + } + .order-lg-3 { + order: 3; + } + .order-lg-4 { + order: 4; + } + .order-lg-5 { + order: 5; + } + .order-lg-6 { + order: 6; + } + .order-lg-7 { + order: 7; + } + .order-lg-8 { + order: 8; + } + .order-lg-9 { + order: 9; + } + .order-lg-10 { + order: 10; + } + .order-lg-11 { + order: 11; + } + .order-lg-12 { + order: 12; + } + .offset-lg-0, + .col-lg-offset-0 { + margin-left: 0; + } + .offset-lg-1, + .col-lg-offset-1 { + margin-left: 8.333333%; + } + .offset-lg-2, + .col-lg-offset-2 { + margin-left: 16.666667%; + } + .offset-lg-3, + .col-lg-offset-3 { + margin-left: 25%; + } + .offset-lg-4, + .col-lg-offset-4 { + margin-left: 33.333333%; + } + .offset-lg-5, + .col-lg-offset-5 { + margin-left: 41.666667%; + } + .offset-lg-6, + .col-lg-offset-6 { + margin-left: 50%; + } + .offset-lg-7, + .col-lg-offset-7 { + margin-left: 58.333333%; + } + .offset-lg-8, + .col-lg-offset-8 { + margin-left: 66.666667%; + } + .offset-lg-9, + .col-lg-offset-9 { + margin-left: 75%; + } + .offset-lg-10, + .col-lg-offset-10 { + margin-left: 83.333333%; + } + .offset-lg-11, + .col-lg-offset-11 { + margin-left: 91.666667%; + } + } + + @media (min-width: $screen-xl) { + .col-xl { + flex-basis: 0; + flex-grow: 1; + max-width: 100%; + } + .col-xl-auto { + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-xl-1 { + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-xl-2 { + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-xl-3 { + flex: 0 0 25%; + max-width: 25%; + } + .col-xl-4 { + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-xl-5 { + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-xl-6 { + flex: 0 0 50%; + max-width: 50%; + } + .col-xl-7 { + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-xl-8 { + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-xl-9 { + flex: 0 0 75%; + max-width: 75%; + } + .col-xl-10 { + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-xl-11 { + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-xl-12 { + flex: 0 0 100%; + max-width: 100%; + } + .order-xl-first { + order: -1; + } + .order-xl-last { + order: 13; + } + .order-xl-0 { + order: 0; + } + .order-xl-1 { + order: 1; + } + .order-xl-2 { + order: 2; + } + .order-xl-3 { + order: 3; + } + .order-xl-4 { + order: 4; + } + .order-xl-5 { + order: 5; + } + .order-xl-6 { + order: 6; + } + .order-xl-7 { + order: 7; + } + .order-xl-8 { + order: 8; + } + .order-xl-9 { + order: 9; + } + .order-xl-10 { + order: 10; + } + .order-xl-11 { + order: 11; + } + .order-xl-12 { + order: 12; + } + .offset-xl-0, + .col-xl-offset-0 { + margin-left: 0; + } + .offset-xl-1, + .col-xl-offset-1 { + margin-left: 8.333333%; + } + .offset-xl-2, + .col-xl-offset-2 { + margin-left: 16.666667%; + } + .offset-xl-3, + .col-xl-offset-3 { + margin-left: 25%; + } + .offset-xl-4, + .col-xl-offset-4 { + margin-left: 33.333333%; + } + .offset-xl-5, + .col-xl-offset-5 { + margin-left: 41.666667%; + } + .offset-xl-6, + .col-xl-offset-6 { + margin-left: 50%; + } + .offset-xl-7, + .col-xl-offset-7 { + margin-left: 58.333333%; + } + .offset-xl-8, + .col-xl-offset-8 { + margin-left: 66.666667%; + } + .offset-xl-9, + .col-xl-offset-9 { + margin-left: 75%; + } + .offset-xl-10, + .col-xl-offset-10 { + margin-left: 83.333333%; + } + .offset-xl-11, + .col-xl-offset-11 { + margin-left: 91.666667%; + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_list-view.scss b/themesource/atlas_core/web/core/widgets/_list-view.scss new file mode 100644 index 0000000..efef338 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_list-view.scss @@ -0,0 +1,96 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin list-view() { + /* ========================================================================== + List view + + Default Mendix list view widget. The list view shows a list of objects arranged vertically. Each object is shown using a template + ========================================================================== */ + .mx-listview { + // Remove widget padding + padding: 0; + /* Clear search button (overrides load more button stying) */ + & > ul { + margin: 0 0 $spacing-medium; + + .mx-listview-empty { + border-style: none; + background-color: transparent; + } + + & > li { + @include transition(); + background-color: #fff; + padding: $spacing-medium; + border-top: 1px solid $grid-border-color; + + &:last-child { + border-bottom: 1px solid $grid-border-color; + } + + &:focus, + &:active { + outline: 0; + } + } + } + + .selected { + background: $color-primary-light; + } + + .mx-layoutgrid { + padding: 0 !important; + } + } + + // Search bar + .mx-listview-searchbar { + margin-bottom: $spacing-medium; + + .btn { + width: auto; + } + } + + /* Load more button */ + .btn.mx-listview-loadMore { + width: 100%; + margin: 0 0 $spacing-medium; + } + + //== Phone specific + //-------------------------------------------------------------------------------------------------------------------// + .profile-phone .mx-listview { + .mx-listview-searchbar { + margin-bottom: 3px; + background: #ffffff; + box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14); + + input { + padding: 14px 15px; + color: #555555; + border-style: none; + border-radius: 0; + box-shadow: none; + } + + .btn { + padding: 14px 15px; + color: inherit; + border-style: none; + } + } + + & > ul > li { + &:first-child { + border-top: none; + } + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_modal.scss b/themesource/atlas_core/web/core/widgets/_modal.scss new file mode 100644 index 0000000..6130c36 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_modal.scss @@ -0,0 +1,128 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin modal() { + /* ========================================================================== + Modal + + Default Mendix modals. Modals are streamlined, but flexible, dialog prompts with the minimum required functionality and smart defaults + ========================================================================== */ + .modal-dialog { + .modal-content { + border: 1px solid $modal-header-border-color; + border-radius: 4px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + + .modal-header { + padding: 15px 20px; + border-bottom-color: $modal-header-border-color; + border-radius: 0; // Because of the class .mx-window-active in mxui.css + background-color: $modal-header-bg; + + h4 { + margin: 0; + color: $modal-header-color; + font-size: 16px; + font-weight: $font-weight-bold; + } + + .close { + margin-top: -3px; + opacity: 1; + /* For IE8 and earlier */ + color: $modal-header-color; + text-shadow: none; + } + } + + .modal-body { + } + + .modal-footer { + display: flex; + justify-content: flex-end; + margin-top: 0; + padding: 20px; + border-style: none; + } + } + } + + // Default Mendix Window Modal + .mx-window { + // If popup direct child is a dataview it gets the class mx-window-view + &.mx-window-view .mx-window-body { + overflow: hidden; // hide second scrollbar in edit page + padding: 0; + // Dataview in popup + > .mx-dataview > .mx-dataview-content, + > .mx-placeholder > .mx-dataview > .mx-dataview-content { + padding: 20px; + } + + > .mx-dataview > .mx-dataview-controls, + > .mx-placeholder > .mx-dataview > .mx-dataview-controls { + display: flex; + justify-content: flex-end; + margin: 0; + padding: 20px; + text-align: left; + border-top: 1px solid $modal-header-border-color; + } + } + + .mx-dataview-controls { + padding-bottom: 0; + } + + .mx-layoutgrid { + padding-right: 0; + padding-left: 0; + } + } + + .mx-dialog .modal-body { + padding: 24px; + } + + // Login modal + .mx-login { + .modal-body { + padding: 0 15px; + } + + .modal-content { + input { + height: 56px; + padding: 12px 12px; + border: 1px solid #eeeeee; + background: #eeeeee; + box-shadow: none; + font-size: 16px; + + &:focus { + border-color: #66afe9; + } + } + } + + .modal-header, + .modal-footer { + border: 0; + } + + button { + font-size: 16px; + } + + h4 { + color: #aaaaaa; + font-size: 20px; + font-weight: $font-weight-bold; + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_navigation-bar.scss b/themesource/atlas_core/web/core/widgets/_navigation-bar.scss new file mode 100644 index 0000000..fbf84d3 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_navigation-bar.scss @@ -0,0 +1,153 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin navigation-bar() { + /* ========================================================================== + Navigation + + Default Mendix navigation bar + ========================================================================== */ + .mx-navbar { + margin: 0; + border-style: none; + border-radius: 0; + background-color: $navigation-bg; + + ul.nav { + margin: 0; // weird -margin if screen gets small (bootstrap) + /* Navigation item */ + & > li.mx-navbar-item > a { + display: flex; + align-items: center; + padding: $navigation-item-padding; + vertical-align: middle; + color: $navigation-color; + border-radius: 0; + font-size: $navigation-font-size; + font-weight: $font-weight-normal; + border-radius: $border-radius-default; + + /* Dropdown arrow */ + .caret { + border-top-color: $navigation-color; + border-bottom-color: $navigation-color; + } + + &:hover, + &:focus, + &.active { + text-decoration: none; + color: $navigation-color-hover; + background-color: $navigation-bg-hover; + + .caret { + border-top-color: $navigation-color-active; + border-bottom-color: $navigation-color-active; + } + } + + &.active { + color: $navigation-color-active; + background-color: $navigation-bg-active; + opacity: 1; + } + + /* Dropdown */ + .mx-navbar-submenu::before { + position: absolute; + top: -9px; + left: 15px; + width: 0; + height: 0; + content: ""; + transform: rotate(360deg); + border-width: 0 9px 9px 9px; + border-style: solid; + border-color: transparent transparent $navigation-border-color transparent; + } + + // Image + img { + width: 20px; // Default size (so it looks good) + height: auto; + margin-right: 0.5em; + } + + .glyphicon { + top: 0; + margin-right: 0.5em; + vertical-align: middle; + font-size: $navigation-glyph-size; + } + } + + & > .mx-navbar-item.active a { + color: $navigation-color-active; + } + + /* When hovering or the dropdown is open */ + & > .mx-navbar-item > a:hover, + & > .mx-navbar-item > a:focus, + & > .mx-navbar-item.open > a, + & > .mx-navbar-item.open > a:hover, + & > .mx-navbar-item.open > a:focus { + text-decoration: none; + color: $navigation-color-hover; + background-color: $navigation-bg-hover; + + .caret { + border-top-color: $navigation-color-hover; + border-bottom-color: $navigation-color-hover; + } + } + + & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a { + color: $navigation-sub-color-active; + background-color: $navigation-sub-bg-active; + + .caret { + border-top-color: $navigation-sub-color-active; + border-bottom-color: $navigation-sub-color-active; + } + } + } + @media (max-width: $screen-md) { + ul.nav > li.mx-navbar-item > a { + padding: 10px 24px; + } + .mx-navbar-item.open .dropdown-menu { + padding: 0; + border-radius: 0; + background-color: $navigation-sub-bg; + + & > li.mx-navbar-subitem > a { + padding: 10px 24px; + color: $navigation-sub-color; + border-radius: 0; + font-size: $navigation-sub-font-size; + font-weight: $font-weight-normal; + + &:hover, + &:focus { + color: $navigation-sub-color-hover; + background-color: $navigation-sub-bg-hover; + } + + &.active { + color: $navigation-sub-color-active; + background-color: $navigation-sub-bg-active; + } + } + } + } + + /* remove focus */ + &:focus { + outline: 0; + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_navigation-list.scss b/themesource/atlas_core/web/core/widgets/_navigation-list.scss new file mode 100644 index 0000000..9dd9788 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_navigation-list.scss @@ -0,0 +1,40 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin navigation-list() { + /* ========================================================================== + Navigation list + + Default Mendix navigation list widget. A navigation list can be used to attach an action to an entire row. Such a row is called a navigation list item + ========================================================================== */ + .mx-navigationlist { + margin: 0; + padding: 0; + list-style: none; + + li.mx-navigationlist-item { + @include transition(); + padding: $spacing-medium; + border-width: 1px; + border-style: none none solid none; + border-color: $grid-border-color; + border-radius: 0; + background-color: $grid-bg; + + &:hover, + &:focus { + color: inherit; + background-color: $grid-bg-hover; + } + + &.active { + color: inherit; + background-color: $grid-bg-selected; + } + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_navigation-tree.scss b/themesource/atlas_core/web/core/widgets/_navigation-tree.scss new file mode 100644 index 0000000..5eb54dc --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_navigation-tree.scss @@ -0,0 +1,127 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin navigation-tree() { + /* ========================================================================== + Navigation + + Default Mendix navigation tree + ========================================================================== */ + .mx-navigationtree { + background-color: $navigation-bg; + + /* Every navigation item */ + .navbar-inner > ul { + margin: 0; + padding-left: 0; + + & > li { + padding: 0; + border-style: none; + + & > a { + display: flex; + align-items: center; + height: $navigation-item-height; + padding: $navigation-item-padding; + color: $navigation-color; + //border-bottom: 1px solid $navigation-border-color; + //border-radius: 0; + background-color: $navigation-bg; + text-shadow: none; + font-size: $navigation-font-size; + font-weight: $font-weight-normal; + + .caret { + border-top-color: $navigation-color; + border-bottom-color: $navigation-color; + } + + img { + width: 20px; // Default size + height: auto; + margin-right: 0.5em; + } + + .glyphicon { + top: 0; + margin-right: 0.5em; + vertical-align: middle; + font-size: $navigation-glyph-size; + } + } + + a:hover, + a:focus, + a.active { + text-decoration: none; + color: $navigation-color-hover; + background-color: $navigation-bg-hover; + + .caret { + border-top-color: $navigation-color-active; + border-bottom-color: $navigation-color-active; + } + } + + a.active { + color: $navigation-color-active; + border-left-color: $navigation-color-active; + background-color: $navigation-bg-active; + } + } + } + + /* Sub navigation item specific */ + li.mx-navigationtree-has-items { + & > ul { + margin: 0; + padding-left: 0; + background-color: $navigation-sub-bg; + + li { + margin: 0; + padding: 0; + border: 0; + + a { + padding: $spacing-medium; + text-decoration: none; + color: $navigation-sub-color; + border: 0; + background-color: $navigation-sub-bg; + text-shadow: none; + font-size: $navigation-sub-font-size; + font-weight: $font-weight-normal; + .glyphicon { + margin-right: $spacing-small; + } + + &:hover, + &:focus, + &.active { + color: $navigation-sub-color-hover; + outline: 0; + background-color: $navigation-sub-bg-hover; + } + + &.active { + color: $navigation-sub-color-active; + border: 0; + background-color: $navigation-sub-bg-active; + } + } + } + } + } + + /* remove focus */ + &:focus { + outline: 0; + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_pagination.scss b/themesource/atlas_core/web/core/widgets/_pagination.scss new file mode 100644 index 0000000..1a60d75 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_pagination.scss @@ -0,0 +1,80 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin pagination() { + /* ========================================================================== + Pagination + + Default Mendix pagination widget. + ========================================================================== */ + + .widget-pagination { + overflow: unset; + + .pagination { + overflow: unset; + + .btn { + &:hover { + color: $btn-default-color; + background-color: $btn-default-bg-hover; + } + + &:focus { + outline: unset; + outline-offset: unset; + box-shadow: 0 0 0 0.3rem $color-primary-light; + } + } + + ul { + margin-top: unset; + margin-bottom: unset; + + li { + display: inline-flex; + align-items: center; + width: unset; + min-width: 24px; + min-height: 24px; + margin-right: 16px; + padding: 4px 8px; + transition: all 0.2s ease-in-out; + color: $font-color-default; + border-radius: $border-radius-default; + + &:last-child { + margin-right: 0; + } + + &:not(.break-view) { + &:hover { + color: $btn-default-color; + background-color: $btn-default-bg-hover; + } + + &:focus { + outline: unset; + outline-offset: unset; + box-shadow: 0 0 0 0.3rem $color-primary-light; + } + + &.active { + color: $btn-primary-color; + background-color: $btn-primary-bg; + } + + &.active:hover { + color: $btn-primary-color; + background-color: $btn-primary-bg-hover; + } + } + } + } + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_pop-up-menu.scss b/themesource/atlas_core/web/core/widgets/_pop-up-menu.scss new file mode 100644 index 0000000..1f77ea9 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_pop-up-menu.scss @@ -0,0 +1,121 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin pop-up-menu() { + /* ========================================================================== + Pop-up menu + + Default Mendix pop-up menu + ========================================================================== */ + .popupmenu { + position: relative; + display: inline-flex; + } + + .popupmenu-trigger { + cursor: pointer; + } + + .popupmenu-menu { + position: absolute; + z-index: 999; + display: none; + flex-direction: column; + width: max-content; + border-radius: 8px; + background-color: $bg-color; + box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05), 0 2px 16px 0 rgba(33, 43, 54, 0.08); + + &.popupmenu-position-left:not(.popup-portal) { + top: 0; + left: 0; + transform: translateX(-100%); + } + + &.popupmenu-position-right:not(.popup-portal) { + top: 0; + right: 0; + transform: translateX(100%); + } + + &.popupmenu-position-top:not(.popup-portal) { + top: 0; + transform: translateY(-100%); + } + + &.popupmenu-position-bottom:not(.popup-portal) { + bottom: 0; + transform: translateY(100%); + } + + .popupmenu-basic-item:first-child, + .popupmenu-custom-item:first-child { + border-top-left-radius: 8px; + border-top-right-radius: 8px; + } + + .popupmenu-basic-item:last-child, + .popupmenu-custom-item:last-child { + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + } + } + + .popupmenu-basic-divider { + width: 100%; + height: 1px; + background-color: $brand-default; + } + + .popupmenu-basic-item { + padding: 12px 16px; + color: $font-color-default; + font-size: 14px; + + &:hover, + &:focus, + &:active { + cursor: pointer; + border-color: $bg-color-secondary; + background-color: $bg-color-secondary; + } + + &-inverse { + color: $brand-inverse; + } + + &-primary { + color: $brand-primary; + } + + &-info { + color: $brand-info; + } + + &-success { + color: $brand-success; + } + + &-warning { + color: $brand-warning; + } + + &-danger { + color: $brand-danger; + } + } + + .popupmenu-custom-item { + &:hover, + &:focus, + &:active { + cursor: pointer; + border-color: $bg-color-secondary; + background-color: $bg-color-secondary; + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_progress-bar.scss b/themesource/atlas_core/web/core/widgets/_progress-bar.scss new file mode 100644 index 0000000..474fb70 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_progress-bar.scss @@ -0,0 +1,61 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin progress-bar() { + /* ========================================================================== + Progress bar + + Default Mendix progress bar widget. + ========================================================================== */ + + .progress { + overflow: hidden; + display: flex; + flex-direction: row; + } + + .progress-bar { + align-self: flex-start; + width: 0; + height: 100%; + transition: width 0.6s ease; + text-align: center; + color: #ffffff; + border-radius: $border-radius-default; + font-weight: $font-weight-semibold; + } + + .progress-striped .progress-bar, + .progress-bar-striped { + background-image: linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-size: 40px 40px; + } + + .widget-progress-bar.active .progress-bar, + .progress.active .progress-bar, + .progress-bar.active { + animation: progress-bar-stripes 2s linear infinite; + } + + @keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_progress-circle.scss b/themesource/atlas_core/web/core/widgets/_progress-circle.scss new file mode 100644 index 0000000..86b28b5 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_progress-circle.scss @@ -0,0 +1,22 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin progress-circle() { + /* ========================================================================== + Progress Circle + + Default Mendix progress circle widget. + ========================================================================== */ + + .widget-progress-circle { + display: inline-block; + } + + .widget-progress-circle-trail-path { + stroke: $bg-color; + } +} diff --git a/themesource/atlas_core/web/core/widgets/_progress.scss b/themesource/atlas_core/web/core/widgets/_progress.scss new file mode 100644 index 0000000..fc87d33 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_progress.scss @@ -0,0 +1,65 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin progress() { + /* ========================================================================== + Progress + + Default Mendix progress widget. + ========================================================================== */ + + .mx-progress { + color: $font-color-default; + background: $bg-color-secondary; + + .mx-progress-message { + color: $font-color-default; + } + + .mx-progress-indicator { + position: relative; + overflow: hidden; + width: 100%; + max-width: 100%; + height: 2px; + margin: auto; + padding: 0; + border-radius: 0; + background: $gray-lighter; + + &:before, + &:after { + position: absolute; + top: 0; + left: 0; + display: block; + width: 50%; + height: 2px; + content: ""; + transform: translate3d(-100%, 0, 0); + background: $brand-primary; + } + + &::before { + animation: loader 2s infinite; + } + + &::after { + animation: loader 2s -2s infinite; + } + } + } + + @keyframes loader { + 0% { + transform: translate3d(-100%, 0, 0); + } + 100% { + transform: translate3d(200%, 0, 0); + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_radio-button.scss b/themesource/atlas_core/web/core/widgets/_radio-button.scss new file mode 100644 index 0000000..ad2771a --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_radio-button.scss @@ -0,0 +1,108 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin radio-button() { + /* ========================================================================== + Radio button + + Default Mendix radio button widget + ========================================================================== */ + .mx-radiobuttons.inline .mx-radiogroup { + display: flex; + flex-direction: row; + + .radio { + margin: 0 20px 0 0; + } + } + + .mx-radiobuttons .radio:last-child { + margin-bottom: 0; + } + + .radio { + display: flex !important; // Remove after mxui merge + align-items: center; + margin-top: 0; + } + + input[type="radio"] { + position: relative !important; // Remove after mxui merge + width: 16px; + height: 16px; + margin: 0; + cursor: pointer; + -webkit-user-select: none; + user-select: none; + appearance: none; + -moz-appearance: none; + -webkit-appearance: none; + + &:before, + &:after { + position: absolute; + display: block; + transition: all 0.3s ease-in-out; + border-radius: 50%; + } + + &:before { + width: 100%; + height: 100%; + content: ""; + border: 1px solid $form-input-border-color; + background-color: transparent; + } + + &:after { + top: 50%; + left: 50%; + width: 50%; + height: 50%; + transform: translate(-50%, -50%); + pointer-events: none; + background-color: $form-input-border-focus-color; + } + + &:not(:checked):after { + transform: translate(-50%, -50%) scale(0); + opacity: 0; + } + + &:not(:disabled):not(:checked):hover:after { + background-color: $form-input-bg-hover; + } + + &:checked:after, + &:not(:disabled):not(:checked):hover:after { + content: ""; + transform: translate(-50%, -50%) scale(1); + opacity: 1; + } + + &:checked:before { + border-color: $form-input-border-focus-color; + background-color: $form-input-bg; + } + + &:disabled:before { + background-color: $form-input-bg-disabled; + } + + &:checked:disabled:before { + border-color: rgba($form-input-border-focus-color, 0.4); + } + + &:checked:disabled:after { + background-color: rgba($form-input-border-focus-color, 0.4); + } + + & + label { + margin-left: $form-label-gutter; + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_range-slider.scss b/themesource/atlas_core/web/core/widgets/_range-slider.scss new file mode 100644 index 0000000..4cb59d4 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_range-slider.scss @@ -0,0 +1,30 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// +@import "../helpers/slider-color-variant"; + +@mixin range-slider() { + /* ========================================================================== + Range slider + + Default Mendix range slider widget. + ========================================================================== */ + + .widget-range-slider { + margin-bottom: 16px; + padding: 5px 10px; + + .rc-slider-handle { + border-color: $brand-default; + } + + .rc-slider.rc-slider-with-marks { + padding-bottom: 25px; + } + + @include slider-color-variant($brand-primary); + } +} diff --git a/themesource/atlas_core/web/core/widgets/_rating.scss b/themesource/atlas_core/web/core/widgets/_rating.scss new file mode 100644 index 0000000..14c65be --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_rating.scss @@ -0,0 +1,60 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin rating() { + /* ========================================================================== + Rating + + Default Mendix rating widget. + ========================================================================== */ + + .widget-star-rating-empty { + color: #cccccc; + } + + .widget-star-rating-full-widget { + color: #ffa611; + } + + .widget-star-rating-full-default { + color: #ced0d3; + } + + .widget-star-rating-font-medium { + font-size: 30px; + } + + .widget-rating { + .rating-icon { + font-size: 24px; + } + + .rating-icon-empty { + color: #ccc; + } + + .rating-icon-full { + color: #ffa611; + } + + .rating-item { + &:focus:not(:focus-visible) { + .rating-image, + .rating-icon { + outline: none; + } + } + + &:focus-visible { + .rating-image, + .rating-icon { + outline: 1px solid $brand-primary; + } + } + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_simple-menu-bar.scss b/themesource/atlas_core/web/core/widgets/_simple-menu-bar.scss new file mode 100644 index 0000000..1f84b66 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_simple-menu-bar.scss @@ -0,0 +1,229 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// +@mixin simple-menu-bar() { + /* ========================================================================== + Navigation + + Default Mendix simple menu bar + ========================================================================== */ + .mx-menubar { + padding: 0; + background-color: $navigation-bg; + + ul.mx-menubar-list { + display: flex; + width: 100%; + min-height: 58px; + + li.mx-menubar-item { + margin: 0; + + > a { + display: flex; + overflow: hidden; + align-items: center; + justify-content: center; + height: 100%; + padding: $navigation-item-padding; + white-space: nowrap; + color: $navigation-color; + border-radius: 0; + font-size: $navigation-font-size; + font-weight: $font-weight-normal; + + img { + margin-right: 0.5em; + } + + .glyphicon { + top: -1px; + margin-right: 0.5em; + vertical-align: middle; + font-size: $navigation-glyph-size; + } + } + + a:hover, + a:focus, + &:hover a, + &:focus a, + &.active a { + text-decoration: none; + color: $navigation-color-hover; + background-color: $navigation-bg-hover; + } + + &.active a { + color: $navigation-color-active; + background-color: $navigation-bg-active; + } + } + } + + /* remove focus */ + &:focus { + outline: 0; + } + } + + // Vertical variation specifics + .mx-menubar-vertical { + background-color: $navigation-bg; + + ul.mx-menubar-list { + display: flex; + flex-direction: column; + + li.mx-menubar-item { + display: block; + + a { + border-bottom: 1px solid $navigation-border-color; + } + } + } + } + + // Horizontal variation specifics + .mx-menubar-horizontal { + box-shadow: 2px 0 4px 0 rgba(0, 0, 0, 0.14); + + ul.mx-menubar-list { + li.mx-menubar-item { + width: auto; + + a { + width: 100%; + } + } + } + + /* Two menu items */ + &.menubar-col-6 ul.mx-menubar-list li.mx-menubar-item { + width: 50%; + } + + /* Three menu items */ + &.menubar-col-4 ul.mx-menubar-list li.mx-menubar-item { + width: 33.33333333%; + } + + /* Four menu items */ + &.menubar-col-3 ul.mx-menubar-list li.mx-menubar-item { + width: 25%; + } + + /* Five menu items */ + &.menubar-col-2 ul.mx-menubar-list li.mx-menubar-item { + width: 20%; + } + } + + //== Regions + //## Behavior in the different regions + //-------------------------------------------------------------------------------------------------------------------// + // When used in topbar + .region-topbar { + .mx-menubar { + background-color: $navtopbar-bg; + + ul.mx-menubar-list { + li.mx-menubar-item { + a { + color: $navtopbar-color; + font-size: $navtopbar-font-size; + + .glyphicon { + font-size: $navtopbar-glyph-size; + } + } + + a:hover, + a:focus, + &:hover a, + &:focus a, + &.active a { + color: $navtopbar-color-hover; + background-color: $navtopbar-bg-hover; + } + + &.active a { + color: $navtopbar-color-active; + background-color: $navtopbar-bg-active; + } + } + } + } + + // Vertical variation specifics + .mx-menubar-vertical { + background-color: $navtopbar-bg; + + ul.mx-menubar-list { + li.mx-menubar-item { + a { + height: $navigation-item-height; + border-color: $navtopbar-border-color; + } + } + } + } + } + + // When used in sidebar + .region-sidebar { + .mx-menubar { + background-color: $navsidebar-bg; + + ul.mx-menubar-list { + li.mx-menubar-item { + a { + color: $navsidebar-color; + font-size: $navsidebar-font-size; + + .glyphicon { + font-size: $navsidebar-glyph-size; + } + } + + a:hover, + a:focus, + &:hover a, + &:focus a, + &.active a { + color: $navsidebar-color-hover; + background-color: $navsidebar-bg-hover; + } + + &.active a { + color: $navsidebar-color-active; + background-color: $navsidebar-bg-active; + } + } + } + } + + // Vertical variation specifics + .mx-menubar-vertical { + background-color: $navsidebar-bg; + + ul.mx-menubar-list { + li.mx-menubar-item { + a { + border-color: $navsidebar-border-color; + } + } + } + } + } + + @supports (padding-bottom: env(safe-area-inset-bottom)) { + .mx-menubar { + padding-bottom: env(safe-area-inset-bottom); + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_slider.scss b/themesource/atlas_core/web/core/widgets/_slider.scss new file mode 100644 index 0000000..e4f1fce --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_slider.scss @@ -0,0 +1,31 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@import "../helpers/slider-color-variant"; + +@mixin slider() { + /* ========================================================================== + Slider + + Default Mendix slider widget. + ========================================================================== */ + + .widget-slider { + margin-bottom: 16px; + padding: 5px 10px; + + .rc-slider-handle { + border-color: $brand-default; + } + + .rc-slider.rc-slider-with-marks { + padding-bottom: 25px; + } + + @include slider-color-variant($brand-primary); + } +} diff --git a/themesource/atlas_core/web/core/widgets/_switch.scss b/themesource/atlas_core/web/core/widgets/_switch.scss new file mode 100644 index 0000000..01b89c4 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_switch.scss @@ -0,0 +1,193 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +$default-android-color: #6fbeb5; +$default-ios-color: rgb(100, 189, 99); + +@mixin bootstrap-style-ios($brand-style) { + border-color: $brand-style; + background-color: $brand-style; + box-shadow: $brand-style 0 0 0 16px inset; +} + +@mixin bootstrap-style-android($brand-style) { + background-color: lighten($brand-style, 10%); +} + +@mixin style($brand-key, $brand-variable) { + div.widget-switch-brand-#{$brand-key} { + .widget-switch { + .widget-switch-btn-wrapper { + &.checked { + @include bootstrap-style-ios($brand-variable); + } + } + } + &.android { + .widget-switch { + .widget-switch-btn-wrapper { + &.checked { + @include bootstrap-style-android($brand-variable); + + .widget-switch-btn { + background: $brand-variable; + } + } + } + } + } + } +} + +// maintained for backwards compatibility prior to Switch 3.0.0. +@mixin ios { + .widget-switch-btn-wrapper { + &.checked { + &.widget-switch-btn-wrapper-default { + @include bootstrap-style-ios($default-ios-color); + } + + &.widget-switch-btn-wrapper-success { + @include bootstrap-style-ios($brand-success); + } + + &.widget-switch-btn-wrapper-info { + @include bootstrap-style-ios($brand-info); + } + + &.widget-switch-btn-wrapper-primary { + @include bootstrap-style-ios($brand-primary); + } + + &.widget-switch-btn-wrapper-warning { + @include bootstrap-style-ios($brand-warning); + } + + &.widget-switch-btn-wrapper-danger { + @include bootstrap-style-ios($brand-danger); + } + + &.widget-switch-btn-wrapper-inverse { + @include bootstrap-style-ios($brand-inverse); + } + } + } +} + +// maintained for backwards compatibility prior to Switch 3.0.0. +@mixin android { + .widget-switch-btn-wrapper { + &.checked { + &.widget-switch-btn-wrapper-default { + @include bootstrap-style-android($default-android-color); + + .widget-switch-btn { + background: $default-android-color; + } + } + + &.widget-switch-btn-wrapper-success { + @include bootstrap-style-android($brand-success); + + .widget-switch-btn { + background: $brand-success; + } + } + + &.widget-switch-btn-wrapper-info { + @include bootstrap-style-android($brand-info); + + .widget-switch-btn { + background: $brand-info; + } + } + + &.widget-switch-btn-wrapper-primary { + @include bootstrap-style-android($brand-primary); + + .widget-switch-btn { + background: $brand-primary; + } + } + + &.widget-switch-btn-wrapper-warning { + @include bootstrap-style-android($brand-warning); + + .widget-switch-btn { + background: $brand-warning; + } + } + + &.widget-switch-btn-wrapper-danger { + @include bootstrap-style-android($brand-danger); + + .widget-switch-btn { + background: $brand-danger; + } + } + + &.widget-switch-btn-wrapper-inverse { + @include bootstrap-style-android($brand-inverse); + + .widget-switch-btn { + background: $brand-inverse; + } + } + } + } +} + +@mixin switch() { + .widget-switch-btn-wrapper { + &:focus { + outline: 1px solid $brand-primary; + } + } + + @include style("primary", $brand-primary); + @include style("secondary", $brand-default); + @include style("success", $brand-success); + @include style("warning", $brand-warning); + @include style("danger", $brand-danger); + + // below is maintained for backwards compatibility prior to Switch 3.0.0. + div { + &.widget-switch { + &.iOS { + @include ios; + } + + &.android { + @include android; + } + + &.auto { + @include ios; + } + } + } + + html { + div { + &.dj_android { + .widget-switch { + &.auto { + @include android; + } + } + } + + &.dj_ios { + .widget-switch { + &.auto { + @include ios; + } + } + } + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_tab-container.scss b/themesource/atlas_core/web/core/widgets/_tab-container.scss new file mode 100644 index 0000000..6720d8d --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_tab-container.scss @@ -0,0 +1,110 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin tab-container() { + /* ========================================================================== + Tab Container + + Default Mendix Tab Container Widget. Tab containers are used to show information categorized into multiple tab pages. + This can be very useful if the amount of information that has to be displayed is larger than the amount of space on the screen + ========================================================================== */ + + .mx-tabcontainer { + .mx-tabcontainer-tabs { + margin-bottom: $spacing-medium; + border-color: $tabs-border-color; + display: flex; + + > li { + float: none; + } + + & > li > a { + margin-right: 0; + transition: all 0.2s ease-in-out; + color: $tabs-color; + font-weight: $font-weight-normal; + border-radius: $border-radius-default $border-radius-default 0 0; + + &:hover, + &:focus { + background-color: $tabs-bg-hover; + } + } + + & > li.active > a, + & > li.active > a:hover, + & > li.active > a:focus { + color: $tabs-color-active; + border: 1px solid $tabs-border-color; + border-bottom-color: #fff; + background-color: $tabs-bg; + } + } + } + + // Tab Styling Specific for mobile + .tab-mobile.mx-tabcontainer { + & > .mx-tabcontainer-tabs { + margin: 0; + text-align: center; + border-style: none; + background-color: $brand-primary; + + li { + display: table-cell; + float: none; // reset bootstrap + width: 1%; + margin: 0; + text-align: center; + border-style: none; + border-radius: 0; + + a { + padding: 16px; + text-transform: uppercase; + color: #ffffff; + border-width: 0 1px 0 0; + border-style: solid; + border-color: rgba(255, 255, 255, 0.3); + border-radius: 0; + font-size: 12px; + font-weight: $font-weight-normal; + + &:hover, + &:focus { + background-color: inherit; + } + } + + &:last-child a { + border-right: none; + } + + &.active > a, + &.active > a:hover, + &.active > a:focus { + color: #ffffff; + border-style: none; + border-radius: 0; + background-color: mix($brand-primary, #000000, 80%); + } + } + } + } + + .mx-tabcontainer-badge { + margin-left: $spacing-small; + border-radius: $font-size-small; + background-color: $label-primary-bg; + color: $label-primary-color; + font-size: $font-size-small; + font-weight: $font-weight-bold; + line-height: 1; + padding: $spacing-small/2 $spacing-small; + } +} diff --git a/themesource/atlas_core/web/core/widgets/_table.scss b/themesource/atlas_core/web/core/widgets/_table.scss new file mode 100644 index 0000000..0e8aa2c --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_table.scss @@ -0,0 +1,89 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin table() { + /* ========================================================================== + Table + + Default Mendix table widget. Tables can be used to lend structure to a page. They contain a number of rows (tr) and columns, the intersection of which is called a cell (td). Each cell can contain widgets + ========================================================================== */ + + th { + font-weight: $font-weight-bold; + } + + html body .mx-page table.mx-table { + th, + td { + &.nopadding { + padding: 0; + } + } + } + + table.mx-table { + > tbody { + /* Table row */ + > tr { + /* Table header */ + > th { + padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom + $padding-table-cell-left; + + s * { + color: $form-label-color; + font-weight: $font-weight-bold; + font-weight: $form-label-weight; + } + + > label { + padding-top: 8px; + padding-bottom: 6px; // Aligns label in the middle if there is no input field next to it. + } + } + + /* Table cells */ + > td { + padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom + $padding-table-cell-left; + + > div > label, + .mx-referenceselector-input-wrapper label { + padding-top: 8px; + padding-bottom: 6px; // Aligns label in the middle if there is no input field next to it. + } + } + } + } + } + + // Default Mendix Table Widget inside TemplateGrid + .mx-templategrid table.mx-table { + > tbody { + > tr { + > th, + > td { + padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom + $padding-table-cell-left; + } + } + } + } + + // Default Mendix Table Widget inside Listview + .mx-list table.mx-table { + > tbody { + > tr { + > th, + > td { + padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom + $padding-table-cell-left; + } + } + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_template-grid.scss b/themesource/atlas_core/web/core/widgets/_template-grid.scss new file mode 100644 index 0000000..7c9ecdb --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_template-grid.scss @@ -0,0 +1,39 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin template-grid() { + /* ========================================================================== + Template grid + + Default Mendix template grid Widget. The template grid shows a list of objects in a tile view. For example, a template grid can show a list of products. The template grid has a lot in common with the data grid. The main difference is that the objects are shown in templates (a sort of small data view) instead of rows + ========================================================================== */ + + .mx-templategrid { + .mx-templategrid-content-wrapper { + table-layout: fixed; + } + + .mx-templategrid-item { + padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left; + cursor: default; + background-color: $grid-bg; + + &:hover { + background-color: transparent; + } + + &.selected { + background-color: $grid-bg-selected !important; + } + } + + .mx-layoutgrid { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + } +} diff --git a/themesource/atlas_core/web/core/widgets/_timeline.scss b/themesource/atlas_core/web/core/widgets/_timeline.scss new file mode 100644 index 0000000..4d83fe8 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_timeline.scss @@ -0,0 +1,141 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin timeline() { + /* ========================================================================== + Timeline + + Widget styles + ========================================================================== */ + + //Timeline grouping + .widget-timeline-date-header { + display: flex; + justify-content: center; + width: $timeline-grouping-size; + overflow-wrap: break-word; + padding: $spacing-small; + border: 1px solid $timeline-grouping-border-color; + border-radius: $timeline-grouping-border-radius; + } + + //Timeline entries + .widget-timeline-events-wrapper { + display: flex; + flex: 1; + margin-left: $timeline-grouping-size/2; + padding: $spacing-large 0 0 0; + border-left: 1px solid $timeline-border-color; + + ul { + flex: 1; + padding: 0; + list-style: none; + margin-bottom: 0; + } + } + + //Timeline entry + .widget-timeline-event { + flex: 1; + position: relative; + margin-left: -1px; + padding: 0 $spacing-large $spacing-large $spacing-large; + margin-bottom: $spacing-medium; + + &.clickable { + cursor: pointer; + transition: background 0.8s; + + &:hover { + .widget-timeline-title { + } + } + } + } + + //Timeline entry content wrapper + .widget-timeline-icon-wrapper { + position: absolute; + top: 0; + left: 0; + display: flex; + justify-content: center; + align-items: center; + transform: translateX(-50%); + + .glyphicon { + font-size: $timeline-icon-size; + } + + img { + max-width: 100%; + max-height: 100%; + } + } + + .widget-timeline-content-wrapper { + display: flex; + + .widget-timeline-date-time-wrapper { + order: 2; + margin-right: 0; + } + + .widget-timeline-info-wrapper { + flex: 1; + order: 1; + margin-right: $spacing-medium; + } + } + + .timeline-with-image .widget-timeline-content-wrapper { + display: flex; + + .widget-timeline-date-time-wrapper { + order: 1; + margin-right: $spacing-medium; + } + + .widget-timeline-info-wrapper { + flex: 1; + order: 2; + } + } + + //Timeline entry components + .widget-timeline-icon-circle { + width: $timeline-icon-size; + height: $timeline-icon-size; + border-radius: 50%; + background-color: $timeline-icon-color; + } + + .widget-timeline-title { + @extend h5; + } + + .widget-timeline-description { + } + + .widget-timeline-no-divider { + } + + .widget-eventTime { + @extend h5; + color: $timeline-event-time-color; + } + + .timeline-entry-image { + display: flex; + justify-content: center; + align-content: center; + border-radius: $border-radius-default; + height: $timeline-image-size; + width: $timeline-image-size; + } +} diff --git a/themesource/atlas_core/web/core/widgets/_tooltip.scss b/themesource/atlas_core/web/core/widgets/_tooltip.scss new file mode 100644 index 0000000..4904327 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_tooltip.scss @@ -0,0 +1,19 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin tooltip() { + /* ========================================================================== + Tooltip + + Widget styles + ========================================================================== */ + + // Tooltip inline + .widget-tooltip-inline { + display: inline-block; + } +} diff --git a/themesource/atlas_core/web/core/widgets/_typography.scss b/themesource/atlas_core/web/core/widgets/_typography.scss new file mode 100644 index 0000000..2b001f3 --- /dev/null +++ b/themesource/atlas_core/web/core/widgets/_typography.scss @@ -0,0 +1,78 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin typography() { + /* ========================================================================== + Typography + ========================================================================== */ + + p { + line-height: $line-height-base * 1.25; + margin: 0 0 $spacing-small; + } + + .mx-title { + margin: $font-header-margin; + color: $font-color-header; + font-size: $font-size-h1; + font-weight: $font-weight-header; + } + + h1, + .h1, + .h1 > * { + font-size: $font-size-h1; + } + + h2, + .h2, + .h2 > * { + font-size: $font-size-h2; + } + + h3, + .h3, + .h3 > * { + font-size: $font-size-h3; + } + + h4, + .h4, + .h4 > * { + font-size: $font-size-h4; + } + + h5, + .h5, + .h5 > * { + font-size: $font-size-h5; + } + + h6, + .h6, + .h6 > * { + font-size: $font-size-h6; + } + + h1, + h2, + h3, + h4, + h5, + h6, + .h1, + .h2, + .h3, + .h4, + .h5, + .h6 { + margin: $font-header-margin; + color: $font-color-header; + font-weight: $font-weight-header; + line-height: 1.3; + } +} diff --git a/themesource/atlas_core/web/core/widgetscustom/_dijit-widget.scss b/themesource/atlas_core/web/core/widgetscustom/_dijit-widget.scss new file mode 100644 index 0000000..8e338f7 --- /dev/null +++ b/themesource/atlas_core/web/core/widgetscustom/_dijit-widget.scss @@ -0,0 +1,206 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +@mixin dijit-widget() { + /* + * Mendix Documentation + * Special styles for presenting components + */ + + /* + * Dijit Widgets + * + * Default Dojo Dijit Widgets + */ + + /* + * Dijit Tooltip Widget + * + * Default tooltip used for Mendix widgets + */ + + .mx-tooltip { + .dijitTooltipContainer { + border-width: 1px; + border-color: $gray-light; + border-radius: 4px; + background: #ffffff; + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + + .mx-tooltip-content { + padding: 12px; + } + + .form-group { + margin-bottom: 4px; + } + } + + .dijitTooltipConnector { + width: 0; + height: 0; + margin-left: -8px; + border-width: 10px 10px 10px 0; + border-style: solid; + border-color: transparent; + border-right-color: $gray-light; + } + } + + /* + * Dijit Border Container + * + * Used in Mendix as split pane containers + */ + + .dijitBorderContainer { + padding: 8px; + background-color: #fcfcfc; + + .dijitSplitterV, + .dijitGutterV { + width: 5px; + border: 0; + background: #fcfcfc; + } + + .dijitSplitterH, + .dijitGutterH { + height: 5px; + border: 0; + background: #fcfcfc; + } + + .dijitSplitterH { + .dijitSplitterThumb { + top: 2px; + width: 19px; + height: 1px; + background: #b0b0b0; + } + } + + .dijitSplitterV { + .dijitSplitterThumb { + left: 2px; + width: 1px; + height: 19px; + background: #b0b0b0; + } + } + + .dijitSplitContainer-child, + .dijitBorderContainer-child { + border: 1px solid #cccccc; + } + + .dijitBorderContainer-dijitTabContainerTop, + .dijitBorderContainer-dijitTabContainerBottom, + .dijitBorderContainer-dijitTabContainerLeft, + .dijitBorderContainer-dijitTabContainerRight { + border: none; + } + + .dijitBorderContainer-dijitBorderContainer { + padding: 0; + border: none; + } + + .dijitSplitterActive { + /* For IE8 and earlier */ + margin: 0; + opacity: 0.6; + background-color: #aaaaaa; + background-image: none; + font-size: 1px; + } + + .dijitSplitContainer-dijitContentPane, + .dijitBorderContainer-dijitContentPane { + padding: 8px; + background-color: #ffffff; + } + } + + /* + * Dijit Menu Popup + * + * Used in datepickers and calendar widgets + */ + + .dijitMenuPopup { + margin-top: 8px; + + .dijitMenu { + display: block; + width: 200px !important; + margin-top: 0; // No top margin because there is no parent with margin bottom + padding: 12px 8px; + border-radius: 3px; + background: $brand-inverse; + + &:after { + position: absolute; + bottom: 100%; + left: 20px; + width: 0; + height: 0; + margin-left: -8px; + content: " "; + pointer-events: none; + border: medium solid transparent; + border-width: 8px; + border-bottom-color: $brand-inverse; + } + + // Menu item + .dijitMenuItem { + background: transparent; + + .dijitMenuItemLabel { + display: block; + overflow: hidden; + width: 180px !important; + padding: 8px; + text-overflow: ellipsis; + color: #ffffff; + border-radius: 3px; + } + + // Hover + &.dijitMenuItemHover { + background: none; + + .dijitMenuItemLabel { + background: $brand-primary; + } + } + } + + // New label + .tg_newlabelmenuitem { + .dijitMenuItemLabel { + font-weight: $font-weight-bold; + } + } + + // Seperator + .dijitMenuSeparator { + td { + padding: 0; + border-bottom-width: 3px; + } + + .dijitMenuSeparatorIconCell { + > div { + margin: 0; //override dijit styling + } + } + } + } + } +} diff --git a/themesource/atlas_core/web/design-properties.json b/themesource/atlas_core/web/design-properties.json new file mode 100644 index 0000000..7ec31ee --- /dev/null +++ b/themesource/atlas_core/web/design-properties.json @@ -0,0 +1,1347 @@ +{ + "Widget": [ + { + "name": "Spacing top", + "type": "Dropdown", + "description": "The spacing above this element.", + "options": [ + { + "name": "Outer none", + "oldNames": ["None"], + "class": "spacing-outer-top-none" + }, + { + "name": "Outer small", + "oldNames": ["Small"], + "class": "spacing-outer-top" + }, + { + "name": "Outer medium", + "oldNames": ["Medium"], + "class": "spacing-outer-top-medium" + }, + { + "name": "Outer large", + "oldNames": ["Large"], + "class": "spacing-outer-top-large" + }, + { + "name": "Inner none", + "class": "spacing-inner-top-none" + }, + { + "name": "Inner small", + "class": "spacing-inner-top" + }, + { + "name": "Inner medium", + "class": "spacing-inner-top-medium" + }, + { + "name": "Inner large", + "class": "spacing-inner-top-large" + } + ] + }, + { + "name": "Spacing bottom", + "type": "Dropdown", + "description": "The spacing below this element.", + "options": [ + { + "name": "Outer none", + "oldNames": ["None"], + "class": "spacing-outer-bottom-none" + }, + { + "name": "Outer small", + "oldNames": ["Small"], + "class": "spacing-outer-bottom" + }, + { + "name": "Outer medium", + "oldNames": ["Medium"], + "class": "spacing-outer-bottom-medium" + }, + { + "name": "Outer large", + "oldNames": ["Large"], + "class": "spacing-outer-bottom-large" + }, + { + "name": "Inner none", + "class": "spacing-inner-bottom-none" + }, + { + "name": "Inner small", + "class": "spacing-inner-bottom" + }, + { + "name": "Inner medium", + "class": "spacing-inner-bottom-medium" + }, + { + "name": "Inner large", + "class": "spacing-inner-bottom-large" + } + ] + }, + { + "name": "Spacing left", + "type": "Dropdown", + "description": "The spacing to the left of this element.", + "options": [ + { + "name": "Outer none", + "oldNames": ["None"], + "class": "spacing-outer-left-none" + }, + { + "name": "Outer small", + "oldNames": ["Small"], + "class": "spacing-outer-left" + }, + { + "name": "Outer medium", + "oldNames": ["Medium"], + "class": "spacing-outer-left-medium" + }, + { + "name": "Outer large", + "oldNames": ["Large"], + "class": "spacing-outer-left-large" + }, + { + "name": "Inner none", + "class": "spacing-inner-left-none" + }, + { + "name": "Inner small", + "class": "spacing-inner-left" + }, + { + "name": "Inner medium", + "class": "spacing-inner-left-medium" + }, + { + "name": "Inner large", + "class": "spacing-inner-left-large" + } + ] + }, + { + "name": "Spacing right", + "type": "Dropdown", + "description": "The spacing to the right of this element.", + "options": [ + { + "name": "Outer none", + "oldNames": ["None"], + "class": "spacing-outer-right-none" + }, + { + "name": "Outer small", + "oldNames": ["Small"], + "class": "spacing-outer-right" + }, + { + "name": "Outer medium", + "oldNames": ["Medium"], + "class": "spacing-outer-right-medium" + }, + { + "name": "Outer large", + "oldNames": ["Large"], + "class": "spacing-outer-right-large" + }, + { + "name": "Inner none", + "class": "spacing-inner-right-none" + }, + { + "name": "Inner small", + "class": "spacing-inner-right" + }, + { + "name": "Inner medium", + "class": "spacing-inner-right-medium" + }, + { + "name": "Inner large", + "class": "spacing-inner-right-large" + } + ] + }, + { + "name": "Align self", + "oldNames": ["Align Self"], + "type": "Dropdown", + "description": "Float the element to the left or to the right.", + "options": [ + { + "name": "Left", + "class": "pull-left" + }, + { + "name": "Right", + "class": "pull-right" + } + ] + }, + { + "name": "Hide on phone", + "oldNames": ["Hide On Phone"], + "type": "Toggle", + "description": "Hide element on phone.", + "class": "hide-phone" + }, + { + "name": "Hide on tablet", + "oldNames": ["Hide On Tablet"], + "type": "Toggle", + "description": "Hide element on tablet.", + "class": "hide-tablet" + }, + { + "name": "Hide on desktop", + "oldNames": ["Hide On Desktop"], + "type": "Toggle", + "description": "Hide element on desktop.", + "class": "hide-desktop" + } + ], + "DivContainer": [ + { + "name": "Align content", + "type": "Dropdown", + "description": "Align content of this element left, right or center it. Align elements inside the container as a row or as a column.", + "options": [ + { + "name": "Left align as a row", + "oldNames": ["Left align as row"], + "class": "row-left" + }, + { + "name": "Center align as a row", + "oldNames": ["Center align as row"], + "class": "row-center" + }, + { + "name": "Right align as a row", + "oldNames": ["Right align as row"], + "class": "row-right" + }, + { + "name": "Left align as a column", + "oldNames": ["Left align as column"], + "class": "col-left" + }, + { + "name": "Center align as a column", + "oldNames": ["Center align as column"], + "class": "col-center" + }, + { + "name": "Right align as a column", + "oldNames": ["Right align as column"], + "class": "col-right" + } + ] + }, + { + "name": "Background color", + "type": "Dropdown", + "description": "Change the background color of the container.", + "options": [ + { + "name": "Background Primary", + "oldNames": ["Background Default"], + "class": "background-main" + }, + { + "name": "Background Secondary", + "oldNames": ["Background Dashboard"], + "class": "background-secondary" + }, + { + "name": "Brand Primary", + "oldNames": ["Primary"], + "class": "background-primary" + }, + { + "name": "Brand Secondary", + "oldNames": ["Default", "Brand Default"], + "class": "background-default" + }, + { + "name": "Brand Success", + "oldNames": ["Success"], + "class": "background-success" + }, + { + "name": "Brand Warning", + "oldNames": ["Warning"], + "class": "background-warning" + }, + { + "name": "Brand Danger", + "oldNames": ["Danger"], + "class": "background-danger" + }, + { + "name": "Brand Gradient", + "class": "background-brand-gradient" + } + ] + }, + { + "name": "Shade", + "type": "Dropdown", + "description": "Apply a shade to your background color", + "options": [ + { + "name": "Light", + "class": "background-light" + }, + { + "name": "Dark", + "class": "background-dark" + } + ] + }, + { + "name": "Add shadow", + "type": "Dropdown", + "description": "Add a shadow to this element", + "options": [ + { + "name": "Small", + "class": "shadow-small" + }, + { + "name": "Medium", + "class": "shadow-medium" + }, + { + "name": "Large", + "class": "shadow-large" + } + ] + } + ], + "Button": [ + { + "name": "Size", + "type": "Dropdown", + "description": "Size of the buttons", + "options": [ + { + "name": "Small", + "class": "btn-sm" + }, + { + "name": "Large", + "class": "btn-lg" + } + ] + }, + { + "name": "Full width", + "type": "Toggle", + "description": "Extend the button to the full width of the container it is placed in.", + "class": "btn-block" + }, + { + "name": "Border", + "oldNames": ["Bordered"], + "type": "Toggle", + "description": "Style the button with a transparent background, a colored border, and colored text.", + "class": "btn-bordered" + }, + { + "name": "Align icon", + "type": "Dropdown", + "description": "Place the icon to the right or on top of the button.", + "options": [ + { + "name": "Right", + "class": "btn-icon-right" + }, + { + "name": "Top", + "class": "btn-icon-top" + } + ] + } + ], + "ListView": [ + { + "name": "Style", + "type": "Dropdown", + "description": "Change the appearance of rows in the list view.", + "options": [ + { + "name": "Lined", + "class": "listview-lined" + }, + { + "name": "Striped", + "class": "listview-striped" + }, + { + "name": "Bordered", + "class": "listview-bordered" + }, + { + "name": "No Styling", + "class": "listview-stylingless" + } + ] + }, + { + "name": "Hover style", + "type": "Toggle", + "description": "Highlight a row when hovering over it. Only useful when the row is clickable.", + "class": "listview-hover" + }, + { + "name": "Row Size", + "type": "Dropdown", + "description": "Change the row spacing of the list view.", + "options": [ + { + "name": "Small", + "class": "listview-sm" + }, + { + "name": "Large", + "class": "listview-lg" + } + ] + } + ], + "DataGrid": [ + { + "name": "Style", + "type": "Dropdown", + "description": "Choose one of the following styles to change the appearance of the data grid.", + "options": [ + { + "name": "Striped", + "class": "datagrid-striped" + }, + { + "name": "Bordered", + "class": "datagrid-bordered" + }, + { + "name": "Lined", + "class": "datagrid-lined" + } + ] + }, + { + "name": "Hover style", + "type": "Toggle", + "description": "Enable data grid hover to make the rows hoverable.", + "class": "datagrid-hover" + }, + { + "name": "Row size", + "type": "Dropdown", + "description": "Increase or decrease the row spacing of the data grid row.", + "options": [ + { + "name": "Small", + "class": "datagrid-sm" + }, + { + "name": "Large", + "class": "datagrid-lg" + } + ] + } + ], + "TemplateGrid": [ + { + "name": "Style", + "type": "Dropdown", + "description": "Choose one of the following styles to change the appearance of the template grid.", + "options": [ + { + "name": "Striped", + "class": "templategrid-striped" + }, + { + "name": "Bordered", + "class": "templategrid-bordered" + }, + { + "name": "Lined", + "class": "templategrid-lined" + }, + { + "name": "No styling", + "class": "templategrid-stylingless" + } + ] + }, + { + "name": "Hover style", + "type": "Toggle", + "description": "Enable template grid hover to make the rows hoverable.", + "class": "templategrid-hover" + } + ], + "GroupBox": [ + { + "name": "Style", + "type": "Dropdown", + "description": "Choose one of the following styles to change the appearance of the groupbox.", + "options": [ + { + "name": "Brand Primary", + "oldNames": ["Primary"], + "class": "groupbox-primary" + }, + { + "name": "Brand Secondary", + "oldNames": ["Default", "Brand Default"], + "class": "groupbox-secondary" + }, + { + "name": "Brand Success", + "oldNames": ["Success"], + "class": "groupbox-success" + }, + { + "name": "Brand Warning", + "oldNames": ["Warning"], + "class": "groupbox-warning" + }, + { + "name": "Brand Danger", + "oldNames": ["Danger"], + "class": "groupbox-danger" + }, + { + "name": "Transparent", + "class": "groupbox-transparent" + } + ] + }, + { + "name": "Callout style", + "type": "Toggle", + "description": "Enable the groupbox callout functionality to highlight the importance of the groupbox.", + "class": "groupbox-callout" + } + ], + "StaticImageViewer": [ + { + "name": "Style", + "type": "Dropdown", + "description": "Choose the style of your image.", + "options": [ + { + "name": "Rounded", + "class": "img-rounded" + }, + { + "name": "Thumbnail", + "class": "img-thumbnail" + }, + { + "name": "Circle", + "class": "img-circle" + } + ] + }, + { + "name": "Center", + "type": "Toggle", + "description": "Align the image in the center of an element.", + "class": "img-center" + }, + { + "name": "Fit", + "type": "Dropdown", + "description": "Choose the image fit.", + "options": [ + { + "name": "Fill", + "class": "img-fill" + }, + { + "name": "Contain", + "class": "img-contain" + }, + { + "name": "Cover", + "class": "img-cover" + }, + { + "name": "Scale-down", + "class": "img-scale-down" + } + ] + } + ], + "DynamicImageViewer": [ + { + "name": "Style", + "type": "Dropdown", + "description": "Choose the style of your image.", + "options": [ + { + "name": "Rounded", + "class": "img-rounded" + }, + { + "name": "Thumbnail", + "class": "img-thumbnail" + }, + { + "name": "Circle", + "class": "img-circle" + } + ] + }, + { + "name": "Center", + "type": "Toggle", + "description": "Align the image in the center of an element.", + "class": "img-center" + }, + { + "name": "Fit", + "type": "Dropdown", + "description": "Choose the image fit.", + "options": [ + { + "name": "Fill", + "class": "img-fill" + }, + { + "name": "Contain", + "class": "img-contain" + }, + { + "name": "Cover", + "class": "img-cover" + }, + { + "name": "Scale-down", + "class": "img-scale-down" + } + ] + } + ], + "Label": [ + { + "name": "Style", + "type": "Dropdown", + "description": "Change the appearance of a label.", + "options": [ + { + "name": "Brand Primary", + "oldNames": ["Primary"], + "class": "label-primary" + }, + { + "name": "Brand Secondary", + "oldNames": ["Default", "Brand Default"], + "class": "label-secondary" + }, + { + "name": "Brand Success", + "oldNames": ["Success"], + "class": "label-success" + }, + { + "name": "Brand Warning", + "oldNames": ["Warning"], + "class": "label-warning" + }, + { + "name": "Brand Danger", + "oldNames": ["Danger"], + "class": "label-danger" + } + ] + } + ], + "TabContainer": [ + { + "name": "Style", + "type": "Dropdown", + "description": "Change the appearance of the tab container", + "options": [ + { + "name": "Pills", + "class": "tab-pills" + }, + { + "name": "Lined", + "class": "tab-lined" + }, + { + "name": "Bordered", + "class": "tab-bordered" + }, + { + "name": "Wizard", + "class": "tab-wizard" + } + ] + }, + { + "name": "Tab Position", + "type": "Dropdown", + "description": "Change the position of the tabs", + "options": [ + { + "name": "Left", + "class": "tab-left" + }, + { + "name": "Center", + "class": "tab-center" + }, + { + "name": "Right", + "class": "tab-right" + } + ] + }, + { + "name": "Justify", + "type": "Toggle", + "description": "Justify the tabs to 100%", + "class": "tab-justified" + } + ], + "DynamicText": [ + { + "name": "Size", + "type": "Dropdown", + "description": "Make the text smaller or larger.", + "options": [ + { + "name": "Small", + "class": "text-small" + }, + { + "name": "Large", + "class": "text-large" + } + ] + }, + { + "name": "Weight", + "oldNames": ["Font Weight"], + "type": "Dropdown", + "description": "Emphasize the text with a heavier or lighter font weight", + "options": [ + { + "name": "Light", + "class": "text-light" + }, + { + "name": "Normal", + "class": "text-normal" + }, + { + "name": "Semibold", + "class": "text-semibold" + }, + { + "name": "Bold", + "class": "text-bold" + } + ] + }, + { + "name": "Color", + "type": "Dropdown", + "description": "Change the color of text.", + "options": [ + { + "name": "Header color", + "class": "text-header" + }, + { + "name": "Detail color", + "class": "text-detail" + }, + { + "name": "Brand Primary", + "oldNames": ["Primary"], + "class": "text-primary" + }, + { + "name": "Brand Secondary", + "oldNames": ["Default", "Brand Default"], + "class": "text-secondary" + }, + { + "name": "Brand Success", + "oldNames": ["Success"], + "class": "text-success" + }, + { + "name": "Brand Warning", + "oldNames": ["Warning"], + "class": "text-warning" + }, + { + "name": "Brand Danger", + "oldNames": ["Danger"], + "class": "text-danger" + }, + { + "name": "White", + "class": "text-white" + } + ] + }, + { + "name": "Alignment", + "type": "Dropdown", + "description": "Align the text.", + "options": [ + { + "name": "Left", + "class": "text-left d-block" + }, + { + "name": "Center", + "class": "text-center d-block" + }, + { + "name": "Right", + "class": "text-right d-block" + } + ] + }, + { + "name": "Transform", + "type": "Dropdown", + "description": "Change the letter case of the text.", + "options": [ + { + "name": "Lowercase", + "class": "text-lowercase" + }, + { + "name": "Uppercase", + "class": "text-uppercase" + }, + { + "name": "Capitalize", + "class": "text-capitalize" + } + ] + }, + { + "name": "Wrap options", + "type": "Dropdown", + "description": "Break long words and sentences into multiple lines.", + "options": [ + { + "name": "Wrap", + "class": "text-break" + }, + { + "name": "No Wrap", + "class": "text-nowrap" + } + ] + } + ], + "Table": [ + { + "name": "Style", + "type": "Dropdown", + "description": "Change the appearance of cells in the table.", + "options": [ + { + "name": "Bordered", + "class": "table-bordered" + }, + { + "name": "Lined", + "class": "table-lined" + } + ] + }, + { + "name": "Compact", + "type": "Toggle", + "description": "Change the spacing between cells to be compact.", + "class": "table-compact" + } + ], + "com.mendix.widget.custom.badge.Badge": [ + { + "name": "Style", + "type": "Dropdown", + "description": "The brand style affecting this element's appearance.", + "options": [ + { + "name": "Brand Primary", + "class": "label-primary" + }, + { + "name": "Brand Secondary", + "class": "label-secondary" + }, + { + "name": "Brand Success", + "class": "label-success" + }, + { + "name": "Brand Warning", + "class": "label-warning" + }, + { + "name": "Brand Danger", + "class": "label-danger" + } + ] + } + ], + "com.mendix.widget.custom.progressbar.ProgressBar": [ + { + "name": "Striped bar", + "type": "Toggle", + "description": "Striped progress bar", + "class": "progress-striped" + }, + { + "name": "Bar color", + "type": "Dropdown", + "description": "Color of the progress bar", + "options": [ + { + "name": "Primary", + "class": "progress-bar-primary" + }, + { + "name": "Success", + "class": "progress-bar-success" + }, + { + "name": "Warning", + "class": "progress-bar-warning" + }, + { + "name": "Danger", + "class": "progress-bar-danger" + } + ] + }, + { + "name": "Size", + "type": "Dropdown", + "description": "Size of the progress bar", + "options": [ + { + "name": "Small", + "class": "progress-bar-small" + }, + { + "name": "Medium", + "class": "progress-bar-medium" + }, + { + "name": "Large", + "class": "progress-bar-large" + } + ] + } + ], + "com.mendix.widget.custom.badgebutton.BadgeButton": [ + { + "name": "Style", + "type": "Dropdown", + "description": "The brand style affecting this element's appearance.", + "options": [ + { + "name": "Brand Primary", + "class": "btn-primary" + }, + { + "name": "Brand Secondary", + "class": "btn-secondary" + }, + { + "name": "Brand Success", + "class": "btn-success" + }, + { + "name": "Brand Warning", + "class": "btn-warning" + }, + { + "name": "Brand Danger", + "class": "btn-danger" + } + ] + }, + { + "name": "Size", + "type": "Dropdown", + "description": "Size of the buttons", + "options": [ + { + "name": "Small", + "class": "btn-sm" + }, + { + "name": "Large", + "class": "btn-lg" + } + ] + }, + { + "name": "Full width", + "type": "Toggle", + "description": "Extend the button to the full width of the container it is placed in.", + "class": "btn-block" + }, + { + "name": "Border", + "oldNames": ["Bordered"], + "type": "Toggle", + "description": "Style the button with a transparent background, a colored border, and colored text.", + "class": "btn-bordered" + } + ], + "com.mendix.widget.custom.progresscircle.ProgressCircle": [ + { + "name": "Bar color", + "type": "Dropdown", + "description": "Color of the progress bar", + "options": [ + { + "name": "Primary", + "class": "widget-progress-circle-primary" + }, + { + "name": "Success", + "class": "widget-progress-circle-success" + }, + { + "name": "Warning", + "class": "widget-progress-circle-warning" + }, + { + "name": "Danger", + "class": "widget-progress-circle-danger" + } + ] + }, + { + "name": "Size", + "type": "Dropdown", + "description": "Thickness of the progress circle", + "options": [ + { + "name": "Small", + "class": "widget-progress-circle-thickness-small" + }, + { + "name": "Medium", + "class": "widget-progress-circle-thickness-medium" + }, + { + "name": "Large", + "class": "widget-progress-circle-thickness-large" + } + ] + } + ], + "com.mendix.widget.custom.switch.Switch": [ + { + "name": "Style", + "type": "Dropdown", + "description": "The brand style affecting this element's appearance.", + "options": [ + { + "name": "Brand Primary", + "class": "widget-switch-brand-primary" + }, + { + "name": "Brand Secondary", + "class": "widget-switch-brand-secondary" + }, + { + "name": "Brand Success", + "class": "widget-switch-brand-success" + }, + { + "name": "Brand Warning", + "class": "widget-switch-brand-warning" + }, + { + "name": "Brand Danger", + "class": "widget-switch-brand-danger" + } + ] + }, + { + "name": "Device style", + "type": "Dropdown", + "description": "The general appearance of the switch. When no option selected iOS styles are applied", + "options": [ + { + "name": "iOS", + "class": "iOS" + }, + { + "name": "Android", + "class": "android" + } + ] + } + ], + "MenuBar": [ + { + "name": "Hide icons", + "type": "Toggle", + "description": "Hide the navigation items icon", + "class": "hide-icons" + } + ], + "NavigationTree": [ + { + "name": "Hide icons", + "type": "Toggle", + "description": "Hide the navigation items icon", + "class": "hide-icons" + } + ], + "SimpleMenuBar": [ + { + "name": "Hide icons", + "type": "Toggle", + "description": "Hide the navigation items icon", + "class": "hide-icons" + } + ], + "com.mendix.widget.custom.starrating.StarRating": [ + { + "name": "Size", + "type": "Dropdown", + "description": "Change size of the rating icon/image. Default is medium.", + "options": [ + { + "name": "Small", + "class": "widget-rating-small" + }, + { + "name": "Large", + "class": "widget-rating-large" + } + ] + } + ], + "com.mendix.widget.web.accordion.Accordion": [ + { + "name": "Borders", + "type": "Dropdown", + "description": "Change the border appearance. By default, only horizontal borders between groups are applied.", + "options": [ + { + "name": "All", + "class": "widget-accordion-bordered-all" + }, + { + "name": "Horizontal", + "class": "widget-accordion-bordered-horizontal" + }, + { + "name": "None", + "class": "widget-accordion-bordered-none" + } + ] + }, + { + "name": "Striped", + "type": "Toggle", + "description": "Add alternating background colors to groups in the accordion.", + "class": "widget-accordion-striped" + }, + { + "name": "Compact", + "type": "Toggle", + "description": "Make groups in the accordion more compact.", + "class": "widget-accordion-compact" + } + ], + "com.mendix.widget.web.image.Image": [ + { + "name": "Align content", + "type": "Dropdown", + "description": "Align content of this element left, right or center it. Align elements inside the container as a row or as a column.", + "options": [ + { + "name": "Left align as a row", + "class": "row-left" + }, + { + "name": "Center align as a row", + "class": "row-center" + }, + { + "name": "Right align as a row", + "class": "row-right" + }, + { + "name": "Left align as a column", + "class": "col-left" + }, + { + "name": "Center align as a column", + "class": "col-center" + }, + { + "name": "Right align as a column", + "class": "col-right" + } + ] + }, + { + "name": "Image style", + "type": "Dropdown", + "description": "Change the image style.", + "options": [ + { + "name": "Rounded", + "class": "img-rounded" + }, + { + "name": "Circle", + "class": "img-circle" + }, + { + "name": "Square", + "class": "img-square" + } + ] + }, + { + "name": "Center image", + "type": "Toggle", + "description": "Center the image.", + "class": "img-center" + }, + { + "name": "Image fit", + "type": "Dropdown", + "description": "Change the fit of the image.", + "options": [ + { + "name": "Fill", + "class": "img-fill" + }, + { + "name": "Contain", + "class": "img-contain" + }, + { + "name": "Cover", + "class": "img-cover" + }, + { + "name": "Scale-down", + "class": "img-scale-down" + }, + { + "name": "Auto", + "class": "img-auto" + } + ] + }, + { + "name": "Opacity", + "type": "Dropdown", + "description": "Change the opacity of the image.", + "options": [ + { + "name": "Low", + "class": "img-opacity-low" + }, + { + "name": "Medium", + "class": "img-opacity-medium" + }, + { + "name": "High", + "class": "img-opacity-high" + } + ] + } + ], + "com.mendix.widget.custom.slider.Slider": [ + { + "name": "Style", + "type": "Dropdown", + "description": "The brand style affecting this element's appearance.", + "options": [ + { + "name": "Brand Primary", + "class": "widget-slider-primary" + }, + + { + "name": "Brand Success", + "class": "widget-slider-success" + }, + { + "name": "Brand Warning", + "class": "widget-slider-warning" + }, + { + "name": "Brand Danger", + "class": "widget-slider-danger" + } + ] + } + ], + "com.mendix.widget.web.tooltip.Tooltip": [ + { + "name": "Show inline", + "type": "Toggle", + "description": "Show the widget as an inline element.", + "class": "widget-tooltip-inline" + } + ], + "com.mendix.widget.custom.RangeSlider.RangeSlider": [ + { + "name": "Style", + "type": "Dropdown", + "description": "The brand style affecting this element's appearance.", + "options": [ + { + "name": "Brand Primary", + "class": "widget-range-slider-primary" + }, + + { + "name": "Brand Success", + "class": "widget-range-slider-success" + }, + { + "name": "Brand Warning", + "class": "widget-range-slider-warning" + }, + { + "name": "Brand Danger", + "class": "widget-range-slider-danger" + } + ] + } + ] +} diff --git a/themesource/atlas_core/web/layouts/_layout-atlas-phone.scss b/themesource/atlas_core/web/layouts/_layout-atlas-phone.scss new file mode 100644 index 0000000..59fcc6a --- /dev/null +++ b/themesource/atlas_core/web/layouts/_layout-atlas-phone.scss @@ -0,0 +1,24 @@ +/* ========================================================================== + Atlas layout + + Extra styling for phone layouts +========================================================================== */ +@mixin layout-atlas-phone() { + .layout-atlas-phone { + .region-topbar { + min-height: $m-header-height; + border-style: none; + background-color: $m-header-bg; + + &::before { + display: none; + } + } + + .region-sidebar { + .mx-navigationtree .navbar-inner > ul > li > a .glyphicon { + margin-right: $spacing-medium; + } + } + } +} diff --git a/themesource/atlas_core/web/layouts/_layout-atlas-responsive.scss b/themesource/atlas_core/web/layouts/_layout-atlas-responsive.scss new file mode 100644 index 0000000..1e4339e --- /dev/null +++ b/themesource/atlas_core/web/layouts/_layout-atlas-responsive.scss @@ -0,0 +1,190 @@ +/* ========================================================================== + Atlas layout + + Extra styling for responsive layouts +========================================================================== */ +@mixin layout-atlas-responsive() { + $sidebar-icon-height: 52px; + $sidebar-icon-width: 52px; + + .layout-atlas-responsive, + .layout-atlas-responsive-default { + @media (min-width: $screen-md) { + .mx-scrollcontainer-shrink:not(.mx-scrollcontainer-open) > .region-sidebar, + .mx-scrollcontainer-push:not(.mx-scrollcontainer-open) > .region-sidebar, + .mx-scrollcontainer-slide:not(.mx-scrollcontainer-open) > .region-sidebar { + width: $navsidebar-width-closed !important; + + .mx-scrollcontainer-wrapper > .mx-navigationtree ul li { + &.mx-navigationtree-has-items a { + white-space: nowrap; + } + + &.mx-navigationtree-has-items:hover > ul { + position: absolute; + z-index: 100; + top: 0; + bottom: 0; + left: $sidebar-icon-width; + display: block; + min-width: auto; + padding: $spacing-small 0; + + & > li.mx-navigationtree-has-items:hover > ul { + left: 100%; + } + } + + &.mx-navigationtree-collapsed, + &.mx-navigationtree-has-items { + ul { + display: none; + } + } + } + } + + .widget-sidebar:not(.widget-sidebar-expanded) { + .mx-navigationtree ul li { + &.mx-navigationtree-has-items:hover { + ul { + position: absolute; + z-index: 100; + top: 0; + bottom: 0; + left: $sidebar-icon-width; + display: block; + overflow-y: auto; + min-width: auto; + padding: $spacing-small 0; + } + } + + &.mx-navigationtree-collapsed, + &.mx-navigationtree-has-items { + ul { + display: none; + } + } + } + } + } + + .mx-scrollcontainer-slide { + &:not(.mx-scrollcontainer-open) > .region-sidebar { + overflow: hidden; + } + + &.mx-scrollcontainer-open > .region-sidebar { + width: $navsidebar-width-closed !important; + + & > .mx-scrollcontainer-wrapper { + position: relative; + } + } + + .region-sidebar > .mx-scrollcontainer-wrapper { + z-index: 2; + left: -$navsidebar-width-closed; + background-color: inherit; + } + } + + // Push aside for mobile + @media (max-width: $screen-sm-max) { + .mx-scrollcontainer-open:not(.mx-scrollcontainer-slide) { + width: 1100px; + } + + .mx-scrollcontainer-slide .toggle-btn { + display: inline-block !important; + } + } + + // Sidebar + .region-sidebar { + .toggle-btn { + width: $sidebar-icon-width; + border-color: transparent; + border-radius: 0; + background: transparent; + } + + .mx-scrollcontainer-wrapper { + .toggle-btn-wrapper { + display: flex; + padding: $spacing-small; + align-items: center; + min-height: calc(#{$topbar-minimalheight} + 4px); + background: $navsidebar-sub-bg; + } + + .toggle-btn { + padding: $spacing-medium; + + img { + width: 24px; + height: 24px; + } + } + + .toggle-text { + color: #fff; + font-weight: bold; + } + + & > .mx-navigationtree .navbar-inner > ul > li { + & > a { + height: $sidebar-icon-height; + padding: $spacing-small 0; + white-space: nowrap; + overflow: hidden; + // Glyph icon + .glyphicon { + display: flex; + align-items: center; + justify-content: center; + width: $sidebar-icon-width; + height: $sidebar-icon-height; + padding: $spacing-small $spacing-medium; + border-radius: $border-radius-default; + } + } + } + } + } + + // Topbar + .region-topbar { + padding: 0 $spacing-small; + + .toggle-btn { + padding: 0; + border-color: transparent; + border-radius: 0; + background: transparent; + } + } + } + + // Topbar variant + .layout-atlas-responsive-topbar { + .region-topbar { + padding: 0 $spacing-medium; + @media (max-width: $screen-sm-max) { + padding: 0 $spacing-small; + } + } + } + + // Fix Safari issue of sidebar disappearing + .profile-tablet { + .mx-scrollcontainer:not(.mx-scrollcontainer-open) > .region-sidebar { + overflow-y: hidden; + + .mx-scrollcontainer-wrapper { + overflow: visible; + } + } + } +} diff --git a/themesource/atlas_core/web/layouts/_layout-atlas-tablet.scss b/themesource/atlas_core/web/layouts/_layout-atlas-tablet.scss new file mode 100644 index 0000000..71fc74d --- /dev/null +++ b/themesource/atlas_core/web/layouts/_layout-atlas-tablet.scss @@ -0,0 +1,24 @@ +/* ========================================================================== + Atlas layout + + Extra styling for tablet layouts +========================================================================== */ +@mixin layout-atlas-tablet() { + .layout-atlas-tablet { + .region-topbar { + min-height: $m-header-height; + border-style: none; + background-color: $m-header-bg; + + &::before { + display: none; + } + } + + .region-sidebar { + .mx-navigationtree .navbar-inner > ul > li > a .glyphicon { + margin-right: $spacing-medium; + } + } + } +} diff --git a/themesource/atlas_core/web/layouts/_layout-atlas.scss b/themesource/atlas_core/web/layouts/_layout-atlas.scss new file mode 100644 index 0000000..97005a8 --- /dev/null +++ b/themesource/atlas_core/web/layouts/_layout-atlas.scss @@ -0,0 +1,137 @@ +/* ========================================================================== + Atlas layout + + The core stucture of all atlas layouts +========================================================================== */ +@mixin layout-atlas() { + .layout-atlas { + // Toggle button + .toggle-btn > img, + .toggle-btn > .glyphicon { + margin: 0; + } + + .mx-scrollcontainer-open { + .expand-btn > img { + transform: rotate(180deg); + } + } + + // Sidebar + .region-sidebar { + background-color: $navsidebar-bg; + z-index: 101; + box-shadow: 0 0 4px rgb(0 0 0 / 14%), 2px 4px 8px rgb(0 0 0 / 28%); + + .mx-scrollcontainer-wrapper { + display: flex; + flex-direction: column; + padding: $spacing-small 0; + } + + .mx-navigationtree .navbar-inner > ul > li > a { + padding: $spacing-medium; + + .glyphicon { + margin-right: $spacing-small; + } + } + + .sidebar-heading { + background: $navsidebar-sub-bg; + } + + .toggle-btn { + margin-right: $spacing-small; + border-color: transparent; + border-radius: 0; + background: transparent; + padding: $spacing-medium; + } + } + + // Topbar + .region-topbar { + position: relative; + z-index: 2; // Show dropshadow + min-height: $topbar-minimalheight; + background-color: $navtopbar-bg; + + // Topbar Content + .topbar-content { + display: flex; + align-items: center; + min-height: $topbar-minimalheight; + } + + // Toggle btn + .toggle-btn { + padding: 0; + margin-right: $spacing-medium; + border-color: transparent; + border-radius: 0; + background: transparent; + } + + // For your company, product, or project name + .navbar-brand { + display: inline-block; + float: none; // reset bootstrap + height: auto; + padding: 0; + line-height: inherit; + font-size: 16px; + margin-right: $spacing-small; + + img { + display: inline-block; + margin-right: $spacing-small; + @if $brand-logo !=false { + width: 0; + height: 0; + padding: ($brand-logo-height / 2) ($brand-logo-width / 2); + background-image: url($brand-logo); + background-repeat: no-repeat; + background-position: left center; + background-size: $brand-logo-width; + } @else { + width: auto; + height: $brand-logo-height; + } + } + + a { + margin-left: $spacing-small; + color: $navbar-brand-name; + font-size: 20px; + + &:hover, + &:focus { + text-decoration: none; + } + } + } + + .mx-navbar { + display: inline-flex; + vertical-align: middle; + background: transparent; + justify-content: center; + align-items: center; + + & > .mx-navbar-item { + & > a { + margin-top: 5px; + padding: 0 20px; + } + } + } + } + + .mx-scrollcontainer-slide { + &:not(.mx-scrollcontainer-open) > .region-sidebar { + overflow: hidden; + } + } + } +} diff --git a/themesource/atlas_core/web/main.scss b/themesource/atlas_core/web/main.scss new file mode 100644 index 0000000..3ce7fbe --- /dev/null +++ b/themesource/atlas_core/web/main.scss @@ -0,0 +1,381 @@ +// Default variables +@import "exclusion-variables"; +@import "../../../theme/web/exclusion-variables"; +@import "variables"; +@import "../../../theme/web/custom-variables"; + +// Font Family Import +@if $font-family-import != false { + @import url($font-family-import); +} + +//=============================== Bootstrap ================================\\ + +// Utilities +@import "core/_legacy/bootstrap/bootstrap"; +@import "core/_legacy/bootstrap/bootstrap-rtl"; +@if not $exclude-bootstrap { + @include bootstrap(); + @include bootstrap-rtl(); +} +@import "core/_legacy/mxui"; +@if not $exclude-mxui { + @include mxui(); +} + +//================================== CORE ==================================\\ + +// Base +@import "core/base/mixins/animations"; +@import "core/base/mixins/spacing"; +@import "core/base/mixins/layout-spacing"; +@import "core/base/mixins/buttons"; +@import "core/base/mixins/groupbox"; + +@import "core/base/animation"; +@if not $exclude-animations { + @include animations(); +} +@import "core/base/flex"; +@if not $exclude-flex { + @include flex(); +} +@import "core/base/spacing"; +@if not $exclude-spacing { + @include spacing(); +} +@import "core/base/base"; +@if not $exclude-base { + @include base(); +} +@import "core/base/login"; +@if not $exclude-login { + @include login(); +} + +// Widgets +@import "core/widgets/input"; +@if not $exclude-input { + @include input(); +} + +@import "core/helpers/background"; +@if not $exclude-background-helpers { + @include background-helpers(); +} + +@import "core/widgets/label"; +@if not $exclude-label { + @include label(); +} + +@import "core/widgets/badge"; +@if not $exclude-badge { + @include badge(); +} + +@import "core/helpers/label"; +@if not $exclude-label and not $exclude-label-helpers { + @include label-helpers(); +} + +@import "core/widgets/badge-button"; +@if not $exclude-badge-button { + @include badge-button(); +} + +@import "core/helpers/badge-button"; +@if not $exclude-badge-button and not $exclude-badge-button-helpers { + @include badge-button-helpers(); +} + +@import "core/widgets/button"; +@if not $exclude-button { + @include button(); +} + +@import "core/helpers/button"; +@if not $exclude-button and not $exclude-button-helpers { + @include button-helpers(); +} + +@import "core/widgets/check-box"; +@if not $exclude-check-box { + @include check-box(); +} + +@import "core/widgets/grid"; +@if not $exclude-grid { + @include grid(); +} + +@import "core/widgets/data-grid"; +@if not $exclude-data-grid { + @include data-grid(); +} + +@import "core/helpers/data-grid"; +@if not $exclude-data-grid and not $exclude-data-grid-helpers { + @include data-grid-helpers(); +} + +@import "core/widgets/data-view"; +@if not $exclude-data-view { + @include data-view(); +} + +@import "core/widgets/date-picker"; +@if not $exclude-data-picker { + @include date-picker(); +} + +@import "core/widgets/header"; +@if not $exclude-header { + @include header(); +} + +@import "core/widgets/glyphicon"; +@if not $exclude-glyphicon { + @include glyphicon(); +} + +@import "core/widgets/group-box"; +@if not $exclude-group-box { + @include group-box(); +} + +@import "core/helpers/group-box"; +@if not $exclude-group-box and not $exclude-group-box-helpers { + @include group-box-helpers(); +} + +@import "core/helpers/image"; +@if not $exclude-image-helpers { + @include image-helpers(); +} + +@import "core/widgets/list-view"; +@if not $exclude-list-view { + @include list-view(); +} + +@import "core/helpers/list-view"; +@if not $exclude-list-view and not $exclude-list-view-helpers { + @include list-view-helpers(); +} + +@import "core/widgets/modal"; +@if not $exclude-modal { + @include modal(); +} + +@import "core/widgets/navigation-bar"; +@if not $exclude-navigation-bar { + @include navigation-bar(); +} + +@import "core/helpers/navigation-bar"; +@if not $exclude-navigation-bar and not $exclude-navigation-bar-helpers { + @include navigation-bar-helpers(); +} + +@import "core/widgets/navigation-list"; +@if not $exclude-navigation-list { + @include navigation-list(); +} + +@import "core/widgets/navigation-tree"; +@if not $exclude-navigation-tree { + @include navigation-tree(); +} + +@import "core/helpers/navigation-tree"; +@if not $exclude-navigation-tree and not $exclude-navigation-tree-helpers { + @include navigation-tree-helpers(); +} + +@import "core/widgets/pop-up-menu"; +@if not $exclude-pop-up-menu { + @include pop-up-menu(); +} + +@import "core/widgets/simple-menu-bar"; +@if not $exclude-simple-menu-bar { + @include simple-menu-bar(); +} + +@import "core/helpers/simple-menu-bar"; +@if not $exclude-simple-menu-bar and not $exclude-simple-menu-bar-helpers { + @include simple-menu-bar-helpers(); +} + +@import "core/widgets/radio-button"; +@if not $exclude-radio-button { + @include radio-button(); +} + +@import "core/widgets/tab-container"; +@if not $exclude-tab-container { + @include tab-container(); +} + +@import "core/helpers/tab-container"; +@if not $exclude-tab-container and not $exclude-tab-container-helpers { + @include tab-container-helpers(); +} + +@import "core/widgets/table"; +@if not $exclude-table { + @include table(); +} + +@import "core/helpers/table"; +@if not $exclude-table and not $exclude-table-helpers { + @include table-helpers(); +} + +@import "core/widgets/template-grid"; +@if not $exclude-template-grid { + @include template-grid(); +} + +@import "core/helpers/template-grid"; +@if not $exclude-template-grid and not $exclude-template-grid-helpers { + @include template-grid-helpers(); +} + +@import "core/widgets/typography"; +@if not $exclude-typography { + @include typography(); +} + +@import "core/helpers/typography"; +@if not $exclude-typography and not $exclude-typography-helpers { + @include typography-helpers(); +} + +@import "core/widgets/layout-grid"; +@if not $exclude-layout-grid { + @include layout-grid(); +} + +@import "core/widgets/pagination"; +@if not $exclude-pagination { + @include pagination(); +} + +@import "core/widgets/progress"; +@if not $exclude-progress { + @include progress(); +} + +@import "core/widgets/progress-bar"; +@if not $exclude-progress-bar { + @include progress-bar(); +} + +@import "core/helpers/progress-bar"; +@if not $exclude-progress-bar and not $exclude-progress-bar-helpers { + @include progress-bar-helpers(); +} + +@import "core/widgets/progress-circle"; +@if not $exclude-progress-circle { + @include progress-circle(); +} + +@import "core/helpers/progress-circle"; +@if not $exclude-progress-circle and not $exclude-progress-circle-helpers { + @include progress-circle-helpers(); +} + +@import "core/widgets/rating"; +@if not $exclude-rating { + @include rating(); +} + +@import "core/helpers/rating"; +@if not $exclude-rating and not $exclude-rating-helpers { + @include rating-helpers(); +} + +@import "core/widgets/range-slider"; +@if not $exclude-range-slider { + @include range-slider(); +} + +@import "core/helpers/range-slider"; +@if not $exclude-range-slider and not $exclude-range-slider-helpers { + @include range-slider-helpers(); +} + +@import "core/widgets/slider"; +@if not $exclude-slider { + @include slider(); +} + +@import "core/helpers/slider"; +@if not $exclude-slider and not $exclude-slider-helpers { + @include slider-helpers(); +} + +@import "core/widgets/timeline"; +@if not $exclude-timeline { + @include timeline(); +} + +@import "core/widgets/tooltip"; +@if not $exclude-tooltip { + @include tooltip(); +} + +@import "core/helpers/helper-classes"; +@if not $exclude-helper-classes { + @include helper-classes(); +} + +@import "core/widgets/barcode-scanner"; +@if not $exclude-barcode-scanner { + @include barcode-scanner(); +} + +@import "core/widgets/accordion"; +@if not $exclude-accordion { + @include accordion(); +} + +@import "core/helpers/accordion"; +@if not $exclude-accordion and not $exclude-accordion-helpers { + @include accordion-helpers(); +} + +// Custom widgets +@import "core/widgetscustom/dijit-widget"; +@if not $exclude-custom-dijit-widget { + @include dijit-widget(); +} + +@import "core/widgets/switch"; +@if not $exclude-custom-switch { + @include switch(); +} + +//================================= CUSTOM =================================\\ + +// Layouts +@import "layouts/layout-atlas"; +@if not $exclude-layout-atlas { + @include layout-atlas(); +} +@import "layouts/layout-atlas-phone"; +@if not $exclude-layout-atlas-phone { + @include layout-atlas-phone(); +} +@import "layouts/layout-atlas-responsive"; +@if not $exclude-layout-atlas-responsive { + @include layout-atlas-responsive(); +} +@import "layouts/layout-atlas-tablet"; +@if not $exclude-layout-atlas-tablet { + @include layout-atlas-tablet(); +} diff --git a/themesource/atlas_web_content/.version b/themesource/atlas_web_content/.version new file mode 100644 index 0000000..15a2799 --- /dev/null +++ b/themesource/atlas_web_content/.version @@ -0,0 +1 @@ +3.3.0 diff --git a/themesource/atlas_web_content/web/buildingblocks/_alert.scss b/themesource/atlas_web_content/web/buildingblocks/_alert.scss new file mode 100644 index 0000000..a07c84f --- /dev/null +++ b/themesource/atlas_web_content/web/buildingblocks/_alert.scss @@ -0,0 +1,74 @@ +// +// DISCLAIMER: +// Do not change this file because it is core styling. +// Customizing core files will make updating Atlas much more difficult in the future. +// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten. +// + +/* ========================================================================== + Alerts + + Default Bootstrap Alert boxes. Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages +========================================================================== */ + +.alert { + margin-top: 0; + padding: $spacing-medium; + border: 1px solid; + border-radius: $border-radius-default; + padding: $spacing-medium; +} + +.alert-icon { + font-size: $font-size-h3; +} + +.alert-title { + color: inherit; +} + +.alert-description { + color: inherit; +} + +//Variations + +.alert-primary, +.alert { + color: $alert-primary-color; + border-color: $alert-primary-border-color; + background-color: $alert-primary-bg; +} + +.alert-secondary { + color: $alert-secondary-color; + border-color: $alert-secondary-border-color; + background-color: $alert-secondary-bg; +} + +// Semantic variations +.alert-success { + color: $alert-success-color; + border-color: $alert-success-border-color; + background-color: $alert-success-bg; +} + +.alert-warning { + color: $alert-warning-color; + border-color: $alert-warning-border-color; + background-color: $alert-warning-bg; +} + +.alert-danger { + color: $alert-danger-color; + border-color: $alert-danger-border-color; + background-color: $alert-danger-bg; +} + +//== State +//## Styling when component is in certain state +//-------------------------------------------------------------------------------------------------------------------// +.has-error .alert { + margin-top: $spacing-small; + margin-bottom: 0; +} diff --git a/themesource/atlas_web_content/web/buildingblocks/_breadcrumb.scss b/themesource/atlas_web_content/web/buildingblocks/_breadcrumb.scss new file mode 100644 index 0000000..d6a4bbf --- /dev/null +++ b/themesource/atlas_web_content/web/buildingblocks/_breadcrumb.scss @@ -0,0 +1,45 @@ +/* ========================================================================== + Breadcrumbs + +========================================================================== */ +.breadcrumb { + //reset + margin: 0; + padding: 0; + border-radius: 0; + background-color: transparent; + font-size: $font-size-default; + margin-bottom: $spacing-large; +} + +//== Elements +//-------------------------------------------------------------------------------------------------------------------// +.breadcrumb-item { + display: inline-block; + margin: 0; + &:last-child { + color: $font-color-default; + a { + text-decoration: none; + } + } +} +.breadcrumb-item + .breadcrumb-item { + &::before { + display: inline-block; + padding-right: $spacing-small; + padding-left: $spacing-small; + content: "/"; + color: $gray-light; + } +} + +//== Variations +//-------------------------------------------------------------------------------------------------------------------// +.breadcrumb-large { + font-size: $font-size-h3; +} +.breadcrumb-underline { + padding-bottom: $spacing-medium; + border-bottom: 1px solid $border-color-default; +} diff --git a/themesource/atlas_web_content/web/buildingblocks/_card.scss b/themesource/atlas_web_content/web/buildingblocks/_card.scss new file mode 100644 index 0000000..7f71a8f --- /dev/null +++ b/themesource/atlas_web_content/web/buildingblocks/_card.scss @@ -0,0 +1,63 @@ +/* ========================================================================== + Cards + +========================================================================== */ +.card { + border: 0; + border-radius: $border-radius-default; + background-color: #ffffff; + overflow: hidden; + position: relative; + padding: $spacing-large; + margin-bottom: $spacing-large; +} + +//== Card components +//-------------------------------------------------------------------------------------------------------------------// +.card-body { + padding: $spacing-large; +} + +.card-overlay { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + background: rgba(0, 0, 0, 0.6); + background: linear-gradient( + to bottom, + rgba(255, 255, 255, 0) 0%, + rgba(250, 250, 250, 0) 8%, + rgba(0, 0, 0, 0.99) 121%, + #000 100% + ); + padding: $spacing-large; +} + +.card-title { +} + +.card-image { + width: 100%; + height: auto; +} + +.card-supportingtext { +} + +.card-action { +} + +.card-icon { + font-size: $font-size-h1; +} + +//== Variations +//-------------------------------------------------------------------------------------------------------------------// +.card-with-image { + overflow: hidden; +} + +.card-with-background { + position: relative; +} diff --git a/themesource/atlas_web_content/web/buildingblocks/_chat.scss b/themesource/atlas_web_content/web/buildingblocks/_chat.scss new file mode 100644 index 0000000..2fe5ce9 --- /dev/null +++ b/themesource/atlas_web_content/web/buildingblocks/_chat.scss @@ -0,0 +1,147 @@ +/* ========================================================================== + Chats + +========================================================================== */ +.chat { + display: flex; + flex-direction: column; + height: 100%; + background-color: $bg-color-secondary; +} + +//== Elements +//-------------------------------------------------------------------------------------------------------------------// +.chat-content { + display: flex; + overflow: auto; + flex: 1; + flex-direction: column; + justify-content: flex-end; + + .chat-list { + position: relative; + overflow: auto; + + ul { + display: flex; + flex-direction: column-reverse; + margin-bottom: $m-spacing-large; + } + + li { + padding: 15px 30px; + animation: fadeIn 0.2s; + background-color: transparent; + animation-fill-mode: both; + + &, + &:last-child { + border: 0; + } + } + + .mx-listview-loadMore { + position: absolute; + top: 0; + right: 0; + left: 0; + display: block; + width: 50%; + margin: 15px auto; + color: #ffffff; + background-color: $brand-primary; + box-shadow: 0 2px 20px 0 rgba(0, 0, 0, 0.05); + } + } +} + +.chat-message { + display: flex; +} + +.chat-avatar { + margin: 0 20px 0 0; + border-radius: 50%; +} + +.chat-message-content { + display: inline-flex; + flex-direction: column; +} + +.chat-message-balloon { + position: relative; + display: flex; + flex-direction: column; + padding: 10px 15px; + border-radius: 5px; + background-color: $bg-color; + + &::after { + position: absolute; + top: 10px; + right: 100%; + width: 0; + height: 0; + content: ""; + border: 10px solid transparent; + border-top: 0; + border-right-color: $bg-color; + border-left: 0; + } +} + +.chat-message-time { + padding-top: 2px; + + .form-control-static { + border: 0; + } +} + +.chat-footer { + z-index: 1; + padding: $m-spacing-large; + background-color: $bg-color; + box-shadow: 0 2px 20px 0 rgba(0, 0, 0, 0.05); +} + +.chat-input { + display: flex; + + .chat-textbox { + flex: 1; + margin-right: $spacing-large; + margin-bottom: 0; + + .form-control { + border: 0; + } + } +} + +//== Variations +//-------------------------------------------------------------------------------------------------------------------// +.chat-message-self { + justify-content: flex-end; + + .chat-avatar { + margin: 0 0 0 20px; + } + + .chat-message-balloon { + background-color: $color-primary-lighter; + + &::after { + left: 100%; + border: 10px solid transparent; + border-top: 0; + border-right: 0; + border-left-color: $color-primary-lighter; + } + } + + .chat-message-time { + text-align: right; + } +} diff --git a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_controlgroup.scss b/themesource/atlas_web_content/web/buildingblocks/_controlgroup.scss similarity index 100% rename from theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_controlgroup.scss rename to themesource/atlas_web_content/web/buildingblocks/_controlgroup.scss diff --git a/themesource/atlas_web_content/web/buildingblocks/_formblock.scss b/themesource/atlas_web_content/web/buildingblocks/_formblock.scss new file mode 100644 index 0000000..c6a2264 --- /dev/null +++ b/themesource/atlas_web_content/web/buildingblocks/_formblock.scss @@ -0,0 +1,14 @@ +/* ========================================================================== + Form Block + + Used in default forms +========================================================================== */ +.formblock { + width: 100%; + margin-bottom: $spacing-large; +} + +//== Elements +//-------------------------------------------------------------------------------------------------------------------// +.form-title { +} diff --git a/themesource/atlas_web_content/web/buildingblocks/_heroheader.scss b/themesource/atlas_web_content/web/buildingblocks/_heroheader.scss new file mode 100644 index 0000000..e5e8fd4 --- /dev/null +++ b/themesource/atlas_web_content/web/buildingblocks/_heroheader.scss @@ -0,0 +1,41 @@ +/* ========================================================================== + Hero header + +========================================================================== */ + +.headerhero { + width: 100%; + min-height: $header-min-height; + background-color: $header-bg-color; + position: relative; + overflow: hidden; + padding: $spacing-large; + margin-bottom: $spacing-large; +} + +//== Elements +//-------------------------------------------------------------------------------------------------------------------// +.headerhero-title { + color: $header-text-color; +} + +.headerhero-subtitle { + color: $header-text-color; +} + +.headerhero-backgroundimage { + position: absolute; + z-index: 0; + top: 0; + height: 100%; + width: 100%; + filter: $header-bgimage-filter; +} + +.btn.headerhero-action { + color: $header-text-color; +} + +.heroheader-overlay { + z-index: 1; +} diff --git a/themesource/atlas_web_content/web/buildingblocks/_master-detail.scss b/themesource/atlas_web_content/web/buildingblocks/_master-detail.scss new file mode 100644 index 0000000..4cb80dd --- /dev/null +++ b/themesource/atlas_web_content/web/buildingblocks/_master-detail.scss @@ -0,0 +1,26 @@ +/* ========================================================================== + Master Detail + + A list with a listening dataview +========================================================================== */ +.masterdetail { + background: #fff; + .masterdetail-master { + border-right: 1px solid $border-color-default; + } + .masterdetail-detail { + padding: $spacing-large; + } +} + +//== Variations +//-------------------------------------------------------------------------------------------------------------------// +.masterdetail-vertical { + background: #fff; + .masterdetail-master { + border-bottom: 1px solid $border-color-default; + } + .masterdetail-detail { + padding: $spacing-large; + } +} diff --git a/theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_pageblocks.scss b/themesource/atlas_web_content/web/buildingblocks/_pageblocks.scss similarity index 100% rename from theme/styles/web/sass/ui_resources/atlas_ui_resources/buildingblocks/_pageblocks.scss rename to themesource/atlas_web_content/web/buildingblocks/_pageblocks.scss diff --git a/themesource/atlas_web_content/web/buildingblocks/_pageheader.scss b/themesource/atlas_web_content/web/buildingblocks/_pageheader.scss new file mode 100644 index 0000000..f649e9a --- /dev/null +++ b/themesource/atlas_web_content/web/buildingblocks/_pageheader.scss @@ -0,0 +1,21 @@ +/* ========================================================================== + Pageheader +========================================================================== */ + +//== Default +//-------------------------------------------------------------------------------------------------------------------// +.pageheader { + width: 100%; + margin-bottom: $spacing-large; +} + +//== Elements +//-------------------------------------------------------------------------------------------------------------------// +.pageheader-title { +} + +.pageheader-subtitle { +} + +.pageheader-image { +} diff --git a/themesource/atlas_web_content/web/buildingblocks/_userprofile.scss b/themesource/atlas_web_content/web/buildingblocks/_userprofile.scss new file mode 100644 index 0000000..eee81f1 --- /dev/null +++ b/themesource/atlas_web_content/web/buildingblocks/_userprofile.scss @@ -0,0 +1,12 @@ +/* ========================================================================== + User profile blocks + - +========================================================================== */ +.userprofile { + .userprofile-img { + } + .userprofile-title { + } + .userprofile-subtitle { + } +} diff --git a/themesource/atlas_web_content/web/buildingblocks/_wizard.scss b/themesource/atlas_web_content/web/buildingblocks/_wizard.scss new file mode 100644 index 0000000..91cd9d8 --- /dev/null +++ b/themesource/atlas_web_content/web/buildingblocks/_wizard.scss @@ -0,0 +1,139 @@ +//Wizard +.wizard { + display: flex; + justify-content: space-between; + width: 100%; + margin-bottom: $spacing-large; +} + +//Wizard step +.wizard-step { + position: relative; + width: 100%; + display: flex; + align-items: center; +} + +//Wizard step number +.wizard-step-number { + position: relative; + z-index: 1; + display: flex; + justify-content: center; + align-items: center; + width: $wizard-step-number-size; + height: $wizard-step-number-size; + color: $wizard-default-step-color; + font-size: $wizard-step-number-font-size; + border-radius: 50%; + background-color: $wizard-default-bg; + border-color: $wizard-default-border-color; +} + +//Wizard step text +.wizard-step-text { + overflow: hidden; + white-space: nowrap; + text-decoration: none; + text-overflow: ellipsis; + color: $wizard-default-step-color; +} + +//Wizard circle +.wizard-circle .wizard-step { + flex-direction: column; + &::before { + position: absolute; + z-index: 0; + top: $wizard-step-number-size / 2; + display: block; + width: 100%; + height: 2px; + content: ""; + background-color: $wizard-default-border-color; + } +} + +//Wizard arrow +.wizard-arrow .wizard-step { + height: $wizard-step-height; + margin-left: calc(0px - (#{$wizard-step-height} / 2)); + padding-left: ($wizard-step-height / 2); + background-color: $wizard-default-bg; + justify-content: flex-start; + border: 1px solid $wizard-default-border-color; + &::before, + &::after { + position: absolute; + z-index: 1; + left: 100%; + margin-left: calc(0px - ((#{$wizard-step-height} / 2) - 1px)); + content: " "; + border-style: solid; + border-color: transparent; + } + &::after { + top: 0; + border-width: calc((#{$wizard-step-height} / 2) - 1px); + border-left-color: $wizard-default-bg; + } + &::before { + top: -1px; + border-width: $wizard-step-height / 2; + border-left-color: $wizard-default-border-color; + } + + &:first-child { + margin-left: 0; + padding-left: 0; + border-top-left-radius: $border-radius-default; + border-bottom-left-radius: $border-radius-default; + } + + &:last-child { + border-top-right-radius: $border-radius-default; + border-bottom-right-radius: $border-radius-default; + &::before, + &::after { + display: none; + } + } +} + +//Wizard states +.wizard-circle .wizard-step-active { + .wizard-step-number { + color: $wizard-active-color; + border-color: $wizard-active-border-color; + background-color: $wizard-active-bg; + } + .wizard-step-text { + color: $wizard-active-step-color; + } +} +.wizard-circle .wizard-step-visited { + .wizard-step-number { + color: $wizard-visited-color; + border-color: $wizard-visited-border-color; + background-color: $wizard-visited-bg; + } + .wizard-step-text { + color: $wizard-visited-step-color; + } +} + +.wizard-arrow .wizard-step-active { + background-color: $wizard-active-bg; + .wizard-step-text { + color: $wizard-active-color; + } + &::after { + border-left-color: $wizard-active-bg; + } +} + +.wizard-arrow .wizard-step-visited { + .wizard-step-text { + color: $link-color; + } +} diff --git a/themesource/atlas_web_content/web/main.scss b/themesource/atlas_web_content/web/main.scss new file mode 100644 index 0000000..df04c6f --- /dev/null +++ b/themesource/atlas_web_content/web/main.scss @@ -0,0 +1,23 @@ +// Default variables +@import "../../atlas_core/web/variables"; +@import "../../../theme/web/custom-variables"; + +// Building blocks +@import "buildingblocks/alert"; +@import "buildingblocks/breadcrumb"; +@import "buildingblocks/card"; +@import "buildingblocks/chat"; +@import "buildingblocks/controlgroup"; +@import "buildingblocks/pageblocks"; +@import "buildingblocks/pageheader"; +@import "buildingblocks/heroheader"; +@import "buildingblocks/formblock"; +@import "buildingblocks/master-detail"; +@import "buildingblocks/userprofile"; +@import "buildingblocks/wizard"; + +// Page templates +@import "pagetemplates/login"; +@import "pagetemplates/list-tab"; +@import "pagetemplates/springboard"; +@import "pagetemplates/statuspage"; diff --git a/themesource/atlas_web_content/web/pagetemplates/_list-tab.scss b/themesource/atlas_web_content/web/pagetemplates/_list-tab.scss new file mode 100644 index 0000000..ff29615 --- /dev/null +++ b/themesource/atlas_web_content/web/pagetemplates/_list-tab.scss @@ -0,0 +1,29 @@ +.listtab-tabs.mx-tabcontainer { + background: $bg-color-secondary; + .mx-tabcontainer-tabs { + background: $brand-primary; + margin-bottom: 0; + li { + > a { + color: #fff; + opacity: 0.6; + &:hover, + &:focus { + color: #fff; + } + } + &.active { + > a { + opacity: 1; + color: #fff; + border-color: #fff; + &:hover, + &:focus { + color: #fff; + border-color: #fff; + } + } + } + } + } +} diff --git a/themesource/atlas_web_content/web/pagetemplates/_login.scss b/themesource/atlas_web_content/web/pagetemplates/_login.scss new file mode 100644 index 0000000..d3dcb55 --- /dev/null +++ b/themesource/atlas_web_content/web/pagetemplates/_login.scss @@ -0,0 +1,10 @@ +.login-formblock { + display: flex; + flex-direction: column; +} + +.login-form { + flex: 1; + display: flex; + flex-direction: column; +} diff --git a/themesource/atlas_web_content/web/pagetemplates/_springboard.scss b/themesource/atlas_web_content/web/pagetemplates/_springboard.scss new file mode 100644 index 0000000..eb30e1a --- /dev/null +++ b/themesource/atlas_web_content/web/pagetemplates/_springboard.scss @@ -0,0 +1,22 @@ +.springboard-grid { + display: flex; + flex-direction: column; + .row { + flex: 1; + .col { + display: flex; + } + } +} + +.springboard-header { + flex: 1; + display: flex; + flex-direction: column; +} + +.springboard-card { + flex: 1; + display: flex; + flex-direction: column; +} diff --git a/themesource/atlas_web_content/web/pagetemplates/_statuspage.scss b/themesource/atlas_web_content/web/pagetemplates/_statuspage.scss new file mode 100644 index 0000000..de73a6e --- /dev/null +++ b/themesource/atlas_web_content/web/pagetemplates/_statuspage.scss @@ -0,0 +1,19 @@ +.statuspage-section { + display: flex; + flex-direction: column; +} + +.statuspage-content { + flex: 1; +} + +.statuspage-icon { + color: #fff; +} + +.statuspage-subtitle { + opacity: 0.6; +} + +.statuspage-buttons { +} diff --git a/themesource/datawidgets/.version b/themesource/datawidgets/.version new file mode 100644 index 0000000..7f29fd8 --- /dev/null +++ b/themesource/datawidgets/.version @@ -0,0 +1 @@ +2.27.6 \ No newline at end of file diff --git a/themesource/datawidgets/LICENSE b/themesource/datawidgets/LICENSE new file mode 100644 index 0000000..51dfbf5 --- /dev/null +++ b/themesource/datawidgets/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2020 Mendix Technology BV + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/themesource/datawidgets/public/fonts/datagrid-filters.eot b/themesource/datawidgets/public/fonts/datagrid-filters.eot new file mode 100644 index 0000000..d69da4b Binary files /dev/null and b/themesource/datawidgets/public/fonts/datagrid-filters.eot differ diff --git a/themesource/datawidgets/public/fonts/datagrid-filters.svg b/themesource/datawidgets/public/fonts/datagrid-filters.svg new file mode 100644 index 0000000..d5a4452 --- /dev/null +++ b/themesource/datawidgets/public/fonts/datagrid-filters.svg @@ -0,0 +1,34 @@ + + + +Copyright (C) 2022 by original authors @ fontello.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/themesource/datawidgets/public/fonts/datagrid-filters.ttf b/themesource/datawidgets/public/fonts/datagrid-filters.ttf new file mode 100644 index 0000000..231b3b2 Binary files /dev/null and b/themesource/datawidgets/public/fonts/datagrid-filters.ttf differ diff --git a/themesource/datawidgets/public/fonts/datagrid-filters.woff b/themesource/datawidgets/public/fonts/datagrid-filters.woff new file mode 100644 index 0000000..0949bd8 Binary files /dev/null and b/themesource/datawidgets/public/fonts/datagrid-filters.woff differ diff --git a/themesource/datawidgets/public/fonts/datagrid-filters.woff2 b/themesource/datawidgets/public/fonts/datagrid-filters.woff2 new file mode 100644 index 0000000..e9c4c59 Binary files /dev/null and b/themesource/datawidgets/public/fonts/datagrid-filters.woff2 differ diff --git a/themesource/datawidgets/public/fonts/dropdown-sort.eot b/themesource/datawidgets/public/fonts/dropdown-sort.eot new file mode 100644 index 0000000..78d4575 Binary files /dev/null and b/themesource/datawidgets/public/fonts/dropdown-sort.eot differ diff --git a/themesource/datawidgets/public/fonts/dropdown-sort.svg b/themesource/datawidgets/public/fonts/dropdown-sort.svg new file mode 100644 index 0000000..8fe3e2e --- /dev/null +++ b/themesource/datawidgets/public/fonts/dropdown-sort.svg @@ -0,0 +1,14 @@ + + + +Copyright (C) 2021 by original authors @ fontello.com + + + + + + + + + + diff --git a/themesource/datawidgets/public/fonts/dropdown-sort.ttf b/themesource/datawidgets/public/fonts/dropdown-sort.ttf new file mode 100644 index 0000000..2dd032d Binary files /dev/null and b/themesource/datawidgets/public/fonts/dropdown-sort.ttf differ diff --git a/themesource/datawidgets/public/fonts/dropdown-sort.woff b/themesource/datawidgets/public/fonts/dropdown-sort.woff new file mode 100644 index 0000000..13cabc3 Binary files /dev/null and b/themesource/datawidgets/public/fonts/dropdown-sort.woff differ diff --git a/themesource/datawidgets/public/fonts/dropdown-sort.woff2 b/themesource/datawidgets/public/fonts/dropdown-sort.woff2 new file mode 100644 index 0000000..2515aa3 Binary files /dev/null and b/themesource/datawidgets/public/fonts/dropdown-sort.woff2 differ diff --git a/themesource/datawidgets/public/resources/dropdown-arrow.svg b/themesource/datawidgets/public/resources/dropdown-arrow.svg new file mode 100644 index 0000000..d289b3a --- /dev/null +++ b/themesource/datawidgets/public/resources/dropdown-arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/themesource/datawidgets/web/_datagrid-design-properties.scss b/themesource/datawidgets/web/_datagrid-design-properties.scss new file mode 100644 index 0000000..82d97c5 --- /dev/null +++ b/themesource/datawidgets/web/_datagrid-design-properties.scss @@ -0,0 +1,126 @@ +.table-compact { + .th { + padding: var(--spacing-small, $dg-spacing-small); + + .filter-selectors { + margin: 0 var(--spacing-small, $dg-spacing-small); + } + } + + &:has(.th .column-container .filter:not(:empty)) { + .th { + &.column-selector { + padding: var(--spacing-small, $dg-spacing-small) 0; + } + &.widget-datagrid-col-select { + padding-bottom: calc(var(--spacing-small, $dg-spacing-small) + 11px); + } + } + } + + .td { + padding: var(--spacing-small, $dg-spacing-small); + } + + .dropdown-container .dropdown-list { + margin: 0 var(--spacing-small, $dg-spacing-small); + } + + .column-selector { + /* Column content */ + .column-selector-content { + padding-right: var(--spacing-small, $dg-spacing-small); + } + } +} + +.table-striped { + .tr:nth-child(odd) > .td { + background-color: var(--grid-bg-striped, $dg-grid-bg-striped); + } +} + +.table-hover { + .tr:hover > .td { + background-color: var(--grid-bg-hover, $dg-grid-bg-hover); + } +} + +.table-bordered-all { + .th, + .td { + border-left-width: 1px; + border-left-style: solid; + + // Column for the visibility when a column can be hidden + &.column-selector { + border-left-width: 0; + } + + &:last-child, + &.column-selector { + border-right-width: 1px; + border-right-style: solid; + } + } + .th { + border-top-width: 1px; + border-top-style: solid; + } + + .td { + border-bottom-width: 1px; + border-bottom-style: solid; + + &.td-borders { + border-top-width: 1px; + } + } +} + +.table-bordered-horizontal { + .td { + border-bottom-width: 1px; + border-bottom-style: solid; + + &.td-borders { + border-top-width: 1px; + } + } +} + +.table-bordered-vertical { + .th, + .td { + border-left-width: 1px; + border-left-style: solid; + border-bottom-width: 0; + + // Column for the visibility when a column can be hidden + &.column-selector { + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 1px; + border-right-style: solid; + } + + &.td-borders { + border-top-width: 0; + } + } +} + +.table-bordered-none { + .td, + .th { + border: 0; + + &.column-selector { + border: 0; + } + + &.td-borders { + border: 0; + } + } +} diff --git a/themesource/datawidgets/web/_datagrid-dropdown-filter.scss b/themesource/datawidgets/web/_datagrid-dropdown-filter.scss new file mode 100644 index 0000000..b77663d --- /dev/null +++ b/themesource/datawidgets/web/_datagrid-dropdown-filter.scss @@ -0,0 +1,329 @@ +@mixin scroll-shadow { + background: + /* Shadow Cover TOP */ + linear-gradient(white 30%, rgba(255, 255, 255, 0)) center top, + /* Shadow Cover BOTTOM */ linear-gradient(rgba(255, 255, 255, 0), white 70%) center bottom, + /* Shadow TOP */ linear-gradient(0deg, rgba(255, 255, 255, 0.6), rgba(197, 197, 197, 0.6)) center top, + /* Shadow BOTTOM */ linear-gradient(180deg, rgba(255, 255, 255, 0.6), rgba(197, 197, 197, 0.6)) center bottom; + + background-repeat: no-repeat; + background-size: + 100% 70px, + 100% 70px, + 100% 35px, + 100% 35px; + background-attachment: local, local, scroll, scroll; +} + +@mixin btn-with-cross { + path { + stroke-width: 0; + } + &:hover { + color: var(--brand-primary, #264ae5); + path { + stroke-width: 1px; + } + } +} + +$root: ".widget-dropdown-filter"; + +#{$root} { + --wdf-outer-spacing: var(--dropdown-outer-spacing, 10px); + --wdf-spacing: var(--spacing-smaller, 4px); + --wdf-spacing-tiny: var(--spacing-smallest, 2px); + --wdf-popover-spacing: 0; + --wdf-popover-z-index: 50; + --wdf-popover-shadow: 0px 0px var(--wdf-outer-spacing) 0px var(--shadow-color-border, rgba(0, 0, 0, 0.2)); + --wdf-bd-radius: var(--dropdown-border-radius, 7px); + --wdf-menu-bg-color: var(--label-info-color, #ffffff); + --wdf-menu-max-height: var(--dropdown-menu-max-height, 320px); + --wdf-menu-item-padding: 6px 10px; + --wdf-highlighted-bg-color: var(--color-default-light, #f5f6f6); + --wdf-selected-bg-color: var(--color-primary-lighter, #e6eaff); + --wdf-button-spacing: 8px; + --wdf-color: var(--gray-dark, black); + --wdf-state-icon-size: 16px; + --wdf-toggle-width: calc(4px + var(--wdf-state-icon-size) + var(--wdf-button-spacing)); + --wdf-toggle-inline-end: var(--wdf-toggle-width); + --wdf-clear-margin: var(--wdf-toggle-inline-end); + --wdf-clear-inline-spacing: 6px; + --wdf-clear-border-width: 1px; + --wdf-clear-width: calc(14px + (var(--wdf-clear-inline-spacing) * 2) + var(--wdf-clear-border-width)); + --wdf-toggle-inline-end-clearable: calc(var(--wdf-clear-width) + var(--wdf-toggle-inline-end)); + --wdf-tag-padding: var(--wdf-spacing-tiny) var(--dropdown-outer-spacing, 10px); + + &.form-control { + display: flex; + min-width: 65px; + padding-block: var(--wdf-button-spacing); + padding-inline-end: var(--wdf-button-spacing); + padding-inline-start: var(--wdf-button-spacing); + } + + &-popover { + z-index: var(--wdf-popover-z-index); + box-shadow: var(--wdf-popover-shadow); + margin-top: var(--wdf-spacing); + border-radius: var(--wdf-bd-radius); + } + + &-menu-slot { + border-radius: inherit; + background-color: var(--wdf-menu-bg-color); + } + + &-menu { + @include scroll-shadow; + border-radius: inherit; + margin: 0; + padding: 0; + list-style-type: none; + max-height: var(--wdf-menu-max-height); + overflow-y: auto; + } + + &-menu-item { + display: flex; + flex-flow: row nowrap; + align-content: center; + align-items: center; + cursor: pointer; + user-select: none; + padding: var(--wdf-menu-item-padding); + height: fit-content; + overflow: hidden; + font-weight: normal; + color: var(--wdf-color); + + &:where([data-selected]) { + background-color: var(--wdf-selected-bg-color); + } + + &:where([data-highlighted]) { + background-color: var(--wdf-highlighted-bg-color); + } + } + + &-checkbox-slot { + display: flex; + margin-inline-end: var(--wdf-outer-spacing); + } + + &-input { + border: none; + flex: 1; + margin: 0; + min-width: 50px; + padding: 0; + } + + &-toggle, + &-clear { + background-color: transparent; + border: none; + } + + &-input, + &-toggle { + color: var(--wdf-color); + font-weight: normal; + overflow: hidden; + text-align: start; + text-overflow: ellipsis; + white-space: nowrap; + } + + &-clear { + @include btn-with-cross; + align-items: center; + align-self: center; + display: flex; + flex-shrink: 0; + justify-self: end; + margin-inline-end: var(--wdf-spacing); + padding: 3px 6px; + position: relative; + + &:has(+ #{$root}-state-icon), + &:has(+ #{$root}-toggle) { + border-inline-end: 1px solid var(--gray, #787d87); + } + } + + &-state-icon { + transition: transform 0.2s; + :where(#{$root}[data-expanded="true"]) & { + transform: rotate(180deg); + } + } + + &-input-container { + align-items: center; + display: flex; + flex: 1; + flex-flow: row wrap; + margin: 0; + min-width: 0; + overflow: hidden; + padding: 0; + position: relative; + } + + &-remove-icon { + cursor: pointer; + display: flex; + @include btn-with-cross; + } + + &-separator { + position: absolute; + margin-inline-end: var(--wdf-clear-margin); + background-color: var(--gray, #787d87); + justify-self: end; + inset-block: var(--wdf-button-spacing); + width: 1px; + } + + &-state-icon, + &-toggle { + align-items: center; + display: flex; + flex-shrink: 0; + justify-content: center; + padding-inline-end: 0; + padding-inline-start: 0; + } +} + +:where([data-highlighted]) #{$root}-checkbox:not(:checked)::after { + content: ""; + border-color: var(--form-input-bg-hover, #e7e7e9); +} + +/* Select variant */ +:where(#{$root}.variant-select) { + #{$root}-toggle { + display: block; + flex: 1 1 0; + justify-content: flex-start; + min-width: 0; + } + + #{$root}-state-icon { + align-self: center; + box-sizing: content-box; + justify-self: end; + pointer-events: none; + } + + #{$root}-input-container { + border: none; + background-color: transparent; + white-space: nowrap; + width: 100%; + } + + #{$root}-controls { + display: flex; + flex-shrink: 0; + align-items: center; + } +} + +:where(#{$root}.variant-select[data-empty]) { + --wdf-input-placeholder-color: rgb(117, 117, 117); + #{$root}-toggle { + color: var(--wdf-input-placeholder-color); + } +} + +/* Combobox variant */ +:where(#{$root}.variant-combobox) { + #{$root}-input { + border-radius: inherit; + padding-inline-start: 0; + padding-inline-end: 0; + } +} + +/* Tag Picker variant */ +:where(#{$root}.variant-tag-picker) { + #{$root}-selected-item { + align-items: center; + background-color: var(--color-primary-lighter, #e6eaff); + border-radius: 26px; + color: #000; + display: inline-flex; + flex-flow: row nowrap; + font-size: var(--font-size-small, 12px); + gap: 8px; + justify-content: center; + line-height: 1.334; + padding: var(--wdf-tag-padding); + &:focus-visible { + outline: var(--brand-primary, #264ae5) auto 1px; + } + } + + #{$root}-input { + flex-basis: 0; + min-width: 50px; + width: initial; + } + + #{$root}-clear { + border-color: transparent; + } +} + +/* Tag Picker variant text */ +:where(#{$root}.variant-tag-picker-text) { + #{$root}-selected-item { + background-color: transparent; + border-radius: 2px; + color: var(--wdf-color); + display: block; + overflow: hidden; + position: absolute; + bottom: 0; + left: 0; + right: 0; + top: 0; + text-overflow: ellipsis; + white-space: nowrap; + z-index: 0; + + &-hidden { + display: none; + } + + &:focus-visible { + outline: var(--brand-primary, #264ae5) solid 1px; + outline-offset: 2px; + } + } + + #{$root}-remove-icon { + padding: var(--wdf-spacing-tiny); + border-radius: 50%; + + path { + stroke-width: 1px; + } + } + + #{$root}-input { + background-color: transparent; + min-width: 75px; + opacity: 0; + width: 100%; + z-index: 1; + + &:focus, + &:not(:has(+ #{$root}-selected-item)) { + opacity: 1; + } + } +} diff --git a/themesource/datawidgets/web/_datagrid-filters.scss b/themesource/datawidgets/web/_datagrid-filters.scss new file mode 100644 index 0000000..e2fcb46 --- /dev/null +++ b/themesource/datawidgets/web/_datagrid-filters.scss @@ -0,0 +1,335 @@ +$dg-hover-color: #f8f8f8; +$dg-background-color: #fff; +$dg-selected-color: #dadcde; +$dg-border-color: #ced0d3; +$dg-spacing-small: 8px; +$arrow: "resources/dropdown-arrow.svg"; +$dg-item-min-height: 32px; + +@import "date-picker"; + +@font-face { + font-family: "datagrid-filters"; + src: url("./fonts/datagrid-filters.eot"); + src: + url("./fonts/datagrid-filters.eot") format("embedded-opentype"), + url("./fonts/datagrid-filters.woff2") format("woff2"), + url("./fonts/datagrid-filters.woff") format("woff"), + url("./fonts/datagrid-filters.ttf") format("truetype"), + url("./fonts/datagrid-filters.svg") format("svg"); + font-weight: normal; + font-style: normal; +} + +.filter-container { + display: flex; + flex-direction: row; + flex-grow: 1; + position: relative; + + .filter-input { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + .btn-calendar { + margin-left: 5px; //Review in atlas, the current date picker is also 5px + .button-icon { + width: 18px; + height: 18px; + } + } +} + +.filter-selector { + padding-left: 0; + padding-right: 0; + + .filter-selector-content { + height: 100%; + align-self: flex-end; + + .filter-selector-button { + padding: 8px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-right: none; + height: 100%; + + &:before { + justify-content: center; + width: 20px; + height: 20px; + padding-left: 4px; /* The font has spaces in the right side, so to align in the middle we need this */ + } + } + } +} + +.filter-selectors { + position: absolute; + width: max-content; + left: 0; + padding: 0; + margin: 0; + background: var(--bg-color-secondary, $dg-background-color); + z-index: 51; + border-radius: 8px; + list-style-type: none; + box-shadow: + 0 2px 20px 1px rgba(5, 15, 129, 0.05), + 0 2px 16px 0 rgba(33, 43, 54, 0.08); + overflow: hidden; + + .filter-listitem, + li { + display: flex; + align-items: center; + font-weight: normal; + line-height: 32px; + cursor: pointer; + + .filter-label { + padding-right: 8px; + } + + &.filter-selected { + background-color: var(--gray-lighter, $dg-hover-color); + color: var(--brand-primary, $dg-brand-primary); + } + + &:hover, + &.filter-highlighted { + background-color: var(--gray-lighter, $dg-hover-color); + } + } +} + +.dropdown-list { + list-style-type: none; + padding: 0; + margin-bottom: 0; + + li { + display: flex; + align-items: center; + font-weight: normal; + min-height: var(--spacing-larger, $dg-item-min-height); + cursor: pointer; + padding: 0 var(--spacing-small, $dg-spacing-small); + + .filter-label { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + &.filter-selected { + background-color: var(--gray-lighter, $dg-hover-color); + color: var(--brand-primary, $dg-brand-primary); + } + + &:hover, + &:focus { + background-color: var(--gray-lighter, $dg-hover-color); + } + + label { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + margin: 8px; + font-weight: normal; + width: calc(100% - 32px); + } + } +} + +:not(.dropdown-content) > .dropdown-list { + background: var(--bg-color-secondary, $dg-background-color); + border-radius: 8px; + box-shadow: + 0 2px 20px 1px rgba(5, 15, 129, 0.05), + 0 2px 16px 0 rgba(33, 43, 54, 0.08); + max-height: 40vh; + z-index: 102; +} + +.dropdown-content { + background: var(--bg-color-secondary, $dg-background-color); + border-radius: 8px; + box-shadow: + 0 2px 20px 1px rgba(5, 15, 129, 0.05), + 0 2px 16px 0 rgba(33, 43, 54, 0.08); + max-height: 40vh; + z-index: 140; +} + +.dropdown-footer { + position: sticky; + bottom: 0; + background: inherit; + z-index: 50; +} + +.dropdown-footer-item { + display: flex; + flex-flow: row nowrap; + align-items: center; + padding: 0 var(--spacing-small, $dg-spacing-small); + min-height: 40px; +} + +.dropdown-loading { + flex-grow: 1; + text-align: center; +} + +.dropdown-container { + flex: 1; + position: relative; + + .dropdown-triggerer { + caret-color: transparent; + cursor: pointer; + + background-image: url($arrow); + background-repeat: no-repeat; + background-position: center; + background-position-x: right; + background-position-y: center; + background-origin: content-box; + text-overflow: ellipsis; + width: 100%; + } + + .dropdown-list { + left: 0; + margin: 0 var(--spacing-small, $dg-spacing-small); + padding: 0; + background: var(--bg-color-secondary, $dg-background-color); + z-index: 102; + border-radius: 8px; + list-style-type: none; + box-shadow: + 0 2px 20px 1px rgba(5, 15, 129, 0.05), + 0 2px 16px 0 rgba(33, 43, 54, 0.08); + overflow-x: hidden; + max-height: 40vh; + + li { + display: flex; + align-items: center; + font-weight: normal; + min-height: var(--spacing-larger, $dg-item-min-height); + cursor: pointer; + padding: 0 var(--spacing-small, $dg-spacing-small); + + .filter-label { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + &.filter-selected { + background-color: var(--gray-lighter, $dg-hover-color); + color: var(--brand-primary, $dg-brand-primary); + } + + &:hover, + &:focus { + background-color: var(--gray-lighter, $dg-hover-color); + } + + label { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + margin: 8px; + font-weight: normal; + width: calc(100% - 32px); + } + } + } +} + +/** +Icons + */ + +.filter-icon { + display: flex; + align-items: center; + justify-content: center; + height: 20px; + width: 20px; + margin: 6px 8px; + font-family: "datagrid-filters"; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.button-icon { + display: flex; + align-items: center; + justify-content: center; + font-family: "datagrid-filters"; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.contains:before { + content: "\e808"; +} +.endsWith:before { + content: "\e806"; +} +.equal:before { + content: "\e809"; +} +.greater:before { + content: "\e80a"; +} +.greaterEqual:before { + content: "\e80b"; +} +.notEqual:before { + content: "\e80c"; +} +.smaller:before { + content: "\e80d"; +} +.smallerEqual:before { + content: "\e80e"; +} +.startsWith:before { + content: "\e807"; +} +.between:before { + content: "\e900"; +} +.empty:before { + content: "\e901"; +} +.notEmpty:before { + content: "\e903"; +} + +/** +* Specific styles for filters inside Data Grid 2 +**/ +div:not(.table-compact) > .table { + .th { + .filter-selector { + .filter-selectors { + margin: 0; + } + } + + .dropdown-container { + .dropdown-list { + margin: 0; + } + } + } +} diff --git a/themesource/datawidgets/web/_datagrid.scss b/themesource/datawidgets/web/_datagrid.scss new file mode 100644 index 0000000..c40d78d --- /dev/null +++ b/themesource/datawidgets/web/_datagrid.scss @@ -0,0 +1,554 @@ +@import "export-alert"; +@import "export-progress"; +@import "pseudo-modal"; + +$dg-background-color: #fff; +$dg-icon-color: #606671; +$dg-icon-size: 14px; +$dg-pagination-button-color: #3b4251; +$dg-pagination-caption-color: #0a1325; +$dragging-color-effect: rgba(10, 19, 37, 0.8); +$dg-dragging-effect-size: 4px; + +$dg-grid-bg-striped: #fafafb; +$dg-grid-bg-hover: #f5f6f6; +$dg-spacing-small: 8px; +$dg-spacing-medium: 16px; +$dg-spacing-large: 24px; +$dg-grid-border-color: #ced0d3; + +$dg-brand-primary: #264ae5; +$dg-brand-light: #e6eaff; +$dg-grid-selected-row-background: $dg-brand-light; +$dg-skeleton-background: linear-gradient(90deg, rgba(194, 194, 194, 0.2) 0%, #d2d2d2 100%); + +$root: ".widget-datagrid"; + +.table { + position: relative; + border-width: 0; + background-color: var(--bg-color-secondary, $dg-background-color); + + /* Pseudo Row, to target this object please use .tr > .td or .tr > div */ + .tr { + display: contents; + } + + /* Column Header */ + @at-root { + :where(.widget-datagrid-grid .th) { + display: flex; + align-items: flex-start; + background-color: var(--bg-color-secondary, $dg-background-color); + border-width: 0; + border-color: var(--grid-border-color, $dg-grid-border-color); + padding: var(--spacing-medium, $dg-spacing-medium); + top: 0; + min-width: 0; + position: relative; + } + } + + .th { + &.dragging { + opacity: 0.5; + &.dragging-over-self { + opacity: 0.8; + } + } + + &.drop-after:after, + &.drop-before:after { + content: ""; + position: absolute; + top: 0; + height: 100%; + width: var(--spacing-smaller, $dg-dragging-effect-size); + background-color: $dragging-color-effect; + + z-index: 1; + } + + &.drop-before { + &:after { + left: 0; + } + &:not(:first-child):after { + transform: translateX(-50%); + } + } + + &.drop-after { + &:after { + right: 0; + } + &:not(:last-child):after { + transform: translateX(50%); + } + } + + /* Clickable column header (Sortable) */ + .clickable { + cursor: pointer; + } + + /* Column resizer when column is resizable */ + .column-resizer { + padding: 0 4px; + align-self: stretch; + cursor: col-resize; + margin-right: -12px; + + &:hover .column-resizer-bar { + background-color: var(--brand-primary, $dg-brand-primary); + } + &:active .column-resizer-bar { + background-color: var(--brand-primary, $dg-brand-primary); + } + + .column-resizer-bar { + height: 100%; + width: 4px; + } + } + + /* Content of the column header */ + .column-container { + display: flex; + flex-direction: column; + flex-grow: 1; + align-self: stretch; + min-width: 0; + + &:not(:has(.filter)) { + .column-header { + height: 100%; + } + } + } + + /* Header text */ + .column-header { + margin: 1px 1px calc((-1 * var(--spacing-smaller, $dg-dragging-effect-size)) + 2px); + display: flex; + align-items: baseline; + font-weight: 600; + + span { + min-width: 0; + flex-grow: 1; + text-overflow: ellipsis; + overflow: hidden; + text-wrap: nowrap; + align-self: center; + } + + svg { + margin-left: 8px; + flex: 0 0 var(--btn-font-size, $dg-icon-size); + color: var(--gray-dark, $dg-icon-color); + height: var(--btn-font-size, $dg-icon-size); + align-self: center; + } + + &:focus:not(:focus-visible) { + outline: none; + } + + &:focus-visible { + outline: 1px solid var(--brand-primary, $dg-brand-primary); + } + } + + /* Header filter */ + .filter { + display: flex; + margin-top: 4px; + > .form-group { + margin-bottom: 0; + } + } + } + + /* If Column Header has filter */ + &:has(.th .column-container .filter:not(:empty)) { + .th { + &.column-selector { + padding: var(--spacing-medium, $dg-spacing-medium) 0; + } + /*adjust filter-selector icon to be mid-bottom aligned */ + .column-selector-content { + align-self: flex-end; + margin-bottom: 3px; + } + + /*adjust checkbox toggle to be mid-bottom aligned */ + &.widget-datagrid-col-select { + align-items: flex-end; + padding-bottom: calc(var(--spacing-medium, $dg-spacing-medium) + 11px); + } + } + } + + /* Column selector for hidable columns */ + .column-selector { + padding: 0; + + /* Column content */ + .column-selector-content { + align-self: center; + padding-right: var(--spacing-medium, $dg-spacing-medium); + /* Button containing the eye icon */ + .column-selector-button { + $icon-margin: 7px; + /* 2px as path of icon's path is a bit bigger than outer svg */ + $icon-slack-size: 2px; + + padding: 0; + margin: 0; + + height: calc(var(--btn-font-size, $dg-icon-size) + $icon-margin * 2 + $icon-slack-size); + width: calc(var(--btn-font-size, $dg-icon-size) + $icon-margin * 2 + $icon-slack-size); + + svg { + margin: $icon-margin; + } + } + + /* List of columns to select */ + .column-selectors { + position: absolute; + right: 0; + margin: 8px; + padding: 0 16px; + background: var(--bg-color-secondary, $dg-background-color); + z-index: 102; + overflow-y: auto; + width: fit-content; + max-width: 500px; + border-radius: 3px; + border: 1px solid transparent; + list-style-type: none; + -webkit-box-shadow: 0 2px 20px 1px rgba(32, 43, 54, 0.08); + -moz-box-shadow: 0 2px 20px 1px rgba(32, 43, 54, 0.08); + box-shadow: 0 2px 20px 1px rgba(32, 43, 54, 0.08); + + li { + display: flex; + align-items: center; + + label { + margin: 8px; + font-weight: normal; + white-space: nowrap; + overflow-x: hidden; + text-overflow: ellipsis; + } + } + } + } + } + + /* Column content */ + .td { + display: flex; + justify-content: space-between; + align-items: center; + padding: var(--spacing-medium, $dg-spacing-medium); + border-style: solid; + border-width: 0; + border-color: var(--grid-border-color, $dg-grid-border-color); + border-bottom-width: 1px; + min-width: 0; + + &.td-borders { + border-top-width: 1px; + border-top-style: solid; + } + + &:focus-visible { + outline-width: 1px; + outline-style: solid; + outline-offset: -1px; + outline-color: var(--brand-primary, $dg-brand-primary); + } + + &.clickable { + cursor: pointer; + } + + > .td-text { + white-space: nowrap; + word-break: break-word; + text-overflow: ellipsis; + overflow: hidden; + } + + > .td-custom-content { + flex-grow: 1; + } + + > .empty-placeholder { + width: 100%; + } + + &.wrap-text { + min-height: 0; + min-width: 0; + + > .td-text, + > .mx-text { + white-space: normal; + } + } + } + + & *:focus { + outline: 0; + } + + .align-column-left { + justify-content: flex-start; + } + + .align-column-center { + justify-content: center; + } + + .align-column-right { + justify-content: flex-end; + } +} + +:where(.table .th .filter input:not([type="checkbox"])) { + font-weight: normal; + flex-grow: 1; + width: 100%; +} + +.pagination-bar { + display: flex; + justify-content: flex-end; + white-space: nowrap; + align-items: baseline; + margin: 16px; + color: $dg-pagination-caption-color; + + .paging-status { + padding: 0 8px 8px; + } + + .pagination-button { + padding: 6px; + color: var(--gray-darker, $dg-pagination-button-color); + border-color: transparent; + background-color: transparent; + + &:hover { + color: var(--brand-primary, $dg-brand-primary); + border-color: transparent; + background-color: transparent; + } + + &:disabled { + border-color: transparent; + background-color: transparent; + } + + &:focus:not(:focus-visible) { + outline: none; + } + + &:focus-visible { + outline: 1px solid var(--brand-primary, $dg-brand-primary); + } + } + .pagination-icon { + position: relative; + top: 4px; + display: inline-block; + width: 20px; + height: 20px; + } +} + +/* Column selector for hidable columns outside DG context */ +/* List of columns to select */ +.column-selectors { + position: absolute; + right: 0; + margin: 8px 0; + padding: 0 16px; + background: var(--bg-color-secondary, $dg-background-color); + z-index: 102; + overflow-y: auto; + width: fit-content; + max-width: 500px; + border-radius: 3px; + border: 1px solid transparent; + list-style-type: none; + -webkit-box-shadow: 0 2px 20px 1px rgba(32, 43, 54, 0.08); + -moz-box-shadow: 0 2px 20px 1px rgba(32, 43, 54, 0.08); + box-shadow: 0 2px 20px 1px rgba(32, 43, 54, 0.08); + + li { + display: flex; + align-items: center; + cursor: pointer; + + label { + margin: 8px; + font-weight: normal; + white-space: nowrap; + overflow-x: hidden; + text-overflow: ellipsis; + } + } +} + +#{$root} { + position: relative; + + &-grid { + display: grid !important; + } + + &-grid-head { + display: contents; + } + + &-grid-body { + display: contents; + } + + &.widget-datagrid-selection-method-click { + .tr.tr-selected .td { + background-color: $dg-grid-selected-row-background; + } + } + + .th.widget-datagrid-col-select, + .td.widget-datagrid-col-select { + align-items: center; + } + + &-exporting { + .widget-datagrid-top-bar, + .widget-datagrid-header, + .widget-datagrid-content, + .widget-datagrid-footer { + visibility: hidden; + + * { + transition: unset; + } + } + } + + &-col-select input:focus-visible { + outline-offset: 0; + } + + &-loader-container { + align-items: center; + background-color: rgba(255, 255, 255, 1); + display: flex; + height: 400px; + justify-content: center; + grid-column: 1/-1; + } + + &-skeleton, + &-spinner { + align-content: center; + align-items: center; + display: flex; + flex-direction: row; + flex-wrap: nowrap; + overflow: hidden; + } + + &-skeleton { + padding: 2px var(--dropdown-outer-padding, 0); + overflow: hidden; + flex: 1; + + &-loader { + animation: skeleton-loading 1s linear infinite alternate; + background: var(--dg-skeleton-background, $dg-skeleton-background); + background-size: 300% 100%; + border-radius: 4px; + height: 16px; + width: 100%; + min-width: 32px; + max-width: 148px; + + &-small { + margin-right: 8px; + width: 16px; + } + } + } + + &-spinner { + justify-content: center; + width: 100%; + + &-margin { + margin: 52px 0; + } + + &-loader { + --widget-combobox-spinner-loader: conic-gradient(#0000 10%, #000), linear-gradient(#000 0 0) content-box; + animation: rotate 1s infinite linear; + aspect-ratio: 1; + background: var(--brand-primary, $dg-brand-primary); + border-radius: 50%; + mask: var(--widget-combobox-spinner-loader); + mask-composite: subtract; + + &-large { + height: 48px; + padding: 7px; + width: 48px; + } + &-medium { + height: 24px; + padding: 3.5px; + width: 24px; + } + + &-small { + height: 16px; + padding: 2.3px; + width: 16px; + } + } + } +} + +.widget-datagrid .widget-datagrid-load-more { + display: block !important; + margin: 0 auto; +} + +:where(.widget-datagrid-grid.infinite-loading) { + overflow-y: auto; +} + +:where(.infinite-loading .widget-datagrid-grid-head .th) { + position: sticky; + z-index: 1; +} + +@keyframes skeleton-loading { + 0% { + background-position: right; + } +} + +@keyframes rotate { + to { + transform: rotate(1turn); + } +} diff --git a/themesource/datawidgets/web/_date-picker.scss b/themesource/datawidgets/web/_date-picker.scss new file mode 100644 index 0000000..fb424da --- /dev/null +++ b/themesource/datawidgets/web/_date-picker.scss @@ -0,0 +1,153 @@ +/** + Classes for React Date-Picker font-unit and color adjustments +*/ +$dg-day-color: #555; +$dg-day-range-color: #000; +$dg-day-range-background: #eaeaea; +$dg-outside-month-color: #c8c8c8; +$dg-text-color: #fff; +$dg-border-color: #d7d7d7; + +.react-datepicker { + font-size: 1em; + border: 1px solid $dg-border-color; +} + +.react-datepicker-wrapper { + display: flex; + flex: 1; +} + +.react-datepicker__input-container { + display: flex; + flex: 1; +} + +.react-datepicker__header { + padding-top: 0.8em; + background-color: var(--bg-color, $dg-background-color); + border-color: transparent; +} + +.react-datepicker__header__dropdown { + margin: 8px 0 4px 0; //4px due to the header contains 4px already +} + +.react-datepicker__year-dropdown-container { + margin-left: 8px; +} + +.react-datepicker__month { + margin: 4px 4px 8px 4px; //4px due to the rows already contains 4px each day +} + +.react-datepicker__month-container { + font-weight: normal; +} + +.react-datepicker__day-name, +.react-datepicker__day { + width: 2em; + line-height: 2em; + margin: 4px; +} + +.react-datepicker__day, +.react-datepicker__day--in-range { + color: $dg-day-color; + border-radius: 50%; + + &:hover { + border-radius: 50%; + color: var(--brand-primary, $dg-brand-primary); + background-color: var(--gray-ligter, $dg-hover-color); + } +} + +.react-datepicker__day-name { + color: var(--brand-primary, $dg-brand-primary); + font-weight: bold; +} + +.react-datepicker__day--outside-month { + color: $dg-outside-month-color; +} + +.react-datepicker__day--today:not(.react-datepicker__day--in-range), +.react-datepicker__day--keyboard-selected { + color: var(--brand-primary, $dg-brand-primary); + background-color: var(--gray-ligter, $dg-hover-color); +} + +.react-datepicker__month-select:focus-visible, +.react-datepicker__year-select:focus-visible, +.react-datepicker__navigation:focus-visible, +.react-datepicker__day.react-datepicker__day--keyboard-selected { + outline: 1px solid var(--form-input-border-focus-color); +} + +.react-datepicker__day--selected, +.react-datepicker__day--range-start, +.react-datepicker__day--range-end, +.react-datepicker__day--in-selecting-range.react-datepicker__day--selecting-range-start { + background-color: var(--brand-primary, $dg-brand-primary); + color: var(--header-text-color, $dg-text-color); + + &:hover { + border-radius: 50%; + background-color: var(--brand-primary, $dg-brand-primary); + color: var(--header-text-color, $dg-text-color); + } +} + +.react-datepicker__day--in-range:not(.react-datepicker__day--range-start, .react-datepicker__day--range-end), +.react-datepicker__day--in-selecting-range:not( + .react-datepicker__day--in-range, + .react-datepicker__month-text--in-range, + .react-datepicker__quarter-text--in-range, + .react-datepicker__year-text--in-range, + .react-datepicker__day--selecting-range-start + ) { + background-color: $dg-day-range-background; + color: $dg-day-range-color; + + &:hover { + background-color: var(--brand-primary, $dg-brand-primary); + color: var(--header-text-color, $dg-text-color); + } +} + +button.react-datepicker__close-icon::after { + background-color: var(--brand-primary, $dg-brand-primary); +} + +.react-datepicker__current-month { + font-size: 1em; + font-weight: normal; +} + +.react-datepicker__navigation { + top: 1em; + line-height: 1.7em; + border: 0.45em solid transparent; +} + +.react-datepicker__navigation--previous { + border-right-color: #ccc; + left: 8px; + border: none; +} + +.react-datepicker__navigation--next { + border-left-color: #ccc; + right: 8px; + border: none; +} + +/** +Space between the fields and the popup + */ +.react-datepicker-popper[data-placement^="bottom"] { + margin-top: unset; + padding-top: 0; +} diff --git a/themesource/datawidgets/web/_drop-down-sort.scss b/themesource/datawidgets/web/_drop-down-sort.scss new file mode 100644 index 0000000..8580668 --- /dev/null +++ b/themesource/datawidgets/web/_drop-down-sort.scss @@ -0,0 +1,49 @@ +/* ========================================================================== + Drop-down sort + + Override styles of Drop-down sort widget +========================================================================== */ +@font-face { + font-family: "dropdown-sort"; + src: url("./fonts/dropdown-sort.eot?46260688"); + src: + url("./fonts/dropdown-sort.eot?46260688#iefix") format("embedded-opentype"), + url("./fonts/dropdown-sort.woff2?46260688") format("woff2"), + url("./fonts/dropdown-sort.woff?46260688") format("woff"), + url("./fonts/dropdown-sort.ttf?46260688") format("truetype"), + url("./fonts/dropdown-sort.svg?46260688#dropdown-sort") format("svg"); + font-weight: normal; + font-style: normal; +} + +.dropdown-triggerer-wrapper { + display: flex; + + .dropdown-triggerer { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + border-right-width: 0; + } + + .btn-sort { + padding: var(--spacing-small, $dg-spacing-small); + border-bottom-left-radius: 0; + border-top-left-radius: 0; + + font-family: "dropdown-sort"; + font-style: normal; + font-weight: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + &.icon-asc:before { + content: "\e802"; + margin: 2px; + } + + &.icon-desc:before { + content: "\e803"; + margin: 2px; + } + } +} diff --git a/themesource/datawidgets/web/_export-alert.scss b/themesource/datawidgets/web/_export-alert.scss new file mode 100644 index 0000000..b94b48f --- /dev/null +++ b/themesource/datawidgets/web/_export-alert.scss @@ -0,0 +1,45 @@ +$brand-primary: #264ae5 !default; + +.widget-datagrid-export-alert { + background-color: rgba(255, 255, 255, 1); + border-radius: 4px; + box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25); + display: flex; + flex-direction: column; + padding: 54px; + min-width: 200px; + max-width: 378px; + width: 100%; + position: relative; + + &-cancel { + position: absolute; + top: 10px; + right: 10px; + + // TODO: Hover styles + &.btn { + display: flex; + padding: 4px; + &:focus-visible { + outline: 1px solid $brand-primary; + } + } + } + + &-message { + color: rgba(38, 74, 229, 1); + font-size: 18px; + font-weight: 700; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + } + + &-failed { + .widget-datagrid-export-progress-indicator { + background-color: rgba(227, 63, 78, 1); + } + } +} diff --git a/themesource/datawidgets/web/_export-progress.scss b/themesource/datawidgets/web/_export-progress.scss new file mode 100644 index 0000000..cb54a0b --- /dev/null +++ b/themesource/datawidgets/web/_export-progress.scss @@ -0,0 +1,37 @@ +.widget-datagrid-export-progress { + align-items: center; + background-color: rgba(240, 241, 242, 1); + border-radius: 4px; + display: flex; + height: 18px; + overflow: hidden; + position: relative; + transform: translateZ(0); + width: 100%; + + &-indicator { + background-color: rgba(38, 74, 229, 1); + border-radius: 4px; + height: 17px; + transition: transform 100ms cubic-bezier(0.65, 0, 0.35, 1); + width: 100%; + } + + &-indicator-indeterminate { + animation: indeterminateAnimation 1s infinite linear; + transform-origin: 0% 50%; + transition: none; + } +} + +@keyframes indeterminateAnimation { + 0% { + transform: translateX(0) scaleX(0); + } + 40% { + transform: translateX(0) scaleX(0.4); + } + 100% { + transform: translateX(100%) scaleX(0.5); + } +} diff --git a/themesource/datawidgets/web/_gallery-design-properties.scss b/themesource/datawidgets/web/_gallery-design-properties.scss new file mode 100644 index 0000000..0fc17c2 --- /dev/null +++ b/themesource/datawidgets/web/_gallery-design-properties.scss @@ -0,0 +1,104 @@ +/* ========================================================================== + Gallery default + +//== Design Properties +//## Helper classes to change the look and feel of the component +========================================================================== */ +// All borders +.widget-gallery-bordered-all { + .widget-gallery-item { + border: 1px solid var(--grid-border-color, $dg-grid-border-color); + } +} + +// Vertical borders +.widget-gallery-bordered-vertical { + .widget-gallery-item { + border-color: var(--grid-border-color, $dg-grid-border-color); + border-style: solid; + border-width: 0; + border-left-width: 1px; + border-right-width: 1px; + } +} + +// Horizontal orders +.widget-gallery-bordered-horizontal { + .widget-gallery-item { + border-color: var(--grid-border-color, $dg-grid-border-color); + border-style: solid; + border-width: 0; + border-top-width: 1px; + border-bottom-width: 1px; + } +} + +// Hover styles +.widget-gallery-hover { + .widget-gallery-items { + .widget-gallery-item:hover { + background-color: var(--grid-bg-hover, $dg-grid-bg-hover); + } + } +} + +// Striped styles +.widget-gallery-striped { + .widget-gallery-item:nth-child(odd) { + background-color: var(--grid-bg-striped, $dg-grid-bg-striped); + } + .widget-gallery-item:nth-child(even) { + background-color: #fff; + } +} + +// Grid spacing none +.widget-gallery.widget-gallery-gridgap-none { + .widget-gallery-items { + gap: 0; + } +} + +// Grid spacing small +.widget-gallery.widget-gallery-gridgap-small { + .widget-gallery-items { + gap: var(--spacing-small, $dg-spacing-small); + } +} + +// Grid spacing medium +.widget-gallery.widget-gallery-gridgap-medium { + .widget-gallery-items { + gap: var(--spacing-medium, $dg-spacing-medium); + } +} + +// Grid spacing large +.widget-gallery.widget-gallery-gridgap-large { + .widget-gallery-items { + gap: var(--spacing-large, $dg-spacing-large); + } +} + +// Pagination left +.widget-gallery-pagination-left { + .widget-gallery-pagination { + .pagination-bar { + justify-content: flex-start; + } + } +} + +// Pagination center +.widget-gallery-pagination-center { + .widget-gallery-pagination { + .pagination-bar { + justify-content: center; + } + } +} + +.widget-gallery-disable-selected-items-highlight { + // placeholder + // this class in needed to disable standard styles of highlighted items +} diff --git a/themesource/datawidgets/web/_gallery.scss b/themesource/datawidgets/web/_gallery.scss new file mode 100644 index 0000000..bc95e66 --- /dev/null +++ b/themesource/datawidgets/web/_gallery.scss @@ -0,0 +1,90 @@ +/* ========================================================================== + Gallery + + Override styles of Gallery widget +========================================================================== */ +$gallery-screen-lg: $screen-lg; +$gallery-screen-md: $screen-md; + +@mixin grid-items($number, $suffix) { + @for $i from 1 through $number { + &.widget-gallery-#{$suffix}-#{$i} { + grid-template-columns: repeat($i, minmax(0, 1fr)); + } + } +} + +@mixin grid-span($number, $type) { + @for $i from 1 through $number { + .widget-gallery-#{$type}-span-#{$i} { + grid-#{$type}: span $i; + } + } +} + +.widget-gallery { + .widget-gallery-items { + display: grid; + grid-gap: var(--spacing-small, $dg-spacing-small); + + /* + Desktop widths + */ + @media screen and (min-width: $gallery-screen-lg) { + @include grid-items(12, "lg"); + } + + /* + Tablet widths + */ + @media screen and (min-width: $gallery-screen-md) and (max-width: ($gallery-screen-lg - 1px)) { + @include grid-items(12, "md"); + } + + /* + Phone widths + */ + @media screen and (max-width: ($gallery-screen-md - 1)) { + @include grid-items(12, "sm"); + } + } + + .widget-gallery-clickable { + cursor: pointer; + + &:focus:not(:focus-visible) { + outline: none; + } + + &:focus-visible { + outline: 1px solid var(--brand-primary, $dg-brand-primary); + outline-offset: -1px; + } + } + + &:not(.widget-gallery-disable-selected-items-highlight) { + .widget-gallery-item.widget-gallery-clickable.widget-gallery-selected { + background: $dg-brand-light; + } + } + + .infinite-loading { + overflow: auto; + } + + .widget-gallery-filter, + .widget-gallery-empty, + .widget-gallery-pagination { + flex: 1; + } + + /** + Helper classes + */ + @include grid-span(12, "column"); + @include grid-span(12, "row"); +} + +.widget-gallery-item-button { + width: inherit; +} diff --git a/themesource/datawidgets/web/_pseudo-modal.scss b/themesource/datawidgets/web/_pseudo-modal.scss new file mode 100644 index 0000000..54c9190 --- /dev/null +++ b/themesource/datawidgets/web/_pseudo-modal.scss @@ -0,0 +1,33 @@ +.widget-datagrid-modal { + &-overlay { + animation: fade-in 300ms cubic-bezier(0.16, 1, 0.3, 1); + background-color: rgba(128, 128, 128, 0.5); + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 50; + } + + &-main { + position: absolute; + top: 0; + left: 0; + right: 0; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + z-index: 55; + } +} + +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} diff --git a/themesource/datawidgets/web/_three-state-checkbox.scss b/themesource/datawidgets/web/_three-state-checkbox.scss new file mode 100644 index 0000000..3ca401f --- /dev/null +++ b/themesource/datawidgets/web/_three-state-checkbox.scss @@ -0,0 +1,93 @@ +input[type="checkbox"].three-state-checkbox { + position: relative !important; //Remove after mxui merge + width: 16px; + height: 16px; + margin: 0 !important; // Remove after mxui merge + cursor: pointer; + -webkit-user-select: none; + user-select: none; + appearance: none; + -moz-appearance: none; + -webkit-appearance: none; + transform: translateZ(0); + + &:disabled { + // reset default disabled cursor + cursor: initial; + } + + &:before, + &:after { + position: absolute; + display: block; + transition: all 0.3s ease; + } + + &:before { + // Checkbox + width: 100%; + height: 100%; + content: ""; + border: 1px solid #e7e7e9; + border-radius: 4px; + background-color: transparent; + } + + &:not(:indeterminate):after { + // Checkmark + width: 8px; + height: 4px; + margin: 5px 4px; + transform: rotate(-45deg); + pointer-events: none; + border: 2px solid #ffffff; + border-top: 0; + border-right: 0; + } + + &:indeterminate:after { + // Dash-mark for indeterminate + width: 8px; + height: 4px; + margin: 5px 4px; + transform: rotate(0deg); + pointer-events: none; + border: 0 solid #ffffff; + border-bottom-width: 2px; + transition: border 0s; + } + + &:not(:disabled):not(:checked):hover:after { + content: ""; + border-color: #e7e7e9; // color of checkmark on hover + } + + &:indeterminate:before, + &:checked:before { + border-color: #264ae5; + background-color: #264ae5; + } + + &:indeterminate:after, + &:checked:after { + content: ""; + } + + &:disabled:before { + background-color: #f8f8f8; + } + + &:indeterminate:disabled:before, + &:checked:disabled:before { + border-color: transparent; + background-color: rgba(#264ae5, 0.4); + } + + &:disabled:after { + border-color: #f8f8f8; + } + + & + .control-label { + margin-left: 8px; + } +} diff --git a/themesource/datawidgets/web/_tree-node-design-properties.scss b/themesource/datawidgets/web/_tree-node-design-properties.scss new file mode 100644 index 0000000..92166b0 --- /dev/null +++ b/themesource/datawidgets/web/_tree-node-design-properties.scss @@ -0,0 +1,49 @@ +/* ========================================================================== + Tree Node + +//== Design Properties +//## Helper classes to change the look and feel of the component +========================================================================== */ +$dg-grid-border-color: #ced0d3; +$dg-grid-bg-hover: #f5f6f6; + +.widget-tree-node-hover { + .widget-tree-node-branch:hover > .widget-tree-node-branch-header { + background-color: var(--grid-bg-hover, $dg-grid-bg-hover); + } +} + +.widget-tree-node-bordered-horizontal { + .widget-tree-node-branch > .widget-tree-node-branch-header { + border-width: 0; + border-bottom-width: 1px; + border-bottom-style: solid; + border-bottom-color: var(--grid-border-color, $dg-grid-border-color); + } +} + +.widget-tree-node-bordered-all { + border: 1px solid var(--grid-border-color, $dg-grid-border-color); + border-radius: 8px; + overflow: hidden; + + .widget-tree-node-body:not(.widget-tree-node-branch-loading) { + border-width: 0; + border-top-width: 1px; + border-top-style: solid; + border-top-color: #ced0d3; + } + .widget-tree-node-branch:not(:first-of-type) > .widget-tree-node-branch-header { + border-width: 0; + border-top-width: 1px; + border-top-style: solid; + border-top-color: #ced0d3; + } +} + +.widget-tree-node-bordered-none { + border-width: 0; + .widget-tree-node-branch > .widget-tree-node-branch-header { + border-width: 0; + } +} diff --git a/themesource/datawidgets/web/_tree-node.scss b/themesource/datawidgets/web/_tree-node.scss new file mode 100644 index 0000000..fad6076 --- /dev/null +++ b/themesource/datawidgets/web/_tree-node.scss @@ -0,0 +1,114 @@ +.widget-tree-node { + width: 100%; + padding: 0; + display: flex; + flex-direction: column; + + .widget-tree-node-branch { + display: block; + + &:focus-visible { + outline: none; + & > .widget-tree-node-branch-header { + outline: -webkit-focus-ring-color auto 1px; + outline: -moz-mac-focusring auto 1px; + } + } + } + + .widget-tree-node-branch-header-clickable { + cursor: pointer; + } + + .widget-tree-node-branch-header { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + margin: 0; + padding: 8px 0; + + svg { + &.widget-tree-node-branch-header-icon-animated { + transition: transform 0.2s ease-in-out 50ms; + } + &.widget-tree-node-branch-header-icon-collapsed-left { + transform: rotate(-90deg); + } + &.widget-tree-node-branch-header-icon-collapsed-right { + transform: rotate(90deg); + } + } + + .widget-tree-node-loading-spinner { + width: 16px; + height: 16px; + animation: spin 2s linear infinite; + } + + @keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } + } + } + + .widget-tree-node-branch-header-reversed { + flex-direction: row-reverse; + } + + .widget-tree-node-branch-header-value { + flex: 1; + font-size: 16px; + margin: 0 8px; + } + + .widget-tree-node-branch-header-icon-container { + display: flex; + align-items: center; + } + + .widget-tree-node-body { + padding-left: 24px; + transition: height 0.2s ease 50ms; + overflow: hidden; + + &.widget-tree-node-branch-hidden { + display: none; + } + } +} + +.widget-tree-node-lined-styling { + .widget-tree-node .widget-tree-node-body { + position: relative; + + &::before { + content: ""; + width: 0px; + height: 100%; + position: absolute; + top: 0; + left: 7px; + border: 1px solid #b6b8be; + } + } + + .widget-tree-node[role="group"] > .widget-tree-node-branch > .widget-tree-node-branch-header { + position: relative; + + &::before { + content: ""; + position: absolute; + width: 10px; + height: 0; + border: 1px solid #b6b8be; + top: 50%; + left: -16px; + transform: translate(0, -50%); + } + } +} diff --git a/themesource/datawidgets/web/design-properties.json b/themesource/datawidgets/web/design-properties.json new file mode 100644 index 0000000..565cb5d --- /dev/null +++ b/themesource/datawidgets/web/design-properties.json @@ -0,0 +1,149 @@ +{ + "com.mendix.widget.web.datagrid.Datagrid": [ + { + "name": "Borders", + "type": "Dropdown", + "description": "Add either a horizontal, vertical separator or both to the cells.", + "options": [ + { + "name": "Both", + "class": "table-bordered-all" + }, + { + "name": "Vertical", + "class": "table-bordered-vertical" + }, + { + "name": "Horizontal", + "class": "table-bordered-horizontal" + }, + { + "name": "None", + "class": "table-bordered-none" + } + ] + }, + { + "name": "Compact", + "type": "Toggle", + "description": "Change the cell spacing to compact.", + "class": "table-compact" + }, + { + "name": "Hover", + "type": "Toggle", + "description": "Highlight a row when hovering over it. Only useful when the row is clickable.", + "class": "table-hover" + }, + { + "name": "Striped", + "type": "Toggle", + "description": "Add alternating background colors to rows.", + "class": "table-striped" + } + ], + "com.mendix.widget.web.gallery.Gallery": [ + { + "name": "Borders", + "type": "Dropdown", + "description": "Add either a horizontal, vertical separator or both to the items.", + "options": [ + { + "name": "Both", + "class": "widget-gallery-bordered-all" + }, + { + "name": "Vertical", + "class": "widget-gallery-bordered-vertical" + }, + { + "name": "Horizontal", + "class": "widget-gallery-bordered-horizontal" + } + ] + }, + { + "name": "Hover", + "type": "Toggle", + "description": "Highlight an item when hovering over it. Only useful when the item is clickable.", + "class": "widget-gallery-hover" + }, + { + "name": "Striped", + "type": "Toggle", + "description": "Add alternating background colors to items.", + "class": "widget-gallery-striped" + }, + { + "name": "Grid spacing", + "type": "Dropdown", + "description": "Change the gap between grid items.", + "options": [ + { + "name": "None", + "class": "widget-gallery-gridgap-none" + }, + { + "name": "Small", + "class": "widget-gallery-gridgap-small" + }, + { + "name": "Medium", + "class": "widget-gallery-gridgap-medium" + }, + { + "name": "Large", + "class": "widget-gallery-gridgap-large" + } + ] + }, + { + "name": "Pagination", + "type": "Dropdown", + "description": "Change the alignment of the pagination.", + "options": [ + { + "name": "Left", + "class": "widget-gallery-pagination-left" + }, + { + "name": "Center", + "class": "widget-gallery-pagination-center" + } + ] + }, + { + "name": "Disable selection highlight", + "type": "Toggle", + "description": "Disable standard styles for highlighting of selected items.", + "class": "widget-gallery-disable-selected-items-highlight" + } + ], + "com.mendix.widget.web.treenode.TreeNode": [ + { + "name": "Borders", + "type": "Dropdown", + "description": "Change the border appearance.", + "options": [ + { + "name": "Horizontal", + "class": "widget-tree-node-bordered-horizontal" + }, + { + "name": "Both", + "class": "widget-tree-node-bordered-all" + }, + { + "name": "None", + "class": "widget-tree-node-bordered-none" + } + ] + }, + { + "name": "Hover", + "type": "Toggle", + "description": "Highlight an item when hovering over it. Only useful when the item is clickable.", + "class": "widget-tree-node-hover" + } + ] +} diff --git a/themesource/datawidgets/web/main.scss b/themesource/datawidgets/web/main.scss new file mode 100644 index 0000000..19fbcb8 --- /dev/null +++ b/themesource/datawidgets/web/main.scss @@ -0,0 +1,11 @@ +@import "../../../theme/web/custom-variables"; +@import "datagrid"; +@import "datagrid-filters"; +@import "datagrid-dropdown-filter"; +@import "datagrid-design-properties"; +@import "drop-down-sort"; +@import "gallery"; +@import "gallery-design-properties"; +@import "three-state-checkbox"; +@import "tree-node"; +@import "tree-node-design-properties"; diff --git a/themesource/email_connector/native/design-properties.json b/themesource/email_connector/native/design-properties.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/email_connector/native/design-properties.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/email_connector/native/main.js b/themesource/email_connector/native/main.js new file mode 100644 index 0000000..b611ae1 --- /dev/null +++ b/themesource/email_connector/native/main.js @@ -0,0 +1,2 @@ +import * as variables from "../../../theme/native/custom-variables"; + diff --git a/themesource/email_connector/settings.json b/themesource/email_connector/settings.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/email_connector/settings.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/email_connector/web/design-properties.json b/themesource/email_connector/web/design-properties.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/email_connector/web/design-properties.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/email_connector/web/main.scss b/themesource/email_connector/web/main.scss new file mode 100644 index 0000000..122370f --- /dev/null +++ b/themesource/email_connector/web/main.scss @@ -0,0 +1,2 @@ +@import '../../../theme/web/custom-variables'; + diff --git a/themesource/feedbackmodule/native/design-properties.json b/themesource/feedbackmodule/native/design-properties.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/feedbackmodule/native/design-properties.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/feedbackmodule/native/main.js b/themesource/feedbackmodule/native/main.js new file mode 100644 index 0000000..b611ae1 --- /dev/null +++ b/themesource/feedbackmodule/native/main.js @@ -0,0 +1,2 @@ +import * as variables from "../../../theme/native/custom-variables"; + diff --git a/themesource/feedbackmodule/settings.json b/themesource/feedbackmodule/settings.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/feedbackmodule/settings.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/feedbackmodule/web/_failed.scss b/themesource/feedbackmodule/web/_failed.scss new file mode 100644 index 0000000..92239be --- /dev/null +++ b/themesource/feedbackmodule/web/_failed.scss @@ -0,0 +1,11 @@ +.mxfeedback-failed { + // TODO: Feels like it can be replaced in the future + &__message { + align-self: center; + margin: $spacing-small; + } + + &__error-image { + margin-top: 30px; + } +} diff --git a/themesource/feedbackmodule/web/_feedbackForm.scss b/themesource/feedbackmodule/web/_feedbackForm.scss new file mode 100644 index 0000000..e1a83e8 --- /dev/null +++ b/themesource/feedbackmodule/web/_feedbackForm.scss @@ -0,0 +1,5 @@ +.mxfeedback-feedback-form { + &__cancel-button { + border: 0; + } +} diff --git a/themesource/feedbackmodule/web/_labelGroup.scss b/themesource/feedbackmodule/web/_labelGroup.scss new file mode 100644 index 0000000..9be7c5b --- /dev/null +++ b/themesource/feedbackmodule/web/_labelGroup.scss @@ -0,0 +1,12 @@ +/// Styles the label plus tooltip icon. + +.mxfeedback-label-group { + display: flex; + align-items: center; + gap: calc(#{$gutter-size} / 2); + margin-bottom: $spacing-smaller; + + &__label.control-label { + margin-bottom: 0; + } +} diff --git a/themesource/feedbackmodule/web/_lightbox.scss b/themesource/feedbackmodule/web/_lightbox.scss new file mode 100644 index 0000000..4427bd3 --- /dev/null +++ b/themesource/feedbackmodule/web/_lightbox.scss @@ -0,0 +1,31 @@ +/// The lightbox displays a preview of the screenshot when clicking on the thumbnail. + +.mxfeedback-lightbox { + position: fixed; + left: 0; + top: 0; + bottom: 0; + right: 0; + overflow: auto; + padding-top: 10vh; + padding-bottom: 10vh; + background-color: $mxfeedback-lightbox-background-color; + z-index: $mxfeedback-z-index-lightbox; + + &__image { + margin: auto; + display: block; + max-width: 70%; + + @include mq($screen-md) { + max-width: calc(100% - 16px); + } + } + + .mxfeedback-close-button { + &__icon { + width: $mxfeedback-icon-size-sm; + height: $mxfeedback-icon-size-sm; + } + } +} diff --git a/themesource/feedbackmodule/web/_result.scss b/themesource/feedbackmodule/web/_result.scss new file mode 100644 index 0000000..d597a8f --- /dev/null +++ b/themesource/feedbackmodule/web/_result.scss @@ -0,0 +1,17 @@ +/// Style the image on the successfully submitted page + +.mxfeedback-result { + &__result-image { + align-self: center; + width: auto; + max-width: 50%; + } + + .mxfeedback-dialog__body-text { + margin: auto; + } + + &__result-image { + margin-top: 30px; + } +} \ No newline at end of file diff --git a/themesource/feedbackmodule/web/_screenshotPreview.scss b/themesource/feedbackmodule/web/_screenshotPreview.scss new file mode 100644 index 0000000..36838b5 --- /dev/null +++ b/themesource/feedbackmodule/web/_screenshotPreview.scss @@ -0,0 +1,61 @@ +/// Styles the screenshot preview container in the form. + +.mxfeedback-screenshot-preview { + position: relative; + margin: 20px auto; + height: $mxfeedback-screenshot-preview-height; + cursor: pointer; + + &__image { + display: block; + object-fit: contain; + height: 100%; + aspect-ratio: 16 / 9; + border: 1px solid $gray; + border-radius: $border-radius-default; + } + + &__overlay { + position: absolute; + display: flex; + align-items: center; + justify-content: center; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100%; + opacity: 0; + transition: 0.3s ease; + background-color: $gray-darker; + border: 1px solid $gray-dark; + border-radius: $border-radius-default; + + &:hover { + opacity: 0.5; + } + + &:focus-visible { + opacity: 0.5; + } + } + + &__preview-icon { + width: $mxfeedback-icon-size-md; + height: $mxfeedback-icon-size-md; + fill: $gray-lighter; + } + + &__delete-icon { + position: absolute; + top: 0; + right: 0; + transform: translate(50%, -50%); + width: $mxfeedback-icon-size-md; + height: $mxfeedback-icon-size-md; + stroke: $gray-dark; + fill: $gray-lighter; + z-index: 1; + cursor: pointer; + } +} diff --git a/themesource/feedbackmodule/web/_startButton.scss b/themesource/feedbackmodule/web/_startButton.scss new file mode 100644 index 0000000..241bcff --- /dev/null +++ b/themesource/feedbackmodule/web/_startButton.scss @@ -0,0 +1,23 @@ +/// Creates the blue start button for the feedback widget. +/// This can be replaced by several starting points in the future. + +.mxfeedback-start-button { + position: fixed; + top: 50%; + right: 0; + transform: translate(50%, -50%) rotate(270deg); + transform-origin: bottom center; + padding: $spacing-smaller $spacing-small; + border: none; + border-radius: $border-radius-default $border-radius-default 0 0; + background-color: $btn-primary-bg; + color: $btn-primary-color; + font-size: $m-header-title-size; + box-shadow: $mxfeedback-start-button-shadow; + z-index: $mxfeedback-z-index-start-button; + + &:focus, + &:hover { + background-color: $btn-primary-bg-hover; + } +} diff --git a/themesource/feedbackmodule/web/_tooltip.scss b/themesource/feedbackmodule/web/_tooltip.scss new file mode 100644 index 0000000..0c5424f --- /dev/null +++ b/themesource/feedbackmodule/web/_tooltip.scss @@ -0,0 +1,48 @@ +/// Create a Tooltip on hover effect. + +$_block: ".mxfeedback-tooltip"; +#{$_block} { + $_offset: 32px; + display: flex; + position: relative; + + &__icon { + width: $mxfeedback-icon-size-sm; + height: $mxfeedback-icon-size-sm; + + &:hover ~ #{$_block}__tip { + visibility: visible; + } + } + + &__tip { + visibility: hidden; + position: absolute; + top: calc(100% + #{$spacing-small}); + left: calc(50% - #{$_offset}); + width: $mxfeedback-tooltip-width; + max-width: calc(100vw - #{$spacing-larger}); + padding: 6px 8px; // not using variables here as its padding should be precise + margin-bottom: 0; + border-radius: 2px; // not using variables here as its border radius should be precise + background-color: $gray-darker; + color: $label-primary-color; + font-size: $font-size-small; + line-height: 1.5; + z-index: 1; + transition: visibility 100ms ease-in-out; + + &::after { + content: ""; + position: absolute; + top: 0; + left: $_offset; + transform: translate(-50%, -50%) rotate(45deg); + width: 12px; + height: 12px; + background-color: inherit; + text-align: center; + pointer-events: none; + } + } +} diff --git a/themesource/feedbackmodule/web/annotation-canvas.scss b/themesource/feedbackmodule/web/annotation-canvas.scss new file mode 100644 index 0000000..b88e714 --- /dev/null +++ b/themesource/feedbackmodule/web/annotation-canvas.scss @@ -0,0 +1,19 @@ +/// Creates the canvas for annotation. +/// The background color is required to cover the page behind the annotation canvas. + +.mxfeedback-annotation-canvas { + z-index: $mxfeedback-z-index-annotation-canvas; + display: flex; + align-items: center; + justify-content: center; + position: fixed; + margin: 0; + width: 100%; + height: 100%; + background-color: $mxfeedback-annotation-canvas-background-color; + + &__canvas { + position: fixed; + margin-top: $spacing-largest; + } +} diff --git a/themesource/feedbackmodule/web/annotation-frame.scss b/themesource/feedbackmodule/web/annotation-frame.scss new file mode 100644 index 0000000..5a9ecd8 --- /dev/null +++ b/themesource/feedbackmodule/web/annotation-frame.scss @@ -0,0 +1,10 @@ +/// Centers the annotation tool and annotation canvas. + +.mxfeedback-annotation-frame { + position: fixed; + top: 0; + bottom: 0; + right: 0; + left: 0; + z-index: $mxfeedback-z-index-frame; +} diff --git a/themesource/feedbackmodule/web/annotation/_annotation-canvas.scss b/themesource/feedbackmodule/web/annotation/_annotation-canvas.scss new file mode 100644 index 0000000..b88e714 --- /dev/null +++ b/themesource/feedbackmodule/web/annotation/_annotation-canvas.scss @@ -0,0 +1,19 @@ +/// Creates the canvas for annotation. +/// The background color is required to cover the page behind the annotation canvas. + +.mxfeedback-annotation-canvas { + z-index: $mxfeedback-z-index-annotation-canvas; + display: flex; + align-items: center; + justify-content: center; + position: fixed; + margin: 0; + width: 100%; + height: 100%; + background-color: $mxfeedback-annotation-canvas-background-color; + + &__canvas { + position: fixed; + margin-top: $spacing-largest; + } +} diff --git a/themesource/feedbackmodule/web/annotation/_annotation-frame.scss b/themesource/feedbackmodule/web/annotation/_annotation-frame.scss new file mode 100644 index 0000000..5a9ecd8 --- /dev/null +++ b/themesource/feedbackmodule/web/annotation/_annotation-frame.scss @@ -0,0 +1,10 @@ +/// Centers the annotation tool and annotation canvas. + +.mxfeedback-annotation-frame { + position: fixed; + top: 0; + bottom: 0; + right: 0; + left: 0; + z-index: $mxfeedback-z-index-frame; +} diff --git a/themesource/feedbackmodule/web/button-group.scss b/themesource/feedbackmodule/web/button-group.scss new file mode 100644 index 0000000..2c13fb5 --- /dev/null +++ b/themesource/feedbackmodule/web/button-group.scss @@ -0,0 +1,36 @@ +/// Styles buttons in group to have proper distance between each other. +/// Shows the buttons in column on a smaller screen. + +.mxfeedback-button-group { + display: flex; + justify-content: flex-end; + gap: $spacing-small; + + &--screenshot-container { + flex-direction: row-reverse; + } + + &--gap-md { + gap: $spacing-small * 2; + } + + &--gap-lg { + gap: $spacing-small * 4; + } + + &--justify-start { + justify-content: flex-start; + } + + &--justify-center { + justify-content: center; + } + + &--row-xs { + flex-direction: column; + + @include mq($screen-md) { + flex-direction: row; + } + } +} diff --git a/themesource/feedbackmodule/web/button.scss b/themesource/feedbackmodule/web/button.scss new file mode 100644 index 0000000..831cbd8 --- /dev/null +++ b/themesource/feedbackmodule/web/button.scss @@ -0,0 +1,15 @@ +/// Styles a button that contains an icon. +/// In Atlas the icons are added differently. + +.mxfeedback-button { + display: flex; + justify-content: center; + align-items: center; + gap: $spacing-small; + + svg { + width: $mxfeedback-icon-size-sm; + height: $mxfeedback-icon-size-sm; + fill: currentColor; + } +} diff --git a/themesource/feedbackmodule/web/button/_button.scss b/themesource/feedbackmodule/web/button/_button.scss new file mode 100644 index 0000000..c4cb387 --- /dev/null +++ b/themesource/feedbackmodule/web/button/_button.scss @@ -0,0 +1,15 @@ +/// Styles a button that contains an icon. +/// In Atlas the icons are added differently. + +.mxfeedback-button { + display: flex; + justify-content: center; + align-items: center; + gap: $gutter-size; + + svg { + width: $mxfeedback-icon-size-sm; + height: $mxfeedback-icon-size-sm; + fill: currentColor; + } +} diff --git a/themesource/feedbackmodule/web/button/_buttonGroup.scss b/themesource/feedbackmodule/web/button/_buttonGroup.scss new file mode 100644 index 0000000..8819aff --- /dev/null +++ b/themesource/feedbackmodule/web/button/_buttonGroup.scss @@ -0,0 +1,36 @@ +/// Styles buttons in group to have proper distance between each other. +/// Shows the buttons in column on a smaller screen. + +.mxfeedback-button-group { + display: flex; + justify-content: flex-end; + gap: $gutter-size; + + &--screenshot-container { + flex-direction: row-reverse; + } + + &--gap-md { + gap: $gutter-size * 2; + } + + &--gap-lg { + gap: $gutter-size * 4; + } + + &--justify-start { + justify-content: flex-start; + } + + &--justify-center { + justify-content: center; + } + + &--row-xs { + flex-direction: column; + + @include mq($screen-md) { + flex-direction: row; + } + } +} diff --git a/themesource/feedbackmodule/web/design-properties.json b/themesource/feedbackmodule/web/design-properties.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/feedbackmodule/web/design-properties.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/feedbackmodule/web/dialog/_closeButton.scss b/themesource/feedbackmodule/web/dialog/_closeButton.scss new file mode 100644 index 0000000..137dd99 --- /dev/null +++ b/themesource/feedbackmodule/web/dialog/_closeButton.scss @@ -0,0 +1,22 @@ +/// Styles the close button to follow the same styling as ATLAS UI close button. +/// | `btn-primary-color` | To show the close button in white color.| + +.mxfeedback-close-button { + right: $spacing-medium; + top: 12px; // not using variables here as its position should be precise + padding: 0; + background-color: transparent; + border: none; + position: absolute; + + &__icon { + width: 12px; + height: 12px; + color: $font-color-default; + stroke: $font-color-default; + } + + &--white > &__icon { + fill: $btn-primary-color; + } +} diff --git a/themesource/feedbackmodule/web/dialog/_dialog.scss b/themesource/feedbackmodule/web/dialog/_dialog.scss new file mode 100644 index 0000000..5fe6647 --- /dev/null +++ b/themesource/feedbackmodule/web/dialog/_dialog.scss @@ -0,0 +1,30 @@ +/// Styles the dialogs. +/// The styling is shared between the different windows. + +.mxfeedback-dialog { + display: flex; + flex-direction: column; + position: fixed; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + padding: $spacing-large; + width: $mxfeedback-dialog-width; + max-width: calc(100% - #{$mxfeedback-dialog-spacing}); + max-height: calc(100% - #{$mxfeedback-dialog-spacing}); + background-color: $bg-color-secondary; + border: 1px solid $border-color-default; + border-radius: $border-radius-default; + box-shadow: $mxfeedback-shadow-small $mxfeedback-shadow-color; + overflow: hidden auto; + z-index: $mxfeedback-z-index-underlay; + + &__title { + font-size: $font-size-large; + font-weight: $font-weight-semibold; + line-height: 120%; + margin: 0 0 $spacing-medium; + color: $font-color-default; + align-self: center; + } +} diff --git a/themesource/feedbackmodule/web/dialog/_underlay.scss b/themesource/feedbackmodule/web/dialog/_underlay.scss new file mode 100644 index 0000000..ced748e --- /dev/null +++ b/themesource/feedbackmodule/web/dialog/_underlay.scss @@ -0,0 +1,6 @@ +/// Styles the underlay behind the dialog. + +.mxfeedback-underlay { + inset: 0; + z-index: $mxfeedback-z-index-underlay; +} diff --git a/themesource/feedbackmodule/web/feedback-button.scss b/themesource/feedbackmodule/web/feedback-button.scss new file mode 100644 index 0000000..5bdf48e --- /dev/null +++ b/themesource/feedbackmodule/web/feedback-button.scss @@ -0,0 +1,54 @@ +/* +About: ========================================================= +---------------------------------------------------------------- +This styling targets the main Feedback Button rendered on your page. +The Feedback widget button can be rendered on page in 3 formats. + +Render Modes: ================================================== +---------------------------------------------------------------- +Each render mode can be selected by double clicking the Feedback widget settings in Studio Pro. + +'Side Tab' - Fixes the button to the right hand margin and rotates by 270 degrees. +'Button' - Mimics a normal Mendix button. +'Do not render' - Hides the button on the live website but is still visible in the page editor for developers. + +CSS BEM Enumeration values: ==================================== +---------------------------------------------------------------- +At a code level each render mode selected has a coresspoinding CSS BEM modifier value. +Use these BEM modifiers to custom style each render mode. + +Side Tab = "side" +Button = "normal" +Do not render = "none" + +*/ +.mxfeedback-start-button { + + // &--normal { + // Use this if you want to style the Feedback Button when set Render mode = 'Button' + // } + + &--none { + display: none !important; + } + &--side { + position: fixed; + top: 50%; + right: 0; + transform: translate(50%, -50%) rotate(270deg); + transform-origin: bottom center; + padding: $spacing-smaller $spacing-small; + border: none; + border-radius: $border-radius-default $border-radius-default 0 0; + background-color: $btn-primary-bg; + color: $btn-primary-color; + font-size: $m-header-title-size; + box-shadow: $mxfeedback-start-button-shadow; + z-index: $mxfeedback-z-index-start-button; + + &:focus, + &:hover { + background-color: $btn-primary-bg-hover; + } + } +} \ No newline at end of file diff --git a/themesource/feedbackmodule/web/helpers.scss b/themesource/feedbackmodule/web/helpers.scss new file mode 100644 index 0000000..467f5e7 --- /dev/null +++ b/themesource/feedbackmodule/web/helpers.scss @@ -0,0 +1,7 @@ +/// For responsiveness + +@mixin mq($width, $type: min) { + @media only screen and (#{$type}-width: $width) { + @content; + } +} diff --git a/themesource/feedbackmodule/web/includes/_atlasVariables.scss b/themesource/feedbackmodule/web/includes/_atlasVariables.scss new file mode 100644 index 0000000..6635d86 --- /dev/null +++ b/themesource/feedbackmodule/web/includes/_atlasVariables.scss @@ -0,0 +1,52 @@ +/// Based on ATLAS UI 3 + +$gray-darker: #0a1325; +$gray-dark: #474e5c; +$gray: #787d87; +$gray-light: #a9acb3; +$gray-primary: #e7e7e9; +$gray-lighter: #f8f8f8; + +$brand-default: $gray-primary; +$brand-primary: #264ae5; +$brand-success: #3cb33d; +$brand-warning: #eca51c; +$brand-danger: #e33f4e; + +$font-size-default: 14px; +$font-color-default: #0a1325; + +$border-color-default: #ced0d3; +$border-radius-default: 4px; + +$m-header-title-size: 16px; + +$bg-color-secondary: #fff; + +$font-size-large: 18px; +$font-size-small: 12px; + +$font-weight-semibold: 600; +$font-weight-bold: bold; + +$btn-primary-bg: $brand-primary; +$btn-primary-bg-hover: mix($btn-primary-bg, black, 80%); +$btn-primary-color: #fff; + +$label-primary-color: #fff; + +$spacing-smallest: 2px; +$spacing-smaller: 4px; +$spacing-small: 8px; +$spacing-medium: 16px; +$spacing-large: 24px; +$spacing-larger: 32px; +$spacing-largest: 48px; + +$gutter-size: 8px; + +$screen-xs: 480px; +$screen-sm: 576px; +$screen-md: 768px; +$screen-lg: 992px; +$screen-xl: 1200px; diff --git a/themesource/feedbackmodule/web/includes/_helpers.scss b/themesource/feedbackmodule/web/includes/_helpers.scss new file mode 100644 index 0000000..467f5e7 --- /dev/null +++ b/themesource/feedbackmodule/web/includes/_helpers.scss @@ -0,0 +1,7 @@ +/// For responsiveness + +@mixin mq($width, $type: min) { + @media only screen and (#{$type}-width: $width) { + @content; + } +} diff --git a/themesource/feedbackmodule/web/includes/_variables.scss b/themesource/feedbackmodule/web/includes/_variables.scss new file mode 100644 index 0000000..77f5208 --- /dev/null +++ b/themesource/feedbackmodule/web/includes/_variables.scss @@ -0,0 +1,55 @@ +//== z-index +$mxfeedback-z-index-start-button: 999998 !default; +$mxfeedback-z-index-underlay: 1000001 !default; +$mxfeedback-z-index-lightbox: 1000002 !default; +$mxfeedback-z-index-annotation-canvas: 1000003 !default; +$mxfeedback-z-index-frame: 1000004 !default; + +//== Dimensions +$mxfeedback-dialog-width: 560px; +$mxfeedback-tooltip-width: 240px; +$tool-list-width: 144px; +$mxfeedback-screenshot-preview-height: 192px; +$mxfeedback-dialog-spacing: 40px; + +//== Background colors +$mxfeedback-lightbox-background-color: rgba(0, 0, 0, 0.9); +$mxfeedback-modal-background-color: rgba(0, 0, 0, 0.9); +$mxfeedback-annotation-canvas-background-color: rgba(0, 0, 0, 0.5); + +//== Shadows +$mxfeedback-start-button-shadow: -2px 0 4px 0 rgb(0 0 0 / 30%); +$mxfeedback-shadow-small: 0 2px 4px 0; +$mxfeedback-shadow-color: rgba(0, 0, 0, 0.2); + +//== Icons +$mxfeedback-icon-size-xs: 9px; +$mxfeedback-icon-size-sm: 16px; +$mxfeedback-icon-size-md: 20px; +$mxfeedback-icon-size-lg: 24px; + +//== Annotation +//## Annotation colors +$annotation-colors: ( + "midnight": #2f3646, + "grey": #c1c3c8, + "green": #4fd84f, + "blue": #47a9ff, + "purple": #845eff, + "magenta": #ca49f8, + "red": #fb4a4c, + "yellow": #fcc73a +); + +//## Annotation thickness +$annotation-thickness: ( + "one": 1px, + "two": 2px, + "three": 3px, + "four": 4px, + "five": 5px, + "six": 6px +); + +//## Annotation tool variables +$mxfeedback-annotation-tool-size: 25px; diff --git a/themesource/feedbackmodule/web/main.scss b/themesource/feedbackmodule/web/main.scss new file mode 100644 index 0000000..6ef1b8c --- /dev/null +++ b/themesource/feedbackmodule/web/main.scss @@ -0,0 +1,29 @@ +/* + ==| Variables |========================================================================================= +*/ +@import "../../../theme/web/custom-variables.scss"; +@import "variables"; +@import "helpers"; + +/* + ==| Widget blocks |===================================================================================== + These blocks contains styles directly related to the widget's appearance and are mostly unique styles + needed to display the widget's UI correctly. +*/ + +@import "feedback-button"; +@import "annotation-canvas"; +@import "annotation-frame"; + +/* + ==| Generic blocks |==================================================================================== + These blocks are generic blocks. These styles are styles that apply to the widget's entire UI and + outline the basic styles of the widget (in accordance with Atlas UI). +*/ + +@import "toolbar"; +@import "tool-button"; +@import "button-group"; +@import "button"; +@import "screenshot-preview"; +@import "underlay"; diff --git a/themesource/feedbackmodule/web/screenshot-preview.scss b/themesource/feedbackmodule/web/screenshot-preview.scss new file mode 100644 index 0000000..908bec7 --- /dev/null +++ b/themesource/feedbackmodule/web/screenshot-preview.scss @@ -0,0 +1,45 @@ +/// Styles the screenshot preview container in the form. + +.mxfeedback-screenshot-preview { + display: flex; + justify-content: left; + position: relative; + margin: $spacing-large auto; + cursor: pointer; + + &__image > img { + display: block; + object-fit: contain; + height: 100%; + aspect-ratio: 16 / 9; + border: 1px solid $gray; + border-radius: $border-radius-default; + + &:hover { + background-color: $gray-lighter; + border: 1px solid $gray-dark; + border-radius: $border-radius-default; + opacity: 0.5; + } + } + + &__preview-icon { + width: $mxfeedback-icon-size-md; + height: $mxfeedback-icon-size-md; + fill: $gray-lighter; + } + + &__delete-button { + position: absolute; + top: 0; + right: 0; + transform: translate(50%, -50%); + z-index: 1; + color: $btn-default-color; + border-radius: 50%; + height: 20px; + width: 20px; + padding: 0; + font-size: 12px; + } +} diff --git a/themesource/feedbackmodule/web/tool-button.scss b/themesource/feedbackmodule/web/tool-button.scss new file mode 100644 index 0000000..6f604d5 --- /dev/null +++ b/themesource/feedbackmodule/web/tool-button.scss @@ -0,0 +1,136 @@ +/// Styles the color and thickness options in the annotation toolbar. + +.mxfeedback-tool-button { + position: relative; + display: flex; + flex-direction: row; + align-items: center; + background: transparent; + border: 0; + padding: 0; + + &--active { + color: $brand-primary; + } + + &:focus-visible { + color: $btn-primary-bg-hover; + } + + &__inner { + display: flex; + flex-direction: column; + align-items: center; + } + + &__icon { + width: $mxfeedback-icon-size-lg; + height: $mxfeedback-icon-size-lg; + fill: currentColor; + } + + &__label { + margin-top: $spacing-smaller; + color: inherit + } + + &__caret { + fill: $gray-darker; + width: 8px; + height: 8px; + } + + &__dropdown { + position: relative; + display: flex; + align-items: center; + height: 100%; + } + + &__menu { + display: flex; + flex-direction: column; + gap: $gutter-size; + position: absolute; + left: 50%; + top: 100%; + transform: translateX(-50%); + padding: $spacing-small; + background: $bg-color-secondary; + border: 1px solid $border-color-default; + border-radius: $border-radius-default; + width: $tool-list-width; + z-index: 1; + } + + &__list { + display: grid; + grid-template-columns: repeat(4, 1fr); // 4 columns is our default, override with modifier + gap: calc(#{$gutter-size} / 2); + + &--col-3 { + grid-template-columns: repeat(3, 1fr); + } + } + + &__color { + position: relative; + padding: 0; + border: none; + border-radius: 100%; + aspect-ratio: 1 / 1; + + &:focus { + outline: 2px solid $brand-primary; + outline-offset: 2px; + } + + @each $color, $class in $annotation-colors { + &--#{$color} { + background-color: $class; + } + } + + svg { + width: 10px; + height: 10px; + stroke: $btn-primary-color; + } + } + + &__thickness { + background-color: transparent; + border: none; + border-radius: $border-radius-default; + aspect-ratio: 4 / 3; + + &:hover { + background-color: $gray-light; + } + + &:focus { + outline: 2px solid $brand-primary; + outline-offset: 2px; + } + + &--selected { + background-color: $gray; + } + + &::before { + content: ""; + display: block; + background-color: map-get($annotation-colors, "midnight"); + width: 100%; + transform: rotate(-45deg); + } + + @each $thickness, $height in $annotation-thickness { + &--#{$thickness} { + &::before { + height: $height; + } + } + } + } +} diff --git a/themesource/feedbackmodule/web/toolbar.scss b/themesource/feedbackmodule/web/toolbar.scss new file mode 100644 index 0000000..aeac21c --- /dev/null +++ b/themesource/feedbackmodule/web/toolbar.scss @@ -0,0 +1,26 @@ +/// Styles the annotation toolbar. + +.mxfeedback-toolbar { + position: fixed; + display: flex; + align-items: center; + gap: $gutter-size; + top: $spacing-larger; + left: 50%; + transform: translateX(-50%); + padding: $spacing-medium $spacing-larger; + background-color: $bg-color-secondary; + border: 1px solid $border-color-default; + border-radius: $border-radius-default; + font-size: $font-size-small; + box-shadow: $mxfeedback-shadow-small $mxfeedback-shadow-color; + z-index: $mxfeedback-z-index-frame; + + &--gap-md { + gap: $gutter-size * 2; + } + + &--gap-lg { + gap: $gutter-size * 4; + } +} diff --git a/themesource/feedbackmodule/web/toolbar/_toolButton.scss b/themesource/feedbackmodule/web/toolbar/_toolButton.scss new file mode 100644 index 0000000..6f604d5 --- /dev/null +++ b/themesource/feedbackmodule/web/toolbar/_toolButton.scss @@ -0,0 +1,136 @@ +/// Styles the color and thickness options in the annotation toolbar. + +.mxfeedback-tool-button { + position: relative; + display: flex; + flex-direction: row; + align-items: center; + background: transparent; + border: 0; + padding: 0; + + &--active { + color: $brand-primary; + } + + &:focus-visible { + color: $btn-primary-bg-hover; + } + + &__inner { + display: flex; + flex-direction: column; + align-items: center; + } + + &__icon { + width: $mxfeedback-icon-size-lg; + height: $mxfeedback-icon-size-lg; + fill: currentColor; + } + + &__label { + margin-top: $spacing-smaller; + color: inherit + } + + &__caret { + fill: $gray-darker; + width: 8px; + height: 8px; + } + + &__dropdown { + position: relative; + display: flex; + align-items: center; + height: 100%; + } + + &__menu { + display: flex; + flex-direction: column; + gap: $gutter-size; + position: absolute; + left: 50%; + top: 100%; + transform: translateX(-50%); + padding: $spacing-small; + background: $bg-color-secondary; + border: 1px solid $border-color-default; + border-radius: $border-radius-default; + width: $tool-list-width; + z-index: 1; + } + + &__list { + display: grid; + grid-template-columns: repeat(4, 1fr); // 4 columns is our default, override with modifier + gap: calc(#{$gutter-size} / 2); + + &--col-3 { + grid-template-columns: repeat(3, 1fr); + } + } + + &__color { + position: relative; + padding: 0; + border: none; + border-radius: 100%; + aspect-ratio: 1 / 1; + + &:focus { + outline: 2px solid $brand-primary; + outline-offset: 2px; + } + + @each $color, $class in $annotation-colors { + &--#{$color} { + background-color: $class; + } + } + + svg { + width: 10px; + height: 10px; + stroke: $btn-primary-color; + } + } + + &__thickness { + background-color: transparent; + border: none; + border-radius: $border-radius-default; + aspect-ratio: 4 / 3; + + &:hover { + background-color: $gray-light; + } + + &:focus { + outline: 2px solid $brand-primary; + outline-offset: 2px; + } + + &--selected { + background-color: $gray; + } + + &::before { + content: ""; + display: block; + background-color: map-get($annotation-colors, "midnight"); + width: 100%; + transform: rotate(-45deg); + } + + @each $thickness, $height in $annotation-thickness { + &--#{$thickness} { + &::before { + height: $height; + } + } + } + } +} diff --git a/themesource/feedbackmodule/web/toolbar/_toolbar.scss b/themesource/feedbackmodule/web/toolbar/_toolbar.scss new file mode 100644 index 0000000..aeac21c --- /dev/null +++ b/themesource/feedbackmodule/web/toolbar/_toolbar.scss @@ -0,0 +1,26 @@ +/// Styles the annotation toolbar. + +.mxfeedback-toolbar { + position: fixed; + display: flex; + align-items: center; + gap: $gutter-size; + top: $spacing-larger; + left: 50%; + transform: translateX(-50%); + padding: $spacing-medium $spacing-larger; + background-color: $bg-color-secondary; + border: 1px solid $border-color-default; + border-radius: $border-radius-default; + font-size: $font-size-small; + box-shadow: $mxfeedback-shadow-small $mxfeedback-shadow-color; + z-index: $mxfeedback-z-index-frame; + + &--gap-md { + gap: $gutter-size * 2; + } + + &--gap-lg { + gap: $gutter-size * 4; + } +} diff --git a/themesource/feedbackmodule/web/underlay.scss b/themesource/feedbackmodule/web/underlay.scss new file mode 100644 index 0000000..ced748e --- /dev/null +++ b/themesource/feedbackmodule/web/underlay.scss @@ -0,0 +1,6 @@ +/// Styles the underlay behind the dialog. + +.mxfeedback-underlay { + inset: 0; + z-index: $mxfeedback-z-index-underlay; +} diff --git a/themesource/feedbackmodule/web/variables.scss b/themesource/feedbackmodule/web/variables.scss new file mode 100644 index 0000000..eb5aca1 --- /dev/null +++ b/themesource/feedbackmodule/web/variables.scss @@ -0,0 +1,54 @@ +//== z-index +$mxfeedback-z-index-start-button: 999998 !default; +$mxfeedback-z-index-underlay: 1000001 !default; +$mxfeedback-z-index-lightbox: 1000002 !default; +$mxfeedback-z-index-annotation-canvas: 1000003 !default; +$mxfeedback-z-index-frame: 1000004 !default; + +//== Dimensions +$mxfeedback-dialog-width: 560px; +$mxfeedback-tooltip-width: 240px; +$tool-list-width: 144px; +$mxfeedback-dialog-spacing: 40px; + +//== Background colors +$mxfeedback-lightbox-background-color: rgba(0, 0, 0, 0.9); +$mxfeedback-modal-background-color: rgba(0, 0, 0, 0.9); +$mxfeedback-annotation-canvas-background-color: rgba(0, 0, 0, 0.5); + +//== Shadows +$mxfeedback-start-button-shadow: -2px 0 4px 0 rgb(0 0 0 / 30%); +$mxfeedback-shadow-small: 0 2px 4px 0; +$mxfeedback-shadow-color: rgba(0, 0, 0, 0.2); + +//== Icons +$mxfeedback-icon-size-xs: 9px; +$mxfeedback-icon-size-sm: 16px; +$mxfeedback-icon-size-md: 20px; +$mxfeedback-icon-size-lg: 24px; + +//== Annotation +//## Annotation colors +$annotation-colors: ( + "midnight": #2f3646, + "grey": #c1c3c8, + "green": #4fd84f, + "blue": #47a9ff, + "purple": #845eff, + "magenta": #ca49f8, + "red": #fb4a4c, + "yellow": #fcc73a +); + +//## Annotation thickness +$annotation-thickness: ( + "one": 1px, + "two": 2px, + "three": 3px, + "four": 4px, + "five": 5px, + "six": 6px +); + +//## Annotation tool variables +$mxfeedback-annotation-tool-size: 25px; diff --git a/themesource/migrationutility/native/design-properties.json b/themesource/migrationutility/native/design-properties.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/migrationutility/native/design-properties.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/migrationutility/native/main.js b/themesource/migrationutility/native/main.js new file mode 100644 index 0000000..b611ae1 --- /dev/null +++ b/themesource/migrationutility/native/main.js @@ -0,0 +1,2 @@ +import * as variables from "../../../theme/native/custom-variables"; + diff --git a/themesource/migrationutility/settings.json b/themesource/migrationutility/settings.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/migrationutility/settings.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/migrationutility/web/design-properties.json b/themesource/migrationutility/web/design-properties.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/migrationutility/web/design-properties.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/migrationutility/web/main.scss b/themesource/migrationutility/web/main.scss new file mode 100644 index 0000000..122370f --- /dev/null +++ b/themesource/migrationutility/web/main.scss @@ -0,0 +1,2 @@ +@import '../../../theme/web/custom-variables'; + diff --git a/themesource/myfirstmodule/native/design-properties.json b/themesource/myfirstmodule/native/design-properties.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/myfirstmodule/native/design-properties.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/myfirstmodule/native/main.js b/themesource/myfirstmodule/native/main.js new file mode 100644 index 0000000..b611ae1 --- /dev/null +++ b/themesource/myfirstmodule/native/main.js @@ -0,0 +1,2 @@ +import * as variables from "../../../theme/native/custom-variables"; + diff --git a/themesource/myfirstmodule/settings.json b/themesource/myfirstmodule/settings.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/myfirstmodule/settings.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/myfirstmodule/web/design-properties.json b/themesource/myfirstmodule/web/design-properties.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/myfirstmodule/web/design-properties.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/myfirstmodule/web/main.scss b/themesource/myfirstmodule/web/main.scss new file mode 100644 index 0000000..122370f --- /dev/null +++ b/themesource/myfirstmodule/web/main.scss @@ -0,0 +1,2 @@ +@import '../../../theme/web/custom-variables'; + diff --git a/themesource/nanoflowcommons/.version b/themesource/nanoflowcommons/.version new file mode 100644 index 0000000..4a36342 --- /dev/null +++ b/themesource/nanoflowcommons/.version @@ -0,0 +1 @@ +3.0.0 diff --git a/themesource/nanoflowcommons/native/design-properties.json b/themesource/nanoflowcommons/native/design-properties.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/nanoflowcommons/native/design-properties.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/nanoflowcommons/native/main.js b/themesource/nanoflowcommons/native/main.js new file mode 100644 index 0000000..b611ae1 --- /dev/null +++ b/themesource/nanoflowcommons/native/main.js @@ -0,0 +1,2 @@ +import * as variables from "../../../theme/native/custom-variables"; + diff --git a/themesource/nanoflowcommons/web/design-properties.json b/themesource/nanoflowcommons/web/design-properties.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/nanoflowcommons/web/design-properties.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/nanoflowcommons/web/main.scss b/themesource/nanoflowcommons/web/main.scss new file mode 100644 index 0000000..122370f --- /dev/null +++ b/themesource/nanoflowcommons/web/main.scss @@ -0,0 +1,2 @@ +@import '../../../theme/web/custom-variables'; + diff --git a/themesource/testmodule/native/design-properties.json b/themesource/testmodule/native/design-properties.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/testmodule/native/design-properties.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/testmodule/native/main.js b/themesource/testmodule/native/main.js new file mode 100644 index 0000000..b611ae1 --- /dev/null +++ b/themesource/testmodule/native/main.js @@ -0,0 +1,2 @@ +import * as variables from "../../../theme/native/custom-variables"; + diff --git a/themesource/testmodule/settings.json b/themesource/testmodule/settings.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/testmodule/settings.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/testmodule/web/design-properties.json b/themesource/testmodule/web/design-properties.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/testmodule/web/design-properties.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/testmodule/web/main.scss b/themesource/testmodule/web/main.scss new file mode 100644 index 0000000..122370f --- /dev/null +++ b/themesource/testmodule/web/main.scss @@ -0,0 +1,2 @@ +@import '../../../theme/web/custom-variables'; + diff --git a/themesource/webactions/native/design-properties.json b/themesource/webactions/native/design-properties.json new file mode 100644 index 0000000..49d1a20 --- /dev/null +++ b/themesource/webactions/native/design-properties.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/themesource/webactions/native/main.js b/themesource/webactions/native/main.js new file mode 100644 index 0000000..b611ae1 --- /dev/null +++ b/themesource/webactions/native/main.js @@ -0,0 +1,2 @@ +import * as variables from "../../../theme/native/custom-variables"; + diff --git a/themesource/webactions/web/_take-picture.scss b/themesource/webactions/web/_take-picture.scss new file mode 100644 index 0000000..8368e0f --- /dev/null +++ b/themesource/webactions/web/_take-picture.scss @@ -0,0 +1,153 @@ +/* ========================================================================== + Take picture styles +========================================================================== */ + +.take-picture-wrapper { + height: 100%; + width: 100%; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + display: flex; + flex-direction: column-reverse; + justify-content: space-between; + /* Should be higher than the the video. */ + z-index: 111; +} +.take-picture-video-element { + position: absolute; + /* Should be higher than the z-index of '.layout-atlas .region-sidebar' so it sits on top of the page. */ + z-index: 110; + top: 0; + left: 0; + right: 0; + bottom: 0; + object-fit: cover; + width: 100%; + height: 100%; + background-color: black; +} +.take-picture-action-control-wrapper { + display: flex; + justify-content: center; + flex-direction: row; + align-items: center; + /* should be higher than the video. */ + z-index: 111; + margin-bottom: 74px; +} +.take-picture-action-switch-control-wrapper { + display: flex; + justify-content: space-between; + flex-direction: row; + align-items: center; + /* should be higher than the video. */ + z-index: 111; + margin-bottom: 74px; +} +.take-picture-close-control-wrapper { + display: flex; + justify-content: flex-start; + flex-direction: column; + align-items: flex-start; + /* should be higher than the video. */ + z-index: 111; +} +.take-picture-action-control { + background-color: transparent; + border-style: none; + padding: 0; +} +.take-picture-action-spacing { + flex: 1; + display: flex; + justify-content: center; + align-items: center; +} +.take-picture-switch-spacing { + display: flex; + flex: 1; + justify-content: flex-end; + align-items: center; +} +.take-picture-spacing-div { + flex: 1; +} +.take-picture-action-control-inner { + border-radius: 50%; + background-color: white; + border: 1px solid black; + width: 58px; + height: 58px; +} +.take-picture-button-wrapper { + display: flex; + flex-direction: row; + justify-content: space-between; + z-index: 111; +} +.take-picture-save-button { + color: white; + background-color: #264ae5; + width: 100%; + border-radius: 4px; + height: 40px; + font-size: 14px; + line-height: 20px; + text-align: center; + border-style: none; +} +.take-picture-switch-control { + background-color: transparent; + border-style: none; + padding: 0; + margin-right: 22.33px; +} +.take-picture-close-control { + margin: 30px 0 0 30px; + border-style: none; + padding: 0; + background-color: transparent; +} +.take-picture-save-control { + margin: 30px 30px 0 0; + border-style: none; + padding: 0; + background-color: transparent; +} +.take-picture-confirm-wrapper { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + background-color: white; + /* should be higher than the wrapper. */ + z-index: 112; + display: flex; + flex-direction: column; + justify-content: space-between; +} +.take-picture-image { + position: absolute; + /* Should be higher than the z-index of '.layout-atlas .region-sidebar' so it sits on top of the page. */ + z-index: 110; + top: 0; + left: 0; + right: 0; + bottom: 0; + object-fit: cover; + width: 100%; + height: 100%; + background-color: black; +} +/* Overwrite 'atlas_core/web/core/_legacy/_mxui.scss' for this particular widget because otherwise + iOS Safari will in certain cases put the top and/or bottom bar on top of the overlay of this widget. */ + +.mx-scrollcontainer-wrapper:not(.mx-scrollcontainer-nested) { + -webkit-overflow-scrolling: auto; +} diff --git a/theme/com.mendix.charts.json b/themesource/webactions/web/design-properties.json similarity index 100% rename from theme/com.mendix.charts.json rename to themesource/webactions/web/design-properties.json diff --git a/themesource/webactions/web/main.scss b/themesource/webactions/web/main.scss new file mode 100644 index 0000000..7f94c32 --- /dev/null +++ b/themesource/webactions/web/main.scss @@ -0,0 +1,2 @@ +@import "../../../theme/web/custom-variables"; +@import "take-picture"; diff --git a/userlib/Email_Connector-1.0.0.jar b/userlib/Email_Connector-1.0.0.jar index fafde19..bf083ce 100644 Binary files a/userlib/Email_Connector-1.0.0.jar and b/userlib/Email_Connector-1.0.0.jar differ diff --git a/userlib/Email_Connector.migration b/userlib/Email_Connector.migration new file mode 100644 index 0000000..190eb09 --- /dev/null +++ b/userlib/Email_Connector.migration @@ -0,0 +1,45 @@ +dependency commons-codec:commons-codec:1.15 +dependency org.bouncycastle:bcjmail-jdk18on:1.81 +dependency org.eclipse.angus:angus-mail:2.0.4 +dependency org.jsoup:jsoup:1.15.4 +dependency org.simplejavamail:simple-java-mail:8.12.6 +dependency org.simplejavamail:smime-module:8.12.6 +dependency org.slf4j:slf4j-simple:2.0.7 +delete angus-activation-2.0.2.jar +delete angus-activation-2.0.2.jar.Email_Connector.RequiredLib +delete angus-mail-2.0.4.jar +delete angus-mail-2.0.4.jar.Email_Connector.RequiredLib +delete bcjmail-jdk18on-1.81.jar +delete bcjmail-jdk18on-1.81.jar.Email_Connector.RequiredLib +delete bcpkix-jdk18on-1.81.jar +delete bcpkix-jdk18on-1.81.jar.Email_Connector.RequiredLib +delete bcprov-jdk18on-1.81.jar +delete bcprov-jdk18on-1.81.jar.Email_Connector.RequiredLib +delete bcutil-jdk18on-1.81.jar +delete bcutil-jdk18on-1.81.jar.Email_Connector.RequiredLib +delete commons-codec-1.15.jar +delete commons-codec-1.15.jar.Email_Connector.RequiredLib +delete core-module-8.12.6.jar +delete core-module-8.12.6.jar.Email_Connector.RequiredLib +delete jakarta.activation-api-2.1.3.jar +delete jakarta.activation-api-2.1.3.jar.Email_Connector.RequiredLib +delete jakarta.mail-api-2.1.3.jar +delete jakarta.mail-api-2.1.3.jar.Email_Connector.RequiredLib +delete jetbrains-runtime-annotations-1.0.2.jar +delete jetbrains-runtime-annotations-1.0.2.jar.Email_Connector.RequiredLib +delete jmail-1.6.3.jar +delete jmail-1.6.3.jar.Email_Connector.RequiredLib +delete jsoup-1.15.4.jar +delete jsoup-1.15.4.jar.Email_Connector.RequiredLib +delete simple-java-mail-8.12.6.jar +delete simple-java-mail-8.12.6.jar.Email_Connector.RequiredLib +delete slf4j-api-2.0.13.jar +delete slf4j-api-2.0.13.jar.Email_Connector.RequiredLib +delete slf4j-simple-2.0.7.jar +delete slf4j-simple-2.0.7.jar.Email_Connector.RequiredLib +delete smime-module-8.12.6.jar +delete smime-module-8.12.6.jar.Email_Connector.RequiredLib +delete throwing-function-1.6.1.jar +delete throwing-function-1.6.1.jar.Email_Connector.RequiredLib +delete utils-mail-smime-2.3.12.jar +delete utils-mail-smime-2.3.12.jar.Email_Connector.RequiredLib \ No newline at end of file diff --git a/userlib/Encryption.migration b/userlib/Encryption.migration new file mode 100644 index 0000000..73ef8f7 --- /dev/null +++ b/userlib/Encryption.migration @@ -0,0 +1,14 @@ +dependency org.bouncycastle:bcpg-jdk18on:1.81 +dependency org.bouncycastle:bcpkix-jdk18on:1.81 +dependency org.bouncycastle:bcprov-jdk18on:1.81 +dependency commons-io:commons-io:2.17.0 +delete bcpg-jdk18on-1.81.jar +delete bcpg-jdk18on-1.81.jar.Encryption.RequiredLib +delete bcpkix-jdk18on-1.81.jar +delete bcpkix-jdk18on-1.81.jar.Encryption.RequiredLib +delete bcutil-jdk18on-1.81.jar +delete bcutil-jdk18on-1.81.jar.Encryption.RequiredLib +delete bcprov-jdk18on-1.81.jar +delete bcprov-jdk18on-1.81.jar.Encryption.RequiredLib +delete commons-io-2.17.0.jar +delete commons-io-2.17.0.jar.Encryption.RequiredLib diff --git a/userlib/angus-activation-2.0.2.jar b/userlib/angus-activation-2.0.2.jar new file mode 100644 index 0000000..93c7aad Binary files /dev/null and b/userlib/angus-activation-2.0.2.jar differ diff --git a/theme/styles/native/app/custom.js b/userlib/angus-activation-2.0.2.jar.Email_Connector.RequiredLib similarity index 100% rename from theme/styles/native/app/custom.js rename to userlib/angus-activation-2.0.2.jar.Email_Connector.RequiredLib diff --git a/userlib/angus-mail-2.0.4.jar b/userlib/angus-mail-2.0.4.jar new file mode 100644 index 0000000..10c4c77 Binary files /dev/null and b/userlib/angus-mail-2.0.4.jar differ diff --git a/theme_old/styles/native/app/custom.js b/userlib/angus-mail-2.0.4.jar.Email_Connector.RequiredLib similarity index 100% rename from theme_old/styles/native/app/custom.js rename to userlib/angus-mail-2.0.4.jar.Email_Connector.RequiredLib diff --git a/userlib/bcjmail-jdk18on-1.81.jar b/userlib/bcjmail-jdk18on-1.81.jar new file mode 100644 index 0000000..fa25d07 Binary files /dev/null and b/userlib/bcjmail-jdk18on-1.81.jar differ diff --git a/userlib/bcjmail-jdk18on-1.81.jar.Email_Connector.RequiredLib b/userlib/bcjmail-jdk18on-1.81.jar.Email_Connector.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/bcpg-jdk18on-1.81.jar b/userlib/bcpg-jdk18on-1.81.jar new file mode 100644 index 0000000..abac407 Binary files /dev/null and b/userlib/bcpg-jdk18on-1.81.jar differ diff --git a/userlib/bcpg-jdk18on-1.81.jar.Encryption.RequiredLib b/userlib/bcpg-jdk18on-1.81.jar.Encryption.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/bcpkix-jdk18on-1.81.jar b/userlib/bcpkix-jdk18on-1.81.jar new file mode 100644 index 0000000..11f73d6 Binary files /dev/null and b/userlib/bcpkix-jdk18on-1.81.jar differ diff --git a/userlib/bcpkix-jdk18on-1.81.jar.Email_Connector.RequiredLib b/userlib/bcpkix-jdk18on-1.81.jar.Email_Connector.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/bcpkix-jdk18on-1.81.jar.Encryption.RequiredLib b/userlib/bcpkix-jdk18on-1.81.jar.Encryption.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/bcprov-jdk18on-1.81.jar b/userlib/bcprov-jdk18on-1.81.jar new file mode 100644 index 0000000..d0410eb Binary files /dev/null and b/userlib/bcprov-jdk18on-1.81.jar differ diff --git a/userlib/bcprov-jdk18on-1.81.jar.Email_Connector.RequiredLib b/userlib/bcprov-jdk18on-1.81.jar.Email_Connector.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/bcprov-jdk18on-1.81.jar.Encryption.RequiredLib b/userlib/bcprov-jdk18on-1.81.jar.Encryption.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/bcutil-jdk18on-1.81.jar b/userlib/bcutil-jdk18on-1.81.jar new file mode 100644 index 0000000..26fc9e0 Binary files /dev/null and b/userlib/bcutil-jdk18on-1.81.jar differ diff --git a/userlib/bcutil-jdk18on-1.81.jar.Email_Connector.RequiredLib b/userlib/bcutil-jdk18on-1.81.jar.Email_Connector.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/bcutil-jdk18on-1.81.jar.Encryption.RequiredLib b/userlib/bcutil-jdk18on-1.81.jar.Encryption.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/commons-io-2.17.0.jar b/userlib/commons-io-2.17.0.jar new file mode 100644 index 0000000..ad00ddc Binary files /dev/null and b/userlib/commons-io-2.17.0.jar differ diff --git a/userlib/commons-io-2.17.0.jar.Encryption.RequiredLib b/userlib/commons-io-2.17.0.jar.Encryption.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/core-module-8.12.6.jar b/userlib/core-module-8.12.6.jar new file mode 100644 index 0000000..16e05f7 Binary files /dev/null and b/userlib/core-module-8.12.6.jar differ diff --git a/userlib/core-module-8.12.6.jar.Email_Connector.RequiredLib b/userlib/core-module-8.12.6.jar.Email_Connector.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/jakarta.activation-api-2.1.3.jar b/userlib/jakarta.activation-api-2.1.3.jar new file mode 100644 index 0000000..0d015d5 Binary files /dev/null and b/userlib/jakarta.activation-api-2.1.3.jar differ diff --git a/userlib/jakarta.activation-api-2.1.3.jar.Email_Connector.RequiredLib b/userlib/jakarta.activation-api-2.1.3.jar.Email_Connector.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/jakarta.mail-api-2.1.3.jar b/userlib/jakarta.mail-api-2.1.3.jar new file mode 100644 index 0000000..6b36779 Binary files /dev/null and b/userlib/jakarta.mail-api-2.1.3.jar differ diff --git a/userlib/jakarta.mail-api-2.1.3.jar.Email_Connector.RequiredLib b/userlib/jakarta.mail-api-2.1.3.jar.Email_Connector.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/jetbrains-runtime-annotations-1.0.2.jar b/userlib/jetbrains-runtime-annotations-1.0.2.jar new file mode 100644 index 0000000..e6e782f Binary files /dev/null and b/userlib/jetbrains-runtime-annotations-1.0.2.jar differ diff --git a/userlib/jetbrains-runtime-annotations-1.0.2.jar.Email_Connector.RequiredLib b/userlib/jetbrains-runtime-annotations-1.0.2.jar.Email_Connector.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/jmail-1.6.3.jar b/userlib/jmail-1.6.3.jar new file mode 100644 index 0000000..c19b01f Binary files /dev/null and b/userlib/jmail-1.6.3.jar differ diff --git a/userlib/jmail-1.6.3.jar.Email_Connector.RequiredLib b/userlib/jmail-1.6.3.jar.Email_Connector.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/jsoup-1.15.4.jar b/userlib/jsoup-1.15.4.jar new file mode 100644 index 0000000..5feaa00 Binary files /dev/null and b/userlib/jsoup-1.15.4.jar differ diff --git a/userlib/jsoup-1.15.4.jar.Email_Connector.RequiredLib b/userlib/jsoup-1.15.4.jar.Email_Connector.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/simple-java-mail-8.12.6.jar b/userlib/simple-java-mail-8.12.6.jar new file mode 100644 index 0000000..07fd034 Binary files /dev/null and b/userlib/simple-java-mail-8.12.6.jar differ diff --git a/userlib/simple-java-mail-8.12.6.jar.Email_Connector.RequiredLib b/userlib/simple-java-mail-8.12.6.jar.Email_Connector.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/slf4j-api-2.0.13.jar b/userlib/slf4j-api-2.0.13.jar new file mode 100644 index 0000000..a800cc2 Binary files /dev/null and b/userlib/slf4j-api-2.0.13.jar differ diff --git a/userlib/slf4j-api-2.0.13.jar.Email_Connector.RequiredLib b/userlib/slf4j-api-2.0.13.jar.Email_Connector.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/slf4j-simple-2.0.7.jar b/userlib/slf4j-simple-2.0.7.jar new file mode 100644 index 0000000..35ca2ab Binary files /dev/null and b/userlib/slf4j-simple-2.0.7.jar differ diff --git a/userlib/slf4j-simple-2.0.7.jar.Email_Connector.RequiredLib b/userlib/slf4j-simple-2.0.7.jar.Email_Connector.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/smime-module-8.12.6.jar b/userlib/smime-module-8.12.6.jar new file mode 100644 index 0000000..2fbaabf Binary files /dev/null and b/userlib/smime-module-8.12.6.jar differ diff --git a/userlib/smime-module-8.12.6.jar.Email_Connector.RequiredLib b/userlib/smime-module-8.12.6.jar.Email_Connector.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/throwing-function-1.6.1.jar b/userlib/throwing-function-1.6.1.jar new file mode 100644 index 0000000..2e736c2 Binary files /dev/null and b/userlib/throwing-function-1.6.1.jar differ diff --git a/userlib/throwing-function-1.6.1.jar.Email_Connector.RequiredLib b/userlib/throwing-function-1.6.1.jar.Email_Connector.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/userlib/utils-mail-smime-2.3.12.jar b/userlib/utils-mail-smime-2.3.12.jar new file mode 100644 index 0000000..e6a357d Binary files /dev/null and b/userlib/utils-mail-smime-2.3.12.jar differ diff --git a/userlib/utils-mail-smime-2.3.12.jar.Email_Connector.RequiredLib b/userlib/utils-mail-smime-2.3.12.jar.Email_Connector.RequiredLib new file mode 100644 index 0000000..e69de29 diff --git a/widgets/Badge.mpk b/widgets/Badge.mpk new file mode 100644 index 0000000..f8584ea Binary files /dev/null and b/widgets/Badge.mpk differ diff --git a/widgets/Charts.mpk b/widgets/Charts.mpk index 70b94cf..40a6413 100644 Binary files a/widgets/Charts.mpk and b/widgets/Charts.mpk differ diff --git a/widgets/HTMLSnippet.mpk b/widgets/HTMLSnippet.mpk index 7302566..d1953a3 100644 Binary files a/widgets/HTMLSnippet.mpk and b/widgets/HTMLSnippet.mpk differ diff --git a/widgets/Maps.mpk b/widgets/Maps.mpk index cb47146..3d0ed30 100644 Binary files a/widgets/Maps.mpk and b/widgets/Maps.mpk differ diff --git a/widgets/ProgressBar.mpk b/widgets/ProgressBar.mpk index b0c126c..3600d84 100644 Binary files a/widgets/ProgressBar.mpk and b/widgets/ProgressBar.mpk differ diff --git a/widgets/ProgressCircle.mpk b/widgets/ProgressCircle.mpk index d6f9697..3271044 100644 Binary files a/widgets/ProgressCircle.mpk and b/widgets/ProgressCircle.mpk differ diff --git a/widgets/RadioButtonList.mpk b/widgets/RadioButtonList.mpk new file mode 100644 index 0000000..e1b377e Binary files /dev/null and b/widgets/RadioButtonList.mpk differ diff --git a/widgets/RichText.mpk b/widgets/RichText.mpk index d84f17f..0688456 100644 Binary files a/widgets/RichText.mpk and b/widgets/RichText.mpk differ diff --git a/widgets/SprintrFeedbackWidget.mpk b/widgets/SprintrFeedbackWidget.mpk index c458603..c7e8a6e 100644 Binary files a/widgets/SprintrFeedbackWidget.mpk and b/widgets/SprintrFeedbackWidget.mpk differ diff --git a/widgets/addverb.NivoLineChart.mpk b/widgets/addverb.NivoLineChart.mpk new file mode 100644 index 0000000..62f3dfd Binary files /dev/null and b/widgets/addverb.NivoLineChart.mpk differ diff --git a/widgets/com.mendix.widget.native.BackgroundImage.mpk b/widgets/com.mendix.widget.native.BackgroundImage.mpk new file mode 100644 index 0000000..dd57e41 Binary files /dev/null and b/widgets/com.mendix.widget.native.BackgroundImage.mpk differ diff --git a/widgets/com.mendix.widget.native.Carousel.mpk b/widgets/com.mendix.widget.native.Carousel.mpk new file mode 100644 index 0000000..9549036 Binary files /dev/null and b/widgets/com.mendix.widget.native.Carousel.mpk differ diff --git a/widgets/com.mendix.widget.native.Feedback.mpk b/widgets/com.mendix.widget.native.Feedback.mpk new file mode 100644 index 0000000..53a4a21 Binary files /dev/null and b/widgets/com.mendix.widget.native.Feedback.mpk differ diff --git a/widgets/com.mendix.widget.web.Combobox.mpk b/widgets/com.mendix.widget.web.Combobox.mpk new file mode 100644 index 0000000..912f306 Binary files /dev/null and b/widgets/com.mendix.widget.web.Combobox.mpk differ diff --git a/widgets/com.mendix.widget.web.Datagrid.mpk b/widgets/com.mendix.widget.web.Datagrid.mpk new file mode 100644 index 0000000..8ecfde7 Binary files /dev/null and b/widgets/com.mendix.widget.web.Datagrid.mpk differ diff --git a/widgets/com.mendix.widget.web.DatagridDateFilter.mpk b/widgets/com.mendix.widget.web.DatagridDateFilter.mpk new file mode 100644 index 0000000..ec5a584 Binary files /dev/null and b/widgets/com.mendix.widget.web.DatagridDateFilter.mpk differ diff --git a/widgets/com.mendix.widget.web.DatagridDropdownFilter.mpk b/widgets/com.mendix.widget.web.DatagridDropdownFilter.mpk new file mode 100644 index 0000000..2d383db Binary files /dev/null and b/widgets/com.mendix.widget.web.DatagridDropdownFilter.mpk differ diff --git a/widgets/com.mendix.widget.web.DatagridNumberFilter.mpk b/widgets/com.mendix.widget.web.DatagridNumberFilter.mpk new file mode 100644 index 0000000..af4e781 Binary files /dev/null and b/widgets/com.mendix.widget.web.DatagridNumberFilter.mpk differ diff --git a/widgets/com.mendix.widget.web.DatagridTextFilter.mpk b/widgets/com.mendix.widget.web.DatagridTextFilter.mpk new file mode 100644 index 0000000..17f0e92 Binary files /dev/null and b/widgets/com.mendix.widget.web.DatagridTextFilter.mpk differ diff --git a/widgets/com.mendix.widget.web.DropdownSort.mpk b/widgets/com.mendix.widget.web.DropdownSort.mpk new file mode 100644 index 0000000..59eb4b7 Binary files /dev/null and b/widgets/com.mendix.widget.web.DropdownSort.mpk differ diff --git a/widgets/com.mendix.widget.web.Gallery.mpk b/widgets/com.mendix.widget.web.Gallery.mpk new file mode 100644 index 0000000..6d29ce0 Binary files /dev/null and b/widgets/com.mendix.widget.web.Gallery.mpk differ diff --git a/widgets/com.mendix.widget.web.HTMLElement.mpk b/widgets/com.mendix.widget.web.HTMLElement.mpk new file mode 100644 index 0000000..fa6fe3b Binary files /dev/null and b/widgets/com.mendix.widget.web.HTMLElement.mpk differ diff --git a/widgets/com.mendix.widget.web.Image.mpk b/widgets/com.mendix.widget.web.Image.mpk new file mode 100644 index 0000000..5387900 Binary files /dev/null and b/widgets/com.mendix.widget.web.Image.mpk differ diff --git a/widgets/com.mendix.widget.web.LanguageSelector.mpk b/widgets/com.mendix.widget.web.LanguageSelector.mpk new file mode 100644 index 0000000..55e53d0 Binary files /dev/null and b/widgets/com.mendix.widget.web.LanguageSelector.mpk differ diff --git a/widgets/com.mendix.widget.web.SelectionHelper.mpk b/widgets/com.mendix.widget.web.SelectionHelper.mpk new file mode 100644 index 0000000..0547ffc Binary files /dev/null and b/widgets/com.mendix.widget.web.SelectionHelper.mpk differ diff --git a/widgets/com.mendix.widget.web.Timeline.mpk b/widgets/com.mendix.widget.web.Timeline.mpk new file mode 100644 index 0000000..2d86239 Binary files /dev/null and b/widgets/com.mendix.widget.web.Timeline.mpk differ diff --git a/widgets/com.mendix.widget.web.TreeNode.mpk b/widgets/com.mendix.widget.web.TreeNode.mpk new file mode 100644 index 0000000..43612a8 Binary files /dev/null and b/widgets/com.mendix.widget.web.TreeNode.mpk differ diff --git a/widgets/rapiddata.CustomColumnChart.mpk b/widgets/rapiddata.CustomColumnChart.mpk new file mode 100644 index 0000000..d6fa87f Binary files /dev/null and b/widgets/rapiddata.CustomColumnChart.mpk differ